@mhmo91/schmancy 0.4.24 → 0.4.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/sheet.md +87 -25
- package/dist/ai/sheet.md +87 -25
- package/dist/{animated-text-DcLpvyCq.js → animated-text-AbNgT7ie.js} +3 -3
- package/dist/{animated-text-DcLpvyCq.js.map → animated-text-AbNgT7ie.js.map} +1 -1
- package/dist/{animated-text-BitOmeE1.cjs → animated-text-CYmUxmlv.cjs} +2 -2
- package/dist/{animated-text-BitOmeE1.cjs.map → animated-text-CYmUxmlv.cjs.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-BTLn3oIv.cjs → area.component-B1Lmmsuk.cjs} +2 -2
- package/dist/{area.component-BTLn3oIv.cjs.map → area.component-B1Lmmsuk.cjs.map} +1 -1
- package/dist/{area.component-xbNRrst9.js → area.component-BxrgxiLv.js} +3 -3
- package/dist/{area.component-xbNRrst9.js.map → area.component-BxrgxiLv.js.map} +1 -1
- package/dist/area.js +2 -2
- package/dist/{autocomplete-BqRrw118.js → autocomplete-Bx1vWN32.js} +3 -3
- package/dist/{autocomplete-BqRrw118.js.map → autocomplete-Bx1vWN32.js.map} +1 -1
- package/dist/{autocomplete-Dvc06UNM.cjs → autocomplete-ClTDM1cy.cjs} +2 -2
- package/dist/{autocomplete-Dvc06UNM.cjs.map → autocomplete-ClTDM1cy.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-CP5pbPbp.cjs → avatar-0h3VHdWs.cjs} +2 -2
- package/dist/{avatar-CP5pbPbp.cjs.map → avatar-0h3VHdWs.cjs.map} +1 -1
- package/dist/{avatar-Cb_cbT8R.js → avatar-C5iIJlD9.js} +46 -46
- package/dist/{avatar-Cb_cbT8R.js.map → avatar-C5iIJlD9.js.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-Dtum9CaN.cjs → boat--6fKaS1r.cjs} +2 -2
- package/dist/{boat-Dtum9CaN.cjs.map → boat--6fKaS1r.cjs.map} +1 -1
- package/dist/{boat-ByFTBKD2.js → boat-vVWqUMYt.js} +2 -2
- package/dist/{boat-ByFTBKD2.js.map → boat-vVWqUMYt.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-Dq0Lm3AM.js → checkbox-91xSd_El.js} +5 -5
- package/dist/{checkbox-Dq0Lm3AM.js.map → checkbox-91xSd_El.js.map} +1 -1
- package/dist/{checkbox-220X9LTx.cjs → checkbox-CcKQi7Hq.cjs} +2 -2
- package/dist/{checkbox-220X9LTx.cjs.map → checkbox-CcKQi7Hq.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-aRU1fwEV.js → chips-D26R6u7T.js} +3 -3
- package/dist/{chips-aRU1fwEV.js.map → chips-D26R6u7T.js.map} +1 -1
- package/dist/{chips-jORxgpG7.cjs → chips-Duj_48dP.cjs} +2 -2
- package/dist/{chips-jORxgpG7.cjs.map → chips-Duj_48dP.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-Dis30LMa.js → circular-progress-BAzvWUr0.js} +3 -3
- package/dist/{circular-progress-Dis30LMa.js.map → circular-progress-BAzvWUr0.js.map} +1 -1
- package/dist/{circular-progress-DMccmWrI.cjs → circular-progress-CeiF8CYP.cjs} +2 -2
- package/dist/{circular-progress-DMccmWrI.cjs.map → circular-progress-CeiF8CYP.cjs.map} +1 -1
- package/dist/circular-progress.cjs +1 -1
- package/dist/circular-progress.js +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-CCHcWZvS.cjs → code-preview-BCUSwkuU.cjs} +13 -13
- package/dist/{code-preview-CCHcWZvS.cjs.map → code-preview-BCUSwkuU.cjs.map} +1 -1
- package/dist/{code-preview-BwIb73Yd.js → code-preview-kNXSixdo.js} +333 -331
- package/dist/{code-preview-BwIb73Yd.js.map → code-preview-kNXSixdo.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/consume-5D1qfVWM.js.map +1 -1
- package/dist/consume-edta5ng5.cjs.map +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/context-object-CDDP4bTk.js.map +1 -1
- package/dist/context-object-K_1gDFu-.cjs.map +1 -1
- package/dist/{date-range-DinaPWK0.cjs → date-range-CBrZ7Pm6.cjs} +2 -2
- package/dist/{date-range-DinaPWK0.cjs.map → date-range-CBrZ7Pm6.cjs.map} +1 -1
- package/dist/{date-range-CA_4vjWe.js → date-range-gp2cu49l.js} +3 -3
- package/dist/{date-range-CA_4vjWe.js.map → date-range-gp2cu49l.js.map} +1 -1
- package/dist/{date-range-inline-DFjyAvPv.js → date-range-inline-DZwtgeXX.js} +3 -3
- package/dist/{date-range-inline-DFjyAvPv.js.map → date-range-inline-DZwtgeXX.js.map} +1 -1
- package/dist/{date-range-inline-CGMvaSeh.cjs → date-range-inline-ZPM9dCG1.cjs} +2 -2
- package/dist/{date-range-inline-CGMvaSeh.cjs.map → date-range-inline-ZPM9dCG1.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-CHAH30wI.cjs → delay-CUpeZtD8.cjs} +2 -2
- package/dist/{delay-CHAH30wI.cjs.map → delay-CUpeZtD8.cjs.map} +1 -1
- package/dist/{delay-BJwsHbg3.js → delay-CYxt2x_w.js} +2 -2
- package/dist/{delay-BJwsHbg3.js.map → delay-CYxt2x_w.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-Bp2kwzxD.cjs → dialog-content-Cz2MP3fS.cjs} +2 -2
- package/dist/{dialog-content-Bp2kwzxD.cjs.map → dialog-content-Cz2MP3fS.cjs.map} +1 -1
- package/dist/{dialog-content-CEZqJRzH.js → dialog-content-DmUr4jZM.js} +3 -3
- package/dist/{dialog-content-CEZqJRzH.js.map → dialog-content-DmUr4jZM.js.map} +1 -1
- package/dist/dialog-service-BZZK8N6A.cjs.map +1 -1
- package/dist/dialog-service-DFMlRcXf.js.map +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-DfetUf4S.js → divider-BreFKYh2.js} +3 -3
- package/dist/{divider-DfetUf4S.js.map → divider-BreFKYh2.js.map} +1 -1
- package/dist/{divider-BEVgt1wl.cjs → divider-Cd5pOeZr.cjs} +2 -2
- package/dist/{divider-BEVgt1wl.cjs.map → divider-Cd5pOeZr.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-TJmZ3rpA.js → dropdown-content-DjIvlBvq.js} +3 -3
- package/dist/{dropdown-content-TJmZ3rpA.js.map → dropdown-content-DjIvlBvq.js.map} +1 -1
- package/dist/{dropdown-content-CERnSXjI.cjs → dropdown-content-zLE8scWl.cjs} +2 -2
- package/dist/{dropdown-content-CERnSXjI.cjs.map → dropdown-content-zLE8scWl.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-ByanQCYb.cjs → flex-CEq4v4cK.cjs} +2 -2
- package/dist/{flex-ByanQCYb.cjs.map → flex-CEq4v4cK.cjs.map} +1 -1
- package/dist/{flex-CXMNh-nH.js → flex-DRvBt9P0.js} +2 -2
- package/dist/{flex-CXMNh-nH.js.map → flex-DRvBt9P0.js.map} +1 -1
- package/dist/flow-D0e7hGXO.cjs.map +1 -1
- package/dist/flow-DXYqC9OA.js.map +1 -1
- package/dist/{form-lhQx_Ry0.cjs → form-B5CAbB2i.cjs} +2 -2
- package/dist/{form-lhQx_Ry0.cjs.map → form-B5CAbB2i.cjs.map} +1 -1
- package/dist/{form-Boc5Pqhf.js → form-BKqz7W6V.js} +2 -2
- package/dist/{form-Boc5Pqhf.js.map → form-BKqz7W6V.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-DhiLSVHT.cjs → formField.mixin-BuKEbib1.cjs} +2 -2
- package/dist/{formField.mixin-DhiLSVHT.cjs.map → formField.mixin-BuKEbib1.cjs.map} +1 -1
- package/dist/{formField.mixin-CX7_nvVy.js → formField.mixin-DCPfsyya.js} +2 -2
- package/dist/{formField.mixin-CX7_nvVy.js.map → formField.mixin-DCPfsyya.js.map} +1 -1
- package/dist/{icon-D1qw18N6.cjs → icon-B0_pMF_-.cjs} +2 -2
- package/dist/{icon-D1qw18N6.cjs.map → icon-B0_pMF_-.cjs.map} +1 -1
- package/dist/{icon-BZw88sCH.js → icon-DA0eDV8w.js} +2 -2
- package/dist/{icon-BZw88sCH.js.map → icon-DA0eDV8w.js.map} +1 -1
- package/dist/{icon-button-TbwQrO1b.js → icon-button-CEnel9Yg.js} +3 -3
- package/dist/{icon-button-TbwQrO1b.js.map → icon-button-CEnel9Yg.js.map} +1 -1
- package/dist/{icon-button-DBvZApEC.cjs → icon-button-DFVuusoz.cjs} +2 -2
- package/dist/{icon-button-DBvZApEC.cjs.map → icon-button-DFVuusoz.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index-CuY8m6ta.js.map +1 -1
- package/dist/index-DyJ0oDpR.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +133 -134
- package/dist/{input-BUtEXu3y.js → input-B7Q3RRwE.js} +3 -3
- package/dist/{input-BUtEXu3y.js.map → input-B7Q3RRwE.js.map} +1 -1
- package/dist/{input-C0F9cNoD.cjs → input-C4tYxk-t.cjs} +2 -2
- package/dist/{input-C0F9cNoD.cjs.map → input-C4tYxk-t.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/intersection-CJxzz8c-.js.map +1 -1
- package/dist/intersection-CVvaDv96.cjs.map +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-BCD8h2Do.js → list-BTm67LuV.js} +2 -2
- package/dist/{list-BCD8h2Do.js.map → list-BTm67LuV.js.map} +1 -1
- package/dist/{list-Bz6tq7ZP.cjs → list-Bos26fD3.cjs} +2 -2
- package/dist/{list-Bz6tq7ZP.cjs.map → list-Bos26fD3.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-DGeprHKB.js → litElement.mixin-Cn8IAazz.js} +2 -2
- package/dist/{litElement.mixin-DGeprHKB.js.map → litElement.mixin-Cn8IAazz.js.map} +1 -1
- package/dist/{litElement.mixin-CII9bbap.cjs → litElement.mixin-Cs3zx2X6.cjs} +2 -2
- package/dist/{litElement.mixin-CII9bbap.cjs.map → litElement.mixin-Cs3zx2X6.cjs.map} +1 -1
- package/dist/{media-D6ba0wB1.js → media-DPQecp4W.js} +2 -2
- package/dist/{media-D6ba0wB1.js.map → media-DPQecp4W.js.map} +1 -1
- package/dist/{media-CBLuAmNZ.cjs → media-YhMV6ELC.cjs} +2 -2
- package/dist/{media-CBLuAmNZ.cjs.map → media-YhMV6ELC.cjs.map} +1 -1
- package/dist/{menu-BDQr8EZ1.cjs → menu-BfNE5Pz2.cjs} +2 -2
- package/dist/{menu-BDQr8EZ1.cjs.map → menu-BfNE5Pz2.cjs.map} +1 -1
- package/dist/{menu-C0SauakY.js → menu-C5KQk1CK.js} +3 -3
- package/dist/{menu-C0SauakY.js.map → menu-C5KQk1CK.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{notification-service-B1f848tO.cjs → notification-service-Bq_d-qqB.cjs} +2 -2
- package/dist/{notification-service-B1f848tO.cjs.map → notification-service-Bq_d-qqB.cjs.map} +1 -1
- package/dist/{notification-service-X8mRASdk.js → notification-service-unFpqUQn.js} +3 -3
- package/dist/{notification-service-X8mRASdk.js.map → notification-service-unFpqUQn.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-ckV22mLf.cjs → option-B9LbtNdk.cjs} +2 -2
- package/dist/{option-ckV22mLf.cjs.map → option-B9LbtNdk.cjs.map} +1 -1
- package/dist/{option-DVlCqux7.js → option-Cy-nYxTs.js} +2 -2
- package/dist/{option-DVlCqux7.js.map → option-Cy-nYxTs.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-BUsPCZPp.cjs → payment-card-form-D45IjHFN.cjs} +2 -2
- package/dist/{payment-card-form-BUsPCZPp.cjs.map → payment-card-form-D45IjHFN.cjs.map} +1 -1
- package/dist/{payment-card-form-D7PV8spa.js → payment-card-form-ctWIc4vM.js} +3 -3
- package/dist/{payment-card-form-D7PV8spa.js.map → payment-card-form-ctWIc4vM.js.map} +1 -1
- package/dist/{progress-BZ6AFT0f.js → progress-4Ef6bw05.js} +2 -2
- package/dist/{progress-BZ6AFT0f.js.map → progress-4Ef6bw05.js.map} +1 -1
- package/dist/{progress-CABg45XF.cjs → progress-QXnS6DIm.cjs} +2 -2
- package/dist/{progress-CABg45XF.cjs.map → progress-QXnS6DIm.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/provide-BxZ2kn_p.cjs.map +1 -1
- package/dist/provide-tcktw8xB.js.map +1 -1
- package/dist/{radio-button-D4Y1bWGN.js → radio-button-CEp1kd-P.js} +3 -3
- package/dist/{radio-button-D4Y1bWGN.js.map → radio-button-CEp1kd-P.js.map} +1 -1
- package/dist/{radio-button-DQ4VclEZ.cjs → radio-button-CUzdKTtW.cjs} +2 -2
- package/dist/{radio-button-DQ4VclEZ.cjs.map → radio-button-CUzdKTtW.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/redispatch-event-BLom7yp4.js.map +1 -1
- package/dist/redispatch-event-DHcobAl6.cjs.map +1 -1
- package/dist/ripple-BumgqsDT.js.map +1 -1
- package/dist/ripple-C2BHbhcS.cjs.map +1 -1
- package/dist/rxjs-utils.cjs.map +1 -1
- package/dist/rxjs-utils.js.map +1 -1
- package/dist/{schmancy-steps-container-CZ0upElE.cjs → schmancy-steps-container-D3m07gLT.cjs} +2 -2
- package/dist/{schmancy-steps-container-CZ0upElE.cjs.map → schmancy-steps-container-D3m07gLT.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-BskkdQwD.js → schmancy-steps-container-KI2azXpv.js} +2 -2
- package/dist/{schmancy-steps-container-BskkdQwD.js.map → schmancy-steps-container-KI2azXpv.js.map} +1 -1
- package/dist/{select-DfQogfes.cjs → select-Bw4QilHf.cjs} +3 -3
- package/dist/{select-DfQogfes.cjs.map → select-Bw4QilHf.cjs.map} +1 -1
- package/dist/{select-wui4bIUE.js → select-g77JoEFx.js} +18 -20
- package/dist/{select-wui4bIUE.js.map → select-g77JoEFx.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +2 -3
- package/dist/selector-hook-Bf_lCnGW.cjs.map +1 -1
- package/dist/{selector-hook-DL0SIQiY.js → selector-hook-DPe2CGKx.js} +16 -16
- package/dist/{selector-hook-DL0SIQiY.js.map → selector-hook-DPe2CGKx.js.map} +1 -1
- package/dist/{sheet-DMOsLeJL.cjs → sheet--fG_jGSI.cjs} +2 -2
- package/dist/{sheet-DMOsLeJL.cjs.map → sheet--fG_jGSI.cjs.map} +1 -1
- package/dist/{sheet-DmrPnCAk.js → sheet-edcIHEMM.js} +4 -4
- package/dist/{sheet-DmrPnCAk.js.map → sheet-edcIHEMM.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +6 -7
- package/dist/{sheet.service-22gvsyq8.js → sheet.service-BKQ7n7nz.js} +480 -471
- package/dist/{sheet.service-22gvsyq8.js.map → sheet.service-BKQ7n7nz.js.map} +1 -1
- package/dist/{sheet.service-sSYoAEbY.cjs → sheet.service-ihtgUWRM.cjs} +3 -3
- package/dist/{sheet.service-sSYoAEbY.cjs.map → sheet.service-ihtgUWRM.cjs.map} +1 -1
- package/dist/{slider-Dwm1KfNL.js → slider-BJQE9wHL.js} +3 -3
- package/dist/{slider-Dwm1KfNL.js.map → slider-BJQE9wHL.js.map} +1 -1
- package/dist/{slider-C2oEvRAS.cjs → slider-DMIOW38W.cjs} +2 -2
- package/dist/{slider-C2oEvRAS.cjs.map → slider-DMIOW38W.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-DKgZemVU.cjs → spinner-ByMXQNV3.cjs} +2 -2
- package/dist/{spinner-DKgZemVU.cjs.map → spinner-ByMXQNV3.cjs.map} +1 -1
- package/dist/{spinner-Bh6XkC88.js → spinner-NFkGJJz1.js} +2 -2
- package/dist/{spinner-Bh6XkC88.js.map → spinner-NFkGJJz1.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.js +1 -1
- package/dist/{surface-DIIUamff.cjs → surface-BhCe8hp8.cjs} +2 -2
- package/dist/{surface-DIIUamff.cjs.map → surface-BhCe8hp8.cjs.map} +1 -1
- package/dist/{surface-DhiuAGb8.js → surface-C7jJaxVu.js} +2 -2
- package/dist/{surface-DhiuAGb8.js.map → surface-C7jJaxVu.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-BrAoSQhN.cjs → table-BlwkABmS.cjs} +2 -2
- package/dist/{table-BrAoSQhN.cjs.map → table-BlwkABmS.cjs.map} +1 -1
- package/dist/{table-DSZ9kmUG.js → table-CmwIcTR5.js} +2 -2
- package/dist/{table-DSZ9kmUG.js.map → table-CmwIcTR5.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-B7aJnQ0X.js → tabs-compatibility-BdKslPOu.js} +2 -2
- package/dist/{tabs-compatibility-B7aJnQ0X.js.map → tabs-compatibility-BdKslPOu.js.map} +1 -1
- package/dist/{tabs-compatibility-Ck74XeID.cjs → tabs-compatibility-v0k0K0ID.cjs} +2 -2
- package/dist/{tabs-compatibility-Ck74XeID.cjs.map → tabs-compatibility-v0k0K0ID.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{tailwind.mixin-CBu1BEQZ.cjs → tailwind.mixin-1kcW0BGm.cjs} +2 -2
- package/dist/{tailwind.mixin-CBu1BEQZ.cjs.map → tailwind.mixin-1kcW0BGm.cjs.map} +1 -1
- package/dist/{tailwind.mixin-DWhCm94g.js → tailwind.mixin-BHLwDiBj.js} +2 -2
- package/dist/{tailwind.mixin-DWhCm94g.js.map → tailwind.mixin-BHLwDiBj.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CGTMdhoF.cjs → textarea-CL3oExE7.cjs} +2 -2
- package/dist/{textarea-CGTMdhoF.cjs.map → textarea-CL3oExE7.cjs.map} +1 -1
- package/dist/{textarea-Bq0XdGaH.js → textarea-CfLyPiqF.js} +2 -2
- package/dist/{textarea-Bq0XdGaH.js.map → textarea-CfLyPiqF.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-CznhJ8g_.cjs → theme-button-D9DpgXlC.cjs} +2 -2
- package/dist/{theme-button-CznhJ8g_.cjs.map → theme-button-D9DpgXlC.cjs.map} +1 -1
- package/dist/{theme-button-DYoygmRA.js → theme-button-tekBpoTr.js} +2 -2
- package/dist/{theme-button-DYoygmRA.js.map → theme-button-tekBpoTr.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.interface-C5Kj6WjD.js.map +1 -1
- package/dist/theme.interface-Xg5Zi46a.cjs.map +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-BCGcdasU.cjs → timezone-DIYE4qo4.cjs} +2 -2
- package/dist/{timezone-BCGcdasU.cjs.map → timezone-DIYE4qo4.cjs.map} +1 -1
- package/dist/{timezone-Co7gqqQt.js → timezone-rpn_HlNW.js} +3 -3
- package/dist/{timezone-Co7gqqQt.js.map → timezone-rpn_HlNW.js.map} +1 -1
- package/dist/{tooltip-DBuaAFmK.js → tooltip-C5DJ3omV.js} +2 -2
- package/dist/{tooltip-DBuaAFmK.js.map → tooltip-C5DJ3omV.js.map} +1 -1
- package/dist/{tooltip-Bqa0D34J.cjs → tooltip-apPpbYRb.cjs} +2 -2
- package/dist/{tooltip-Bqa0D34J.cjs.map → tooltip-apPpbYRb.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-CfE695gp.js → tree-B38B9Zts.js} +2 -2
- package/dist/{tree-CfE695gp.js.map → tree-B38B9Zts.js.map} +1 -1
- package/dist/{tree-CFeXYaJy.cjs → tree-DYOX-2CI.cjs} +2 -2
- package/dist/{tree-CFeXYaJy.cjs.map → tree-DYOX-2CI.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/tslib.es6-DgOcxv4s.cjs.map +1 -1
- package/dist/tslib.es6-ujVQHAQ4.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/{typewriter-BZ_adVXB.js → typewriter-Cf1Bl0lI.js} +4 -4
- package/dist/{typewriter-BZ_adVXB.js.map → typewriter-Cf1Bl0lI.js.map} +1 -1
- package/dist/{typewriter-B6Jb22Pe.cjs → typewriter-D5sC3i_h.cjs} +2 -2
- package/dist/{typewriter-B6Jb22Pe.cjs.map → typewriter-D5sC3i_h.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-DvVeO1a_.cjs → typography-VDYy4xDQ.cjs} +2 -2
- package/dist/{typography-DvVeO1a_.cjs.map → typography-VDYy4xDQ.cjs.map} +1 -1
- package/dist/{typography-DI5RXpWs.js → typography-sm5Ne22S.js} +2 -2
- package/dist/{typography-DI5RXpWs.js.map → typography-sm5Ne22S.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-jduntaQU.js → utils-03Coa8AW.js} +2 -2
- package/dist/{utils-jduntaQU.js.map → utils-03Coa8AW.js.map} +1 -1
- package/dist/{utils-BqFGvnN9.cjs → utils-C9nzOWpR.cjs} +2 -2
- package/dist/{utils-BqFGvnN9.cjs.map → utils-C9nzOWpR.cjs.map} +1 -1
- package/package.json +10 -10
- package/types/src/index.d.ts +2 -0
- package/types/src/select/select.d.ts +2 -0
- package/types/src/sheet/sheet.service.d.ts +128 -26
- package/types/src/store/selector-hook.d.ts +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function u(t,e){if(t===e)return!0;if(typeof t!="function"||typeof e!="function")return!1;if(t.name&&e.name&&t.name===e.name)return!0;const n=t.observedAttributes,o=e.observedAttributes;if(n&&o&&Array.isArray(n)&&Array.isArray(o))return n.length===o.length&&n.every((r,c)=>r===o[c]);try{const r=t.prototype,c=e.prototype;if(Object.getPrototypeOf(r)===Object.getPrototypeOf(c)){const i=Object.getOwnPropertyNames(r).sort(),f=Object.getOwnPropertyNames(c).sort();return i.length===f.length&&i.every((m,l)=>m===f[l])}}catch{}return!1}function s(t){return t.toLowerCase().replace(/[^a-z0-9]/g,"")}function p(t){if(typeof t=="string")return t.toLowerCase();if(t instanceof HTMLElement)return t.tagName.toLowerCase();if(typeof t=="function"){const e=t.name;if(e)return e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,"")}return null}function a(t){return t!==null&&typeof t=="object"&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}function y(t){let e=0;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e
|
|
2
|
-
//# sourceMappingURL=utils-
|
|
1
|
+
"use strict";function u(t,e){if(t===e)return!0;if(typeof t!="function"||typeof e!="function")return!1;if(t.name&&e.name&&t.name===e.name)return!0;const n=t.observedAttributes,o=e.observedAttributes;if(n&&o&&Array.isArray(n)&&Array.isArray(o))return n.length===o.length&&n.every((r,c)=>r===o[c]);try{const r=t.prototype,c=e.prototype;if(Object.getPrototypeOf(r)===Object.getPrototypeOf(c)){const i=Object.getOwnPropertyNames(r).sort(),f=Object.getOwnPropertyNames(c).sort();return i.length===f.length&&i.every((m,l)=>m===f[l])}}catch{}return!1}function s(t){return t.toLowerCase().replace(/[^a-z0-9]/g,"")}function p(t){if(typeof t=="string")return t.toLowerCase();if(t instanceof HTMLElement)return t.tagName.toLowerCase();if(typeof t=="function"){const e=t.name;if(e)return e.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,"")}return null}function a(t){return t!==null&&typeof t=="object"&&t.constructor===Object&&Object.prototype.toString.call(t)==="[object Object]"}function y(t){let e=0;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e&=e;return Math.abs(e).toString(36)}exports.buildQueryString=function(t){const e=new URLSearchParams;for(const o in t)if(t.hasOwnProperty(o)){const r=t[o];r!=null&&r!==""&&e.set(o,String(r))}const n=e.toString();return n?`?${n}`:""},exports.compareActiveRoutes=function(t,e){return t.area===e.area&&t.component===e.component&&JSON.stringify(t.state||{})===JSON.stringify(e.state||{})&&JSON.stringify(t.params||{})===JSON.stringify(e.params||{})},exports.compareCustomElementConstructors=u,exports.compareRouteActions=function(t,e){if(t.area!==e.area||typeof t.component!=typeof e.component)return!1;if(typeof t.component=="string"&&typeof e.component=="string"){if(s(t.component)!==s(e.component))return!1}else if(typeof t.component=="function"&&typeof e.component=="function"){if(!u(t.component,e.component))return!1}else if(t.component!==e.component)return!1;return JSON.stringify(t.state||{})===JSON.stringify(e.state||{})&&JSON.stringify(t.params||{})===JSON.stringify(e.params||{})},exports.createRouteCacheKey=function(t){const e=p(t.component)||"unknown",n=y(JSON.stringify(t.state||{})),o=y(JSON.stringify(t.params||{}));return`${t.area}:${e}:${n}:${o}`},exports.debounce=function(t,e){let n=null;return function(...o){const r=this;n!==null&&clearTimeout(n),n=setTimeout(()=>{t.apply(r,o),n=null},e)}},exports.decodeRouteState=function(t){if(!t)return{};try{const e=decodeURIComponent(t),n=JSON.parse(e);if(a(n))return n}catch{}return{}},exports.deepMerge=function t(e,n){const o={...e};for(const r in n)if(n.hasOwnProperty(r)){const c=n[r],i=o[r];a(c)&&a(i)?o[r]=t(i,c):o[r]=c}return o},exports.encodeRouteState=function(t){try{const e=JSON.stringify(t);return encodeURIComponent(e)}catch{return""}},exports.extractQueryParams=function(t){const e={};let n;return t instanceof URLSearchParams?n=t:typeof t=="string"?n=new URL(t,window.location.origin).searchParams:n=new URLSearchParams(window.location.search),n.forEach((o,r)=>{e[r]=o}),e},exports.getTagName=p,exports.isObject=a,exports.normalizeTagName=s,exports.sanitizeRouteState=function t(e,n=["password","token","secret","apiKey"]){const o={};for(const r in e)if(e.hasOwnProperty(r)&&!n.includes(r)){const c=e[r];a(c)?o[r]=t(c,n):Array.isArray(c)?o[r]=c.map(i=>a(i)?t(i,n):i):o[r]=c}return o};
|
|
2
|
+
//# sourceMappingURL=utils-C9nzOWpR.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-BqFGvnN9.cjs","sources":["../src/area/utils.ts"],"sourcesContent":["import { RouteAction, ActiveRoute } from './router.types'\n\n/**\n * Compare two custom element constructors for equality\n * @param constructor1 First constructor to compare\n * @param constructor2 Second constructor to compare\n * @returns true if constructors are functionally equivalent\n */\nexport function compareCustomElementConstructors(\n\tconstructor1: CustomElementConstructor | Function,\n\tconstructor2: CustomElementConstructor | Function\n): boolean {\n\t// Quick reference check\n\tif (constructor1 === constructor2) {\n\t\treturn true\n\t}\n\n\t// Check if both are functions\n\tif (typeof constructor1 !== 'function' || typeof constructor2 !== 'function') {\n\t\treturn false\n\t}\n\n\t// Compare by name (handles minification)\n\tif (constructor1.name && constructor2.name && constructor1.name === constructor2.name) {\n\t\treturn true\n\t}\n\n\t// Compare observed attributes if available\n\tconst obs1 = (constructor1 as any).observedAttributes\n\tconst obs2 = (constructor2 as any).observedAttributes\n\t\n\tif (obs1 && obs2) {\n\t\tif (Array.isArray(obs1) && Array.isArray(obs2)) {\n\t\t\tif (obs1.length !== obs2.length) return false\n\t\t\treturn obs1.every((attr, i) => attr === obs2[i])\n\t\t}\n\t}\n\n\t// Try to compare prototypes\n\ttry {\n\t\tconst proto1 = constructor1.prototype\n\t\tconst proto2 = constructor2.prototype\n\t\t\n\t\t// Check if they have the same prototype chain\n\t\tif (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {\n\t\t\t// Check if they have the same property names\n\t\t\tconst keys1 = Object.getOwnPropertyNames(proto1).sort()\n\t\t\tconst keys2 = Object.getOwnPropertyNames(proto2).sort()\n\t\t\t\n\t\t\treturn keys1.length === keys2.length && \n\t\t\t\t keys1.every((key, i) => key === keys2[i])\n\t\t}\n\t} catch {\n\t\t// Ignore prototype access errors\n\t}\n\n\treturn false\n}\n\n/**\n * Normalize a component tag name for comparison\n * @param tagName Tag name to normalize\n * @returns Normalized tag name\n */\nexport function normalizeTagName(tagName: string): string {\n\treturn tagName\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '') // Remove all non-alphanumeric characters\n}\n\n/**\n * Get tag name from a component\n * @param component Component to get tag name from\n * @returns Tag name or null if unable to determine\n */\nexport function getTagName(component: any): string | null {\n\tif (typeof component === 'string') {\n\t\treturn component.toLowerCase()\n\t}\n\t\n\tif (component instanceof HTMLElement) {\n\t\treturn component.tagName.toLowerCase()\n\t}\n\t\n\tif (typeof component === 'function') {\n\t\t// Try to get custom element name from constructor\n\t\tconst name = component.name\n\t\tif (name) {\n\t\t\t// Convert PascalCase to kebab-case\n\t\t\treturn name\n\t\t\t\t.replace(/([A-Z])/g, '-$1')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/^-/, '')\n\t\t}\n\t}\n\t\n\treturn null\n}\n\n/**\n * Deep merge two objects\n * @param target Target object\n * @param source Source object to merge\n * @returns Merged object\n */\nexport function deepMerge<T extends Record<string, any>>(\n\ttarget: T,\n\tsource: Partial<T>\n): T {\n\tconst output = { ...target }\n\t\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = output[key]\n\t\t\t\n\t\t\tif (isObject(sourceValue) && isObject(targetValue)) {\n\t\t\t\toutput[key] = deepMerge(targetValue, sourceValue)\n\t\t\t} else {\n\t\t\t\toutput[key] = sourceValue as T[Extract<keyof T, string>]\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn output\n}\n\n/**\n * Check if value is a plain object\n * @param obj Value to check\n * @returns true if value is a plain object\n */\nexport function isObject(obj: any): obj is Record<string, any> {\n\treturn obj !== null && \n\t\t typeof obj === 'object' && \n\t\t obj.constructor === Object &&\n\t\t Object.prototype.toString.call(obj) === '[object Object]'\n}\n\n/**\n * Debounce a function\n * @param func Function to debounce\n * @param wait Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n\tfunc: T,\n\twait: number\n): (...args: Parameters<T>) => void {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null\n\t\n\treturn function (this: any, ...args: Parameters<T>) {\n\t\tconst context = this\n\t\t\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t\t\n\t\ttimeout = setTimeout(() => {\n\t\t\tfunc.apply(context, args)\n\t\t\ttimeout = null\n\t\t}, wait)\n\t}\n}\n\n/**\n * Create a URL-safe string from route state\n * @param state Route state object\n * @returns URL-safe encoded string\n */\nexport function encodeRouteState(state: Record<string, unknown>): string {\n\ttry {\n\t\tconst json = JSON.stringify(state)\n\t\treturn encodeURIComponent(json)\n\t} catch (error) {\n\t\tconsole.error('Failed to encode route state:', error)\n\t\treturn ''\n\t}\n}\n\n/**\n * Decode a URL-safe string to route state\n * @param encoded Encoded string\n * @returns Decoded route state or empty object\n */\nexport function decodeRouteState(encoded: string): Record<string, unknown> {\n\tif (!encoded) return {}\n\t\n\ttry {\n\t\tconst decoded = decodeURIComponent(encoded)\n\t\tconst parsed = JSON.parse(decoded)\n\t\t\n\t\tif (isObject(parsed)) {\n\t\t\treturn parsed\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Failed to decode route state:', error)\n\t}\n\t\n\treturn {}\n}\n\n/**\n * Compare two route actions for equality\n * @param a First route action\n * @param b Second route action\n * @returns true if route actions are equal\n */\nexport function compareRouteActions(a: RouteAction, b: RouteAction): boolean {\n\t// Compare areas\n\tif (a.area !== b.area) return false\n\t\n\t// Compare components\n\tif (typeof a.component !== typeof b.component) return false\n\t\n\tif (typeof a.component === 'string' && typeof b.component === 'string') {\n\t\tif (normalizeTagName(a.component) !== normalizeTagName(b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (typeof a.component === 'function' && typeof b.component === 'function') {\n\t\tif (!compareCustomElementConstructors(a.component, b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (a.component !== b.component) {\n\t\treturn false\n\t}\n\t\n\t// Compare state\n\tif (JSON.stringify(a.state || {}) !== JSON.stringify(b.state || {})) {\n\t\treturn false\n\t}\n\t\n\t// Compare params\n\tif (JSON.stringify(a.params || {}) !== JSON.stringify(b.params || {})) {\n\t\treturn false\n\t}\n\t\n\treturn true\n}\n\n/**\n * Compare two active routes for equality\n * @param a First active route\n * @param b Second active route\n * @returns true if active routes are equal\n */\nexport function compareActiveRoutes(a: ActiveRoute, b: ActiveRoute): boolean {\n\treturn a.area === b.area &&\n\t\t a.component === b.component &&\n\t\t JSON.stringify(a.state || {}) === JSON.stringify(b.state || {}) &&\n\t\t JSON.stringify(a.params || {}) === JSON.stringify(b.params || {})\n}\n\n/**\n * Create a cache key from a route action\n * @param route Route action\n * @returns Cache key string\n */\nexport function createRouteCacheKey(route: RouteAction): string {\n\tconst tagName = getTagName(route.component) || 'unknown'\n\tconst stateHash = simpleHash(JSON.stringify(route.state || {}))\n\tconst paramsHash = simpleHash(JSON.stringify(route.params || {}))\n\t\n\treturn `${route.area}:${tagName}:${stateHash}:${paramsHash}`\n}\n\n/**\n * Simple hash function for creating cache keys\n * @param str String to hash\n * @returns Hash string\n */\nfunction simpleHash(str: string): string {\n\tlet hash = 0\n\t\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + char\n\t\thash = hash & hash // Convert to 32-bit integer\n\t}\n\t\n\treturn Math.abs(hash).toString(36)\n}\n\n/**\n * Sanitize route state to remove sensitive data\n * @param state Route state\n * @param keysToRemove Keys to remove from state\n * @returns Sanitized state\n */\nexport function sanitizeRouteState(\n\tstate: Record<string, unknown>,\n\tkeysToRemove: string[] = ['password', 'token', 'secret', 'apiKey']\n): Record<string, unknown> {\n\tconst sanitized: Record<string, unknown> = {}\n\t\n\tfor (const key in state) {\n\t\tif (state.hasOwnProperty(key) && !keysToRemove.includes(key)) {\n\t\t\tconst value = state[key]\n\t\t\t\n\t\t\tif (isObject(value)) {\n\t\t\t\tsanitized[key] = sanitizeRouteState(value, keysToRemove)\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\tsanitized[key] = value.map(item => \n\t\t\t\t\tisObject(item) ? sanitizeRouteState(item, keysToRemove) : item\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsanitized[key] = value\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sanitized\n}\n\n/**\n * Extract query parameters from URL\n * @param url URL string or URLSearchParams\n * @returns Object with query parameters\n */\nexport function extractQueryParams(url?: string | URLSearchParams): Record<string, string> {\n\tconst params: Record<string, string> = {}\n\t\n\tlet searchParams: URLSearchParams\n\t\n\tif (url instanceof URLSearchParams) {\n\t\tsearchParams = url\n\t} else if (typeof url === 'string') {\n\t\tconst urlObj = new URL(url, window.location.origin)\n\t\tsearchParams = urlObj.searchParams\n\t} else {\n\t\tsearchParams = new URLSearchParams(window.location.search)\n\t}\n\t\n\tsearchParams.forEach((value, key) => {\n\t\tparams[key] = value\n\t})\n\t\n\treturn params\n}\n\n/**\n * Build query string from parameters object\n * @param params Parameters object\n * @returns Query string with leading '?'\n */\nexport function buildQueryString(params: Record<string, string | number | boolean>): string {\n\tconst searchParams = new URLSearchParams()\n\t\n\tfor (const key in params) {\n\t\tif (params.hasOwnProperty(key)) {\n\t\t\tconst value = params[key]\n\t\t\tif (value !== undefined && value !== null && value !== '') {\n\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t}\n\t\t}\n\t}\n\t\n\tconst queryString = searchParams.toString()\n\treturn queryString ? `?${queryString}` : ''\n}"],"names":["compareCustomElementConstructors","constructor1","constructor2","name","obs1","observedAttributes","obs2","Array","isArray","length","every","attr","i","proto1","prototype","proto2","Object","getPrototypeOf","keys1","getOwnPropertyNames","sort","keys2","key","normalizeTagName","tagName","toLowerCase","replace","getTagName","component","HTMLElement","isObject","obj","constructor","toString","call","simpleHash","str","hash","charCodeAt","Math","abs","params","searchParams","URLSearchParams","hasOwnProperty","value","e","set","String","queryString","a","b","area","JSON","stringify","state","route","stateHash","paramsHash","func","wait","timeout","args","context","this","clearTimeout","setTimeout","apply","encoded","decoded","decodeURIComponent","parsed","parse","error","deepMerge","target","source","output","sourceValue","targetValue","json","encodeURIComponent","url","URL","window","location","origin","search","forEach","sanitizeRouteState","keysToRemove","sanitized","includes","map","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils-C9nzOWpR.cjs","sources":["../src/area/utils.ts"],"sourcesContent":["import { RouteAction, ActiveRoute } from './router.types'\n\n/**\n * Compare two custom element constructors for equality\n * @param constructor1 First constructor to compare\n * @param constructor2 Second constructor to compare\n * @returns true if constructors are functionally equivalent\n */\nexport function compareCustomElementConstructors(\n\tconstructor1: CustomElementConstructor | Function,\n\tconstructor2: CustomElementConstructor | Function\n): boolean {\n\t// Quick reference check\n\tif (constructor1 === constructor2) {\n\t\treturn true\n\t}\n\n\t// Check if both are functions\n\tif (typeof constructor1 !== 'function' || typeof constructor2 !== 'function') {\n\t\treturn false\n\t}\n\n\t// Compare by name (handles minification)\n\tif (constructor1.name && constructor2.name && constructor1.name === constructor2.name) {\n\t\treturn true\n\t}\n\n\t// Compare observed attributes if available\n\tconst obs1 = (constructor1 as any).observedAttributes\n\tconst obs2 = (constructor2 as any).observedAttributes\n\t\n\tif (obs1 && obs2) {\n\t\tif (Array.isArray(obs1) && Array.isArray(obs2)) {\n\t\t\tif (obs1.length !== obs2.length) return false\n\t\t\treturn obs1.every((attr, i) => attr === obs2[i])\n\t\t}\n\t}\n\n\t// Try to compare prototypes\n\ttry {\n\t\tconst proto1 = constructor1.prototype\n\t\tconst proto2 = constructor2.prototype\n\t\t\n\t\t// Check if they have the same prototype chain\n\t\tif (Object.getPrototypeOf(proto1) === Object.getPrototypeOf(proto2)) {\n\t\t\t// Check if they have the same property names\n\t\t\tconst keys1 = Object.getOwnPropertyNames(proto1).sort()\n\t\t\tconst keys2 = Object.getOwnPropertyNames(proto2).sort()\n\t\t\t\n\t\t\treturn keys1.length === keys2.length && \n\t\t\t\t keys1.every((key, i) => key === keys2[i])\n\t\t}\n\t} catch {\n\t\t// Ignore prototype access errors\n\t}\n\n\treturn false\n}\n\n/**\n * Normalize a component tag name for comparison\n * @param tagName Tag name to normalize\n * @returns Normalized tag name\n */\nexport function normalizeTagName(tagName: string): string {\n\treturn tagName\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/g, '') // Remove all non-alphanumeric characters\n}\n\n/**\n * Get tag name from a component\n * @param component Component to get tag name from\n * @returns Tag name or null if unable to determine\n */\nexport function getTagName(component: any): string | null {\n\tif (typeof component === 'string') {\n\t\treturn component.toLowerCase()\n\t}\n\t\n\tif (component instanceof HTMLElement) {\n\t\treturn component.tagName.toLowerCase()\n\t}\n\t\n\tif (typeof component === 'function') {\n\t\t// Try to get custom element name from constructor\n\t\tconst name = component.name\n\t\tif (name) {\n\t\t\t// Convert PascalCase to kebab-case\n\t\t\treturn name\n\t\t\t\t.replace(/([A-Z])/g, '-$1')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/^-/, '')\n\t\t}\n\t}\n\t\n\treturn null\n}\n\n/**\n * Deep merge two objects\n * @param target Target object\n * @param source Source object to merge\n * @returns Merged object\n */\nexport function deepMerge<T extends Record<string, any>>(\n\ttarget: T,\n\tsource: Partial<T>\n): T {\n\tconst output = { ...target }\n\t\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tconst sourceValue = source[key]\n\t\t\tconst targetValue = output[key]\n\t\t\t\n\t\t\tif (isObject(sourceValue) && isObject(targetValue)) {\n\t\t\t\toutput[key] = deepMerge(targetValue, sourceValue)\n\t\t\t} else {\n\t\t\t\toutput[key] = sourceValue as T[Extract<keyof T, string>]\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn output\n}\n\n/**\n * Check if value is a plain object\n * @param obj Value to check\n * @returns true if value is a plain object\n */\nexport function isObject(obj: any): obj is Record<string, any> {\n\treturn obj !== null && \n\t\t typeof obj === 'object' && \n\t\t obj.constructor === Object &&\n\t\t Object.prototype.toString.call(obj) === '[object Object]'\n}\n\n/**\n * Debounce a function\n * @param func Function to debounce\n * @param wait Wait time in milliseconds\n * @returns Debounced function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n\tfunc: T,\n\twait: number\n): (...args: Parameters<T>) => void {\n\tlet timeout: ReturnType<typeof setTimeout> | null = null\n\t\n\treturn function (this: any, ...args: Parameters<T>) {\n\t\tconst context = this\n\t\t\n\t\tif (timeout !== null) {\n\t\t\tclearTimeout(timeout)\n\t\t}\n\t\t\n\t\ttimeout = setTimeout(() => {\n\t\t\tfunc.apply(context, args)\n\t\t\ttimeout = null\n\t\t}, wait)\n\t}\n}\n\n/**\n * Create a URL-safe string from route state\n * @param state Route state object\n * @returns URL-safe encoded string\n */\nexport function encodeRouteState(state: Record<string, unknown>): string {\n\ttry {\n\t\tconst json = JSON.stringify(state)\n\t\treturn encodeURIComponent(json)\n\t} catch (error) {\n\t\tconsole.error('Failed to encode route state:', error)\n\t\treturn ''\n\t}\n}\n\n/**\n * Decode a URL-safe string to route state\n * @param encoded Encoded string\n * @returns Decoded route state or empty object\n */\nexport function decodeRouteState(encoded: string): Record<string, unknown> {\n\tif (!encoded) return {}\n\t\n\ttry {\n\t\tconst decoded = decodeURIComponent(encoded)\n\t\tconst parsed = JSON.parse(decoded)\n\t\t\n\t\tif (isObject(parsed)) {\n\t\t\treturn parsed\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Failed to decode route state:', error)\n\t}\n\t\n\treturn {}\n}\n\n/**\n * Compare two route actions for equality\n * @param a First route action\n * @param b Second route action\n * @returns true if route actions are equal\n */\nexport function compareRouteActions(a: RouteAction, b: RouteAction): boolean {\n\t// Compare areas\n\tif (a.area !== b.area) return false\n\t\n\t// Compare components\n\tif (typeof a.component !== typeof b.component) return false\n\t\n\tif (typeof a.component === 'string' && typeof b.component === 'string') {\n\t\tif (normalizeTagName(a.component) !== normalizeTagName(b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (typeof a.component === 'function' && typeof b.component === 'function') {\n\t\tif (!compareCustomElementConstructors(a.component, b.component)) {\n\t\t\treturn false\n\t\t}\n\t} else if (a.component !== b.component) {\n\t\treturn false\n\t}\n\t\n\t// Compare state\n\tif (JSON.stringify(a.state || {}) !== JSON.stringify(b.state || {})) {\n\t\treturn false\n\t}\n\t\n\t// Compare params\n\tif (JSON.stringify(a.params || {}) !== JSON.stringify(b.params || {})) {\n\t\treturn false\n\t}\n\t\n\treturn true\n}\n\n/**\n * Compare two active routes for equality\n * @param a First active route\n * @param b Second active route\n * @returns true if active routes are equal\n */\nexport function compareActiveRoutes(a: ActiveRoute, b: ActiveRoute): boolean {\n\treturn a.area === b.area &&\n\t\t a.component === b.component &&\n\t\t JSON.stringify(a.state || {}) === JSON.stringify(b.state || {}) &&\n\t\t JSON.stringify(a.params || {}) === JSON.stringify(b.params || {})\n}\n\n/**\n * Create a cache key from a route action\n * @param route Route action\n * @returns Cache key string\n */\nexport function createRouteCacheKey(route: RouteAction): string {\n\tconst tagName = getTagName(route.component) || 'unknown'\n\tconst stateHash = simpleHash(JSON.stringify(route.state || {}))\n\tconst paramsHash = simpleHash(JSON.stringify(route.params || {}))\n\t\n\treturn `${route.area}:${tagName}:${stateHash}:${paramsHash}`\n}\n\n/**\n * Simple hash function for creating cache keys\n * @param str String to hash\n * @returns Hash string\n */\nfunction simpleHash(str: string): string {\n\tlet hash = 0\n\t\n\tfor (let i = 0; i < str.length; i++) {\n\t\tconst char = str.charCodeAt(i)\n\t\thash = ((hash << 5) - hash) + char\n\t\thash = hash & hash // Convert to 32-bit integer\n\t}\n\t\n\treturn Math.abs(hash).toString(36)\n}\n\n/**\n * Sanitize route state to remove sensitive data\n * @param state Route state\n * @param keysToRemove Keys to remove from state\n * @returns Sanitized state\n */\nexport function sanitizeRouteState(\n\tstate: Record<string, unknown>,\n\tkeysToRemove: string[] = ['password', 'token', 'secret', 'apiKey']\n): Record<string, unknown> {\n\tconst sanitized: Record<string, unknown> = {}\n\t\n\tfor (const key in state) {\n\t\tif (state.hasOwnProperty(key) && !keysToRemove.includes(key)) {\n\t\t\tconst value = state[key]\n\t\t\t\n\t\t\tif (isObject(value)) {\n\t\t\t\tsanitized[key] = sanitizeRouteState(value, keysToRemove)\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\tsanitized[key] = value.map(item => \n\t\t\t\t\tisObject(item) ? sanitizeRouteState(item, keysToRemove) : item\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tsanitized[key] = value\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sanitized\n}\n\n/**\n * Extract query parameters from URL\n * @param url URL string or URLSearchParams\n * @returns Object with query parameters\n */\nexport function extractQueryParams(url?: string | URLSearchParams): Record<string, string> {\n\tconst params: Record<string, string> = {}\n\t\n\tlet searchParams: URLSearchParams\n\t\n\tif (url instanceof URLSearchParams) {\n\t\tsearchParams = url\n\t} else if (typeof url === 'string') {\n\t\tconst urlObj = new URL(url, window.location.origin)\n\t\tsearchParams = urlObj.searchParams\n\t} else {\n\t\tsearchParams = new URLSearchParams(window.location.search)\n\t}\n\t\n\tsearchParams.forEach((value, key) => {\n\t\tparams[key] = value\n\t})\n\t\n\treturn params\n}\n\n/**\n * Build query string from parameters object\n * @param params Parameters object\n * @returns Query string with leading '?'\n */\nexport function buildQueryString(params: Record<string, string | number | boolean>): string {\n\tconst searchParams = new URLSearchParams()\n\t\n\tfor (const key in params) {\n\t\tif (params.hasOwnProperty(key)) {\n\t\t\tconst value = params[key]\n\t\t\tif (value !== undefined && value !== null && value !== '') {\n\t\t\t\tsearchParams.set(key, String(value))\n\t\t\t}\n\t\t}\n\t}\n\t\n\tconst queryString = searchParams.toString()\n\treturn queryString ? `?${queryString}` : ''\n}"],"names":["compareCustomElementConstructors","constructor1","constructor2","name","obs1","observedAttributes","obs2","Array","isArray","length","every","attr","i","proto1","prototype","proto2","Object","getPrototypeOf","keys1","getOwnPropertyNames","sort","keys2","key","normalizeTagName","tagName","toLowerCase","replace","getTagName","component","HTMLElement","isObject","obj","constructor","toString","call","simpleHash","str","hash","charCodeAt","Math","abs","params","searchParams","URLSearchParams","hasOwnProperty","value","set","String","queryString","a","b","area","JSON","stringify","state","route","stateHash","paramsHash","func","wait","timeout","args","context","this","clearTimeout","setTimeout","apply","encoded","decoded","decodeURIComponent","parsed","parse","error","deepMerge","target","source","output","sourceValue","targetValue","json","encodeURIComponent","url","URL","window","location","origin","search","forEach","sanitizeRouteState","keysToRemove","sanitized","includes","map","item"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mhmo91/schmancy",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.33",
|
|
4
4
|
"description": "UI library build with web components",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"packageManager": "yarn@4.9.2",
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"homepage": "https://github.com/mhmo91/schmancy#readme",
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@floating-ui/dom": "^1.7.2",
|
|
49
|
-
"@lit-labs/motion": "^1.0.
|
|
50
|
-
"@lit-labs/virtualizer": "^2.1.
|
|
51
|
-
"@lit/context": "^1.1.
|
|
49
|
+
"@lit-labs/motion": "^1.0.9",
|
|
50
|
+
"@lit-labs/virtualizer": "^2.1.1",
|
|
51
|
+
"@lit/context": "^1.1.6",
|
|
52
52
|
"@material/material-color-utilities": "^0.3.0",
|
|
53
53
|
"@material/mwc-base": "^0.27.0",
|
|
54
54
|
"@material/web": "^2.3.0",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"fastest-levenshtein": "^1.0.16",
|
|
64
64
|
"highlight.js": "^11.11.1",
|
|
65
65
|
"immer": "^10.1.1",
|
|
66
|
-
"lit": "^3.3.
|
|
66
|
+
"lit": "^3.3.1",
|
|
67
67
|
"playground-elements": "^0.20.0",
|
|
68
68
|
"rxjs": "^7.8.2",
|
|
69
69
|
"tippy.js": "^6.3.7",
|
|
@@ -78,23 +78,23 @@
|
|
|
78
78
|
"@tailwindcss/forms": "^0.5.10",
|
|
79
79
|
"@tailwindcss/postcss": "^4.1.11",
|
|
80
80
|
"@tailwindcss/vite": "^4.1.11",
|
|
81
|
-
"@types/node": "^24.0
|
|
81
|
+
"@types/node": "^24.1.0",
|
|
82
82
|
"@types/uuid": "^10.0.0",
|
|
83
|
-
"@typescript-eslint/parser": "^8.
|
|
83
|
+
"@typescript-eslint/parser": "^8.38.0",
|
|
84
84
|
"@vitest/ui": "^3.2.4",
|
|
85
85
|
"autoprefixer": "^10.4.21",
|
|
86
86
|
"c8": "^10.1.3",
|
|
87
87
|
"deepmerge": "^4.3.1",
|
|
88
|
-
"eslint": "^9.
|
|
88
|
+
"eslint": "^9.32.0",
|
|
89
89
|
"happy-dom": "^18.0.1",
|
|
90
90
|
"postcss": "^8.5.6",
|
|
91
91
|
"prettier": "^3.6.2",
|
|
92
92
|
"rollup-plugin-copy": "^3.5.0",
|
|
93
93
|
"sass": "^1.89.2",
|
|
94
94
|
"tailwindcss": "^4.1.11",
|
|
95
|
-
"vite": "^7.0.
|
|
95
|
+
"vite": "^7.0.6",
|
|
96
96
|
"vite-plugin-sitemap": "^0.8.2",
|
|
97
|
-
"vite-plugin-webfont-dl": "^3.
|
|
97
|
+
"vite-plugin-webfont-dl": "^3.11.1",
|
|
98
98
|
"vitest": "^3.2.4"
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
package/types/src/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class SchmancySelect extends SchmancySelect_base {
|
|
|
15
15
|
label: string;
|
|
16
16
|
hint: string;
|
|
17
17
|
validateOn: 'always' | 'touched' | 'dirty' | 'submitted';
|
|
18
|
+
size: 'sm' | 'md' | 'lg';
|
|
18
19
|
private isOpen;
|
|
19
20
|
private valueLabel;
|
|
20
21
|
private isValid;
|
|
@@ -57,6 +58,7 @@ export declare class SchmancySelect extends SchmancySelect_base {
|
|
|
57
58
|
reset(): void;
|
|
58
59
|
render(): TemplateResult;
|
|
59
60
|
}
|
|
61
|
+
export declare const select: typeof SchmancySelect;
|
|
60
62
|
declare global {
|
|
61
63
|
interface HTMLElementTagNameMap {
|
|
62
64
|
'schmancy-select': SchmancySelect;
|
|
@@ -1,64 +1,166 @@
|
|
|
1
1
|
import { Subject } from 'rxjs';
|
|
2
2
|
import SchmancySheet from './sheet';
|
|
3
|
+
|
|
3
4
|
export declare enum SchmancySheetPosition {
|
|
4
5
|
Side = "side",
|
|
5
6
|
Bottom = "bottom"
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Configuration options for opening a sheet
|
|
11
|
+
*/
|
|
12
|
+
export interface SheetConfig<T extends HTMLElement = HTMLElement> {
|
|
13
|
+
/** The component to display in the sheet. Can be an instance or a factory function */
|
|
14
|
+
component: T | (() => T);
|
|
15
|
+
/** Unique identifier for the sheet. Defaults to component's tagName */
|
|
9
16
|
uid?: string;
|
|
17
|
+
/** Position of the sheet. Defaults to responsive (side on desktop, bottom on mobile) */
|
|
10
18
|
position?: SchmancySheetPosition;
|
|
19
|
+
/** Whether to keep the sheet in DOM after closing. Defaults to false */
|
|
11
20
|
persist?: boolean;
|
|
21
|
+
/** @deprecated Use onBeforeOpen to add close handlers */
|
|
12
22
|
close?: () => void;
|
|
23
|
+
/** Prevents dismissal via ESC or overlay click. Defaults to false */
|
|
13
24
|
lock?: boolean;
|
|
25
|
+
/** Whether to integrate with browser history. Defaults to true */
|
|
14
26
|
handleHistory?: boolean;
|
|
27
|
+
/** Title displayed in the sheet header */
|
|
15
28
|
title?: string;
|
|
29
|
+
/** Header visibility. Defaults to 'visible' */
|
|
16
30
|
header?: 'hidden' | 'visible';
|
|
17
|
-
|
|
18
|
-
|
|
31
|
+
/** Callback invoked before the sheet opens, useful for component setup */
|
|
32
|
+
onBeforeOpen?: (component: T) => void;
|
|
33
|
+
/** Callback invoked after the sheet opens and becomes visible */
|
|
34
|
+
onAfterOpen?: (component: T) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface SheetDiscoveryDetail {
|
|
19
38
|
uid: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type SheetHereMortyEvent = CustomEvent<{
|
|
39
|
+
}
|
|
40
|
+
interface SheetResponseDetail {
|
|
23
41
|
sheet?: SchmancySheet;
|
|
24
42
|
theme?: HTMLElement;
|
|
25
|
-
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type SheetWhereAreYouRickyEvent = CustomEvent<SheetDiscoveryDetail>;
|
|
46
|
+
export declare const SheetWhereAreYouRicky = "are-you-there-sheet";
|
|
47
|
+
export type SheetHereMortyEvent = CustomEvent<SheetResponseDetail>;
|
|
26
48
|
export declare const SheetHereMorty = "yes-here";
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Service for managing sheet components throughout the application.
|
|
52
|
+
* Handles sheet lifecycle, history integration, and component reuse.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // Simple usage
|
|
57
|
+
* sheet.open({
|
|
58
|
+
* component: document.createElement('my-form'),
|
|
59
|
+
* title: 'My Form'
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
* // With callbacks
|
|
63
|
+
* sheet.open({
|
|
64
|
+
* component: () => {
|
|
65
|
+
* const form = document.createElement('employee-form');
|
|
66
|
+
* form.addEventListener('save', () => sheet.dismiss('employee-form'));
|
|
67
|
+
* return form;
|
|
68
|
+
* },
|
|
69
|
+
* uid: 'employee-form',
|
|
70
|
+
* onBeforeOpen: (form) => {
|
|
71
|
+
* form.data = employeeData;
|
|
72
|
+
* }
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
declare class SheetService {
|
|
77
|
+
private readonly openSheet$;
|
|
78
|
+
private readonly dismissSheet$;
|
|
79
|
+
private readonly activeSheets;
|
|
80
|
+
private readonly sheetComponents;
|
|
81
|
+
private readonly sheetElements;
|
|
31
82
|
private popStateListenerActive;
|
|
32
83
|
constructor();
|
|
33
84
|
/**
|
|
34
|
-
*
|
|
85
|
+
* Initializes the reactive event streams for sheet operations
|
|
86
|
+
*/
|
|
87
|
+
private initializeEventStreams;
|
|
88
|
+
/**
|
|
89
|
+
* Creates or retrieves a component instance from the configuration
|
|
90
|
+
*/
|
|
91
|
+
private resolveComponent;
|
|
92
|
+
/**
|
|
93
|
+
* Calculates the unique identifier for a sheet
|
|
94
|
+
*/
|
|
95
|
+
private calculateUid;
|
|
96
|
+
/**
|
|
97
|
+
* Discovers existing sheet container or creates a new one
|
|
35
98
|
*/
|
|
36
|
-
private
|
|
99
|
+
private discoverOrCreateSheet;
|
|
37
100
|
/**
|
|
38
|
-
*
|
|
101
|
+
* Applies configuration to a sheet element
|
|
39
102
|
*/
|
|
40
|
-
private
|
|
103
|
+
private configureSheet;
|
|
41
104
|
/**
|
|
42
|
-
*
|
|
105
|
+
* Handles the sheet opening logic
|
|
43
106
|
*/
|
|
44
|
-
private
|
|
107
|
+
private setupOpenStream;
|
|
45
108
|
/**
|
|
46
|
-
*
|
|
109
|
+
* Sets up the close event listener for a sheet
|
|
110
|
+
*/
|
|
111
|
+
private setupCloseListener;
|
|
112
|
+
/**
|
|
113
|
+
* Sets up the sheet dismissal logic
|
|
114
|
+
*/
|
|
115
|
+
private setupDismissStream;
|
|
116
|
+
/**
|
|
117
|
+
* Sets up browser history integration for back button support
|
|
118
|
+
*/
|
|
119
|
+
private setupHistoryManagement;
|
|
120
|
+
/**
|
|
121
|
+
* Opens a sheet with the specified configuration
|
|
122
|
+
* @param config - Configuration options for the sheet
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* sheet.open({
|
|
126
|
+
* component: document.createElement('my-form'),
|
|
127
|
+
* uid: 'my-form-sheet',
|
|
128
|
+
* title: 'Edit Form',
|
|
129
|
+
* onBeforeOpen: (component) => {
|
|
130
|
+
* component.data = formData;
|
|
131
|
+
* }
|
|
132
|
+
* });
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
open<T extends HTMLElement = HTMLElement>(config: SheetConfig<T>): void;
|
|
136
|
+
/**
|
|
137
|
+
* Dismisses a sheet by its unique identifier
|
|
138
|
+
* @param uid - The unique identifier of the sheet to dismiss. If not provided, dismisses the most recent sheet.
|
|
47
139
|
*/
|
|
48
140
|
dismiss(uid?: string): void;
|
|
49
141
|
/**
|
|
50
|
-
*
|
|
142
|
+
* Gets the component instance for a given sheet
|
|
143
|
+
* @param uid - The unique identifier of the sheet
|
|
144
|
+
* @returns The component instance, or undefined if not found
|
|
51
145
|
*/
|
|
52
|
-
|
|
146
|
+
getComponent<T extends HTMLElement = HTMLElement>(uid: string): T | undefined;
|
|
53
147
|
/**
|
|
54
|
-
*
|
|
148
|
+
* Checks if a sheet is currently open
|
|
149
|
+
* @param uid - The unique identifier of the sheet
|
|
150
|
+
* @returns True if the sheet is open, false otherwise
|
|
55
151
|
*/
|
|
56
152
|
isOpen(uid: string): boolean;
|
|
57
153
|
/**
|
|
58
|
-
*
|
|
154
|
+
* Closes all currently open sheets
|
|
59
155
|
*/
|
|
60
156
|
closeAll(): void;
|
|
157
|
+
/**
|
|
158
|
+
* Gets the sheet element for a given uid
|
|
159
|
+
* @param uid - The unique identifier of the sheet
|
|
160
|
+
* @returns The sheet element, or undefined if not found
|
|
161
|
+
*/
|
|
162
|
+
getSheetElement(uid: string): SchmancySheet | undefined;
|
|
61
163
|
}
|
|
62
|
-
|
|
63
|
-
export declare const
|
|
64
|
-
export {};
|
|
164
|
+
|
|
165
|
+
export declare const sheet: SheetService;
|
|
166
|
+
export {};
|
|
@@ -14,7 +14,7 @@ type PropertyDescriptor<T> = {
|
|
|
14
14
|
* Options for selecting from a store
|
|
15
15
|
*/
|
|
16
16
|
interface SelectOptions {
|
|
17
|
-
/** If true, will wait for selector to emit a
|
|
17
|
+
/** If true, will wait for selector to emit a value (including null) before calling connectedCallback. Only undefined is considered "not ready". Default is true. */
|
|
18
18
|
required?: boolean;
|
|
19
19
|
/** If true, will only update the component and not set the property value */
|
|
20
20
|
updateOnly?: boolean;
|