@complat/react-spectra-editor 0.11.3 → 0.11.4-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,370 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8
+
9
+ var _react = require('react');
10
+
11
+ var _react2 = _interopRequireDefault(_react);
12
+
13
+ var _propTypes = require('prop-types');
14
+
15
+ var _propTypes2 = _interopRequireDefault(_propTypes);
16
+
17
+ var _classnames = require('classnames');
18
+
19
+ var _classnames2 = _interopRequireDefault(_classnames);
20
+
21
+ var _reactRedux = require('react-redux');
22
+
23
+ var _redux = require('redux');
24
+
25
+ var _reactDropzone = require('react-dropzone');
26
+
27
+ var _reactDropzone2 = _interopRequireDefault(_reactDropzone);
28
+
29
+ var _ExpansionPanel = require('@material-ui/core/ExpansionPanel');
30
+
31
+ var _ExpansionPanel2 = _interopRequireDefault(_ExpansionPanel);
32
+
33
+ var _ExpansionPanelSummary = require('@material-ui/core/ExpansionPanelSummary');
34
+
35
+ var _ExpansionPanelSummary2 = _interopRequireDefault(_ExpansionPanelSummary);
36
+
37
+ var _ExpandMore = require('@material-ui/icons/ExpandMore');
38
+
39
+ var _ExpandMore2 = _interopRequireDefault(_ExpandMore);
40
+
41
+ var _HighlightOff = require('@material-ui/icons/HighlightOff');
42
+
43
+ var _HighlightOff2 = _interopRequireDefault(_HighlightOff);
44
+
45
+ var _Table = require('@material-ui/core/Table');
46
+
47
+ var _Table2 = _interopRequireDefault(_Table);
48
+
49
+ var _TableBody = require('@material-ui/core/TableBody');
50
+
51
+ var _TableBody2 = _interopRequireDefault(_TableBody);
52
+
53
+ var _TableCell = require('@material-ui/core/TableCell');
54
+
55
+ var _TableCell2 = _interopRequireDefault(_TableCell);
56
+
57
+ var _TableRow = require('@material-ui/core/TableRow');
58
+
59
+ var _TableRow2 = _interopRequireDefault(_TableRow);
60
+
61
+ var _Divider = require('@material-ui/core/Divider');
62
+
63
+ var _Divider2 = _interopRequireDefault(_Divider);
64
+
65
+ var _Typography = require('@material-ui/core/Typography');
66
+
67
+ var _Typography2 = _interopRequireDefault(_Typography);
68
+
69
+ var _Tooltip = require('@material-ui/core/Tooltip');
70
+
71
+ var _Tooltip2 = _interopRequireDefault(_Tooltip);
72
+
73
+ var _VisibilityOutlined = require('@material-ui/icons/VisibilityOutlined');
74
+
75
+ var _VisibilityOutlined2 = _interopRequireDefault(_VisibilityOutlined);
76
+
77
+ var _VisibilityOffOutlined = require('@material-ui/icons/VisibilityOffOutlined');
78
+
79
+ var _VisibilityOffOutlined2 = _interopRequireDefault(_VisibilityOffOutlined);
80
+
81
+ var _styles = require('@material-ui/core/styles');
82
+
83
+ var _format = require('../../helpers/format');
84
+
85
+ var _format2 = _interopRequireDefault(_format);
86
+
87
+ var _jcamp = require('../../actions/jcamp');
88
+
89
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
90
+
91
+ var styles = function styles(theme) {
92
+ return {
93
+ panel: {
94
+ backgroundColor: '#eee',
95
+ display: 'table-row'
96
+ },
97
+ panelSummary: {
98
+ backgroundColor: '#eee',
99
+ height: 32
100
+ },
101
+ txtBadge: {},
102
+ panelDetail: {
103
+ backgroundColor: '#fff',
104
+ maxHeight: 'calc(90vh - 220px)', // ROI
105
+ overflow: 'auto'
106
+ },
107
+ table: {
108
+ width: '100%'
109
+ },
110
+ tTxt: {
111
+ padding: 0
112
+ },
113
+ tTxtHide: {
114
+ color: '#D5D8DC'
115
+ },
116
+ tRow: {
117
+ height: 28,
118
+ '&:nth-of-type(even)': {
119
+ backgroundColor: theme.palette.background.default
120
+ }
121
+ },
122
+ rmBtn: {
123
+ color: 'red',
124
+ padding: '0 5px 0 5px',
125
+ '&:hover': {
126
+ borderRadius: 12,
127
+ backgroundColor: 'red',
128
+ color: 'white'
129
+ }
130
+ },
131
+ showBtn: {
132
+ color: 'steelblue',
133
+ padding: '0 5px 0 5px',
134
+ '&:hover': {
135
+ borderRadius: 12,
136
+ backgroundColor: 'steelblue',
137
+ color: 'white'
138
+ }
139
+ },
140
+ hideBtn: {
141
+ color: 'gray',
142
+ padding: '0 5px 0 5px',
143
+ '&:hover': {
144
+ borderRadius: 12,
145
+ backgroundColor: 'gray',
146
+ color: 'white'
147
+ }
148
+ },
149
+ square: {
150
+ textAlign: 'center !important'
151
+ },
152
+ baseDD: {
153
+ backgroundColor: 'white',
154
+ border: '1px dashed black',
155
+ borderRadius: 5,
156
+ height: 26,
157
+ lineHeight: '26px',
158
+ margin: '7px 0 7px 0',
159
+ textAlign: 'center',
160
+ verticalAlign: 'middle',
161
+ width: '90%'
162
+ },
163
+ enableDD: {
164
+ border: '2px dashed #000',
165
+ color: '#000'
166
+ },
167
+ disableDD: {
168
+ border: '2px dashed #aaa',
169
+ color: '#aaa'
170
+ },
171
+ tpCard: {},
172
+ tpMoreTxt: {
173
+ padding: '0 0 0 60px'
174
+ },
175
+ tpLabel: {
176
+ fontSize: 16
177
+ }
178
+ };
179
+ };
180
+
181
+ var msgDefault = 'Add spectra to compare.';
182
+
183
+ var tpHint = function tpHint(classes) {
184
+ return _react2.default.createElement(
185
+ 'span',
186
+ { className: (0, _classnames2.default)(classes.tpCard) },
187
+ _react2.default.createElement(
188
+ 'p',
189
+ { className: (0, _classnames2.default)(classes.tpLabel, 'txt-sv-tp') },
190
+ '- Accept *.dx, *.jdx, *.JCAMP,'
191
+ ),
192
+ _react2.default.createElement(
193
+ 'p',
194
+ { className: (0, _classnames2.default)(classes.tpLabel, 'txt-sv-tp') },
195
+ '- Max 5 spectra.'
196
+ )
197
+ );
198
+ };
199
+
200
+ var content = function content(classes, desc) {
201
+ return _react2.default.createElement(
202
+ _Tooltip2.default,
203
+ {
204
+ title: tpHint(classes),
205
+ placement: 'bottom'
206
+ },
207
+ _react2.default.createElement(
208
+ 'span',
209
+ { className: (0, _classnames2.default)(classes.tpLabel, 'txt-sv-tp') },
210
+ desc
211
+ )
212
+ );
213
+ };
214
+
215
+ var inputOthers = function inputOthers(classes, addOthersCbSt) {
216
+ var fileName = '';
217
+ var desc = fileName || msgDefault;
218
+ var onDrop = function onDrop(jcamps) {
219
+ if (!addOthersCbSt) return;
220
+ addOthersCbSt({ jcamps: jcamps });
221
+ };
222
+
223
+ return _react2.default.createElement(
224
+ _reactDropzone2.default,
225
+ {
226
+ className: 'dropbox',
227
+ onDrop: onDrop
228
+ },
229
+ function (_ref) {
230
+ var getRootProps = _ref.getRootProps,
231
+ getInputProps = _ref.getInputProps;
232
+ return _react2.default.createElement(
233
+ 'div',
234
+ _extends({}, getRootProps(), {
235
+ className: (0, _classnames2.default)(classes.baseDD)
236
+ }),
237
+ _react2.default.createElement('input', getInputProps()),
238
+ content(classes, desc)
239
+ );
240
+ }
241
+ );
242
+ };
243
+
244
+ var compareList = function compareList(classes, othersSt, rmOthersOneAct, toggleShowAct) {
245
+ var rows = othersSt.map(function (o, idx) {
246
+ return {
247
+ idx: idx,
248
+ title: o.spectra[0].title,
249
+ color: _format2.default.compareColors(idx),
250
+ rmCb: function rmCb() {
251
+ return rmOthersOneAct(idx);
252
+ },
253
+ isShow: o.show,
254
+ toggleShowCb: function toggleShowCb() {
255
+ return toggleShowAct(idx);
256
+ }
257
+ };
258
+ });
259
+
260
+ return _react2.default.createElement(
261
+ _Table2.default,
262
+ { className: classes.table },
263
+ _react2.default.createElement(
264
+ _TableBody2.default,
265
+ null,
266
+ rows.map(function (row) {
267
+ return _react2.default.createElement(
268
+ _TableRow2.default,
269
+ { key: row.idx, className: classes.tRow, hover: true },
270
+ _react2.default.createElement(
271
+ _TableCell2.default,
272
+ {
273
+ align: 'right',
274
+ className: (0, _classnames2.default)(classes.tTxt, classes.square, 'txt-sv-panel-txt'),
275
+ style: { backgroundColor: row.color }
276
+ },
277
+ row.idx + 1
278
+ ),
279
+ _react2.default.createElement(
280
+ _TableCell2.default,
281
+ { align: 'right', className: (0, _classnames2.default)(classes.tTxt, 'txt-sv-panel-txt', row.isShow ? null : classes.tTxtHide) },
282
+ row.title
283
+ ),
284
+ _react2.default.createElement(
285
+ _TableCell2.default,
286
+ { align: 'right', className: (0, _classnames2.default)(classes.tTxt, 'txt-sv-panel-txt') },
287
+ row.isShow ? _react2.default.createElement(_VisibilityOutlined2.default, {
288
+ onClick: row.toggleShowCb,
289
+ className: classes.showBtn
290
+ }) : _react2.default.createElement(_VisibilityOffOutlined2.default, {
291
+ onClick: row.toggleShowCb,
292
+ className: classes.hideBtn
293
+ }),
294
+ _react2.default.createElement(_HighlightOff2.default, { onClick: row.rmCb, className: classes.rmBtn })
295
+ )
296
+ );
297
+ })
298
+ )
299
+ );
300
+ };
301
+
302
+ var ComparePanel = function ComparePanel(_ref2) {
303
+ var classes = _ref2.classes,
304
+ expand = _ref2.expand,
305
+ onExapnd = _ref2.onExapnd,
306
+ othersSt = _ref2.othersSt,
307
+ addOthersCbSt = _ref2.addOthersCbSt,
308
+ rmOthersOneAct = _ref2.rmOthersOneAct,
309
+ toggleShowAct = _ref2.toggleShowAct;
310
+ return _react2.default.createElement(
311
+ _ExpansionPanel2.default,
312
+ {
313
+ expanded: expand,
314
+ onChange: onExapnd,
315
+ className: (0, _classnames2.default)(classes.panel),
316
+ TransitionProps: { unmountOnExit: true } // increase ExpansionPanel performance
317
+ },
318
+ _react2.default.createElement(
319
+ _ExpansionPanelSummary2.default,
320
+ {
321
+ expandIcon: _react2.default.createElement(_ExpandMore2.default, null),
322
+ className: (0, _classnames2.default)(classes.panelSummary)
323
+ },
324
+ _react2.default.createElement(
325
+ _Typography2.default,
326
+ { className: 'txt-panel-header' },
327
+ _react2.default.createElement(
328
+ 'span',
329
+ { className: (0, _classnames2.default)(classes.txtBadge, 'txt-sv-panel-title') },
330
+ 'Spectra Comparisons'
331
+ )
332
+ )
333
+ ),
334
+ _react2.default.createElement(_Divider2.default, null),
335
+ inputOthers(classes, addOthersCbSt),
336
+ _react2.default.createElement(
337
+ 'div',
338
+ { className: (0, _classnames2.default)(classes.panelDetail) },
339
+ compareList(classes, othersSt, rmOthersOneAct, toggleShowAct)
340
+ )
341
+ );
342
+ };
343
+
344
+ var mapStateToProps = function mapStateToProps(state, props) {
345
+ return (// eslint-disable-line
346
+ {
347
+ othersSt: state.jcamp.others,
348
+ addOthersCbSt: state.jcamp.addOthersCb
349
+ }
350
+ );
351
+ };
352
+
353
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
354
+ return (0, _redux.bindActionCreators)({
355
+ rmOthersOneAct: _jcamp.rmOthersOne,
356
+ toggleShowAct: _jcamp.toggleShow
357
+ }, dispatch);
358
+ };
359
+
360
+ ComparePanel.propTypes = {
361
+ classes: _propTypes2.default.object.isRequired,
362
+ expand: _propTypes2.default.bool.isRequired,
363
+ onExapnd: _propTypes2.default.func.isRequired,
364
+ othersSt: _propTypes2.default.array.isRequired,
365
+ addOthersCbSt: _propTypes2.default.func.isRequired,
366
+ rmOthersOneAct: _propTypes2.default.func.isRequired,
367
+ toggleShowAct: _propTypes2.default.func.isRequired
368
+ };
369
+
370
+ exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _styles.withStyles)(styles)(ComparePanel));
@@ -0,0 +1,341 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _react = require('react');
8
+
9
+ var _react2 = _interopRequireDefault(_react);
10
+
11
+ var _propTypes = require('prop-types');
12
+
13
+ var _propTypes2 = _interopRequireDefault(_propTypes);
14
+
15
+ var _classnames = require('classnames');
16
+
17
+ var _classnames2 = _interopRequireDefault(_classnames);
18
+
19
+ var _reactRedux = require('react-redux');
20
+
21
+ var _redux = require('redux');
22
+
23
+ var _reactSvgFileZoomPan = require('@complat/react-svg-file-zoom-pan');
24
+
25
+ var _reactSvgFileZoomPan2 = _interopRequireDefault(_reactSvgFileZoomPan);
26
+
27
+ var _reactQuill = require('react-quill');
28
+
29
+ var _reactQuill2 = _interopRequireDefault(_reactQuill);
30
+
31
+ var _ExpansionPanel = require('@material-ui/core/ExpansionPanel');
32
+
33
+ var _ExpansionPanel2 = _interopRequireDefault(_ExpansionPanel);
34
+
35
+ var _ExpansionPanelSummary = require('@material-ui/core/ExpansionPanelSummary');
36
+
37
+ var _ExpansionPanelSummary2 = _interopRequireDefault(_ExpansionPanelSummary);
38
+
39
+ var _ExpandMore = require('@material-ui/icons/ExpandMore');
40
+
41
+ var _ExpandMore2 = _interopRequireDefault(_ExpandMore);
42
+
43
+ var _Divider = require('@material-ui/core/Divider');
44
+
45
+ var _Divider2 = _interopRequireDefault(_Divider);
46
+
47
+ var _Typography = require('@material-ui/core/Typography');
48
+
49
+ var _Typography2 = _interopRequireDefault(_Typography);
50
+
51
+ var _styles = require('@material-ui/core/styles');
52
+
53
+ var _format = require('../../helpers/format');
54
+
55
+ var _format2 = _interopRequireDefault(_format);
56
+
57
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
58
+
59
+ var styles = function styles() {
60
+ return {
61
+ chip: {
62
+ margin: '1px 0 1px 0'
63
+ },
64
+ panel: {
65
+ backgroundColor: '#eee',
66
+ display: 'table-row'
67
+ },
68
+ panelSummary: {
69
+ backgroundColor: '#eee',
70
+ height: 32
71
+ },
72
+ panelDetail: {
73
+ backgroundColor: '#fff',
74
+ maxHeight: 'calc(90vh - 220px)', // ROI
75
+ overflow: 'auto'
76
+ },
77
+ table: {
78
+ width: 'auto'
79
+ },
80
+ rowRoot: {
81
+ border: '1px solid #eee',
82
+ height: 36,
83
+ lineHeight: '36px',
84
+ overflow: 'hidden',
85
+ paddingLeft: 24,
86
+ textAlign: 'left'
87
+ },
88
+ rowOdd: {
89
+ backgroundColor: '#fff',
90
+ textOverflow: 'ellipsis',
91
+ whiteSpace: 'nowrap'
92
+ },
93
+ rowEven: {
94
+ backgroundColor: '#fafafa',
95
+ textOverflow: 'ellipsis',
96
+ whiteSpace: 'nowrap'
97
+ },
98
+ rowOddSim: {
99
+ backgroundColor: '#fff',
100
+ height: 108,
101
+ lineHeight: '24px',
102
+ overflowY: 'scroll',
103
+ overflowWrap: 'word-break'
104
+ },
105
+ tHead: {
106
+ fontWeight: 'bold',
107
+ float: 'left',
108
+ fontSize: '0.8rem',
109
+ fontFamily: 'Helvetica'
110
+ },
111
+ tTxt: {
112
+ fontSize: '0.8rem',
113
+ fontFamily: 'Helvetica',
114
+ marginRight: 3
115
+ },
116
+ quill: {
117
+ backgroundColor: '#fafafa',
118
+ border: '1px solid #eee',
119
+ fontSize: '0.8rem',
120
+ fontFamily: 'Helvetica',
121
+ padding: '0 10px 0 10px',
122
+ textAlign: 'left'
123
+ }
124
+ };
125
+ };
126
+
127
+ var simTitle = function simTitle() {
128
+ return 'Simulated signals from NMRshiftDB';
129
+ };
130
+
131
+ var simContent = function simContent(nmrSimPeaks) {
132
+ return nmrSimPeaks && nmrSimPeaks.sort(function (a, b) {
133
+ return a - b;
134
+ }).join(', ');
135
+ };
136
+
137
+ var aucValue = function aucValue(integration) {
138
+ if (!integration) {
139
+ return "";
140
+ }
141
+ var values = [];
142
+ var stackIntegration = integration.stack;
143
+ if (Array.isArray(stackIntegration)) {
144
+ var sumVal = 0.0;
145
+ stackIntegration.forEach(function (inte) {
146
+ if (inte.absoluteArea) {
147
+ sumVal += inte.absoluteArea;
148
+ }
149
+ });
150
+ sumVal = sumVal.toFixed(2);
151
+ stackIntegration.forEach(function (inte) {
152
+ if (inte.absoluteArea) {
153
+ var areaVal = inte.absoluteArea.toFixed(2);
154
+ var percent = (areaVal * 100 / sumVal).toFixed(2);
155
+ var valStr = areaVal + " (" + percent + "%)";
156
+ values.push(valStr);
157
+ }
158
+ });
159
+ }
160
+ return values.join(", ");
161
+ };
162
+
163
+ var InfoPanel = function InfoPanel(_ref) {
164
+ var classes = _ref.classes,
165
+ expand = _ref.expand,
166
+ feature = _ref.feature,
167
+ integration = _ref.integration,
168
+ editorOnly = _ref.editorOnly,
169
+ molSvg = _ref.molSvg,
170
+ descriptions = _ref.descriptions,
171
+ layoutSt = _ref.layoutSt,
172
+ simulationSt = _ref.simulationSt,
173
+ shiftNameSt = _ref.shiftNameSt,
174
+ onExapnd = _ref.onExapnd,
175
+ canChangeDescription = _ref.canChangeDescription,
176
+ onDescriptionChanged = _ref.onDescriptionChanged;
177
+
178
+ if (!feature) return null;
179
+ var title = feature.title,
180
+ observeFrequency = feature.observeFrequency,
181
+ solventName = feature.solventName;
182
+
183
+ var showSolvName = shiftNameSt === '- - -' ? solventName : shiftNameSt;
184
+
185
+ var originStack = null;
186
+ if (integration) {
187
+ originStack = integration.originStack;
188
+ }
189
+
190
+ return _react2.default.createElement(
191
+ _ExpansionPanel2.default,
192
+ {
193
+ expanded: expand,
194
+ onChange: onExapnd,
195
+ className: (0, _classnames2.default)(classes.panel),
196
+ TransitionProps: { unmountOnExit: true } // increase ExpansionPanel performance
197
+ },
198
+ _react2.default.createElement(
199
+ _ExpansionPanelSummary2.default,
200
+ {
201
+ expandIcon: _react2.default.createElement(_ExpandMore2.default, null),
202
+ className: (0, _classnames2.default)(classes.panelSummary)
203
+ },
204
+ _react2.default.createElement(
205
+ _Typography2.default,
206
+ { className: 'txt-panel-header' },
207
+ _react2.default.createElement(
208
+ 'span',
209
+ { className: (0, _classnames2.default)(classes.txtBadge, 'txt-sv-panel-title') },
210
+ 'Info'
211
+ )
212
+ )
213
+ ),
214
+ _react2.default.createElement(_Divider2.default, null),
215
+ _react2.default.createElement(
216
+ 'div',
217
+ { className: (0, _classnames2.default)(classes.panelDetail) },
218
+ _react2.default.createElement(
219
+ 'div',
220
+ { className: (0, _classnames2.default)(classes.rowRoot, classes.rowOdd) },
221
+ _react2.default.createElement(
222
+ 'span',
223
+ { className: (0, _classnames2.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt') },
224
+ 'Title : '
225
+ ),
226
+ _react2.default.createElement(
227
+ 'span',
228
+ { className: (0, _classnames2.default)(classes.tTxt, 'txt-sv-panel-txt') },
229
+ title
230
+ )
231
+ ),
232
+ _format2.default.isNmrLayout(layoutSt) ? _react2.default.createElement(
233
+ 'div',
234
+ { className: (0, _classnames2.default)(classes.rowRoot, classes.rowEven) },
235
+ _react2.default.createElement(
236
+ 'span',
237
+ { className: (0, _classnames2.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt') },
238
+ 'Freq : '
239
+ ),
240
+ _react2.default.createElement(
241
+ 'span',
242
+ { className: (0, _classnames2.default)(classes.tTxt, 'txt-sv-panel-txt') },
243
+ parseInt(observeFrequency, 10) || ' - '
244
+ )
245
+ ) : null,
246
+ _format2.default.isNmrLayout(layoutSt) ? _react2.default.createElement(
247
+ 'div',
248
+ { className: (0, _classnames2.default)(classes.rowRoot, classes.rowOdd) },
249
+ _react2.default.createElement(
250
+ 'span',
251
+ { className: (0, _classnames2.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt') },
252
+ 'Solv : '
253
+ ),
254
+ _react2.default.createElement(
255
+ 'span',
256
+ { className: (0, _classnames2.default)(classes.tTxt, 'txt-sv-panel-txt') },
257
+ showSolvName
258
+ )
259
+ ) : null,
260
+ !molSvg ? null : _react2.default.createElement(_reactSvgFileZoomPan2.default, {
261
+ svg: molSvg,
262
+ duration: 300,
263
+ resize: true
264
+ }),
265
+ _format2.default.isHplcUvVisLayout(layoutSt) ? _react2.default.createElement(
266
+ 'div',
267
+ { className: (0, _classnames2.default)(classes.rowRoot, classes.rowOddSim) },
268
+ _react2.default.createElement(
269
+ 'span',
270
+ { className: (0, _classnames2.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt') },
271
+ 'Area under curve (AUC):'
272
+ ),
273
+ _react2.default.createElement('br', null),
274
+ _react2.default.createElement(
275
+ 'span',
276
+ { className: (0, _classnames2.default)(classes.tTxt, classes.tTxtSim, 'txt-sv-panel-txt') },
277
+ aucValue(integration)
278
+ )
279
+ ) : null
280
+ ),
281
+ _react2.default.createElement(_reactQuill2.default, {
282
+ className: (0, _classnames2.default)(classes.quill, 'card-sv-quill'),
283
+ value: descriptions,
284
+ modules: { toolbar: false },
285
+ onChange: onDescriptionChanged,
286
+ readOnly: canChangeDescription !== undefined ? !canChangeDescription : true
287
+ }),
288
+ _react2.default.createElement(
289
+ 'div',
290
+ null,
291
+ !editorOnly && _format2.default.isNmrLayout(layoutSt) ? _react2.default.createElement(
292
+ 'div',
293
+ { className: (0, _classnames2.default)(classes.rowRoot, classes.rowOddSim) },
294
+ _react2.default.createElement(
295
+ 'span',
296
+ { className: (0, _classnames2.default)(classes.tTxt, classes.tHead, 'txt-sv-panel-txt') },
297
+ simTitle(),
298
+ ':'
299
+ ),
300
+ _react2.default.createElement('br', null),
301
+ _react2.default.createElement(
302
+ 'span',
303
+ { className: (0, _classnames2.default)(classes.tTxt, classes.tTxtSim, 'txt-sv-panel-txt') },
304
+ simContent(simulationSt.nmrSimPeaks)
305
+ )
306
+ ) : null
307
+ )
308
+ );
309
+ };
310
+
311
+ var mapStateToProps = function mapStateToProps(state, props) {
312
+ return (// eslint-disable-line
313
+ {
314
+ layoutSt: state.layout,
315
+ simulationSt: state.simulation,
316
+ shiftNameSt: state.shift.ref.name
317
+ }
318
+ );
319
+ };
320
+
321
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
322
+ return (0, _redux.bindActionCreators)({}, dispatch);
323
+ };
324
+
325
+ InfoPanel.propTypes = {
326
+ classes: _propTypes2.default.object.isRequired,
327
+ expand: _propTypes2.default.bool.isRequired,
328
+ feature: _propTypes2.default.object.isRequired,
329
+ integration: _propTypes2.default.object.isRequired,
330
+ editorOnly: _propTypes2.default.bool.isRequired,
331
+ molSvg: _propTypes2.default.string.isRequired,
332
+ descriptions: _propTypes2.default.array.isRequired,
333
+ layoutSt: _propTypes2.default.string.isRequired,
334
+ simulationSt: _propTypes2.default.array.isRequired,
335
+ shiftNameSt: _propTypes2.default.string.isRequired,
336
+ onExapnd: _propTypes2.default.func.isRequired,
337
+ canChangeDescription: _propTypes2.default.bool.isRequired,
338
+ onDescriptionChanged: _propTypes2.default.func
339
+ };
340
+
341
+ exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _styles.withStyles)(styles)(InfoPanel));