UNPKG

blockies-react-svg

Version:

Blockies react SVG function component, blocky identicons, address-unique ethereum avatar, SVG base64 generation in browser or nodejs.

1 lines 5.07 kB
{"version":3,"file":"blockies-a884f18e.mjs","sources":["../../src/blockies.ts"],"sourcesContent":["// Forked from https://github.com/download13/blockies\n\n// The random number is a js implementation of the Xorshift PRNG\nconst randseed = new Array(4) // Xorshift: [x, y, z, w] 32 bit values\n\nfunction seedrand(seed: string) {\n\trandseed.fill(0)\n\n\tfor (let i = 0; i < seed.length; i++) {\n\t\trandseed[i % 4] = (randseed[i % 4] << 5) - randseed[i % 4] + seed.charCodeAt(i)\n\t}\n}\n\nfunction rand() {\n\t// based on Java's String.hashCode(), expanded to 4 32bit values\n\tconst t = randseed[0] ^ (randseed[0] << 11)\n\n\trandseed[0] = randseed[1]\n\trandseed[1] = randseed[2]\n\trandseed[2] = randseed[3]\n\trandseed[3] = randseed[3] ^ (randseed[3] >> 19) ^ t ^ (t >> 8)\n\n\treturn (randseed[3] >>> 0) / ((1 << 31) >>> 0)\n}\n\nfunction createColor() {\n\t//saturation is the whole color spectrum\n\tconst h = Math.floor(rand() * 360)\n\t//saturation goes from 40 to 100, it avoids greyish colors\n\tconst s = (rand() * 60 + 40).toFixed(1) + '%'\n\t//lightness can be anything from 0 to 100, but probabilities are a bell curve around 50%\n\tconst l = ((rand() + rand() + rand() + rand()) * 25).toFixed(1) + '%'\n\n\treturn 'hsl(' + h + ',' + s + ',' + l + ')'\n}\n\nexport function createImageData(size: number) {\n\tconst width = size // Only support square icons for now\n\tconst height = size\n\n\tconst dataWidth = Math.ceil(width / 2)\n\tconst mirrorWidth = width - dataWidth\n\n\tconst data: number[] = []\n\tfor (let y = 0; y < height; y++) {\n\t\tlet row: number[] = []\n\t\tfor (let x = 0; x < dataWidth; x++) {\n\t\t\t// this makes foreground and background color to have a 43% (1/2.3) probability\n\t\t\t// spot color has 13% chance\n\t\t\trow[x] = Math.floor(rand() * 2.3)\n\t\t}\n\t\tconst r = row.slice(0, mirrorWidth)\n\t\tr.reverse()\n\t\trow = row.concat(r)\n\n\t\tfor (let i = 0; i < row.length; i++) {\n\t\t\tdata.push(row[i])\n\t\t}\n\t}\n\n\treturn data\n}\n\nexport function buildOpts(opts: { seed: string; size?: number; scale?: number }) {\n\tseedrand(opts.seed)\n\n\tconst newOpts: BlockiesOptions = {\n\t\tseed: opts.seed,\n\t\tsize: opts.size || 8,\n\t\tscale: opts.scale || 10,\n\t\tcolor: createColor(),\n\t\tbgcolor: createColor(),\n\t\tspotcolor: createColor()\n\t}\n\n\treturn newOpts\n}\n\nexport interface BlockiesOptions {\n\tseed: string\n\tsize: number\n\tscale: number\n\tcolor: string\n\tbgcolor: string\n\tspotcolor: string\n}\n"],"names":[],"mappings":"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"}