diff --git a/src/browser/ui/dom/HTMLDOMPropertyConfig.js b/src/browser/ui/dom/HTMLDOMPropertyConfig.js index 268c963646..2c59d851a3 100644 --- a/src/browser/ui/dom/HTMLDOMPropertyConfig.js +++ b/src/browser/ui/dom/HTMLDOMPropertyConfig.js @@ -82,6 +82,7 @@ var HTMLDOMPropertyConfig = { contentEditable: null, contextMenu: MUST_USE_ATTRIBUTE, controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + coords: null, crossOrigin: null, data: null, // For `` acts as `src`. dateTime: MUST_USE_ATTRIBUTE, @@ -133,6 +134,7 @@ var HTMLDOMPropertyConfig = { scrollTop: MUST_USE_PROPERTY, seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE, selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + shape: null, size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE, span: HAS_POSITIVE_NUMERIC_VALUE, spellCheck: null, @@ -146,6 +148,7 @@ var HTMLDOMPropertyConfig = { target: null, title: null, type: null, + useMap: null, value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS, width: MUST_USE_ATTRIBUTE, wmode: MUST_USE_ATTRIBUTE, diff --git a/vendor/fbtransform/transforms/__tests__/react-displayName-test.js b/vendor/fbtransform/transforms/__tests__/react-displayName-test.js new file mode 100644 index 0000000000..6cdb1d4d6d --- /dev/null +++ b/vendor/fbtransform/transforms/__tests__/react-displayName-test.js @@ -0,0 +1,138 @@ +/** + * Copyright 2004-present Facebook. All Rights Reserved. + * + * @emails jeffmo@fb.com + */ +"use strict"; + +require('mock-modules').autoMockOff(); + +var transformAll = require('../../syntax.js').transformAll; + +function transform(source) { + return transformAll(source, {}, ['allocate']); +} + +describe('react displayName jsx', function() { + + it('should only inject displayName if missing', function() { + var code = [ + '/** @jsx React.DOM */', + '"use strict";', + 'var Whateva = React.createClass({', + ' displayName: \'Whateva\',', + ' render: function() {', + ' return
...whateva.
;', + ' }', + '});' + ].join('\n'); + + var result = [ + '/** @jsx React.DOM */', + '"use strict";', + 'var Whateva = React.createClass({', + ' displayName: \'Whateva\',', + ' render: function() {', + ' return React.DOM.div({className: "whateva"}, "...whateva.");', + ' }', + '});' + ].join('\n'); + + expect(transform(code).code).toEqual(result); + }); + + it('should inject displayName in simple assignment', () => { + var code = [ + '/** @jsx React.DOM */', + 'var Component = React.createClass({', + ' render: function() {', + ' return
;', + ' }', + '});' + ].join('\n'); + + var result = [ + '/** @jsx React.DOM */', + 'var Component = React.createClass({displayName: \'Component\',', + ' render: function() {', + ' return React.DOM.div(null);', + ' }', + '});' + ].join('\n'); + + expect(transform(code).code).toEqual(result); + }); + + it('should inject displayName in simple assignment without var', () => { + var code = [ + '/** @jsx React.DOM */', + 'var Component;', + 'Component = React.createClass({', + ' render: function() {', + ' return
;', + ' }', + '});' + ].join('\n'); + + var result = [ + '/** @jsx React.DOM */', + 'var Component;', + 'Component = React.createClass({displayName: \'Component\',', + ' render: function() {', + ' return React.DOM.div(null);', + ' }', + '});' + ].join('\n'); + + expect(transform(code).code).toEqual(result); + }); + + it('should inject displayName in property assignment', () => { + var code = [ + '/** @jsx React.DOM */', + 'exports.Component = React.createClass({', + ' render: function() {', + ' return
;', + ' }', + '});' + ].join('\n'); + + var result = [ + '/** @jsx React.DOM */', + 'exports.Component = React.createClass({displayName: \'Component\',', + ' render: function() {', + ' return React.DOM.div(null);', + ' }', + '});' + ].join('\n'); + + expect(transform(code).code).toEqual(result); + }); + + it('should inject displayName in object declaration', () => { + var code = [ + '/** @jsx React.DOM */', + 'exports = {', + ' Component: React.createClass({', + ' render: function() {', + ' return
;', + ' }', + ' })', + '};' + ].join('\n'); + + var result = [ + '/** @jsx React.DOM */', + 'exports = {', + ' Component: React.createClass({displayName: \'Component\',', + ' render: function() {', + ' return React.DOM.div(null);', + ' }', + ' })', + '};' + ].join('\n'); + + expect(transform(code).code).toEqual(result); + }); + +});