{"version":3,"sources":["jsdelivr-header.js","/npm/@sigma/node-image@3.0.0/dist/sigma-node-image.esm.js"],"names":[],"mappings":"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","file":"/npm/@sigma/node-image@3.0.0/dist/sigma-node-image.esm.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@sigma/node-image@3.0.0/dist/sigma-node-image.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { NodeProgram } from 'sigma/rendering';\nimport { floatColor } from 'sigma/utils';\nimport { EventEmitter } from 'events';\n\nfunction _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\n\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\n\nfunction _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\n\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n  }\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(r) {\n  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\n\nfunction _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\n\nfunction _toPrimitive(t, r) {\n  if (\"object\" != typeof t || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\n\nfunction _toPropertyKey(t) {\n  var i = _toPrimitive(t, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\n\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\n\nfunction _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\n\nfunction _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function () {\n    return !!t;\n  })();\n}\n\nfunction _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\n\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == typeof e || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return _assertThisInitialized(t);\n}\n\nfunction _callSuper(t, o, e) {\n  return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\n\nfunction _superPropBase(t, o) {\n  for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t)););\n  return t;\n}\n\nfunction _get() {\n  return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n    var p = _superPropBase(e, t);\n    if (p) {\n      var n = Object.getOwnPropertyDescriptor(p, t);\n      return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n    }\n  }, _get.apply(null, arguments);\n}\n\nfunction _superPropGet(t, o, e, r) {\n  var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e);\n  return 2 & r && \"function\" == typeof p ? function (t) {\n    return p.apply(e, t);\n  } : p;\n}\n\nfunction _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\n\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && _setPrototypeOf(t, e);\n}\n\nfunction _defineProperty(e, r, t) {\n  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\n\nfunction _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\n\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = _objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var s = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\n\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      _defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\n\nfunction getFragmentShader(_ref) {\n  var texturesCount = _ref.texturesCount;\n  // language=GLSL\n  var SHADER = /*glsl*/\"\\nprecision highp float;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_diffVector;\\nvarying float v_radius;\\nvarying vec4 v_texture;\\nvarying float v_textureIndex;\\n\\nuniform sampler2D u_atlas[\".concat(texturesCount, \"];\\nuniform float u_correctionRatio;\\nuniform float u_cameraAngle;\\nuniform float u_percentagePadding;\\nuniform bool u_colorizeImages;\\nuniform bool u_keepWithinCircle;\\n\\nconst vec4 transparent = vec4(0.0, 0.0, 0.0, 0.0);\\n\\nconst float radius = 0.5;\\n\\nvoid main(void) {\\n  float border = 2.0 * u_correctionRatio;\\n  float dist = length(v_diffVector);\\n  vec4 color = gl_FragColor;\\n\\n  float c = cos(-u_cameraAngle);\\n  float s = sin(-u_cameraAngle);\\n  vec2 diffVector = mat2(c, s, -s, c) * (v_diffVector);\\n\\n  // No antialiasing for picking mode:\\n  #ifdef PICKING_MODE\\n  border = 0.0;\\n  color = v_color;\\n\\n  #else\\n  // First case: No image to display\\n  if (v_texture.w <= 0.0) {\\n    if (!u_colorizeImages) {\\n      color = v_color;\\n    }\\n  }\\n\\n  // Second case: Image loaded into the texture\\n  else {\\n    float paddingRatio = 1.0 + 2.0 * u_percentagePadding;\\n    float coef = u_keepWithinCircle ? 1.0 : \").concat(Math.SQRT2, \";\\n    vec2 coordinateInTexture = diffVector * vec2(paddingRatio, -paddingRatio) / v_radius / 2.0 * coef + vec2(0.5, 0.5);\\n    int index = int(v_textureIndex + 0.5); // +0.5 avoid rounding errors\\n\\n    bool noTextureFound = false;\\n    vec4 texel;\\n\\n    \").concat(_toConsumableArray(new Array(texturesCount)).map(function (_, i) {\n    return \"if (index == \".concat(i, \") texel = texture2D(u_atlas[\").concat(i, \"], (v_texture.xy + coordinateInTexture * v_texture.zw), -1.0);\");\n  }).join(\"\\n    else \") + \"else {\\n      texel = texture2D(u_atlas[0], (v_texture.xy + coordinateInTexture * v_texture.zw), -1.0);\\n      noTextureFound = true;\\n    }\", \"\\n\\n    if (noTextureFound) {\\n      color = v_color;\\n    } else {\\n      // Colorize all visible image pixels:\\n      if (u_colorizeImages) {\\n        color = mix(gl_FragColor, v_color, texel.a);\\n      }\\n\\n      // Colorize background pixels, keep image pixel colors:\\n      else {\\n        color = vec4(mix(v_color, texel, texel.a).rgb, max(texel.a, v_color.a));\\n      }\\n\\n      // Erase pixels \\\"in the padding\\\":\\n      if (abs(diffVector.x) > v_radius / paddingRatio || abs(diffVector.y) > v_radius / paddingRatio) {\\n        color = u_colorizeImages ? gl_FragColor : v_color;\\n      }\\n    }\\n  }\\n  #endif\\n\\n  // Crop in a circle when u_keepWithinCircle is truthy:\\n  if (u_keepWithinCircle) {\\n    if (dist < v_radius - border) {\\n      gl_FragColor = color;\\n    } else if (dist < v_radius) {\\n      gl_FragColor = mix(transparent, color, (v_radius - dist) / border);\\n    }\\n  }\\n\\n  // Crop in a square else:\\n  else {\\n    float squareHalfSize = v_radius * \").concat(Math.SQRT1_2 * Math.cos(Math.PI / 12), \";\\n    if (abs(diffVector.x) > squareHalfSize || abs(diffVector.y) > squareHalfSize) {\\n      gl_FragColor = transparent;\\n    } else {\\n      gl_FragColor = color;\\n    }\\n  }\\n}\\n\");\n  return SHADER;\n}\n\n// language=GLSL\nvar VERTEX_SHADER_SOURCE = /*glsl*/\"\\nattribute vec4 a_id;\\nattribute vec4 a_color;\\nattribute vec2 a_position;\\nattribute float a_size;\\nattribute float a_angle;\\nattribute vec4 a_texture;\\nattribute float a_textureIndex;\\n\\nuniform mat3 u_matrix;\\nuniform float u_sizeRatio;\\nuniform float u_correctionRatio;\\n\\nvarying vec4 v_color;\\nvarying vec2 v_diffVector;\\nvarying float v_radius;\\nvarying vec4 v_texture;\\nvarying float v_textureIndex;\\n\\nconst float bias = 255.0 / 254.0;\\nconst float marginRatio = 1.05;\\n\\nvoid main() {\\n  float size = a_size * u_correctionRatio / u_sizeRatio * 4.0;\\n  vec2 diffVector = size * vec2(cos(a_angle), sin(a_angle));\\n  vec2 position = a_position + diffVector * marginRatio;\\n  gl_Position = vec4(\\n    (u_matrix * vec3(position, 1)).xy,\\n    0,\\n    1\\n  );\\n\\n  v_diffVector = diffVector;\\n  v_radius = size / 2.0 / marginRatio;\\n\\n  #ifdef PICKING_MODE\\n  // For picking mode, we use the ID as the color:\\n  v_color = a_id;\\n  #else\\n  // For normal mode, we use the color:\\n  v_color = a_color;\\n\\n  // Pass the texture coordinates:\\n  v_textureIndex = a_textureIndex;\\n  v_texture = a_texture;\\n  #endif\\n\\n  v_color.a *= bias;\\n}\\n\";\nvar VERTEX_SHADER_SOURCE$1 = VERTEX_SHADER_SOURCE;\n\nfunction _regeneratorRuntime() {\n  _regeneratorRuntime = function () {\n    return e;\n  };\n  var t,\n    e = {},\n    r = Object.prototype,\n    n = r.hasOwnProperty,\n    o = Object.defineProperty || function (t, e, r) {\n      t[e] = r.value;\n    },\n    i = \"function\" == typeof Symbol ? Symbol : {},\n    a = i.iterator || \"@@iterator\",\n    c = i.asyncIterator || \"@@asyncIterator\",\n    u = i.toStringTag || \"@@toStringTag\";\n  function define(t, e, r) {\n    return Object.defineProperty(t, e, {\n      value: r,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), t[e];\n  }\n  try {\n    define({}, \"\");\n  } catch (t) {\n    define = function (t, e, r) {\n      return t[e] = r;\n    };\n  }\n  function wrap(t, e, r, n) {\n    var i = e && e.prototype instanceof Generator ? e : Generator,\n      a = Object.create(i.prototype),\n      c = new Context(n || []);\n    return o(a, \"_invoke\", {\n      value: makeInvokeMethod(t, r, c)\n    }), a;\n  }\n  function tryCatch(t, e, r) {\n    try {\n      return {\n        type: \"normal\",\n        arg: t.call(e, r)\n      };\n    } catch (t) {\n      return {\n        type: \"throw\",\n        arg: t\n      };\n    }\n  }\n  e.wrap = wrap;\n  var h = \"suspendedStart\",\n    l = \"suspendedYield\",\n    f = \"executing\",\n    s = \"completed\",\n    y = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var p = {};\n  define(p, a, function () {\n    return this;\n  });\n  var d = Object.getPrototypeOf,\n    v = d && d(d(values([])));\n  v && v !== r && n.call(v, a) && (p = v);\n  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n  function defineIteratorMethods(t) {\n    [\"next\", \"throw\", \"return\"].forEach(function (e) {\n      define(t, e, function (t) {\n        return this._invoke(e, t);\n      });\n    });\n  }\n  function AsyncIterator(t, e) {\n    function invoke(r, o, i, a) {\n      var c = tryCatch(t[r], t, o);\n      if (\"throw\" !== c.type) {\n        var u = c.arg,\n          h = u.value;\n        return h && \"object\" == typeof h && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n          invoke(\"next\", t, i, a);\n        }, function (t) {\n          invoke(\"throw\", t, i, a);\n        }) : e.resolve(h).then(function (t) {\n          u.value = t, i(u);\n        }, function (t) {\n          return invoke(\"throw\", t, i, a);\n        });\n      }\n      a(c.arg);\n    }\n    var r;\n    o(this, \"_invoke\", {\n      value: function (t, n) {\n        function callInvokeWithMethodAndArg() {\n          return new e(function (e, r) {\n            invoke(t, n, e, r);\n          });\n        }\n        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(e, r, n) {\n    var o = h;\n    return function (i, a) {\n      if (o === f) throw Error(\"Generator is already running\");\n      if (o === s) {\n        if (\"throw\" === i) throw a;\n        return {\n          value: t,\n          done: !0\n        };\n      }\n      for (n.method = i, n.arg = a;;) {\n        var c = n.delegate;\n        if (c) {\n          var u = maybeInvokeDelegate(c, n);\n          if (u) {\n            if (u === y) continue;\n            return u;\n          }\n        }\n        if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n          if (o === h) throw o = s, n.arg;\n          n.dispatchException(n.arg);\n        } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n        o = f;\n        var p = tryCatch(e, r, n);\n        if (\"normal\" === p.type) {\n          if (o = n.done ? s : l, p.arg === y) continue;\n          return {\n            value: p.arg,\n            done: n.done\n          };\n        }\n        \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(e, r) {\n    var n = r.method,\n      o = e.iterator[n];\n    if (o === t) return r.delegate = null, \"throw\" === n && e.iterator.return && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n    var i = tryCatch(o, e.iterator, r.arg);\n    if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n    var a = i.arg;\n    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n  }\n  function pushTryEntry(t) {\n    var e = {\n      tryLoc: t[0]\n    };\n    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n  }\n  function resetTryEntry(t) {\n    var e = t.completion || {};\n    e.type = \"normal\", delete e.arg, t.completion = e;\n  }\n  function Context(t) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], t.forEach(pushTryEntry, this), this.reset(!0);\n  }\n  function values(e) {\n    if (e || \"\" === e) {\n      var r = e[a];\n      if (r) return r.call(e);\n      if (\"function\" == typeof e.next) return e;\n      if (!isNaN(e.length)) {\n        var o = -1,\n          i = function next() {\n            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n            return next.value = t, next.done = !0, next;\n          };\n        return i.next = i;\n      }\n    }\n    throw new TypeError(typeof e + \" is not iterable\");\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), o(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n    var e = \"function\" == typeof t && t.constructor;\n    return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n  }, e.mark = function (t) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n  }, e.awrap = function (t) {\n    return {\n      __await: t\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n    return this;\n  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n    void 0 === i && (i = Promise);\n    var a = new AsyncIterator(wrap(t, r, n, o), i);\n    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n      return t.done ? t.value : a.next();\n    });\n  }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n    return this;\n  }), define(g, \"toString\", function () {\n    return \"[object Generator]\";\n  }), e.keys = function (t) {\n    var e = Object(t),\n      r = [];\n    for (var n in e) r.push(n);\n    return r.reverse(), function next() {\n      for (; r.length;) {\n        var t = r.pop();\n        if (t in e) return next.value = t, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, e.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function (e) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n    },\n    stop: function () {\n      this.done = !0;\n      var t = this.tryEntries[0].completion;\n      if (\"throw\" === t.type) throw t.arg;\n      return this.rval;\n    },\n    dispatchException: function (e) {\n      if (this.done) throw e;\n      var r = this;\n      function handle(n, o) {\n        return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n      }\n      for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n        var i = this.tryEntries[o],\n          a = i.completion;\n        if (\"root\" === i.tryLoc) return handle(\"end\");\n        if (i.tryLoc <= this.prev) {\n          var c = n.call(i, \"catchLoc\"),\n            u = n.call(i, \"finallyLoc\");\n          if (c && u) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          } else if (c) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n          } else {\n            if (!u) throw Error(\"try statement without catch or finally\");\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function (t, e) {\n      for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n        var o = this.tryEntries[r];\n        if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n          var i = o;\n          break;\n        }\n      }\n      i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n      var a = i ? i.completion : {};\n      return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n    },\n    complete: function (t, e) {\n      if (\"throw\" === t.type) throw t.arg;\n      return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n    },\n    finish: function (t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n      }\n    },\n    catch: function (t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.tryLoc === t) {\n          var n = r.completion;\n          if (\"throw\" === n.type) {\n            var o = n.arg;\n            resetTryEntry(r);\n          }\n          return o;\n        }\n      }\n      throw Error(\"illegal catch attempt\");\n    },\n    delegateYield: function (e, r, n) {\n      return this.delegate = {\n        iterator: values(e),\n        resultName: r,\n        nextLoc: n\n      }, \"next\" === this.method && (this.arg = t), y;\n    }\n  }, e;\n}\n\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\n\n/**\n * Useful types:\n * *************\n */\n\nvar DEFAULT_TEXTURE_MANAGER_OPTIONS = {\n  size: {\n    mode: \"max\",\n    value: 512\n  },\n  objectFit: \"cover\",\n  correctCentering: false,\n  maxTextureSize: 4096,\n  debounceTimeout: 500,\n  crossOrigin: \"anonymous\"\n};\n\n// This margin helps to avoid images collisions in the texture:\nvar MARGIN_IN_TEXTURE = 1;\n\n/**\n * Helpers:\n * ********\n */\n/**\n * This helper loads an image at a given URL, and returns an HTMLImageElement\n * with it displayed once it's properly loaded, within a promise.\n */\nfunction loadRasterImage(imageSource) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n    crossOrigin = _ref.crossOrigin;\n  return new Promise(function (resolve, reject) {\n    var image = new Image();\n    image.addEventListener(\"load\", function () {\n      resolve(image);\n    }, {\n      once: true\n    });\n    image.addEventListener(\"error\", function (e) {\n      reject(e.error);\n    }, {\n      once: true\n    });\n\n    // Load image:\n    if (crossOrigin) {\n      image.setAttribute(\"crossOrigin\", crossOrigin);\n    }\n    image.src = imageSource;\n  });\n}\n\n/**\n * This helper loads an SVG image at a given URL, adjusts its size to a given\n * size, and returns an HTMLImageElement with it displayed once it's properly\n * loaded, within a promise.\n */\nfunction loadSVGImage(_x) {\n  return _loadSVGImage.apply(this, arguments);\n}\n\n/**\n * This helper loads an image using the proper function.\n */\nfunction _loadSVGImage() {\n  _loadSVGImage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(imageSource) {\n    var _ref2,\n      size,\n      crossOrigin,\n      resp,\n      svgString,\n      svg,\n      root,\n      originalWidth,\n      originalHeight,\n      correctedSvgString,\n      blob,\n      url,\n      res,\n      _args2 = arguments;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _ref2 = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {}, size = _ref2.size, crossOrigin = _ref2.crossOrigin;\n          if (!(crossOrigin === \"use-credentials\")) {\n            _context2.next = 7;\n            break;\n          }\n          _context2.next = 4;\n          return fetch(imageSource, {\n            credentials: \"include\"\n          });\n        case 4:\n          resp = _context2.sent;\n          _context2.next = 10;\n          break;\n        case 7:\n          _context2.next = 9;\n          return fetch(imageSource);\n        case 9:\n          resp = _context2.sent;\n        case 10:\n          _context2.next = 12;\n          return resp.text();\n        case 12:\n          svgString = _context2.sent;\n          svg = new DOMParser().parseFromString(svgString, \"image/svg+xml\");\n          root = svg.documentElement;\n          originalWidth = root.getAttribute(\"width\");\n          originalHeight = root.getAttribute(\"height\");\n          if (!(!originalWidth || !originalHeight)) {\n            _context2.next = 19;\n            break;\n          }\n          throw new Error(\"loadSVGImage: cannot use `size` if target SVG has no definite dimensions.\");\n        case 19:\n          if (typeof size === \"number\") {\n            root.setAttribute(\"width\", \"\" + size);\n            root.setAttribute(\"height\", \"\" + size);\n          }\n\n          // NOTE: since Google Material last changes to their icon viewBox, this\n          // code is no longer necessary (hopefully it does not break something else...)\n          // root.setAttribute(\"viewBox\", `0 0 ${originalWidth} ${originalHeight}`);\n          correctedSvgString = new XMLSerializer().serializeToString(svg);\n          blob = new Blob([correctedSvgString], {\n            type: \"image/svg+xml\"\n          });\n          url = URL.createObjectURL(blob);\n          res = loadRasterImage(url);\n          res[\"finally\"](function () {\n            return URL.revokeObjectURL(url);\n          });\n          return _context2.abrupt(\"return\", res);\n        case 26:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n  return _loadSVGImage.apply(this, arguments);\n}\nfunction loadImage(_x2) {\n  return _loadImage.apply(this, arguments);\n}\n\n/**\n * This helper computes exact coordinates to draw an image onto a texture.\n */\nfunction _loadImage() {\n  _loadImage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(imageSource) {\n    var _imageSource$split$0$;\n    var _ref3,\n      size,\n      crossOrigin,\n      isSVG,\n      image,\n      _args3 = arguments;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _ref3 = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {}, size = _ref3.size, crossOrigin = _ref3.crossOrigin;\n          isSVG = ((_imageSource$split$0$ = imageSource.split(/[#?]/)[0].split(\".\").pop()) === null || _imageSource$split$0$ === void 0 ? void 0 : _imageSource$split$0$.trim().toLowerCase()) === \"svg\";\n          if (!(isSVG && size)) {\n            _context3.next = 16;\n            break;\n          }\n          _context3.prev = 3;\n          _context3.next = 6;\n          return loadSVGImage(imageSource, {\n            size: size,\n            crossOrigin: crossOrigin\n          });\n        case 6:\n          image = _context3.sent;\n          _context3.next = 14;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](3);\n          _context3.next = 13;\n          return loadRasterImage(imageSource, {\n            crossOrigin: crossOrigin\n          });\n        case 13:\n          image = _context3.sent;\n        case 14:\n          _context3.next = 19;\n          break;\n        case 16:\n          _context3.next = 18;\n          return loadRasterImage(imageSource, {\n            crossOrigin: crossOrigin\n          });\n        case 18:\n          image = _context3.sent;\n        case 19:\n          return _context3.abrupt(\"return\", image);\n        case 20:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[3, 9]]);\n  }));\n  return _loadImage.apply(this, arguments);\n}\nfunction refineImage(image, corrector, _ref4) {\n  var objectFit = _ref4.objectFit,\n    size = _ref4.size,\n    correctCentering = _ref4.correctCentering;\n  var sourceSize = objectFit === \"contain\" ? Math.max(image.width, image.height) : Math.min(image.width, image.height);\n  var destinationSize = size.mode === \"auto\" ? sourceSize : size.mode === \"force\" ? size.value : Math.min(size.value, sourceSize);\n  var sourceX = (image.width - sourceSize) / 2;\n  var sourceY = (image.height - sourceSize) / 2;\n  if (correctCentering) {\n    var correction = corrector.getCorrectionOffset(image, sourceSize);\n    sourceX = correction.x;\n    sourceY = correction.y;\n  }\n  return {\n    sourceX: sourceX,\n    sourceY: sourceY,\n    sourceSize: sourceSize,\n    destinationSize: destinationSize\n  };\n}\n\n/**\n * This helper takes an array of ready-to-draw images, and draws as much as possible in a single texture.\n * It then returns the atlas of the draw images, as well as the texture itself.\n */\nfunction drawTexture(images, ctx, cursor) {\n  var _ctx$canvas = ctx.canvas,\n    width = _ctx$canvas.width,\n    height = _ctx$canvas.height;\n\n  // Refine images coordinates:\n  var refinedImagesArray = [];\n  var x = cursor.x,\n    y = cursor.y,\n    rowHeight = cursor.rowHeight,\n    maxRowWidth = cursor.maxRowWidth;\n  var atlas = {};\n  for (var i = 0, l = images.length; i < l; i++) {\n    var _images$i = images[i],\n      key = _images$i.key,\n      image = _images$i.image,\n      sourceSize = _images$i.sourceSize,\n      sourceX = _images$i.sourceX,\n      sourceY = _images$i.sourceY,\n      destinationSize = _images$i.destinationSize;\n    var destinationSizeWithMargin = destinationSize + MARGIN_IN_TEXTURE;\n\n    // If the image does not fit, just skip it:\n    if (y + destinationSizeWithMargin > height || x + destinationSizeWithMargin > width && y + destinationSizeWithMargin + rowHeight > height) {\n      continue;\n    }\n    if (x + destinationSizeWithMargin > width) {\n      maxRowWidth = Math.max(maxRowWidth, x);\n      x = 0;\n      y += rowHeight;\n      rowHeight = destinationSizeWithMargin;\n    }\n    refinedImagesArray.push({\n      key: key,\n      image: image,\n      sourceX: sourceX,\n      sourceY: sourceY,\n      sourceSize: sourceSize,\n      destinationX: x,\n      destinationY: y,\n      destinationSize: destinationSize\n    });\n    atlas[key] = {\n      x: x,\n      y: y,\n      size: destinationSize\n    };\n    x += destinationSizeWithMargin;\n    rowHeight = Math.max(rowHeight, destinationSizeWithMargin);\n  }\n\n  // Crop texture to final best dimensions:\n  maxRowWidth = Math.max(maxRowWidth, x);\n  var effectiveWidth = maxRowWidth;\n  var effectiveHeight = y + rowHeight;\n\n  // Fill texture:\n  for (var _i = 0, _l = refinedImagesArray.length; _i < _l; _i++) {\n    var _refinedImagesArray$_ = refinedImagesArray[_i],\n      _image = _refinedImagesArray$_.image,\n      _sourceSize = _refinedImagesArray$_.sourceSize,\n      _sourceX = _refinedImagesArray$_.sourceX,\n      _sourceY = _refinedImagesArray$_.sourceY,\n      _destinationSize = _refinedImagesArray$_.destinationSize,\n      destinationX = _refinedImagesArray$_.destinationX,\n      destinationY = _refinedImagesArray$_.destinationY;\n    ctx.drawImage(_image, _sourceX, _sourceY, _sourceSize, _sourceSize, destinationX, destinationY, _destinationSize, _destinationSize);\n  }\n  return {\n    atlas: atlas,\n    texture: ctx.getImageData(0, 0, effectiveWidth, effectiveHeight),\n    cursor: {\n      x: x,\n      y: y,\n      rowHeight: rowHeight,\n      maxRowWidth: maxRowWidth\n    }\n  };\n}\n\n/**\n * This helper takes a collection of image states and a context, draw all the\n * images in the context, and returns an atlas to get where each image is drawn\n * on the texture.\n */\nfunction drawTextures(_ref5, images, ctx) {\n  var prevAtlas = _ref5.atlas,\n    prevTextures = _ref5.textures,\n    prevCursor = _ref5.cursor;\n  var res = {\n    atlas: _objectSpread2({}, prevAtlas),\n    textures: _toConsumableArray(prevTextures.slice(0, -1)),\n    cursor: _objectSpread2({}, prevCursor)\n  };\n\n  // Extract images that are ready to draw, but not drawn yet:\n  var imagesToDraw = [];\n  for (var key in images) {\n    var _prevAtlas$key;\n    // Skip images that are not ready yet:\n    var imageState = images[key];\n    if (imageState.status !== \"ready\") continue;\n\n    // Skip all images that already exist in a texture:\n    var textureIndex = (_prevAtlas$key = prevAtlas[key]) === null || _prevAtlas$key === void 0 ? void 0 : _prevAtlas$key.textureIndex;\n    if (typeof textureIndex === \"number\") continue;\n\n    // Keep all the rest:\n    imagesToDraw.push(_objectSpread2({\n      key: key\n    }, imageState));\n  }\n\n  // Draw remaining images on new textures until there are none remaining:\n  var _loop = function _loop() {\n    var _drawTexture = drawTexture(imagesToDraw, ctx, res.cursor),\n      atlas = _drawTexture.atlas,\n      texture = _drawTexture.texture,\n      cursor = _drawTexture.cursor;\n    res.cursor = cursor;\n    var remainingImages = [];\n    imagesToDraw.forEach(function (image) {\n      if (atlas[image.key]) {\n        res.atlas[image.key] = _objectSpread2(_objectSpread2({}, atlas[image.key]), {}, {\n          textureIndex: res.textures.length\n        });\n      } else {\n        remainingImages.push(image);\n      }\n    });\n    res.textures.push(texture);\n    imagesToDraw = remainingImages;\n    if (imagesToDraw.length) {\n      res.cursor = {\n        x: 0,\n        y: 0,\n        rowHeight: 0,\n        maxRowWidth: 0\n      };\n      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n    }\n  };\n  while (imagesToDraw.length) {\n    _loop();\n  }\n  return res;\n}\n\n/**\n * This class helps to \"correct\" the centering of an SVG pictogram by finding\n * the \"true\" visually correct center through the barycenter of the pictogram's\n * alpha layer in x and y dimension.\n */\nvar PictogramCenteringCorrector = /*#__PURE__*/function () {\n  function PictogramCenteringCorrector() {\n    _classCallCheck(this, PictogramCenteringCorrector);\n    this.canvas = document.createElement(\"canvas\");\n    this.context = this.canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    });\n  }\n  _createClass(PictogramCenteringCorrector, [{\n    key: \"getCorrectionOffset\",\n    value: function getCorrectionOffset(image, size) {\n      this.canvas.width = size;\n      this.canvas.height = size;\n      this.context.clearRect(0, 0, size, size);\n      this.context.drawImage(image, 0, 0, size, size);\n      var data = this.context.getImageData(0, 0, size, size).data;\n      var alpha = new Uint8ClampedArray(data.length / 4);\n      for (var i = 0; i < data.length; i++) {\n        alpha[i] = data[i * 4 + 3];\n      }\n      var sumX = 0;\n      var sumY = 0;\n      var total = 0;\n      for (var y = 0; y < size; y++) {\n        for (var x = 0; x < size; x++) {\n          var a = alpha[y * size + x];\n          total += a;\n          sumX += a * x;\n          sumY += a * y;\n        }\n      }\n      var barycenterX = sumX / total;\n      var barycenterY = sumY / total;\n      return {\n        x: barycenterX - size / 2,\n        y: barycenterY - size / 2\n      };\n    }\n  }]);\n  return PictogramCenteringCorrector;\n}();\nvar TextureManager = /*#__PURE__*/function (_EventEmitter) {\n  _inherits(TextureManager, _EventEmitter);\n  function TextureManager() {\n    var _this;\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _classCallCheck(this, TextureManager);\n    _this = _callSuper(this, TextureManager);\n    _defineProperty(_assertThisInitialized(_this), \"canvas\", document.createElement(\"canvas\"));\n    _defineProperty(_assertThisInitialized(_this), \"ctx\", _this.canvas.getContext(\"2d\", {\n      willReadFrequently: true\n    }));\n    _defineProperty(_assertThisInitialized(_this), \"corrector\", new PictogramCenteringCorrector());\n    _defineProperty(_assertThisInitialized(_this), \"imageStates\", {});\n    _defineProperty(_assertThisInitialized(_this), \"textures\", [_this.ctx.getImageData(0, 0, 1, 1)]);\n    _defineProperty(_assertThisInitialized(_this), \"lastTextureCursor\", {\n      x: 0,\n      y: 0,\n      rowHeight: 0,\n      maxRowWidth: 0\n    });\n    _defineProperty(_assertThisInitialized(_this), \"atlas\", {});\n    _this.options = _objectSpread2(_objectSpread2({}, DEFAULT_TEXTURE_MANAGER_OPTIONS), options);\n    _this.canvas.width = _this.options.maxTextureSize;\n    _this.canvas.height = _this.options.maxTextureSize;\n    return _this;\n  }\n  _createClass(TextureManager, [{\n    key: \"scheduleGenerateTexture\",\n    value: function scheduleGenerateTexture() {\n      var _this2 = this;\n      if (typeof this.frameId === \"number\") return;\n      if (typeof this.options.debounceTimeout === \"number\") {\n        this.frameId = window.setTimeout(function () {\n          _this2.generateTextures();\n          _this2.frameId = undefined;\n        }, this.options.debounceTimeout);\n      } else {\n        this.generateTextures();\n      }\n    }\n  }, {\n    key: \"generateTextures\",\n    value: function generateTextures() {\n      var _drawTextures = drawTextures({\n          atlas: this.atlas,\n          textures: this.textures,\n          cursor: this.lastTextureCursor\n        }, this.imageStates, this.ctx),\n        atlas = _drawTextures.atlas,\n        textures = _drawTextures.textures,\n        cursor = _drawTextures.cursor;\n      this.atlas = atlas;\n      this.textures = textures;\n      this.lastTextureCursor = cursor;\n      this.emit(TextureManager.NEW_TEXTURE_EVENT, {\n        atlas: atlas,\n        textures: textures\n      });\n    }\n\n    // PUBLIC API:\n  }, {\n    key: \"registerImage\",\n    value: function () {\n      var _registerImage = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(source) {\n        var size, image;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              if (!this.imageStates[source]) {\n                _context.next = 2;\n                break;\n              }\n              return _context.abrupt(\"return\");\n            case 2:\n              this.imageStates[source] = {\n                status: \"loading\"\n              };\n              _context.prev = 3;\n              size = this.options.size;\n              _context.next = 7;\n              return loadImage(source, {\n                size: size.mode === \"force\" ? size.value : undefined,\n                crossOrigin: this.options.crossOrigin || undefined\n              });\n            case 7:\n              image = _context.sent;\n              this.imageStates[source] = _objectSpread2({\n                status: \"ready\",\n                image: image\n              }, refineImage(image, this.corrector, this.options));\n              this.scheduleGenerateTexture();\n              _context.next = 15;\n              break;\n            case 12:\n              _context.prev = 12;\n              _context.t0 = _context[\"catch\"](3);\n              this.imageStates[source] = {\n                status: \"error\"\n              };\n            case 15:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this, [[3, 12]]);\n      }));\n      function registerImage(_x3) {\n        return _registerImage.apply(this, arguments);\n      }\n      return registerImage;\n    }()\n  }, {\n    key: \"getAtlas\",\n    value: function getAtlas() {\n      return this.atlas;\n    }\n  }, {\n    key: \"getTextures\",\n    value: function getTextures() {\n      return this.textures;\n    }\n  }]);\n  return TextureManager;\n}(EventEmitter);\n_defineProperty(TextureManager, \"NEW_TEXTURE_EVENT\", \"newTexture\");\n\nvar _excluded = [\"drawHover\", \"drawLabel\", \"drawingMode\", \"keepWithinCircle\", \"padding\", \"colorAttribute\", \"imageAttribute\"];\nvar _WebGLRenderingContex = WebGLRenderingContext,\n  UNSIGNED_BYTE = _WebGLRenderingContex.UNSIGNED_BYTE,\n  FLOAT = _WebGLRenderingContex.FLOAT;\nvar DEFAULT_CREATE_NODE_IMAGE_OPTIONS = _objectSpread2(_objectSpread2({}, DEFAULT_TEXTURE_MANAGER_OPTIONS), {}, {\n  drawingMode: \"background\",\n  keepWithinCircle: true,\n  drawLabel: undefined,\n  drawHover: undefined,\n  padding: 0,\n  colorAttribute: \"color\",\n  imageAttribute: \"image\"\n});\nvar UNIFORMS = [\"u_sizeRatio\", \"u_correctionRatio\", \"u_cameraAngle\", \"u_percentagePadding\", \"u_matrix\", \"u_colorizeImages\", \"u_keepWithinCircle\", \"u_atlas\"];\n\n/**\n * To share the texture between the program instances of the graph and the\n * hovered nodes (to prevent some flickering, mostly), this program must be\n * \"built\" for each sigma instance:\n */\nfunction createNodeImageProgram(options) {\n  var _NodeImageProgram;\n  // Compute effective MAX_TEXTURE_SIZE from the current WebGL context:\n  var gl = document.createElement(\"canvas\").getContext(\"webgl\");\n  var defaultMaxTextureSize = Math.min(gl.getParameter(gl.MAX_TEXTURE_SIZE), DEFAULT_TEXTURE_MANAGER_OPTIONS.maxTextureSize);\n  gl.canvas.remove();\n  var _maxTextureSize = _objectSpread2(_objectSpread2(_objectSpread2({}, DEFAULT_CREATE_NODE_IMAGE_OPTIONS), {\n      maxTextureSize: defaultMaxTextureSize\n    }), options || {}),\n    drawHover = _maxTextureSize.drawHover,\n    drawLabel = _maxTextureSize.drawLabel,\n    drawingMode = _maxTextureSize.drawingMode,\n    keepWithinCircle = _maxTextureSize.keepWithinCircle,\n    padding = _maxTextureSize.padding,\n    colorAttribute = _maxTextureSize.colorAttribute,\n    imageAttribute = _maxTextureSize.imageAttribute,\n    textureManagerOptions = _objectWithoutProperties(_maxTextureSize, _excluded);\n\n  /**\n   * This texture manager is shared between all instances of this exact class,\n   * returned by this call to createNodeProgramImage. This means that\n   * remounting the sigma instance will not reload the images and regenerate\n   * the texture.\n   */\n  var textureManager = new TextureManager(textureManagerOptions);\n  return _NodeImageProgram = /*#__PURE__*/function (_NodeProgram) {\n    _inherits(NodeImageProgram, _NodeProgram);\n    function NodeImageProgram(gl, pickingBuffer, renderer) {\n      var _this;\n      _classCallCheck(this, NodeImageProgram);\n      _this = _callSuper(this, NodeImageProgram, [gl, pickingBuffer, renderer]);\n      _defineProperty(_assertThisInitialized(_this), \"drawLabel\", drawLabel);\n      _defineProperty(_assertThisInitialized(_this), \"drawHover\", drawHover);\n      _defineProperty(_assertThisInitialized(_this), \"textureManagerCallback\", null);\n      _this.textureManagerCallback = function (_ref) {\n        var atlas = _ref.atlas,\n          textures = _ref.textures;\n        var shouldUpgradeShaders = textures.length !== _this.textures.length;\n        _this.atlas = atlas;\n        _this.textureImages = textures;\n        if (shouldUpgradeShaders) _this.upgradeShaders();\n        _this.bindTextures();\n        if (_this.latestRenderParams) _this.render(_this.latestRenderParams);\n        if (_this.renderer && _this.renderer.refresh) _this.renderer.refresh();\n      };\n      textureManager.on(TextureManager.NEW_TEXTURE_EVENT, _this.textureManagerCallback);\n      _this.atlas = textureManager.getAtlas();\n      _this.textureImages = textureManager.getTextures();\n      _this.textures = _this.textureImages.map(function () {\n        return gl.createTexture();\n      });\n      _this.bindTextures();\n      return _this;\n    }\n    _createClass(NodeImageProgram, [{\n      key: \"getDefinition\",\n      value: function getDefinition() {\n        return {\n          VERTICES: 3,\n          VERTEX_SHADER_SOURCE: VERTEX_SHADER_SOURCE$1,\n          FRAGMENT_SHADER_SOURCE: getFragmentShader({\n            texturesCount: textureManager.getTextures().length\n          }),\n          METHOD: WebGLRenderingContext.TRIANGLES,\n          UNIFORMS: UNIFORMS,\n          ATTRIBUTES: [{\n            name: \"a_position\",\n            size: 2,\n            type: FLOAT\n          }, {\n            name: \"a_size\",\n            size: 1,\n            type: FLOAT\n          }, {\n            name: \"a_color\",\n            size: 4,\n            type: UNSIGNED_BYTE,\n            normalized: true\n          }, {\n            name: \"a_id\",\n            size: 4,\n            type: UNSIGNED_BYTE,\n            normalized: true\n          }, {\n            name: \"a_texture\",\n            size: 4,\n            type: FLOAT\n          }, {\n            name: \"a_textureIndex\",\n            size: 1,\n            type: FLOAT\n          }],\n          CONSTANT_ATTRIBUTES: [{\n            name: \"a_angle\",\n            size: 1,\n            type: FLOAT\n          }],\n          CONSTANT_DATA: [[NodeImageProgram.ANGLE_1], [NodeImageProgram.ANGLE_2], [NodeImageProgram.ANGLE_3]]\n        };\n      }\n    }, {\n      key: \"upgradeShaders\",\n      value: function upgradeShaders() {\n        var def = this.getDefinition();\n        var _this$normalProgram = this.normalProgram,\n          program = _this$normalProgram.program,\n          buffer = _this$normalProgram.buffer,\n          vertexShader = _this$normalProgram.vertexShader,\n          fragmentShader = _this$normalProgram.fragmentShader,\n          gl = _this$normalProgram.gl;\n        gl.deleteProgram(program);\n        gl.deleteBuffer(buffer);\n        gl.deleteShader(vertexShader);\n        gl.deleteShader(fragmentShader);\n        this.normalProgram = this.getProgramInfo(\"normal\", gl, def.VERTEX_SHADER_SOURCE, def.FRAGMENT_SHADER_SOURCE, null);\n      }\n    }, {\n      key: \"kill\",\n      value: function kill() {\n        var _this$normalProgram2;\n        var gl = (_this$normalProgram2 = this.normalProgram) === null || _this$normalProgram2 === void 0 ? void 0 : _this$normalProgram2.gl;\n        if (gl) {\n          for (var i = 0; i < this.textures.length; i++) {\n            gl.deleteTexture(this.textures[i]);\n          }\n        }\n        if (this.textureManagerCallback) {\n          textureManager.off(TextureManager.NEW_TEXTURE_EVENT, this.textureManagerCallback);\n          this.textureManagerCallback = null;\n        }\n        _superPropGet(NodeImageProgram, \"kill\", this, 3)([]);\n      }\n    }, {\n      key: \"bindTextures\",\n      value: function bindTextures() {\n        var gl = this.normalProgram.gl;\n        for (var i = 0; i < this.textureImages.length; i++) {\n          if (i >= this.textures.length) {\n            var texture = gl.createTexture();\n            if (texture) this.textures.push(texture);\n          }\n          gl.activeTexture(gl.TEXTURE0 + i);\n          gl.bindTexture(gl.TEXTURE_2D, this.textures[i]);\n          gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this.textureImages[i]);\n          gl.generateMipmap(gl.TEXTURE_2D);\n        }\n      }\n    }, {\n      key: \"renderProgram\",\n      value: function renderProgram(params, programInfo) {\n        if (!programInfo.isPicking) {\n          // Rebind texture (since it's been just unbound by picking):\n          var _gl = programInfo.gl;\n          for (var i = 0; i < this.textureImages.length; i++) {\n            _gl.activeTexture(_gl.TEXTURE0 + i);\n            _gl.bindTexture(_gl.TEXTURE_2D, this.textures[i]);\n          }\n        }\n        _superPropGet(NodeImageProgram, \"renderProgram\", this, 3)([params, programInfo]);\n      }\n    }, {\n      key: \"processVisibleItem\",\n      value: function processVisibleItem(nodeIndex, startIndex, data) {\n        var array = this.array;\n        var color = floatColor(data[colorAttribute]);\n        var imageSource = data[imageAttribute];\n        var imagePosition = imageSource ? this.atlas[imageSource] : undefined;\n        if (typeof imageSource === \"string\" && !imagePosition) textureManager.registerImage(imageSource);\n        array[startIndex++] = data.x;\n        array[startIndex++] = data.y;\n        array[startIndex++] = data.size;\n        array[startIndex++] = color;\n        array[startIndex++] = nodeIndex;\n\n        // Reference texture:\n        if (imagePosition && typeof imagePosition.textureIndex === \"number\") {\n          var _this$textureImages$i = this.textureImages[imagePosition.textureIndex],\n            width = _this$textureImages$i.width,\n            height = _this$textureImages$i.height;\n          array[startIndex++] = imagePosition.x / width;\n          array[startIndex++] = imagePosition.y / height;\n          array[startIndex++] = imagePosition.size / width;\n          array[startIndex++] = imagePosition.size / height;\n          array[startIndex++] = imagePosition.textureIndex;\n        } else {\n          array[startIndex++] = 0;\n          array[startIndex++] = 0;\n          array[startIndex++] = 0;\n          array[startIndex++] = 0;\n          array[startIndex++] = 0;\n        }\n      }\n    }, {\n      key: \"setUniforms\",\n      value: function setUniforms(params, _ref2) {\n        var gl = _ref2.gl,\n          uniformLocations = _ref2.uniformLocations;\n        var u_sizeRatio = uniformLocations.u_sizeRatio,\n          u_correctionRatio = uniformLocations.u_correctionRatio,\n          u_matrix = uniformLocations.u_matrix,\n          u_atlas = uniformLocations.u_atlas,\n          u_colorizeImages = uniformLocations.u_colorizeImages,\n          u_keepWithinCircle = uniformLocations.u_keepWithinCircle,\n          u_cameraAngle = uniformLocations.u_cameraAngle,\n          u_percentagePadding = uniformLocations.u_percentagePadding;\n        this.latestRenderParams = params;\n        gl.uniform1f(u_correctionRatio, params.correctionRatio);\n        gl.uniform1f(u_sizeRatio, keepWithinCircle ? params.sizeRatio : params.sizeRatio / Math.SQRT2);\n        gl.uniform1f(u_cameraAngle, params.cameraAngle);\n        gl.uniform1f(u_percentagePadding, padding);\n        gl.uniformMatrix3fv(u_matrix, false, params.matrix);\n        gl.uniform1iv(u_atlas, _toConsumableArray(new Array(this.textureImages.length)).map(function (_, i) {\n          return i;\n        }));\n        gl.uniform1i(u_colorizeImages, drawingMode === \"color\" ? 1 : 0);\n        gl.uniform1i(u_keepWithinCircle, keepWithinCircle ? 1 : 0);\n      }\n    }]);\n    return NodeImageProgram;\n  }(NodeProgram), _defineProperty(_NodeImageProgram, \"ANGLE_1\", 0), _defineProperty(_NodeImageProgram, \"ANGLE_2\", 2 * Math.PI / 3), _defineProperty(_NodeImageProgram, \"ANGLE_3\", 4 * Math.PI / 3), _defineProperty(_NodeImageProgram, \"textureManager\", textureManager), _NodeImageProgram;\n}\n\nvar NodeImageProgram = createNodeImageProgram();\nvar NodePictogramProgram = createNodeImageProgram({\n  keepWithinCircle: false,\n  size: {\n    mode: \"force\",\n    value: 256\n  },\n  drawingMode: \"color\",\n  correctCentering: true\n});\n\nexport { NodeImageProgram, NodePictogramProgram, createNodeImageProgram };\n"]}