New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-element-to-jsx-string

Package Overview
Dependencies
Maintainers
1
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-element-to-jsx-string - npm Package Compare versions

Comparing version

to
3.1.1

.babelrc

5

CHANGELOG.md

@@ -0,1 +1,6 @@

<a name="3.1.1"></a>
## [3.1.1](https://github.com/algolia/react-element-to-jsx-string/compare/v3.1.0...v3.1.1) (2016-07-12)
<a name="3.1.0"></a>

@@ -2,0 +7,0 @@ # [3.1.0](https://github.com/algolia/react-element-to-jsx-string/compare/v3.0.0...v3.1.0) (2016-06-28)

45

index-dist.js
'use strict';
Object.defineProperty(exports, '__esModule', {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = reactElementToJSXString;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
exports.default = reactElementToJSXString;
var _react = require('react');

@@ -36,6 +37,8 @@

var _lodashArrayFill = require('lodash/array/fill');
var _fill = require('lodash/array/fill');
var _lodashArrayFill2 = _interopRequireDefault(_lodashArrayFill);
var _fill2 = _interopRequireDefault(_fill);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function reactElementToJSXString(ReactElement) {

@@ -63,3 +66,3 @@ var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];

} else if (!(0, _reactAddonsTestUtils.isElement)(Element)) {
throw new Error('react-element-to-jsx-string: Expected a ReactElement, ' + 'got `' + typeof Element + '`');
throw new Error('react-element-to-jsx-string: Expected a ReactElement,\ngot `' + (typeof Element === 'undefined' ? 'undefined' : _typeof(Element)) + '`');
}

@@ -72,3 +75,3 @@

var attributes = [];
var children = _react2['default'].Children.toArray(Element.props.children).filter(onlyMeaningfulChildren);
var children = _react2.default.Children.toArray(Element.props.children).filter(onlyMeaningfulChildren);

@@ -135,3 +138,3 @@ if (Element.ref !== null) {

function formatProps(props, defaultProps) {
var formated = Object.keys(props).filter(noChildren).filter(function (key) {
var formatted = Object.keys(props).filter(noChildren).filter(function (key) {
return noFalse(props[key]);

@@ -141,8 +144,8 @@ });

if (!showDefaultProps) {
formated = formated.filter(function (key, value) {
return defaultProps[key] ? defaultProps[key] === value : true;
formatted = formatted.filter(function (key) {
return defaultProps[key] ? defaultProps[key] !== props[key] : true;
});
}
return formated.sort().map(function (propName) {
return formatted.sort().map(function (propName) {
return getJSXAttribute(propName, props[propName]);

@@ -168,2 +171,4 @@ });

function formatValue(value) {
var wrapper = '__reactElementToJSXString__Wrapper__';
if (typeof value === 'function') {

@@ -179,5 +184,5 @@ return function noRefCheck() {};

// otherwise, the element would be surrounded by quotes: <div a={{b: '<div />'}} />
return '<__reactElementToJSXString__Wrapper__>' + toJSXString({ ReactElement: value, inline: true }) + '</__reactElementToJSXString__Wrapper__>';
} else if ((0, _isPlainObject2['default'])(value) || Array.isArray(value)) {
return '<__reactElementToJSXString__Wrapper__>' + stringifyObject(value) + '</__reactElementToJSXString__Wrapper__>';
return '<' + wrapper + '>' + toJSXString({ ReactElement: value, inline: true }) + '</' + wrapper + '>';
} else if ((0, _isPlainObject2.default)(value) || Array.isArray(value)) {
return '<' + wrapper + '>' + stringifyObject(value) + '</' + wrapper + '>';
}

@@ -199,3 +204,4 @@

if (Object.keys(obj).length > 0 || obj.length > 0) {
obj = (0, _traverse2['default'])(obj).map(function (value) {
// eslint-disable-next-line array-callback-return
obj = (0, _traverse2.default)(obj).map(function (value) {
if ((0, _reactAddonsTestUtils.isElement)(value) || this.isLeaf) {

@@ -206,6 +212,6 @@ this.update(formatValue(value));

obj = (0, _sortobject2['default'])(obj);
obj = (0, _sortobject2.default)(obj);
}
return (0, _collapseWhiteSpace2['default'])((0, _stringifyObject2['default'])(obj)).replace(/{ /g, '{').replace(/ }/g, '}').replace(/\[ /g, '[').replace(/ \]/g, ']');
return (0, _collapseWhiteSpace2.default)((0, _stringifyObject2.default)(obj)).replace(/{ /g, '{').replace(/ }/g, '}').replace(/\[ /g, '[').replace(/ \]/g, ']');
}

@@ -228,3 +234,3 @@ }

if (typeof cur === 'number') {
cur = '' + cur;
cur = String(cur);
}

@@ -242,3 +248,3 @@

function spacer(times) {
return (0, _lodashArrayFill2['default'])(new Array(times), ' ').join('');
return (0, _fill2.default)(new Array(times), ' ').join('');
}

@@ -257,2 +263,1 @@

}
module.exports = exports['default'];
/* eslint-env mocha */
/* eslint react/no-multi-comp:0 */
/* eslint react/prop-types:0 */
/* eslint-disable react/no-multi-comp, react/prop-types */

@@ -22,22 +21,22 @@ import React from 'react';

describe(`reactElementToJSXString(ReactElement)`, () => {
it(`reactElementToJSXString(<TestComponent/>)`, () => {
describe('reactElementToJSXString(ReactElement)', () => {
it('reactElementToJSXString(<TestComponent/>)', () => {
expect(
reactElementToJSXString(<TestComponent/>)
).toEqual(`<TestComponent />`);
).toEqual('<TestComponent />');
});
it(`reactElementToJSXString(<NamedStatelessComponent/>)`, () => {
it('reactElementToJSXString(<NamedStatelessComponent/>)', () => {
expect(
reactElementToJSXString(<NamedStatelessComponent/>)
).toEqual(`<NamedStatelessComponent />`);
).toEqual('<NamedStatelessComponent />');
});
it(`reactElementToJSXString(<AnonymousStatelessComponent/>)`, () => {
it('reactElementToJSXString(<AnonymousStatelessComponent/>)', () => {
expect(
reactElementToJSXString(<AnonymousStatelessComponent/>)
).toEqual(`<No Display Name />`);
).toEqual('<No Display Name />');
});
it(`reactElementToJSXString(<AnonymousStatelessComponent/>) with a displayName`, () => {
it('reactElementToJSXString(<AnonymousStatelessComponent/>) with a displayName', () => {
AnonymousStatelessComponent.displayName = 'I have a name!';

@@ -47,3 +46,3 @@

reactElementToJSXString(<AnonymousStatelessComponent/>)
).toEqual(`<I have a name! />`);
).toEqual('<I have a name! />');

@@ -53,63 +52,63 @@ delete AnonymousStatelessComponent.displayName;

it(`reactElementToJSXString(React.createElement('div'))`, () => {
it('reactElementToJSXString(React.createElement(\'div\'))', () => {
expect(
reactElementToJSXString(React.createElement('div'))
).toEqual(`<div />`);
).toEqual('<div />');
});
it(`reactElementToJSXString(<div/>)`, () => {
it('reactElementToJSXString(<div/>)', () => {
expect(
reactElementToJSXString(<div/>)
).toEqual(`<div />`);
).toEqual('<div />');
});
it(`reactElementToJSXString(<div fn={() => {}}/>)`, () => {
it('reactElementToJSXString(<div fn={() => {}}/>)', () => {
expect(
reactElementToJSXString(<div fn={() => {}}/>)
).toEqual(`<div fn={function noRefCheck() {}} />`);
).toEqual('<div fn={function noRefCheck() {}} />');
});
it(`reactElementToJSXString(<div fn={function hello(){}}/>)`, () => {
it('reactElementToJSXString(<div fn={function hello(){}}/>)', () => {
expect(
reactElementToJSXString(<div fn={function hello() {}}/>)
).toEqual(`<div fn={function noRefCheck() {}} />`);
).toEqual('<div fn={function noRefCheck() {}} />');
});
it(`reactElementToJSXString(<div co={<div a="1" />} />)`, () => {
it('reactElementToJSXString(<div co={<div a="1" />} />)', () => {
expect(
reactElementToJSXString(<div co={<div a="1" />}/>)
).toEqual(`<div co={<div a="1" />} />`);
).toEqual('<div co={<div a="1" />} />');
});
it(`reactElementToJSXString(<div re={/^Hello world$/} />)`, () => {
it('reactElementToJSXString(<div re={/^Hello world$/} />)', () => {
expect(
reactElementToJSXString(<div re={/^Hello world$/}/>)
).toEqual(`<div re={/^Hello world$/} />`);
).toEqual('<div re={/^Hello world$/} />');
});
it(`reactElementToJSXString(<div int={8}/>)`, () => {
it('reactElementToJSXString(<div int={8}/>)', () => {
expect(
reactElementToJSXString(<div int={8}/>)
).toEqual(`<div int={8} />`);
).toEqual('<div int={8} />');
});
it(`reactElementToJSXString(<div obj={{hello: 'world'}}/>)`, () => {
it('reactElementToJSXString(<div obj={{hello: \'world\'}}/>)', () => {
expect(
reactElementToJSXString(<div obj={{hello: 'world'}}/>)
).toEqual(`<div obj={{hello: 'world'}} />`);
).toEqual('<div obj={{hello: \'world\'}} />');
});
it(`reactElementToJSXString(<div obj={{hello: [1, 2], world: {nested: true}}}/>)`, () => {
it('reactElementToJSXString(<div obj={{hello: [1, 2], world: {nested: true}}}/>)', () => {
expect(
reactElementToJSXString(<div obj={{hello: [1, 2], world: {nested: true}}}/>)
).toEqual(`<div obj={{hello: [1, 2], world: {nested: true}}} />`);
).toEqual('<div obj={{hello: [1, 2], world: {nested: true}}} />');
});
it(`reactElementToJSXString(<div></div>)`, () => {
it('reactElementToJSXString(<div></div>)', () => {
expect(
reactElementToJSXString(<div></div>)
).toEqual(`<div />`);
).toEqual('<div />');
});
it(`reactElementToJSXString(<div z="3" a="1" b="2"/>)`, () => {
it('reactElementToJSXString(<div z="3" a="1" b="2"/>)', () => {
/* eslint react/jsx-sort-props: 0 */

@@ -126,3 +125,3 @@ expect(

it(`reactElementToJSXString(<div a="1">Hello</div>)`, () => {
it('reactElementToJSXString(<div a="1">Hello</div>)', () => {
expect(

@@ -136,3 +135,3 @@ reactElementToJSXString(<div a="1">Hello</div>)

it(`reactElementToJSXString(<div a="1" b="5">Hello</div>)`, () => {
it('reactElementToJSXString(<div a="1" b="5">Hello</div>)', () => {
expect(

@@ -149,3 +148,3 @@ reactElementToJSXString(<div a="1" b="5">Hello</div>)

it(`reactElementToJSXString(<div>Hello</div>)`, () => {
it('reactElementToJSXString(<div>Hello</div>)', () => {
expect(

@@ -159,3 +158,3 @@ reactElementToJSXString(<div>Hello</div>)

it(`reactElementToJSXString(<div><div>Hello</div></div>)`, () => {
it('reactElementToJSXString(<div><div>Hello</div></div>)', () => {
expect(

@@ -171,3 +170,3 @@ reactElementToJSXString(<div><div>Hello</div></div>)

it(`reactElementToJSXString(<div a="1" b="2"><div>Hello</div></div>)`, () => {
it('reactElementToJSXString(<div a="1" b="2"><div>Hello</div></div>)', () => {
expect(

@@ -186,3 +185,3 @@ reactElementToJSXString(<div a="1" b="2"><div>Hello</div></div>)

it(`reactElementToJSXString()`, () => {
it('reactElementToJSXString()', () => {
expect(() => {

@@ -193,3 +192,3 @@ reactElementToJSXString();

it(`reactElementToJSXString(null)`, () => {
it('reactElementToJSXString(null)', () => {
expect(() => {

@@ -200,3 +199,3 @@ reactElementToJSXString(null);

it(`ignores object keys order (sortobject)`, () => {
it('ignores object keys order (sortobject)', () => {
expect(

@@ -209,3 +208,3 @@ reactElementToJSXString(<div o={{a: 1, b: 2}}/>)

it(`reactElementToJSXString(<div a={null} />`, () => {
it('reactElementToJSXString(<div a={null} />', () => {
expect(

@@ -218,3 +217,3 @@ reactElementToJSXString(<div a={null} />)

it(`reactElementToJSXString(<div a={undefined} />`, () => {
it('reactElementToJSXString(<div a={undefined} />', () => {
expect(

@@ -227,28 +226,28 @@ reactElementToJSXString(<div a={undefined} />)

it(`reactElementToJSXString(<div a={{b: function hello() {}}} />`, () => {
it('reactElementToJSXString(<div a={{b: function hello() {}}} />', () => {
expect(
reactElementToJSXString(<div a={{b: function hello() {}}} />)
).toEqual(`<div a={{b: function noRefCheck() {}}} />`);
).toEqual('<div a={{b: function noRefCheck() {}}} />');
});
it(`reactElementToJSXString(<div a={{b: {c: {d: <div />, e: null}}}} />`, () => {
it('reactElementToJSXString(<div a={{b: {c: {d: <div />, e: null}}}} />', () => {
expect(
reactElementToJSXString(<div a={{b: {c: {d: <div />, e: null}}}} />)
).toEqual(`<div a={{b: {c: {d: <div />, e: null}}}} />`);
).toEqual('<div a={{b: {c: {d: <div />, e: null}}}} />');
});
it(`reactElementToJSXString(<div a={{b: {}}} />`, () => {
it('reactElementToJSXString(<div a={{b: {}}} />', () => {
expect(
reactElementToJSXString(<div a={{b: {}}} />)
).toEqual(`<div a={{b: {}}} />`);
).toEqual('<div a={{b: {}}} />');
});
it(`reactElementToJSXString(<div a={{}} />`, () => {
it('reactElementToJSXString(<div a={{}} />', () => {
expect(
reactElementToJSXString(<div a={{}} />)
).toEqual(`<div a={{}} />`);
).toEqual('<div a={{}} />');
});
it(`reactElementToJSXString(<div><span /><span /></div>)`, () => {
it('reactElementToJSXString(<div><span /><span /></div>)', () => {
expect(

@@ -262,3 +261,3 @@ reactElementToJSXString(<div><span /><span /></div>)

it(`reactElementToJSXString(<div>foo<div /></div>)`, () => {
it('reactElementToJSXString(<div>foo<div /></div>)', () => {
expect(

@@ -272,39 +271,39 @@ reactElementToJSXString(<div>foo<div /></div>)

it(`reactElementToJSXString(<div a={[1, 2, 3, 4]} />`, () => {
it('reactElementToJSXString(<div a={[1, 2, 3, 4]} />', () => {
expect(
reactElementToJSXString(<div a={[1, 2, 3, 4]} />)
).toEqual(`<div a={[1, 2, 3, 4]} />`);
).toEqual('<div a={[1, 2, 3, 4]} />');
});
it(`reactElementToJSXString(<div a={[1, 2, 3, 4]} />`, () => {
it('reactElementToJSXString(<div a={[1, 2, 3, 4]} />', () => {
expect(
reactElementToJSXString(<div a={[{Hello: ', world!'}]} />)
).toEqual(`<div a={[{Hello: ', world!'}]} />`);
).toEqual('<div a={[{Hello: \', world!\'}]} />');
});
it(`reactElementToJSXString(<div a={[{}]} />`, () => {
it('reactElementToJSXString(<div a={[{}]} />', () => {
expect(
reactElementToJSXString(<div a={[{}]} />)
).toEqual(`<div a={[{}]} />`);
).toEqual('<div a={[{}]} />');
});
it(`reactElementToJSXString(<div a={[]} />`, () => {
it('reactElementToJSXString(<div a={[]} />', () => {
expect(
reactElementToJSXString(<div a={[]} />)
).toEqual(`<div a={[]} />`);
).toEqual('<div a={[]} />');
});
it(`reactElementToJSXString(<div a={[]} />`, () => {
it('reactElementToJSXString(<div a={[]} />', () => {
expect(
reactElementToJSXString(<div a={[]} />)
).toEqual(`<div a={[]} />`);
).toEqual('<div a={[]} />');
});
it(`reactElementToJSXString(<div a={[<div><span /></div>]} />`, () => {
it('reactElementToJSXString(<div a={[<div><span /></div>]} />', () => {
expect(
reactElementToJSXString(<div a={[<div><span /></div>]} />)
).toEqual(`<div a={[<div><span /></div>]} />`);
).toEqual('<div a={[<div><span /></div>]} />');
});
it(`reactElementToJSXString(decorator(<span />)`, () => {
it('reactElementToJSXString(decorator(<span />)', () => {
function myDecorator(ComposedComponent) {

@@ -320,8 +319,8 @@ class MyDecorator extends React.Component {

}
MyDecorator.displayName = ComposedComponent.name + '-Decorated';
MyDecorator.displayName = `${ComposedComponent.name}-Decorated`;
return MyDecorator;
}
var NestedSpan = myDecorator(<span />);
var renderer = createRenderer();
const NestedSpan = myDecorator(<span />);
const renderer = createRenderer();
renderer.render(<NestedSpan />);

@@ -335,3 +334,3 @@ expect(

it(`reactElementToJSXString(<div>Hello {this.props.name}</div>`, () => {
it('reactElementToJSXString(<div>Hello {this.props.name}</div>', () => {
class InlineProps extends React.Component {

@@ -343,5 +342,5 @@ render() {

let renderer = createRenderer();
const renderer = createRenderer();
renderer.render(<InlineProps name="John" />);
let actualElement = renderer.getRenderOutput();
const actualElement = renderer.getRenderOutput();
expect(reactElementToJSXString(actualElement))

@@ -354,9 +353,9 @@ .toEqual(

it(`reactElementToJSXString(<div a={[<div><span /></div>]} />`, () => {
it('reactElementToJSXString(<div a={[<div><span /></div>]} />', () => {
expect(
reactElementToJSXString(<div a={[<div><span /></div>]} />)
).toEqual(`<div a={[<div><span /></div>]} />`);
).toEqual('<div a={[<div><span /></div>]} />');
});
it(`reactElementToJSXString(<div aprop="test" ref="yes" />`, () => {
it('reactElementToJSXString(<div aprop="test" ref="yes" />', () => {
expect(

@@ -371,3 +370,3 @@ reactElementToJSXString(<div aprop="test" ref="yes" />)

it(`reactElementToJSXString(<div aprop="a" ref="yes"><span ref="wee" zprop="z"/></div>`, () => {
it('reactElementToJSXString(<div aprop="a" ref="yes"><span ref="wee" zprop="z"/></div>', () => {
expect(

@@ -387,3 +386,3 @@ reactElementToJSXString(<div aprop="a" ref="yes"><span ref="wee" zprop="z"/></div>)

it(`reactElementToJSXString(<div aprop="test" key="yes" />`, () => {
it('reactElementToJSXString(<div aprop="test" key="yes" />', () => {
expect(

@@ -398,23 +397,23 @@ reactElementToJSXString(<div aprop="test" key="yes" />)

it(`reactElementToJSXString(<div>\\n {null}\\n</div>`, () => {
let element = (<div>
it('reactElementToJSXString(<div>\\n {null}\\n</div>', () => {
const element = <div>
{null}
</div>);
</div>;
expect(reactElementToJSXString(element)).toEqual(`<div />`);
expect(reactElementToJSXString(element)).toEqual('<div />');
});
it(`reactElementToJSXString(<div>{true}</div>)`, () => {
it('reactElementToJSXString(<div>{true}</div>)', () => {
expect(
reactElementToJSXString(<div>{true}</div>)
).toEqual(`<div />`);
).toEqual('<div />');
});
it(`reactElementToJSXString(<div>{false}</div>)`, () => {
it('reactElementToJSXString(<div>{false}</div>)', () => {
expect(
reactElementToJSXString(<div>{false}</div>)
).toEqual(`<div />`);
).toEqual('<div />');
});
it(`reactElementToJSXString(<div>{false}</div>)`, () => {
it('reactElementToJSXString(<div>{false}</div>)', () => {
expect(

@@ -434,6 +433,6 @@ reactElementToJSXString(<div>

</div>)
).toEqual(`<div />`);
).toEqual('<div />');
});
it(`reactElementToJSXString(<div> {false} </div>)`, () => {
it('reactElementToJSXString(<div> {false} </div>)', () => {
expect(

@@ -444,9 +443,9 @@ reactElementToJSXString(<div> {false} </div>)

it(`reactElementToJSXString(<div>{null}</div>)`, () => {
it('reactElementToJSXString(<div>{null}</div>)', () => {
expect(
reactElementToJSXString(<div>{null}</div>)
).toEqual(`<div />`);
).toEqual('<div />');
});
it(`reactElementToJSXString(<div>{123}</div>)`, () => {
it('reactElementToJSXString(<div>{123}</div>)', () => {
expect(

@@ -459,3 +458,3 @@ reactElementToJSXString(<div>{123}</div>)

it(`reactElementToJSXString(<div>{''}</div>)`, () => {
it('reactElementToJSXString(<div>{\'\'}</div>)', () => {
expect(

@@ -466,3 +465,3 @@ reactElementToJSXString(<div>{''}</div>)

it(`reactElementToJSXString(<div>String with {1} js expression</div>)`, () => {
it('reactElementToJSXString(<div>String with {1} js expression</div>)', () => {
expect(

@@ -475,8 +474,8 @@ reactElementToJSXString(<div>String with {1} js number</div>)

it(`reactElementToJSXString(<TestComponent />, { displayName: toUpper })`, () => {
it('reactElementToJSXString(<TestComponent />, { displayName: toUpper })', () => {
expect(
reactElementToJSXString(<TestComponent />, {
displayName: (element) => element.type.name.toUpperCase()
displayName: element => element.type.name.toUpperCase()
})
).toEqual(`<TESTCOMPONENT />`);
).toEqual('<TESTCOMPONENT />');
});

@@ -487,3 +486,3 @@

reactElementToJSXString(<DefaultPropsComponent />)
).toEqual(`<DefaultPropsComponent test="test" />`);
).toEqual('<DefaultPropsComponent test="test" />');
});

@@ -494,19 +493,25 @@

reactElementToJSXString(<DefaultPropsComponent />, {showDefaultProps: false})
).toEqual(`<DefaultPropsComponent />`);
).toEqual('<DefaultPropsComponent />');
});
it(`reactElementToJSXString(<div co={<div a="1" />} />, { displayName: toUpper })`, () => {
it('should render props that differ from their defaults if "showDefaultProps" option is false', () => {
expect(
reactElementToJSXString(<DefaultPropsComponent test="foo" />, {showDefaultProps: false})
).toEqual('<DefaultPropsComponent test="foo" />');
});
it('reactElementToJSXString(<div co={<div a="1" />} />, { displayName: toUpper })', () => {
expect(
reactElementToJSXString(<div co={<div a="1" />} />, {
displayName: (element) => element.type.toUpperCase()
displayName: element => element.type.toUpperCase()
})
).toEqual(`<DIV co={<DIV a="1" />} />`);
).toEqual('<DIV co={<DIV a="1" />} />');
});
it(`reactElementToJSXString(<div co={{a: <div a="1" />}} />, { displayName: toUpper })`, () => {
it('reactElementToJSXString(<div co={{a: <div a="1" />}} />, { displayName: toUpper })', () => {
expect(
reactElementToJSXString(<div co={{a: <div a="1" />}} />, {
displayName: (element) => element.type.toUpperCase()
displayName: element => element.type.toUpperCase()
})
).toEqual(`<DIV co={{a: <DIV a="1" />}} />`);
).toEqual('<DIV co={{a: <DIV a="1" />}} />');
});

@@ -516,3 +521,3 @@ it('should omit true as value', () => {

reactElementToJSXString(<div primary={true} />) // eslint-disable-line react/jsx-boolean-value
).toEqual(`<div primary />`);
).toEqual('<div primary />');
});

@@ -522,4 +527,4 @@ it('should omit attributes with false as value', () => {

reactElementToJSXString(<div primary={false} />) // eslint-disable-line react/jsx-boolean-value
).toEqual(`<div />`);
).toEqual('<div />');
});
});

@@ -11,3 +11,3 @@ import React from 'react';

export default function reactElementToJSXString(ReactElement, {displayName, showDefaultProps = true} = {}) {
let getDisplayName = displayName || getDefaultDisplayName;
const getDisplayName = displayName || getDefaultDisplayName;

@@ -20,12 +20,14 @@ return toJSXString({ReactElement});

} else if (!isElement(Element)) {
throw new Error('react-element-to-jsx-string: Expected a ReactElement, ' +
'got `' + (typeof Element) + '`');
throw new Error(
`react-element-to-jsx-string: Expected a ReactElement,
got \`${typeof Element}\``
);
}
let tagName = getDisplayName(Element);
const tagName = getDisplayName(Element);
let out = `<${tagName}`;
let props = formatProps(Element.props, getDefaultProps(Element));
const props = formatProps(Element.props, getDefaultProps(Element));
let attributes = [];
let children = React.Children.toArray(Element.props.children)
const children = React.Children.toArray(Element.props.children)
.filter(onlyMeaningfulChildren);

@@ -39,3 +41,3 @@

// React automatically add key=".X" when there are some children
!/^\./.test(Element.key)) {
!(/^\./).test(Element.key)) {
attributes.push(getJSXAttribute('key', Element.key));

@@ -48,3 +50,3 @@ }

if (attributes.length === 1 || inline) {
out += ` `;
out += ' ';
} else {

@@ -66,3 +68,3 @@ out += `\n${spacer(lvl + 1)}`;

if (children.length > 0) {
out += `>`;
out += '>';
lvl++;

@@ -81,3 +83,3 @@ if (!inline) {

recurse({lvl, inline})
).join('\n' + spacer(lvl));
).join(`\n${spacer(lvl)}`);
}

@@ -91,3 +93,3 @@ if (!inline) {

if (attributes.length <= 1) {
out += ` `;
out += ' ';
}

@@ -102,3 +104,3 @@

function formatProps(props, defaultProps) {
let formated = Object
let formatted = Object
.keys(props)

@@ -109,12 +111,8 @@ .filter(noChildren)

if (!showDefaultProps) {
formated = formated.filter((key, value) => {
return defaultProps[key] ? defaultProps[key] === value : true;
});
formatted = formatted.filter(key => defaultProps[key] ? defaultProps[key] !== props[key] : true);
}
return formated
return formatted
.sort()
.map(propName => {
return getJSXAttribute(propName, props[propName]);
});
.map(propName => getJSXAttribute(propName, props[propName]));
}

@@ -140,2 +138,4 @@

function formatValue(value) {
const wrapper = '__reactElementToJSXString__Wrapper__';
if (typeof value === 'function') {

@@ -151,9 +151,5 @@ return function noRefCheck() {};

// otherwise, the element would be surrounded by quotes: <div a={{b: '<div />'}} />
return '<__reactElementToJSXString__Wrapper__>' +
toJSXString({ReactElement: value, inline: true}) +
'</__reactElementToJSXString__Wrapper__>';
return `<${wrapper}>${toJSXString({ReactElement: value, inline: true})}</${wrapper}>`;
} else if (isPlainObject(value) || Array.isArray(value)) {
return '<__reactElementToJSXString__Wrapper__>' +
stringifyObject(value) +
'</__reactElementToJSXString__Wrapper__>';
return `<${wrapper}>${stringifyObject(value)}</${wrapper}>`;
}

@@ -165,5 +161,3 @@

function recurse({lvl, inline}) {
return Element => {
return toJSXString({ReactElement: Element, lvl, inline});
};
return Element => toJSXString({ReactElement: Element, lvl, inline});
}

@@ -173,2 +167,3 @@

if (Object.keys(obj).length > 0 || obj.length > 0) {
// eslint-disable-next-line array-callback-return
obj = traverse(obj).map(function(value) {

@@ -205,6 +200,6 @@ if (isElement(value) || this.isLeaf) {

function mergePlainStringChildren(prev, cur) {
var lastItem = prev[prev.length - 1];
const lastItem = prev[prev.length - 1];
if (typeof cur === 'number') {
cur = '' + cur;
cur = String(cur);
}

@@ -222,3 +217,3 @@

function spacer(times) {
return fill(new Array(times), ` `).join(``);
return fill(new Array(times), ' ').join('');
}

@@ -225,0 +220,0 @@

{
"name": "react-element-to-jsx-string",
"version": "3.1.0",
"version": "3.1.1",
"description": "Turn a ReactElement into the corresponding JSX string.",

@@ -17,9 +17,8 @@ "main": "index-dist.js",

"devDependencies": {
"babel": "^5.8.29",
"babel-eslint": "^4.1.8",
"eslint": "^1.10.3",
"eslint-config-airbnb": "^1.0.0",
"eslint-config-algolia": "^4.6.0",
"eslint-plugin-algolia": "^1.5.0",
"eslint-plugin-react": "^4.2.3",
"babel-cli": "^6.10.1",
"babel-preset-es2015": "^6.9.0",
"babel-preset-react": "^6.11.1",
"babel-preset-stage-2": "^6.11.0",
"babel-register": "^6.9.0",
"eslint-config-algolia": "^5.1.0",
"expect": "^1.14.0",

@@ -26,0 +25,0 @@ "lodash.fill": "^3.3.4",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet