{"version":3,"sources":["webpack://mlArrayXy/webpack/universalModuleDefinition","webpack://mlArrayXy/webpack/bootstrap","webpack://mlArrayXy/./packages/array-xy-closest-x/node_modules/binary-search/index.js","webpack://mlArrayXy/./packages/array-xy-closest-x/node_modules/num-sort/index.js","webpack://mlArrayXy/./packages/array-xy-max-y/node_modules/binary-search/index.js","webpack://mlArrayXy/./packages/array-xy-max-y/node_modules/num-sort/index.js","webpack://mlArrayXy/./src/index.js","webpack://mlArrayXy/./packages/array-xy-centroids-merge/src/index.js","webpack://mlArrayXy/./packages/array-xy-closest-x/src/index.js","webpack://mlArrayXy/./packages/array-xy-closest-x/node_modules/number-is-nan/index.js","webpack://mlArrayXy/./packages/array-xy-max-merge/src/index.js","webpack://mlArrayXy/./packages/array-xy-max-y/src/index.js","webpack://mlArrayXy/./packages/array-xy-max-y/node_modules/number-is-nan/index.js","webpack://mlArrayXy/./packages/array-xy-sort-x/src/index.js","webpack://mlArrayXy/./packages/array-xy-unique-x/src/index.js","webpack://mlArrayXy/./packages/array-xy-weighted-merge/src/index.js","webpack://mlArrayXy/./packages/array-xy-equally-spaced/node_modules/ml-array-sequential-fill/src/index.js","webpack://mlArrayXy/./packages/array-xy-equally-spaced/src/integral.js","webpack://mlArrayXy/./packages/array-xy-equally-spaced/src/equallySpacedSmooth.js","webpack://mlArrayXy/./packages/array-xy-equally-spaced/src/equallySpacedSlot.js","webpack://mlArrayXy/./packages/array-xy-equally-spaced/src/getZones.js","webpack://mlArrayXy/./packages/array-xy-equally-spaced/src/index.js","webpack://mlArrayXy/./packages/array-xy-filter-x/src/getZones.js","webpack://mlArrayXy/./packages/array-xy-filter-x/src/index.js"],"names":["module","exports","haystack","needle","comparator","low","high","mid","cmp","undefined","length","RangeError","numberIsNan","require","assertNum","x","TypeError","asc","a","b","desc","default","mergeByCentroids","originalPoints","centroids","options","window","mergedPoints","slice","y","Array","fill","originalIndex","mergedIndex","diff","Math","abs","closestX","points","target","reverse","index","binarySearch","Number","isNaN","maxMerge","groupWidth","merged","maxAbscissa","size","push","maxY","from","to","value","calculateIndex","currentMax","MIN_VALUE","currentIndex","i","Error","sortX","sortFunc","grouped","map","val","sort","response","uniqueX","current","counter","weightedMerge","weightedAbscissa","sequentialFill","input","isArray","step","floor","integral","x0","x1","slope","intercept","equallySpacedSmooth","numberOfPoints","xLength","halfStep","output","initialOriginalStep","lastOriginalStep","min","max","previousX","previousY","nextX","nextY","currentValue","sumAtMin","sumAtMax","j","getSlope","y0","y1","main","add","equallySpacedSlot","lastStep","start","MAX_VALUE","frontOutsideSpectra","backOutsideSpectra","currentPoints","getZones","exclusions","filter","exclusion","JSON","parse","stringify","forEach","toRemove","reduce","previous","total","unitsPerPoint","zones","currentFrom","totalPoints","currentNbPoints","round","equallySpaced","arrayXY","variant","xResult","yResult","zone","zoneResult","processZone","filterX","currentZoneIndex","newX","newY","position"],"mappings":"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","file":"ml-array-xy.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[\"mlArrayXy\"] = factory();\n\telse\n\t\troot[\"mlArrayXy\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","module.exports = function(haystack, needle, comparator, low, high) {\n  var mid, cmp;\n\n  if(low === undefined)\n    low = 0;\n\n  else {\n    low = low|0;\n    if(low < 0 || low >= haystack.length)\n      throw new RangeError(\"invalid lower bound\");\n  }\n\n  if(high === undefined)\n    high = haystack.length - 1;\n\n  else {\n    high = high|0;\n    if(high < low || high >= haystack.length)\n      throw new RangeError(\"invalid upper bound\");\n  }\n\n  while(low <= high) {\n    /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n     * to double (which gives the wrong results). */\n    mid = low + (high - low >> 1);\n    cmp = +comparator(haystack[mid], needle, mid, haystack);\n\n    /* Too low. */\n    if(cmp < 0.0)\n      low  = mid + 1;\n\n    /* Too high. */\n    else if(cmp > 0.0)\n      high = mid - 1;\n\n    /* Key found. */\n    else\n      return mid;\n  }\n\n  /* Key not found. */\n  return ~low;\n}\n","'use strict';\nvar numberIsNan = require('number-is-nan');\n\nfunction assertNum(x) {\n\tif (typeof x !== 'number' || numberIsNan(x)) {\n\t\tthrow new TypeError('Expected a number');\n\t}\n}\n\nexports.asc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn a - b;\n};\n\nexports.desc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn b - a;\n};\n","module.exports = function(haystack, needle, comparator, low, high) {\n  var mid, cmp;\n\n  if(low === undefined)\n    low = 0;\n\n  else {\n    low = low|0;\n    if(low < 0 || low >= haystack.length)\n      throw new RangeError(\"invalid lower bound\");\n  }\n\n  if(high === undefined)\n    high = haystack.length - 1;\n\n  else {\n    high = high|0;\n    if(high < low || high >= haystack.length)\n      throw new RangeError(\"invalid upper bound\");\n  }\n\n  while(low <= high) {\n    /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n     * to double (which gives the wrong results). */\n    mid = low + (high - low >> 1);\n    cmp = +comparator(haystack[mid], needle, mid, haystack);\n\n    /* Too low. */\n    if(cmp < 0.0)\n      low  = mid + 1;\n\n    /* Too high. */\n    else if(cmp > 0.0)\n      high = mid - 1;\n\n    /* Key found. */\n    else\n      return mid;\n  }\n\n  /* Key not found. */\n  return ~low;\n}\n","'use strict';\nvar numberIsNan = require('number-is-nan');\n\nfunction assertNum(x) {\n\tif (typeof x !== 'number' || numberIsNan(x)) {\n\t\tthrow new TypeError('Expected a number');\n\t}\n}\n\nexports.asc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn a - b;\n};\n\nexports.desc = function (a, b) {\n\tassertNum(a);\n\tassertNum(b);\n\treturn b - a;\n};\n","export {\n  default as centroidsMerge\n} from '../packages/array-xy-centroids-merge/src';\nexport { default as closestX } from '../packages/array-xy-closest-x/src';\nexport { default as maxMerge } from '../packages/array-xy-max-merge/src';\nexport { default as maxY } from '../packages/array-xy-max-y/src';\nexport { default as sortX } from '../packages/array-xy-sort-x/src';\nexport { default as uniqueX } from '../packages/array-xy-unique-x/src';\nexport { default as filterX } from '../packages/array-xy-filter-x/src';\nexport {\n  default as equallySpaced\n} from '../packages/array-xy-equally-spaced/src';\nexport {\n  default as weightedMerge\n} from '../packages/array-xy-weighted-merge/src';\n","/**\n * Merge abscissa values if the ordinate value is in a list of centroids\n * @param {object} originalPoints\n * @param {Array<number>} originalPoints.x\n * @param {Array<number>} originalPoints.y\n * @param {Array<number>} centroids\n * @param {object} [options]\n * @param {number} [options.window = 0.01] - has to be a positive number\n * @return {{x: Array<number>, y: Array<number>}}\n */\nexport default function mergeByCentroids(\n  originalPoints,\n  centroids,\n  options = {}\n) {\n  const { window = 0.01 } = options;\n\n  var mergedPoints = {\n    x: centroids.slice(),\n    y: new Array(centroids.length).fill(0)\n  };\n\n  var originalIndex = 0;\n  var mergedIndex = 0;\n  while (\n    originalIndex < originalPoints.x.length &&\n    mergedIndex < centroids.length\n  ) {\n    var diff = originalPoints.x[originalIndex] - centroids[mergedIndex];\n    if (Math.abs(diff) < window) {\n      mergedPoints.y[mergedIndex] += originalPoints.y[originalIndex++];\n    } else if (diff < 0) {\n      originalIndex++;\n    } else {\n      mergedIndex++;\n    }\n  }\n\n  return mergedPoints;\n}\n","import binarySearch from 'binary-search';\nimport { asc, desc } from 'num-sort';\n\n/**\n *\n * @param {object} points\n * @param {Array<number>} originalPoints.x\n * @param {Array<number>} originalPoints.y\n * @param {*} options\n * @return {{x: Array<number>, y: Array<number>}}\n */\nexport default function closestX(points, options) {\n  const { x, y } = points;\n  const { target = x[0], reverse = false } = options;\n\n  let index;\n  if (reverse) {\n    index = binarySearch(x, target, desc);\n  } else {\n    index = binarySearch(x, target, asc);\n  }\n\n  if (index >= 0) {\n    return {\n      x: x[index],\n      y: y[index]\n    };\n  } else {\n    index = ~index;\n    if (\n      (index !== 0 && Math.abs(x[index] - target) > 0.5) ||\n      index === x.length\n    ) {\n      return {\n        x: x[index - 1],\n        y: y[index - 1]\n      };\n    } else {\n      return {\n        x: x[index],\n        y: y[index]\n      };\n    }\n  }\n}\n","'use strict';\nmodule.exports = Number.isNaN || function (x) {\n\treturn x !== x;\n};\n","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param {object} points\n * @param {Array<number>} points.x - sorted abscissas values\n * @param {Array<number>} points.y - ordinates values\n * @param {object} [options]\n * @param {number} [options.groupWidth = 0.001] - window for abscissas to merge\n * @return {{x: Array<number>, y: Array<number>}}\n */\nexport default function maxMerge(points, options = {}) {\n  const { x, y } = points;\n  const { groupWidth = 0.001 } = options;\n\n  var merged = { x: [], y: [] };\n  var maxAbscissa = { x: [], y: [] };\n  var size = 0;\n  var index = 0;\n\n  while (index < x.length) {\n    if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n      maxAbscissa.x.push(x[index]);\n      maxAbscissa.y.push(y[index]);\n      merged.x.push(x[index]);\n      merged.y.push(y[index]);\n      index++;\n      size++;\n    } else {\n      if (y[index] > maxAbscissa.y[size - 1]) {\n        maxAbscissa.x[size - 1] = x[index];\n        maxAbscissa.y[size - 1] = y[index];\n      }\n      merged.x[size - 1] = x[index];\n      merged.y[size - 1] += y[index];\n      index++;\n    }\n  }\n\n  merged.x = maxAbscissa.x.slice();\n\n  return merged;\n}\n","import binarySearch from 'binary-search';\nimport { asc, desc } from 'num-sort';\n\n/**\n * @param {object} points\n * @param {Array<number>} points.x - sorted abscissas values\n * @param {Array<number>} points.y - ordinates values\n * @param {object} [options]\n * @param {object} [options.from = {index: 0}]\n * @param {object} [options.to = {index: x.length-1}]\n * @param {boolean} [options.reverse = false]\n * @return {{index: number, value: number}}\n */\nexport default function maxY(points, options = {}) {\n  const { x, y } = points;\n  let {\n    from = { index: 0 },\n    to = { index: x.length },\n    reverse = false\n  } = options;\n\n  if (from.value !== undefined && from.index === undefined) {\n    from.index = calculateIndex(from.value, x, reverse);\n  }\n\n  if (to.value !== undefined && to.index === undefined) {\n    to.index = calculateIndex(to.value, x, reverse);\n  }\n\n  var currentMax = Number.MIN_VALUE;\n  var currentIndex;\n  for (var i = from.index; i < to.index; i++) {\n    if (currentMax < y[i]) {\n      currentMax = y[i];\n      currentIndex = i;\n    }\n  }\n\n  return {\n    index: currentIndex,\n    value: currentMax\n  };\n}\n\n/**\n * @param {number} value\n * @param {Array<number>} x\n * @param {boolean} reverse\n * @return {number} index of the value in the array\n */\nfunction calculateIndex(value, x, reverse) {\n  let index;\n  if (reverse) {\n    index = binarySearch(x, value, desc);\n  } else {\n    index = binarySearch(x, value, asc);\n  }\n\n  if (index < 0) {\n    throw new Error(`the value ${value} doesn't belongs to the abscissa value`);\n  }\n\n  return index;\n}\n","'use strict';\nmodule.exports = Number.isNaN || function (x) {\n\treturn x !== x;\n};\n","export default function sortX(points, options = {}) {\n  const { x, y } = points;\n  const { reverse = false } = options;\n\n  var sortFunc;\n  if (!reverse) {\n    sortFunc = (a, b) => a.x - b.x;\n  } else {\n    sortFunc = (a, b) => b.x - a.x;\n  }\n\n  var grouped = x\n    .map((val, index) => ({\n      x: val,\n      y: y[index]\n    }))\n    .sort(sortFunc);\n\n  var response = { x: x.slice(), y: y.slice() };\n  for (var i = 0; i < x.length; i++) {\n    response.x[i] = grouped[i].x;\n    response.y[i] = grouped[i].y;\n  }\n\n  return response;\n}\n","\n/**\n * In place modification of the 2 arrays to make X unique and sum the Y if X has the same value\n * @param {object} [points={}] : Object of points contains property x (an array) and y (an array)\n * @return points\n */\n\nexport default function uniqueX(points = {}) {\n  const { x, y } = points;\n  if (x.length < 2) return;\n  if (x.length !== y.length) {\n    throw new Error('The X and Y arrays mush have the same length');\n  }\n\n  let current = x[0];\n  let counter = 0;\n\n  for (let i = 1; i < x.length; i++) {\n    if (current !== x[i]) {\n      counter++;\n      current = x[i];\n      x[counter] = x[i];\n      if (i !== counter) {\n        y[counter] = 0;\n      }\n    }\n    if (i !== counter) {\n      y[counter] += y[i];\n    }\n  }\n\n  x.length = counter + 1;\n  y.length = counter + 1;\n}\n","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n * @param {object} points\n * @param {Array<number>} points.x - sorted abscissas values\n * @param {Array<number>} points.y - ordinates values\n * @param {object} [options]\n * @param {number} [options.groupWidth = 0.001] - window for abscissas to merge\n * @return {{x: Array<number>, y: Array<number>}}\n */\nexport default function weightedMerge(points, options = {}) {\n  const { x, y } = points;\n  const { groupWidth = 0.001 } = options;\n\n  var merged = { x: [], y: [] };\n  var weightedAbscissa = { x: [], y: [] };\n  var size = 0;\n  var index = 0;\n\n  while (index < x.length) {\n    if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n      weightedAbscissa.x.push(x[index] * y[index]);\n      weightedAbscissa.y.push(y[index]);\n      merged.x.push(x[index]);\n      merged.y.push(y[index]);\n      index++;\n      size++;\n    } else {\n      weightedAbscissa.x[size - 1] += x[index] * y[index];\n      weightedAbscissa.y[size - 1] += y[index];\n      merged.x[size - 1] = x[index];\n      merged.y[size - 1] += y[index];\n      index++;\n    }\n  }\n\n  for (var i = 0; i < merged.x.length; i++) {\n    merged.x[i] = weightedAbscissa.x[i] / weightedAbscissa.y[i];\n  }\n\n  return merged;\n}\n","/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\nexport default function sequentialFill(input = [], options = {}) {\n  if (typeof input === 'object' && !Array.isArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!Array.isArray(input)) {\n    throw new Error('input must be an array');\n  }\n\n  let {\n    from = 0,\n    to = 10,\n    size = input.length,\n    step\n  } = options;\n\n  if (size && step) {\n    size = 0;\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  input.length = 0;\n  for (var i = 0; i < size; i++) {\n    input.push(from);\n    from += step;\n  }\n\n  return input;\n}\n","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param {number} x0\n * @param {number} x1\n * @param {number} slope\n * @param {number} intercept\n * @return {number} integral value.\n */\nexport default function integral(x0, x1, slope, intercept) {\n  return (\n    0.5 * slope * x1 * x1 +\n    intercept * x1 -\n    (0.5 * slope * x0 * x0 + intercept * x0)\n  );\n}\n","import integral from './integral';\n\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(x, y, from, to, numberOfPoints) {\n  var xLength = x.length;\n\n  var step = (to - from) / (numberOfPoints - 1);\n  var halfStep = step / 2;\n\n  var output = new Array(numberOfPoints);\n\n  var initialOriginalStep = x[1] - x[0];\n  var lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n\n  // Init main variables\n  var min = from - halfStep;\n  var max = from + halfStep;\n\n  var previousX = Number.MIN_VALUE;\n  var previousY = 0;\n  var nextX = x[0] - initialOriginalStep;\n  var nextY = 0;\n\n  var currentValue = 0;\n  var slope = 0;\n  var intercept = 0;\n  var sumAtMin = 0;\n  var sumAtMax = 0;\n\n  var i = 0; // index of input\n  var j = 0; // index of output\n\n  function getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n  }\n\n  main: while (true) {\n    if (previousX <= min && min <= nextX) {\n      add = integral(0, min - previousX, slope, previousY);\n      sumAtMin = currentValue + add;\n    }\n\n    while (nextX - max >= 0) {\n      // no overlap with original point, just consume current value\n      var add = integral(0, max - previousX, slope, previousY);\n      sumAtMax = currentValue + add;\n\n      output[j++] = (sumAtMax - sumAtMin) / step;\n\n      if (j === numberOfPoints) {\n        break main;\n      }\n\n      min = max;\n      max += step;\n      sumAtMin = sumAtMax;\n    }\n\n    currentValue += integral(previousX, nextX, slope, intercept);\n\n    previousX = nextX;\n    previousY = nextY;\n\n    if (i < xLength) {\n      nextX = x[i];\n      nextY = y[i];\n      i++;\n    } else if (i === xLength) {\n      nextX += lastOriginalStep;\n      nextY = 0;\n    }\n\n    slope = getSlope(previousX, previousY, nextX, nextY);\n    intercept = -slope * previousX + previousY;\n  }\n\n  return output;\n}\n","/**\n * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(x, y, from, to, numberOfPoints) {\n  var xLength = x.length;\n\n  var step = (to - from) / (numberOfPoints - 1);\n  var halfStep = step / 2;\n  var lastStep = x[x.length - 1] - x[x.length - 2];\n\n  var start = from - halfStep;\n  var output = new Array(numberOfPoints);\n\n  // Init main variables\n  var min = start;\n  var max = start + step;\n\n  var previousX = -Number.MAX_VALUE;\n  var previousY = 0;\n  var nextX = x[0];\n  var nextY = y[0];\n  var frontOutsideSpectra = 0;\n  var backOutsideSpectra = true;\n\n  var currentValue = 0;\n\n  // for slot algorithm\n  var currentPoints = 0;\n\n  var i = 1; // index of input\n  var j = 0; // index of output\n\n  main: while (true) {\n    if (previousX >= nextX) throw new Error('x must be an increasing serie');\n    while (previousX - max > 0) {\n      // no overlap with original point, just consume current value\n      if (backOutsideSpectra) {\n        currentPoints++;\n        backOutsideSpectra = false;\n      }\n\n      output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n      j++;\n\n      if (j === numberOfPoints) {\n        break main;\n      }\n\n      min = max;\n      max += step;\n      currentValue = 0;\n      currentPoints = 0;\n    }\n\n    if (previousX > min) {\n      currentValue += previousY;\n      currentPoints++;\n    }\n\n    if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n      currentPoints--;\n    }\n\n    previousX = nextX;\n    previousY = nextY;\n\n    if (i < xLength) {\n      nextX = x[i];\n      nextY = y[i];\n      i++;\n    } else {\n      nextX += lastStep;\n      nextY = 0;\n      frontOutsideSpectra++;\n    }\n  }\n\n  return output;\n}\n","export default function getZones(from, to, numberOfPoints, exclusions = []) {\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  // in exclusions from and to have to be defined\n  exclusions = exclusions.filter(\n    (exclusion) => exclusion.from !== undefined && exclusion.to !== undefined\n  );\n\n  exclusions = JSON.parse(JSON.stringify(exclusions));\n  // we ensure that from before to\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from > exclusion.to) {\n      [exclusion.to, exclusion.from] = [exclusion.from, exclusion.to];\n    }\n  });\n\n  exclusions.sort((a, b) => a.from - b.from);\n\n  // we will rework the exclusions in order to remove overlap and outside range (from / to)\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from < from) exclusion.from = from;\n    if (exclusion.to > to) exclusion.to = to;\n  });\n  for (let i = 0; i < exclusions.length - 1; i++) {\n    if (exclusions[i].to > exclusions[i + 1].from) {\n      exclusions[i].to = exclusions[i + 1].from;\n    }\n  }\n  exclusions = exclusions.filter((exclusion) => exclusion.from < exclusion.to);\n\n  if (!exclusions || exclusions.length === 0) {\n    return [{ from, to, numberOfPoints }];\n  }\n\n  // need to deal with overlapping exclusions and out of bound exclusions\n\n  let toRemove = exclusions.reduce(\n    (previous, exclusion) => (previous += exclusion.to - exclusion.from),\n    0\n  );\n  let total = to - from;\n  let unitsPerPoint = (total - toRemove) / numberOfPoints;\n  let zones = [];\n  let currentFrom = from;\n  let totalPoints = 0;\n  for (let exclusion of exclusions) {\n    let currentNbPoints = Math.round(\n      (exclusion.from - currentFrom) / unitsPerPoint\n    );\n    totalPoints += currentNbPoints;\n    if (currentNbPoints > 0) {\n      zones.push({\n        from: currentFrom,\n        to: exclusion.from,\n        numberOfPoints: currentNbPoints\n      });\n    }\n\n    currentFrom = exclusion.to;\n  }\n  if (numberOfPoints - totalPoints > 0) {\n    zones.push({\n      from: currentFrom,\n      to: to,\n      numberOfPoints: numberOfPoints - totalPoints\n    });\n  }\n\n  return zones;\n}\n","import sequentialFill from 'ml-array-sequential-fill';\n\nimport equallySpacedSmooth from './equallySpacedSmooth';\nimport equallySpacedSlot from './equallySpacedSlot';\nimport getZones from './getZones';\n\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in the new array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in the new array.\n *\n * @param {object} [arrayXY={}] - object containing 2 properties x and y (both an array)\n * @param {object} [options={}]\n * @param {number} [options.from=x[0]]\n * @param {number} [options.to=x[x.length-1]]\n * @param {string} [options.variant='smooth']\n * @param {number} [options.numberOfPoints=100]\n * @param {Array} [options.exclusions=[]] array of from / to that should be skipped for the generation of the points\n * @return {object<x: Array, y:Array>} new object with x / y array with the equally spaced data.\n */\n\nexport default function equallySpaced(arrayXY = {}, options = {}) {\n  let { x, y } = arrayXY;\n  let xLength = x.length;\n  let reverse = false;\n  if (x.length > 1 && x[0] > x[1]) {\n    x = x.slice().reverse();\n    y = y.slice().reverse();\n    reverse = true;\n  }\n\n  let {\n    from = x[0],\n    to = x[xLength - 1],\n    variant = 'smooth',\n    numberOfPoints = 100,\n    exclusions = []\n  } = options;\n\n  if (xLength !== y.length) {\n    throw new RangeError(\"the x and y vector doesn't have the same size.\");\n  }\n\n  if (typeof from !== 'number' || isNaN(from)) {\n    throw new RangeError(\"'from' option must be a number\");\n  }\n\n  if (typeof to !== 'number' || isNaN(to)) {\n    throw new RangeError(\"'to' option must be a number\");\n  }\n\n  if (typeof numberOfPoints !== 'number' || isNaN(numberOfPoints)) {\n    throw new RangeError(\"'numberOfPoints' option must be a number\");\n  }\n\n  let zones = getZones(from, to, numberOfPoints, exclusions);\n\n  let xResult = [];\n  let yResult = [];\n  for (let zone of zones) {\n    let zoneResult = processZone(\n      x,\n      y,\n      zone.from,\n      zone.to,\n      zone.numberOfPoints,\n      variant,\n      reverse\n    );\n    xResult.push(...zoneResult.x);\n    yResult.push(...zoneResult.y);\n  }\n\n  if (reverse) {\n    if (from < to) {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    } else {\n      return { x: xResult, y: yResult };\n    }\n  } else {\n    if (from < to) {\n      return { x: xResult, y: yResult };\n    } else {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    }\n  }\n}\n\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n  if (numberOfPoints < 1) {\n    throw new RangeError('the number of points must be at least 1');\n  }\n\n  var output =\n    variant === 'slot'\n      ? equallySpacedSlot(x, y, from, to, numberOfPoints)\n      : equallySpacedSmooth(x, y, from, to, numberOfPoints);\n\n  return {\n    x: sequentialFill({\n      from,\n      to,\n      size: numberOfPoints\n    }),\n    y: output\n  };\n}\n","export default function getZones(from, to, exclusions = []) {\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  // in exclusions from and to have to be defined\n  exclusions = exclusions.filter(\n    (exclusion) => exclusion.from !== undefined && exclusion.to !== undefined\n  );\n\n  exclusions = JSON.parse(JSON.stringify(exclusions));\n  // we ensure that from before to\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from > exclusion.to) {\n      [exclusion.to, exclusion.from] = [exclusion.from, exclusion.to];\n    }\n  });\n\n  exclusions.sort((a, b) => a.from - b.from);\n\n  // we will rework the exclusions in order to remove overlap and outside range (from / to)\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from < from) exclusion.from = from;\n    if (exclusion.to > to) exclusion.to = to;\n  });\n  for (let i = 0; i < exclusions.length - 1; i++) {\n    if (exclusions[i].to > exclusions[i + 1].from) {\n      exclusions[i].to = exclusions[i + 1].from;\n    }\n  }\n  exclusions = exclusions.filter((exclusion) => exclusion.from < exclusion.to);\n\n  if (!exclusions || exclusions.length === 0) {\n    return [{ from, to }];\n  }\n\n  let zones = [];\n  let currentFrom = from;\n  for (let exclusion of exclusions) {\n    if (currentFrom < exclusion.from) {\n      zones.push({\n        from: currentFrom,\n        to: exclusion.from\n      });\n    }\n\n    currentFrom = exclusion.to;\n  }\n  if (currentFrom < to) {\n    zones.push({\n      from: currentFrom,\n      to: to\n    });\n  }\n\n  return zones;\n}\n","import getZones from './getZones';\n\n/**\n * Filter an array x/y based on various criteria\n * x points are expected to be sorted\n *\n * @param {object} points\n * @param {object} [options={}]\n * @param {array} [options.from]\n * @param {array} [options.to]\n * @param {array} [options.exclusions=[]]\n * @return {{x: Array<number>, y: Array<number>}}\n */\n\nexport default function filterX(points, options = {}) {\n  const { x, y } = points;\n  const { from = x[0], to = x[x.length - 1], exclusions = [] } = options;\n\n  let zones = getZones(from, to, exclusions);\n\n\n  let currentZoneIndex = 0;\n  let newX = [];\n  let newY = [];\n  let position = 0;\n  while (position < x.length) {\n    if (\n      x[position] <= zones[currentZoneIndex].to &&\n      x[position] >= zones[currentZoneIndex].from\n    ) {\n      newX.push(x[position]);\n      newY.push(y[position]);\n    } else {\n      if (x[position] > zones[currentZoneIndex].to) {\n        currentZoneIndex++;\n        if (!zones[currentZoneIndex]) break;\n      }\n    }\n    position++;\n  }\n\n  return {\n    x: newX,\n    y: newY\n  };\n}\n"],"sourceRoot":""}