@arcmantle/lit-jsx 1.1.13 → 1.1.15

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.
@@ -25,7 +25,7 @@ export declare const toComponent: <T extends {
25
25
  new (...args: any): any;
26
26
  tagName: string;
27
27
  }>(element: T) => ToComponent<InstanceType<T>>;
28
- export type ToComponent<T extends object = object> = (props: LitJSX.JSXProps<T> & {
28
+ export type ToComponent<T extends object = object> = (props: LitJSX.JSXElementProps<T> & {
29
29
  static: any;
30
30
  }) => string;
31
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"type-helpers.d.ts","sourceRoot":"","sources":["../../src/runtime/type-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE,EACjF,SAAS,CAAC,KACR,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAU7B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAChD,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;CAAE,KAAK,MAAM,CAAC;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,EAC1D,KAAK,CAAC,KACJ,KAAK,CAAC,CAAC,CAAe,CAAC;AAG1B,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,IACtD,CAAC,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;CAAE,KAAK,MAAM,CAAC"}
1
+ {"version":3,"file":"type-helpers.d.ts","sourceRoot":"","sources":["../../src/runtime/type-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS;IAAE,KAAI,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE,EACjF,SAAS,CAAC,KACR,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAU7B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAChD,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;CAAE,KAAK,MAAM,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,EAC1D,KAAK,CAAC,KACJ,KAAK,CAAC,CAAC,CAAe,CAAC;AAG1B,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,IACtD,CAAC,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC;CAAE,KAAK,MAAM,CAAC"}
@@ -29,31 +29,15 @@ declare global {
29
29
  } & {
30
30
  [P in keyof T as IsMandatory<T[P]> extends true ? never : P]?: T[P];
31
31
  };
32
- /**
33
- * Interface which can be used to exclude certain component props from being
34
- * mapped to HTMLElement props.
35
- *
36
- * For example, to exclude `ref` from being available in <MyElement>, \
37
- * you can create an extension like this:
38
- * ```
39
- * declare global {
40
- * namespace LitJSX {
41
- * interface ExcludedComponentProps {
42
- * 'arbitrary-name': 'ref';
43
- * }
44
- * }
45
- * }
46
- * ```
47
- */
48
- interface ExcludedComponentProps {
49
- 'html-element': keyof HTMLElement | 'constructor';
50
- }
51
- type ExcludedKeys = {
52
- [K in keyof ExcludedComponentProps]: ExcludedComponentProps[K];
53
- }[keyof ExcludedComponentProps];
54
- type IndexableObject = object & Record<string, any>;
55
- type HTMLElementAssignableProps<T extends IndexableObject> = Partial<TrimReadonly<T>>;
56
- type JSXElementProps<T extends object> = SpecialProps<HTMLElementAssignableProps<T>>;
32
+ type IfEquals<X, Y, A = X> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? A : never;
33
+ type WritableKeys<T> = {
34
+ [P in keyof T]-?: IfEquals<{
35
+ [Q in P]: T[P];
36
+ }, {
37
+ -readonly [Q in P]: T[P];
38
+ }, P>;
39
+ }[keyof T];
40
+ type TrimReadonly<T> = Pick<T, WritableKeys<T>>;
57
41
  interface DataProps {
58
42
  [key: `data-${string}`]: string | undefined;
59
43
  }
@@ -83,7 +67,7 @@ declare global {
83
67
  * Example: `<div ref={myRef}></div>` \
84
68
  * Example with callback: `<div ref={(el) => { ... }}></div>`
85
69
  */
86
- ref?: RefOrCallback<HTMLElementAssignableProps<T>>;
70
+ ref?: RefOrCallback<PartialExceptRequired<TrimReadonly<T>>>;
87
71
  /**
88
72
  * An object defining CSS classes.
89
73
  *
@@ -124,20 +108,10 @@ declare global {
124
108
  */
125
109
  directive?: DirectiveResult<any> | DirectiveResult<any>[];
126
110
  } & DataProps;
127
- type ElementMapToJSXElements<T extends IndexableObject> = {
111
+ type JSXElementProps<T extends object> = SpecialProps<PartialExceptRequired<TrimReadonly<T>>>;
112
+ type ElementMapToJSXElements<T extends Record<string, any>> = {
128
113
  [K in keyof T]: JSXElementProps<T[K]>;
129
114
  };
130
- type IfEquals<X, Y, A = X> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? A : never;
131
- type WritableKeys<T> = {
132
- [P in keyof T]-?: IfEquals<{
133
- [Q in P]: T[P];
134
- }, {
135
- -readonly [Q in P]: T[P];
136
- }, P>;
137
- }[keyof T];
138
- type TrimReadonly<T> = Pick<T, WritableKeys<T>>;
139
- type TrimHTMLElement<T extends object> = TrimReadonly<Omit<T, ExcludedKeys>>;
140
- type JSXProps<T extends object> = PartialExceptRequired<TrimHTMLElement<T>> & Partial<Omit<TrimReadonly<HTMLElement>, keyof TrimHTMLElement<T>>>;
141
115
  type Child = unknown;
142
116
  type Element = unknown;
143
117
  type AnyTagName = string & Record<never, never>;
@@ -149,7 +123,7 @@ declare global {
149
123
  type Component<P extends object = {}> = (props: P) => Element;
150
124
  type ClassComponent<Instance extends object = any> = abstract new (...args: any[]) => Instance;
151
125
  type ComponentLike<P extends object = object> = Component<P> | ClassComponent<any>;
152
- type ComponentProps<T> = T extends Component<infer P> ? P : T extends ClassComponent<infer I> ? JSXProps<Extract<I, object>> : T extends abstract new (...args: any[]) => infer I ? JSXProps<Extract<I, object>> : {};
126
+ type ComponentProps<T> = T extends Component<infer P> ? P : T extends ClassComponent<infer I> ? JSXElementProps<Extract<I, object>> : T extends abstract new (...args: any[]) => infer I ? JSXElementProps<Extract<I, object>> : {};
153
127
  }
154
128
  var as: {
155
129
  /**
@@ -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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"}
@@ -6,7 +6,7 @@ declare global {
6
6
  namespace JSX {
7
7
  type Element = LitJSX.Element;
8
8
  type ElementType = keyof LitJSX.IntrinsicElements | (string & {}) | LitJSX.ComponentLike<any>;
9
- type LibraryManagedAttributes<C, P extends object> = C extends abstract new (...args: any[]) => infer I ? (P extends I ? LitJSX.SpecialProps<LitJSX.JSXProps<P>> : LitJSX.SpecialProps<LitJSX.ComponentProps<C>>) : (C extends keyof LitJSX.IntrinsicElements ? LitJSX.IntrinsicElements[C] : P);
9
+ type LibraryManagedAttributes<C, P extends object> = C extends abstract new (...args: any[]) => infer I ? (P extends I ? LitJSX.JSXElementProps<P> : LitJSX.ComponentProps<C>) : (C extends keyof LitJSX.IntrinsicElements ? LitJSX.IntrinsicElements[C] : P);
10
10
  interface ElementClass {
11
11
  }
12
12
  interface ElementAttributesProperty {
@@ -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;QAMb,KAAK,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAQ9B,KAAK,WAAW,GACb,MAAM,MAAM,CAAC,iBAAiB,GAC9B,CAAC,MAAM,GAAG,EAAE,CAAC,GACb,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAU7B,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,GAEvC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAE/C,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,iBAAiB,GACxC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAE3B,CAAC,CAAC,CAAC;QAOR,UAAU,YAAY;SAAG;QAOzB,UAAU,yBAAyB;SAAG;QAKtC,UAAU,wBAAwB;YAAG,QAAQ,EAAE,EAAE,CAAC;SAAE;QAGpD,UAAU,mBAAmB;SAAG;QAGhC,UAAU,wBAAwB,CAAC,EAAE;SAAI;QAGzC,UAAU,UAAU;SAAG;QAGvB,KAAK,QAAQ,GAAG,OAAO,CAAC;QAQxB,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;QAMb,KAAK,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAQ9B,KAAK,WAAW,GACb,MAAM,MAAM,CAAC,iBAAiB,GAC9B,CAAC,MAAM,GAAG,EAAE,CAAC,GACb,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAU7B,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,eAAe,CAAC,CAAC,CAAC,GAEzB,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAE1B,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,iBAAiB,GACxC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAE3B,CAAC,CAAC,CAAC;QAOR,UAAU,YAAY;SAAG;QAOzB,UAAU,yBAAyB;SAAG;QAKtC,UAAU,wBAAwB;YAAG,QAAQ,EAAE,EAAE,CAAC;SAAE;QAGpD,UAAU,mBAAmB;SAAG;QAGhC,UAAU,wBAAwB,CAAC,EAAE;SAAI;QAGzC,UAAU,UAAU;SAAG;QAGvB,KAAK,QAAQ,GAAG,OAAO,CAAC;QAQxB,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.13",
3
+ "version": "1.1.15",
4
4
  "description": "A JSX runtime and compiler that transforms JSX into Lit templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,6 +48,9 @@
48
48
  "vitepress": "^1.6.4",
49
49
  "vitest": "^4.0.16"
50
50
  },
51
+ "publishConfig": {
52
+ "registry": "https://registry.npmjs.org/"
53
+ },
51
54
  "scripts": {
52
55
  "build": "rimraf dist && tsc --project ./src/tsconfig.json",
53
56
  "dev": "vite build --watch --mode=development",
@@ -36,7 +36,7 @@ export const toComponent = <T extends { new(...args: any): any; tagName: string;
36
36
  };
37
37
 
38
38
  export type ToComponent<T extends object = object> =
39
- (props: LitJSX.JSXProps<T> & { static: any; }) => string;
39
+ (props: LitJSX.JSXElementProps<T> & { static: any; }) => string;
40
40
 
41
41
 
42
42
  /**
@@ -34,36 +34,19 @@ declare global {
34
34
  [P in keyof T as IsMandatory<T[P]> extends true ? never : P]?: T[P]
35
35
  };
36
36
 
37
- /**
38
- * Interface which can be used to exclude certain component props from being
39
- * mapped to HTMLElement props.
40
- *
41
- * For example, to exclude `ref` from being available in <MyElement>, \
42
- * you can create an extension like this:
43
- * ```
44
- * declare global {
45
- * namespace LitJSX {
46
- * interface ExcludedComponentProps {
47
- * 'arbitrary-name': 'ref';
48
- * }
49
- * }
50
- * }
51
- * ```
52
- */
53
- interface ExcludedComponentProps {
54
- 'html-element': keyof HTMLElement | 'constructor';
55
- }
56
-
57
- type ExcludedKeys = {
58
- [K in keyof ExcludedComponentProps]: ExcludedComponentProps[K];
59
- }[keyof ExcludedComponentProps];
60
-
61
- type IndexableObject = object & Record<string, any>;
37
+ type IfEquals<X, Y, A = X> =
38
+ (<T>() => T extends X ? 1 : 2) extends
39
+ (<T>() => T extends Y ? 1 : 2) ? A : never;
62
40
 
63
- type HTMLElementAssignableProps<T extends IndexableObject> =
64
- Partial<TrimReadonly<T>>;
41
+ type WritableKeys<T> = {
42
+ [P in keyof T]-?: IfEquals<
43
+ { [Q in P]: T[P] },
44
+ { -readonly [Q in P]: T[P] },
45
+ P
46
+ >
47
+ }[keyof T];
65
48
 
66
- type JSXElementProps<T extends object> = SpecialProps<HTMLElementAssignableProps<T>>;
49
+ type TrimReadonly<T> = Pick<T, WritableKeys<T>>;
67
50
 
68
51
  interface DataProps {
69
52
  [key: `data-${ string }`]: string | undefined;
@@ -97,7 +80,7 @@ declare global {
97
80
  * Example: `<div ref={myRef}></div>` \
98
81
  * Example with callback: `<div ref={(el) => { ... }}></div>`
99
82
  */
100
- ref?: RefOrCallback<HTMLElementAssignableProps<T>>;
83
+ ref?: RefOrCallback<PartialExceptRequired<TrimReadonly<T>>>;
101
84
 
102
85
  /**
103
86
  * An object defining CSS classes.
@@ -140,30 +123,12 @@ declare global {
140
123
  directive?: DirectiveResult<any> | DirectiveResult<any>[];
141
124
  } & DataProps;
142
125
 
143
- type ElementMapToJSXElements<T extends IndexableObject> = {
126
+ type JSXElementProps<T extends object> = SpecialProps<PartialExceptRequired<TrimReadonly<T>>>;
127
+
128
+ type ElementMapToJSXElements<T extends Record<string, any>> = {
144
129
  [K in keyof T]: JSXElementProps<T[K]>;
145
130
  };
146
131
 
147
- type IfEquals<X, Y, A = X> =
148
- (<T>() => T extends X ? 1 : 2) extends
149
- (<T>() => T extends Y ? 1 : 2) ? A : never;
150
-
151
- type WritableKeys<T> = {
152
- [P in keyof T]-?: IfEquals<
153
- { [Q in P]: T[P] },
154
- { -readonly [Q in P]: T[P] },
155
- P
156
- >
157
- }[keyof T];
158
-
159
- type TrimReadonly<T> = Pick<T, WritableKeys<T>>;
160
-
161
- type TrimHTMLElement<T extends object> = TrimReadonly<Omit<T, ExcludedKeys>>;
162
-
163
- type JSXProps<T extends object>
164
- = PartialExceptRequired<TrimHTMLElement<T>>
165
- & Partial<Omit<TrimReadonly<HTMLElement>, keyof TrimHTMLElement<T>>>;
166
-
167
132
  type Child = unknown;
168
133
  type Element = unknown;
169
134
 
@@ -193,8 +158,8 @@ declare global {
193
158
 
194
159
  type ComponentProps<T> =
195
160
  T extends Component<infer P> ? P :
196
- T extends ClassComponent<infer I> ? JSXProps<Extract<I, object>> :
197
- T extends abstract new (...args: any[]) => infer I ? JSXProps<Extract<I, object>> :
161
+ T extends ClassComponent<infer I> ? JSXElementProps<Extract<I, object>> :
162
+ T extends abstract new (...args: any[]) => infer I ? JSXElementProps<Extract<I, object>> :
198
163
  {};
199
164
  }
200
165
 
@@ -40,13 +40,13 @@ declare global {
40
40
  // if C is a class component constructor
41
41
  ? (P extends I
42
42
  // if props P are compatible with instance I
43
- ? LitJSX.SpecialProps<LitJSX.JSXProps<P>>
43
+ ? LitJSX.JSXElementProps<P>
44
44
  // else fall back to general props for I
45
- : LitJSX.SpecialProps<LitJSX.ComponentProps<C>>)
45
+ : LitJSX.ComponentProps<C>)
46
46
  // if C is a functional component or intrinsic element
47
47
  : (C extends keyof LitJSX.IntrinsicElements
48
48
  ? LitJSX.IntrinsicElements[C]
49
- // intrinsic element
49
+ // intrinsic element|
50
50
  : P);
51
51
 
52
52
  /*