-
Notifications
You must be signed in to change notification settings - Fork 83
/
Copy pathFilePreview.js
71 lines (66 loc) · 2.09 KB
/
FilePreview.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import React, { Component } from 'react'
import cx from 'classnames'
import { Motion, spring } from 'react-motion'
import { connect } from 'react-redux'
import Button from 'components/Button'
import Iframe from 'components/Iframe'
import { updateSettings } from 'actions/settings'
@connect(
state => ({
preview: state.preview,
previewSize: state.settings.get('previewSize'),
}),
{
updateSettings,
},
)
class FilePreview extends Component {
render() {
const { preview, disablePointer, previewSize, onSetSize, iframeBase } = this.props
return (
<div className="FilesList--preview">
{disablePointer && <div className="FilesList--preview-overlay abs" />}
<Motion
style={{
op: spring(preview ? 1 : 0),
}}
>
{m => (
<div style={{ opacity: m.op }}>
<div className="FileList--preview-actions-wrapper">
<div className="FileList--preview-actions">
<Button
ghost
className={cx({
isActive: previewSize.get('current') === previewSize.get('desktop'),
})}
onClick={() => onSetSize(previewSize.get('desktop'))}
>
{'Desktop'}
</Button>
<Button
ghost
className={cx({
isActive: previewSize.get('current') === previewSize.get('mobile'),
})}
onClick={() => onSetSize(previewSize.get('mobile'))}
>
{'Mobile'}
</Button>
</div>
</div>
{preview ? (
preview.type === 'html' ? (
<Iframe base={iframeBase} value={preview.content} openLinks />
) : preview.type === 'image' ? (
<img src={preview.content} />
) : null
) : null}
</div>
)}
</Motion>
</div>
)
}
}
export default FilePreview