var common = typeof window !== 'undefined' ? window : exports common.startTime = new Date('2015-08-05').getTime() var colors20 = [ [255, 106, 152], [255, 98, 188], [250, 98, 219], [231, 107, 243], [199, 124, 255], [149, 144, 255], [53, 162, 255], [0, 176, 246], [0, 186, 224], [0, 191, 196], [0, 193, 163], [0, 191, 125], [0, 187, 78], [57, 182, 0], [124, 174, 0], [163, 165, 0], [192, 155, 0], [216, 144, 0], [234, 131, 49], [248, 118, 109], [255, 106, 152] ] common.interpolate = function (a, b, n) { if (!a) a = [0, 0, 0, 0] if (!b) b = [0, 0, 0, 0] var m = 1 - n return [ a[0] * m + b[0] * n, a[1] * m + b[1] * n, a[2] * m + b[2] * n, a[3] * m + b[3] * n, ] } common.computeIdColors = function (ids, flat) { var idColors = {} var colorsUsed = {} var ensureUniqueness = !flat for (var i = 0; i < ids.length; i++) { var id = ids[i] var x = i / ids.length var colorI = Math.floor(x*20) var inbetweenAmount = x*20 - colorI var color = common.interpolate(colors20[colorI], colors20[colorI+1], inbetweenAmount) color[0] = Math.floor(color[0]) color[1] = Math.floor(color[1]) color[2] = Math.floor(color[2]) color[3] = 255 if (ensureUniqueness) { while (colorsUsed[color]) { color[3]-- } if (color[3] < 0) throw new Error('Too many ids for color') colorsUsed[color] = true } idColors[id] = color } return idColors }