{"version":3,"sources":["webpack://JsgraphEllipse/webpack/universalModuleDefinition","webpack://JsgraphEllipse/webpack/bootstrap","webpack://JsgraphEllipse/./node_modules/ml-array-sum/lib-es6/index.js","webpack://JsgraphEllipse/./node_modules/is-any-array/src/index.js","webpack://JsgraphEllipse/./node_modules/ml-array-mean/lib-es6/index.js","webpack://JsgraphEllipse/./lib/index.js","webpack://JsgraphEllipse/./node_modules/ml-array-variance/lib-es6/index.js","webpack://JsgraphEllipse/./node_modules/ml-array-xy-covariance/src/index.js"],"names":["sum","input","TypeError","length","sumValue","i","toString","Object","prototype","isAnyArray","object","call","endsWith","module","exports","mean","defineProperty","value","_interopDefault","ex","require","variance","covariance","getEllipse","points","options","nbSD","props","fillColor","fillOpacity","strokeWidth","strokeColor","strokeDasharray","xCenter","x","yCenter","y","xCentered","map","yCentered","centeredXVariance","centeredYVariance","centeredCovariance","theta","Math","atan","PI","c","cos","s","sin","xRotated","index","yRotated","a","sqrt","b","type","layer","properties","transforms","center","angle","angleType","position","rx","ry","values","arguments","undefined","_options$unbiased","unbiased","_options$mean","sqrError","meanX","meanY","error"],"mappings":"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","file":"jsgraph-sd-ellipse.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[\"JsgraphEllipse\"] = factory();\n\telse\n\t\troot[\"JsgraphEllipse\"] = 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 = 3);\n","import isArray from 'is-any-array';\n\n/**\n * Computes the mean of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction sum(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport default sum;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","import sum from 'ml-array-sum';\n\n/**\n * Computes the mean of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction mean(input) {\n  return sum(input) / input.length;\n}\n\nexport default mean;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar sum = _interopDefault(require('ml-array-sum'));\nvar variance = _interopDefault(require('ml-array-variance'));\nvar covariance = _interopDefault(require('ml-array-xy-covariance'));\n\n/**\n *\n * @param {object} [points]\n * @param {Array} [points.x]\n * @param {Array} [points.y]\n * @param {object} [options={}]\n * @param {number} [options.nbSD=2]\n * @param {number} [options.props={fillColor='#FF0',fillOpacity=0.5,strokeWidth=0.00001,strokeColor='#F00',strokeDasharray=[1]}]\n */\nfunction getEllipse(points, options = {}) {\n  const {\n    nbSD = 2,\n    props = {\n      fillColor: '#FF0',\n      fillOpacity: 0.5,\n      strokeWidth: 0.00001,\n      strokeColor: '#F00',\n      strokeDasharray: [1],\n    },\n  } = options;\n  let xCenter = sum(points.x) / points.x.length;\n  let yCenter = sum(points.y) / points.y.length;\n\n  let xCentered = points.x.map((x) => x - xCenter);\n  let yCentered = points.y.map((y) => y - yCenter);\n\n  let centeredXVariance = variance(xCentered);\n  let centeredYVariance = variance(yCentered);\n  let centeredCovariance = covariance({\n    x: xCentered,\n    y: yCentered,\n  });\n\n  let theta =\n    -0.5 *\n    Math.atan(\n      (2 * centeredCovariance) / (centeredYVariance - centeredXVariance),\n    );\n\n  if (centeredXVariance < centeredYVariance) {\n    theta += Math.PI / 2;\n  }\n\n  let c = Math.cos(theta);\n  let s = Math.sin(theta);\n\n  let xRotated = xCentered.map((x, index) => c * x + s * yCentered[index]);\n  let yRotated = xCentered.map((x, index) => s * x - c * yCentered[index]);\n\n  let a = Math.sqrt(variance(xRotated)) * nbSD;\n  let b = Math.sqrt(variance(yRotated)) * nbSD;\n\n  return {\n    type: 'ellipse',\n    layer: 0,\n    properties: {\n      ...props,\n      transforms: [\n        {\n          type: 'rotate',\n          center: {\n            x: xCenter,\n            y: yCenter,\n          },\n          angle: (theta / Math.PI) * 180,\n          angleType: 'angleData',\n        },\n      ],\n      position: [\n        {\n          x: xCenter,\n          y: yCenter,\n        },\n      ],\n      rx: a,\n      ry: b,\n    },\n  };\n}\n\nexports.getEllipse = getEllipse;\n","import arrayMean from 'ml-array-mean';\nimport isArray from 'is-any-array';\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {object} [options]\n * @param {boolean} [options.unbiased = true] - if true, divide by (n-1); if false, divide by n.\n * @param {number} [options.mean = arrayMean] - precalculated mean, if any.\n * @return {number}\n */\n\nfunction variance(values) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(values)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options$unbiased = options.unbiased,\n      unbiased = _options$unbiased === void 0 ? true : _options$unbiased,\n      _options$mean = options.mean,\n      mean = _options$mean === void 0 ? arrayMean(values) : _options$mean;\n  var sqrError = 0;\n\n  for (var i = 0; i < values.length; i++) {\n    var x = values[i] - mean;\n    sqrError += x * x;\n  }\n\n  if (unbiased) {\n    return sqrError / (values.length - 1);\n  } else {\n    return sqrError / values.length;\n  }\n}\n\nexport default variance;\n","import mean from 'ml-array-mean';\n\n/**\n *\n * @param {object} points\n * @param {Array<number>} points.x\n * @param {Array<number>} points.y\n * @param {object} [options]\n * @param {boolean} [options.unbiased = true] - if true, divide by (n-1); if false, divide by n.\n * @return {number}\n */\nexport default function covariance(points, options = {}) {\n  const { x, y } = points;\n  const { unbiased = true } = options;\n\n  const meanX = mean(x);\n  const meanY = mean(y);\n\n  var error = 0;\n\n  for (let i = 0; i < x.length; i++) {\n    error += (x[i] - meanX) * (y[i] - meanY);\n  }\n\n  if (unbiased) {\n    return error / (x.length - 1);\n  } else {\n    return error / x.length;\n  }\n}\n"],"sourceRoot":""}