{"version":3,"file":"larscom-ng-qrcode-svg.mjs","sources":["../../../projects/ng-qrcode-svg/src/lib/qrcode-generator.ts","../../../projects/ng-qrcode-svg/src/lib/qrcode-svg.component.ts","../../../projects/ng-qrcode-svg/src/larscom-ng-qrcode-svg.ts"],"sourcesContent":["/*\n * QR Code generator library (TypeScript)\n *\n * Copyright (c) Project Nayuki. (MIT License)\n * https://www.nayuki.io/page/qr-code-generator-library\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n * - The above copyright notice and this permission notice shall be included in\n *   all copies or substantial portions of the Software.\n * - The Software is provided \"as is\", without warranty of any kind, express or\n *   implied, including but not limited to the warranties of merchantability,\n *   fitness for a particular purpose and noninfringement. In no event shall the\n *   authors or copyright holders be liable for any claim, damages or other\n *   liability, whether in an action of contract, tort or otherwise, arising from,\n *   out of or in connection with the Software or the use or other dealings in the\n *   Software.\n */\n\ntype bit = number\ntype byte = number\ntype int = number\n\nclass QrCode {\n  public static encodeText(text: string, ecl: Ecc): QrCode {\n    const segs: Array<QrSegment> = QrSegment.makeSegments(text)\n    return QrCode.encodeSegments(segs, ecl)\n  }\n\n  public static encodeBinary(data: Readonly<Array<byte>>, ecl: Ecc): QrCode {\n    const seg: QrSegment = QrSegment.makeBytes(data)\n    return QrCode.encodeSegments([seg], ecl)\n  }\n\n  public static encodeSegments(\n    segs: Readonly<Array<QrSegment>>,\n    ecl: Ecc,\n    minVersion: int = 1,\n    maxVersion: int = 40,\n    mask: int = -1,\n    boostEcl: boolean = true\n  ): QrCode {\n    if (\n      !(QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= QrCode.MAX_VERSION) ||\n      mask < -1 ||\n      mask > 7\n    )\n      throw new RangeError('Invalid value')\n\n    let version: int\n    let dataUsedBits: int\n    for (version = minVersion; ; version++) {\n      const dataCapacityBits: int = QrCode.getNumDataCodewords(version, ecl) * 8\n      const usedBits: number = QrSegment.getTotalBits(segs, version)\n      if (usedBits <= dataCapacityBits) {\n        dataUsedBits = usedBits\n        break\n      }\n      if (version >= maxVersion) throw new RangeError('Data too long')\n    }\n\n    for (const newEcl of [Ecc.MEDIUM, Ecc.QUARTILE, Ecc.HIGH]) {\n      if (boostEcl && dataUsedBits <= QrCode.getNumDataCodewords(version, newEcl) * 8) ecl = newEcl\n    }\n\n    let bb: Array<bit> = []\n    for (const seg of segs) {\n      appendBits(seg.mode.modeBits, 4, bb)\n      appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb)\n      for (const b of seg.getData()) bb.push(b)\n    }\n    assert(bb.length == dataUsedBits)\n\n    const dataCapacityBits: int = QrCode.getNumDataCodewords(version, ecl) * 8\n    assert(bb.length <= dataCapacityBits)\n    appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb)\n    appendBits(0, (8 - (bb.length % 8)) % 8, bb)\n    assert(bb.length % 8 == 0)\n\n    for (let padByte = 0xec; bb.length < dataCapacityBits; padByte ^= 0xec ^ 0x11) appendBits(padByte, 8, bb)\n\n    let dataCodewords: Array<byte> = []\n    while (dataCodewords.length * 8 < bb.length) dataCodewords.push(0)\n    bb.forEach((b: bit, i: int) => (dataCodewords[i >>> 3] |= b << (7 - (i & 7))))\n\n    return new QrCode(version, ecl, dataCodewords, mask)\n  }\n\n  public readonly size: int\n  public readonly mask: int\n\n  private readonly modules: Array<Array<boolean>> = []\n  private readonly isFunction: Array<Array<boolean>> = []\n\n  public constructor(\n    public readonly version: int,\n    public readonly errorCorrectionLevel: Ecc,\n    dataCodewords: Readonly<Array<byte>>,\n    msk: int\n  ) {\n    if (version < QrCode.MIN_VERSION || version > QrCode.MAX_VERSION) throw new RangeError('Version value out of range')\n    if (msk < -1 || msk > 7) throw new RangeError('Mask value out of range')\n    this.size = version * 4 + 17\n\n    let row: Array<boolean> = []\n    for (let i = 0; i < this.size; i++) row.push(false)\n    for (let i = 0; i < this.size; i++) {\n      this.modules.push(row.slice())\n      this.isFunction.push(row.slice())\n    }\n\n    this.drawFunctionPatterns()\n    const allCodewords: Array<byte> = this.addEccAndInterleave(dataCodewords)\n    this.drawCodewords(allCodewords)\n\n    if (msk == -1) {\n      let minPenalty: int = 1000000000\n      for (let i = 0; i < 8; i++) {\n        this.applyMask(i)\n        this.drawFormatBits(i)\n        const penalty: int = this.getPenaltyScore()\n        if (penalty < minPenalty) {\n          msk = i\n          minPenalty = penalty\n        }\n        this.applyMask(i)\n      }\n    }\n    assert(0 <= msk && msk <= 7)\n    this.mask = msk\n    this.applyMask(msk)\n    this.drawFormatBits(msk)\n\n    this.isFunction = []\n  }\n\n  public getModule(x: int, y: int): boolean {\n    return 0 <= x && x < this.size && 0 <= y && y < this.size && this.modules[y][x]\n  }\n\n  private drawFunctionPatterns(): void {\n    for (let i = 0; i < this.size; i++) {\n      this.setFunctionModule(6, i, i % 2 == 0)\n      this.setFunctionModule(i, 6, i % 2 == 0)\n    }\n\n    this.drawFinderPattern(3, 3)\n    this.drawFinderPattern(this.size - 4, 3)\n    this.drawFinderPattern(3, this.size - 4)\n\n    const alignPatPos: Array<int> = this.getAlignmentPatternPositions()\n    const numAlign: int = alignPatPos.length\n    for (let i = 0; i < numAlign; i++) {\n      for (let j = 0; j < numAlign; j++) {\n        if (!((i == 0 && j == 0) || (i == 0 && j == numAlign - 1) || (i == numAlign - 1 && j == 0)))\n          this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j])\n      }\n    }\n\n    this.drawFormatBits(0)\n    this.drawVersion()\n  }\n\n  private drawFormatBits(mask: int): void {\n    const data: int = (this.errorCorrectionLevel.formatBits << 3) | mask\n    let rem: int = data\n    for (let i = 0; i < 10; i++) rem = (rem << 1) ^ ((rem >>> 9) * 0x537)\n    const bits = ((data << 10) | rem) ^ 0x5412\n    assert(bits >>> 15 == 0)\n\n    for (let i = 0; i <= 5; i++) this.setFunctionModule(8, i, getBit(bits, i))\n    this.setFunctionModule(8, 7, getBit(bits, 6))\n    this.setFunctionModule(8, 8, getBit(bits, 7))\n    this.setFunctionModule(7, 8, getBit(bits, 8))\n    for (let i = 9; i < 15; i++) this.setFunctionModule(14 - i, 8, getBit(bits, i))\n\n    for (let i = 0; i < 8; i++) this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i))\n    for (let i = 8; i < 15; i++) this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i))\n    this.setFunctionModule(8, this.size - 8, true)\n  }\n\n  private drawVersion(): void {\n    if (this.version < 7) return\n\n    let rem: int = this.version\n    for (let i = 0; i < 12; i++) rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25)\n    const bits: int = (this.version << 12) | rem // uint18\n    assert(bits >>> 18 == 0)\n\n    for (let i = 0; i < 18; i++) {\n      const color: boolean = getBit(bits, i)\n      const a: int = this.size - 11 + (i % 3)\n      const b: int = Math.floor(i / 3)\n      this.setFunctionModule(a, b, color)\n      this.setFunctionModule(b, a, color)\n    }\n  }\n\n  private drawFinderPattern(x: int, y: int): void {\n    for (let dy = -4; dy <= 4; dy++) {\n      for (let dx = -4; dx <= 4; dx++) {\n        const dist: int = Math.max(Math.abs(dx), Math.abs(dy))\n        const xx: int = x + dx\n        const yy: int = y + dy\n        if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size)\n          this.setFunctionModule(xx, yy, dist != 2 && dist != 4)\n      }\n    }\n  }\n\n  private drawAlignmentPattern(x: int, y: int): void {\n    for (let dy = -2; dy <= 2; dy++) {\n      for (let dx = -2; dx <= 2; dx++) this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1)\n    }\n  }\n\n  private setFunctionModule(x: int, y: int, isDark: boolean): void {\n    this.modules[y][x] = isDark\n    this.isFunction[y][x] = true\n  }\n\n  private addEccAndInterleave(data: Readonly<Array<byte>>): Array<byte> {\n    const ver: int = this.version\n    const ecl: Ecc = this.errorCorrectionLevel\n    if (data.length != QrCode.getNumDataCodewords(ver, ecl)) throw new RangeError('Invalid argument')\n\n    const numBlocks: int = QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]\n    const blockEccLen: int = QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver]\n    const rawCodewords: int = Math.floor(QrCode.getNumRawDataModules(ver) / 8)\n    const numShortBlocks: int = numBlocks - (rawCodewords % numBlocks)\n    const shortBlockLen: int = Math.floor(rawCodewords / numBlocks)\n\n    let blocks: Array<Array<byte>> = []\n    const rsDiv: Array<byte> = QrCode.reedSolomonComputeDivisor(blockEccLen)\n    for (let i = 0, k = 0; i < numBlocks; i++) {\n      let dat: Array<byte> = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1))\n      k += dat.length\n      const ecc: Array<byte> = QrCode.reedSolomonComputeRemainder(dat, rsDiv)\n      if (i < numShortBlocks) dat.push(0)\n      blocks.push(dat.concat(ecc))\n    }\n\n    let result: Array<byte> = []\n    for (let i = 0; i < blocks[0].length; i++) {\n      blocks.forEach((block, j) => {\n        if (i != shortBlockLen - blockEccLen || j >= numShortBlocks) result.push(block[i])\n      })\n    }\n    assert(result.length == rawCodewords)\n    return result\n  }\n\n  private drawCodewords(data: Readonly<Array<byte>>): void {\n    if (data.length != Math.floor(QrCode.getNumRawDataModules(this.version) / 8))\n      throw new RangeError('Invalid argument')\n    let i: int = 0\n    for (let right = this.size - 1; right >= 1; right -= 2) {\n      if (right == 6) right = 5\n      for (let vert = 0; vert < this.size; vert++) {\n        for (let j = 0; j < 2; j++) {\n          const x: int = right - j\n          const upward: boolean = ((right + 1) & 2) == 0\n          const y: int = upward ? this.size - 1 - vert : vert\n          if (!this.isFunction[y][x] && i < data.length * 8) {\n            this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7))\n            i++\n          }\n        }\n      }\n    }\n    assert(i == data.length * 8)\n  }\n\n  private applyMask(mask: int): void {\n    if (mask < 0 || mask > 7) throw new RangeError('Mask value out of range')\n    for (let y = 0; y < this.size; y++) {\n      for (let x = 0; x < this.size; x++) {\n        let invert: boolean\n        switch (mask) {\n          case 0:\n            invert = (x + y) % 2 == 0\n            break\n          case 1:\n            invert = y % 2 == 0\n            break\n          case 2:\n            invert = x % 3 == 0\n            break\n          case 3:\n            invert = (x + y) % 3 == 0\n            break\n          case 4:\n            invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 == 0\n            break\n          case 5:\n            invert = ((x * y) % 2) + ((x * y) % 3) == 0\n            break\n          case 6:\n            invert = (((x * y) % 2) + ((x * y) % 3)) % 2 == 0\n            break\n          case 7:\n            invert = (((x + y) % 2) + ((x * y) % 3)) % 2 == 0\n            break\n          default:\n            throw new Error('Unreachable')\n        }\n        if (!this.isFunction[y][x] && invert) this.modules[y][x] = !this.modules[y][x]\n      }\n    }\n  }\n\n  private getPenaltyScore(): int {\n    let result: int = 0\n\n    for (let y = 0; y < this.size; y++) {\n      let runColor = false\n      let runX = 0\n      let runHistory = [0, 0, 0, 0, 0, 0, 0]\n      for (let x = 0; x < this.size; x++) {\n        if (this.modules[y][x] == runColor) {\n          runX++\n          if (runX == 5) result += QrCode.PENALTY_N1\n          else if (runX > 5) result++\n        } else {\n          this.finderPenaltyAddHistory(runX, runHistory)\n          if (!runColor) result += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3\n          runColor = this.modules[y][x]\n          runX = 1\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * QrCode.PENALTY_N3\n    }\n\n    for (let x = 0; x < this.size; x++) {\n      let runColor = false\n      let runY = 0\n      let runHistory = [0, 0, 0, 0, 0, 0, 0]\n      for (let y = 0; y < this.size; y++) {\n        if (this.modules[y][x] == runColor) {\n          runY++\n          if (runY == 5) result += QrCode.PENALTY_N1\n          else if (runY > 5) result++\n        } else {\n          this.finderPenaltyAddHistory(runY, runHistory)\n          if (!runColor) result += this.finderPenaltyCountPatterns(runHistory) * QrCode.PENALTY_N3\n          runColor = this.modules[y][x]\n          runY = 1\n        }\n      }\n      result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * QrCode.PENALTY_N3\n    }\n\n    for (let y = 0; y < this.size - 1; y++) {\n      for (let x = 0; x < this.size - 1; x++) {\n        const color: boolean = this.modules[y][x]\n        if (color == this.modules[y][x + 1] && color == this.modules[y + 1][x] && color == this.modules[y + 1][x + 1])\n          result += QrCode.PENALTY_N2\n      }\n    }\n\n    let dark: int = 0\n    for (const row of this.modules) dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark)\n    const total: int = this.size * this.size\n    const k: int = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1\n    assert(0 <= k && k <= 9)\n    result += k * QrCode.PENALTY_N4\n    assert(0 <= result && result <= 2568888)\n    return result\n  }\n\n  private getAlignmentPatternPositions(): Array<int> {\n    if (this.version == 1) return []\n    else {\n      const numAlign: int = Math.floor(this.version / 7) + 2\n      const step: int = this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2\n      let result: Array<int> = [6]\n      for (let pos = this.size - 7; result.length < numAlign; pos -= step) result.splice(1, 0, pos)\n      return result\n    }\n  }\n\n  private static getNumRawDataModules(ver: int): int {\n    if (ver < QrCode.MIN_VERSION || ver > QrCode.MAX_VERSION) throw new RangeError('Version number out of range')\n    let result: int = (16 * ver + 128) * ver + 64\n    if (ver >= 2) {\n      const numAlign: int = Math.floor(ver / 7) + 2\n      result -= (25 * numAlign - 10) * numAlign - 55\n      if (ver >= 7) result -= 36\n    }\n    assert(208 <= result && result <= 29648)\n    return result\n  }\n\n  private static getNumDataCodewords(ver: int, ecl: Ecc): int {\n    return (\n      Math.floor(QrCode.getNumRawDataModules(ver) / 8) -\n      QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver]\n    )\n  }\n\n  private static reedSolomonComputeDivisor(degree: int): Array<byte> {\n    if (degree < 1 || degree > 255) throw new RangeError('Degree out of range')\n    let result: Array<byte> = []\n    for (let i = 0; i < degree - 1; i++) result.push(0)\n    result.push(1)\n\n    let root = 1\n    for (let i = 0; i < degree; i++) {\n      for (let j = 0; j < result.length; j++) {\n        result[j] = QrCode.reedSolomonMultiply(result[j], root)\n        if (j + 1 < result.length) result[j] ^= result[j + 1]\n      }\n      root = QrCode.reedSolomonMultiply(root, 0x02)\n    }\n    return result\n  }\n\n  private static reedSolomonComputeRemainder(data: Readonly<Array<byte>>, divisor: Readonly<Array<byte>>): Array<byte> {\n    let result: Array<byte> = divisor.map((_) => 0)\n    for (const b of data) {\n      const factor: byte = b ^ (result.shift() as byte)\n      result.push(0)\n      divisor.forEach((coef, i) => (result[i] ^= QrCode.reedSolomonMultiply(coef, factor)))\n    }\n    return result\n  }\n\n  private static reedSolomonMultiply(x: byte, y: byte): byte {\n    if (x >>> 8 != 0 || y >>> 8 != 0) throw new RangeError('Byte out of range')\n    let z: int = 0\n    for (let i = 7; i >= 0; i--) {\n      z = (z << 1) ^ ((z >>> 7) * 0x11d)\n      z ^= ((y >>> i) & 1) * x\n    }\n    assert(z >>> 8 == 0)\n    return z as byte\n  }\n\n  private finderPenaltyCountPatterns(runHistory: Readonly<Array<int>>): int {\n    const n: int = runHistory[1]\n    assert(n <= this.size * 3)\n    const core: boolean =\n      n > 0 && runHistory[2] == n && runHistory[3] == n * 3 && runHistory[4] == n && runHistory[5] == n\n    return (\n      (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) +\n      (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0)\n    )\n  }\n\n  private finderPenaltyTerminateAndCount(currentRunColor: boolean, currentRunLength: int, runHistory: Array<int>): int {\n    if (currentRunColor) {\n      this.finderPenaltyAddHistory(currentRunLength, runHistory)\n      currentRunLength = 0\n    }\n    currentRunLength += this.size\n    this.finderPenaltyAddHistory(currentRunLength, runHistory)\n    return this.finderPenaltyCountPatterns(runHistory)\n  }\n\n  private finderPenaltyAddHistory(currentRunLength: int, runHistory: Array<int>): void {\n    if (runHistory[0] == 0) currentRunLength += this.size // Add light border to initial run\n    runHistory.pop()\n    runHistory.unshift(currentRunLength)\n  }\n\n  public static readonly MIN_VERSION: int = 1\n  public static readonly MAX_VERSION: int = 40\n\n  private static readonly PENALTY_N1: int = 3\n  private static readonly PENALTY_N2: int = 3\n  private static readonly PENALTY_N3: int = 40\n  private static readonly PENALTY_N4: int = 10\n\n  private static readonly ECC_CODEWORDS_PER_BLOCK: Array<Array<int>> = [\n    // Version: (note that index 0 is for padding, and is set to an illegal value)\n    //0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n    [\n      -1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30,\n      30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30\n    ], // Low\n    [\n      -1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28,\n      28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28\n    ], // Medium\n    [\n      -1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30,\n      30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30\n    ], // Quartile\n    [\n      -1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30,\n      30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30\n    ] // High\n  ]\n\n  private static readonly NUM_ERROR_CORRECTION_BLOCKS: Array<Array<int>> = [\n    // Version: (note that index 0 is for padding, and is set to an illegal value)\n    //0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40    Error correction level\n    [\n      -1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18,\n      19, 19, 20, 21, 22, 24, 25\n    ], // Low\n    [\n      -1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31,\n      33, 35, 37, 38, 40, 43, 45, 47, 49\n    ], // Medium\n    [\n      -1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40,\n      43, 45, 48, 51, 53, 56, 59, 62, 65, 68\n    ], // Quartile\n    [\n      -1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48,\n      51, 54, 57, 60, 63, 66, 70, 74, 77, 81\n    ] // High\n  ]\n}\n\nfunction appendBits(val: int, len: int, bb: Array<bit>): void {\n  if (len < 0 || len > 31 || val >>> len != 0) throw new RangeError('Value out of range')\n  for (let i = len - 1; i >= 0; i--) bb.push((val >>> i) & 1)\n}\n\nfunction getBit(x: int, i: int): boolean {\n  return ((x >>> i) & 1) != 0\n}\n\nfunction assert(cond: boolean): void {\n  if (!cond) throw new Error('Assertion error')\n}\n\nclass QrSegment {\n  public static makeBytes(data: Readonly<Array<byte>>): QrSegment {\n    let bb: Array<bit> = []\n    for (const b of data) appendBits(b, 8, bb)\n    return new QrSegment(Mode.BYTE, data.length, bb)\n  }\n\n  public static makeNumeric(digits: string): QrSegment {\n    if (!QrSegment.isNumeric(digits)) throw new RangeError('String contains non-numeric characters')\n    let bb: Array<bit> = []\n    for (let i = 0; i < digits.length; ) {\n      const n: int = Math.min(digits.length - i, 3)\n      appendBits(parseInt(digits.substring(i, i + n), 10), n * 3 + 1, bb)\n      i += n\n    }\n    return new QrSegment(Mode.NUMERIC, digits.length, bb)\n  }\n\n  public static makeAlphanumeric(text: string): QrSegment {\n    if (!QrSegment.isAlphanumeric(text))\n      throw new RangeError('String contains unencodable characters in alphanumeric mode')\n    let bb: Array<bit> = []\n    let i: int\n    for (i = 0; i + 2 <= text.length; i += 2) {\n      let temp: int = QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45\n      temp += QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1))\n      appendBits(temp, 11, bb)\n    }\n    if (i < text.length) appendBits(QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb)\n    return new QrSegment(Mode.ALPHANUMERIC, text.length, bb)\n  }\n\n  public static makeSegments(text: string): Array<QrSegment> {\n    if (text == '') return []\n    else if (QrSegment.isNumeric(text)) return [QrSegment.makeNumeric(text)]\n    else if (QrSegment.isAlphanumeric(text)) return [QrSegment.makeAlphanumeric(text)]\n    else return [QrSegment.makeBytes(QrSegment.toUtf8ByteArray(text))]\n  }\n\n  public static makeEci(assignVal: int): QrSegment {\n    let bb: Array<bit> = []\n    if (assignVal < 0) throw new RangeError('ECI assignment value out of range')\n    else if (assignVal < 1 << 7) appendBits(assignVal, 8, bb)\n    else if (assignVal < 1 << 14) {\n      appendBits(0b10, 2, bb)\n      appendBits(assignVal, 14, bb)\n    } else if (assignVal < 1000000) {\n      appendBits(0b110, 3, bb)\n      appendBits(assignVal, 21, bb)\n    } else throw new RangeError('ECI assignment value out of range')\n    return new QrSegment(Mode.ECI, 0, bb)\n  }\n\n  public static isNumeric(text: string): boolean {\n    return QrSegment.NUMERIC_REGEX.test(text)\n  }\n\n  public static isAlphanumeric(text: string): boolean {\n    return QrSegment.ALPHANUMERIC_REGEX.test(text)\n  }\n\n  public constructor(public readonly mode: Mode, public readonly numChars: int, private readonly bitData: Array<bit>) {\n    if (numChars < 0) throw new RangeError('Invalid argument')\n    this.bitData = bitData.slice()\n  }\n\n  public getData(): Array<bit> {\n    return this.bitData.slice()\n  }\n\n  public static getTotalBits(segs: Readonly<Array<QrSegment>>, version: int): number {\n    let result: number = 0\n    for (const seg of segs) {\n      const ccbits: int = seg.mode.numCharCountBits(version)\n      if (seg.numChars >= 1 << ccbits) return Infinity\n      result += 4 + ccbits + seg.bitData.length\n    }\n    return result\n  }\n\n  private static toUtf8ByteArray(str: string): Array<byte> {\n    str = encodeURI(str)\n    let result: Array<byte> = []\n    for (let i = 0; i < str.length; i++) {\n      if (str.charAt(i) != '%') result.push(str.charCodeAt(i))\n      else {\n        result.push(parseInt(str.substring(i + 1, i + 3), 16))\n        i += 2\n      }\n    }\n    return result\n  }\n\n  private static readonly NUMERIC_REGEX: RegExp = /^[0-9]*$/\n  private static readonly ALPHANUMERIC_REGEX: RegExp = /^[A-Z0-9 $%*+.\\/:-]*$/\n  private static readonly ALPHANUMERIC_CHARSET: string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'\n}\n\nclass Ecc {\n  public static readonly LOW = new Ecc(0, 1) // The QR Code can tolerate about  7% erroneous codewords\n  public static readonly MEDIUM = new Ecc(1, 0) // The QR Code can tolerate about 15% erroneous codewords\n  public static readonly QUARTILE = new Ecc(2, 3) // The QR Code can tolerate about 25% erroneous codewords\n  public static readonly HIGH = new Ecc(3, 2) // The QR Code can tolerate about 30% erroneous codewords\n\n  public static readonly low = this.LOW\n  public static readonly medium = this.MEDIUM\n  public static readonly quartile = this.QUARTILE\n  public static readonly high = this.HIGH\n\n  private constructor(public readonly ordinal: int, public readonly formatBits: int) {}\n}\n\nclass Mode {\n  public static readonly NUMERIC = new Mode(0x1, [10, 12, 14])\n  public static readonly ALPHANUMERIC = new Mode(0x2, [9, 11, 13])\n  public static readonly BYTE = new Mode(0x4, [8, 16, 16])\n  public static readonly KANJI = new Mode(0x8, [8, 10, 12])\n  public static readonly ECI = new Mode(0x7, [0, 0, 0])\n\n  private constructor(public readonly modeBits: int, private readonly numBitsCharCount: [int, int, int]) {}\n\n  public numCharCountBits(ver: int): int {\n    return this.numBitsCharCount[Math.floor((ver + 7) / 17)]\n  }\n}\n\nexport { QrCode, Ecc }\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core'\nimport { Ecc, QrCode } from './qrcode-generator'\n\n@Component({\n  selector: 'qrcode-svg',\n  standalone: true,\n  template: `\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      version=\"1.1\"\n      stroke=\"none\"\n      [attr.alt]=\"alt()\"\n      [attr.aria-label]=\"ariaLabel()\"\n      [attr.width]=\"size()\"\n      [attr.height]=\"size()\"\n      [attr.viewBox]=\"viewBox()\"\n    >\n      <rect width=\"100%\" height=\"100%\" [attr.fill]=\"backgroundColor()\" />\n      <path [attr.d]=\"d()\" [attr.fill]=\"foregroundColor()\" />\n    </svg>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QrcodeSvgComponent {\n  value = input.required<string>()\n  ecl = input<'low' | 'medium' | 'quartile' | 'high'>('medium')\n  borderSize = input<number>(2)\n  size = input<string | number>(250)\n\n  backgroundColor = input<string>('#FFFFFF')\n  foregroundColor = input<string>('#000000')\n\n  alt = input<string>()\n  ariaLabel = input<string>()\n\n  viewBox = computed(() => {\n    const s = this.qr().size + this.borderSize() * 2\n    return `0 0 ${s} ${s}`\n  })\n  d = computed(() => {\n    return this.createD(this.qr(), this.borderSize())\n  })\n\n  private qr = computed(() => {\n    return QrCode.encodeText(this.value(), Ecc[this.ecl()])\n  })\n\n  private createD(qr: QrCode, borderSize: number): string {\n    const parts: string[] = []\n    for (let y = 0; y < qr.size; y++) {\n      for (let x = 0; x < qr.size; x++) {\n        if (qr.getModule(x, y)) parts.push(`M${x + borderSize},${y + borderSize}h1v1h-1z`)\n      }\n    }\n    return parts.join(' ')\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}