UNPKG

@vechain/picasso

Version:

General purpose deterministic identity icon library in svg format, mostly for vechain thor addresses

61 lines 5.29 kB
"use strict"; // 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==