@vechain/picasso
Version:
General purpose deterministic identity icon library in svg format, mostly for vechain thor addresses
61 lines • 5.29 kB
JavaScript
;
// see https://github.com/danfinlay/jazzicon
Object.defineProperty(exports, "__esModule", { value: true });
exports.picasso = void 0;
const MersenneTwister = require('mersenne-twister');
const defaultColors = [
'rgb(244, 67, 54)',
'rgb(233, 30, 99)',
'rgb(156, 39, 176)',
'rgb(103, 58, 183)',
'rgb(63, 81, 181)',
'rgb(33, 150, 243)',
'rgb(3, 169, 244)',
'rgb(0, 188, 212)',
'rgb(0, 150, 136)',
'rgb(76, 175, 80)',
'rgb(139, 195, 74)',
'rgb(205, 220, 57)',
'rgb(255, 193, 7)',
'rgb(255, 152, 0)',
'rgb(255, 87, 34)'
];
const hash = function (str) {
if (str.length === 0) {
return 0;
}
let h = 0;
for (let i = 0; i < str.length; i++) {
h = h * 31 + str.charCodeAt(i);
h = h % (Math.pow(2, 32));
}
return h;
};
function picasso(content, colors) {
colors = colors || defaultColors;
const seed = hash(content);
const rand = new MersenneTwister(seed);
colors = colors.slice();
const genColor = () => {
const idx = Math.floor(colors.length * rand.random());
return colors.splice(idx, 1)[0];
};
const bgStr = `<rect fill="${genColor()}" width="100" height="100"/>`;
const style = `<style>.picasso circle{mix-blend-mode:soft-light;}</style>`;
let shapesStr = '';
const layers = 3;
const rs = [35, 40, 45, 50, 55, 60];
const cxs = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
const cys = [30, 40, 50, 60, 70];
for (let i = 0; i < layers; i++) {
const r = rs.splice(Math.floor(rs.length * rand.random()), 1)[0];
const cx = cxs.splice(Math.floor(cxs.length * rand.random()), 1)[0];
const cy = cys.splice(Math.floor(cys.length * rand.random()), 1)[0];
const fill = genColor();
shapesStr += `<circle r="${r}" cx="${cx}" cy="${cy}" fill="${fill}"/>`;
}
return `<svg version="1.1" xmlns="http://www.w3.org/2000/svg" class="picasso" width="100" height="100" viewBox="0 0 100 100">${style}${bgStr}${shapesStr}</svg>`;
}
exports.picasso = picasso;
exports.default = picasso;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUE0Qzs7O0FBRTVDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0FBRW5ELE1BQU0sYUFBYSxHQUFHO0lBQ2xCLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsa0JBQWtCO0NBQUMsQ0FBQTtBQUV2QixNQUFNLElBQUksR0FBRyxVQUFVLEdBQVc7SUFDOUIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNsQixPQUFPLENBQUMsQ0FBQTtLQUNYO0lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ1QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBQSxDQUFDLEVBQUksRUFBRSxDQUFBLENBQUMsQ0FBQTtLQUNwQjtJQUNELE9BQU8sQ0FBQyxDQUFBO0FBQ1osQ0FBQyxDQUFBO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLE9BQWUsRUFBRSxNQUFpQjtJQUN0RCxNQUFNLEdBQUcsTUFBTSxJQUFJLGFBQWEsQ0FBQTtJQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFdEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUV2QixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7UUFDbEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3RELE9BQU8sTUFBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDcEMsQ0FBQyxDQUFBO0lBRUQsTUFBTSxLQUFLLEdBQUcsZUFBZSxRQUFRLEVBQUUsOEJBQThCLENBQUE7SUFDckUsTUFBTSxLQUFLLEdBQUcsNERBQTRELENBQUE7SUFDMUUsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDeEQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM3QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuRSxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuRSxNQUFNLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQTtRQUV2QixTQUFTLElBQUksY0FBYyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxJQUFJLEtBQUssQ0FBQTtLQUN6RTtJQUNELE9BQU8sd0hBQXdILEtBQUssR0FBRyxLQUFLLEdBQUcsU0FBUyxRQUFRLENBQUE7QUFDcEssQ0FBQztBQTdCRCwwQkE2QkM7QUFFRCxrQkFBZSxPQUFPLENBQUEifQ==