@complat/react-spectra-editor 1.0.0-rc2 → 1.0.0-rc20.patch-1

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 (202) hide show
  1. package/README.md +16 -0
  2. package/dist/__tests__/fixtures/aif_jcamp_1.js +136 -0
  3. package/dist/__tests__/fixtures/aif_jcamp_2.js +122 -0
  4. package/dist/__tests__/fixtures/backup/nmr1h_a.js +3518 -0
  5. package/dist/__tests__/fixtures/backup/xrd_jcamp_1.js +10705 -0
  6. package/dist/__tests__/fixtures/cds_jcamp.js +861 -0
  7. package/dist/__tests__/fixtures/compare_ir_1_jcamp.js +585 -0
  8. package/dist/__tests__/fixtures/compare_ir_2_jcamp.js +515 -0
  9. package/dist/__tests__/fixtures/compare_uv_vis_jcamp.js +640 -0
  10. package/dist/__tests__/fixtures/cyclic_voltammetry_1.js +778 -0
  11. package/dist/__tests__/fixtures/cyclic_voltammetry_2.js +758 -0
  12. package/dist/__tests__/fixtures/cyclic_voltammetry_3.js +759 -0
  13. package/dist/__tests__/fixtures/dls_acf_jcamp.js +148 -0
  14. package/dist/__tests__/fixtures/dls_intensity_jcamp.js +151 -0
  15. package/dist/__tests__/fixtures/emissions_jcamp.js +883 -0
  16. package/dist/__tests__/fixtures/hplc_uvvis_jcamp.js +638 -0
  17. package/dist/__tests__/fixtures/hplc_uvvis_jcamp_2.js +221 -0
  18. package/dist/__tests__/fixtures/ir_jcamp.js +148 -0
  19. package/dist/__tests__/fixtures/ir_result.js +46 -0
  20. package/dist/__tests__/fixtures/ir_svg.js +8 -0
  21. package/dist/__tests__/fixtures/ms_jcamp.js +64 -0
  22. package/dist/__tests__/fixtures/nmr13c_dept_jcamp.js +3543 -0
  23. package/dist/__tests__/fixtures/nmr13c_jcamp.js +1229 -0
  24. package/dist/__tests__/fixtures/nmr15n_jcamp.js +7177 -0
  25. package/dist/__tests__/fixtures/nmr19f_jcamp.js +6560 -0
  26. package/dist/__tests__/fixtures/nmr1h_2_jcamp.js +2005 -0
  27. package/dist/__tests__/fixtures/nmr1h_jcamp.js +4516 -0
  28. package/dist/__tests__/fixtures/nmr29si_jcamp.js +3029 -0
  29. package/dist/__tests__/fixtures/nmr31p_jcamp.js +3418 -0
  30. package/dist/__tests__/fixtures/nmr_result.js +68 -0
  31. package/dist/__tests__/fixtures/nmr_svg.js +8 -0
  32. package/dist/__tests__/fixtures/phenylalanin.js +142 -0
  33. package/dist/__tests__/fixtures/qDescValue.js +65 -0
  34. package/dist/__tests__/fixtures/raman_jcamp.js +410 -0
  35. package/dist/__tests__/fixtures/sec_1_jcamp.js +425 -0
  36. package/dist/__tests__/fixtures/sec_2_jcamp.js +407 -0
  37. package/dist/__tests__/fixtures/sec_3_jcamp.js +408 -0
  38. package/dist/__tests__/fixtures/sec_4_jcamp.js +407 -0
  39. package/dist/__tests__/fixtures/tga_jcamp.js +4157 -0
  40. package/dist/__tests__/fixtures/uv_vis_jcamp.js +249 -0
  41. package/dist/__tests__/fixtures/xrd_jcamp_1.js +436 -0
  42. package/dist/__tests__/fixtures/xrd_jcamp_2.js +955 -0
  43. package/dist/__tests__/fixtures/xrd_jcamp_3.js +1871 -0
  44. package/dist/__tests__/units/components/panel/graph_selection.test.js +72 -0
  45. package/dist/__tests__/units/components/panel/peaks.test.js +87 -0
  46. package/dist/actions/curve.js +15 -14
  47. package/dist/actions/cyclic_voltammetry.js +40 -60
  48. package/dist/actions/edit_peak.js +8 -12
  49. package/dist/actions/forecast.js +16 -24
  50. package/dist/actions/integration.js +12 -18
  51. package/dist/actions/jcamp.js +16 -24
  52. package/dist/actions/layout.js +4 -6
  53. package/dist/actions/manager.js +20 -30
  54. package/dist/actions/meta.js +4 -6
  55. package/dist/actions/multiplicity.js +24 -36
  56. package/dist/actions/scan.js +12 -18
  57. package/dist/actions/shift.js +8 -12
  58. package/dist/actions/status.js +12 -18
  59. package/dist/actions/submit.js +16 -24
  60. package/dist/actions/threshold.js +20 -30
  61. package/dist/actions/ui.js +25 -31
  62. package/dist/actions/wavelength.js +4 -6
  63. package/dist/app.js +25 -23
  64. package/dist/components/cmd_bar/01_viewer.js +24 -34
  65. package/dist/components/cmd_bar/02_zoom.js +18 -28
  66. package/dist/components/cmd_bar/03_peak.js +50 -66
  67. package/dist/components/cmd_bar/04_integration.js +70 -84
  68. package/dist/components/cmd_bar/05_multiplicity.js +42 -56
  69. package/dist/components/cmd_bar/06_undo_redo.js +22 -36
  70. package/dist/components/cmd_bar/07_pecker.js +24 -34
  71. package/dist/components/cmd_bar/common.js +11 -7
  72. package/dist/components/cmd_bar/index.js +17 -23
  73. package/dist/components/cmd_bar/r01_layout.js +79 -56
  74. package/dist/components/cmd_bar/r02_scan.js +70 -87
  75. package/dist/components/cmd_bar/r03_threshold.js +54 -68
  76. package/dist/components/cmd_bar/r04_submit.js +71 -83
  77. package/dist/components/cmd_bar/r05_submit_btn.js +64 -72
  78. package/dist/components/cmd_bar/r06_predict_btn.js +142 -152
  79. package/dist/components/cmd_bar/r07_wavelength_btn.js +28 -36
  80. package/dist/components/cmd_bar/tri_btn.js +91 -113
  81. package/dist/components/common/chem.js +2 -3
  82. package/dist/components/common/comps.js +2 -2
  83. package/dist/components/common/draw.js +30 -11
  84. package/dist/components/d3_line/index.js +154 -176
  85. package/dist/components/d3_line/line_focus.js +595 -739
  86. package/dist/components/d3_multi/index.js +153 -174
  87. package/dist/components/d3_multi/multi_focus.js +725 -850
  88. package/dist/components/d3_rect/index.js +112 -134
  89. package/dist/components/d3_rect/rect_focus.js +163 -208
  90. package/dist/components/forecast/comps.js +60 -68
  91. package/dist/components/forecast/ir_comps.js +49 -56
  92. package/dist/components/forecast/ir_viewer.js +61 -68
  93. package/dist/components/forecast/nmr_comps.js +62 -72
  94. package/dist/components/forecast/nmr_viewer.js +59 -68
  95. package/dist/components/forecast/section_loading.js +39 -63
  96. package/dist/components/forecast_viewer.js +109 -119
  97. package/dist/components/multi_jcamps_viewer.js +97 -113
  98. package/dist/components/panel/compare.js +183 -192
  99. package/dist/components/panel/cyclic_voltamery_data.js +149 -165
  100. package/dist/components/panel/graph_selection.js +143 -132
  101. package/dist/components/panel/index.js +112 -144
  102. package/dist/components/panel/info.js +125 -132
  103. package/dist/components/panel/multiplicity.js +215 -223
  104. package/dist/components/panel/multiplicity_coupling.js +108 -136
  105. package/dist/components/panel/multiplicity_select.js +43 -51
  106. package/dist/components/panel/peaks.js +130 -132
  107. package/dist/constants/action_type.js +23 -39
  108. package/dist/constants/list_layout.js +7 -4
  109. package/dist/constants/list_shift.js +117 -103
  110. package/dist/constants/list_ui.js +3 -6
  111. package/dist/constants/list_wavelength.js +7 -8
  112. package/dist/fn.js +2 -3
  113. package/dist/helpers/brush.js +49 -65
  114. package/dist/helpers/calc.js +2 -4
  115. package/dist/helpers/carbonFeatures.js +22 -20
  116. package/dist/helpers/cfg.js +49 -67
  117. package/dist/helpers/chem.js +450 -393
  118. package/dist/helpers/compass.js +92 -83
  119. package/dist/helpers/converter.js +52 -65
  120. package/dist/helpers/extractParams.js +60 -52
  121. package/dist/helpers/extractPeaksEdit.js +29 -25
  122. package/dist/helpers/focus.js +2 -6
  123. package/dist/helpers/format.js +416 -361
  124. package/dist/helpers/init.js +41 -37
  125. package/dist/helpers/integration.js +18 -21
  126. package/dist/helpers/mount.js +57 -61
  127. package/dist/helpers/multiplicity.js +19 -24
  128. package/dist/helpers/multiplicity_calc.js +39 -50
  129. package/dist/helpers/multiplicity_complat.js +21 -47
  130. package/dist/helpers/multiplicity_manual.js +49 -55
  131. package/dist/helpers/multiplicity_verify_basic.js +108 -111
  132. package/dist/helpers/shift.js +15 -23
  133. package/dist/helpers/zoom.js +7 -11
  134. package/dist/index.js +680 -630
  135. package/dist/layer_content.js +40 -43
  136. package/dist/layer_init.js +162 -184
  137. package/dist/layer_prism.js +38 -41
  138. package/dist/reducers/index.js +2 -3
  139. package/dist/reducers/reducer_curve.js +35 -26
  140. package/dist/reducers/reducer_edit_peak.js +122 -98
  141. package/dist/reducers/reducer_forecast.js +57 -44
  142. package/dist/reducers/reducer_integration.js +135 -103
  143. package/dist/reducers/reducer_jcamp.js +49 -44
  144. package/dist/reducers/reducer_layout.js +5 -6
  145. package/dist/reducers/reducer_manager.js +5 -6
  146. package/dist/reducers/reducer_meta.js +5 -6
  147. package/dist/reducers/reducer_multiplicity.js +100 -77
  148. package/dist/reducers/reducer_scan.js +17 -20
  149. package/dist/reducers/reducer_shift.js +115 -70
  150. package/dist/reducers/reducer_simulation.js +7 -8
  151. package/dist/reducers/reducer_status.js +5 -6
  152. package/dist/reducers/reducer_submit.js +12 -15
  153. package/dist/reducers/reducer_threshold.js +5 -6
  154. package/dist/reducers/reducer_ui.js +5 -6
  155. package/dist/reducers/reducer_voltammetry.js +156 -96
  156. package/dist/reducers/reducer_wavelength.js +5 -6
  157. package/dist/reducers/undo_redo_config.js +3 -5
  158. package/dist/sagas/index.js +2 -15
  159. package/dist/sagas/saga_edit_peak.js +54 -68
  160. package/dist/sagas/saga_manager.js +86 -130
  161. package/dist/sagas/saga_meta.js +25 -31
  162. package/dist/sagas/saga_multi_entities.js +40 -103
  163. package/dist/sagas/saga_multiplicity.js +336 -406
  164. package/dist/sagas/saga_ui.js +296 -475
  165. package/dist/setupTests.js +8 -0
  166. package/dist/third_party/jAnalyzer.js +66 -67
  167. package/dist/third_party/peakInterval.js +34 -34
  168. package/package.json +14 -14
  169. package/dist/components/cmd_bar/03_peak_bk.js +0 -139
  170. package/dist/components/cmd_bar/04_integration_bk.js +0 -180
  171. package/dist/components/cmd_bar/05_multiplicity_bk.js +0 -131
  172. package/dist/components/cmd_bar/r01_layout_bk.js +0 -186
  173. package/dist/components/cmd_bar/r06_predict_btn_bk.js +0 -220
  174. package/dist/components/d3_line/line_focus_bk.js +0 -825
  175. package/dist/components/d3_multi/index_bk.js +0 -210
  176. package/dist/components/d3_multi/multi_focus_bk.js +0 -533
  177. package/dist/components/panel/compare_bk.js +0 -256
  178. package/dist/components/panel/cyclic_voltamery_data_bk.js +0 -292
  179. package/dist/components/panel/index_bk.js +0 -178
  180. package/dist/components/panel/info_bk.js +0 -235
  181. package/dist/components/panel/multiplicity_bk.js +0 -280
  182. package/dist/helpers/carbonFeatures_bk.js +0 -45
  183. package/dist/helpers/cfg_bk.js +0 -80
  184. package/dist/helpers/chem_bk.js +0 -787
  185. package/dist/helpers/compass_bk.js +0 -149
  186. package/dist/helpers/converter_bk.js +0 -96
  187. package/dist/helpers/extractPeaksEdit_bk.js +0 -53
  188. package/dist/helpers/format_bk.js +0 -497
  189. package/dist/index_bk.js +0 -640
  190. package/dist/layer_content_bk.js +0 -105
  191. package/dist/layer_init_bk.js +0 -235
  192. package/dist/layer_prism_bk.js +0 -133
  193. package/dist/reducers/reducer_edit_peak_bk.js +0 -108
  194. package/dist/reducers/reducer_integration_bk.js +0 -134
  195. package/dist/reducers/reducer_jcamp_bk.js +0 -71
  196. package/dist/reducers/reducer_multiplicity_bk.js +0 -126
  197. package/dist/reducers/reducer_shift_bk.js +0 -88
  198. package/dist/reducers/reducer_voltammetry_bk.js +0 -287
  199. package/dist/sagas/saga_edit_peak_bk.js +0 -73
  200. package/dist/sagas/saga_multi_entities_bk.js +0 -106
  201. package/dist/sagas/saga_multiplicity_bk.js +0 -351
  202. package/dist/sagas/saga_ui_bk.js +0 -453
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.convertTopic = exports.Topic2Seed = exports.ToThresEndPts = exports.ToShiftPeaks = exports.ToFrequency = exports.GetCyclicVoltaRatio = exports.GetCyclicVoltaPeakSeparate = exports.GetComparisons = exports.Feature2Peak = exports.Feature2MaxMinPeak = exports.ExtractJcamp = exports.Convert2Thres = exports.Convert2Scan = exports.Convert2Peak = exports.Convert2MaxMinPeak = exports.Convert2DValue = void 0;
8
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
8
  var _jcampconverter = _interopRequireDefault(require("jcampconverter"));
10
9
  var _reselect = require("reselect");
11
10
  var _shift = require("./shift");
@@ -15,215 +14,223 @@ var _list_layout = require("../constants/list_layout");
15
14
  var _integration = require("./integration");
16
15
  /* eslint-disable
17
16
  no-mixed-operators, react/function-component-definition,
18
- prefer-object-spread, camelcase, no-plusplus */
17
+ prefer-object-spread, camelcase, no-plusplus, prefer-destructuring */
19
18
 
20
- var getTopic = function getTopic(_, props) {
21
- return props.topic;
22
- };
23
- var getFeature = function getFeature(_, props) {
24
- return props.feature;
25
- };
26
- var getLayout = function getLayout(state, _) {
27
- return state.layout;
28
- }; // eslint-disable-line
19
+ const getTopic = (_, props) => props.topic;
20
+ const getFeature = (_, props) => props.feature;
21
+ const getLayout = (state, _) => state.layout; // eslint-disable-line
29
22
 
30
- var getShiftOffset = function getShiftOffset(state, _) {
23
+ const getShiftOffset = (state, _) => {
31
24
  // eslint-disable-line
32
- var curve = state.curve,
33
- shift = state.shift;
34
- var curveIdx = curve.curveIdx;
35
- var shifts = shift.shifts;
36
- var selectedShift = shifts[curveIdx];
25
+ const {
26
+ curve,
27
+ shift
28
+ } = state;
29
+ const {
30
+ curveIdx
31
+ } = curve;
32
+ const {
33
+ shifts
34
+ } = shift;
35
+ const selectedShift = shifts[curveIdx];
37
36
  if (!selectedShift) {
38
37
  return 0.0;
39
38
  }
40
39
 
41
40
  // const { shift } = state;
42
- var ref = selectedShift.ref,
43
- peak = selectedShift.peak;
41
+ const {
42
+ ref,
43
+ peak
44
+ } = selectedShift;
44
45
  return (0, _shift.FromManualToOffset)(ref, peak);
45
46
  };
46
- var calcXYK = function calcXYK(xs, ys, maxY, offset) {
47
- var sp = [];
48
- var k = 0;
49
- for (var i = 0; i < ys.length; i += 1) {
47
+ const calcXYK = (xs, ys, maxY, offset) => {
48
+ const sp = [];
49
+ let k = 0;
50
+ for (let i = 0; i < ys.length; i += 1) {
50
51
  // no-downsample
51
- var x = xs[i] - offset;
52
- var y = ys[i];
53
- var cy = y / maxY;
52
+ const x = xs[i] - offset;
53
+ const y = ys[i];
54
+ const cy = y / maxY;
54
55
  if (cy > 0.0) {
55
56
  k += cy;
56
57
  }
57
58
  sp.push({
58
- x: x,
59
- y: y,
60
- k: k
59
+ x,
60
+ y,
61
+ k
61
62
  });
62
63
  }
63
64
  return sp;
64
65
  };
65
- var calcXY = function calcXY(xs, ys, maxY, offset) {
66
- var sp = [];
67
- for (var i = 0; i < ys.length; i += 1) {
66
+ const calcXY = (xs, ys, maxY, offset) => {
67
+ const sp = [];
68
+ for (let i = 0; i < ys.length; i += 1) {
68
69
  // no-downsample
69
- var x = xs[i] - offset;
70
- var y = ys[i];
70
+ const x = xs[i] - offset;
71
+ const y = ys[i];
71
72
  sp.push({
72
- x: x,
73
- y: y
73
+ x,
74
+ y
74
75
  });
75
76
  }
76
77
  return sp;
77
78
  };
78
- var convertTopic = function convertTopic(topic, layout, feature, offset) {
79
- var maxY = feature.maxY;
80
- var xs = topic.x;
81
- var ys = topic.y;
82
- var isItgDisable = _cfg.default.btnCmdIntg(layout);
79
+ const convertTopic = (topic, layout, feature, offset) => {
80
+ const {
81
+ maxY
82
+ } = feature;
83
+ const xs = topic.x;
84
+ const ys = topic.y;
85
+ const isItgDisable = _cfg.default.btnCmdIntg(layout);
83
86
  if (!isItgDisable) return calcXYK(xs, ys, maxY, offset);
84
87
  return calcXY(xs, ys, maxY, offset);
85
88
  };
86
89
  exports.convertTopic = convertTopic;
87
- var Topic2Seed = (0, _reselect.createSelector)(getTopic, getLayout, getFeature, getShiftOffset, convertTopic);
88
- exports.Topic2Seed = Topic2Seed;
89
- var getOthers = function getOthers(_, props) {
90
- return props.comparisons;
91
- };
92
- var calcRescaleXY = function calcRescaleXY(xs, ys, minY, maxY, show) {
93
- var sp = [];
90
+ const Topic2Seed = exports.Topic2Seed = (0, _reselect.createSelector)(getTopic, getLayout, getFeature, getShiftOffset, convertTopic);
91
+ const getOthers = (_, props) => props.comparisons;
92
+ const calcRescaleXY = (xs, ys, minY, maxY, show) => {
93
+ const sp = [];
94
94
  if (xs.length < 1) return sp;
95
- var _ref = [Math.min.apply(Math, (0, _toConsumableArray2.default)(ys)), Math.max.apply(Math, (0, _toConsumableArray2.default)(ys))],
96
- lowerY = _ref[0],
97
- upperY = _ref[1];
98
- var faktor = (maxY - minY) / (upperY - lowerY);
99
- for (var i = 0; i < ys.length; i += 2) {
95
+ const [lowerY, upperY] = [Math.min(...ys), Math.max(...ys)];
96
+ const faktor = (maxY - minY) / (upperY - lowerY);
97
+ for (let i = 0; i < ys.length; i += 2) {
100
98
  // downsample
101
- var x = xs[i];
102
- var y = (ys[i] - lowerY) * faktor + minY;
99
+ const x = xs[i];
100
+ const y = (ys[i] - lowerY) * faktor + minY;
103
101
  sp.push({
104
- x: x,
105
- y: y
102
+ x,
103
+ y
106
104
  });
107
105
  }
108
106
  return {
109
107
  data: sp,
110
- show: show
108
+ show
111
109
  };
112
110
  };
113
- var convertComparisons = function convertComparisons(layout, comparisons, feature) {
114
- var minY = feature.minY,
115
- maxY = feature.maxY;
111
+ const convertComparisons = (layout, comparisons, feature) => {
112
+ const {
113
+ minY,
114
+ maxY
115
+ } = feature;
116
116
  if (!comparisons || !(_format.default.isIrLayout(layout) || _format.default.isHplcUvVisLayout(layout) || _format.default.isXRDLayout(layout))) return [];
117
- return comparisons.map(function (c) {
118
- var spectra = c.spectra,
119
- show = c.show;
120
- var topic = spectra[0].data[0];
121
- var xs = topic.x;
122
- var ys = topic.y;
117
+ return comparisons.map(c => {
118
+ const {
119
+ spectra,
120
+ show
121
+ } = c;
122
+ const topic = spectra[0].data[0];
123
+ const xs = topic.x;
124
+ const ys = topic.y;
123
125
  return calcRescaleXY(xs, ys, minY, maxY, show);
124
126
  });
125
127
  };
126
- var GetComparisons = (0, _reselect.createSelector)(getLayout, getOthers, getFeature, convertComparisons);
127
- exports.GetComparisons = GetComparisons;
128
- var convertFrequency = function convertFrequency(layout, feature) {
128
+ const GetComparisons = exports.GetComparisons = (0, _reselect.createSelector)(getLayout, getOthers, getFeature, convertComparisons);
129
+ const convertFrequency = (layout, feature) => {
129
130
  if (['1H', '13C', '19F', '31P', '15N', '29Si'].indexOf(layout) < 0) return false;
130
- var observeFrequency = feature.observeFrequency;
131
- var freq = Array.isArray(observeFrequency) ? observeFrequency[0] : observeFrequency;
131
+ const {
132
+ observeFrequency
133
+ } = feature;
134
+ const freq = Array.isArray(observeFrequency) ? observeFrequency[0] : observeFrequency;
132
135
  return parseFloat(freq) || false;
133
136
  };
134
- var ToFrequency = (0, _reselect.createSelector)(getLayout, getFeature, convertFrequency);
135
- exports.ToFrequency = ToFrequency;
136
- var getThreshold = function getThreshold(state) {
137
- return state.threshold ? state.threshold.value * 1.0 : false;
138
- };
139
- var Convert2Peak = function Convert2Peak(feature, threshold, offset) {
140
- var upThreshold = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
141
- var lowThreshold = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
142
- var peak = [];
137
+ const ToFrequency = exports.ToFrequency = (0, _reselect.createSelector)(getLayout, getFeature, convertFrequency);
138
+ const getThreshold = state => state.threshold ? state.threshold.value * 1.0 : false;
139
+ const Convert2Peak = function (feature, threshold, offset) {
140
+ let upThreshold = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
141
+ let lowThreshold = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
142
+ const peak = [];
143
143
  if (!feature || !feature.data) return peak;
144
- var data = feature.data[0];
145
- var maxY = feature.maxY,
146
- peakUp = feature.peakUp,
147
- thresRef = feature.thresRef,
148
- minY = feature.minY,
149
- upperThres = feature.upperThres,
150
- lowerThres = feature.lowerThres,
151
- operation = feature.operation;
152
- var layout = operation.layout;
153
- if (!_format.default.isSECLayout(layout) && (upperThres || lowerThres)) {
154
- var upperThresVal = upThreshold || upperThres;
144
+ const data = feature.data[0];
145
+ const {
146
+ maxY,
147
+ peakUp,
148
+ thresRef,
149
+ minY,
150
+ upperThres,
151
+ lowerThres,
152
+ operation
153
+ } = feature;
154
+ const {
155
+ layout
156
+ } = operation;
157
+
158
+ // if (!Format.isSECLayout(layout) && (upperThres || lowerThres)) {
159
+ if ((_format.default.isCyclicVoltaLayout(layout) || _format.default.isCDSLayout(layout)) && (upperThres || lowerThres)) {
160
+ let upperThresVal = upThreshold || upperThres;
155
161
  if (!upperThresVal) {
156
162
  upperThresVal = 1.0;
157
163
  }
158
- var lowerThresVal = lowThreshold || lowerThres;
164
+ let lowerThresVal = lowThreshold || lowerThres;
159
165
  if (!lowerThresVal) {
160
166
  lowerThresVal = 1.0;
161
167
  }
162
- var yUpperThres = parseFloat(upperThresVal) / 100.0 * maxY;
163
- var yLowerThres = parseFloat(lowerThresVal) / 100.0 * minY;
164
- var _corrOffset = offset || 0.0;
165
- for (var i = 0; i < data.y.length; i += 1) {
166
- var y = data.y[i];
167
- var overUpperThres = y >= yUpperThres;
168
- var belowThres = y <= yLowerThres;
168
+ const yUpperThres = parseFloat(upperThresVal) / 100.0 * maxY;
169
+ const yLowerThres = parseFloat(lowerThresVal) / 100.0 * minY;
170
+ const corrOffset = offset || 0.0;
171
+ for (let i = 0; i < data.y.length; i += 1) {
172
+ const y = data.y[i];
173
+ const overUpperThres = y >= yUpperThres;
174
+ const belowThres = y <= yLowerThres;
169
175
  if (overUpperThres || belowThres) {
170
- var x = data.x[i] - _corrOffset;
176
+ const x = data.x[i] - corrOffset;
171
177
  peak.push({
172
- x: x,
173
- y: y
178
+ x,
179
+ y
174
180
  });
175
181
  }
176
182
  }
177
183
  return peak;
178
184
  }
179
- var thresVal = threshold || thresRef;
180
- var yThres = Number.parseFloat((thresVal * maxY / 100.0).toFixed(10));
181
- var corrOffset = offset || 0.0;
182
- for (var _i = 0; _i < data.y.length; _i += 1) {
183
- var _y = data.y[_i];
184
- var overThres = peakUp && Math.abs(_y) >= yThres || !peakUp && Math.abs(_y) <= yThres;
185
+ const thresVal = threshold || thresRef;
186
+ const yThres = Number.parseFloat((thresVal * maxY / 100.0).toFixed(10));
187
+ const corrOffset = offset || 0.0;
188
+ for (let i = 0; i < data.y.length; i += 1) {
189
+ const y = data.y[i];
190
+ const overThres = peakUp && Math.abs(y) >= yThres || !peakUp && Math.abs(y) <= yThres;
185
191
  if (overThres) {
186
- var _x = data.x[_i] - corrOffset;
192
+ const x = data.x[i] - corrOffset;
187
193
  peak.push({
188
- x: _x,
189
- y: _y
194
+ x,
195
+ y
190
196
  });
191
197
  }
192
198
  }
193
199
  return peak;
194
200
  };
195
201
  exports.Convert2Peak = Convert2Peak;
196
- var Feature2Peak = (0, _reselect.createSelector)(getFeature, getThreshold, getShiftOffset, Convert2Peak);
197
- exports.Feature2Peak = Feature2Peak;
198
- var Convert2MaxMinPeak = function Convert2MaxMinPeak(layout, feature, offset) {
199
- var peaks = {
202
+ const Feature2Peak = exports.Feature2Peak = (0, _reselect.createSelector)(getFeature, getThreshold, getShiftOffset, Convert2Peak);
203
+ const Convert2MaxMinPeak = (layout, feature, offset) => {
204
+ const peaks = {
200
205
  max: [],
201
206
  min: [],
202
207
  pecker: []
203
208
  };
204
209
  if (!_format.default.isCyclicVoltaLayout(layout) || !feature || !feature.data) return null; // eslint-disable-line
205
- var data = feature.data[0]; // eslint-disable-line
206
- var maxY = feature.maxY,
207
- minY = feature.minY,
208
- upperThres = feature.upperThres,
209
- lowerThres = feature.lowerThres,
210
- volammetryData = feature.volammetryData;
210
+ const data = feature.data[0]; // eslint-disable-line
211
+ const {
212
+ maxY,
213
+ minY,
214
+ upperThres,
215
+ lowerThres,
216
+ volammetryData
217
+ } = feature;
211
218
  if (volammetryData && volammetryData.length > 0) {
212
- var maxArr = volammetryData.map(function (peakData) {
219
+ const maxArr = volammetryData.map(peakData => {
213
220
  if (peakData.max.x === '') return null;
214
221
  return {
215
222
  x: Number(peakData.max.x),
216
223
  y: Number(peakData.max.y)
217
224
  };
218
225
  });
219
- var minArr = volammetryData.map(function (peakData) {
226
+ const minArr = volammetryData.map(peakData => {
220
227
  if (peakData.min.x === '') return null;
221
228
  return {
222
229
  x: Number(peakData.min.x),
223
230
  y: Number(peakData.min.y)
224
231
  };
225
232
  });
226
- var peckerArr = volammetryData.map(function (peakData) {
233
+ const peckerArr = volammetryData.map(peakData => {
227
234
  if (peakData.pecker.x === '') return null;
228
235
  return {
229
236
  x: Number(peakData.pecker.x),
@@ -235,48 +242,49 @@ var Convert2MaxMinPeak = function Convert2MaxMinPeak(layout, feature, offset) {
235
242
  peaks.pecker = peckerArr;
236
243
  return peaks;
237
244
  }
238
- var upperThresVal = upperThres;
245
+ let upperThresVal = upperThres;
239
246
  if (!upperThresVal) {
240
247
  upperThresVal = 1.0;
241
248
  }
242
- var lowerThresVal = lowerThres;
249
+ let lowerThresVal = lowerThres;
243
250
  if (!lowerThresVal) {
244
251
  lowerThresVal = 1.0;
245
252
  }
246
- var yUpperThres = parseFloat(upperThresVal) / 100.0 * maxY;
247
- var yLowerThres = parseFloat(lowerThresVal) / 100.0 * minY;
248
- var corrOffset = offset || 0.0;
249
- for (var i = 0; i < data.y.length; i += 1) {
250
- var y = data.y[i];
251
- var overUpperThres = y >= yUpperThres;
252
- var belowThres = y <= yLowerThres;
253
- var x = data.x[i] - corrOffset;
253
+ const yUpperThres = parseFloat(upperThresVal) / 100.0 * maxY;
254
+ const yLowerThres = parseFloat(lowerThresVal) / 100.0 * minY;
255
+ const corrOffset = offset || 0.0;
256
+ for (let i = 0; i < data.y.length; i += 1) {
257
+ const y = data.y[i];
258
+ const overUpperThres = y >= yUpperThres;
259
+ const belowThres = y <= yLowerThres;
260
+ const x = data.x[i] - corrOffset;
254
261
  if (overUpperThres) {
255
262
  peaks.max.push({
256
- x: x,
257
- y: y
263
+ x,
264
+ y
258
265
  });
259
266
  } else if (belowThres) {
260
267
  peaks.min.push({
261
- x: x,
262
- y: y
268
+ x,
269
+ y
263
270
  });
264
271
  }
265
272
  }
266
273
  return peaks;
267
274
  };
268
275
  exports.Convert2MaxMinPeak = Convert2MaxMinPeak;
269
- var Feature2MaxMinPeak = (0, _reselect.createSelector)(getLayout, getFeature, getShiftOffset, Convert2MaxMinPeak);
270
- exports.Feature2MaxMinPeak = Feature2MaxMinPeak;
271
- var convertThresEndPts = function convertThresEndPts(feature, threshold) {
272
- var maxY = feature.maxY,
273
- maxX = feature.maxX,
274
- minX = feature.minX,
275
- thresRef = feature.thresRef;
276
- var thresVal = threshold || thresRef || 0;
276
+ const Feature2MaxMinPeak = exports.Feature2MaxMinPeak = (0, _reselect.createSelector)(getLayout, getFeature, getShiftOffset, Convert2MaxMinPeak);
277
+ const convertThresEndPts = (feature, threshold) => {
278
+ const {
279
+ maxY,
280
+ maxX,
281
+ minX,
282
+ thresRef
283
+ } = feature;
284
+ const thresVal = threshold || thresRef || 0;
277
285
  if (!thresVal || !feature.data) return [];
278
- var yThres = thresVal * maxY / 100.0;
279
- var endPts = [{
286
+ const yThres = thresVal * maxY / 100.0;
287
+ const endPts = [{
280
288
  x: minX - 200,
281
289
  y: yThres
282
290
  }, {
@@ -285,37 +293,45 @@ var convertThresEndPts = function convertThresEndPts(feature, threshold) {
285
293
  }];
286
294
  return endPts;
287
295
  };
288
- var ToThresEndPts = (0, _reselect.createSelector)(getFeature, getThreshold, convertThresEndPts);
289
- exports.ToThresEndPts = ToThresEndPts;
290
- var getShiftPeak = function getShiftPeak(state) {
291
- var curve = state.curve,
292
- shift = state.shift;
293
- var curveIdx = curve.curveIdx;
294
- var shifts = shift.shifts;
295
- var selectedShift = shifts[curveIdx];
296
+ const ToThresEndPts = exports.ToThresEndPts = (0, _reselect.createSelector)(getFeature, getThreshold, convertThresEndPts);
297
+ const getShiftPeak = state => {
298
+ const {
299
+ curve,
300
+ shift
301
+ } = state;
302
+ const {
303
+ curveIdx
304
+ } = curve;
305
+ const {
306
+ shifts
307
+ } = shift;
308
+ const selectedShift = shifts[curveIdx];
296
309
  if (!selectedShift) {
297
310
  return false;
298
311
  }
299
312
  return selectedShift.peak;
300
313
  };
301
- var convertSfPeaks = function convertSfPeaks(peak, offset) {
314
+ const convertSfPeaks = (peak, offset) => {
302
315
  if (!peak || !peak.x) return [];
303
316
  return [{
304
317
  x: peak.x - offset,
305
318
  y: peak.y
306
319
  }];
307
320
  };
308
- var ToShiftPeaks = (0, _reselect.createSelector)(getShiftPeak, getShiftOffset, convertSfPeaks);
321
+ const ToShiftPeaks = exports.ToShiftPeaks = (0, _reselect.createSelector)(getShiftPeak, getShiftOffset, convertSfPeaks);
309
322
 
310
323
  // - - - - - - - - - - - - - - - - - - - - - -
311
324
  // ExtractJcamp
312
325
  // - - - - - - - - - - - - - - - - - - - - - -
313
- exports.ToShiftPeaks = ToShiftPeaks;
314
- var readLayout = function readLayout(jcamp) {
315
- var xType = jcamp.xType,
316
- spectra = jcamp.spectra;
326
+ const readLayout = jcamp => {
327
+ const {
328
+ xType,
329
+ spectra
330
+ } = jcamp;
317
331
  if (xType && _format.default.isNmrLayout(xType)) return xType;
318
- var dataType = spectra[0].dataType;
332
+ const {
333
+ dataType
334
+ } = spectra[0];
319
335
  if (dataType) {
320
336
  if (dataType.includes('INFRARED SPECTRUM')) {
321
337
  return _list_layout.LIST_LAYOUT.IR;
@@ -347,59 +363,88 @@ var readLayout = function readLayout(jcamp) {
347
363
  if (dataType.includes('SIZE EXCLUSION CHROMATOGRAPHY')) {
348
364
  return _list_layout.LIST_LAYOUT.SEC;
349
365
  }
366
+ if (dataType.includes('SORPTION-DESORPTION MEASUREMENT')) {
367
+ return _list_layout.LIST_LAYOUT.AIF;
368
+ }
369
+ if (dataType.includes('Emissions')) {
370
+ return _list_layout.LIST_LAYOUT.EMISSIONS;
371
+ }
372
+ if (dataType.includes('DLS ACF')) {
373
+ return _list_layout.LIST_LAYOUT.DLS_ACF;
374
+ }
375
+ if (dataType.includes('DLS intensity')) {
376
+ return _list_layout.LIST_LAYOUT.DLS_INTENSITY;
377
+ }
350
378
  }
351
379
  return false;
352
380
  };
353
- var extrSpectraShare = function extrSpectraShare(spectra, layout) {
354
- return spectra.map(function (s) {
355
- return Object.assign({
356
- layout: layout
357
- }, s);
358
- }).filter(function (r) {
359
- return r != null;
360
- });
361
- };
362
- var extrSpectraMs = function extrSpectraMs(jcamp, layout) {
363
- var scanCount = jcamp.info.$CSSCANCOUNT || 1;
364
- var spc = extrSpectraShare(jcamp.spectra.slice(0, scanCount), layout);
365
- return spc || [];
381
+ const extrSpectraShare = (spectra, layout) => spectra.map(s => Object.assign({
382
+ layout
383
+ }, s)).filter(r => r != null);
384
+ const extrSpectraMs = (jcamp, layout) => {
385
+ const scanCount = jcamp.info.$CSSCANCOUNT || 1;
386
+ const spc = extrSpectraShare(jcamp.spectra.slice(0, scanCount), layout);
387
+ let spectra = spc || [];
388
+ if (jcamp.info.UNITS && jcamp.info.SYMBOL) {
389
+ const units = jcamp.info.UNITS.split(',');
390
+ const symbol = jcamp.info.SYMBOL.split(',');
391
+ let xUnit = null;
392
+ let yUnit = null;
393
+ symbol.forEach((sym, idx) => {
394
+ const currSymbol = sym.replace(' ', '').toLowerCase();
395
+ if (currSymbol === 'x') {
396
+ xUnit = units[idx].trim();
397
+ } else if (currSymbol === 'y') {
398
+ yUnit = units[idx].trim();
399
+ }
400
+ });
401
+ spectra = spectra.map(sp => {
402
+ const spectrum = sp;
403
+ if (xUnit) {
404
+ spectrum.xUnit = xUnit;
405
+ }
406
+ if (yUnit) {
407
+ spectrum.yUnit = yUnit;
408
+ }
409
+ return spectrum;
410
+ });
411
+ }
412
+ return spectra;
366
413
  };
367
- var extrSpectraNi = function extrSpectraNi(jcamp, layout) {
368
- var categorys = jcamp.info.$CSCATEGORY || ['SPECTRUM'];
369
- var targetIdx = categorys.indexOf('SPECTRUM');
370
- var spectrum = extrSpectraShare(jcamp.spectra, layout)[targetIdx];
414
+ const extrSpectraNi = (jcamp, layout) => {
415
+ const categorys = jcamp.info.$CSCATEGORY || ['SPECTRUM'];
416
+ const targetIdx = categorys.indexOf('SPECTRUM');
417
+ const spectrum = extrSpectraShare(jcamp.spectra, layout)[targetIdx];
371
418
  return [spectrum] || [jcamp.spectra[0]];
372
419
  };
373
- var calcThresRef = function calcThresRef(s, peakUp) {
374
- var ys = s && s.data[0].y;
420
+ const calcThresRef = (s, peakUp) => {
421
+ const ys = s && s.data[0].y;
375
422
  if (!ys) return null;
376
- var ref = peakUp ? Math.min.apply(Math, (0, _toConsumableArray2.default)(ys.map(function (a) {
377
- return Math.abs(a);
378
- }))) : Math.max.apply(Math, (0, _toConsumableArray2.default)(ys));
423
+ const ref = peakUp ? Math.min(...ys.map(a => Math.abs(a))) : Math.max(...ys);
379
424
  return peakUp ? Math.floor(ref * 100 * 100 / s.maxY) / 100 : Math.ceil(ref * 100 * 100 / s.maxY) / 100;
380
425
  };
381
- var calcUpperThres = function calcUpperThres(s) {
382
- var ys = s && s.data[0].y;
426
+ const calcUpperThres = s => {
427
+ const ys = s && s.data[0].y;
383
428
  if (!ys) return null;
384
- var ref = Math.max.apply(Math, (0, _toConsumableArray2.default)(ys));
429
+ const ref = Math.max(...ys);
385
430
  return Math.floor(ref * 100 * 100 / s.maxY) / 100;
386
431
  };
387
- var calcLowerThres = function calcLowerThres(s) {
388
- var ys = s && s.data[0].y;
432
+ const calcLowerThres = s => {
433
+ const ys = s && s.data[0].y;
389
434
  if (!ys) return null;
390
- var ref = Math.min.apply(Math, (0, _toConsumableArray2.default)(ys));
435
+ const ref = Math.min(...ys);
391
436
  return Math.ceil(ref * 100 * 100 / s.minY) / 100;
392
437
  };
393
- var extractShift = function extractShift(s, jcamp) {
394
- var shift = {
438
+ const extractShift = (s, jcamp) => {
439
+ const shift = {
395
440
  selectX: false,
396
441
  solventName: false,
397
442
  solventValue: false
398
443
  };
399
444
  if (!s) return shift;
400
445
  if (s && s.sampleDescription) {
401
- var desc = s.sampleDescription;
402
- var info = desc.split(/;|=/);
446
+ const desc = s.sampleDescription;
447
+ const info = desc.split(/;|=/);
403
448
  return {
404
449
  selectX: parseFloat(info[1]),
405
450
  solventName: info[3],
@@ -412,13 +457,15 @@ var extractShift = function extractShift(s, jcamp) {
412
457
  solventValue: parseFloat(jcamp.info.$CSSOLVENTVALUE) || false
413
458
  };
414
459
  };
415
- var extractVoltammetryData = function extractVoltammetryData(jcamp) {
416
- var info = jcamp.info;
460
+ const extractVoltammetryData = jcamp => {
461
+ const {
462
+ info
463
+ } = jcamp;
417
464
  if (!info.$CSCYCLICVOLTAMMETRYDATA) return null;
418
- var regx = /[^0-9.,E,e,-]/g;
419
- var rawData = info.$CSCYCLICVOLTAMMETRYDATA.split('\n');
420
- var peakStack = rawData.map(function (line) {
421
- var splittedLine = line.replace(regx, '').split(',');
465
+ const regx = /[^0-9.,E,e,-]/g;
466
+ const rawData = info.$CSCYCLICVOLTAMMETRYDATA.split('\n');
467
+ const peakStack = rawData.map(line => {
468
+ const splittedLine = line.replace(regx, '').split(',');
422
469
  return {
423
470
  max: {
424
471
  x: splittedLine[0],
@@ -438,67 +485,71 @@ var extractVoltammetryData = function extractVoltammetryData(jcamp) {
438
485
  });
439
486
  return peakStack;
440
487
  };
441
- var buildPeakFeature = function buildPeakFeature(jcamp, layout, peakUp, s, thresRef) {
442
- var upperThres = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
443
- var lowerThres = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
488
+ const buildPeakFeature = function (jcamp, layout, peakUp, s, thresRef) {
489
+ let upperThres = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
490
+ let lowerThres = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
444
491
  // eslint-disable-line
445
- var xType = jcamp.xType,
446
- info = jcamp.info;
447
- var subTyp = xType ? " - ".concat(xType) : '';
492
+ const {
493
+ xType,
494
+ info
495
+ } = jcamp;
496
+ const subTyp = xType ? ` - ${xType}` : '';
448
497
  return Object.assign({
449
498
  typ: s.dataType + subTyp,
450
- peakUp: peakUp,
451
- thresRef: thresRef,
499
+ peakUp,
500
+ thresRef,
452
501
  scanCount: +info.$CSSCANCOUNT,
453
502
  scanAutoTarget: +info.$CSSCANAUTOTARGET,
454
503
  scanEditTarget: +info.$CSSCANEDITTARGET,
455
504
  shift: extractShift(s, jcamp),
456
505
  operation: {
457
- layout: layout,
506
+ layout,
458
507
  nucleus: xType || ''
459
508
  },
460
509
  observeFrequency: info['.OBSERVEFREQUENCY'],
461
510
  solventName: info['.SOLVENTNAME'],
462
- upperThres: upperThres,
463
- lowerThres: lowerThres,
511
+ upperThres,
512
+ lowerThres,
464
513
  volammetryData: extractVoltammetryData(jcamp)
465
514
  }, s);
466
515
  };
467
- var maxArray = function maxArray(arr) {
468
- var len = arr.length;
469
- var max = -Infinity;
516
+ const maxArray = arr => {
517
+ let len = arr.length;
518
+ let max = -Infinity;
470
519
  while (len--) {
471
520
  max = arr[len] > max ? arr[len] : max;
472
521
  }
473
522
  return max;
474
523
  };
475
- var calcIntgRefArea = function calcIntgRefArea(spectra, stack) {
524
+ const calcIntgRefArea = (spectra, stack) => {
476
525
  if (stack.length === 0) return 1;
477
- var data = spectra[0].data[0];
478
- var xs = data.x;
479
- var ys = data.y;
480
- var maxY = maxArray(ys);
481
- var xyk = calcXYK(xs, ys, maxY, 0);
482
- var _stack$ = stack[0],
483
- xL = _stack$.xL,
484
- xU = _stack$.xU,
485
- area = _stack$.area;
486
- var rawArea = (0, _integration.getArea)(xL, xU, xyk);
487
- var raw2realRatio = rawArea / area;
526
+ const data = spectra[0].data[0];
527
+ const xs = data.x;
528
+ const ys = data.y;
529
+ const maxY = maxArray(ys);
530
+ const xyk = calcXYK(xs, ys, maxY, 0);
531
+ const {
532
+ xL,
533
+ xU,
534
+ area
535
+ } = stack[0];
536
+ const rawArea = (0, _integration.getArea)(xL, xU, xyk);
537
+ const raw2realRatio = rawArea / area;
488
538
  return {
489
- raw2realRatio: raw2realRatio
539
+ raw2realRatio
490
540
  };
491
541
  };
492
- var buildIntegFeature = function buildIntegFeature(jcamp, spectra) {
493
- var _jcamp$info = jcamp.info,
494
- $OBSERVEDINTEGRALS = _jcamp$info.$OBSERVEDINTEGRALS,
495
- $OBSERVEDMULTIPLETS = _jcamp$info.$OBSERVEDMULTIPLETS;
496
- var regx = /[^0-9.,-]/g;
497
- var stack = [];
542
+ const buildIntegFeature = (jcamp, spectra) => {
543
+ const {
544
+ $OBSERVEDINTEGRALS,
545
+ $OBSERVEDMULTIPLETS
546
+ } = jcamp.info;
547
+ const regx = /[^0-9.,-]/g;
548
+ let stack = [];
498
549
  if ($OBSERVEDINTEGRALS) {
499
- var its = $OBSERVEDINTEGRALS.split('\n').slice(1);
500
- var itStack = its.map(function (t) {
501
- var ts = t.replace(regx, '').split(',');
550
+ const its = $OBSERVEDINTEGRALS.split('\n').slice(1);
551
+ const itStack = its.map(t => {
552
+ const ts = t.replace(regx, '').split(',');
502
553
  return {
503
554
  xL: parseFloat(ts[0]),
504
555
  xU: parseFloat(ts[1]),
@@ -506,27 +557,26 @@ var buildIntegFeature = function buildIntegFeature(jcamp, spectra) {
506
557
  absoluteArea: parseFloat(ts[3])
507
558
  };
508
559
  });
509
- stack = [].concat((0, _toConsumableArray2.default)(stack), (0, _toConsumableArray2.default)(itStack));
560
+ stack = [...stack, ...itStack];
510
561
  }
511
562
  if ($OBSERVEDMULTIPLETS) {
512
- var mps = $OBSERVEDMULTIPLETS.split('\n');
513
- var mpStack = mps.map(function (m) {
514
- var ms = m.replace(regx, '').split(',');
563
+ const mps = $OBSERVEDMULTIPLETS.split('\n');
564
+ const mpStack = mps.map(m => {
565
+ const ms = m.replace(regx, '').split(',');
515
566
  return {
516
567
  xL: parseFloat(ms[1]),
517
568
  xU: parseFloat(ms[2]),
518
569
  area: parseFloat(ms[4])
519
570
  };
520
571
  });
521
- stack = [].concat((0, _toConsumableArray2.default)(stack), (0, _toConsumableArray2.default)(mpStack));
572
+ stack = [...stack, ...mpStack];
522
573
  }
523
- var _calcIntgRefArea = calcIntgRefArea(spectra, stack),
524
- raw2realRatio = _calcIntgRefArea.raw2realRatio;
525
- var mStack = stack.map(function (st) {
526
- return Object.assign({}, st, {
527
- area: st.area * raw2realRatio
528
- });
529
- });
574
+ const {
575
+ raw2realRatio
576
+ } = calcIntgRefArea(spectra, stack);
577
+ const mStack = stack.map(st => Object.assign({}, st, {
578
+ area: st.area * raw2realRatio
579
+ }));
530
580
  return {
531
581
  refArea: raw2realRatio,
532
582
  refFactor: 1,
@@ -545,91 +595,84 @@ const range = (head, tail, length) => {
545
595
  };
546
596
  */
547
597
 
548
- var buildSimFeature = function buildSimFeature(jcamp) {
549
- var $CSSIMULATIONPEAKS = jcamp.info.$CSSIMULATIONPEAKS;
550
- var nmrSimPeaks = $CSSIMULATIONPEAKS ? $CSSIMULATIONPEAKS.split('\n') : [];
551
- nmrSimPeaks = nmrSimPeaks.map(function (x) {
552
- return parseFloat(x).toFixed(2);
553
- });
598
+ const buildSimFeature = jcamp => {
599
+ const {
600
+ $CSSIMULATIONPEAKS
601
+ } = jcamp.info;
602
+ let nmrSimPeaks = $CSSIMULATIONPEAKS ? $CSSIMULATIONPEAKS.split('\n') : [];
603
+ nmrSimPeaks = nmrSimPeaks.map(x => parseFloat(x).toFixed(2));
554
604
  return {
555
- nmrSimPeaks: nmrSimPeaks
605
+ nmrSimPeaks
556
606
  };
557
607
  };
558
- var buildMpyFeature = function buildMpyFeature(jcamp) {
559
- var _jcamp$info2 = jcamp.info,
560
- $OBSERVEDMULTIPLETS = _jcamp$info2.$OBSERVEDMULTIPLETS,
561
- $OBSERVEDMULTIPLETSPEAKS = _jcamp$info2.$OBSERVEDMULTIPLETSPEAKS;
562
- var regx = /[^A-Za-z0-9.,-]/g;
563
- var regxNum = /[^0-9.]/g;
564
- var stack = [];
608
+ const buildMpyFeature = jcamp => {
609
+ const {
610
+ $OBSERVEDMULTIPLETS,
611
+ $OBSERVEDMULTIPLETSPEAKS
612
+ } = jcamp.info;
613
+ const regx = /[^A-Za-z0-9.,-]/g;
614
+ const regxNum = /[^0-9.]/g;
615
+ let stack = [];
565
616
  if (!$OBSERVEDMULTIPLETSPEAKS) return {
566
617
  stack: []
567
618
  };
568
- var allPeaks = $OBSERVEDMULTIPLETSPEAKS.split('\n').map(function (p) {
569
- return p.replace(regx, '').split(',');
570
- });
619
+ const allPeaks = $OBSERVEDMULTIPLETSPEAKS.split('\n').map(p => p.replace(regx, '').split(','));
571
620
  if ($OBSERVEDMULTIPLETS) {
572
- var mp = $OBSERVEDMULTIPLETS.split('\n');
573
- var mpStack = mp.map(function (m) {
574
- var ms = m.replace(regx, '').split(',');
575
- var idx = ms[0];
576
- var ys = [];
577
- var peaks = allPeaks.map(function (p) {
621
+ const mp = $OBSERVEDMULTIPLETS.split('\n');
622
+ const mpStack = mp.map(m => {
623
+ const ms = m.replace(regx, '').split(',');
624
+ const idx = ms[0];
625
+ let ys = [];
626
+ const peaks = allPeaks.map(p => {
578
627
  if (p[0] === idx) {
579
- ys = [].concat((0, _toConsumableArray2.default)(ys), [parseFloat(p[2])]);
628
+ ys = [...ys, parseFloat(p[2])];
580
629
  return {
581
630
  x: parseFloat(p[1]),
582
631
  y: parseFloat(p[2])
583
632
  };
584
633
  }
585
634
  return null;
586
- }).filter(function (r) {
587
- return r != null;
588
- });
589
- var js = m.split(',');
590
- js = js[js.length - 1].split(' ').map(function (j) {
591
- return parseFloat(j.replace(regxNum, ''));
592
- }).filter(Boolean);
635
+ }).filter(r => r != null);
636
+ let js = m.split(',');
637
+ js = js[js.length - 1].split(' ').map(j => parseFloat(j.replace(regxNum, ''))).filter(Boolean);
593
638
  return {
594
- js: js,
639
+ js,
595
640
  mpyType: ms[6],
596
641
  xExtent: {
597
642
  xL: parseFloat(ms[1]),
598
643
  xU: parseFloat(ms[2])
599
644
  },
600
645
  yExtent: {
601
- yL: Math.min.apply(Math, (0, _toConsumableArray2.default)(ys)),
602
- yU: Math.max.apply(Math, (0, _toConsumableArray2.default)(ys))
646
+ yL: Math.min(...ys),
647
+ yU: Math.max(...ys)
603
648
  },
604
- peaks: peaks
649
+ peaks
605
650
  };
606
651
  });
607
- stack = [].concat((0, _toConsumableArray2.default)(stack), (0, _toConsumableArray2.default)(mpStack));
652
+ stack = [...stack, ...mpStack];
608
653
  }
609
654
  return {
610
- stack: stack,
655
+ stack,
611
656
  shift: 0,
612
657
  smExtext: false
613
658
  };
614
659
  };
615
- var isPeakTable = function isPeakTable(s) {
616
- return s.dataType && (s.dataType.includes('PEAKTABLE') || s.dataType.includes('PEAK ASSIGNMENTS'));
617
- };
618
- var extrFeaturesNi = function extrFeaturesNi(jcamp, layout, peakUp, spectra) {
619
- var nfs = {};
620
- var category = jcamp.info.$CSCATEGORY;
660
+ const isPeakTable = s => s.dataType && (s.dataType.includes('PEAKTABLE') || s.dataType.includes('PEAK ASSIGNMENTS'));
661
+ const extrFeaturesNi = (jcamp, layout, peakUp, spectra) => {
662
+ const nfs = {};
663
+ const category = jcamp.info.$CSCATEGORY;
621
664
  if (category) {
622
- var idxEditPeak = category.indexOf('EDIT_PEAK');
665
+ const idxEditPeak = category.indexOf('EDIT_PEAK');
623
666
  if (idxEditPeak >= 0) {
624
- var sEP = jcamp.spectra[idxEditPeak];
625
- var thresRef = calcThresRef(sEP, peakUp);
667
+ const sEP = jcamp.spectra[idxEditPeak];
668
+ const thresRef = calcThresRef(sEP, peakUp);
626
669
  nfs.editPeak = buildPeakFeature(jcamp, layout, peakUp, sEP, thresRef);
627
670
  }
628
- var idxAutoPeak = category.indexOf('AUTO_PEAK');
671
+ const idxAutoPeak = category.indexOf('AUTO_PEAK');
629
672
  if (idxAutoPeak >= 0) {
630
- var sAP = jcamp.spectra[idxAutoPeak];
631
- var _thresRef = calcThresRef(sAP, peakUp);
632
- nfs.autoPeak = buildPeakFeature(jcamp, layout, peakUp, sAP, _thresRef);
673
+ const sAP = jcamp.spectra[idxAutoPeak];
674
+ const thresRef = calcThresRef(sAP, peakUp);
675
+ nfs.autoPeak = buildPeakFeature(jcamp, layout, peakUp, sAP, thresRef);
633
676
  }
634
677
  nfs.integration = buildIntegFeature(jcamp, spectra);
635
678
  nfs.multiplicity = buildMpyFeature(jcamp);
@@ -637,80 +680,75 @@ var extrFeaturesNi = function extrFeaturesNi(jcamp, layout, peakUp, spectra) {
637
680
  return nfs;
638
681
  }
639
682
  // workaround for legacy design
640
- var features = jcamp.spectra.map(function (s) {
641
- var thresRef = calcThresRef(s, peakUp);
683
+ const features = jcamp.spectra.map(s => {
684
+ const thresRef = calcThresRef(s, peakUp);
642
685
  return isPeakTable(s) ? buildPeakFeature(jcamp, layout, peakUp, s, thresRef) : null;
643
- }).filter(function (r) {
644
- return r != null;
645
- });
646
- var integration = buildIntegFeature(jcamp, spectra);
647
- var multiplicity = buildMpyFeature(jcamp);
648
- var simulation = buildSimFeature(jcamp);
686
+ }).filter(r => r != null);
687
+ const integration = buildIntegFeature(jcamp, spectra);
688
+ const multiplicity = buildMpyFeature(jcamp);
689
+ const simulation = buildSimFeature(jcamp);
649
690
  return {
650
691
  editPeak: features[0],
651
692
  autoPeak: features[1],
652
- integration: integration,
653
- multiplicity: multiplicity,
654
- simulation: simulation
693
+ integration,
694
+ multiplicity,
695
+ simulation
655
696
  };
656
697
  };
657
- var getBoundary = function getBoundary(s) {
658
- var _s$data$ = s.data[0],
659
- x = _s$data$.x,
660
- y = _s$data$.y;
661
- var maxX = Math.max.apply(Math, (0, _toConsumableArray2.default)(x));
662
- var minX = Math.min.apply(Math, (0, _toConsumableArray2.default)(x));
663
- var maxY = Math.max.apply(Math, (0, _toConsumableArray2.default)(y));
664
- var minY = Math.min.apply(Math, (0, _toConsumableArray2.default)(y));
698
+ const getBoundary = s => {
699
+ const {
700
+ x,
701
+ y
702
+ } = s.data[0];
703
+ const maxX = Math.max(...x);
704
+ const minX = Math.min(...x);
705
+ const maxY = Math.max(...y);
706
+ const minY = Math.min(...y);
665
707
  return {
666
- maxX: maxX,
667
- minX: minX,
668
- maxY: maxY,
669
- minY: minY
708
+ maxX,
709
+ minX,
710
+ maxY,
711
+ minY
670
712
  };
671
713
  };
672
- var extrFeaturesXrd = function extrFeaturesXrd(jcamp, layout, peakUp) {
673
- var base = jcamp.spectra[0];
674
- var features = jcamp.spectra.map(function (s) {
675
- var upperThres = _format.default.isXRDLayout(layout) ? 100 : calcUpperThres(s);
676
- var lowerThres = _format.default.isXRDLayout(layout) ? 100 : calcLowerThres(s);
677
- var cpo = buildPeakFeature(jcamp, layout, peakUp, s, 100, upperThres, lowerThres);
678
- var bnd = getBoundary(s);
714
+ const extrFeaturesXrd = (jcamp, layout, peakUp) => {
715
+ const base = jcamp.spectra[0];
716
+ const features = jcamp.spectra.map(s => {
717
+ const upperThres = _format.default.isXRDLayout(layout) ? 100 : calcUpperThres(s);
718
+ const lowerThres = _format.default.isXRDLayout(layout) ? 100 : calcLowerThres(s);
719
+ const cpo = buildPeakFeature(jcamp, layout, peakUp, s, 100, upperThres, lowerThres);
720
+ const bnd = getBoundary(s);
679
721
  return Object.assign({}, base, cpo, bnd);
680
- }).filter(function (r) {
681
- return r != null;
682
- });
683
- var category = jcamp.info.$CSCATEGORY;
722
+ }).filter(r => r != null);
723
+ const category = jcamp.info.$CSCATEGORY;
684
724
  if (category) {
685
- var idxEditPeak = category.indexOf('EDIT_PEAK');
725
+ const idxEditPeak = category.indexOf('EDIT_PEAK');
686
726
  if (idxEditPeak >= 0) {
687
- var sEP = jcamp.spectra[idxEditPeak];
688
- var thresRef = calcThresRef(sEP, peakUp);
727
+ const sEP = jcamp.spectra[idxEditPeak];
728
+ const thresRef = calcThresRef(sEP, peakUp);
689
729
  features.editPeak = buildPeakFeature(jcamp, layout, peakUp, sEP, thresRef);
690
730
  }
691
- var idxAutoPeak = category.indexOf('AUTO_PEAK');
731
+ const idxAutoPeak = category.indexOf('AUTO_PEAK');
692
732
  if (idxAutoPeak >= 0) {
693
- var sAP = jcamp.spectra[idxAutoPeak];
694
- var _thresRef2 = calcThresRef(sAP, peakUp);
695
- features.autoPeak = buildPeakFeature(jcamp, layout, peakUp, sAP, _thresRef2);
733
+ const sAP = jcamp.spectra[idxAutoPeak];
734
+ const thresRef = calcThresRef(sAP, peakUp);
735
+ features.autoPeak = buildPeakFeature(jcamp, layout, peakUp, sAP, thresRef);
696
736
  }
697
737
  }
698
738
  return features;
699
739
  };
700
- var extrFeaturesCylicVolta = function extrFeaturesCylicVolta(jcamp, layout, peakUp) {
701
- var base = jcamp.spectra[0];
702
- var features = jcamp.spectra.map(function (s) {
703
- var upperThres = _format.default.isXRDLayout(layout) ? 100 : calcUpperThres(s);
704
- var lowerThres = _format.default.isXRDLayout(layout) ? 100 : calcLowerThres(s);
705
- var cpo = buildPeakFeature(jcamp, layout, peakUp, s, 100, upperThres, lowerThres);
706
- var bnd = getBoundary(s);
740
+ const extrFeaturesCylicVolta = (jcamp, layout, peakUp) => {
741
+ const base = jcamp.spectra[0];
742
+ const features = jcamp.spectra.map(s => {
743
+ const upperThres = _format.default.isXRDLayout(layout) ? 100 : calcUpperThres(s);
744
+ const lowerThres = _format.default.isXRDLayout(layout) ? 100 : calcLowerThres(s);
745
+ const cpo = buildPeakFeature(jcamp, layout, peakUp, s, 100, upperThres, lowerThres);
746
+ const bnd = getBoundary(s);
707
747
  return Object.assign({}, base, cpo, bnd);
708
- }).filter(function (r) {
709
- return r != null;
710
- });
748
+ }).filter(r => r != null);
711
749
  return features;
712
750
  };
713
- var extrFeaturesMs = function extrFeaturesMs(jcamp, layout, peakUp) {
751
+ const extrFeaturesMs = (jcamp, layout, peakUp) => {
714
752
  // const nfs = {};
715
753
  // const category = jcamp.info.$CSCATEGORY;
716
754
  // const scanCount = parseInt(jcamp.info.$CSSCANCOUNT, 10) - 1;
@@ -730,32 +768,47 @@ var extrFeaturesMs = function extrFeaturesMs(jcamp, layout, peakUp) {
730
768
  // return nfs;
731
769
  // }
732
770
  // // workaround for legacy design
733
- var thresRef = jcamp.info && jcamp.info.$CSTHRESHOLD * 100 || 5;
734
- var base = jcamp.spectra[0];
735
- var features = jcamp.spectra.map(function (s) {
736
- var cpo = buildPeakFeature(jcamp, layout, peakUp, s, +thresRef.toFixed(4));
737
- var bnd = getBoundary(s);
771
+ const thresRef = jcamp.info && jcamp.info.$CSTHRESHOLD * 100 || 5;
772
+ const base = jcamp.spectra[0];
773
+ const features = jcamp.spectra.map(s => {
774
+ const cpo = buildPeakFeature(jcamp, layout, peakUp, s, +thresRef.toFixed(4));
775
+ const bnd = getBoundary(s);
738
776
  return Object.assign({}, base, cpo, bnd);
739
- }).filter(function (r) {
740
- return r != null;
741
- });
777
+ }).filter(r => r != null);
742
778
  return features;
743
779
  };
744
- var ExtractJcamp = function ExtractJcamp(source) {
745
- var jcamp = _jcampconverter.default.convert(source, {
780
+ const extractTemperature = jcamp => {
781
+ if ('$CSAUTOMETADATA' in jcamp.info) {
782
+ const match = jcamp.info.$CSAUTOMETADATA.match(/TEMPERATURE=([\d.]+)/);
783
+ if (match !== null) {
784
+ const temperature = match[1];
785
+ return temperature;
786
+ }
787
+ }
788
+ return 'xxx';
789
+ };
790
+ const ExtractJcamp = source => {
791
+ const jcamp = _jcampconverter.default.convert(source, {
746
792
  xy: true,
747
- keepRecordsRegExp: /(\$CSTHRESHOLD|\$CSSCANAUTOTARGET|\$CSSCANEDITTARGET|\$CSSCANCOUNT|\$CSSOLVENTNAME|\$CSSOLVENTVALUE|\$CSSOLVENTX|\$CSCATEGORY|\$CSITAREA|\$CSITFACTOR|\$OBSERVEDINTEGRALS|\$OBSERVEDMULTIPLETS|\$OBSERVEDMULTIPLETSPEAKS|\.SOLVENTNAME|\.OBSERVEFREQUENCY|\$CSSIMULATIONPEAKS|\$CSUPPERTHRESHOLD|\$CSLOWERTHRESHOLD|\$CSCYCLICVOLTAMMETRYDATA)/ // eslint-disable-line
793
+ keepRecordsRegExp: /(\$CSTHRESHOLD|\$CSSCANAUTOTARGET|\$CSSCANEDITTARGET|\$CSSCANCOUNT|\$CSSOLVENTNAME|\$CSSOLVENTVALUE|\$CSSOLVENTX|\$CSCATEGORY|\$CSITAREA|\$CSITFACTOR|\$OBSERVEDINTEGRALS|\$OBSERVEDMULTIPLETS|\$OBSERVEDMULTIPLETSPEAKS|\.SOLVENTNAME|\.OBSERVEFREQUENCY|\$CSSIMULATIONPEAKS|\$CSUPPERTHRESHOLD|\$CSLOWERTHRESHOLD|\$CSCYCLICVOLTAMMETRYDATA|UNITS|SYMBOL|CSAUTOMETADATA)/ // eslint-disable-line
748
794
  });
749
795
 
750
- var layout = readLayout(jcamp);
751
- var peakUp = !_format.default.isIrLayout(layout);
752
- var spectra = _format.default.isMsLayout(layout) ? extrSpectraMs(jcamp, layout) : extrSpectraNi(jcamp, layout);
753
- var features = {};
796
+ const layout = readLayout(jcamp);
797
+ const peakUp = !_format.default.isIrLayout(layout);
798
+ const spectra = _format.default.isMsLayout(layout) ? extrSpectraMs(jcamp, layout) : extrSpectraNi(jcamp, layout);
799
+ let features = {};
754
800
  if (_format.default.isMsLayout(layout)) {
755
801
  features = extrFeaturesMs(jcamp, layout, peakUp);
756
- } else if (_format.default.isXRDLayout(layout) || _format.default.isCDSLayout(layout)) {
802
+ } else if (_format.default.isXRDLayout(layout)) {
757
803
  features = extrFeaturesXrd(jcamp, layout, peakUp);
758
- } else if (_format.default.isCyclicVoltaLayout(layout) || _format.default.isSECLayout(layout)) {
804
+ const temperature = extractTemperature(jcamp);
805
+ return {
806
+ spectra,
807
+ features,
808
+ layout,
809
+ temperature
810
+ };
811
+ } else if (_format.default.isCyclicVoltaLayout(layout) || _format.default.isSECLayout(layout) || _format.default.isAIFLayout(layout) || _format.default.isCDSLayout(layout)) {
759
812
  features = extrFeaturesCylicVolta(jcamp, layout, peakUp);
760
813
  } else {
761
814
  features = extrFeaturesNi(jcamp, layout, peakUp, spectra);
@@ -766,48 +819,52 @@ var ExtractJcamp = function ExtractJcamp(source) {
766
819
  // ? extrFeaturesXrd(jcamp, layout, peakUp) : extrFeaturesNi(jcamp, layout, peakUp, spectra));
767
820
 
768
821
  return {
769
- spectra: spectra,
770
- features: features,
771
- layout: layout
822
+ spectra,
823
+ features,
824
+ layout
772
825
  };
773
826
  };
774
827
  exports.ExtractJcamp = ExtractJcamp;
775
- var Convert2Scan = function Convert2Scan(feature, scanSt) {
776
- var scanAutoTarget = feature.scanAutoTarget,
777
- scanEditTarget = feature.scanEditTarget;
778
- var target = scanSt.target,
779
- isAuto = scanSt.isAuto;
780
- var hasEdit = !!scanEditTarget;
781
- var defaultIdx = isAuto || !hasEdit ? scanAutoTarget : scanEditTarget;
828
+ const Convert2Scan = (feature, scanSt) => {
829
+ const {
830
+ scanAutoTarget,
831
+ scanEditTarget
832
+ } = feature;
833
+ const {
834
+ target,
835
+ isAuto
836
+ } = scanSt;
837
+ const hasEdit = !!scanEditTarget;
838
+ const defaultIdx = isAuto || !hasEdit ? scanAutoTarget : scanEditTarget;
782
839
  return target || defaultIdx;
783
840
  };
784
841
  exports.Convert2Scan = Convert2Scan;
785
- var Convert2Thres = function Convert2Thres(feature, thresSt) {
786
- var value = thresSt.value || feature.thresRef;
842
+ const Convert2Thres = (feature, thresSt) => {
843
+ const value = thresSt.value || feature.thresRef;
787
844
  return value;
788
845
  };
789
846
  exports.Convert2Thres = Convert2Thres;
790
- var Convert2DValue = function Convert2DValue(doubleTheta) {
791
- var lambda = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15406;
792
- var isRadian = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
793
- var theta = doubleTheta / 2;
847
+ const Convert2DValue = function (doubleTheta) {
848
+ let lambda = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15406;
849
+ let isRadian = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
850
+ let theta = doubleTheta / 2;
794
851
  if (isRadian) {
795
852
  theta = theta / 180 * Math.PI;
796
853
  }
797
- var sinTheta = Math.sin(theta);
798
- var dValue = lambda / (2 * sinTheta);
854
+ const sinTheta = Math.sin(theta);
855
+ const dValue = lambda / (2 * sinTheta);
799
856
  return dValue;
800
857
  };
801
858
  exports.Convert2DValue = Convert2DValue;
802
- var GetCyclicVoltaRatio = function GetCyclicVoltaRatio(y_max_peak, y_min_peak, y_pecker) {
803
- var firstExpr = Math.abs(y_min_peak) / Math.abs(y_max_peak);
804
- var secondExpr = 0.485 * Math.abs(y_pecker) / Math.abs(y_max_peak);
805
- var ratio = firstExpr + secondExpr + 0.086;
859
+ const GetCyclicVoltaRatio = (y_max_peak, y_min_peak, y_pecker) => {
860
+ const firstExpr = Math.abs(y_min_peak) / Math.abs(y_max_peak);
861
+ const secondExpr = 0.485 * Math.abs(y_pecker) / Math.abs(y_max_peak);
862
+ const ratio = firstExpr + secondExpr + 0.086;
806
863
  return ratio;
807
864
  };
808
865
  exports.GetCyclicVoltaRatio = GetCyclicVoltaRatio;
809
- var GetCyclicVoltaPeakSeparate = function GetCyclicVoltaPeakSeparate(x_max_peak, x_min_peak) {
810
- var delta = Math.abs(x_max_peak - x_min_peak);
866
+ const GetCyclicVoltaPeakSeparate = (x_max_peak, x_min_peak) => {
867
+ const delta = Math.abs(x_max_peak - x_min_peak);
811
868
  return delta;
812
869
  };
813
870
  exports.GetCyclicVoltaPeakSeparate = GetCyclicVoltaPeakSeparate;