@arcmantle/lit-jsx 1.1.8 → 1.1.10
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.
|
@@ -1,11 +1,17 @@
|
|
|
1
|
-
import type { TemplateResult } from 'lit-html';
|
|
2
1
|
import type { DirectiveResult } from 'lit-html/async-directive.js';
|
|
3
2
|
import type { RefOrCallback } from 'lit-html/directives/ref.js';
|
|
4
3
|
declare global {
|
|
5
4
|
namespace LitJSX {
|
|
5
|
+
interface ExcludedComponentProps {
|
|
6
|
+
'html-element': keyof HTMLElement;
|
|
7
|
+
}
|
|
8
|
+
type ExcludedKeys = {
|
|
9
|
+
[K in keyof ExcludedComponentProps]: ExcludedComponentProps[K];
|
|
10
|
+
}[keyof ExcludedComponentProps];
|
|
6
11
|
type HTMLElementAssignableProps<T extends object & Record<string, any>> = Partial<TrimReadonly<T>>;
|
|
7
12
|
type HTMLElementProps = HTMLElementAssignableProps<HTMLElement>;
|
|
8
|
-
type JSXElementProps<T extends object> =
|
|
13
|
+
type JSXElementProps<T extends object> = SpecialProps<HTMLElementAssignableProps<T>>;
|
|
14
|
+
type SpecialProps<T extends object = object> = Omit<T, 'style'> & {
|
|
9
15
|
children?: LitJSX.Child;
|
|
10
16
|
ref?: RefOrCallback<HTMLElementAssignableProps<T>>;
|
|
11
17
|
classList?: {
|
|
@@ -36,10 +42,10 @@ declare global {
|
|
|
36
42
|
}, P>;
|
|
37
43
|
}[keyof T];
|
|
38
44
|
type TrimReadonly<T> = Pick<T, WritableKeys<T>>;
|
|
39
|
-
type TrimHTMLElement<T extends object> = TrimReadonly<Omit<T,
|
|
45
|
+
type TrimHTMLElement<T extends object> = TrimReadonly<Omit<T, ExcludedKeys | 'constructor'>>;
|
|
40
46
|
type JSXProps<T extends object> = TrimHTMLElement<T> & Omit<HTMLElementProps, keyof TrimHTMLElement<T>>;
|
|
41
47
|
type Child = unknown;
|
|
42
|
-
type Element =
|
|
48
|
+
type Element = unknown;
|
|
43
49
|
type AnyTagName = string & Record<never, never>;
|
|
44
50
|
interface IntrinsicElements extends NativeHTMLElements, NativeSVGElements, NativeMathMLElements, SemanticTags {
|
|
45
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-core.d.ts","sourceRoot":"","sources":["../../src/shared/jsx-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"jsx-core.d.ts","sourceRoot":"","sources":["../../src/shared/jsx-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM,CAAC;QAEhB,UAAU,sBAAsB;YAC/B,cAAc,EAAE,MAAM,WAAW,CAAC;SAClC;QAED,KAAK,YAAY,GAAG;aAClB,CAAC,IAAI,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,CAAC,CAAC;SAC9D,CAAC,MAAM,sBAAsB,CAAC,CAAC;QAEhC,KAAK,0BAA0B,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACrE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1B,KAAK,gBAAgB,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAEhE,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI,YAAY,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;QAErF,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;YACjE,QAAQ,CAAC,EAAG,MAAM,CAAC,KAAK,CAAC;YACzB,GAAG,CAAC,EAAQ,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,SAAS,CAAC,EAAE;gBAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;aAAE,CAAC;YAClD,SAAS,CAAC,EAAE,aAAa,CAAC;YAC1B,KAAK,CAAC,EAAM;gBAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;aAAE,GAAG,MAAM,CAAC;YAC3D,KAAK,CAAC,EAAM,aAAa,GAAG,MAAM,CAAC;YAEnC;;;eAGG;YACH,SAAS,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;SAC1D,GAAG;YACH,CAAC,GAAG,EAAE,QAAS,MAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;SAC9C,CAAC;QAEF,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;aACrE,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC,CAAC;QAEF,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IACxB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAC9B,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAE5C,KAAK,YAAY,CAAC,CAAC,IAAI;aACrB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CACzB;iBAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAAE,EAClB;gBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAAE,EAC5B,CAAC,CACD;SACD,CAAC,MAAM,CAAC,CAAC,CAAC;QAEX,KAAK,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhD,KAAK,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI,YAAY,CACpD,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,CACrC,CAAC;QAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,IAC3B,eAAe,CAAC,CAAC,CAAC,GAClB,IAAI,CAAC,gBAAgB,EAAE,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,KAAK,KAAK,GAAG,OAAO,CAAC;QACrB,KAAK,OAAO,GAAG,OAAO,CAAC;QAEvB,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEhD,UAAU,iBAAkB,SAC3B,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY;SAAG;QAEhB,KAAK,OAAO,GAAG,MAAM,iBAAiB,GAAG,UAAU,CAAC;QAEpD,KAAK,eAAe,CAAC,GAAG,SAAS,MAAM,IAAI,GAAG,SAAS,MAAM,iBAAiB,GAC3E,iBAAiB,CAAC,GAAG,CAAC,GACtB,CAAC,GAAG,SAAS,MAAM,qBAAqB,GACvC,eAAe,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAC3C,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;QAElC,KAAK,qBAAqB,CAAC,GAAG,SAAS,MAAM,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEzF,KAAK,UAAU,CAAC,GAAG,SAAS,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,YAAY,KAAK,OAAO,CAAC,CAAC;QAEjG,UAAU,YAAY;YACrB;;;eAGG;YACH,MAAM,CAAC,EAAE,IAAI,CAAC;SACd;QAED,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;QAC9D,KAAK,cAAc,CAAC,QAAQ,SAAS,MAAM,GAAG,GAAG,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,QAAQ,CAAC;QAE/F,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IACzC,SAAS,CAAC,CAAC,CAAC,GACZ,cAAc,CAAC,GAAG,CAAC,CAAC;QAEvB,KAAK,cAAc,CAAC,CAAC,IACpB,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAC/B,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAC/D,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAChF,EAAE,CAAC;KACP;IAGD,IAAI,EAAE,EAAE;QACP;;;;WAIG;QACH,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB;;;;WAIG;QACH,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;QAClC;;;;;;;;WAQG;QACH,GAAG,EAAG,CAAC,GAAG,SAAS,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACvE,CAAC;CACF"}
|
|
@@ -23,8 +23,9 @@ declare global {
|
|
|
23
23
|
* lit-jsx uses this to:
|
|
24
24
|
* - require `static: true` for class-based component tags
|
|
25
25
|
* - preserve TSX generic arguments on class instances (avoid `unknown` props)
|
|
26
|
+
* - provide proper type inference for functional component props
|
|
26
27
|
*/
|
|
27
|
-
type LibraryManagedAttributes<C, P> = C extends abstract new (...args: any[]) => infer I ? (P extends I ? LitJSX.JSXProps<
|
|
28
|
+
type LibraryManagedAttributes<C, P extends object> = C extends abstract new (...args: any[]) => infer I ? (P extends I ? LitJSX.SpecialProps<LitJSX.JSXProps<P>> & LitJSX.StaticMarker : LitJSX.SpecialProps<LitJSX.ComponentProps<C>> & LitJSX.StaticMarker) : (C extends keyof LitJSX.IntrinsicElements ? LitJSX.IntrinsicElementProps<C> : P);
|
|
28
29
|
/**
|
|
29
30
|
* TSX hook: controls the instance type used for class components.
|
|
30
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-hooks.d.ts","sourceRoot":"","sources":["../../src/shared/jsx-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC;AAGV;;GAEG;AAEH,OAAO,CAAC,MAAM,CAAC;IAGd,UAAU,GAAG,CAAC;QACb;;;;WAIG;QACH,KAAK,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B;;;;;WAKG;QACH,KAAK,WAAW,GACb,MAAM,MAAM,CAAC,iBAAiB,GAC9B,CAAC,MAAM,GAAG,EAAE,CAAC,GACb,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE7B
|
|
1
|
+
{"version":3,"file":"jsx-hooks.d.ts","sourceRoot":"","sources":["../../src/shared/jsx-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC;AAGV;;GAEG;AAEH,OAAO,CAAC,MAAM,CAAC;IAGd,UAAU,GAAG,CAAC;QACb;;;;WAIG;QACH,KAAK,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B;;;;;WAKG;QACH,KAAK,WAAW,GACb,MAAM,MAAM,CAAC,iBAAiB,GAC9B,CAAC,MAAM,GAAG,EAAE,CAAC,GACb,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE7B;;;;;;;WAOG;QACH,KAAK,wBAAwB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAC9C,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GAEjD,CAAC,CAAC,SAAS,CAAC,GAEX,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,GAE7D,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,GAErE,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,iBAAiB,GACxC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAE/B,CAAC,CAAC,CAAC;QAER;;;;WAIG;QACH,UAAU,YAAY;SAAG;QAEzB;;;;WAIG;QACH,UAAU,yBAAyB;SAAG;QAEtC;;WAEG;QACH,UAAU,wBAAwB;YAAG,QAAQ,EAAE,EAAE,CAAC;SAAE;QAEpD,+EAA+E;QAC/E,UAAU,mBAAmB;SAAG;QAEhC,wFAAwF;QACxF,UAAU,wBAAwB,CAAC,EAAE;SAAI;QAEzC,kFAAkF;QAClF,UAAU,UAAU;SAAG;QAEvB,+CAA+C;QAC/C,KAAK,QAAQ,GAAG,OAAO,CAAC;QAExB;;;;;WAKG;QACH,UAAU,iBAAkB,SAAQ,MAAM,CAAC,iBAAiB;SAAG;KAC/D;CAED"}
|
package/package.json
CHANGED
package/src/shared/jsx-core.ts
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
import type { TemplateResult } from 'lit-html';
|
|
2
1
|
import type { DirectiveResult } from 'lit-html/async-directive.js';
|
|
3
2
|
import type { RefOrCallback } from 'lit-html/directives/ref.js';
|
|
4
3
|
|
|
5
4
|
|
|
6
5
|
declare global {
|
|
7
6
|
namespace LitJSX {
|
|
7
|
+
|
|
8
|
+
interface ExcludedComponentProps {
|
|
9
|
+
'html-element': keyof HTMLElement;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type ExcludedKeys = {
|
|
13
|
+
[K in keyof ExcludedComponentProps]: ExcludedComponentProps[K];
|
|
14
|
+
}[keyof ExcludedComponentProps];
|
|
15
|
+
|
|
8
16
|
type HTMLElementAssignableProps<T extends object & Record<string, any>> =
|
|
9
17
|
Partial<TrimReadonly<T>>;
|
|
10
18
|
|
|
11
19
|
type HTMLElementProps = HTMLElementAssignableProps<HTMLElement>;
|
|
12
20
|
|
|
13
|
-
type JSXElementProps<T extends object> =
|
|
21
|
+
type JSXElementProps<T extends object> = SpecialProps<HTMLElementAssignableProps<T>>;
|
|
22
|
+
|
|
23
|
+
type SpecialProps<T extends object = object> = Omit<T, 'style'> & {
|
|
14
24
|
children?: LitJSX.Child;
|
|
15
25
|
ref?: RefOrCallback<HTMLElementAssignableProps<T>>;
|
|
16
26
|
classList?: { [k: string]: boolean | undefined; };
|
|
@@ -45,15 +55,16 @@ declare global {
|
|
|
45
55
|
|
|
46
56
|
type TrimReadonly<T> = Pick<T, WritableKeys<T>>;
|
|
47
57
|
|
|
48
|
-
type TrimHTMLElement<T extends object> = TrimReadonly<
|
|
58
|
+
type TrimHTMLElement<T extends object> = TrimReadonly<
|
|
59
|
+
Omit<T, ExcludedKeys | 'constructor'>
|
|
60
|
+
>;
|
|
49
61
|
|
|
50
|
-
type JSXProps<T extends object>
|
|
51
|
-
|
|
62
|
+
type JSXProps<T extends object>
|
|
63
|
+
= TrimHTMLElement<T>
|
|
52
64
|
& Omit<HTMLElementProps, keyof TrimHTMLElement<T>>;
|
|
53
65
|
|
|
54
66
|
type Child = unknown;
|
|
55
|
-
|
|
56
|
-
type Element = TemplateResult<any>;
|
|
67
|
+
type Element = unknown;
|
|
57
68
|
|
|
58
69
|
type AnyTagName = string & Record<never, never>;
|
|
59
70
|
|
package/src/shared/jsx-hooks.ts
CHANGED
|
@@ -33,15 +33,21 @@ declare global {
|
|
|
33
33
|
* lit-jsx uses this to:
|
|
34
34
|
* - require `static: true` for class-based component tags
|
|
35
35
|
* - preserve TSX generic arguments on class instances (avoid `unknown` props)
|
|
36
|
+
* - provide proper type inference for functional component props
|
|
36
37
|
*/
|
|
37
|
-
type LibraryManagedAttributes<C, P>
|
|
38
|
+
type LibraryManagedAttributes<C, P extends object>
|
|
38
39
|
= C extends abstract new (...args: any[]) => infer I
|
|
40
|
+
// if C is a class component constructor
|
|
39
41
|
? (P extends I
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
// if props P are compatible with instance I
|
|
43
|
+
? LitJSX.SpecialProps<LitJSX.JSXProps<P>> & LitJSX.StaticMarker
|
|
44
|
+
// else fall back to general props for I
|
|
45
|
+
: LitJSX.SpecialProps<LitJSX.ComponentProps<C>> & LitJSX.StaticMarker)
|
|
46
|
+
// if C is a functional component or intrinsic element
|
|
42
47
|
: (C extends keyof LitJSX.IntrinsicElements
|
|
43
48
|
? LitJSX.IntrinsicElementProps<C>
|
|
44
|
-
|
|
49
|
+
// intrinsic element
|
|
50
|
+
: P);
|
|
45
51
|
|
|
46
52
|
/**
|
|
47
53
|
* TSX hook: controls the instance type used for class components.
|