{"version":3,"sources":["webpack:///nmr-formater/webpack/universalModuleDefinition","webpack:///nmr-formater/nmr-formater.min.js","webpack:///nmr-formater/webpack/bootstrap 6be37effccf731e9d624","webpack:///nmr-formater/./src/index.js","webpack:///nmr-formater/./src/oldFormater.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","formatAcs_default","spectra","ascending","decimalValue","decimalJ","solvent","options","appendSeparator","appendSpectroInformation","numberSmartPeakLabels","length","i","signal","appendDelta","appendParenthesis","spectrum","type","nucleus","acsString","formatNucleus","observe","toFixed","formatMF","line","nbDecimal","asymmetric","startX","stopX","delta1","from","parseFloat","to","delta","multiplicity","rangeForMultiplet","parenthesis","appendMultiplicity","appendIntegration","appendCoupling","appendAssignment","pubIntegration","appendParenthesisSeparator","integral","pubAssignment","formatAssignment","assignment","pubMultiplicity","j","Js","coupling","replace","mf","match","old","spectro","nmrJ","Jstring","opt","Object","assign","separator","toVector","ranges","nbPoints","fnName","nWidth","peaks","range","concat","peak","Number","MAX_VALUE","x","width","MIN_VALUE","Array","y","dx","index","Math","round","w","intensity","exp","pow","toACS","undefined","sort","a","b","toNMRSignal","integralData","sttotoFixed","value","nmrJs"],"mappings":"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","file":"nmr-formater.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"nmrFormater\"] = factory();\n\telse\n\t\troot[\"nmrFormater\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"nmrFormater\"] = factory();\n\telse\n\t\troot[\"nmrFormater\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t/**\n\t * This library formats a set of nmr1D signals to the ACS format.\n\t * Created by acastillo on 3/11/15. p\n\t */\n\tvar old = __webpack_require__(1);\n\t\n\tvar acsString=\"\";\n\tvar parenthesis=\"\";\n\tvar spectro=\"\";\n\tvar rangeForMultiplet=false;\n\t\n\tmodule.exports.nmrJ = function(Js, options){\n\t    var Jstring = \"\";\n\t    var opt = Object.assign({},{separator:\", \", nbDecimal:2}, options);\n\t    var j;\n\t    for(var i=0;i<Js.length;i++){\n\t        j = Js[i];\n\t        if (j.length>11) j+=opt.separator;\n\t        Jstring+=j.multiplicity+\" \"+j.coupling.toFixed(opt.nbDecimal);\n\t    }\n\t    return Jstring;\n\t}\n\t\n\tmodule.exports.toVector=function(ranges, opt){\n\t    var options = opt||{};\n\t    var from = options.from;\n\t    var to = options.to;\n\t    var nbPoints = options.nbPoints||16*1024;\n\t    var fnName = options.function||\"gaussian\";\n\t    var nWidth = options.nWidth || 4;\n\t\n\t    var peaks = [];\n\t    for(var i=0;i<ranges.length;i++){\n\t        var range = ranges[i];\n\t        for(var j=0;j<range.signal.length;j++){\n\t            peaks=peaks.concat(range.signal[j].peak);\n\t        }\n\t    }\n\t\n\t    if(!from){\n\t        from = Number.MAX_VALUE;\n\t        for(var i=0;i<peaks.length;i++){\n\t            if(peaks[i].x-peaks[i].width*nWidth<from){\n\t                from = peaks[i].x-peaks[i].width*nWidth;\n\t            }\n\t        }\n\t    }\n\t\n\t    if(!to){\n\t        to = Number.MIN_VALUE;\n\t        for(var i=0;i<peaks.length;i++){\n\t            if(peaks[i].x+peaks[i].width*nWidth>to){\n\t                to = peaks[i].x+peaks[i].width*nWidth;\n\t            }\n\t        }\n\t    }\n\t\n\t\n\t    var x = new Array(nbPoints);\n\t    var y = new Array(nbPoints);\n\t    var dx = (to-from)/(nbPoints-1);\n\t    for(var i=0;i<nbPoints;i++){\n\t        x[i] = from+i*dx;\n\t        y[i] = 0;\n\t    }\n\t\n\t    for(var i=0;i<peaks.length;i++){\n\t        var peak = peaks[i];\n\t        if(peak.x>from && peak.x<to){\n\t            var index = Math.round((peak.x-from)/dx);\n\t            var w = Math.round(peak.width*nWidth/dx);\n\t            if(fnName==\"gaussian\"){\n\t                for(var j=index-w;j<index+w;j++){\n\t                    if(j>=0&&j<nbPoints){\n\t                        y[j]+=peak.intensity*Math.exp(-0.5*Math.pow((peak.x-x[j])/(peak.width/2),2));\n\t                    }\n\t                }\n\t            }else{\n\t                for(var j=index-w;j<index+w;j++){\n\t                    if(j>=0&&j<nbPoints){\n\t                        y[j]+=peak.intensity*Math.pow(peak.width,2)/(Math.pow(peak.x-x[j],2)+Math.pow(peak.width/2,2));\n\t\n\t                    }\n\t                }\n\t            }\n\t\n\t        }\n\t    }\n\t\n\t    return {x:x,y:y};\n\t}\n\t\n\tmodule.exports.toACS = function(spectrum, options){\n\t\n\t    if(spectrum[0].delta1){//Old signals format\n\t        return old.toACS(spectrum, options);\n\t    }\n\t\n\t    acsString=\"\";\n\t    parenthesis=\"\";\n\t    spectro=\"\";\n\t    var solvent = null;\n\t    if(options&&options.solvent)\n\t        solvent = options.solvent;\n\t    if(options&&options.rangeForMultiplet!=undefined)\n\t        rangeForMultiplet = options.rangeForMultiplet;\n\t\n\t    if(options&&options.ascending){\n\t        spectrum.sort(function(a,b){\n\t            return b.from- a.from\n\t        });\n\t    }\n\t    else{\n\t        spectrum.sort(function(a,b){\n\t            return a.from- b.from\n\t        });\n\t    }\n\t\n\t    spectrum.type=\"NMR SPEC\";\n\t    if (options&&options.nucleus==\"1H\") {\n\t        formatAcs_default(spectrum, false, 2, 1, solvent, options);\n\t    }\n\t    if (options&&options.nucleus==\"13C\") {\n\t        formatAcs_default(spectrum, false, 1, 0, solvent,options);\n\t    }\n\t\n\t    if (acsString.length>0) acsString+=\".\";\n\t\n\t    return acsString;\n\t}\n\t\n\tmodule.exports.toNMRSignal = function(acsString){\n\t    //TODO Create the function that reconstructs the signals from the ACS string\n\t    return null;\n\t}\n\t\n\t/*function formatAcs_default_IR(spectra, ascending, decimalValue, smw) {\n\t appendSeparator();\n\t appendSpectroInformation(spectra);\n\t if (spectra[\"peakLabels\"]) {\n\t var numberPeakLabels=spectra[\"peakLabels\"].length;\n\t var minIntensity= 9999999;\n\t var maxIntensity=-9999999;\n\t for (var i=0; i<numberPeakLabels; i++) {\n\t if (spectra[\"peakLabels\"][i].intensity<minIntensity) minIntensity=spectra[\"peakLabels\"][i].intensity;\n\t if (spectra[\"peakLabels\"][i].intensity>maxIntensity) maxIntensity=spectra[\"peakLabels\"][i].intensity;\n\t }\n\t for (var i=0; i<numberPeakLabels; i++) {\n\t if (ascending) {\n\t var peakLabel=spectra[\"peakLabels\"][i];\n\t } else {\n\t var peakLabel=spectra[\"peakLabels\"][numberPeakLabels-i-1];\n\t }\n\t if (peakLabel) {\n\t appendSeparator();\n\t appendValue(peakLabel,decimalValue);\n\t if (smw) { // we need to add small / medium / strong\n\t if (peakLabel.intensity<((maxIntensity-minIntensity)/3+minIntensity)) acsString+=\" (s)\";\n\t else if (peakLabel.intensity>(maxIntensity-(maxIntensity-minIntensity)/3)) acsString+=\" (w)\";\n\t else acsString+=\" (m)\";\n\t }\n\t }\n\t }\n\t }\n\t }*/\n\t\n\tfunction formatAcs_default(spectra, ascending, decimalValue, decimalJ, solvent, options) {\n\t    appendSeparator();\n\t    appendSpectroInformation(spectra, solvent, options);\n\t    var numberSmartPeakLabels=spectra.length;\n\t    for (var i=0; i<numberSmartPeakLabels; i++) {\n\t        if (ascending) {\n\t            var signal=spectra[i];\n\t        } else {\n\t            var signal=spectra[numberSmartPeakLabels-i-1];\n\t        }\n\t        if (signal) {\n\t            appendSeparator();\n\t            appendDelta(signal,decimalValue);\n\t            appendParenthesis(signal,decimalJ);\n\t        }\n\t    }\n\t}\n\t\n\tfunction appendSpectroInformation(spectrum, solvent, options) {\n\t    if (spectrum.type==\"NMR SPEC\") {\n\t        if (options.nucleus) {\n\t            acsString+=formatNucleus(options.nucleus);\n\t        }\n\t        acsString+=\" NMR\";\n\t        if ((solvent) || (options.observe)) {\n\t            acsString+=\" (\";\n\t            if (options.observe) {\n\t                acsString+=(options.observe*1).toFixed(0)+\" MHz\";\n\t                if (solvent) acsString+=\", \";\n\t            }\n\t            if (solvent) {\n\t                acsString+=formatMF(solvent);\n\t            }\n\t            acsString+=\")\";\n\t        }\n\t        acsString+=\" δ \";\n\t    } else if (spectrum.type==\"IR\") {\n\t        acsString+=\" IR \";\n\t    } else if (spectrum.type==\"MASS\") {\n\t        acsString+=\" MASS \";\n\t    }\n\t}\n\t\n\tfunction appendDelta(line, nbDecimal) {\n\t    var startX = 0,stopX=0,delta1=0, asymmetric;\n\t    if(line.from){\n\t        if((typeof line.from)==\"string\"){\n\t            startX=parseFloat(line.from);\n\t        }\n\t        else\n\t            startX=line.from;\n\t    }\n\t    if(line.to){\n\t        if((typeof line.to)==\"string\"){\n\t            stopX=parseFloat(line.to);\n\t        }\n\t        else\n\t            stopX=line.to;\n\t    }\n\t    if(line.signal[0].delta){\n\t        if((typeof line.signal[0].delta)==\"string\"){\n\t            delta1=parseFloat(line.signal[0].delta);\n\t        }\n\t        else\n\t            delta1=line.signal[0].delta;\n\t    }\n\t    else{\n\t        asymmetric = true;\n\t    }\n\t    //console.log(\"Range2: \"+rangeForMultiplet+\" \"+line.multiplicity);\n\t    if (asymmetric===true||(line.signal[0].multiplicity==\"m\"&&rangeForMultiplet===true)) {//Is it massive??\n\t        if (line.from&&line.to) {\n\t            if (startX<stopX) {\n\t                acsString+=startX.toFixed(nbDecimal)+\"-\"+stopX.toFixed(nbDecimal);\n\t            } else {\n\t                acsString+=stopX.toFixed(nbDecimal)+\"-\"+startX.toFixed(nbDecimal);\n\t            }\n\t        } else {\n\t            if(line.signal[0].delta)\n\t                acsString+=\"?\";\n\t        }\n\t    }\n\t    else{\n\t        if(line.signal[0].delta)\n\t            acsString+=delta1.toFixed(nbDecimal);\n\t        else{\n\t            if(line.from&&line.to){\n\t                acsString+=((startX+stopX)/2).toFixed(nbDecimal);\n\t            }\n\t        }\n\t    }\n\t}\n\t\n\tfunction appendValue(line, nbDecimal) {\n\t    if (line.xPosition) {\n\t        acsString+=line.xPosition.toFixed(nbDecimal);\n\t    }\n\t}\n\t\n\tfunction appendParenthesis(line, nbDecimal) {\n\t    //console.log(\"appendParenthesis1\");\n\t    // need to add assignment - coupling - integration\n\t    parenthesis=\"\";\n\t    appendMultiplicity(line);\n\t    appendIntegration(line);\n\t    appendCoupling(line,nbDecimal);\n\t    appendAssignment(line);\n\t\n\t\n\t    if (parenthesis.length>0) {\n\t        acsString+=\" (\"+parenthesis+\")\";\n\t    }\n\t    //console.log(\"appendParenthesis2\");\n\t}\n\t\n\tfunction appendIntegration(line) {\n\t    if (line.pubIntegration) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.pubIntegration;\n\t    } else if (line.integral) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.integral.toFixed(0)+\" H\";\n\t    }\n\t}\n\t\n\tfunction appendAssignment(line) {\n\t    if (line.signal[0].pubAssignment) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=formatAssignment(line.signal[0].pubAssignment);\n\t    }\n\t    else{\n\t        if (line.signal[0].assignment) {\n\t            appendParenthesisSeparator();\n\t            parenthesis+=formatAssignment(line.signal[0].assignment);\n\t        }\n\t    }\n\t}\n\t\n\tfunction appendMultiplicity(line) {\n\t    if (line.signal[0].pubMultiplicity) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.pubMultiplicity;\n\t    } else if (line.signal[0].multiplicity) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.signal[0].multiplicity;\n\t    }\n\t}\n\t\n\tfunction appendCoupling(line, nbDecimal) {\n\t    if (line.signal[0].j) {\n\t        var Js = line.signal[0].j;\n\t        var j=\"<i>J</i> = \";\n\t        for (var i=0; i<Js.length; i++) {\n\t            var coupling=Js[i].coupling;\n\t            if (j.length>11) j+=\", \";\n\t            j+=coupling.toFixed(nbDecimal);\n\t        }\n\t        appendParenthesisSeparator();\n\t        parenthesis+=j+\" Hz\";\n\t    }\n\t}\n\t\n\tfunction formatAssignment(assignment) {\n\t    assignment=assignment.replace(/([0-9])/g,\"<sub>$1</sub>\");\n\t    assignment=assignment.replace(/\\\"([^\\\"]*)\\\"/g,\"<i>$1</i>\");\n\t    return assignment;\n\t}\n\t\n\tfunction formatMF(mf) {\n\t    mf=mf.replace(/([0-9])/g,\"<sub>$1</sub>\");\n\t    return mf;\n\t}\n\t\n\tfunction formatNucleus(nucleus) {\n\t    nucleus=nucleus.replace(/([0-9])/g,\"<sup>$1</sup>\");\n\t    return nucleus;\n\t}\n\t\n\tfunction appendSeparator() {\n\t    if ((acsString.length>0) && (! acsString.match(/ $/))) {\n\t        acsString+=\", \";\n\t    }\n\t}\n\t\n\tfunction appendParenthesisSeparator() {\n\t    if ((parenthesis.length>0) && (! parenthesis.match(\", $\"))) parenthesis+=\", \";\n\t}\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t/**\n\t * This library formats a set of nmr1D signals to the ACS format.\n\t * Created by acastillo on 3/11/15. p\n\t */\n\t\n\tvar acsString=\"\";\n\tvar parenthesis=\"\";\n\tvar spectro=\"\";\n\tvar rangeForMultiplet=false;\n\t\n\tmodule.exports.toACS = function(spectrum, options){\n\t    acsString=\"\";\n\t    parenthesis=\"\";\n\t    spectro=\"\";\n\t    var solvent = null;\n\t    if(options&&options.solvent)\n\t        solvent = options.solvent;\n\t    if(options&&options.rangeForMultiplet!=undefined)\n\t        rangeForMultiplet = options.rangeForMultiplet;\n\t\n\t    if(options&&options.ascending){\n\t        spectrum.sort(function(a,b){\n\t            return b.delta1- a.delta1\n\t        });\n\t    }\n\t    else{\n\t        spectrum.sort(function(a,b){\n\t            return a.delta1- b.delta1\n\t        });\n\t    }\n\t\n\t    //console.log(\"Range1: \"+options.rangeForMultiplet);\n\t\n\t    spectrum.type=\"NMR SPEC\";\n\t    if (spectrum[0][\"nucleus\"]==\"1H\") {\n\t        formatAcs_default(spectrum, false, 2, 1, solvent);\n\t    } else if (spectrum[0][\"nucleus\"]==\"13C\") {\n\t        formatAcs_default(spectrum, false, 1, 0, solvent);\n\t    }\n\t\n\t    if (acsString.length>0) acsString+=\".\";\n\t\n\t    return acsString;\n\t}\n\t\n\tfunction formatAcs_default(spectra, ascending, decimalValue, decimalJ, solvent) {\n\t    appendSeparator();\n\t    appendSpectroInformation(spectra, solvent);\n\t    var numberSmartPeakLabels=spectra.length;\n\t    for (var i=0; i<numberSmartPeakLabels; i++) {\n\t        if (ascending) {\n\t            var signal=spectra[i];\n\t        } else {\n\t            var signal=spectra[numberSmartPeakLabels-i-1];\n\t        }\n\t        if (signal) {\n\t            appendSeparator();\n\t            appendDelta(signal,decimalValue);\n\t            appendParenthesis(signal,decimalJ);\n\t        }\n\t    }\n\t}\n\t\n\tfunction appendSpectroInformation(spectrum, solvent) {\n\t    if (spectrum.type==\"NMR SPEC\") {\n\t        if (spectrum[0].nucleus) {\n\t            acsString+=formatNucleus(spectrum[0].nucleus);\n\t        }\n\t        acsString+=\" NMR\";\n\t        if ((solvent) || (spectrum[0].observe)) {\n\t            acsString+=\" (\";\n\t            if (spectrum[0].observe) {\n\t                acsString+=(spectrum[0].observe*1).toFixed(0)+\" MHz\";\n\t                if (solvent) acsString+=\", \";\n\t            }\n\t            if (solvent) {\n\t                acsString+=formatMF(solvent);\n\t            }\n\t            acsString+=\")\";\n\t        }\n\t        acsString+=\" δ \";\n\t    } else if (spectrum.type==\"IR\") {\n\t        acsString+=\" IR \";\n\t    } else if (spectrum.type==\"MASS\") {\n\t        acsString+=\" MASS \";\n\t    }\n\t}\n\t\n\tfunction appendDelta(line, nbDecimal) {\n\t    //console.log(line);\n\t    var startX = 0,stopX=0,delta1=0;\n\t    if(line.integralData.from) {\n\t        if ((typeof line.integralData.from) == \"string\") {\n\t            startX = parseFloat(line.integralData.from);\n\t        }\n\t        else\n\t            startX = line.integralData.from;\n\t    }\n\t    if(line.integralData.to){\n\t        if((typeof line.integralData.to)==\"string\"){\n\t            stopX=parseFloat(line.integralData.to);\n\t        }\n\t        else\n\t            stopX=line.integralData.to;\n\t    }\n\t    if(line.delta1){\n\t        if((typeof line.delta1)==\"string\"){\n\t            delta1=parseFloat(line.delta1);\n\t        }\n\t        else\n\t            delta1=line.delta1;\n\t\n\t    }\n\t    if (line.asymmetric===true||(line.multiplicity==\"m\"&&rangeForMultiplet===true)) {//Is it massive??\n\t        if (line.integralData.from&&line.integralData.to) {\n\t            if (startX<stopX) {\n\t                acsString+=startX.toFixed(nbDecimal)+\"-\"+stopX.toFixed(nbDecimal);\n\t            } else {\n\t                acsString+=stopX.toFixed(nbDecimal)+\"-\"+sttotoFixed(nbDecimal);\n\t            }\n\t        } else {\n\t            if(line.delta1)\n\t                acsString+=delta1.toFixed(nbDecimal);\n\t        }\n\t    }\n\t    else{\n\t        if(line.delta1)\n\t            acsString+=delta1.toFixed(nbDecimal);\n\t        else{\n\t            if(line.integralData.from&&line.integralData.to){\n\t                acsString+=((startX+stopX)/2).toFixed(nbDecimal);\n\t            }\n\t        }\n\t    }\n\t}\n\t\n\tfunction appendValue(line, nbDecimal) {\n\t    if (line.xPosition) {\n\t        acsString+=line.xPosition.toFixed(nbDecimal);\n\t    }\n\t}\n\t\n\tfunction appendParenthesis(line, nbDecimal) {\n\t    // need to add assignment - coupling - integration\n\t    parenthesis=\"\";\n\t    appendMultiplicity(line);\n\t    appendIntegration(line);\n\t    appendCoupling(line,nbDecimal);\n\t    appendAssignment(line);\n\t\n\t\n\t    if (parenthesis.length>0) {\n\t        acsString+=\" (\"+parenthesis+\")\";\n\t    }\n\t}\n\t\n\tfunction appendIntegration(line) {\n\t    if (line.pubIntegration) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.pubIntegration;\n\t    } else if (line.integralData) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.integralData.value.toFixed(0)+\" H\";\n\t    }\n\t}\n\t\n\tfunction appendAssignment(line) {\n\t    if (line.pubAssignment) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=formatAssignment(line.pubAssignment);\n\t    }\n\t    else{\n\t        if (line.assignment) {\n\t            appendParenthesisSeparator();\n\t            parenthesis+=formatAssignment(line.assignment);\n\t        }\n\t    }\n\t}\n\t\n\tfunction appendMultiplicity(line) {\n\t    if (line.pubMultiplicity) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.pubMultiplicity;\n\t    } else if (line.multiplicity) {\n\t        appendParenthesisSeparator();\n\t        parenthesis+=line.multiplicity;\n\t    }\n\t}\n\t\n\tfunction appendCoupling(line, nbDecimal) {\n\t    if (line.nmrJs) {\n\t        var j=\"<i>J</i> = \";\n\t        for (var i=0; i<line.nmrJs.length; i++) {\n\t            var coupling=line.nmrJs[i].coupling;\n\t            if (j.length>11) j+=\", \";\n\t            j+=coupling.toFixed(nbDecimal);\n\t        }\n\t        appendParenthesisSeparator();\n\t        parenthesis+=j+\" Hz\";\n\t    }\n\t\n\t}\n\t\n\tfunction formatAssignment(assignment) {\n\t    assignment=assignment.replace(/([0-9])/g,\"<sub>$1</sub>\");\n\t    assignment=assignment.replace(/\\\"([^\\\"]*)\\\"/g,\"<i>$1</i>\");\n\t    return assignment;\n\t}\n\t\n\tfunction formatMF(mf) {\n\t    mf=mf.replace(/([0-9])/g,\"<sub>$1</sub>\");\n\t    return mf;\n\t}\n\t\n\tfunction formatNucleus(nucleus) {\n\t    nucleus=nucleus.replace(/([0-9])/g,\"<sup>$1</sup>\");\n\t    return nucleus;\n\t}\n\t\n\tfunction appendSeparator() {\n\t    if ((acsString.length>0) && (! acsString.match(/ $/))) {\n\t        acsString+=\", \";\n\t    }\n\t}\n\t\n\tfunction appendParenthesisSeparator() {\n\t    if ((parenthesis.length>0) && (! parenthesis.match(\", $\"))) parenthesis+=\", \";\n\t}\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** nmr-formater.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 6be37effccf731e9d624\n **/","'use strict';\n/**\n * This library formats a set of nmr1D signals to the ACS format.\n * Created by acastillo on 3/11/15. p\n */\nvar old = require(\"./oldFormater\");\n\nvar acsString=\"\";\nvar parenthesis=\"\";\nvar spectro=\"\";\nvar rangeForMultiplet=false;\n\nmodule.exports.nmrJ = function(Js, options){\n    var Jstring = \"\";\n    var opt = Object.assign({},{separator:\", \", nbDecimal:2}, options);\n    var j;\n    for(var i=0;i<Js.length;i++){\n        j = Js[i];\n        if (j.length>11) j+=opt.separator;\n        Jstring+=j.multiplicity+\" \"+j.coupling.toFixed(opt.nbDecimal);\n    }\n    return Jstring;\n}\n\nmodule.exports.toVector=function(ranges, opt){\n    var options = opt||{};\n    var from = options.from;\n    var to = options.to;\n    var nbPoints = options.nbPoints||16*1024;\n    var fnName = options.function||\"gaussian\";\n    var nWidth = options.nWidth || 4;\n\n    var peaks = [];\n    for(var i=0;i<ranges.length;i++){\n        var range = ranges[i];\n        for(var j=0;j<range.signal.length;j++){\n            peaks=peaks.concat(range.signal[j].peak);\n        }\n    }\n\n    if(!from){\n        from = Number.MAX_VALUE;\n        for(var i=0;i<peaks.length;i++){\n            if(peaks[i].x-peaks[i].width*nWidth<from){\n                from = peaks[i].x-peaks[i].width*nWidth;\n            }\n        }\n    }\n\n    if(!to){\n        to = Number.MIN_VALUE;\n        for(var i=0;i<peaks.length;i++){\n            if(peaks[i].x+peaks[i].width*nWidth>to){\n                to = peaks[i].x+peaks[i].width*nWidth;\n            }\n        }\n    }\n\n\n    var x = new Array(nbPoints);\n    var y = new Array(nbPoints);\n    var dx = (to-from)/(nbPoints-1);\n    for(var i=0;i<nbPoints;i++){\n        x[i] = from+i*dx;\n        y[i] = 0;\n    }\n\n    for(var i=0;i<peaks.length;i++){\n        var peak = peaks[i];\n        if(peak.x>from && peak.x<to){\n            var index = Math.round((peak.x-from)/dx);\n            var w = Math.round(peak.width*nWidth/dx);\n            if(fnName==\"gaussian\"){\n                for(var j=index-w;j<index+w;j++){\n                    if(j>=0&&j<nbPoints){\n                        y[j]+=peak.intensity*Math.exp(-0.5*Math.pow((peak.x-x[j])/(peak.width/2),2));\n                    }\n                }\n            }else{\n                for(var j=index-w;j<index+w;j++){\n                    if(j>=0&&j<nbPoints){\n                        y[j]+=peak.intensity*Math.pow(peak.width,2)/(Math.pow(peak.x-x[j],2)+Math.pow(peak.width/2,2));\n\n                    }\n                }\n            }\n\n        }\n    }\n\n    return {x:x,y:y};\n}\n\nmodule.exports.toACS = function(spectrum, options){\n\n    if(spectrum[0].delta1){//Old signals format\n        return old.toACS(spectrum, options);\n    }\n\n    acsString=\"\";\n    parenthesis=\"\";\n    spectro=\"\";\n    var solvent = null;\n    if(options&&options.solvent)\n        solvent = options.solvent;\n    if(options&&options.rangeForMultiplet!=undefined)\n        rangeForMultiplet = options.rangeForMultiplet;\n\n    if(options&&options.ascending){\n        spectrum.sort(function(a,b){\n            return b.from- a.from\n        });\n    }\n    else{\n        spectrum.sort(function(a,b){\n            return a.from- b.from\n        });\n    }\n\n    spectrum.type=\"NMR SPEC\";\n    if (options&&options.nucleus==\"1H\") {\n        formatAcs_default(spectrum, false, 2, 1, solvent, options);\n    }\n    if (options&&options.nucleus==\"13C\") {\n        formatAcs_default(spectrum, false, 1, 0, solvent,options);\n    }\n\n    if (acsString.length>0) acsString+=\".\";\n\n    return acsString;\n}\n\nmodule.exports.toNMRSignal = function(acsString){\n    //TODO Create the function that reconstructs the signals from the ACS string\n    return null;\n}\n\n/*function formatAcs_default_IR(spectra, ascending, decimalValue, smw) {\n appendSeparator();\n appendSpectroInformation(spectra);\n if (spectra[\"peakLabels\"]) {\n var numberPeakLabels=spectra[\"peakLabels\"].length;\n var minIntensity= 9999999;\n var maxIntensity=-9999999;\n for (var i=0; i<numberPeakLabels; i++) {\n if (spectra[\"peakLabels\"][i].intensity<minIntensity) minIntensity=spectra[\"peakLabels\"][i].intensity;\n if (spectra[\"peakLabels\"][i].intensity>maxIntensity) maxIntensity=spectra[\"peakLabels\"][i].intensity;\n }\n for (var i=0; i<numberPeakLabels; i++) {\n if (ascending) {\n var peakLabel=spectra[\"peakLabels\"][i];\n } else {\n var peakLabel=spectra[\"peakLabels\"][numberPeakLabels-i-1];\n }\n if (peakLabel) {\n appendSeparator();\n appendValue(peakLabel,decimalValue);\n if (smw) { // we need to add small / medium / strong\n if (peakLabel.intensity<((maxIntensity-minIntensity)/3+minIntensity)) acsString+=\" (s)\";\n else if (peakLabel.intensity>(maxIntensity-(maxIntensity-minIntensity)/3)) acsString+=\" (w)\";\n else acsString+=\" (m)\";\n }\n }\n }\n }\n }*/\n\nfunction formatAcs_default(spectra, ascending, decimalValue, decimalJ, solvent, options) {\n    appendSeparator();\n    appendSpectroInformation(spectra, solvent, options);\n    var numberSmartPeakLabels=spectra.length;\n    for (var i=0; i<numberSmartPeakLabels; i++) {\n        if (ascending) {\n            var signal=spectra[i];\n        } else {\n            var signal=spectra[numberSmartPeakLabels-i-1];\n        }\n        if (signal) {\n            appendSeparator();\n            appendDelta(signal,decimalValue);\n            appendParenthesis(signal,decimalJ);\n        }\n    }\n}\n\nfunction appendSpectroInformation(spectrum, solvent, options) {\n    if (spectrum.type==\"NMR SPEC\") {\n        if (options.nucleus) {\n            acsString+=formatNucleus(options.nucleus);\n        }\n        acsString+=\" NMR\";\n        if ((solvent) || (options.observe)) {\n            acsString+=\" (\";\n            if (options.observe) {\n                acsString+=(options.observe*1).toFixed(0)+\" MHz\";\n                if (solvent) acsString+=\", \";\n            }\n            if (solvent) {\n                acsString+=formatMF(solvent);\n            }\n            acsString+=\")\";\n        }\n        acsString+=\" δ \";\n    } else if (spectrum.type==\"IR\") {\n        acsString+=\" IR \";\n    } else if (spectrum.type==\"MASS\") {\n        acsString+=\" MASS \";\n    }\n}\n\nfunction appendDelta(line, nbDecimal) {\n    var startX = 0,stopX=0,delta1=0, asymmetric;\n    if(line.from){\n        if((typeof line.from)==\"string\"){\n            startX=parseFloat(line.from);\n        }\n        else\n            startX=line.from;\n    }\n    if(line.to){\n        if((typeof line.to)==\"string\"){\n            stopX=parseFloat(line.to);\n        }\n        else\n            stopX=line.to;\n    }\n    if(line.signal[0].delta){\n        if((typeof line.signal[0].delta)==\"string\"){\n            delta1=parseFloat(line.signal[0].delta);\n        }\n        else\n            delta1=line.signal[0].delta;\n    }\n    else{\n        asymmetric = true;\n    }\n    //console.log(\"Range2: \"+rangeForMultiplet+\" \"+line.multiplicity);\n    if (asymmetric===true||(line.signal[0].multiplicity==\"m\"&&rangeForMultiplet===true)) {//Is it massive??\n        if (line.from&&line.to) {\n            if (startX<stopX) {\n                acsString+=startX.toFixed(nbDecimal)+\"-\"+stopX.toFixed(nbDecimal);\n            } else {\n                acsString+=stopX.toFixed(nbDecimal)+\"-\"+startX.toFixed(nbDecimal);\n            }\n        } else {\n            if(line.signal[0].delta)\n                acsString+=\"?\";\n        }\n    }\n    else{\n        if(line.signal[0].delta)\n            acsString+=delta1.toFixed(nbDecimal);\n        else{\n            if(line.from&&line.to){\n                acsString+=((startX+stopX)/2).toFixed(nbDecimal);\n            }\n        }\n    }\n}\n\nfunction appendValue(line, nbDecimal) {\n    if (line.xPosition) {\n        acsString+=line.xPosition.toFixed(nbDecimal);\n    }\n}\n\nfunction appendParenthesis(line, nbDecimal) {\n    //console.log(\"appendParenthesis1\");\n    // need to add assignment - coupling - integration\n    parenthesis=\"\";\n    appendMultiplicity(line);\n    appendIntegration(line);\n    appendCoupling(line,nbDecimal);\n    appendAssignment(line);\n\n\n    if (parenthesis.length>0) {\n        acsString+=\" (\"+parenthesis+\")\";\n    }\n    //console.log(\"appendParenthesis2\");\n}\n\nfunction appendIntegration(line) {\n    if (line.pubIntegration) {\n        appendParenthesisSeparator();\n        parenthesis+=line.pubIntegration;\n    } else if (line.integral) {\n        appendParenthesisSeparator();\n        parenthesis+=line.integral.toFixed(0)+\" H\";\n    }\n}\n\nfunction appendAssignment(line) {\n    if (line.signal[0].pubAssignment) {\n        appendParenthesisSeparator();\n        parenthesis+=formatAssignment(line.signal[0].pubAssignment);\n    }\n    else{\n        if (line.signal[0].assignment) {\n            appendParenthesisSeparator();\n            parenthesis+=formatAssignment(line.signal[0].assignment);\n        }\n    }\n}\n\nfunction appendMultiplicity(line) {\n    if (line.signal[0].pubMultiplicity) {\n        appendParenthesisSeparator();\n        parenthesis+=line.pubMultiplicity;\n    } else if (line.signal[0].multiplicity) {\n        appendParenthesisSeparator();\n        parenthesis+=line.signal[0].multiplicity;\n    }\n}\n\nfunction appendCoupling(line, nbDecimal) {\n    if (line.signal[0].j) {\n        var Js = line.signal[0].j;\n        var j=\"<i>J</i> = \";\n        for (var i=0; i<Js.length; i++) {\n            var coupling=Js[i].coupling;\n            if (j.length>11) j+=\", \";\n            j+=coupling.toFixed(nbDecimal);\n        }\n        appendParenthesisSeparator();\n        parenthesis+=j+\" Hz\";\n    }\n}\n\nfunction formatAssignment(assignment) {\n    assignment=assignment.replace(/([0-9])/g,\"<sub>$1</sub>\");\n    assignment=assignment.replace(/\\\"([^\\\"]*)\\\"/g,\"<i>$1</i>\");\n    return assignment;\n}\n\nfunction formatMF(mf) {\n    mf=mf.replace(/([0-9])/g,\"<sub>$1</sub>\");\n    return mf;\n}\n\nfunction formatNucleus(nucleus) {\n    nucleus=nucleus.replace(/([0-9])/g,\"<sup>$1</sup>\");\n    return nucleus;\n}\n\nfunction appendSeparator() {\n    if ((acsString.length>0) && (! acsString.match(/ $/))) {\n        acsString+=\", \";\n    }\n}\n\nfunction appendParenthesisSeparator() {\n    if ((parenthesis.length>0) && (! parenthesis.match(\", $\"))) parenthesis+=\", \";\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/index.js\n ** module id = 0\n ** module chunks = 0\n **/","'use strict';\n/**\n * This library formats a set of nmr1D signals to the ACS format.\n * Created by acastillo on 3/11/15. p\n */\n\nvar acsString=\"\";\nvar parenthesis=\"\";\nvar spectro=\"\";\nvar rangeForMultiplet=false;\n\nmodule.exports.toACS = function(spectrum, options){\n    acsString=\"\";\n    parenthesis=\"\";\n    spectro=\"\";\n    var solvent = null;\n    if(options&&options.solvent)\n        solvent = options.solvent;\n    if(options&&options.rangeForMultiplet!=undefined)\n        rangeForMultiplet = options.rangeForMultiplet;\n\n    if(options&&options.ascending){\n        spectrum.sort(function(a,b){\n            return b.delta1- a.delta1\n        });\n    }\n    else{\n        spectrum.sort(function(a,b){\n            return a.delta1- b.delta1\n        });\n    }\n\n    //console.log(\"Range1: \"+options.rangeForMultiplet);\n\n    spectrum.type=\"NMR SPEC\";\n    if (spectrum[0][\"nucleus\"]==\"1H\") {\n        formatAcs_default(spectrum, false, 2, 1, solvent);\n    } else if (spectrum[0][\"nucleus\"]==\"13C\") {\n        formatAcs_default(spectrum, false, 1, 0, solvent);\n    }\n\n    if (acsString.length>0) acsString+=\".\";\n\n    return acsString;\n}\n\nfunction formatAcs_default(spectra, ascending, decimalValue, decimalJ, solvent) {\n    appendSeparator();\n    appendSpectroInformation(spectra, solvent);\n    var numberSmartPeakLabels=spectra.length;\n    for (var i=0; i<numberSmartPeakLabels; i++) {\n        if (ascending) {\n            var signal=spectra[i];\n        } else {\n            var signal=spectra[numberSmartPeakLabels-i-1];\n        }\n        if (signal) {\n            appendSeparator();\n            appendDelta(signal,decimalValue);\n            appendParenthesis(signal,decimalJ);\n        }\n    }\n}\n\nfunction appendSpectroInformation(spectrum, solvent) {\n    if (spectrum.type==\"NMR SPEC\") {\n        if (spectrum[0].nucleus) {\n            acsString+=formatNucleus(spectrum[0].nucleus);\n        }\n        acsString+=\" NMR\";\n        if ((solvent) || (spectrum[0].observe)) {\n            acsString+=\" (\";\n            if (spectrum[0].observe) {\n                acsString+=(spectrum[0].observe*1).toFixed(0)+\" MHz\";\n                if (solvent) acsString+=\", \";\n            }\n            if (solvent) {\n                acsString+=formatMF(solvent);\n            }\n            acsString+=\")\";\n        }\n        acsString+=\" δ \";\n    } else if (spectrum.type==\"IR\") {\n        acsString+=\" IR \";\n    } else if (spectrum.type==\"MASS\") {\n        acsString+=\" MASS \";\n    }\n}\n\nfunction appendDelta(line, nbDecimal) {\n    //console.log(line);\n    var startX = 0,stopX=0,delta1=0;\n    if(line.integralData.from) {\n        if ((typeof line.integralData.from) == \"string\") {\n            startX = parseFloat(line.integralData.from);\n        }\n        else\n            startX = line.integralData.from;\n    }\n    if(line.integralData.to){\n        if((typeof line.integralData.to)==\"string\"){\n            stopX=parseFloat(line.integralData.to);\n        }\n        else\n            stopX=line.integralData.to;\n    }\n    if(line.delta1){\n        if((typeof line.delta1)==\"string\"){\n            delta1=parseFloat(line.delta1);\n        }\n        else\n            delta1=line.delta1;\n\n    }\n    if (line.asymmetric===true||(line.multiplicity==\"m\"&&rangeForMultiplet===true)) {//Is it massive??\n        if (line.integralData.from&&line.integralData.to) {\n            if (startX<stopX) {\n                acsString+=startX.toFixed(nbDecimal)+\"-\"+stopX.toFixed(nbDecimal);\n            } else {\n                acsString+=stopX.toFixed(nbDecimal)+\"-\"+sttotoFixed(nbDecimal);\n            }\n        } else {\n            if(line.delta1)\n                acsString+=delta1.toFixed(nbDecimal);\n        }\n    }\n    else{\n        if(line.delta1)\n            acsString+=delta1.toFixed(nbDecimal);\n        else{\n            if(line.integralData.from&&line.integralData.to){\n                acsString+=((startX+stopX)/2).toFixed(nbDecimal);\n            }\n        }\n    }\n}\n\nfunction appendValue(line, nbDecimal) {\n    if (line.xPosition) {\n        acsString+=line.xPosition.toFixed(nbDecimal);\n    }\n}\n\nfunction appendParenthesis(line, nbDecimal) {\n    // need to add assignment - coupling - integration\n    parenthesis=\"\";\n    appendMultiplicity(line);\n    appendIntegration(line);\n    appendCoupling(line,nbDecimal);\n    appendAssignment(line);\n\n\n    if (parenthesis.length>0) {\n        acsString+=\" (\"+parenthesis+\")\";\n    }\n}\n\nfunction appendIntegration(line) {\n    if (line.pubIntegration) {\n        appendParenthesisSeparator();\n        parenthesis+=line.pubIntegration;\n    } else if (line.integralData) {\n        appendParenthesisSeparator();\n        parenthesis+=line.integralData.value.toFixed(0)+\" H\";\n    }\n}\n\nfunction appendAssignment(line) {\n    if (line.pubAssignment) {\n        appendParenthesisSeparator();\n        parenthesis+=formatAssignment(line.pubAssignment);\n    }\n    else{\n        if (line.assignment) {\n            appendParenthesisSeparator();\n            parenthesis+=formatAssignment(line.assignment);\n        }\n    }\n}\n\nfunction appendMultiplicity(line) {\n    if (line.pubMultiplicity) {\n        appendParenthesisSeparator();\n        parenthesis+=line.pubMultiplicity;\n    } else if (line.multiplicity) {\n        appendParenthesisSeparator();\n        parenthesis+=line.multiplicity;\n    }\n}\n\nfunction appendCoupling(line, nbDecimal) {\n    if (line.nmrJs) {\n        var j=\"<i>J</i> = \";\n        for (var i=0; i<line.nmrJs.length; i++) {\n            var coupling=line.nmrJs[i].coupling;\n            if (j.length>11) j+=\", \";\n            j+=coupling.toFixed(nbDecimal);\n        }\n        appendParenthesisSeparator();\n        parenthesis+=j+\" Hz\";\n    }\n\n}\n\nfunction formatAssignment(assignment) {\n    assignment=assignment.replace(/([0-9])/g,\"<sub>$1</sub>\");\n    assignment=assignment.replace(/\\\"([^\\\"]*)\\\"/g,\"<i>$1</i>\");\n    return assignment;\n}\n\nfunction formatMF(mf) {\n    mf=mf.replace(/([0-9])/g,\"<sub>$1</sub>\");\n    return mf;\n}\n\nfunction formatNucleus(nucleus) {\n    nucleus=nucleus.replace(/([0-9])/g,\"<sup>$1</sup>\");\n    return nucleus;\n}\n\nfunction appendSeparator() {\n    if ((acsString.length>0) && (! acsString.match(/ $/))) {\n        acsString+=\", \";\n    }\n}\n\nfunction appendParenthesisSeparator() {\n    if ((parenthesis.length>0) && (! parenthesis.match(\", $\"))) parenthesis+=\", \";\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/oldFormater.js\n ** module id = 1\n ** module chunks = 0\n **/"],"sourceRoot":""}