sinho 0.3.5 → 0.3.6
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/dist/bundle.d.ts +4 -2
- package/dist/component.d.ts +3 -3
- package/dist/component.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/component.ts +18 -6
- package/src/utils.ts +8 -0
- package/web/static/dist/bundle.d.ts +0 -1147
- package/web/static/dist/bundle.min.js +0 -1
package/dist/bundle.d.ts
CHANGED
|
@@ -727,7 +727,9 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
727
727
|
|
|
728
728
|
type RemoveOn<S extends string> = S extends `on${infer R}` ? Uncapitalize<R> : never;
|
|
729
729
|
type CamelCaseToKebabCase<S extends string> = S extends `${infer F}${infer R}` ? F extends Lowercase<F> ? `${F}${CamelCaseToKebabCase<R>}` : `-${Lowercase<F>}${CamelCaseToKebabCase<R>}` : Lowercase<S>;
|
|
730
|
+
type KebabCaseToCamelCase<S extends string> = S extends `${infer F}-${infer R}` ? `${F}${Capitalize<KebabCaseToCamelCase<R>>}` : Capitalize<S>;
|
|
730
731
|
type JsxPropNameToEventName<S extends string> = CamelCaseToKebabCase<RemoveOn<S>>;
|
|
732
|
+
type EventNameToJsxProp<S extends string> = `on${Capitalize<KebabCaseToCamelCase<S>>}`;
|
|
731
733
|
|
|
732
734
|
declare const contextSym: unique symbol;
|
|
733
735
|
/**
|
|
@@ -926,8 +928,8 @@ declare abstract class ComponentInner<M extends Metadata> {
|
|
|
926
928
|
connectedCallback(): void;
|
|
927
929
|
disconnectedCallback(): void;
|
|
928
930
|
attributeChangedCallback(name: string, oldValue: string | null, value: string | null): void;
|
|
929
|
-
addEventListener<K extends keyof Events<M> & string
|
|
930
|
-
removeEventListener<K extends keyof Events<M> & string
|
|
931
|
+
addEventListener<K extends JsxPropNameToEventName<keyof Events<M> & string>>(type: K, listener: (event: InstanceType<Events<M>[Extract<EventNameToJsxProp<K>, keyof Events<M>>]>) => void, options?: boolean | AddEventListenerOptions): void;
|
|
932
|
+
removeEventListener<K extends JsxPropNameToEventName<keyof Events<M> & string>>(type: K, listener: (event: InstanceType<Events<M>[Extract<EventNameToJsxProp<K>, keyof Events<M>>]>) => void, options?: boolean | EventListenerOptions): void;
|
|
931
933
|
abstract render(): Template;
|
|
932
934
|
}
|
|
933
935
|
interface ComponentConstructor<M extends Metadata = {}> {
|
package/dist/component.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Cleanup, MaybeSignal, Signal, SignalLike } from "./scope.js";
|
|
2
2
|
import type { DomEventProps, DomProps } from "./dom.js";
|
|
3
|
-
import { JsxPropNameToEventName } from "./utils.js";
|
|
3
|
+
import { EventNameToJsxProp, JsxPropNameToEventName } from "./utils.js";
|
|
4
4
|
import { useScope } from "./scope.js";
|
|
5
5
|
import { Context } from "./context.js";
|
|
6
6
|
import { Template } from "./template.js";
|
|
@@ -168,8 +168,8 @@ declare abstract class ComponentInner<M extends Metadata> {
|
|
|
168
168
|
connectedCallback(): void;
|
|
169
169
|
disconnectedCallback(): void;
|
|
170
170
|
attributeChangedCallback(name: string, oldValue: string | null, value: string | null): void;
|
|
171
|
-
addEventListener<K extends keyof Events<M> & string
|
|
172
|
-
removeEventListener<K extends keyof Events<M> & string
|
|
171
|
+
addEventListener<K extends JsxPropNameToEventName<keyof Events<M> & string>>(type: K, listener: (event: InstanceType<Events<M>[Extract<EventNameToJsxProp<K>, keyof Events<M>>]>) => void, options?: boolean | AddEventListenerOptions): void;
|
|
172
|
+
removeEventListener<K extends JsxPropNameToEventName<keyof Events<M> & string>>(type: K, listener: (event: InstanceType<Events<M>[Extract<EventNameToJsxProp<K>, keyof Events<M>>]>) => void, options?: boolean | EventListenerOptions): void;
|
|
173
173
|
abstract render(): Template;
|
|
174
174
|
}
|
|
175
175
|
export type Component<M extends Metadata = {}> = {
|
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,WAAW,EACX,SAAS,GAEV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
type RemoveOn<S extends string> = S extends `on${infer R}` ? Uncapitalize<R> : never;
|
|
2
2
|
export type CamelCaseToKebabCase<S extends string> = S extends `${infer F}${infer R}` ? F extends Lowercase<F> ? `${F}${CamelCaseToKebabCase<R>}` : `-${Lowercase<F>}${CamelCaseToKebabCase<R>}` : Lowercase<S>;
|
|
3
|
+
export type KebabCaseToCamelCase<S extends string> = S extends `${infer F}-${infer R}` ? `${F}${Capitalize<KebabCaseToCamelCase<R>>}` : Capitalize<S>;
|
|
3
4
|
export declare const camelCaseToKebabCase: (value: string) => string;
|
|
4
5
|
export type JsxPropNameToEventName<S extends string> = CamelCaseToKebabCase<RemoveOn<S>>;
|
|
5
6
|
export declare const jsxPropNameToEventName: (value: `on${string}`) => string;
|
|
7
|
+
export type EventNameToJsxProp<S extends string> = `on${Capitalize<KebabCaseToCamelCase<S>>}`;
|
|
6
8
|
export {};
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAU,EAAE;IAC5D,OAAO,CACL,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAC/D,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAoB,EAAU,EAAE;IACrE,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/component.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type { DomEventProps, DomProps } from "./dom.js";
|
|
|
11
11
|
import { runWithRenderer } from "./renderer.js";
|
|
12
12
|
import {
|
|
13
13
|
camelCaseToKebabCase,
|
|
14
|
+
EventNameToJsxProp,
|
|
14
15
|
JsxPropNameToEventName,
|
|
15
16
|
jsxPropNameToEventName,
|
|
16
17
|
} from "./utils.js";
|
|
@@ -332,14 +333,24 @@ declare abstract class ComponentInner<M extends Metadata> {
|
|
|
332
333
|
value: string | null,
|
|
333
334
|
): void;
|
|
334
335
|
|
|
335
|
-
addEventListener<K extends keyof Events<M> & string
|
|
336
|
-
type:
|
|
337
|
-
listener: (
|
|
336
|
+
addEventListener<K extends JsxPropNameToEventName<keyof Events<M> & string>>(
|
|
337
|
+
type: K,
|
|
338
|
+
listener: (
|
|
339
|
+
event: InstanceType<
|
|
340
|
+
Events<M>[Extract<EventNameToJsxProp<K>, keyof Events<M>>]
|
|
341
|
+
>,
|
|
342
|
+
) => void,
|
|
338
343
|
options?: boolean | AddEventListenerOptions,
|
|
339
344
|
): void;
|
|
340
|
-
removeEventListener<
|
|
341
|
-
|
|
342
|
-
|
|
345
|
+
removeEventListener<
|
|
346
|
+
K extends JsxPropNameToEventName<keyof Events<M> & string>,
|
|
347
|
+
>(
|
|
348
|
+
type: K,
|
|
349
|
+
listener: (
|
|
350
|
+
event: InstanceType<
|
|
351
|
+
Events<M>[Extract<EventNameToJsxProp<K>, keyof Events<M>>]
|
|
352
|
+
>,
|
|
353
|
+
) => void,
|
|
343
354
|
options?: boolean | EventListenerOptions,
|
|
344
355
|
): void;
|
|
345
356
|
|
|
@@ -494,6 +505,7 @@ export const Component: ((tagName?: string) => ComponentConstructor<{}>) &
|
|
|
494
505
|
opts.shadow
|
|
495
506
|
? (component.shadowRoot ?? component.attachShadow(opts.shadow))
|
|
496
507
|
: component;
|
|
508
|
+
|
|
497
509
|
abstract class _Component extends HTMLElement {
|
|
498
510
|
static readonly [componentSym]: ComponentConstructor[typeof componentSym] =
|
|
499
511
|
{
|
package/src/utils.ts
CHANGED
|
@@ -9,6 +9,11 @@ export type CamelCaseToKebabCase<S extends string> =
|
|
|
9
9
|
: `-${Lowercase<F>}${CamelCaseToKebabCase<R>}`
|
|
10
10
|
: Lowercase<S>;
|
|
11
11
|
|
|
12
|
+
export type KebabCaseToCamelCase<S extends string> =
|
|
13
|
+
S extends `${infer F}-${infer R}`
|
|
14
|
+
? `${F}${Capitalize<KebabCaseToCamelCase<R>>}`
|
|
15
|
+
: Capitalize<S>;
|
|
16
|
+
|
|
12
17
|
export const camelCaseToKebabCase = (value: string): string => {
|
|
13
18
|
return (
|
|
14
19
|
(value[0] ?? "").toLowerCase() +
|
|
@@ -27,3 +32,6 @@ export const jsxPropNameToEventName = (value: `on${string}`): string => {
|
|
|
27
32
|
return camelCaseToKebabCase(value.slice(2));
|
|
28
33
|
}
|
|
29
34
|
};
|
|
35
|
+
|
|
36
|
+
export type EventNameToJsxProp<S extends string> =
|
|
37
|
+
`on${Capitalize<KebabCaseToCamelCase<S>>}`;
|