mirror of
https://git.sr.ht/~cadence/cloudtube
synced 2024-11-25 08:57:31 +00:00
git subrepo clone /home/cloud/Code/pinski-plugins/elemjs html/static/js/elemjs
subrepo: subdir: "html/static/js/elemjs" merged: "637cc07" upstream: origin: "/home/cloud/Code/pinski-plugins/elemjs" branch: "other" commit: "637cc07" git-subrepo: version: "0.4.0" origin: "https://github.com/ingydotnet/git-subrepo" commit: "5d6aba9"
This commit is contained in:
parent
00bba69a74
commit
23a7da45d3
12
html/static/js/elemjs/.gitrepo
Normal file
12
html/static/js/elemjs/.gitrepo
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
; DO NOT EDIT (unless you know what you are doing)
|
||||||
|
;
|
||||||
|
; This subdirectory is a git "subrepo", and this file is maintained by the
|
||||||
|
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
|
||||||
|
;
|
||||||
|
[subrepo]
|
||||||
|
remote = /home/cloud/Code/pinski-plugins/elemjs
|
||||||
|
branch = other
|
||||||
|
commit = 637cc076fac2f1060257a47002d8196ac96f078c
|
||||||
|
parent = 00bba69a743d3dc0bf4b1cbfb27fffdb28d634f8
|
||||||
|
method = merge
|
||||||
|
cmdver = 0.4.0
|
78
html/static/js/elemjs/elemjs.mjs
Normal file
78
html/static/js/elemjs/elemjs.mjs
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/** @returns {HTMLElement} */
|
||||||
|
export function q(s) {
|
||||||
|
return document.querySelector(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ElemJS {
|
||||||
|
constructor(type) {
|
||||||
|
if (type instanceof HTMLElement) this.bind(type)
|
||||||
|
else this.bind(document.createElement(type))
|
||||||
|
this.children = [];
|
||||||
|
}
|
||||||
|
bind(element) {
|
||||||
|
/** @type {HTMLElement} */
|
||||||
|
this.element = element
|
||||||
|
// @ts-ignore
|
||||||
|
this.element.js = this
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
class() {
|
||||||
|
for (let name of arguments) if (name) this.element.classList.add(name);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
removeClass() {
|
||||||
|
for (let name of arguments) if (name) this.element.classList.remove(name);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
direct(name, value) {
|
||||||
|
if (name) this.element[name] = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
attribute(name, value) {
|
||||||
|
if (name) this.element.setAttribute(name, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
style(name, value) {
|
||||||
|
if (name) this.element.style[name] = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
id(name) {
|
||||||
|
if (name) this.element.id = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
text(name) {
|
||||||
|
this.element.innerText = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
addText(name) {
|
||||||
|
const node = document.createTextNode(name)
|
||||||
|
this.element.appendChild(node)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
html(name) {
|
||||||
|
this.element.innerHTML = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
event(name, callback) {
|
||||||
|
this.element.addEventListener(name, event => callback(event))
|
||||||
|
}
|
||||||
|
child(toAdd, position) {
|
||||||
|
if (typeof(toAdd) == "object") {
|
||||||
|
toAdd.parent = this;
|
||||||
|
if (typeof(position) == "number" && position >= 0) {
|
||||||
|
this.element.insertBefore(toAdd.element, this.element.children[position]);
|
||||||
|
this.children.splice(position, 0, toAdd);
|
||||||
|
} else {
|
||||||
|
this.element.appendChild(toAdd.element);
|
||||||
|
this.children.push(toAdd);
|
||||||
|
}
|
||||||
|
} else if (typeof toAdd === "string") {
|
||||||
|
this.text(toAdd)
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
clearChildren() {
|
||||||
|
this.children.length = 0;
|
||||||
|
while (this.element.lastChild) this.element.removeChild(this.element.lastChild);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user