UNPKG

app-decorators

Version:

Collection of useful ES7 Decorators, writtin in ES6, that can be used for building webapps

109 lines (83 loc) 2.97 kB
System.register(['app-decorators/src/libs/element-to-function'], function (_export, _context) { "use strict"; var _elementToFunc, Register; return { setters: [function (_appDecoratorsSrcLibsElementToFunction) { _elementToFunc = _appDecoratorsSrcLibsElementToFunction.default; }], execute: function () { _export('Register', Register = { /** * Prefix of component if used * e.g. com-foo */ prefix: 'com', customElement: function customElement(Class) { var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var name = config.name; if (!name) { var className = this._getClassName(Class); name = this._createComponentName(className, this.prefix); } else { delete config.name; } this._addExtends(Class, config); this._registerElement(Class, name); }, _classof: function _classof(value) { return Object.prototype.toString.call(value).slice(8, -1); }, _addExtends: function _addExtends(Class) { var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var inherit = config.extends; if (inherit && !Class.extends) { Class.extends = inherit; } return Class; }, _getClassName: function _getClassName(Class) { return Class.$$componentName || Class.prototype.constructor.name; }, _createComponentName: function _createComponentName(className) { var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.prefix; return prefix + '-' + className.toLowerCase(); }, _enableConstructorVars: function _enableConstructorVars(Class) { var createdCallback = Class.prototype.createdCallback; Class.prototype.createdCallback = function () { if (!arguments.length && !this.parentElement) { return; } // console.log(args, this.parentElement) createdCallback ? createdCallback.call.apply(createdCallback, [this].concat(Array.prototype.slice.call(arguments))) : null; }; return Class; }, _registerElement: function _registerElement(Class, name) { this._enableConstructorVars(Class); // register element var registeredElement = document.registerElement(name, Class); /** * create (add factory) * @param vars {object} */ Class.create = function (vars) { if (arguments.length > 1) { throw new Error('Its not allowed to pass more than one argument'); } var classof = Register._classof(vars); if (!(classof === 'Object' || classof === 'Undefined')) { throw new Error('Passed argument must be an object or undefined'); } var element = new registeredElement(); element.createdCallback(vars || ""); return element; }; return Class; } }); _export('Register', Register); } }; }); //# sourceMappingURL=customelement.js.map