@complat/react-spectra-editor 0.11.2 → 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,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));