@praxisjs/jsx 0.2.1 → 0.3.1
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/CHANGELOG.md +34 -0
- package/dist/jsx-runtime.d.ts +14 -5
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/jsx-runtime.js +1 -1
- package/dist/jsx-runtime.js.map +1 -1
- package/package.json +2 -2
- package/src/jsx-runtime.ts +42 -25
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# @praxisjs/jsx
|
|
2
2
|
|
|
3
|
+
## 0.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 966efdc: Fix JSX prop typing for `StatelessComponent` to automatically accept reactive values (`() => T`) without requiring manual declaration. `LibraryManagedAttributes` now uses `InstancePropsOf` directly instead of intersecting with the raw constructor props, preventing the erroneous `T | (T & (() => T))` type expansion.
|
|
8
|
+
|
|
9
|
+
`InstancePropsOf` now uses `_rawProps` to infer props for class components decorated with `@Prop()`, providing accurate JSX prop types without manual interface declarations.
|
|
10
|
+
|
|
11
|
+
The `@Emit` decorator type signature was relaxed from `unknown` to `any` to allow broader method compatibility. Devtools `Panel` and `DevToolsApp` components were refactored to use `@Prop()` and `@Emit()` decorators instead of manual props casting.
|
|
12
|
+
|
|
13
|
+
- @praxisjs/runtime@0.2.2
|
|
14
|
+
|
|
15
|
+
## 0.3.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 339a97d: Component props now accept reactive getters in JSX. Any prop can be passed as a plain value (static) or as an arrow function (reactive) — the runtime tracks signal dependencies inside the getter and updates the DOM automatically.
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
// static — read once at mount
|
|
23
|
+
<Counter value={this.count} />
|
|
24
|
+
|
|
25
|
+
// reactive — updates whenever this.count changes
|
|
26
|
+
<Counter value={() => this.count} />
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This applies to both `StatelessComponent` (via the generic props interface) and `StatefulComponent` (via `@Prop()`, which already unwrapped getters at runtime — now the types reflect this).
|
|
30
|
+
|
|
31
|
+
**Changes:**
|
|
32
|
+
|
|
33
|
+
- `PropsOf<T>` now maps each prop key `K` to `Reactive<P[K]>` (`P[K] | (() => P[K])`), so the JSX type checker accepts getters for any component prop without requiring the component author to annotate them manually.
|
|
34
|
+
- `InstancePropsOf<C>` (used for `StatefulComponent` `@Prop()` inference) likewise wraps each inferred prop with `Reactive<>`.
|
|
35
|
+
- `Reactive<T>` is now exported from `@praxisjs/jsx` and `@praxisjs/jsx/jsx-runtime`.
|
|
36
|
+
|
|
3
37
|
## 0.2.1
|
|
4
38
|
|
|
5
39
|
### Patch Changes
|
package/dist/jsx-runtime.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Children } from "@praxisjs/shared";
|
|
2
2
|
import { type ComponentConstructor } from "@praxisjs/shared/internal";
|
|
3
3
|
export declare const Fragment: unique symbol;
|
|
4
|
-
type PropsOf<T> = T extends string ? JSX.IntrinsicElements[T] : T extends ComponentConstructor<infer P> ?
|
|
4
|
+
type PropsOf<T> = T extends string ? JSX.IntrinsicElements[T] : T extends ComponentConstructor<infer P> ? {
|
|
5
|
+
[K in keyof P]: Reactive<P[K]>;
|
|
6
|
+
} : Record<string, unknown>;
|
|
5
7
|
type Reactive<T> = T | (() => T);
|
|
6
8
|
export declare function jsx<T extends string | ComponentConstructor | symbol>(type: T, props: PropsOf<T> & {
|
|
7
9
|
children?: unknown;
|
|
@@ -13,12 +15,19 @@ export declare namespace JSX {
|
|
|
13
15
|
interface GlobalAttributes {
|
|
14
16
|
key?: string | number | symbol;
|
|
15
17
|
}
|
|
18
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
16
19
|
type InstancePropsOf<C> = C extends {
|
|
17
20
|
prototype: infer I;
|
|
18
|
-
} ? {
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
21
|
+
} ? IsAny<I> extends true ? never : I extends {
|
|
22
|
+
_rawProps: infer RawProps extends object;
|
|
23
|
+
} ? [string] extends [keyof RawProps] ? {
|
|
24
|
+
[K in keyof I as K extends "_defaults" | "_stateDirty" | "_rawProps" | "_mounted" | "_anchor" | "_setProps" | "props" | "onBeforeMount" | "onMount" | "onUnmount" | "onError" | "render" | "onUpdate" ? never : I[K] extends (...args: unknown[]) => unknown ? never : K]?: Reactive<I[K]>;
|
|
25
|
+
} : {
|
|
26
|
+
[K in keyof RawProps]?: Reactive<RawProps[K]>;
|
|
27
|
+
} : never : never;
|
|
28
|
+
export type LibraryManagedAttributes<C, P> = C extends string ? P & GlobalAttributes : [InstancePropsOf<C>] extends [never] ? C extends new (props: infer CtorProps) => unknown ? {
|
|
29
|
+
[K in keyof CtorProps]?: Reactive<CtorProps[K]>;
|
|
30
|
+
} & GlobalAttributes : Record<string, unknown> & GlobalAttributes : InstancePropsOf<C> & GlobalAttributes;
|
|
22
31
|
export interface IntrinsicElements {
|
|
23
32
|
div: HTMLAttributes;
|
|
24
33
|
span: HTMLAttributes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/jsx-runtime.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mountElement, mountComponent, getCurrentScope, } from "@praxisjs/runtime";
|
|
2
|
-
import { isComponent } from "@praxisjs/shared/internal";
|
|
2
|
+
import { isComponent, } from "@praxisjs/shared/internal";
|
|
3
3
|
export const Fragment = Symbol("Fragment");
|
|
4
4
|
export function jsx(type, props) {
|
|
5
5
|
const scope = getCurrentScope();
|
package/dist/jsx-runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,
|
|
1
|
+
{"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,GAEZ,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAU3C,MAAM,UAAU,GAAG,CACjB,IAAO,EACP,KAA0C;IAE1C,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAW,CAAC;QACtE,IAAI,QAAQ,YAAY,IAAI;YAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC,IAAI,EAAE,KAAgC,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,cAAc,CAAC,IAAI,EAAE,KAAgC,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisjs/jsx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"typescript": "^5.9.3"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@praxisjs/runtime": "0.2.
|
|
25
|
+
"@praxisjs/runtime": "0.2.2",
|
|
26
26
|
"@praxisjs/shared": "0.2.0"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
package/src/jsx-runtime.ts
CHANGED
|
@@ -4,14 +4,17 @@ import {
|
|
|
4
4
|
getCurrentScope,
|
|
5
5
|
} from "@praxisjs/runtime";
|
|
6
6
|
import type { Children } from "@praxisjs/shared";
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
isComponent,
|
|
9
|
+
type ComponentConstructor,
|
|
10
|
+
} from "@praxisjs/shared/internal";
|
|
8
11
|
|
|
9
12
|
export const Fragment = Symbol("Fragment");
|
|
10
13
|
|
|
11
14
|
type PropsOf<T> = T extends string
|
|
12
15
|
? JSX.IntrinsicElements[T]
|
|
13
16
|
: T extends ComponentConstructor<infer P>
|
|
14
|
-
? P
|
|
17
|
+
? { [K in keyof P]: Reactive<P[K]> }
|
|
15
18
|
: Record<string, unknown>;
|
|
16
19
|
|
|
17
20
|
type Reactive<T> = T | (() => T);
|
|
@@ -35,11 +38,7 @@ export function jsx<T extends string | ComponentConstructor | symbol>(
|
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
if (isComponent(type)) {
|
|
38
|
-
return mountComponent(
|
|
39
|
-
type,
|
|
40
|
-
props as Record<string, unknown>,
|
|
41
|
-
scope,
|
|
42
|
-
);
|
|
41
|
+
return mountComponent(type, props as Record<string, unknown>, scope);
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
return document.createComment("?");
|
|
@@ -56,29 +55,47 @@ export namespace JSX {
|
|
|
56
55
|
key?: string | number | symbol;
|
|
57
56
|
}
|
|
58
57
|
|
|
58
|
+
// Resolves to `true` when T is the `any` type.
|
|
59
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
60
|
+
|
|
59
61
|
// Infer props from the class instance properties
|
|
60
62
|
// (excludes lifecycle and methods)
|
|
61
63
|
type InstancePropsOf<C> = C extends { prototype: infer I }
|
|
62
|
-
?
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
64
|
+
? IsAny<I> extends true
|
|
65
|
+
? never // raw construct-type alias — prototype resolves to `any`
|
|
66
|
+
: I extends { _rawProps: infer RawProps extends object }
|
|
67
|
+
? [string] extends [keyof RawProps]
|
|
68
|
+
? {
|
|
69
|
+
[K in keyof I as K extends
|
|
70
|
+
| "_defaults"
|
|
71
|
+
| "_stateDirty"
|
|
72
|
+
| "_rawProps"
|
|
73
|
+
| "_mounted"
|
|
74
|
+
| "_anchor"
|
|
75
|
+
| "_setProps"
|
|
76
|
+
| "props"
|
|
77
|
+
| "onBeforeMount"
|
|
78
|
+
| "onMount"
|
|
79
|
+
| "onUnmount"
|
|
80
|
+
| "onError"
|
|
81
|
+
| "render"
|
|
82
|
+
| "onUpdate"
|
|
83
|
+
? never
|
|
84
|
+
: I[K] extends (...args: unknown[]) => unknown
|
|
85
|
+
? never
|
|
86
|
+
: K]?: Reactive<I[K]>;
|
|
87
|
+
}
|
|
88
|
+
: { [K in keyof RawProps]?: Reactive<RawProps[K]> }
|
|
89
|
+
: never
|
|
73
90
|
: never;
|
|
74
91
|
|
|
75
|
-
export type LibraryManagedAttributes<C, P> =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
?
|
|
80
|
-
:
|
|
81
|
-
|
|
92
|
+
export type LibraryManagedAttributes<C, P> = C extends string
|
|
93
|
+
? P & GlobalAttributes
|
|
94
|
+
: [InstancePropsOf<C>] extends [never]
|
|
95
|
+
? C extends new (props: infer CtorProps) => unknown
|
|
96
|
+
? { [K in keyof CtorProps]?: Reactive<CtorProps[K]> } & GlobalAttributes
|
|
97
|
+
: Record<string, unknown> & GlobalAttributes
|
|
98
|
+
: InstancePropsOf<C> & GlobalAttributes;
|
|
82
99
|
|
|
83
100
|
export interface IntrinsicElements {
|
|
84
101
|
div: HTMLAttributes;
|