From 6e7540f26cdb032ffda9063009a893cf7ac7abb5 Mon Sep 17 00:00:00 2001 From: Andrey Mereskin Date: Wed, 12 Mar 2014 10:31:09 -0600 Subject: [PATCH] Add naive custom element support --- vendor/fbtransform/transforms/react.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/vendor/fbtransform/transforms/react.js b/vendor/fbtransform/transforms/react.js index 1d5536c145556..5c8731380863d 100644 --- a/vendor/fbtransform/transforms/react.js +++ b/vendor/fbtransform/transforms/react.js @@ -61,8 +61,29 @@ function visitReactTag(traverse, object, path, state) { } var isFallbackTag = FALLBACK_TAGS.hasOwnProperty(nameObject.name); + + // Support for tags + var isCustomElement = nameObject.name.indexOf('-') > 0; + //transform `custom-element` to `CustomElement` + function toPascalCase(name){ + var camelCased = name.replace(/-([a-z])/g, function (g) { + return g[1].toUpperCase(); + }); + return camelCased[0].toUpperCase() + camelCased.slice(1); + }; + + function startComponent(name){ + if(isFallbackTag) { + return jsxObjIdent + '.' + name; + } else if(isCustomElement) { + return toPascalCase(name); + } else { + return name; + } + }; + utils.append( - (isFallbackTag ? jsxObjIdent + '.' : '') + (nameObject.name) + '(', + startComponent(nameObject.name) + '(', state );