function createBlob(options) {
let points = [];
let slice = (Math.PI * 2) / options.numPoints;
let startAngle = 0;
for (let i = 0; i < options.subkey.length; i++) {
let angle = startAngle + i * slice;
let rnd = Number("0x"+options.subkey.substring(i+0,i+1));
let point = {
x: options.centerX + Math.cos(angle) * (options.radius + rnd),
y: options.centerY + Math.sin(angle) * (options.radius + rnd)
};
points.push(point);
}
let size = points.length;
let path = "M" + points[0].x + " " + points[0].y + " C";
for (let i = 0; i < size; i++) {
let p0 = points[(i - 1 + size) % size];
let p1 = points[i];
let p2 = points[(i + 1) % size];
let p3 = points[(i + 2) % size];
let x1 = p1.x + (p2.x - p0.x) / 6;
let y1 = p1.y + (p2.y - p0.y) / 6;
let x2 = p2.x - (p3.x - p1.x) / 6;
let y2 = p2.y - (p3.y - p1.y) / 6;
path += " " + x1 + " " + y1 + " " + x2 + " " + y2 + " " + p2.x + " " + p2.y;
}
return path + "z";
}
export var generateSvgAvatar = ( function () {
return function (publicKey, seed, raw) {
let pubKey = publicKey || Math.floor(Math.random()*65535*65535).toString(16) + Math.floor(Math.random()*65535*65535).toString(16) + Math.floor(Math.random()*65535*65535).toString(16) + Math.floor(Math.random()*65535*65535).toString(16) + Math.floor(Math.random()*65535*65535).toString(16) + Math.floor(Math.random()*65535*65535).toString(16) + Math.floor(Math.random()*65535*65535).toString(16) + Math.floor(Math.random()*65535*65535).toString(16);
//pubKey = "73f47d4929d7b2b6598ca4999d52567f9bb5aef3e353e0a66b468096db6e4e88"
let particles = [];
let gradients = ['#000000'];
let defs = [];
for (let a = 0; a<64; a = a + 8) {
let blob = createBlob({
numPoints: 8,
centerX: 256,
centerY: 256-a*4,
radius: 16,
subkey: pubKey.substring(a,a + 8)
});
let color = "#" + pubKey.substring(a+2,a+8);
let width = Number("0x"+pubKey.substring(a,a+1));
let opacity = Number("0x"+pubKey.substring(a+1,a+2))/8;
gradients.push(color);
defs.push(``);
particles.push(``);
}
let ph = "";
let off = 4 + Number("0x"+pubKey.substring(0,1));
let rotate = 0;
for (var i = 0; i < off; i++){
ph = ph + `,` + "\n";
rotate = rotate + 360/off;
}
var svg = [
'',
].join('');
return raw ? svg : 'data:image/svg+xml;base64,' + btoa(svg);
};
})();