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.
- package/README.md +5 -5
- package/dist/{DrawText-ngwNNh8O.d.ts → DrawText-CVAKQ5wZ.d.cts} +42 -42
- package/dist/{DrawText-ccZrs3Xs.d.cts → DrawText-Dlh1L1Ar.d.ts} +42 -42
- package/dist/advanced.d.cts +1 -1
- package/dist/advanced.d.ts +1 -1
- package/dist/advanced.js +1 -1
- package/dist/advanced.js.map +1 -1
- package/dist/advanced.mjs +1 -1
- package/dist/advanced.mjs.map +1 -1
- package/dist/canvas.d.cts +5 -6
- package/dist/canvas.d.ts +5 -6
- package/dist/canvas.js +1 -1
- package/dist/canvas.mjs +1 -1
- package/dist/chunk-5ICRQIS2.js +3 -0
- package/dist/chunk-5ICRQIS2.js.map +1 -0
- package/dist/chunk-5K55ASOD.mjs +3 -0
- package/dist/chunk-5K55ASOD.mjs.map +1 -0
- package/dist/chunk-AZEHBSBG.js +3 -0
- package/dist/chunk-AZEHBSBG.js.map +1 -0
- package/dist/chunk-BBNYMXE7.mjs +2 -0
- package/dist/chunk-BBNYMXE7.mjs.map +1 -0
- package/dist/{chunk-WXEHDEIH.js → chunk-DZ7L3SHV.js} +2 -2
- package/dist/{chunk-WXEHDEIH.js.map → chunk-DZ7L3SHV.js.map} +1 -1
- package/dist/chunk-ECYYIQEX.mjs +3 -0
- package/dist/chunk-ECYYIQEX.mjs.map +1 -0
- package/dist/chunk-FDMJHFN7.mjs +2 -0
- package/dist/chunk-FDMJHFN7.mjs.map +1 -0
- package/dist/chunk-GKJQEOP7.mjs +2 -0
- package/dist/{chunk-PVPY55Z7.mjs.map → chunk-GKJQEOP7.mjs.map} +1 -1
- package/dist/chunk-GYDP6MFV.js +3 -0
- package/dist/chunk-GYDP6MFV.js.map +1 -0
- package/dist/chunk-HB5VPQTB.mjs +2 -0
- package/dist/chunk-HB5VPQTB.mjs.map +1 -0
- package/dist/chunk-OPAAGNBO.mjs +2 -0
- package/dist/{chunk-HLPVL6EK.mjs.map → chunk-OPAAGNBO.mjs.map} +1 -1
- package/dist/chunk-QPCIDSMM.js +2 -0
- package/dist/chunk-QPCIDSMM.js.map +1 -0
- package/dist/chunk-QZIX4FXS.mjs +2 -0
- package/dist/chunk-QZIX4FXS.mjs.map +1 -0
- package/dist/{chunk-63AW5ZOC.js → chunk-RMN5IPS5.js} +2 -2
- package/dist/{chunk-63AW5ZOC.js.map → chunk-RMN5IPS5.js.map} +1 -1
- package/dist/chunk-WWEWRI6S.js +2 -0
- package/dist/chunk-WWEWRI6S.js.map +1 -0
- package/dist/chunk-XJHWMHKF.js +2 -0
- package/dist/chunk-XJHWMHKF.js.map +1 -0
- package/dist/chunk-Y6KKAHLS.mjs +3 -0
- package/dist/chunk-Y6KKAHLS.mjs.map +1 -0
- package/dist/chunk-YPVRQKMW.js +2 -0
- package/dist/chunk-YPVRQKMW.js.map +1 -0
- package/dist/{components-CxnAnbpI.d.cts → components-BMbqsbMY.d.cts} +5 -5
- package/dist/{components-B7KQ8C-i.d.ts → components-C83mBQXW.d.ts} +5 -5
- package/dist/{effect-14CxUU8r.d.ts → core-CxHP8991.d.cts} +9 -1
- package/dist/{effect-14CxUU8r.d.cts → core-D0ggvjX3.d.ts} +9 -1
- package/dist/core.d.cts +2 -80
- package/dist/core.d.ts +2 -80
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/dom.d.cts +2 -2
- package/dist/dom.d.ts +2 -2
- package/dist/dom.js +1 -1
- package/dist/dom.js.map +1 -1
- package/dist/dom.mjs +1 -1
- package/dist/dom.mjs.map +1 -1
- package/dist/effect-554ONNZR.js +2 -0
- package/dist/{effect-K45UU3N4.js.map → effect-554ONNZR.js.map} +1 -1
- package/dist/effect-T2GVIS3T.mjs +2 -0
- package/dist/{effect-3LUCHSAZ.mjs.map → effect-T2GVIS3T.mjs.map} +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/interactive.d.cts +5 -5
- package/dist/interactive.d.ts +5 -5
- package/dist/interactive.js +1 -1
- package/dist/interactive.js.map +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/{portal-NLlE-fNZ.d.cts → portal-BK_0Z0hE.d.cts} +2 -2
- package/dist/{portal-CVqrpmHd.d.ts → portal-CbguxtuQ.d.ts} +2 -2
- package/dist/primitives/motion.js +1 -1
- package/dist/primitives/motion.mjs +1 -1
- package/dist/primitives/ui.d.cts +3 -3
- package/dist/primitives/ui.d.ts +3 -3
- package/dist/primitives/ui.js +1 -1
- package/dist/primitives/ui.js.map +1 -1
- package/dist/primitives/ui.mjs +1 -1
- package/dist/primitives/ui.mjs.map +1 -1
- package/dist/primitives.d.cts +4 -5
- package/dist/primitives.d.ts +4 -5
- package/dist/primitives.js +1 -1
- package/dist/primitives.js.map +1 -1
- package/dist/primitives.mjs +1 -1
- package/dist/primitives.mjs.map +1 -1
- package/dist/router.d.cts +3 -3
- package/dist/router.d.ts +3 -3
- package/dist/router.js +1 -1
- package/dist/router.mjs +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +1 -1
- package/dist/server.mjs.map +1 -1
- package/dist/state-DitsMyev.d.cts +96 -0
- package/dist/state-DitsMyev.d.ts +96 -0
- package/dist/state-RYKSC35A.mjs +2 -0
- package/dist/state-RYKSC35A.mjs.map +1 -0
- package/dist/state-XUXPMCFJ.js +2 -0
- package/dist/state-XUXPMCFJ.js.map +1 -0
- package/dist/test-exports.d.cts +37 -7
- package/dist/test-exports.d.ts +37 -7
- package/dist/test-exports.js +1 -1
- package/dist/test-exports.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-3AWR7IKE.js +0 -2
- package/dist/chunk-3AWR7IKE.js.map +0 -1
- package/dist/chunk-3BQXIHYI.mjs +0 -3
- package/dist/chunk-3BQXIHYI.mjs.map +0 -1
- package/dist/chunk-5236IK5I.js +0 -2
- package/dist/chunk-5236IK5I.js.map +0 -1
- package/dist/chunk-6K44QCMT.mjs +0 -3
- package/dist/chunk-6K44QCMT.mjs.map +0 -1
- package/dist/chunk-7Q4UE442.mjs +0 -2
- package/dist/chunk-7Q4UE442.mjs.map +0 -1
- package/dist/chunk-AJT35P3Z.js +0 -3
- package/dist/chunk-AJT35P3Z.js.map +0 -1
- package/dist/chunk-AYQMU7XC.js +0 -3
- package/dist/chunk-AYQMU7XC.js.map +0 -1
- package/dist/chunk-B7VP6HBY.mjs +0 -2
- package/dist/chunk-B7VP6HBY.mjs.map +0 -1
- package/dist/chunk-HLPVL6EK.mjs +0 -2
- package/dist/chunk-KJPIJNFH.mjs +0 -2
- package/dist/chunk-KJPIJNFH.mjs.map +0 -1
- package/dist/chunk-PVPY55Z7.mjs +0 -2
- package/dist/chunk-Q7WT5IIF.mjs +0 -3
- package/dist/chunk-Q7WT5IIF.mjs.map +0 -1
- package/dist/chunk-S3EDPCYT.js +0 -3
- package/dist/chunk-S3EDPCYT.js.map +0 -1
- package/dist/chunk-WOHSSPKD.js +0 -2
- package/dist/chunk-WOHSSPKD.js.map +0 -1
- package/dist/effect-3LUCHSAZ.mjs +0 -2
- package/dist/effect-K45UU3N4.js +0 -2
- package/dist/signal-2QUI7H7B.js +0 -2
- package/dist/signal-2QUI7H7B.js.map +0 -1
- package/dist/signal-C6936A3J.d.cts +0 -175
- package/dist/signal-C6936A3J.d.ts +0 -175
- package/dist/signal-L3ZWGOVT.mjs +0 -2
- 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 {
|
|
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 |
|
|
153
|
-
y: number |
|
|
154
|
-
width: number |
|
|
155
|
-
height: number |
|
|
156
|
-
fill?: string |
|
|
157
|
-
stroke?: string |
|
|
158
|
-
strokeWidth?: number |
|
|
159
|
-
opacity?: 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 |
|
|
166
|
-
y: number |
|
|
167
|
-
radius: number |
|
|
168
|
-
fill?: string |
|
|
169
|
-
stroke?: string |
|
|
170
|
-
strokeWidth?: number |
|
|
171
|
-
opacity?: 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 |
|
|
178
|
-
fill?: string |
|
|
179
|
-
stroke?: string |
|
|
180
|
-
strokeWidth?: number |
|
|
181
|
-
opacity?: 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 |
|
|
188
|
-
y: number |
|
|
189
|
-
text: string |
|
|
190
|
-
fill?: string |
|
|
191
|
-
fontSize?: 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 |
|
|
202
|
-
y1: number |
|
|
203
|
-
x2: number |
|
|
204
|
-
y2: number |
|
|
205
|
-
stroke?: string |
|
|
206
|
-
strokeWidth?: number |
|
|
207
|
-
opacity?: 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 |
|
|
214
|
-
y: number |
|
|
215
|
-
radius: number |
|
|
216
|
-
startAngle: number |
|
|
217
|
-
endAngle: 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 |
|
|
220
|
-
stroke?: string |
|
|
221
|
-
strokeWidth?: number |
|
|
222
|
-
opacity?: 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 {
|
|
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 |
|
|
153
|
-
y: number |
|
|
154
|
-
width: number |
|
|
155
|
-
height: number |
|
|
156
|
-
fill?: string |
|
|
157
|
-
stroke?: string |
|
|
158
|
-
strokeWidth?: number |
|
|
159
|
-
opacity?: 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 |
|
|
166
|
-
y: number |
|
|
167
|
-
radius: number |
|
|
168
|
-
fill?: string |
|
|
169
|
-
stroke?: string |
|
|
170
|
-
strokeWidth?: number |
|
|
171
|
-
opacity?: 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 |
|
|
178
|
-
fill?: string |
|
|
179
|
-
stroke?: string |
|
|
180
|
-
strokeWidth?: number |
|
|
181
|
-
opacity?: 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 |
|
|
188
|
-
y: number |
|
|
189
|
-
text: string |
|
|
190
|
-
fill?: string |
|
|
191
|
-
fontSize?: 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 |
|
|
202
|
-
y1: number |
|
|
203
|
-
x2: number |
|
|
204
|
-
y2: number |
|
|
205
|
-
stroke?: string |
|
|
206
|
-
strokeWidth?: number |
|
|
207
|
-
opacity?: 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 |
|
|
214
|
-
y: number |
|
|
215
|
-
radius: number |
|
|
216
|
-
startAngle: number |
|
|
217
|
-
endAngle: 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 |
|
|
220
|
-
stroke?: string |
|
|
221
|
-
strokeWidth?: number |
|
|
222
|
-
opacity?: 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
|
/**
|
package/dist/advanced.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
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
|
|
package/dist/advanced.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
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
|
|
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
|
package/dist/advanced.js.map
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/advanced.mjs.map
CHANGED
|
@@ -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 './
|
|
1
|
+
export { e as effect } from './core-CxHP8991.cjs';
|
|
2
2
|
export { r as root } from './owner-QS9tPwPr.cjs';
|
|
3
|
-
import {
|
|
4
|
-
export { b as
|
|
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 |
|
|
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 './
|
|
1
|
+
export { e as effect } from './core-D0ggvjX3.js';
|
|
2
2
|
export { r as root } from './owner-QS9tPwPr.js';
|
|
3
|
-
import {
|
|
4
|
-
export { b as
|
|
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 |
|
|
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
|
|
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-
|
|
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,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}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
|