62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
export function gid(id: string, doc: (Document | ShadowRoot) | undefined) {
|
|
return ((doc ?? document).getElementById(id));
|
|
}
|
|
|
|
export function qs(query: string, sub: (HTMLElement | ShadowRoot) | undefined) {
|
|
return ((sub ?? document).querySelector(query));
|
|
}
|
|
|
|
export function qsa(query: string, sub?: (HTMLElement | ShadowRoot) | undefined) {
|
|
return ((sub ?? document).querySelectorAll(query));
|
|
}
|
|
|
|
export function h<T extends keyof HTMLElementTagNameMap>(
|
|
tag: T,
|
|
opts?: Partial<HTMLElementTagNameMap[T]> | undefined,
|
|
children?: Node[],
|
|
) {
|
|
const newEl = Object.assign(document.createElement(tag), opts ?? {});
|
|
if (children) {
|
|
newEl.append(...children);
|
|
}
|
|
return newEl;
|
|
}
|
|
|
|
export function html(strs: TemplateStringsArray, ...vals: string[]) {
|
|
let result = strs[0];
|
|
for (let i = 1; i < strs.length; i++) {
|
|
result += vals[i] + strs[i];
|
|
}
|
|
const template = document.createElement("template");
|
|
template.innerHTML = result;
|
|
return template;
|
|
}
|
|
|
|
export function css(strs: TemplateStringsArray, ...vals: string[]) {
|
|
let result = strs[0];
|
|
for (let i = 1; i < strs.length; i++) {
|
|
result += vals[i] + strs[i];
|
|
}
|
|
const sheet = new CSSStyleSheet();
|
|
sheet.replaceSync(result);
|
|
return sheet;
|
|
}
|
|
|
|
/*
|
|
export class DJElement extends HTMLElement {
|
|
static styles: CSSStyleSheet;
|
|
|
|
static template: HTMLTemplateElement;
|
|
|
|
root: ShadowRoot;
|
|
|
|
constructor() {
|
|
super();
|
|
const statics = this.constructor as typeof DJElement;
|
|
this.root = this.attachShadow({ mode: "open" });
|
|
this.root.appendChild(statics.template.content.cloneNode(true));
|
|
this.root.adoptedStyleSheets = statics.styles ? [statics.styles] : [];
|
|
}
|
|
}
|
|
*/
|