@complat/react-spectra-editor 0.10.13-alpha.5

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.
Files changed (109) hide show
  1. package/LICENSE +662 -0
  2. package/README.md +37 -0
  3. package/dist/actions/edit_peak.js +25 -0
  4. package/dist/actions/forecast.js +41 -0
  5. package/dist/actions/integration.js +33 -0
  6. package/dist/actions/jcamp.js +41 -0
  7. package/dist/actions/layout.js +17 -0
  8. package/dist/actions/manager.js +49 -0
  9. package/dist/actions/meta.js +17 -0
  10. package/dist/actions/multiplicity.js +57 -0
  11. package/dist/actions/scan.js +33 -0
  12. package/dist/actions/shift.js +25 -0
  13. package/dist/actions/status.js +33 -0
  14. package/dist/actions/submit.js +41 -0
  15. package/dist/actions/threshold.js +33 -0
  16. package/dist/actions/ui.js +50 -0
  17. package/dist/app.js +125 -0
  18. package/dist/components/cmd_bar/01_viewer.js +133 -0
  19. package/dist/components/cmd_bar/02_zoom.js +119 -0
  20. package/dist/components/cmd_bar/03_peak.js +176 -0
  21. package/dist/components/cmd_bar/04_integration.js +273 -0
  22. package/dist/components/cmd_bar/05_multiplicity.js +228 -0
  23. package/dist/components/cmd_bar/06_undo_redo.js +137 -0
  24. package/dist/components/cmd_bar/common.js +104 -0
  25. package/dist/components/cmd_bar/index.js +113 -0
  26. package/dist/components/cmd_bar/r01_layout.js +351 -0
  27. package/dist/components/cmd_bar/r02_scan.js +226 -0
  28. package/dist/components/cmd_bar/r03_threshold.js +209 -0
  29. package/dist/components/cmd_bar/r04_submit.js +349 -0
  30. package/dist/components/cmd_bar/r05_submit_btn.js +147 -0
  31. package/dist/components/cmd_bar/r06_predict_btn.js +307 -0
  32. package/dist/components/cmd_bar/tri_btn.js +202 -0
  33. package/dist/components/common/chem.js +115 -0
  34. package/dist/components/common/comps.js +29 -0
  35. package/dist/components/common/draw.js +41 -0
  36. package/dist/components/d3_line/index.js +236 -0
  37. package/dist/components/d3_line/line_focus.js +765 -0
  38. package/dist/components/d3_rect/index.js +200 -0
  39. package/dist/components/d3_rect/rect_focus.js +301 -0
  40. package/dist/components/forecast/comps.js +337 -0
  41. package/dist/components/forecast/ir_comps.js +224 -0
  42. package/dist/components/forecast/ir_viewer.js +172 -0
  43. package/dist/components/forecast/nmr_comps.js +253 -0
  44. package/dist/components/forecast/nmr_viewer.js +170 -0
  45. package/dist/components/forecast/section_loading.js +95 -0
  46. package/dist/components/forecast_viewer.js +190 -0
  47. package/dist/components/panel/compare.js +370 -0
  48. package/dist/components/panel/index.js +191 -0
  49. package/dist/components/panel/info.js +335 -0
  50. package/dist/components/panel/multiplicity.js +405 -0
  51. package/dist/components/panel/multiplicity_coupling.js +195 -0
  52. package/dist/components/panel/multiplicity_select.js +114 -0
  53. package/dist/components/panel/peaks.js +296 -0
  54. package/dist/constants/action_type.js +140 -0
  55. package/dist/constants/list_layout.js +23 -0
  56. package/dist/constants/list_shift.js +480 -0
  57. package/dist/constants/list_ui.js +33 -0
  58. package/dist/fn.js +31 -0
  59. package/dist/helpers/brush.js +109 -0
  60. package/dist/helpers/calc.js +10 -0
  61. package/dist/helpers/carbonFeatures.js +47 -0
  62. package/dist/helpers/cfg.js +89 -0
  63. package/dist/helpers/chem.js +594 -0
  64. package/dist/helpers/compass.js +91 -0
  65. package/dist/helpers/converter.js +74 -0
  66. package/dist/helpers/extractParams.js +77 -0
  67. package/dist/helpers/extractPeaksEdit.js +69 -0
  68. package/dist/helpers/focus.js +15 -0
  69. package/dist/helpers/format.js +403 -0
  70. package/dist/helpers/init.js +80 -0
  71. package/dist/helpers/integration.js +30 -0
  72. package/dist/helpers/mount.js +112 -0
  73. package/dist/helpers/multiplicity.js +44 -0
  74. package/dist/helpers/multiplicity_calc.js +117 -0
  75. package/dist/helpers/multiplicity_complat.js +126 -0
  76. package/dist/helpers/multiplicity_manual.js +94 -0
  77. package/dist/helpers/multiplicity_verify_basic.js +196 -0
  78. package/dist/helpers/shift.js +48 -0
  79. package/dist/helpers/zoom.js +32 -0
  80. package/dist/index.js +705 -0
  81. package/dist/layer_content.js +125 -0
  82. package/dist/layer_init.js +231 -0
  83. package/dist/layer_prism.js +186 -0
  84. package/dist/reducers/index.js +89 -0
  85. package/dist/reducers/reducer_edit_peak.js +111 -0
  86. package/dist/reducers/reducer_forecast.js +113 -0
  87. package/dist/reducers/reducer_integration.js +136 -0
  88. package/dist/reducers/reducer_jcamp.js +74 -0
  89. package/dist/reducers/reducer_layout.js +27 -0
  90. package/dist/reducers/reducer_manager.js +20 -0
  91. package/dist/reducers/reducer_meta.js +30 -0
  92. package/dist/reducers/reducer_multiplicity.js +131 -0
  93. package/dist/reducers/reducer_scan.js +55 -0
  94. package/dist/reducers/reducer_shift.js +99 -0
  95. package/dist/reducers/reducer_simulation.js +30 -0
  96. package/dist/reducers/reducer_status.js +41 -0
  97. package/dist/reducers/reducer_submit.js +54 -0
  98. package/dist/reducers/reducer_threshold.js +34 -0
  99. package/dist/reducers/reducer_ui.js +46 -0
  100. package/dist/reducers/undo_redo_config.js +24 -0
  101. package/dist/sagas/index.js +50 -0
  102. package/dist/sagas/saga_edit_peak.js +84 -0
  103. package/dist/sagas/saga_manager.js +116 -0
  104. package/dist/sagas/saga_meta.js +46 -0
  105. package/dist/sagas/saga_multiplicity.js +387 -0
  106. package/dist/sagas/saga_ui.js +392 -0
  107. package/dist/third_party/jAnalyzer.js +596 -0
  108. package/dist/third_party/peakInterval.js +107 -0
  109. package/package.json +77 -0
@@ -0,0 +1,190 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
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 _reactRedux = require('react-redux');
18
+
19
+ var _redux = require('redux');
20
+
21
+ var _styles = require('@material-ui/core/styles');
22
+
23
+ var _index = require('./d3_line/index');
24
+
25
+ var _index2 = _interopRequireDefault(_index);
26
+
27
+ var _nmr_viewer = require('./forecast/nmr_viewer');
28
+
29
+ var _nmr_viewer2 = _interopRequireDefault(_nmr_viewer);
30
+
31
+ var _ir_viewer = require('./forecast/ir_viewer');
32
+
33
+ var _ir_viewer2 = _interopRequireDefault(_ir_viewer);
34
+
35
+ var _forecast = require('../actions/forecast');
36
+
37
+ var _ui = require('../actions/ui');
38
+
39
+ var _list_ui = require('../constants/list_ui');
40
+
41
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42
+
43
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
44
+
45
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
46
+
47
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
48
+
49
+ var styles = function styles() {
50
+ return {
51
+ root: {
52
+ flexGrow: 1
53
+ },
54
+ appBar: {
55
+ backgroundColor: '#fff',
56
+ boxShadow: 'none'
57
+ },
58
+ tabLabel: {
59
+ fontSize: '14px'
60
+ }
61
+ };
62
+ };
63
+
64
+ var ForecastViewer = function (_React$Component) {
65
+ _inherits(ForecastViewer, _React$Component);
66
+
67
+ function ForecastViewer(props) {
68
+ _classCallCheck(this, ForecastViewer);
69
+
70
+ var _this = _possibleConstructorReturn(this, (ForecastViewer.__proto__ || Object.getPrototypeOf(ForecastViewer)).call(this, props));
71
+
72
+ _this.initForecastReducer = _this.initForecastReducer.bind(_this);
73
+ return _this;
74
+ }
75
+
76
+ _createClass(ForecastViewer, [{
77
+ key: 'componentDidMount',
78
+ value: function componentDidMount() {
79
+ this.initForecastReducer();
80
+ }
81
+ }, {
82
+ key: 'componentDidUpdate',
83
+ value: function componentDidUpdate(prevProps) {
84
+ var forecast = this.props.forecast;
85
+
86
+
87
+ var prevForecast = forecast;
88
+ var nextForecast = prevProps.forecast;
89
+ if (prevForecast !== nextForecast) {
90
+ this.initForecastReducer();
91
+ }
92
+ }
93
+ }, {
94
+ key: 'initForecastReducer',
95
+ value: function initForecastReducer() {
96
+ var _props = this.props,
97
+ forecast = _props.forecast,
98
+ initForecastStatusAct = _props.initForecastStatusAct,
99
+ setUiViewerTypeAct = _props.setUiViewerTypeAct;
100
+
101
+ initForecastStatusAct(forecast);
102
+ if (forecast && forecast.predictions) {
103
+ var _forecast$predictions = forecast.predictions,
104
+ running = _forecast$predictions.running,
105
+ refreshed = _forecast$predictions.refreshed;
106
+
107
+ if (running || refreshed) setUiViewerTypeAct(_list_ui.LIST_UI_VIEWER_TYPE.ANALYSIS);
108
+ }
109
+ }
110
+ }, {
111
+ key: 'render',
112
+ value: function render() {
113
+ var _props2 = this.props,
114
+ classes = _props2.classes,
115
+ topic = _props2.topic,
116
+ feature = _props2.feature,
117
+ cLabel = _props2.cLabel,
118
+ xLabel = _props2.xLabel,
119
+ yLabel = _props2.yLabel,
120
+ forecast = _props2.forecast,
121
+ isNmr = _props2.isNmr,
122
+ isIr = _props2.isIr,
123
+ uiSt = _props2.uiSt,
124
+ comparisonsSt = _props2.comparisonsSt;
125
+ var viewer = uiSt.viewer;
126
+ var inputCb = forecast.inputCb,
127
+ molecule = forecast.molecule;
128
+
129
+
130
+ return _react2.default.createElement(
131
+ 'div',
132
+ { className: classes.root },
133
+ _react2.default.createElement(_index2.default, {
134
+ topic: topic,
135
+ feature: feature,
136
+ cLabel: cLabel,
137
+ xLabel: xLabel,
138
+ yLabel: yLabel,
139
+ comparisons: comparisonsSt,
140
+ isHidden: viewer !== _list_ui.LIST_UI_VIEWER_TYPE.SPECTRUM
141
+ }),
142
+ viewer === _list_ui.LIST_UI_VIEWER_TYPE.ANALYSIS && isNmr && _react2.default.createElement(_nmr_viewer2.default, {
143
+ molecule: molecule,
144
+ inputCb: inputCb
145
+ }),
146
+ viewer === _list_ui.LIST_UI_VIEWER_TYPE.ANALYSIS && isIr && _react2.default.createElement(_ir_viewer2.default, {
147
+ molecule: molecule,
148
+ inputCb: inputCb
149
+ })
150
+ );
151
+ }
152
+ }]);
153
+
154
+ return ForecastViewer;
155
+ }(_react2.default.Component);
156
+
157
+ var mapStateToProps = function mapStateToProps(state, _) {
158
+ return (// eslint-disable-line
159
+ {
160
+ uiSt: state.ui,
161
+ comparisonsSt: state.jcamp.others
162
+ }
163
+ );
164
+ };
165
+
166
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
167
+ return (0, _redux.bindActionCreators)({
168
+ initForecastStatusAct: _forecast.initForecastStatus,
169
+ setUiViewerTypeAct: _ui.setUiViewerType
170
+ }, dispatch);
171
+ };
172
+
173
+ ForecastViewer.propTypes = {
174
+ classes: _propTypes2.default.object.isRequired,
175
+ topic: _propTypes2.default.object.isRequired,
176
+ feature: _propTypes2.default.object.isRequired,
177
+ cLabel: _propTypes2.default.string.isRequired,
178
+ xLabel: _propTypes2.default.string.isRequired,
179
+ yLabel: _propTypes2.default.string.isRequired,
180
+ forecast: _propTypes2.default.object.isRequired,
181
+ isNmr: _propTypes2.default.bool.isRequired,
182
+ isIr: _propTypes2.default.bool.isRequired,
183
+ isUvvis: _propTypes2.default.bool.isRequired,
184
+ uiSt: _propTypes2.default.object.isRequired,
185
+ comparisonsSt: _propTypes2.default.array.isRequired,
186
+ initForecastStatusAct: _propTypes2.default.func.isRequired,
187
+ setUiViewerTypeAct: _propTypes2.default.func.isRequired
188
+ };
189
+
190
+ exports.default = (0, _redux.compose)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps), (0, _styles.withStyles)(styles))(ForecastViewer);
@@ -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));