@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.
Files changed (325) hide show
  1. package/ai/sheet.md +87 -25
  2. package/dist/ai/sheet.md +87 -25
  3. package/dist/{animated-text-DcLpvyCq.js → animated-text-AbNgT7ie.js} +3 -3
  4. package/dist/{animated-text-DcLpvyCq.js.map → animated-text-AbNgT7ie.js.map} +1 -1
  5. package/dist/{animated-text-BitOmeE1.cjs → animated-text-CYmUxmlv.cjs} +2 -2
  6. package/dist/{animated-text-BitOmeE1.cjs.map → animated-text-CYmUxmlv.cjs.map} +1 -1
  7. package/dist/animated-text.cjs +1 -1
  8. package/dist/animated-text.js +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/{area.component-BTLn3oIv.cjs → area.component-B1Lmmsuk.cjs} +2 -2
  11. package/dist/{area.component-BTLn3oIv.cjs.map → area.component-B1Lmmsuk.cjs.map} +1 -1
  12. package/dist/{area.component-xbNRrst9.js → area.component-BxrgxiLv.js} +3 -3
  13. package/dist/{area.component-xbNRrst9.js.map → area.component-BxrgxiLv.js.map} +1 -1
  14. package/dist/area.js +2 -2
  15. package/dist/{autocomplete-BqRrw118.js → autocomplete-Bx1vWN32.js} +3 -3
  16. package/dist/{autocomplete-BqRrw118.js.map → autocomplete-Bx1vWN32.js.map} +1 -1
  17. package/dist/{autocomplete-Dvc06UNM.cjs → autocomplete-ClTDM1cy.cjs} +2 -2
  18. package/dist/{autocomplete-Dvc06UNM.cjs.map → autocomplete-ClTDM1cy.cjs.map} +1 -1
  19. package/dist/autocomplete.cjs +1 -1
  20. package/dist/autocomplete.js +1 -1
  21. package/dist/{avatar-CP5pbPbp.cjs → avatar-0h3VHdWs.cjs} +2 -2
  22. package/dist/{avatar-CP5pbPbp.cjs.map → avatar-0h3VHdWs.cjs.map} +1 -1
  23. package/dist/{avatar-Cb_cbT8R.js → avatar-C5iIJlD9.js} +46 -46
  24. package/dist/{avatar-Cb_cbT8R.js.map → avatar-C5iIJlD9.js.map} +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{boat-Dtum9CaN.cjs → boat--6fKaS1r.cjs} +2 -2
  28. package/dist/{boat-Dtum9CaN.cjs.map → boat--6fKaS1r.cjs.map} +1 -1
  29. package/dist/{boat-ByFTBKD2.js → boat-vVWqUMYt.js} +2 -2
  30. package/dist/{boat-ByFTBKD2.js.map → boat-vVWqUMYt.js.map} +1 -1
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/busy.cjs +1 -1
  34. package/dist/busy.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +1 -1
  37. package/dist/card.cjs +1 -1
  38. package/dist/card.js +1 -1
  39. package/dist/{checkbox-Dq0Lm3AM.js → checkbox-91xSd_El.js} +5 -5
  40. package/dist/{checkbox-Dq0Lm3AM.js.map → checkbox-91xSd_El.js.map} +1 -1
  41. package/dist/{checkbox-220X9LTx.cjs → checkbox-CcKQi7Hq.cjs} +2 -2
  42. package/dist/{checkbox-220X9LTx.cjs.map → checkbox-CcKQi7Hq.cjs.map} +1 -1
  43. package/dist/checkbox.cjs +1 -1
  44. package/dist/checkbox.js +1 -1
  45. package/dist/{chips-aRU1fwEV.js → chips-D26R6u7T.js} +3 -3
  46. package/dist/{chips-aRU1fwEV.js.map → chips-D26R6u7T.js.map} +1 -1
  47. package/dist/{chips-jORxgpG7.cjs → chips-Duj_48dP.cjs} +2 -2
  48. package/dist/{chips-jORxgpG7.cjs.map → chips-Duj_48dP.cjs.map} +1 -1
  49. package/dist/chips.cjs +1 -1
  50. package/dist/chips.js +1 -1
  51. package/dist/{circular-progress-Dis30LMa.js → circular-progress-BAzvWUr0.js} +3 -3
  52. package/dist/{circular-progress-Dis30LMa.js.map → circular-progress-BAzvWUr0.js.map} +1 -1
  53. package/dist/{circular-progress-DMccmWrI.cjs → circular-progress-CeiF8CYP.cjs} +2 -2
  54. package/dist/{circular-progress-DMccmWrI.cjs.map → circular-progress-CeiF8CYP.cjs.map} +1 -1
  55. package/dist/circular-progress.cjs +1 -1
  56. package/dist/circular-progress.js +1 -1
  57. package/dist/code-highlight.cjs +1 -1
  58. package/dist/code-highlight.js +1 -1
  59. package/dist/{code-preview-CCHcWZvS.cjs → code-preview-BCUSwkuU.cjs} +13 -13
  60. package/dist/{code-preview-CCHcWZvS.cjs.map → code-preview-BCUSwkuU.cjs.map} +1 -1
  61. package/dist/{code-preview-BwIb73Yd.js → code-preview-kNXSixdo.js} +333 -331
  62. package/dist/{code-preview-BwIb73Yd.js.map → code-preview-kNXSixdo.js.map} +1 -1
  63. package/dist/components.cjs +1 -1
  64. package/dist/components.js +1 -1
  65. package/dist/consume-5D1qfVWM.js.map +1 -1
  66. package/dist/consume-edta5ng5.cjs.map +1 -1
  67. package/dist/content-drawer.cjs +1 -1
  68. package/dist/content-drawer.js +1 -1
  69. package/dist/context-object-CDDP4bTk.js.map +1 -1
  70. package/dist/context-object-K_1gDFu-.cjs.map +1 -1
  71. package/dist/{date-range-DinaPWK0.cjs → date-range-CBrZ7Pm6.cjs} +2 -2
  72. package/dist/{date-range-DinaPWK0.cjs.map → date-range-CBrZ7Pm6.cjs.map} +1 -1
  73. package/dist/{date-range-CA_4vjWe.js → date-range-gp2cu49l.js} +3 -3
  74. package/dist/{date-range-CA_4vjWe.js.map → date-range-gp2cu49l.js.map} +1 -1
  75. package/dist/{date-range-inline-DFjyAvPv.js → date-range-inline-DZwtgeXX.js} +3 -3
  76. package/dist/{date-range-inline-DFjyAvPv.js.map → date-range-inline-DZwtgeXX.js.map} +1 -1
  77. package/dist/{date-range-inline-CGMvaSeh.cjs → date-range-inline-ZPM9dCG1.cjs} +2 -2
  78. package/dist/{date-range-inline-CGMvaSeh.cjs.map → date-range-inline-ZPM9dCG1.cjs.map} +1 -1
  79. package/dist/date-range-inline.cjs +1 -1
  80. package/dist/date-range-inline.js +1 -1
  81. package/dist/date-range.cjs +1 -1
  82. package/dist/date-range.js +1 -1
  83. package/dist/{delay-CHAH30wI.cjs → delay-CUpeZtD8.cjs} +2 -2
  84. package/dist/{delay-CHAH30wI.cjs.map → delay-CUpeZtD8.cjs.map} +1 -1
  85. package/dist/{delay-BJwsHbg3.js → delay-CYxt2x_w.js} +2 -2
  86. package/dist/{delay-BJwsHbg3.js.map → delay-CYxt2x_w.js.map} +1 -1
  87. package/dist/delay.cjs +1 -1
  88. package/dist/delay.js +1 -1
  89. package/dist/{dialog-content-Bp2kwzxD.cjs → dialog-content-Cz2MP3fS.cjs} +2 -2
  90. package/dist/{dialog-content-Bp2kwzxD.cjs.map → dialog-content-Cz2MP3fS.cjs.map} +1 -1
  91. package/dist/{dialog-content-CEZqJRzH.js → dialog-content-DmUr4jZM.js} +3 -3
  92. package/dist/{dialog-content-CEZqJRzH.js.map → dialog-content-DmUr4jZM.js.map} +1 -1
  93. package/dist/dialog-service-BZZK8N6A.cjs.map +1 -1
  94. package/dist/dialog-service-DFMlRcXf.js.map +1 -1
  95. package/dist/dialog.cjs +1 -1
  96. package/dist/dialog.js +1 -1
  97. package/dist/{divider-DfetUf4S.js → divider-BreFKYh2.js} +3 -3
  98. package/dist/{divider-DfetUf4S.js.map → divider-BreFKYh2.js.map} +1 -1
  99. package/dist/{divider-BEVgt1wl.cjs → divider-Cd5pOeZr.cjs} +2 -2
  100. package/dist/{divider-BEVgt1wl.cjs.map → divider-Cd5pOeZr.cjs.map} +1 -1
  101. package/dist/divider.cjs +1 -1
  102. package/dist/divider.js +1 -1
  103. package/dist/{dropdown-content-TJmZ3rpA.js → dropdown-content-DjIvlBvq.js} +3 -3
  104. package/dist/{dropdown-content-TJmZ3rpA.js.map → dropdown-content-DjIvlBvq.js.map} +1 -1
  105. package/dist/{dropdown-content-CERnSXjI.cjs → dropdown-content-zLE8scWl.cjs} +2 -2
  106. package/dist/{dropdown-content-CERnSXjI.cjs.map → dropdown-content-zLE8scWl.cjs.map} +1 -1
  107. package/dist/dropdown.cjs +1 -1
  108. package/dist/dropdown.js +1 -1
  109. package/dist/extra.cjs +1 -1
  110. package/dist/extra.js +1 -1
  111. package/dist/{flex-ByanQCYb.cjs → flex-CEq4v4cK.cjs} +2 -2
  112. package/dist/{flex-ByanQCYb.cjs.map → flex-CEq4v4cK.cjs.map} +1 -1
  113. package/dist/{flex-CXMNh-nH.js → flex-DRvBt9P0.js} +2 -2
  114. package/dist/{flex-CXMNh-nH.js.map → flex-DRvBt9P0.js.map} +1 -1
  115. package/dist/flow-D0e7hGXO.cjs.map +1 -1
  116. package/dist/flow-DXYqC9OA.js.map +1 -1
  117. package/dist/{form-lhQx_Ry0.cjs → form-B5CAbB2i.cjs} +2 -2
  118. package/dist/{form-lhQx_Ry0.cjs.map → form-B5CAbB2i.cjs.map} +1 -1
  119. package/dist/{form-Boc5Pqhf.js → form-BKqz7W6V.js} +2 -2
  120. package/dist/{form-Boc5Pqhf.js.map → form-BKqz7W6V.js.map} +1 -1
  121. package/dist/form.cjs +1 -1
  122. package/dist/form.js +1 -1
  123. package/dist/{formField.mixin-DhiLSVHT.cjs → formField.mixin-BuKEbib1.cjs} +2 -2
  124. package/dist/{formField.mixin-DhiLSVHT.cjs.map → formField.mixin-BuKEbib1.cjs.map} +1 -1
  125. package/dist/{formField.mixin-CX7_nvVy.js → formField.mixin-DCPfsyya.js} +2 -2
  126. package/dist/{formField.mixin-CX7_nvVy.js.map → formField.mixin-DCPfsyya.js.map} +1 -1
  127. package/dist/{icon-D1qw18N6.cjs → icon-B0_pMF_-.cjs} +2 -2
  128. package/dist/{icon-D1qw18N6.cjs.map → icon-B0_pMF_-.cjs.map} +1 -1
  129. package/dist/{icon-BZw88sCH.js → icon-DA0eDV8w.js} +2 -2
  130. package/dist/{icon-BZw88sCH.js.map → icon-DA0eDV8w.js.map} +1 -1
  131. package/dist/{icon-button-TbwQrO1b.js → icon-button-CEnel9Yg.js} +3 -3
  132. package/dist/{icon-button-TbwQrO1b.js.map → icon-button-CEnel9Yg.js.map} +1 -1
  133. package/dist/{icon-button-DBvZApEC.cjs → icon-button-DFVuusoz.cjs} +2 -2
  134. package/dist/{icon-button-DBvZApEC.cjs.map → icon-button-DFVuusoz.cjs.map} +1 -1
  135. package/dist/icons.cjs +1 -1
  136. package/dist/icons.js +1 -1
  137. package/dist/index-CuY8m6ta.js.map +1 -1
  138. package/dist/index-DyJ0oDpR.cjs.map +1 -1
  139. package/dist/index.cjs +1 -1
  140. package/dist/index.js +133 -134
  141. package/dist/{input-BUtEXu3y.js → input-B7Q3RRwE.js} +3 -3
  142. package/dist/{input-BUtEXu3y.js.map → input-B7Q3RRwE.js.map} +1 -1
  143. package/dist/{input-C0F9cNoD.cjs → input-C4tYxk-t.cjs} +2 -2
  144. package/dist/{input-C0F9cNoD.cjs.map → input-C4tYxk-t.cjs.map} +1 -1
  145. package/dist/input.cjs +1 -1
  146. package/dist/input.js +1 -1
  147. package/dist/intersection-CJxzz8c-.js.map +1 -1
  148. package/dist/intersection-CVvaDv96.cjs.map +1 -1
  149. package/dist/layout.cjs +1 -1
  150. package/dist/layout.js +1 -1
  151. package/dist/{list-BCD8h2Do.js → list-BTm67LuV.js} +2 -2
  152. package/dist/{list-BCD8h2Do.js.map → list-BTm67LuV.js.map} +1 -1
  153. package/dist/{list-Bz6tq7ZP.cjs → list-Bos26fD3.cjs} +2 -2
  154. package/dist/{list-Bz6tq7ZP.cjs.map → list-Bos26fD3.cjs.map} +1 -1
  155. package/dist/list.cjs +1 -1
  156. package/dist/list.js +1 -1
  157. package/dist/{litElement.mixin-DGeprHKB.js → litElement.mixin-Cn8IAazz.js} +2 -2
  158. package/dist/{litElement.mixin-DGeprHKB.js.map → litElement.mixin-Cn8IAazz.js.map} +1 -1
  159. package/dist/{litElement.mixin-CII9bbap.cjs → litElement.mixin-Cs3zx2X6.cjs} +2 -2
  160. package/dist/{litElement.mixin-CII9bbap.cjs.map → litElement.mixin-Cs3zx2X6.cjs.map} +1 -1
  161. package/dist/{media-D6ba0wB1.js → media-DPQecp4W.js} +2 -2
  162. package/dist/{media-D6ba0wB1.js.map → media-DPQecp4W.js.map} +1 -1
  163. package/dist/{media-CBLuAmNZ.cjs → media-YhMV6ELC.cjs} +2 -2
  164. package/dist/{media-CBLuAmNZ.cjs.map → media-YhMV6ELC.cjs.map} +1 -1
  165. package/dist/{menu-BDQr8EZ1.cjs → menu-BfNE5Pz2.cjs} +2 -2
  166. package/dist/{menu-BDQr8EZ1.cjs.map → menu-BfNE5Pz2.cjs.map} +1 -1
  167. package/dist/{menu-C0SauakY.js → menu-C5KQk1CK.js} +3 -3
  168. package/dist/{menu-C0SauakY.js.map → menu-C5KQk1CK.js.map} +1 -1
  169. package/dist/menu.cjs +1 -1
  170. package/dist/menu.js +1 -1
  171. package/dist/nav-drawer.cjs +1 -1
  172. package/dist/nav-drawer.js +1 -1
  173. package/dist/{notification-service-B1f848tO.cjs → notification-service-Bq_d-qqB.cjs} +2 -2
  174. package/dist/{notification-service-B1f848tO.cjs.map → notification-service-Bq_d-qqB.cjs.map} +1 -1
  175. package/dist/{notification-service-X8mRASdk.js → notification-service-unFpqUQn.js} +3 -3
  176. package/dist/{notification-service-X8mRASdk.js.map → notification-service-unFpqUQn.js.map} +1 -1
  177. package/dist/notification.cjs +1 -1
  178. package/dist/notification.js +1 -1
  179. package/dist/{option-ckV22mLf.cjs → option-B9LbtNdk.cjs} +2 -2
  180. package/dist/{option-ckV22mLf.cjs.map → option-B9LbtNdk.cjs.map} +1 -1
  181. package/dist/{option-DVlCqux7.js → option-Cy-nYxTs.js} +2 -2
  182. package/dist/{option-DVlCqux7.js.map → option-Cy-nYxTs.js.map} +1 -1
  183. package/dist/option.cjs +1 -1
  184. package/dist/option.js +1 -1
  185. package/dist/{payment-card-form-BUsPCZPp.cjs → payment-card-form-D45IjHFN.cjs} +2 -2
  186. package/dist/{payment-card-form-BUsPCZPp.cjs.map → payment-card-form-D45IjHFN.cjs.map} +1 -1
  187. package/dist/{payment-card-form-D7PV8spa.js → payment-card-form-ctWIc4vM.js} +3 -3
  188. package/dist/{payment-card-form-D7PV8spa.js.map → payment-card-form-ctWIc4vM.js.map} +1 -1
  189. package/dist/{progress-BZ6AFT0f.js → progress-4Ef6bw05.js} +2 -2
  190. package/dist/{progress-BZ6AFT0f.js.map → progress-4Ef6bw05.js.map} +1 -1
  191. package/dist/{progress-CABg45XF.cjs → progress-QXnS6DIm.cjs} +2 -2
  192. package/dist/{progress-CABg45XF.cjs.map → progress-QXnS6DIm.cjs.map} +1 -1
  193. package/dist/progress.cjs +1 -1
  194. package/dist/progress.js +1 -1
  195. package/dist/provide-BxZ2kn_p.cjs.map +1 -1
  196. package/dist/provide-tcktw8xB.js.map +1 -1
  197. package/dist/{radio-button-D4Y1bWGN.js → radio-button-CEp1kd-P.js} +3 -3
  198. package/dist/{radio-button-D4Y1bWGN.js.map → radio-button-CEp1kd-P.js.map} +1 -1
  199. package/dist/{radio-button-DQ4VclEZ.cjs → radio-button-CUzdKTtW.cjs} +2 -2
  200. package/dist/{radio-button-DQ4VclEZ.cjs.map → radio-button-CUzdKTtW.cjs.map} +1 -1
  201. package/dist/radio-group.cjs +1 -1
  202. package/dist/radio-group.js +1 -1
  203. package/dist/redispatch-event-BLom7yp4.js.map +1 -1
  204. package/dist/redispatch-event-DHcobAl6.cjs.map +1 -1
  205. package/dist/ripple-BumgqsDT.js.map +1 -1
  206. package/dist/ripple-C2BHbhcS.cjs.map +1 -1
  207. package/dist/rxjs-utils.cjs.map +1 -1
  208. package/dist/rxjs-utils.js.map +1 -1
  209. package/dist/{schmancy-steps-container-CZ0upElE.cjs → schmancy-steps-container-D3m07gLT.cjs} +2 -2
  210. package/dist/{schmancy-steps-container-CZ0upElE.cjs.map → schmancy-steps-container-D3m07gLT.cjs.map} +1 -1
  211. package/dist/{schmancy-steps-container-BskkdQwD.js → schmancy-steps-container-KI2azXpv.js} +2 -2
  212. package/dist/{schmancy-steps-container-BskkdQwD.js.map → schmancy-steps-container-KI2azXpv.js.map} +1 -1
  213. package/dist/{select-DfQogfes.cjs → select-Bw4QilHf.cjs} +3 -3
  214. package/dist/{select-DfQogfes.cjs.map → select-Bw4QilHf.cjs.map} +1 -1
  215. package/dist/{select-wui4bIUE.js → select-g77JoEFx.js} +18 -20
  216. package/dist/{select-wui4bIUE.js.map → select-g77JoEFx.js.map} +1 -1
  217. package/dist/select.cjs +1 -1
  218. package/dist/select.js +2 -3
  219. package/dist/selector-hook-Bf_lCnGW.cjs.map +1 -1
  220. package/dist/{selector-hook-DL0SIQiY.js → selector-hook-DPe2CGKx.js} +16 -16
  221. package/dist/{selector-hook-DL0SIQiY.js.map → selector-hook-DPe2CGKx.js.map} +1 -1
  222. package/dist/{sheet-DMOsLeJL.cjs → sheet--fG_jGSI.cjs} +2 -2
  223. package/dist/{sheet-DMOsLeJL.cjs.map → sheet--fG_jGSI.cjs.map} +1 -1
  224. package/dist/{sheet-DmrPnCAk.js → sheet-edcIHEMM.js} +4 -4
  225. package/dist/{sheet-DmrPnCAk.js.map → sheet-edcIHEMM.js.map} +1 -1
  226. package/dist/sheet.cjs +1 -1
  227. package/dist/sheet.js +6 -7
  228. package/dist/{sheet.service-22gvsyq8.js → sheet.service-BKQ7n7nz.js} +480 -471
  229. package/dist/{sheet.service-22gvsyq8.js.map → sheet.service-BKQ7n7nz.js.map} +1 -1
  230. package/dist/{sheet.service-sSYoAEbY.cjs → sheet.service-ihtgUWRM.cjs} +3 -3
  231. package/dist/{sheet.service-sSYoAEbY.cjs.map → sheet.service-ihtgUWRM.cjs.map} +1 -1
  232. package/dist/{slider-Dwm1KfNL.js → slider-BJQE9wHL.js} +3 -3
  233. package/dist/{slider-Dwm1KfNL.js.map → slider-BJQE9wHL.js.map} +1 -1
  234. package/dist/{slider-C2oEvRAS.cjs → slider-DMIOW38W.cjs} +2 -2
  235. package/dist/{slider-C2oEvRAS.cjs.map → slider-DMIOW38W.cjs.map} +1 -1
  236. package/dist/slider.cjs +1 -1
  237. package/dist/slider.js +1 -1
  238. package/dist/{spinner-DKgZemVU.cjs → spinner-ByMXQNV3.cjs} +2 -2
  239. package/dist/{spinner-DKgZemVU.cjs.map → spinner-ByMXQNV3.cjs.map} +1 -1
  240. package/dist/{spinner-Bh6XkC88.js → spinner-NFkGJJz1.js} +2 -2
  241. package/dist/{spinner-Bh6XkC88.js.map → spinner-NFkGJJz1.js.map} +1 -1
  242. package/dist/steps.cjs +1 -1
  243. package/dist/steps.js +1 -1
  244. package/dist/store.js +1 -1
  245. package/dist/{surface-DIIUamff.cjs → surface-BhCe8hp8.cjs} +2 -2
  246. package/dist/{surface-DIIUamff.cjs.map → surface-BhCe8hp8.cjs.map} +1 -1
  247. package/dist/{surface-DhiuAGb8.js → surface-C7jJaxVu.js} +2 -2
  248. package/dist/{surface-DhiuAGb8.js.map → surface-C7jJaxVu.js.map} +1 -1
  249. package/dist/surface.cjs +1 -1
  250. package/dist/surface.js +1 -1
  251. package/dist/{table-BrAoSQhN.cjs → table-BlwkABmS.cjs} +2 -2
  252. package/dist/{table-BrAoSQhN.cjs.map → table-BlwkABmS.cjs.map} +1 -1
  253. package/dist/{table-DSZ9kmUG.js → table-CmwIcTR5.js} +2 -2
  254. package/dist/{table-DSZ9kmUG.js.map → table-CmwIcTR5.js.map} +1 -1
  255. package/dist/table.cjs +1 -1
  256. package/dist/table.js +1 -1
  257. package/dist/{tabs-compatibility-B7aJnQ0X.js → tabs-compatibility-BdKslPOu.js} +2 -2
  258. package/dist/{tabs-compatibility-B7aJnQ0X.js.map → tabs-compatibility-BdKslPOu.js.map} +1 -1
  259. package/dist/{tabs-compatibility-Ck74XeID.cjs → tabs-compatibility-v0k0K0ID.cjs} +2 -2
  260. package/dist/{tabs-compatibility-Ck74XeID.cjs.map → tabs-compatibility-v0k0K0ID.cjs.map} +1 -1
  261. package/dist/tabs.cjs +1 -1
  262. package/dist/tabs.js +1 -1
  263. package/dist/{tailwind.mixin-CBu1BEQZ.cjs → tailwind.mixin-1kcW0BGm.cjs} +2 -2
  264. package/dist/{tailwind.mixin-CBu1BEQZ.cjs.map → tailwind.mixin-1kcW0BGm.cjs.map} +1 -1
  265. package/dist/{tailwind.mixin-DWhCm94g.js → tailwind.mixin-BHLwDiBj.js} +2 -2
  266. package/dist/{tailwind.mixin-DWhCm94g.js.map → tailwind.mixin-BHLwDiBj.js.map} +1 -1
  267. package/dist/teleport.cjs +1 -1
  268. package/dist/teleport.js +1 -1
  269. package/dist/{textarea-CGTMdhoF.cjs → textarea-CL3oExE7.cjs} +2 -2
  270. package/dist/{textarea-CGTMdhoF.cjs.map → textarea-CL3oExE7.cjs.map} +1 -1
  271. package/dist/{textarea-Bq0XdGaH.js → textarea-CfLyPiqF.js} +2 -2
  272. package/dist/{textarea-Bq0XdGaH.js.map → textarea-CfLyPiqF.js.map} +1 -1
  273. package/dist/textarea.cjs +1 -1
  274. package/dist/textarea.js +1 -1
  275. package/dist/{theme-button-CznhJ8g_.cjs → theme-button-D9DpgXlC.cjs} +2 -2
  276. package/dist/{theme-button-CznhJ8g_.cjs.map → theme-button-D9DpgXlC.cjs.map} +1 -1
  277. package/dist/{theme-button-DYoygmRA.js → theme-button-tekBpoTr.js} +2 -2
  278. package/dist/{theme-button-DYoygmRA.js.map → theme-button-tekBpoTr.js.map} +1 -1
  279. package/dist/theme-button.cjs +1 -1
  280. package/dist/theme-button.js +1 -1
  281. package/dist/theme.cjs +1 -1
  282. package/dist/theme.interface-C5Kj6WjD.js.map +1 -1
  283. package/dist/theme.interface-Xg5Zi46a.cjs.map +1 -1
  284. package/dist/theme.js +1 -1
  285. package/dist/{timezone-BCGcdasU.cjs → timezone-DIYE4qo4.cjs} +2 -2
  286. package/dist/{timezone-BCGcdasU.cjs.map → timezone-DIYE4qo4.cjs.map} +1 -1
  287. package/dist/{timezone-Co7gqqQt.js → timezone-rpn_HlNW.js} +3 -3
  288. package/dist/{timezone-Co7gqqQt.js.map → timezone-rpn_HlNW.js.map} +1 -1
  289. package/dist/{tooltip-DBuaAFmK.js → tooltip-C5DJ3omV.js} +2 -2
  290. package/dist/{tooltip-DBuaAFmK.js.map → tooltip-C5DJ3omV.js.map} +1 -1
  291. package/dist/{tooltip-Bqa0D34J.cjs → tooltip-apPpbYRb.cjs} +2 -2
  292. package/dist/{tooltip-Bqa0D34J.cjs.map → tooltip-apPpbYRb.cjs.map} +1 -1
  293. package/dist/tooltip.cjs +1 -1
  294. package/dist/tooltip.js +1 -1
  295. package/dist/{tree-CfE695gp.js → tree-B38B9Zts.js} +2 -2
  296. package/dist/{tree-CfE695gp.js.map → tree-B38B9Zts.js.map} +1 -1
  297. package/dist/{tree-CFeXYaJy.cjs → tree-DYOX-2CI.cjs} +2 -2
  298. package/dist/{tree-CFeXYaJy.cjs.map → tree-DYOX-2CI.cjs.map} +1 -1
  299. package/dist/tree.cjs +1 -1
  300. package/dist/tree.js +1 -1
  301. package/dist/tslib.es6-DgOcxv4s.cjs.map +1 -1
  302. package/dist/tslib.es6-ujVQHAQ4.js.map +1 -1
  303. package/dist/types.cjs.map +1 -1
  304. package/dist/types.js.map +1 -1
  305. package/dist/{typewriter-BZ_adVXB.js → typewriter-Cf1Bl0lI.js} +4 -4
  306. package/dist/{typewriter-BZ_adVXB.js.map → typewriter-Cf1Bl0lI.js.map} +1 -1
  307. package/dist/{typewriter-B6Jb22Pe.cjs → typewriter-D5sC3i_h.cjs} +2 -2
  308. package/dist/{typewriter-B6Jb22Pe.cjs.map → typewriter-D5sC3i_h.cjs.map} +1 -1
  309. package/dist/typewriter.cjs +1 -1
  310. package/dist/typewriter.js +1 -1
  311. package/dist/{typography-DvVeO1a_.cjs → typography-VDYy4xDQ.cjs} +2 -2
  312. package/dist/{typography-DvVeO1a_.cjs.map → typography-VDYy4xDQ.cjs.map} +1 -1
  313. package/dist/{typography-DI5RXpWs.js → typography-sm5Ne22S.js} +2 -2
  314. package/dist/{typography-DI5RXpWs.js.map → typography-sm5Ne22S.js.map} +1 -1
  315. package/dist/typography.cjs +1 -1
  316. package/dist/typography.js +1 -1
  317. package/dist/{utils-jduntaQU.js → utils-03Coa8AW.js} +2 -2
  318. package/dist/{utils-jduntaQU.js.map → utils-03Coa8AW.js.map} +1 -1
  319. package/dist/{utils-BqFGvnN9.cjs → utils-C9nzOWpR.cjs} +2 -2
  320. package/dist/{utils-BqFGvnN9.cjs.map → utils-C9nzOWpR.cjs.map} +1 -1
  321. package/package.json +10 -10
  322. package/types/src/index.d.ts +2 -0
  323. package/types/src/select/select.d.ts +2 -0
  324. package/types/src/sheet/sheet.service.d.ts +128 -26
  325. 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|=0;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-BqFGvnN9.cjs.map
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.24",
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.8",
50
- "@lit-labs/virtualizer": "^2.1.0",
51
- "@lit/context": "^1.1.5",
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.0",
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.8",
81
+ "@types/node": "^24.1.0",
82
82
  "@types/uuid": "^10.0.0",
83
- "@typescript-eslint/parser": "^8.35.1",
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.30.0",
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.0",
95
+ "vite": "^7.0.6",
96
96
  "vite-plugin-sitemap": "^0.8.2",
97
- "vite-plugin-webfont-dl": "^3.10.5",
97
+ "vite-plugin-webfont-dl": "^3.11.1",
98
98
  "vitest": "^3.2.4"
99
99
  },
100
100
  "peerDependencies": {
@@ -51,3 +51,5 @@ export * from './typewriter';
51
51
  export * from './typography';
52
52
  export * from './utils';
53
53
  export * from './avatar';
54
+ export { select } from './select';
55
+ export { sheet } from './sheet';
@@ -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
- type BottomSheeetTarget = {
8
- component: HTMLElement;
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
- export type SheetWhereAreYouRickyEvent = CustomEvent<{
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
- export declare const SheetWhereAreYouRicky = "are-you-there-sheet";
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
- declare class BottomSheetService {
28
- bottomSheet: Subject<BottomSheeetTarget>;
29
- $dismiss: Subject<string>;
30
- private activeSheets;
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
- * Sets up the main sheet opening logic
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 setupSheetOpeningLogic;
99
+ private discoverOrCreateSheet;
37
100
  /**
38
- * Sets up the sheet closing/dismissal logic
101
+ * Applies configuration to a sheet element
39
102
  */
40
- private setupSheetDismissLogic;
103
+ private configureSheet;
41
104
  /**
42
- * Sets up the popstate listener to handle browser back button
105
+ * Handles the sheet opening logic
43
106
  */
44
- private setupPopStateListener;
107
+ private setupOpenStream;
45
108
  /**
46
- * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided
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
- * Open a sheet with the given target configuration
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
- open(target: BottomSheeetTarget): void;
146
+ getComponent<T extends HTMLElement = HTMLElement>(uid: string): T | undefined;
53
147
  /**
54
- * Check if a sheet is currently open by uid
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
- * Close all open sheets
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
- export declare const sheet: BottomSheetService;
63
- export declare const $sheet: BottomSheetService;
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 non-null value before calling connectedCallback. Default is true. */
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;