3 lines
13 KiB
JavaScript
3 lines
13 KiB
JavaScript
|
class attribute{constructor(name,value){this.name=name,this.value=value}}class collection{constructor(items){this.siblings=[],this.children=[],this.attributes=[],this.classes=[],this.tagName=null,this.element=null;for(var i=0;i<items.length;i++)items[i]instanceof attribute?this.attributes.push(items[i]):items[i]instanceof property?this.children.push(new propertyObserver(items[i])):this.children.push(items[i])}class(...items){for(var i=0;i<items.length;i++)items[i]instanceof property?items[i].onPropertyChange.push((oldValue,newValue)=>this.onClassChanged(oldValue,newValue)):this.classes.push(items[i]);return this}div(...items){return this.siblings.push(new div(...items)),this}p(...items){return this.siblings.push(new p(...items)),this}construct(parent){parent||(parent=window.document.body),this.element=window.document.createElement(this.tagName),parent.appendChild(this.element);for(var i=0;i<this.children.length;i++)this.children[i]instanceof String||"string"==typeof this.children[i]?this.element.appendChild(document.createTextNode(this.children[i])):(this.children[i]instanceof collection||this.children[i].prototype instanceof collection||this.children[i].prototype.constructor===collection)&&this.children[i].construct(this.element);for(i=0;i<this.siblings.length;i++)this.siblings[i]instanceof String||"string"==typeof this.siblings[i]?this.parent.appendChild(document.createTextNode(this.siblings[i])):(this.siblings[i]instanceof collection||this.siblings[i].prototype instanceof collection||this.siblings[i].prototype.constructor===collection)&&this.siblings[i].construct(parent)}onClassChanged(oldValue,newValue){console.log(`Class changed, oldValue: ${oldValue} newValue: ${newValue}`),oldValue&&""!==oldValue&&" "!==oldValue&&this.element.classList.remove(oldValue),newValue&&""!==newValue&&" "!==newValue&&this.element.classList.add(newValue)}}class div extends collection{constructor(...items){super(items),this.tagName="div"}}class p extends collection{constructor(...items){super(items),this.tagName="p"}}class h1 extends collection{constructor(...items){super(items),this.tagName="h1"}}class propertyObserver extends collection{constructor(property){super([]),this.property=property,this.property.onPropertyChange.push((oldValue,newValue)=>this.onUpdateProperty(oldValue,newValue))}construct(parent){this.element=document.createTextNode(""),parent.appendChild(this.element)}onUpdateProperty(oldValue,newValue){this.element.nodeValue=newValue}}class property{constructor(){this.onPropertyChange=[],this._value=null}get value(){return this._value}set value(val){var old=this._value;this._value=val;for(var i=0;i<this.onPropertyChange.length;i++)this.onPropertyChange[i](old,val)}}var prop=new property,classProp=new property;console.log("Property:"),console.log(prop),console.log("Class Property:"),console.log(classProp);var test=new div(new h1("I am a heading").class(classProp),new p(prop)).div(new p("This is content"));test.construct(window.document.body),console.log(test);
|
||
|
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZyYW1ld29yay5qcyJdLCJuYW1lcyI6WyJhdHRyaWJ1dGUiLCJbb2JqZWN0IE9iamVjdF0iLCJuYW1lIiwidmFsdWUiLCJ0aGlzIiwiY29sbGVjdGlvbiIsIml0ZW1zIiwic2libGluZ3MiLCJjaGlsZHJlbiIsImF0dHJpYnV0ZXMiLCJjbGFzc2VzIiwidGFnTmFtZSIsImVsZW1lbnQiLCJpIiwibGVuZ3RoIiwicHVzaCIsInByb3BlcnR5IiwicHJvcGVydHlPYnNlcnZlciIsIm9uUHJvcGVydHlDaGFuZ2UiLCJvbGRWYWx1ZSIsIm5ld1ZhbHVlIiwib25DbGFzc0NoYW5nZWQiLCJkaXYiLCJwIiwicGFyZW50Iiwid2luZG93IiwiZG9jdW1lbnQiLCJib2R5IiwiY3JlYXRlRWxlbWVudCIsImFwcGVuZENoaWxkIiwiU3RyaW5nIiwiY3JlYXRlVGV4dE5vZGUiLCJwcm90b3R5cGUiLCJjb25zdHJ1Y3RvciIsImNvbnN0cnVjdCIsImNvbnNvbGUiLCJsb2ciLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJhZGQiLCJzdXBlciIsImgxIiwib25VcGRhdGVQcm9wZXJ0eSIsIm5vZGVWYWx1ZSIsIl92YWx1ZSIsInZhbCIsIm9sZCIsInByb3AiLCJjbGFzc1Byb3AiLCJ0ZXN0IiwiY2xhc3MiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLFVBQ0ZDLFlBQVlDLEtBQU1DLE9BQ2RDLEtBQUtGLEtBQU9BLEtBQ1pFLEtBQUtELE1BQVFBLE9BSXJCLE1BQU1FLFdBQ0ZKLFlBQVlLLE9BQ1JGLEtBQUtHLFNBQVcsR0FDaEJILEtBQUtJLFNBQVcsR0FDaEJKLEtBQUtLLFdBQWEsR0FDbEJMLEtBQUtNLFFBQVUsR0FDZk4sS0FBS08sUUFBVSxLQUNmUCxLQUFLUSxRQUFVLEtBRWYsSUFBSyxJQUFJQyxFQUFJLEVBQUdBLEVBQUlQLE1BQU1RLE9BQVFELElBQzFCUCxNQUFNTyxhQUFjYixVQUNwQkksS0FBS0ssV0FBV00sS0FBS1QsTUFBTU8sSUFDcEJQLE1BQU1PLGFBQWNHLFNB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
|