blockies-react-svg
Version:
Blockies react SVG function component, blocky identicons, address-unique ethereum avatar, SVG base64 generation in browser or nodejs.
1 lines • 6.4 kB
Source Map (JSON)
{"version":3,"file":"BlockiesSvg.cjs","sources":["../../src/BlockiesSvg.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { BlockiesOptions, buildOpts, createImageData } from './blockies'\n\nconst store: Record<string, { opts: BlockiesOptions; imageData: number[] }> = Object.create(null)\n\nexport default function BlockiesSvg(\n\tprops: {\n\t\taddress: string\n\t\tsize?: number\n\t\tscale?: number\n\t\tcaseSensitive?: boolean\n\t\tdefaultBackgroundColor?: string\n\t} & React.SVGProps<SVGSVGElement>\n) {\n\tlet { address, size = 8, scale = 10, caseSensitive = false, defaultBackgroundColor = 'black', ...rest } = props\n\tconst width = size * scale\n\n\tconst [opts, setOpts] = useState<BlockiesOptions | null>(null)\n\tconst [imageData, setImageData] = useState<number[] | null>(null)\n\n\tif (!caseSensitive && address) address = address.toLowerCase()\n\n\tuseEffect(() => {\n\t\tif (address) {\n\t\t\tif (store[address] && store[address].opts.size === size) {\n\t\t\t\tsetOpts(store[address].opts)\n\t\t\t\tsetImageData(store[address].imageData)\n\t\t\t} else {\n\t\t\t\tconst newOpts = buildOpts({ seed: address, size, scale })\n\t\t\t\tconst newImageData = createImageData(newOpts.size)\n\t\t\t\tsetOpts(newOpts)\n\t\t\t\tsetImageData(newImageData)\n\n\t\t\t\tstore[address] = { opts: newOpts, imageData: newImageData }\n\t\t\t}\n\t\t}\n\t}, [address])\n\n\tif (!address)\n\t\treturn (\n\t\t\t<svg {...rest} width={width} height={width} viewBox={`0 0 ${width} ${width}`} xmlns='http://www.w3.org/2000/svg'>\n\t\t\t\t<rect width={width} height={width} fill={defaultBackgroundColor} />\n\t\t\t</svg>\n\t\t)\n\n\tif (opts && imageData) {\n\t\treturn (\n\t\t\t<svg {...rest} width={width} height={width} viewBox={`0 0 ${width} ${width}`} xmlns='http://www.w3.org/2000/svg'>\n\t\t\t\t<rect width={width} height={width} fill={opts.bgcolor} />\n\n\t\t\t\t<g fill={opts.color}>\n\t\t\t\t\t{imageData?.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 key={`${address}-${i}`} 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</g>\n\t\t\t\t<g fill={opts.spotcolor}>\n\t\t\t\t\t{imageData?.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 key={`${address}-${i}`} 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</g>\n\t\t\t</svg>\n\t\t)\n\t} else\n\t\treturn (\n\t\t\t<svg {...rest} width={width} height={width} viewBox={`0 0 ${width} ${width}`} xmlns='http://www.w3.org/2000/svg'>\n\t\t\t\t<rect width={width} height={width} fill='black' />\n\t\t\t</svg>\n\t\t)\n}\n"],"names":["__rest","useState","useEffect","buildOpts","createImageData","_jsx","_jsxs"],"mappings":"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"}