!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JcampConverter=t():e.JcampConverter=t()}(this,function(){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={exports:{},id:r,loaded:!1};return e[r].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var a={};return t.m=e,t.c=a,t.p="",t(0)}([function(e,t){"use strict";function a(){function e(e){for(var t=e.length,a=new Array(t),r=0;t>r;r++)a[r]=parseFloat(e[r]);return a}function t(t,f){f=f||{};var u=/^$/;f.keepRecordsRegExp&&(u=f.keepRecordsRegExp);var c,g,d,m,v,F,y,x,X,A=new Date,b={},T={};T.profiling=[],T.logs=[];var S=[];T.spectra=S,T.info={};var O={};if("string"!=typeof t)return T;for(T.profiling&&T.profiling.push({action:"Before split to LDRS",time:new Date-A}),m=t.split(/[\r\n]+##/),T.profiling&&T.profiling.push({action:"Split to LDRS",time:new Date-A}),m[0]&&(m[0]=m[0].replace(/^[\r\n ]*##/,"")),v=0,F=m.length;F>v;v++){if(c=m[v],y=c.indexOf("="),y>0?(g=c.substring(0,y),d=c.substring(y+1).trim()):(g=c,d=""),g=g.replace(/[_ -]/g,"").toUpperCase(),"DATATABLE"===g&&(x=d.indexOf("\n"),-1===x&&(x=d.indexOf("\r")),x>0)){var C=-1,E=-1;if(X=d.substring(0,x).split(/[ ,;\t]+/),X[0].indexOf("++")>0){var R=X[0].replace(/.*\(([a-zA-Z0-9]+)\+\+.*/,"$1"),w=X[0].replace(/.*\.\.([a-zA-Z0-9]+).*/,"$1");C=b.symbol.indexOf(R),E=b.symbol.indexOf(w)}-1===C&&(C=0),-1===E&&(E=0),b.first&&(b.first.length>C&&(O.firstX=b.first[C]),b.first.length>E&&(O.firstY=b.first[E])),b.last&&(b.last.length>C&&(O.lastX=b.last[C]),b.last.length>E&&(O.lastY=b.last[E])),b.vardim&&b.vardim.length>C&&(O.nbPoints=b.vardim[C]),b.factor&&(b.factor.length>C&&(O.xFactor=b.factor[C]),b.factor.length>E&&(O.yFactor=b.factor[E])),b.units&&(b.units.length>C&&(O.xUnit=b.units[C]),b.units.length>E&&(O.yUnit=b.units[E])),O.datatable=X[0],X[1]&&X[1].indexOf("PEAKS")>-1?g="PEAKTABLE":X[1]&&(X[1].indexOf("XYDATA")||X[0].indexOf("++")>0)&&(g="XYDATA",O.deltaX=(O.lastX-O.firstX)/(O.nbPoints-1))}if("TITLE"===g)O.title=d;else if("DATATYPE"===g)O.dataType=d,d.indexOf("nD")>-1&&(T.twoD=!0);else if("NTUPLES"===g)d.indexOf("nD")>-1&&(T.twoD=!0);else if("XUNITS"===g)O.xUnit=d;else if("YUNITS"===g)O.yUnit=d;else if("FIRSTX"===g)O.firstX=parseFloat(d);else if("LASTX"===g)O.lastX=parseFloat(d);else if("FIRSTY"===g)O.firstY=parseFloat(d);else if("LASTY"===g)O.lastY=parseFloat(d);else if("NPOINTS"===g)O.nbPoints=parseFloat(d);else if("XFACTOR"===g)O.xFactor=parseFloat(d);else if("YFACTOR"===g)O.yFactor=parseFloat(d);else if("DELTAX"===g)O.deltaX=parseFloat(d);else if(".OBSERVEFREQUENCY"===g||"$SFO1"===g)O.observeFrequency||(O.observeFrequency=parseFloat(d));else if(".OBSERVENUCLEUS"===g)O.xType||(T.xType=d.replace(/[^a-zA-Z0-9]/g,""));else if("$SFO2"===g)T.indirectFrequency||(T.indirectFrequency=parseFloat(d));else if("$OFFSET"===g)T.shiftOffsetNum=0,T.shiftOffsetVal||(T.shiftOffsetVal=parseFloat(d));else if("$REFERENCEPOINT"===g);else if("VARNAME"===g)b.varname=d.split(h);else if("SYMBOL"===g)b.symbol=d.split(h);else if("VARTYPE"===g)b.vartype=d.split(h);else if("VARFORM"===g)b.varform=d.split(h);else if("VARDIM"===g)b.vardim=e(d.split(h));else if("UNITS"===g)b.units=d.split(h);else if("FACTOR"===g)b.factor=e(d.split(h));else if("FIRST"===g)b.first=e(d.split(h));else if("LAST"===g)b.last=e(d.split(h));else if("MIN"===g)b.min=e(d.split(h));else if("MAX"===g)b.max=e(d.split(h));else if(".NUCLEUS"===g)T.twoD&&(T.yType=d.split(h)[0]);else if("PAGE"===g){O.page=d.trim(),O.pageValue=parseFloat(d.replace(/^.*=/,"")),O.pageSymbol=O.page.replace(/=.*/,"");var Y=b.symbol.indexOf(O.pageSymbol),D="";b.units&&b.units[Y]&&(D=b.units[Y]),T.indirectFrequency&&"PPM"!==D&&(O.pageValue/=T.indirectFrequency)}else"RETENTIONTIME"===g?O.pageValue=parseFloat(d):"XYDATA"===g?(s(T,O),d.match(/.*\+\+.*/)?l(O,d,T):o(O,d,T),S.push(O),O={}):"PEAKTABLE"===g?(s(T,O),o(O,d,T),S.push(O),O={}):r(g)&&(O[a(g)]=d);g.match(u)&&(T.info[g]=d.trim())}if(T.profiling&&T.profiling.push({action:"Finished parsing",time:new Date-A}),Object.keys(b).length>0){for(var U=[],P=Object.keys(b),v=0;v
1&&(!S[0].dataType||S[0].dataType.match(/.*mass.*/i));if(V&&f.newGCMS&&(f.xy=!0),f.xy&&S.length>0)for(var v=0;v0)for(var N=0;Nt;t++){var l=r[t];i.times[t]=l.pageValue;for(var f=0;fr;r++)if(o=f[r].trim().replace(g,"").split(d),o.length%2===0)for(i=0,s=o.length;s>i;i+=2)l[p++]=parseFloat(o[i])*e.xFactor,l[p++]=parseFloat(o[i+1])*e.yFactor;else a.logs.push("Format error: "+o)}function l(e,t,a){e.deltaX||(e.deltaX=(e.lastX-e.firstX)/(e.nbPoints-1)),e.isXYdata=!0;var r=[];e.data=[r];var n,i,s,o=e.firstX,l=e.firstY,f=t.split(/[\r\n]+/);i=[];for(var p=1,u=f.length;u>p;p++)if(i=f[p].trim().replace(g,"").split(c),i.length>0){if(m){e.firstPoint||(e.firstPoint=parseFloat(i[0]));var d=parseFloat(i[0]-e.firstPoint)*e.xFactor+e.firstX;(n||0===n)&&(d+=e.deltaX),a.logs.push("Checking X value: currentX: "+o+" - expectedCurrentX: "+d)}for(var h=1,v=i.length;v>h;h++)if(1!==h||!n&&0!==n){if(i[h].length>0)if(s=i[h].charCodeAt(0),43===s||45===s||46===s||s>47&&58>s)n=null,l=parseFloat(i[h]),r.push(o,l*e.yFactor),o+=e.deltaX;else if(s>63&&74>s)n=null,l=parseFloat(String.fromCharCode(s-16)+i[h].substring(1)),r.push(o,l*e.yFactor),o+=e.deltaX;else if(s>96&&106>s)n=null,l=-parseFloat(String.fromCharCode(s-48)+i[h].substring(1)),r.push(o,l*e.yFactor),o+=e.deltaX;else if(s>82&&91>s||115===s){var F=parseFloat(String.fromCharCode(s-34)+i[h].substring(1))-1;115===s&&(F=parseFloat("9"+i[h].substring(1))-1);for(var y=0;F>y;y++)n&&(l+=n),r.push(o,l*e.yFactor),o+=e.deltaX}else 37===s?(n=parseFloat("0"+i[h].substring(1)),l+=n,r.push(o,l*e.yFactor),o+=e.deltaX):s>73&&83>s?(n=parseFloat(String.fromCharCode(s-25)+i[h].substring(1)),l+=n,r.push(o,l*e.yFactor),o+=e.deltaX):s>105&&115>s&&(n=-parseFloat(String.fromCharCode(s-57)+i[h].substring(1)),l+=n,r.push(o,l*e.yFactor),o+=e.deltaX)}else n=null,s=i[h].charCodeAt(0)}}function f(e){for(var t=0,a=e[0].data[0][0],r=a,n=e.length,i=e[0].data[0].length/2,s=new Array(n),o=0;n>o;o++){s[o]=new Array(i);for(var l=0;i>l;l++)s[o][l]=e[o].data[0][2*l+1],s[o][l]r&&(r=e[o].data[0][2*l+1]),0!==o&&0!==l&&(t+=Math.abs(s[o][l]-s[o][l-1])+Math.abs(s[o][l]-s[o-1][l]))}return{z:s,minX:e[0].data[0][0],maxX:e[0].data[0][e[0].data[0].length-2],minY:e[0].pageValue,maxY:e[n-1].pageValue,minZ:a,maxZ:r,noise:t/((n-1)*(i-1)*2)}}function p(e){var t=f(e.spectra);e.contourLines=u(t),delete t.z,e.minMax=t}function u(e,t){for(var a,r,n,i,s,o=e.noise,l=e.z,f=[],p=7,u=new Float32Array(4),c=[],g=l.length,d=l[0].length,h=e.minX,m=e.maxX,v=(m-h)/(d-1),F=e.minY,y=e.maxY,x=(y-F)/(g-1),X=e.minZ,A=e.maxZ,b=0;2*p>b;b++){var T={};f.push(T);var S=b%2;s=0===S?(A-5*o)*Math.exp(b/2-p)+5*o:-(A-5*o)*Math.exp(b/2-p)-5*o;var O=[];if(T.zValue=s,T.lines=O,!(X>=s||s>=A))for(var C=0;g-1>C;C++)for(var E=0;d-1>E;E++){u[0]=l[C][E],u[1]=l[C][E+1],u[2]=l[C+1][E],u[3]=l[C+1][E+1];for(var R=0;4>R;R++)c[R]=u[R]>s;c[0]!==c[1]&&c[0]!==c[2]&&(a=E+(s-u[0])/(u[1]-u[0]),r=C,n=E,i=C+(s-u[0])/(u[2]-u[0]),O.push(a*v+h,r*x+F,n*v+h,i*x+F)),c[3]!==c[1]&&c[3]!==c[2]&&(a=E+1,r=C+1-(s-u[3])/(u[1]-u[3]),n=E+1-(s-u[3])/(u[2]-u[3]),i=C+1,O.push(a*v+h,r*x+F,n*v+h,i*x+F)),c[1]!==c[2]&&(a=E+1-(s-u[1])/(u[2]-u[1]),r=C+(s-u[1])/(u[2]-u[1]),c[1]!==c[0]&&(n=E+1-(s-u[1])/(u[0]-u[1]),i=C,O.push(a*v+h,r*x+F,n*v+h,i*x+F)),c[2]!==c[0]&&(n=E,i=C+1-(s-u[2])/(u[0]-u[2]),O.push(a*v+h,r*x+F,n*v+h,i*x+F)),c[1]!==c[3]&&(n=E+1,i=C+(s-u[1])/(u[3]-u[1]),O.push(a*v+h,r*x+F,n*v+h,i*x+F)),c[2]!==c[3]&&(n=E+(s-u[2])/(u[3]-u[2]),i=C+1,O.push(a*v+h,r*x+F,n*v+h,i*x+F)))}}return{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY,segments:f}}var c=/[,\t \+-]*(?=[^\d,\t \.])|[ \t]+(?=[\d+\.-])/,g=/\$\$.*/,d=/[,\t ]+/,h=/[, \t]{1,}/,m=!1,v=["TIC",".RIC","SCANNUMBER"];return t}function r(e,t,a){return"boolean"==typeof t&&(a=t,t={}),a?n(e,t):o(e,t)}function n(e,t){return s||i(),new Promise(function(a){var r=Date.now()+""+Math.random();l[r]=a,s.postMessage({stamp:r,input:e,options:t})})}function i(){var e=URL.createObjectURL(new Blob(["var getConverter ="+a.toString()+";var convert = getConverter(); onmessage = function (event) { postMessage({stamp: event.data.stamp, output: convert(event.data.input, event.data.options)}); };"],{type:"application/javascript"}));s=new Worker(e),URL.revokeObjectURL(e),s.addEventListener("message",function(e){var t=e.data.stamp;l[t]&&l[t](e.data.output)})}var s,o=a(),l={};e.exports={convert:r}}])});
//# sourceMappingURL=jcampconverter.min.js.map