Skip to content

Commit f5c8ad1

Browse files
committed
chore(travis): needs react as devDependency
1 parent ccc8545 commit f5c8ad1

File tree

3 files changed

+116
-0
lines changed

3 files changed

+116
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import React from 'react'
2+
import {render} from 'react-dom'
3+
import {AppContainer} from 'react-hot-loader'
4+
import App from './components/App'
5+
import Redbox from 'redbox-react'
6+
7+
const root = document.getElementById('root')
8+
const stylesBox = {
9+
width: '75%',
10+
height: '50%',
11+
background: 'green',
12+
transform: 'translateZ(0)'
13+
}
14+
const stylesRelative = {
15+
position: 'relative',
16+
width: '75%',
17+
height: '50%',
18+
background: 'blue'
19+
}
20+
render((
21+
<div style={stylesBox}>
22+
<div style={stylesRelative}>
23+
<AppContainer errorReporter={Redbox}><App /></AppContainer>
24+
</div>
25+
</div>
26+
), root)
27+
28+
if (module.hot) {
29+
module.hot.accept('./components/App', () => {
30+
const NextApp = require('./components/App').default
31+
render(
32+
<AppContainer errorReporter={Redbox}>
33+
<NextApp />
34+
</AppContainer>,
35+
root
36+
)
37+
})
38+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"react-native"
3535
],
3636
"devDependencies": {
37+
"react": "^15.0.0",
3738
"babel-cli": "^6.9.0",
3839
"babel-core": "^6.9.0",
3940
"babel-loader": "^6.2.4",

src/index-no-portal.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import React, {Component, PropTypes} from 'react'
2+
import style from './style.js'
3+
import ErrorStackParser from 'error-stack-parser'
4+
import assign from 'object-assign'
5+
import {isFilenameAbsolute, makeUrl, makeLinkText} from './lib'
6+
7+
export default class RedBox extends Component {
8+
static propTypes = {
9+
error: PropTypes.instanceOf(Error).isRequired,
10+
filename: PropTypes.string,
11+
editorScheme: PropTypes.string,
12+
useLines: PropTypes.bool,
13+
useColumns: PropTypes.bool,
14+
style: PropTypes.object,
15+
}
16+
static displayName = 'RedBox'
17+
static defaultProps = {
18+
useLines: true,
19+
useColumns: true
20+
}
21+
renderFrames (frames) {
22+
const {filename, editorScheme, useLines, useColumns} = this.props
23+
const {frame, file, linkToFile} = assign({}, style, this.props.style)
24+
return frames.map((f, index) => {
25+
let text
26+
let url
27+
28+
if (index === 0 && filename && !isFilenameAbsolute(f.fileName)) {
29+
url = makeUrl(filename, editorScheme)
30+
text = makeLinkText(filename)
31+
} else {
32+
let lines = useLines ? f.lineNumber : null
33+
let columns = useColumns ? f.columnNumber : null
34+
url = makeUrl(f.fileName, editorScheme, lines, columns)
35+
text = makeLinkText(f.fileName, lines, columns)
36+
}
37+
38+
return (
39+
<div style={frame} key={index}>
40+
<div>{f.functionName}</div>
41+
<div style={file}>
42+
<a href={url} style={linkToFile}>{text}</a>
43+
</div>
44+
</div>
45+
)
46+
})
47+
}
48+
render () {
49+
const {error} = this.props
50+
const {redbox, message, stack, frame} = assign({}, style, this.props.style)
51+
52+
let frames
53+
let parseError
54+
try {
55+
frames = ErrorStackParser.parse(error)
56+
} catch (e) {
57+
parseError = new Error('Failed to parse stack trace. Stack trace information unavailable.')
58+
}
59+
60+
if (parseError) {
61+
frames = (
62+
<div style={frame} key={0}>
63+
<div>{parseError.message}</div>
64+
</div>
65+
)
66+
} else {
67+
frames = this.renderFrames(frames)
68+
}
69+
70+
return (
71+
<div style={redbox}>
72+
<div style={message}>{error.name}: {error.message}</div>
73+
<div style={stack}>{frames}</div>
74+
</div>
75+
)
76+
}
77+
}

0 commit comments

Comments
 (0)