@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> = Omit<HTMLElementAssignableProps<T>, 'style'> & {
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, keyof HTMLElement | 'constructor'>>;
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 = TemplateResult<any>;
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":"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"}
1
+ {"version":3,"file":"jsx-core.d.ts","sourceRoot":"","sources":["../../src/shared/jsx-core.ts"],"names":[],"mappings":"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"}
@@ -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<Extract<P, object>> & LitJSX.StaticMarker : LitJSX.ComponentProps<C> & LitJSX.StaticMarker) : (C extends keyof LitJSX.IntrinsicElements ? LitJSX.IntrinsicElementProps<C> : LitJSX.ComponentProps<C>);
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;;;;;;WAMG;QACH,KAAK,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAC/B,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAC,GACjD,CAAC,CAAC,SAAS,CAAC,GACX,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,GACzD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,GAChD,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,iBAAiB,GACxC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/B;;;;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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcmantle/lit-jsx",
3
- "version": "1.1.8",
3
+ "version": "1.1.10",
4
4
  "description": "A JSX runtime and compiler that transforms JSX into Lit templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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> = Omit<HTMLElementAssignableProps<T>, 'style'> & {
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<Omit<T, keyof HTMLElement | 'constructor'>>;
58
+ type TrimHTMLElement<T extends object> = TrimReadonly<
59
+ Omit<T, ExcludedKeys | 'constructor'>
60
+ >;
49
61
 
50
- type JSXProps<T extends object> =
51
- & TrimHTMLElement<T>
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
 
@@ -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
- ? LitJSX.JSXProps<Extract<P, object>> & LitJSX.StaticMarker
41
- : LitJSX.ComponentProps<C> & LitJSX.StaticMarker)
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
- : LitJSX.ComponentProps<C>);
49
+ // intrinsic element
50
+ : P);
45
51
 
46
52
  /**
47
53
  * TSX hook: controls the instance type used for class components.