@xtia/jel 0.4.1 → 0.4.3
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/index.d.ts +13 -6
- package/index.js +18 -17
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export type ElementClassDescriptor = string | Record<string, boolean> | ElementClassDescriptor[];
|
|
2
2
|
export type DOMContent = number | null | string | Element | JelEntity<object> | Text | DOMContent[];
|
|
3
3
|
export type DomEntity<T extends HTMLElement> = JelEntity<ElementAPI<T>>;
|
|
4
|
+
export type ContainerDomEntity = DomEntity<ContainerElement>;
|
|
5
|
+
type ContainerElement = HTMLElementTagNameMap[Exclude<keyof HTMLElementTagNameMap, ContentlessTag>];
|
|
4
6
|
type PartConstructor<Spec, API extends object | void, EventDataMap> = (spec: Spec & EventSpec<EventDataMap>) => JelEntity<EventHost<API, EventDataMap>>;
|
|
5
7
|
type EventSpec<EventDataMap> = EventDataMap extends object ? {
|
|
6
8
|
on?: {
|
|
@@ -20,7 +22,7 @@ type StylesDescriptor = {
|
|
|
20
22
|
type StyleAccessor = StylesDescriptor & ((styles: StylesDescriptor) => void) & ((property: keyof StylesDescriptor, value: CSSValue) => void);
|
|
21
23
|
type ContentlessTag = "area" | "base" | "basefont" | "br" | "col" | "frame" | "hr" | "img" | "input" | "isindex" | "link" | "meta" | "param" | "textarea";
|
|
22
24
|
type TagWithHref = "a" | "link";
|
|
23
|
-
type TagWithSrc = "img" | "script" | "iframe";
|
|
25
|
+
type TagWithSrc = "img" | "script" | "iframe" | "video" | "audio";
|
|
24
26
|
type ElementDescriptor<Tag extends string> = {
|
|
25
27
|
classes?: ElementClassDescriptor;
|
|
26
28
|
attribs?: Record<string, string | number | boolean>;
|
|
@@ -34,9 +36,9 @@ type ElementDescriptor<Tag extends string> = {
|
|
|
34
36
|
} : Tag extends ContentlessTag ? {} : {
|
|
35
37
|
content?: DOMContent;
|
|
36
38
|
}) & (Tag extends TagWithSrc ? {
|
|
37
|
-
src
|
|
39
|
+
src?: string;
|
|
38
40
|
} : Tag extends TagWithHref ? {
|
|
39
|
-
href
|
|
41
|
+
href?: string;
|
|
40
42
|
} : {});
|
|
41
43
|
type ElementAPI<T extends HTMLElement> = EventHost<{
|
|
42
44
|
readonly element: T;
|
|
@@ -49,14 +51,14 @@ type ElementAPI<T extends HTMLElement> = EventHost<{
|
|
|
49
51
|
setCSSVariable(table: Record<string, CSSValue>): void;
|
|
50
52
|
setCSSVariable(variableName: string, value: CSSValue): void;
|
|
51
53
|
qsa(selector: string): (Element | DomEntity<HTMLElement>)[];
|
|
52
|
-
append(...content: DOMContent[]): void;
|
|
53
54
|
remove(): void;
|
|
54
55
|
getRect(): DOMRect;
|
|
55
56
|
focus(): void;
|
|
56
57
|
blur(): void;
|
|
57
|
-
} & (T extends
|
|
58
|
+
} & (T extends ContainerElement ? {
|
|
59
|
+
append(...content: DOMContent[]): void;
|
|
58
60
|
content: DOMContent;
|
|
59
|
-
}) & (T extends HTMLInputElement ? {
|
|
61
|
+
} : {}) & (T extends HTMLInputElement ? {
|
|
60
62
|
value: string;
|
|
61
63
|
select(): void;
|
|
62
64
|
} : T extends HTMLCanvasElement ? {
|
|
@@ -67,6 +69,11 @@ type ElementAPI<T extends HTMLElement> = EventHost<{
|
|
|
67
69
|
src: string;
|
|
68
70
|
} : T extends HTMLElementTagNameMap[TagWithHref] ? {
|
|
69
71
|
href: string;
|
|
72
|
+
} : {}) & (T extends HTMLMediaElement ? {
|
|
73
|
+
play(): void;
|
|
74
|
+
pause(): void;
|
|
75
|
+
currentTime: number;
|
|
76
|
+
readonly paused: boolean;
|
|
70
77
|
} : {}), HTMLElementEventMap>;
|
|
71
78
|
type DomHelper = ((<T extends keyof HTMLElementTagNameMap>(tagName: T, descriptor: ElementDescriptor<T>) => DomEntity<HTMLElementTagNameMap[T]>) & (<T extends keyof HTMLElementTagNameMap>(selector: `${T}#${string}`, content?: T extends ContentlessTag ? void : DOMContent) => DomEntity<HTMLElementTagNameMap[T]>) & (<T extends keyof HTMLElementTagNameMap>(selector: `${T}.${string}`, content?: T extends ContentlessTag ? void : DOMContent) => DomEntity<HTMLElementTagNameMap[T]>) & (<T extends keyof HTMLElementTagNameMap>(selector: T, content?: T extends ContentlessTag ? void : DOMContent) => DomEntity<HTMLElementTagNameMap[T]>) & (<T extends HTMLElement>(element: T) => DomEntity<T>) & {
|
|
72
79
|
[T in keyof HTMLElementTagNameMap]: (descriptor: ElementDescriptor<T>) => DomEntity<HTMLElementTagNameMap[T]>;
|
package/index.js
CHANGED
|
@@ -158,9 +158,7 @@ function getWrappedElement(element) {
|
|
|
158
158
|
append(...content) {
|
|
159
159
|
recursiveAppend(element, content);
|
|
160
160
|
},
|
|
161
|
-
remove()
|
|
162
|
-
element.remove();
|
|
163
|
-
},
|
|
161
|
+
remove: () => element.remove(),
|
|
164
162
|
setCSSVariable(variableNameOrTable, value) {
|
|
165
163
|
if (typeof variableNameOrTable == "object") {
|
|
166
164
|
Object.entries(variableNameOrTable).forEach(([k, v]) => setCSSVariable(k, v));
|
|
@@ -168,24 +166,17 @@ function getWrappedElement(element) {
|
|
|
168
166
|
}
|
|
169
167
|
setCSSVariable(variableNameOrTable, value);
|
|
170
168
|
},
|
|
171
|
-
classes: element.classList,
|
|
172
169
|
qsa(selector) {
|
|
173
170
|
const results = [];
|
|
174
171
|
element.querySelectorAll(selector).forEach((el) => results.push(el instanceof HTMLElement ? getWrappedElement(el) : el));
|
|
175
172
|
return results;
|
|
176
173
|
},
|
|
177
|
-
getRect()
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
blur() {
|
|
184
|
-
element.blur();
|
|
185
|
-
},
|
|
186
|
-
select() {
|
|
187
|
-
element.select();
|
|
188
|
-
},
|
|
174
|
+
getRect: () => element.getBoundingClientRect(),
|
|
175
|
+
focus: () => element.focus(),
|
|
176
|
+
blur: () => element.blur(),
|
|
177
|
+
select: () => element.select(),
|
|
178
|
+
play: () => element.play(),
|
|
179
|
+
pause: () => element.pause(),
|
|
189
180
|
getContext(mode, options) {
|
|
190
181
|
return element.getContext(mode, options);
|
|
191
182
|
},
|
|
@@ -232,12 +223,22 @@ function getWrappedElement(element) {
|
|
|
232
223
|
element.width = v;
|
|
233
224
|
},
|
|
234
225
|
get height() {
|
|
235
|
-
return element.
|
|
226
|
+
return element.height;
|
|
236
227
|
},
|
|
237
228
|
set height(v) {
|
|
238
229
|
element.height = v;
|
|
239
230
|
},
|
|
231
|
+
get currentTime() {
|
|
232
|
+
return element.currentTime;
|
|
233
|
+
},
|
|
234
|
+
set currentTime(v) {
|
|
235
|
+
element.currentTime = v;
|
|
236
|
+
},
|
|
237
|
+
get paused() {
|
|
238
|
+
return element.paused;
|
|
239
|
+
},
|
|
240
240
|
style: new Proxy(() => element.style, styleProxy),
|
|
241
|
+
classes: element.classList,
|
|
241
242
|
};
|
|
242
243
|
elementWrapCache.set(element, domEntity);
|
|
243
244
|
}
|