@mhmo91/schmancy 0.9.27 → 0.10.1
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/custom-elements.json +987 -2259
- package/dist/active-host-0of-L858.cjs +1 -0
- package/dist/active-host-0of-L858.cjs.map +1 -0
- package/dist/active-host-D-a1X-nq.js +57 -0
- package/dist/active-host-D-a1X-nq.js.map +1 -0
- package/dist/agent/{flow-CvG1fLW5.js.map → flow-CaPi2G8y.js.map} +1 -1
- package/dist/agent/{rolldown-runtime-BIIoCavz.js → rolldown-runtime-DsMetpgY.js} +2 -9
- package/dist/agent/schmancy.agent.js +6465 -7794
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +262 -1462
- package/dist/agent/{vendor-highlight-Dow87ZL_.js → vendor-highlight-CHJZQQB7.js} +85 -90
- package/dist/agent/{vendor-highlight-Dow87ZL_.js.map → vendor-highlight-CHJZQQB7.js.map} +1 -1
- package/dist/agent/{vendor-jsqr-Bl4iAtKC.js → vendor-jsqr-r7GNh4P3.js} +1 -1
- package/dist/agent/{vendor-jsqr-Bl4iAtKC.js.map → vendor-jsqr-r7GNh4P3.js.map} +1 -1
- package/dist/agent/{vendor-material-color-DcL7ZPxx.js.map → vendor-material-color-Be96dpGE.js.map} +1 -1
- package/dist/{animation-hXFClrIn.js.map → animation-BK-8BwY8.js.map} +1 -1
- package/dist/{animation-CQRdLgzX.cjs.map → animation-CO_Csq84.cjs.map} +1 -1
- package/dist/{area-BGBCMC79.js → area-C_J4qxKO.js} +20 -15
- package/dist/area-C_J4qxKO.js.map +1 -0
- package/dist/area-ISC8Mdkh.cjs +12 -0
- package/dist/area-ISC8Mdkh.cjs.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +2 -2
- package/dist/{audio-Dvr-RBzE.cjs → audio-DZN8HsSS.cjs} +1 -1
- package/dist/{audio-Dvr-RBzE.cjs.map → audio-DZN8HsSS.cjs.map} +1 -1
- package/dist/{audio-ql6nvY0y.js → audio-Tmre4WyL.js} +1 -1
- package/dist/{audio-ql6nvY0y.js.map → audio-Tmre4WyL.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/autocomplete-BDF85W0J.cjs +115 -0
- package/dist/autocomplete-BDF85W0J.cjs.map +1 -0
- package/dist/{autocomplete-C2P0Soht.js → autocomplete-CM8VqW9S.js} +29 -26
- package/dist/autocomplete-CM8VqW9S.js.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +7 -0
- package/dist/avatar.cjs.map +1 -0
- package/dist/avatar.js +87 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/boat-CpXe-Qto.cjs +80 -0
- package/dist/boat-CpXe-Qto.cjs.map +1 -0
- package/dist/{boat-DXZ0k7oa.js → boat-DxYNK4xT.js} +43 -54
- package/dist/boat-DxYNK4xT.js.map +1 -0
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +4 -4
- package/dist/breadcrumb.cjs.map +1 -1
- package/dist/breadcrumb.js +16 -11
- package/dist/breadcrumb.js.map +1 -1
- package/dist/{busy-iRjq6Nvd.js → busy-CP-gRfAP.js} +14 -9
- package/dist/busy-CP-gRfAP.js.map +1 -0
- package/dist/{busy-DGYhpTnO.cjs → busy-Dma4gtnz.cjs} +4 -4
- package/dist/busy-Dma4gtnz.cjs.map +1 -0
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +24 -24
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +42 -37
- package/dist/button.js.map +1 -1
- package/dist/{card-wUTjx0EC.js → card-Bv--HeGO.js} +41 -30
- package/dist/card-Bv--HeGO.js.map +1 -0
- package/dist/{card-DjYnCckw.cjs → card-ClroODSK.cjs} +6 -6
- package/dist/card-ClroODSK.cjs.map +1 -0
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +5 -5
- package/dist/charts.cjs.map +1 -1
- package/dist/charts.js +21 -16
- package/dist/charts.js.map +1 -1
- package/dist/{checkbox-VBSenxgb.js → checkbox-1gQOOcja.js} +86 -82
- package/dist/checkbox-1gQOOcja.js.map +1 -0
- package/dist/checkbox-DvTZXN1Y.cjs +39 -0
- package/dist/checkbox-DvTZXN1Y.cjs.map +1 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-D6ptH5re.cjs → chips-Bw7FNDpX.cjs} +19 -19
- package/dist/chips-Bw7FNDpX.cjs.map +1 -0
- package/dist/{chips-BDS9lkPa.js → chips-wkfKzf_e.js} +146 -136
- package/dist/chips-wkfKzf_e.js.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/{code-highlight-BzRmBZzz.cjs → code-highlight-CJzuds4c.cjs} +15 -15
- package/dist/code-highlight-CJzuds4c.cjs.map +1 -0
- package/dist/{code-highlight-Bi91XHJN.js → code-highlight-CcdCFMrn.js} +37 -40
- package/dist/code-highlight-CcdCFMrn.js.map +1 -0
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/connectivity.cjs +2 -2
- package/dist/connectivity.cjs.map +1 -1
- package/dist/connectivity.js +10 -7
- package/dist/connectivity.js.map +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +2 -2
- package/dist/context-Bdu1xt0W.js +3 -0
- package/dist/{context-BerzpUhI.js.map → context-Bdu1xt0W.js.map} +1 -1
- package/dist/context-daN5G6HS.cjs +1 -0
- package/dist/{context-C6dHUHhi.cjs.map → context-daN5G6HS.cjs.map} +1 -1
- package/dist/{cursor-glow-BydlDInj.js → cursor-glow-Ah7VXSj7.js} +1 -1
- package/dist/{cursor-glow-BydlDInj.js.map → cursor-glow-Ah7VXSj7.js.map} +1 -1
- package/dist/{cursor-glow-Duw9jHmh.cjs → cursor-glow-Bulq-38P.cjs} +1 -1
- package/dist/{cursor-glow-Duw9jHmh.cjs.map → cursor-glow-Bulq-38P.cjs.map} +1 -1
- package/dist/{date-range-ClTMg1AB.js → date-range-BDHz_Olm.js} +16 -17
- package/dist/date-range-BDHz_Olm.js.map +1 -0
- package/dist/date-range-BsPW60vp.cjs +131 -0
- package/dist/date-range-BsPW60vp.cjs.map +1 -0
- package/dist/{date-range-inline-CpKG6qt2.js → date-range-inline-1NmZE_Xr.js} +5 -5
- package/dist/{date-range-inline-CpKG6qt2.js.map → date-range-inline-1NmZE_Xr.js.map} +1 -1
- package/dist/date-range-inline-BsjNNGFR.cjs +43 -0
- package/dist/{date-range-inline-B9Dp2z6C.cjs.map → date-range-inline-BsjNNGFR.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 +9 -1
- package/dist/delay.cjs.map +1 -0
- package/dist/delay.js +77 -2
- package/dist/delay.js.map +1 -0
- package/dist/{details-CPjlqQD4.js → details-BEp2s2ca.js} +19 -18
- package/dist/details-BEp2s2ca.js.map +1 -0
- package/dist/{details-Cz9ok9si.cjs → details-BtUNqzn8.cjs} +9 -9
- package/dist/details-BtUNqzn8.cjs.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-service-DH-tjPuE.js → dialog-service-DI9PPy4H.js} +2 -2
- package/dist/dialog-service-DI9PPy4H.js.map +1 -0
- package/dist/{dialog-service-CzDO08Gy.cjs → dialog-service-DJd5L0f5.cjs} +1 -1
- package/dist/dialog-service-DJd5L0f5.cjs.map +1 -0
- package/dist/dialog.cjs +2 -2
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +13 -14
- package/dist/dialog.js.map +1 -1
- package/dist/directives.cjs +2 -11
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.js +141 -227
- package/dist/directives.js.map +1 -1
- package/dist/discovery.cjs +1 -1
- package/dist/discovery.cjs.map +1 -1
- package/dist/discovery.js +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/{divider-CILo3_vi.cjs → divider-CpNT11Iy.cjs} +3 -3
- package/dist/divider-CpNT11Iy.cjs.map +1 -0
- package/dist/{divider-ghgyw5CU.js → divider-VxpjZ8hk.js} +11 -9
- package/dist/divider-VxpjZ8hk.js.map +1 -0
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +4 -4
- package/dist/dropdown.cjs.map +1 -1
- package/dist/dropdown.js +29 -28
- package/dist/dropdown.js.map +1 -1
- package/dist/expand-05azMpho.cjs +141 -0
- package/dist/expand-05azMpho.cjs.map +1 -0
- package/dist/{expand-CbjBr_Ds.js → expand-CRUl3-mN.js} +24 -20
- package/dist/expand-CRUl3-mN.js.map +1 -0
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-BZeZOMBI.cjs → extra-CyERULfm.cjs} +6 -6
- package/dist/extra-CyERULfm.cjs.map +1 -0
- package/dist/{extra-DK9MQtPJ.js → extra-aNV1fO6W.js} +19 -14
- package/dist/extra-aNV1fO6W.js.map +1 -0
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/float-DRET9mVZ.cjs +1 -0
- package/dist/{float-CuZ8LOgB.cjs.map → float-DRET9mVZ.cjs.map} +1 -1
- package/dist/{float-BfCvGeY9.js → float-N3qhNET_.js} +2 -2
- package/dist/{float-BfCvGeY9.js.map → float-N3qhNET_.js.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-rCZqoAoK.js → form-BtwOBMZ9.js} +1 -1
- package/dist/form-BtwOBMZ9.js.map +1 -0
- package/dist/{form-wI58M85H.cjs → form-CSJp687X.cjs} +1 -1
- package/dist/form-CSJp687X.cjs.map +1 -0
- 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/handover/claude-design-brief.md +19 -54
- package/dist/handover/claude-design-setup.md +57 -0
- package/dist/{hashContent-B2IntJQf.js.map → hashContent-1ARKIsx9.js.map} +1 -1
- package/dist/{hashContent-CahnEuut.cjs.map → hashContent-Bp5S6T4U.cjs.map} +1 -1
- package/dist/{icons-Drq4kKy2.js → icons-BBJqwT_B.js} +27 -24
- package/dist/icons-BBJqwT_B.js.map +1 -0
- package/dist/icons-CNixJ6kL.cjs +52 -0
- package/dist/icons-CNixJ6kL.cjs.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-BmyHW8km.js → iframe-DoN_toqE.js} +17 -11
- package/dist/iframe-DoN_toqE.js.map +1 -0
- package/dist/iframe-g-4DjAD7.cjs +24 -0
- package/dist/iframe-g-4DjAD7.cjs.map +1 -0
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +77 -77
- package/dist/{input-Bc3bVISm.js → input-ClnkMJgh.js} +30 -30
- package/dist/input-ClnkMJgh.js.map +1 -0
- package/dist/{input-BGNZlfL8.cjs → input-CwFslLcF.cjs} +14 -14
- package/dist/input-CwFslLcF.cjs.map +1 -0
- package/dist/{input-chip-DN-cwf11.cjs → input-chip-DMXRT7bK.cjs} +2 -2
- package/dist/input-chip-DMXRT7bK.cjs.map +1 -0
- package/dist/{input-chip-BQrjpjaQ.js → input-chip-DwSyFv1x.js} +7 -4
- package/dist/input-chip-DwSyFv1x.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.cjs.map +1 -1
- package/dist/json.js +7 -5
- package/dist/json.js.map +1 -1
- package/dist/kbd.cjs +2 -2
- package/dist/kbd.cjs.map +1 -1
- package/dist/kbd.js +9 -7
- package/dist/kbd.js.map +1 -1
- package/dist/{layout-fjM1DWlF.js → layout-BghHmee6.js} +1 -1
- package/dist/{layout-fjM1DWlF.js.map → layout-BghHmee6.js.map} +1 -1
- package/dist/{layout-CTfRXQoz.cjs → layout-VmxXuGGp.cjs} +1 -1
- package/dist/{layout-CTfRXQoz.cjs.map → layout-VmxXuGGp.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -3
- package/dist/{lazy-D6R5N5v4.js.map → lazy-B0ia54tT.js.map} +1 -1
- package/dist/{lazy-BDNnH_r7.cjs.map → lazy-Dq9mRRjT.cjs.map} +1 -1
- package/dist/{lightbox-CY52Z_ig.js → lightbox-IleIcq19.js} +13 -12
- package/dist/lightbox-IleIcq19.js.map +1 -0
- package/dist/lightbox-m5FLmYlv.cjs +202 -0
- package/dist/lightbox-m5FLmYlv.cjs.map +1 -0
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-D7wUxu1C.js → list-BlXJlm16.js} +26 -21
- package/dist/list-BlXJlm16.js.map +1 -0
- package/dist/list-C-b9p1yi.cjs +40 -0
- package/dist/list-C-b9p1yi.cjs.map +1 -0
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{magnetic-CVXEkYTA.cjs → magnetic-BH0TsofV.cjs} +1 -1
- package/dist/{magnetic-CVXEkYTA.cjs.map → magnetic-BH0TsofV.cjs.map} +1 -1
- package/dist/{magnetic-BhXebqF3.js → magnetic-BZGFxAWG.js} +2 -2
- package/dist/{magnetic-BhXebqF3.js.map → magnetic-BZGFxAWG.js.map} +1 -1
- package/dist/{mailbox-DLiBGJhY.cjs → mailbox-B0hZLpF1.cjs} +64 -66
- package/dist/mailbox-B0hZLpF1.cjs.map +1 -0
- package/dist/{mailbox--EN-JhjV.js → mailbox-DAmejcKa.js} +137 -126
- package/dist/mailbox-DAmejcKa.js.map +1 -0
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-B0S_q3ma.js → map-BoIu47qU.js} +11 -9
- package/dist/map-BoIu47qU.js.map +1 -0
- package/dist/map-CZ0816EI.cjs +80 -0
- package/dist/map-CZ0816EI.cjs.map +1 -0
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{menu-3edZGQ1x.cjs → menu-BFHBnp5M.cjs} +5 -5
- package/dist/menu-BFHBnp5M.cjs.map +1 -0
- package/dist/{menu-COeFpb6n.js → menu-BV9_8ys8.js} +15 -10
- package/dist/menu-BV9_8ys8.js.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-BIXF7xkF.cjs +298 -0
- package/dist/mixins-BIXF7xkF.cjs.map +1 -0
- package/dist/mixins-CL1krSOE.js +627 -0
- package/dist/mixins-CL1krSOE.js.map +1 -0
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +2 -87
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +2 -2
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +3 -3
- package/dist/navigation-rail.cjs.map +1 -1
- package/dist/navigation-rail.js +15 -16
- package/dist/navigation-rail.js.map +1 -1
- package/dist/notification-CigTy3ia.cjs +23 -0
- package/dist/notification-CigTy3ia.cjs.map +1 -0
- package/dist/{notification-CC-TFN5v.js → notification-Dzm6zWxX.js} +40 -38
- package/dist/notification-Dzm6zWxX.js.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/option-BfvzzkzM.cjs +43 -0
- package/dist/option-BfvzzkzM.cjs.map +1 -0
- package/dist/{option-BwAF4nAw.js → option-Dyb0Q45u.js} +9 -7
- package/dist/option-Dyb0Q45u.js.map +1 -0
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-7bs4ZNnh.cjs → overlay-stack-BprhAE9a.cjs} +1 -1
- package/dist/{overlay-stack-7bs4ZNnh.cjs.map → overlay-stack-BprhAE9a.cjs.map} +1 -1
- package/dist/{overlay-stack-DXPYHPhk.js → overlay-stack-CAQno0CK.js} +1 -1
- package/dist/{overlay-stack-DXPYHPhk.js.map → overlay-stack-CAQno0CK.js.map} +1 -1
- package/dist/overlay.cjs +43 -45
- package/dist/overlay.cjs.map +1 -1
- package/dist/overlay.js +684 -268
- package/dist/overlay.js.map +1 -1
- package/dist/page.cjs +3 -3
- package/dist/page.cjs.map +1 -1
- package/dist/page.js +15 -13
- package/dist/page.js.map +1 -1
- package/dist/payment-card-form-CQ6sLlrh.cjs +73 -0
- package/dist/{components-DkmEgyAc.cjs.map → payment-card-form-CQ6sLlrh.cjs.map} +1 -1
- package/dist/{components-DZgJWHdZ.js → payment-card-form-D9N2Q0wM.js} +21 -22
- package/dist/{components-DZgJWHdZ.js.map → payment-card-form-D9N2Q0wM.js.map} +1 -1
- package/dist/payment-card-form.cjs +1 -0
- package/dist/payment-card-form.js +2 -0
- package/dist/{progress-Yz6EMNSu.cjs → progress-Dyri7dc2.cjs} +3 -3
- package/dist/progress-Dyri7dc2.cjs.map +1 -0
- package/dist/{progress-Bk_Q1Shy.js → progress-LPwPfzBi.js} +16 -13
- package/dist/progress-LPwPfzBi.js.map +1 -0
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/qr-scanner.cjs +5 -5
- package/dist/qr-scanner.cjs.map +1 -1
- package/dist/qr-scanner.js +14 -15
- package/dist/qr-scanner.js.map +1 -1
- package/dist/radio-group-DK-T6jGy.cjs +40 -0
- package/dist/radio-group-DK-T6jGy.cjs.map +1 -0
- package/dist/{radio-group-BcdcjLNC.js → radio-group-DqP886F-.js} +14 -12
- package/dist/radio-group-DqP886F-.js.map +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +2 -2
- package/dist/range.cjs.map +1 -1
- package/dist/range.js +9 -7
- package/dist/range.js.map +1 -1
- package/dist/{reduced-motion-BZTLqAyl.js.map → reduced-motion-D-L12p7G.js.map} +1 -1
- package/dist/{reduced-motion-9RjNnhIg.cjs.map → reduced-motion-Ds-HjMzn.cjs.map} +1 -1
- package/dist/{rxjs-utils-DJbZRjp3.cjs.map → rxjs-utils-Csnks202.cjs.map} +1 -1
- package/dist/{rxjs-utils-CKTnEKUH.js.map → rxjs-utils-d-ivVN84.js.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-DXQv0ejL.js → scroll-BD82ANjm.js} +9 -7
- package/dist/scroll-BD82ANjm.js.map +1 -0
- package/dist/scroll-yfNU0zNO.cjs +26 -0
- package/dist/scroll-yfNU0zNO.cjs.map +1 -0
- package/dist/search-BLCRsxIC.cjs +1 -0
- package/dist/{search-CwMav5QB.cjs.map → search-BLCRsxIC.cjs.map} +1 -1
- package/dist/{search-CvUZRLF1.js → search-BTz7-Rev.js} +1 -1
- package/dist/{search-CvUZRLF1.js.map → search-BTz7-Rev.js.map} +1 -1
- package/dist/{select-BV4lK2zy.cjs → select-BR3r3SZe.cjs} +6 -6
- package/dist/select-BR3r3SZe.cjs.map +1 -0
- package/dist/{select-DKyGWDsG.js → select-GONAphZI.js} +23 -20
- package/dist/select-GONAphZI.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-C3TLKItO.js → sheet-C4sAGqTf.js} +22 -20
- package/dist/sheet-C4sAGqTf.js.map +1 -0
- package/dist/sheet-D9pZMrzs.cjs +35 -0
- package/dist/sheet-D9pZMrzs.cjs.map +1 -0
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-Dlv20Zfc.js → sheet.service-B7h_-e-q.js} +3 -3
- package/dist/{sheet.service-Dlv20Zfc.js.map → sheet.service-B7h_-e-q.js.map} +1 -1
- package/dist/sheet.service-C1J0-i4d.cjs +1 -0
- package/dist/{sheet.service-RcDBwHmv.cjs.map → sheet.service-C1J0-i4d.cjs.map} +1 -1
- package/dist/skeleton.cjs +2 -2
- package/dist/skeleton.cjs.map +1 -1
- package/dist/skeleton.js +9 -7
- package/dist/skeleton.js.map +1 -1
- package/dist/skills/INDEX.md +1 -1
- package/dist/skills/SKILL.md +17 -5
- package/dist/skills/mixins.md +78 -20
- package/dist/skills/schmancy/INDEX.md +1 -1
- package/dist/skills/schmancy/SKILL.md +17 -5
- package/dist/skills/schmancy/mixins.md +78 -20
- package/dist/skills/schmancy/state.md +501 -0
- package/dist/skills/schmancy/theme.md +15 -0
- package/dist/skills/schmancy/timeline-tile.md +95 -0
- package/dist/skills/state.md +501 -0
- package/dist/skills/theme.md +15 -0
- package/dist/skills/timeline-tile.md +95 -0
- package/dist/slider.cjs +5 -5
- package/dist/slider.cjs.map +1 -1
- package/dist/slider.js +18 -13
- package/dist/slider.js.map +1 -1
- package/dist/{sound.service-DWZe6swU.js → sound.service-Ba_HNBLD.js} +3 -3
- package/dist/sound.service-Ba_HNBLD.js.map +1 -0
- package/dist/sound.service-CvdB2yUJ.cjs +1 -0
- package/dist/sound.service-CvdB2yUJ.cjs.map +1 -0
- package/dist/{splash-screen-DbI5RgBf.js → splash-screen-BGMZmQRT.js} +12 -9
- package/dist/splash-screen-BGMZmQRT.js.map +1 -0
- package/dist/splash-screen-DqULOTZ0.cjs +41 -0
- package/dist/splash-screen-DqULOTZ0.cjs.map +1 -0
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-00DfxCJq.js → src-CHM4hrEr.js} +299 -351
- package/dist/src-CHM4hrEr.js.map +1 -0
- package/dist/src-DzFcGdcn.cjs +263 -0
- package/dist/src-DzFcGdcn.cjs.map +1 -0
- package/dist/state-BAW3C11I.cjs +1 -0
- package/dist/state-BAW3C11I.cjs.map +1 -0
- package/dist/state-ClRXrqDA.js +846 -0
- package/dist/state-ClRXrqDA.js.map +1 -0
- package/dist/state.cjs +1 -0
- package/dist/state.js +3 -0
- package/dist/steps.cjs +10 -10
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +29 -24
- package/dist/steps.js.map +1 -1
- package/dist/surface-BHJgIDz9.js +24 -0
- package/dist/surface-BHJgIDz9.js.map +1 -0
- package/dist/surface-DW78bc8W.cjs +7 -0
- package/dist/surface-DW78bc8W.cjs.map +1 -0
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +2 -2
- package/dist/switch.cjs.map +1 -1
- package/dist/switch.js +7 -5
- package/dist/switch.js.map +1 -1
- package/dist/table.cjs +72 -1
- package/dist/table.cjs.map +1 -0
- package/dist/table.js +174 -2
- package/dist/table.js.map +1 -0
- package/dist/{tabs-Ce55RbwF.js → tabs-BCRVyQU1.js} +22 -22
- package/dist/tabs-BCRVyQU1.js.map +1 -0
- package/dist/tabs-EIEhkEUb.cjs +31 -0
- package/dist/tabs-EIEhkEUb.cjs.map +1 -0
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +2 -2
- package/dist/{textarea-DjN1D9u0.js → textarea-DApOhSAL.js} +30 -28
- package/dist/textarea-DApOhSAL.js.map +1 -0
- package/dist/textarea-zxNlRLVm.cjs +39 -0
- package/dist/textarea-zxNlRLVm.cjs.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-pbxlt72h.js → theme-BCUjQH6-.js} +45 -41
- package/dist/{theme-pbxlt72h.js.map → theme-BCUjQH6-.js.map} +1 -1
- package/dist/theme-Z43TLE61.cjs +181 -0
- package/dist/{theme-B-IJ2r7Q.cjs.map → theme-Z43TLE61.cjs.map} +1 -1
- package/dist/theme-button-Czsdp3o1.cjs +8 -0
- package/dist/theme-button-Czsdp3o1.cjs.map +1 -0
- package/dist/{theme-button-CEMeAUOL.js → theme-button-DdSbcivT.js} +3 -4
- package/dist/theme-button-DdSbcivT.js.map +1 -0
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.events-NuihzD_p.js.map → theme.events-Cv7N4Toe.js.map} +1 -1
- package/dist/{theme.events-DakXxZeP.cjs.map → theme.events-DM4H5F2d.cjs.map} +1 -1
- package/dist/{theme.interface-DTwkuAKJ.cjs.map → theme.interface-D9l33b-M.cjs.map} +1 -1
- package/dist/{theme.interface-Buged9Cg.js.map → theme.interface-DnVNre4O.js.map} +1 -1
- package/dist/theme.js +5 -5
- package/dist/{theme.service-cOfPrtfe.js → theme.service-9clsqyee.js} +4 -4
- package/dist/theme.service-9clsqyee.js.map +1 -0
- package/dist/theme.service-CP71ojp6.cjs +1 -0
- package/dist/theme.service-CP71ojp6.cjs.map +1 -0
- package/dist/timeline.cjs +277 -0
- package/dist/timeline.cjs.map +1 -0
- package/dist/timeline.js +326 -0
- package/dist/timeline.js.map +1 -0
- package/dist/tree.cjs +2 -2
- package/dist/tree.cjs.map +1 -1
- package/dist/tree.js +15 -13
- package/dist/tree.js.map +1 -1
- package/dist/typewriter.cjs +10 -123
- package/dist/typewriter.cjs.map +1 -1
- package/dist/typewriter.js +90 -212
- package/dist/typewriter.js.map +1 -1
- package/dist/typography.cjs +3 -3
- package/dist/typography.cjs.map +1 -1
- package/dist/typography.js +18 -112
- package/dist/typography.js.map +1 -1
- package/dist/utils-Cr-YO4Np.cjs +1 -0
- package/dist/utils-Cr-YO4Np.cjs.map +1 -0
- package/dist/{utils-Bp2jhyZc.js → utils-hp-DnFf5.js} +16 -6
- package/dist/utils-hp-DnFf5.js.map +1 -0
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +4 -5
- package/dist/visually-hidden.cjs +2 -2
- package/dist/visually-hidden.cjs.map +1 -1
- package/dist/visually-hidden.js +7 -5
- package/dist/visually-hidden.js.map +1 -1
- package/dist/window-DTgKAQgz.cjs +59 -0
- package/dist/window-DTgKAQgz.cjs.map +1 -0
- package/dist/{window-CrjZdf7Y.js → window-moDKyGLZ.js} +28 -30
- package/dist/window-moDKyGLZ.js.map +1 -0
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +14 -2
- package/plugins/vite-plugin-schmancy-auto-import.ts +143 -0
- package/plugins/vite-plugin-schmancy-manifest.ts +438 -0
- package/skills/schmancy/INDEX.md +1 -1
- package/skills/schmancy/SKILL.md +17 -5
- package/skills/schmancy/mixins.md +78 -20
- package/skills/schmancy/state.md +501 -0
- package/skills/schmancy/theme.md +15 -0
- package/skills/schmancy/timeline-tile.md +95 -0
- package/src/agent/agent-bundle.test.ts +0 -49
- package/src/agent/agent-entry.ts +4 -3
- package/src/agent/helpers.ts +1 -95
- package/src/agent/schmancy-skill.ts +2 -5
- package/src/agent/virtual-manifest.d.ts +1 -12
- package/src/area/area.component.ts +7 -19
- package/src/area/area.service.test.ts +4 -5
- package/src/area/area.service.ts +4 -3
- package/src/area/route.component.ts +17 -4
- package/src/area/utils.ts +3 -2
- package/src/audio/sound.service.ts +7 -11
- package/src/autocomplete/autocomplete.ts +18 -21
- package/src/{avatar.ts → avatar/avatar.ts} +2 -2
- package/src/avatar/index.ts +1 -0
- package/src/badge/badge.ts +4 -3
- package/src/boat/boat.ts +28 -36
- package/src/breadcrumb/breadcrumb.ts +11 -19
- package/src/busy/busy.ts +4 -3
- package/src/busy/spinner.ts +4 -3
- package/src/button/button.ts +6 -11
- package/src/button/icon-button.ts +8 -12
- package/src/card/actions.ts +4 -12
- package/src/card/card.ts +5 -23
- package/src/card/content.ts +4 -12
- package/src/card/media.ts +4 -9
- package/src/charts/area-chart.ts +7 -4
- package/src/charts/pills.ts +6 -4
- package/src/checkbox/checkbox.test.ts +2 -2
- package/src/checkbox/checkbox.ts +3 -9
- package/src/chips/assist-chip.ts +6 -14
- package/src/chips/chips.ts +7 -21
- package/src/chips/filter-chip.ts +4 -3
- package/src/chips/input-chip.ts +10 -9
- package/src/chips/suggestion-chip.ts +10 -12
- package/src/code-highlight/code-highlight.ts +28 -59
- package/src/code-highlight/code-preview.ts +11 -9
- package/src/connectivity/connectivity-status.ts +4 -3
- package/src/content-drawer/drawer.ts +5 -3
- package/src/content-drawer/main.ts +5 -3
- package/src/content-drawer/sheet.ts +6 -4
- package/src/date-range/date-range-dialog.ts +2 -2
- package/src/date-range/date-range.ts +3 -2
- package/src/delay/delay.ts +2 -2
- package/src/details/details.ts +4 -17
- package/src/dialog/dialog-service.ts +2 -0
- package/src/dialog/dialog.component.ts +9 -9
- package/src/directives/drag.ts +1 -9
- package/src/directives/index.ts +0 -1
- package/src/discovery/discovery.service.ts +1 -1
- package/src/divider/divider.ts +5 -14
- package/src/dropdown/dropdown-component.ts +5 -16
- package/src/dropdown/dropdown-content.ts +7 -14
- package/src/expand/expand-root.component.ts +5 -15
- package/src/expand/expand.component.ts +4 -17
- package/src/extra/countries/countries.ts +5 -13
- package/src/extra/timezone/timezone.ts +7 -12
- package/src/form/form.test.ts +2 -2
- package/src/form/form.ts +2 -9
- package/src/icons/icon.ts +4 -3
- package/src/iframe/iframe.ts +13 -4
- package/src/index.ts +3 -3
- package/src/input/input.ts +4 -11
- package/src/json/json.ts +4 -3
- package/src/kbd/kbd.ts +4 -3
- package/src/layout/index.ts +1 -5
- package/src/layout/scroll/scroll.ts +5 -8
- package/src/lightbox/flip-directive.ts +1 -1
- package/src/lightbox/lightbox.ts +5 -14
- package/src/list/list-item.ts +4 -13
- package/src/list/list.ts +12 -10
- package/src/mailbox/email-editor.ts +17 -11
- package/src/mailbox/email-layout-selector.ts +2 -2
- package/src/mailbox/email-recipients.ts +13 -8
- package/src/mailbox/email-template-picker.ts +6 -5
- package/src/mailbox/email-viewer.ts +5 -3
- package/src/mailbox/mailbox.ts +6 -5
- package/src/map/map.ts +8 -6
- package/src/menu/menu-item.ts +5 -16
- package/src/menu/menu.ts +27 -13
- package/src/nav-drawer/appbar.ts +4 -14
- package/src/nav-drawer/content.ts +5 -14
- package/src/nav-drawer/drawer.ts +5 -18
- package/src/nav-drawer/navbar.ts +3 -17
- package/src/navigation-bar/navigation-bar-item.ts +8 -6
- package/src/navigation-bar/navigation-bar.ts +19 -19
- package/src/navigation-rail/navigation-rail-item.ts +9 -5
- package/src/navigation-rail/navigation-rail.ts +10 -14
- package/src/notification/notification.ts +6 -3
- package/src/option/option.ts +4 -3
- package/src/overlay/overlay.animations.ts +196 -25
- package/src/overlay/overlay.component.ts +397 -190
- package/src/overlay/overlay.confirm-body.ts +21 -7
- package/src/overlay/overlay.gestures.ts +72 -36
- package/src/overlay/overlay.layout.ts +103 -1
- package/src/overlay/overlay.positioning.ts +301 -0
- package/src/overlay/overlay.service.ts +81 -3
- package/src/overlay/overlay.stack.ts +8 -4
- package/src/overlay/overlay.types.ts +83 -5
- package/src/page/page.ts +16 -11
- package/src/payment-card-form/index.ts +1 -0
- package/src/{components/form-elements → payment-card-form}/payment-card-form.ts +23 -23
- package/src/progress/progress.ts +5 -3
- package/src/qr-scanner/qr-scanner.ts +7 -30
- package/src/radio-group/radio-button.ts +3 -13
- package/src/radio-group/radio-group.ts +5 -22
- package/src/range/range.ts +4 -3
- package/src/rxjs-utils/waitForElements.ts +1 -1
- package/src/rxjs-utils/waitForElementsAll.ts +1 -1
- package/src/select/select.ts +10 -18
- package/src/sheet/hook.ts +1 -1
- package/src/sheet/sheet.ts +5 -20
- package/src/skeleton/skeleton.ts +4 -3
- package/src/slider/slide.ts +5 -3
- package/src/slider/slider.ts +5 -3
- package/src/splash-screen/splash-screen.ts +5 -3
- package/src/state/CLAUDE.md +161 -0
- package/src/state/MIGRATION.md +258 -0
- package/src/state/SCOPING.md +134 -0
- package/src/state/active-host.ts +156 -0
- package/src/state/index.ts +877 -0
- package/src/state/persist.ts +208 -0
- package/src/state/schmancy-context.ts +84 -0
- package/src/state/state.test-d.ts +227 -0
- package/src/state/state.test.ts +820 -0
- package/src/steps/schmancy-step.ts +5 -3
- package/src/steps/schmancy-steps-container.ts +5 -3
- package/src/surface/surface.ts +14 -9
- package/src/switch/switch.test.ts +2 -2
- package/src/switch/switch.ts +8 -10
- package/src/table/row.ts +7 -4
- package/src/table/table.ts +17 -14
- package/src/tabs/index.ts +0 -2
- package/src/tabs/tab.ts +2 -2
- package/src/tabs/tabs-group.ts +7 -4
- package/src/teleport/teleport.component.ts +5 -3
- package/src/textarea/textarea.ts +6 -12
- package/src/theme/theme-audio-player.ts +7 -5
- package/src/theme/theme-controller.ts +2 -2
- package/src/theme/theme.component.ts +22 -15
- package/src/theme/theme.service.ts +6 -7
- package/src/theme/theme.style.css +1 -0
- package/src/theme-button/theme-button.ts +2 -2
- package/src/timeline/index.ts +1 -0
- package/src/timeline/timeline-tile.ts +431 -0
- package/src/tree/tree.ts +4 -16
- package/src/typewriter/index.ts +1 -1
- package/src/typography/typography.ts +5 -98
- package/src/utils/intersection.ts +5 -1
- package/src/utils/overlay-stack.ts +1 -1
- package/src/utils/search.ts +2 -2
- package/src/visually-hidden/visually-hidden.ts +4 -3
- package/src/window/window-position.ts +3 -6
- package/src/window/window.ts +9 -7
- package/types/mixins/SchmancyElement.d.ts +49 -0
- package/types/mixins/formField.mixin.d.ts +4 -2
- package/types/mixins/index.d.ts +1 -0
- package/types/mixins/litElement.mixin.d.ts +11 -0
- package/types/src/agent/agent-entry.d.ts +1 -1
- package/types/src/agent/helpers.d.ts +0 -26
- package/types/src/agent/schmancy-skill.d.ts +3 -5
- package/types/src/area/area.component.d.ts +3 -17
- package/types/src/area/route.component.d.ts +14 -4
- package/types/src/autocomplete/autocomplete.d.ts +4 -15
- package/types/src/{avatar.d.ts → avatar/avatar.d.ts} +2 -3
- package/types/src/avatar/index.d.ts +1 -0
- package/types/src/badge/badge.d.ts +3 -3
- package/types/src/boat/boat.d.ts +3 -2
- package/types/src/breadcrumb/breadcrumb.d.ts +9 -19
- package/types/src/busy/busy.d.ts +3 -3
- package/types/src/busy/spinner.d.ts +3 -3
- package/types/src/button/button.d.ts +4 -10
- package/types/src/button/icon-button.d.ts +5 -11
- package/types/src/card/actions.d.ts +3 -12
- package/types/src/card/card.d.ts +4 -24
- package/types/src/card/content.d.ts +3 -12
- package/types/src/card/media.d.ts +3 -9
- package/types/src/charts/area-chart.d.ts +3 -3
- package/types/src/charts/pills.d.ts +3 -3
- package/types/src/checkbox/checkbox.d.ts +3 -10
- package/types/src/chips/assist-chip.d.ts +5 -15
- package/types/src/chips/chips.d.ts +3 -17
- package/types/src/chips/filter-chip.d.ts +3 -3
- package/types/src/chips/input-chip.d.ts +9 -10
- package/types/src/chips/suggestion-chip.d.ts +9 -13
- package/types/src/code-highlight/code-highlight.d.ts +4 -11
- package/types/src/code-highlight/code-preview.d.ts +3 -3
- package/types/src/connectivity/connectivity-status.d.ts +3 -3
- package/types/src/content-drawer/drawer.d.ts +4 -4
- package/types/src/content-drawer/main.d.ts +3 -3
- package/types/src/content-drawer/sheet.d.ts +4 -4
- package/types/src/date-range/date-range-dialog.d.ts +2 -3
- package/types/src/date-range/date-range.d.ts +2 -3
- package/types/src/delay/delay.d.ts +2 -3
- package/types/src/details/details.d.ts +3 -14
- package/types/src/dialog/dialog.component.d.ts +9 -9
- package/types/src/directives/drag.d.ts +1 -3
- package/types/src/directives/index.d.ts +0 -1
- package/types/src/divider/divider.d.ts +3 -14
- package/types/src/dropdown/dropdown-component.d.ts +4 -17
- package/types/src/dropdown/dropdown-content.d.ts +6 -14
- package/types/src/expand/expand-root.component.d.ts +4 -14
- package/types/src/expand/expand.component.d.ts +3 -17
- package/types/src/extra/countries/countries.d.ts +3 -13
- package/types/src/extra/timezone/timezone.d.ts +4 -11
- package/types/src/form/form.d.ts +2 -9
- package/types/src/icons/icon.d.ts +3 -3
- package/types/src/iframe/iframe.d.ts +5 -3
- package/types/src/index.d.ts +3 -3
- package/types/src/input/input.d.ts +4 -11
- package/types/src/json/json.d.ts +3 -3
- package/types/src/kbd/kbd.d.ts +3 -3
- package/types/src/layout/index.d.ts +0 -4
- package/types/src/layout/scroll/scroll.d.ts +4 -8
- package/types/src/lightbox/lightbox.d.ts +3 -14
- package/types/src/list/list-item.d.ts +3 -13
- package/types/src/list/list.d.ts +11 -10
- package/types/src/mailbox/email-editor.d.ts +3 -3
- package/types/src/mailbox/email-layout-selector.d.ts +2 -3
- package/types/src/mailbox/email-recipients.d.ts +7 -3
- package/types/src/mailbox/email-template-picker.d.ts +4 -4
- package/types/src/mailbox/email-viewer.d.ts +3 -3
- package/types/src/mailbox/mailbox.d.ts +4 -4
- package/types/src/map/map.d.ts +4 -3
- package/types/src/menu/menu-item.d.ts +3 -16
- package/types/src/menu/menu.d.ts +25 -13
- package/types/src/nav-drawer/appbar.d.ts +3 -14
- package/types/src/nav-drawer/content.d.ts +3 -14
- package/types/src/nav-drawer/drawer.d.ts +3 -18
- package/types/src/nav-drawer/navbar.d.ts +3 -18
- package/types/src/navigation-bar/navigation-bar-item.d.ts +7 -6
- package/types/src/navigation-bar/navigation-bar.d.ts +13 -7
- package/types/src/navigation-rail/navigation-rail-item.d.ts +9 -6
- package/types/src/navigation-rail/navigation-rail.d.ts +10 -15
- package/types/src/notification/notification.d.ts +3 -3
- package/types/src/option/option.d.ts +3 -3
- package/types/src/overlay/overlay.animations.d.ts +54 -5
- package/types/src/overlay/overlay.component.d.ts +39 -15
- package/types/src/overlay/overlay.confirm-body.d.ts +4 -4
- package/types/src/overlay/overlay.gestures.d.ts +26 -17
- package/types/src/overlay/overlay.layout.d.ts +27 -1
- package/types/src/overlay/overlay.positioning.d.ts +87 -0
- package/types/src/overlay/overlay.types.d.ts +59 -5
- package/types/src/page/page.d.ts +14 -11
- package/types/src/{components/form-elements → payment-card-form}/payment-card-form.d.ts +2 -3
- package/types/src/progress/progress.d.ts +3 -3
- package/types/src/qr-scanner/qr-scanner.d.ts +3 -3
- package/types/src/radio-group/radio-button.d.ts +3 -12
- package/types/src/radio-group/radio-group.d.ts +4 -20
- package/types/src/range/range.d.ts +3 -3
- package/types/src/rxjs-utils/waitForElements.d.ts +1 -1
- package/types/src/rxjs-utils/waitForElementsAll.d.ts +1 -1
- package/types/src/select/select.d.ts +4 -15
- package/types/src/sheet/sheet.d.ts +3 -20
- package/types/src/skeleton/skeleton.d.ts +3 -3
- package/types/src/slider/slide.d.ts +3 -2
- package/types/src/slider/slider.d.ts +3 -3
- package/types/src/splash-screen/splash-screen.d.ts +3 -3
- package/types/src/state/active-host.d.ts +18 -0
- package/types/src/state/index.d.ts +145 -0
- package/types/src/state/persist.d.ts +14 -0
- package/types/src/state/schmancy-context.d.ts +31 -0
- package/types/src/state/state.test-d.d.ts +131 -0
- package/types/src/state/state.test.d.ts +1 -0
- package/types/src/steps/schmancy-step.d.ts +3 -3
- package/types/src/steps/schmancy-steps-container.d.ts +3 -3
- package/types/src/surface/surface.d.ts +13 -5
- package/types/src/switch/switch.d.ts +7 -11
- package/types/src/table/row.d.ts +2 -3
- package/types/src/table/table.d.ts +4 -11
- package/types/src/tabs/index.d.ts +0 -2
- package/types/src/tabs/tab.d.ts +2 -3
- package/types/src/tabs/tabs-group.d.ts +3 -3
- package/types/src/teleport/teleport.component.d.ts +3 -3
- package/types/src/textarea/textarea.d.ts +5 -12
- package/types/src/theme/theme-audio-player.d.ts +3 -3
- package/types/src/theme/theme-controller.d.ts +2 -2
- package/types/src/theme/theme.component.d.ts +18 -13
- package/types/src/theme-button/theme-button.d.ts +2 -3
- package/types/src/timeline/index.d.ts +1 -0
- package/types/src/timeline/timeline-tile.d.ts +44 -0
- package/types/src/tree/tree.d.ts +3 -16
- package/types/src/typewriter/index.d.ts +1 -1
- package/types/src/typography/typography.d.ts +3 -36
- package/types/src/visually-hidden/visually-hidden.d.ts +3 -3
- package/types/src/window/window.d.ts +3 -3
- package/dist/agent/index.es-Dymj8REP.js +0 -489
- package/dist/agent/index.es-Dymj8REP.js.map +0 -1
- package/dist/area-BGBCMC79.js.map +0 -1
- package/dist/area-D7l9KR2N.cjs +0 -12
- package/dist/area-D7l9KR2N.cjs.map +0 -1
- package/dist/autocomplete-BPD5uraA.cjs +0 -115
- package/dist/autocomplete-BPD5uraA.cjs.map +0 -1
- package/dist/autocomplete-C2P0Soht.js.map +0 -1
- package/dist/boat-BkIO-0No.cjs +0 -80
- package/dist/boat-BkIO-0No.cjs.map +0 -1
- package/dist/boat-DXZ0k7oa.js.map +0 -1
- package/dist/busy-DGYhpTnO.cjs.map +0 -1
- package/dist/busy-iRjq6Nvd.js.map +0 -1
- package/dist/card-DjYnCckw.cjs.map +0 -1
- package/dist/card-wUTjx0EC.js.map +0 -1
- package/dist/checkbox-CiYEtw9F.cjs +0 -39
- package/dist/checkbox-CiYEtw9F.cjs.map +0 -1
- package/dist/checkbox-VBSenxgb.js.map +0 -1
- package/dist/chips-BDS9lkPa.js.map +0 -1
- package/dist/chips-D6ptH5re.cjs.map +0 -1
- package/dist/code-highlight-Bi91XHJN.js.map +0 -1
- package/dist/code-highlight-BzRmBZzz.cjs.map +0 -1
- package/dist/components-DkmEgyAc.cjs +0 -73
- package/dist/components.cjs +0 -1
- package/dist/components.js +0 -2
- package/dist/context-BerzpUhI.js +0 -3
- package/dist/context-C6dHUHhi.cjs +0 -1
- package/dist/date-range-BmFxTXiU.cjs +0 -131
- package/dist/date-range-BmFxTXiU.cjs.map +0 -1
- package/dist/date-range-ClTMg1AB.js.map +0 -1
- package/dist/date-range-inline-B9Dp2z6C.cjs +0 -43
- package/dist/delay-BHODnTg-.cjs +0 -9
- package/dist/delay-BHODnTg-.cjs.map +0 -1
- package/dist/delay-Dlk0A3he.js +0 -347
- package/dist/delay-Dlk0A3he.js.map +0 -1
- package/dist/details-CPjlqQD4.js.map +0 -1
- package/dist/details-Cz9ok9si.cjs.map +0 -1
- package/dist/dialog-service-CzDO08Gy.cjs.map +0 -1
- package/dist/dialog-service-DH-tjPuE.js.map +0 -1
- package/dist/divider-CILo3_vi.cjs.map +0 -1
- package/dist/divider-ghgyw5CU.js.map +0 -1
- package/dist/expand-CbjBr_Ds.js.map +0 -1
- package/dist/expand-r3OrSoDk.cjs +0 -141
- package/dist/expand-r3OrSoDk.cjs.map +0 -1
- package/dist/extra-BZeZOMBI.cjs.map +0 -1
- package/dist/extra-DK9MQtPJ.js.map +0 -1
- package/dist/float-CuZ8LOgB.cjs +0 -1
- package/dist/flow-BPDtbhLe.js +0 -386
- package/dist/flow-BPDtbhLe.js.map +0 -1
- package/dist/flow-Dn9AZktE.cjs +0 -1
- package/dist/flow-Dn9AZktE.cjs.map +0 -1
- package/dist/form-rCZqoAoK.js.map +0 -1
- package/dist/form-wI58M85H.cjs.map +0 -1
- package/dist/handover/agent-runtime-v2-loopback.md +0 -71
- package/dist/handover/claude-design-v2-paste.md +0 -42
- package/dist/icons-Drq4kKy2.js.map +0 -1
- package/dist/icons-DtdhaZdc.cjs +0 -52
- package/dist/icons-DtdhaZdc.cjs.map +0 -1
- package/dist/iframe-BkwwWIbQ.cjs +0 -24
- package/dist/iframe-BkwwWIbQ.cjs.map +0 -1
- package/dist/iframe-BmyHW8km.js.map +0 -1
- package/dist/index.es-BgmFX1JM.cjs +0 -1
- package/dist/index.es-BgmFX1JM.cjs.map +0 -1
- package/dist/index.es-CLyb_o3Y.js +0 -489
- package/dist/index.es-CLyb_o3Y.js.map +0 -1
- package/dist/input-BGNZlfL8.cjs.map +0 -1
- package/dist/input-Bc3bVISm.js.map +0 -1
- package/dist/input-chip-BQrjpjaQ.js.map +0 -1
- package/dist/input-chip-DN-cwf11.cjs.map +0 -1
- package/dist/intersection-BrXp4YTO.js +0 -12
- package/dist/intersection-BrXp4YTO.js.map +0 -1
- package/dist/intersection-DqBqnpgh.cjs +0 -1
- package/dist/intersection-DqBqnpgh.cjs.map +0 -1
- package/dist/layout-7eyMBmZk.cjs +0 -17
- package/dist/layout-7eyMBmZk.cjs.map +0 -1
- package/dist/layout-Ox6nJkzC.js +0 -268
- package/dist/layout-Ox6nJkzC.js.map +0 -1
- package/dist/lightbox-CY52Z_ig.js.map +0 -1
- package/dist/lightbox-H8Uq3AXy.cjs +0 -202
- package/dist/lightbox-H8Uq3AXy.cjs.map +0 -1
- package/dist/list-BGjVo6zb.cjs +0 -40
- package/dist/list-BGjVo6zb.cjs.map +0 -1
- package/dist/list-D7wUxu1C.js.map +0 -1
- package/dist/litElement.mixin-CszkJuNl.js +0 -12
- package/dist/litElement.mixin-CszkJuNl.js.map +0 -1
- package/dist/litElement.mixin-qh5-IIUq.cjs +0 -1
- package/dist/litElement.mixin-qh5-IIUq.cjs.map +0 -1
- package/dist/mailbox--EN-JhjV.js.map +0 -1
- package/dist/mailbox-DLiBGJhY.cjs.map +0 -1
- package/dist/map-B0S_q3ma.js.map +0 -1
- package/dist/map-EDQN0I6e.cjs +0 -80
- package/dist/map-EDQN0I6e.cjs.map +0 -1
- package/dist/menu-3edZGQ1x.cjs.map +0 -1
- package/dist/menu-COeFpb6n.js.map +0 -1
- package/dist/metric.cjs +0 -69
- package/dist/metric.cjs.map +0 -1
- package/dist/metric.js +0 -93
- package/dist/metric.js.map +0 -1
- package/dist/mixins.cjs.map +0 -1
- package/dist/mixins.js.map +0 -1
- package/dist/notification-CC-TFN5v.js.map +0 -1
- package/dist/notification-P4c-kFdH.cjs +0 -23
- package/dist/notification-P4c-kFdH.cjs.map +0 -1
- package/dist/option-BwAF4nAw.js.map +0 -1
- package/dist/option-Cu0ertuF.cjs +0 -43
- package/dist/option-Cu0ertuF.cjs.map +0 -1
- package/dist/progress-Bk_Q1Shy.js.map +0 -1
- package/dist/progress-Yz6EMNSu.cjs.map +0 -1
- package/dist/provide-CYgj58u_.cjs +0 -1
- package/dist/provide-CYgj58u_.cjs.map +0 -1
- package/dist/provide-ydIskwf2.js +0 -107
- package/dist/provide-ydIskwf2.js.map +0 -1
- package/dist/radio-group-BcdcjLNC.js.map +0 -1
- package/dist/radio-group-BpBz5tRA.cjs +0 -40
- package/dist/radio-group-BpBz5tRA.cjs.map +0 -1
- package/dist/scroll-DXQv0ejL.js.map +0 -1
- package/dist/scroll-DbZMTv0K.cjs +0 -26
- package/dist/scroll-DbZMTv0K.cjs.map +0 -1
- package/dist/search-CwMav5QB.cjs +0 -1
- package/dist/select-BV4lK2zy.cjs.map +0 -1
- package/dist/select-DKyGWDsG.js.map +0 -1
- package/dist/sheet-BAI_jH1t.cjs +0 -35
- package/dist/sheet-BAI_jH1t.cjs.map +0 -1
- package/dist/sheet-C3TLKItO.js.map +0 -1
- package/dist/sheet.service-RcDBwHmv.cjs +0 -1
- package/dist/skills/schmancy/store.md +0 -126
- package/dist/skills/store.md +0 -126
- package/dist/sound.service-BEN6Xjy_.cjs +0 -1
- package/dist/sound.service-BEN6Xjy_.cjs.map +0 -1
- package/dist/sound.service-DWZe6swU.js.map +0 -1
- package/dist/splash-screen-DbI5RgBf.js.map +0 -1
- package/dist/splash-screen-DoHRTHi8.cjs +0 -41
- package/dist/splash-screen-DoHRTHi8.cjs.map +0 -1
- package/dist/src-00DfxCJq.js.map +0 -1
- package/dist/src-C_JjQovE.cjs +0 -269
- package/dist/src-C_JjQovE.cjs.map +0 -1
- package/dist/store-CjFHCSDb.cjs +0 -1
- package/dist/store-CjFHCSDb.cjs.map +0 -1
- package/dist/store-CjzZDQt8.js +0 -1654
- package/dist/store-CjzZDQt8.js.map +0 -1
- package/dist/store.cjs +0 -1
- package/dist/store.js +0 -2
- package/dist/surface-D-GWBcsh.cjs +0 -7
- package/dist/surface-D-GWBcsh.cjs.map +0 -1
- package/dist/surface-D23JtxYP.js +0 -22
- package/dist/surface-D23JtxYP.js.map +0 -1
- package/dist/surface.mixin-DqMwoddO.js +0 -320
- package/dist/surface.mixin-DqMwoddO.js.map +0 -1
- package/dist/surface.mixin-DxOi-xo0.cjs +0 -297
- package/dist/surface.mixin-DxOi-xo0.cjs.map +0 -1
- package/dist/table-C7b73kdg.cjs +0 -63
- package/dist/table-C7b73kdg.cjs.map +0 -1
- package/dist/table-CTrhV9-k.js +0 -631
- package/dist/table-CTrhV9-k.js.map +0 -1
- package/dist/tabs-Ce55RbwF.js.map +0 -1
- package/dist/tabs-DAzB8O7w.cjs +0 -31
- package/dist/tabs-DAzB8O7w.cjs.map +0 -1
- package/dist/tailwind.mixin-DRI1oTYQ.cjs +0 -2
- package/dist/tailwind.mixin-DRI1oTYQ.cjs.map +0 -1
- package/dist/tailwind.mixin-mdQR3BEO.js +0 -219
- package/dist/tailwind.mixin-mdQR3BEO.js.map +0 -1
- package/dist/textarea-DjN1D9u0.js.map +0 -1
- package/dist/textarea-PuHxBvJA.cjs +0 -39
- package/dist/textarea-PuHxBvJA.cjs.map +0 -1
- package/dist/theme-B-IJ2r7Q.cjs +0 -181
- package/dist/theme-button-BSbYmS4p.cjs +0 -8
- package/dist/theme-button-BSbYmS4p.cjs.map +0 -1
- package/dist/theme-button-CEMeAUOL.js.map +0 -1
- package/dist/theme.service-DxJPUGlu.cjs +0 -1
- package/dist/theme.service-DxJPUGlu.cjs.map +0 -1
- package/dist/theme.service-cOfPrtfe.js.map +0 -1
- package/dist/tslib.es6-Cnt75pb6.cjs +0 -1
- package/dist/tslib.es6-Cnt75pb6.cjs.map +0 -1
- package/dist/tslib.es6-DMzzJKHV.js +0 -7
- package/dist/tslib.es6-DMzzJKHV.js.map +0 -1
- package/dist/utils-Bp2jhyZc.js.map +0 -1
- package/dist/utils-CBPQvxNW.cjs +0 -1
- package/dist/utils-CBPQvxNW.cjs.map +0 -1
- package/dist/window-CrjZdf7Y.js.map +0 -1
- package/dist/window-DTUARSrU.cjs +0 -59
- package/dist/window-DTUARSrU.cjs.map +0 -1
- package/skills/schmancy/store.md +0 -126
- package/src/components/form-elements/index.ts +0 -1
- package/src/components/index.ts +0 -1
- package/src/layout/flex/flex.scss +0 -4
- package/src/layout/flex/flex.ts +0 -74
- package/src/layout/flex/index.ts +0 -1
- package/src/layout/grid/.readme +0 -79
- package/src/layout/grid/grid.scss +0 -5
- package/src/layout/grid/grid.ts +0 -121
- package/src/layout/grid/index.ts +0 -1
- package/src/layout/layout.ts +0 -122
- package/src/layout/v2/flex.ts +0 -243
- package/src/layout/v2/index.ts +0 -1
- package/src/metric/index.ts +0 -1
- package/src/metric/metric.ts +0 -127
- package/src/store/context-array.ts +0 -358
- package/src/store/context-collection.ts +0 -218
- package/src/store/context-create.ts +0 -284
- package/src/store/context-object.ts +0 -298
- package/src/store/filter-directive.ts +0 -614
- package/src/store/index.ts +0 -10
- package/src/store/selector-hook.ts +0 -259
- package/src/store/selectors.ts +0 -289
- package/src/store/storage-manager.ts +0 -269
- package/src/store/store.class.ts +0 -239
- package/src/store/types.ts +0 -327
- package/src/tabs/tabs-compatibility.ts +0 -20
- package/src/typewriter/typewriter.ts +0 -410
- package/types/src/area/route.test.d.ts +0 -20
- package/types/src/button/button.test.d.ts +0 -1
- package/types/src/chips/chip.d.ts +0 -3
- package/types/src/components/index.d.ts +0 -1
- package/types/src/content-drawer/$sheet.d.ts +0 -14
- package/types/src/dialog/dailog.d.ts +0 -116
- package/types/src/dialog/dialog-content.d.ts +0 -17
- package/types/src/directives/guard.d.ts +0 -1
- package/types/src/directives/visibility.d.ts +0 -11
- package/types/src/form/form-v2.d.ts +0 -22
- package/types/src/input/input-v2.d.ts +0 -250
- package/types/src/layout/flex/flex.d.ts +0 -26
- package/types/src/layout/flex/index.d.ts +0 -1
- package/types/src/layout/grid/grid.d.ts +0 -39
- package/types/src/layout/grid/index.d.ts +0 -1
- package/types/src/layout/layout.d.ts +0 -59
- package/types/src/layout/v2/flex.d.ts +0 -65
- package/types/src/layout/v2/grid.d.ts +0 -51
- package/types/src/layout/v2/index.d.ts +0 -1
- package/types/src/lightbox/flip.directive.d.ts +0 -22
- package/types/src/metric/index.d.ts +0 -1
- package/types/src/metric/metric.d.ts +0 -39
- package/types/src/notification/outlet.d.ts +0 -10
- package/types/src/sheet/header.d.ts +0 -10
- package/types/src/store/context-array.d.ts +0 -83
- package/types/src/store/context-collection.d.ts +0 -74
- package/types/src/store/context-create.d.ts +0 -43
- package/types/src/store/context-object.d.ts +0 -46
- package/types/src/store/filter-directive.d.ts +0 -116
- package/types/src/store/immer-integration.d.ts +0 -54
- package/types/src/store/index.d.ts +0 -10
- package/types/src/store/selector-hook.d.ts +0 -46
- package/types/src/store/selectors.d.ts +0 -90
- package/types/src/store/storage-manager.d.ts +0 -48
- package/types/src/store/store.class.d.ts +0 -73
- package/types/src/store/types.d.ts +0 -241
- package/types/src/tabs/tabs-compatibility.d.ts +0 -13
- package/types/src/theme/theme.elevation.d.ts +0 -131
- package/types/src/theme/theme.motion.d.ts +0 -198
- package/types/src/theme/theme.shape.d.ts +0 -144
- package/types/src/theme/theme.state.d.ts +0 -546
- package/types/src/theme/theme.typography.d.ts +0 -74
- package/types/src/tooltip/tooltip.d.ts +0 -33
- package/types/src/typewriter/typewriter.d.ts +0 -94
- /package/dist/agent/{flow-CvG1fLW5.js → flow-CaPi2G8y.js} +0 -0
- /package/dist/agent/{vendor-material-color-DcL7ZPxx.js → vendor-material-color-Be96dpGE.js} +0 -0
- /package/dist/{animation-hXFClrIn.js → animation-BK-8BwY8.js} +0 -0
- /package/dist/{animation-CQRdLgzX.cjs → animation-CO_Csq84.cjs} +0 -0
- /package/dist/{decorate-D_utPUsC.js → decorate-23nYs4Le.js} +0 -0
- /package/dist/{decorate-F9CuyeHg.cjs → decorate-DpFmy0nm.cjs} +0 -0
- /package/dist/{hashContent-B2IntJQf.js → hashContent-1ARKIsx9.js} +0 -0
- /package/dist/{hashContent-CahnEuut.cjs → hashContent-Bp5S6T4U.cjs} +0 -0
- /package/dist/{lazy-D6R5N5v4.js → lazy-B0ia54tT.js} +0 -0
- /package/dist/{lazy-BDNnH_r7.cjs → lazy-Dq9mRRjT.cjs} +0 -0
- /package/dist/{reduced-motion-BZTLqAyl.js → reduced-motion-D-L12p7G.js} +0 -0
- /package/dist/{reduced-motion-9RjNnhIg.cjs → reduced-motion-Ds-HjMzn.cjs} +0 -0
- /package/dist/{rxjs-utils-DJbZRjp3.cjs → rxjs-utils-Csnks202.cjs} +0 -0
- /package/dist/{rxjs-utils-CKTnEKUH.js → rxjs-utils-d-ivVN84.js} +0 -0
- /package/dist/{theme.events-NuihzD_p.js → theme.events-Cv7N4Toe.js} +0 -0
- /package/dist/{theme.events-DakXxZeP.cjs → theme.events-DM4H5F2d.cjs} +0 -0
- /package/dist/{theme.interface-DTwkuAKJ.cjs → theme.interface-D9l33b-M.cjs} +0 -0
- /package/dist/{theme.interface-Buged9Cg.js → theme.interface-DnVNre4O.js} +0 -0
- /package/src/{directives/typewriter.ts → typewriter/typewriter.directive.ts} +0 -0
- /package/types/src/{components/form-elements → payment-card-form}/index.d.ts +0 -0
- /package/types/src/{directives/typewriter.d.ts → typewriter/typewriter.directive.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-rCZqoAoK.js","names":[],"sources":["../src/form/form.ts"],"sourcesContent":["import { customElement } from 'lit/decorators.js'\n\n/**\n * Ergonomic wrapper around a native `<form>`. Children are reparented into a light-DOM `<form>` on connection so form-associated custom elements resolve `internals.form` via native DOM ancestry.\n *\n * - Form-associated custom elements (FACE) resolve their `internals.form`\n * correctly via native DOM ancestry.\n * - `new FormData(form)` collects values from every FACE + native control\n * without any manual walking.\n * - `form.reset()` triggers `formResetCallback()` on every FACE.\n * - `form.reportValidity()` runs native validation UI.\n * - `<button type=\"submit\">` and `<schmancy-button type=\"submit\">` both\n * submit the form via the native submitter pipeline.\n *\n * This component exists only to translate the native `submit` / `reset`\n * events into the Schmancy event shape (`detail: FormData`). All heavy\n * lifting is the platform's.\n *\n * @element schmancy-form\n * @summary Always wrap form-associated schmancy components in schmancy-form (or a native `<form>`) so `new FormData(form)` just works.\n * @example\n * <schmancy-form @submit=${(e) => console.log(Object.fromEntries(e.detail))}>\n * <schmancy-input name=\"email\" type=\"email\" required></schmancy-input>\n * <schmancy-input name=\"password\" type=\"password\" required></schmancy-input>\n * <schmancy-button type=\"submit\" variant=\"filled\">Sign in</schmancy-button>\n * </schmancy-form>\n * @platform form submit - Light-DOM native `<form>` element. Degrades to a `<form>` if the tag never registers — same semantics, just no CustomEvent translation.\n * @fires submit - `CustomEvent<FormData>` emitted when the form is submitted.\n * @fires reset - Emitted after the underlying form resets.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends HTMLElement {\n\tpublic static readonly tagName: string = 'schmancy-form'\n\n\tprivate _form: HTMLFormElement | null = null\n\tprivate _wrapped = false\n\n\t/** ElementInternals for `:state(invalid)` / `:state(submitting)` broadcasting. */\n\tprivate readonly _internals: ElementInternals | undefined = (() => {\n\t\ttry { return this.attachInternals() } catch { return undefined }\n\t})()\n\n\t/** Skip built-in constraint validation on submit. Mirrors `<form novalidate>`. */\n\tget novalidate(): boolean {\n\t\treturn this.hasAttribute('novalidate')\n\t}\n\tset novalidate(value: boolean) {\n\t\tif (value) this.setAttribute('novalidate', '')\n\t\telse this.removeAttribute('novalidate')\n\t}\n\n\tconnectedCallback(): void {\n\t\tthis.ensureForm()\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tif (this._form) {\n\t\t\tthis._form.removeEventListener('submit', this._onSubmit)\n\t\t\tthis._form.removeEventListener('reset', this._onReset)\n\t\t}\n\t}\n\n\t/**\n\t * On first connection, create the internal light-DOM `<form>` and move\n\t * existing children into it. Re-entry is a no-op.\n\t */\n\tprivate ensureForm(): void {\n\t\tif (this._wrapped) return\n\n\t\t// Respect an explicit consumer-supplied wrapping <form>.\n\t\tconst existing = Array.from(this.children).find(c => c instanceof HTMLFormElement) as\n\t\t\t| HTMLFormElement\n\t\t\t| undefined\n\n\t\tconst form = existing ?? document.createElement('form')\n\t\tform.noValidate = true\n\n\t\tif (!existing) {\n\t\t\t// Snapshot children because appending mutates `this.childNodes`.\n\t\t\tconst children = Array.from(this.childNodes)\n\t\t\tfor (const node of children) form.appendChild(node)\n\t\t\tthis.appendChild(form)\n\t\t}\n\n\t\tform.addEventListener('submit', this._onSubmit)\n\t\tform.addEventListener('reset', this._onReset)\n\n\t\tthis._form = form\n\t\tthis._wrapped = true\n\t}\n\n\tprivate _onSubmit = (e: SubmitEvent): void => {\n\t\t// Prevent the default navigation AND stop the native submit from\n\t\t// bubbling past this wrapper — otherwise consumers listening for\n\t\t// `submit` on <schmancy-form> would see the native event plus our\n\t\t// CustomEvent (two fires per submission).\n\t\te.preventDefault()\n\t\te.stopPropagation()\n\t\tif (!this.novalidate && !this._form!.reportValidity()) {\n\t\t\tthis._internals?.states.add('invalid')\n\t\t\treturn\n\t\t}\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis._internals?.states.add('submitting')\n\t\ttry {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('submit', {\n\t\t\t\t\tdetail: new FormData(this._form!),\n\t\t\t\t}),\n\t\t\t)\n\t\t} finally {\n\t\t\tthis._internals?.states.delete('submitting')\n\t\t}\n\t}\n\n\tprivate _onReset = (e: Event): void => {\n\t\te.stopPropagation()\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\t/** Programmatically submit via the native submitter pipeline. */\n\tpublic submit(): boolean {\n\t\tif (!this._form) return false\n\t\tif (!this.novalidate && !this._form.reportValidity()) return false\n\t\tthis._form.requestSubmit()\n\t\treturn true\n\t}\n\n\t/** Programmatically reset via native `form.reset()`. */\n\tpublic reset(): void {\n\t\tthis._form?.reset()\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\treturn this._form?.reportValidity() ?? true\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\treturn this._form?.checkValidity() ?? true\n\t}\n\n\t/** Snapshot of current form values. Equivalent to `new FormData(this.form)`. */\n\tpublic getFormData(): FormData {\n\t\treturn this._form ? new FormData(this._form) : new FormData()\n\t}\n\n\t/** The underlying `<form>` element (escape hatch for advanced integration). */\n\tpublic get form(): HTMLFormElement | null {\n\t\treturn this._form\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n\n// === Retained type surface ===\n// These interfaces were part of the old collection-based engine. They're kept\n// exported because downstream code may still import them as documentation.\n// The new implementation no longer uses them internally.\n\nexport interface FormElement extends HTMLElement {\n\tname?: string\n\tvalue?: string\n\tdisabled?: boolean\n\ttype?: string\n\tdefaultValue?: string\n}\n\nexport interface CheckableFormElement extends FormElement {\n\tchecked?: boolean\n}\n\nexport interface ValidatableFormElement extends FormElement {\n\treportValidity?: () => boolean\n\tcheckValidity?: () => boolean\n}\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n"],"mappings":";;AA+Be,IAAA,IAAA,cAA2B,YAAA;CAAA,YAAA,GAAA,GAAA;AAAA,QAAA,GAAA,EAAA,EAAA,KAAA,QAGD,MAAA,KAAA,WAAA,CACrB,GAAA,KAAA,oBAAA;AAIlB,OAAA;AAAM,WAAO,KAAK,iBAAA;WAAA;AAA4B;;MAAA,EAAA,KAAA,aAoD1B,MAAA;AAOpB,OAFA,EAAE,gBAAA,EACF,EAAE,iBAAA,EACG,KAAK,cAAe,KAAK,MAAO,gBAAA,EAArC;AAIA,SAAK,YAAY,OAAO,OAAO,UAAA,EAC/B,KAAK,YAAY,OAAO,IAAI,aAAA;AAC5B,QAAA;AACC,UAAK,cACJ,IAAI,YAAY,UAAU,EACzB,QAAQ,IAAI,SAAS,KAAK,MAAA,EAAA,CAAA,CAAA;cAAA;AAI5B,UAAK,YAAY,OAAO,OAAO,aAAA;;SAZ/B,MAAK,YAAY,OAAO,IAAI,UAAA;KAAA,KAAA,YAgBV,MAAA;AACnB,KAAE,iBAAA,EACF,KAAK,YAAY,OAAO,OAAO,UAAA,EAC/B,KAAK,cAAc,IAAI,YAAY,QAAA,CAAA;;;CAAA;AAAA,OAAA,UAtFK;;CAWzC,IAAA,aAAI;AACH,SAAO,KAAK,aAAa,aAAA;;CAE1B,IAAA,WAAe,GAAA;AACV,MAAO,KAAK,aAAa,cAAc,GAAA,GACtC,KAAK,gBAAgB,aAAA;;CAG3B,oBAAA;AACC,OAAK,YAAA;;CAGN,uBAAA;AACK,OAAK,UACR,KAAK,MAAM,oBAAoB,UAAU,KAAK,UAAA,EAC9C,KAAK,MAAM,oBAAoB,SAAS,KAAK,SAAA;;CAQ/C,aAAA;AACC,MAAI,KAAK,SAAU;EAGnB,IAAM,IAAW,MAAM,KAAK,KAAK,SAAA,CAAU,MAAK,MAAK,aAAa,gBAAA,EAI5D,IAAO,KAAY,SAAS,cAAc,OAAA;AAGhD,MAFA,EAAK,aAAA,CAAa,GAAA,CAEb,GAAU;GAEd,IAAM,IAAW,MAAM,KAAK,KAAK,WAAA;AACjC,QAAK,IAAM,KAAQ,EAAU,GAAK,YAAY,EAAA;AAC9C,QAAK,YAAY,EAAA;;AAGlB,IAAK,iBAAiB,UAAU,KAAK,UAAA,EACrC,EAAK,iBAAiB,SAAS,KAAK,SAAA,EAEpC,KAAK,QAAQ,GACb,KAAK,WAAA,CAAW;;CAkCjB,SAAA;AACC,SAAA,CAAA,CAAK,KAAK,SAAA,EAAA,CACL,KAAK,cAAA,CAAe,KAAK,MAAM,gBAAA,MACpC,KAAK,MAAM,eAAA,EAAA,CACJ;;CAIR,QAAA;AACC,OAAK,OAAO,OAAA;;CAGb,iBAAA;AACC,SAAO,KAAK,OAAO,gBAAA,IAAA,CAAoB;;CAGxC,gBAAA;AACC,SAAO,KAAK,OAAO,eAAA,IAAA,CAAmB;;CAIvC,cAAA;AACC,SAAO,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAA,GAAS,IAAI,UAAA;;CAIpD,IAAA,OAAW;AACV,SAAO,KAAK;;GAAA,IAAA,IAAA,EAAA,CAvHb,EAAc,gBAAA,CAAA,EAAgB,EAAA;AAAA,SAAA,KAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-wI58M85H.cjs","names":[],"sources":["../src/form/form.ts"],"sourcesContent":["import { customElement } from 'lit/decorators.js'\n\n/**\n * Ergonomic wrapper around a native `<form>`. Children are reparented into a light-DOM `<form>` on connection so form-associated custom elements resolve `internals.form` via native DOM ancestry.\n *\n * - Form-associated custom elements (FACE) resolve their `internals.form`\n * correctly via native DOM ancestry.\n * - `new FormData(form)` collects values from every FACE + native control\n * without any manual walking.\n * - `form.reset()` triggers `formResetCallback()` on every FACE.\n * - `form.reportValidity()` runs native validation UI.\n * - `<button type=\"submit\">` and `<schmancy-button type=\"submit\">` both\n * submit the form via the native submitter pipeline.\n *\n * This component exists only to translate the native `submit` / `reset`\n * events into the Schmancy event shape (`detail: FormData`). All heavy\n * lifting is the platform's.\n *\n * @element schmancy-form\n * @summary Always wrap form-associated schmancy components in schmancy-form (or a native `<form>`) so `new FormData(form)` just works.\n * @example\n * <schmancy-form @submit=${(e) => console.log(Object.fromEntries(e.detail))}>\n * <schmancy-input name=\"email\" type=\"email\" required></schmancy-input>\n * <schmancy-input name=\"password\" type=\"password\" required></schmancy-input>\n * <schmancy-button type=\"submit\" variant=\"filled\">Sign in</schmancy-button>\n * </schmancy-form>\n * @platform form submit - Light-DOM native `<form>` element. Degrades to a `<form>` if the tag never registers — same semantics, just no CustomEvent translation.\n * @fires submit - `CustomEvent<FormData>` emitted when the form is submitted.\n * @fires reset - Emitted after the underlying form resets.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends HTMLElement {\n\tpublic static readonly tagName: string = 'schmancy-form'\n\n\tprivate _form: HTMLFormElement | null = null\n\tprivate _wrapped = false\n\n\t/** ElementInternals for `:state(invalid)` / `:state(submitting)` broadcasting. */\n\tprivate readonly _internals: ElementInternals | undefined = (() => {\n\t\ttry { return this.attachInternals() } catch { return undefined }\n\t})()\n\n\t/** Skip built-in constraint validation on submit. Mirrors `<form novalidate>`. */\n\tget novalidate(): boolean {\n\t\treturn this.hasAttribute('novalidate')\n\t}\n\tset novalidate(value: boolean) {\n\t\tif (value) this.setAttribute('novalidate', '')\n\t\telse this.removeAttribute('novalidate')\n\t}\n\n\tconnectedCallback(): void {\n\t\tthis.ensureForm()\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tif (this._form) {\n\t\t\tthis._form.removeEventListener('submit', this._onSubmit)\n\t\t\tthis._form.removeEventListener('reset', this._onReset)\n\t\t}\n\t}\n\n\t/**\n\t * On first connection, create the internal light-DOM `<form>` and move\n\t * existing children into it. Re-entry is a no-op.\n\t */\n\tprivate ensureForm(): void {\n\t\tif (this._wrapped) return\n\n\t\t// Respect an explicit consumer-supplied wrapping <form>.\n\t\tconst existing = Array.from(this.children).find(c => c instanceof HTMLFormElement) as\n\t\t\t| HTMLFormElement\n\t\t\t| undefined\n\n\t\tconst form = existing ?? document.createElement('form')\n\t\tform.noValidate = true\n\n\t\tif (!existing) {\n\t\t\t// Snapshot children because appending mutates `this.childNodes`.\n\t\t\tconst children = Array.from(this.childNodes)\n\t\t\tfor (const node of children) form.appendChild(node)\n\t\t\tthis.appendChild(form)\n\t\t}\n\n\t\tform.addEventListener('submit', this._onSubmit)\n\t\tform.addEventListener('reset', this._onReset)\n\n\t\tthis._form = form\n\t\tthis._wrapped = true\n\t}\n\n\tprivate _onSubmit = (e: SubmitEvent): void => {\n\t\t// Prevent the default navigation AND stop the native submit from\n\t\t// bubbling past this wrapper — otherwise consumers listening for\n\t\t// `submit` on <schmancy-form> would see the native event plus our\n\t\t// CustomEvent (two fires per submission).\n\t\te.preventDefault()\n\t\te.stopPropagation()\n\t\tif (!this.novalidate && !this._form!.reportValidity()) {\n\t\t\tthis._internals?.states.add('invalid')\n\t\t\treturn\n\t\t}\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis._internals?.states.add('submitting')\n\t\ttry {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('submit', {\n\t\t\t\t\tdetail: new FormData(this._form!),\n\t\t\t\t}),\n\t\t\t)\n\t\t} finally {\n\t\t\tthis._internals?.states.delete('submitting')\n\t\t}\n\t}\n\n\tprivate _onReset = (e: Event): void => {\n\t\te.stopPropagation()\n\t\tthis._internals?.states.delete('invalid')\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\t/** Programmatically submit via the native submitter pipeline. */\n\tpublic submit(): boolean {\n\t\tif (!this._form) return false\n\t\tif (!this.novalidate && !this._form.reportValidity()) return false\n\t\tthis._form.requestSubmit()\n\t\treturn true\n\t}\n\n\t/** Programmatically reset via native `form.reset()`. */\n\tpublic reset(): void {\n\t\tthis._form?.reset()\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\treturn this._form?.reportValidity() ?? true\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\treturn this._form?.checkValidity() ?? true\n\t}\n\n\t/** Snapshot of current form values. Equivalent to `new FormData(this.form)`. */\n\tpublic getFormData(): FormData {\n\t\treturn this._form ? new FormData(this._form) : new FormData()\n\t}\n\n\t/** The underlying `<form>` element (escape hatch for advanced integration). */\n\tpublic get form(): HTMLFormElement | null {\n\t\treturn this._form\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n\n// === Retained type surface ===\n// These interfaces were part of the old collection-based engine. They're kept\n// exported because downstream code may still import them as documentation.\n// The new implementation no longer uses them internally.\n\nexport interface FormElement extends HTMLElement {\n\tname?: string\n\tvalue?: string\n\tdisabled?: boolean\n\ttype?: string\n\tdefaultValue?: string\n}\n\nexport interface CheckableFormElement extends FormElement {\n\tchecked?: boolean\n}\n\nexport interface ValidatableFormElement extends FormElement {\n\treportValidity?: () => boolean\n\tcheckValidity?: () => boolean\n}\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n"],"mappings":"8GA+Be,IAAA,EAAA,cAA2B,WAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,MAGD,KAAA,KAAA,SAAA,CACrB,EAAA,KAAA,gBAAA,CAIlB,GAAA,CAAM,OAAO,KAAK,iBAAA,MAAA,CAA4B,WAAA,CAAA,KAAA,UAoD1B,GAAA,CAOpB,GAFA,EAAE,gBAAA,CACF,EAAE,iBAAA,CACG,KAAK,YAAe,KAAK,MAAO,gBAAA,CAArC,CAIA,KAAK,YAAY,OAAO,OAAO,UAAA,CAC/B,KAAK,YAAY,OAAO,IAAI,aAAA,CAC5B,GAAA,CACC,KAAK,cACJ,IAAI,YAAY,SAAU,CACzB,OAAQ,IAAI,SAAS,KAAK,MAAA,CAAA,CAAA,CAAA,QAAA,CAI5B,KAAK,YAAY,OAAO,OAAO,aAAA,OAZ/B,KAAK,YAAY,OAAO,IAAI,UAAA,EAAA,KAAA,SAgBV,GAAA,CACnB,EAAE,iBAAA,CACF,KAAK,YAAY,OAAO,OAAO,UAAA,CAC/B,KAAK,cAAc,IAAI,YAAY,QAAA,CAAA,EAAA,OAAA,KAAA,QAtFK,gBAWzC,IAAA,YAAI,CACH,OAAO,KAAK,aAAa,aAAA,CAE1B,IAAA,WAAe,EAAA,CACV,EAAO,KAAK,aAAa,aAAc,GAAA,CACtC,KAAK,gBAAgB,aAAA,CAG3B,mBAAA,CACC,KAAK,YAAA,CAGN,sBAAA,CACK,KAAK,QACR,KAAK,MAAM,oBAAoB,SAAU,KAAK,UAAA,CAC9C,KAAK,MAAM,oBAAoB,QAAS,KAAK,SAAA,EAQ/C,YAAA,CACC,GAAI,KAAK,SAAU,OAGnB,IAAM,EAAW,MAAM,KAAK,KAAK,SAAA,CAAU,KAAK,GAAK,aAAa,gBAAA,CAI5D,EAAO,GAAY,SAAS,cAAc,OAAA,CAGhD,GAFA,EAAK,WAAA,CAAa,EAAA,CAEb,EAAU,CAEd,IAAM,EAAW,MAAM,KAAK,KAAK,WAAA,CACjC,IAAK,IAAM,KAAQ,EAAU,EAAK,YAAY,EAAA,CAC9C,KAAK,YAAY,EAAA,CAGlB,EAAK,iBAAiB,SAAU,KAAK,UAAA,CACrC,EAAK,iBAAiB,QAAS,KAAK,SAAA,CAEpC,KAAK,MAAQ,EACb,KAAK,SAAA,CAAW,EAkCjB,QAAA,CACC,MAAA,CAAA,CAAK,KAAK,OAAA,EAAA,CACL,KAAK,YAAA,CAAe,KAAK,MAAM,gBAAA,IACpC,KAAK,MAAM,eAAA,CAAA,CACJ,GAIR,OAAA,CACC,KAAK,OAAO,OAAA,CAGb,gBAAA,CACC,OAAO,KAAK,OAAO,gBAAA,EAAA,CAAoB,EAGxC,eAAA,CACC,OAAO,KAAK,OAAO,eAAA,EAAA,CAAmB,EAIvC,aAAA,CACC,OAAO,KAAK,MAAQ,IAAI,SAAS,KAAK,MAAA,CAAS,IAAI,SAIpD,IAAA,MAAW,CACV,OAAO,KAAK,QAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAvHC,gBAAA,CAAA,CAAgB,EAAA,CAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Handover follow-up: schmancy agent runtime v2 loop-back
|
|
2
|
-
|
|
3
|
-
**From:** schmancy maintainers
|
|
4
|
-
**To:** Claude Design agent
|
|
5
|
-
**Status:** ready for loop-back validation when the PRs linked below merge and publish
|
|
6
|
-
**Parent:** [`agent-runtime-v1.md`](./agent-runtime-v1.md), [`agent-runtime-followups.md`](./agent-runtime-followups.md)
|
|
7
|
-
|
|
8
|
-
## What changed since v0.9.13
|
|
9
|
-
|
|
10
|
-
Four separable PRs, each shippable on its own:
|
|
11
|
-
|
|
12
|
-
| # | Title | Branch | Impact on your probe |
|
|
13
|
-
|---|---|---|---|
|
|
14
|
-
| 2 | CI smoke-test gate | `feat/ci-gate-and-version-templating` | None user-facing. `window.schmancy.help()` regressions now fail-closed at publish time instead of shipping silently. |
|
|
15
|
-
| 9 | `0.9.27` templating for handover docs | same branch as #2 | None user-facing. Future handover docs will have live esm.sh URLs instead of `<PENDING>` placeholders. |
|
|
16
|
-
| 3 | JSDoc backfill (46 components) | `feat/jsdoc-batch-{1,2,3}-*` | **This is what you'll notice.** Every form-control, container, and overlay/nav component now ships `@summary`, `@example`, and `@platform` tags in its manifest entry. `window.schmancy.help('schmancy-button')` returns a non-empty `summary`, a copy-pastable `examples[]`, and a `platformPrimitive` hint for graceful degradation. |
|
|
17
|
-
| 1 | Lazy vendor chunks | `feat/lazy-{typewriter,code-highlight,qr-scanner}` | Pages that don't render `<schmancy-code>`, `<schmancy-qr-scanner>`, or `<schmancy-typewriter>` no longer fetch `vendor-highlight`, `vendor-jsqr`, or the typewriter chunk on first paint. ~68 KB gzipped saved on cold starts for typical prototypes. |
|
|
18
|
-
|
|
19
|
-
The only one that changes the shape of `window.schmancy` is **#3**. The others are infra / perf.
|
|
20
|
-
|
|
21
|
-
## Pinned URLs (live once the PRs merge)
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
https://esm.sh/@mhmo91/schmancy/agent@0.9.27
|
|
25
|
-
https://esm.sh/@mhmo91/schmancy/agent/manifest@0.9.27
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
`0.9.27` is substituted at publish time — see [`agent-runtime-followups.md`](./agent-runtime-followups.md) #9. Until the PRs land, continue pinning `@0.9.14` (the last published version at time of writing).
|
|
29
|
-
|
|
30
|
-
## Minimum loop-back test
|
|
31
|
-
|
|
32
|
-
```html
|
|
33
|
-
<!doctype html>
|
|
34
|
-
<script type="module">
|
|
35
|
-
import 'https://esm.sh/@mhmo91/schmancy/agent@0.9.27';
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
<schmancy-theme root scheme="dark">
|
|
39
|
-
<schmancy-surface type="solid" fill="all">
|
|
40
|
-
<schmancy-button variant="filled">Hi</schmancy-button>
|
|
41
|
-
<schmancy-skill></schmancy-skill>
|
|
42
|
-
</schmancy-surface>
|
|
43
|
-
</schmancy-theme>
|
|
44
|
-
|
|
45
|
-
<script>
|
|
46
|
-
// Expected after the JSDoc backfill lands:
|
|
47
|
-
// - summary: non-empty ("Trigger actions or navigate. Form-associated; …")
|
|
48
|
-
// - examples: array with at least one <schmancy-button variant="filled"> snippet
|
|
49
|
-
// - platformPrimitive: { tag: 'button', mode: 'click', note: 'Schmancy-skinned native <button>…' }
|
|
50
|
-
const help = window.schmancy.help('schmancy-button');
|
|
51
|
-
console.log(help.summary, help.examples, help.platformPrimitive);
|
|
52
|
-
|
|
53
|
-
// Capability probe unchanged from v1
|
|
54
|
-
console.log(window.schmancy.capabilities());
|
|
55
|
-
</script>
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## What to report back
|
|
59
|
-
|
|
60
|
-
If anything surprises you, open an issue at `github.com/mhmo91/schmancy` with:
|
|
61
|
-
- The `window.schmancy.capabilities()` output from your sandbox
|
|
62
|
-
- Which component's `help()` surface looks wrong (empty summary, missing example, unexpected platform hint)
|
|
63
|
-
- The manifest schema version: `window.schmancy.manifest.schemaVersion`
|
|
64
|
-
|
|
65
|
-
Components that still have gaps after this pass — icons, tooltips, maps, charts, table internals — are on the long tail of the JSDoc campaign. They're not blockers; `help()` returns a class description when no `@summary` is present, so the response shape is still valid, just less useful.
|
|
66
|
-
|
|
67
|
-
## What did NOT ship
|
|
68
|
-
|
|
69
|
-
- **Theme service lazy-load.** ADR 0014 in the parent monorepo (`docs/adr/0014-lazy-vendor-chunks-in-schmancy-agent.md`) specifically defers this — the synchronous `theme.value` contract is load-bearing for every downstream consumer. Needs a separate ADR + migration plan.
|
|
70
|
-
- **Network-log regression guard.** Proposed in ADR 0014 as a Playwright assertion that a theme-only page loads zero `vendor-*` chunks. Requires a built-bundle test harness (existing tests use the dev bundle). Deferred to a follow-up; the CI smoke-test gate catches the class of regression that matters most.
|
|
71
|
-
- **MCP adapter package.** Tracked as follow-up #7. Ship it only when a concrete MCP consumer asks for it — writing the adapter without a real integration partner tends to produce a wrong API.
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# Paste: Claude Design v2 loop-back message
|
|
2
|
-
|
|
3
|
-
Copy-paste this into a Claude Design conversation. Full write-up is in the sibling `agent-runtime-v2-loopback.md`.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
**Schmancy agent runtime v2 — ready for loop-back**
|
|
8
|
-
|
|
9
|
-
Pin URL:
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
https://cdn.jsdelivr.net/npm/@mhmo91/schmancy@0.9.21/dist/agent/schmancy.agent.js
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
What's new since v0.9.13:
|
|
16
|
-
|
|
17
|
-
- **Richer `window.schmancy.help()`.** 46 components now return `{ summary, examples: [...], platformPrimitive: { tag, mode, note }, ...attrs }` instead of just attributes.
|
|
18
|
-
- **Lazy vendor chunks.** Pages that don't render `<schmancy-code>`, `<schmancy-qr-scanner>`, or `<schmancy-typewriter>` save ~68 KB gzipped on first paint.
|
|
19
|
-
- **CI smoke-test gate.** `window.schmancy.help()` regressions fail-closed at publish time.
|
|
20
|
-
|
|
21
|
-
Minimum test:
|
|
22
|
-
|
|
23
|
-
```html
|
|
24
|
-
<!doctype html>
|
|
25
|
-
<script type="module">
|
|
26
|
-
import 'https://cdn.jsdelivr.net/npm/@mhmo91/schmancy@0.9.21/dist/agent/schmancy.agent.js';
|
|
27
|
-
</script>
|
|
28
|
-
<schmancy-theme root scheme="dark">
|
|
29
|
-
<schmancy-surface type="solid" fill="all">
|
|
30
|
-
<schmancy-button variant="filled">Hi</schmancy-button>
|
|
31
|
-
<schmancy-skill></schmancy-skill>
|
|
32
|
-
</schmancy-surface>
|
|
33
|
-
</schmancy-theme>
|
|
34
|
-
<script>
|
|
35
|
-
const h = window.schmancy.help('schmancy-button');
|
|
36
|
-
console.log('summary:', h.summary);
|
|
37
|
-
console.log('examples:', h.examples);
|
|
38
|
-
console.log('platformPrimitive:', h.platformPrimitive);
|
|
39
|
-
</script>
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Report anything surprising at github.com/mhmo91/schmancy — include `window.schmancy.capabilities()` and `window.schmancy.manifest.schemaVersion`.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icons-Drq4kKy2.js","names":[],"sources":["../src/icons/icon.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { consume } from '@lit/context'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { BehaviorSubject, combineLatest, takeUntil } from 'rxjs'\nimport { tap } from 'rxjs/operators'\nimport { SchmancyButtonSizeContext, type SchmancyButtonSize } from '../button/context'\n\n/**\n * Icon size tokens - M3 aligned with optical size optimization\n * - xxs: 12px (opsz: 20) - fits in 24px buttons (ultra-compact)\n * - xs: 16px (opsz: 20) - fits in 32px buttons\n * - sm: 20px (opsz: 20) - fits in 40px buttons\n * - md: 24px (opsz: 24) - fits in 48px buttons (default)\n * - lg: 32px (opsz: 40) - fits in 56px buttons\n * - Or custom string like '48px'\n */\nexport type IconSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | string\n\n/**\n * @element schmancy-icon\n * Material Symbols icon component with flexible font variation properties\n *\n * @cssprop --schmancy-icon-size - The size of the icon (default: 24px)\n * @cssprop --schmancy-icon-fill - Fill value for icon (0-1)\n * @cssprop --schmancy-icon-weight - Weight value for icon (100-700)\n * @cssprop --schmancy-icon-grade - Grade value for icon (-50-200)\n * @cssprop --schmancy-icon-opsz - Optical size (default: 24)\n * @csspart icon - The inner `<span>` carrying the Material Symbols glyph.\n */\n@customElement('schmancy-icon')\nexport default class SchmancyIcon extends TailwindElement(css`\n\t:host {\n\t\t--schmancy-icon-size: 24px;\n\t\t--schmancy-icon-fill: 0;\n\t\t--schmancy-icon-weight: 400;\n\t\t--schmancy-icon-grade: 0;\n\t\t--schmancy-icon-opsz: 24;\n\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: var(--schmancy-icon-size);\n\t\theight: var(--schmancy-icon-size);\n\t\tfont-size: var(--schmancy-icon-size);\n\t\tcolor: inherit;\n\t\ttransition: font-variation-settings 0.2s ease;\n\t}\n\n\t.material-symbols {\n\t\tfont-family: var(--schmancy-icon-font, 'Material Symbols Outlined');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tline-height: 1;\n\t\tletter-spacing: normal;\n\t\ttext-transform: none;\n\t\tdisplay: inline-block;\n\t\twhite-space: nowrap;\n\t\tword-wrap: normal;\n\t\tdirection: ltr;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-webkit-font-feature-settings: 'liga';\n\t\tfont-feature-settings: 'liga';\n\t\tfont-variation-settings:\n\t\t\t'FILL' var(--schmancy-icon-fill),\n\t\t\t'wght' var(--schmancy-icon-weight),\n\t\t\t'GRAD' var(--schmancy-icon-grade),\n\t\t\t'opsz' var(--schmancy-icon-opsz);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\t/* CSS-generated content is NOT translated by Google Translate */\n\t.material-symbols[data-icon]::before {\n\t\tcontent: attr(data-icon);\n\t}\n`) {\n\t// Static flag to track if Google Fonts have been loaded\n\tprivate static fontsLoaded = false\n\n\t/**\n\t * Load Material Symbols fonts from Google Fonts CDN\n\t */\n\tprivate static loadFonts(): void {\n\t\tif (SchmancyIcon.fontsLoaded) {\n\t\t\treturn\n\t\t}\n\n\t\tconst link = document.createElement('link')\n\t\tlink.rel = 'stylesheet'\n\t\tlink.href = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap'\n\t\tdocument.head.appendChild(link)\n\n\t\tSchmancyIcon.fontsLoaded = true\n\t}\n\n\t/**\n\t * Fill value for the icon (0-1)\n\t * 0 = outlined, 1 = filled\n\t */\n\t@property({ type: Number, reflect: true })\n\tfill = 0\n\n\t/**\n\t * Weight value for the icon (100-700)\n\t * Controls the thickness of the icon strokes\n\t */\n\t@property({ type: Number, reflect: true })\n\tweight = 400\n\n\t/**\n\t * Grade value for the icon (-50-200)\n\t * Adjusts the visual weight/grade\n\t */\n\t@property({ type: Number, reflect: true })\n\tgrade = 0\n\n\t/**\n\t * Icon variant style\n\t * @values outlined | rounded | sharp\n\t */\n\t@property({ type: String, reflect: true })\n\tvariant: 'outlined' | 'rounded' | 'sharp' = 'outlined'\n\n\t/**\n\t * Size of the icon - M3 aligned tokens or custom string\n\t * Tokens: 'xxs' (12px), 'xs' (16px), 'sm' (20px), 'md' (24px), 'lg' (32px)\n\t * Custom: any CSS size string like '48px', '2rem'\n\t *\n\t * When this icon is a descendant of `<schmancy-button>`, the button's\n\t * `size` wins (via `SchmancyButtonSizeContext`). The local `size` only\n\t * applies when there is no ancestor button.\n\t */\n\t@property({ type: String, reflect: true })\n\tsize: IconSize = 'md'\n\n\t/**\n\t * Size inherited from an ancestor `<schmancy-button>` via context.\n\t * Undefined when the icon is not nested in a button.\n\t */\n\t@consume({ context: SchmancyButtonSizeContext, subscribe: true })\n\t@state()\n\tprivate _buttonSize?: SchmancyButtonSize\n\n\t/**\n\t * Icon name - use this instead of slot content to prevent translation breaking icons.\n\t * When set, this takes precedence over slot content.\n\t * Example: <schmancy-icon icon=\"delete\"></schmancy-icon>\n\t */\n\t@property({ type: String })\n\ticon?: string\n\n\t// M3 aligned token sizes with optimal optical sizes\n\tprivate static readonly tokenSizes: Record<string, { size: string; opsz: number }> = {\n\t\txxs: { size: '12px', opsz: 20 }, // fits in 24px buttons (ultra-compact)\n\t\txs: { size: '16px', opsz: 20 }, // fits in 32px buttons\n\t\tsm: { size: '20px', opsz: 20 }, // fits in 40px buttons\n\t\tmd: { size: '24px', opsz: 24 }, // fits in 48px buttons (default)\n\t\tlg: { size: '32px', opsz: 40 }, // fits in 56px buttons\n\t}\n\n\t/** Extract pixel value from a custom size string for optical size */\n\tprivate static computeOpticalSize(size: string): number {\n\t\tconst px = parseFloat(size)\n\t\treturn isNaN(px) ? 24 : Math.max(20, Math.min(48, Math.round(px)))\n\t}\n\n\t// RxJS subjects for reactive property updates\n\tprivate fill$ = new BehaviorSubject(this.fill)\n\tprivate weight$ = new BehaviorSubject(this.weight)\n\tprivate grade$ = new BehaviorSubject(this.grade)\n\tprivate variant$ = new BehaviorSubject(this.variant)\n\n\t// Captured icon name from slot content (translation-proof)\n\t@state()\n\tprivate _capturedIcon?: string\n\n\t// Observer for text content changes (ternaries update text nodes, not DOM structure)\n\tprivate _observer?: MutationObserver\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\n\t\t// Capture initial icon name\n\t\tthis._updateCapturedIcon()\n\n\t\t// Watch for text content changes (characterData) for dynamic icon updates\n\t\tthis._observer = new MutationObserver(() => this._updateCapturedIcon())\n\t\tthis._observer.observe(this, { childList: true, characterData: true, subtree: true })\n\n\t\t// Load Google Fonts if not already loaded\n\t\tSchmancyIcon.loadFonts()\n\n\t\t// Prevent browser translation from breaking icon ligatures\n\t\t// Using multiple methods for maximum compatibility:\n\t\t// - translate=\"no\" (HTML5 standard)\n\t\t// - class=\"notranslate\" (Google Translate specific)\n\t\tthis.setAttribute('translate', 'no')\n\t\tthis.classList.add('notranslate')\n\n\t\t// Set accessibility attributes for decorative icons\n\t\tif (!this.hasAttribute('aria-label') &&\n\t\t !this.hasAttribute('aria-labelledby') &&\n\t\t !this.hasAttribute('aria-hidden') &&\n\t\t !this.hasAttribute('role')) {\n\t\t\tthis.setAttribute('aria-hidden', 'true')\n\t\t}\n\n\t\t// Setup reactive CSS variable updates\n\t\tcombineLatest([\n\t\t\tthis.fill$,\n\t\t\tthis.weight$,\n\t\t\tthis.grade$,\n\t\t\tthis.variant$\n\t\t]).pipe(\n\t\t\ttap(([fill, weight, grade, variant]) => {\n\t\t\t\t// Update CSS custom properties for smooth transitions\n\t\t\t\tthis.style.setProperty('--schmancy-icon-fill', String(fill))\n\t\t\t\tthis.style.setProperty('--schmancy-icon-weight', String(weight))\n\t\t\t\tthis.style.setProperty('--schmancy-icon-grade', String(grade))\n\n\t\t\t\t// Update font family based on variant\n\t\t\t\tconst fontFamily = {\n\t\t\t\t\t'outlined': 'Material Symbols Outlined',\n\t\t\t\t\t'rounded': 'Material Symbols Rounded',\n\t\t\t\t\t'sharp': 'Material Symbols Sharp'\n\t\t\t\t}[variant] || 'Material Symbols Outlined'\n\n\t\t\t\tthis.style.setProperty('--schmancy-icon-font', fontFamily)\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t}\n\n\t/**\n\t * Update captured icon from current text content\n\t */\n\tprivate _updateCapturedIcon(): void {\n\t\tif (!this.icon) {\n\t\t\tconst textContent = this.textContent?.trim()\n\t\t\tif (textContent && textContent !== this._capturedIcon) {\n\t\t\t\tthis._capturedIcon = textContent\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected updated(changedProperties: Map<string | number | symbol, unknown>): void {\n\t\tsuper.updated(changedProperties)\n\n\t\t// Update BehaviorSubjects when properties change\n\t\tif (changedProperties.has('fill')) {\n\t\t\tthis.fill$.next(this.fill)\n\t\t}\n\t\tif (changedProperties.has('weight')) {\n\t\t\tthis.weight$.next(this.weight)\n\t\t}\n\t\tif (changedProperties.has('grade')) {\n\t\t\tthis.grade$.next(this.grade)\n\t\t}\n\t\tif (changedProperties.has('variant')) {\n\t\t\tthis.variant$.next(this.variant)\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\tconst fontFamily = {\n\t\t\t'outlined': 'Material Symbols Outlined',\n\t\t\t'rounded': 'Material Symbols Rounded',\n\t\t\t'sharp': 'Material Symbols Sharp'\n\t\t}[this.variant] || 'Material Symbols Outlined'\n\n\t\t// Effective size: ancestor `<schmancy-button>` wins via context, else local `size`.\n\t\tconst effectiveSize: IconSize = this._buttonSize ?? this.size\n\t\t// Resolve size: token → px, bare number → px, or pass through as-is\n\t\tconst sizeConfig = SchmancyIcon.tokenSizes[effectiveSize]\n\t\tconst isNumeric = !sizeConfig && /^\\d+(\\.\\d+)?$/.test(effectiveSize)\n\t\tconst iconSize = sizeConfig?.size || (isNumeric ? `${effectiveSize}px` : effectiveSize)\n\t\tconst opticalSize = sizeConfig?.opsz || SchmancyIcon.computeOpticalSize(iconSize)\n\n\t\t// Set size on HOST so :host CSS picks it up\n\t\tthis.style.setProperty('--schmancy-icon-size', iconSize)\n\t\tthis.style.setProperty('--schmancy-icon-opsz', String(opticalSize))\n\n\t\tconst style = {\n\t\t\t'--schmancy-icon-fill': this.fill,\n\t\t\t'--schmancy-icon-weight': this.weight,\n\t\t\t'--schmancy-icon-grade': this.grade,\n\t\t\t'--schmancy-icon-font': fontFamily,\n\t\t}\n\n\t\t// Priority: icon property > captured icon (for dynamic content)\n\t\tconst iconName = this.icon || this._capturedIcon\n\n\t\t// Always render slot (hidden) to observe content changes, display via data-icon\n\t\treturn html`\n\t\t\t<span class=\"material-symbols notranslate\" part=\"icon\" translate=\"no\" data-icon=${iconName || ''} style=${this.styleMap(style)}></span>\n\t\t\t<slot style=\"display:none\"></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon': SchmancyIcon\n\t}\n}"],"mappings":"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"}
|
package/dist/icons-DtdhaZdc.cjs
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./tailwind.mixin-DRI1oTYQ.cjs`),t=require(`./decorate-F9CuyeHg.cjs`);require(`./mixins.cjs`);const n=require(`./context-C6dHUHhi.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`lit/decorators.js`),o=require(`lit`);var s,c=class extends e.t(o.css`
|
|
2
|
-
:host {
|
|
3
|
-
--schmancy-icon-size: 24px;
|
|
4
|
-
--schmancy-icon-fill: 0;
|
|
5
|
-
--schmancy-icon-weight: 400;
|
|
6
|
-
--schmancy-icon-grade: 0;
|
|
7
|
-
--schmancy-icon-opsz: 24;
|
|
8
|
-
|
|
9
|
-
display: inline-flex;
|
|
10
|
-
align-items: center;
|
|
11
|
-
justify-content: center;
|
|
12
|
-
width: var(--schmancy-icon-size);
|
|
13
|
-
height: var(--schmancy-icon-size);
|
|
14
|
-
font-size: var(--schmancy-icon-size);
|
|
15
|
-
color: inherit;
|
|
16
|
-
transition: font-variation-settings 0.2s ease;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.material-symbols {
|
|
20
|
-
font-family: var(--schmancy-icon-font, 'Material Symbols Outlined');
|
|
21
|
-
font-weight: normal;
|
|
22
|
-
font-style: normal;
|
|
23
|
-
line-height: 1;
|
|
24
|
-
letter-spacing: normal;
|
|
25
|
-
text-transform: none;
|
|
26
|
-
display: inline-block;
|
|
27
|
-
white-space: nowrap;
|
|
28
|
-
word-wrap: normal;
|
|
29
|
-
direction: ltr;
|
|
30
|
-
-webkit-font-smoothing: antialiased;
|
|
31
|
-
-webkit-font-feature-settings: 'liga';
|
|
32
|
-
font-feature-settings: 'liga';
|
|
33
|
-
font-variation-settings:
|
|
34
|
-
'FILL' var(--schmancy-icon-fill),
|
|
35
|
-
'wght' var(--schmancy-icon-weight),
|
|
36
|
-
'GRAD' var(--schmancy-icon-grade),
|
|
37
|
-
'opsz' var(--schmancy-icon-opsz);
|
|
38
|
-
width: 100%;
|
|
39
|
-
height: 100%;
|
|
40
|
-
display: flex;
|
|
41
|
-
align-items: center;
|
|
42
|
-
justify-content: center;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/* CSS-generated content is NOT translated by Google Translate */
|
|
46
|
-
.material-symbols[data-icon]::before {
|
|
47
|
-
content: attr(data-icon);
|
|
48
|
-
}
|
|
49
|
-
`){static{s=this}constructor(...e){super(...e),this.fill=0,this.weight=400,this.grade=0,this.variant=`outlined`,this.size=`md`,this.fill$=new r.BehaviorSubject(this.fill),this.weight$=new r.BehaviorSubject(this.weight),this.grade$=new r.BehaviorSubject(this.grade),this.variant$=new r.BehaviorSubject(this.variant)}static{this.fontsLoaded=!1}static loadFonts(){if(s.fontsLoaded)return;let e=document.createElement(`link`);e.rel=`stylesheet`,e.href=`https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap`,document.head.appendChild(e),s.fontsLoaded=!0}static{this.tokenSizes={xxs:{size:`12px`,opsz:20},xs:{size:`16px`,opsz:20},sm:{size:`20px`,opsz:20},md:{size:`24px`,opsz:24},lg:{size:`32px`,opsz:40}}}static computeOpticalSize(e){let t=parseFloat(e);return isNaN(t)?24:Math.max(20,Math.min(48,Math.round(t)))}connectedCallback(){super.connectedCallback(),this._updateCapturedIcon(),this._observer=new MutationObserver(()=>this._updateCapturedIcon()),this._observer.observe(this,{childList:!0,characterData:!0,subtree:!0}),s.loadFonts(),this.setAttribute(`translate`,`no`),this.classList.add(`notranslate`),this.hasAttribute(`aria-label`)||this.hasAttribute(`aria-labelledby`)||this.hasAttribute(`aria-hidden`)||this.hasAttribute(`role`)||this.setAttribute(`aria-hidden`,`true`),(0,r.combineLatest)([this.fill$,this.weight$,this.grade$,this.variant$]).pipe((0,i.tap)(([e,t,n,r])=>{this.style.setProperty(`--schmancy-icon-fill`,String(e)),this.style.setProperty(`--schmancy-icon-weight`,String(t)),this.style.setProperty(`--schmancy-icon-grade`,String(n));let i={outlined:`Material Symbols Outlined`,rounded:`Material Symbols Rounded`,sharp:`Material Symbols Sharp`}[r]||`Material Symbols Outlined`;this.style.setProperty(`--schmancy-icon-font`,i)}),(0,r.takeUntil)(this.disconnecting)).subscribe()}_updateCapturedIcon(){if(!this.icon){let e=this.textContent?.trim();e&&e!==this._capturedIcon&&(this._capturedIcon=e)}}updated(e){super.updated(e),e.has(`fill`)&&this.fill$.next(this.fill),e.has(`weight`)&&this.weight$.next(this.weight),e.has(`grade`)&&this.grade$.next(this.grade),e.has(`variant`)&&this.variant$.next(this.variant)}render(){let e={outlined:`Material Symbols Outlined`,rounded:`Material Symbols Rounded`,sharp:`Material Symbols Sharp`}[this.variant]||`Material Symbols Outlined`,t=this._buttonSize??this.size,n=s.tokenSizes[t],r=!n&&/^\d+(\.\d+)?$/.test(t),i=n?.size||(r?`${t}px`:t),a=n?.opsz||s.computeOpticalSize(i);this.style.setProperty(`--schmancy-icon-size`,i),this.style.setProperty(`--schmancy-icon-opsz`,String(a));let c={"--schmancy-icon-fill":this.fill,"--schmancy-icon-weight":this.weight,"--schmancy-icon-grade":this.grade,"--schmancy-icon-font":e};return o.html`
|
|
50
|
-
<span class="material-symbols notranslate" part="icon" translate="no" data-icon=${this.icon||this._capturedIcon||``} style=${this.styleMap(c)}></span>
|
|
51
|
-
<slot style="display:none"></slot>
|
|
52
|
-
`}};t.t([(0,a.property)({type:Number,reflect:!0})],c.prototype,`fill`,void 0),t.t([(0,a.property)({type:Number,reflect:!0})],c.prototype,`weight`,void 0),t.t([(0,a.property)({type:Number,reflect:!0})],c.prototype,`grade`,void 0),t.t([(0,a.property)({type:String,reflect:!0})],c.prototype,`variant`,void 0),t.t([(0,a.property)({type:String,reflect:!0})],c.prototype,`size`,void 0),t.t([e.a({context:n.t,subscribe:!0}),(0,a.state)()],c.prototype,`_buttonSize`,void 0),t.t([(0,a.property)({type:String})],c.prototype,`icon`,void 0),t.t([(0,a.state)()],c.prototype,`_capturedIcon`,void 0),c=s=t.t([(0,a.customElement)(`schmancy-icon`)],c);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icons-DtdhaZdc.cjs","names":[],"sources":["../src/icons/icon.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { consume } from '@lit/context'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { BehaviorSubject, combineLatest, takeUntil } from 'rxjs'\nimport { tap } from 'rxjs/operators'\nimport { SchmancyButtonSizeContext, type SchmancyButtonSize } from '../button/context'\n\n/**\n * Icon size tokens - M3 aligned with optical size optimization\n * - xxs: 12px (opsz: 20) - fits in 24px buttons (ultra-compact)\n * - xs: 16px (opsz: 20) - fits in 32px buttons\n * - sm: 20px (opsz: 20) - fits in 40px buttons\n * - md: 24px (opsz: 24) - fits in 48px buttons (default)\n * - lg: 32px (opsz: 40) - fits in 56px buttons\n * - Or custom string like '48px'\n */\nexport type IconSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | string\n\n/**\n * @element schmancy-icon\n * Material Symbols icon component with flexible font variation properties\n *\n * @cssprop --schmancy-icon-size - The size of the icon (default: 24px)\n * @cssprop --schmancy-icon-fill - Fill value for icon (0-1)\n * @cssprop --schmancy-icon-weight - Weight value for icon (100-700)\n * @cssprop --schmancy-icon-grade - Grade value for icon (-50-200)\n * @cssprop --schmancy-icon-opsz - Optical size (default: 24)\n * @csspart icon - The inner `<span>` carrying the Material Symbols glyph.\n */\n@customElement('schmancy-icon')\nexport default class SchmancyIcon extends TailwindElement(css`\n\t:host {\n\t\t--schmancy-icon-size: 24px;\n\t\t--schmancy-icon-fill: 0;\n\t\t--schmancy-icon-weight: 400;\n\t\t--schmancy-icon-grade: 0;\n\t\t--schmancy-icon-opsz: 24;\n\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: var(--schmancy-icon-size);\n\t\theight: var(--schmancy-icon-size);\n\t\tfont-size: var(--schmancy-icon-size);\n\t\tcolor: inherit;\n\t\ttransition: font-variation-settings 0.2s ease;\n\t}\n\n\t.material-symbols {\n\t\tfont-family: var(--schmancy-icon-font, 'Material Symbols Outlined');\n\t\tfont-weight: normal;\n\t\tfont-style: normal;\n\t\tline-height: 1;\n\t\tletter-spacing: normal;\n\t\ttext-transform: none;\n\t\tdisplay: inline-block;\n\t\twhite-space: nowrap;\n\t\tword-wrap: normal;\n\t\tdirection: ltr;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-webkit-font-feature-settings: 'liga';\n\t\tfont-feature-settings: 'liga';\n\t\tfont-variation-settings:\n\t\t\t'FILL' var(--schmancy-icon-fill),\n\t\t\t'wght' var(--schmancy-icon-weight),\n\t\t\t'GRAD' var(--schmancy-icon-grade),\n\t\t\t'opsz' var(--schmancy-icon-opsz);\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t}\n\n\t/* CSS-generated content is NOT translated by Google Translate */\n\t.material-symbols[data-icon]::before {\n\t\tcontent: attr(data-icon);\n\t}\n`) {\n\t// Static flag to track if Google Fonts have been loaded\n\tprivate static fontsLoaded = false\n\n\t/**\n\t * Load Material Symbols fonts from Google Fonts CDN\n\t */\n\tprivate static loadFonts(): void {\n\t\tif (SchmancyIcon.fontsLoaded) {\n\t\t\treturn\n\t\t}\n\n\t\tconst link = document.createElement('link')\n\t\tlink.rel = 'stylesheet'\n\t\tlink.href = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&family=Material+Symbols+Sharp:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap'\n\t\tdocument.head.appendChild(link)\n\n\t\tSchmancyIcon.fontsLoaded = true\n\t}\n\n\t/**\n\t * Fill value for the icon (0-1)\n\t * 0 = outlined, 1 = filled\n\t */\n\t@property({ type: Number, reflect: true })\n\tfill = 0\n\n\t/**\n\t * Weight value for the icon (100-700)\n\t * Controls the thickness of the icon strokes\n\t */\n\t@property({ type: Number, reflect: true })\n\tweight = 400\n\n\t/**\n\t * Grade value for the icon (-50-200)\n\t * Adjusts the visual weight/grade\n\t */\n\t@property({ type: Number, reflect: true })\n\tgrade = 0\n\n\t/**\n\t * Icon variant style\n\t * @values outlined | rounded | sharp\n\t */\n\t@property({ type: String, reflect: true })\n\tvariant: 'outlined' | 'rounded' | 'sharp' = 'outlined'\n\n\t/**\n\t * Size of the icon - M3 aligned tokens or custom string\n\t * Tokens: 'xxs' (12px), 'xs' (16px), 'sm' (20px), 'md' (24px), 'lg' (32px)\n\t * Custom: any CSS size string like '48px', '2rem'\n\t *\n\t * When this icon is a descendant of `<schmancy-button>`, the button's\n\t * `size` wins (via `SchmancyButtonSizeContext`). The local `size` only\n\t * applies when there is no ancestor button.\n\t */\n\t@property({ type: String, reflect: true })\n\tsize: IconSize = 'md'\n\n\t/**\n\t * Size inherited from an ancestor `<schmancy-button>` via context.\n\t * Undefined when the icon is not nested in a button.\n\t */\n\t@consume({ context: SchmancyButtonSizeContext, subscribe: true })\n\t@state()\n\tprivate _buttonSize?: SchmancyButtonSize\n\n\t/**\n\t * Icon name - use this instead of slot content to prevent translation breaking icons.\n\t * When set, this takes precedence over slot content.\n\t * Example: <schmancy-icon icon=\"delete\"></schmancy-icon>\n\t */\n\t@property({ type: String })\n\ticon?: string\n\n\t// M3 aligned token sizes with optimal optical sizes\n\tprivate static readonly tokenSizes: Record<string, { size: string; opsz: number }> = {\n\t\txxs: { size: '12px', opsz: 20 }, // fits in 24px buttons (ultra-compact)\n\t\txs: { size: '16px', opsz: 20 }, // fits in 32px buttons\n\t\tsm: { size: '20px', opsz: 20 }, // fits in 40px buttons\n\t\tmd: { size: '24px', opsz: 24 }, // fits in 48px buttons (default)\n\t\tlg: { size: '32px', opsz: 40 }, // fits in 56px buttons\n\t}\n\n\t/** Extract pixel value from a custom size string for optical size */\n\tprivate static computeOpticalSize(size: string): number {\n\t\tconst px = parseFloat(size)\n\t\treturn isNaN(px) ? 24 : Math.max(20, Math.min(48, Math.round(px)))\n\t}\n\n\t// RxJS subjects for reactive property updates\n\tprivate fill$ = new BehaviorSubject(this.fill)\n\tprivate weight$ = new BehaviorSubject(this.weight)\n\tprivate grade$ = new BehaviorSubject(this.grade)\n\tprivate variant$ = new BehaviorSubject(this.variant)\n\n\t// Captured icon name from slot content (translation-proof)\n\t@state()\n\tprivate _capturedIcon?: string\n\n\t// Observer for text content changes (ternaries update text nodes, not DOM structure)\n\tprivate _observer?: MutationObserver\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\n\t\t// Capture initial icon name\n\t\tthis._updateCapturedIcon()\n\n\t\t// Watch for text content changes (characterData) for dynamic icon updates\n\t\tthis._observer = new MutationObserver(() => this._updateCapturedIcon())\n\t\tthis._observer.observe(this, { childList: true, characterData: true, subtree: true })\n\n\t\t// Load Google Fonts if not already loaded\n\t\tSchmancyIcon.loadFonts()\n\n\t\t// Prevent browser translation from breaking icon ligatures\n\t\t// Using multiple methods for maximum compatibility:\n\t\t// - translate=\"no\" (HTML5 standard)\n\t\t// - class=\"notranslate\" (Google Translate specific)\n\t\tthis.setAttribute('translate', 'no')\n\t\tthis.classList.add('notranslate')\n\n\t\t// Set accessibility attributes for decorative icons\n\t\tif (!this.hasAttribute('aria-label') &&\n\t\t !this.hasAttribute('aria-labelledby') &&\n\t\t !this.hasAttribute('aria-hidden') &&\n\t\t !this.hasAttribute('role')) {\n\t\t\tthis.setAttribute('aria-hidden', 'true')\n\t\t}\n\n\t\t// Setup reactive CSS variable updates\n\t\tcombineLatest([\n\t\t\tthis.fill$,\n\t\t\tthis.weight$,\n\t\t\tthis.grade$,\n\t\t\tthis.variant$\n\t\t]).pipe(\n\t\t\ttap(([fill, weight, grade, variant]) => {\n\t\t\t\t// Update CSS custom properties for smooth transitions\n\t\t\t\tthis.style.setProperty('--schmancy-icon-fill', String(fill))\n\t\t\t\tthis.style.setProperty('--schmancy-icon-weight', String(weight))\n\t\t\t\tthis.style.setProperty('--schmancy-icon-grade', String(grade))\n\n\t\t\t\t// Update font family based on variant\n\t\t\t\tconst fontFamily = {\n\t\t\t\t\t'outlined': 'Material Symbols Outlined',\n\t\t\t\t\t'rounded': 'Material Symbols Rounded',\n\t\t\t\t\t'sharp': 'Material Symbols Sharp'\n\t\t\t\t}[variant] || 'Material Symbols Outlined'\n\n\t\t\t\tthis.style.setProperty('--schmancy-icon-font', fontFamily)\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting)\n\t\t).subscribe()\n\n\t}\n\n\t/**\n\t * Update captured icon from current text content\n\t */\n\tprivate _updateCapturedIcon(): void {\n\t\tif (!this.icon) {\n\t\t\tconst textContent = this.textContent?.trim()\n\t\t\tif (textContent && textContent !== this._capturedIcon) {\n\t\t\t\tthis._capturedIcon = textContent\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected updated(changedProperties: Map<string | number | symbol, unknown>): void {\n\t\tsuper.updated(changedProperties)\n\n\t\t// Update BehaviorSubjects when properties change\n\t\tif (changedProperties.has('fill')) {\n\t\t\tthis.fill$.next(this.fill)\n\t\t}\n\t\tif (changedProperties.has('weight')) {\n\t\t\tthis.weight$.next(this.weight)\n\t\t}\n\t\tif (changedProperties.has('grade')) {\n\t\t\tthis.grade$.next(this.grade)\n\t\t}\n\t\tif (changedProperties.has('variant')) {\n\t\t\tthis.variant$.next(this.variant)\n\t\t}\n\t}\n\n\tprotected render(): unknown {\n\t\tconst fontFamily = {\n\t\t\t'outlined': 'Material Symbols Outlined',\n\t\t\t'rounded': 'Material Symbols Rounded',\n\t\t\t'sharp': 'Material Symbols Sharp'\n\t\t}[this.variant] || 'Material Symbols Outlined'\n\n\t\t// Effective size: ancestor `<schmancy-button>` wins via context, else local `size`.\n\t\tconst effectiveSize: IconSize = this._buttonSize ?? this.size\n\t\t// Resolve size: token → px, bare number → px, or pass through as-is\n\t\tconst sizeConfig = SchmancyIcon.tokenSizes[effectiveSize]\n\t\tconst isNumeric = !sizeConfig && /^\\d+(\\.\\d+)?$/.test(effectiveSize)\n\t\tconst iconSize = sizeConfig?.size || (isNumeric ? `${effectiveSize}px` : effectiveSize)\n\t\tconst opticalSize = sizeConfig?.opsz || SchmancyIcon.computeOpticalSize(iconSize)\n\n\t\t// Set size on HOST so :host CSS picks it up\n\t\tthis.style.setProperty('--schmancy-icon-size', iconSize)\n\t\tthis.style.setProperty('--schmancy-icon-opsz', String(opticalSize))\n\n\t\tconst style = {\n\t\t\t'--schmancy-icon-fill': this.fill,\n\t\t\t'--schmancy-icon-weight': this.weight,\n\t\t\t'--schmancy-icon-grade': this.grade,\n\t\t\t'--schmancy-icon-font': fontFamily,\n\t\t}\n\n\t\t// Priority: icon property > captured icon (for dynamic content)\n\t\tconst iconName = this.icon || this._capturedIcon\n\n\t\t// Always render slot (hidden) to observe content changes, display via data-icon\n\t\treturn html`\n\t\t\t<span class=\"material-symbols notranslate\" part=\"icon\" translate=\"no\" data-icon=${iconName || ''} style=${this.styleMap(style)}></span>\n\t\t\t<slot style=\"display:none\"></slot>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-icon': SchmancyIcon\n\t}\n}"],"mappings":"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"}
|
package/dist/iframe-BkwwWIbQ.cjs
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require(`./chunk-CncqDLb2.cjs`);const e=require(`./tailwind.mixin-DRI1oTYQ.cjs`),t=require(`./decorate-F9CuyeHg.cjs`);require(`./mixins.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t(r.css`
|
|
2
|
-
:host {
|
|
3
|
-
display: block;
|
|
4
|
-
}
|
|
5
|
-
iframe {
|
|
6
|
-
border: 0;
|
|
7
|
-
width: 100%;
|
|
8
|
-
}
|
|
9
|
-
`){constructor(...e){super(...e),this.html=``,this.css=``,this.baseCss=`html,body{margin:0;padding:0;overflow:hidden;background:#fff;color:#1a1a1a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.6;word-wrap:break-word;overflow-wrap:break-word}
|
|
10
|
-
body{padding:16px}
|
|
11
|
-
p{margin:0 0 1em}p:last-child{margin-bottom:0}
|
|
12
|
-
ul,ol{margin:0 0 1em;padding-left:1.5em}li{margin-bottom:.25em}
|
|
13
|
-
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.3}h1{font-size:1.5em}h2{font-size:1.25em}h3{font-size:1.1em}h4{font-size:1em}
|
|
14
|
-
hr{border:none;border-top:1px solid #dadce0;margin:1em 0}
|
|
15
|
-
img{max-width:100%;height:auto}
|
|
16
|
-
table{border-collapse:collapse;max-width:100%}td,th{padding:4px 8px;border:1px solid #dadce0}
|
|
17
|
-
blockquote{margin:0 0 1em;padding:.5em 0 .5em 1em;border-left:3px solid #dadce0;color:#5f6368}
|
|
18
|
-
pre{background:#f5f5f5;padding:.75em;border-radius:4px;overflow-x:auto;font-size:.9em}
|
|
19
|
-
code{background:#f5f5f5;padding:.1em .3em;border-radius:3px;font-size:.9em}`,this.sandbox=`allow-same-origin allow-popups`,this.minHeight=60,this._height=60,this._srcdoc=``}willUpdate(e){(e.has(`html`)||e.has(`css`)||e.has(`baseCss`))&&(this._srcdoc=this.html?this.buildSrcdoc():``,this._height=this.minHeight)}buildSrcdoc(){return`<!DOCTYPE html><html><head>\n<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">\n<base target="_blank">\n<style>${this.css?`${this.baseCss}\n${this.css}`:this.baseCss}</style></head><body>${this.html}</body></html>`}onLoad(e){let t=e.target;try{let e=t.contentDocument;if(!e)return;this._height=Math.max(e.documentElement.scrollHeight,this.minHeight)}catch{this._height=Math.max(200,this.minHeight)}}render(){return this.html?r.html`<iframe
|
|
20
|
-
.srcdoc=${this._srcdoc}
|
|
21
|
-
sandbox=${this.sandbox}
|
|
22
|
-
style="height:${this._height}px;min-height:${this.minHeight}px;overflow:hidden"
|
|
23
|
-
@load=${this.onLoad}
|
|
24
|
-
></iframe>`:r.html``}};t.t([(0,n.property)({type:String})],i.prototype,`html`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`css`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`baseCss`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`sandbox`,void 0),t.t([(0,n.property)({type:Number})],i.prototype,`minHeight`,void 0),t.t([(0,n.state)()],i.prototype,`_height`,void 0);var a=i=t.t([(0,n.customElement)(`schmancy-iframe`)],i);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"iframe-BkwwWIbQ.cjs","names":[],"sources":["../src/iframe/iframe.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\n/** Sensible document reset for iframe content — font, spacing, word-wrap */\nconst DEFAULT_BASE_CSS = `html,body{margin:0;padding:0;overflow:hidden;background:#fff;color:#1a1a1a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.6;word-wrap:break-word;overflow-wrap:break-word}\nbody{padding:16px}\np{margin:0 0 1em}p:last-child{margin-bottom:0}\nul,ol{margin:0 0 1em;padding-left:1.5em}li{margin-bottom:.25em}\nh1,h2,h3,h4{margin:0 0 .5em;line-height:1.3}h1{font-size:1.5em}h2{font-size:1.25em}h3{font-size:1.1em}h4{font-size:1em}\nhr{border:none;border-top:1px solid #dadce0;margin:1em 0}\nimg{max-width:100%;height:auto}\ntable{border-collapse:collapse;max-width:100%}td,th{padding:4px 8px;border:1px solid #dadce0}\nblockquote{margin:0 0 1em;padding:.5em 0 .5em 1em;border-left:3px solid #dadce0;color:#5f6368}\npre{background:#f5f5f5;padding:.75em;border-radius:4px;overflow-x:auto;font-size:.9em}\ncode{background:#f5f5f5;padding:.1em .3em;border-radius:3px;font-size:.9em}`\n\n/**\n * Renders an HTML fragment inside a sandboxed, auto-sizing iframe.\n *\n * @slot - (none)\n * @fires load — native iframe load event\n *\n * @example\n * ```html\n * <schmancy-iframe .html=${bodyHtml} .css=${extraStyles}></schmancy-iframe>\n * ```\n */\n@customElement('schmancy-iframe')\nexport default class SchmancyIframe extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\tiframe {\n\t\tborder: 0;\n\t\twidth: 100%;\n\t}\n`) {\n\t/** HTML body fragment to render inside the iframe */\n\t@property({ type: String }) html = ''\n\n\t/** Additional CSS injected after the base styles (consumer-specific) */\n\t@property({ type: String }) css = ''\n\n\t/** Base document CSS (font, spacing, resets). Override for fully custom styling */\n\t@property({ type: String }) baseCss = DEFAULT_BASE_CSS\n\n\t/** iframe sandbox attribute */\n\t@property({ type: String }) sandbox = 'allow-same-origin allow-popups'\n\n\t/** Minimum height in pixels */\n\t@property({ type: Number }) minHeight = 60\n\n\t@state() private _height = 60\n\tprivate _srcdoc = ''\n\n\tprotected willUpdate(changed: PropertyValues) {\n\t\tif (changed.has('html') || changed.has('css') || changed.has('baseCss')) {\n\t\t\tthis._srcdoc = this.html ? this.buildSrcdoc() : ''\n\t\t\tthis._height = this.minHeight\n\t\t}\n\t}\n\n\tprivate buildSrcdoc(): string {\n\t\tconst styles = this.css ? `${this.baseCss}\\n${this.css}` : this.baseCss\n\t\treturn `<!DOCTYPE html><html><head>\n<meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<base target=\"_blank\">\n<style>${styles}</style></head><body>${this.html}</body></html>`\n\t}\n\n\tprivate onLoad(e: Event) {\n\t\tconst iframe = e.target as HTMLIFrameElement\n\t\ttry {\n\t\t\tconst doc = iframe.contentDocument\n\t\t\tif (!doc) return\n\t\t\tthis._height = Math.max(doc.documentElement.scrollHeight, this.minHeight)\n\t\t} catch {\n\t\t\tthis._height = Math.max(200, this.minHeight)\n\t\t}\n\t}\n\n\tprotected render() {\n\t\tif (!this.html) return html``\n\t\treturn html`<iframe\n\t\t\t.srcdoc=${this._srcdoc}\n\t\t\tsandbox=${this.sandbox}\n\t\t\tstyle=\"height:${this._height}px;min-height:${this.minHeight}px;overflow:hidden\"\n\t\t\t@load=${this.onLoad}\n\t\t></iframe>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-iframe': SchmancyIframe\n\t}\n}\n"],"mappings":"kMAKA,IAwBe,EAAA,cAA6B,EAAA,EAAgB,EAAA,GAAG;;;;;;;;2CAU3B,GAAA,KAAA,IAGD,GAAA,KAAA,QArCV;;;;;;;;;;6EAAA,KAAA,QA2Cc,iCAAA,KAAA,UAGE,GAAA,KAAA,QAEb,GAAA,KAAA,QACT,GAElB,WAAqB,EAAA,EAChB,EAAQ,IAAI,OAAA,EAAW,EAAQ,IAAI,MAAA,EAAU,EAAQ,IAAI,UAAA,IAC5D,KAAK,QAAU,KAAK,KAAO,KAAK,aAAA,CAAgB,GAChD,KAAK,QAAU,KAAK,WAItB,aAAA,CAEC,MAAO,0JADQ,KAAK,IAAM,GAAG,KAAK,QAAA,IAAY,KAAK,MAAQ,KAAK,QAAA,uBAI3B,KAAK,KAAA,gBAG3C,OAAe,EAAA,CACd,IAAM,EAAS,EAAE,OACjB,GAAA,CACC,IAAM,EAAM,EAAO,gBACnB,GAAA,CAAK,EAAK,OACV,KAAK,QAAU,KAAK,IAAI,EAAI,gBAAgB,aAAc,KAAK,UAAA,MAAA,CAE/D,KAAK,QAAU,KAAK,IAAI,IAAK,KAAK,UAAA,EAIpC,QAAA,CACC,OAAK,KAAK,KACH,EAAA,IAAI;aACA,KAAK,QAAA;aACL,KAAK,QAAA;mBACC,KAAK,QAAA,gBAAwB,KAAK,UAAA;WAC1C,KAAK,OAAA;cALS,EAAA,IAAI,KAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UA5ClB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,OAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,MAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAGjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,YAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CAEnB,EAAA,UAAA,UAAA,IAAA,GAAA,CAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eAzBM,kBAAA,CAAA,CAAkB,EAAA,CAAA,OAAA,eAAA,QAAA,IAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"iframe-BmyHW8km.js","names":[],"sources":["../src/iframe/iframe.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\n/** Sensible document reset for iframe content — font, spacing, word-wrap */\nconst DEFAULT_BASE_CSS = `html,body{margin:0;padding:0;overflow:hidden;background:#fff;color:#1a1a1a;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;line-height:1.6;word-wrap:break-word;overflow-wrap:break-word}\nbody{padding:16px}\np{margin:0 0 1em}p:last-child{margin-bottom:0}\nul,ol{margin:0 0 1em;padding-left:1.5em}li{margin-bottom:.25em}\nh1,h2,h3,h4{margin:0 0 .5em;line-height:1.3}h1{font-size:1.5em}h2{font-size:1.25em}h3{font-size:1.1em}h4{font-size:1em}\nhr{border:none;border-top:1px solid #dadce0;margin:1em 0}\nimg{max-width:100%;height:auto}\ntable{border-collapse:collapse;max-width:100%}td,th{padding:4px 8px;border:1px solid #dadce0}\nblockquote{margin:0 0 1em;padding:.5em 0 .5em 1em;border-left:3px solid #dadce0;color:#5f6368}\npre{background:#f5f5f5;padding:.75em;border-radius:4px;overflow-x:auto;font-size:.9em}\ncode{background:#f5f5f5;padding:.1em .3em;border-radius:3px;font-size:.9em}`\n\n/**\n * Renders an HTML fragment inside a sandboxed, auto-sizing iframe.\n *\n * @slot - (none)\n * @fires load — native iframe load event\n *\n * @example\n * ```html\n * <schmancy-iframe .html=${bodyHtml} .css=${extraStyles}></schmancy-iframe>\n * ```\n */\n@customElement('schmancy-iframe')\nexport default class SchmancyIframe extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n\tiframe {\n\t\tborder: 0;\n\t\twidth: 100%;\n\t}\n`) {\n\t/** HTML body fragment to render inside the iframe */\n\t@property({ type: String }) html = ''\n\n\t/** Additional CSS injected after the base styles (consumer-specific) */\n\t@property({ type: String }) css = ''\n\n\t/** Base document CSS (font, spacing, resets). Override for fully custom styling */\n\t@property({ type: String }) baseCss = DEFAULT_BASE_CSS\n\n\t/** iframe sandbox attribute */\n\t@property({ type: String }) sandbox = 'allow-same-origin allow-popups'\n\n\t/** Minimum height in pixels */\n\t@property({ type: Number }) minHeight = 60\n\n\t@state() private _height = 60\n\tprivate _srcdoc = ''\n\n\tprotected willUpdate(changed: PropertyValues) {\n\t\tif (changed.has('html') || changed.has('css') || changed.has('baseCss')) {\n\t\t\tthis._srcdoc = this.html ? this.buildSrcdoc() : ''\n\t\t\tthis._height = this.minHeight\n\t\t}\n\t}\n\n\tprivate buildSrcdoc(): string {\n\t\tconst styles = this.css ? `${this.baseCss}\\n${this.css}` : this.baseCss\n\t\treturn `<!DOCTYPE html><html><head>\n<meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<base target=\"_blank\">\n<style>${styles}</style></head><body>${this.html}</body></html>`\n\t}\n\n\tprivate onLoad(e: Event) {\n\t\tconst iframe = e.target as HTMLIFrameElement\n\t\ttry {\n\t\t\tconst doc = iframe.contentDocument\n\t\t\tif (!doc) return\n\t\t\tthis._height = Math.max(doc.documentElement.scrollHeight, this.minHeight)\n\t\t} catch {\n\t\t\tthis._height = Math.max(200, this.minHeight)\n\t\t}\n\t}\n\n\tprotected render() {\n\t\tif (!this.html) return html``\n\t\treturn html`<iframe\n\t\t\t.srcdoc=${this._srcdoc}\n\t\t\tsandbox=${this.sandbox}\n\t\t\tstyle=\"height:${this._height}px;min-height:${this.minHeight}px;overflow:hidden\"\n\t\t\t@load=${this.onLoad}\n\t\t></iframe>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-iframe': SchmancyIframe\n\t}\n}\n"],"mappings":";;;;;AAKA,IAwBe,IAAA,cAA6B,EAAgB,CAAG;;;;;;;;;;2BAU3B,IAAA,KAAA,MAGD,IAAA,KAAA,UArCV,27BAAA,KAAA,UA2Cc,kCAAA,KAAA,YAGE,IAAA,KAAA,UAEb,IAAA,KAAA,UACT;;CAElB,WAAqB,GAAA;AAAA,GAChB,EAAQ,IAAI,OAAA,IAAW,EAAQ,IAAI,MAAA,IAAU,EAAQ,IAAI,UAAA,MAC5D,KAAK,UAAU,KAAK,OAAO,KAAK,aAAA,GAAgB,IAChD,KAAK,UAAU,KAAK;;CAItB,cAAA;AAEC,SAAO,0JADQ,KAAK,MAAM,GAAG,KAAK,QAAA,IAAY,KAAK,QAAQ,KAAK,QAAA,uBAI3B,KAAK,KAAA;;CAG3C,OAAe,GAAA;EACd,IAAM,IAAS,EAAE;AACjB,MAAA;GACC,IAAM,IAAM,EAAO;AACnB,OAAA,CAAK,EAAK;AACV,QAAK,UAAU,KAAK,IAAI,EAAI,gBAAgB,cAAc,KAAK,UAAA;UAAA;AAE/D,QAAK,UAAU,KAAK,IAAI,KAAK,KAAK,UAAA;;;CAIpC,SAAA;AACC,SAAK,KAAK,OACH,CAAI;aACA,KAAK,QAAA;aACL,KAAK,QAAA;mBACC,KAAK,QAAA,gBAAwB,KAAK,UAAA;WAC1C,KAAK,OAAA;gBALS,CAAI;;;AAAA,EAAA,CA5C3B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAG1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,OAAA,KAAA,EAAA,EAAA,EAAA,CAG1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAG1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAG1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,aAAA,KAAA,EAAA,EAAA,EAAA,CAE1B,GAAA,CAAA,EAAO,EAAA,WAAA,WAAA,KAAA,EAAA;AAAA,IAAA,IAAA,IAAA,EAAA,CAzBR,EAAc,kBAAA,CAAA,EAAkB,EAAA;AAAA,SAAA,KAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=e=>Array.isArray(e),t=t=>e(t)?t:[t],n=`data-typeit-id`,r=`ti-cursor`,i={started:!1,completed:!1,frozen:!1,destroyed:!1},a={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(e=>({opacity:e})),options:{iterations:1/0,easing:`steps(2, start)`,fill:`forwards`}}},cursorChar:`|`,cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},o=`[${n}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,s=e=>document.createElement(e),c=e=>document.createTextNode(e),l=(e,t=``)=>{let n=s(`style`);n.id=t,n.appendChild(c(e)),document.head.appendChild(n)},u=t=>(e(t)||(t=[t/2,t/2]),t),d=(e,t)=>Math.abs(Math.random()*(e+t-(e-t))+(e-t)),f=e=>e/2,p=e=>Array.from(e),m=e=>([...e.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(c(t),e)}),void e.remove();m(e)}),e),h=e=>{let t=document.implementation.createHTMLDocument();return t.body.innerHTML=e,m(t.body)};function g(e,t=!1,n=!1){let i,a=e.querySelector(`.${r}`),o=document.createTreeWalker(e,NodeFilter.SHOW_ALL,{acceptNode:e=>{if(a&&n){if(e.classList?.contains(r))return NodeFilter.FILTER_ACCEPT;if(a.contains(e))return NodeFilter.FILTER_REJECT}return e.classList?.contains(r)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),s=[];for(;i=o.nextNode();)i.originalParent||=i.parentNode,s.push(i);return t?s.reverse():s}function _(e,t=!0){return t?g(h(e)):p(e).map(c)}var v=({index:e,newIndex:t,queueItems:n,cleanUp:r})=>{for(let i=e+1;i<t+1;i++)r(n[i][0])},y=e=>Number.isInteger(e),b=({queueItems:e,selector:t,cursorPosition:n,to:r})=>{if(y(t))return-1*t;let i=RegExp(`END`,`i`).test(r),a=t?[...e].reverse().findIndex(({char:e})=>{let n=e.parentElement,r=n.matches(t);return!(!i||!r)||r&&n.firstChild.isSameNode(e)}):-1;return a<0&&(a=i?0:e.length-1),a-n+ +!i},x=(e,t)=>Array(t).fill(e),S=e=>new Promise(t=>{requestAnimationFrame(async()=>{t(await e())})}),C=e=>e?.getAnimations().find(t=>t.id===e.dataset.tiAnimationId),w=({cursor:e,frames:t,options:n})=>{let r=e.animate(t,n);return r.pause(),r.id=e.dataset.tiAnimationId,S(()=>{S(()=>{r.play()})}),r},T=e=>e.func?.call(null),E=async({index:e,queueItems:t,wait:n,cursor:r,cursorOptions:i})=>{let a=t[e][1],o=[],s=e,c=a,l=()=>c&&!c.delay,u=a.shouldPauseCursor()&&i.autoPause;for(;l();)o.push(c),l()&&s++,c=t[s]?t[s][1]:null;if(o.length)return await S(async()=>{for(let e of o)await T(e)}),s-1;let d,f=C(r);return f&&(d={...f.effect.getComputedTiming(),delay:u?i.autoPauseDelay:0}),await n(async()=>{f&&u&&f.cancel(),await S(()=>{T(a)})},a.delay),await(({cursor:e,options:t,cursorOptions:n})=>{if(!e||!n)return;let r,i=C(e);i&&(t.delay=i.effect.getComputedTiming().delay,r=i.currentTime,i.cancel());let a=w({cursor:e,frames:n.animation.frames,options:t});return r&&(a.currentTime=r),a})({cursor:r,options:d,cursorOptions:i}),e},D=e=>`value`in e,O=e=>typeof e==`function`?e():e,k=(e,t=document,n=!1)=>t[`querySelector`+(n?`All`:``)](e),A=(e,t)=>Object.assign({},e,t),j={"font-family":``,"font-weight":``,"font-size":``,"font-style":``,"line-height":``,color:``,transform:`translateX(-.125em)`};exports.default=class{element;timeouts;cursorPosition;predictedCursorPosition;statuses={started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1};opts;id;queue;cursor;flushCallback=null;unfreeze=()=>{};constructor(e,n={}){var r;this.opts=A(a,n),this.element=typeof(r=e)==`string`?k(r):r,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=A({},i),this.id=Math.random().toString().substring(2,9),this.queue=function(e){let n=function(e){return t(e).forEach(e=>o.set(Symbol(e.char?.innerText),r({...e}))),this},r=e=>(e.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},e),i=()=>o,a=()=>Array.from(o.values()),o=new Map;return n(e),{add:n,set:function(e,t){let n=[...o.keys()];o.set(n[e],r(t))},wipe:function(){o=new Map,n(e)},done:(e,t=!1)=>t?o.delete(e):o.get(e).done=!0,reset:function(){o.forEach(e=>delete e.done)},destroy:e=>o.delete(e),getItems:(e=!1)=>e?a():a().filter(e=>!e.done),getQueue:i,getTypeable:()=>a().filter(e=>e.typeable),getPendingQueueItems:()=>{let e=[];for(let[,t]of i())t.done||e.push(t);return e}}}([{delay:this.opts.startDelay}]),this.#p(n),this.cursor=this.#h(),this.element.dataset.typeitId=this.id,l(o),this.opts.strings.length&&this.#f()}go(){return this.statuses.started?this:(this.#o(),this.opts.waitUntilVisible?(e=this.element,t=this.#t.bind(this),new IntersectionObserver((n,r)=>{n.forEach(n=>{n.isIntersecting&&(t(),r.unobserve(e))})},{threshold:1}).observe(e),this):(this.#t(),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),O(e)&&this.cursor&&this.#y(this.cursor),this.statuses.destroyed=!0}reset(e){!this.is(`destroyed`)&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let e in this.statuses)this.statuses[e]=!1;return this.element[this.#s()?`value`:`innerHTML`]=``,this}is=function(e){return this.statuses[e]};type(e,t={}){e=O(e);let{instant:n}=t,r=this.#u(t),i=_(e,this.opts.html).map(e=>{return{func:()=>this.#_(e),char:e,delay:n||(t=e,/<(.+)>(.*?)<\/(.+)>/.test(t.outerHTML))?0:this.#b(),typeable:e.nodeType===Node.TEXT_NODE};var t}),a=[r[0],{func:async()=>await this.opts.beforeString(e,this)},...i,{func:async()=>await this.opts.afterString(e,this)},r[1]];return this.#c(a,t)}break(e={}){return this.#c({func:()=>this.#_(s(`BR`)),typeable:!0},e)}move(e,t={}){e=O(e);let n=this.#u(t),{instant:r,to:i}=t,a=b({queueItems:this.queue.getTypeable(),selector:e===null?``:e,to:i,cursorPosition:this.#x}),o=a<0?-1:1;return this.predictedCursorPosition=this.#x+a,this.#c([n[0],...x({func:()=>this.#n(o),delay:r?0:this.#b(),cursorable:!0},Math.abs(a)),n[1]],t)}exec(e,t={}){let n=this.#u(t);return this.#c([n[0],{func:()=>e(this)},n[1]],t)}options(e,t={}){return e=O(e),this.#d(e),this.#c({},t)}pause(e,t={}){return this.#c({delay:O(e)},t)}delete(e=null,t={}){e=O(e);let n=this.#u(t),r=e,{instant:i,to:a}=t,o=this.queue.getTypeable(),s=r===null?o.length:y(r)?r:b({queueItems:o,selector:r,cursorPosition:this.#x,to:a});return this.#c([n[0],...x({func:this.#v.bind(this),delay:i?0:this.#b(1),deletable:!0},s),n[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(this.#o(),this.#t(!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return this.#d(e)}getElement(){return this.element}empty(e={}){return this.#c({func:this.#e.bind(this)},e)}async#e(){this.#s()?this.element.value=``:this.#w.forEach(this.#y.bind(this))}async#t(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=t=>{this.queue.done(t,!e)};try{let n=[...this.queue.getQueue()];for(let e=0;e<n.length;e++){let[r,i]=n[e];if(!i.done){if(!i.deletable||i.deletable&&this.#w.length){let r=await this.#i(e,n);v({index:e,newIndex:r,queueItems:n,cleanUp:t}),e=r}t(r)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw``;let r=this.opts.loopDelay;this.#a(async()=>{await this.#r(r[0]),this.#t()},r[1])}catch{}return this.statuses.firing=!1,this}async#n(e){var t,n,i;this.cursorPosition=(t=e,n=this.cursorPosition,i=this.#w,Math.min(Math.max(n+t,0),i.length)),((e,t,n)=>{let i=t[n-1],a=k(`.${r}`,e);(e=i?.parentNode||e).insertBefore(a,i||null)})(this.element,this.#w,this.cursorPosition)}async#r(e){let t=this.#x;t&&await this.#n({value:t});let n=this.#w.map(e=>[Symbol(),{func:this.#v.bind(this),delay:this.#b(1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let e=0;e<n.length;e++)await this.#i(e,n);this.queue.reset(),this.queue.set(0,{delay:e})}#i(e,t){return E({index:e,queueItems:t,wait:this.#a.bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})}async#a(e,t,n=!1){this.statuses.frozen&&await new Promise(e=>{this.unfreeze=()=>{this.statuses.frozen=!1,e()}}),n||await this.opts.beforeStep(this),await((e,t,n)=>new Promise(r=>{n.push(setTimeout(async()=>{await e(),r()},t||0))}))(e,t,this.timeouts),n||await this.opts.afterStep(this)}async#o(){if(!this.#s()&&this.cursor&&this.element.appendChild(this.cursor),this.#C){((e,t)=>{let i=`[${n}='${e}'] .${r}`,a=getComputedStyle(t);l(`${i} { display: inline-block; width: 0; ${Object.entries(j).reduce((e,[t,n])=>`${e} ${t}: var(--ti-cursor-${t}, ${n||a[t]});`,``)} }`,e)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:i}=e;w({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...i}})}}#s(){return D(this.element)}#c(e,t){return this.queue.add(e),this.#l(t),this}#l(e={}){let t=e.delay;t&&this.queue.add({delay:t})}#u(e={}){return[{func:()=>this.#d(e)},{func:()=>this.#d(this.opts)}]}async#d(e){this.opts=A(this.opts,e)}#f(){let e=this.opts.strings.filter(e=>!!e);e.forEach((t,n)=>{if(this.type(t),n+1===e.length)return;let r=this.opts.breakLines?[{func:()=>this.#_(s(`BR`)),typeable:!0}]:x({func:this.#v.bind(this),delay:this.#b(1)},this.queue.getTypeable().length);this.#g(r)})}#p=e=>{this.opts.cursor=(e=>{if(typeof e==`object`){let t={},{frames:n,options:r}=a.cursor.animation;return t.animation=e.animation||{},t.animation.frames=e.animation?.frames||n,t.animation.options=A(r,e.animation?.options||{}),t.autoPause=e.autoPause??a.cursor.autoPause,t.autoPauseDelay=e.autoPauseDelay||a.cursor.autoPauseDelay,t}return!0===e?a.cursor:e})(e.cursor??a.cursor),this.opts.strings=this.#m(t(this.opts.strings)),this.opts=A(this.opts,{html:!this.#S&&this.opts.html,nextStringDelay:u(this.opts.nextStringDelay),loopDelay:u(this.opts.loopDelay)})};#m(e){let t=this.element.innerHTML;return t?(this.element.innerHTML=``,this.opts.startDelete?(this.element.innerHTML=t,m(this.element),this.#g(x({func:this.#v.bind(this),delay:this.#b(1),deletable:!0},this.#w.length)),e):(n=t,n.replace(/<!--(.+?)-->/g,``).trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var n}#h(){if(this.#S)return null;let e=s(`span`);return e.className=r,this.#C?(e.innerHTML=h(this.opts.cursorChar).innerHTML,e):(e.style.visibility=`hidden`,e)}#g(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])}#_(e){((e,t)=>{if(D(e))return void(e.value=`${e.value}${t.textContent}`);t.innerHTML=``;let n=(i=t.originalParent,/body/i.test(i?.tagName)?e:t.originalParent||e);var i;let a=k(`.`+r,n)||null;a&&a.parentElement!==n&&(n=a.parentElement),n.insertBefore(t,a)})(this.element,e)}#v(){this.#w.length&&(this.#S?this.element.value=this.element.value.slice(0,-1):this.#y(this.#w[this.cursorPosition]))}#y(e){((e,t)=>{if(!e)return;let n=e.parentNode;(n.childNodes.length>1||n.isSameNode(t)?e:n).remove()})(e,this.element)}#b(e=0){return function(e){let{speed:t,deleteSpeed:n,lifeLike:r}=e;return n=n===null?t/3:n,r?[d(t,f(t)),d(n,f(n))]:[t,n]}(this.opts)[e]}get#x(){return this.predictedCursorPosition??this.cursorPosition}get#S(){return D(this.element)}get#C(){return!!this.opts.cursor&&!this.#S}get#w(){return e=this.element,D(e)?p(e.value):g(e,!0).filter(e=>!(e.childNodes.length>0));var e}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.es-BgmFX1JM.cjs","names":["#buildOptions","#setUpCursor","#generateQueue","#attachCursor","#fire","#removeNode","#elementIsInput","#generateTemporaryOptionQueueItems","#type","#getPace","#queueAndReturn","#derivedCursorPosition","#move","#updateOptions","#delete","#empty","#allChars","#fireItemWithContext","#wait","#prepLoop","#shouldRenderCursor","#maybeAppendPause","#addSplitPause","#prependHardcodedStrings","#isInput"],"sources":["../node_modules/typeit/dist/index.es.js"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nconst isArray = (thing) => Array.isArray(thing);\n\nconst asArray = (value) => isArray(value) ? value : [value];\n\nlet Queue = function(initialItems) {\n let add = function(steps) {\n asArray(steps).forEach((step) => {\n return _q.set(Symbol(step.char?.innerText), buildQueueItem({ ...step }));\n });\n return this;\n };\n let getTypeable = () => rawValues().filter((value) => value.typeable);\n let set = function(index, item) {\n let keys = [..._q.keys()];\n _q.set(keys[index], buildQueueItem(item));\n };\n let buildQueueItem = (queueItem) => {\n queueItem.shouldPauseCursor = function() {\n return Boolean(this.typeable || this.cursorable || this.deletable);\n };\n return queueItem;\n };\n let reset = function() {\n _q.forEach((item) => delete item.done);\n };\n let wipe = function() {\n _q = /* @__PURE__ */ new Map();\n add(initialItems);\n };\n let getQueue = () => _q;\n let rawValues = () => Array.from(_q.values());\n let destroy = (key) => _q.delete(key);\n let getPendingQueueItems = () => {\n const pending = [];\n for (let [, value] of getQueue()) {\n if (!value.done) {\n pending.push(value);\n }\n }\n return pending;\n };\n let getItems = (all = false) => all ? rawValues() : rawValues().filter((i) => !i.done);\n let done = (key, shouldDestroy = false) => shouldDestroy ? _q.delete(key) : _q.get(key).done = true;\n let _q = /* @__PURE__ */ new Map();\n add(initialItems);\n return {\n add,\n set,\n wipe,\n done,\n reset,\n destroy,\n getItems,\n getQueue,\n getTypeable,\n getPendingQueueItems\n };\n};\n\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: {\n autoPause: true,\n autoPauseDelay: 500,\n animation: {\n frames: [0, 0, 1].map((n) => {\n return { opacity: n };\n }),\n options: {\n iterations: Infinity,\n easing: \"steps(2, start)\",\n fill: \"forwards\"\n }\n }\n },\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nconst PLACEHOLDER_CSS = `[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;\n\nconst createElement = (el) => document.createElement(el);\n\nconst createTextNode = (content) => document.createTextNode(content);\n\nconst appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nconst calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\n\nconst randomInRange = (value, range) => {\n return Math.abs(\n Math.random() * (value + range - (value - range)) + (value - range)\n );\n};\n\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\n\nconst toArray = (val) => Array.from(val);\n\nlet expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\n\nconst getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\n\nfunction walkElementNodes(element, shouldReverse = false, shouldIncludeCursor = false) {\n let cursor = element.querySelector(`.${CURSOR_CLASS}`);\n let walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n if (cursor && shouldIncludeCursor) {\n if (node.classList?.contains(CURSOR_CLASS)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n if (cursor.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return node.classList?.contains(CURSOR_CLASS) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n if (!nextNode.originalParent) {\n nextNode.originalParent = nextNode.parentNode;\n }\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\n\nconst cleanUpSkipped = ({\n index,\n newIndex,\n queueItems,\n cleanUp\n}) => {\n for (let i = index + 1; i < newIndex + 1; i++) {\n cleanUp(queueItems[i][0]);\n }\n};\n\nconst isNumber = (value) => Number.isInteger(value);\n\nconst countStepsToSelector = ({\n queueItems,\n selector,\n cursorPosition,\n to\n}) => {\n if (isNumber(selector)) {\n return selector * -1;\n }\n let isMovingToEnd = new RegExp(END, \"i\").test(to);\n let selectorIndex = selector ? [...queueItems].reverse().findIndex(({ char }) => {\n let parentElement = char.parentElement;\n let parentMatches = parentElement.matches(selector);\n if (isMovingToEnd && parentMatches) {\n return true;\n }\n return parentMatches && parentElement.firstChild.isSameNode(char);\n }) : -1;\n if (selectorIndex < 0) {\n selectorIndex = isMovingToEnd ? 0 : queueItems.length - 1;\n }\n let offset = isMovingToEnd ? 0 : 1;\n return selectorIndex - cursorPosition + offset;\n};\n\nconst destroyTimeouts = (timeouts) => {\n timeouts.forEach(clearTimeout);\n return [];\n};\n\nconst duplicate = (value, times) => new Array(times).fill(value);\n\nlet beforePaint = (cb) => {\n return new Promise((resolve) => {\n requestAnimationFrame(async () => {\n resolve(await cb());\n });\n });\n};\n\nlet getAnimationFromElement = (element) => {\n return element?.getAnimations().find((animation) => {\n return animation.id === element.dataset.tiAnimationId;\n });\n};\n\nlet setCursorAnimation = ({\n cursor,\n frames,\n options\n}) => {\n let animation = cursor.animate(frames, options);\n animation.pause();\n animation.id = cursor.dataset.tiAnimationId;\n beforePaint(() => {\n beforePaint(() => {\n animation.play();\n });\n });\n return animation;\n};\n\nlet rebuildCursorAnimation = ({\n cursor,\n options,\n cursorOptions\n}) => {\n if (!cursor || !cursorOptions) return;\n let animation = getAnimationFromElement(cursor);\n let oldCurrentTime;\n if (animation) {\n options.delay = animation.effect.getComputedTiming().delay;\n oldCurrentTime = animation.currentTime;\n animation.cancel();\n }\n let newAnimation = setCursorAnimation({\n cursor,\n frames: cursorOptions.animation.frames,\n options\n });\n if (oldCurrentTime) {\n newAnimation.currentTime = oldCurrentTime;\n }\n return newAnimation;\n};\n\nlet execute = (queueItem) => queueItem.func?.call(null);\nlet fireItem = async ({\n index,\n queueItems,\n wait,\n cursor,\n cursorOptions\n}) => {\n let queueItem = queueItems[index][1];\n let instantQueue = [];\n let tempIndex = index;\n let futureItem = queueItem;\n let shouldBeGrouped = () => futureItem && !futureItem.delay;\n let shouldPauseCursor = queueItem.shouldPauseCursor() && cursorOptions.autoPause;\n while (shouldBeGrouped()) {\n instantQueue.push(futureItem);\n shouldBeGrouped() && tempIndex++;\n futureItem = queueItems[tempIndex] ? queueItems[tempIndex][1] : null;\n }\n if (instantQueue.length) {\n await beforePaint(async () => {\n for (let q of instantQueue) {\n await execute(q);\n }\n });\n return tempIndex - 1;\n }\n let animation = getAnimationFromElement(cursor);\n let options;\n if (animation) {\n options = {\n ...animation.effect.getComputedTiming(),\n delay: shouldPauseCursor ? cursorOptions.autoPauseDelay : 0\n };\n }\n await wait(async () => {\n if (animation && shouldPauseCursor) {\n animation.cancel();\n }\n await beforePaint(() => {\n execute(queueItem);\n });\n }, queueItem.delay);\n await rebuildCursorAnimation({\n cursor,\n options,\n cursorOptions\n });\n return index;\n};\n\nconst fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver(\n (entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n },\n { threshold: 1 }\n );\n observer.observe(element);\n};\n\nconst generateHash = () => Math.random().toString().substring(2, 9);\n\nconst isInput = (el) => {\n return \"value\" in el;\n};\n\nlet getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter(\n (c) => !(c.childNodes.length > 0)\n );\n};\n\nlet handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\n\nlet select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\n\nlet isBodyElement = (node) => /body/i.test(node?.tagName);\n\nlet insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : (\n // If we add one-off fresh elements, there will be no\n // \"originalParent\", so always fall back to the default target.\n character.originalParent || originalTarget\n );\n let cursorNode = select(\".\" + CURSOR_CLASS, target) || null;\n if (cursorNode && cursorNode.parentElement !== target) {\n target = cursorNode.parentElement;\n }\n target.insertBefore(character, cursorNode);\n};\n\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\n\nconst merge = (originalObj, newObj) => Object.assign({}, originalObj, newObj);\n\nlet processCursorOptions = (cursorOptions) => {\n if (typeof cursorOptions === \"object\") {\n let newOptions = {};\n let { frames: defaultFrames, options: defaultOptions } = DEFAULT_OPTIONS.cursor.animation;\n newOptions.animation = cursorOptions.animation || {};\n newOptions.animation.frames = cursorOptions.animation?.frames || defaultFrames;\n newOptions.animation.options = merge(\n defaultOptions,\n cursorOptions.animation?.options || {}\n );\n newOptions.autoPause = cursorOptions.autoPause ?? DEFAULT_OPTIONS.cursor.autoPause;\n newOptions.autoPauseDelay = cursorOptions.autoPauseDelay || DEFAULT_OPTIONS.cursor.autoPauseDelay;\n return newOptions;\n }\n if (cursorOptions === true) {\n return DEFAULT_OPTIONS.cursor;\n }\n return cursorOptions;\n};\n\nconst removeNode = (node, rootElement) => {\n if (!node) return;\n let nodeParent = node.parentNode;\n let nodeToRemove = nodeParent.childNodes.length > 1 || nodeParent.isSameNode(rootElement) ? (\n // This parent still needs to exist.\n node\n ) : (\n // There's nothing else in there, so just delete the entire thing.\n // By doing this, we clean up markup as we go along.\n nodeParent\n );\n nodeToRemove.remove();\n};\n\nconst repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = nodeToInsertBefore?.parentNode || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\n\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\n\nlet cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n transform: \"translateX(-.125em)\"\n};\nlet setCursorStyles = (id, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce(\n (accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n },\n \"\"\n );\n appendStyleBlock(\n `${cursorSelector} { display: inline-block; width: 0; ${customProperties} }`,\n id\n );\n};\n\nfunction splitOnBreak(str) {\n return str.replace(/<!--(.+?)-->/g, \"\").trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n}\n\nlet updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(\n Math.max(cursorPosition + steps, 0),\n printedCharacters.length\n );\n};\n\nlet wait = (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n let cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay || 0));\n });\n};\n\nclass TypeIt {\n element;\n timeouts;\n cursorPosition;\n predictedCursorPosition;\n statuses = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false,\n firing: false\n };\n opts;\n id;\n queue;\n cursor;\n flushCallback = null;\n unfreeze = () => {\n };\n constructor(element, options = {}) {\n this.opts = merge(DEFAULT_OPTIONS, options);\n this.element = selectorToElement(element);\n this.timeouts = [];\n this.cursorPosition = 0;\n this.unfreeze = () => {\n };\n this.predictedCursorPosition = null;\n this.statuses = merge({}, DEFAULT_STATUSES);\n this.id = generateHash();\n this.queue = Queue([{ delay: this.opts.startDelay }]);\n this.#buildOptions(options);\n this.cursor = this.#setUpCursor();\n this.element.dataset.typeitId = this.id;\n appendStyleBlock(PLACEHOLDER_CSS);\n if (this.opts.strings.length) {\n this.#generateQueue();\n }\n }\n /**\n * Can only be called once.\n */\n go() {\n if (this.statuses.started) {\n return this;\n }\n this.#attachCursor();\n if (!this.opts.waitUntilVisible) {\n this.#fire();\n return this;\n }\n fireWhenVisible(this.element, this.#fire.bind(this));\n return this;\n }\n destroy(shouldRemoveCursor = true) {\n this.timeouts = destroyTimeouts(this.timeouts);\n handleFunctionalArg(shouldRemoveCursor) && this.cursor && this.#removeNode(this.cursor);\n this.statuses.destroyed = true;\n }\n reset(rebuild) {\n !this.is(\"destroyed\") && this.destroy();\n if (rebuild) {\n this.queue.wipe();\n rebuild(this);\n } else {\n this.queue.reset();\n }\n this.cursorPosition = 0;\n for (let property in this.statuses) {\n this.statuses[property] = false;\n }\n this.element[this.#elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n }\n is = function(key) {\n return this.statuses[key];\n };\n type(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let { instant } = actionOpts;\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, this.opts.html);\n let charsAsQueueItems = chars.map((char) => {\n return {\n func: () => this.#type(char),\n char,\n delay: instant || isNonVoidElement(char) ? 0 : this.#getPace(),\n typeable: char.nodeType === Node.TEXT_NODE\n };\n });\n let itemsToQueue = [\n bookEndQueueItems[0],\n { func: async () => await this.opts.beforeString(string, this) },\n ...charsAsQueueItems,\n { func: async () => await this.opts.afterString(string, this) },\n bookEndQueueItems[1]\n ];\n return this.#queueAndReturn(itemsToQueue, actionOpts);\n }\n break(actionOpts = {}) {\n return this.#queueAndReturn(\n {\n func: () => this.#type(createElement(\"BR\")),\n typeable: true\n },\n actionOpts\n );\n }\n move(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let numberOfSteps = countStepsToSelector({\n queueItems: this.queue.getTypeable(),\n selector: movementArg === null ? \"\" : movementArg,\n to,\n cursorPosition: this.#derivedCursorPosition\n });\n let directionalStep = numberOfSteps < 0 ? -1 : 1;\n this.predictedCursorPosition = this.#derivedCursorPosition + numberOfSteps;\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: () => this.#move(directionalStep),\n delay: instant ? 0 : this.#getPace(),\n cursorable: true\n },\n Math.abs(numberOfSteps)\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n exec(func, actionOpts = {}) {\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n return this.#queueAndReturn(\n [bookEndQueueItems[0], { func: () => func(this) }, bookEndQueueItems[1]],\n actionOpts\n );\n }\n options(opts, actionOpts = {}) {\n opts = handleFunctionalArg(opts);\n this.#updateOptions(opts);\n return this.#queueAndReturn({}, actionOpts);\n }\n pause(milliseconds, actionOpts = {}) {\n return this.#queueAndReturn(\n { delay: handleFunctionalArg(milliseconds) },\n actionOpts\n );\n }\n delete(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n let typeableQueueItems = this.queue.getTypeable();\n let rounds = (() => {\n if (num === null) {\n return typeableQueueItems.length;\n }\n if (isNumber(num)) {\n return num;\n }\n return countStepsToSelector({\n queueItems: typeableQueueItems,\n selector: num,\n cursorPosition: this.#derivedCursorPosition,\n to\n });\n })();\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: this.#delete.bind(this),\n delay: instant ? 0 : this.#getPace(1),\n deletable: true\n },\n rounds\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n freeze() {\n this.statuses.frozen = true;\n }\n /**\n * Like `.go()`, but more... \"off the grid.\"\n *\n * - won't trigger `afterComplete` callback\n * - items won't be replayed after `.reset()`\n *\n * When called, all non-done items will be \"flushed\" --\n * that is, executed, but not remembered.\n */\n flush(cb = null) {\n this.flushCallback = cb || this.flushCallback;\n if (this.statuses.firing) {\n return this;\n }\n this.#attachCursor();\n this.#fire(false).then(() => {\n if (this.queue.getPendingQueueItems().length > 0) {\n return this.flush();\n }\n this.flushCallback();\n this.flushCallback = null;\n });\n return this;\n }\n getQueue() {\n return this.queue;\n }\n getOptions() {\n return this.opts;\n }\n updateOptions(options) {\n return this.#updateOptions(options);\n }\n getElement() {\n return this.element;\n }\n empty(actionOpts = {}) {\n return this.#queueAndReturn({ func: this.#empty.bind(this) }, actionOpts);\n }\n async #empty() {\n if (this.#elementIsInput()) {\n this.element.value = \"\";\n return;\n }\n this.#allChars.forEach(this.#removeNode.bind(this));\n return;\n }\n /**\n * Execute items in the queue.\n *\n * @param remember If false, each queue item will be destroyed once executed.\n * @returns\n */\n async #fire(remember = true) {\n this.statuses.started = true;\n this.statuses.firing = true;\n let cleanUp = (qKey) => {\n this.queue.done(qKey, !remember);\n };\n try {\n let queueItems = [...this.queue.getQueue()];\n for (let index = 0; index < queueItems.length; index++) {\n let [queueKey, queueItem] = queueItems[index];\n if (queueItem.done) continue;\n if (!queueItem.deletable || queueItem.deletable && this.#allChars.length) {\n let newIndex = await this.#fireItemWithContext(index, queueItems);\n cleanUpSkipped({\n index,\n newIndex,\n queueItems,\n cleanUp\n });\n index = newIndex;\n }\n cleanUp(queueKey);\n }\n if (!remember) {\n this.statuses.firing = false;\n return this;\n }\n this.statuses.completed = true;\n this.statuses.firing = false;\n await this.opts.afterComplete(this);\n if (!this.opts.loop) {\n throw \"\";\n }\n let delay = this.opts.loopDelay;\n this.#wait(async () => {\n await this.#prepLoop(delay[0]);\n this.#fire();\n }, delay[1]);\n } catch (e) {\n }\n this.statuses.firing = false;\n return this;\n }\n async #move(step) {\n this.cursorPosition = updateCursorPosition(\n step,\n this.cursorPosition,\n this.#allChars\n );\n repositionCursor(this.element, this.#allChars, this.cursorPosition);\n }\n /**\n * 1. Reset queue.\n * 2. Reset initial pause.\n */\n async #prepLoop(delay) {\n let derivedCursorPosition = this.#derivedCursorPosition;\n derivedCursorPosition && await this.#move({ value: derivedCursorPosition });\n let queueItems = this.#allChars.map((c) => {\n return [\n Symbol(),\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true,\n shouldPauseCursor: () => true\n }\n ];\n });\n for (let index = 0; index < queueItems.length; index++) {\n await this.#fireItemWithContext(index, queueItems);\n }\n this.queue.reset();\n this.queue.set(0, { delay });\n }\n #fireItemWithContext(index, queueItems) {\n return fireItem({\n index,\n queueItems,\n wait: this.#wait.bind(this),\n cursor: this.cursor,\n cursorOptions: this.opts.cursor\n });\n }\n async #wait(callback, delay, silent = false) {\n if (this.statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n this.statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await this.opts.beforeStep(this);\n await wait(callback, delay, this.timeouts);\n silent || await this.opts.afterStep(this);\n }\n /**\n * Attach it to the DOM so, along with the required CSS transition.\n */\n async #attachCursor() {\n !this.#elementIsInput() && this.cursor && this.element.appendChild(this.cursor);\n if (this.#shouldRenderCursor) {\n setCursorStyles(this.id, this.element);\n this.cursor.dataset.tiAnimationId = this.id;\n let { animation } = this.opts.cursor;\n let { frames, options } = animation;\n setCursorAnimation({\n frames,\n cursor: this.cursor,\n options: {\n duration: this.opts.cursorSpeed,\n ...options\n }\n });\n }\n }\n #elementIsInput() {\n return isInput(this.element);\n }\n #queueAndReturn(steps, opts) {\n this.queue.add(steps);\n this.#maybeAppendPause(opts);\n return this;\n }\n #maybeAppendPause(opts = {}) {\n let delay = opts.delay;\n delay && this.queue.add({ delay });\n }\n #generateTemporaryOptionQueueItems(newOptions = {}) {\n return [\n { func: () => this.#updateOptions(newOptions) },\n { func: () => this.#updateOptions(this.opts) }\n ];\n }\n async #updateOptions(opts) {\n this.opts = merge(this.opts, opts);\n }\n /**\n * Based on provided strings, generate a TypeIt queue\n * to be fired for each character in the string.\n */\n #generateQueue() {\n let strings = this.opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n this.type(string);\n if (index + 1 === strings.length) {\n return;\n }\n let splitItems = this.opts.breakLines ? [{ func: () => this.#type(createElement(\"BR\")), typeable: true }] : duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1)\n },\n this.queue.getTypeable().length\n );\n this.#addSplitPause(splitItems);\n });\n }\n #buildOptions = (options) => {\n this.opts.cursor = processCursorOptions(\n options.cursor ?? DEFAULT_OPTIONS.cursor\n );\n this.opts.strings = this.#prependHardcodedStrings(\n asArray(this.opts.strings)\n );\n this.opts = merge(this.opts, {\n html: !this.#isInput && this.opts.html,\n nextStringDelay: calculateDelay(this.opts.nextStringDelay),\n loopDelay: calculateDelay(this.opts.loopDelay)\n });\n };\n #prependHardcodedStrings(strings) {\n let existingMarkup = this.element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n this.element.innerHTML = \"\";\n if (this.opts.startDelete) {\n this.element.innerHTML = existingMarkup;\n expandTextNodes(this.element);\n this.#addSplitPause(\n duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true\n },\n this.#allChars.length\n )\n );\n return strings;\n }\n return splitOnBreak(existingMarkup).concat(strings);\n }\n /**\n * Provided it's a non-form element and the options is provided,\n * set up the cursor element for the animation.\n */\n #setUpCursor() {\n if (this.#isInput) {\n return null;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!this.#shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(this.opts.cursorChar).innerHTML;\n return cursor;\n }\n #addSplitPause(items) {\n let delay = this.opts.nextStringDelay;\n this.queue.add([{ delay: delay[0] }, ...items, { delay: delay[1] }]);\n }\n #type(char) {\n insertIntoElement(this.element, char);\n }\n #delete() {\n if (!this.#allChars.length) return;\n if (this.#isInput) {\n this.element.value = this.element.value.slice(0, -1);\n } else {\n this.#removeNode(this.#allChars[this.cursorPosition]);\n }\n }\n #removeNode(node) {\n removeNode(node, this.element);\n }\n #getPace(index = 0) {\n return calculatePace(this.opts)[index];\n }\n get #derivedCursorPosition() {\n return this.predictedCursorPosition ?? this.cursorPosition;\n }\n get #isInput() {\n return isInput(this.element);\n }\n get #shouldRenderCursor() {\n return !!this.opts.cursor && !this.#isInput;\n }\n get #allChars() {\n return getAllChars(this.element);\n }\n}\n\nexport { TypeIt as default };\n"],"x_google_ignoreList":[0],"mappings":"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"}
|