@mhmo91/schmancy 0.7.2 → 0.7.4

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 (392) hide show
  1. package/README.md +1 -0
  2. package/ai/animated-text.md +2 -0
  3. package/ai/boat.md +1 -0
  4. package/ai/map.md +1 -0
  5. package/dist/ai/animated-text.md +2 -0
  6. package/dist/ai/boat.md +1 -0
  7. package/dist/ai/map.md +1 -0
  8. package/dist/{animated-text-B8pXfnjg.cjs → animated-text-DnFenRS1.cjs} +2 -2
  9. package/dist/{animated-text-B8pXfnjg.cjs.map → animated-text-DnFenRS1.cjs.map} +1 -1
  10. package/dist/{animated-text-C7RzcmyV.js → animated-text-YBgWXuVJ.js} +3 -3
  11. package/dist/{animated-text-C7RzcmyV.js.map → animated-text-YBgWXuVJ.js.map} +1 -1
  12. package/dist/animated-text.cjs +1 -1
  13. package/dist/animated-text.js +1 -1
  14. package/dist/area.cjs +1 -1
  15. package/dist/{area.component-TRIJcSoQ.cjs → area.component-BojFAcRk.cjs} +2 -2
  16. package/dist/{area.component-TRIJcSoQ.cjs.map → area.component-BojFAcRk.cjs.map} +1 -1
  17. package/dist/{area.component-DfGcGjsN.js → area.component-C_nUxyiY.js} +3 -3
  18. package/dist/{area.component-DfGcGjsN.js.map → area.component-C_nUxyiY.js.map} +1 -1
  19. package/dist/area.js +1 -1
  20. package/dist/{autocomplete-Bhv2JOnL.js → autocomplete-B-X_D8MC.js} +5 -5
  21. package/dist/{autocomplete-Bhv2JOnL.js.map → autocomplete-B-X_D8MC.js.map} +1 -1
  22. package/dist/{autocomplete-Dio0lk_E.cjs → autocomplete-B8oOdRsV.cjs} +2 -2
  23. package/dist/{autocomplete-Dio0lk_E.cjs.map → autocomplete-B8oOdRsV.cjs.map} +1 -1
  24. package/dist/autocomplete.cjs +1 -1
  25. package/dist/autocomplete.js +1 -1
  26. package/dist/{avatar-DecX7RJw.cjs → avatar-Db95uagl.cjs} +2 -2
  27. package/dist/{avatar-DecX7RJw.cjs.map → avatar-Db95uagl.cjs.map} +1 -1
  28. package/dist/{avatar-BCLeThlA.js → avatar-TpHjBCrR.js} +53 -53
  29. package/dist/{avatar-BCLeThlA.js.map → avatar-TpHjBCrR.js.map} +1 -1
  30. package/dist/badge.cjs +1 -1
  31. package/dist/badge.js +1 -1
  32. package/dist/{boat-DrAkyCAd.js → boat-B7AKN6Ge.js} +3 -3
  33. package/dist/{boat-DrAkyCAd.js.map → boat-B7AKN6Ge.js.map} +1 -1
  34. package/dist/{boat-B3IhIJhy.cjs → boat-BhAuteUk.cjs} +2 -2
  35. package/dist/{boat-B3IhIJhy.cjs.map → boat-BhAuteUk.cjs.map} +1 -1
  36. package/dist/boat.cjs +1 -1
  37. package/dist/boat.js +1 -1
  38. package/dist/busy.cjs +1 -1
  39. package/dist/busy.js +1 -1
  40. package/dist/button.cjs +1 -1
  41. package/dist/button.js +1 -1
  42. package/dist/card.cjs +1 -1
  43. package/dist/card.js +1 -1
  44. package/dist/{checkbox-BKT1cZnv.js → checkbox-BOmazo-k.js} +14 -14
  45. package/dist/checkbox-BOmazo-k.js.map +1 -0
  46. package/dist/{checkbox-C4CHTajr.cjs → checkbox-DMfwDgYx.cjs} +3 -3
  47. package/dist/checkbox-DMfwDgYx.cjs.map +1 -0
  48. package/dist/checkbox.cjs +1 -1
  49. package/dist/checkbox.js +1 -1
  50. package/dist/chips.cjs +1 -1
  51. package/dist/chips.js +2 -2
  52. package/dist/code-highlight.cjs +1 -1
  53. package/dist/code-highlight.js +1 -1
  54. package/dist/code-preview-CbZzYTk2.cjs +193 -0
  55. package/dist/code-preview-CbZzYTk2.cjs.map +1 -0
  56. package/dist/{code-preview-DzMETSJv.js → code-preview-DgyY3Jlw.js} +27 -27
  57. package/dist/code-preview-DgyY3Jlw.js.map +1 -0
  58. package/dist/components.cjs +1 -1
  59. package/dist/components.js +1 -1
  60. package/dist/consume-5D1qfVWM.js.map +1 -1
  61. package/dist/consume-edta5ng5.cjs.map +1 -1
  62. package/dist/content-drawer.cjs +1 -1
  63. package/dist/content-drawer.js +1 -1
  64. package/dist/context-create-BJkkLr1D.cjs +2 -0
  65. package/dist/context-create-BJkkLr1D.cjs.map +1 -0
  66. package/dist/{context-create-DCiujzV2.js → context-create-BvxbWTgj.js} +276 -263
  67. package/dist/context-create-BvxbWTgj.js.map +1 -0
  68. package/dist/date-range-47SnbVM6.cjs +134 -0
  69. package/dist/date-range-47SnbVM6.cjs.map +1 -0
  70. package/dist/{date-range-B-5LtvhH.js → date-range-BV0479CW.js} +18 -18
  71. package/dist/date-range-BV0479CW.js.map +1 -0
  72. package/dist/{date-range-inline-D90CpK7z.js → date-range-inline-GfLao0NN.js} +3 -3
  73. package/dist/{date-range-inline-D90CpK7z.js.map → date-range-inline-GfLao0NN.js.map} +1 -1
  74. package/dist/{date-range-inline-DLV7jB_x.cjs → date-range-inline-HNDLTnYi.cjs} +2 -2
  75. package/dist/{date-range-inline-DLV7jB_x.cjs.map → date-range-inline-HNDLTnYi.cjs.map} +1 -1
  76. package/dist/date-range-inline.cjs +1 -1
  77. package/dist/date-range-inline.js +1 -1
  78. package/dist/date-range.cjs +1 -1
  79. package/dist/date-range.js +1 -1
  80. package/dist/{delay-D5RAR00M.js → delay-B40l99jW.js} +2 -2
  81. package/dist/delay-B40l99jW.js.map +1 -0
  82. package/dist/{delay-UAjkp-21.cjs → delay-Dr3Fr5YB.cjs} +2 -2
  83. package/dist/delay-Dr3Fr5YB.cjs.map +1 -0
  84. package/dist/delay.cjs +1 -1
  85. package/dist/delay.js +1 -1
  86. package/dist/{details-CiuixU2H.js → details-CQPpI_la.js} +2 -2
  87. package/dist/{details-CiuixU2H.js.map → details-CQPpI_la.js.map} +1 -1
  88. package/dist/{details-RHTdNCLS.cjs → details-DydvHvfw.cjs} +2 -2
  89. package/dist/{details-RHTdNCLS.cjs.map → details-DydvHvfw.cjs.map} +1 -1
  90. package/dist/details.cjs +1 -1
  91. package/dist/details.js +1 -1
  92. package/dist/{dialog-content-dtIrTHLU.js → dialog-content-B_amCfq7.js} +4 -4
  93. package/dist/{dialog-content-dtIrTHLU.js.map → dialog-content-B_amCfq7.js.map} +1 -1
  94. package/dist/{dialog-content-BF1xiYWw.cjs → dialog-content-Emd7BLQA.cjs} +2 -2
  95. package/dist/{dialog-content-BF1xiYWw.cjs.map → dialog-content-Emd7BLQA.cjs.map} +1 -1
  96. package/dist/dialog-service-B4nR8Em5.cjs +2 -0
  97. package/dist/dialog-service-B4nR8Em5.cjs.map +1 -0
  98. package/dist/dialog-service-Bege4HF4.js +140 -0
  99. package/dist/dialog-service-Bege4HF4.js.map +1 -0
  100. package/dist/dialog.cjs +1 -1
  101. package/dist/dialog.js +2 -2
  102. package/dist/{divider-ZhcWRyc2.cjs → divider-BF9xljgI.cjs} +2 -2
  103. package/dist/{divider-ZhcWRyc2.cjs.map → divider-BF9xljgI.cjs.map} +1 -1
  104. package/dist/{divider-DcEB9uHV.js → divider-BHruVdsE.js} +3 -3
  105. package/dist/{divider-DcEB9uHV.js.map → divider-BHruVdsE.js.map} +1 -1
  106. package/dist/divider.cjs +1 -1
  107. package/dist/divider.js +1 -1
  108. package/dist/{dropdown-content-klaWLDI-.cjs → dropdown-content-BpJq8Q1u.cjs} +2 -2
  109. package/dist/{dropdown-content-klaWLDI-.cjs.map → dropdown-content-BpJq8Q1u.cjs.map} +1 -1
  110. package/dist/{dropdown-content-BoUnfAyz.js → dropdown-content-Bw9jnfCR.js} +3 -3
  111. package/dist/{dropdown-content-BoUnfAyz.js.map → dropdown-content-Bw9jnfCR.js.map} +1 -1
  112. package/dist/dropdown.cjs +1 -1
  113. package/dist/dropdown.js +1 -1
  114. package/dist/{email-recipients-DA2HLG8K.cjs → email-recipients-Bxvu6zi9.cjs} +2 -2
  115. package/dist/{email-recipients-DA2HLG8K.cjs.map → email-recipients-Bxvu6zi9.cjs.map} +1 -1
  116. package/dist/{email-recipients-yN1Jcu9X.js → email-recipients-DZGMhyg4.js} +7 -7
  117. package/dist/{email-recipients-yN1Jcu9X.js.map → email-recipients-DZGMhyg4.js.map} +1 -1
  118. package/dist/extra.cjs +1 -1
  119. package/dist/extra.js +1 -1
  120. package/dist/{flex-C_fGjgWC.js → flex-DUgMxT_9.js} +2 -2
  121. package/dist/{flex-C_fGjgWC.js.map → flex-DUgMxT_9.js.map} +1 -1
  122. package/dist/{flex-CYCtLC7W.cjs → flex-DakK9gco.cjs} +2 -2
  123. package/dist/{flex-CYCtLC7W.cjs.map → flex-DakK9gco.cjs.map} +1 -1
  124. package/dist/flow-D0e7hGXO.cjs.map +1 -1
  125. package/dist/flow-DXYqC9OA.js.map +1 -1
  126. package/dist/{form-CYBgxvdH.cjs → form-CPmMvWvE.cjs} +2 -2
  127. package/dist/{form-CYBgxvdH.cjs.map → form-CPmMvWvE.cjs.map} +1 -1
  128. package/dist/{form-Dn3XWE7d.js → form-yZ1fh3h9.js} +2 -2
  129. package/dist/{form-Dn3XWE7d.js.map → form-yZ1fh3h9.js.map} +1 -1
  130. package/dist/form.cjs +1 -1
  131. package/dist/form.js +1 -1
  132. package/dist/{formField.mixin-Ds2S1kRc.js → formField.mixin-Cmb9YpmX.js} +2 -2
  133. package/dist/{formField.mixin-Ds2S1kRc.js.map → formField.mixin-Cmb9YpmX.js.map} +1 -1
  134. package/dist/{formField.mixin-D_gQgJXC.cjs → formField.mixin-D51klHq7.cjs} +2 -2
  135. package/dist/{formField.mixin-D_gQgJXC.cjs.map → formField.mixin-D51klHq7.cjs.map} +1 -1
  136. package/dist/{icon-Bw8hqRtQ.js → icon-DHT8YsE3.js} +2 -2
  137. package/dist/{icon-Bw8hqRtQ.js.map → icon-DHT8YsE3.js.map} +1 -1
  138. package/dist/{icon-DYGsNRVu.cjs → icon-Dsa_BddL.cjs} +2 -2
  139. package/dist/{icon-DYGsNRVu.cjs.map → icon-Dsa_BddL.cjs.map} +1 -1
  140. package/dist/{icon-button-BfjcTNKq.cjs → icon-button-BRcfLsJL.cjs} +2 -2
  141. package/dist/{icon-button-BfjcTNKq.cjs.map → icon-button-BRcfLsJL.cjs.map} +1 -1
  142. package/dist/{icon-button-Cu-RShdY.js → icon-button-PpRHFLCj.js} +3 -3
  143. package/dist/{icon-button-Cu-RShdY.js.map → icon-button-PpRHFLCj.js.map} +1 -1
  144. package/dist/icons.cjs +1 -1
  145. package/dist/icons.js +1 -1
  146. package/dist/index-CCi1otmh.cjs.map +1 -1
  147. package/dist/index-CW6PhEkx.js.map +1 -1
  148. package/dist/index.cjs +1 -1
  149. package/dist/index.js +54 -54
  150. package/dist/{input-UlrGLoXt.js → input-CYGSlByl.js} +4 -4
  151. package/dist/{input-UlrGLoXt.js.map → input-CYGSlByl.js.map} +1 -1
  152. package/dist/{input-D-YRT2vo.cjs → input-DB269a2X.cjs} +2 -2
  153. package/dist/{input-D-YRT2vo.cjs.map → input-DB269a2X.cjs.map} +1 -1
  154. package/dist/{input-chip-pho9bYvS.cjs → input-chip-CKYO8Lww.cjs} +2 -2
  155. package/dist/{input-chip-pho9bYvS.cjs.map → input-chip-CKYO8Lww.cjs.map} +1 -1
  156. package/dist/{input-chip-BwEuJAV5.js → input-chip-CTKPIRVA.js} +2 -2
  157. package/dist/{input-chip-BwEuJAV5.js.map → input-chip-CTKPIRVA.js.map} +1 -1
  158. package/dist/input.cjs +1 -1
  159. package/dist/input.js +1 -1
  160. package/dist/layout.cjs +1 -1
  161. package/dist/layout.js +1 -1
  162. package/dist/{list-CyCR5ywg.cjs → list-BQVTFNkq.cjs} +2 -2
  163. package/dist/{list-CyCR5ywg.cjs.map → list-BQVTFNkq.cjs.map} +1 -1
  164. package/dist/{list-B4x432bs.js → list-BbzeVuby.js} +2 -2
  165. package/dist/{list-B4x432bs.js.map → list-BbzeVuby.js.map} +1 -1
  166. package/dist/list.cjs +1 -1
  167. package/dist/list.js +1 -1
  168. package/dist/{litElement.mixin-BPe38Tqd.js → litElement.mixin-BzbZQbxa.js} +2 -2
  169. package/dist/{litElement.mixin-BPe38Tqd.js.map → litElement.mixin-BzbZQbxa.js.map} +1 -1
  170. package/dist/{litElement.mixin-DXaT0TQx.cjs → litElement.mixin-DzCpXwcY.cjs} +2 -2
  171. package/dist/{litElement.mixin-DXaT0TQx.cjs.map → litElement.mixin-DzCpXwcY.cjs.map} +1 -1
  172. package/dist/mailbox.cjs +1 -1
  173. package/dist/mailbox.js +1 -1
  174. package/dist/{map-CNoi0TZi.js → map-CgwU5Px4.js} +2 -2
  175. package/dist/{map-CNoi0TZi.js.map → map-CgwU5Px4.js.map} +1 -1
  176. package/dist/{map-C2fG3es8.cjs → map-DuTFI2lm.cjs} +2 -2
  177. package/dist/{map-C2fG3es8.cjs.map → map-DuTFI2lm.cjs.map} +1 -1
  178. package/dist/map.cjs +1 -1
  179. package/dist/map.js +1 -1
  180. package/dist/{media-D_ne5TmT.js → media-BnktmFRW.js} +2 -2
  181. package/dist/{media-D_ne5TmT.js.map → media-BnktmFRW.js.map} +1 -1
  182. package/dist/{media-dMr54ISj.cjs → media-gtpSHRFx.cjs} +2 -2
  183. package/dist/{media-dMr54ISj.cjs.map → media-gtpSHRFx.cjs.map} +1 -1
  184. package/dist/menu-C8PcWr7Y.cjs +26 -0
  185. package/dist/menu-C8PcWr7Y.cjs.map +1 -0
  186. package/dist/menu-DthqNQR7.js +63 -0
  187. package/dist/menu-DthqNQR7.js.map +1 -0
  188. package/dist/menu.cjs +1 -1
  189. package/dist/menu.js +1 -1
  190. package/dist/mixins.cjs +1 -1
  191. package/dist/mixins.js +3 -3
  192. package/dist/nav-drawer.cjs +1 -1
  193. package/dist/nav-drawer.js +1 -1
  194. package/dist/navigation-bar.cjs +1 -1
  195. package/dist/navigation-bar.js +1 -1
  196. package/dist/{navigation-rail-DM2NQY_2.js → navigation-rail-CUMNSz0h.js} +3 -3
  197. package/dist/{navigation-rail-DM2NQY_2.js.map → navigation-rail-CUMNSz0h.js.map} +1 -1
  198. package/dist/{navigation-rail-DfFgV2PX.cjs → navigation-rail-D8otIR2P.cjs} +2 -2
  199. package/dist/{navigation-rail-DfFgV2PX.cjs.map → navigation-rail-D8otIR2P.cjs.map} +1 -1
  200. package/dist/navigation-rail.cjs +1 -1
  201. package/dist/navigation-rail.js +1 -1
  202. package/dist/{notification-service-Cm_0BsnA.cjs → notification-service-CP6kGXVL.cjs} +2 -2
  203. package/dist/{notification-service-Cm_0BsnA.cjs.map → notification-service-CP6kGXVL.cjs.map} +1 -1
  204. package/dist/{notification-service-DDfyKN2r.js → notification-service-E16lPsiT.js} +4 -4
  205. package/dist/{notification-service-DDfyKN2r.js.map → notification-service-E16lPsiT.js.map} +1 -1
  206. package/dist/notification.cjs +1 -1
  207. package/dist/notification.js +2 -2
  208. package/dist/{notify-DMoBBADS.cjs → notify-Czdp7BbG.cjs} +2 -2
  209. package/dist/{notify-DMoBBADS.cjs.map → notify-Czdp7BbG.cjs.map} +1 -1
  210. package/dist/{notify-BGHQRbsD.js → notify-D865xIlu.js} +2 -2
  211. package/dist/{notify-BGHQRbsD.js.map → notify-D865xIlu.js.map} +1 -1
  212. package/dist/{option-MaqD_vGw.cjs → option-B1r0hb3H.cjs} +2 -2
  213. package/dist/{option-MaqD_vGw.cjs.map → option-B1r0hb3H.cjs.map} +1 -1
  214. package/dist/{option-EBGoYClu.js → option-cJ8fM5qJ.js} +2 -2
  215. package/dist/{option-EBGoYClu.js.map → option-cJ8fM5qJ.js.map} +1 -1
  216. package/dist/option.cjs +1 -1
  217. package/dist/option.js +1 -1
  218. package/dist/{payment-card-form-DZmaLaVl.cjs → payment-card-form-EO3auDS8.cjs} +2 -2
  219. package/dist/payment-card-form-EO3auDS8.cjs.map +1 -0
  220. package/dist/{payment-card-form-p_Wj1NRm.js → payment-card-form-RBjpMc2m.js} +3 -3
  221. package/dist/payment-card-form-RBjpMc2m.js.map +1 -0
  222. package/dist/{progress-DC88fksT.js → progress-4v9FzvOT.js} +2 -2
  223. package/dist/{progress-DC88fksT.js.map → progress-4v9FzvOT.js.map} +1 -1
  224. package/dist/{progress-BqIOFoJX.cjs → progress-DnhvJMz_.cjs} +2 -2
  225. package/dist/{progress-BqIOFoJX.cjs.map → progress-DnhvJMz_.cjs.map} +1 -1
  226. package/dist/progress.cjs +1 -1
  227. package/dist/progress.js +1 -1
  228. package/dist/provide-BxZ2kn_p.cjs.map +1 -1
  229. package/dist/provide-tcktw8xB.js.map +1 -1
  230. package/dist/{radio-button-BfpkkEgE.cjs → radio-button-BVegeFKE.cjs} +2 -2
  231. package/dist/{radio-button-BfpkkEgE.cjs.map → radio-button-BVegeFKE.cjs.map} +1 -1
  232. package/dist/{radio-button-DQA5Kswx.js → radio-button-DDavzgCz.js} +3 -3
  233. package/dist/{radio-button-DQA5Kswx.js.map → radio-button-DDavzgCz.js.map} +1 -1
  234. package/dist/radio-group.cjs +1 -1
  235. package/dist/radio-group.js +1 -1
  236. package/dist/{schmancy-steps-container-Br5qKWIs.js → schmancy-steps-container-DN9c-HeX.js} +2 -2
  237. package/dist/{schmancy-steps-container-Br5qKWIs.js.map → schmancy-steps-container-DN9c-HeX.js.map} +1 -1
  238. package/dist/{schmancy-steps-container-Cr2B9C-w.cjs → schmancy-steps-container-s6kZWhcr.cjs} +2 -2
  239. package/dist/{schmancy-steps-container-Cr2B9C-w.cjs.map → schmancy-steps-container-s6kZWhcr.cjs.map} +1 -1
  240. package/dist/{search-6Hr7K1gh.js → search-BeEqIiuO.js} +7 -7
  241. package/dist/{search-6Hr7K1gh.js.map → search-BeEqIiuO.js.map} +1 -1
  242. package/dist/search-bfOHCuHZ.cjs +2 -0
  243. package/dist/{search-DWW8IoOp.cjs.map → search-bfOHCuHZ.cjs.map} +1 -1
  244. package/dist/{select-B_DaDLhe.js → select--D6l5ru7.js} +3 -3
  245. package/dist/{select-B_DaDLhe.js.map → select--D6l5ru7.js.map} +1 -1
  246. package/dist/{select-DwaiJBG2.cjs → select-DVT_kFNR.cjs} +2 -2
  247. package/dist/{select-DwaiJBG2.cjs.map → select-DVT_kFNR.cjs.map} +1 -1
  248. package/dist/select.cjs +1 -1
  249. package/dist/select.js +1 -1
  250. package/dist/{selector-hook-BWMY8npH.cjs → selector-hook-BG6g_IEN.cjs} +2 -2
  251. package/dist/{selector-hook-BWMY8npH.cjs.map → selector-hook-BG6g_IEN.cjs.map} +1 -1
  252. package/dist/{selector-hook-CKeyK4K-.js → selector-hook-CrwQCPxL.js} +4 -4
  253. package/dist/{selector-hook-CKeyK4K-.js.map → selector-hook-CrwQCPxL.js.map} +1 -1
  254. package/dist/{sheet-BrK8_X4J.cjs → sheet-Bza5jVS2.cjs} +2 -2
  255. package/dist/{sheet-BrK8_X4J.cjs.map → sheet-Bza5jVS2.cjs.map} +1 -1
  256. package/dist/{sheet-5c6WR3vS.js → sheet-CNn_huhz.js} +5 -5
  257. package/dist/{sheet-5c6WR3vS.js.map → sheet-CNn_huhz.js.map} +1 -1
  258. package/dist/sheet.cjs +1 -1
  259. package/dist/sheet.js +2 -2
  260. package/dist/{sheet.service-BkKHvgFa.cjs → sheet.service--zUgftN3.cjs} +2 -2
  261. package/dist/{sheet.service-BkKHvgFa.cjs.map → sheet.service--zUgftN3.cjs.map} +1 -1
  262. package/dist/{sheet.service-EPEmcCpX.js → sheet.service-CmNDL4f6.js} +2 -2
  263. package/dist/{sheet.service-EPEmcCpX.js.map → sheet.service-CmNDL4f6.js.map} +1 -1
  264. package/dist/{slider-DW9URxIY.cjs → slider-Cf0pED-U.cjs} +2 -2
  265. package/dist/{slider-DW9URxIY.cjs.map → slider-Cf0pED-U.cjs.map} +1 -1
  266. package/dist/{slider-CiNvtgZJ.js → slider-DPxBmmFD.js} +3 -3
  267. package/dist/{slider-CiNvtgZJ.js.map → slider-DPxBmmFD.js.map} +1 -1
  268. package/dist/slider.cjs +1 -1
  269. package/dist/slider.js +1 -1
  270. package/dist/{spinner-9JRrKdub.cjs → spinner-BDSDxr_W.cjs} +2 -2
  271. package/dist/{spinner-9JRrKdub.cjs.map → spinner-BDSDxr_W.cjs.map} +1 -1
  272. package/dist/{spinner-D8stZ8uP.js → spinner-Dyz6HBFa.js} +2 -2
  273. package/dist/{spinner-D8stZ8uP.js.map → spinner-Dyz6HBFa.js.map} +1 -1
  274. package/dist/steps.cjs +1 -1
  275. package/dist/steps.js +1 -1
  276. package/dist/store.cjs +1 -1
  277. package/dist/store.js +2 -2
  278. package/dist/{suggestion-chip-inBIBMff.cjs → suggestion-chip-B7COqb4l.cjs} +2 -2
  279. package/dist/{suggestion-chip-inBIBMff.cjs.map → suggestion-chip-B7COqb4l.cjs.map} +1 -1
  280. package/dist/{suggestion-chip-CXPMf7Je.js → suggestion-chip-CCW8g_3S.js} +3 -3
  281. package/dist/{suggestion-chip-CXPMf7Je.js.map → suggestion-chip-CCW8g_3S.js.map} +1 -1
  282. package/dist/{surface-BcZEnDON.js → surface-B4CxtF38.js} +2 -2
  283. package/dist/{surface-BcZEnDON.js.map → surface-B4CxtF38.js.map} +1 -1
  284. package/dist/{surface-BsrV4kzE.cjs → surface-CkzbeSYN.cjs} +2 -2
  285. package/dist/{surface-BsrV4kzE.cjs.map → surface-CkzbeSYN.cjs.map} +1 -1
  286. package/dist/surface.cjs +1 -1
  287. package/dist/surface.js +1 -1
  288. package/dist/table-D-g4ZBys.cjs +63 -0
  289. package/dist/table-D-g4ZBys.cjs.map +1 -0
  290. package/dist/{table-B5CHKp8S.js → table-KPNVMJtn.js} +8 -8
  291. package/dist/table-KPNVMJtn.js.map +1 -0
  292. package/dist/table.cjs +1 -1
  293. package/dist/table.js +1 -1
  294. package/dist/{tabs-compatibility-UitZoxcs.cjs → tabs-compatibility-sMoQP12I.cjs} +2 -2
  295. package/dist/{tabs-compatibility-UitZoxcs.cjs.map → tabs-compatibility-sMoQP12I.cjs.map} +1 -1
  296. package/dist/{tabs-compatibility-8NddfF1x.js → tabs-compatibility-xUK4vD1M.js} +2 -2
  297. package/dist/{tabs-compatibility-8NddfF1x.js.map → tabs-compatibility-xUK4vD1M.js.map} +1 -1
  298. package/dist/tabs.cjs +1 -1
  299. package/dist/tabs.js +1 -1
  300. package/dist/tailwind.mixin-scDxsqaX.cjs +2 -0
  301. package/dist/{tailwind.mixin-2PdnHg0B.cjs.map → tailwind.mixin-scDxsqaX.cjs.map} +1 -1
  302. package/dist/tailwind.mixin-xIIxrXd8.js +67 -0
  303. package/dist/{tailwind.mixin-BgdEBNZM.js.map → tailwind.mixin-xIIxrXd8.js.map} +1 -1
  304. package/dist/teleport.cjs +1 -1
  305. package/dist/teleport.js +1 -1
  306. package/dist/{textarea-D24UakyK.cjs → textarea-BSBYVs99.cjs} +2 -2
  307. package/dist/{textarea-D24UakyK.cjs.map → textarea-BSBYVs99.cjs.map} +1 -1
  308. package/dist/{textarea-2oVdZPXR.js → textarea-CFrirT5y.js} +2 -2
  309. package/dist/{textarea-2oVdZPXR.js.map → textarea-CFrirT5y.js.map} +1 -1
  310. package/dist/textarea.cjs +1 -1
  311. package/dist/textarea.js +1 -1
  312. package/dist/{theme-button-D0Xi4WHC.cjs → theme-button-B8Xqrz1M.cjs} +2 -2
  313. package/dist/{theme-button-D0Xi4WHC.cjs.map → theme-button-B8Xqrz1M.cjs.map} +1 -1
  314. package/dist/{theme-button-D4BhpOj6.js → theme-button-D-LTPh88.js} +2 -2
  315. package/dist/{theme-button-D4BhpOj6.js.map → theme-button-D-LTPh88.js.map} +1 -1
  316. package/dist/theme-button.cjs +1 -1
  317. package/dist/theme-button.js +1 -1
  318. package/dist/{theme-controller-boat-C8AnrOkJ.js → theme-controller-boat-BOddzVdU.js} +20 -20
  319. package/dist/theme-controller-boat-BOddzVdU.js.map +1 -0
  320. package/dist/theme-controller-boat-C2F-qRyu.cjs +64 -0
  321. package/dist/theme-controller-boat-C2F-qRyu.cjs.map +1 -0
  322. package/dist/theme.cjs +1 -1
  323. package/dist/theme.js +1 -1
  324. package/dist/{timezone-D4wUA6zL.js → timezone-BvOWa9Nt.js} +3 -3
  325. package/dist/{timezone-D4wUA6zL.js.map → timezone-BvOWa9Nt.js.map} +1 -1
  326. package/dist/{timezone-BbGoZoJM.cjs → timezone-xHmnktrm.cjs} +2 -2
  327. package/dist/{timezone-BbGoZoJM.cjs.map → timezone-xHmnktrm.cjs.map} +1 -1
  328. package/dist/{tooltip-DxdU3Drr.cjs → tooltip-D24v5bvM.cjs} +2 -2
  329. package/dist/{tooltip-DxdU3Drr.cjs.map → tooltip-D24v5bvM.cjs.map} +1 -1
  330. package/dist/{tooltip-BL92Hwwe.js → tooltip-D3ZZJEAk.js} +4 -4
  331. package/dist/{tooltip-BL92Hwwe.js.map → tooltip-D3ZZJEAk.js.map} +1 -1
  332. package/dist/tooltip.cjs +1 -1
  333. package/dist/tooltip.js +1 -1
  334. package/dist/{tree-cZIPOana.js → tree-CfVyhRIH.js} +2 -2
  335. package/dist/{tree-cZIPOana.js.map → tree-CfVyhRIH.js.map} +1 -1
  336. package/dist/{tree-BuGpk0as.cjs → tree-DC_jbDRu.cjs} +2 -2
  337. package/dist/{tree-BuGpk0as.cjs.map → tree-DC_jbDRu.cjs.map} +1 -1
  338. package/dist/tree.cjs +1 -1
  339. package/dist/tree.js +1 -1
  340. package/dist/tslib.es6-DgOcxv4s.cjs.map +1 -1
  341. package/dist/tslib.es6-ujVQHAQ4.js.map +1 -1
  342. package/dist/{typewriter-DT0f_Fla.js → typewriter-By-3T0Jm.js} +8 -8
  343. package/dist/typewriter-By-3T0Jm.js.map +1 -0
  344. package/dist/typewriter-vit0P1N1.cjs +9 -0
  345. package/dist/typewriter-vit0P1N1.cjs.map +1 -0
  346. package/dist/typewriter.cjs +1 -1
  347. package/dist/typewriter.js +1 -1
  348. package/dist/{typography-BBCRpsA_.cjs → typography-9lVCjAbj.cjs} +2 -2
  349. package/dist/{typography-BBCRpsA_.cjs.map → typography-9lVCjAbj.cjs.map} +1 -1
  350. package/dist/{typography-DayYVIRD.js → typography-B7kvO8iJ.js} +2 -2
  351. package/dist/{typography-DayYVIRD.js.map → typography-B7kvO8iJ.js.map} +1 -1
  352. package/dist/typography.cjs +1 -1
  353. package/dist/typography.js +1 -1
  354. package/dist/utils.cjs +1 -1
  355. package/dist/utils.js +1 -1
  356. package/package.json +2 -2
  357. package/types/src/menu/menu.d.ts +30 -5
  358. package/dist/checkbox-BKT1cZnv.js.map +0 -1
  359. package/dist/checkbox-C4CHTajr.cjs.map +0 -1
  360. package/dist/code-preview-CEbRCvUd.cjs +0 -193
  361. package/dist/code-preview-CEbRCvUd.cjs.map +0 -1
  362. package/dist/code-preview-DzMETSJv.js.map +0 -1
  363. package/dist/context-create-CA907mdD.cjs +0 -2
  364. package/dist/context-create-CA907mdD.cjs.map +0 -1
  365. package/dist/context-create-DCiujzV2.js.map +0 -1
  366. package/dist/date-range-B-5LtvhH.js.map +0 -1
  367. package/dist/date-range-B1PGOR7h.cjs +0 -134
  368. package/dist/date-range-B1PGOR7h.cjs.map +0 -1
  369. package/dist/delay-D5RAR00M.js.map +0 -1
  370. package/dist/delay-UAjkp-21.cjs.map +0 -1
  371. package/dist/dialog-service-Bdaxn2t0.cjs +0 -2
  372. package/dist/dialog-service-Bdaxn2t0.cjs.map +0 -1
  373. package/dist/dialog-service-CyQzm5qE.js +0 -147
  374. package/dist/dialog-service-CyQzm5qE.js.map +0 -1
  375. package/dist/menu-BdWhwHXc.js +0 -89
  376. package/dist/menu-BdWhwHXc.js.map +0 -1
  377. package/dist/menu-BsX4Mjjn.cjs +0 -23
  378. package/dist/menu-BsX4Mjjn.cjs.map +0 -1
  379. package/dist/payment-card-form-DZmaLaVl.cjs.map +0 -1
  380. package/dist/payment-card-form-p_Wj1NRm.js.map +0 -1
  381. package/dist/search-DWW8IoOp.cjs +0 -2
  382. package/dist/table-B5CHKp8S.js.map +0 -1
  383. package/dist/table-CzejyN5W.cjs +0 -63
  384. package/dist/table-CzejyN5W.cjs.map +0 -1
  385. package/dist/tailwind.mixin-2PdnHg0B.cjs +0 -2
  386. package/dist/tailwind.mixin-BgdEBNZM.js +0 -67
  387. package/dist/theme-controller-boat-C8AnrOkJ.js.map +0 -1
  388. package/dist/theme-controller-boat-r74J3tyl.cjs +0 -64
  389. package/dist/theme-controller-boat-r74J3tyl.cjs.map +0 -1
  390. package/dist/typewriter-DT0f_Fla.js.map +0 -1
  391. package/dist/typewriter-Dc7MHBRy.cjs +0 -9
  392. package/dist/typewriter-Dc7MHBRy.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-create-DCiujzV2.js","sources":["../../../node_modules/immer/dist/immer.mjs","../src/store/store.class.ts","../src/store/context-object.ts","../src/store/types.ts","../src/store/storage-manager.ts","../src/store/context-array.ts","../src/store/context-collection.ts","../src/store/context-create.ts"],"sourcesContent":["// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n Object.defineProperties(obj, {\n set: { value: dontMutateFrozenCollections },\n add: { value: dontMutateFrozenCollections },\n clear: { value: dontMutateFrozenCollections },\n delete: { value: dontMutateFrozenCollections }\n });\n }\n Object.freeze(obj);\n if (deep)\n Object.values(obj).forEach((value) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && (isMap(targetObject) ? targetObject.has(prop) : Object.prototype.propertyIsEnumerable.call(targetObject, prop)))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = /* @__PURE__ */ immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = /* @__PURE__ */ immer.setUseStrictShallowCopy.bind(\n immer\n);\nvar applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer);\nvar createDraft = /* @__PURE__ */ immer.createDraft.bind(immer);\nvar finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","// src/store/store.class.ts - Fixed version\n\nimport { produce, enableMapSet, immerable } from 'immer'\nimport { BehaviorSubject, Subject } from 'rxjs'\nimport { createStorageManager } from './storage-manager'\nimport { IStorageManager, StorageType, StoreError } from './types'\n\n// Enable Map and Set support for Immer\nenableMapSet()\n\n/**\n * Base store class to handle common functionality between store types\n * Now with Immer integration for immutability\n */\nexport abstract class BaseStore<T> {\n\t// Mark the class as immerable to allow Immer to create drafts\n\t[immerable] = true\n\n\t// State tracking\n\tprotected _ready: boolean = false\n\tprotected _destroy$ = new Subject<void>()\n\n\t// Observable streams\n\tpublic $: BehaviorSubject<T>\n\tpublic error$ = new BehaviorSubject<StoreError | null>(null)\n\n\t// Default value for the store\n\tpublic readonly defaultValue: T\n\n\t// Storage manager\n\tprotected storage: IStorageManager<T>\n\n\t/**\n\t * Get store ready state\n\t */\n\tpublic get ready(): boolean {\n\t\treturn this._ready\n\t}\n\n\t/**\n\t * Set store ready state\n\t */\n\tpublic set ready(value: boolean) {\n\t\tthis._ready = value\n\t\tthis.updateState(this.$.value)\n\t}\n\n\t/**\n\t * Get the current value\n\t */\n\tpublic get value(): T {\n\t\treturn this.$.getValue()\n\t}\n\n\t/**\n\t * Initialize the base store\n\t * @param storageType Storage type to use\n\t * @param key Unique key for the store\n\t * @param defaultValue Default/initial value\n\t */\n\tconstructor(\n\t\tprotected storageType: StorageType,\n\t\tprotected key: string,\n\t\tdefaultValue: T,\n\t) {\n\t\t// Before using produce, ensure the input is draftable\n\t\t// This ensures Immer won't throw an error on non-draftable values\n\t\tlet safeDefaultValue: T\n\n\t\tif (defaultValue instanceof Map) {\n\t\t\t// For Maps, create a new Map instance\n\t\t\tsafeDefaultValue = new Map(defaultValue) as unknown as T\n\t\t} else if (Array.isArray(defaultValue)) {\n\t\t\t// For arrays, create a new array instance\n\t\t\tsafeDefaultValue = [...defaultValue] as unknown as T\n\t\t} else if (defaultValue && typeof defaultValue === 'object') {\n\t\t\t// For objects, create a shallow copy\n\t\t\tsafeDefaultValue = { ...defaultValue } as T\n\t\t} else {\n\t\t\t// For primitives or other non-draftable types\n\t\t\tsafeDefaultValue = defaultValue\n\t\t}\n\n\t\t// Make an immutable copy of the default value when possible\n\t\ttry {\n\t\t\tthis.defaultValue = this.isImmerDraftable(safeDefaultValue)\n\t\t\t\t? produce(safeDefaultValue, draft => draft)\n\t\t\t\t: safeDefaultValue\n\t\t} catch (error) {\n\t\t\tconsole.warn(`[BaseStore] Unable to produce immutable copy of defaultValue:`, error)\n\t\t\tthis.defaultValue = safeDefaultValue\n\t\t}\n\n\t\t// Initialize BehaviorSubject with the default value\n\t\tthis.$ = new BehaviorSubject<T>(this.defaultValue)\n\t\tthis.storage = createStorageManager<T>(storageType, key)\n\n\t\t// Set ready immediately for memory storage\n\t\tif (storageType === 'memory') {\n\t\t\tthis._ready = true\n\t\t} else {\n\t\t\t// Initialize from storage for persistent stores\n\t\t\tthis.initializeFromStorage()\n\t\t}\n\t}\n\n\t/**\n\t * Check if a value can be safely used with Immer's produce\n\t */\n\tprotected isImmerDraftable(value: any): boolean {\n\t\treturn (\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\t(Array.isArray(value) ||\n\t\t\t\tvalue instanceof Map ||\n\t\t\t\tvalue instanceof Set ||\n\t\t\t\tObject.getPrototypeOf(value) === Object.prototype ||\n\t\t\t\tvalue[immerable] === true)\n\t\t)\n\t}\n\n\t/**\n\t * Cleanup method for all store types\n\t */\n\tpublic destroy(): void {\n\t\tthis._destroy$.next()\n\t\tthis._destroy$.complete()\n\t\tthis.$.complete()\n\t\tthis.error$.complete()\n\t}\n\n\t/**\n\t * Replace the entire store state immutably\n\t */\n\tpublic replace(newValue: T): void {\n\t\ttry {\n\t\t\t// Use Immer to create an immutable copy if possible\n\t\t\tconst nextState = this.isImmerDraftable(newValue) ? produce(newValue, draft => draft) : newValue\n\n\t\t\tthis.updateState(nextState)\n\t\t} catch (error) {\n\t\t\tconst storeError = new StoreError<unknown>(`Error replacing state in ${this.key}`, error)\n\t\t\tthis.error$.next(storeError)\n\t\t\tconsole.error(storeError)\n\n\t\t\t// Fallback to direct assignment\n\t\t\tthis.updateState(newValue)\n\t\t}\n\t}\n\n\t/**\n\t * Reset to default value - to be implemented by subclasses\n\t */\n\tpublic abstract clear(): void\n\n\t/**\n\t * Update the state with proper error handling and immutability\n\t */\n\tprotected updateState(newValue: T): void {\n\t\ttry {\n\t\t\t// Ensure immutability by creating a fresh copy with Immer when possible\n\t\t\tlet nextState: T\n\n\t\t\tif (this.isImmerDraftable(newValue)) {\n\t\t\t\tnextState = produce(newValue, draft => draft)\n\t\t\t} else {\n\t\t\t\tnextState = newValue\n\t\t\t}\n\n\t\t\tthis.$.next(nextState)\n\n\t\t\t// Persist to storage\n\t\t\tif (this.storageType !== 'memory') {\n\t\t\t\tthis.persistToStorage(nextState).catch(err => {\n\t\t\t\t\tconst error = new StoreError<unknown>(`Error saving to ${this.storageType} storage for ${this.key}`, err)\n\t\t\t\t\tthis.error$.next(error)\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error updating state in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\n\t\t\t// Fallback to direct update\n\t\t\tthis.$.next(newValue)\n\t\t}\n\t}\n\n\t/**\n\t * Initialize the store from persistent storage\n\t */\n\tprotected async initializeFromStorage(): Promise<void> {\n\t\ttry {\n\t\t\tconst storedValue = await this.storage.load()\n\t\t\tif (storedValue) {\n\t\t\t\t// Process and update state with the stored value\n\t\t\t\tconst processedValue = this.processStoredValue(storedValue)\n\n\t\t\t\ttry {\n\t\t\t\t\t// Only use Immer if the value is draftable\n\t\t\t\t\tconst immutableValue = this.isImmerDraftable(processedValue)\n\t\t\t\t\t\t? produce(processedValue, draft => draft)\n\t\t\t\t\t\t: processedValue\n\n\t\t\t\t\tthis.updateState(immutableValue)\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.warn(`[BaseStore] Unable to create immutable copy, using value directly:`, error)\n\t\t\t\t\tthis.updateState(processedValue)\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._ready = true\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error loading from ${this.storageType} storage for ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t\tthis._ready = true // Mark as ready even if loading fails\n\t\t}\n\t}\n\n\t/**\n\t * Process stored value (can be overridden by subclasses)\n\t */\n\tprotected processStoredValue(storedValue: T): T {\n\t\treturn storedValue\n\t}\n\n\t/**\n\t * Persist state to storage\n\t */\n\tprotected async persistToStorage(state: T): Promise<void> {\n\t\treturn this.storage.save(state)\n\t}\n\n\t/**\n\t * Setup development tools\n\t */\n\tprotected abstract setupDevTools(): void\n}\n","// src/store/context-object.ts - Fixed version\n\nimport { BaseStore } from './store.class'\nimport { IStore, StorageType, StoreError } from './types'\nimport { produce, Draft, castDraft, immerable } from 'immer'\n\n/**\n * Enhanced store object with better TypeScript support and immutability\n * Now extends BaseStore for common functionality and uses Immer\n */\nexport class SchmancyStoreObject<T extends Record<string, any>> extends BaseStore<T> implements IStore<T> {\n\t// Mark as immerable so Immer can create drafts of this class\n\t[immerable] = true\n\n\tpublic static type = 'object'\n\n\t// Static map to hold instances with proper typing\n\tprivate static instances: Map<string, SchmancyStoreObject<any>> = new Map()\n\n\t/**\n\t * Static method to get or create an instance with strong typing\n\t */\n\tpublic static getInstance<T extends Record<string, any>>(\n\t\tstorage: StorageType,\n\t\tkey: string,\n\t\tdefaultValue: T,\n\t): SchmancyStoreObject<T> {\n\t\tconst instanceKey = `${storage}:${key}`\n\t\tif (!this.instances.has(instanceKey)) {\n\t\t\tthis.instances.set(instanceKey, new SchmancyStoreObject<T>(storage, key, defaultValue))\n\t\t}\n\t\treturn this.instances.get(instanceKey) as SchmancyStoreObject<T>\n\t}\n\n\t/**\n\t * Set state with proper typing and immutability using Immer\n\t */\n\tpublic set(value: Partial<T>, merge: boolean = true): void {\n\t\ttry {\n\t\t\tif (!this.isImmerDraftable(this.value)) {\n\t\t\t\t// If current value isn't draftable, handle directly\n\t\t\t\tconst nextState = merge ? { ...this.value, ...value } : (value as T)\n\n\t\t\t\tthis.updateState(nextState)\n\t\t\t\tthis.error$.next(null)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Use Immer to create an immutable update\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tif (merge) {\n\t\t\t\t\t// Handle null/undefined value safely\n\t\t\t\t\tif (value === null || value === undefined) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\t// Merge new values into existing state\n\t\t\t\t\t// Use castDraft to properly type the value for the draft context\n\t\t\t\t\ttry {\n\t\t\t\t\t\tObject.assign(draft, castDraft(value) as Draft<Partial<T>>)\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.warn('[SchmancyStoreObject] Error casting to draft, falling back to direct assign:', err)\n\t\t\t\t\t\t// Fallback to direct property assignment\n\t\t\t\t\t\tObject.keys(value).forEach(key => {\n\t\t\t\t\t\t\t;(draft as any)[key] = (value as any)[key]\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// For complete replacement, return a completely new object\n\t\t\t\t\t// This is handled specially by Immer\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn castDraft(value as T) as Draft<T>\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.warn('[SchmancyStoreObject] Error casting to draft, returning value directly:', err)\n\t\t\t\t\t\treturn value as unknown as Draft<T>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null) // Clear any previous errors\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error updating store: ${this.key}`, err, { value, merge })\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\n\t\t\t// Fallback to direct update\n\t\t\ttry {\n\t\t\t\tconst fallbackState = merge ? { ...this.value, ...value } : (value as T)\n\t\t\t\tthis.updateState(fallbackState)\n\t\t\t} catch (fallbackErr) {\n\t\t\t\tconsole.error('Failed fallback update:', fallbackErr)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Reset the store to its default value\n\t */\n\tpublic clear(): void {\n\t\ttry {\n\t\t\t// Create a fresh copy of the default value using Immer\n\t\t\tif (this.isImmerDraftable(this.defaultValue)) {\n\t\t\t\tconst freshDefaultValue = produce(this.defaultValue, draft => draft)\n\t\t\t\tthis.set(freshDefaultValue, false)\n\t\t\t} else {\n\t\t\t\t// For non-draftable values, use direct replacement\n\t\t\t\tthis.set(this.defaultValue as any, false)\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error clearing store: ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\n\t\t\t// Fallback to direct reset\n\t\t\tthis.updateState(this.defaultValue)\n\t\t}\n\t}\n\n\t/**\n\t * Delete a specific key from the store with type checking and immutability\n\t */\n\tpublic delete<K extends keyof T>(key: K): void {\n\t\ttry {\n\t\t\tif (!this.isImmerDraftable(this.value)) {\n\t\t\t\t// Handle non-draftable objects directly\n\t\t\t\tconst nextState = { ...this.value }\n\t\t\t\tdelete nextState[key]\n\t\t\t\tthis.updateState(nextState as T)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Use Immer to create an immutable update that removes the key\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\t// Use type assertion to tell TypeScript this is safe\n\t\t\t\tdelete draft[key as keyof Draft<T>]\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error deleting key ${String(key)} from store: ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\n\t\t\t// Fallback to direct modification\n\t\t\ttry {\n\t\t\t\tconst fallbackState = { ...this.value }\n\t\t\t\tdelete fallbackState[key]\n\t\t\t\tthis.updateState(fallbackState as T)\n\t\t\t} catch (fallbackErr) {\n\t\t\t\tconsole.error('Failed fallback delete:', fallbackErr)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Update a nested property at a specific path\n\t * @param path Dot-separated path to the property (e.g., 'user.profile.name')\n\t * @param value New value to set\n\t */\n\tpublic setPath(path: string, value: any): void {\n\t\ttry {\n\t\t\tif (!path) {\n\t\t\t\tconsole.warn('[SchmancyStoreObject] Empty path provided to setPath')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (!this.isImmerDraftable(this.value)) {\n\t\t\t\t// Handle non-draftable objects with direct modification\n\t\t\t\tconst parts = path.split('.')\n\t\t\t\tconst nextState = { ...this.value }\n\t\t\t\tlet current: any = nextState\n\n\t\t\t\tfor (let i = 0; i < parts.length - 1; i++) {\n\t\t\t\t\tconst part = parts[i]\n\t\t\t\t\tif (current[part] === undefined) {\n\t\t\t\t\t\tcurrent[part] = {}\n\t\t\t\t\t} else if (typeof current[part] !== 'object' || current[part] === null) {\n\t\t\t\t\t\tcurrent[part] = {}\n\t\t\t\t\t}\n\t\t\t\t\tcurrent = current[part]\n\t\t\t\t}\n\n\t\t\t\tcurrent[parts[parts.length - 1]] = value\n\t\t\t\tthis.updateState(nextState)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Use Immer for immutable deep updates\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tconst parts = path.split('.')\n\t\t\t\tlet current: any = draft\n\n\t\t\t\t// Navigate to the parent of the property we want to update\n\t\t\t\tfor (let i = 0; i < parts.length - 1; i++) {\n\t\t\t\t\tconst part = parts[i]\n\n\t\t\t\t\t// Create the path if it doesn't exist\n\t\t\t\t\tif (current[part] === undefined) {\n\t\t\t\t\t\tcurrent[part] = {}\n\t\t\t\t\t} else if (typeof current[part] !== 'object' || current[part] === null) {\n\t\t\t\t\t\t// Convert to object if it's not one already\n\t\t\t\t\t\tcurrent[part] = {}\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrent = current[part]\n\t\t\t\t}\n\n\t\t\t\t// Set the value at the final path segment\n\t\t\t\tconst lastPart = parts[parts.length - 1]\n\t\t\t\ttry {\n\t\t\t\t\tcurrent[lastPart] = castDraft(value)\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.warn('[SchmancyStoreObject] Error casting to draft, setting directly:', err)\n\t\t\t\t\tcurrent[lastPart] = value\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error setting path ${path} in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\n\t\t\t// Fallback to direct path setting\n\t\t\ttry {\n\t\t\t\tconst parts = path.split('.')\n\t\t\t\tconst nextState = { ...this.value }\n\t\t\t\tlet current: any = nextState\n\n\t\t\t\tfor (let i = 0; i < parts.length - 1; i++) {\n\t\t\t\t\tconst part = parts[i]\n\t\t\t\t\tif (current[part] === undefined) {\n\t\t\t\t\t\tcurrent[part] = {}\n\t\t\t\t\t} else if (typeof current[part] !== 'object' || current[part] === null) {\n\t\t\t\t\t\tcurrent[part] = {}\n\t\t\t\t\t}\n\t\t\t\t\tcurrent = current[part]\n\t\t\t\t}\n\n\t\t\t\tcurrent[parts[parts.length - 1]] = value\n\t\t\t\tthis.updateState(nextState)\n\t\t\t} catch (fallbackErr) {\n\t\t\t\tconsole.error('Failed fallback setPath:', fallbackErr)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process stored value by merging with default value\n\t */\n\tprotected processStoredValue(storedValue: T): T {\n\t\ttry {\n\t\t\t// Use Immer to create a clean merged state if possible\n\t\t\tif (this.isImmerDraftable(this.defaultValue) && this.isImmerDraftable(storedValue)) {\n\t\t\t\treturn produce(this.defaultValue, draft => {\n\t\t\t\t\tObject.assign(draft, castDraft(storedValue) as Draft<T>)\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t// Otherwise use a standard merge\n\t\t\t\treturn { ...this.defaultValue, ...storedValue }\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.warn(`[SchmancyStoreObject] Error processing stored value, returning as-is:`, err)\n\t\t\treturn storedValue\n\t\t}\n\t}\n\n\t/**\n\t * Setup development tools for debugging\n\t */\n\tprotected setupDevTools(): void {\n\t\tif (typeof window !== 'undefined') {\n\t\t\t// Add to global store registry\n\t\t\t;(window as any).__STORES__ = (window as any).__STORES__ || {}\n\t\t\t;(window as any).__STORES__[this.key] = {\n\t\t\t\tgetState: () => this.value,\n\t\t\t\tset: this.set.bind(this),\n\t\t\t\tdelete: this.delete.bind(this),\n\t\t\t\tclear: this.clear.bind(this),\n\t\t\t\tsetPath: this.setPath.bind(this),\n\t\t\t\tsubscribe: (callback: (state: T) => void) => {\n\t\t\t\t\tconst subscription = this.$.subscribe(callback)\n\t\t\t\t\treturn () => subscription.unsubscribe()\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Inherit isImmerDraftable from BaseStore, but also check for [immerable]\n\t */\n\tprotected isImmerDraftable(value: any): boolean {\n\t\t// Use the parent implementation and add our own checks\n\t\treturn value !== null && typeof value === 'object' && (super.isImmerDraftable(value) || value[immerable] === true)\n\t}\n}\n","// src/store/types.ts\nimport { Draft } from 'immer'\nimport { BehaviorSubject, Observable, Subject } from 'rxjs'\n\n/**\n * Storage types supported by the store\n */\nexport type StorageType = 'memory' | 'local' | 'session' | 'indexeddb'\n\n/**\n * Base store options\n */\nexport interface StoreOptions<T> {\n\t/** Key used for persistent storage */\n\tkey: string\n\n\t/** Storage type */\n\tstorage: StorageType\n\n\t/** Initial state */\n\tinitialState: T\n\n\t/** Enable dev tools */\n\tdevTools?: boolean\n}\n\n/**\n * Enhanced store error with type information and better context handling\n */\nexport class StoreError<T = unknown> extends Error {\n\t/** Original error that caused this store error */\n\tpublic readonly cause?: T\n\n\t/** Additional contextual information */\n\tpublic readonly context?: Record<string, unknown>\n\n\t/** Timestamp when the error occurred */\n\tpublic readonly timestamp: Date\n\n\tconstructor(message: string, cause?: T, context?: Record<string, unknown>) {\n\t\tsuper(message)\n\t\tthis.name = 'StoreError'\n\t\tthis.cause = cause\n\t\tthis.context = context\n\t\tthis.timestamp = new Date()\n\n\t\t// Capture stack trace if available\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, StoreError)\n\t\t}\n\t}\n\n\t/**\n\t * Returns a JSON-serializable representation of the error\n\t */\n\ttoJSON(): Record<string, unknown> {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tcause: this.cause,\n\t\t\tcontext: this.context,\n\t\t\ttimestamp: this.timestamp.toISOString(),\n\t\t\tstack: this.stack,\n\t\t}\n\t}\n}\n\n/**\n * Core store interface with improved type definitions\n */\nexport interface IStore<T extends Record<string, any>> {\n\t/** Get the current store value */\n\treadonly value: T\n\n\t/** Observable stream of store values */\n\treadonly $: BehaviorSubject<T>\n\n\t/** The default/initial value of the store */\n\treadonly defaultValue: T\n\n\t/** Whether the store is ready (loaded from storage) */\n\tready: boolean\n\n\t/** Observable stream of store errors */\n\treadonly error$: Subject<StoreError | null>\n\n\t/**\n\t * Update store value with partial data\n\t * @param value Partial data to update\n\t * @param merge Whether to merge with existing data (default: true)\n\t */\n\tset(value: Partial<T>, merge?: boolean): void\n\n\t/**\n\t * Reset store to default value\n\t */\n\tclear(): void\n\n\t/**\n\t * Replace entire store value\n\t * @param newValue New value to set\n\t */\n\treplace(newValue: T): void\n\n\t/**\n\t * Delete a specific key from the store\n\t * @param key Key to delete\n\t */\n\tdelete<K extends keyof T>(key: K): void\n\n\t/**\n\t * Clean up resources\n\t */\n\tdestroy(): void\n}\n\n/**\n * Interface for collection stores with improved typing\n */\nexport interface ICollectionStore<T> {\n\t/** Get the current collection value */\n\treadonly value: Map<string, T>\n\n\t/** Observable stream of collection values */\n\treadonly $: BehaviorSubject<Map<string, T>>\n\n\t/** The default/initial value of the collection */\n\treadonly defaultValue: Map<string, T>\n\n\t/** Whether the store is ready (loaded from storage) */\n\tready: boolean\n\n\t/** Observable stream of store errors */\n\treadonly error$: Observable<StoreError | null>\n\n\t/**\n\t * Set a value in the collection\n\t * @param key Item key\n\t * @param value Item value\n\t */\n\tset<V = T>(key: string, value: V): void\n\n\t/**\n\t * Delete an item from the collection\n\t * @param key Item key to delete\n\t */\n\tdelete(key: string): void\n\n\t/**\n\t * Clear all items from the collection\n\t */\n\tclear(): void\n\n\t/**\n\t * Replace the entire collection\n\t * @param newValue New collection value\n\t */\n\treplace(newValue: Map<string, T>): void\n\n\t/**\n\t * Clean up resources\n\t */\n\tdestroy(): void\n}\n\n/**\n * Interface for a storage manager\n */\nexport interface IStorageManager<T> {\n\t/**\n\t * Load data from storage\n\t * @returns Promise resolving to stored data or null\n\t */\n\tload(): Promise<T | null>\n\n\t/**\n\t * Save data to storage\n\t * @param state Data to save\n\t */\n\tsave(state: T): Promise<void>\n\n\t/**\n\t * Clear data from storage\n\t */\n\tclear(): Promise<void>\n}\n\n/**\n * Factory function type for creating stores\n */\nexport type StoreFactory = <T extends Record<string, any>>(\n\tinitialData: T,\n\tstorage: StorageType,\n\tkey: string,\n) => IStore<T>\n\n/**\n * Factory function type for creating collection stores\n */\nexport type CollectionStoreFactory = <T>(\n\tinitialData: Map<string, T>,\n\tstorage: StorageType,\n\tkey: string,\n) => ICollectionStore<T>\n// Add this to your src/store/types.ts file\n\n/**\n * Interface for array stores with improved typing\n */\nexport interface IArrayStore<T> {\n\t/** Get the current array value */\n\treadonly value: T[]\n\n\t/** Observable stream of array values */\n\treadonly $: BehaviorSubject<T[]>\n\n\t/** The default/initial value of the array */\n\treadonly defaultValue: T[]\n\n\t/** Whether the store is ready (loaded from storage) */\n\tready: boolean\n\n\t/** Observable stream of store errors */\n\treadonly error$: Observable<StoreError | null>\n\n\t/**\n\t * Add item(s) to the end of the array\n\t * @param items Items to add\n\t */\n\tpush(...items: T[]): void\n\n\t/**\n\t * Remove and return the last item from the array\n\t * @returns The removed item or undefined if the array was empty\n\t */\n\tpop(): T | undefined\n\n\t/**\n\t * Add item(s) to the beginning of the array\n\t * @param items Items to add\n\t */\n\tunshift(...items: T[]): void\n\n\t/**\n\t * Remove and return the first item from the array\n\t * @returns The removed item or undefined if the array was empty\n\t */\n\tshift(): T | undefined\n\n\t/**\n\t * Update an item at a specific index\n\t * @param index The index to update\n\t * @param value The new value\n\t */\n\tset(index: number, value: T): void\n\n\t/**\n\t * Get the item at a specific index\n\t * @param index The index to get\n\t * @returns The item or undefined if index is out of bounds\n\t */\n\tget(index: number): T | undefined\n\n\t/**\n\t * Remove items from the array and optionally insert new ones\n\t * @param start The start index\n\t * @param deleteCount The number of items to delete\n\t * @param items Items to insert\n\t * @returns The removed items\n\t */\n\tsplice(start: number, deleteCount?: number, ...items: T[]): T[]\n\n\t/**\n\t * Remove an item by value (first occurrence)\n\t * @param item The item to remove\n\t * @param compareFn Optional function to compare items\n\t * @returns True if the item was found and removed\n\t */\n\tremove(item: T, compareFn?: (a: T, b: T) => boolean): boolean\n\n\t/**\n\t * Replace the entire array\n\t * @param newArray The new array\n\t */\n\treplace(newArray: T[]): void\n\n\t/**\n\t * Filter items in the array\n\t * @param predicate Function to test each item\n\t */\n\tfilter(predicate: (value: T, index: number, array: T[]) => boolean): void\n\n\t/**\n\t * Map over the array and transform items\n\t * @param mapper Function to transform each item\n\t * @returns Array of transformed items\n\t */\n\tmap<U>(mapper: (value: T, index: number, array: T[]) => U): U[]\n\n\t/**\n\t * Sort the array in place\n\t * @param compareFn Optional function to determine sort order\n\t */\n\tsort(compareFn?: (a: T, b: T) => number): void\n\n\t/**\n\t * Update a specific item using a callback function\n\t * @param index The index to update\n\t * @param updater Function that can modify the item\n\t */\n\tupdate(index: number, updater: (item: Draft<T>) => void): void\n\n\t/**\n\t * Clear all items from the array\n\t */\n\tclear(): void\n\n\t/**\n\t * Clean up resources\n\t */\n\tdestroy(): void\n}\n\n/**\n * Factory function type for creating array stores\n */\nexport type ArrayStoreFactory = <T>(initialData: T[], storage: StorageType, key: string) => IArrayStore<T>\n","import { IStorageManager, StorageType, StoreError } from './types'\n\n/**\n * Memory storage manager implementation\n */\nexport class MemoryStorageManager<T> implements IStorageManager<T> {\n\tprivate data: T | null = null\n\n\tasync load(): Promise<T | null> {\n\t\treturn this.data\n\t}\n\n\tasync save(state: T): Promise<void> {\n\t\tthis.data = state\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tthis.data = null\n\t}\n}\n\n/**\n * Local storage manager implementation\n */\nexport class LocalStorageManager<T> implements IStorageManager<T> {\n\tconstructor(private key: string) {}\n\n\tasync load(): Promise<T | null> {\n\t\ttry {\n\t\t\tconst data = localStorage.getItem(this.key)\n\t\t\treturn data ? JSON.parse(data) : null\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to load from localStorage (${this.key}):`, err)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tasync save(state: T): Promise<void> {\n\t\ttry {\n\t\t\tlocalStorage.setItem(this.key, JSON.stringify(state))\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to save to localStorage (${this.key}):`, err)\n\t\t\tthrow new StoreError<unknown>(`Failed to save to localStorage (${this.key})`, err)\n\t\t}\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tlocalStorage.removeItem(this.key)\n\t}\n}\n\n/**\n * Session storage manager implementation\n */\nexport class SessionStorageManager<T> implements IStorageManager<T> {\n\tconstructor(private key: string) {}\n\n\tasync load(): Promise<T | null> {\n\t\ttry {\n\t\t\tconst data = sessionStorage.getItem(this.key)\n\t\t\treturn data ? JSON.parse(data) : null\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to load from sessionStorage (${this.key}):`, err)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tasync save(state: T): Promise<void> {\n\t\ttry {\n\t\t\tsessionStorage.setItem(this.key, JSON.stringify(state))\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to save to sessionStorage (${this.key}):`, err)\n\t\t\tthrow new StoreError<unknown>(`Failed to save to sessionStorage (${this.key})`, err)\n\t\t}\n\t}\n\n\tasync clear(): Promise<void> {\n\t\tsessionStorage.removeItem(this.key)\n\t}\n}\n\n/**\n * IndexedDB storage manager implementation with better error typing\n */\nexport class IndexedDBStorageManager<T> implements IStorageManager<T> {\n\tprivate static DB_NAME = 'StoreDB'\n\tprivate static STORE_NAME = 'states'\n\tprivate static DB_VERSION = 1\n\n\tconstructor(private key: string) {}\n\n\tprivate openDB(): Promise<IDBDatabase> {\n\t\treturn new Promise<IDBDatabase>((resolve, reject) => {\n\t\t\tconst request = indexedDB.open(IndexedDBStorageManager.DB_NAME, IndexedDBStorageManager.DB_VERSION)\n\n\t\t\trequest.onupgradeneeded = () => {\n\t\t\t\tconst db = request.result\n\t\t\t\tif (!db.objectStoreNames.contains(IndexedDBStorageManager.STORE_NAME)) {\n\t\t\t\t\tdb.createObjectStore(IndexedDBStorageManager.STORE_NAME)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trequest.onsuccess = () => resolve(request.result)\n\t\t\trequest.onerror = () => reject(request.error)\n\t\t})\n\t}\n\n\tasync load(): Promise<T | null> {\n\t\ttry {\n\t\t\tconst db = await this.openDB()\n\t\t\treturn new Promise<T | null>((resolve, reject) => {\n\t\t\t\tconst transaction = db.transaction(IndexedDBStorageManager.STORE_NAME, 'readonly')\n\t\t\t\tconst store = transaction.objectStore(IndexedDBStorageManager.STORE_NAME)\n\t\t\t\tconst request = store.get(this.key)\n\n\t\t\t\trequest.onsuccess = () => {\n\t\t\t\t\tdb.close()\n\t\t\t\t\tresolve(request.result || null)\n\t\t\t\t}\n\n\t\t\t\trequest.onerror = () => {\n\t\t\t\t\tdb.close()\n\t\t\t\t\treject(request.error)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to load from IndexedDB (${this.key}):`, err)\n\t\t\treturn null\n\t\t}\n\t}\n\n\tasync save(state: T): Promise<void> {\n\t\ttry {\n\t\t\tconst db = await this.openDB()\n\t\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\t\tconst transaction = db.transaction(IndexedDBStorageManager.STORE_NAME, 'readwrite')\n\t\t\t\tconst store = transaction.objectStore(IndexedDBStorageManager.STORE_NAME)\n\t\t\t\tconst request = store.put(state, this.key)\n\n\t\t\t\trequest.onsuccess = () => {\n\t\t\t\t\tdb.close()\n\t\t\t\t\tresolve()\n\t\t\t\t}\n\n\t\t\t\trequest.onerror = () => {\n\t\t\t\t\tdb.close()\n\t\t\t\t\treject(request.error)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to save to IndexedDB (${this.key}):`, err)\n\t\t\tthrow new StoreError<unknown>(`Failed to save to IndexedDB (${this.key})`, err)\n\t\t}\n\t}\n\n\tasync clear(): Promise<void> {\n\t\ttry {\n\t\t\tconst db = await this.openDB()\n\t\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\t\tconst transaction = db.transaction(IndexedDBStorageManager.STORE_NAME, 'readwrite')\n\t\t\t\tconst store = transaction.objectStore(IndexedDBStorageManager.STORE_NAME)\n\t\t\t\tconst request = store.delete(this.key)\n\n\t\t\t\trequest.onsuccess = () => {\n\t\t\t\t\tdb.close()\n\t\t\t\t\tresolve()\n\t\t\t\t}\n\n\t\t\t\trequest.onerror = () => {\n\t\t\t\t\tdb.close()\n\t\t\t\t\treject(request.error)\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to clear from IndexedDB (${this.key}):`, err)\n\t\t\tthrow new StoreError<unknown>(`Failed to clear from IndexedDB (${this.key})`, err)\n\t\t}\n\t}\n}\n\n/**\n * Factory function to create the appropriate storage manager\n */\nexport function createStorageManager<T>(type: StorageType, key: string): IStorageManager<T> {\n\tswitch (type) {\n\t\tcase 'local':\n\t\t\treturn new LocalStorageManager<T>(key)\n\t\tcase 'session':\n\t\t\treturn new SessionStorageManager<T>(key)\n\t\tcase 'indexeddb':\n\t\t\treturn new IndexedDBStorageManager<T>(key)\n\t\tcase 'memory':\n\t\tdefault:\n\t\t\treturn new MemoryStorageManager<T>()\n\t}\n}\n","// src/store/context-array.ts - Array store implementation with Immer\nimport { Draft, castDraft, produce } from 'immer'\nimport { throttleTime } from 'rxjs'\nimport { BaseStore } from './store.class'\nimport { IArrayStore, StorageType, StoreError } from './types'\n\n/**\n * Enhanced array store with TypeScript support and immutability\n * Extends BaseStore for common functionality\n */\nexport class SchmancyArrayStore<T = any> extends BaseStore<T[]> implements IArrayStore<T> {\n\tpublic static type = 'array'\n\n\t// Static map to hold instances\n\tprivate static instances: Map<string, SchmancyArrayStore<any>> = new Map()\n\n\t/**\n\t * Static method to get or create an instance with proper typing\n\t */\n\tpublic static getInstance<T = any>(storage: StorageType, key: string, defaultValue: T[] = []): SchmancyArrayStore<T> {\n\t\tconst instanceKey = `${storage}:${key}`\n\t\tif (!this.instances.has(instanceKey)) {\n\t\t\tthis.instances.set(instanceKey, new SchmancyArrayStore<T>(storage, key, defaultValue))\n\t\t}\n\t\treturn this.instances.get(instanceKey) as SchmancyArrayStore<T>\n\t}\n\n\t/**\n\t * Constructor extension to set up persistence\n\t */\n\tconstructor(storageType: StorageType, key: string, defaultValue: T[] = []) {\n\t\tsuper(storageType, key, defaultValue)\n\n\t\t// Set up persistence throttling for better performance\n\t\tif (storageType !== 'memory') {\n\t\t\tthis.setupPersistence()\n\t\t}\n\t}\n\n\t/**\n\t * Set up persistence to storage with throttling\n\t */\n\tprivate setupPersistence(): void {\n\t\tthis.$.pipe(throttleTime(100, undefined, { leading: true, trailing: true })).subscribe(currentValue => {\n\t\t\tthis.storage.save(currentValue).catch(err => {\n\t\t\t\tconst error = new StoreError<unknown>(`Error saving to ${this.storageType} storage for ${this.key}`, err)\n\t\t\t\tthis.error$.next(error)\n\t\t\t\tconsole.error(error)\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Add an item to the end of the array\n\t */\n\tpublic push(...items: T[]): void {\n\t\ttry {\n\t\t\t// Use Immer to create a new immutable array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tdraft.push(...items.map(item => castDraft(item) as Draft<T>))\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null) // Clear any previous errors\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error pushing items in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Remove and return the last item from the array\n\t */\n\tpublic pop(): T | undefined {\n\t\ttry {\n\t\t\t// Get the item before modifying the array\n\t\t\tconst originalItem = this.value.length > 0 ? this.value[this.value.length - 1] : undefined\n\n\t\t\t// Use Immer to create a new immutable array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tdraft.pop()\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null) // Clear any previous errors\n\t\t\treturn originalItem\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error popping item from ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t\treturn undefined\n\t\t}\n\t}\n\t/**\n\t * Add item(s) to the beginning of the array\n\t */\n\tpublic unshift(...items: T[]): void {\n\t\ttry {\n\t\t\t// Use Immer to create a new immutable array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tdraft.unshift(...items.map(item => castDraft(item) as Draft<T>))\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error unshifting items in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Remove and return the first item from the array\n\t */\n\tpublic shift(): T | undefined {\n\t\ttry {\n\t\t\t// Get the item before modifying the array\n\t\t\tconst originalItem = this.value.length > 0 ? this.value[0] : undefined\n\n\t\t\t// Use Immer to create a new immutable array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tdraft.shift()\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t\treturn originalItem\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error shifting item from ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\t/**\n\t * Update an item at a specific index\n\t */\n\tpublic set(index: number, value: T): void {\n\t\ttry {\n\t\t\t// Use Immer to create a new immutable array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tif (index >= 0 && index < draft.length) {\n\t\t\t\t\tdraft[index] = castDraft(value) as Draft<T>\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Index ${index} out of bounds (length: ${draft.length})`)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error setting item at index ${index} in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Get item at a specific index\n\t */\n\tpublic get(index: number): T | undefined {\n\t\treturn this.value[index]\n\t}\n\n\t/**\n\t * Remove items from the array\n\t */\n\tpublic splice(start: number, deleteCount?: number, ...items: T[]): T[] {\n\t\ttry {\n\t\t\t// Get a copy of the current array\n\t\t\tconst originalArray = [...this.value]\n\n\t\t\t// Perform splice on the copy to get the removed items\n\t\t\tconst removed = originalArray.splice(start, deleteCount ?? 0, ...items)\n\n\t\t\t// Now use Immer to create the new state with the same changes\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tdraft.splice(start, deleteCount ?? 0, ...items.map(item => castDraft(item) as Draft<T>))\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t\treturn removed\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error splicing items in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t\treturn []\n\t\t}\n\t}\n\n\t/**\n\t * Remove an item by value (first occurrence)\n\t */\n\tpublic remove(item: T, compareFn?: (a: T, b: T) => boolean): boolean {\n\t\ttry {\n\t\t\tconst equals = compareFn || ((a, b) => a === b)\n\n\t\t\t// Find the index in the original array\n\t\t\tconst index = this.value.findIndex(currentItem => equals(currentItem, item))\n\n\t\t\t// If found, remove using Immer\n\t\t\tif (index !== -1) {\n\t\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\t\tdraft.splice(index, 1)\n\t\t\t\t})\n\n\t\t\t\tthis.updateState(nextState)\n\t\t\t\tthis.error$.next(null)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Item not found\n\t\t\tthis.error$.next(null)\n\t\t\treturn false\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error removing item in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t\treturn false\n\t\t}\n\t}\n\n\t/**\n\t * Replace entire array\n\t */\n\tpublic replace(newArray: T[]): void {\n\t\ttry {\n\t\t\t// Create a fresh immutable copy with Immer\n\t\t\tconst nextState = produce(newArray, draft => draft)\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error replacing array in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Filter items in the array\n\t */\n\tpublic filter(predicate: (value: T, index: number, array: T[]) => boolean): void {\n\t\ttry {\n\t\t\t// Filter the original array first\n\t\t\tconst filteredArray = this.value.filter(predicate)\n\n\t\t\t// Then use Immer to create a new immutable array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\t// Clear the draft array and fill it with the filtered items\n\t\t\t\tdraft.length = 0\n\t\t\t\tdraft.push(...filteredArray.map(item => castDraft(item) as Draft<T>))\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error filtering array in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Map over the array and transform items\n\t */\n\tpublic map<U>(mapper: (value: T, index: number, array: T[]) => U): U[] {\n\t\treturn this.value.map(mapper)\n\t}\n\n\t/**\n\t * Sort the array in place\n\t */\n\tpublic sort(compareFn?: (a: T, b: T) => number): void {\n\t\ttry {\n\t\t\t// Create a copy of the current array and apply the sort operation\n\t\t\tconst sortedArray = [...this.value].sort(compareFn)\n\n\t\t\t// Use Immer to create a new immutable array that matches the sorted array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\t// Clear the array and refill it with the sorted items\n\t\t\t\tdraft.length = 0\n\t\t\t\tdraft.push(...sortedArray.map(item => castDraft(item) as Draft<T>))\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error sorting array in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Update a specific item using a callback function\n\t */\n\tpublic update(index: number, updater: (item: Draft<T>) => void): void {\n\t\ttry {\n\t\t\t// Use Immer to create a new immutable array\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tif (index >= 0 && index < draft.length) {\n\t\t\t\t\tupdater(draft[index])\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Index ${index} out of bounds (length: ${draft.length})`)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error updating item at index ${index} in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Clear the array\n\t */\n\tpublic clear(): void {\n\t\tthis.updateState([])\n\t}\n\n\t/**\n\t * Setup development tools for debugging\n\t */\n\tprotected setupDevTools(): void {\n\t\tif (typeof window !== 'undefined') {\n\t\t\t// Add to global store registry\n\t\t\t;(window as any).__STORES__ = (window as any).__STORES__ || {}\n\t\t\t;(window as any).__STORES__[this.key] = {\n\t\t\t\tgetState: () => this.value,\n\t\t\t\tpush: this.push.bind(this),\n\t\t\t\tpop: this.pop.bind(this),\n\t\t\t\tunshift: this.unshift.bind(this),\n\t\t\t\tshift: this.shift.bind(this),\n\t\t\t\tset: this.set.bind(this),\n\t\t\t\tget: this.get.bind(this),\n\t\t\t\tsplice: this.splice.bind(this),\n\t\t\t\tremove: this.remove.bind(this),\n\t\t\t\treplace: this.replace.bind(this),\n\t\t\t\tfilter: this.filter.bind(this),\n\t\t\t\tmap: this.map.bind(this),\n\t\t\t\tsort: this.sort.bind(this),\n\t\t\t\tupdate: this.update.bind(this),\n\t\t\t\tclear: this.clear.bind(this),\n\t\t\t\tsubscribe: (callback: (state: T[]) => void) => {\n\t\t\t\t\tconst subscription = this.$.subscribe(callback)\n\t\t\t\t\treturn () => subscription.unsubscribe()\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n}\n","// src/store/context-collection.ts - Updated with Immer for immutability\nimport { throttleTime } from 'rxjs'\nimport { BaseStore } from './store.class'\nimport { ICollectionStore, StorageType, StoreError } from './types'\nimport { produce, Draft, castDraft } from 'immer'\n\n/**\n * Enhanced collection store with better TypeScript support and immutability\n * Now extends BaseStore for common functionality\n */\nexport default class SchmancyCollectionStore<V = any> extends BaseStore<Map<string, V>> implements ICollectionStore<V> {\n\tpublic static type = 'collection'\n\n\t// Static map to hold instances\n\tprivate static instances: Map<string, SchmancyCollectionStore<any>> = new Map()\n\n\t/**\n\t * Static method to get or create an instance with proper typing\n\t */\n\tpublic static getInstance<V = any>(\n\t\tstorage: StorageType,\n\t\tkey: string,\n\t\tdefaultValue: Map<string, V>,\n\t): SchmancyCollectionStore<V> {\n\t\tconst instanceKey = `${storage}:${key}`\n\t\tif (!this.instances.has(instanceKey)) {\n\t\t\tthis.instances.set(instanceKey, new SchmancyCollectionStore<V>(storage, key, defaultValue))\n\t\t}\n\t\treturn this.instances.get(instanceKey) as SchmancyCollectionStore<V>\n\t}\n\n\t/**\n\t * Set values in the collection with proper typing and immutability.\n\t * Supports multiple input types to prevent common developer mistakes.\n\t * \n\t * @example\n\t * // Single key-value pair\n\t * store.set('key1', value1)\n\t * \n\t * @example\n\t * // Merge from a Map\n\t * const dataMap = new Map([['key1', value1], ['key2', value2]])\n\t * store.set(dataMap)\n\t * \n\t * @example\n\t * // Merge from an object\n\t * store.set({ key1: value1, key2: value2 })\n\t */\n\tpublic set<T = V>(keyOrData: string | Map<string, T> | Record<string, T>, value?: T): void {\n\t\ttry {\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\t// Handle different input types\n\t\t\t\tif (typeof keyOrData === 'string') {\n\t\t\t\t\t// Traditional key-value pair\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tthrow new Error('Value is required when setting a single key')\n\t\t\t\t\t}\n\t\t\t\t\tdraft.set(keyOrData, castDraft(value) as unknown as Draft<V>)\n\t\t\t\t} else if (keyOrData instanceof Map) {\n\t\t\t\t\t// Merge all entries from the Map\n\t\t\t\t\tArray.from(keyOrData.entries()).forEach(([key, val]) => {\n\t\t\t\t\t\tdraft.set(key, castDraft(val) as unknown as Draft<V>)\n\t\t\t\t\t})\n\t\t\t\t} else if (typeof keyOrData === 'object' && keyOrData !== null) {\n\t\t\t\t\t// Merge all properties from the object\n\t\t\t\t\tObject.entries(keyOrData).forEach(([key, val]) => {\n\t\t\t\t\t\tdraft.set(key, castDraft(val) as unknown as Draft<V>)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error('Invalid input: expected string key with value, Map, or object')\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// Update the state with the new immutable Map\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null) // Clear any previous errors\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error setting values in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Merge a Map into the collection. This is a helper method that provides\n\t * explicit semantics for merging operations.\n\t * \n\t * @param map The Map to merge into the collection\n\t * @example\n\t * const dataMap = new Map([['key1', value1], ['key2', value2]])\n\t * store.merge(dataMap)\n\t */\n\tpublic merge<T = V>(map: Map<string, T>): void {\n\t\tthis.set(map)\n\t}\n\n\t/**\n\t * Delete a value from the collection immutably\n\t */\n\tpublic delete(key: string): void {\n\t\ttry {\n\t\t\t// Use Immer to create a new immutable Map with the key deleted\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tdraft.delete(key)\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null) // Clear any previous errors\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error deleting key ${key} from ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Clear the collection immutably\n\t */\n\tpublic clear(): void {\n\t\t// Create a fresh empty Map\n\t\tthis.updateState(new Map<string, V>())\n\t}\n\n\t/**\n\t * Batch update multiple items in the collection\n\t * @param updates Object with keys and values to update\n\t */\n\tpublic batchUpdate(updates: Record<string, V>): void {\n\t\ttry {\n\t\t\t// Use Immer to apply all updates in a single immutable operation\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tObject.entries(updates).forEach(([key, value]) => {\n\t\t\t\t\tdraft.set(key, castDraft(value) as unknown as Draft<V>)\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error batch updating in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Update an existing item in the collection using an updater function\n\t * @param key Key of the item to update\n\t * @param updater Function that receives the current value and returns the new value\n\t */\n\tpublic update(key: string, updater: (currentValue: Draft<V>) => void): void {\n\t\ttry {\n\t\t\t// Use Immer to update the specific item\n\t\t\tconst nextState = produce(this.value, draft => {\n\t\t\t\tconst currentValue = draft.get(key)\n\t\t\t\tif (currentValue !== undefined) {\n\t\t\t\t\tupdater(currentValue)\n\t\t\t\t\t// No need to set the value back since it's updated in place\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.updateState(nextState)\n\t\t\tthis.error$.next(null)\n\t\t} catch (err) {\n\t\t\tconst error = new StoreError<unknown>(`Error updating item ${key} in ${this.key}`, err)\n\t\t\tthis.error$.next(error)\n\t\t\tconsole.error(error)\n\t\t}\n\t}\n\n\t/**\n\t * Constructor extension to set up persistence\n\t */\n\tconstructor(storageType: StorageType, key: string, defaultValue: Map<string, V>) {\n\t\tsuper(storageType, key, defaultValue)\n\n\t\t// Set up persistence throttling for better performance\n\t\tif (storageType !== 'memory') {\n\t\t\tthis.setupPersistence()\n\t\t}\n\t}\n\n\t/**\n\t * Set up persistence to storage with throttling\n\t */\n\tprivate setupPersistence(): void {\n\t\tthis.$.pipe(throttleTime(100, undefined, { leading: true, trailing: true })).subscribe(currentValue => {\n\t\t\tthis.storage.save(currentValue).catch(err => {\n\t\t\t\tconst error = new StoreError<unknown>(`Error saving to ${this.storageType} storage for ${this.key}`, err)\n\t\t\t\tthis.error$.next(error)\n\t\t\t\tconsole.error(error)\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Setup development tools for debugging\n\t */\n\tprotected setupDevTools(): void {\n\t\tif (typeof window !== 'undefined') {\n\t\t\t// Add to global store registry\n\t\t\t;(window as any).__STORES__ = (window as any).__STORES__ || {}\n\t\t\t;(window as any).__STORES__[this.key] = {\n\t\t\t\tgetState: () => this.value,\n\t\t\t\tset: this.set.bind(this),\n\t\t\t\tmerge: this.merge.bind(this),\n\t\t\t\tdelete: this.delete.bind(this),\n\t\t\t\tclear: this.clear.bind(this),\n\t\t\t\tbatchUpdate: this.batchUpdate.bind(this),\n\t\t\t\tupdate: this.update.bind(this),\n\t\t\t\tsubscribe: (callback: (state: Map<string, V>) => void) => {\n\t\t\t\t\tconst subscription = this.$.subscribe(callback)\n\t\t\t\t\treturn () => subscription.unsubscribe()\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t}\n}\n","// src/store/context-create.ts - Fixed version\n\nimport { SchmancyArrayStore } from './context-array'\nimport SchmancyCollectionStore from './context-collection'\nimport { SchmancyStoreObject } from './context-object'\nimport { IArrayStore, ICollectionStore, IStore, StorageType } from './types'\n\n/**\n * Type guard to check if an object is empty\n */\nfunction isEmptyObject(obj: unknown): boolean {\n\tif (typeof obj !== 'object' || obj === null) {\n\t\treturn false\n\t}\n\treturn Object.keys(obj).length === 0\n}\n\n/**\n * Type guard for Map objects\n */\nfunction isMap<K, V>(value: unknown): value is Map<K, V> {\n\treturn value instanceof Map\n}\n\n/**\n * Type guard for Array objects\n */\nfunction isArray<T>(value: unknown): value is Array<T> {\n\treturn Array.isArray(value)\n}\n\n/**\n * Type guard for plain objects (not arrays, maps, null, etc.)\n */\nfunction isPlainObject(value: unknown): boolean {\n\treturn (\n\t\tvalue !== null &&\n\t\ttypeof value === 'object' &&\n\t\t!Array.isArray(value) &&\n\t\t!(value instanceof Map) &&\n\t\t!(value instanceof Set) &&\n\t\t!(value instanceof Date) &&\n\t\t!(value instanceof RegExp) &&\n\t\tObject.getPrototypeOf(value) === Object.prototype\n\t)\n}\n\n/**\n * Creates a regular object store with better typing and error handling\n */\nfunction createObjectStore<T extends Record<string, any>>(\n\tinitialData: T,\n\tstorage: StorageType,\n\tkey: string,\n): IStore<T> & SchmancyStoreObject<T> {\n\ttry {\n\t\t// Validate storage type\n\t\tif (storage === 'indexeddb') {\n\t\t\tconsole.warn(`IndexedDB storage is not optimal for plain objects. Using 'local' instead for key: ${key}`)\n\t\t\tstorage = 'local'\n\t\t}\n\n\t\t// Ensure initialData is a plain object\n\t\tif (!isPlainObject(initialData)) {\n\t\t\tconsole.warn(`Initial data is not a plain object. Converting to object for key: ${key}`)\n\t\t\tinitialData = { ...initialData } as T\n\t\t}\n\n\t\t// Create the store instance\n\t\tconst store = SchmancyStoreObject.getInstance<T>(storage, key, initialData)\n\n\t\t// Initialize with provided data if store is empty\n\t\tif (isEmptyObject(store.value)) {\n\t\t\tstore.set({ ...initialData }) // Use spread to create a copy\n\t\t}\n\n\t\treturn store\n\t} catch (err) {\n\t\tconsole.error(`Failed to create object store for key: ${key}`, err)\n\t\t// Fall back to a basic implementation that won't throw\n\t\tconst fallbackStore = SchmancyStoreObject.getInstance<T>(\n\t\t\t'memory', // Fallback to memory storage\n\t\t\t`${key}-fallback`,\n\t\t\tinitialData,\n\t\t)\n\t\tconsole.warn(`Using fallback memory store for key: ${key}`)\n\t\treturn fallbackStore\n\t}\n}\n\n/**\n * Creates a collection store with better typing and error handling\n */\nfunction createCollectionStore<V>(\n\tinitialData: Map<string, V>,\n\tstorage: StorageType,\n\tkey: string,\n): ICollectionStore<V> & SchmancyCollectionStore<V> {\n\ttry {\n\t\t// Create the store instance\n\t\tconst store = SchmancyCollectionStore.getInstance(storage, key, initialData)\n\n\t\t// Initialize with provided data if store is empty\n\t\tif (!store.value.size) {\n\t\t\t// Create a new Map instance to avoid modifying the input\n\t\t\tstore.replace(new Map(initialData))\n\t\t}\n\n\t\treturn store\n\t} catch (err) {\n\t\tconsole.error(`Failed to create collection store for key: ${key}`, err)\n\t\t// Fall back to a basic implementation that won't throw\n\t\tconst fallbackStore = SchmancyCollectionStore.getInstance<V>(\n\t\t\t'memory', // Fallback to memory storage\n\t\t\t`${key}-fallback`,\n\t\t\tnew Map(initialData),\n\t\t)\n\t\tconsole.warn(`Using fallback memory store for key: ${key}`)\n\t\treturn fallbackStore\n\t}\n}\n\n/**\n * Creates an array store with better typing and error handling\n */\nfunction createArrayStore<T>(\n\tinitialData: T[],\n\tstorage: StorageType,\n\tkey: string,\n): IArrayStore<T> & SchmancyArrayStore<T> {\n\ttry {\n\t\t// Create the store instance\n\t\tconst store = SchmancyArrayStore.getInstance(storage, key, initialData)\n\n\t\t// Initialize with provided data if store is empty\n\t\tif (!store.value.length) {\n\t\t\t// Create a new array instance to avoid modifying the input\n\t\t\tstore.replace([...initialData])\n\t\t}\n\n\t\treturn store\n\t} catch (err) {\n\t\tconsole.error(`Failed to create array store for key: ${key}`, err)\n\t\t// Fall back to a basic implementation that won't throw\n\t\tconst fallbackStore = SchmancyArrayStore.getInstance<T>(\n\t\t\t'memory', // Fallback to memory storage\n\t\t\t`${key}-fallback`,\n\t\t\t[...initialData],\n\t\t)\n\t\tconsole.warn(`Using fallback memory store for key: ${key}`)\n\t\treturn fallbackStore\n\t}\n}\n\n// Function overloads for better type inference\n/**\n * Creates a context for managing object state\n * @param initialData The initial object data\n * @param storage Storage type to use\n * @param key Unique key for the store\n * @returns A store instance for the object\n */\nexport function createContext<T extends Record<string, any>>(\n\tinitialData: T,\n\tstorage: StorageType,\n\tkey: string,\n): IStore<T> & SchmancyStoreObject<T>\n\n/**\n * Creates a context for managing collection state\n * @param initialData The initial Map collection\n * @param storage Storage type to use\n * @param key Unique key for the store\n * @returns A collection store instance\n */\nexport function createContext<V>(\n\tinitialData: Map<string, V>,\n\tstorage: StorageType,\n\tkey: string,\n): ICollectionStore<V> & SchmancyCollectionStore<V>\n\n/**\n * Creates a context for managing array state\n * @param initialData The initial array\n * @param storage Storage type to use\n * @param key Unique key for the store\n * @returns An array store instance\n */\nexport function createContext<T>(\n\tinitialData: T[],\n\tstorage: StorageType,\n\tkey: string,\n): IArrayStore<T> & SchmancyArrayStore<T>\n\n/**\n * Implementation of the createContext function with complete type checking\n * and robust error handling\n */\nexport function createContext<T extends Record<string, any> | Map<string, any> | any[]>(\n\tinitialData: T,\n\tstorage: StorageType,\n\tkey: string,\n):\n\t| (IStore<T> & SchmancyStoreObject<T>)\n\t| (ICollectionStore<any> & SchmancyCollectionStore<any>)\n\t| (IArrayStore<any> & SchmancyArrayStore<any>) {\n\ttry {\n\t\t// Validate input\n\t\tif (initialData === null || initialData === undefined) {\n\t\t\tconsole.error('Initial data cannot be null or undefined')\n\t\t\t// Provide a sensible default based on type expected\n\t\t\tif (key.includes('collection') || key.includes('map')) {\n\t\t\t\tinitialData = new Map() as unknown as T\n\t\t\t} else if (key.includes('array') || key.includes('list')) {\n\t\t\t\tinitialData = [] as unknown as T\n\t\t\t} else {\n\t\t\t\tinitialData = {} as T\n\t\t\t}\n\t\t}\n\n\t\t// Determine store type based on input data with improved type checking\n\t\tif (isMap<string, any>(initialData)) {\n\t\t\treturn createCollectionStore<any>(initialData, storage, key)\n\t\t} else if (isArray<any>(initialData)) {\n\t\t\treturn createArrayStore<any>(initialData, storage, key)\n\t\t} else if (typeof initialData === 'object') {\n\t\t\treturn createObjectStore<any>(initialData as Record<string, any>, storage, key)\n\t\t} else {\n\t\t\t// Handle non-object data by wrapping it\n\t\t\tconsole.warn(`Initial data must be an object, array, or Map. Got ${typeof initialData}. Creating object wrapper.`)\n\t\t\treturn createObjectStore<any>({ value: initialData } as Record<string, any>, storage, key)\n\t\t}\n\t} catch (error) {\n\t\t// Last-resort error handling\n\t\tconsole.error(`Fatal error creating context for ${key}:`, error)\n\n\t\t// Create an emergency fallback store that won't throw\n\t\treturn createObjectStore<any>(\n\t\t\ttypeof initialData === 'object' && initialData !== null ? { ...initialData } : { value: initialData },\n\t\t\t'memory',\n\t\t\t`emergency-fallback-${key}`,\n\t\t)\n\t}\n}\n\n/**\n * Creates an array context with simplified API and type inference\n * @param initialData The initial array data\n * @param key Unique key for the store\n * @param storage Storage type to use (defaults to 'local')\n * @returns An array store instance\n */\nexport function createArrayContext<T>(\n\tinitialData: T[] = [],\n\tkey: string,\n\tstorage: StorageType = 'local',\n): IArrayStore<T> & SchmancyArrayStore<T> {\n\ttry {\n\t\treturn createContext<T>(initialData, storage, key)\n\t} catch (err) {\n\t\tconsole.error(`Failed to create array context for key: ${key}`, err)\n\t\t// Return a fallback store\n\t\treturn createArrayStore<T>(initialData, 'memory', `${key}-fallback`)\n\t}\n}\n\n/**\n * Creates a testable array context\n * @param initialData The initial array data\n * @param key Unique key for the store\n * @returns An array store that uses memory storage\n */\nexport function createTestArrayContext<T>(\n\tinitialData: T[] = [],\n\tkey: string = 'test-array',\n): IArrayStore<T> & SchmancyArrayStore<T> {\n\ttry {\n\t\treturn createContext<T>(initialData, 'memory', key)\n\t} catch (err) {\n\t\tconsole.error(`Failed to create test array context for key: ${key}`, err)\n\t\t// Return a fallback store with a different key\n\t\treturn createArrayStore<T>(initialData, 'memory', `${key}-emergency-fallback`)\n\t}\n}\n"],"names":["NOTHING","Symbol","for","DRAFTABLE","DRAFT_STATE","errors","process","env","NODE_ENV","plugin","thing","data","die","error","args","e","msg","apply","Error","getPrototypeOf","Object","isDraft","value","isDraftable","isPlainObject","Array","isArray","constructor","isMap","isSet","objectCtorString","prototype","toString","proto","Ctor","hasOwnProperty","call","Function","each","obj","iter","getArchtype","Reflect","ownKeys","forEach","key","entry","index","state","type_","has","prop","set","propOrOldValue","t","add","target","Map","Set","latest","copy_","base_","shallowCopy","base","strict","slice","isPlain","descriptors","getOwnPropertyDescriptors","keys","i","length","desc","writable","configurable","get","enumerable","create","assign","freeze","deep","isFrozen","defineProperties","dontMutateFrozenCollections","clear","delete","values","currentScope","plugins","getPlugin","pluginKey","getCurrentScope","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer2","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","result","baseDraft","modified_","finalize","maybeFreeze","generateReplacementPatches_","rootScope","path","childValue","finalizeProperty","scope_","finalized_","resultEach","isSet2","generatePatches_","parentState","targetObject","rootPath","targetIsSet","res","assigned_","concat","autoFreeze_","propertyIsEnumerable","objectTraps","source","getDescriptorFromProto","draft_","peek","prepareCopy","createProxy","current2","currentState","x","y","markChanged","Number","isNaN","deleteProperty","owner","getOwnPropertyDescriptor","defineProperty","setPrototypeOf","arrayTraps","useStrictShallowCopy_","fn","arguments","this","parseInt","parent","proxyMap_","proxySet_","isManual_","traps","revoke","proxy","Proxy","revocable","push","currentImpl","copy","_a","_b","produce","config","recipe","defaultBase","self","base2","hasError","p","ip","produceWithPatches","patches","inversePatches","autoFreeze","setAutoFreeze","useStrictShallowCopy","setUseStrictShallowCopy","patch","op","applyPatchesImpl","applyPatches_","StoreError","message","cause","context","super","name","timestamp","Date","captureStackTrace","toJSON","toISOString","stack","MemoryStorageManager","LocalStorageManager","load","localStorage","getItem","JSON","parse","err","setItem","stringify","removeItem","SessionStorageManager","sessionStorage","IndexedDBStorageManager","openDB","Promise","resolve","reject","request","indexedDB","open","DB_NAME","DB_VERSION","onupgradeneeded","db","objectStoreNames","contains","STORE_NAME","createObjectStore","onsuccess","onerror","transaction","objectStore","close","put","_Z","createStorageManager","type","DraftMap","size","assertUnrevoked","prepareMapCopy","cb","thisArg","_value","_map","iterator","next","r","done","entries","DraftSet","prepareSetCopy","implementation","immerable","BaseStore","storageType","defaultValue","safeDefaultValue","_ready","_destroy$","Subject","error$","BehaviorSubject","isImmerDraftable","$","storage","initializeFromStorage","ready","updateState","getValue","destroy","complete","newValue","nextState","storeError","persistToStorage","catch","storedValue","processedValue","processStoredValue","immutableValue","save","SchmancyArrayStore","instanceKey","instances","setupPersistence","pipe","throttleTime","leading","trailing","subscribe","currentValue","items","map","item","pop","originalItem","unshift","shift","start","deleteCount","removed","splice","compareFn","equals","a","b","findIndex","currentItem","newArray","predicate","filteredArray","filter","mapper","sortedArray","sort","updater","setupDevTools","window","__STORES__","getState","bind","remove","replace","update","callback","subscription","unsubscribe","_st","SchmancyCollectionStore","keyOrData","from","val","updates","merge","batchUpdate","_nt","SchmancyStoreObject","fallbackState","fallbackErr","freshDefaultValue","String","parts","split","current","part","lastPart","setPath","_rt","initialData","RegExp","store","getInstance","createArrayStore","createContext","includes","createArrayContext","createTestArrayContext"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-range-B-5LtvhH.js","sources":["../../../node_modules/dayjs/dayjs.min.js","../../../node_modules/dayjs/plugin/quarterOfYear.js","../src/date-range/date-range-presets.ts","../src/date-range/date-utils.ts","../src/date-range/date-range-dialog.ts","../src/date-range/date-range.ts","../src/date-range/date-range-helpers.ts"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","import dayjs from 'dayjs'\r\n\r\nexport type PresetUnit = dayjs.OpUnitType | 'quarter'\r\n\r\nexport interface DateRangePreset {\r\n\tlabel: string\r\n\trange: { dateFrom: string; dateTo: string }\r\n\tstep: PresetUnit\r\n}\r\n\r\nexport interface PresetCategory {\r\n\tname: string\r\n\tpresets: DateRangePreset[]\r\n}\r\n\r\n/**\r\n * Generate date range presets for different time periods\r\n */\r\nexport function generatePresetCategories(format: string, includeTime: boolean = false): PresetCategory[] {\r\n\tconst categories: PresetCategory[] = []\r\n\r\n\t// Hours category (only for datetime-local)\r\n\tif (includeTime) {\r\n\t\tcategories.push({\r\n\t\t\tname: 'Hours',\r\n\t\t\tpresets: [\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 24 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(24, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tlabel: 'Last 12 Hours',\r\n\t\t\t\t\trange: {\r\n\t\t\t\t\t\tdateFrom: dayjs().subtract(12, 'hours').format(format),\r\n\t\t\t\t\t\tdateTo: dayjs().format(format),\r\n\t\t\t\t\t},\r\n\t\t\t\t\tstep: 'hour',\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t})\r\n\t}\r\n\r\n\t// Days category\r\n\tcategories.push({\r\n\t\tname: 'Days',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Today',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Yesterday',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'days').startOf('day').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'days').endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t\t...generateLastNDaysPresets([7, 14, 30, 60, 90], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Weeks category\r\n\tcategories.push({\r\n\t\tname: 'Weeks',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Week',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'weeks').startOf('week').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'weeks').endOf('week').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'week',\r\n\t\t\t},\r\n\t\t\t...generateLastNWeeksPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Months category\r\n\tcategories.push({\r\n\t\tname: 'Months',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Month',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'month').startOf('month').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'month').endOf('month').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'month',\r\n\t\t\t},\r\n\t\t\t...generateLastNMonthsPresets([3, 6], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Quarters category\r\n\tcategories.push({\r\n\t\tname: 'Quarters',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Quarter',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'quarter').startOf('quarter').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'quarter').endOf('quarter').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'quarter',\r\n\t\t\t},\r\n\t\t\t...generateLastNQuartersPresets([2, 4], format),\r\n\t\t],\r\n\t})\r\n\r\n\t// Years category\r\n\tcategories.push({\r\n\t\tname: 'Years',\r\n\t\tpresets: [\r\n\t\t\t{\r\n\t\t\t\tlabel: 'This Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Last Year',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().subtract(1, 'year').startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().subtract(1, 'year').endOf('year').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'year',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Year to Date',\r\n\t\t\t\trange: {\r\n\t\t\t\t\tdateFrom: dayjs().startOf('year').format(format),\r\n\t\t\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t\t\t},\r\n\t\t\t\tstep: 'day',\r\n\t\t\t},\r\n\t\t],\r\n\t})\r\n\r\n\treturn categories\r\n}\r\n\r\n// Helper functions to generate preset arrays\r\nfunction generateLastNDaysPresets(days: number[], format: string): DateRangePreset[] {\r\n\treturn days.map(n => ({\r\n\t\tlabel: `Last ${n} Days`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n - 1, 'days').startOf('day').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'day' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNWeeksPresets(weeks: number[], format: string): DateRangePreset[] {\r\n\treturn weeks.map(n => ({\r\n\t\tlabel: `Last ${n} Weeks`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'weeks').startOf('week').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'week' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNMonthsPresets(months: number[], format: string): DateRangePreset[] {\r\n\treturn months.map(n => ({\r\n\t\tlabel: `Last ${n} Months`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'months').startOf('month').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'month' as PresetUnit,\r\n\t}))\r\n}\r\n\r\nfunction generateLastNQuartersPresets(quarters: number[], format: string): DateRangePreset[] {\r\n\treturn quarters.map(n => ({\r\n\t\tlabel: `Last ${n} Quarters`,\r\n\t\trange: {\r\n\t\t\tdateFrom: dayjs().subtract(n, 'quarters').startOf('quarter').format(format),\r\n\t\t\tdateTo: dayjs().endOf('day').format(format),\r\n\t\t},\r\n\t\tstep: 'quarter' as PresetUnit,\r\n\t}))\r\n}","import dayjs from 'dayjs'\n\ntype DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\n/**\n * Ensures that a date string conforms to a specific format.\n * If the date is already in the correct format, it returns the original string.\n * If the date is in a different format, it attempts to convert it to the specified format.\n * If the date is invalid or cannot be converted, it returns null.\n *\n * @param dateString The date string to validate and format.\n * @param expectedFormat The expected date format (e.g., 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm').\n * @returns The formatted date string, or null if the date is invalid.\n */\nfunction enforceDateFormat(dateString: string | undefined, expectedFormat: DateFormat): string | null {\n\tif (!dateString) {\n\t\treturn null // Or handle the undefined case differently if needed\n\t}\n\n\tconst parsedDate = dayjs(dateString)\n\n\tif (!parsedDate.isValid()) {\n\t\treturn null // Date is invalid\n\t}\n\n\treturn parsedDate.format(expectedFormat)\n}\n\n/**\n * Validates if the initial date range values are in the expected format.\n *\n * @param dateFrom The dateFrom value to validate.\n * @param dateTo The dateTo value to validate.\n * @param expectedFormat The expected date format.\n * @returns An object indicating whether each date is valid, and the formatted date or null if invalid.\n */\nfunction validateInitialDateRange(\n\tdateFrom: string | undefined,\n\tdateTo: string | undefined,\n\texpectedFormat: DateFormat,\n): {\n\tdateFrom: string | null\n\tdateTo: string | null\n\tisValid: boolean\n} {\n\tconst formattedDateFrom = enforceDateFormat(dateFrom, expectedFormat)\n\tconst formattedDateTo = enforceDateFormat(dateTo, expectedFormat)\n\n\tconst isValid = formattedDateFrom !== null && formattedDateTo !== null\n\n\treturn {\n\t\tdateFrom: formattedDateFrom,\n\t\tdateTo: formattedDateTo,\n\t\tisValid,\n\t}\n}\n\nexport { validateInitialDateRange }\n","import { $LitElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { $dialog } from '../dialog/dialog-service'\nimport { DateRangePreset, PresetCategory } from './date-range-presets'\n\n/**\n * Dialog content component for date range selection\n * \n * @element schmancy-date-range-dialog\n */\n@customElement('schmancy-date-range-dialog')\nexport class SchmancyDateRangeDialog extends $LitElement() {\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\t@property({ type: String }) activePreset: string | null = null\n\t@property({ type: Array }) presetCategories: PresetCategory[] = []\n\n\tprivate handleFromDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateFrom = { ...this.dateFrom, value: input.value }\n\t\t\n\t\t// If the new start date is after the current end date, adjust the end date\n\t\tif (this.dateTo.value && dayjs(this.dateFrom.value).isAfter(dayjs(this.dateTo.value))) {\n\t\t\tthis.dateTo = { ...this.dateTo, value: this.dateFrom.value }\n\t\t}\n\t\t\n\t\tthis.dispatchEvent(new CustomEvent('date-change', {\n\t\t\tdetail: { dateFrom: this.dateFrom.value, dateTo: this.dateTo.value },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate handleToDateChange(e: Event) {\n\t\tconst input = e.target as HTMLInputElement\n\t\tthis.dateTo = { ...this.dateTo, value: input.value }\n\t\t\n\t\tthis.dispatchEvent(new CustomEvent('date-change', {\n\t\t\tdetail: { dateFrom: this.dateFrom.value, dateTo: this.dateTo.value },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t}\n\n\tprivate handlePresetSelection(preset: DateRangePreset, e: Event) {\n\t\te.stopPropagation()\n\t\tthis.dispatchEvent(new CustomEvent('preset-select', {\n\t\t\tdetail: { preset },\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\t\t$dialog.dismiss()\n\t}\n\n\tprivate applyManualDateSelection(e: Event) {\n\t\te.stopPropagation()\n\t\t// Validate dates before applying\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) {\n\t\t\tthis.dispatchEvent(new CustomEvent('announce', {\n\t\t\t\tdetail: { message: 'Invalid date format. Please check your input.' },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true\n\t\t\t}))\n\t\t\treturn\n\t\t}\n\n\t\tthis.dispatchEvent(new CustomEvent('apply-dates', {\n\t\t\tdetail: { \n\t\t\t\tdateFrom: this.dateFrom.value, \n\t\t\t\tdateTo: this.dateTo.value,\n\t\t\t\tswapIfNeeded: fromDate.isAfter(toDate)\n\t\t\t},\n\t\t\tbubbles: true,\n\t\t\tcomposed: true\n\t\t}))\n\n\t\t$dialog.dismiss()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"w-full min-h-[400px] max-h-[80vh] flex flex-col p-4\">\n\t\t\t\t<!-- Custom Range Section with Inline Calendars -->\n\t\t\t\t<schmancy-surface type=\"container\" class=\"rounded-xl p-4 mb-6\">\n\t\t\t\t\t<div class=\"flex flex-col gap-4\">\n\t\t\t\t\t\t<div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n\t\t\t\t\t\t\t<!-- From Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateFrom.label || 'From'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${this.dateFrom.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.minDate)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\t@change=\"${this.handleFromDateChange}\"\n\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- To Date Calendar -->\n\t\t\t\t\t\t\t<div class=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"md\" class=\"text-surface-onVariant\">\n\t\t\t\t\t\t\t\t\t${this.dateTo.label || 'To'}\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t\ttype=\"${this.type}\"\n\t\t\t\t\t\t\t\t\t.value=\"${this.dateTo.value}\"\n\t\t\t\t\t\t\t\t\tmin=\"${ifDefined(this.dateFrom.value)}\"\n\t\t\t\t\t\t\t\t\tmax=\"${ifDefined(this.maxDate)}\"\n\t\t\t\t\t\t\t\t\t@change=\"${this.handleToDateChange}\"\n\t\t\t\t\t\t\t\t></schmancy-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<!-- Apply Button - Now at the bottom for logical flow -->\n\t\t\t\t\t\t<div class=\"flex justify-end mt-2\">\n\t\t\t\t\t\t\t<schmancy-button \n\t\t\t\t\t\t\t\tvariant=\"filled\" \n\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.applyManualDateSelection(e)}\"\n\t\t\t\t\t\t\t\t?disabled=\"${!this.dateFrom.value || !this.dateTo.value}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tApply\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</schmancy-surface>\n\n\t\t\t\t<!-- Presets Section -->\n\t\t\t\t<div class=\"flex-1 overflow-y-auto overflow-x-hidden min-h-0\">\n\t\t\t\t\t<div class=\"grid grid-cols-2 md:grid-cols-5 gap-6\">\n\t\t\t\t\t\t${this.presetCategories.map(\n\t\t\t\t\t\t\tcategory => html`\n\t\t\t\t\t\t\t\t<div class=\"space-y-3\">\n\t\t\t\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\" class=\"text-surface-onVariant font-medium\">\n\t\t\t\t\t\t\t\t\t\t${category.name}\n\t\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t\t\t<div class=\"space-y-1\">\n\t\t\t\t\t\t\t\t\t\t${category.presets.map(\n\t\t\t\t\t\t\t\t\t\t\tpreset => html`\n\t\t\t\t\t\t\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"${this.activePreset === preset.label ? 'filled' : 'text'}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"w-full justify-start text-left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t@click=\"${(e: Event) => this.handlePresetSelection(preset, e)}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-pressed=\"${this.activePreset === preset.label}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label=\"${preset.label}: ${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"${preset.range.dateFrom} to ${preset.range.dateTo}\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"truncate\">${preset.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}","import { $LitElement } from '@mixins/index'\nimport dayjs from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { debounceTime, fromEvent, takeUntil, timer } from 'rxjs'\nimport { $dialog } from '../dialog/dialog-service'\nimport { detectDateRangeType, formatDateRange } from './date-range-helpers'\nimport { DateRangePreset, generatePresetCategories, PresetCategory } from './date-range-presets'\nimport { validateInitialDateRange } from './date-utils'\nimport './date-range-dialog'\n\n// Add quarter plugin to dayjs\ndayjs.extend(quarterOfYear)\n\nexport type SchmancyDateRangeChangeEvent = CustomEvent<{\n\tdateFrom: string\n\tdateTo: string\n}>\n\n/**\n * A date range selector that supports presets and manual date input.\n *\n * @element schmancy-date-range\n * @fires change - Fired when the date range changes with dateFrom and dateTo values\n */\n@customElement('schmancy-date-range')\nexport class SchmancyDateRange extends $LitElement() {\n\t// Core properties\n\t@property({ type: String }) type: 'date' | 'datetime-local' = 'date'\n\t@property({ type: Object }) dateFrom: { label: string; value: string } = { label: 'From', value: '' }\n\t@property({ type: Object }) dateTo: { label: string; value: string } = { label: 'To', value: '' }\n\t@property({ type: String }) minDate?: string\n\t@property({ type: String }) maxDate?: string\n\n\t// Enhanced functionality\n\t@property({ type: Array }) customPresets: Array<{\n\t\tlabel: string\n\t\tdateFrom: string\n\t\tdateTo: string\n\t}> = []\n\t@property({ type: String }) format?: string\n\t@property({ type: Boolean }) disabled = false\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = 'Select date range'\n\t@property({ type: Boolean }) clearable = true\n\t@property() step?: 'day' | 'week' | 'month' | 'year' | number\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private selectedDateRange: string = ''\n\t@state() private activePreset: string | null = null\n\t@state() private announceMessage: string = ''\n\t@state() private isMobile = false\n\n\t// Default presets\n\tprivate presetRanges: DateRangePreset[] = []\n\n\t// Categorized presets\n\tprivate presetCategories: PresetCategory[] = []\n\n\t// Memoization cache\n\tprivate memoizedPresets = new Map<string, PresetCategory[]>()\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.initPresetRanges()\n\t\tthis.checkMobileView()\n\n\t\t// Validate initial date range\n\t\tconst dateFormat = this.getDateFormat() as 'YYYY-MM-DD' | 'YYYY-MM-DDTHH:mm'\n\t\tconst validatedRange = validateInitialDateRange(this.dateFrom.value, this.dateTo.value, dateFormat)\n\n\t\tif (validatedRange.isValid) {\n\t\t\tthis.dateFrom.value = validatedRange.dateFrom!\n\t\t\tthis.dateTo.value = validatedRange.dateTo!\n\t\t\tthis.updateSelectedDateRange()\n\t\t} else {\n\t\t\tconst now = dayjs().format(dateFormat)\n\t\t\tthis.dateFrom.value = now\n\t\t\tthis.dateTo.value = now\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\n\t\t// Set up global event handlers using RxJS\n\t\tthis.setupEventHandlers()\n\t}\n\n\tprivate setupEventHandlers() {\n\t\t// Handle keyboard navigation\n\t\tfromEvent<KeyboardEvent>(document, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.handleKeyboardNavigation(event)\n\t\t\t})\n\n\t\t// Handle window resize with debouncing\n\t\tfromEvent(window, 'resize')\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(150),\n\t\t\t\ttakeUntil(this.disconnecting)\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.checkMobileView()\n\t\t\t})\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (\n\t\t\t(changedProps.has('dateFrom') || changedProps.has('dateTo')) &&\n\t\t\t(this.dateFrom?.value !== undefined || this.dateTo?.value !== undefined)\n\t\t) {\n\t\t\tthis.updateSelectedDateRange()\n\t\t}\n\t}\n\n\tprivate initPresetRanges() {\n\t\tconst format = this.getDateFormat()\n\t\tconst cacheKey = `${this.type}-${format}-${JSON.stringify(this.customPresets)}`\n\t\t\n\t\t// Check memoization cache\n\t\tif (this.memoizedPresets.has(cacheKey)) {\n\t\t\tconst cached = this.memoizedPresets.get(cacheKey)!\n\t\t\tthis.presetCategories = cached\n\t\t\tthis.presetRanges = []\n\t\t\tcached.forEach(category => {\n\t\t\t\tthis.presetRanges.push(...category.presets)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Generate preset categories\n\t\tthis.presetCategories = generatePresetCategories(format, this.type === 'datetime-local')\n\n\t\t// Flatten presets for other methods that expect a flat list\n\t\tthis.presetRanges = []\n\t\tthis.presetCategories.forEach(category => {\n\t\t\tthis.presetRanges.push(...category.presets)\n\t\t})\n\n\t\t// Add custom presets if provided\n\t\tif (this.customPresets && this.customPresets.length > 0) {\n\t\t\tconst customCategory: PresetCategory = {\n\t\t\t\tname: 'Custom',\n\t\t\t\tpresets: this.customPresets.map(preset => ({\n\t\t\t\t\tlabel: preset.label,\n\t\t\t\t\trange: {\n\t\t\t\t\t\tdateFrom: preset.dateFrom,\n\t\t\t\t\t\tdateTo: preset.dateTo,\n\t\t\t\t\t},\n\t\t\t\t\tstep: 'day' as const,\n\t\t\t\t})),\n\t\t\t}\n\n\t\t\tthis.presetCategories.push(customCategory)\n\t\t\tthis.presetRanges.push(...customCategory.presets)\n\t\t}\n\t\t\n\t\t// Cache the result\n\t\tthis.memoizedPresets.set(cacheKey, [...this.presetCategories])\n\t}\n\n\tprivate getDateFormat(): string {\n\t\treturn this.format || (this.type === 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DDTHH:mm')\n\t}\n\n\t/**\n\t * Creates a concise display format for the selected date range\n\t */\n\tprivate updateSelectedDateRange() {\n\t\t// Find matching preset\n\t\tconst preset = this.presetRanges.find(\n\t\t\tp => p.range.dateFrom === this.dateFrom.value && p.range.dateTo === this.dateTo.value,\n\t\t)\n\n\t\tif (preset) {\n\t\t\t// If matches a preset, just use the preset name\n\t\t\tthis.selectedDateRange = preset.label\n\t\t\tthis.activePreset = preset.label\n\t\t\treturn\n\t\t}\n\n\t\t// If we didn't find a preset match, check if we should update the active preset\n\t\tthis.checkAndUpdateActivePreset(this.dateFrom.value, this.dateTo.value)\n\n\t\t// Custom date range - create concise format\n\t\tthis.activePreset = null\n\t\tthis.selectedDateRange = formatDateRange(this.dateFrom.value, this.dateTo.value, this.type, this.placeholder)\n\t}\n\n\tprivate setDateRange(dateFrom: string, dateTo: string) {\n\t\tthis.dateFrom.value = dateFrom\n\t\tthis.dateTo.value = dateTo\n\t\tthis.updateSelectedDateRange()\n\n\t\t// Announce change to screen readers\n\t\tthis.announceToScreenReader(`Date range updated: ${this.selectedDateRange}`)\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<{ dateFrom: string; dateTo: string }>('change', {\n\t\t\t\tdetail: { dateFrom, dateTo },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\n\n\n\tprivate toggleDropdown(e: Event) {\n\t\te.stopPropagation()\n\t\tif (this.disabled || this.step !== undefined) return\n\n\t\tif (this.isOpen) {\n\t\t\tthis.closeDropdown()\n\t\t} else {\n\t\t\tthis.openDropdown()\n\t\t}\n\t}\n\n\tprivate openDropdown() {\n\t\tif (this.disabled || this.step !== undefined) return\n\t\t\n\t\tthis.isOpen = true\n\t\t\n\t\t// Create dialog with the new component\n\t\tconst dialogContent = html`\n\t\t\t<schmancy-date-range-dialog\n\t\t\t\t.type=\"${this.type}\"\n\t\t\t\t.dateFrom=\"${this.dateFrom}\"\n\t\t\t\t.dateTo=\"${this.dateTo}\"\n\t\t\t\t.minDate=\"${this.minDate}\"\n\t\t\t\t.maxDate=\"${this.maxDate}\"\n\t\t\t\t.activePreset=\"${this.activePreset}\"\n\t\t\t\t.presetCategories=\"${this.presetCategories}\"\n\t\t\t\t@preset-select=\"${(e: CustomEvent) => {\n\t\t\t\t\tthis.activePreset = e.detail.preset.label\n\t\t\t\t\tthis.setDateRange(e.detail.preset.range.dateFrom, e.detail.preset.range.dateTo)\n\t\t\t\t}}\"\n\t\t\t\t@date-change=\"${() => this.updateSelectedDateRange()}\"\n\t\t\t\t@apply-dates=\"${(e: CustomEvent) => {\n\t\t\t\t\tconst { dateFrom, dateTo, swapIfNeeded } = e.detail\n\t\t\t\t\tif (swapIfNeeded) {\n\t\t\t\t\t\tthis.setDateRange(dateTo, dateFrom)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setDateRange(dateFrom, dateTo)\n\t\t\t\t\t}\n\t\t\t\t}}\"\n\t\t\t\t@announce=\"${(e: CustomEvent) => this.announceToScreenReader(e.detail.message)}\"\n\t\t\t></schmancy-date-range-dialog>\n\t\t`\n\t\t\n\t\t// Use the dialog service - it will automatically find the nearest schmancy-theme\n\t\t$dialog.component(dialogContent, {\n\t\t\ttitle: 'Select Date Range',\n\t\t\twidth: this.isMobile ? '100vw' : '800px',\n\t\t\thideActions: true\n\t\t}).then(() => {\n\t\t\tthis.isOpen = false\n\t\t})\n\t}\n\n\tprivate closeDropdown() {\n\t\t$dialog.dismiss()\n\t\tthis.isOpen = false\n\t}\n\n\n\t/**\n\t * Shifts the date range based on the step property\n\t */\n\tprivate shiftDateRange(direction: number, e: Event) {\n\t\te.stopPropagation()\n\n\t\tif (!this.dateFrom.value || !this.dateTo.value) return\n\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst toDate = dayjs(this.dateTo.value)\n\n\t\tif (!fromDate.isValid() || !toDate.isValid()) return\n\n\t\tconst format = this.getDateFormat()\n\t\tconst dir = direction > 0 ? 1 : -1\n\n\t\tlet newFromDate: dayjs.Dayjs\n\t\tlet newToDate: dayjs.Dayjs\n\n\t\t// If step is explicitly provided, use it\n\t\tif (this.step !== undefined) {\n\t\t\tif (typeof this.step === 'number') {\n\t\t\t\t// Numeric step means shift by that many days\n\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(this.step, 'day') : fromDate.subtract(this.step, 'day')\n\t\t\t\tnewToDate = dir > 0 ? toDate.add(this.step, 'day') : toDate.subtract(this.step, 'day')\n\t\t\t} else {\n\t\t\t\t// String step means shift by the specified unit\n\t\t\t\tswitch (this.step) {\n\t\t\t\t\tcase 'day': {\n\t\t\t\t\t\tconst daysDiff = toDate.diff(fromDate, 'day') + 1\n\t\t\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(daysDiff, 'day') : fromDate.subtract(daysDiff, 'day')\n\t\t\t\t\t\tnewToDate = dir > 0 ? toDate.add(daysDiff, 'day') : toDate.subtract(daysDiff, 'day')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'week': {\n\t\t\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(1, 'week') : fromDate.subtract(1, 'week')\n\t\t\t\t\t\tnewToDate = dir > 0 ? toDate.add(1, 'week') : toDate.subtract(1, 'week')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'month': {\n\t\t\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(1, 'month') : fromDate.subtract(1, 'month')\n\t\t\t\t\t\tnewToDate = dir > 0 ? toDate.add(1, 'month') : toDate.subtract(1, 'month')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'year': {\n\t\t\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(1, 'year') : fromDate.subtract(1, 'year')\n\t\t\t\t\t\tnewToDate = dir > 0 ? toDate.add(1, 'year') : toDate.subtract(1, 'year')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Auto-detect the appropriate step based on the date range\n\t\t\tconst rangeType = detectDateRangeType(fromDate, toDate)\n\t\t\tconst daysDiff = toDate.diff(fromDate, 'day') + 1\n\n\t\t\tif (rangeType.isFullYear) {\n\t\t\t\t// Full year range - shift by year\n\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(1, 'year') : fromDate.subtract(1, 'year')\n\t\t\t\tnewToDate = dir > 0 ? toDate.add(1, 'year') : toDate.subtract(1, 'year')\n\t\t\t} else if (rangeType.isFullMonth) {\n\t\t\t\t// Full month range - shift by month\n\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(1, 'month') : fromDate.subtract(1, 'month')\n\t\t\t\tnewToDate = dir > 0 ? toDate.add(1, 'month') : toDate.subtract(1, 'month')\n\t\t\t} else if (rangeType.isFullWeek) {\n\t\t\t\t// Full week range - shift by week\n\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(1, 'week') : fromDate.subtract(1, 'week')\n\t\t\t\tnewToDate = dir > 0 ? toDate.add(1, 'week') : toDate.subtract(1, 'week')\n\t\t\t} else if (daysDiff === 1) {\n\t\t\t\t// Single day - shift by 1 day\n\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(1, 'day') : fromDate.subtract(1, 'day')\n\t\t\t\tnewToDate = dir > 0 ? toDate.add(1, 'day') : toDate.subtract(1, 'day')\n\t\t\t} else {\n\t\t\t\t// Custom range - shift by the range duration\n\t\t\t\tnewFromDate = dir > 0 ? fromDate.add(daysDiff, 'day') : fromDate.subtract(daysDiff, 'day')\n\t\t\t\tnewToDate = dir > 0 ? toDate.add(daysDiff, 'day') : toDate.subtract(daysDiff, 'day')\n\t\t\t}\n\t\t}\n\n\t\t// Validate against min/max dates\n\t\tif (this.minDate) {\n\t\t\tconst minDate = dayjs(this.minDate)\n\t\t\tif (newFromDate.isBefore(minDate)) {\n\t\t\t\treturn // Don't shift if it would go before min date\n\t\t\t}\n\t\t}\n\n\t\tif (this.maxDate) {\n\t\t\tconst maxDate = dayjs(this.maxDate)\n\t\t\tif (newToDate.isAfter(maxDate)) {\n\t\t\t\treturn // Don't shift if it would go after max date\n\t\t\t}\n\t\t}\n\n\t\t// Update the date range\n\t\tthis.setDateRange(newFromDate.format(format), newToDate.format(format))\n\t\tthis.checkAndUpdateActivePreset(newFromDate.format(format), newToDate.format(format))\n\t}\n\n\t/**\n\t * Handle keyboard navigation for accessibility\n\t */\n\tprivate handleKeyboardNavigation(event: KeyboardEvent) {\n\t\tconst key = event.key\n\t\t\n\t\t// Handle date navigation keys\n\t\tif (this.dateFrom.value && this.dateTo.value && !this.disabled) {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'PageUp':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(-1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'PageDown':\n\t\t\t\t\tif (event.target === this || this.contains(event.target as Node)) {\n\t\t\t\t\t\tthis.shiftDateRange(1, event)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'Home':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+Home: Jump to start of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst monthStart = currentFrom.startOf('month')\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthStart.format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthStart.add(daysDiff, 'day').format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'End':\n\t\t\t\t\tif (event.ctrlKey && (event.target === this || this.contains(event.target as Node))) {\n\t\t\t\t\t\t// Ctrl+End: Jump to end of current month\n\t\t\t\t\t\tconst currentFrom = dayjs(this.dateFrom.value)\n\t\t\t\t\t\tconst currentTo = dayjs(this.dateTo.value)\n\t\t\t\t\t\tconst daysDiff = currentTo.diff(currentFrom, 'day')\n\t\t\t\t\t\tconst monthEnd = currentTo.endOf('month')\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.setDateRange(\n\t\t\t\t\t\t\tmonthEnd.subtract(daysDiff, 'day').format(this.getDateFormat()),\n\t\t\t\t\t\t\tmonthEnd.format(this.getDateFormat())\n\t\t\t\t\t\t)\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date range matches any predefined preset,\n\t * and updates the activePreset accordingly\n\t */\n\tprivate checkAndUpdateActivePreset(fromDate: string, toDate: string) {\n\t\t// Find a preset that matches the current date range\n\t\tconst matchingPreset = this.presetRanges.find(\n\t\t\tpreset => preset.range.dateFrom === fromDate && preset.range.dateTo === toDate,\n\t\t)\n\n\t\tif (matchingPreset) {\n\t\t\tthis.activePreset = matchingPreset.label\n\t\t} else {\n\t\t\tthis.activePreset = null\n\t\t}\n\t}\n\n\n\t/**\n\t * Check if view is mobile\n\t */\n\tprivate checkMobileView() {\n\t\tthis.isMobile = window.innerWidth < 768\n\t}\n\n\t/**\n\t * Check if we can navigate backward\n\t */\n\tprivate canNavigateBackward(): boolean {\n\t\tif (!this.dateFrom.value || !this.minDate) return true\n\t\t\n\t\tconst fromDate = dayjs(this.dateFrom.value)\n\t\tconst minDate = dayjs(this.minDate)\n\t\t\n\t\t// If current start date is already at or before min date, can't go back\n\t\treturn fromDate.isAfter(minDate)\n\t}\n\n\t/**\n\t * Check if we can navigate forward\n\t */\n\tprivate canNavigateForward(): boolean {\n\t\tif (!this.dateTo.value || !this.maxDate) return true\n\t\t\n\t\tconst toDate = dayjs(this.dateTo.value)\n\t\tconst maxDate = dayjs(this.maxDate)\n\t\t\n\t\t// If current end date is already at or after max date, can't go forward\n\t\treturn toDate.isBefore(maxDate)\n\t}\n\n\n\n\n\t/**\n\t * Announce messages to screen readers\n\t */\n\tprivate announceToScreenReader(message: string) {\n\t\tthis.announceMessage = message\n\t\t// Clear the message after announcement\n\t\ttimer(100)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.announceMessage = ''\n\t\t\t})\n\t}\n\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}\">\n\t\t\t\t<!-- Screen reader announcements -->\n\t\t\t\t<div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t\t${this.announceMessage}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Trigger using the preferred schmancy-grid pattern -->\n\t\t\t\t<section @click=${(event: Event) => event.stopPropagation()} class=\"flex\" >\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(-1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value || !this.canNavigateBackward()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_left\n\t\t\t\t\t\t</schmancy-icon-button>\n\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\tclass=\"w-max\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\t\t\taria-label=\"Select date range. Current: ${this.selectedDateRange || 'No date selected'}\"\n\t\t\t\t\t\t\taria-readonly=\"${this.step !== undefined}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.toggleDropdown(e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t\t\t\tstyle=\"${this.step !== undefined ? 'cursor: default;' : ''}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.selectedDateRange || this.placeholder}\n\t\t\t\t\t\t</schmancy-button>\n\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\taria-label=\"Next ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}\"\n\t\t\t\t\t\t\t@click=${(e: Event) => this.shiftDateRange(1, e)}\n\t\t\t\t\t\t\t?disabled=${this.disabled || !this.dateFrom.value || !this.dateTo.value || !this.canNavigateForward()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tarrow_right\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t`\n\t}\n}","import dayjs from 'dayjs'\r\nimport { PresetUnit } from './date-range-presets'\r\n\r\n/**\r\n * Format a date range into a human-readable string\r\n */\r\nexport function formatDateRange(\r\n\tfromValue: string,\r\n\ttoValue: string,\r\n\ttype: 'date' | 'datetime-local',\r\n\tplaceholder: string\r\n): string {\r\n\tif (!fromValue || !toValue) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\tconst fromDate = dayjs(fromValue)\r\n\tconst toDate = dayjs(toValue)\r\n\r\n\tif (!fromDate.isValid() || !toDate.isValid()) {\r\n\t\treturn placeholder\r\n\t}\r\n\r\n\t// Format times if needed (for datetime-local)\r\n\tconst fromTime = type === 'datetime-local' ? fromDate.format(' h:mm A') : ''\r\n\tconst toTime = type === 'datetime-local' ? toDate.format(' h:mm A') : ''\r\n\r\n\t// Check if same day\r\n\tif (fromDate.isSame(toDate, 'day')) {\r\n\t\treturn `${fromDate.format('MMM D, YYYY')}${fromTime}`\r\n\t}\r\n\r\n\t// Check if same month and year\r\n\tif (fromDate.isSame(toDate, 'month') && fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('MMM D')}-${toDate.format('D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Check if same year\r\n\tif (fromDate.isSame(toDate, 'year')) {\r\n\t\treturn `${fromDate.format('MMM D')} - ${toDate.format('MMM D, YYYY')}${toTime}`\r\n\t}\r\n\r\n\t// Different years\r\n\treturn `${fromDate.format('MMM D, YYYY')}${fromTime} - ${toDate.format('MMM D, YYYY')}${toTime}`\r\n}\r\n\r\n/**\r\n * Detect the type of date range (full month, full quarter, etc.)\r\n */\r\nexport interface DateRangeType {\r\n\tisFullMonth: boolean\r\n\tisFullQuarter: boolean\r\n\tisFullYear: boolean\r\n\tisFullWeek: boolean\r\n}\r\n\r\nexport function detectDateRangeType(fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs): DateRangeType {\r\n\treturn {\r\n\t\tisFullMonth: fromDate.date() === 1 && toDate.isSame(fromDate.endOf('month'), 'day'),\r\n\t\tisFullQuarter: fromDate.isSame(fromDate.startOf('quarter'), 'day') && toDate.isSame(toDate.endOf('quarter'), 'day'),\r\n\t\tisFullYear: fromDate.isSame(fromDate.startOf('year'), 'day') && toDate.isSame(toDate.endOf('year'), 'day'),\r\n\t\tisFullWeek: fromDate.day() === 0 && toDate.day() === 6 && toDate.diff(fromDate, 'days') === 6,\r\n\t}\r\n}\r\n\r\n/**\r\n * Calculate the appropriate shift unit and amount for a date range\r\n */\r\nexport function calculateShiftParams(\r\n\tfromDate: dayjs.Dayjs,\r\n\ttoDate: dayjs.Dayjs,\r\n\tactivePresetStep?: PresetUnit\r\n): { unit: PresetUnit; amount: number } {\r\n\tif (activePresetStep) {\r\n\t\treturn { unit: activePresetStep, amount: 1 }\r\n\t}\r\n\r\n\tconst rangeDurationInDays = toDate.diff(fromDate, 'day')\r\n\r\n\t// For very long ranges, use years\r\n\tif (rangeDurationInDays >= 360) {\r\n\t\treturn { unit: 'year', amount: Math.round(rangeDurationInDays / 365) }\r\n\t}\r\n\t// For long ranges, use quarters\r\n\telse if (rangeDurationInDays >= 90) {\r\n\t\treturn { unit: 'quarter', amount: Math.round(rangeDurationInDays / 90) }\r\n\t}\r\n\t// For medium-long ranges, use months\r\n\telse if (rangeDurationInDays >= 30) {\r\n\t\treturn { unit: 'month', amount: Math.round(rangeDurationInDays / 30) }\r\n\t}\r\n\t// For medium ranges, use weeks\r\n\telse if (rangeDurationInDays >= 7) {\r\n\t\treturn { unit: 'week', amount: Math.round(rangeDurationInDays / 7) }\r\n\t}\r\n\t// For shorter ranges, use days\r\n\telse {\r\n\t\treturn { unit: 'day', amount: rangeDurationInDays + 1 }\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper method to safely add/subtract quarter values\r\n */\r\nexport function adjustQuarter(date: dayjs.Dayjs, amount: number, direction: 1 | -1): dayjs.Dayjs {\r\n\t// Get current quarter (1-4)\r\n\tconst currentQuarter = date.quarter()\r\n\r\n\t// Calculate new quarter\r\n\tlet newQuarter = currentQuarter + direction * amount\r\n\tlet yearAdjustment = 0\r\n\r\n\t// Handle year boundaries\r\n\twhile (newQuarter > 4) {\r\n\t\tnewQuarter -= 4\r\n\t\tyearAdjustment += 1\r\n\t}\r\n\r\n\twhile (newQuarter < 1) {\r\n\t\tnewQuarter += 4\r\n\t\tyearAdjustment -= 1\r\n\t}\r\n\r\n\t// Adjust year if needed\r\n\tconst adjustedDate = date.add(yearAdjustment, 'year')\r\n\r\n\t// Set to the start of the new quarter\r\n\tconst newDate = adjustedDate.month((newQuarter - 1) * 3)\r\n\r\n\t// Maintain the same day of month if possible\r\n\tconst daysInMonth = newDate.daysInMonth()\r\n\tconst targetDay = Math.min(date.date(), daysInMonth)\r\n\r\n\treturn newDate.date(targetDay)\r\n}"],"names":["t","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","quarter","bind","generateLastNDaysPresets","days","map","label","range","dateFrom","dayjs","dateTo","step","generateLastNWeeksPresets","weeks","generateLastNMonthsPresets","generateLastNQuartersPresets","quarters","enforceDateFormat","dateString","expectedFormat","parsedDate","validateInitialDateRange","formattedDateFrom","formattedDateTo","SchmancyDateRangeDialog","$LitElement","constructor","super","type","value","activePreset","presetCategories","input","target","dispatchEvent","CustomEvent","detail","bubbles","composed","preset","stopPropagation","$dialog","dismiss","fromDate","swapIfNeeded","message","render","html","ifDefined","minDate","maxDate","handleFromDateChange","handleToDateChange","applyManualDateSelection","category","presets","handlePresetSelection","__decorateClass","property","Object","customElement","quarterOfYear","SchmancyDateRange","customPresets","disabled","required","placeholder","clearable","isOpen","selectedDateRange","announceMessage","isMobile","presetRanges","memoizedPresets","Map","connectedCallback","initPresetRanges","checkMobileView","dateFormat","getDateFormat","validatedRange","updateSelectedDateRange","now","setupEventHandlers","fromEvent","document","pipe","takeUntil","disconnecting","subscribe","event","handleKeyboardNavigation","window","debounceTime","disconnectedCallback","changedProps","updated","has","cacheKey","JSON","stringify","cached","push","includeTime","categories","customCategory","find","checkAndUpdateActivePreset","fromValue","toValue","fromTime","toTime","announceToScreenReader","closeDropdown","openDropdown","dialogContent","setDateRange","component","title","width","hideActions","then","direction","dir","newFromDate","newToDate","daysDiff","rangeType","isFullMonth","isFullQuarter","isFullYear","isFullWeek","day","key","contains","shiftDateRange","preventDefault","ctrlKey","currentFrom","currentTo","monthStart","monthEnd","matchingPreset","innerWidth","timer","canNavigateBackward","toggleDropdown","canNavigateForward","Boolean","state"],"mappings":"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","x_google_ignoreList":[0,1]}