flexium 0.10.4 → 0.10.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +5 -5
  2. package/dist/{DrawText-ngwNNh8O.d.ts → DrawText-CVAKQ5wZ.d.cts} +42 -42
  3. package/dist/{DrawText-ccZrs3Xs.d.cts → DrawText-Dlh1L1Ar.d.ts} +42 -42
  4. package/dist/advanced.d.cts +1 -1
  5. package/dist/advanced.d.ts +1 -1
  6. package/dist/advanced.js +1 -1
  7. package/dist/advanced.js.map +1 -1
  8. package/dist/advanced.mjs +1 -1
  9. package/dist/advanced.mjs.map +1 -1
  10. package/dist/canvas.d.cts +5 -6
  11. package/dist/canvas.d.ts +5 -6
  12. package/dist/canvas.js +1 -1
  13. package/dist/canvas.mjs +1 -1
  14. package/dist/chunk-5ICRQIS2.js +3 -0
  15. package/dist/chunk-5ICRQIS2.js.map +1 -0
  16. package/dist/chunk-5K55ASOD.mjs +3 -0
  17. package/dist/chunk-5K55ASOD.mjs.map +1 -0
  18. package/dist/chunk-AZEHBSBG.js +3 -0
  19. package/dist/chunk-AZEHBSBG.js.map +1 -0
  20. package/dist/chunk-BBNYMXE7.mjs +2 -0
  21. package/dist/chunk-BBNYMXE7.mjs.map +1 -0
  22. package/dist/{chunk-WXEHDEIH.js → chunk-DZ7L3SHV.js} +2 -2
  23. package/dist/{chunk-WXEHDEIH.js.map → chunk-DZ7L3SHV.js.map} +1 -1
  24. package/dist/chunk-ECYYIQEX.mjs +3 -0
  25. package/dist/chunk-ECYYIQEX.mjs.map +1 -0
  26. package/dist/chunk-FDMJHFN7.mjs +2 -0
  27. package/dist/chunk-FDMJHFN7.mjs.map +1 -0
  28. package/dist/chunk-GKJQEOP7.mjs +2 -0
  29. package/dist/{chunk-PVPY55Z7.mjs.map → chunk-GKJQEOP7.mjs.map} +1 -1
  30. package/dist/chunk-GYDP6MFV.js +3 -0
  31. package/dist/chunk-GYDP6MFV.js.map +1 -0
  32. package/dist/chunk-HB5VPQTB.mjs +2 -0
  33. package/dist/chunk-HB5VPQTB.mjs.map +1 -0
  34. package/dist/chunk-OPAAGNBO.mjs +2 -0
  35. package/dist/{chunk-HLPVL6EK.mjs.map → chunk-OPAAGNBO.mjs.map} +1 -1
  36. package/dist/chunk-QPCIDSMM.js +2 -0
  37. package/dist/chunk-QPCIDSMM.js.map +1 -0
  38. package/dist/chunk-QZIX4FXS.mjs +2 -0
  39. package/dist/chunk-QZIX4FXS.mjs.map +1 -0
  40. package/dist/{chunk-63AW5ZOC.js → chunk-RMN5IPS5.js} +2 -2
  41. package/dist/{chunk-63AW5ZOC.js.map → chunk-RMN5IPS5.js.map} +1 -1
  42. package/dist/chunk-WWEWRI6S.js +2 -0
  43. package/dist/chunk-WWEWRI6S.js.map +1 -0
  44. package/dist/chunk-XJHWMHKF.js +2 -0
  45. package/dist/chunk-XJHWMHKF.js.map +1 -0
  46. package/dist/chunk-Y6KKAHLS.mjs +3 -0
  47. package/dist/chunk-Y6KKAHLS.mjs.map +1 -0
  48. package/dist/chunk-YPVRQKMW.js +2 -0
  49. package/dist/chunk-YPVRQKMW.js.map +1 -0
  50. package/dist/{components-CxnAnbpI.d.cts → components-BMbqsbMY.d.cts} +5 -5
  51. package/dist/{components-B7KQ8C-i.d.ts → components-C83mBQXW.d.ts} +5 -5
  52. package/dist/{effect-14CxUU8r.d.ts → core-CxHP8991.d.cts} +9 -1
  53. package/dist/{effect-14CxUU8r.d.cts → core-D0ggvjX3.d.ts} +9 -1
  54. package/dist/core.d.cts +2 -80
  55. package/dist/core.d.ts +2 -80
  56. package/dist/core.js +1 -1
  57. package/dist/core.mjs +1 -1
  58. package/dist/dom.d.cts +2 -2
  59. package/dist/dom.d.ts +2 -2
  60. package/dist/dom.js +1 -1
  61. package/dist/dom.js.map +1 -1
  62. package/dist/dom.mjs +1 -1
  63. package/dist/dom.mjs.map +1 -1
  64. package/dist/effect-554ONNZR.js +2 -0
  65. package/dist/{effect-K45UU3N4.js.map → effect-554ONNZR.js.map} +1 -1
  66. package/dist/effect-T2GVIS3T.mjs +2 -0
  67. package/dist/{effect-3LUCHSAZ.mjs.map → effect-T2GVIS3T.mjs.map} +1 -1
  68. package/dist/index.d.cts +1 -1
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.js +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +1 -1
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/interactive.d.cts +5 -5
  75. package/dist/interactive.d.ts +5 -5
  76. package/dist/interactive.js +1 -1
  77. package/dist/interactive.js.map +1 -1
  78. package/dist/interactive.mjs +1 -1
  79. package/dist/interactive.mjs.map +1 -1
  80. package/dist/metafile-cjs.json +1 -1
  81. package/dist/metafile-esm.json +1 -1
  82. package/dist/{portal-NLlE-fNZ.d.cts → portal-BK_0Z0hE.d.cts} +2 -2
  83. package/dist/{portal-CVqrpmHd.d.ts → portal-CbguxtuQ.d.ts} +2 -2
  84. package/dist/primitives/motion.js +1 -1
  85. package/dist/primitives/motion.mjs +1 -1
  86. package/dist/primitives/ui.d.cts +3 -3
  87. package/dist/primitives/ui.d.ts +3 -3
  88. package/dist/primitives/ui.js +1 -1
  89. package/dist/primitives/ui.js.map +1 -1
  90. package/dist/primitives/ui.mjs +1 -1
  91. package/dist/primitives/ui.mjs.map +1 -1
  92. package/dist/primitives.d.cts +4 -5
  93. package/dist/primitives.d.ts +4 -5
  94. package/dist/primitives.js +1 -1
  95. package/dist/primitives.js.map +1 -1
  96. package/dist/primitives.mjs +1 -1
  97. package/dist/primitives.mjs.map +1 -1
  98. package/dist/router.d.cts +3 -3
  99. package/dist/router.d.ts +3 -3
  100. package/dist/router.js +1 -1
  101. package/dist/router.mjs +1 -1
  102. package/dist/server.js +1 -1
  103. package/dist/server.js.map +1 -1
  104. package/dist/server.mjs +1 -1
  105. package/dist/server.mjs.map +1 -1
  106. package/dist/state-DitsMyev.d.cts +96 -0
  107. package/dist/state-DitsMyev.d.ts +96 -0
  108. package/dist/state-RYKSC35A.mjs +2 -0
  109. package/dist/state-RYKSC35A.mjs.map +1 -0
  110. package/dist/state-XUXPMCFJ.js +2 -0
  111. package/dist/state-XUXPMCFJ.js.map +1 -0
  112. package/dist/test-exports.d.cts +37 -7
  113. package/dist/test-exports.d.ts +37 -7
  114. package/dist/test-exports.js +1 -1
  115. package/dist/test-exports.mjs +1 -1
  116. package/package.json +1 -1
  117. package/dist/chunk-3AWR7IKE.js +0 -2
  118. package/dist/chunk-3AWR7IKE.js.map +0 -1
  119. package/dist/chunk-3BQXIHYI.mjs +0 -3
  120. package/dist/chunk-3BQXIHYI.mjs.map +0 -1
  121. package/dist/chunk-5236IK5I.js +0 -2
  122. package/dist/chunk-5236IK5I.js.map +0 -1
  123. package/dist/chunk-6K44QCMT.mjs +0 -3
  124. package/dist/chunk-6K44QCMT.mjs.map +0 -1
  125. package/dist/chunk-7Q4UE442.mjs +0 -2
  126. package/dist/chunk-7Q4UE442.mjs.map +0 -1
  127. package/dist/chunk-AJT35P3Z.js +0 -3
  128. package/dist/chunk-AJT35P3Z.js.map +0 -1
  129. package/dist/chunk-AYQMU7XC.js +0 -3
  130. package/dist/chunk-AYQMU7XC.js.map +0 -1
  131. package/dist/chunk-B7VP6HBY.mjs +0 -2
  132. package/dist/chunk-B7VP6HBY.mjs.map +0 -1
  133. package/dist/chunk-HLPVL6EK.mjs +0 -2
  134. package/dist/chunk-KJPIJNFH.mjs +0 -2
  135. package/dist/chunk-KJPIJNFH.mjs.map +0 -1
  136. package/dist/chunk-PVPY55Z7.mjs +0 -2
  137. package/dist/chunk-Q7WT5IIF.mjs +0 -3
  138. package/dist/chunk-Q7WT5IIF.mjs.map +0 -1
  139. package/dist/chunk-S3EDPCYT.js +0 -3
  140. package/dist/chunk-S3EDPCYT.js.map +0 -1
  141. package/dist/chunk-WOHSSPKD.js +0 -2
  142. package/dist/chunk-WOHSSPKD.js.map +0 -1
  143. package/dist/effect-3LUCHSAZ.mjs +0 -2
  144. package/dist/effect-K45UU3N4.js +0 -2
  145. package/dist/signal-2QUI7H7B.js +0 -2
  146. package/dist/signal-2QUI7H7B.js.map +0 -1
  147. package/dist/signal-C6936A3J.d.cts +0 -175
  148. package/dist/signal-C6936A3J.d.ts +0 -175
  149. package/dist/signal-L3ZWGOVT.mjs +0 -2
  150. package/dist/signal-L3ZWGOVT.mjs.map +0 -1
@@ -1,12 +1,12 @@
1
- export { c as createResource, i as isSignal, o as onCleanup } from './signal-C6936A3J.cjs';
2
- export { e as effect } from './effect-14CxUU8r.cjs';
1
+ import { S as StateValue } from './state-DitsMyev.cjs';
2
+ export { i as isSignal, s as state } from './state-DitsMyev.cjs';
3
+ export { e as effect, o as onCleanup } from './core-CxHP8991.cjs';
3
4
  export { r as root, u as untrack } from './owner-QS9tPwPr.cjs';
4
5
  export { s as sync } from './sync-Z4QqUDjF.cjs';
5
- export { state } from './core.cjs';
6
6
  import { a as FNodeChild } from './renderer-DSLb-FGg.cjs';
7
- export { h as Link, O as Outlet, g as Route, f as Router, e as createLocation, m as matchPath, r as router } from './components-CxnAnbpI.cjs';
8
- import { L as ListComponent } from './portal-NLlE-fNZ.cjs';
9
- export { P as Portal, a as createReactiveRoot, d as domRenderer, f, r as render } from './portal-NLlE-fNZ.cjs';
7
+ export { h as Link, O as Outlet, g as Route, f as Router, e as createLocation, m as matchPath, r as router } from './components-BMbqsbMY.cjs';
8
+ import { L as ListComponent } from './portal-BK_0Z0hE.cjs';
9
+ export { P as Portal, a as createReactiveRoot, d as domRenderer, f, r as render } from './portal-BK_0Z0hE.cjs';
10
10
  export { c as cleanupMotionState } from './Motion-BrOAJzgH.cjs';
11
11
 
12
12
  /** Marker symbol for List components */
@@ -16,6 +16,36 @@ declare const LIST_MARKER: unique symbol;
16
16
  */
17
17
  declare function isListComponent<T>(value: unknown): value is ListComponent<T>;
18
18
 
19
+ /**
20
+ * Resource API - Proxy-based async state management
21
+ *
22
+ * Creates a resource for handling async data with loading/error states
23
+ */
24
+
25
+ /**
26
+ * Resource interface for async data
27
+ */
28
+ interface Resource<T> {
29
+ (): T | undefined;
30
+ value: T | undefined;
31
+ loading: boolean;
32
+ error: any;
33
+ state: 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored';
34
+ latest: T | undefined;
35
+ peek(): T | undefined;
36
+ }
37
+ /**
38
+ * Creates a resource for handling async data
39
+ * @internal Use state(async () => ...) instead which returns [data, refetch, status, error]
40
+ */
41
+ declare function createResource<T, S = any>(source: S | StateValue<S> | (() => S), fetcher: (source: S, { value, refetching }: {
42
+ value: T | undefined;
43
+ refetching: any;
44
+ }) => Promise<T>): [Resource<T>, {
45
+ mutate: (v: T | undefined) => void;
46
+ refetch: () => void;
47
+ }];
48
+
19
49
  interface Context<T> {
20
50
  id: symbol;
21
51
  Provider: (props: {
@@ -35,4 +65,4 @@ declare function createContext<T>(defaultValue: T): Context<T>;
35
65
  */
36
66
  declare function context<T>(ctx: Context<T>): T;
37
67
 
38
- export { LIST_MARKER, context, createContext, isListComponent };
68
+ export { LIST_MARKER, context, createContext, createResource, isListComponent };
@@ -1,12 +1,12 @@
1
- export { c as createResource, i as isSignal, o as onCleanup } from './signal-C6936A3J.js';
2
- export { e as effect } from './effect-14CxUU8r.js';
1
+ import { S as StateValue } from './state-DitsMyev.js';
2
+ export { i as isSignal, s as state } from './state-DitsMyev.js';
3
+ export { e as effect, o as onCleanup } from './core-D0ggvjX3.js';
3
4
  export { r as root, u as untrack } from './owner-QS9tPwPr.js';
4
5
  export { s as sync } from './sync-Z4QqUDjF.js';
5
- export { state } from './core.js';
6
6
  import { a as FNodeChild } from './renderer-DSLb-FGg.js';
7
- export { h as Link, O as Outlet, g as Route, f as Router, e as createLocation, m as matchPath, r as router } from './components-B7KQ8C-i.js';
8
- import { L as ListComponent } from './portal-CVqrpmHd.js';
9
- export { P as Portal, a as createReactiveRoot, d as domRenderer, f, r as render } from './portal-CVqrpmHd.js';
7
+ export { h as Link, O as Outlet, g as Route, f as Router, e as createLocation, m as matchPath, r as router } from './components-C83mBQXW.js';
8
+ import { L as ListComponent } from './portal-CbguxtuQ.js';
9
+ export { P as Portal, a as createReactiveRoot, d as domRenderer, f, r as render } from './portal-CbguxtuQ.js';
10
10
  export { c as cleanupMotionState } from './Motion-BrOAJzgH.js';
11
11
 
12
12
  /** Marker symbol for List components */
@@ -16,6 +16,36 @@ declare const LIST_MARKER: unique symbol;
16
16
  */
17
17
  declare function isListComponent<T>(value: unknown): value is ListComponent<T>;
18
18
 
19
+ /**
20
+ * Resource API - Proxy-based async state management
21
+ *
22
+ * Creates a resource for handling async data with loading/error states
23
+ */
24
+
25
+ /**
26
+ * Resource interface for async data
27
+ */
28
+ interface Resource<T> {
29
+ (): T | undefined;
30
+ value: T | undefined;
31
+ loading: boolean;
32
+ error: any;
33
+ state: 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored';
34
+ latest: T | undefined;
35
+ peek(): T | undefined;
36
+ }
37
+ /**
38
+ * Creates a resource for handling async data
39
+ * @internal Use state(async () => ...) instead which returns [data, refetch, status, error]
40
+ */
41
+ declare function createResource<T, S = any>(source: S | StateValue<S> | (() => S), fetcher: (source: S, { value, refetching }: {
42
+ value: T | undefined;
43
+ refetching: any;
44
+ }) => Promise<T>): [Resource<T>, {
45
+ mutate: (v: T | undefined) => void;
46
+ refetch: () => void;
47
+ }];
48
+
19
49
  interface Context<T> {
20
50
  id: symbol;
21
51
  Provider: (props: {
@@ -35,4 +65,4 @@ declare function createContext<T>(defaultValue: T): Context<T>;
35
65
  */
36
66
  declare function context<T>(ctx: Context<T>): T;
37
67
 
38
- export { LIST_MARKER, context, createContext, isListComponent };
68
+ export { LIST_MARKER, context, createContext, createResource, isListComponent };
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkAYQMU7XC_js=require('./chunk-AYQMU7XC.js'),chunkS3EDPCYT_js=require('./chunk-S3EDPCYT.js'),chunkWXEHDEIH_js=require('./chunk-WXEHDEIH.js'),chunk3AWR7IKE_js=require('./chunk-3AWR7IKE.js'),chunk63AW5ZOC_js=require('./chunk-63AW5ZOC.js'),chunkQ7IWDVJ4_js=require('./chunk-Q7IWDVJ4.js');require('./chunk-WQFQO5LK.js');var chunk5236IK5I_js=require('./chunk-5236IK5I.js'),chunkAJT35P3Z_js=require('./chunk-AJT35P3Z.js');Object.defineProperty(exports,"Link",{enumerable:true,get:function(){return chunkAYQMU7XC_js.k}});Object.defineProperty(exports,"Outlet",{enumerable:true,get:function(){return chunkAYQMU7XC_js.j}});Object.defineProperty(exports,"Route",{enumerable:true,get:function(){return chunkAYQMU7XC_js.i}});Object.defineProperty(exports,"Router",{enumerable:true,get:function(){return chunkAYQMU7XC_js.h}});Object.defineProperty(exports,"createLocation",{enumerable:true,get:function(){return chunkAYQMU7XC_js.a}});Object.defineProperty(exports,"matchPath",{enumerable:true,get:function(){return chunkAYQMU7XC_js.d}});Object.defineProperty(exports,"router",{enumerable:true,get:function(){return chunkAYQMU7XC_js.g}});Object.defineProperty(exports,"LIST_MARKER",{enumerable:true,get:function(){return chunkS3EDPCYT_js.c}});Object.defineProperty(exports,"Portal",{enumerable:true,get:function(){return chunkS3EDPCYT_js.i}});Object.defineProperty(exports,"createReactiveRoot",{enumerable:true,get:function(){return chunkS3EDPCYT_js.f}});Object.defineProperty(exports,"domRenderer",{enumerable:true,get:function(){return chunkS3EDPCYT_js.b}});Object.defineProperty(exports,"isListComponent",{enumerable:true,get:function(){return chunkS3EDPCYT_js.d}});Object.defineProperty(exports,"render",{enumerable:true,get:function(){return chunkS3EDPCYT_js.g}});Object.defineProperty(exports,"context",{enumerable:true,get:function(){return chunkWXEHDEIH_js.b}});Object.defineProperty(exports,"createContext",{enumerable:true,get:function(){return chunkWXEHDEIH_js.a}});Object.defineProperty(exports,"state",{enumerable:true,get:function(){return chunk3AWR7IKE_js.h}});Object.defineProperty(exports,"cleanupMotionState",{enumerable:true,get:function(){return chunk63AW5ZOC_js.a}});Object.defineProperty(exports,"f",{enumerable:true,get:function(){return chunkQ7IWDVJ4_js.a}});Object.defineProperty(exports,"createResource",{enumerable:true,get:function(){return chunk5236IK5I_js.h}});Object.defineProperty(exports,"isSignal",{enumerable:true,get:function(){return chunk5236IK5I_js.f}});Object.defineProperty(exports,"onCleanup",{enumerable:true,get:function(){return chunk5236IK5I_js.g}});Object.defineProperty(exports,"sync",{enumerable:true,get:function(){return chunk5236IK5I_js.a}});Object.defineProperty(exports,"effect",{enumerable:true,get:function(){return chunkAJT35P3Z_js.k}});Object.defineProperty(exports,"root",{enumerable:true,get:function(){return chunkAJT35P3Z_js.i}});Object.defineProperty(exports,"untrack",{enumerable:true,get:function(){return chunkAJT35P3Z_js.g}});//# sourceMappingURL=test-exports.js.map
1
+ 'use strict';var chunkAZEHBSBG_js=require('./chunk-AZEHBSBG.js'),chunk5ICRQIS2_js=require('./chunk-5ICRQIS2.js'),chunkDZ7L3SHV_js=require('./chunk-DZ7L3SHV.js'),chunkXJHWMHKF_js=require('./chunk-XJHWMHKF.js'),chunkYPVRQKMW_js=require('./chunk-YPVRQKMW.js'),chunkRMN5IPS5_js=require('./chunk-RMN5IPS5.js'),chunkQ7IWDVJ4_js=require('./chunk-Q7IWDVJ4.js');require('./chunk-WQFQO5LK.js');var chunkWWEWRI6S_js=require('./chunk-WWEWRI6S.js'),chunkGYDP6MFV_js=require('./chunk-GYDP6MFV.js');Object.defineProperty(exports,"Link",{enumerable:true,get:function(){return chunkAZEHBSBG_js.k}});Object.defineProperty(exports,"Outlet",{enumerable:true,get:function(){return chunkAZEHBSBG_js.j}});Object.defineProperty(exports,"Route",{enumerable:true,get:function(){return chunkAZEHBSBG_js.i}});Object.defineProperty(exports,"Router",{enumerable:true,get:function(){return chunkAZEHBSBG_js.h}});Object.defineProperty(exports,"createLocation",{enumerable:true,get:function(){return chunkAZEHBSBG_js.a}});Object.defineProperty(exports,"matchPath",{enumerable:true,get:function(){return chunkAZEHBSBG_js.d}});Object.defineProperty(exports,"router",{enumerable:true,get:function(){return chunkAZEHBSBG_js.g}});Object.defineProperty(exports,"LIST_MARKER",{enumerable:true,get:function(){return chunk5ICRQIS2_js.c}});Object.defineProperty(exports,"Portal",{enumerable:true,get:function(){return chunk5ICRQIS2_js.i}});Object.defineProperty(exports,"createReactiveRoot",{enumerable:true,get:function(){return chunk5ICRQIS2_js.f}});Object.defineProperty(exports,"domRenderer",{enumerable:true,get:function(){return chunk5ICRQIS2_js.b}});Object.defineProperty(exports,"isListComponent",{enumerable:true,get:function(){return chunk5ICRQIS2_js.d}});Object.defineProperty(exports,"render",{enumerable:true,get:function(){return chunk5ICRQIS2_js.g}});Object.defineProperty(exports,"context",{enumerable:true,get:function(){return chunkDZ7L3SHV_js.b}});Object.defineProperty(exports,"createContext",{enumerable:true,get:function(){return chunkDZ7L3SHV_js.a}});Object.defineProperty(exports,"createResource",{enumerable:true,get:function(){return chunkXJHWMHKF_js.a}});Object.defineProperty(exports,"isSignal",{enumerable:true,get:function(){return chunkXJHWMHKF_js.g}});Object.defineProperty(exports,"state",{enumerable:true,get:function(){return chunkXJHWMHKF_js.k}});Object.defineProperty(exports,"sync",{enumerable:true,get:function(){return chunkYPVRQKMW_js.e}});Object.defineProperty(exports,"cleanupMotionState",{enumerable:true,get:function(){return chunkRMN5IPS5_js.a}});Object.defineProperty(exports,"f",{enumerable:true,get:function(){return chunkQ7IWDVJ4_js.a}});Object.defineProperty(exports,"effect",{enumerable:true,get:function(){return chunkWWEWRI6S_js.c}});Object.defineProperty(exports,"onCleanup",{enumerable:true,get:function(){return chunkWWEWRI6S_js.d}});Object.defineProperty(exports,"root",{enumerable:true,get:function(){return chunkGYDP6MFV_js.i}});Object.defineProperty(exports,"untrack",{enumerable:true,get:function(){return chunkGYDP6MFV_js.f}});//# sourceMappingURL=test-exports.js.map
2
2
  //# sourceMappingURL=test-exports.js.map
@@ -1,2 +1,2 @@
1
- export{k as Link,j as Outlet,i as Route,h as Router,a as createLocation,d as matchPath,g as router}from'./chunk-3BQXIHYI.mjs';export{c as LIST_MARKER,i as Portal,f as createReactiveRoot,b as domRenderer,d as isListComponent,g as render}from'./chunk-6K44QCMT.mjs';export{b as context,a as createContext}from'./chunk-HLPVL6EK.mjs';export{h as state}from'./chunk-7Q4UE442.mjs';export{a as cleanupMotionState}from'./chunk-PVPY55Z7.mjs';export{a as f}from'./chunk-WVEJT7HD.mjs';import'./chunk-KNF5ERPK.mjs';export{h as createResource,f as isSignal,g as onCleanup,a as sync}from'./chunk-B7VP6HBY.mjs';export{k as effect,i as root,g as untrack}from'./chunk-Q7WT5IIF.mjs';//# sourceMappingURL=test-exports.mjs.map
1
+ export{k as Link,j as Outlet,i as Route,h as Router,a as createLocation,d as matchPath,g as router}from'./chunk-5K55ASOD.mjs';export{c as LIST_MARKER,i as Portal,f as createReactiveRoot,b as domRenderer,d as isListComponent,g as render}from'./chunk-Y6KKAHLS.mjs';export{b as context,a as createContext}from'./chunk-OPAAGNBO.mjs';export{a as createResource,g as isSignal,k as state}from'./chunk-BBNYMXE7.mjs';export{e as sync}from'./chunk-FDMJHFN7.mjs';export{a as cleanupMotionState}from'./chunk-GKJQEOP7.mjs';export{a as f}from'./chunk-WVEJT7HD.mjs';import'./chunk-KNF5ERPK.mjs';export{c as effect,d as onCleanup}from'./chunk-HB5VPQTB.mjs';export{i as root,f as untrack}from'./chunk-ECYYIQEX.mjs';//# sourceMappingURL=test-exports.mjs.map
2
2
  //# sourceMappingURL=test-exports.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flexium",
3
- "version": "0.10.4",
3
+ "version": "0.10.7",
4
4
  "description": "A lightweight, signals-based UI framework with cross-platform renderers",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,2 +0,0 @@
1
- 'use strict';var chunk5236IK5I_js=require('./chunk-5236IK5I.js');var S=Symbol.for("flexium.stateSignal"),O=new WeakMap,F=new WeakMap,A=new WeakMap;function l(t,e,n){let s=O.get(t);s||(s=new Map,O.set(t,s));let o=s.get(e);if(!o){let a=n!==void 0?n:Reflect.get(t,e);o=new chunk5236IK5I_js.d(a),s.set(e,o);}return o}var Q={get(t,e){let n=A.get(t);if(e===S)return n;let s=F.get(n);if(s&&V(s),e==="peek")return n.peek.bind(n);let o=typeof n.peek=="function"&&typeof n.get=="function",a;if(o||l(n,"value"),a=n.get(),e===Symbol.toPrimitive||e==="valueOf")return ()=>a;if(e===Symbol.iterator)return l(a,"length").get(),l(a,"iterate").get(),a[Symbol.iterator].bind(a);if(a!==null&&typeof a=="object"){let c=Reflect.get(a,e);return typeof c=="function"?Array.isArray(a)&&["push","pop","shift","unshift","splice","sort","reverse"].includes(e)?function(...p){let x=c.apply(a,p);return a===n.get()&&l(n,"value").set(a),l(a,"length").set(a.length),a===n.get()&&l(n,"value").get(),x}:Array.isArray(a)?c.bind(a):a[e].bind(a):(l(a,e,c).get(),c!==null&&typeof c=="object"?H(c):c)}let u=a[e];return typeof u=="function"?u.bind(a):u},set(t,e,n){let o=A.get(t).get();if(o!==null&&typeof o=="object"){let a=Reflect.set(o,e,n);return l(o,e).set(n),a}return false},has(t,e){let n=A.get(t);if(e===S)return true;let s=n.get();return s===null?false:typeof s=="object"?Reflect.has(s,e):false},ownKeys(t){let n=A.get(t).get();return n===null||typeof n!="object"?Reflect.ownKeys(t):(Array.isArray(n)&&l(n,"length").get(),l(n,"iterate").get(),Reflect.ownKeys(n))},getOwnPropertyDescriptor(t,e){let n=A.get(t);if(e===S)return {configurable:true,enumerable:false,value:n};let s=n.get();if(s===null||typeof s!="object")return;let o=Reflect.getOwnPropertyDescriptor(s,e);return o&&(o.configurable=true),o}},U={get(t,e,n){if(e===S)return t;let s=Reflect.get(t,e,n);return l(t,e,s).get(),s!==null&&typeof s=="object"?H(s):s},set(t,e,n,s){let o=Reflect.set(t,e,n,s);return o&&l(t,e).set(n),o},has(t,e){return e===S?true:Reflect.has(t,e)}},z=new WeakMap;function H(t){let e=z.get(t);return e||(e=new Proxy(t,U),z.set(t,e)),e}var D=new WeakMap;function N(t){let e=D.get(t);if(e)return e;let n=()=>t.get();return A.set(n,t),e=new Proxy(n,Q),D.set(t,e),e}var T=null;function te(t){T=t;}function ne(){return {id:Symbol("component"),hookIndex:0,hooks:[]}}function se(t){t.hookIndex=0;}var g=new Map,h=new Map,y=new Map,m={enabled:true,maxIdleTime:300*1e3,checkInterval:60*1e3,minAccessCount:0},d=null;(typeof window<"u"||typeof globalThis<"u")&&setTimeout(()=>{m.enabled&&!d&&(d=setInterval(L,m.checkInterval),d&&typeof d=="object"&&"unref"in d&&typeof d.unref=="function"&&d.unref());},0);var X=1e4,j=false,B=new WeakMap;function v(t){if(typeof t=="string")return t;let e=B.get(t);if(e!==void 0)return e;try{let n=JSON.stringify(t);return B.set(t,n),n}catch{return String(t)}}function E(t,e){e&&(h.has(e)||h.set(e,new Set),h.get(e).add(t));}function _(t,e){if(!e)return;let n=h.get(e);n&&(n.delete(t),n.size===0&&h.delete(e));}function V(t,e,n){let s=Date.now(),o=y.get(t);o?(o.lastAccessed=s,o.accessCount++,o.referenceCount++,e&&o.namespace!==e&&(o.namespace&&_(t,o.namespace),o.namespace=e,E(t,e))):(y.set(t,{key:t,namespace:e,createdAt:s,lastAccessed:s,accessCount:1,referenceCount:1,signalRef:n&&typeof WeakRef<"u"?new WeakRef(n):void 0}),E(t,e));}function L(){if(!m.enabled)return;let t=Date.now(),e=[];for(let[n,s]of y.entries()){if(s.signalRef&&typeof WeakRef<"u"&&!s.signalRef.deref()){e.push(n);continue}t-s.lastAccessed>m.maxIdleTime&&s.referenceCount===0&&s.accessCount>=m.minAccessCount&&e.push(n);}for(let n of e)f.delete(n);e.length>0&&typeof process<"u"&&process.env?.NODE_ENV!=="production"&&console.log(`[Flexium] Auto-cleaned ${e.length} idle states`);}function K(t){return (typeof t=="object"||typeof t=="function")&&t!==null&&S in t}function oe(t){return K(t)?t[S]:null}function ae(t,e){return K(t)?t.peek()===e:false}function re(t){return K(t)?!!t.peek():false}function Y(t,e){if(T&&!e?.key){let r=T,i=r.hookIndex++;if(i<r.hooks.length)return r.hooks[i];let w=T;T=null;let I=f(t,e);return T=w,r.hooks.push(I),I}let n=e?.key,s=n?v(n):void 0,o=Array.isArray(n)&&n.length>0?String(n[0]):void 0,a=e?.params;if(s&&g.has(s)){let r=g.get(s);V(s,o,r.box);let i=[r.proxy];return r.setter&&i.push(r.setter),r.refetch&&i.push(r.refetch),r.status&&i.push(r.status),r.error&&i.push(r.error),i}let u,c,p,x,C;if(typeof t=="function"){let r=t,i=a!==void 0?()=>r(a):r,w;try{w=i();}catch{}if(r.constructor.name==="AsyncFunction"||w instanceof Promise){let[b,G]=chunk5236IK5I_js.h(i,async J=>J);u={get:()=>b.value,peek:()=>b.peek()},p=G.refetch;let $=new chunk5236IK5I_js.e(()=>b.loading?"loading":b.error?"error":b.state==="unresolved"?"idle":"success");x=N($);let q=new chunk5236IK5I_js.e(()=>b.error);C=N(q);}else u=new chunk5236IK5I_js.e(i);}else {let r=new chunk5236IK5I_js.d(t);u=r,c=i=>{typeof i=="function"?r.set(i(r.peek())):r.set(i);};}let M=N(u),k=[M];return c&&k.push(c),p&&(k.splice(1,0,p),x&&k.push(x),C&&k.push(C)),s&&(g.set(s,{box:u,proxy:M,setter:c,refetch:p,status:x,error:C,createdAt:Date.now(),lastAccessed:Date.now(),accessCount:1,referenceCount:1,key:s,namespace:o}),F.set(u,s),V(s,o,u),typeof process<"u"&&process.env?.NODE_ENV!=="production"&&!j&&g.size>=X&&(j=true,console.warn(`[Flexium] Registry size warning: ${g.size}`))),k}var f=Y;f.delete=function(t){let e=v(t),n=y.get(e);return n?.namespace&&_(e,n.namespace),y.delete(e),g.delete(e)};f.clear=function(){g.clear(),h.clear(),y.clear(),j=false;};f.has=function(t){return g.has(v(t))};f.clearByPrefix=function(t){let e=v(t),n=0,s=[];for(let[o]of y.entries()){if(o===e){s.push(o);continue}if(e.endsWith("]")){let a=e.slice(0,-1);o.startsWith(a)&&o.length>a.length&&o[a.length]===","&&s.push(o);}else o.startsWith(e)&&s.push(o);}for(let o of s)f.delete(o)&&n++;return n};f.getStats=function(){let t={};for(let[n,s]of h.entries())t[n]=s.size;let e=0;for(let n of y.values())e+=n.accessCount;return {total:g.size,byNamespace:t,topNamespaces:Object.entries(t).map(([n,s])=>({namespace:n,count:s})).sort((n,s)=>s.count-n.count).slice(0,10),averageAccessCount:y.size?e/y.size:0}};f.getNamespaceStats=function(t){let e=v(t),n=Array.isArray(t)&&t.length>0?String(t[0]):e,s=[],o=0;for(let[a,u]of y.entries()){let c=false;if(a===e)c=true;else if(e.endsWith("]")){let p=e.slice(0,-1);a.startsWith(p)&&a.length>p.length&&a[p.length]===","&&(c=true);}else a.startsWith(e)&&(c=true);c&&(s.push({key:a,accessCount:u.accessCount,createdAt:u.createdAt}),o+=u.accessCount);}return {namespace:n,count:s.length,totalAccessCount:o,averageAccessCount:s.length?o/s.length:0,states:s}};Object.defineProperty(f,"size",{get:()=>g.size,enumerable:true});f.enableAutoCleanup=t=>{Object.assign(m,t,{enabled:true}),d&&clearInterval(d),d=setInterval(L,m.checkInterval);};f.disableAutoCleanup=()=>{m.enabled=false,d&&clearInterval(d);};Object.defineProperty(f,"isAutoCleanupEnabled",{get:()=>m.enabled,enumerable:true});function ce(t){return {current:t}}exports.a=te;exports.b=ne;exports.c=se;exports.d=K;exports.e=oe;exports.f=ae;exports.g=re;exports.h=f;exports.i=ce;//# sourceMappingURL=chunk-3AWR7IKE.js.map
2
- //# sourceMappingURL=chunk-3AWR7IKE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/state.ts"],"names":["STATE_SIGNAL","depMap","boxToKeyMap","targetBoxMap","getDep","target","key","initialValue","deps","dep","currentVal","SignalNode","hybridHandlers","prop","box","updateStateMetadata","isSignalLike","innerValue","val","args","result","createNestedProxy","newValue","success","desc","nestedHandlers","receiver","nestedProxyCache","proxy","proxyCache","createHybridProxy","currentComponent","setCurrentComponent","instance","createComponentInstance","resetHookIndex","globalStateRegistry","namespaceRegistry","stateMetadata","autoCleanupConfig","autoCleanupInterval","performAutoCleanup","DEV_WARNING_THRESHOLD","hasWarnedAboutSize","keyCache","serializeKey","cached","serialized","registerStateInNamespace","namespace","unregisterStateFromNamespace","set","signalRefTarget","now","existing","keysToRemove","metadata","state","isStateValue","value","getStateSignal","stateValue","equals","isTruthy","stateImplementation","initialValueOrFetcher","options","comp","hookIndex","saved","res","rawKey","params","entry","setter","refetch","statusProxy","errorProxy","originalFn","fn","testResult","actions","createResource","v","statusComp","ComputedNode","errorComp","node","sKey","meta","prefix","prefixStr","cleared","keysToDelete","raw","k","byNamespace","ns","keys","totalAccess","m","c","a","b","pStr","states","matched","ref","initial"],"mappings":"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","file":"chunk-3AWR7IKE.js","sourcesContent":["import { SignalNode, ComputedNode, createResource } from './signal'\n\n\n\n/** Symbol to identify StateProxy and access underlying signal */\nexport const STATE_SIGNAL = Symbol.for('flexium.stateSignal')\n\n/**\n * ------------------------------------------------------------------\n * Hybrid Proxy Architecture: Support Types\n * ------------------------------------------------------------------\n */\n\n/**\n * A \"Box\" is any object with a `value` property.\n * It serves as the stable target for our Proxy.\n */\ninterface Box<T> {\n get(): T\n set?(value: T): void\n peek(): T\n}\n\n/**\n * Dependency Map: Stores signals for object properties.\n * Key: Target Object (The inner value, OR the Box itself)\n * Value: Map<PropertyKey, Signal>\n */\n// Need to allow getDep to access SignalNode methods\nconst depMap = new WeakMap<object, Map<string | symbol, SignalNode<unknown>>>()\nconst boxToKeyMap = new WeakMap<object, string>()\nconst targetBoxMap = new WeakMap<object, Box<any>>()\n\nfunction getDep(target: object, key: string | symbol, initialValue?: unknown): SignalNode<unknown> {\n let deps = depMap.get(target)\n if (!deps) {\n deps = new Map()\n depMap.set(target, deps)\n }\n let dep = deps.get(key)\n if (!dep) {\n const currentVal = initialValue !== undefined ? initialValue : Reflect.get(target, key)\n dep = new SignalNode(currentVal)\n deps.set(key, dep)\n }\n return dep\n}\n\n/**\n * ------------------------------------------------------------------\n * Hybrid Proxy Handler\n * ------------------------------------------------------------------\n */\nconst hybridHandlers: ProxyHandler<Box<any>> = {\n get(target, prop) {\n const box = targetBoxMap.get(target)!\n if (prop === STATE_SIGNAL) return box\n\n // Access Tracking\n const key = boxToKeyMap.get(box)\n if (key) updateStateMetadata(key)\n\n if (prop === 'peek') {\n return box.peek.bind(box)\n }\n\n // Reactivity for the Root Value\n // Reactivity for the Root Value\n const isSignalLike = typeof (box as any).peek === 'function' && typeof (box as any).get === 'function'\n let innerValue: any\n\n if (isSignalLike) {\n innerValue = box.get()\n } else {\n getDep(box, 'value') // Should not happen if box is always a Node\n innerValue = box.get()\n }\n\n if (prop === Symbol.toPrimitive || prop === 'valueOf') {\n return () => innerValue\n }\n\n if (prop === Symbol.iterator) {\n // Track iteration\n getDep(innerValue, 'length').get()\n getDep(innerValue, 'iterate').get()\n return (innerValue as any)[Symbol.iterator].bind(innerValue)\n }\n\n // Recursive Forwarding\n if (innerValue !== null && typeof innerValue === 'object') {\n const val = Reflect.get(innerValue, prop)\n\n if (typeof val === 'function') {\n // Special handling for Array mutation methods\n if (Array.isArray(innerValue) && ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].includes(prop as string)) {\n return function (...args: any[]) {\n const result = (val as Function).apply(innerValue, args)\n // If innerValue is the root value of the box:\n if (innerValue === box.get()) {\n const dep = getDep(box, 'value')\n dep.set(innerValue) // force notify even if value is same object\n }\n\n // Arrays are tricky. We usually subscribe to 'iterate' or 'length'.\n // Notify length\n getDep(innerValue, 'length').set(innerValue.length)\n\n // Also notify 'iterate' key which `ownKeys` uses?\n // Or just force notify 'value' if it's the root.\n if (innerValue === box.get()) {\n getDep(box, 'value').get()\n }\n\n return result\n }\n }\n if (Array.isArray(innerValue)) {\n // Fix for .concat(): Array.prototype.concat treats proxies as objects unless Symbol.isConcatSpreadable is handled,\n // OR we bind to the raw array so it doesn't see the proxy.\n // But binding to 'receiver' (the proxy) is usually correct for other methods.\n // However, for .concat, we likely want the raw array behavior or correct proxy handling.\n // Simple fix: bind to innerValue (raw array) for non-mutating methods too, \n // or at least for concat if it causes issues.\n // .map, .filter etc return new arrays, so binding to innerValue is fine.\n return (val as Function).bind(innerValue)\n }\n return (innerValue as any)[prop].bind(innerValue)\n }\n\n getDep(innerValue, prop, val).get()\n\n if (val !== null && typeof val === 'object') {\n return createNestedProxy(val)\n }\n return val\n }\n\n const val = (innerValue as any)[prop]\n return typeof val === 'function' ? val.bind(innerValue) : val\n },\n\n set(target, prop, newValue) {\n const box = targetBoxMap.get(target)!\n const innerValue = box.get()\n if (innerValue !== null && typeof innerValue === 'object') {\n const success = Reflect.set(innerValue, prop, newValue)\n getDep(innerValue, prop).set(newValue)\n return success\n }\n return false\n },\n\n has(target, prop) {\n const box = targetBoxMap.get(target)!\n if (prop === STATE_SIGNAL) return true\n const innerValue = box.get()\n if (innerValue === null) return false\n if (typeof innerValue === 'object') {\n return Reflect.has(innerValue, prop)\n }\n return false // primitives don't have own properties usually, but 'toFixed' is in proto\n },\n\n ownKeys(target) {\n const box = targetBoxMap.get(target)!\n const innerValue = box.get()\n\n if (innerValue === null || typeof innerValue !== 'object') {\n return Reflect.ownKeys(target)\n }\n\n // Arrays need special handling for iteration\n if (Array.isArray(innerValue)) {\n getDep(innerValue, 'length').get()\n getDep(innerValue, 'iterate').get()\n } else {\n // Objects \n getDep(innerValue, 'iterate').get()\n }\n\n return Reflect.ownKeys(innerValue)\n },\n\n getOwnPropertyDescriptor(target, prop) {\n const box = targetBoxMap.get(target)!\n if (prop === STATE_SIGNAL) {\n return { configurable: true, enumerable: false, value: box }\n }\n const innerValue = box.get()\n\n if (innerValue === null || typeof innerValue !== 'object') {\n return undefined\n }\n\n const desc = Reflect.getOwnPropertyDescriptor(innerValue, prop)\n if (desc) {\n desc.configurable = true\n }\n return desc\n }\n}\n\nconst nestedHandlers: ProxyHandler<object> = {\n get(target, prop, receiver) {\n if (prop === STATE_SIGNAL) return target\n const val = Reflect.get(target, prop, receiver)\n getDep(target, prop, val).get()\n if (val !== null && typeof val === 'object') {\n return createNestedProxy(val)\n }\n return val\n },\n set(target, prop, newValue, receiver) {\n const success = Reflect.set(target, prop, newValue, receiver)\n if (success) {\n getDep(target, prop).set(newValue)\n }\n return success\n },\n has(target, prop) {\n if (prop === STATE_SIGNAL) return true\n return Reflect.has(target, prop)\n }\n}\n\nconst nestedProxyCache = new WeakMap<object, any>()\n\nfunction createNestedProxy<T extends object>(target: T): T {\n let proxy = nestedProxyCache.get(target)\n if (!proxy) {\n proxy = new Proxy(target, nestedHandlers)\n nestedProxyCache.set(target, proxy)\n }\n return proxy\n}\n\n// Cache for Hybrid Proxies (keyed by Box/Signal)\nconst proxyCache = new WeakMap<object, any>()\n\nfunction createHybridProxy<T>(box: Box<T>): StateValue<T> {\n let proxy = proxyCache.get(box)\n if (proxy) return proxy\n\n // The target is a function so that the proxy is callable `state()`, returns value.\n const target = () => box.get()\n targetBoxMap.set(target, box)\n // Object.assign(target, box) // REMOVED: Do not copy properties, prevents stale values\n\n proxy = new Proxy(target as any, hybridHandlers) as StateValue<T>\n proxyCache.set(box, proxy)\n return proxy\n}\n\n/**\n * ------------------------------------------------------------------\n * Component Hook System\n * ------------------------------------------------------------------\n */\ninterface ComponentInstance {\n id: symbol\n hookIndex: number\n hooks: unknown[]\n}\n\nlet currentComponent: ComponentInstance | null = null\n\nexport function setCurrentComponent(instance: ComponentInstance | null): void {\n currentComponent = instance\n}\n\nexport function getCurrentComponent(): ComponentInstance | null {\n return currentComponent\n}\n\nexport function createComponentInstance(): ComponentInstance {\n return {\n id: Symbol('component'),\n hookIndex: 0,\n hooks: [],\n }\n}\n\nexport function resetHookIndex(instance: ComponentInstance): void {\n instance.hookIndex = 0\n}\n\n/**\n * ------------------------------------------------------------------\n * Global State Registry & Metadata\n * ------------------------------------------------------------------\n */\ninterface RegistryEntry {\n box: Box<any>\n proxy: StateValue<any>\n setter: StateAction<any> | undefined\n refetch?: () => void\n status?: StateValue<AsyncStatus>\n error?: StateValue<unknown>\n key?: string\n namespace?: string\n\n // Keep compatibility with old StateObject for metadata utils\n // We can just add metadata fields here or map them\n createdAt: number\n lastAccessed: number\n accessCount: number\n referenceCount: number\n}\n\nconst globalStateRegistry = new Map<string, RegistryEntry>()\nconst namespaceRegistry = new Map<string, Set<string>>()\n// We'll store metadata directly in RegistryEntry for simplicity in this refactor\n// OR keep existing `stateMetadata` map if we want to separate concerns.\n// Let's reuse `stateMetadata` approach for less friction with existing utils.\n\ninterface StateMetadata {\n key: string\n namespace?: string\n createdAt: number\n lastAccessed: number\n accessCount: number\n referenceCount: number\n signalRef?: WeakRef<any>\n}\nconst stateMetadata = new Map<string, StateMetadata>()\n\ninterface AutoCleanupConfig {\n enabled: boolean\n maxIdleTime: number\n checkInterval: number\n minAccessCount: number\n}\n\nlet autoCleanupConfig: AutoCleanupConfig = {\n enabled: true,\n maxIdleTime: 5 * 60 * 1000,\n checkInterval: 60 * 1000,\n minAccessCount: 0,\n}\n\nlet autoCleanupInterval: AnyInterval | null = null\ntype AnyInterval = ReturnType<typeof setInterval>\n\nif (typeof window !== 'undefined' || typeof globalThis !== 'undefined') {\n setTimeout(() => {\n if (autoCleanupConfig.enabled && !autoCleanupInterval) {\n autoCleanupInterval = setInterval(performAutoCleanup, autoCleanupConfig.checkInterval)\n // Allow process to exit in Node.js environment even if interval is running\n if (autoCleanupInterval && typeof autoCleanupInterval === 'object' && 'unref' in autoCleanupInterval && typeof autoCleanupInterval.unref === 'function') {\n (autoCleanupInterval as any).unref()\n }\n }\n }, 0)\n}\n\nconst DEV_WARNING_THRESHOLD = 10000\nlet hasWarnedAboutSize = false\n\n/**\n * ------------------------------------------------------------------\n * Helper Functions\n * ------------------------------------------------------------------\n */\nexport type StateKey = string | readonly (string | number | boolean | null | undefined | object)[]\nconst keyCache = new WeakMap<readonly unknown[], string>()\n\nfunction serializeKey(key: StateKey): string {\n if (typeof key === 'string') return key\n const cached = keyCache.get(key)\n if (cached !== undefined) return cached\n try {\n const serialized = JSON.stringify(key)\n keyCache.set(key, serialized)\n return serialized\n } catch (error) {\n const fallback = String(key)\n return fallback\n }\n}\n\nfunction registerStateInNamespace(key: string, namespace?: string): void {\n if (!namespace) return\n if (!namespaceRegistry.has(namespace)) namespaceRegistry.set(namespace, new Set())\n namespaceRegistry.get(namespace)!.add(key)\n}\n\nfunction unregisterStateFromNamespace(key: string, namespace?: string): void {\n if (!namespace) return\n const set = namespaceRegistry.get(namespace)\n if (set) {\n set.delete(key)\n if (set.size === 0) namespaceRegistry.delete(namespace)\n }\n}\n\nfunction updateStateMetadata(key: string, namespace?: string, signalRefTarget?: any): void {\n const now = Date.now()\n const existing = stateMetadata.get(key)\n\n if (existing) {\n existing.lastAccessed = now\n existing.accessCount++\n existing.referenceCount++\n if (namespace && existing.namespace !== namespace) {\n if (existing.namespace) unregisterStateFromNamespace(key, existing.namespace)\n existing.namespace = namespace\n registerStateInNamespace(key, namespace)\n }\n } else {\n stateMetadata.set(key, {\n key,\n namespace,\n createdAt: now,\n lastAccessed: now,\n accessCount: 1,\n referenceCount: 1,\n signalRef: signalRefTarget && typeof WeakRef !== 'undefined' ? new WeakRef(signalRefTarget) : undefined\n })\n registerStateInNamespace(key, namespace)\n }\n}\n\nfunction performAutoCleanup(): void {\n if (!autoCleanupConfig.enabled) return\n const now = Date.now()\n const keysToRemove: string[] = []\n\n for (const [key, metadata] of stateMetadata.entries()) {\n if (metadata.signalRef && typeof WeakRef !== 'undefined') {\n const sig = metadata.signalRef.deref()\n if (!sig) {\n keysToRemove.push(key)\n continue\n }\n }\n const idleTime = now - metadata.lastAccessed\n if (idleTime > autoCleanupConfig.maxIdleTime && metadata.referenceCount === 0 && metadata.accessCount >= autoCleanupConfig.minAccessCount) {\n keysToRemove.push(key)\n }\n }\n\n for (const key of keysToRemove) {\n state.delete(key)\n }\n\n if (keysToRemove.length > 0 && typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production') {\n console.log(`[Flexium] Auto-cleaned ${keysToRemove.length} idle states`)\n }\n}\n\n/**\n * ------------------------------------------------------------------\n * Main State API\n * ------------------------------------------------------------------\n */\nexport type StateAction<T> = (newValue: T | ((prev: T) => T)) => void\nexport type StateValue<T> = T & (() => T) & { peek(): T }\nexport type AsyncStatus = 'idle' | 'loading' | 'success' | 'error'\nexport interface StateOptions<P = unknown> {\n key?: StateKey\n params?: P\n}\n\nexport function isStateValue(value: unknown): boolean {\n // Hybrid proxies are functions\n return (typeof value === 'object' || typeof value === 'function') && value !== null && STATE_SIGNAL in value\n}\n\n// Helper to get the underlying signal from a StateValue\nexport function getStateSignal(stateValue: unknown): SignalNode<unknown> | ComputedNode<unknown> | null {\n if (isStateValue(stateValue)) return (stateValue as any)[STATE_SIGNAL]\n return null\n}\n\nexport function equals<T>(stateValue: StateValue<T>, value: T): boolean {\n if (!isStateValue(stateValue)) return false\n return stateValue.peek() === value\n}\n\nexport function isTruthy<T>(stateValue: StateValue<T>): boolean {\n if (!isStateValue(stateValue)) return false\n return Boolean(stateValue.peek())\n}\n\nexport interface StateStats {\n total: number\n byNamespace: Record<string, number>\n topNamespaces: Array<{ namespace: string; count: number }>\n averageAccessCount: number\n}\n\nexport interface NamespaceStats {\n namespace: string\n count: number\n totalAccessCount: number\n averageAccessCount: number\n states: Array<{ key: string; accessCount: number; createdAt: number }>\n}\n\ninterface StateFunction {\n <T>(initialValue: T, options?: StateOptions): [StateValue<T>, StateAction<T>]\n <T, P>(computeFn: (params: P) => T, options: StateOptions<P> & { params: P }): [StateValue<T>]\n <T>(computeFn: () => T, options?: StateOptions): [StateValue<T>]\n <T, P>(fetcher: (params: P) => Promise<T>, options: StateOptions<P> & { params: P }): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n <T>(fetcher: () => Promise<T>, options?: StateOptions): [StateValue<T | undefined>, () => void, StateValue<AsyncStatus>, StateValue<unknown>]\n\n delete: (key: StateKey) => boolean\n clear: () => void\n clearByPrefix: (prefix: StateKey) => number\n has: (key: StateKey) => boolean\n readonly size: number\n getStats: () => StateStats\n getNamespaceStats: (prefix: StateKey) => NamespaceStats\n enableAutoCleanup: (config?: Partial<AutoCleanupConfig>) => void\n disableAutoCleanup: () => void\n readonly isAutoCleanupEnabled: boolean\n}\n\nfunction stateImplementation<T, P = unknown>(\n initialValueOrFetcher: T | ((params?: P) => T) | ((params?: P) => Promise<T>),\n options?: StateOptions<P>\n): any {\n // Hook System\n if (currentComponent && !options?.key) {\n const comp = currentComponent\n const hookIndex = comp.hookIndex++\n if (hookIndex < comp.hooks.length) return comp.hooks[hookIndex]\n const saved = currentComponent\n currentComponent = null\n const res = state(initialValueOrFetcher as any, options as any)\n currentComponent = saved\n comp.hooks.push(res)\n return res\n }\n\n // Key Serializing\n const rawKey = options?.key\n const key = rawKey ? serializeKey(rawKey) : undefined\n const namespace = Array.isArray(rawKey) && rawKey.length > 0 ? String(rawKey[0]) : undefined\n const params = options?.params\n\n // Check Registry\n if (key && globalStateRegistry.has(key)) {\n const entry = globalStateRegistry.get(key)!\n updateStateMetadata(key, namespace, entry.box)\n\n const result = [entry.proxy]\n if (entry.setter) result.push(entry.setter)\n if (entry.refetch) result.push(entry.refetch)\n if (entry.status) result.push(entry.status)\n if (entry.error) result.push(entry.error)\n\n return result\n }\n\n // Logic\n let box: Box<T>\n let setter: StateAction<T> | undefined\n let refetch: (() => void) | undefined\n let statusProxy: StateValue<AsyncStatus> | undefined\n let errorProxy: StateValue<unknown> | undefined\n\n if (typeof initialValueOrFetcher === 'function') {\n const originalFn = initialValueOrFetcher as Function\n const fn = params !== undefined ? () => originalFn(params) : originalFn\n\n let testResult: any\n try { testResult = fn() } catch (e) { /* treat as computed */ }\n\n const isAsync = originalFn.constructor.name === 'AsyncFunction' || testResult instanceof Promise\n\n if (isAsync) {\n // Resource\n const [res, actions] = createResource(fn as any, async (v) => v)\n // Resources in flexium/signal are still using the wrapper API for now (unless refactored too).\n // Assuming createResource still returns { value: ... } style object which we can wrap or adapt.\n // Wait, createResource returns [Resource<T>, actions]. \n // Resource<T> extends Signal<T>. It has .value.\n // But our Box expects .get()/.peek().\n // Adapter Box:\n const resBox: Box<any> = {\n get: () => res.value,\n peek: () => res.peek(),\n // Resources are read-only-ish via this box for the user, actions used for mutations\n }\n box = resBox\n refetch = actions.refetch\n\n // Status Computed\n const statusComp = new ComputedNode(() => res.loading ? 'loading' : res.error ? 'error' : res.state === 'unresolved' ? 'idle' : 'success')\n statusProxy = createHybridProxy(statusComp as any) as any\n\n // Error Computed\n const errorComp = new ComputedNode(() => res.error)\n errorProxy = createHybridProxy(errorComp as any) as any\n } else {\n // Computed\n box = new ComputedNode(fn as any) as any\n }\n } else {\n // Signal\n const node = new SignalNode(initialValueOrFetcher)\n box = node as any\n setter = (newValue: any) => {\n if (typeof newValue === 'function') {\n node.set(newValue(node.peek()))\n } else {\n node.set(newValue)\n }\n }\n }\n\n const proxy = createHybridProxy(box)\n\n const result: any[] = [proxy]\n if (setter) result.push(setter)\n if (refetch) {\n result.splice(1, 0, refetch) // [proxy, refetch, status, error]\n if (statusProxy) result.push(statusProxy)\n if (errorProxy) result.push(errorProxy)\n }\n\n // Register\n if (key) {\n globalStateRegistry.set(key, {\n box, proxy, setter, refetch, status: statusProxy, error: errorProxy,\n createdAt: Date.now(), lastAccessed: Date.now(), accessCount: 1, referenceCount: 1,\n key, namespace\n })\n\n // Map box to key for access tracking\n boxToKeyMap.set(box, key)\n\n updateStateMetadata(key, namespace, box)\n\n const isDev = typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production'\n if (isDev && !hasWarnedAboutSize && globalStateRegistry.size >= DEV_WARNING_THRESHOLD) {\n hasWarnedAboutSize = true\n console.warn(`[Flexium] Registry size warning: ${globalStateRegistry.size}`)\n }\n }\n\n return result\n}\n\nconst state = stateImplementation as StateFunction\n\n// Static Methods\nstate.delete = function (key: StateKey): boolean {\n const sKey = serializeKey(key)\n const meta = stateMetadata.get(sKey)\n if (meta?.namespace) unregisterStateFromNamespace(sKey, meta.namespace)\n stateMetadata.delete(sKey)\n return globalStateRegistry.delete(sKey)\n}\n\nstate.clear = function (): void {\n globalStateRegistry.clear()\n namespaceRegistry.clear()\n stateMetadata.clear()\n hasWarnedAboutSize = false\n}\n\nstate.has = function (key: StateKey): boolean {\n return globalStateRegistry.has(serializeKey(key))\n}\n\nstate.clearByPrefix = function (prefix: StateKey): number {\n const prefixStr = serializeKey(prefix)\n let cleared = 0\n const keysToDelete: string[] = []\n\n for (const [key] of stateMetadata.entries()) {\n if (key === prefixStr) { keysToDelete.push(key); continue }\n if (prefixStr.endsWith(']')) {\n const raw = prefixStr.slice(0, -1)\n if (key.startsWith(raw) && key.length > raw.length && key[raw.length] === ',') keysToDelete.push(key)\n } else {\n if (key.startsWith(prefixStr)) keysToDelete.push(key)\n }\n }\n\n for (const k of keysToDelete) {\n if (state.delete(k)) cleared++\n }\n return cleared\n}\n\nstate.getStats = function (): StateStats {\n const byNamespace: Record<string, number> = {}\n for (const [ns, keys] of namespaceRegistry.entries()) byNamespace[ns] = keys.size\n\n let totalAccess = 0\n for (const m of stateMetadata.values()) totalAccess += m.accessCount\n\n return {\n total: globalStateRegistry.size,\n byNamespace,\n topNamespaces: Object.entries(byNamespace).map(([n, c]) => ({ namespace: n, count: c })).sort((a, b) => b.count - a.count).slice(0, 10),\n averageAccessCount: stateMetadata.size ? totalAccess / stateMetadata.size : 0\n }\n}\n\nstate.getNamespaceStats = function (prefix: StateKey): NamespaceStats {\n const pStr = serializeKey(prefix)\n const ns = Array.isArray(prefix) && prefix.length > 0 ? String(prefix[0]) : pStr\n const states: any[] = []\n let totalAccess = 0\n\n for (const [key, m] of stateMetadata.entries()) {\n let matched = false\n\n if (key === pStr) {\n matched = true\n } else if (pStr.endsWith(']')) {\n const raw = pStr.slice(0, -1)\n if (key.startsWith(raw) && key.length > raw.length && key[raw.length] === ',') {\n matched = true\n }\n } else {\n if (key.startsWith(pStr)) matched = true\n }\n\n if (matched) {\n states.push({ key, accessCount: m.accessCount, createdAt: m.createdAt })\n totalAccess += m.accessCount\n }\n }\n return {\n namespace: ns, count: states.length, totalAccessCount: totalAccess,\n averageAccessCount: states.length ? totalAccess / states.length : 0,\n states\n }\n}\n\nObject.defineProperty(state, 'size', { get: () => globalStateRegistry.size, enumerable: true })\nstate.enableAutoCleanup = (c) => { Object.assign(autoCleanupConfig, c, { enabled: true }); if (autoCleanupInterval) clearInterval(autoCleanupInterval); autoCleanupInterval = setInterval(performAutoCleanup, autoCleanupConfig.checkInterval) }\nstate.disableAutoCleanup = () => { autoCleanupConfig.enabled = false; if (autoCleanupInterval) clearInterval(autoCleanupInterval) }\nObject.defineProperty(state, 'isAutoCleanupEnabled', { get: () => autoCleanupConfig.enabled, enumerable: true })\n\nexport { state }\n\nexport interface RefObject<T> { current: T | null }\nexport function ref<T>(initial: T | null): RefObject<T> { return { current: initial } }\n"]}
@@ -1,3 +0,0 @@
1
- import {a,b as b$1}from'./chunk-HLPVL6EK.mjs';import {c,a as a$1}from'./chunk-WVEJT7HD.mjs';import {d,e}from'./chunk-B7VP6HBY.mjs';function j(){let t=()=>({pathname:"/",search:"",hash:"",query:{}}),e=()=>typeof window>"u"?t():{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash,query:$(window.location.search)},r=new d(e()),n=s=>{if(!(typeof window>"u")){if(_(s)){console.error("[Flexium Router] Blocked navigation to unsafe path:",s);return}window.history.pushState({},"",s),r.set(e());}},a=()=>{try{r.set(e());}catch(s){console.error("[Flexium Router] Error handling popstate:",s);}};return typeof window<"u"&&window.addEventListener("popstate",a),[r,n,()=>{typeof window<"u"&&window.removeEventListener("popstate",a);}]}function _(t){let e=t.trim().toLowerCase();return ["javascript:","data:","vbscript:","file:"].some(n=>e.startsWith(n))}function L(t){return t.replace(/<[^>]*>/g,"").replace(/javascript:/gi,"").replace(/on\w+\s*=/gi,"")}var O=new Set(["__proto__","constructor","prototype"]);function $(t){let e=new URLSearchParams(t),r=Object.create(null);return e.forEach((n,a)=>{let i=L(a),s=L(n);i&&!O.has(i)&&(r[i]=s);}),r}function U(t,e){let r=[],n=e.replace(/:([^/]+)/g,(l,h)=>(r.push(h),"([^/]+)")),a=new RegExp(`^${n}$`),i=t.match(a);if(!i)return {matches:false,params:{}};let s={};return i.slice(1).forEach((l,h)=>{s[r[h]]=l;}),{matches:true,params:s}}function N(t){let e=[],r=Array.isArray(t)?t:[t];for(let n of r){if(!c(n))continue;let{path:a,index:i,component:s,beforeEnter:l}=n.props,h=n.children;if(!s&&!h){console.warn(`[Flexium Router] Route "${a||"(index)"}" has no component and no children. Skipping.`);continue}let R={path:a||"",index:!!i,component:s||(()=>null),children:h?N(h):[],beforeEnter:l};e.push(R);}return e}function F(t,e){for(let r of t){let n=D(r,e,"");if(n)return n}return null}function D(t,e,r){let n=r;t.path&&(n=r.replace(/\/$/,"")+"/"+t.path.replace(/^\//,""));let a=t.children.length===0,i=A(n,!a),s=e.match(i);if(s){let[l,...h]=s,R=M(n,h),o={route:t,params:R,pathname:l};if(a)return l===e?[o]:null;for(let f of t.children){let u=D(f,e,n);if(u)return [o,...u]}if(l===e){let f=t.children.find(u=>u.index);return f?[o,{route:f,params:{},pathname:l}]:[o]}}return null}function A(t,e){let r=t.replace(/:([^/]+)/g,()=>"([^/]+)");return r==="/"&&e?new RegExp("^"):new RegExp(`^${r}${e?"(?:/|$)":"$"}`)}function M(t,e){let r={},n=0;return t.replace(/:([^/]+)/g,(a,i)=>(r[i]=e[n++],"")),r}var b=a(null),y=a(0);function V(){let t=b$1(b);if(!t)throw new Error("router() must be called within a <Router> component");return t}function tt(t){let[e$1,r]=j(),n=Array.isArray(t.children)?t.children:[t.children],a=[],i=[];for(let o of n)c(o)&&typeof o.type=="function"&&o.type===z?i.push(o):a.push(o);let s=N(i),l=new e(()=>{let o=e$1.get();return F(s,o.pathname)||[]}),h=new e(()=>{let o=l.get();return o.length>0?o[o.length-1].params:{}}),R=new Proxy({location:e$1,params:h,navigate:r,matches:l},{get(o,f){let u=o[f];if(f==="location"||f==="params"||f==="matches"){let p=u,S=()=>p.get();return new Proxy(S,{apply(){return p.get()},get(C,c){if(c==="value")return p.get();if(c==="peek")return p.peek;if(c===Symbol.toPrimitive||c==="toString"||c==="valueOf")return ()=>p.get();let m=p[c];if(typeof m=="function")return m.bind(p);let g=p.get();if(g!==null&&typeof g=="object"){let v=g[c];return typeof v=="function"?v.bind(g):v}return m},has(C,c){if(c==="value"||c==="peek")return true;let m=p.get();return m!==null&&typeof m=="object"?c in m:c in p},ownKeys(C){let c=p.get();return c!==null&&typeof c=="object"?Reflect.ownKeys(c):[]},getOwnPropertyDescriptor(C,c){let m=p.get();if(m!==null&&typeof m=="object"){let g=Object.getOwnPropertyDescriptor(m,c);if(g)return {...g,configurable:true}}}})}return u}});return ()=>{let o=l.get(),f=null;if(o.length>0){let u=o[0];u.route.beforeEnter?u.route.beforeEnter(u.params)!==false&&(f=a$1(y.Provider,{value:1},[a$1("div",{key:u.route.path,style:{display:"contents"}},[a$1(u.route.component,{params:u.params})])])):f=a$1(y.Provider,{value:1},[a$1("div",{key:u.route.path,style:{display:"contents"}},[a$1(u.route.component,{params:u.params})])]);}return a$1(b.Provider,{value:R},[...a,a$1("main",{id:"main"},[f])])}}function z(t){return null}function et(){let t=b$1(b),e=b$1(y)||0;return t?()=>{let r=t.matches();if(e>=r.length)return null;let n=r[e];if(n.route.beforeEnter&&n.route.beforeEnter(n.params)===false)return null;let a=n.route.component;return a$1(y.Provider,{value:e+1},[a$1(a,{params:n.params})])}:null}function nt(t){let e=V(),r=n=>{n.preventDefault(),e.navigate(t.to);};return a$1("a",{href:t.to,class:t.class,onclick:r},t.children)}
2
- export{j as a,_ as b,L as c,U as d,N as e,F as f,V as g,tt as h,z as i,et as j,nt as k};//# sourceMappingURL=chunk-3BQXIHYI.mjs.map
3
- //# sourceMappingURL=chunk-3BQXIHYI.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/router/core.ts","../src/router/utils.ts","../src/router/context.ts","../src/router/components.ts"],"names":["createLocation","getDefaultLoc","getLoc","parseQuery","loc","SignalNode","navigate","path","isUnsafePath","handlePopState","error","normalizedPath","protocol","sanitizeQueryValue","value","DANGEROUS_KEYS","search","params","query","key","sanitizedKey","sanitizedValue","matchPath","pathname","routePath","paramNames","regexPath","_","paramName","regex","match","index","createRoutesFromChildren","children","routes","childArray","child","isFNode","component","beforeEnter","nestedChildren","route","matchRoutes","location","result","matchRouteBranch","parentPath","fullPath","isLeaf","matcher","compilePath","matchedPath","paramValues","paramsObj","extractParams","currentMatch","childMatches","indexRoute","c","prefix","values","i","RouterCtx","createContext","RouteDepthCtx","router","ctx","context","Router","props","nonRouteChildren","routeChildren","Route","matches","ComputedNode","m","routerContext","target","prop","signal","_target","innerProp","signalProp","currentValue","objProp","desc","ms","matchedContent","rootMatch","f","_props","Outlet","depth","Component","Link","r","handleClick","e"],"mappings":"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","file":"chunk-3BQXIHYI.mjs","sourcesContent":["/**\n * Router Core Module\n *\n * Provides core routing functionality including location management,\n * path matching, and navigation.\n */\n\nimport { SignalNode } from '../core/signal'\nimport { Location } from './types'\n\n/**\n * Creates a reactive location signal and navigate function.\n *\n * The location signal automatically updates when:\n * - navigate() is called\n * - Browser back/forward buttons are used (popstate event)\n *\n * @returns Tuple of [location signal, navigate function, cleanup function]\n *\n * @example\n * ```tsx\n * const [location, navigate, cleanup] = createLocation();\n * // Access current path\n * console.log(location().pathname);\n * // Navigate to new path\n * navigate('/users/123');\n * // Cleanup when done (removes popstate listener)\n * cleanup();\n * ```\n */\nexport function createLocation(): [SignalNode<Location>, (path: string) => void, () => void] {\n // SSR guard: return safe defaults on server\n const getDefaultLoc = (): Location => ({\n pathname: '/',\n search: '',\n hash: '',\n query: {},\n })\n\n const getLoc = (): Location => {\n if (typeof window === 'undefined') {\n return getDefaultLoc()\n }\n return {\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n query: parseQuery(window.location.search),\n }\n }\n\n const loc = new SignalNode(getLoc())\n\n const navigate = (path: string) => {\n // SSR guard\n if (typeof window === 'undefined') return\n\n // Security: Validate path to prevent javascript: and other dangerous protocols\n if (isUnsafePath(path)) {\n console.error('[Flexium Router] Blocked navigation to unsafe path:', path)\n return\n }\n window.history.pushState({}, '', path)\n loc.set(getLoc())\n }\n\n // SSR guard for popstate listener\n const handlePopState = () => {\n try {\n loc.set(getLoc())\n } catch (error) {\n console.error('[Flexium Router] Error handling popstate:', error)\n }\n }\n\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', handlePopState)\n }\n\n // Cleanup function to remove listener\n const cleanup = () => {\n if (typeof window !== 'undefined') {\n window.removeEventListener('popstate', handlePopState)\n }\n }\n\n return [loc, navigate, cleanup]\n}\n\n/**\n * Check if a path contains unsafe protocols (XSS prevention)\n * @param path - Path to validate\n * @returns true if path is unsafe\n */\nexport function isUnsafePath(path: string): boolean {\n const normalizedPath = path.trim().toLowerCase()\n const unsafeProtocols = ['javascript:', 'data:', 'vbscript:', 'file:']\n return unsafeProtocols.some(protocol => normalizedPath.startsWith(protocol))\n}\n\n/**\n * Sanitize query parameter value to prevent XSS\n * @param value - Query parameter value\n * @returns Sanitized value\n */\nexport function sanitizeQueryValue(value: string): string {\n // Remove potential script tags and event handlers\n return value\n .replace(/<[^>]*>/g, '') // Remove HTML tags\n .replace(/javascript:/gi, '') // Remove javascript: protocol\n .replace(/on\\w+\\s*=/gi, '') // Remove event handlers like onclick=\n}\n\n/**\n * Parses URL search string into key-value object\n * @param search - URL search string (e.g., \"?foo=bar&baz=qux\")\n * @returns Object with query parameters\n */\n// Dangerous keys that could lead to prototype pollution\nconst DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype'])\n\nfunction parseQuery(search: string): Record<string, string> {\n const params = new URLSearchParams(search)\n // Use Object.create(null) to prevent prototype pollution\n const query: Record<string, string> = Object.create(null)\n params.forEach((value, key) => {\n // Sanitize both key and value to prevent XSS\n const sanitizedKey = sanitizeQueryValue(key)\n const sanitizedValue = sanitizeQueryValue(value)\n // Block dangerous keys to prevent prototype pollution\n if (sanitizedKey && !DANGEROUS_KEYS.has(sanitizedKey)) {\n query[sanitizedKey] = sanitizedValue\n }\n })\n return query\n}\n\n/**\n * Matches a pathname against a route pattern.\n *\n * Supports dynamic segments with `:param` syntax.\n *\n * @param pathname - Current URL pathname (e.g., \"/users/123\")\n * @param routePath - Route pattern (e.g., \"/users/:id\")\n * @returns Object with `matches` boolean and extracted `params`\n *\n * @example\n * ```tsx\n * const result = matchPath('/users/123', '/users/:id');\n * // { matches: true, params: { id: '123' } }\n * ```\n */\nexport function matchPath(\n pathname: string,\n routePath: string\n): { matches: boolean; params: Record<string, string> } {\n const paramNames: string[] = []\n const regexPath = routePath.replace(/:([^/]+)/g, (_, paramName) => {\n paramNames.push(paramName)\n return '([^/]+)'\n })\n\n const regex = new RegExp(`^${regexPath}$`)\n const match = pathname.match(regex)\n\n if (!match) {\n return { matches: false, params: {} }\n }\n\n const params: Record<string, string> = {}\n match.slice(1).forEach((value, index) => {\n params[paramNames[index]] = value\n })\n\n return { matches: true, params }\n}\n","import { RouteDef, RouteMatch } from './types'\nimport type { FNodeChild } from '../core/renderer'\nimport { isFNode } from '../renderers/dom/f'\n\n/**\n * Flatten the children of <Router> or <Route> into a route configuration tree.\n * Note: This assumes `children` are FNodes representing <Route> components.\n */\nexport function createRoutesFromChildren(children: FNodeChild): RouteDef[] {\n const routes: RouteDef[] = []\n\n const childArray = Array.isArray(children) ? children : [children]\n\n for (const child of childArray) {\n if (!isFNode(child)) {\n continue\n }\n\n const { path, index, component, beforeEnter } = child.props as {\n path?: string\n index?: boolean\n component?: Function\n beforeEnter?: (\n params: Record<string, string>\n ) => boolean | Promise<boolean>\n }\n const nestedChildren = child.children\n\n // Skip routes without a component (unless they have children as layout routes)\n if (!component && !nestedChildren) {\n console.warn(\n `[Flexium Router] Route \"${path || '(index)'}\" has no component and no children. Skipping.`\n )\n continue\n }\n\n const route: RouteDef = {\n path: path || '',\n index: !!index,\n component: component || (() => null),\n children: nestedChildren ? createRoutesFromChildren(nestedChildren) : [],\n beforeEnter,\n }\n\n routes.push(route)\n }\n\n return routes\n}\n\n/**\n * Match a URL against a route tree.\n * Returns an array of matches (from root to leaf).\n */\nexport function matchRoutes(\n routes: RouteDef[],\n location: string\n): RouteMatch[] | null {\n for (const route of routes) {\n const result = matchRouteBranch(route, location, '')\n if (result) return result\n }\n return null\n}\n\nfunction matchRouteBranch(\n route: RouteDef,\n location: string,\n parentPath: string\n): RouteMatch[] | null {\n let fullPath = parentPath\n if (route.path) {\n fullPath =\n parentPath.replace(/\\/$/, '') + '/' + route.path.replace(/^\\//, '')\n }\n\n const isLeaf = route.children.length === 0\n const matcher = compilePath(fullPath, !isLeaf)\n const match = location.match(matcher)\n\n if (match) {\n const [matchedPath, ...paramValues] = match\n const paramsObj = extractParams(fullPath, paramValues)\n\n const currentMatch: RouteMatch = {\n route,\n params: paramsObj,\n pathname: matchedPath,\n }\n\n if (isLeaf) {\n // Exact match required for leaf\n if (matchedPath === location) return [currentMatch]\n return null\n }\n\n // Has children: try to match one of them\n // If no children match, and this route is an index route?\n // Or if this route matches partially, maybe an index child matches the rest?\n\n for (const child of route.children) {\n const childMatches = matchRouteBranch(child, location, fullPath)\n if (childMatches) {\n return [currentMatch, ...childMatches]\n }\n }\n\n // If no children matched, but we matched exactly this layout route?\n // E.g. /users matches /users layout, and maybe it renders index?\n if (matchedPath === location) {\n // Check for index route\n const indexRoute = route.children.find((c) => c.index)\n if (indexRoute) {\n return [\n currentMatch,\n { route: indexRoute, params: {}, pathname: matchedPath },\n ]\n }\n // Just the layout? Maybe.\n return [currentMatch]\n }\n }\n\n return null\n}\n\nfunction compilePath(path: string, prefix: boolean): RegExp {\n const regexPath = path.replace(/:([^/]+)/g, () => '([^/]+)')\n\n // If path is exactly \"/\", and we want prefix matching, it should match everything\n if (regexPath === '/' && prefix) {\n return new RegExp('^')\n }\n\n // If prefix matching allowed, ensure we match segment boundary\n return new RegExp(`^${regexPath}${prefix ? '(?:/|$)' : '$'}`)\n}\n\nfunction extractParams(path: string, values: string[]): Record<string, string> {\n const params: Record<string, string> = {}\n let i = 0\n // Re-parse to find param names... inefficient but works\n path.replace(/:([^/]+)/g, (_, paramName) => {\n params[paramName] = values[i++]\n return ''\n })\n return params\n}\n","import { createContext } from '../core/context'\nimport { RouterContext } from './types'\n\n// Global Router Context\nexport const RouterCtx = createContext<RouterContext | null>(null)\n\n// Current Route Depth Context (for Outlet)\n// Stores the index of the current match in the `matches` array\nexport const RouteDepthCtx = createContext<number>(0)\n","import { ComputedNode, type SignalNode } from '../core/signal'\nimport { createLocation } from './core'\nimport { createRoutesFromChildren, matchRoutes } from './utils'\nimport { LinkProps, RouteProps, RouterContext } from './types'\nimport { f, isFNode } from '../renderers/dom/f'\nimport { RouterCtx, RouteDepthCtx } from './context'\nimport { context } from '../core/context'\nimport type { FNodeChild } from '../core/renderer'\n\n/**\n * Get the current router context.\n * Must be called within a <Router> component.\n *\n * @example\n * ```tsx\n * const r = router()\n * r.navigate('/dashboard')\n * ```\n */\nexport function router(): RouterContext {\n const ctx = context(RouterCtx)\n if (!ctx) {\n throw new Error('router() must be called within a <Router> component')\n }\n return ctx\n}\n\nexport function Router(props: { children: FNodeChild }) {\n const [location, navigate] = createLocation()\n\n // Separate Route children from non-Route children (like Nav, etc.)\n const childArray = Array.isArray(props.children) ? props.children : [props.children]\n const nonRouteChildren: FNodeChild[] = []\n const routeChildren: FNodeChild[] = []\n\n for (const child of childArray) {\n if (isFNode(child) && typeof child.type === 'function' && child.type === Route) {\n routeChildren.push(child)\n } else {\n nonRouteChildren.push(child)\n }\n }\n\n // Parse route configuration from Route children only\n const routes = createRoutesFromChildren(routeChildren)\n\n // Compute matches\n const matches = new ComputedNode(() => {\n const loc = location.get()\n return matchRoutes(routes, loc.pathname) || []\n })\n\n const params = new ComputedNode(() => {\n const m = matches.get()\n if (m.length > 0) {\n return m[m.length - 1].params\n }\n return {}\n })\n\n // Create routerContext as a stable object\n // The signals (location, params, matches) are already reactive\n // We create a proxy to ensure property access is properly tracked\n // When accessing location, params, or matches, automatically read the signal's value\n // to register subscriptions (similar to how state() proxy works)\n const routerContext: RouterContext = new Proxy({\n location,\n params,\n navigate,\n matches,\n } as any, {\n get(target, prop) {\n const value = target[prop as keyof RouterContext]\n\n // For signal/computed properties (location, params, matches),\n // return a proxy that automatically reads the signal's value when properties are accessed\n // This makes router() work like state() - property access triggers tracking\n if (prop === 'location' || prop === 'params' || prop === 'matches') {\n const signal = value as SignalNode<unknown> | ComputedNode<unknown>\n\n // Create a callable target function (like state proxy does)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const target = () => signal.get()\n\n // Return a proxy that wraps the signal and automatically reads its value\n // when properties are accessed, ensuring subscriptions are registered\n // This follows the same pattern as state() proxy for consistency\n return new Proxy(target, {\n // Make the proxy callable - returns current value\n apply() {\n return signal.get()\n },\n\n get(_target, innerProp) {\n // Accessing .value triggers subscription registration via signal's value getter\n if (innerProp === 'value') {\n return signal.get()\n }\n\n // Allow direct access to peek() without tracking\n if (innerProp === 'peek') {\n return signal.peek\n }\n\n // Calling as function also triggers subscription\n if (innerProp === Symbol.toPrimitive || innerProp === 'toString' || innerProp === 'valueOf') {\n return () => signal.get()\n }\n\n // For other signal properties (set, etc.), access them normally\n const signalProp = (signal as any)[innerProp]\n if (typeof signalProp === 'function') {\n return signalProp.bind(signal)\n }\n\n // If the signal's value is an object, access its properties\n // This enables r.location.pathname and r.params.id to work and register subscriptions\n // Note: accessing signal.value here tracks the signal in any enclosing effect\n const currentValue = signal.get()\n if (currentValue !== null && typeof currentValue === 'object') {\n const obj = currentValue as Record<string | symbol, unknown>\n const objProp = obj[innerProp]\n // If it's a function (like array methods), bind it to the current value\n if (typeof objProp === 'function') {\n return objProp.bind(currentValue)\n }\n return objProp\n }\n\n return signalProp\n },\n\n // For property checks (like 'id' in params)\n has(_target, innerProp) {\n if (innerProp === 'value' || innerProp === 'peek') return true\n const currentValue = signal.get()\n if (currentValue !== null && typeof currentValue === 'object') {\n return innerProp in (currentValue as object)\n }\n return innerProp in signal\n },\n\n // For Object.keys, for...in loops\n ownKeys(_target) {\n const currentValue = signal.get()\n if (currentValue !== null && typeof currentValue === 'object') {\n return Reflect.ownKeys(currentValue as object)\n }\n return []\n },\n\n getOwnPropertyDescriptor(_target, innerProp) {\n const currentValue = signal.get()\n if (currentValue !== null && typeof currentValue === 'object') {\n const desc = Object.getOwnPropertyDescriptor(currentValue as object, innerProp)\n if (desc) {\n return { ...desc, configurable: true }\n }\n }\n return undefined\n }\n })\n }\n\n // For navigate, return as-is\n return value\n }\n }) as RouterContext\n\n return () => {\n const ms = matches.get()\n\n // Matched route component (or null if no match)\n let matchedContent: FNodeChild = null\n if (ms.length > 0) {\n const rootMatch = ms[0]\n\n // Check beforeEnter guard\n if (rootMatch.route.beforeEnter) {\n const result = rootMatch.route.beforeEnter(rootMatch.params)\n if (result !== false) {\n matchedContent = f(RouteDepthCtx.Provider, { value: 1 }, [\n f('div', { key: rootMatch.route.path, style: { display: 'contents' } }, [\n f(rootMatch.route.component, { params: rootMatch.params }),\n ]),\n ])\n }\n } else {\n matchedContent = f(RouteDepthCtx.Provider, { value: 1 }, [\n f('div', { key: rootMatch.route.path, style: { display: 'contents' } }, [\n f(rootMatch.route.component, { params: rootMatch.params }),\n ]),\n ])\n }\n }\n\n // Render non-Route children (like Nav) and the matched route wrapped in main\n return f(RouterCtx.Provider, { value: routerContext }, [\n ...nonRouteChildren,\n f('main', { id: 'main' }, [matchedContent]),\n ])\n }\n}\n\n/**\n * Route configuration component.\n * Doesn't render anything directly; used by Router to build the route tree.\n */\nexport function Route(_props: RouteProps) {\n return null\n}\n\n/**\n * Renders the child route content.\n */\nexport function Outlet() {\n const router = context(RouterCtx)\n const depth = context(RouteDepthCtx) || 0 // Default 0\n\n // Safety check\n if (!router) return null\n\n return () => {\n const ms = router.matches()\n\n // Check if we have a match at this depth\n if (depth >= ms.length) return null\n\n const match = ms[depth]\n\n // Check beforeEnter guard\n if (match.route.beforeEnter) {\n const result = match.route.beforeEnter(match.params)\n if (result === false) return null\n }\n\n const Component = match.route.component\n\n // Render component and provide next depth\n return f(RouteDepthCtx.Provider, { value: depth + 1 }, [\n f(Component, { params: match.params }),\n ])\n }\n}\n\nexport function Link(props: LinkProps) {\n const r = router()\n\n const handleClick = (e: Event) => {\n e.preventDefault()\n r.navigate(props.to)\n }\n\n return f(\n 'a',\n {\n href: props.to,\n class: props.class,\n onclick: handleClick,\n },\n props.children\n )\n}\n"]}
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkAJT35P3Z_js=require('./chunk-AJT35P3Z.js');var d=0,S=new Set,p=new Set,T=false;function y(){T||(T=true,queueMicrotask(O));}function O(){if(T=false,p.size===0)return;let n=[];for(let e of p)n.push(e);p.clear();for(let e=0;e<n.length;e++)n[e].execute();}function m(n){p.add(n);}function k(n){S.add(n);}function x(){return d}function N(n){let e;if(n){d++;try{e=n();}finally{if(d--,d===0){let t=[];for(let s of S)t.push(s);S.clear();for(let s=0;s<t.length;s++)t[s].execute();}}}return O(),e}var B=null;function z(){return B}function K(n){B=n;}var D=0,o=class{constructor(e){this._value=e;this.version=0;this.nodeType=1;}get value(){return this.get()}set value(e){this.set(e);}get(){let e=chunkAJT35P3Z_js.e();return e&&chunkAJT35P3Z_js.d.connect(this,e),this._value}set(e){this._value!==e&&(this._value=e,this.version=++D,this.notify());}peek(){return this._value}notify(){if(x()===0){if(this.subsHead){let e=false,t=this.subsHead;for(;t;){let s=t.sub;s.nodeType===2?s.execute():(m(s),e||(e=true,y())),t=t.nextSub;}}}else {let e=this.subsHead;for(;e;)e.sub&&k(e.sub),e=e.nextSub;}}},E=class{constructor(e){this.computeFn=e;this.version=0;this.nodeType=2;this.flags=12;this.lastCleanEpoch=0;}get value(){return this.get()}execute(){this.flags|=12,this.notify();}_updateIfDirty(){let e=this.flags;if((e&12)===0)return;if((e&4)===0&&(e&8)!==0&&!this._needsRefetch()){this.flags&=-9;return}this.flags&=-13,chunkAJT35P3Z_js.d.disconnectDependencies(this);let s=chunkAJT35P3Z_js.e();chunkAJT35P3Z_js.f(this);try{let i=this.computeFn();this._value!==i&&(this._value=i,this.version=++D),this.lastCleanEpoch=D;}finally{chunkAJT35P3Z_js.f(s);}}_needsRefetch(){if(!this.depsHead)return true;let e=this.depsHead;for(;e;){let t=e.dep;if(t.version>this.lastCleanEpoch)return true;if(t.nodeType===2){let s=t;if((s.flags&12)!==0){let l=s.version;if(s.peek(),s.version!==l&&s.version>this.lastCleanEpoch)return true}}e=e.nextDep;}return false}get(){let e=chunkAJT35P3Z_js.e();return e&&e!==this&&chunkAJT35P3Z_js.d.connect(this,e),(this.flags&12)!==0&&this._updateIfDirty(),this._value}peek(){return (this.flags&12)!==0&&this._updateIfDirty(),this._value}notify(){if(x()===0){if(this.subsHead){let e=false,t=this.subsHead;for(;t;){let s=t.sub;s.nodeType===2?s.execute():(m(s),e=true),t=t.nextSub;}e&&y();}}else {let e=this.subsHead;for(;e;)e.sub&&k(e.sub),e=e.nextSub;}}},L=Symbol("flexium.signal");function A(n){return n instanceof o||n instanceof E}function W(n){let e=chunkAJT35P3Z_js.e();e&&e.nodeType===3?e.cleanups.push(n):chunkAJT35P3Z_js.c(chunkAJT35P3Z_js.a.CLEANUP_OUTSIDE_EFFECT);}function J(n,e){let t=new o(void 0),s=new o(void 0),i=new o(false),u=new o("unresolved"),l=async(r,H=false)=>{H?(u.set("refreshing"),i.set(true)):(u.set("pending"),i.set(true)),s.set(void 0);let f=e(r,{value:t.peek(),refetching:H});h=f;try{let g=await f;h===f&&(t.set(g),u.set("ready"),i.set(!1));}catch(g){h===f&&(s.set(g),u.set("errored"),i.set(false));}},h=null,_=()=>typeof n=="function"?A(n)?n.get():n():A(n)?n.get():n;chunkAJT35P3Z_js.k(()=>{let r=_();l(r,false);});let v=function(){return t.get()};return Object.defineProperties(v,{value:{get:()=>t.get()},loading:{get:()=>i.get()},error:{get:()=>s.get()},state:{get:()=>u.get()},latest:{get:()=>t.peek()},peek:{value:()=>t.peek()}}),v[L]=true,[v,{mutate:r=>t.set(r),refetch:()=>{let r=_();l(r,true);}}]}exports.a=N;exports.b=z;exports.c=K;exports.d=o;exports.e=E;exports.f=A;exports.g=W;exports.h=J;//# sourceMappingURL=chunk-5236IK5I.js.map
2
- //# sourceMappingURL=chunk-5236IK5I.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/sync.ts","../src/core/signal.ts"],"names":["batchDepth","batchQueue","autoBatchQueue","isAutoBatchScheduled","scheduleAutoBatch","flushAutoBatch","queue","sub","i","addToAutoBatch","addToBatch","getBatchDepth","sync","fn","result","devToolsHooks","getDevToolsHooks","setDevToolsHooks","hooks","globalVersion","SignalNode","_value","newValue","activeEffect","getActiveEffect","Graph","hasScheduled","link","ComputedNode","computeFn","flags","prevEffect","setActiveEffect","dep","computedDep","oldVersion","shouldSchedule","SIGNAL_MARKER","isSignal","value","onCleanup","logWarning","ErrorCodes","createResource","source","fetcher","error","loading","state","load","currentSource","refetching","currentPromise","latestPromise","err","getSource","effect","resource","v"],"mappings":"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","file":"chunk-5236IK5I.js","sourcesContent":["import { ISubscriber } from './graph'\n\n// Batching state\nlet batchDepth = 0\n// Batch queue now needs to store raw subscribers. Set is efficient for uniqueness.\nconst batchQueue = new Set<ISubscriber>()\n\n// Auto-batching state (Microtask Scheduler)\nconst autoBatchQueue = new Set<ISubscriber>()\nlet isAutoBatchScheduled = false\n\nexport function scheduleAutoBatch(): void {\n if (!isAutoBatchScheduled) {\n isAutoBatchScheduled = true\n queueMicrotask(flushAutoBatch)\n }\n}\n\nexport function flushAutoBatch(): void {\n isAutoBatchScheduled = false\n if (autoBatchQueue.size === 0) return\n\n // Performance: Direct iteration instead of Array.from() to avoid array allocation\n // Build array while iterating Set\n const queue: ISubscriber[] = []\n for (const sub of autoBatchQueue) {\n queue.push(sub)\n }\n autoBatchQueue.clear()\n\n // Execute effects - use for loop instead of forEach (slightly faster)\n for (let i = 0; i < queue.length; i++) {\n queue[i].execute()\n }\n}\n\nexport function addToAutoBatch(sub: ISubscriber): void {\n autoBatchQueue.add(sub)\n}\n\nexport function addToBatch(sub: ISubscriber): void {\n batchQueue.add(sub)\n}\n\nexport function getBatchDepth(): number {\n return batchDepth\n}\n\n/**\n * Synchronizes state updates.\n * \n * - `sync()`: Force flushes any pending auto-batched effects.\n * - `sync(fn)`: Batches updates within `fn`, then flushes them and any pending effects synchronously.\n *\n * @param fn - Optional function containing state updates\n * @returns The return value of fn, if provided\n *\n * @example\n * ```tsx\n * // 1. Force flush pending effects\n * count.value++\n * sync() // DOM is now updated\n *\n * // 2. Batch updates and flush immediately\n * sync(() => {\n * count.value = 1\n * name.value = 'Bob'\n * }) // Effects run once here, DOM updated\n * ```\n */\nexport function sync<T>(fn?: () => T): T | void {\n let result: T | undefined\n\n if (fn) {\n batchDepth++\n try {\n result = fn()\n } finally {\n batchDepth--\n if (batchDepth === 0) {\n // Execute all queued subscribers from manual batch\n // Performance: Direct iteration instead of Array.from() to avoid array allocation\n const queue: ISubscriber[] = []\n for (const sub of batchQueue) {\n queue.push(sub)\n }\n batchQueue.clear()\n // Use for loop instead of forEach (slightly faster)\n for (let i = 0; i < queue.length; i++) {\n queue[i].execute()\n }\n }\n }\n }\n\n // Always flushing auto-batch queue to ensure everything is synced\n flushAutoBatch()\n\n return result\n}\n","/**\n * Signal System - Fine-grained reactivity without VDOM\n *\n * Architecture:\n * - Signals are reactive primitives that notify subscribers on change\n * - Computed signals automatically track dependencies and memoize results\n * - Effects run side effects and auto-track dependencies\n * - Batching prevents cascading updates for performance\n */\n\nimport { ErrorCodes, logWarning } from './errors'\nimport {\n Graph,\n\n type Link,\n type ISubscriber,\n type IObservable,\n SubscriberFlags,\n NodeType\n} from './graph'\nimport {\n\n\n getActiveEffect,\n setActiveEffect,\n} from './owner'\nimport {\n scheduleAutoBatch,\n addToAutoBatch,\n addToBatch,\n getBatchDepth\n} from './sync'\nimport { EffectNode, effect } from './effect'\n\n/**\n * DevTools hooks interface - set by devtools module to avoid circular imports\n * @internal\n */\nexport interface DevToolsHooks {\n onSignalCreate?: (signal: Signal<unknown>, name?: string) => number\n onSignalUpdate?: (id: number, value: unknown) => void\n onEffectCreate?: (name?: string) => number\n onEffectRun?: (\n id: number,\n status: 'idle' | 'running' | 'error',\n error?: Error\n ) => void\n}\n\n// Global hooks registry - set by devtools when enabled\nlet devToolsHooks: DevToolsHooks | null = null\n\nexport function getDevToolsHooks() {\n return devToolsHooks\n}\n\n/**\n * Register devtools hooks (called by devtools module)\n * @internal\n */\nexport function setDevToolsHooks(hooks: DevToolsHooks | null): void {\n devToolsHooks = hooks\n}\n\n// Global version clock for epoch-based validation (Optimization: Epochs)\nlet globalVersion = 0\n\n// ==================================================================================\n// 3. User Facing API\n// ==================================================================================\n\n/**\n * Base interface for reactive signals\n * @internal\n */\nexport interface Signal<T> {\n value: T;\n (): T\n set(value: T): void\n peek(): T\n}\n\n/**\n * Computed signal interface (read-only)\n * @internal\n */\nexport interface Computed<T> {\n readonly value: T;\n (): T\n peek(): T\n}\n\n\n\n/**\n * Internal signal node for writable signals\n */\nexport class SignalNode<T> implements IObservable {\n // Performance: Hot path fields first (CPU cache line optimization)\n version = 0 // Frequently read\n nodeType = NodeType.Signal // Frequently checked\n subsHead: Link | undefined // Frequently accessed\n\n // Cold path field\n constructor(private _value: T) { }\n\n /**\n * Compatibility wrapper for legacy .value access\n */\n get value(): T {\n return this.get()\n }\n\n set value(newValue: T) {\n this.set(newValue)\n }\n\n get(): T {\n // Track dependency if inside an effect or computed\n const activeEffect = getActiveEffect()\n if (activeEffect) {\n Graph.connect(this, activeEffect)\n }\n return this._value\n }\n\n set(newValue: T): void {\n if (this._value !== newValue) {\n this._value = newValue\n this.version = ++globalVersion\n this.notify()\n }\n }\n\n peek(): T {\n return this._value\n }\n\n notify(): void {\n // Performance: Branch prediction - check most common case first (no batch)\n if (getBatchDepth() === 0) {\n // Automatic microtask batch (most common path)\n if (this.subsHead) {\n // Performance: Schedule immediately on first non-computed subscriber\n let hasScheduled = false\n let link: Link | undefined = this.subsHead\n\n while (link) {\n const sub = link.sub!\n // Performance: Use nodeType instead of instanceof (much faster)\n if (sub.nodeType === NodeType.Computed) {\n sub.execute() // Mark dirty immediately\n } else {\n addToAutoBatch(sub)\n if (!hasScheduled) {\n hasScheduled = true\n scheduleAutoBatch() // Schedule on first non-computed subscriber\n }\n }\n link = link.nextSub\n }\n }\n } else {\n // Manual batch: queue subscribers (less common path)\n let link = this.subsHead\n while (link) {\n if (link.sub) addToBatch(link.sub)\n link = link.nextSub\n }\n }\n }\n}\n\n/**\n * Internal computed node for derived values\n */\nexport class ComputedNode<T> implements ISubscriber, IObservable {\n // Performance: Hot path fields first (CPU cache line optimization)\n version = 0 // Frequently read\n nodeType = NodeType.Computed // Frequently checked\n flags = SubscriberFlags.Dirty | SubscriberFlags.Stale // Frequently checked\n subsHead: Link | undefined // Frequently accessed\n depsHead: Link | undefined // Frequently accessed\n\n // Cold path fields\n private _value!: T\n // Optimization: Track last clean epoch to avoid redundant re-computation\n private lastCleanEpoch = 0\n\n constructor(private computeFn: () => T) { }\n\n /**\n * Compatibility wrapper for legacy .value access\n */\n get value(): T {\n return this.get()\n }\n\n execute(): void {\n // Performance: Inline bit operation instead of function call\n // When a dependency changes, mark as dirty and notify subscribers\n this.flags |= SubscriberFlags.Dirty | SubscriberFlags.Stale\n this.notify()\n }\n\n private _updateIfDirty(): void {\n // Performance: Inline flag checks for better branch prediction\n // 1. If not dirty and not stale, we are valid (most common case)\n // Note: This check is now done in peek()/get() for fast path, but kept here for safety\n const flags = this.flags\n const dirtyOrStale = flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)\n if (dirtyOrStale === 0) {\n return\n }\n\n // 2. If Stale but not Dirty, check dependencies\n // Performance: Single bit check instead of two function calls\n if ((flags & SubscriberFlags.Dirty) === 0 && (flags & SubscriberFlags.Stale) !== 0) {\n if (!this._needsRefetch()) {\n this.flags &= ~SubscriberFlags.Stale\n return\n }\n }\n\n // 3. Must re-compute\n // Performance: Single bit operation instead of function call\n this.flags &= ~(SubscriberFlags.Dirty | SubscriberFlags.Stale)\n\n // Clear previous dependencies via Graph helper\n Graph.disconnectDependencies(this)\n\n const prevEffect = getActiveEffect()\n // const prevOwner = getOwner() // Not used\n setActiveEffect(this)\n\n try {\n const newValue = this.computeFn()\n if (this._value !== newValue) {\n this._value = newValue\n this.version = ++globalVersion\n }\n this.lastCleanEpoch = globalVersion\n } finally {\n setActiveEffect(prevEffect)\n }\n\n // Actually, we need to import setActiveEffect at the top of the file\n // activeEffect = this -> setActiveEffect(this)\n // activeEffect = prevEffect -> setActiveEffect(prevEffect)\n // But since I am generating this chunk, let me check imports again.\n // I added getActiveEffect to imports. I need setActiveEffect too.\n\n // REVISING CHUNK content below to use imported function properly.\n // note: I must add setActiveEffect to imports in the first chunk.\n\n\n // For this specific Chunk:\n // We will use a hack here or I should update the first chunk to include setActiveEffect.\n // I'll update the first chunk in this tool call to include setActiveEffect.\n\n // import { setActiveEffect } from './owner'\n // ...\n // setActiveEffect(this)\n // ...\n // setActiveEffect(prevEffect)\n }\n\n private _needsRefetch(): boolean {\n if (!this.depsHead) return true;\n\n // Iterate dependencies via linked list\n let link: Link | undefined = this.depsHead\n while (link) {\n const dep = link.dep!\n\n // Performance: Check version first (fastest check, avoids type check for most cases)\n if (dep.version > this.lastCleanEpoch) {\n return true\n }\n\n // Performance: Use nodeType instead of instanceof\n // Only check computed dependencies if version check passed (less common case)\n if (dep.nodeType === NodeType.Computed) {\n const computedDep = dep as ComputedNode<unknown>\n\n // Performance: Check if dirty/stale before calling peek() (peek() may trigger computation)\n // Only call peek() if actually needs update\n const flags = computedDep.flags\n const isDirtyOrStale = (flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)) !== 0\n\n if (isDirtyOrStale) {\n // Performance: Track version before peek() to detect if it actually updated\n const oldVersion = computedDep.version\n computedDep.peek()\n // Only check version again if peek() actually updated it (version changed)\n // This avoids redundant comparison when peek() didn't change anything\n if (computedDep.version !== oldVersion && computedDep.version > this.lastCleanEpoch) {\n return true\n }\n }\n }\n link = link.nextDep\n }\n return false\n }\n\n get(): T {\n // Track dependency if inside an effect or computed\n const activeEffect = getActiveEffect()\n if (activeEffect && activeEffect !== this) {\n Graph.connect(this, activeEffect)\n }\n\n // Performance: Fast path - check if update needed before calling _updateIfDirty\n const flags = this.flags\n const dirtyOrStale = flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)\n if (dirtyOrStale !== 0) {\n this._updateIfDirty()\n }\n return this._value\n }\n\n peek(): T {\n // Performance: Fast path - check if update needed before calling _updateIfDirty\n const flags = this.flags\n const dirtyOrStale = flags & (SubscriberFlags.Dirty | SubscriberFlags.Stale)\n if (dirtyOrStale !== 0) {\n this._updateIfDirty()\n }\n return this._value\n }\n\n notify(): void {\n // Performance: Branch prediction - check most common case first (no batch)\n if (getBatchDepth() === 0) {\n // Automatic microtask batch (most common path)\n if (this.subsHead) {\n let shouldSchedule = false\n let link: Link | undefined = this.subsHead\n\n while (link) {\n const sub = link.sub!\n // Performance: Use nodeType instead of instanceof (much faster)\n if (sub.nodeType === NodeType.Computed) {\n sub.execute()\n } else {\n addToAutoBatch(sub)\n shouldSchedule = true\n }\n link = link.nextSub\n }\n\n if (shouldSchedule) {\n scheduleAutoBatch()\n }\n }\n } else {\n // Manual batch (less common path)\n let link = this.subsHead\n while (link) {\n if (link.sub) addToBatch(link.sub)\n link = link.nextSub\n }\n }\n }\n}\n\n\n\n\n\n\n\n/**\n * Creates a side effect that runs when dependencies change\n *\n * @param fn - Effect function, can return a cleanup function\n * @param options - Optional error handler\n * @returns Dispose function to stop the effect\n *\n * @example\n * ```ts\n * const [count, setCount] = state(0);\n * \n * const dispose = effect(() => {\n * console.log('Count:', count());\n * return () => console.log('Cleanup');\n * });\n * ```\n */\n\n\n/**\n * Creates a root scope for effects\n * All effects created within the scope can be disposed together\n *\n * @param fn - Function that creates effects\n * @returns Dispose function for all effects in the scope\n */\n\n\n/**\n * Symbol to mark signals for detection\n * @internal\n */\nconst SIGNAL_MARKER = Symbol('flexium.signal')\n\n/**\n * Check if a value is a signal\n * @internal Use state() which handles all reactive patterns\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isSignal(value: unknown): value is SignalNode<any> | ComputedNode<any> {\n return value instanceof SignalNode || value instanceof ComputedNode\n}\n\n/**\n * Registers a cleanup function that runs before the current effect re-runs or is disposed\n *\n * @param fn - Cleanup function\n */\nexport function onCleanup(fn: () => void): void {\n const activeEffect = getActiveEffect()\n // Performance: Use nodeType instead of instanceof\n if (activeEffect && activeEffect.nodeType === NodeType.Effect) {\n (activeEffect as EffectNode).cleanups.push(fn)\n } else {\n logWarning(ErrorCodes.CLEANUP_OUTSIDE_EFFECT)\n }\n}\n\n/**\n * Resource interface for async data\n */\nexport interface Resource<T> extends Signal<T | undefined> {\n loading: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error: any\n state: 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored'\n latest: T | undefined\n}\n\n/**\n * Creates a resource for handling async data\n * @internal Use state(async () => ...) instead which returns [data, refetch, status, error]\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createResource<T, S = any>(\n source: S | Signal<S> | (() => S),\n fetcher: (\n source: S,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { value, refetching }: { value: T | undefined; refetching: any }\n ) => Promise<T>\n): [Resource<T>, { mutate: (v: T | undefined) => void; refetch: () => void }] {\n const value = new SignalNode<T | undefined>(undefined)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const error = new SignalNode<any>(undefined)\n const loading = new SignalNode<boolean>(false)\n const state = new SignalNode<\n 'unresolved' | 'pending' | 'ready' | 'refreshing' | 'errored'\n >('unresolved')\n\n const load = async (currentSource: S, refetching = false) => {\n if (refetching) {\n state.set('refreshing')\n loading.set(true)\n } else {\n state.set('pending')\n loading.set(true)\n }\n error.set(undefined)\n\n // Track the current promise to avoid race conditions\n // We use a local variable instead of a shared 'lastPromise'\n // because we only care about the latest execution within this closure scope\n // if we needed to support cancellation, we'd need more.\n // Actually, for race conditions we DO need to track the active promise ID or similar.\n // Let's use a simpler counter approach or just compare promise references if we kept track.\n // But since we are removing 'lastPromise' which was used for throwing, \n // we still need to handle race conditions (late resolve).\n\n // Re-introducing a local tracking mechanism just for race conditions\n const currentPromise = fetcher(currentSource, { value: value.peek(), refetching })\n // We need to store this on the closure to compare\n latestPromise = currentPromise\n\n try {\n const result = await currentPromise\n if (latestPromise === currentPromise) {\n value.set(result)\n state.set('ready')\n loading.set(false)\n }\n } catch (err) {\n if (latestPromise === currentPromise) {\n error.set(err)\n state.set('errored')\n loading.set(false)\n }\n }\n }\n\n let latestPromise: Promise<T> | null = null\n\n /*\n * Helper to get current source value\n */\n const getSource = () => {\n if (typeof source === 'function') {\n // Check if it's a SignalNode/ComputedNode\n if (isSignal(source)) {\n return source.get()\n }\n // It's a plain function\n return (source as () => S)()\n }\n // It's a static value (or SignalNode passed as value if generic S allows)\n // If S is SignalNode, then isSignal(source) is true.\n if (isSignal(source)) {\n return source.get()\n }\n return source\n }\n\n // Track source changes\n effect(() => {\n const currentSource = getSource()\n load(currentSource, false)\n })\n\n // Create the resource object (read-only signal interface)\n const resource = function () {\n return value.get()\n } as Resource<T>\n\n Object.defineProperties(resource, {\n value: { get: () => value.get() },\n loading: { get: () => loading.get() },\n error: { get: () => error.get() },\n state: { get: () => state.get() },\n latest: { get: () => value.peek() },\n peek: { value: () => value.peek() },\n // no set exposed on resource object\n })\n // Mark as signal/node for detection if needed, or just let it be a function-signal\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (resource as any)[SIGNAL_MARKER] = true\n\n const actions = {\n mutate: (v: T | undefined) => value.set(v),\n refetch: () => {\n const currentSource = getSource()\n load(currentSource, true)\n },\n }\n\n return [resource, actions]\n}\n\n\n"]}
@@ -1,3 +0,0 @@
1
- import {c as c$2}from'./chunk-HLPVL6EK.mjs';import {d,e,b as b$2,c as c$1,a as a$1}from'./chunk-7Q4UE442.mjs';import {c}from'./chunk-WVEJT7HD.mjs';import {f,g,d as d$1}from'./chunk-B7VP6HBY.mjs';import {k,b as b$1,a,i}from'./chunk-Q7WT5IIF.mjs';var Ne=new Set,xe=new Set(["focus","blur","mouseenter","mouseleave","load","unload","scroll"]),X=new WeakMap;function we(e){let t=e.type.toLowerCase(),n=!xe.has(t),o=e.composedPath?.()||[],r=e.target;if(o.length===0&&r)for(;r;)o.push(r),r=r.parentNode;for(let i of o){let s=i;if(s===document||!s)break;let p=X.get(s);if(p?.has(t)){let l=p.get(t);if(l){try{l(e);}catch(d){b$1(a.EVENT_HANDLER_FAILED,{eventType:t},d);}if(e.cancelBubble)return}}if(!n)break}}function Re(e){if(!(typeof document>"u")&&!Ne.has(e)){let t=xe.has(e);document.addEventListener(e,we,{capture:t}),Ne.add(e);}}var re={on(e,t,n){let o=t.toLowerCase(),r=X.get(e);r||(r=new Map,X.set(e,r)),r.set(o,n),Re(o);},off(e,t){let n=t.toLowerCase(),o=X.get(e);o&&o.delete(n);}};var Z={width:{cssProp:"width",transform:"px"},height:{cssProp:"height",transform:"px"},flexDirection:{cssProp:"flexDirection",transform:"none"},justifyContent:{cssProp:"justifyContent",transform:"none"},alignItems:{cssProp:"alignItems",transform:"none"},alignSelf:{cssProp:"alignSelf",transform:"none"},flexWrap:{cssProp:"flexWrap",transform:"none"},flex:{cssProp:"flex",transform:"string"},gap:{cssProp:"gap",transform:"px"},justify:{cssProp:"justifyContent",transform:"none"},align:{cssProp:"alignItems",transform:"none"},bg:{cssProp:"backgroundColor",transform:"none"},color:{cssProp:"color",transform:"none"},borderRadius:{cssProp:"borderRadius",transform:"px"},borderWidth:{cssProp:"borderWidth",transform:"px",sideEffect:(e,t)=>{t!==void 0&&e.borderStyle!=="solid"&&(e.borderStyle="solid");}},borderColor:{cssProp:"borderColor",transform:"none"},opacity:{cssProp:"opacity",transform:"string"},fontSize:{cssProp:"fontSize",transform:"px"},fontWeight:{cssProp:"fontWeight",transform:"string"},fontFamily:{cssProp:"fontFamily",transform:"none"},lineHeight:{cssProp:"lineHeight",transform:"string"},textAlign:{cssProp:"textAlign",transform:"none"},padding:{cssProp:"padding",transform:"px"},paddingTop:{cssProp:"paddingTop",transform:"px"},paddingRight:{cssProp:"paddingRight",transform:"px"},paddingBottom:{cssProp:"paddingBottom",transform:"px"},paddingLeft:{cssProp:"paddingLeft",transform:"px"},margin:{cssProp:"margin",transform:"px"},marginTop:{cssProp:"marginTop",transform:"px"},marginRight:{cssProp:"marginRight",transform:"px"},marginBottom:{cssProp:"marginBottom",transform:"px"},marginLeft:{cssProp:"marginLeft",transform:"px"}},Ce={Row:"div",Column:"div",Stack:"div",Text:"span",Button:"button",Input:"input",Container:"div"},q={onPress:"click",onHover:"mouseenter",onChange:"input",onFocus:"focus",onBlur:"blur"},be=new Set(["children","key","ref","className","style","width","height","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","gap","flex","flexDirection","flexWrap","justifyContent","alignItems","alignSelf","align","justify","bg","color","borderRadius","borderWidth","borderColor","opacity","fontSize","fontWeight","fontFamily","lineHeight","textAlign"]),_e="http://www.w3.org/2000/svg",Fe=new Set(["svg","path","circle","rect","line","polyline","polygon","ellipse","g","text","tspan","defs","use","symbol","marker","linearGradient","radialGradient","stop","clipPath","pattern","mask","filter"]),Me={viewBox:"viewBox",preserveAspectRatio:"preserveAspectRatio",strokeWidth:"stroke-width",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",fillOpacity:"fill-opacity",strokeOpacity:"stroke-opacity",stopColor:"stop-color",stopOpacity:"stop-opacity",clipPath:"clip-path",markerEnd:"marker-end",markerStart:"marker-start",markerMid:"marker-mid"};function Pe(e){return typeof e=="number"?`${e}px`:e}var ve=new Map;function Se(e){let t=ve.get(e);return t===void 0&&(t=e.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`),ve.set(e,t)),t}function De(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ie(e,t){if(e!=null)switch(t){case "px":return Pe(e);case "string":return String(e);case "none":default:return e}}function He(e,t,n){let o=e.style,r=t.style,i=n.style;if(r!==i){if(r&&typeof r=="object")for(let d in r)(!i||!(d in i))&&o.setProperty(Se(d),"");if(i&&typeof i=="object")for(let d in i){let f=i[d];(!r||r[d]!==f)&&o.setProperty(Se(d),f);}}let s=e.getAttribute("data-flexium-type");(n.flexDirection||n.justifyContent||n.alignItems||n.flexWrap||n.gap!==void 0||n.justify||n.align||s==="Row"||s==="Column"||s==="Stack")&&(o.display!=="flex"&&(o.display="flex"),s==="Row"&&o.flexDirection!=="row"&&(o.flexDirection="row"),s==="Column"&&o.flexDirection!=="column"&&(o.flexDirection="column"));let l=o;for(let d in t)if(d in Z&&!(d in n)){let f=Z[d],m=f.cssProp,a=l[m];a!==void 0&&a!==""&&(l[m]=""),f.sideEffect&&f.sideEffect(o,void 0);}for(let d in n)if(d in Z){let f=t[d],m=n[d];if(f===m)continue;let a=Z[d],c=Ie(m,a.transform),u=a.cssProp,N=l[u];c===void 0?N!==void 0&&N!==""&&(l[u]=""):N!==c&&(l[u]=c),a.sideEffect&&a.sideEffect(o,c);}}function Ee(e){if(typeof e=="string")return e;if(Array.isArray(e)){let t="";for(let n=0;n<e.length;n++){let o=e[n];if(!o)continue;let r=typeof o=="string"?o:Ee(o);r&&(t=t?`${t} ${r}`:r);}return t}if(typeof e=="object"&&e!==null){let t="";for(let n in e)e[n]&&(t=t?`${t} ${n}`:n);return t}return ""}var ie=class{createNode(t,n){let o=Ce[t]??t,r;return Fe.has(o)?r=document.createElementNS(_e,o):r=document.createElement(o),Ce[t]&&r.setAttribute("data-flexium-type",t),this.updateNode(r,{},n),r}updateNode(t,n,o){if(o.className!==n.className){let i=Ee(o.className);t instanceof SVGElement?t.setAttribute("class",i):t.className=i;}He(t,n,o);for(let i in n)if(!(i in o)){if(typeof i=="symbol")continue;if(i.startsWith("on")){let s=q[i]||i.slice(2).toLowerCase();this.removeEventListener(t,s,n[i]);}else be.has(i)||t.removeAttribute(i);}let r=Reflect.ownKeys(o);for(let i of r){if(typeof i=="symbol")continue;let s=i,p=o[s],l=n[s];if(p!==l){if(s.startsWith("on")){let d=q[s]||s.slice(2).toLowerCase();l&&this.removeEventListener(t,d,l),p&&this.addEventListener(t,d,p);}else if(!be.has(s))if(p==null||p===false)t.removeAttribute(s);else if(p===true)t.setAttribute(s,"");else {let d=Me[s]||s;t.setAttribute(d,De(String(p)));}}}}appendChild(t,n){t.appendChild(n);}insertBefore(t,n,o){t.insertBefore(n,o);}nextSibling(t){return t.nextSibling}removeChild(t,n){t.removeChild(n);}createTextNode(t){return document.createTextNode(t)}updateTextNode(t,n){t.textContent=n;}addEventListener(t,n,o){let r=q[n]||n;re.on(t,r,o);}removeEventListener(t,n,o){let r=q[n]||n;re.off(t,r);}},C=new ie;var se=Symbol("flexium.list");function de(e){return e!==null&&typeof e=="object"&&se in e&&e[se]===true}function Oe(e,t){return typeof e=="number"?e:e.mode==="fixed"?e.itemHeight:e.estimatedItemHeight}function Be(e,t,n,o,r){let i=o*n;if(o===0)return {startIndex:0,endIndex:-1,totalHeight:0};let s=Math.floor(e/n),p=Math.ceil(t/n),l=s+p;return {startIndex:Math.max(0,s-r),endIndex:Math.min(o-1,l+r),totalHeight:i}}function ce(e,t,n,o){return e.virtual?$e(e,t,n,o):Ve(e,t,n,o)}function Ve(e,t,n,o){let{each:r,renderItem:i,getKey:s,class:p,style:l}=e,d=document.createElement("div");d.setAttribute("role","list"),p&&(d.className=p),l&&Object.entries(l).forEach(([c,u])=>{d.style[c]=typeof u=="number"?`${u}px`:u;}),t.appendChild(d);let f=new Map,m=(c,u)=>s?s(c,u):u,a=k(()=>{let c=r()||[],u=new Set;c.forEach((N,h)=>{let x=m(N,h);if(u.add(x),!f.has(x)){let L=new d$1(h),y=i(N,()=>L.get()),g=n(y);g&&g instanceof HTMLElement&&(g.setAttribute("role","listitem"),d.appendChild(g),f.set(x,{node:g,dispose:()=>{try{o(g);}catch{}}}));}});for(let[N,h]of f)u.has(N)||(h.dispose(),h.node.parentNode===d&&d.removeChild(h.node),f.delete(N));});return ()=>{a();for(let c of f.values())c.dispose();f.clear(),d.parentNode===t&&t.removeChild(d);}}function $e(e,t,n,o){let{each:r,renderItem:i,height:s,width:p,itemSize:l,overscan:d,getKey:f,onScroll:m,onVisibleRangeChange:a}=e;if(!s||!l)return console.warn("List: height and itemSize are required when virtual is true"),()=>{};let c=document.createElement("div");c.style.height=typeof s=="number"?`${s}px`:s,c.style.width=p?typeof p=="number"?`${p}px`:p:"100%",c.style.overflow="auto",c.style.position="relative",c.setAttribute("role","list"),c.setAttribute("tabindex","0");let u=document.createElement("div");u.style.position="relative",u.style.width="100%";let N=new d$1(0),h=new Map,x=-1,L=-1,y=()=>{N.set(c.scrollTop),m?.(c.scrollTop);};c.addEventListener("scroll",y,{passive:true});let g=(w,M)=>f?f(w,M):M,E=k(()=>{let w=r()||[],M=N.get(),j=c.clientHeight||parseFloat(String(s)),P=Oe(l),{startIndex:K,endIndex:z,totalHeight:ke}=Be(M,j,P,w.length,d);u.style.height=`${ke}px`,c.setAttribute("aria-rowcount",String(w.length)),(K!==x||z!==L)&&(a?.(K,z),x=K,L=z);let fe=new Set;for(let v=K;v<=z&&v<w.length;v++){let R=w[v],O=g(R,v);fe.add(O);let I=h.get(O),te=h.get(O)?.state;if(te?te.set(R):te=new d$1(R),I){I.indexSig.peek()!==v&&I.indexSig.set(v);let B=I.node;B.style.transform=`translateY(${v*P}px)`,B.setAttribute("aria-rowindex",String(v+1));}else {let B=new d$1(v),Ae=i(R,()=>B.get()),T=n(Ae);T&&T instanceof HTMLElement&&(T.style.position="absolute",T.style.top="0",T.style.left="0",T.style.right="0",T.style.transform=`translateY(${v*P}px)`,T.style.height=`${P}px`,T.style.boxSizing="border-box",T.setAttribute("role","listitem"),T.setAttribute("aria-rowindex",String(v+1)),u.appendChild(T),I={item:R,key:O,node:T,indexSig:B,dispose:()=>{try{o(T);}catch{}}},h.set(O,I));}}for(let[v,R]of h)fe.has(v)||(R.dispose(),R.node.parentNode===u&&u.removeChild(R.node),h.delete(v));});return ()=>{E(),c.removeEventListener("scroll",y);for(let w of h.values())w.dispose();h.clear(),c.parentNode===t&&t.removeChild(c);}}var Te=new WeakMap;function A(e){return Te.get(e)}function D(e,t){Te.set(e,t);}var G;(s=>{let e=[],t=[];function o(){if(e.length>0){let p=e.pop();return p.clear(),p}return new Map}s.getMap=o;function r(){if(t.length>0){let p=t.pop();return p.clear(),p}return new Set}s.getSet=r;function i(p,l){e.length<10&&e.push(p),t.length<10&&t.push(l);}s.release=i;})(G||(G={}));function Y(e,t,n,o){let r=t&&t.length>0,i=n&&n.length>0;if(!r&&!i)return;if(!i){for(let a of t){let c=a&&A(a);c&&(S(c),C.removeChild(e,c));}return}if(!r){let a=document.createDocumentFragment();for(let c of n){let u=b(c,void 0);u&&(D(c,u),a.appendChild(u));}o?e.insertBefore(a,o):e.appendChild(a);return}let s=t.length,p=n.length,l=5;if(s<=l&&p<=l){let a=0,c=0,u=e.firstChild;for(;a<s||c<p;){if(c>=p){for(;a<s;){let y=t[a++],g=y&&A(y);g&&(S(g),C.removeChild(e,g));}break}if(a>=s){let y=document.createDocumentFragment();for(;c<p;){let g=n[c++],E=b(g,void 0);E&&(D(g,E),y.appendChild(E));}o?e.insertBefore(y,o):e.appendChild(y);break}let N=t[a],h=n[c],x=N.key??`__idx_${a}_${N.type}`,L=h.key??`__idx_${c}_${h.type}`;if(x===L&&N.type===h.type)le(N,h),u=u?.nextSibling||null,a++,c++;else {let y=false;for(let g=a+1;g<s;g++){let E=t[g];if((E.key??`__idx_${g}_${E.type}`)===L&&E.type===h.type){for(let M=a;M<g;M++){let j=t[M],P=j&&A(j);P&&(S(P),C.removeChild(e,P));}le(E,h),a=g+1,c++,y=true;break}}if(!y){let g=b(h,void 0);g&&(D(h,g),e.insertBefore(g,u)),c++;}}}return}let d=G.getMap(),f=G.getSet();for(let a=0;a<s;a++){let c=t[a],u=c.key??`__idx_${a}_${c.type}`;d.set(u,c);}let m=e.firstChild;for(let a=0;a<n.length;a++){let c=n[a],u=c.key??`__idx_${a}_${c.type}`;f.add(u);let N=d.get(u),h=m;if(!N||N.type!==c.type){let x=b(c,void 0);x&&(D(c,x),e.insertBefore(x,h));}else {le(N,c);let x=A(c);x&&(m!==x?e.insertBefore(x,h):m=m?.nextSibling||null);}}for(let[a,c]of d){let u=A(c);!f.has(a)&&u&&(S(u),u.parentNode===e&&C.removeChild(e,u));}G.release(d,f);}function le(e,t){let n=A(e);if(!n||(D(t,n),typeof t.type!="string"))return;C.updateNode(n,e.props,t.props);let o=e.children||[],r=t.children||[];if(!(o.length===0&&r.length===0)){if(r.length===1&&(typeof r[0]=="string"||typeof r[0]=="number")&&n.firstChild?.nodeType===Node.TEXT_NODE&&n.childNodes.length===1){let i=String(r[0]);String(o[0])!==i&&C.updateTextNode(n.firstChild,i);return}Y(n,o,r,null);}}var W=new WeakMap,J=new Set,ae=false;function ee(e){J.add(e),ae||(ae=true,requestAnimationFrame(()=>{Ge();}));}function Ge(){if(ae=false,J.size===0)return;let e=Array.from(J);J.clear();for(let t=0;t<e.length;t++)e[t]();}function H(e,t){let n=W.get(e);n||(n=new Set,W.set(e,n)),n.add(t);}function b(e$1,t){if(e$1==null||typeof e$1=="boolean")return null;if(de(e$1)){let n=t||document.createDocumentFragment(),o=ce(e$1,n,i=>b(i),S),r=document.createTextNode("");return H(r,o),t?n.firstChild:n}if(d(e$1)){let n=e(e$1);if(n){let o=document.createTextNode(""),r=t||document.createDocumentFragment();C.appendChild(r,o);let i=o,s=k(()=>{let p=n.get(),l=o.parentNode;if(l)if((typeof p=="string"||typeof p=="number")&&i&&i.nodeType===Node.TEXT_NODE&&i!==o){let d=i,f=String(p);ee(()=>{C.updateTextNode(d,f);});}else {let d=b(p);if(d)if(i&&i!==o)if(i.parentNode===l)if(i.nodeType===Node.TEXT_NODE&&d.nodeType===Node.TEXT_NODE){let f=i,m=d.textContent||"";ee(()=>{C.updateTextNode(f,m);});}else l.replaceChild(d,i),i=d;else l.insertBefore(d,o.nextSibling),i=d;else l.insertBefore(d,o.nextSibling),i=d;else {if(i&&i!==o&&i.parentNode===l)try{l.removeChild(i);}catch(f){b$1(a.DOM_CLEANUP_FAILED,{operation:"removeChild"},f);}i=o;}}});return H(o,s),t?o:r}}if(f(e$1)||typeof e$1=="function"){let n=document.createTextNode(""),o=t||document.createDocumentFragment();C.appendChild(o,n);let r=[],i=null,s=[],p=k(()=>{let l=f(e$1)?e$1.get():e$1(),d=n.parentNode;if(d){if(Array.isArray(l)){let f=l.filter(m=>m!=null);if(s.length>0){let m=n.nextSibling;Y(d,s,f,m);}else {for(let a$1 of r)if(S(a$1),a$1.parentNode===d)try{d.removeChild(a$1);}catch(c){b$1(a.DOM_CLEANUP_FAILED,{operation:"removeChild"},c);}r=[];let m=document.createDocumentFragment();for(let a of f){let c=b(a,m);c&&typeof a=="object"&&D(a,c);}r=Array.from(m.childNodes),d.insertBefore(m,n.nextSibling);}s=f,i=l;return}if(s.length>0){for(let f of s){let m=A(f);if(m&&m.parentNode===d){S(m);try{d.removeChild(m);}catch(a$1){b$1(a.DOM_CLEANUP_FAILED,{operation:"removeChild"},a$1);}}}s=[];}if(l!==i){for(let f of r)if(S(f),f.parentNode===d)try{d.removeChild(f);}catch(m){b$1(a.DOM_CLEANUP_FAILED,{operation:"removeChild"},m);}if(r=[],typeof l=="string"||typeof l=="number"){let f=C.createTextNode(String(l));d.insertBefore(f,n.nextSibling),r=[f];}else {let f=b(l);f&&(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE?(r=Array.from(f.childNodes),d.insertBefore(f,n.nextSibling)):(d.insertBefore(f,n.nextSibling),r=[f]));}i=l;}}});return H(n,p),t?n:o}if(Array.isArray(e$1)){let n=document.createDocumentFragment();for(let o of e$1)b(o,n);return t&&C.appendChild(t,n),n}if(typeof e$1=="string"||typeof e$1=="number"){let n=C.createTextNode(String(e$1));return t&&C.appendChild(t,n),n}if(c(e$1)){if(typeof e$1.type=="function"){let i$1=e$1.type,s=document.createTextNode(""),p=t||document.createDocumentFragment();C.appendChild(p,s);let l=[],d=[],f=b$2(),m=k(()=>{c$1(f),i(a$2=>{g(a$2);let c$1=i$1._contextId;c$1&&c$2(c$1,e$1.props.value);let u;try{a$1(f);let y=e$1.children!==void 0?{...e$1.props,children:e$1.children}:e$1.props;u=i$1(y);}finally{a$1(null);}if(Array.isArray(u)&&u.every(y=>c(y)&&y.type!=="fragment")){let y=s.parentNode;if(y){let g=u;Y(y,d,g,s.nextSibling),d=g,l=g.map(E=>A(E)).filter(E=>E!=null);return}}let x=s.parentNode;if(x){for(let y of l)if(S(y),y.parentNode===x)try{x.removeChild(y);}catch(g){b$1(a.DOM_CLEANUP_FAILED,{operation:"removeChild"},g);}}l=[],d=[];let L=document.createDocumentFragment();b(u,L),x&&(l=Array.from(L.childNodes),x.insertBefore(L,s.nextSibling));});});return H(s,m),t?s:p}if(e$1.type==="fragment"){let i=document.createDocumentFragment();for(let s of e$1.children)b(s,i);return t&&C.appendChild(t,i),i}let n=C.createNode(e$1.type,e$1.props),o=We(n,e$1.props);o.length>0&&W.set(n,new Set(o));for(let i of e$1.children)b(i,n);t&&C.appendChild(t,n);let r=e$1.props.ref;return r&&(typeof r=="function"?(r(n),H(n,()=>{r(null);})):typeof r=="object"&&"current"in r&&(r.current=n,H(n,()=>{r.current=null;}))),n}return null}var Q=Symbol("uninitialized");function We(e,t){let n=[],o=[];for(let r in t){if(r.startsWith("on"))continue;let i=t[r];(f(i)||typeof i=="function")&&o.push([r,i]);}for(let[r,i]of o)if(f(i)){let s=Q,p=k(()=>{let l=i.get();if(l!==s){let d=s===Q?void 0:s;ee(()=>{C.updateNode(e,{[r]:d},{[r]:l});}),s=l;}});n.push(p);}else {let s=Q,p=k(()=>{try{let l=i();if(l!==s){let d=s===Q?void 0:s;ee(()=>{C.updateNode(e,{[r]:d},{[r]:l});}),s=l;}}catch(l){b$1(a.DOM_CLEANUP_FAILED,{operation:"updateNode",prop:r},l);}});n.push(p);}return n}function S(e){let t=W.get(e);if(t&&(t.forEach(n=>n()),W.delete(e)),e.childNodes&&e.childNodes.length>0){let n=Array.from(e.childNodes);for(let o of n)S(o);}}function Le(e){let t=null,n=null,o=null;return {render(r){let i=o===r;!i&&n&&(S(n),e.childNodes.length===1?e.removeChild(n):e.innerHTML="",n=null),t&&(t(),t=null),t=k(()=>{!i&&e.firstChild&&(e.childNodes.length===1?e.removeChild(e.firstChild):e.innerHTML=""),n=b(r,e),o=r;});},unmount(){t&&(t(),t=null),S(e),e.childNodes.length===1?e.removeChild(e.firstChild):e.innerHTML="",n=null,o=null;}}}function xt(e,t){return t.innerHTML="",b(e,t)}function Ct(e){return Le(e)}function Et(e){if(typeof document>"u")return null;let t=e.mount||document.body,n=document.createComment("portal"),o=null;return o=b(e.children,t),g(()=>{o&&(S(o),o.parentNode===t&&t.removeChild(o));}),n}
2
- export{ie as a,C as b,se as c,de as d,b as e,Le as f,xt as g,Ct as h,Et as i};//# sourceMappingURL=chunk-6K44QCMT.mjs.map
3
- //# sourceMappingURL=chunk-6K44QCMT.mjs.map