{"version":3,"file":"Blockies.utilities.mjs","sourceRoot":"","sources":["../../../../src/components/temp-components/Blockies/Blockies.utilities.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * A handy class to calculate color values and generate PNG images.\n *\n * @version 1.0.0\n * @author Robert Eisele <robert@xarg.org>\n * @copyright Copyright (c) 2010, Robert Eisele\n * @see {@link http://www.xarg.org/2010/03/generate-client-side-png-files-using-javascript/}\n * @license BSD-3-Clause\n */\n\n// Type definitions\ntype BlockiesOptions = {\n  seed: string;\n  size?: number;\n  scale?: number;\n  color?: [number, number, number];\n  bgcolor?: [number, number, number];\n  spotcolor?: [number, number, number];\n};\n\ntype PaletteEntry = {\n  [color: number]: string;\n};\n\ntype RGBAColor = [number, number, number, number];\ntype HSLColor = [number, number, number];\n\n/**\n * Writes string arguments to a buffer starting at the specified offset.\n *\n * @param buffer - The buffer to write to\n * @param offs - The offset to start writing at\n * @param args - The string arguments to write\n */\nfunction write(buffer: string[], offs: number, ...args: string[]): void {\n  for (const arg of args) {\n    for (let j = 0; j < arg.length; j += 1) {\n      // eslint-disable-next-line no-plusplus\n      buffer[offs++] = arg.charAt(j);\n    }\n  }\n}\n\n/**\n * Converts a 16-bit number to a 2-byte string.\n *\n * @param w - The number to convert\n * @returns A 2-byte string representation\n */\nfunction byte2(w: number): string {\n  // eslint-disable-next-line no-bitwise\n  return String.fromCharCode((w >> 8) & 255, w & 255);\n}\n\n/**\n * Converts a 32-bit number to a 4-byte string.\n *\n * @param w - The number to convert\n * @returns A 4-byte string representation\n */\nfunction byte4(w: number): string {\n  return String.fromCharCode(\n    // eslint-disable-next-line no-bitwise\n    (w >> 24) & 255,\n    // eslint-disable-next-line no-bitwise\n    (w >> 16) & 255,\n    // eslint-disable-next-line no-bitwise\n    (w >> 8) & 255,\n    // eslint-disable-next-line no-bitwise\n    w & 255,\n  );\n}\n\n/**\n * Converts a 16-bit number to a 2-byte string in little-endian format.\n *\n * @param w - The number to convert\n * @returns A 2-byte string representation in little-endian format\n */\nfunction byte2lsb(w: number): string {\n  // eslint-disable-next-line no-bitwise\n  return String.fromCharCode(w & 255, (w >> 8) & 255);\n}\n\n/**\n * PNG class for generating PNG images\n */\nclass PNG {\n  public width: number;\n\n  public height: number;\n\n  public depth: number;\n\n  public pix_size: number;\n\n  public data_size: number;\n\n  public ihdr_offs: number;\n\n  public ihdr_size: number;\n\n  public plte_offs: number;\n\n  public plte_size: number;\n\n  public trns_offs: number;\n\n  public trns_size: number;\n\n  public idat_offs: number;\n\n  public idat_size: number;\n\n  public iend_offs: number;\n\n  public iend_size: number;\n\n  public buffer_size: number;\n\n  public buffer: string[];\n\n  public palette: PaletteEntry;\n\n  public pindex: number;\n\n  private readonly _crc32: number[];\n\n  constructor(width: number, height: number, depth: number) {\n    this.width = width;\n    this.height = height;\n    this.depth = depth;\n\n    // pixel data and row filter identifier size\n    this.pix_size = height * (width + 1);\n\n    // deflate header, pix_size, block headers, adler32 checksum\n    this.data_size =\n      2 + this.pix_size + 5 * Math.floor((0xfffe + this.pix_size) / 0xffff) + 4;\n\n    // offsets and sizes of Png chunks\n    this.ihdr_offs = 0; // IHDR offset and size\n    this.ihdr_size = 4 + 4 + 13 + 4;\n    this.plte_offs = this.ihdr_offs + this.ihdr_size; // PLTE offset and size\n    this.plte_size = 4 + 4 + 3 * depth + 4;\n    this.trns_offs = this.plte_offs + this.plte_size; // tRNS offset and size\n    this.trns_size = 4 + 4 + depth + 4;\n    this.idat_offs = this.trns_offs + this.trns_size; // IDAT offset and size\n    this.idat_size = 4 + 4 + this.data_size + 4;\n    this.iend_offs = this.idat_offs + this.idat_size; // IEND offset and size\n    this.iend_size = 4 + 4 + 4;\n    this.buffer_size = this.iend_offs + this.iend_size; // total PNG size\n\n    this.buffer = new Array(this.buffer_size);\n    this.palette = {};\n    this.pindex = 0;\n    this._crc32 = new Array(256);\n\n    // initialize buffer with zero bytes\n    for (let i = 0; i < this.buffer_size; i += 1) {\n      this.buffer[i] = '\\x00';\n    }\n\n    // initialize non-zero elements\n    write(\n      this.buffer,\n      this.ihdr_offs,\n      byte4(this.ihdr_size - 12),\n      'IHDR',\n      byte4(width),\n      byte4(height),\n      '\\x08\\x03',\n    );\n    write(this.buffer, this.plte_offs, byte4(this.plte_size - 12), 'PLTE');\n    write(this.buffer, this.trns_offs, byte4(this.trns_size - 12), 'tRNS');\n    write(this.buffer, this.idat_offs, byte4(this.idat_size - 12), 'IDAT');\n    write(this.buffer, this.iend_offs, byte4(this.iend_size - 12), 'IEND');\n\n    // initialize deflate header\n    // eslint-disable-next-line no-bitwise\n    let header = ((8 + (7 << 4)) << 8) | (3 << 6);\n    header += 31 - (header % 31);\n\n    write(this.buffer, this.idat_offs + 8, byte2(header));\n\n    // initialize deflate block headers\n    // eslint-disable-next-line no-bitwise\n    for (let i = 0; (i << 16) - 1 < this.pix_size; i += 1) {\n      let size: number;\n      let bits: string;\n      if (i + 0xffff < this.pix_size) {\n        size = 0xffff;\n        bits = '\\x00';\n      } else {\n        // eslint-disable-next-line no-bitwise\n        size = this.pix_size - (i << 16) - i;\n        bits = '\\x01';\n      }\n      write(\n        this.buffer,\n        // eslint-disable-next-line no-bitwise\n        this.idat_offs + 8 + 2 + (i << 16) + (i << 2),\n        bits,\n        byte2lsb(size),\n        // eslint-disable-next-line no-bitwise\n        byte2lsb(~size),\n      );\n    }\n\n    /* Create crc32 lookup table */\n    for (let i = 0; i < 256; i += 1) {\n      let c = i;\n      for (let j = 0; j < 8; j += 1) {\n        // eslint-disable-next-line no-bitwise\n        if (c & 1) {\n          // eslint-disable-next-line no-bitwise\n          c = -306674912 ^ ((c >> 1) & 0x7fffffff);\n        } else {\n          // eslint-disable-next-line no-bitwise\n          c = (c >> 1) & 0x7fffffff;\n        }\n      }\n      this._crc32[i] = c;\n    }\n  }\n\n  /**\n   * Computes the index into a png for a given pixel.\n   *\n   * @param x - The x coordinate\n   * @param y - The y coordinate\n   * @returns The buffer index for the pixel\n   */\n  public index(x: number, y: number): number {\n    const i = y * (this.width + 1) + x + 1;\n    const j = this.idat_offs + 8 + 2 + 5 * Math.floor(i / 0xffff + 1) + i;\n    return j;\n  }\n\n  /**\n   * Converts a color and builds up the palette.\n   *\n   * @param red - Red component (0-255)\n   * @param green - Green component (0-255)\n   * @param blue - Blue component (0-255)\n   * @param alpha - Alpha component (0-255)\n   * @returns The palette color string\n   */\n  public color(\n    red: number,\n    green: number,\n    blue: number,\n    alpha: number = 255,\n  ): string {\n    // eslint-disable-next-line no-bitwise\n    const color = (((((alpha << 8) | red) << 8) | green) << 8) | blue;\n\n    if (typeof this.palette[color] === 'undefined') {\n      if (this.pindex === this.depth) {\n        return '\\x00';\n      }\n\n      const ndx = this.plte_offs + 8 + 3 * this.pindex;\n\n      this.buffer[ndx + 0] = String.fromCharCode(red);\n      this.buffer[ndx + 1] = String.fromCharCode(green);\n      this.buffer[ndx + 2] = String.fromCharCode(blue);\n      this.buffer[this.trns_offs + 8 + this.pindex] =\n        String.fromCharCode(alpha);\n\n      // eslint-disable-next-line no-plusplus\n      this.palette[color] = String.fromCharCode(this.pindex++);\n    }\n    return this.palette[color];\n  }\n\n  /**\n   * Outputs a PNG string, Base64 encoded.\n   *\n   * @returns A Base64 encoded PNG string\n   */\n  public getBase64(): string {\n    const s = this.getDump();\n\n    const ch =\n      'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n    let c1: number;\n    let c2: number;\n    let c3: number;\n    let e1: number;\n    let e2: number;\n    let e3: number;\n    let e4: number;\n    const l = s.length;\n    let i = 0;\n    let r = '';\n\n    do {\n      c1 = s.charCodeAt(i);\n      // eslint-disable-next-line no-bitwise\n      e1 = c1 >> 2;\n      c2 = s.charCodeAt(i + 1);\n      // eslint-disable-next-line no-bitwise\n      e2 = ((c1 & 3) << 4) | (c2 >> 4);\n      c3 = s.charCodeAt(i + 2);\n      if (l < i + 2) {\n        e3 = 64;\n      } else {\n        // eslint-disable-next-line no-bitwise\n        e3 = ((c2 & 0xf) << 2) | (c3 >> 6);\n      }\n      if (l < i + 3) {\n        e4 = 64;\n      } else {\n        // eslint-disable-next-line no-bitwise\n        e4 = c3 & 0x3f;\n      }\n      r += ch.charAt(e1) + ch.charAt(e2) + ch.charAt(e3) + ch.charAt(e4);\n      i += 3;\n    } while (i < l);\n    return r;\n  }\n\n  /**\n   * Outputs a PNG string.\n   *\n   * @returns A PNG string\n   */\n  public getDump(): string {\n    // compute adler32 of output pixels + row filter bytes\n    const BASE = 65521; /* largest prime smaller than 65536 */\n    const NMAX = 5552; /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */\n    let s1 = 1;\n    let s2 = 0;\n    let n = NMAX;\n\n    for (let y = 0; y < this.height; y += 1) {\n      for (let x = -1; x < this.width; x += 1) {\n        s1 += this.buffer[this.index(x, y)].charCodeAt(0);\n        s2 += s1;\n        n -= 1;\n        if (n === 0) {\n          s1 %= BASE;\n          s2 %= BASE;\n          n = NMAX;\n        }\n      }\n    }\n    s1 %= BASE;\n    s2 %= BASE;\n    write(\n      this.buffer,\n      this.idat_offs + this.idat_size - 8,\n      // eslint-disable-next-line no-bitwise\n      byte4((s2 << 16) | s1),\n    );\n\n    // compute crc32 of the PNG chunks\n    const crc32 = (png: string[], offs: number, size: number): void => {\n      let crc = -1;\n      for (let i = 4; i < size - 4; i += 1) {\n        crc =\n          // eslint-disable-next-line no-bitwise\n          this._crc32[(crc ^ png[offs + i].charCodeAt(0)) & 0xff] ^\n          // eslint-disable-next-line no-bitwise\n          ((crc >> 8) & 0x00ffffff);\n      }\n      // eslint-disable-next-line no-bitwise\n      write(png, offs + size - 4, byte4(crc ^ -1));\n    };\n\n    crc32(this.buffer, this.ihdr_offs, this.ihdr_size);\n    crc32(this.buffer, this.plte_offs, this.plte_size);\n    crc32(this.buffer, this.trns_offs, this.trns_size);\n    crc32(this.buffer, this.idat_offs, this.idat_size);\n    crc32(this.buffer, this.iend_offs, this.iend_size);\n\n    // convert PNG to string\n    return `\\x89PNG\\r\\n\\x1A\\n${this.buffer.join('')}`;\n  }\n\n  /**\n   * Fills a rectangle with the specified color.\n   *\n   * @param x - The x coordinate\n   * @param y - The y coordinate\n   * @param w - The width\n   * @param h - The height\n   * @param color - The color to fill with\n   */\n  public fillRect(\n    x: number,\n    y: number,\n    w: number,\n    h: number,\n    color: string,\n  ): void {\n    for (let i = 0; i < w; i += 1) {\n      for (let j = 0; j < h; j += 1) {\n        this.buffer[this.index(x + i, y + j)] = color;\n      }\n    }\n  }\n}\n\n/**\n * Converts HSL color to RGB helper function.\n *\n * @param p - First parameter\n * @param q - Second parameter\n * @param t - Third parameter\n * @returns RGB value component\n */\nfunction hue2rgb(p: number, q: number, t: number): number {\n  let tValue = t;\n  if (tValue < 0) {\n    tValue += 1;\n  }\n  if (tValue > 1) {\n    tValue -= 1;\n  }\n  if (tValue < 1 / 6) {\n    return p + (q - p) * 6 * tValue;\n  }\n  if (tValue < 1 / 2) {\n    return q;\n  }\n  if (tValue < 2 / 3) {\n    return p + (q - p) * (2 / 3 - tValue) * 6;\n  }\n  return p;\n}\n\n/**\n * Converts HSL color values to RGBA.\n *\n * @param h - Hue (0-1)\n * @param s - Saturation (0-1)\n * @param l - Lightness (0-1)\n * @returns RGBA color array\n */\nfunction hsl2rgb(h: number, s: number, l: number): RGBAColor {\n  let r: number;\n  let g: number;\n  let b: number;\n\n  if (s === 0) {\n    r = l;\n    g = l;\n    b = l; // achromatic\n  } else {\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    const p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n\n  return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), 255];\n}\n\n// Random number generation\nconst randseed: number[] = new Array(4); // Xorshift: [x, y, z, w] 32 bit values\n\n/**\n * Seeds the random number generator.\n *\n * @param seed - The seed string\n */\nfunction seedrand(seed: string): void {\n  for (let i = 0; i < randseed.length; i += 1) {\n    randseed[i] = 0;\n  }\n  for (let i = 0; i < seed.length; i += 1) {\n    randseed[i % 4] =\n      // eslint-disable-next-line no-bitwise\n      (randseed[i % 4] << 5) - randseed[i % 4] + seed.charCodeAt(i);\n  }\n}\n\n/**\n * Generates a random number using Xorshift algorithm.\n *\n * @returns A random number between 0 and 1\n */\nfunction rand(): number {\n  // based on Java's String.hashCode(), expanded to 4 32bit values\n  // eslint-disable-next-line no-bitwise\n  const t = randseed[0] ^ (randseed[0] << 11);\n\n  randseed[0] = randseed[1];\n  randseed[1] = randseed[2];\n  randseed[2] = randseed[3];\n  // eslint-disable-next-line no-bitwise\n  randseed[3] = randseed[3] ^ (randseed[3] >> 19) ^ t ^ (t >> 8);\n\n  // eslint-disable-next-line no-bitwise\n  return (randseed[3] >>> 0) / ((1 << 31) >>> 0);\n}\n\n/**\n * Creates a random HSL color.\n *\n * @returns HSL color array\n */\nfunction createColor(): HSLColor {\n  // saturation is the whole color spectrum\n  const h = Math.floor(rand() * 360);\n  // saturation goes from 40 to 100, it avoids greyish colors\n  const s = rand() * 60 + 40;\n  // lightness can be anything from 0 to 100, but probabilities are a bell curve around 50%\n  const l = (rand() + rand() + rand() + rand()) * 25;\n\n  return [h / 360, s / 100, l / 100];\n}\n\n/**\n * Creates image data for the Blockies pattern.\n *\n * @param size - The size of the image\n * @returns Array of pixel data\n */\nfunction createImageData(size: number): number[] {\n  const width = size; // Only support square icons for now\n  const height = size;\n\n  const dataWidth = Math.ceil(width / 2);\n  const mirrorWidth = width - dataWidth;\n\n  const data: number[] = [];\n  for (let y = 0; y < height; y += 1) {\n    let row: number[] = [];\n    for (let x = 0; x < dataWidth; x += 1) {\n      // this makes foreground and background color to have a 43% (1/2.3) probability\n      // spot color has 13% chance\n      row[x] = Math.floor(rand() * 2.3);\n    }\n    const r = row.slice(0, mirrorWidth);\n    r.reverse();\n    row = row.concat(r);\n\n    for (const value of row) {\n      data.push(value);\n    }\n  }\n\n  return data;\n}\n\n/**\n * Builds options for Blockies generation with defaults.\n *\n * @param opts - Partial options object\n * @returns Complete options object\n */\nfunction buildOpts(opts: Partial<BlockiesOptions>): Required<BlockiesOptions> {\n  if (!opts.seed) {\n    throw new Error('No seed provided');\n  }\n\n  seedrand(opts.seed);\n\n  return {\n    size: 8,\n    scale: 16,\n    color: createColor(),\n    bgcolor: createColor(),\n    spotcolor: createColor(),\n    ...opts,\n    seed: opts.seed,\n  };\n}\n\n/**\n * Utility class with the single responsibility\n * of caching Blockies Data URIs\n */\nexport class Blockies {\n  static cache: Record<string, string> = {};\n}\n\n/**\n * Generate a Blockies data URL for a given address\n *\n * @param address The address to generate a Blockies for\n * @returns A data URL string containing the Blockies image\n */\nexport function toDataUrl(address: string): string {\n  const cache = Blockies.cache[address];\n  if (address && cache) {\n    return cache;\n  }\n\n  const opts = buildOpts({ seed: address.toLowerCase() });\n\n  const imageData = createImageData(opts.size);\n  const width = Math.sqrt(imageData.length);\n\n  const p = new PNG(opts.size * opts.scale, opts.size * opts.scale, 3);\n  // Register background color in PNG palette (needed for pixels with value 0)\n  // This call adds the background color as the first palette entry, which is\n  // essential for proper rendering of background pixels in the Blockies\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const bgcolor = p.color(...hsl2rgb(...opts.bgcolor));\n  const color = p.color(...hsl2rgb(...opts.color));\n  const spotcolor = p.color(...hsl2rgb(...opts.spotcolor));\n\n  for (let i = 0; i < imageData.length; i += 1) {\n    const row = Math.floor(i / width);\n    const col = i % width;\n    // if data is 0, leave the background\n    if (imageData[i]) {\n      // if data is 2, choose spot color, if 1 choose foreground\n      const pngColor = imageData[i] === 1 ? color : spotcolor;\n      p.fillRect(\n        col * opts.scale,\n        row * opts.scale,\n        opts.scale,\n        opts.scale,\n        pngColor,\n      );\n    }\n  }\n  const ret = `data:image/png;base64,${p.getBase64()}`;\n  Blockies.cache[address] = ret;\n  return ret;\n}\n"]}