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 4.21 kB
{"version":3,"file":"makeBlockiesUrl.cjs","sources":["../../src/makeBlockiesUrl.ts"],"sourcesContent":["import { BlockiesOptions, buildOpts, createImageData } from './blockies'\n\nconst store: Record<string, string> = Object.create(null)\n\nconst _btoa = btoa || window?.btoa || ((str: string) => Buffer.from(str, 'binary').toString('base64'))\n\nexport default function makeBlockiesUrl(address: string, size = 8, caseSensitive = false, scale = 10) {\n\tif (!address) throw new Error('Address is required')\n\tif (!caseSensitive) address = address.toLowerCase()\n\n\tif (store[`${size}:${address}`]) {\n\t\treturn store[`${size}:${address}`]\n\t}\n\n\tconst opts: BlockiesOptions = buildOpts({ seed: address, size, scale })\n\tconst imageData: number[] = createImageData(opts.size)\n\n\tconst width = size * scale\n\n\tconst svgMarkup = `\n\t\t<svg width=\"${width}\" height=\"${width}\" viewBox=\"0 0 ${width} ${width}\" xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<rect width=\"${width}\" height=\"${width}\" fill=\"${opts.bgcolor}\" />\n\t\t\t<g fill=\"${opts.color}\">\n\t\t\t\t${imageData\n\t\t\t\t\t?.map((value, i) => {\n\t\t\t\t\t\tif (value === 1) {\n\t\t\t\t\t\t\tconst row = (i % size) * scale\n\t\t\t\t\t\t\tconst col = Math.floor(i / size) * scale\n\n\t\t\t\t\t\t\treturn `<rect width=\"${scale}\" height=\"${scale}\" x=\"${row}\" y=\"${col}\" />`\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.join('')}\n\t\t\t</g>\n\t\t\t<g fill=\"${opts.spotcolor}\">\n\t\t\t\t${imageData\n\t\t\t\t\t?.map((value, i) => {\n\t\t\t\t\t\tif (value === 2) {\n\t\t\t\t\t\t\tconst row = (i % size) * scale\n\t\t\t\t\t\t\tconst col = Math.floor(i / size) * scale\n\n\t\t\t\t\t\t\treturn `<rect width=\"${scale}\" height=\"${scale}\" x=\"${row}\" y=\"${col}\" />`\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.join('')}\n\t\t\t</g>\n\t\t</svg>`\n\n\tconst base64Url = `data:image/svg+xml;base64,${_btoa(svgMarkup)}`\n\n\tstore[`${size}:${address}`] = base64Url\n\n\treturn base64Url\n}\n"],"names":["buildOpts","createImageData"],"mappings":"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"}