@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,405 @@
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 _ExpansionPanel = require('@material-ui/core/ExpansionPanel');
24
+
25
+ var _ExpansionPanel2 = _interopRequireDefault(_ExpansionPanel);
26
+
27
+ var _ExpansionPanelSummary = require('@material-ui/core/ExpansionPanelSummary');
28
+
29
+ var _ExpansionPanelSummary2 = _interopRequireDefault(_ExpansionPanelSummary);
30
+
31
+ var _ExpandMore = require('@material-ui/icons/ExpandMore');
32
+
33
+ var _ExpandMore2 = _interopRequireDefault(_ExpandMore);
34
+
35
+ var _Divider = require('@material-ui/core/Divider');
36
+
37
+ var _Divider2 = _interopRequireDefault(_Divider);
38
+
39
+ var _Typography = require('@material-ui/core/Typography');
40
+
41
+ var _Typography2 = _interopRequireDefault(_Typography);
42
+
43
+ var _Table = require('@material-ui/core/Table');
44
+
45
+ var _Table2 = _interopRequireDefault(_Table);
46
+
47
+ var _TableBody = require('@material-ui/core/TableBody');
48
+
49
+ var _TableBody2 = _interopRequireDefault(_TableBody);
50
+
51
+ var _TableCell = require('@material-ui/core/TableCell');
52
+
53
+ var _TableCell2 = _interopRequireDefault(_TableCell);
54
+
55
+ var _TableRow = require('@material-ui/core/TableRow');
56
+
57
+ var _TableRow2 = _interopRequireDefault(_TableRow);
58
+
59
+ var _HighlightOff = require('@material-ui/icons/HighlightOff');
60
+
61
+ var _HighlightOff2 = _interopRequireDefault(_HighlightOff);
62
+
63
+ var _styles = require('@material-ui/core/styles');
64
+
65
+ var _Checkbox = require('@material-ui/core/Checkbox');
66
+
67
+ var _Checkbox2 = _interopRequireDefault(_Checkbox);
68
+
69
+ var _Button = require('@material-ui/core/Button');
70
+
71
+ var _Button2 = _interopRequireDefault(_Button);
72
+
73
+ var _Tooltip = require('@material-ui/core/Tooltip');
74
+
75
+ var _Tooltip2 = _interopRequireDefault(_Tooltip);
76
+
77
+ var _RefreshOutlined = require('@material-ui/icons/RefreshOutlined');
78
+
79
+ var _RefreshOutlined2 = _interopRequireDefault(_RefreshOutlined);
80
+
81
+ var _multiplicity = require('../../actions/multiplicity');
82
+
83
+ var _multiplicity_select = require('./multiplicity_select');
84
+
85
+ var _multiplicity_select2 = _interopRequireDefault(_multiplicity_select);
86
+
87
+ var _multiplicity_coupling = require('./multiplicity_coupling');
88
+
89
+ var _multiplicity_coupling2 = _interopRequireDefault(_multiplicity_coupling);
90
+
91
+ var _multiplicity_calc = require('../../helpers/multiplicity_calc');
92
+
93
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
94
+
95
+ var styles = function styles(theme) {
96
+ return {
97
+ panel: {
98
+ backgroundColor: '#eee',
99
+ display: 'table-row'
100
+ },
101
+ panelSummary: {
102
+ backgroundColor: '#eee',
103
+ height: 32
104
+ },
105
+ txtBadge: {},
106
+ panelDetail: {
107
+ backgroundColor: '#fff',
108
+ maxHeight: 'calc(90vh - 220px)', // ROI
109
+ overflow: 'auto'
110
+ },
111
+ table: {
112
+ width: '100%'
113
+ },
114
+ tRowHeadPos: {
115
+ backgroundColor: '#2196f3',
116
+ height: 32
117
+ },
118
+ tRowHeadNeg: {
119
+ backgroundColor: '#fa004f',
120
+ height: 32
121
+ },
122
+ tTxtHead: {
123
+ color: 'white',
124
+ padding: '4px 0 4px 5px'
125
+ },
126
+ tTxtHeadXY: {
127
+ color: 'white',
128
+ padding: '4px 0 4px 90px'
129
+ },
130
+ tTxt: {
131
+ padding: 0
132
+ },
133
+ tRow: {
134
+ height: 28,
135
+ '&:nth-of-type(even)': {
136
+ backgroundColor: theme.palette.background.default
137
+ }
138
+ },
139
+ rmBtn: {
140
+ color: 'red',
141
+ '&:hover': {
142
+ borderRadius: 12,
143
+ backgroundColor: 'red',
144
+ color: 'white'
145
+ }
146
+ },
147
+ moCard: {
148
+ textAlign: 'left'
149
+ },
150
+ moCardHead: {
151
+ backgroundColor: '#999',
152
+ color: 'white'
153
+ },
154
+ moExtId: {
155
+ border: '2px solid white',
156
+ borderRadius: 12,
157
+ color: 'white',
158
+ margin: '0 5px 0 5px',
159
+ padding: '0 5px 0 5px'
160
+ },
161
+ moExtTxt: {
162
+ margin: '0 5px 0 5x',
163
+ fontSize: '0.8rem',
164
+ fontFamily: 'Helvetica'
165
+ },
166
+ moSelect: {
167
+ margin: '0 5x 0 5px',
168
+ fontSize: '0.8rem',
169
+ fontFamily: 'Helvetica'
170
+ },
171
+ moCBox: {
172
+ marginLeft: 24,
173
+ padding: '4px 0 4px 4px'
174
+ },
175
+ btnRf: {
176
+ color: '#fff',
177
+ float: 'right',
178
+ minWidth: 40,
179
+ right: 15
180
+ }
181
+ };
182
+ };
183
+
184
+ var cBoxStyle = function cBoxStyle() {
185
+ return {
186
+ root: {
187
+ color: 'white',
188
+ '&$checked': {
189
+ color: 'white'
190
+ }
191
+ },
192
+ checked: {}
193
+ };
194
+ };
195
+ var MUCheckbox = (0, _styles.withStyles)(cBoxStyle)(_Checkbox2.default);
196
+
197
+ var createData = function createData(idx, xExtent, peaks, shift, smExtext, mpyType, js, onClick, onRefresh) {
198
+ return {
199
+ idx: idx + 1,
200
+ xExtent: xExtent,
201
+ onClick: onClick,
202
+ onRefresh: onRefresh,
203
+ peaks: peaks,
204
+ center: (0, _multiplicity_calc.calcMpyCenter)(peaks, shift, mpyType),
205
+ jStr: (0, _multiplicity_calc.calcMpyJStr)(js),
206
+ mpyType: mpyType,
207
+ isCheck: smExtext.xL === xExtent.xL && smExtext.xU === xExtent.xU
208
+ };
209
+ };
210
+
211
+ var pkList = function pkList(classes, row, shift, digits, rmMpyPeakByPanelAct) {
212
+ return row.peaks.map(function (pk) {
213
+ var xExtent = row.xExtent;
214
+
215
+ var cb = function cb() {
216
+ return rmMpyPeakByPanelAct({ peak: pk, xExtent: xExtent });
217
+ };
218
+ var rmBtn = _react2.default.createElement(_HighlightOff2.default, { onClick: cb, className: classes.rmBtn });
219
+
220
+ return _react2.default.createElement(
221
+ _TableRow2.default,
222
+ { key: pk.x, className: classes.tRow, hover: true },
223
+ _react2.default.createElement(
224
+ _TableCell2.default,
225
+ { align: 'right', className: (0, _classnames2.default)(classes.tTxt, 'txt-sv-panel-txt') },
226
+ '(' + (pk.x - shift).toFixed(digits) + ', ' + pk.y.toExponential(2) + ')'
227
+ ),
228
+ _react2.default.createElement(
229
+ _TableCell2.default,
230
+ { align: 'right', className: (0, _classnames2.default)(classes.tTxt, 'txt-sv-panel-txt') },
231
+ rmBtn
232
+ )
233
+ );
234
+ });
235
+ };
236
+
237
+ var refreshBtn = function refreshBtn(classes, onRefresh) {
238
+ return _react2.default.createElement(
239
+ _Tooltip2.default,
240
+ {
241
+ placement: 'left',
242
+ title: _react2.default.createElement(
243
+ 'span',
244
+ { className: 'txt-sv-tp' },
245
+ 'Calculate Multiplicity'
246
+ )
247
+ },
248
+ _react2.default.createElement(
249
+ _Button2.default,
250
+ {
251
+ className: classes.btnRf,
252
+ onClick: onRefresh
253
+ },
254
+ _react2.default.createElement(_RefreshOutlined2.default, null)
255
+ )
256
+ );
257
+ };
258
+
259
+ var mpyList = function mpyList(classes, digits, multiplicitySt, clickMpyOneAct, rmMpyPeakByPanelAct, resetMpyOneAct) {
260
+ var stack = multiplicitySt.stack,
261
+ shift = multiplicitySt.shift,
262
+ smExtext = multiplicitySt.smExtext;
263
+
264
+ var rows = stack.map(function (k, idx) {
265
+ var peaks = k.peaks,
266
+ xExtent = k.xExtent,
267
+ mpyType = k.mpyType,
268
+ js = k.js;
269
+
270
+ var onRefresh = function onRefresh() {
271
+ return resetMpyOneAct(xExtent);
272
+ };
273
+ var onClick = function onClick(e) {
274
+ e.stopPropagation();
275
+ e.preventDefault();
276
+ clickMpyOneAct(xExtent);
277
+ };
278
+ return createData(idx, xExtent, peaks, shift, smExtext, mpyType, js, onClick, onRefresh);
279
+ });
280
+
281
+ return _react2.default.createElement(
282
+ 'div',
283
+ null,
284
+ rows.map(function (row) {
285
+ return _react2.default.createElement(
286
+ 'div',
287
+ { className: classes.moCard, key: row.idx },
288
+ _react2.default.createElement(
289
+ 'div',
290
+ { className: classes.moCardHead },
291
+ _react2.default.createElement(
292
+ 'div',
293
+ null,
294
+ _react2.default.createElement(MUCheckbox, {
295
+ className: classes.moCBox,
296
+ checked: row.isCheck,
297
+ onChange: row.onClick
298
+ }),
299
+ _react2.default.createElement(
300
+ 'span',
301
+ { className: (0, _classnames2.default)(classes.moExtTxt, classes.moExtId, 'txt-sv-panel-head') },
302
+ row.idx
303
+ ),
304
+ _react2.default.createElement(
305
+ 'span',
306
+ { className: (0, _classnames2.default)(classes.moExtTxt, 'txt-sv-panel-head') },
307
+ row.center.toFixed(3) + ' (ppm)'
308
+ ),
309
+ _react2.default.createElement(
310
+ 'span',
311
+ { className: (0, _classnames2.default)(classes.moSelect, 'txt-sv-panel-head') },
312
+ _react2.default.createElement(_multiplicity_select2.default, { target: row })
313
+ ),
314
+ refreshBtn(classes, row.onRefresh)
315
+ ),
316
+ _react2.default.createElement(_multiplicity_coupling2.default, {
317
+ row: row
318
+ })
319
+ ),
320
+ _react2.default.createElement(
321
+ _Table2.default,
322
+ { className: classes.table },
323
+ _react2.default.createElement(
324
+ _TableBody2.default,
325
+ null,
326
+ pkList(classes, row, shift, digits, rmMpyPeakByPanelAct)
327
+ )
328
+ )
329
+ );
330
+ })
331
+ );
332
+ };
333
+
334
+ var MultiplicityPanel = function MultiplicityPanel(_ref) {
335
+ var classes = _ref.classes,
336
+ expand = _ref.expand,
337
+ onExapnd = _ref.onExapnd,
338
+ multiplicitySt = _ref.multiplicitySt,
339
+ clickMpyOneAct = _ref.clickMpyOneAct,
340
+ rmMpyPeakByPanelAct = _ref.rmMpyPeakByPanelAct,
341
+ resetMpyOneAct = _ref.resetMpyOneAct;
342
+
343
+ var digits = 4;
344
+
345
+ return _react2.default.createElement(
346
+ _ExpansionPanel2.default,
347
+ {
348
+ expanded: expand,
349
+ onChange: onExapnd,
350
+ className: (0, _classnames2.default)(classes.panel),
351
+ TransitionProps: { unmountOnExit: true } // increase ExpansionPanel performance
352
+ },
353
+ _react2.default.createElement(
354
+ _ExpansionPanelSummary2.default,
355
+ {
356
+ expandIcon: _react2.default.createElement(_ExpandMore2.default, null),
357
+ className: (0, _classnames2.default)(classes.panelSummary)
358
+ },
359
+ _react2.default.createElement(
360
+ _Typography2.default,
361
+ { className: 'txt-panel-header' },
362
+ _react2.default.createElement(
363
+ 'span',
364
+ { className: (0, _classnames2.default)(classes.txtBadge, 'txt-sv-panel-title') },
365
+ 'Multiplicity'
366
+ )
367
+ )
368
+ ),
369
+ _react2.default.createElement(_Divider2.default, null),
370
+ _react2.default.createElement(
371
+ 'div',
372
+ { className: (0, _classnames2.default)(classes.panelDetail) },
373
+ mpyList(classes, digits, multiplicitySt, clickMpyOneAct, rmMpyPeakByPanelAct, resetMpyOneAct)
374
+ )
375
+ );
376
+ };
377
+
378
+ var mapStateToProps = function mapStateToProps(state, props) {
379
+ return (// eslint-disable-line
380
+ {
381
+ integrationSt: state.integration.present,
382
+ multiplicitySt: state.multiplicity.present
383
+ }
384
+ );
385
+ };
386
+
387
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
388
+ return (0, _redux.bindActionCreators)({
389
+ clickMpyOneAct: _multiplicity.clickMpyOne,
390
+ rmMpyPeakByPanelAct: _multiplicity.rmMpyPeakByPanel,
391
+ resetMpyOneAct: _multiplicity.resetMpyOne
392
+ }, dispatch);
393
+ };
394
+
395
+ MultiplicityPanel.propTypes = {
396
+ classes: _propTypes2.default.object.isRequired,
397
+ expand: _propTypes2.default.bool.isRequired,
398
+ onExapnd: _propTypes2.default.func.isRequired,
399
+ multiplicitySt: _propTypes2.default.object.isRequired,
400
+ clickMpyOneAct: _propTypes2.default.func.isRequired,
401
+ rmMpyPeakByPanelAct: _propTypes2.default.func.isRequired,
402
+ resetMpyOneAct: _propTypes2.default.func.isRequired
403
+ };
404
+
405
+ exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _styles.withStyles)(styles)(MultiplicityPanel));