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
package/README.md CHANGED
@@ -138,18 +138,18 @@ Use native JavaScript for control flow - no special components needed:
138
138
 
139
139
  ```tsx
140
140
  // Conditional rendering
141
- {isLoggedIn ? <Dashboard /> : <Login />}
141
+ {isLoggedIn() ? <Dashboard /> : <Login />}
142
142
 
143
143
  // Short-circuit for simple conditions
144
- {isAdmin && <AdminPanel />}
144
+ {isAdmin() && <AdminPanel />}
145
145
 
146
146
  // List rendering with optimized reconciliation
147
147
  {items.map(item => <Item key={item.id} data={item} />)}
148
148
 
149
149
  // Pattern matching with ternary chains
150
- {status === 'loading' ? <Loading /> :
151
- status === 'error' ? <Error /> :
152
- status === 'success' ? <Success /> :
150
+ {status() === 'loading' ? <Loading /> :
151
+ status() === 'error' ? <Error /> :
152
+ status() === 'success' ? <Success /> :
153
153
  <Default />}
154
154
  ```
155
155
 
@@ -1,4 +1,4 @@
1
- import { a as Signal } from './signal-C6936A3J.js';
1
+ import { S as StateValue } from './state-DitsMyev.cjs';
2
2
 
3
3
  /**
4
4
  * Core Flexium types
@@ -149,46 +149,46 @@ interface CanvasProps {
149
149
  * Rectangle drawing props
150
150
  */
151
151
  interface DrawRectProps {
152
- x: number | Signal<number>;
153
- y: number | Signal<number>;
154
- width: number | Signal<number>;
155
- height: number | Signal<number>;
156
- fill?: string | Signal<string>;
157
- stroke?: string | Signal<string>;
158
- strokeWidth?: number | Signal<number>;
159
- opacity?: number | Signal<number>;
152
+ x: number | StateValue<number>;
153
+ y: number | StateValue<number>;
154
+ width: number | StateValue<number>;
155
+ height: number | StateValue<number>;
156
+ fill?: string | StateValue<string>;
157
+ stroke?: string | StateValue<string>;
158
+ strokeWidth?: number | StateValue<number>;
159
+ opacity?: number | StateValue<number>;
160
160
  }
161
161
  /**
162
162
  * Circle drawing props
163
163
  */
164
164
  interface DrawCircleProps {
165
- x: number | Signal<number>;
166
- y: number | Signal<number>;
167
- radius: number | Signal<number>;
168
- fill?: string | Signal<string>;
169
- stroke?: string | Signal<string>;
170
- strokeWidth?: number | Signal<number>;
171
- opacity?: number | Signal<number>;
165
+ x: number | StateValue<number>;
166
+ y: number | StateValue<number>;
167
+ radius: number | StateValue<number>;
168
+ fill?: string | StateValue<string>;
169
+ stroke?: string | StateValue<string>;
170
+ strokeWidth?: number | StateValue<number>;
171
+ opacity?: number | StateValue<number>;
172
172
  }
173
173
  /**
174
174
  * Path drawing props
175
175
  */
176
176
  interface DrawPathProps {
177
- d: string | Signal<string>;
178
- fill?: string | Signal<string>;
179
- stroke?: string | Signal<string>;
180
- strokeWidth?: number | Signal<number>;
181
- opacity?: number | Signal<number>;
177
+ d: string | StateValue<string>;
178
+ fill?: string | StateValue<string>;
179
+ stroke?: string | StateValue<string>;
180
+ strokeWidth?: number | StateValue<number>;
181
+ opacity?: number | StateValue<number>;
182
182
  }
183
183
  /**
184
184
  * Canvas text drawing props
185
185
  */
186
186
  interface DrawTextProps {
187
- x: number | Signal<number>;
188
- y: number | Signal<number>;
189
- text: string | Signal<string>;
190
- fill?: string | Signal<string>;
191
- fontSize?: number | Signal<number>;
187
+ x: number | StateValue<number>;
188
+ y: number | StateValue<number>;
189
+ text: string | StateValue<string>;
190
+ fill?: string | StateValue<string>;
191
+ fontSize?: number | StateValue<number>;
192
192
  fontFamily?: string;
193
193
  fontWeight?: 'normal' | 'bold' | number;
194
194
  textAlign?: 'left' | 'center' | 'right';
@@ -198,28 +198,28 @@ interface DrawTextProps {
198
198
  * Line drawing props
199
199
  */
200
200
  interface DrawLineProps {
201
- x1: number | Signal<number>;
202
- y1: number | Signal<number>;
203
- x2: number | Signal<number>;
204
- y2: number | Signal<number>;
205
- stroke?: string | Signal<string>;
206
- strokeWidth?: number | Signal<number>;
207
- opacity?: number | Signal<number>;
201
+ x1: number | StateValue<number>;
202
+ y1: number | StateValue<number>;
203
+ x2: number | StateValue<number>;
204
+ y2: number | StateValue<number>;
205
+ stroke?: string | StateValue<string>;
206
+ strokeWidth?: number | StateValue<number>;
207
+ opacity?: number | StateValue<number>;
208
208
  }
209
209
  /**
210
210
  * Arc drawing props
211
211
  */
212
212
  interface DrawArcProps {
213
- x: number | Signal<number>;
214
- y: number | Signal<number>;
215
- radius: number | Signal<number>;
216
- startAngle: number | Signal<number>;
217
- endAngle: number | Signal<number>;
213
+ x: number | StateValue<number>;
214
+ y: number | StateValue<number>;
215
+ radius: number | StateValue<number>;
216
+ startAngle: number | StateValue<number>;
217
+ endAngle: number | StateValue<number>;
218
218
  counterclockwise?: boolean;
219
- fill?: string | Signal<string>;
220
- stroke?: string | Signal<string>;
221
- strokeWidth?: number | Signal<number>;
222
- opacity?: number | Signal<number>;
219
+ fill?: string | StateValue<string>;
220
+ stroke?: string | StateValue<string>;
221
+ strokeWidth?: number | StateValue<number>;
222
+ opacity?: number | StateValue<number>;
223
223
  }
224
224
 
225
225
  /**
@@ -1,4 +1,4 @@
1
- import { a as Signal } from './signal-C6936A3J.cjs';
1
+ import { S as StateValue } from './state-DitsMyev.js';
2
2
 
3
3
  /**
4
4
  * Core Flexium types
@@ -149,46 +149,46 @@ interface CanvasProps {
149
149
  * Rectangle drawing props
150
150
  */
151
151
  interface DrawRectProps {
152
- x: number | Signal<number>;
153
- y: number | Signal<number>;
154
- width: number | Signal<number>;
155
- height: number | Signal<number>;
156
- fill?: string | Signal<string>;
157
- stroke?: string | Signal<string>;
158
- strokeWidth?: number | Signal<number>;
159
- opacity?: number | Signal<number>;
152
+ x: number | StateValue<number>;
153
+ y: number | StateValue<number>;
154
+ width: number | StateValue<number>;
155
+ height: number | StateValue<number>;
156
+ fill?: string | StateValue<string>;
157
+ stroke?: string | StateValue<string>;
158
+ strokeWidth?: number | StateValue<number>;
159
+ opacity?: number | StateValue<number>;
160
160
  }
161
161
  /**
162
162
  * Circle drawing props
163
163
  */
164
164
  interface DrawCircleProps {
165
- x: number | Signal<number>;
166
- y: number | Signal<number>;
167
- radius: number | Signal<number>;
168
- fill?: string | Signal<string>;
169
- stroke?: string | Signal<string>;
170
- strokeWidth?: number | Signal<number>;
171
- opacity?: number | Signal<number>;
165
+ x: number | StateValue<number>;
166
+ y: number | StateValue<number>;
167
+ radius: number | StateValue<number>;
168
+ fill?: string | StateValue<string>;
169
+ stroke?: string | StateValue<string>;
170
+ strokeWidth?: number | StateValue<number>;
171
+ opacity?: number | StateValue<number>;
172
172
  }
173
173
  /**
174
174
  * Path drawing props
175
175
  */
176
176
  interface DrawPathProps {
177
- d: string | Signal<string>;
178
- fill?: string | Signal<string>;
179
- stroke?: string | Signal<string>;
180
- strokeWidth?: number | Signal<number>;
181
- opacity?: number | Signal<number>;
177
+ d: string | StateValue<string>;
178
+ fill?: string | StateValue<string>;
179
+ stroke?: string | StateValue<string>;
180
+ strokeWidth?: number | StateValue<number>;
181
+ opacity?: number | StateValue<number>;
182
182
  }
183
183
  /**
184
184
  * Canvas text drawing props
185
185
  */
186
186
  interface DrawTextProps {
187
- x: number | Signal<number>;
188
- y: number | Signal<number>;
189
- text: string | Signal<string>;
190
- fill?: string | Signal<string>;
191
- fontSize?: number | Signal<number>;
187
+ x: number | StateValue<number>;
188
+ y: number | StateValue<number>;
189
+ text: string | StateValue<string>;
190
+ fill?: string | StateValue<string>;
191
+ fontSize?: number | StateValue<number>;
192
192
  fontFamily?: string;
193
193
  fontWeight?: 'normal' | 'bold' | number;
194
194
  textAlign?: 'left' | 'center' | 'right';
@@ -198,28 +198,28 @@ interface DrawTextProps {
198
198
  * Line drawing props
199
199
  */
200
200
  interface DrawLineProps {
201
- x1: number | Signal<number>;
202
- y1: number | Signal<number>;
203
- x2: number | Signal<number>;
204
- y2: number | Signal<number>;
205
- stroke?: string | Signal<string>;
206
- strokeWidth?: number | Signal<number>;
207
- opacity?: number | Signal<number>;
201
+ x1: number | StateValue<number>;
202
+ y1: number | StateValue<number>;
203
+ x2: number | StateValue<number>;
204
+ y2: number | StateValue<number>;
205
+ stroke?: string | StateValue<string>;
206
+ strokeWidth?: number | StateValue<number>;
207
+ opacity?: number | StateValue<number>;
208
208
  }
209
209
  /**
210
210
  * Arc drawing props
211
211
  */
212
212
  interface DrawArcProps {
213
- x: number | Signal<number>;
214
- y: number | Signal<number>;
215
- radius: number | Signal<number>;
216
- startAngle: number | Signal<number>;
217
- endAngle: number | Signal<number>;
213
+ x: number | StateValue<number>;
214
+ y: number | StateValue<number>;
215
+ radius: number | StateValue<number>;
216
+ startAngle: number | StateValue<number>;
217
+ endAngle: number | StateValue<number>;
218
218
  counterclockwise?: boolean;
219
- fill?: string | Signal<string>;
220
- stroke?: string | Signal<string>;
221
- strokeWidth?: number | Signal<number>;
222
- opacity?: number | Signal<number>;
219
+ fill?: string | StateValue<string>;
220
+ stroke?: string | StateValue<string>;
221
+ strokeWidth?: number | StateValue<number>;
222
+ opacity?: number | StateValue<number>;
223
223
  }
224
224
 
225
225
  /**
@@ -1,4 +1,4 @@
1
- export { b as Computed, C as ComputedNode, a as Signal, S as SignalNode } from './signal-C6936A3J.cjs';
1
+ export { S as Computed, S as Signal } from './state-DitsMyev.cjs';
2
2
  export { r as root, u as untrack } from './owner-QS9tPwPr.cjs';
3
3
  export { s as sync } from './sync-Z4QqUDjF.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- export { b as Computed, C as ComputedNode, a as Signal, S as SignalNode } from './signal-C6936A3J.js';
1
+ export { S as Computed, S as Signal } from './state-DitsMyev.js';
2
2
  export { r as root, u as untrack } from './owner-QS9tPwPr.js';
3
3
  export { s as sync } from './sync-Z4QqUDjF.js';
4
4
 
package/dist/advanced.js CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk5236IK5I_js=require('./chunk-5236IK5I.js'),chunkAJT35P3Z_js=require('./chunk-AJT35P3Z.js');var o={enabled:false,signals:new Map,effects:new Map,components:new Map},g=0,b=0;var s=[];function v(){o.enabled=true,chunk5236IK5I_js.c({onSignalCreate:(e,n)=>D(e,n),onSignalUpdate:(e,n)=>E(e,n),onEffectCreate:e=>S(e),onEffectRun:(e,n,t)=>x(e,n,t)}),typeof window<"u"&&(window.__FLEXIUM_DEVTOOLS__={getState:w,getSignals:()=>Array.from(o.signals.values()),getEffects:()=>Array.from(o.effects.values()),getComponents:()=>Array.from(o.components.values()),subscribe:e=>(s.push(e),()=>{let n=s.indexOf(e);n>-1&&s.splice(n,1);})},console.log("%c[Flexium DevTools] Enabled","color: #10b981; font-weight: bold;"));}function T(){o.enabled=false,o.signals.clear(),o.effects.clear(),o.components.clear(),chunk5236IK5I_js.c(null),typeof window<"u"&&delete window.__FLEXIUM_DEVTOOLS__;}function w(){return {...o}}function a(e,n){for(let t of s)try{t(e,n);}catch(r){chunkAJT35P3Z_js.b(chunkAJT35P3Z_js.a.DEVTOOLS_LISTENER_ERROR,{event:e},r);}}function D(e,n){if(!o.enabled)return -1;let t=g++,r=Date.now();return o.signals.set(t,{id:t,name:n,value:e.peek(),subscribers:0,createdAt:r,lastUpdated:r,updateCount:0}),a("signal-create",{id:t,name:n}),t}function E(e,n){if(!o.enabled)return;let t=o.signals.get(e);t&&(t.value=n,t.lastUpdated=Date.now(),t.updateCount++,a("signal-update",{id:e,value:n}));}function S(e){if(!o.enabled)return -1;let n=b++;return o.effects.set(n,{id:n,name:e,dependencies:[],lastRun:Date.now(),runCount:0,status:"idle"}),a("effect-create",{id:n,name:e}),n}function x(e,n,t){if(!o.enabled)return;let r=o.effects.get(e);r&&(r.status=n,r.lastRun=Date.now(),r.runCount++,t&&(r.error=t),a("effect-run",{id:e,status:n,error:t}));}Object.defineProperty(exports,"ComputedNode",{enumerable:true,get:function(){return chunk5236IK5I_js.e}});Object.defineProperty(exports,"SignalNode",{enumerable:true,get:function(){return chunk5236IK5I_js.d}});Object.defineProperty(exports,"sync",{enumerable:true,get:function(){return chunk5236IK5I_js.a}});Object.defineProperty(exports,"root",{enumerable:true,get:function(){return chunkAJT35P3Z_js.i}});Object.defineProperty(exports,"untrack",{enumerable:true,get:function(){return chunkAJT35P3Z_js.g}});exports.disableDevTools=T;exports.enableDevTools=v;//# sourceMappingURL=advanced.js.map
1
+ 'use strict';var chunkYPVRQKMW_js=require('./chunk-YPVRQKMW.js'),chunkGYDP6MFV_js=require('./chunk-GYDP6MFV.js');var o={enabled:false,signals:new Map,effects:new Map,components:new Map};function g(){o.enabled=true,typeof window<"u"&&(window.__FLEXIUM_DEVTOOLS__={getState:T,getSignals:()=>Array.from(o.signals.values()),getEffects:()=>Array.from(o.effects.values()),getComponents:()=>Array.from(o.components.values()),subscribe:e=>(()=>{})},console.log("%c[Flexium DevTools] Enabled","color: #10b981; font-weight: bold;"));}function v(){o.enabled=false,o.signals.clear(),o.effects.clear(),o.components.clear(),typeof window<"u"&&delete window.__FLEXIUM_DEVTOOLS__;}function T(){return {...o}}Object.defineProperty(exports,"sync",{enumerable:true,get:function(){return chunkYPVRQKMW_js.e}});Object.defineProperty(exports,"root",{enumerable:true,get:function(){return chunkGYDP6MFV_js.i}});Object.defineProperty(exports,"untrack",{enumerable:true,get:function(){return chunkGYDP6MFV_js.f}});exports.disableDevTools=v;exports.enableDevTools=g;//# sourceMappingURL=advanced.js.map
2
2
  //# sourceMappingURL=advanced.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/devtools/index.ts"],"names":["devToolsState","signalIdCounter","effectIdCounter","listeners","enableDevTools","setDevToolsHooks","signal","name","registerSignal","id","value","updateSignalInfo","registerEffect","status","error","updateEffectInfo","getDevToolsState","listener","index","disableDevTools","emit","event","data","e","logError","ErrorCodes","now","info"],"mappings":"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","file":"advanced.js","sourcesContent":["/**\n * Flexium DevTools Integration\n *\n * Provides hooks for browser devtools extension to inspect signals,\n * effects, and component trees.\n *\n * @example\n * ```tsx\n * import { enableDevTools, getDevToolsState } from 'flexium/devtools';\n *\n * // Enable devtools in development\n * if (process.env.NODE_ENV !== 'production') {\n * enableDevTools();\n * }\n * ```\n */\n\nimport { setDevToolsHooks } from '../core/signal'\nimport type { Signal, Computed } from '../core/signal'\nimport { ErrorCodes, logError } from '../core/errors'\n\nexport interface DevToolsState {\n enabled: boolean\n signals: Map<number, SignalInfo>\n effects: Map<number, EffectInfo>\n components: Map<number, ComponentInfo>\n}\n\nexport interface SignalInfo {\n id: number\n name?: string\n value: unknown\n subscribers: number\n createdAt: number\n lastUpdated: number\n updateCount: number\n}\n\nexport interface EffectInfo {\n id: number\n name?: string\n dependencies: number[]\n lastRun: number\n runCount: number\n status: 'idle' | 'running' | 'error'\n error?: Error\n}\n\nexport interface ComponentInfo {\n id: number\n name: string\n props: Record<string, unknown>\n signals: number[]\n effects: number[]\n children: number[]\n parent?: number\n mountedAt: number\n}\n\n// Global devtools state\nconst devToolsState: DevToolsState = {\n enabled: false,\n signals: new Map(),\n effects: new Map(),\n components: new Map(),\n}\n\nlet signalIdCounter = 0\nlet effectIdCounter = 0\nlet componentIdCounter = 0\n\n// Event listeners for devtools\ntype DevToolsEventType =\n | 'signal-create'\n | 'signal-update'\n | 'effect-create'\n | 'effect-run'\n | 'component-mount'\n | 'component-unmount'\ntype DevToolsListener = (event: DevToolsEventType, data: unknown) => void\nconst listeners: DevToolsListener[] = []\n\n/**\n * Enable devtools integration\n * Call this in development mode to enable signal/effect inspection\n */\nexport function enableDevTools(): void {\n devToolsState.enabled = true\n\n // Register hooks with signal system for automatic tracking\n setDevToolsHooks({\n onSignalCreate: (signal, name) => registerSignal(signal, name),\n onSignalUpdate: (id, value) => updateSignalInfo(id, value),\n onEffectCreate: (name) => registerEffect(name),\n onEffectRun: (id, status, error) => updateEffectInfo(id, status, error),\n })\n\n // Expose to window for browser extension\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (window as any).__FLEXIUM_DEVTOOLS__ = {\n getState: getDevToolsState,\n getSignals: () => Array.from(devToolsState.signals.values()),\n getEffects: () => Array.from(devToolsState.effects.values()),\n getComponents: () => Array.from(devToolsState.components.values()),\n subscribe: (listener: DevToolsListener) => {\n listeners.push(listener)\n return () => {\n const index = listeners.indexOf(listener)\n if (index > -1) listeners.splice(index, 1)\n }\n },\n }\n\n console.log(\n '%c[Flexium DevTools] Enabled',\n 'color: #10b981; font-weight: bold;'\n )\n }\n}\n\n/**\n * Disable devtools integration\n */\nexport function disableDevTools(): void {\n devToolsState.enabled = false\n devToolsState.signals.clear()\n devToolsState.effects.clear()\n devToolsState.components.clear()\n\n // Unregister hooks\n setDevToolsHooks(null)\n\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete (window as any).__FLEXIUM_DEVTOOLS__\n }\n}\n\n/**\n * Get current devtools state\n */\nexport function getDevToolsState(): DevToolsState {\n return { ...devToolsState }\n}\n\n/**\n * Check if devtools are enabled\n */\nexport function isDevToolsEnabled(): boolean {\n return devToolsState.enabled\n}\n\n// Internal: emit event to listeners\nfunction emit(event: DevToolsEventType, data: unknown): void {\n for (const listener of listeners) {\n try {\n listener(event, data)\n } catch (e) {\n logError(ErrorCodes.DEVTOOLS_LISTENER_ERROR, { event }, e)\n }\n }\n}\n\n/**\n * Register a signal with devtools\n * @internal\n */\nexport function registerSignal(\n signal: Signal<unknown> | Computed<unknown>,\n name?: string\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = signalIdCounter++\n const now = Date.now()\n\n devToolsState.signals.set(id, {\n id,\n name,\n value: signal.peek(),\n subscribers: 0,\n createdAt: now,\n lastUpdated: now,\n updateCount: 0,\n })\n\n emit('signal-create', { id, name })\n return id\n}\n\n/**\n * Update signal info in devtools\n * @internal\n */\nexport function updateSignalInfo(id: number, value: unknown): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.signals.get(id)\n if (info) {\n info.value = value\n info.lastUpdated = Date.now()\n info.updateCount++\n emit('signal-update', { id, value })\n }\n}\n\n/**\n * Register an effect with devtools\n * @internal\n */\nexport function registerEffect(name?: string): number {\n if (!devToolsState.enabled) return -1\n\n const id = effectIdCounter++\n\n devToolsState.effects.set(id, {\n id,\n name,\n dependencies: [],\n lastRun: Date.now(),\n runCount: 0,\n status: 'idle',\n })\n\n emit('effect-create', { id, name })\n return id\n}\n\n/**\n * Update effect info in devtools\n * @internal\n */\nexport function updateEffectInfo(\n id: number,\n status: 'idle' | 'running' | 'error',\n error?: Error\n): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.effects.get(id)\n if (info) {\n info.status = status\n info.lastRun = Date.now()\n info.runCount++\n if (error) info.error = error\n emit('effect-run', { id, status, error })\n }\n}\n\n/**\n * Register a component with devtools\n * @internal\n */\nexport function registerComponent(\n name: string,\n props: Record<string, unknown>\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = componentIdCounter++\n\n devToolsState.components.set(id, {\n id,\n name,\n props,\n signals: [],\n effects: [],\n children: [],\n mountedAt: Date.now(),\n })\n\n emit('component-mount', { id, name })\n return id\n}\n\n/**\n * Unregister a component from devtools\n * @internal\n */\nexport function unregisterComponent(id: number): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.components.get(id)\n if (info) {\n devToolsState.components.delete(id)\n emit('component-unmount', { id, name: info.name })\n }\n}\n\n/**\n * Create a named signal for better devtools visibility\n *\n * @example\n * ```tsx\n * import { createNamedSignal } from 'flexium/devtools';\n * import { signal } from 'flexium/core';\n *\n * // Shows as \"count\" in devtools\n * const count = createNamedSignal('count', 0, signal);\n * ```\n */\nexport function createNamedSignal<T>(\n name: string,\n initialValue: T,\n signalFn: (v: T) => Signal<T>\n): Signal<T> {\n const s = signalFn(initialValue)\n\n if (devToolsState.enabled) {\n registerSignal(s, name)\n }\n\n return s\n}\n"]}
1
+ {"version":3,"sources":["../src/devtools/index.ts"],"names":["devToolsState","enableDevTools","getDevToolsState","listener","disableDevTools"],"mappings":"iHA4DA,IAAMA,EAA+B,CACnC,OAAA,CAAS,MACT,OAAA,CAAS,IAAI,IACb,OAAA,CAAS,IAAI,IACb,UAAA,CAAY,IAAI,GAClB,CAAA,CAqBO,SAASC,CAAAA,EAAuB,CACrCD,CAAAA,CAAc,OAAA,CAAU,KAWpB,OAAO,MAAA,CAAW,GAAA,GAEjB,OAAe,oBAAA,CAAuB,CACvC,SAAUE,CAAAA,CACV,UAAA,CAAY,IAAM,KAAA,CAAM,IAAA,CAAKF,EAAc,OAAA,CAAQ,MAAA,EAAQ,CAAA,CAC3D,UAAA,CAAY,IAAM,KAAA,CAAM,IAAA,CAAKA,EAAc,OAAA,CAAQ,MAAA,EAAQ,CAAA,CAC3D,aAAA,CAAe,IAAM,KAAA,CAAM,IAAA,CAAKA,EAAc,UAAA,CAAW,MAAA,EAAQ,CAAA,CACjE,SAAA,CAAYG,IAEH,IAAM,CAGb,CAAA,CAEJ,EAEA,OAAA,CAAQ,GAAA,CACN,+BACA,oCACF,CAAA,EAEJ,CAKO,SAASC,CAAAA,EAAwB,CACtCJ,CAAAA,CAAc,OAAA,CAAU,MACxBA,CAAAA,CAAc,OAAA,CAAQ,OAAM,CAC5BA,CAAAA,CAAc,QAAQ,KAAA,EAAM,CAC5BA,EAAc,UAAA,CAAW,KAAA,GAKrB,OAAO,MAAA,CAAW,KAEpB,OAAQ,MAAA,CAAe,qBAE3B,CAKO,SAASE,GAAkC,CAChD,OAAO,CAAE,GAAGF,CAAc,CAC5B","file":"advanced.js","sourcesContent":["/**\n * Flexium DevTools Integration\n *\n * Provides hooks for browser devtools extension to inspect signals,\n * effects, and component trees.\n *\n * @example\n * ```tsx\n * import { enableDevTools, getDevToolsState } from 'flexium/devtools';\n *\n * // Enable devtools in development\n * if (process.env.NODE_ENV !== 'production') {\n * enableDevTools();\n * }\n * ```\n */\n\nimport { setDevToolsHooks } from '../core/devtools'\nimport type { StateValue } from '../core/state'\nimport { ErrorCodes, logError } from '../core/errors'\n\nexport interface DevToolsState {\n enabled: boolean\n signals: Map<number, SignalInfo>\n effects: Map<number, EffectInfo>\n components: Map<number, ComponentInfo>\n}\n\nexport interface SignalInfo {\n id: number\n name?: string\n value: unknown\n subscribers: number\n createdAt: number\n lastUpdated: number\n updateCount: number\n}\n\nexport interface EffectInfo {\n id: number\n name?: string\n dependencies: number[]\n lastRun: number\n runCount: number\n status: 'idle' | 'running' | 'error'\n error?: Error\n}\n\nexport interface ComponentInfo {\n id: number\n name: string\n props: Record<string, unknown>\n signals: number[]\n effects: number[]\n children: number[]\n parent?: number\n mountedAt: number\n}\n\n// Global devtools state\nconst devToolsState: DevToolsState = {\n enabled: false,\n signals: new Map(),\n effects: new Map(),\n components: new Map(),\n}\n\nlet signalIdCounter = 0\nlet effectIdCounter = 0\nlet componentIdCounter = 0\n\n// Event listeners for devtools\ntype DevToolsEventType =\n | 'signal-create'\n | 'signal-update'\n | 'effect-create'\n | 'effect-run'\n | 'component-mount'\n | 'component-unmount'\ntype DevToolsListener = (event: DevToolsEventType, data: unknown) => void\nconst listeners: DevToolsListener[] = []\n\n/**\n * Enable devtools integration\n * Call this in development mode to enable signal/effect inspection\n */\nexport function enableDevTools(): void {\n devToolsState.enabled = true\n\n // Register hooks with signal system for automatic tracking\n setDevToolsHooks({\n onSignalCreate: (signal, name) => registerSignal(signal, name),\n onSignalUpdate: (id, value) => updateSignalInfo(id, value),\n onEffectCreate: (name) => registerEffect(name),\n onEffectRun: (id, status, error) => updateEffectInfo(id, status, error),\n })\n\n // Expose to window for browser extension\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (window as any).__FLEXIUM_DEVTOOLS__ = {\n getState: getDevToolsState,\n getSignals: () => Array.from(devToolsState.signals.values()),\n getEffects: () => Array.from(devToolsState.effects.values()),\n getComponents: () => Array.from(devToolsState.components.values()),\n subscribe: (listener: DevToolsListener) => {\n listeners.push(listener)\n return () => {\n const index = listeners.indexOf(listener)\n if (index > -1) listeners.splice(index, 1)\n }\n },\n }\n\n console.log(\n '%c[Flexium DevTools] Enabled',\n 'color: #10b981; font-weight: bold;'\n )\n }\n}\n\n/**\n * Disable devtools integration\n */\nexport function disableDevTools(): void {\n devToolsState.enabled = false\n devToolsState.signals.clear()\n devToolsState.effects.clear()\n devToolsState.components.clear()\n\n // Unregister hooks\n setDevToolsHooks(null)\n\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete (window as any).__FLEXIUM_DEVTOOLS__\n }\n}\n\n/**\n * Get current devtools state\n */\nexport function getDevToolsState(): DevToolsState {\n return { ...devToolsState }\n}\n\n/**\n * Check if devtools are enabled\n */\nexport function isDevToolsEnabled(): boolean {\n return devToolsState.enabled\n}\n\n// Internal: emit event to listeners\nfunction emit(event: DevToolsEventType, data: unknown): void {\n for (const listener of listeners) {\n try {\n listener(event, data)\n } catch (e) {\n logError(ErrorCodes.DEVTOOLS_LISTENER_ERROR, { event }, e)\n }\n }\n}\n\n/**\n * Register a signal with devtools\n * @internal\n */\nexport function registerSignal(\n signal: StateValue<unknown>,\n name?: string\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = signalIdCounter++\n const now = Date.now()\n\n devToolsState.signals.set(id, {\n id,\n name,\n value: signal.peek(),\n subscribers: 0,\n createdAt: now,\n lastUpdated: now,\n updateCount: 0,\n })\n\n emit('signal-create', { id, name })\n return id\n}\n\n/**\n * Update signal info in devtools\n * @internal\n */\nexport function updateSignalInfo(id: number, value: unknown): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.signals.get(id)\n if (info) {\n info.value = value\n info.lastUpdated = Date.now()\n info.updateCount++\n emit('signal-update', { id, value })\n }\n}\n\n/**\n * Register an effect with devtools\n * @internal\n */\nexport function registerEffect(name?: string): number {\n if (!devToolsState.enabled) return -1\n\n const id = effectIdCounter++\n\n devToolsState.effects.set(id, {\n id,\n name,\n dependencies: [],\n lastRun: Date.now(),\n runCount: 0,\n status: 'idle',\n })\n\n emit('effect-create', { id, name })\n return id\n}\n\n/**\n * Update effect info in devtools\n * @internal\n */\nexport function updateEffectInfo(\n id: number,\n status: 'idle' | 'running' | 'error',\n error?: Error\n): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.effects.get(id)\n if (info) {\n info.status = status\n info.lastRun = Date.now()\n info.runCount++\n if (error) info.error = error\n emit('effect-run', { id, status, error })\n }\n}\n\n/**\n * Register a component with devtools\n * @internal\n */\nexport function registerComponent(\n name: string,\n props: Record<string, unknown>\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = componentIdCounter++\n\n devToolsState.components.set(id, {\n id,\n name,\n props,\n signals: [],\n effects: [],\n children: [],\n mountedAt: Date.now(),\n })\n\n emit('component-mount', { id, name })\n return id\n}\n\n/**\n * Unregister a component from devtools\n * @internal\n */\nexport function unregisterComponent(id: number): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.components.get(id)\n if (info) {\n devToolsState.components.delete(id)\n emit('component-unmount', { id, name: info.name })\n }\n}\n\n/**\n * Create a named signal for better devtools visibility\n *\n * @example\n * ```tsx\n * import { createNamedSignal } from 'flexium/devtools';\n * import { signal } from 'flexium/core';\n *\n * // Shows as \"count\" in devtools\n * const count = createNamedSignal('count', 0, signal);\n * ```\n */\nexport function createNamedSignal<T>(\n name: string,\n initialValue: T,\n signalFn: (v: T) => StateValue<T>\n): StateValue<T> {\n const s = signalFn(initialValue)\n\n if (devToolsState.enabled) {\n registerSignal(s, name)\n }\n\n return s\n}\n"]}
package/dist/advanced.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import {c}from'./chunk-B7VP6HBY.mjs';export{e as ComputedNode,d as SignalNode,a as sync}from'./chunk-B7VP6HBY.mjs';import {b as b$1,a as a$1}from'./chunk-Q7WT5IIF.mjs';export{i as root,g as untrack}from'./chunk-Q7WT5IIF.mjs';var o={enabled:false,signals:new Map,effects:new Map,components:new Map},g=0,b=0;var s=[];function v(){o.enabled=true,c({onSignalCreate:(e,n)=>D(e,n),onSignalUpdate:(e,n)=>E(e,n),onEffectCreate:e=>S(e),onEffectRun:(e,n,t)=>x(e,n,t)}),typeof window<"u"&&(window.__FLEXIUM_DEVTOOLS__={getState:w,getSignals:()=>Array.from(o.signals.values()),getEffects:()=>Array.from(o.effects.values()),getComponents:()=>Array.from(o.components.values()),subscribe:e=>(s.push(e),()=>{let n=s.indexOf(e);n>-1&&s.splice(n,1);})},console.log("%c[Flexium DevTools] Enabled","color: #10b981; font-weight: bold;"));}function T(){o.enabled=false,o.signals.clear(),o.effects.clear(),o.components.clear(),c(null),typeof window<"u"&&delete window.__FLEXIUM_DEVTOOLS__;}function w(){return {...o}}function a(e,n){for(let t of s)try{t(e,n);}catch(r){b$1(a$1.DEVTOOLS_LISTENER_ERROR,{event:e},r);}}function D(e,n){if(!o.enabled)return -1;let t=g++,r=Date.now();return o.signals.set(t,{id:t,name:n,value:e.peek(),subscribers:0,createdAt:r,lastUpdated:r,updateCount:0}),a("signal-create",{id:t,name:n}),t}function E(e,n){if(!o.enabled)return;let t=o.signals.get(e);t&&(t.value=n,t.lastUpdated=Date.now(),t.updateCount++,a("signal-update",{id:e,value:n}));}function S(e){if(!o.enabled)return -1;let n=b++;return o.effects.set(n,{id:n,name:e,dependencies:[],lastRun:Date.now(),runCount:0,status:"idle"}),a("effect-create",{id:n,name:e}),n}function x(e,n,t){if(!o.enabled)return;let r=o.effects.get(e);r&&(r.status=n,r.lastRun=Date.now(),r.runCount++,t&&(r.error=t),a("effect-run",{id:e,status:n,error:t}));}export{T as disableDevTools,v as enableDevTools};//# sourceMappingURL=advanced.mjs.map
1
+ export{e as sync}from'./chunk-FDMJHFN7.mjs';export{i as root,f as untrack}from'./chunk-ECYYIQEX.mjs';var o={enabled:false,signals:new Map,effects:new Map,components:new Map};function g(){o.enabled=true,typeof window<"u"&&(window.__FLEXIUM_DEVTOOLS__={getState:T,getSignals:()=>Array.from(o.signals.values()),getEffects:()=>Array.from(o.effects.values()),getComponents:()=>Array.from(o.components.values()),subscribe:e=>(()=>{})},console.log("%c[Flexium DevTools] Enabled","color: #10b981; font-weight: bold;"));}function v(){o.enabled=false,o.signals.clear(),o.effects.clear(),o.components.clear(),typeof window<"u"&&delete window.__FLEXIUM_DEVTOOLS__;}function T(){return {...o}}export{v as disableDevTools,g as enableDevTools};//# sourceMappingURL=advanced.mjs.map
2
2
  //# sourceMappingURL=advanced.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/devtools/index.ts"],"names":["devToolsState","signalIdCounter","effectIdCounter","listeners","enableDevTools","setDevToolsHooks","signal","name","registerSignal","id","value","updateSignalInfo","registerEffect","status","error","updateEffectInfo","getDevToolsState","listener","index","disableDevTools","emit","event","data","e","logError","ErrorCodes","now","info"],"mappings":"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","file":"advanced.mjs","sourcesContent":["/**\n * Flexium DevTools Integration\n *\n * Provides hooks for browser devtools extension to inspect signals,\n * effects, and component trees.\n *\n * @example\n * ```tsx\n * import { enableDevTools, getDevToolsState } from 'flexium/devtools';\n *\n * // Enable devtools in development\n * if (process.env.NODE_ENV !== 'production') {\n * enableDevTools();\n * }\n * ```\n */\n\nimport { setDevToolsHooks } from '../core/signal'\nimport type { Signal, Computed } from '../core/signal'\nimport { ErrorCodes, logError } from '../core/errors'\n\nexport interface DevToolsState {\n enabled: boolean\n signals: Map<number, SignalInfo>\n effects: Map<number, EffectInfo>\n components: Map<number, ComponentInfo>\n}\n\nexport interface SignalInfo {\n id: number\n name?: string\n value: unknown\n subscribers: number\n createdAt: number\n lastUpdated: number\n updateCount: number\n}\n\nexport interface EffectInfo {\n id: number\n name?: string\n dependencies: number[]\n lastRun: number\n runCount: number\n status: 'idle' | 'running' | 'error'\n error?: Error\n}\n\nexport interface ComponentInfo {\n id: number\n name: string\n props: Record<string, unknown>\n signals: number[]\n effects: number[]\n children: number[]\n parent?: number\n mountedAt: number\n}\n\n// Global devtools state\nconst devToolsState: DevToolsState = {\n enabled: false,\n signals: new Map(),\n effects: new Map(),\n components: new Map(),\n}\n\nlet signalIdCounter = 0\nlet effectIdCounter = 0\nlet componentIdCounter = 0\n\n// Event listeners for devtools\ntype DevToolsEventType =\n | 'signal-create'\n | 'signal-update'\n | 'effect-create'\n | 'effect-run'\n | 'component-mount'\n | 'component-unmount'\ntype DevToolsListener = (event: DevToolsEventType, data: unknown) => void\nconst listeners: DevToolsListener[] = []\n\n/**\n * Enable devtools integration\n * Call this in development mode to enable signal/effect inspection\n */\nexport function enableDevTools(): void {\n devToolsState.enabled = true\n\n // Register hooks with signal system for automatic tracking\n setDevToolsHooks({\n onSignalCreate: (signal, name) => registerSignal(signal, name),\n onSignalUpdate: (id, value) => updateSignalInfo(id, value),\n onEffectCreate: (name) => registerEffect(name),\n onEffectRun: (id, status, error) => updateEffectInfo(id, status, error),\n })\n\n // Expose to window for browser extension\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (window as any).__FLEXIUM_DEVTOOLS__ = {\n getState: getDevToolsState,\n getSignals: () => Array.from(devToolsState.signals.values()),\n getEffects: () => Array.from(devToolsState.effects.values()),\n getComponents: () => Array.from(devToolsState.components.values()),\n subscribe: (listener: DevToolsListener) => {\n listeners.push(listener)\n return () => {\n const index = listeners.indexOf(listener)\n if (index > -1) listeners.splice(index, 1)\n }\n },\n }\n\n console.log(\n '%c[Flexium DevTools] Enabled',\n 'color: #10b981; font-weight: bold;'\n )\n }\n}\n\n/**\n * Disable devtools integration\n */\nexport function disableDevTools(): void {\n devToolsState.enabled = false\n devToolsState.signals.clear()\n devToolsState.effects.clear()\n devToolsState.components.clear()\n\n // Unregister hooks\n setDevToolsHooks(null)\n\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete (window as any).__FLEXIUM_DEVTOOLS__\n }\n}\n\n/**\n * Get current devtools state\n */\nexport function getDevToolsState(): DevToolsState {\n return { ...devToolsState }\n}\n\n/**\n * Check if devtools are enabled\n */\nexport function isDevToolsEnabled(): boolean {\n return devToolsState.enabled\n}\n\n// Internal: emit event to listeners\nfunction emit(event: DevToolsEventType, data: unknown): void {\n for (const listener of listeners) {\n try {\n listener(event, data)\n } catch (e) {\n logError(ErrorCodes.DEVTOOLS_LISTENER_ERROR, { event }, e)\n }\n }\n}\n\n/**\n * Register a signal with devtools\n * @internal\n */\nexport function registerSignal(\n signal: Signal<unknown> | Computed<unknown>,\n name?: string\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = signalIdCounter++\n const now = Date.now()\n\n devToolsState.signals.set(id, {\n id,\n name,\n value: signal.peek(),\n subscribers: 0,\n createdAt: now,\n lastUpdated: now,\n updateCount: 0,\n })\n\n emit('signal-create', { id, name })\n return id\n}\n\n/**\n * Update signal info in devtools\n * @internal\n */\nexport function updateSignalInfo(id: number, value: unknown): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.signals.get(id)\n if (info) {\n info.value = value\n info.lastUpdated = Date.now()\n info.updateCount++\n emit('signal-update', { id, value })\n }\n}\n\n/**\n * Register an effect with devtools\n * @internal\n */\nexport function registerEffect(name?: string): number {\n if (!devToolsState.enabled) return -1\n\n const id = effectIdCounter++\n\n devToolsState.effects.set(id, {\n id,\n name,\n dependencies: [],\n lastRun: Date.now(),\n runCount: 0,\n status: 'idle',\n })\n\n emit('effect-create', { id, name })\n return id\n}\n\n/**\n * Update effect info in devtools\n * @internal\n */\nexport function updateEffectInfo(\n id: number,\n status: 'idle' | 'running' | 'error',\n error?: Error\n): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.effects.get(id)\n if (info) {\n info.status = status\n info.lastRun = Date.now()\n info.runCount++\n if (error) info.error = error\n emit('effect-run', { id, status, error })\n }\n}\n\n/**\n * Register a component with devtools\n * @internal\n */\nexport function registerComponent(\n name: string,\n props: Record<string, unknown>\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = componentIdCounter++\n\n devToolsState.components.set(id, {\n id,\n name,\n props,\n signals: [],\n effects: [],\n children: [],\n mountedAt: Date.now(),\n })\n\n emit('component-mount', { id, name })\n return id\n}\n\n/**\n * Unregister a component from devtools\n * @internal\n */\nexport function unregisterComponent(id: number): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.components.get(id)\n if (info) {\n devToolsState.components.delete(id)\n emit('component-unmount', { id, name: info.name })\n }\n}\n\n/**\n * Create a named signal for better devtools visibility\n *\n * @example\n * ```tsx\n * import { createNamedSignal } from 'flexium/devtools';\n * import { signal } from 'flexium/core';\n *\n * // Shows as \"count\" in devtools\n * const count = createNamedSignal('count', 0, signal);\n * ```\n */\nexport function createNamedSignal<T>(\n name: string,\n initialValue: T,\n signalFn: (v: T) => Signal<T>\n): Signal<T> {\n const s = signalFn(initialValue)\n\n if (devToolsState.enabled) {\n registerSignal(s, name)\n }\n\n return s\n}\n"]}
1
+ {"version":3,"sources":["../src/devtools/index.ts"],"names":["devToolsState","enableDevTools","getDevToolsState","listener","disableDevTools"],"mappings":"qGA4DA,IAAMA,EAA+B,CACnC,OAAA,CAAS,MACT,OAAA,CAAS,IAAI,IACb,OAAA,CAAS,IAAI,IACb,UAAA,CAAY,IAAI,GAClB,CAAA,CAqBO,SAASC,CAAAA,EAAuB,CACrCD,CAAAA,CAAc,OAAA,CAAU,KAWpB,OAAO,MAAA,CAAW,GAAA,GAEjB,OAAe,oBAAA,CAAuB,CACvC,SAAUE,CAAAA,CACV,UAAA,CAAY,IAAM,KAAA,CAAM,IAAA,CAAKF,EAAc,OAAA,CAAQ,MAAA,EAAQ,CAAA,CAC3D,UAAA,CAAY,IAAM,KAAA,CAAM,IAAA,CAAKA,EAAc,OAAA,CAAQ,MAAA,EAAQ,CAAA,CAC3D,aAAA,CAAe,IAAM,KAAA,CAAM,IAAA,CAAKA,EAAc,UAAA,CAAW,MAAA,EAAQ,CAAA,CACjE,SAAA,CAAYG,IAEH,IAAM,CAGb,CAAA,CAEJ,EAEA,OAAA,CAAQ,GAAA,CACN,+BACA,oCACF,CAAA,EAEJ,CAKO,SAASC,CAAAA,EAAwB,CACtCJ,CAAAA,CAAc,OAAA,CAAU,MACxBA,CAAAA,CAAc,OAAA,CAAQ,OAAM,CAC5BA,CAAAA,CAAc,QAAQ,KAAA,EAAM,CAC5BA,EAAc,UAAA,CAAW,KAAA,GAKrB,OAAO,MAAA,CAAW,KAEpB,OAAQ,MAAA,CAAe,qBAE3B,CAKO,SAASE,GAAkC,CAChD,OAAO,CAAE,GAAGF,CAAc,CAC5B","file":"advanced.mjs","sourcesContent":["/**\n * Flexium DevTools Integration\n *\n * Provides hooks for browser devtools extension to inspect signals,\n * effects, and component trees.\n *\n * @example\n * ```tsx\n * import { enableDevTools, getDevToolsState } from 'flexium/devtools';\n *\n * // Enable devtools in development\n * if (process.env.NODE_ENV !== 'production') {\n * enableDevTools();\n * }\n * ```\n */\n\nimport { setDevToolsHooks } from '../core/devtools'\nimport type { StateValue } from '../core/state'\nimport { ErrorCodes, logError } from '../core/errors'\n\nexport interface DevToolsState {\n enabled: boolean\n signals: Map<number, SignalInfo>\n effects: Map<number, EffectInfo>\n components: Map<number, ComponentInfo>\n}\n\nexport interface SignalInfo {\n id: number\n name?: string\n value: unknown\n subscribers: number\n createdAt: number\n lastUpdated: number\n updateCount: number\n}\n\nexport interface EffectInfo {\n id: number\n name?: string\n dependencies: number[]\n lastRun: number\n runCount: number\n status: 'idle' | 'running' | 'error'\n error?: Error\n}\n\nexport interface ComponentInfo {\n id: number\n name: string\n props: Record<string, unknown>\n signals: number[]\n effects: number[]\n children: number[]\n parent?: number\n mountedAt: number\n}\n\n// Global devtools state\nconst devToolsState: DevToolsState = {\n enabled: false,\n signals: new Map(),\n effects: new Map(),\n components: new Map(),\n}\n\nlet signalIdCounter = 0\nlet effectIdCounter = 0\nlet componentIdCounter = 0\n\n// Event listeners for devtools\ntype DevToolsEventType =\n | 'signal-create'\n | 'signal-update'\n | 'effect-create'\n | 'effect-run'\n | 'component-mount'\n | 'component-unmount'\ntype DevToolsListener = (event: DevToolsEventType, data: unknown) => void\nconst listeners: DevToolsListener[] = []\n\n/**\n * Enable devtools integration\n * Call this in development mode to enable signal/effect inspection\n */\nexport function enableDevTools(): void {\n devToolsState.enabled = true\n\n // Register hooks with signal system for automatic tracking\n setDevToolsHooks({\n onSignalCreate: (signal, name) => registerSignal(signal, name),\n onSignalUpdate: (id, value) => updateSignalInfo(id, value),\n onEffectCreate: (name) => registerEffect(name),\n onEffectRun: (id, status, error) => updateEffectInfo(id, status, error),\n })\n\n // Expose to window for browser extension\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ; (window as any).__FLEXIUM_DEVTOOLS__ = {\n getState: getDevToolsState,\n getSignals: () => Array.from(devToolsState.signals.values()),\n getEffects: () => Array.from(devToolsState.effects.values()),\n getComponents: () => Array.from(devToolsState.components.values()),\n subscribe: (listener: DevToolsListener) => {\n listeners.push(listener)\n return () => {\n const index = listeners.indexOf(listener)\n if (index > -1) listeners.splice(index, 1)\n }\n },\n }\n\n console.log(\n '%c[Flexium DevTools] Enabled',\n 'color: #10b981; font-weight: bold;'\n )\n }\n}\n\n/**\n * Disable devtools integration\n */\nexport function disableDevTools(): void {\n devToolsState.enabled = false\n devToolsState.signals.clear()\n devToolsState.effects.clear()\n devToolsState.components.clear()\n\n // Unregister hooks\n setDevToolsHooks(null)\n\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete (window as any).__FLEXIUM_DEVTOOLS__\n }\n}\n\n/**\n * Get current devtools state\n */\nexport function getDevToolsState(): DevToolsState {\n return { ...devToolsState }\n}\n\n/**\n * Check if devtools are enabled\n */\nexport function isDevToolsEnabled(): boolean {\n return devToolsState.enabled\n}\n\n// Internal: emit event to listeners\nfunction emit(event: DevToolsEventType, data: unknown): void {\n for (const listener of listeners) {\n try {\n listener(event, data)\n } catch (e) {\n logError(ErrorCodes.DEVTOOLS_LISTENER_ERROR, { event }, e)\n }\n }\n}\n\n/**\n * Register a signal with devtools\n * @internal\n */\nexport function registerSignal(\n signal: StateValue<unknown>,\n name?: string\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = signalIdCounter++\n const now = Date.now()\n\n devToolsState.signals.set(id, {\n id,\n name,\n value: signal.peek(),\n subscribers: 0,\n createdAt: now,\n lastUpdated: now,\n updateCount: 0,\n })\n\n emit('signal-create', { id, name })\n return id\n}\n\n/**\n * Update signal info in devtools\n * @internal\n */\nexport function updateSignalInfo(id: number, value: unknown): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.signals.get(id)\n if (info) {\n info.value = value\n info.lastUpdated = Date.now()\n info.updateCount++\n emit('signal-update', { id, value })\n }\n}\n\n/**\n * Register an effect with devtools\n * @internal\n */\nexport function registerEffect(name?: string): number {\n if (!devToolsState.enabled) return -1\n\n const id = effectIdCounter++\n\n devToolsState.effects.set(id, {\n id,\n name,\n dependencies: [],\n lastRun: Date.now(),\n runCount: 0,\n status: 'idle',\n })\n\n emit('effect-create', { id, name })\n return id\n}\n\n/**\n * Update effect info in devtools\n * @internal\n */\nexport function updateEffectInfo(\n id: number,\n status: 'idle' | 'running' | 'error',\n error?: Error\n): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.effects.get(id)\n if (info) {\n info.status = status\n info.lastRun = Date.now()\n info.runCount++\n if (error) info.error = error\n emit('effect-run', { id, status, error })\n }\n}\n\n/**\n * Register a component with devtools\n * @internal\n */\nexport function registerComponent(\n name: string,\n props: Record<string, unknown>\n): number {\n if (!devToolsState.enabled) return -1\n\n const id = componentIdCounter++\n\n devToolsState.components.set(id, {\n id,\n name,\n props,\n signals: [],\n effects: [],\n children: [],\n mountedAt: Date.now(),\n })\n\n emit('component-mount', { id, name })\n return id\n}\n\n/**\n * Unregister a component from devtools\n * @internal\n */\nexport function unregisterComponent(id: number): void {\n if (!devToolsState.enabled) return\n\n const info = devToolsState.components.get(id)\n if (info) {\n devToolsState.components.delete(id)\n emit('component-unmount', { id, name: info.name })\n }\n}\n\n/**\n * Create a named signal for better devtools visibility\n *\n * @example\n * ```tsx\n * import { createNamedSignal } from 'flexium/devtools';\n * import { signal } from 'flexium/core';\n *\n * // Shows as \"count\" in devtools\n * const count = createNamedSignal('count', 0, signal);\n * ```\n */\nexport function createNamedSignal<T>(\n name: string,\n initialValue: T,\n signalFn: (v: T) => StateValue<T>\n): StateValue<T> {\n const s = signalFn(initialValue)\n\n if (devToolsState.enabled) {\n registerSignal(s, name)\n }\n\n return s\n}\n"]}
package/dist/canvas.d.cts CHANGED
@@ -1,8 +1,7 @@
1
- export { e as effect } from './effect-14CxUU8r.cjs';
1
+ export { e as effect } from './core-CxHP8991.cjs';
2
2
  export { r as root } from './owner-QS9tPwPr.cjs';
3
- import { a as Signal } from './signal-C6936A3J.cjs';
4
- export { b as Computed } from './signal-C6936A3J.cjs';
5
- export { C as Canvas, f as CanvasProps, b as DrawArc, i as DrawArcProps, a as DrawCircle, h as DrawCircleProps, c as DrawLine, j as DrawLineProps, d as DrawPath, k as DrawPathProps, D as DrawRect, g as DrawRectProps, e as DrawText, l as DrawTextProps } from './DrawText-ccZrs3Xs.cjs';
3
+ import { S as StateValue } from './state-DitsMyev.cjs';
4
+ export { C as Canvas, f as CanvasProps, b as DrawArc, i as DrawArcProps, a as DrawCircle, h as DrawCircleProps, c as DrawLine, j as DrawLineProps, d as DrawPath, k as DrawPathProps, D as DrawRect, g as DrawRectProps, e as DrawText, l as DrawTextProps } from './DrawText-CVAKQ5wZ.cjs';
6
5
 
7
6
  /**
8
7
  * Canvas renderer - renders canvas primitives to canvas context
@@ -19,6 +18,6 @@ declare function renderCanvasChildren(ctx: CanvasRenderingContext2D, children: a
19
18
  /**
20
19
  * Unwrap a value that might be a Signal
21
20
  */
22
- declare function unwrapSignal<T>(value: T | Signal<T>): T;
21
+ declare function unwrapSignal<T>(value: T | StateValue<T>): T;
23
22
 
24
- export { Signal, renderCanvasChildren, unwrapSignal };
23
+ export { StateValue as Computed, StateValue as Signal, renderCanvasChildren, unwrapSignal };
package/dist/canvas.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- export { e as effect } from './effect-14CxUU8r.js';
1
+ export { e as effect } from './core-D0ggvjX3.js';
2
2
  export { r as root } from './owner-QS9tPwPr.js';
3
- import { a as Signal } from './signal-C6936A3J.js';
4
- export { b as Computed } from './signal-C6936A3J.js';
5
- export { C as Canvas, f as CanvasProps, b as DrawArc, i as DrawArcProps, a as DrawCircle, h as DrawCircleProps, c as DrawLine, j as DrawLineProps, d as DrawPath, k as DrawPathProps, D as DrawRect, g as DrawRectProps, e as DrawText, l as DrawTextProps } from './DrawText-ngwNNh8O.js';
3
+ import { S as StateValue } from './state-DitsMyev.js';
4
+ export { C as Canvas, f as CanvasProps, b as DrawArc, i as DrawArcProps, a as DrawCircle, h as DrawCircleProps, c as DrawLine, j as DrawLineProps, d as DrawPath, k as DrawPathProps, D as DrawRect, g as DrawRectProps, e as DrawText, l as DrawTextProps } from './DrawText-Dlh1L1Ar.js';
6
5
 
7
6
  /**
8
7
  * Canvas renderer - renders canvas primitives to canvas context
@@ -19,6 +18,6 @@ declare function renderCanvasChildren(ctx: CanvasRenderingContext2D, children: a
19
18
  /**
20
19
  * Unwrap a value that might be a Signal
21
20
  */
22
- declare function unwrapSignal<T>(value: T | Signal<T>): T;
21
+ declare function unwrapSignal<T>(value: T | StateValue<T>): T;
23
22
 
24
- export { Signal, renderCanvasChildren, unwrapSignal };
23
+ export { StateValue as Computed, StateValue as Signal, renderCanvasChildren, unwrapSignal };
package/dist/canvas.js CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkWOHSSPKD_js=require('./chunk-WOHSSPKD.js');require('./chunk-5236IK5I.js');var chunkAJT35P3Z_js=require('./chunk-AJT35P3Z.js');Object.defineProperty(exports,"Canvas",{enumerable:true,get:function(){return chunkWOHSSPKD_js.d}});Object.defineProperty(exports,"DrawArc",{enumerable:true,get:function(){return chunkWOHSSPKD_js.g}});Object.defineProperty(exports,"DrawCircle",{enumerable:true,get:function(){return chunkWOHSSPKD_js.f}});Object.defineProperty(exports,"DrawLine",{enumerable:true,get:function(){return chunkWOHSSPKD_js.h}});Object.defineProperty(exports,"DrawPath",{enumerable:true,get:function(){return chunkWOHSSPKD_js.i}});Object.defineProperty(exports,"DrawRect",{enumerable:true,get:function(){return chunkWOHSSPKD_js.e}});Object.defineProperty(exports,"DrawText",{enumerable:true,get:function(){return chunkWOHSSPKD_js.j}});Object.defineProperty(exports,"renderCanvasChildren",{enumerable:true,get:function(){return chunkWOHSSPKD_js.c}});Object.defineProperty(exports,"unwrapSignal",{enumerable:true,get:function(){return chunkWOHSSPKD_js.b}});Object.defineProperty(exports,"effect",{enumerable:true,get:function(){return chunkAJT35P3Z_js.k}});Object.defineProperty(exports,"root",{enumerable:true,get:function(){return chunkAJT35P3Z_js.i}});//# sourceMappingURL=canvas.js.map
1
+ 'use strict';var chunkQPCIDSMM_js=require('./chunk-QPCIDSMM.js');require('./chunk-XJHWMHKF.js'),require('./chunk-YPVRQKMW.js');var chunkWWEWRI6S_js=require('./chunk-WWEWRI6S.js'),chunkGYDP6MFV_js=require('./chunk-GYDP6MFV.js');Object.defineProperty(exports,"Canvas",{enumerable:true,get:function(){return chunkQPCIDSMM_js.d}});Object.defineProperty(exports,"DrawArc",{enumerable:true,get:function(){return chunkQPCIDSMM_js.g}});Object.defineProperty(exports,"DrawCircle",{enumerable:true,get:function(){return chunkQPCIDSMM_js.f}});Object.defineProperty(exports,"DrawLine",{enumerable:true,get:function(){return chunkQPCIDSMM_js.h}});Object.defineProperty(exports,"DrawPath",{enumerable:true,get:function(){return chunkQPCIDSMM_js.i}});Object.defineProperty(exports,"DrawRect",{enumerable:true,get:function(){return chunkQPCIDSMM_js.e}});Object.defineProperty(exports,"DrawText",{enumerable:true,get:function(){return chunkQPCIDSMM_js.j}});Object.defineProperty(exports,"renderCanvasChildren",{enumerable:true,get:function(){return chunkQPCIDSMM_js.c}});Object.defineProperty(exports,"unwrapSignal",{enumerable:true,get:function(){return chunkQPCIDSMM_js.b}});Object.defineProperty(exports,"effect",{enumerable:true,get:function(){return chunkWWEWRI6S_js.c}});Object.defineProperty(exports,"root",{enumerable:true,get:function(){return chunkGYDP6MFV_js.i}});//# sourceMappingURL=canvas.js.map
2
2
  //# sourceMappingURL=canvas.js.map
package/dist/canvas.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export{d as Canvas,g as DrawArc,f as DrawCircle,h as DrawLine,i as DrawPath,e as DrawRect,j as DrawText,c as renderCanvasChildren,b as unwrapSignal}from'./chunk-KJPIJNFH.mjs';import'./chunk-B7VP6HBY.mjs';export{k as effect,i as root}from'./chunk-Q7WT5IIF.mjs';//# sourceMappingURL=canvas.mjs.map
1
+ export{d as Canvas,g as DrawArc,f as DrawCircle,h as DrawLine,i as DrawPath,e as DrawRect,j as DrawText,c as renderCanvasChildren,b as unwrapSignal}from'./chunk-QZIX4FXS.mjs';import'./chunk-BBNYMXE7.mjs';import'./chunk-FDMJHFN7.mjs';export{c as effect}from'./chunk-HB5VPQTB.mjs';export{i as root}from'./chunk-ECYYIQEX.mjs';//# sourceMappingURL=canvas.mjs.map
2
2
  //# sourceMappingURL=canvas.mjs.map
@@ -0,0 +1,3 @@
1
+ 'use strict';var chunkDZ7L3SHV_js=require('./chunk-DZ7L3SHV.js'),chunkXJHWMHKF_js=require('./chunk-XJHWMHKF.js'),chunkQ7IWDVJ4_js=require('./chunk-Q7IWDVJ4.js'),chunkWWEWRI6S_js=require('./chunk-WWEWRI6S.js'),chunkGYDP6MFV_js=require('./chunk-GYDP6MFV.js');var Se=new Set,ve=new Set(["focus","blur","mouseenter","mouseleave","load","unload","scroll"]),Q=new WeakMap;function Fe(e){let t=e.type.toLowerCase(),n=!ve.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=Q.get(s);if(p?.has(t)){let l=p.get(t);if(l){try{l(e);}catch(c){chunkGYDP6MFV_js.b(chunkGYDP6MFV_js.a.EVENT_HANDLER_FAILED,{eventType:t},c);}if(e.cancelBubble)return}}if(!n)break}}function Me(e){if(!(typeof document>"u")&&!Se.has(e)){let t=ve.has(e);document.addEventListener(e,Fe,{capture:t}),Se.add(e);}}var de={on(e,t,n){let o=t.toLowerCase(),r=Q.get(e);r||(r=new Map,Q.set(e,r)),r.set(o,n),Me(o);},off(e,t){let n=t.toLowerCase(),o=Q.get(e);o&&o.delete(n);}};var J={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"}},Ee={Row:"div",Column:"div",Stack:"div",Text:"span",Button:"button",Input:"input",Container:"div"},ee={onPress:"click",onHover:"mouseenter",onChange:"input",onFocus:"focus",onBlur:"blur"},Te=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"]),Ie="http://www.w3.org/2000/svg",Pe=new Set(["svg","path","circle","rect","line","polyline","polygon","ellipse","g","text","tspan","defs","use","symbol","marker","linearGradient","radialGradient","stop","clipPath","pattern","mask","filter"]),De={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 He(e){return typeof e=="number"?`${e}px`:e}var Le=new Map;function ke(e){let t=Le.get(e);return t===void 0&&(t=e.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`),Le.set(e,t)),t}function Oe(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ve(e,t){if(e!=null)switch(t){case "px":return He(e);case "string":return String(e);case "none":default:return e}}function Be(e,t,n){let o=e.style,r=t.style,i=n.style;if(r!==i){if(r&&typeof r=="object")for(let c in r)(!i||!(c in i))&&o.setProperty(ke(c),"");if(i&&typeof i=="object")for(let c in i){let f=i[c];(!r||r[c]!==f)&&o.setProperty(ke(c),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 c in t)if(c in J&&!(c in n)){let f=J[c],m=f.cssProp,a=l[m];a!==void 0&&a!==""&&(l[m]=""),f.sideEffect&&f.sideEffect(o,void 0);}for(let c in n)if(c in J){let f=t[c],m=n[c];if(f===m)continue;let a=J[c],d=Ve(m,a.transform),u=a.cssProp,N=l[u];d===void 0?N!==void 0&&N!==""&&(l[u]=""):N!==d&&(l[u]=d),a.sideEffect&&a.sideEffect(o,d);}}function _e(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:_e(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 le=class{createNode(t,n){let o=Ee[t]??t,r;return Pe.has(o)?r=document.createElementNS(Ie,o):r=document.createElement(o),Ee[t]&&r.setAttribute("data-flexium-type",t),this.updateNode(r,{},n),r}updateNode(t,n,o){if(o.className!==n.className){let i=_e(o.className);t instanceof SVGElement?t.setAttribute("class",i):t.className=i;}Be(t,n,o);for(let i in n)if(!(i in o)){if(typeof i=="symbol")continue;if(i.startsWith("on")){let s=ee[i]||i.slice(2).toLowerCase();this.removeEventListener(t,s,n[i]);}else Te.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 c=ee[s]||s.slice(2).toLowerCase();l&&this.removeEventListener(t,c,l),p&&this.addEventListener(t,c,p);}else if(!Te.has(s))if(p==null||p===false)t.removeAttribute(s);else if(p===true)t.setAttribute(s,"");else {let c=De[s]||s;t.setAttribute(c,Oe(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=ee[n]||n;de.on(t,r,o);}removeEventListener(t,n,o){let r=ee[n]||n;de.off(t,r);}},x=new le;var ae=Symbol("flexium.list");function fe(e){return e!==null&&typeof e=="object"&&ae in e&&e[ae]===true}function $e(e,t){return typeof e=="number"?e:e.mode==="fixed"?e.itemHeight:e.estimatedItemHeight}function Ge(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 pe(e,t,n,o){return e.virtual?je(e,t,n,o):We(e,t,n,o)}function We(e,t,n,o){let{each:r,renderItem:i,getKey:s,class:p,style:l}=e,c=document.createElement("div");c.setAttribute("role","list"),p&&(c.className=p),l&&Object.entries(l).forEach(([d,u])=>{c.style[d]=typeof u=="number"?`${u}px`:u;}),t.appendChild(c);let f=new Map,m=(d,u)=>s?s(d,u):u,a=chunkWWEWRI6S_js.c(()=>{let d=r()||[],u=new Set;d.forEach((N,C)=>{let g=m(N,C);if(u.add(g),!f.has(g)){let[L,y]=chunkXJHWMHKF_js.k(C),h=i(N,()=>L()),b=n(h);if(b&&b instanceof HTMLElement){b.setAttribute("role","listitem"),c.appendChild(b),L.__setter=y;let j={item:N,key:g,node:b,indexSig:L,dispose:()=>{try{o(b);}catch{}}};f.set(g,j);}}});for(let[N,C]of f)u.has(N)||(C.dispose(),C.node.parentNode===c&&c.removeChild(C.node),f.delete(N));});return ()=>{a();for(let d of f.values())d.dispose();f.clear(),c.parentNode===t&&t.removeChild(c);}}function je(e,t,n,o){let{each:r,renderItem:i,height:s,width:p,itemSize:l,overscan:c,getKey:f,onScroll:m,onVisibleRangeChange:a}=e;if(!s||!l)return console.warn("List: height and itemSize are required when virtual is true"),()=>{};let d=document.createElement("div");d.style.height=typeof s=="number"?`${s}px`:s,d.style.width=p?typeof p=="number"?`${p}px`:p:"100%",d.style.overflow="auto",d.style.position="relative",d.setAttribute("role","list"),d.setAttribute("tabindex","0");let u=document.createElement("div");u.style.position="relative",u.style.width="100%";let[N,C]=chunkXJHWMHKF_js.k(0),g=new Map,L=-1,y=-1,h=()=>{C(d.scrollTop),m?.(d.scrollTop);};d.addEventListener("scroll",h,{passive:true});let b=(k,P)=>f?f(k,P):P,j=chunkWWEWRI6S_js.c(()=>{let k=r()||[],P=N(),B=d.clientHeight||parseFloat(String(s)),K=$e(l),{startIndex:z,endIndex:U,totalHeight:Re}=Ge(P,B,K,k.length,c);u.style.height=`${Re}px`,d.setAttribute("aria-rowcount",String(k.length)),(z!==L||U!==y)&&(a?.(z,U),L=z,y=U);let ge=new Set;for(let v=z;v<=U&&v<k.length;v++){let A=k[v],$=b(A,v);ge.add($);let D=g.get($),X=g.get($)?.state;if(X){let R=X.__setter;R&&R(A);}else {let[R,H]=chunkXJHWMHKF_js.k(A);X=R,X.__setter=H;}if(D){if(D.indexSig.peek()!==v){let Z=D.indexSig.__setter;if(Z)Z(v);else {let[E,he]=chunkXJHWMHKF_js.k(v);E.__setter=he,D.indexSig=E,he(v);}}let H=D.node;H.style.transform=`translateY(${v*K}px)`,H.setAttribute("aria-rowindex",String(v+1));}else {let[R,H]=chunkXJHWMHKF_js.k(v);R.__setter=H;let Z=i(A,()=>R()),E=n(Z);E&&E instanceof HTMLElement&&(E.style.position="absolute",E.style.top="0",E.style.left="0",E.style.right="0",E.style.transform=`translateY(${v*K}px)`,E.style.height=`${K}px`,E.style.boxSizing="border-box",E.setAttribute("role","listitem"),E.setAttribute("aria-rowindex",String(v+1)),u.appendChild(E),D={item:A,key:$,node:E,indexSig:R,dispose:()=>{try{o(E);}catch{}}},g.set($,D));}}for(let[v,A]of g)ge.has(v)||(A.dispose(),A.node.parentNode===u&&u.removeChild(A.node),g.delete(v));});return ()=>{j(),d.removeEventListener("scroll",h);for(let k of g.values())k.dispose();g.clear(),d.parentNode===t&&t.removeChild(d);}}var we=new WeakMap;function w(e){return we.get(e)}function I(e,t){we.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 te(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 d=a&&w(a);d&&(T(d),x.removeChild(e,d));}return}if(!r){let a=document.createDocumentFragment();for(let d of n){let u=S(d,void 0);u&&(I(d,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,d=0,u=e.firstChild;for(;a<s||d<p;){if(d>=p){for(;a<s;){let y=t[a++],h=y&&w(y);h&&(T(h),x.removeChild(e,h));}break}if(a>=s){let y=document.createDocumentFragment();for(;d<p;){let h=n[d++],b=S(h,void 0);b&&(I(h,b),y.appendChild(b));}o?e.insertBefore(y,o):e.appendChild(y);break}let N=t[a],C=n[d],g=N.key??`__idx_${a}_${N.type}`,L=C.key??`__idx_${d}_${C.type}`;if(g===L&&N.type===C.type)ue(N,C),u=u?.nextSibling||null,a++,d++;else {let y=false;for(let h=a+1;h<s;h++){let b=t[h];if((b.key??`__idx_${h}_${b.type}`)===L&&b.type===C.type){for(let k=a;k<h;k++){let P=t[k],B=P&&w(P);B&&(T(B),x.removeChild(e,B));}ue(b,C),a=h+1,d++,y=true;break}}if(!y){let h=S(C,void 0);h&&(I(C,h),e.insertBefore(h,u)),d++;}}}return}let c=G.getMap(),f=G.getSet();for(let a=0;a<s;a++){let d=t[a],u=d.key??`__idx_${a}_${d.type}`;c.set(u,d);}let m=e.firstChild;for(let a=0;a<n.length;a++){let d=n[a],u=d.key??`__idx_${a}_${d.type}`;f.add(u);let N=c.get(u),C=m;if(!N||N.type!==d.type){let g=S(d,void 0);g&&(I(d,g),e.insertBefore(g,C));}else {ue(N,d);let g=w(d);g&&(m!==g?e.insertBefore(g,C):m=m?.nextSibling||null);}}for(let[a,d]of c){let u=w(d);!f.has(a)&&u&&(T(u),u.parentNode===e&&x.removeChild(e,u));}G.release(c,f);}function ue(e,t){let n=w(e);if(!n||(I(t,n),typeof t.type!="string"))return;x.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&&x.updateTextNode(n.firstChild,i);return}te(n,o,r,null);}}var W=new WeakMap,oe=new Set,me=false;function re(e){oe.add(e),me||(me=true,requestAnimationFrame(()=>{Ke();}));}function Ke(){if(me=false,oe.size===0)return;let e=Array.from(oe);oe.clear();for(let t=0;t<e.length;t++)e[t]();}function V(e,t){let n=W.get(e);n||(n=new Set,W.set(e,n)),n.add(t);}function S(e,t){if(e==null||typeof e=="boolean")return null;if(fe(e)){let n=t||document.createDocumentFragment(),o=pe(e,n,i=>S(i),T),r=document.createTextNode("");return V(r,o),t?n.firstChild:n}if(chunkXJHWMHKF_js.f(e)){let n=chunkXJHWMHKF_js.h(e);if(n){let o=document.createTextNode(""),r=t||document.createDocumentFragment();x.appendChild(r,o);let i=o,s=chunkWWEWRI6S_js.c(()=>{let p=n(),l=o.parentNode;if(l)if((typeof p=="string"||typeof p=="number")&&i&&i.nodeType===Node.TEXT_NODE&&i!==o){let c=i,f=String(p);re(()=>{x.updateTextNode(c,f);});}else {let c=S(p);if(c)if(i&&i!==o)if(i.parentNode===l)if(i.nodeType===Node.TEXT_NODE&&c.nodeType===Node.TEXT_NODE){let f=i,m=c.textContent||"";re(()=>{x.updateTextNode(f,m);});}else l.replaceChild(c,i),i=c;else l.insertBefore(c,o.nextSibling),i=c;else l.insertBefore(c,o.nextSibling),i=c;else {if(i&&i!==o&&i.parentNode===l)try{l.removeChild(i);}catch(f){chunkGYDP6MFV_js.b(chunkGYDP6MFV_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},f);}i=o;}}});return V(o,s),t?o:r}}if(chunkXJHWMHKF_js.g(e)||typeof e=="function"){let n=document.createTextNode(""),o=t||document.createDocumentFragment();x.appendChild(o,n);let r=[],i=null,s=[],p=chunkWWEWRI6S_js.c(()=>{let l=(chunkXJHWMHKF_js.g(e),e()),c=n.parentNode;if(c){if(Array.isArray(l)){let f=l.filter(m=>m!=null);if(s.length>0){let m=n.nextSibling;te(c,s,f,m);}else {for(let a of r)if(T(a),a.parentNode===c)try{c.removeChild(a);}catch(d){chunkGYDP6MFV_js.b(chunkGYDP6MFV_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},d);}r=[];let m=document.createDocumentFragment();for(let a of f){let d=S(a,m);d&&typeof a=="object"&&I(a,d);}r=Array.from(m.childNodes),c.insertBefore(m,n.nextSibling);}s=f,i=l;return}if(s.length>0){for(let f of s){let m=w(f);if(m&&m.parentNode===c){T(m);try{c.removeChild(m);}catch(a){chunkGYDP6MFV_js.b(chunkGYDP6MFV_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},a);}}}s=[];}if(l!==i){for(let f of r)if(T(f),f.parentNode===c)try{c.removeChild(f);}catch(m){chunkGYDP6MFV_js.b(chunkGYDP6MFV_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},m);}if(r=[],typeof l=="string"||typeof l=="number"){let f=x.createTextNode(String(l));c.insertBefore(f,n.nextSibling),r=[f];}else {let f=S(l);f&&(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE?(r=Array.from(f.childNodes),c.insertBefore(f,n.nextSibling)):(c.insertBefore(f,n.nextSibling),r=[f]));}i=l;}}});return V(n,p),t?n:o}if(Array.isArray(e)){let n=document.createDocumentFragment();for(let o of e)S(o,n);return t&&x.appendChild(t,n),n}if(typeof e=="string"||typeof e=="number"){let n=x.createTextNode(String(e));return t&&x.appendChild(t,n),n}if(chunkQ7IWDVJ4_js.c(e)){if(typeof e.type=="function"){let i=e.type,s=document.createTextNode(""),p=t||document.createDocumentFragment();x.appendChild(p,s);let l=[],c=[],f=chunkXJHWMHKF_js.c(),m=chunkWWEWRI6S_js.c(()=>{chunkXJHWMHKF_js.d(f),chunkGYDP6MFV_js.i(a=>{chunkWWEWRI6S_js.d(a);let d=i._contextId;d&&chunkDZ7L3SHV_js.c(d,e.props.value);let u;try{chunkXJHWMHKF_js.b(f);let y=e.children!==void 0?{...e.props,children:e.children}:e.props;u=i(y);}finally{chunkXJHWMHKF_js.b(null);}if(Array.isArray(u)&&u.every(y=>chunkQ7IWDVJ4_js.c(y)&&y.type!=="fragment")){let y=s.parentNode;if(y){let h=u;te(y,c,h,s.nextSibling),c=h,l=h.map(b=>w(b)).filter(b=>b!=null);return}}let g=s.parentNode;if(g){for(let y of l)if(T(y),y.parentNode===g)try{g.removeChild(y);}catch(h){chunkGYDP6MFV_js.b(chunkGYDP6MFV_js.a.DOM_CLEANUP_FAILED,{operation:"removeChild"},h);}}l=[],c=[];let L=document.createDocumentFragment();S(u,L),g&&(l=Array.from(L.childNodes),g.insertBefore(L,s.nextSibling));});});return V(s,m),t?s:p}if(e.type==="fragment"){let i=document.createDocumentFragment();for(let s of e.children)S(s,i);return t&&x.appendChild(t,i),i}let n=x.createNode(e.type,e.props),o=ze(n,e.props);o.length>0&&W.set(n,new Set(o));for(let i of e.children)S(i,n);t&&x.appendChild(t,n);let r=e.props.ref;return r&&(typeof r=="function"?(r(n),V(n,()=>{r(null);})):typeof r=="object"&&"current"in r&&(r.current=n,V(n,()=>{r.current=null;}))),n}return null}var ne=Symbol("uninitialized");function ze(e,t){let n=[],o=[];for(let r in t){if(r.startsWith("on"))continue;let i=t[r];(chunkXJHWMHKF_js.g(i)||typeof i=="function")&&o.push([r,i]);}for(let[r,i]of o)if(chunkXJHWMHKF_js.f(i)){let s=ne,p=chunkWWEWRI6S_js.c(()=>{let l=i();if(l!==s){let c=s===ne?void 0:s;re(()=>{x.updateNode(e,{[r]:c},{[r]:l});}),s=l;}});n.push(p);}else {let s=ne,p=chunkWWEWRI6S_js.c(()=>{try{let l=i();if(l!==s){let c=s===ne?void 0:s;re(()=>{x.updateNode(e,{[r]:c},{[r]:l});}),s=l;}}catch(l){chunkGYDP6MFV_js.b(chunkGYDP6MFV_js.a.DOM_CLEANUP_FAILED,{operation:"updateNode",prop:r},l);}});n.push(p);}return n}function T(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)T(o);}}function Ae(e){let t=null,n=null,o=null;return {render(r){let i=o===r;!i&&n&&(T(n),e.childNodes.length===1?e.removeChild(n):e.innerHTML="",n=null),t&&(t(),t=null),t=chunkWWEWRI6S_js.c(()=>{!i&&e.firstChild&&(e.childNodes.length===1?e.removeChild(e.firstChild):e.innerHTML=""),n=S(r,e),o=r;});},unmount(){t&&(t(),t=null),T(e),e.childNodes.length===1?e.removeChild(e.firstChild):e.innerHTML="",n=null,o=null;}}}function vt(e,t){return t.innerHTML="",S(e,t)}function Et(e){return Ae(e)}function _t(e){if(typeof document>"u")return null;let t=e.mount||document.body,n=document.createComment("portal"),o=null;return o=S(e.children,t),chunkWWEWRI6S_js.d(()=>{o&&(T(o),o.parentNode===t&&t.removeChild(o));}),n}
2
+ exports.a=le;exports.b=x;exports.c=ae;exports.d=fe;exports.e=S;exports.f=Ae;exports.g=vt;exports.h=Et;exports.i=_t;//# sourceMappingURL=chunk-5ICRQIS2.js.map
3
+ //# sourceMappingURL=chunk-5ICRQIS2.js.map