@mhmo91/schmancy 0.10.5 → 0.10.7
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/README.md +11 -0
- package/custom-elements.json +235 -1807
- package/dist/agent/{flow-CaPi2G8y.js.map → flow-CvG1fLW5.js.map} +1 -1
- package/dist/agent/schmancy.agent.js +5347 -12408
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +70 -1068
- package/dist/agent/{vendor-material-color-Be96dpGE.js.map → vendor-material-color-DcL7ZPxx.js.map} +1 -1
- package/dist/{area-CSQdhCBF.cjs → area-8IBAXzbC.cjs} +1 -1
- package/dist/{area-CSQdhCBF.cjs.map → area-8IBAXzbC.cjs.map} +1 -1
- package/dist/{area-D5haQE-J.js → area-DSW_LYXQ.js} +1 -1
- package/dist/{area-D5haQE-J.js.map → area-DSW_LYXQ.js.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-B_bJXUjm.cjs → autocomplete-9PLjlFYt.cjs} +1 -1
- package/dist/{autocomplete-B_bJXUjm.cjs.map → autocomplete-9PLjlFYt.cjs.map} +1 -1
- package/dist/{autocomplete-DtyjZJ1E.js → autocomplete-CXwwmUbC.js} +2 -2
- package/dist/{autocomplete-DtyjZJ1E.js.map → autocomplete-CXwwmUbC.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +2 -2
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-BJLCp-Hv.cjs → boat-CpGNeWav.cjs} +1 -1
- package/dist/{boat-BJLCp-Hv.cjs.map → boat-CpGNeWav.cjs.map} +1 -1
- package/dist/{boat-MT8bRT8u.js → boat-Dwn5oXd8.js} +1 -1
- package/dist/{boat-MT8bRT8u.js.map → boat-Dwn5oXd8.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-DSF2E-zy.cjs → busy-CUUgvimY.cjs} +1 -1
- package/dist/{busy-DSF2E-zy.cjs.map → busy-CUUgvimY.cjs.map} +1 -1
- package/dist/{busy-6BqWGryX.js → busy-Cjm1BYVC.js} +1 -1
- package/dist/{busy-6BqWGryX.js.map → busy-Cjm1BYVC.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/{card-CvuVha-W.js → card-BR22oYCL.js} +1 -1
- package/dist/{card-CvuVha-W.js.map → card-BR22oYCL.js.map} +1 -1
- package/dist/{card-DnKnaHzf.cjs → card-BjZ_WRr3.cjs} +1 -1
- package/dist/{card-DnKnaHzf.cjs.map → card-BjZ_WRr3.cjs.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-D3u8Wm9r.cjs → checkbox-2e8v7CNg.cjs} +1 -1
- package/dist/{checkbox-D3u8Wm9r.cjs.map → checkbox-2e8v7CNg.cjs.map} +1 -1
- package/dist/{checkbox-QDRsE8cp.js → checkbox-CsADwyfu.js} +1 -1
- package/dist/{checkbox-QDRsE8cp.js.map → checkbox-CsADwyfu.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-Dy9vx8JS.js → chips-C9HwVbGT.js} +2 -2
- package/dist/{chips-Dy9vx8JS.js.map → chips-C9HwVbGT.js.map} +1 -1
- package/dist/{chips-CMoQzop1.cjs → chips-DPCcO55o.cjs} +1 -1
- package/dist/{chips-CMoQzop1.cjs.map → chips-DPCcO55o.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-B2NuihKA.cjs → date-range-63-FC7gD.cjs} +1 -1
- package/dist/{date-range-B2NuihKA.cjs.map → date-range-63-FC7gD.cjs.map} +1 -1
- package/dist/{date-range-Boesjlic.js → date-range-CFaP-8Os.js} +2 -2
- package/dist/{date-range-Boesjlic.js.map → date-range-CFaP-8Os.js.map} +1 -1
- package/dist/{date-range-inline-DBuND2pc.js → date-range-inline-BCuK_XCv.js} +1 -1
- package/dist/{date-range-inline-DBuND2pc.js.map → date-range-inline-BCuK_XCv.js.map} +1 -1
- package/dist/{date-range-inline-BI6_4Ahl.cjs → date-range-inline-Cpdqd-8B.cjs} +1 -1
- package/dist/{date-range-inline-BI6_4Ahl.cjs.map → date-range-inline-Cpdqd-8B.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.cjs +1 -1
- package/dist/delay.js +2 -2
- package/dist/{details-BrGrUTGC.js → details-0dOlqHHL.js} +1 -1
- package/dist/{details-BrGrUTGC.js.map → details-0dOlqHHL.js.map} +1 -1
- package/dist/{details-BRs_z5-k.cjs → details-qKikJIyH.cjs} +1 -1
- package/dist/{details-BRs_z5-k.cjs.map → details-qKikJIyH.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{divider-W3TiDasp.js → divider-BxkIl0H1.js} +1 -1
- package/dist/{divider-W3TiDasp.js.map → divider-BxkIl0H1.js.map} +1 -1
- package/dist/{divider-BOxQ2T9h.cjs → divider-CX9mmWZ8.cjs} +1 -1
- package/dist/{divider-BOxQ2T9h.cjs.map → divider-CX9mmWZ8.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{expand-CnccBF91.cjs → expand-891JuQuN.cjs} +1 -1
- package/dist/{expand-CnccBF91.cjs.map → expand-891JuQuN.cjs.map} +1 -1
- package/dist/{expand-Pu8fZ0jZ.js → expand-BeAx94MP.js} +2 -2
- package/dist/{expand-Pu8fZ0jZ.js.map → expand-BeAx94MP.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{float-WCVdp3um.js → float-BPF2WO4L.js} +1 -1
- package/dist/{float-WCVdp3um.js.map → float-BPF2WO4L.js.map} +1 -1
- package/dist/{float-BRKa-P6Z.cjs → float-D7vvODxx.cjs} +1 -1
- package/dist/{float-BRKa-P6Z.cjs.map → float-D7vvODxx.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-CI59gad4.js.map → form-CFvwnfuJ.js.map} +1 -1
- package/dist/{form-B2qudx_q.cjs.map → form-Ceijw1aA.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{hashContent-a8uVr3xs.js.map → hashContent-BU6jl5ih.js.map} +1 -1
- package/dist/{hashContent-ejkBgDnN.cjs.map → hashContent-Bobsobip.cjs.map} +1 -1
- package/dist/{icons-C0ufCcdp.js → icons-BKxW_7QR.js} +1 -1
- package/dist/{icons-C0ufCcdp.js.map → icons-BKxW_7QR.js.map} +1 -1
- package/dist/{icons-DXEbmg-O.cjs → icons-QSdo-8h9.cjs} +1 -1
- package/dist/{icons-DXEbmg-O.cjs.map → icons-QSdo-8h9.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-c9lGxw7x.js → iframe-BxvbhyTS.js} +1 -1
- package/dist/{iframe-c9lGxw7x.js.map → iframe-BxvbhyTS.js.map} +1 -1
- package/dist/{iframe-C6RVODkW.cjs → iframe-CMKV-bm8.cjs} +1 -1
- package/dist/{iframe-C6RVODkW.cjs.map → iframe-CMKV-bm8.cjs.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +64 -72
- package/dist/{input-B4HM-9-H.cjs → input-BFhJU74_.cjs} +1 -1
- package/dist/{input-B4HM-9-H.cjs.map → input-BFhJU74_.cjs.map} +1 -1
- package/dist/{input-Pmj_bH37.js → input-DIqaR8Mr.js} +1 -1
- package/dist/{input-Pmj_bH37.js.map → input-DIqaR8Mr.js.map} +1 -1
- package/dist/{input-chip-BIGgd_7w.js → input-chip-D9tlSk_2.js} +1 -1
- package/dist/{input-chip-BIGgd_7w.js.map → input-chip-D9tlSk_2.js.map} +1 -1
- package/dist/{input-chip-BoDisY6c.cjs → input-chip-w09qTt7J.cjs} +1 -1
- package/dist/{input-chip-BoDisY6c.cjs.map → input-chip-w09qTt7J.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +2 -2
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-DK1vDKm3.cjs → lightbox-CK035jsx.cjs} +1 -1
- package/dist/{lightbox-DK1vDKm3.cjs.map → lightbox-CK035jsx.cjs.map} +1 -1
- package/dist/{lightbox-K1eJTYXP.js → lightbox-GChmL3Ff.js} +2 -2
- package/dist/{lightbox-K1eJTYXP.js.map → lightbox-GChmL3Ff.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CEuVqAxN.cjs → list-B3P37zlH.cjs} +1 -1
- package/dist/{list-CEuVqAxN.cjs.map → list-B3P37zlH.cjs.map} +1 -1
- package/dist/{list-Ds0Nv1y5.js → list-J-Fz24Z1.js} +1 -1
- package/dist/{list-Ds0Nv1y5.js.map → list-J-Fz24Z1.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{menu-Bly30Nje.cjs → menu-BnFd8CwU.cjs} +1 -1
- package/dist/{menu-Bly30Nje.cjs.map → menu-BnFd8CwU.cjs.map} +1 -1
- package/dist/{menu-L8MK1ma5.js → menu-DHTlUwXS.js} +2 -2
- package/dist/{menu-L8MK1ma5.js.map → menu-DHTlUwXS.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-47_CZk7q.cjs +298 -0
- package/dist/{mixins-CAb0b03r.cjs.map → mixins-47_CZk7q.cjs.map} +1 -1
- package/dist/mixins-PBJJGiiP.js +627 -0
- package/dist/{mixins-B34UxxCe.js.map → mixins-PBJJGiiP.js.map} +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-7fSbk8hm.cjs → notification-B6YBL0hx.cjs} +1 -1
- package/dist/{notification-7fSbk8hm.cjs.map → notification-B6YBL0hx.cjs.map} +1 -1
- package/dist/{notification-DB25M-qo.js → notification-C-5Bv3vj.js} +2 -2
- package/dist/{notification-DB25M-qo.js.map → notification-C-5Bv3vj.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-DDHa25k5.js → option-B7q6VXCu.js} +1 -1
- package/dist/{option-DDHa25k5.js.map → option-B7q6VXCu.js.map} +1 -1
- package/dist/{option-HF9Xqbuq.cjs → option-DVQRa3nr.cjs} +1 -1
- package/dist/{option-HF9Xqbuq.cjs.map → option-DVQRa3nr.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-CCiTaf_C.js.map → overlay-stack-DCDS17uj.js.map} +1 -1
- package/dist/{overlay-stack-CFGiYf34.cjs.map → overlay-stack-DPIe_aYv.cjs.map} +1 -1
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-BDG94R0x.js → overlay.confirm-body-CAY5xK1n.js} +1 -1
- package/dist/{overlay.confirm-body-BDG94R0x.js.map → overlay.confirm-body-CAY5xK1n.js.map} +1 -1
- package/dist/{overlay.confirm-body-b4Nx_OVf.cjs → overlay.confirm-body-XZtErofy.cjs} +1 -1
- package/dist/{overlay.confirm-body-b4Nx_OVf.cjs.map → overlay.confirm-body-XZtErofy.cjs.map} +1 -1
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-BUCuZa6V.js → overlay.service-BZE_lwKO.js} +2 -2
- package/dist/{overlay.service-BUCuZa6V.js.map → overlay.service-BZE_lwKO.js.map} +1 -1
- package/dist/{overlay.service-CRHZZY9F.cjs → overlay.service-Oyjrw831.cjs} +1 -1
- package/dist/{overlay.service-CRHZZY9F.cjs.map → overlay.service-Oyjrw831.cjs.map} +1 -1
- package/dist/page.cjs +1 -1
- package/dist/page.js +2 -2
- package/dist/{progress-CqOyMM4i.js → progress-BHXLYs9i.js} +1 -1
- package/dist/{progress-CqOyMM4i.js.map → progress-BHXLYs9i.js.map} +1 -1
- package/dist/{progress-54R4QRgW.cjs → progress-D99bumkC.cjs} +1 -1
- package/dist/{progress-54R4QRgW.cjs.map → progress-D99bumkC.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-B4zbBIZF.js → radio-group-BYra5_q1.js} +1 -1
- package/dist/{radio-group-B4zbBIZF.js.map → radio-group-BYra5_q1.js.map} +1 -1
- package/dist/{radio-group-BJqZpYVy.cjs → radio-group-DYsycLmD.cjs} +1 -1
- package/dist/{radio-group-BJqZpYVy.cjs.map → radio-group-DYsycLmD.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{rxjs-utils-BXpvHN4-.js.map → rxjs-utils-CVeJQ9KG.js.map} +1 -1
- package/dist/{rxjs-utils-CaC-tdot.cjs.map → rxjs-utils-DCUHg_Ml.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-CYm6Krus.js → scroll-TqNWZ0lo.js} +1 -1
- package/dist/{scroll-CYm6Krus.js.map → scroll-TqNWZ0lo.js.map} +1 -1
- package/dist/{scroll-iSRovYYt.cjs → scroll-cayCBOrq.cjs} +1 -1
- package/dist/{scroll-iSRovYYt.cjs.map → scroll-cayCBOrq.cjs.map} +1 -1
- package/dist/{select-DiQHtQJN.cjs → select-CRdSmlLq.cjs} +1 -1
- package/dist/{select-DiQHtQJN.cjs.map → select-CRdSmlLq.cjs.map} +1 -1
- package/dist/{select-1WHseXP6.js → select-nzq0qFlF.js} +2 -2
- package/dist/{select-1WHseXP6.js.map → select-nzq0qFlF.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/INDEX.md +9 -6
- package/dist/skills/schmancy/INDEX.md +9 -6
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-BwvtKMdN.js → splash-screen-BJeIiJ_e.js} +1 -1
- package/dist/{splash-screen-BwvtKMdN.js.map → splash-screen-BJeIiJ_e.js.map} +1 -1
- package/dist/{splash-screen-CJL8DGDe.cjs → splash-screen-BMLQXzDq.cjs} +1 -1
- package/dist/{splash-screen-CJL8DGDe.cjs.map → splash-screen-BMLQXzDq.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-Bwr2NR0A.cjs → src-DE11tq2Q.cjs} +1 -1
- package/dist/{src-Bwr2NR0A.cjs.map → src-DE11tq2Q.cjs.map} +1 -1
- package/dist/{src-UaZeROcW.js → src-qvWlNoMO.js} +34 -42
- package/dist/{src-UaZeROcW.js.map → src-qvWlNoMO.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-DE5iuI8e.cjs → surface-D426MFLR.cjs} +1 -1
- package/dist/{surface-DE5iuI8e.cjs.map → surface-D426MFLR.cjs.map} +1 -1
- package/dist/{surface-DPUkQ3OL.js → surface-DG7Cmm9V.js} +1 -1
- package/dist/{surface-DPUkQ3OL.js.map → surface-DG7Cmm9V.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-B2XEQPQl.js → tabs-B7siJkM5.js} +1 -1
- package/dist/{tabs-B2XEQPQl.js.map → tabs-B7siJkM5.js.map} +1 -1
- package/dist/{tabs-CsDQ72Qk.cjs → tabs-t3nMfg1F.cjs} +1 -1
- package/dist/{tabs-CsDQ72Qk.cjs.map → tabs-t3nMfg1F.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-C_ps0lL-.js → textarea-DSxHCCle.js} +1 -1
- package/dist/{textarea-C_ps0lL-.js.map → textarea-DSxHCCle.js.map} +1 -1
- package/dist/{textarea-aeAP9cDG.cjs → textarea-o9vysorM.cjs} +1 -1
- package/dist/{textarea-aeAP9cDG.cjs.map → textarea-o9vysorM.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-DAYTVw13.cjs → theme-Ce9eIP05.cjs} +1 -1
- package/dist/{theme-DAYTVw13.cjs.map → theme-Ce9eIP05.cjs.map} +1 -1
- package/dist/{theme-DAx1iRNr.js → theme-XO3nHDbW.js} +2 -2
- package/dist/{theme-DAx1iRNr.js.map → theme-XO3nHDbW.js.map} +1 -1
- package/dist/{theme-button-BrHkzCtj.js → theme-button-DNutDO1j.js} +1 -1
- package/dist/{theme-button-BrHkzCtj.js.map → theme-button-DNutDO1j.js.map} +1 -1
- package/dist/{theme-button-LsMKY_N_.cjs → theme-button-H7PRz_bg.cjs} +1 -1
- package/dist/{theme-button-LsMKY_N_.cjs.map → theme-button-H7PRz_bg.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.interface-C_034TxG.js.map → theme.interface-B9TjbSBF.js.map} +1 -1
- package/dist/{theme.interface-DESopuZS.cjs.map → theme.interface-BujperTo.cjs.map} +1 -1
- package/dist/theme.js +3 -3
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-oLBkMvor.cjs → utils-Dt5PpmaQ.cjs} +1 -1
- package/dist/{utils-oLBkMvor.cjs.map → utils-Dt5PpmaQ.cjs.map} +1 -1
- package/dist/{utils-BzFQfaIr.js → utils-kND2Z9Xg.js} +1 -1
- package/dist/{utils-BzFQfaIr.js.map → utils-kND2Z9Xg.js.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +2 -2
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-BJrKS6Zr.cjs → window-BaoSwgGE.cjs} +1 -1
- package/dist/{window-BJrKS6Zr.cjs.map → window-BaoSwgGE.cjs.map} +1 -1
- package/dist/{window-CyDuTN80.js → window-KnLWhQ3S.js} +2 -2
- package/dist/{window-CyDuTN80.js.map → window-KnLWhQ3S.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +4 -5
- package/skills/schmancy/INDEX.md +9 -6
- package/src/index.ts +0 -8
- package/types/src/index.d.ts +0 -8
- package/dist/agent/vendor-highlight-CHJZQQB7.js +0 -2178
- package/dist/agent/vendor-highlight-CHJZQQB7.js.map +0 -1
- package/dist/agent/vendor-jsqr-r7GNh4P3.js +0 -10212
- package/dist/agent/vendor-jsqr-r7GNh4P3.js.map +0 -1
- package/dist/charts.cjs +0 -112
- package/dist/charts.cjs.map +0 -1
- package/dist/charts.js +0 -374
- package/dist/charts.js.map +0 -1
- package/dist/code-highlight-Ddp0oZnm.cjs +0 -190
- package/dist/code-highlight-Ddp0oZnm.cjs.map +0 -1
- package/dist/code-highlight-DtE2-ObF.js +0 -296
- package/dist/code-highlight-DtE2-ObF.js.map +0 -1
- package/dist/code-highlight.cjs +0 -1
- package/dist/code-highlight.js +0 -2
- package/dist/extra-B8IPs6gG.cjs +0 -31
- package/dist/extra-B8IPs6gG.cjs.map +0 -1
- package/dist/extra-DxEWs41z.js +0 -3440
- package/dist/extra-DxEWs41z.js.map +0 -1
- package/dist/extra.cjs +0 -1
- package/dist/extra.js +0 -2
- package/dist/mailbox-CDWqbVvZ.cjs +0 -1140
- package/dist/mailbox-CDWqbVvZ.cjs.map +0 -1
- package/dist/mailbox-DD2How0H.js +0 -1607
- package/dist/mailbox-DD2How0H.js.map +0 -1
- package/dist/mailbox.cjs +0 -1
- package/dist/mailbox.js +0 -2
- package/dist/map-1uwxxvBa.js +0 -208
- package/dist/map-1uwxxvBa.js.map +0 -1
- package/dist/map-BrBSrIqg.cjs +0 -80
- package/dist/map-BrBSrIqg.cjs.map +0 -1
- package/dist/map.cjs +0 -1
- package/dist/map.js +0 -2
- package/dist/mixins-B34UxxCe.js +0 -627
- package/dist/mixins-CAb0b03r.cjs +0 -298
- package/dist/payment-card-form-C4jb-OdM.js +0 -729
- package/dist/payment-card-form-C4jb-OdM.js.map +0 -1
- package/dist/payment-card-form-WEx4CscR.cjs +0 -73
- package/dist/payment-card-form-WEx4CscR.cjs.map +0 -1
- package/dist/payment-card-form.cjs +0 -1
- package/dist/payment-card-form.js +0 -2
- package/dist/qr-scanner.cjs +0 -35
- package/dist/qr-scanner.cjs.map +0 -1
- package/dist/qr-scanner.js +0 -123
- package/dist/qr-scanner.js.map +0 -1
- package/dist/skills/charts.md +0 -93
- package/dist/skills/code-highlight.md +0 -47
- package/dist/skills/extra.md +0 -59
- package/dist/skills/mailbox.md +0 -102
- package/dist/skills/map.md +0 -55
- package/dist/skills/qr-scanner.md +0 -51
- package/dist/skills/schmancy/charts.md +0 -93
- package/dist/skills/schmancy/code-highlight.md +0 -47
- package/dist/skills/schmancy/extra.md +0 -59
- package/dist/skills/schmancy/mailbox.md +0 -102
- package/dist/skills/schmancy/map.md +0 -55
- package/dist/skills/schmancy/qr-scanner.md +0 -51
- package/dist/skills/schmancy/timeline-tile.md +0 -95
- package/dist/skills/timeline-tile.md +0 -95
- package/dist/timeline.cjs +0 -277
- package/dist/timeline.cjs.map +0 -1
- package/dist/timeline.js +0 -326
- package/dist/timeline.js.map +0 -1
- package/skills/schmancy/charts.md +0 -93
- package/skills/schmancy/code-highlight.md +0 -47
- package/skills/schmancy/extra.md +0 -59
- package/skills/schmancy/mailbox.md +0 -102
- package/skills/schmancy/map.md +0 -55
- package/skills/schmancy/qr-scanner.md +0 -51
- package/skills/schmancy/timeline-tile.md +0 -95
- package/src/charts/area-chart.ts +0 -498
- package/src/charts/index.ts +0 -4
- package/src/charts/pills.ts +0 -352
- package/src/charts/types.ts +0 -66
- package/src/charts/utils.ts +0 -65
- package/src/code-highlight/code-highlight.ts +0 -345
- package/src/code-highlight/code-preview.ts +0 -125
- package/src/code-highlight/index.ts +0 -3
- package/src/extra/countries/countries.data.ts +0 -196
- package/src/extra/countries/countries.ts +0 -109
- package/src/extra/countries/index.ts +0 -2
- package/src/extra/index.ts +0 -2
- package/src/extra/timezone/index.ts +0 -2
- package/src/extra/timezone/timezone.ts +0 -118
- package/src/extra/timezone/timezones.data.ts +0 -2546
- package/src/mailbox/README.md +0 -128
- package/src/mailbox/email-editor.ts +0 -1076
- package/src/mailbox/email-layout-selector.ts +0 -58
- package/src/mailbox/email-recipients.ts +0 -599
- package/src/mailbox/email-template-picker.ts +0 -303
- package/src/mailbox/email-viewer.ts +0 -717
- package/src/mailbox/index.ts +0 -31
- package/src/mailbox/mailbox.ts +0 -364
- package/src/mailbox/types.ts +0 -180
- package/src/map/index.ts +0 -1
- package/src/map/map.ts +0 -485
- package/src/payment-card-form/index.ts +0 -1
- package/src/payment-card-form/payment-card-form.ts +0 -331
- package/src/qr-scanner/index.ts +0 -1
- package/src/qr-scanner/qr-scanner.ts +0 -242
- package/src/timeline/index.ts +0 -1
- package/src/timeline/timeline-tile.ts +0 -431
- package/types/src/charts/area-chart.d.ts +0 -58
- package/types/src/charts/index.d.ts +0 -4
- package/types/src/charts/pills.d.ts +0 -51
- package/types/src/charts/types.d.ts +0 -62
- package/types/src/charts/utils.d.ts +0 -28
- package/types/src/code-highlight/code-highlight.d.ts +0 -49
- package/types/src/code-highlight/code-preview.d.ts +0 -30
- package/types/src/code-highlight/index.d.ts +0 -3
- package/types/src/extra/countries/countries.d.ts +0 -26
- package/types/src/extra/countries/countries.data.d.ts +0 -5
- package/types/src/extra/countries/index.d.ts +0 -2
- package/types/src/extra/index.d.ts +0 -2
- package/types/src/extra/timezone/index.d.ts +0 -2
- package/types/src/extra/timezone/timezone.d.ts +0 -34
- package/types/src/extra/timezone/timezones.data.d.ts +0 -7
- package/types/src/mailbox/email-editor.d.ts +0 -101
- package/types/src/mailbox/email-layout-selector.d.ts +0 -18
- package/types/src/mailbox/email-recipients.d.ts +0 -122
- package/types/src/mailbox/email-template-picker.d.ts +0 -54
- package/types/src/mailbox/email-viewer.d.ts +0 -86
- package/types/src/mailbox/index.d.ts +0 -12
- package/types/src/mailbox/mailbox.d.ts +0 -82
- package/types/src/mailbox/types.d.ts +0 -176
- package/types/src/map/index.d.ts +0 -1
- package/types/src/map/map.d.ts +0 -130
- package/types/src/payment-card-form/index.d.ts +0 -1
- package/types/src/payment-card-form/payment-card-form.d.ts +0 -85
- package/types/src/qr-scanner/index.d.ts +0 -1
- package/types/src/qr-scanner/qr-scanner.d.ts +0 -26
- package/types/src/timeline/index.d.ts +0 -1
- package/types/src/timeline/timeline-tile.d.ts +0 -44
- /package/dist/agent/{flow-CaPi2G8y.js → flow-CvG1fLW5.js} +0 -0
- /package/dist/agent/{vendor-material-color-Be96dpGE.js → vendor-material-color-DcL7ZPxx.js} +0 -0
- /package/dist/{form-CI59gad4.js → form-CFvwnfuJ.js} +0 -0
- /package/dist/{form-B2qudx_q.cjs → form-Ceijw1aA.cjs} +0 -0
- /package/dist/{hashContent-a8uVr3xs.js → hashContent-BU6jl5ih.js} +0 -0
- /package/dist/{hashContent-ejkBgDnN.cjs → hashContent-Bobsobip.cjs} +0 -0
- /package/dist/{overlay-stack-CCiTaf_C.js → overlay-stack-DCDS17uj.js} +0 -0
- /package/dist/{overlay-stack-CFGiYf34.cjs → overlay-stack-DPIe_aYv.cjs} +0 -0
- /package/dist/{rxjs-utils-BXpvHN4-.js → rxjs-utils-CVeJQ9KG.js} +0 -0
- /package/dist/{rxjs-utils-CaC-tdot.cjs → rxjs-utils-DCUHg_Ml.cjs} +0 -0
- /package/dist/{theme.interface-C_034TxG.js → theme.interface-B9TjbSBF.js} +0 -0
- /package/dist/{theme.interface-DESopuZS.cjs → theme.interface-BujperTo.cjs} +0 -0
package/dist/charts.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"charts.js","names":[],"sources":["../src/charts/utils.ts","../src/charts/area-chart.ts","../src/charts/pills.ts"],"sourcesContent":["/**\n * Catmull-Rom spline interpolation for smooth curves\n * Returns the interpolated point between p1 and p2\n */\nexport function catmullRomSpline(\n\tp0: { x: number; y: number },\n\tp1: { x: number; y: number },\n\tp2: { x: number; y: number },\n\tp3: { x: number; y: number },\n\tt: number\n): { x: number; y: number } {\n\tconst t2 = t * t\n\tconst t3 = t2 * t\n\n\tconst x =\n\t\t0.5 *\n\t\t(2 * p1.x +\n\t\t\t(-p0.x + p2.x) * t +\n\t\t\t(2 * p0.x - 5 * p1.x + 4 * p2.x - p3.x) * t2 +\n\t\t\t(-p0.x + 3 * p1.x - 3 * p2.x + p3.x) * t3)\n\n\tconst y =\n\t\t0.5 *\n\t\t(2 * p1.y +\n\t\t\t(-p0.y + p2.y) * t +\n\t\t\t(2 * p0.y - 5 * p1.y + 4 * p2.y - p3.y) * t2 +\n\t\t\t(-p0.y + 3 * p1.y - 3 * p2.y + p3.y) * t3)\n\n\treturn { x, y }\n}\n\n/**\n * Converts hex or rgb color to rgba string\n */\nexport function hexToRgba(color: string, alpha: number): string {\n\t// Handle rgb/rgba format\n\tif (color.startsWith('rgb')) {\n\t\tconst match = color.match(/[\\d.]+/g)\n\t\tif (match && match.length >= 3) {\n\t\t\treturn `rgba(${match[0]}, ${match[1]}, ${match[2]}, ${alpha})`\n\t\t}\n\t}\n\n\t// Handle hex format\n\tlet hex = color.replace('#', '')\n\tif (hex.length === 3) {\n\t\thex = hex\n\t\t\t.split('')\n\t\t\t.map(c => c + c)\n\t\t\t.join('')\n\t}\n\n\tconst r = parseInt(hex.substring(0, 2), 16)\n\tconst g = parseInt(hex.substring(2, 4), 16)\n\tconst b = parseInt(hex.substring(4, 6), 16)\n\n\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`\n}\n\n/**\n * Cubic ease-out animation function\n */\nexport function easeOutCubic(t: number): number {\n\treturn 1 - Math.pow(1 - t, 3)\n}\n","import { html, css, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ref, createRef, Ref } from 'lit/directives/ref.js'\nimport { SchmancyElement } from '@mixins/index'\nimport type { ChartDataPoint, ChartTheme, ProcessedDataPoint } from './types'\nimport { catmullRomSpline, hexToRgba, easeOutCubic } from './utils'\n\ninterface TooltipData {\n\tvisible: boolean\n\tx: number\n\ty: number\n\tlabel: string\n\tvalue: number\n\tmetadata?: Record<string, unknown>\n}\n\n@customElement('schmancy-area-chart')\nexport class SchmancyAreaChart extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\t/** Chart data points */\n\t@property({ type: Array })\n\tdata: ChartDataPoint[] = []\n\n\t/** Chart height in pixels */\n\t@property({ type: Number })\n\theight = 200\n\n\t/** Show grid lines */\n\t@property({ type: Boolean })\n\tshowGrid = true\n\n\t/** Show x-axis labels */\n\t@property({ type: Boolean })\n\tshowLabels = true\n\n\t/** Enable tooltips */\n\t@property({ type: Boolean })\n\tshowTooltip = true\n\n\t/** Number of peaks to highlight */\n\t@property({ type: Number })\n\tpeakCount = 3\n\n\t/** Animation duration in milliseconds */\n\t@property({ type: Number })\n\tanimationDuration = 800\n\n\t/** Enable entrance animation */\n\t@property({ type: Boolean })\n\tanimated = true\n\n\t/** Prefix for values (e.g., \"EUR \") */\n\t@property({ type: String })\n\tvaluePrefix = ''\n\n\t/** Suffix for values (e.g., \"%\") */\n\t@property({ type: String })\n\tvalueSuffix = ''\n\n\t/** Decimal places for value display */\n\t@property({ type: Number })\n\tvalueDecimals = 2\n\n\t/** Theme overrides */\n\t@property({ type: Object })\n\ttheme: Partial<ChartTheme> = {}\n\n\t@state() private tooltipData: TooltipData = {\n\t\tvisible: false,\n\t\tx: 0,\n\t\ty: 0,\n\t\tlabel: '',\n\t\tvalue: 0,\n\t}\n\n\t@state() private animationProgress = 0\n\t@state() private isVisible = false\n\n\tprivate canvasRef: Ref<HTMLCanvasElement> = createRef()\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate animationFrameId: number | null = null\n\tprivate observer: IntersectionObserver | null = null\n\tprivate processedData: ProcessedDataPoint[] = []\n\tprivate resizeObserver: ResizeObserver | null = null\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupIntersectionObserver()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.cleanup()\n\t}\n\n\tprivate cleanup() {\n\t\tif (this.animationFrameId !== null) {\n\t\t\tcancelAnimationFrame(this.animationFrameId)\n\t\t\tthis.animationFrameId = null\n\t\t}\n\t\tif (this.observer) {\n\t\t\tthis.observer.disconnect()\n\t\t\tthis.observer = null\n\t\t}\n\t\tif (this.resizeObserver) {\n\t\t\tthis.resizeObserver.disconnect()\n\t\t\tthis.resizeObserver = null\n\t\t}\n\t}\n\n\tprivate setupIntersectionObserver() {\n\t\tthis.observer = new IntersectionObserver(\n\t\t\tentries => {\n\t\t\t\tconst entry = entries[0]\n\t\t\t\tif (entry.isIntersecting && !this.isVisible) {\n\t\t\t\t\tthis.isVisible = true\n\t\t\t\t\tif (this.animated) {\n\t\t\t\t\t\tthis.startAnimation()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.animationProgress = 1\n\t\t\t\t\t\tthis.drawChart()\n\t\t\t\t\t}\n\t\t\t\t} else if (!entry.isIntersecting) {\n\t\t\t\t\tthis.isVisible = false\n\t\t\t\t\tif (this.animationFrameId !== null) {\n\t\t\t\t\t\tcancelAnimationFrame(this.animationFrameId)\n\t\t\t\t\t\tthis.animationFrameId = null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ threshold: 0.1 }\n\t\t)\n\t}\n\n\tprotected updated(changedProperties: PropertyValues) {\n\t\tsuper.updated(changedProperties)\n\n\t\tif (this.containerRef.value && this.observer) {\n\t\t\tthis.observer.observe(this.containerRef.value)\n\t\t}\n\n\t\tif (this.canvasRef.value && !this.resizeObserver) {\n\t\t\tthis.resizeObserver = new ResizeObserver(() => {\n\t\t\t\tthis.drawChart()\n\t\t\t})\n\t\t\tthis.resizeObserver.observe(this.canvasRef.value)\n\t\t}\n\n\t\t// Redraw when data changes\n\t\tif (changedProperties.has('data') && this.isVisible) {\n\t\t\tif (this.animated) {\n\t\t\t\tthis.animationProgress = 0\n\t\t\t\tthis.startAnimation()\n\t\t\t} else {\n\t\t\t\tthis.animationProgress = 1\n\t\t\t\tthis.drawChart()\n\t\t\t}\n\t\t}\n\n\t\t// Redraw on theme or config changes\n\t\tif (\n\t\t\t(changedProperties.has('theme') ||\n\t\t\t\tchangedProperties.has('showGrid') ||\n\t\t\t\tchangedProperties.has('showLabels') ||\n\t\t\t\tchangedProperties.has('peakCount')) &&\n\t\t\tthis.isVisible\n\t\t) {\n\t\t\tthis.drawChart()\n\t\t}\n\t}\n\n\tprivate startAnimation() {\n\t\tconst startTime = performance.now()\n\t\tconst duration = this.animationDuration\n\n\t\tconst animateFrame = (currentTime: number) => {\n\t\t\tconst elapsed = currentTime - startTime\n\t\t\tconst progress = Math.min(elapsed / duration, 1)\n\n\t\t\tthis.animationProgress = easeOutCubic(progress)\n\t\t\tthis.drawChart()\n\n\t\t\tif (progress < 1 && this.isVisible) {\n\t\t\t\tthis.animationFrameId = requestAnimationFrame(animateFrame)\n\t\t\t}\n\t\t}\n\n\t\tthis.animationFrameId = requestAnimationFrame(animateFrame)\n\t}\n\n\tprivate processData(): ProcessedDataPoint[] {\n\t\tif (!this.data || this.data.length === 0) return []\n\n\t\t// Find top N peak values\n\t\tconst sortedByValue = [...this.data].toSorted((a, b) => b.value - a.value)\n\t\tconst peakLabels = new Set(sortedByValue.slice(0, this.peakCount).map(d => d.label))\n\n\t\treturn this.data.map(d => ({\n\t\t\t...d,\n\t\t\tx: 0, // Will be calculated during draw\n\t\t\ty: 0, // Will be calculated during draw\n\t\t\tisPeak: peakLabels.has(d.label),\n\t\t}))\n\t}\n\n\tprivate getThemeValue<K extends keyof ChartTheme>(\n\t\tkey: K,\n\t\tdefaultValue: NonNullable<ChartTheme[K]>\n\t): NonNullable<ChartTheme[K]> {\n\t\treturn (this.theme[key] as NonNullable<ChartTheme[K]>) ?? defaultValue\n\t}\n\n\tprivate drawChart() {\n\t\tconst canvas = this.canvasRef.value\n\t\tif (!canvas) return\n\n\t\tconst ctx = canvas.getContext('2d')\n\t\tif (!ctx) return\n\n\t\tconst dpr = window.devicePixelRatio || 1\n\t\tconst rect = canvas.getBoundingClientRect()\n\t\tconst width = rect.width\n\t\tconst height = rect.height\n\n\t\t// Set canvas size for high DPI\n\t\tcanvas.width = width * dpr\n\t\tcanvas.height = height * dpr\n\t\tctx.scale(dpr, dpr)\n\n\t\t// Clear canvas\n\t\tctx.clearRect(0, 0, width, height)\n\n\t\tconst data = this.processData()\n\t\tif (data.length === 0) return\n\n\t\tconst padding = { top: 20, right: 20, bottom: this.showLabels ? 40 : 20, left: 20 }\n\t\tconst chartWidth = width - padding.left - padding.right\n\t\tconst chartHeight = height - padding.top - padding.bottom\n\n\t\t// Find max value for scaling\n\t\tconst maxValue = Math.max(...data.map(d => d.value), 1)\n\n\t\t// Calculate positions\n\t\t// oxlint-disable-next-line oxc/no-map-spread\n\t\tconst points = data.map((d, i) => ({\n\t\t\t...d,\n\t\t\tx: padding.left + (data.length > 1 ? (i / (data.length - 1)) * chartWidth : chartWidth / 2),\n\t\t\ty: padding.top + chartHeight - (d.value / maxValue) * chartHeight,\n\t\t}))\n\n\t\tthis.processedData = points\n\n\t\t// Get primary color from CSS or theme\n\t\tconst computedStyle = getComputedStyle(this)\n\t\tconst defaultPrimaryColor =\n\t\t\tcomputedStyle.getPropertyValue('--schmancy-sys-color-primary').trim() || '#6750A4'\n\t\tconst primaryColor = this.getThemeValue('primaryColor', defaultPrimaryColor)\n\t\tconst [gradientOpacityTop, gradientOpacityBottom] = this.getThemeValue('gradientOpacity', [0.4, 0.05])\n\t\tconst strokeWidth = this.getThemeValue('strokeWidth', 2)\n\t\tconst pointRadius = this.getThemeValue('pointRadius', 4)\n\t\tconst peakRadius = this.getThemeValue('peakRadius', 6)\n\n\t\t// Draw grid lines\n\t\tif (this.showGrid) {\n\t\t\tctx.strokeStyle = 'rgba(128, 128, 128, 0.15)'\n\t\t\tctx.lineWidth = 1\n\t\t\tctx.setLineDash([4, 4])\n\n\t\t\tfor (let i = 1; i <= 3; i++) {\n\t\t\t\tconst y = padding.top + (chartHeight * i) / 4\n\t\t\t\tctx.beginPath()\n\t\t\t\tctx.moveTo(padding.left, y)\n\t\t\t\tctx.lineTo(width - padding.right, y)\n\t\t\t\tctx.stroke()\n\t\t\t}\n\n\t\t\tctx.setLineDash([])\n\t\t}\n\n\t\t// Create smooth curve path using Catmull-Rom spline\n\t\tconst curvePath = new Path2D()\n\t\tconst areaPath = new Path2D()\n\n\t\tif (points.length >= 2) {\n\t\t\t// Start area path from bottom left\n\t\t\tareaPath.moveTo(points[0].x, padding.top + chartHeight)\n\t\t\tcurvePath.moveTo(points[0].x, points[0].y)\n\t\t\tareaPath.lineTo(points[0].x, points[0].y)\n\n\t\t\tfor (let i = 0; i < points.length - 1; i++) {\n\t\t\t\tconst p0 = points[Math.max(0, i - 1)]\n\t\t\t\tconst p1 = points[i]\n\t\t\t\tconst p2 = points[Math.min(points.length - 1, i + 1)]\n\t\t\t\tconst p3 = points[Math.min(points.length - 1, i + 2)]\n\n\t\t\t\t// Draw curve segments\n\t\t\t\tconst segments = 16\n\t\t\t\tfor (let j = 1; j <= segments; j++) {\n\t\t\t\t\tconst t = j / segments\n\t\t\t\t\tconst point = catmullRomSpline(p0, p1, p2, p3, t)\n\t\t\t\t\tcurvePath.lineTo(point.x, point.y)\n\t\t\t\t\tareaPath.lineTo(point.x, point.y)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Close area path\n\t\t\tareaPath.lineTo(points[points.length - 1].x, padding.top + chartHeight)\n\t\t\tareaPath.closePath()\n\t\t} else if (points.length === 1) {\n\t\t\t// Single point - draw a dot\n\t\t\tcurvePath.arc(points[0].x, points[0].y, pointRadius, 0, Math.PI * 2)\n\t\t}\n\n\t\t// Apply animation clipping\n\t\tctx.save()\n\t\tctx.beginPath()\n\t\tctx.rect(0, 0, padding.left + chartWidth * this.animationProgress, height)\n\t\tctx.clip()\n\n\t\t// Draw gradient fill\n\t\tif (points.length >= 2) {\n\t\t\tconst gradient = ctx.createLinearGradient(0, padding.top, 0, padding.top + chartHeight)\n\t\t\tgradient.addColorStop(0, hexToRgba(primaryColor, gradientOpacityTop))\n\t\t\tgradient.addColorStop(1, hexToRgba(primaryColor, gradientOpacityBottom))\n\n\t\t\tctx.fillStyle = gradient\n\t\t\tctx.fill(areaPath)\n\t\t}\n\n\t\t// Draw stroke\n\t\tctx.strokeStyle = primaryColor\n\t\tctx.lineWidth = strokeWidth\n\t\tctx.lineCap = 'round'\n\t\tctx.lineJoin = 'round'\n\t\tctx.stroke(curvePath)\n\n\t\t// Draw data points\n\t\tpoints.forEach((point, index) => {\n\t\t\tconst pointProgress = (index / (points.length - 1 || 1)) * this.animationProgress\n\t\t\tif (pointProgress < index / (points.length || 1)) return\n\n\t\t\tconst radius = point.isPeak ? peakRadius - 1 : pointRadius - 1\n\t\t\tconst outerRadius = point.isPeak ? peakRadius + 4 : pointRadius + 2\n\n\t\t\t// Outer glow for peaks\n\t\t\tif (point.isPeak) {\n\t\t\t\tctx.beginPath()\n\t\t\t\tctx.arc(point.x, point.y, outerRadius, 0, Math.PI * 2)\n\t\t\t\tctx.fillStyle = hexToRgba(primaryColor, 0.2)\n\t\t\t\tctx.fill()\n\t\t\t}\n\n\t\t\t// Inner dot\n\t\t\tctx.beginPath()\n\t\t\tctx.arc(point.x, point.y, radius, 0, Math.PI * 2)\n\t\t\tctx.fillStyle = primaryColor\n\t\t\tctx.fill()\n\n\t\t\t// White center for peaks\n\t\t\tif (point.isPeak) {\n\t\t\t\tctx.beginPath()\n\t\t\t\tctx.arc(point.x, point.y, 2, 0, Math.PI * 2)\n\t\t\t\tctx.fillStyle = 'white'\n\t\t\t\tctx.fill()\n\t\t\t}\n\t\t})\n\n\t\tctx.restore()\n\n\t\t// Draw labels\n\t\tif (this.showLabels && points.length > 0) {\n\t\t\tctx.fillStyle = 'rgba(128, 128, 128, 0.8)'\n\t\t\tctx.font = '11px system-ui, sans-serif'\n\t\t\tctx.textAlign = 'center'\n\t\t\tctx.textBaseline = 'top'\n\n\t\t\t// Show fewer labels on narrow charts\n\t\t\tconst labelStep = width < 400 ? 3 : width < 600 ? 2 : 1\n\t\t\tpoints.forEach((point, index) => {\n\t\t\t\tif (index % labelStep === 0) {\n\t\t\t\t\tctx.fillText(point.label, point.x, height - padding.bottom + 8)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate formatValue(value: number): string {\n\t\tconst formatted = value.toFixed(this.valueDecimals)\n\t\treturn `${this.valuePrefix}${formatted}${this.valueSuffix}`\n\t}\n\n\tprivate handlePointerMove = (e: PointerEvent) => {\n\t\tif (this.processedData.length === 0 || !this.showTooltip) return\n\n\t\tconst canvas = this.canvasRef.value\n\t\tif (!canvas) return\n\n\t\tconst rect = canvas.getBoundingClientRect()\n\t\tconst x = e.clientX - rect.left\n\n\t\t// Find closest data point\n\t\tlet closestPoint: ProcessedDataPoint | null = null\n\t\tlet minDistance = Infinity\n\n\t\tthis.processedData.forEach(point => {\n\t\t\tconst distance = Math.abs(point.x - x)\n\t\t\tif (distance < minDistance) {\n\t\t\t\tminDistance = distance\n\t\t\t\tclosestPoint = point\n\t\t\t}\n\t\t})\n\n\t\tif (closestPoint && minDistance < 30) {\n\t\t\tthis.tooltipData = {\n\t\t\t\tvisible: true,\n\t\t\t\tx: closestPoint.x,\n\t\t\t\ty: closestPoint.y,\n\t\t\t\tlabel: closestPoint.label,\n\t\t\t\tvalue: closestPoint.value,\n\t\t\t\tmetadata: closestPoint.metadata,\n\t\t\t}\n\t\t} else {\n\t\t\tthis.tooltipData = { ...this.tooltipData, visible: false }\n\t\t}\n\t}\n\n\tprivate handlePointerLeave = () => {\n\t\tthis.tooltipData = { ...this.tooltipData, visible: false }\n\t}\n\n\tprivate renderMetadata() {\n\t\tif (!this.tooltipData.metadata) return ''\n\t\treturn Object.entries(this.tooltipData.metadata).map(\n\t\t\t([key, value]) => html`\n\t\t\t\t<schmancy-typography type=\"body\" token=\"sm\" class=\"text-surface-onVariant\">\n\t\t\t\t\t${key}: ${String(value)}\n\t\t\t\t</schmancy-typography>\n\t\t\t`\n\t\t)\n\t}\n\n\trender() {\n\t\tif (!this.data || this.data.length === 0) {\n\t\t\treturn html``\n\t\t}\n\n\t\treturn html`\n\t\t\t<div ${ref(this.containerRef)} class=\"relative\">\n\t\t\t\t<div class=\"relative\" style=\"height: ${this.height}px; touch-action: pan-y;\">\n\t\t\t\t\t<canvas\n\t\t\t\t\t\t${ref(this.canvasRef)}\n\t\t\t\t\t\tclass=\"w-full h-full\"\n\t\t\t\t\t\tstyle=\"display: block;\"\n\t\t\t\t\t\t@pointermove=${this.handlePointerMove}\n\t\t\t\t\t\t@pointerleave=${this.handlePointerLeave}\n\t\t\t\t\t></canvas>\n\n\t\t\t\t\t<!-- Tooltip -->\n\t\t\t\t\t${this.showTooltip\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"absolute pointer-events-none transition-opacity duration-150 ${this.tooltipData.visible\n\t\t\t\t\t\t\t\t\t\t? 'opacity-100'\n\t\t\t\t\t\t\t\t\t\t: 'opacity-0'}\"\n\t\t\t\t\t\t\t\t\tstyle=\"\n left: ${this.tooltipData.x}px;\n top: ${this.tooltipData.y - 60}px;\n transform: translateX(-50%);\n \"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<schmancy-surface elevation=\"3\" rounded=\"all\" class=\"px-3 py-2 min-w-max\">\n\t\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"sm\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t\t\t${this.tooltipData.label}\n\t\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"text-surface-on font-semibold\">\n\t\t\t\t\t\t\t\t\t\t\t${this.formatValue(this.tooltipData.value)}\n\t\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t\t${this.renderMetadata()}\n\t\t\t\t\t\t\t\t\t</schmancy-surface>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t `\n\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-area-chart': SchmancyAreaChart\n\t}\n}\n","import { html, css, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { SchmancyElement } from '@mixins/index'\nimport type { PillDataPoint, PillSegment } from './types'\n\n/** Default color palette for segments - expanded for uniqueness */\nconst DEFAULT_COLORS = [\n\t'bg-primary',\n\t'bg-secondary',\n\t'bg-tertiary',\n\t'bg-success',\n\t'bg-warning',\n\t'bg-error',\n\t'bg-primary/70',\n\t'bg-secondary/70',\n\t'bg-tertiary/70',\n\t'bg-success/70',\n\t'bg-warning/70',\n\t'bg-error/70',\n\t'bg-primary/40',\n\t'bg-secondary/40',\n\t'bg-tertiary/40',\n]\n\n@customElement('schmancy-pills')\nexport class SchmancyPills extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\t/** Chart data points */\n\t@property({ type: Array })\n\tdata: PillDataPoint[] = []\n\n\t/** Prefix for values (e.g., \"EUR \") */\n\t@property({ type: String })\n\tvaluePrefix = ''\n\n\t/** Suffix for values (e.g., \"%\") */\n\t@property({ type: String })\n\tvalueSuffix = ''\n\n\t/** Decimal places for value display */\n\t@property({ type: Number })\n\tvalueDecimals = 2\n\n\t/** Show medals for top 3 */\n\t@property({ type: Boolean })\n\tshowMedals = true\n\n\t/** Show legend for segments */\n\t@property({ type: Boolean })\n\tshowLegend = true\n\n\t/** Animation duration in milliseconds */\n\t@property({ type: Number })\n\tanimationDuration = 500\n\n\t/** Enable entrance animation */\n\t@property({ type: Boolean })\n\tanimated = true\n\n\t/** Label column width (Tailwind class) */\n\t@property({ type: String })\n\tlabelWidth = 'w-14'\n\n\t/** Value column width (Tailwind class) */\n\t@property({ type: String })\n\tvalueWidth = 'w-20'\n\n\t@state() private animationProgress = 0\n\t@state() private isVisible = false\n\t@state() private categoryColorMap = new Map<string, string>()\n\n\tprivate observer: IntersectionObserver | null = null\n\tprivate animationFrameId: number | null = null\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupIntersectionObserver()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.cleanup()\n\t}\n\n\tprivate cleanup() {\n\t\tif (this.animationFrameId !== null) {\n\t\t\tcancelAnimationFrame(this.animationFrameId)\n\t\t\tthis.animationFrameId = null\n\t\t}\n\t\tif (this.observer) {\n\t\t\tthis.observer.disconnect()\n\t\t\tthis.observer = null\n\t\t}\n\t}\n\n\tprivate setupIntersectionObserver() {\n\t\tthis.observer = new IntersectionObserver(\n\t\t\tentries => {\n\t\t\t\tconst entry = entries[0]\n\t\t\t\tif (entry.isIntersecting && !this.isVisible) {\n\t\t\t\t\tthis.isVisible = true\n\t\t\t\t\tif (this.animated) {\n\t\t\t\t\t\tthis.startAnimation()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.animationProgress = 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ threshold: 0.1 }\n\t\t)\n\t}\n\n\tprotected firstUpdated() {\n\t\tif (this.observer) {\n\t\t\tthis.observer.observe(this)\n\t\t}\n\t}\n\n\tprotected updated(changedProperties: PropertyValues) {\n\t\tsuper.updated(changedProperties)\n\n\t\t// Restart animation when data changes\n\t\tif (changedProperties.has('data') && this.isVisible && this.animated) {\n\t\t\tthis.animationProgress = 0\n\t\t\tthis.startAnimation()\n\t\t}\n\t}\n\n\tprivate startAnimation() {\n\t\tconst startTime = performance.now()\n\t\tconst duration = this.animationDuration\n\n\t\tconst animateFrame = (currentTime: number) => {\n\t\t\tconst elapsed = currentTime - startTime\n\t\t\tconst progress = Math.min(elapsed / duration, 1)\n\n\t\t\t// Ease out cubic\n\t\t\tthis.animationProgress = 1 - Math.pow(1 - progress, 3)\n\n\t\t\tif (progress < 1 && this.isVisible) {\n\t\t\t\tthis.animationFrameId = requestAnimationFrame(animateFrame)\n\t\t\t}\n\t\t}\n\n\t\tthis.animationFrameId = requestAnimationFrame(animateFrame)\n\t}\n\n\tprivate initializeCategoryColors(): void {\n\t\t// Build consistent color map from all segments in data\n\t\tconst categoryTotals = new Map<string, number>()\n\t\tconst explicitColors = new Map<string, string>()\n\n\t\tthis.data.forEach(d => {\n\t\t\tif (d.segments) {\n\t\t\t\td.segments.forEach(seg => {\n\t\t\t\t\tcategoryTotals.set(seg.label, (categoryTotals.get(seg.label) || 0) + seg.value)\n\t\t\t\t\t// Capture explicit colors from segments\n\t\t\t\t\tif (seg.color && !explicitColors.has(seg.label)) {\n\t\t\t\t\t\texplicitColors.set(seg.label, seg.color)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\t// Sort by total value (most = first color)\n\t\tconst sortedCategories = Array.from(categoryTotals.entries())\n\t\t\t.toSorted((a, b) => b[1] - a[1])\n\t\t\t.map(([cat]) => cat)\n\n\t\t// Clear and rebuild - use explicit colors if available, otherwise default palette\n\t\tthis.categoryColorMap.clear()\n\t\tlet defaultColorIndex = 0\n\t\tsortedCategories.forEach(cat => {\n\t\t\tif (explicitColors.has(cat)) {\n\t\t\t\tthis.categoryColorMap.set(cat, explicitColors.get(cat)!)\n\t\t\t} else {\n\t\t\t\tthis.categoryColorMap.set(cat, DEFAULT_COLORS[defaultColorIndex % DEFAULT_COLORS.length])\n\t\t\t\tdefaultColorIndex++\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate getSegmentColor(segment: PillSegment): string {\n\t\t// Use explicit color if provided\n\t\tif (segment.color) return segment.color\n\t\t// Otherwise use from color map\n\t\treturn this.categoryColorMap.get(segment.label) || 'bg-primary'\n\t}\n\n\tprivate formatValue(value: number): string {\n\t\tconst formatted = value.toFixed(this.valueDecimals)\n\t\treturn `${this.valuePrefix}${formatted}${this.valueSuffix}`\n\t}\n\n\tprivate getMedalEmoji(rank: number | undefined): string {\n\t\tif (!this.showMedals || !rank) return ''\n\t\tif (rank === 1) return '🥇'\n\t\tif (rank === 2) return '🥈'\n\t\tif (rank === 3) return '🥉'\n\t\treturn ''\n\t}\n\n\tprivate getMaxValue(): number {\n\t\tif (this.data.length === 0) return 0\n\t\treturn Math.max(...this.data.map(d => d.value), 1)\n\t}\n\n\tprivate renderBar(dataPoint: PillDataPoint, maxValue: number): ReturnType<typeof html> {\n\t\tconst percentage = maxValue > 0 ? (dataPoint.value / maxValue) * 100 : 0\n\t\tconst animatedPercentage = percentage * this.animationProgress\n\n\t\t// If no segments, render solid bar\n\t\tif (!dataPoint.segments || dataPoint.segments.length === 0) {\n\t\t\tconst barColorClass = dataPoint.isPeak\n\t\t\t\t? 'bg-success'\n\t\t\t\t: dataPoint.isLow\n\t\t\t\t\t? 'bg-tertiary opacity-70'\n\t\t\t\t\t: dataPoint.value === 0\n\t\t\t\t\t\t? 'bg-tertiary/40'\n\t\t\t\t\t\t: 'bg-primary'\n\n\t\t\treturn html`\n\t\t\t\t<div\n\t\t\t\t\tclass=\"${barColorClass} h-full transition-all rounded-full\"\n\t\t\t\t\tstyle=\"width: ${Math.max(animatedPercentage, dataPoint.value > 0 ? 2 : 0)}%; transition-duration: ${this.animated ? '0ms' : '300ms'}\"\n\t\t\t\t\ttitle=\"${this.formatValue(dataPoint.value)}\"\n\t\t\t\t></div>\n\t\t\t`\n\t\t}\n\n\t\t// Stacked bar with segments\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"h-full flex\"\n\t\t\t\tstyle=\"width: ${Math.max(animatedPercentage, 2)}%; transition-duration: ${this.animated ? '0ms' : '300ms'}\"\n\t\t\t>\n\t\t\t\t${repeat(\n\t\t\t\t\tdataPoint.segments,\n\t\t\t\t\tseg => seg.label,\n\t\t\t\t\t(seg, index) => {\n\t\t\t\t\t\tconst segmentPercentage = dataPoint.value > 0 ? (seg.value / dataPoint.value) * 100 : 0\n\t\t\t\t\t\tconst marginLeft = index > 0 ? 'ml-px' : ''\n\t\t\t\t\t\tconst brightenClass = dataPoint.isPeak ? 'brightness-110' : ''\n\t\t\t\t\t\tconst colorClass = this.getSegmentColor(seg)\n\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"${colorClass} ${marginLeft} ${brightenClass} h-full transition-all\n\t\t\t\t\t\t\t\t\t${index === 0 ? 'rounded-l-full' : ''}\n\t\t\t\t\t\t\t\t\t${index === dataPoint.segments!.length - 1 ? 'rounded-r-full' : ''}\"\n\t\t\t\t\t\t\t\tstyle=\"width: ${segmentPercentage}%\"\n\t\t\t\t\t\t\t\ttitle=\"${seg.label}: ${this.formatValue(seg.value)}\"\n\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t`\n\t\t\t\t\t}\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate renderLegend(): ReturnType<typeof html> {\n\t\tif (!this.showLegend || this.categoryColorMap.size === 0) {\n\t\t\treturn html``\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"flex flex-wrap gap-3 mt-4 pt-4 border-t border-outline-variant\">\n\t\t\t\t${repeat(\n\t\t\t\t\tArray.from(this.categoryColorMap.entries()),\n\t\t\t\t\t([cat]) => cat,\n\t\t\t\t\t([cat, color]) => html`\n\t\t\t\t\t\t<div class=\"flex items-center gap-1.5\">\n\t\t\t\t\t\t\t<div class=\"${color} w-3 h-3 rounded-sm\"></div>\n\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"sm\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t${cat}\n\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n\n\trender() {\n\t\t// Initialize colors before rendering\n\t\tthis.initializeCategoryColors()\n\n\t\tif (!this.data || this.data.length === 0) {\n\t\t\treturn html``\n\t\t}\n\n\t\tconst maxValue = this.getMaxValue()\n\n\t\treturn html`\n\t\t\t<div class=\"space-y-1\">\n\t\t\t\t${repeat(\n\t\t\t\t\tthis.data,\n\t\t\t\t\td => d.label,\n\t\t\t\t\td => {\n\t\t\t\t\t\tconst rowBgClass = d.isPeak ? 'bg-success/10 rounded-lg' : ''\n\t\t\t\t\t\tconst textColorClass = d.isPeak ? 'text-success font-bold' : 'text-surface-on'\n\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-3 py-2 px-2 ${rowBgClass}\">\n\t\t\t\t\t\t\t\t<!-- Label -->\n\t\t\t\t\t\t\t\t<div class=\"${this.labelWidth} shrink-0 text-right\">\n\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"${textColorClass}\">\n\t\t\t\t\t\t\t\t\t\t${d.label}\n\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<!-- Medal -->\n\t\t\t\t\t\t\t\t<div class=\"w-6 shrink-0 text-center\">\n\t\t\t\t\t\t\t\t\t${d.isPeak || (d.rank && d.rank <= 3)\n\t\t\t\t\t\t\t\t\t\t? html`<span class=\"text-sm\">${this.getMedalEmoji(d.rank)}</span>`\n\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<!-- Bar -->\n\t\t\t\t\t\t\t\t<div class=\"flex-1 h-6 bg-secondary/15 rounded-full overflow-hidden\">\n\t\t\t\t\t\t\t\t\t${this.renderBar(d, maxValue)}\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<!-- Value -->\n\t\t\t\t\t\t\t\t<div class=\"${this.valueWidth} shrink-0 text-right\">\n\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"${textColorClass}\">\n\t\t\t\t\t\t\t\t\t\t${this.formatValue(d.value)}\n\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t}\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t<!-- Legend -->\n\t\t\t${this.renderLegend()}\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-pills': SchmancyPills\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
const e=require(`./chunk-CncqDLb2.cjs`),t=require(`./mixins-CAb0b03r.cjs`),n=require(`./decorate-DpFmy0nm.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`lit/decorators.js`),o=require(`lit`),s=require(`highlight.js/lib/core`);s=e.r(s,1);let c=require(`highlight.js/lib/languages/bash`);c=e.r(c,1);let l=require(`highlight.js/lib/languages/javascript`);l=e.r(l,1);let u=require(`highlight.js/lib/languages/markdown`);u=e.r(u,1);let d=require(`highlight.js/lib/languages/typescript`);d=e.r(d,1);let f=require(`highlight.js/lib/languages/xml`);f=e.r(f,1);let p=require(`lit/directives/unsafe-html.js`);s.default.registerLanguage(`javascript`,l.default),s.default.registerLanguage(`typescript`,d.default),s.default.registerLanguage(`html`,f.default),s.default.registerLanguage(`xml`,f.default),s.default.registerLanguage(`markdown`,u.default),s.default.registerLanguage(`bash`,c.default);var m=class extends t.s{constructor(...e){super(...e),this.language=`javascript`,this.code=``,this.lineNumbers=!1,this.copyButton=!0,this.copied=!1}static{this.styles=[o.css`
|
|
2
|
-
:host {
|
|
3
|
-
display: block;
|
|
4
|
-
width: 100%;
|
|
5
|
-
overflow: hidden;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
/* Code block styling using schmancy color system */
|
|
9
|
-
.hljs {
|
|
10
|
-
display: block;
|
|
11
|
-
overflow-x: auto;
|
|
12
|
-
padding: 0.5em;
|
|
13
|
-
color: var(--md-sys-color-on-surface-variant);
|
|
14
|
-
background: var(--md-sys-color-surface-container-lowest);
|
|
15
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* Comments and documentation */
|
|
19
|
-
.hljs-comment,
|
|
20
|
-
.hljs-quote {
|
|
21
|
-
color: var(--md-sys-color-outline);
|
|
22
|
-
font-style: italic;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/* Keywords, doctags, formulas */
|
|
26
|
-
.hljs-doctag,
|
|
27
|
-
.hljs-keyword,
|
|
28
|
-
.hljs-formula {
|
|
29
|
-
color: var(--md-sys-color-primary);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/* Tags, sections, names, deletions */
|
|
33
|
-
.hljs-section,
|
|
34
|
-
.hljs-name,
|
|
35
|
-
.hljs-selector-tag,
|
|
36
|
-
.hljs-deletion,
|
|
37
|
-
.hljs-subst {
|
|
38
|
-
color: var(--md-sys-color-error);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/* Literals */
|
|
42
|
-
.hljs-literal {
|
|
43
|
-
color: var(--md-sys-color-tertiary);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/* Strings, regex, additions */
|
|
47
|
-
.hljs-string,
|
|
48
|
-
.hljs-regexp,
|
|
49
|
-
.hljs-addition,
|
|
50
|
-
.hljs-attribute,
|
|
51
|
-
.hljs-meta-string {
|
|
52
|
-
color: var(--md-sys-color-secondary);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/* Built-ins and class titles */
|
|
56
|
-
.hljs-built_in,
|
|
57
|
-
.hljs-class .hljs-title {
|
|
58
|
-
color: var(--md-sys-color-tertiary);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Variables, attributes, types */
|
|
62
|
-
.hljs-attr,
|
|
63
|
-
.hljs-variable,
|
|
64
|
-
.hljs-template-variable,
|
|
65
|
-
.hljs-type,
|
|
66
|
-
.hljs-selector-class,
|
|
67
|
-
.hljs-selector-attr,
|
|
68
|
-
.hljs-selector-pseudo,
|
|
69
|
-
.hljs-number {
|
|
70
|
-
color: var(--md-sys-color-on-surface);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* Symbols, bullets, links, meta */
|
|
74
|
-
.hljs-symbol,
|
|
75
|
-
.hljs-bullet,
|
|
76
|
-
.hljs-link,
|
|
77
|
-
.hljs-meta,
|
|
78
|
-
.hljs-selector-id,
|
|
79
|
-
.hljs-title {
|
|
80
|
-
color: var(--md-sys-color-secondary);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.hljs-emphasis {
|
|
84
|
-
font-style: italic;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.hljs-strong {
|
|
88
|
-
font-weight: bold;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.hljs-link {
|
|
92
|
-
text-decoration: underline;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/* Line features styling */
|
|
96
|
-
.code-with-lines {
|
|
97
|
-
background: transparent;
|
|
98
|
-
padding: 0;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.code-line {
|
|
102
|
-
display: block;
|
|
103
|
-
padding-left: 0;
|
|
104
|
-
transition: background-color 0.2s ease;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.code-line.highlighted {
|
|
108
|
-
background-color: var(--md-sys-color-primary-container);
|
|
109
|
-
opacity: 0.2;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.line-number {
|
|
113
|
-
display: inline-block;
|
|
114
|
-
width: 3rem;
|
|
115
|
-
padding-right: 1rem;
|
|
116
|
-
text-align: right;
|
|
117
|
-
color: var(--md-sys-color-outline);
|
|
118
|
-
user-select: none;
|
|
119
|
-
font-size: inherit;
|
|
120
|
-
}
|
|
121
|
-
`]}get highlightedCode(){if(!this.code)return``;let e=``;try{e=s.default.highlight(this.code.trim(),{language:this.language}).value}catch{try{e=s.default.highlightAuto(this.code.trim()).value}catch{e=this.escapeHtml(this.code.trim())}}return this.lineNumbers||this.highlightLines?this.addLineFeatures(e):e}escapeHtml(e){let t=document.createElement(`div`);return t.textContent=e,t.innerHTML}getHighlightedLines(){let e=new Set;if(!this.highlightLines)return e;let t=this.highlightLines.split(`,`);for(let n of t){let t=n.trim();if(t.includes(`-`)){let[n,r]=t.split(`-`).map(e=>parseInt(e.trim()));if(!isNaN(n)&&!isNaN(r))for(let t=n;t<=r;t++)e.add(t)}else{let n=parseInt(t);isNaN(n)||e.add(n)}}return e}addLineFeatures(e){let t=e.split(`
|
|
122
|
-
`),n=this.getHighlightedLines();return t.map((e,t)=>{let r=t+1,i=n.has(r)?`code-line highlighted`:`code-line`,a=``;return this.lineNumbers&&(a+=`<span class="line-number">${r}</span>`),a+=e,`<div class="${i}">${a}</div>`}).join(``)}async copyCode(){try{await navigator.clipboard.writeText(this.code),this.copied=!0,setTimeout(()=>{this.copied=!1},2e3)}catch{}}getLanguageLabel(){return this.filename?this.filename:{javascript:`JavaScript`,typescript:`TypeScript`,html:`HTML`,markdown:`Markdown`,bash:`Bash`}[this.language.toLowerCase()]||this.language.toUpperCase()}render(){let e=this.lineNumbers||this.highlightLines?`code-with-lines`:`hljs`;return o.html`
|
|
123
|
-
<schmancy-details class="bg-surface-default">
|
|
124
|
-
<section slot="summary">
|
|
125
|
-
<!-- Header -->
|
|
126
|
-
<div class="flex items-center justify-between"
|
|
127
|
-
>
|
|
128
|
-
<div class="flex items-center gap-2">
|
|
129
|
-
<div class="flex gap-1.5">
|
|
130
|
-
<div class="w-3 h-3 rounded-full opacity-60" style="background-color: var(--md-sys-color-error);"></div>
|
|
131
|
-
<div class="w-3 h-3 rounded-full opacity-60" style="background-color: var(--md-sys-color-tertiary);"></div>
|
|
132
|
-
<div class="w-3 h-3 rounded-full opacity-60" style="background-color: var(--md-sys-color-secondary);"></div>
|
|
133
|
-
</div>
|
|
134
|
-
<span class="text-xs font-medium opacity-70 ml-2" style="color: var(--md-sys-color-on-surface-variant);">
|
|
135
|
-
${this.getLanguageLabel()}
|
|
136
|
-
</span>
|
|
137
|
-
</div>
|
|
138
|
-
${this.copyButton?o.html`
|
|
139
|
-
<schmancy-button
|
|
140
|
-
.variant="${this.copied?`filled tonal`:`text`}"
|
|
141
|
-
@click=${this.copyCode}
|
|
142
|
-
class="transition-all"
|
|
143
|
-
>
|
|
144
|
-
<schmancy-icon > ${this.copied?`check`:`content_copy`} </schmancy-icon>
|
|
145
|
-
<span class="ml-1">${this.copied?`Copied!`:`Copy`}</span>
|
|
146
|
-
</schmancy-button>
|
|
147
|
-
`:``}
|
|
148
|
-
</div>
|
|
149
|
-
</section>
|
|
150
|
-
<!-- Code -->
|
|
151
|
-
<div class="overflow-auto" style="${this.maxHeight?`max-height: ${this.maxHeight}`:``}">
|
|
152
|
-
<pre class="m-0"><code class="${e}">${(0,p.unsafeHTML)(this.highlightedCode)}</code></pre>
|
|
153
|
-
</div>
|
|
154
|
-
</schmancy-details>
|
|
155
|
-
`}};n.t([(0,a.property)({type:String})],m.prototype,`language`,void 0),n.t([(0,a.property)({type:String})],m.prototype,`code`,void 0),n.t([(0,a.property)({type:String})],m.prototype,`filename`,void 0),n.t([(0,a.property)({type:Boolean})],m.prototype,`lineNumbers`,void 0),n.t([(0,a.property)({type:Boolean})],m.prototype,`copyButton`,void 0),n.t([(0,a.property)({type:String})],m.prototype,`highlightLines`,void 0),n.t([(0,a.property)({type:String})],m.prototype,`maxHeight`,void 0),n.t([(0,a.state)()],m.prototype,`copied`,void 0),m=n.t([(0,a.customElement)(`schmancy-code`)],m);var h=class extends t.s{constructor(...e){super(...e),this.language=`html`,this.layout=`vertical`,this.preview=!0,this.slotContent=``}static{this.styles=[o.css`:host{
|
|
156
|
-
display:block;
|
|
157
|
-
overflow:hidden;
|
|
158
|
-
position:relative;
|
|
159
|
-
inset:0;
|
|
160
|
-
}`]}connectedCallback(){super.connectedCallback(),(0,r.timer)(0).pipe((0,i.take)(1)).subscribe(()=>{let e=this.shadowRoot?.querySelector(`slot`);if(e){let t=e.assignedNodes({flatten:!0}).map(e=>e.nodeType===Node.ELEMENT_NODE?e.outerHTML:e.nodeType===Node.TEXT_NODE&&e.textContent||``).join(``).split(`
|
|
161
|
-
`),n=t.filter(e=>e.trim().length>0).reduce((e,t)=>{let n=t.match(/^(\s*)/)?.[1].length||0;return Math.min(e,n)},1/0);this.slotContent=t.map(e=>e.slice(n)).join(`
|
|
162
|
-
`).trim()}})}render(){let e=this.layout===`horizontal`?`grid grid-cols-1 lg:grid-cols-2 gap-0`:`flex flex-col`,t=this.preview&&this.language.toLowerCase()===`html`;return o.html`
|
|
163
|
-
<schmancy-surface class="rounded-lg overflow-hidden">
|
|
164
|
-
<div class="${t?e:``}">
|
|
165
|
-
<!-- Code section with proper overflow handling -->
|
|
166
|
-
<div class="min-w-0 overflow-hidden">
|
|
167
|
-
<schmancy-code
|
|
168
|
-
language="${this.language}"
|
|
169
|
-
.code="${this.slotContent}"
|
|
170
|
-
?copyButton="${!0}"
|
|
171
|
-
class="block w-full"
|
|
172
|
-
></schmancy-code>
|
|
173
|
-
</div>
|
|
174
|
-
|
|
175
|
-
<!-- Preview section (only visible for HTML and when preview is enabled) -->
|
|
176
|
-
${t?o.html`
|
|
177
|
-
<div class="min-w-0 overflow-auto">
|
|
178
|
-
<schmancy-surface type="solid" class="p-2 h-full">
|
|
179
|
-
<slot></slot>
|
|
180
|
-
</schmancy-surface>
|
|
181
|
-
</div>
|
|
182
|
-
`:o.html`
|
|
183
|
-
<!-- Hidden slot to capture content -->
|
|
184
|
-
<div class="hidden">
|
|
185
|
-
<slot></slot>
|
|
186
|
-
</div>
|
|
187
|
-
`}
|
|
188
|
-
</div>
|
|
189
|
-
</schmancy-surface>
|
|
190
|
-
`}};n.t([(0,a.property)({type:String})],h.prototype,`language`,void 0),n.t([(0,a.property)({type:String})],h.prototype,`layout`,void 0),n.t([(0,a.property)({type:Boolean})],h.prototype,`preview`,void 0),n.t([(0,a.state)()],h.prototype,`slotContent`,void 0),h=n.t([(0,a.customElement)(`schmancy-code-preview`)],h),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-highlight-Ddp0oZnm.cjs","names":[],"sources":["../src/code-highlight/code-highlight.ts","../src/code-highlight/code-preview.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport hljs from 'highlight.js/lib/core'\nimport bash from 'highlight.js/lib/languages/bash'\nimport javascript from 'highlight.js/lib/languages/javascript'\nimport markdown from 'highlight.js/lib/languages/markdown'\nimport typescript from 'highlight.js/lib/languages/typescript'\nimport xml from 'highlight.js/lib/languages/xml'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js'\n\n// Register only the languages we need\nhljs.registerLanguage('javascript', javascript)\nhljs.registerLanguage('typescript', typescript)\nhljs.registerLanguage('html', xml)\nhljs.registerLanguage('xml', xml)\nhljs.registerLanguage('markdown', markdown)\nhljs.registerLanguage('bash', bash)\n\n/**\n * @element schmancy-code\n * Code highlighting component using highlight.js with schmancy theming support\n */\n@customElement('schmancy-code')\nexport class SchmancyCode extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\toverflow: hidden;\n\t}\n\n\t/* Code block styling using schmancy color system */\n\t.hljs {\n\t\tdisplay: block;\n\t\toverflow-x: auto;\n\t\tpadding: 0.5em;\n\t\tcolor: var(--md-sys-color-on-surface-variant);\n\t\tbackground: var(--md-sys-color-surface-container-lowest);\n\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n\t}\n\n\t/* Comments and documentation */\n\t.hljs-comment,\n\t.hljs-quote {\n\t\tcolor: var(--md-sys-color-outline);\n\t\tfont-style: italic;\n\t}\n\n\t/* Keywords, doctags, formulas */\n\t.hljs-doctag,\n\t.hljs-keyword,\n\t.hljs-formula {\n\t\tcolor: var(--md-sys-color-primary);\n\t}\n\n\t/* Tags, sections, names, deletions */\n\t.hljs-section,\n\t.hljs-name,\n\t.hljs-selector-tag,\n\t.hljs-deletion,\n\t.hljs-subst {\n\t\tcolor: var(--md-sys-color-error);\n\t}\n\n\t/* Literals */\n\t.hljs-literal {\n\t\tcolor: var(--md-sys-color-tertiary);\n\t}\n\n\t/* Strings, regex, additions */\n\t.hljs-string,\n\t.hljs-regexp,\n\t.hljs-addition,\n\t.hljs-attribute,\n\t.hljs-meta-string {\n\t\tcolor: var(--md-sys-color-secondary);\n\t}\n\n\t/* Built-ins and class titles */\n\t.hljs-built_in,\n\t.hljs-class .hljs-title {\n\t\tcolor: var(--md-sys-color-tertiary);\n\t}\n\n\t/* Variables, attributes, types */\n\t.hljs-attr,\n\t.hljs-variable,\n\t.hljs-template-variable,\n\t.hljs-type,\n\t.hljs-selector-class,\n\t.hljs-selector-attr,\n\t.hljs-selector-pseudo,\n\t.hljs-number {\n\t\tcolor: var(--md-sys-color-on-surface);\n\t}\n\n\t/* Symbols, bullets, links, meta */\n\t.hljs-symbol,\n\t.hljs-bullet,\n\t.hljs-link,\n\t.hljs-meta,\n\t.hljs-selector-id,\n\t.hljs-title {\n\t\tcolor: var(--md-sys-color-secondary);\n\t}\n\n\t.hljs-emphasis {\n\t\tfont-style: italic;\n\t}\n\n\t.hljs-strong {\n\t\tfont-weight: bold;\n\t}\n\n\t.hljs-link {\n\t\ttext-decoration: underline;\n\t}\n\n\t/* Line features styling */\n\t.code-with-lines {\n\t\tbackground: transparent;\n\t\tpadding: 0;\n\t}\n\n\t.code-line {\n\t\tdisplay: block;\n\t\tpadding-left: 0;\n\t\ttransition: background-color 0.2s ease;\n\t}\n\n\t.code-line.highlighted {\n\t\tbackground-color: var(--md-sys-color-primary-container);\n\t\topacity: 0.2;\n\t}\n\n\t.line-number {\n\t\tdisplay: inline-block;\n\t\twidth: 3rem;\n\t\tpadding-right: 1rem;\n\t\ttext-align: right;\n\t\tcolor: var(--md-sys-color-outline);\n\t\tuser-select: none;\n\t\tfont-size: inherit;\n\t}\n`];\n\t/**\n\t * Programming language for syntax highlighting\n\t */\n\t@property({ type: String })\n\tlanguage: string = 'javascript'\n\n\t/**\n\t * Code content to highlight\n\t */\n\t@property({ type: String })\n\tcode: string = ''\n\n\t/**\n\t * Optional filename or title to display in header\n\t */\n\t@property({ type: String })\n\tfilename?: string\n\n\t/**\n\t * Show line numbers\n\t */\n\t@property({ type: Boolean })\n\tlineNumbers: boolean = false\n\n\t/**\n\t * Show copy button\n\t */\n\t@property({ type: Boolean })\n\tcopyButton: boolean = true\n\n\t/**\n\t * Highlighted line numbers (comma-separated or ranges like \"1-3,5,7-9\")\n\t */\n\t@property({ type: String })\n\thighlightLines?: string\n\n\t/**\n\t * Maximum height before scrolling\n\t */\n\t@property({ type: String })\n\tmaxHeight?: string\n\n\t@state()\n\tprivate copied: boolean = false\n\n\tprivate get highlightedCode(): string {\n\t\tif (!this.code) return ''\n\n\t\tlet highlightedHtml = ''\n\n\t\ttry {\n\t\t\t// Use highlight.js to get highlighted code\n\t\t\tconst result = hljs.highlight(this.code.trim(), { language: this.language })\n\t\t\thighlightedHtml = result.value\n\t\t} catch {\n\t\t\t// Fallback to auto-detection if language is not supported\n\t\t\ttry {\n\t\t\t\tconst result = hljs.highlightAuto(this.code.trim())\n\t\t\t\thighlightedHtml = result.value\n\t\t\t} catch {\n\t\t\t\t// Final fallback to escaped plain text\n\t\t\t\thighlightedHtml = this.escapeHtml(this.code.trim())\n\t\t\t}\n\t\t}\n\n\t\t// Process for line numbers and highlighting if needed\n\t\tif (this.lineNumbers || this.highlightLines) {\n\t\t\treturn this.addLineFeatures(highlightedHtml)\n\t\t}\n\n\t\treturn highlightedHtml\n\t}\n\n\tprivate escapeHtml(text: string): string {\n\t\tconst div = document.createElement('div')\n\t\tdiv.textContent = text\n\t\treturn div.innerHTML\n\t}\n\n\tprivate getHighlightedLines(): Set<number> {\n\t\tconst lines = new Set<number>()\n\t\tif (!this.highlightLines) return lines\n\n\t\tconst parts = this.highlightLines.split(',')\n\t\tfor (const part of parts) {\n\t\t\tconst trimmed = part.trim()\n\t\t\tif (trimmed.includes('-')) {\n\t\t\t\tconst [start, end] = trimmed.split('-').map(n => parseInt(n.trim()))\n\t\t\t\tif (!isNaN(start) && !isNaN(end)) {\n\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\tlines.add(i)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst lineNum = parseInt(trimmed)\n\t\t\t\tif (!isNaN(lineNum)) {\n\t\t\t\t\tlines.add(lineNum)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn lines\n\t}\n\n\tprivate addLineFeatures(highlightedHtml: string): string {\n\t\tconst lines = highlightedHtml.split('\\n')\n\t\tconst highlightedLines = this.getHighlightedLines()\n\n\t\treturn lines\n\t\t\t.map((line, index) => {\n\t\t\t\tconst lineNumber = index + 1\n\t\t\t\tconst isHighlighted = highlightedLines.has(lineNumber)\n\t\t\t\tconst lineClass = isHighlighted ? 'code-line highlighted' : 'code-line'\n\n\t\t\t\tlet content = ''\n\t\t\t\tif (this.lineNumbers) {\n\t\t\t\t\tcontent += `<span class=\"line-number\">${lineNumber}</span>`\n\t\t\t\t}\n\t\t\t\tcontent += line\n\n\t\t\t\treturn `<div class=\"${lineClass}\">${content}</div>`\n\t\t\t})\n\t\t\t.join('')\n\t}\n\n\tprivate async copyCode() {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(this.code)\n\t\t\tthis.copied = true\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.copied = false\n\t\t\t}, 2000)\n\t\t} catch (err) {\n\t\t\tconsole.error('Failed to copy code:', err)\n\t\t}\n\t}\n\n\tprivate getLanguageLabel(): string {\n\t\tconst languageMap: Record<string, string> = {\n\t\t\tjavascript: 'JavaScript',\n\t\t\ttypescript: 'TypeScript',\n\t\t\thtml: 'HTML',\n\t\t\tmarkdown: 'Markdown',\n\t\t\tbash: 'Bash',\n\t\t}\n\n\t\tif (this.filename) {\n\t\t\treturn this.filename\n\t\t}\n\n\t\treturn languageMap[this.language.toLowerCase()] || this.language.toUpperCase()\n\t}\n\n\trender() {\n\t\tconst codeClass = this.lineNumbers || this.highlightLines ? 'code-with-lines' : 'hljs'\n\n\t\treturn html`\n\t\t\t<schmancy-details class=\"bg-surface-default\">\n\t\t\t\t<section slot=\"summary\">\n\t\t\t\t\t<!-- Header -->\n\t\t\t\t\t<div class=\"flex items-center justify-between\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<div class=\"flex gap-1.5\">\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-error);\"></div>\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-tertiary);\"></div>\n\t\t\t\t\t\t\t\t<div class=\"w-3 h-3 rounded-full opacity-60\" style=\"background-color: var(--md-sys-color-secondary);\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<span class=\"text-xs font-medium opacity-70 ml-2\" style=\"color: var(--md-sys-color-on-surface-variant);\">\n\t\t\t\t\t\t\t\t${this.getLanguageLabel()}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t${this.copyButton\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t.variant=\"${this.copied ? 'filled tonal' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t@click=${this.copyCode}\n\t\t\t\t\t\t\t\t\t\tclass=\"transition-all\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<schmancy-icon > ${this.copied ? 'check' : 'content_copy'} </schmancy-icon>\n\t\t\t\t\t\t\t\t\t\t<span class=\"ml-1\">${this.copied ? 'Copied!' : 'Copy'}</span>\n\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t\t<!-- Code -->\n\t\t\t\t<div class=\"overflow-auto\" style=\"${this.maxHeight ? `max-height: ${this.maxHeight}` : ''}\">\n\t\t\t\t\t<pre class=\"m-0\"><code class=\"${codeClass}\">${unsafeHTML(this.highlightedCode)}</code></pre>\n\t\t\t\t</div>\n\t\t\t</schmancy-details>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-code': SchmancyCode\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { timer } from 'rxjs'\nimport { take } from 'rxjs/operators'\n\n/**\n * @element schmancy-code-preview\n * A component that shows code and its rendered preview side by side\n * Takes the content as a slot and displays both the source and rendered result\n */\n@customElement('schmancy-code-preview')\nexport class SchmancyCodePreview extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`:host{\n\t\t\tdisplay:block;\n\t\t\toverflow:hidden;\n\t\t\tposition:relative;\n\t\t\tinset:0;\n\t\t}`,\n\t];\n\n\t/**\n\t * Programming language for syntax highlighting\n\t */\n\t@property({ type: String })\n\tlanguage: string = 'html'\n\n\t/**\n\t * Show code on top or side-by-side\n\t */\n\t@property({ type: String })\n\tlayout: 'vertical' | 'horizontal' = 'vertical'\n\n\t/**\n\t * Whether to render/execute the code in preview section\n\t * When false, only shows the code without rendering\n\t */\n\t@property({ type: Boolean })\n\tpreview: boolean = true\n\n\t@state()\n\tprivate slotContent: string = ''\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\t// Capture the slot content as HTML string\n\t\ttimer(0).pipe(take(1)).subscribe(() => {\n\t\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\t\tif (slot) {\n\t\t\t\tconst nodes = slot.assignedNodes({ flatten: true })\n\t\t\t\tconst htmlStrings = nodes.map(node => {\n\t\t\t\t\tif (node.nodeType === Node.ELEMENT_NODE) {\n\t\t\t\t\t\treturn (node as HTMLElement).outerHTML\n\t\t\t\t\t} else if (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t\t\treturn node.textContent || ''\n\t\t\t\t\t}\n\t\t\t\t\treturn ''\n\t\t\t\t})\n\t\t\t\t\n\t\t\t\t// Clean up the HTML string\n\t\t\t\tconst rawContent = htmlStrings.join('')\n\t\t\t\t\n\t\t\t\t// Find the minimum indentation (excluding empty lines)\n\t\t\t\tconst lines = rawContent.split('\\n')\n\t\t\t\tconst minIndent = lines\n\t\t\t\t\t.filter(line => line.trim().length > 0)\n\t\t\t\t\t.reduce((min, line) => {\n\t\t\t\t\t\tconst indent = line.match(/^(\\s*)/)?.[1].length || 0\n\t\t\t\t\t\treturn Math.min(min, indent)\n\t\t\t\t\t}, Infinity)\n\t\t\t\t\n\t\t\t\t// Remove the minimum indentation from all lines\n\t\t\t\tthis.slotContent = lines\n\t\t\t\t\t.map(line => line.slice(minIndent))\n\t\t\t\t\t.join('\\n')\n\t\t\t\t\t.trim()\n\t\t\t}\n\t\t})\n\t}\n\n\trender() {\n\t\tconst containerClass = this.layout === 'horizontal' \n\t\t\t? 'grid grid-cols-1 lg:grid-cols-2 gap-0' \n\t\t\t: 'flex flex-col'\n\n\t\tconst showPreview = this.preview && this.language.toLowerCase() === 'html'\n\t\t\n\t\treturn html`\n\t\t\t<schmancy-surface class=\"rounded-lg overflow-hidden\">\n\t\t\t\t<div class=\"${showPreview ? containerClass : ''}\">\n\t\t\t\t\t<!-- Code section with proper overflow handling -->\n\t\t\t\t\t<div class=\"min-w-0 overflow-hidden\">\n\t\t\t\t\t\t<schmancy-code\n\t\t\t\t\t\t\tlanguage=\"${this.language}\"\n\t\t\t\t\t\t\t.code=\"${this.slotContent}\"\n\t\t\t\t\t\t\t?copyButton=\"${true}\"\n\t\t\t\t\t\t\tclass=\"block w-full\"\n\t\t\t\t\t\t></schmancy-code>\n\t\t\t\t\t</div>\n\t\t\t\t\t\n\t\t\t\t\t<!-- Preview section (only visible for HTML and when preview is enabled) -->\n\t\t\t\t\t${showPreview ? html`\n\t\t\t\t\t\t<div class=\"min-w-0 overflow-auto\">\n\t\t\t\t\t\t\t<schmancy-surface type=\"solid\" class=\"p-2 h-full\">\n\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t</schmancy-surface>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t` : html`\n\t\t\t\t\t\t<!-- Hidden slot to capture content -->\n\t\t\t\t\t\t<div class=\"hidden\">\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`}\n\t\t\t\t</div>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-code-preview': SchmancyCodePreview\n\t}\n}"],"mappings":"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"}
|
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
import { s as e } from "./mixins-B34UxxCe.js";
|
|
2
|
-
import { t } from "./decorate-23nYs4Le.js";
|
|
3
|
-
import { timer as n } from "rxjs";
|
|
4
|
-
import { take as r } from "rxjs/operators";
|
|
5
|
-
import { customElement as i, property as a, state as o } from "lit/decorators.js";
|
|
6
|
-
import { css as s, html as c } from "lit";
|
|
7
|
-
import l from "highlight.js/lib/core";
|
|
8
|
-
import u from "highlight.js/lib/languages/bash";
|
|
9
|
-
import d from "highlight.js/lib/languages/javascript";
|
|
10
|
-
import f from "highlight.js/lib/languages/markdown";
|
|
11
|
-
import p from "highlight.js/lib/languages/typescript";
|
|
12
|
-
import m from "highlight.js/lib/languages/xml";
|
|
13
|
-
import { unsafeHTML as h } from "lit/directives/unsafe-html.js";
|
|
14
|
-
l.registerLanguage("javascript", d), l.registerLanguage("typescript", p), l.registerLanguage("html", m), l.registerLanguage("xml", m), l.registerLanguage("markdown", f), l.registerLanguage("bash", u);
|
|
15
|
-
var g = class extends e {
|
|
16
|
-
constructor(...e) {
|
|
17
|
-
super(...e), this.language = "javascript", this.code = "", this.lineNumbers = !1, this.copyButton = !0, this.copied = !1;
|
|
18
|
-
}
|
|
19
|
-
static {
|
|
20
|
-
this.styles = [s`
|
|
21
|
-
:host {
|
|
22
|
-
display: block;
|
|
23
|
-
width: 100%;
|
|
24
|
-
overflow: hidden;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/* Code block styling using schmancy color system */
|
|
28
|
-
.hljs {
|
|
29
|
-
display: block;
|
|
30
|
-
overflow-x: auto;
|
|
31
|
-
padding: 0.5em;
|
|
32
|
-
color: var(--md-sys-color-on-surface-variant);
|
|
33
|
-
background: var(--md-sys-color-surface-container-lowest);
|
|
34
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/* Comments and documentation */
|
|
38
|
-
.hljs-comment,
|
|
39
|
-
.hljs-quote {
|
|
40
|
-
color: var(--md-sys-color-outline);
|
|
41
|
-
font-style: italic;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/* Keywords, doctags, formulas */
|
|
45
|
-
.hljs-doctag,
|
|
46
|
-
.hljs-keyword,
|
|
47
|
-
.hljs-formula {
|
|
48
|
-
color: var(--md-sys-color-primary);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/* Tags, sections, names, deletions */
|
|
52
|
-
.hljs-section,
|
|
53
|
-
.hljs-name,
|
|
54
|
-
.hljs-selector-tag,
|
|
55
|
-
.hljs-deletion,
|
|
56
|
-
.hljs-subst {
|
|
57
|
-
color: var(--md-sys-color-error);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/* Literals */
|
|
61
|
-
.hljs-literal {
|
|
62
|
-
color: var(--md-sys-color-tertiary);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/* Strings, regex, additions */
|
|
66
|
-
.hljs-string,
|
|
67
|
-
.hljs-regexp,
|
|
68
|
-
.hljs-addition,
|
|
69
|
-
.hljs-attribute,
|
|
70
|
-
.hljs-meta-string {
|
|
71
|
-
color: var(--md-sys-color-secondary);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/* Built-ins and class titles */
|
|
75
|
-
.hljs-built_in,
|
|
76
|
-
.hljs-class .hljs-title {
|
|
77
|
-
color: var(--md-sys-color-tertiary);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/* Variables, attributes, types */
|
|
81
|
-
.hljs-attr,
|
|
82
|
-
.hljs-variable,
|
|
83
|
-
.hljs-template-variable,
|
|
84
|
-
.hljs-type,
|
|
85
|
-
.hljs-selector-class,
|
|
86
|
-
.hljs-selector-attr,
|
|
87
|
-
.hljs-selector-pseudo,
|
|
88
|
-
.hljs-number {
|
|
89
|
-
color: var(--md-sys-color-on-surface);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/* Symbols, bullets, links, meta */
|
|
93
|
-
.hljs-symbol,
|
|
94
|
-
.hljs-bullet,
|
|
95
|
-
.hljs-link,
|
|
96
|
-
.hljs-meta,
|
|
97
|
-
.hljs-selector-id,
|
|
98
|
-
.hljs-title {
|
|
99
|
-
color: var(--md-sys-color-secondary);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.hljs-emphasis {
|
|
103
|
-
font-style: italic;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.hljs-strong {
|
|
107
|
-
font-weight: bold;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.hljs-link {
|
|
111
|
-
text-decoration: underline;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/* Line features styling */
|
|
115
|
-
.code-with-lines {
|
|
116
|
-
background: transparent;
|
|
117
|
-
padding: 0;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.code-line {
|
|
121
|
-
display: block;
|
|
122
|
-
padding-left: 0;
|
|
123
|
-
transition: background-color 0.2s ease;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.code-line.highlighted {
|
|
127
|
-
background-color: var(--md-sys-color-primary-container);
|
|
128
|
-
opacity: 0.2;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.line-number {
|
|
132
|
-
display: inline-block;
|
|
133
|
-
width: 3rem;
|
|
134
|
-
padding-right: 1rem;
|
|
135
|
-
text-align: right;
|
|
136
|
-
color: var(--md-sys-color-outline);
|
|
137
|
-
user-select: none;
|
|
138
|
-
font-size: inherit;
|
|
139
|
-
}
|
|
140
|
-
`];
|
|
141
|
-
}
|
|
142
|
-
get highlightedCode() {
|
|
143
|
-
if (!this.code) return "";
|
|
144
|
-
let e = "";
|
|
145
|
-
try {
|
|
146
|
-
e = l.highlight(this.code.trim(), { language: this.language }).value;
|
|
147
|
-
} catch {
|
|
148
|
-
try {
|
|
149
|
-
e = l.highlightAuto(this.code.trim()).value;
|
|
150
|
-
} catch {
|
|
151
|
-
e = this.escapeHtml(this.code.trim());
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return this.lineNumbers || this.highlightLines ? this.addLineFeatures(e) : e;
|
|
155
|
-
}
|
|
156
|
-
escapeHtml(e) {
|
|
157
|
-
let t = document.createElement("div");
|
|
158
|
-
return t.textContent = e, t.innerHTML;
|
|
159
|
-
}
|
|
160
|
-
getHighlightedLines() {
|
|
161
|
-
let e = /* @__PURE__ */ new Set();
|
|
162
|
-
if (!this.highlightLines) return e;
|
|
163
|
-
let t = this.highlightLines.split(",");
|
|
164
|
-
for (let n of t) {
|
|
165
|
-
let t = n.trim();
|
|
166
|
-
if (t.includes("-")) {
|
|
167
|
-
let [n, r] = t.split("-").map((e) => parseInt(e.trim()));
|
|
168
|
-
if (!isNaN(n) && !isNaN(r)) for (let t = n; t <= r; t++) e.add(t);
|
|
169
|
-
} else {
|
|
170
|
-
let n = parseInt(t);
|
|
171
|
-
isNaN(n) || e.add(n);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return e;
|
|
175
|
-
}
|
|
176
|
-
addLineFeatures(e) {
|
|
177
|
-
let t = e.split("\n"), n = this.getHighlightedLines();
|
|
178
|
-
return t.map((e, t) => {
|
|
179
|
-
let r = t + 1, i = n.has(r) ? "code-line highlighted" : "code-line", a = "";
|
|
180
|
-
return this.lineNumbers && (a += `<span class="line-number">${r}</span>`), a += e, `<div class="${i}">${a}</div>`;
|
|
181
|
-
}).join("");
|
|
182
|
-
}
|
|
183
|
-
async copyCode() {
|
|
184
|
-
try {
|
|
185
|
-
await navigator.clipboard.writeText(this.code), this.copied = !0, setTimeout(() => {
|
|
186
|
-
this.copied = !1;
|
|
187
|
-
}, 2e3);
|
|
188
|
-
} catch {}
|
|
189
|
-
}
|
|
190
|
-
getLanguageLabel() {
|
|
191
|
-
return this.filename ? this.filename : {
|
|
192
|
-
javascript: "JavaScript",
|
|
193
|
-
typescript: "TypeScript",
|
|
194
|
-
html: "HTML",
|
|
195
|
-
markdown: "Markdown",
|
|
196
|
-
bash: "Bash"
|
|
197
|
-
}[this.language.toLowerCase()] || this.language.toUpperCase();
|
|
198
|
-
}
|
|
199
|
-
render() {
|
|
200
|
-
let e = this.lineNumbers || this.highlightLines ? "code-with-lines" : "hljs";
|
|
201
|
-
return c`
|
|
202
|
-
<schmancy-details class="bg-surface-default">
|
|
203
|
-
<section slot="summary">
|
|
204
|
-
<!-- Header -->
|
|
205
|
-
<div class="flex items-center justify-between"
|
|
206
|
-
>
|
|
207
|
-
<div class="flex items-center gap-2">
|
|
208
|
-
<div class="flex gap-1.5">
|
|
209
|
-
<div class="w-3 h-3 rounded-full opacity-60" style="background-color: var(--md-sys-color-error);"></div>
|
|
210
|
-
<div class="w-3 h-3 rounded-full opacity-60" style="background-color: var(--md-sys-color-tertiary);"></div>
|
|
211
|
-
<div class="w-3 h-3 rounded-full opacity-60" style="background-color: var(--md-sys-color-secondary);"></div>
|
|
212
|
-
</div>
|
|
213
|
-
<span class="text-xs font-medium opacity-70 ml-2" style="color: var(--md-sys-color-on-surface-variant);">
|
|
214
|
-
${this.getLanguageLabel()}
|
|
215
|
-
</span>
|
|
216
|
-
</div>
|
|
217
|
-
${this.copyButton ? c`
|
|
218
|
-
<schmancy-button
|
|
219
|
-
.variant="${this.copied ? "filled tonal" : "text"}"
|
|
220
|
-
@click=${this.copyCode}
|
|
221
|
-
class="transition-all"
|
|
222
|
-
>
|
|
223
|
-
<schmancy-icon > ${this.copied ? "check" : "content_copy"} </schmancy-icon>
|
|
224
|
-
<span class="ml-1">${this.copied ? "Copied!" : "Copy"}</span>
|
|
225
|
-
</schmancy-button>
|
|
226
|
-
` : ""}
|
|
227
|
-
</div>
|
|
228
|
-
</section>
|
|
229
|
-
<!-- Code -->
|
|
230
|
-
<div class="overflow-auto" style="${this.maxHeight ? `max-height: ${this.maxHeight}` : ""}">
|
|
231
|
-
<pre class="m-0"><code class="${e}">${h(this.highlightedCode)}</code></pre>
|
|
232
|
-
</div>
|
|
233
|
-
</schmancy-details>
|
|
234
|
-
`;
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
t([a({ type: String })], g.prototype, "language", void 0), t([a({ type: String })], g.prototype, "code", void 0), t([a({ type: String })], g.prototype, "filename", void 0), t([a({ type: Boolean })], g.prototype, "lineNumbers", void 0), t([a({ type: Boolean })], g.prototype, "copyButton", void 0), t([a({ type: String })], g.prototype, "highlightLines", void 0), t([a({ type: String })], g.prototype, "maxHeight", void 0), t([o()], g.prototype, "copied", void 0), g = t([i("schmancy-code")], g);
|
|
238
|
-
var _ = class extends e {
|
|
239
|
-
constructor(...e) {
|
|
240
|
-
super(...e), this.language = "html", this.layout = "vertical", this.preview = !0, this.slotContent = "";
|
|
241
|
-
}
|
|
242
|
-
static {
|
|
243
|
-
this.styles = [s`:host{
|
|
244
|
-
display:block;
|
|
245
|
-
overflow:hidden;
|
|
246
|
-
position:relative;
|
|
247
|
-
inset:0;
|
|
248
|
-
}`];
|
|
249
|
-
}
|
|
250
|
-
connectedCallback() {
|
|
251
|
-
super.connectedCallback(), n(0).pipe(r(1)).subscribe(() => {
|
|
252
|
-
let e = this.shadowRoot?.querySelector("slot");
|
|
253
|
-
if (e) {
|
|
254
|
-
let t = e.assignedNodes({ flatten: !0 }).map((e) => e.nodeType === Node.ELEMENT_NODE ? e.outerHTML : e.nodeType === Node.TEXT_NODE && e.textContent || "").join("").split("\n"), n = t.filter((e) => e.trim().length > 0).reduce((e, t) => {
|
|
255
|
-
let n = t.match(/^(\s*)/)?.[1].length || 0;
|
|
256
|
-
return Math.min(e, n);
|
|
257
|
-
}, Infinity);
|
|
258
|
-
this.slotContent = t.map((e) => e.slice(n)).join("\n").trim();
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
render() {
|
|
263
|
-
let e = this.layout === "horizontal" ? "grid grid-cols-1 lg:grid-cols-2 gap-0" : "flex flex-col", t = this.preview && this.language.toLowerCase() === "html";
|
|
264
|
-
return c`
|
|
265
|
-
<schmancy-surface class="rounded-lg overflow-hidden">
|
|
266
|
-
<div class="${t ? e : ""}">
|
|
267
|
-
<!-- Code section with proper overflow handling -->
|
|
268
|
-
<div class="min-w-0 overflow-hidden">
|
|
269
|
-
<schmancy-code
|
|
270
|
-
language="${this.language}"
|
|
271
|
-
.code="${this.slotContent}"
|
|
272
|
-
?copyButton="${!0}"
|
|
273
|
-
class="block w-full"
|
|
274
|
-
></schmancy-code>
|
|
275
|
-
</div>
|
|
276
|
-
|
|
277
|
-
<!-- Preview section (only visible for HTML and when preview is enabled) -->
|
|
278
|
-
${t ? c`
|
|
279
|
-
<div class="min-w-0 overflow-auto">
|
|
280
|
-
<schmancy-surface type="solid" class="p-2 h-full">
|
|
281
|
-
<slot></slot>
|
|
282
|
-
</schmancy-surface>
|
|
283
|
-
</div>
|
|
284
|
-
` : c`
|
|
285
|
-
<!-- Hidden slot to capture content -->
|
|
286
|
-
<div class="hidden">
|
|
287
|
-
<slot></slot>
|
|
288
|
-
</div>
|
|
289
|
-
`}
|
|
290
|
-
</div>
|
|
291
|
-
</schmancy-surface>
|
|
292
|
-
`;
|
|
293
|
-
}
|
|
294
|
-
};
|
|
295
|
-
t([a({ type: String })], _.prototype, "language", void 0), t([a({ type: String })], _.prototype, "layout", void 0), t([a({ type: Boolean })], _.prototype, "preview", void 0), t([o()], _.prototype, "slotContent", void 0), _ = t([i("schmancy-code-preview")], _);
|
|
296
|
-
export { g as n, _ as t };
|