System.register("angular2/src/upgrade/metadata", ["angular2/core"], true, function(require, exports, module) { var global = System.global, __define = global.define; global.define = undefined; "use strict"; var core_1 = require("angular2/core"); var COMPONENT_SELECTOR = /^[\w|-]*$/; var SKEWER_CASE = /-(\w)/g; var directiveResolver = new core_1.DirectiveResolver(); function getComponentInfo(type) { var resolvedMetadata = directiveResolver.resolve(type); var selector = resolvedMetadata.selector; if (!selector.match(COMPONENT_SELECTOR)) { throw new Error('Only selectors matching element names are supported, got: ' + selector); } var selector = selector.replace(SKEWER_CASE, function(all, letter) { return letter.toUpperCase(); }); return { type: type, selector: selector, inputs: parseFields(resolvedMetadata.inputs), outputs: parseFields(resolvedMetadata.outputs) }; } exports.getComponentInfo = getComponentInfo; function parseFields(names) { var attrProps = []; if (names) { for (var i = 0; i < names.length; i++) { var parts = names[i].split(':'); var prop = parts[0].trim(); var attr = (parts[1] || parts[0]).trim(); var capitalAttr = attr.charAt(0).toUpperCase() + attr.substr(1); attrProps.push({ prop: prop, attr: attr, bracketAttr: "[" + attr + "]", parenAttr: "(" + attr + ")", bracketParenAttr: "[(" + attr + ")]", onAttr: "on" + capitalAttr, bindAttr: "bind" + capitalAttr, bindonAttr: "bindon" + capitalAttr }); } } return attrProps; } exports.parseFields = parseFields; global.define = __define; return module.exports; });
export function getComponentInfo(type) { var resolvedMetadata = directiveResolver.resolve(type); var selector = resolvedMetadata.selector; if (!selector.match(COMPONENT_SELECTOR)) { throw new Error('Only selectors matching element names are supported, got: ' + selector); } var selector = selector.replace(SKEWER_CASE, (all, letter) => letter.toUpperCase()); return { type: type, selector: selector, inputs: parseFields(resolvedMetadata.inputs), outputs: parseFields(resolvedMetadata.outputs) }; }