vnCustomTags = {}; const Mutators = Class.Mutators; const _Extends = Mutators.Extends; Mutators.Extends = function() { _Extends.apply(this, arguments); this.implement({Properties: {}}); } Mutators.Template = function(template) { this.extend({Template: template}); }; Mutators.Tag = function(tagName) { vnCustomTags[tagName] = this; this.extend({Tag: tagName}); const parent = this.parent; if (parent && parent.Classes !== undefined) { let Classes = tagName if (parent.Classes !== '') Classes += ' '+ parent.Classes; this.extend({Classes}); } }; Mutators.Properties = function(props) { let parentProps; for (const propName in props) { const prop = props[propName]; prop.configurable = true; if (!prop.get && !prop.set && prop.writable === undefined) prop.writable = true; } if (this.parent && (parentProps = this.parent.Properties)) for (const propName in parentProps) if (!props[propName]) props[propName] = parentProps[propName]; this.extend({Properties: props}); Object.defineProperties(this.prototype, props); };