@createlex/onetapforms-sdk 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.cjs +2400 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +3 -33
- package/dist/index.esm.js.map +1 -1
- package/dist/onetapforms.js +34 -5
- package/dist/sdk.d.ts +44 -0
- package/dist/types.d.ts +2 -0
- package/package.json +11 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/onetapforms.js","../src/sdk.ts"],"sourcesContent":["function detectDevice() {\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return \"desktop\";\n }\n const userAgent = navigator.userAgent || \"\";\n const mobileRegex = /iPhone|iPad|iPod|Android|webOS|BlackBerry|Windows Phone/i;\n if (mobileRegex.test(userAgent)) {\n return \"mobile\";\n }\n const tabletRegex = /iPad|Android(?!.*Mobile)/i;\n if (tabletRegex.test(userAgent)) {\n return \"mobile\";\n }\n return \"desktop\";\n}\nfunction isIOSBrowser() {\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return false;\n }\n const userAgent = navigator.userAgent || \"\";\n return /iPhone|iPad|iPod/i.test(userAgent);\n}\nfunction supportsUniversalLinks() {\n return isIOSBrowser();\n}\nfunction getBrowserName() {\n if (typeof window === \"undefined\" || typeof navigator === \"undefined\") {\n return \"unknown\";\n }\n const userAgent = navigator.userAgent || \"\";\n if (/Chrome/i.test(userAgent) && !/Edge/i.test(userAgent)) {\n return \"chrome\";\n }\n if (/Safari/i.test(userAgent) && !/Chrome/i.test(userAgent)) {\n return \"safari\";\n }\n if (/Firefox/i.test(userAgent)) {\n return \"firefox\";\n }\n if (/Edge/i.test(userAgent)) {\n return \"edge\";\n }\n return \"unknown\";\n}\nvar browser = {};\nvar canPromise$1 = function() {\n return typeof Promise === \"function\" && Promise.prototype && Promise.prototype.then;\n};\nvar qrcode = {};\nvar utils$1 = {};\nlet toSJISFunction;\nconst CODEWORDS_COUNT = [\n 0,\n // Not used\n 26,\n 44,\n 70,\n 100,\n 134,\n 172,\n 196,\n 242,\n 292,\n 346,\n 404,\n 466,\n 532,\n 581,\n 655,\n 733,\n 815,\n 901,\n 991,\n 1085,\n 1156,\n 1258,\n 1364,\n 1474,\n 1588,\n 1706,\n 1828,\n 1921,\n 2051,\n 2185,\n 2323,\n 2465,\n 2611,\n 2761,\n 2876,\n 3034,\n 3196,\n 3362,\n 3532,\n 3706\n];\nutils$1.getSymbolSize = function getSymbolSize(version2) {\n if (!version2) throw new Error('\"version\" cannot be null or undefined');\n if (version2 < 1 || version2 > 40) throw new Error('\"version\" should be in range from 1 to 40');\n return version2 * 4 + 17;\n};\nutils$1.getSymbolTotalCodewords = function getSymbolTotalCodewords(version2) {\n return CODEWORDS_COUNT[version2];\n};\nutils$1.getBCHDigit = function(data) {\n let digit = 0;\n while (data !== 0) {\n digit++;\n data >>>= 1;\n }\n return digit;\n};\nutils$1.setToSJISFunction = function setToSJISFunction(f) {\n if (typeof f !== \"function\") {\n throw new Error('\"toSJISFunc\" is not a valid function.');\n }\n toSJISFunction = f;\n};\nutils$1.isKanjiModeEnabled = function() {\n return typeof toSJISFunction !== \"undefined\";\n};\nutils$1.toSJIS = function toSJIS(kanji2) {\n return toSJISFunction(kanji2);\n};\nvar errorCorrectionLevel = {};\n(function(exports$1) {\n exports$1.L = { bit: 1 };\n exports$1.M = { bit: 0 };\n exports$1.Q = { bit: 3 };\n exports$1.H = { bit: 2 };\n function fromString(string) {\n if (typeof string !== \"string\") {\n throw new Error(\"Param is not a string\");\n }\n const lcStr = string.toLowerCase();\n switch (lcStr) {\n case \"l\":\n case \"low\":\n return exports$1.L;\n case \"m\":\n case \"medium\":\n return exports$1.M;\n case \"q\":\n case \"quartile\":\n return exports$1.Q;\n case \"h\":\n case \"high\":\n return exports$1.H;\n default:\n throw new Error(\"Unknown EC Level: \" + string);\n }\n }\n exports$1.isValid = function isValid2(level) {\n return level && typeof level.bit !== \"undefined\" && level.bit >= 0 && level.bit < 4;\n };\n exports$1.from = function from(value, defaultValue) {\n if (exports$1.isValid(value)) {\n return value;\n }\n try {\n return fromString(value);\n } catch (e) {\n return defaultValue;\n }\n };\n})(errorCorrectionLevel);\nfunction BitBuffer$1() {\n this.buffer = [];\n this.length = 0;\n}\nBitBuffer$1.prototype = {\n get: function(index) {\n const bufIndex = Math.floor(index / 8);\n return (this.buffer[bufIndex] >>> 7 - index % 8 & 1) === 1;\n },\n put: function(num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit((num >>> length - i - 1 & 1) === 1);\n }\n },\n getLengthInBits: function() {\n return this.length;\n },\n putBit: function(bit) {\n const bufIndex = Math.floor(this.length / 8);\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0);\n }\n if (bit) {\n this.buffer[bufIndex] |= 128 >>> this.length % 8;\n }\n this.length++;\n }\n};\nvar bitBuffer = BitBuffer$1;\nfunction BitMatrix$1(size) {\n if (!size || size < 1) {\n throw new Error(\"BitMatrix size must be defined and greater than 0\");\n }\n this.size = size;\n this.data = new Uint8Array(size * size);\n this.reservedBit = new Uint8Array(size * size);\n}\nBitMatrix$1.prototype.set = function(row, col, value, reserved) {\n const index = row * this.size + col;\n this.data[index] = value;\n if (reserved) this.reservedBit[index] = true;\n};\nBitMatrix$1.prototype.get = function(row, col) {\n return this.data[row * this.size + col];\n};\nBitMatrix$1.prototype.xor = function(row, col, value) {\n this.data[row * this.size + col] ^= value;\n};\nBitMatrix$1.prototype.isReserved = function(row, col) {\n return this.reservedBit[row * this.size + col];\n};\nvar bitMatrix = BitMatrix$1;\nvar alignmentPattern = {};\n(function(exports$1) {\n const getSymbolSize3 = utils$1.getSymbolSize;\n exports$1.getRowColCoords = function getRowColCoords(version2) {\n if (version2 === 1) return [];\n const posCount = Math.floor(version2 / 7) + 2;\n const size = getSymbolSize3(version2);\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2;\n const positions = [size - 7];\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals;\n }\n positions.push(6);\n return positions.reverse();\n };\n exports$1.getPositions = function getPositions2(version2) {\n const coords = [];\n const pos = exports$1.getRowColCoords(version2);\n const posLength = pos.length;\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n if (i === 0 && j === 0 || // top-left\n i === 0 && j === posLength - 1 || // bottom-left\n i === posLength - 1 && j === 0) {\n continue;\n }\n coords.push([pos[i], pos[j]]);\n }\n }\n return coords;\n };\n})(alignmentPattern);\nvar finderPattern = {};\nconst getSymbolSize2 = utils$1.getSymbolSize;\nconst FINDER_PATTERN_SIZE = 7;\nfinderPattern.getPositions = function getPositions(version2) {\n const size = getSymbolSize2(version2);\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ];\n};\nvar maskPattern = {};\n(function(exports$1) {\n exports$1.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n };\n const PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n };\n exports$1.isValid = function isValid2(mask) {\n return mask != null && mask !== \"\" && !isNaN(mask) && mask >= 0 && mask <= 7;\n };\n exports$1.from = function from(value) {\n return exports$1.isValid(value) ? parseInt(value, 10) : void 0;\n };\n exports$1.getPenaltyN1 = function getPenaltyN1(data) {\n const size = data.size;\n let points = 0;\n let sameCountCol = 0;\n let sameCountRow = 0;\n let lastCol = null;\n let lastRow = null;\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0;\n lastCol = lastRow = null;\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col);\n if (module === lastCol) {\n sameCountCol++;\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n lastCol = module;\n sameCountCol = 1;\n }\n module = data.get(col, row);\n if (module === lastRow) {\n sameCountRow++;\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n lastRow = module;\n sameCountRow = 1;\n }\n }\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5);\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5);\n }\n return points;\n };\n exports$1.getPenaltyN2 = function getPenaltyN2(data) {\n const size = data.size;\n let points = 0;\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) + data.get(row, col + 1) + data.get(row + 1, col) + data.get(row + 1, col + 1);\n if (last === 4 || last === 0) points++;\n }\n }\n return points * PenaltyScores.N2;\n };\n exports$1.getPenaltyN3 = function getPenaltyN3(data) {\n const size = data.size;\n let points = 0;\n let bitsCol = 0;\n let bitsRow = 0;\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0;\n for (let col = 0; col < size; col++) {\n bitsCol = bitsCol << 1 & 2047 | data.get(row, col);\n if (col >= 10 && (bitsCol === 1488 || bitsCol === 93)) points++;\n bitsRow = bitsRow << 1 & 2047 | data.get(col, row);\n if (col >= 10 && (bitsRow === 1488 || bitsRow === 93)) points++;\n }\n }\n return points * PenaltyScores.N3;\n };\n exports$1.getPenaltyN4 = function getPenaltyN4(data) {\n let darkCount = 0;\n const modulesCount = data.data.length;\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i];\n const k = Math.abs(Math.ceil(darkCount * 100 / modulesCount / 5) - 10);\n return k * PenaltyScores.N4;\n };\n function getMaskAt(maskPattern2, i, j) {\n switch (maskPattern2) {\n case exports$1.Patterns.PATTERN000:\n return (i + j) % 2 === 0;\n case exports$1.Patterns.PATTERN001:\n return i % 2 === 0;\n case exports$1.Patterns.PATTERN010:\n return j % 3 === 0;\n case exports$1.Patterns.PATTERN011:\n return (i + j) % 3 === 0;\n case exports$1.Patterns.PATTERN100:\n return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0;\n case exports$1.Patterns.PATTERN101:\n return i * j % 2 + i * j % 3 === 0;\n case exports$1.Patterns.PATTERN110:\n return (i * j % 2 + i * j % 3) % 2 === 0;\n case exports$1.Patterns.PATTERN111:\n return (i * j % 3 + (i + j) % 2) % 2 === 0;\n default:\n throw new Error(\"bad maskPattern:\" + maskPattern2);\n }\n }\n exports$1.applyMask = function applyMask(pattern, data) {\n const size = data.size;\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue;\n data.xor(row, col, getMaskAt(pattern, row, col));\n }\n }\n };\n exports$1.getBestMask = function getBestMask(data, setupFormatFunc) {\n const numPatterns = Object.keys(exports$1.Patterns).length;\n let bestPattern = 0;\n let lowerPenalty = Infinity;\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p);\n exports$1.applyMask(p, data);\n const penalty = exports$1.getPenaltyN1(data) + exports$1.getPenaltyN2(data) + exports$1.getPenaltyN3(data) + exports$1.getPenaltyN4(data);\n exports$1.applyMask(p, data);\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty;\n bestPattern = p;\n }\n }\n return bestPattern;\n };\n})(maskPattern);\nvar errorCorrectionCode = {};\nconst ECLevel$1 = errorCorrectionLevel;\nconst EC_BLOCKS_TABLE = [\n // L M Q H\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 2,\n 2,\n 1,\n 2,\n 2,\n 4,\n 1,\n 2,\n 4,\n 4,\n 2,\n 4,\n 4,\n 4,\n 2,\n 4,\n 6,\n 5,\n 2,\n 4,\n 6,\n 6,\n 2,\n 5,\n 8,\n 8,\n 4,\n 5,\n 8,\n 8,\n 4,\n 5,\n 8,\n 11,\n 4,\n 8,\n 10,\n 11,\n 4,\n 9,\n 12,\n 16,\n 4,\n 9,\n 16,\n 16,\n 6,\n 10,\n 12,\n 18,\n 6,\n 10,\n 17,\n 16,\n 6,\n 11,\n 16,\n 19,\n 6,\n 13,\n 18,\n 21,\n 7,\n 14,\n 21,\n 25,\n 8,\n 16,\n 20,\n 25,\n 8,\n 17,\n 23,\n 25,\n 9,\n 17,\n 23,\n 34,\n 9,\n 18,\n 25,\n 30,\n 10,\n 20,\n 27,\n 32,\n 12,\n 21,\n 29,\n 35,\n 12,\n 23,\n 34,\n 37,\n 12,\n 25,\n 34,\n 40,\n 13,\n 26,\n 35,\n 42,\n 14,\n 28,\n 38,\n 45,\n 15,\n 29,\n 40,\n 48,\n 16,\n 31,\n 43,\n 51,\n 17,\n 33,\n 45,\n 54,\n 18,\n 35,\n 48,\n 57,\n 19,\n 37,\n 51,\n 60,\n 19,\n 38,\n 53,\n 63,\n 20,\n 40,\n 56,\n 66,\n 21,\n 43,\n 59,\n 70,\n 22,\n 45,\n 62,\n 74,\n 24,\n 47,\n 65,\n 77,\n 25,\n 49,\n 68,\n 81\n];\nconst EC_CODEWORDS_TABLE = [\n // L M Q H\n 7,\n 10,\n 13,\n 17,\n 10,\n 16,\n 22,\n 28,\n 15,\n 26,\n 36,\n 44,\n 20,\n 36,\n 52,\n 64,\n 26,\n 48,\n 72,\n 88,\n 36,\n 64,\n 96,\n 112,\n 40,\n 72,\n 108,\n 130,\n 48,\n 88,\n 132,\n 156,\n 60,\n 110,\n 160,\n 192,\n 72,\n 130,\n 192,\n 224,\n 80,\n 150,\n 224,\n 264,\n 96,\n 176,\n 260,\n 308,\n 104,\n 198,\n 288,\n 352,\n 120,\n 216,\n 320,\n 384,\n 132,\n 240,\n 360,\n 432,\n 144,\n 280,\n 408,\n 480,\n 168,\n 308,\n 448,\n 532,\n 180,\n 338,\n 504,\n 588,\n 196,\n 364,\n 546,\n 650,\n 224,\n 416,\n 600,\n 700,\n 224,\n 442,\n 644,\n 750,\n 252,\n 476,\n 690,\n 816,\n 270,\n 504,\n 750,\n 900,\n 300,\n 560,\n 810,\n 960,\n 312,\n 588,\n 870,\n 1050,\n 336,\n 644,\n 952,\n 1110,\n 360,\n 700,\n 1020,\n 1200,\n 390,\n 728,\n 1050,\n 1260,\n 420,\n 784,\n 1140,\n 1350,\n 450,\n 812,\n 1200,\n 1440,\n 480,\n 868,\n 1290,\n 1530,\n 510,\n 924,\n 1350,\n 1620,\n 540,\n 980,\n 1440,\n 1710,\n 570,\n 1036,\n 1530,\n 1800,\n 570,\n 1064,\n 1590,\n 1890,\n 600,\n 1120,\n 1680,\n 1980,\n 630,\n 1204,\n 1770,\n 2100,\n 660,\n 1260,\n 1860,\n 2220,\n 720,\n 1316,\n 1950,\n 2310,\n 750,\n 1372,\n 2040,\n 2430\n];\nerrorCorrectionCode.getBlocksCount = function getBlocksCount(version2, errorCorrectionLevel2) {\n switch (errorCorrectionLevel2) {\n case ECLevel$1.L:\n return EC_BLOCKS_TABLE[(version2 - 1) * 4 + 0];\n case ECLevel$1.M:\n return EC_BLOCKS_TABLE[(version2 - 1) * 4 + 1];\n case ECLevel$1.Q:\n return EC_BLOCKS_TABLE[(version2 - 1) * 4 + 2];\n case ECLevel$1.H:\n return EC_BLOCKS_TABLE[(version2 - 1) * 4 + 3];\n default:\n return void 0;\n }\n};\nerrorCorrectionCode.getTotalCodewordsCount = function getTotalCodewordsCount(version2, errorCorrectionLevel2) {\n switch (errorCorrectionLevel2) {\n case ECLevel$1.L:\n return EC_CODEWORDS_TABLE[(version2 - 1) * 4 + 0];\n case ECLevel$1.M:\n return EC_CODEWORDS_TABLE[(version2 - 1) * 4 + 1];\n case ECLevel$1.Q:\n return EC_CODEWORDS_TABLE[(version2 - 1) * 4 + 2];\n case ECLevel$1.H:\n return EC_CODEWORDS_TABLE[(version2 - 1) * 4 + 3];\n default:\n return void 0;\n }\n};\nvar polynomial = {};\nvar galoisField = {};\nconst EXP_TABLE = new Uint8Array(512);\nconst LOG_TABLE = new Uint8Array(256);\n(function initTables() {\n let x = 1;\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x;\n LOG_TABLE[x] = i;\n x <<= 1;\n if (x & 256) {\n x ^= 285;\n }\n }\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255];\n }\n})();\ngaloisField.log = function log(n) {\n if (n < 1) throw new Error(\"log(\" + n + \")\");\n return LOG_TABLE[n];\n};\ngaloisField.exp = function exp(n) {\n return EXP_TABLE[n];\n};\ngaloisField.mul = function mul(x, y) {\n if (x === 0 || y === 0) return 0;\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]];\n};\n(function(exports$1) {\n const GF = galoisField;\n exports$1.mul = function mul2(p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1);\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j]);\n }\n }\n return coeff;\n };\n exports$1.mod = function mod(divident, divisor) {\n let result = new Uint8Array(divident);\n while (result.length - divisor.length >= 0) {\n const coeff = result[0];\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff);\n }\n let offset = 0;\n while (offset < result.length && result[offset] === 0) offset++;\n result = result.slice(offset);\n }\n return result;\n };\n exports$1.generateECPolynomial = function generateECPolynomial(degree) {\n let poly = new Uint8Array([1]);\n for (let i = 0; i < degree; i++) {\n poly = exports$1.mul(poly, new Uint8Array([1, GF.exp(i)]));\n }\n return poly;\n };\n})(polynomial);\nconst Polynomial = polynomial;\nfunction ReedSolomonEncoder$1(degree) {\n this.genPoly = void 0;\n this.degree = degree;\n if (this.degree) this.initialize(this.degree);\n}\nReedSolomonEncoder$1.prototype.initialize = function initialize(degree) {\n this.degree = degree;\n this.genPoly = Polynomial.generateECPolynomial(this.degree);\n};\nReedSolomonEncoder$1.prototype.encode = function encode(data) {\n if (!this.genPoly) {\n throw new Error(\"Encoder not initialized\");\n }\n const paddedData = new Uint8Array(data.length + this.degree);\n paddedData.set(data);\n const remainder = Polynomial.mod(paddedData, this.genPoly);\n const start = this.degree - remainder.length;\n if (start > 0) {\n const buff = new Uint8Array(this.degree);\n buff.set(remainder, start);\n return buff;\n }\n return remainder;\n};\nvar reedSolomonEncoder = ReedSolomonEncoder$1;\nvar version = {};\nvar mode = {};\nvar versionCheck = {};\nversionCheck.isValid = function isValid(version2) {\n return !isNaN(version2) && version2 >= 1 && version2 <= 40;\n};\nvar regex = {};\nconst numeric = \"[0-9]+\";\nconst alphanumeric = \"[A-Z $%*+\\\\-./:]+\";\nlet kanji = \"(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+\";\nkanji = kanji.replace(/u/g, \"\\\\u\");\nconst byte = \"(?:(?![A-Z0-9 $%*+\\\\-./:]|\" + kanji + \")(?:.|[\\r\\n]))+\";\nregex.KANJI = new RegExp(kanji, \"g\");\nregex.BYTE_KANJI = new RegExp(\"[^A-Z0-9 $%*+\\\\-./:]+\", \"g\");\nregex.BYTE = new RegExp(byte, \"g\");\nregex.NUMERIC = new RegExp(numeric, \"g\");\nregex.ALPHANUMERIC = new RegExp(alphanumeric, \"g\");\nconst TEST_KANJI = new RegExp(\"^\" + kanji + \"$\");\nconst TEST_NUMERIC = new RegExp(\"^\" + numeric + \"$\");\nconst TEST_ALPHANUMERIC = new RegExp(\"^[A-Z0-9 $%*+\\\\-./:]+$\");\nregex.testKanji = function testKanji(str) {\n return TEST_KANJI.test(str);\n};\nregex.testNumeric = function testNumeric(str) {\n return TEST_NUMERIC.test(str);\n};\nregex.testAlphanumeric = function testAlphanumeric(str) {\n return TEST_ALPHANUMERIC.test(str);\n};\n(function(exports$1) {\n const VersionCheck = versionCheck;\n const Regex = regex;\n exports$1.NUMERIC = {\n id: \"Numeric\",\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n };\n exports$1.ALPHANUMERIC = {\n id: \"Alphanumeric\",\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n };\n exports$1.BYTE = {\n id: \"Byte\",\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n };\n exports$1.KANJI = {\n id: \"Kanji\",\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n };\n exports$1.MIXED = {\n bit: -1\n };\n exports$1.getCharCountIndicator = function getCharCountIndicator(mode2, version2) {\n if (!mode2.ccBits) throw new Error(\"Invalid mode: \" + mode2);\n if (!VersionCheck.isValid(version2)) {\n throw new Error(\"Invalid version: \" + version2);\n }\n if (version2 >= 1 && version2 < 10) return mode2.ccBits[0];\n else if (version2 < 27) return mode2.ccBits[1];\n return mode2.ccBits[2];\n };\n exports$1.getBestModeForData = function getBestModeForData(dataStr) {\n if (Regex.testNumeric(dataStr)) return exports$1.NUMERIC;\n else if (Regex.testAlphanumeric(dataStr)) return exports$1.ALPHANUMERIC;\n else if (Regex.testKanji(dataStr)) return exports$1.KANJI;\n else return exports$1.BYTE;\n };\n exports$1.toString = function toString(mode2) {\n if (mode2 && mode2.id) return mode2.id;\n throw new Error(\"Invalid mode\");\n };\n exports$1.isValid = function isValid2(mode2) {\n return mode2 && mode2.bit && mode2.ccBits;\n };\n function fromString(string) {\n if (typeof string !== \"string\") {\n throw new Error(\"Param is not a string\");\n }\n const lcStr = string.toLowerCase();\n switch (lcStr) {\n case \"numeric\":\n return exports$1.NUMERIC;\n case \"alphanumeric\":\n return exports$1.ALPHANUMERIC;\n case \"kanji\":\n return exports$1.KANJI;\n case \"byte\":\n return exports$1.BYTE;\n default:\n throw new Error(\"Unknown mode: \" + string);\n }\n }\n exports$1.from = function from(value, defaultValue) {\n if (exports$1.isValid(value)) {\n return value;\n }\n try {\n return fromString(value);\n } catch (e) {\n return defaultValue;\n }\n };\n})(mode);\n(function(exports$1) {\n const Utils2 = utils$1;\n const ECCode2 = errorCorrectionCode;\n const ECLevel2 = errorCorrectionLevel;\n const Mode2 = mode;\n const VersionCheck = versionCheck;\n const G18 = 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0;\n const G18_BCH = Utils2.getBCHDigit(G18);\n function getBestVersionForDataLength(mode2, length, errorCorrectionLevel2) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports$1.getCapacity(currentVersion, errorCorrectionLevel2, mode2)) {\n return currentVersion;\n }\n }\n return void 0;\n }\n function getReservedBitsCount(mode2, version2) {\n return Mode2.getCharCountIndicator(mode2, version2) + 4;\n }\n function getTotalBitsFromDataArray(segments2, version2) {\n let totalBits = 0;\n segments2.forEach(function(data) {\n const reservedBits = getReservedBitsCount(data.mode, version2);\n totalBits += reservedBits + data.getBitsLength();\n });\n return totalBits;\n }\n function getBestVersionForMixedData(segments2, errorCorrectionLevel2) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments2, currentVersion);\n if (length <= exports$1.getCapacity(currentVersion, errorCorrectionLevel2, Mode2.MIXED)) {\n return currentVersion;\n }\n }\n return void 0;\n }\n exports$1.from = function from(value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10);\n }\n return defaultValue;\n };\n exports$1.getCapacity = function getCapacity(version2, errorCorrectionLevel2, mode2) {\n if (!VersionCheck.isValid(version2)) {\n throw new Error(\"Invalid QR Code version\");\n }\n if (typeof mode2 === \"undefined\") mode2 = Mode2.BYTE;\n const totalCodewords = Utils2.getSymbolTotalCodewords(version2);\n const ecTotalCodewords = ECCode2.getTotalCodewordsCount(version2, errorCorrectionLevel2);\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n if (mode2 === Mode2.MIXED) return dataTotalCodewordsBits;\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode2, version2);\n switch (mode2) {\n case Mode2.NUMERIC:\n return Math.floor(usableBits / 10 * 3);\n case Mode2.ALPHANUMERIC:\n return Math.floor(usableBits / 11 * 2);\n case Mode2.KANJI:\n return Math.floor(usableBits / 13);\n case Mode2.BYTE:\n default:\n return Math.floor(usableBits / 8);\n }\n };\n exports$1.getBestVersionForData = function getBestVersionForData(data, errorCorrectionLevel2) {\n let seg;\n const ecl = ECLevel2.from(errorCorrectionLevel2, ECLevel2.M);\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl);\n }\n if (data.length === 0) {\n return 1;\n }\n seg = data[0];\n } else {\n seg = data;\n }\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl);\n };\n exports$1.getEncodedBits = function getEncodedBits2(version2) {\n if (!VersionCheck.isValid(version2) || version2 < 7) {\n throw new Error(\"Invalid QR Code version\");\n }\n let d = version2 << 12;\n while (Utils2.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= G18 << Utils2.getBCHDigit(d) - G18_BCH;\n }\n return version2 << 12 | d;\n };\n})(version);\nvar formatInfo = {};\nconst Utils$3 = utils$1;\nconst G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0;\nconst G15_MASK = 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1;\nconst G15_BCH = Utils$3.getBCHDigit(G15);\nformatInfo.getEncodedBits = function getEncodedBits(errorCorrectionLevel2, mask) {\n const data = errorCorrectionLevel2.bit << 3 | mask;\n let d = data << 10;\n while (Utils$3.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= G15 << Utils$3.getBCHDigit(d) - G15_BCH;\n }\n return (data << 10 | d) ^ G15_MASK;\n};\nvar segments = {};\nconst Mode$4 = mode;\nfunction NumericData(data) {\n this.mode = Mode$4.NUMERIC;\n this.data = data.toString();\n}\nNumericData.getBitsLength = function getBitsLength(length) {\n return 10 * Math.floor(length / 3) + (length % 3 ? length % 3 * 3 + 1 : 0);\n};\nNumericData.prototype.getLength = function getLength() {\n return this.data.length;\n};\nNumericData.prototype.getBitsLength = function getBitsLength2() {\n return NumericData.getBitsLength(this.data.length);\n};\nNumericData.prototype.write = function write(bitBuffer2) {\n let i, group, value;\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3);\n value = parseInt(group, 10);\n bitBuffer2.put(value, 10);\n }\n const remainingNum = this.data.length - i;\n if (remainingNum > 0) {\n group = this.data.substr(i);\n value = parseInt(group, 10);\n bitBuffer2.put(value, remainingNum * 3 + 1);\n }\n};\nvar numericData = NumericData;\nconst Mode$3 = mode;\nconst ALPHA_NUM_CHARS = [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \" \",\n \"$\",\n \"%\",\n \"*\",\n \"+\",\n \"-\",\n \".\",\n \"/\",\n \":\"\n];\nfunction AlphanumericData(data) {\n this.mode = Mode$3.ALPHANUMERIC;\n this.data = data;\n}\nAlphanumericData.getBitsLength = function getBitsLength3(length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2);\n};\nAlphanumericData.prototype.getLength = function getLength2() {\n return this.data.length;\n};\nAlphanumericData.prototype.getBitsLength = function getBitsLength4() {\n return AlphanumericData.getBitsLength(this.data.length);\n};\nAlphanumericData.prototype.write = function write2(bitBuffer2) {\n let i;\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45;\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1]);\n bitBuffer2.put(value, 11);\n }\n if (this.data.length % 2) {\n bitBuffer2.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6);\n }\n};\nvar alphanumericData = AlphanumericData;\nconst Mode$2 = mode;\nfunction ByteData(data) {\n this.mode = Mode$2.BYTE;\n if (typeof data === \"string\") {\n this.data = new TextEncoder().encode(data);\n } else {\n this.data = new Uint8Array(data);\n }\n}\nByteData.getBitsLength = function getBitsLength5(length) {\n return length * 8;\n};\nByteData.prototype.getLength = function getLength3() {\n return this.data.length;\n};\nByteData.prototype.getBitsLength = function getBitsLength6() {\n return ByteData.getBitsLength(this.data.length);\n};\nByteData.prototype.write = function(bitBuffer2) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer2.put(this.data[i], 8);\n }\n};\nvar byteData = ByteData;\nconst Mode$1 = mode;\nconst Utils$2 = utils$1;\nfunction KanjiData(data) {\n this.mode = Mode$1.KANJI;\n this.data = data;\n}\nKanjiData.getBitsLength = function getBitsLength7(length) {\n return length * 13;\n};\nKanjiData.prototype.getLength = function getLength4() {\n return this.data.length;\n};\nKanjiData.prototype.getBitsLength = function getBitsLength8() {\n return KanjiData.getBitsLength(this.data.length);\n};\nKanjiData.prototype.write = function(bitBuffer2) {\n let i;\n for (i = 0; i < this.data.length; i++) {\n let value = Utils$2.toSJIS(this.data[i]);\n if (value >= 33088 && value <= 40956) {\n value -= 33088;\n } else if (value >= 57408 && value <= 60351) {\n value -= 49472;\n } else {\n throw new Error(\n \"Invalid SJIS character: \" + this.data[i] + \"\\nMake sure your charset is UTF-8\"\n );\n }\n value = (value >>> 8 & 255) * 192 + (value & 255);\n bitBuffer2.put(value, 13);\n }\n};\nvar kanjiData = KanjiData;\nvar dijkstra = { exports: {} };\n(function(module) {\n var dijkstra2 = {\n single_source_shortest_paths: function(graph, s, d) {\n var predecessors = {};\n var costs = {};\n costs[s] = 0;\n var open = dijkstra2.PriorityQueue.make();\n open.push(s, 0);\n var closest, u, v, cost_of_s_to_u, adjacent_nodes, cost_of_e, cost_of_s_to_u_plus_cost_of_e, cost_of_s_to_v, first_visit;\n while (!open.empty()) {\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n adjacent_nodes = graph[u] || {};\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n cost_of_e = adjacent_nodes[v];\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n cost_of_s_to_v = costs[v];\n first_visit = typeof costs[v] === \"undefined\";\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n if (typeof d !== \"undefined\" && typeof costs[d] === \"undefined\") {\n var msg = [\"Could not find a path from \", s, \" to \", d, \".\"].join(\"\");\n throw new Error(msg);\n }\n return predecessors;\n },\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n while (u) {\n nodes.push(u);\n predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n find_path: function(graph, s, d) {\n var predecessors = dijkstra2.single_source_shortest_paths(graph, s, d);\n return dijkstra2.extract_shortest_path_from_predecessor_list(\n predecessors,\n d\n );\n },\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function(opts) {\n var T = dijkstra2.PriorityQueue, t = {}, key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n default_sorter: function(a, b) {\n return a.cost - b.cost;\n },\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function(value, cost) {\n var item = { value, cost };\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n /**\n * Return the highest priority element in the queue.\n */\n pop: function() {\n return this.queue.shift();\n },\n empty: function() {\n return this.queue.length === 0;\n }\n }\n };\n {\n module.exports = dijkstra2;\n }\n})(dijkstra);\nvar dijkstraExports = dijkstra.exports;\n(function(exports$1) {\n const Mode2 = mode;\n const NumericData2 = numericData;\n const AlphanumericData2 = alphanumericData;\n const ByteData2 = byteData;\n const KanjiData2 = kanjiData;\n const Regex = regex;\n const Utils2 = utils$1;\n const dijkstra2 = dijkstraExports;\n function getStringByteLength(str) {\n return unescape(encodeURIComponent(str)).length;\n }\n function getSegments(regex2, mode2, str) {\n const segments2 = [];\n let result;\n while ((result = regex2.exec(str)) !== null) {\n segments2.push({\n data: result[0],\n index: result.index,\n mode: mode2,\n length: result[0].length\n });\n }\n return segments2;\n }\n function getSegmentsFromString(dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode2.NUMERIC, dataStr);\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode2.ALPHANUMERIC, dataStr);\n let byteSegs;\n let kanjiSegs;\n if (Utils2.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode2.BYTE, dataStr);\n kanjiSegs = getSegments(Regex.KANJI, Mode2.KANJI, dataStr);\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode2.BYTE, dataStr);\n kanjiSegs = [];\n }\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs);\n return segs.sort(function(s1, s2) {\n return s1.index - s2.index;\n }).map(function(obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n };\n });\n }\n function getSegmentBitsLength(length, mode2) {\n switch (mode2) {\n case Mode2.NUMERIC:\n return NumericData2.getBitsLength(length);\n case Mode2.ALPHANUMERIC:\n return AlphanumericData2.getBitsLength(length);\n case Mode2.KANJI:\n return KanjiData2.getBitsLength(length);\n case Mode2.BYTE:\n return ByteData2.getBitsLength(length);\n }\n }\n function mergeSegments(segs) {\n return segs.reduce(function(acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null;\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data;\n return acc;\n }\n acc.push(curr);\n return acc;\n }, []);\n }\n function buildNodes(segs) {\n const nodes = [];\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i];\n switch (seg.mode) {\n case Mode2.NUMERIC:\n nodes.push([\n seg,\n { data: seg.data, mode: Mode2.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode2.BYTE, length: seg.length }\n ]);\n break;\n case Mode2.ALPHANUMERIC:\n nodes.push([\n seg,\n { data: seg.data, mode: Mode2.BYTE, length: seg.length }\n ]);\n break;\n case Mode2.KANJI:\n nodes.push([\n seg,\n { data: seg.data, mode: Mode2.BYTE, length: getStringByteLength(seg.data) }\n ]);\n break;\n case Mode2.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode2.BYTE, length: getStringByteLength(seg.data) }\n ]);\n }\n }\n return nodes;\n }\n function buildGraph(nodes, version2) {\n const table = {};\n const graph = { start: {} };\n let prevNodeIds = [\"start\"];\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i];\n const currentNodeIds = [];\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j];\n const key = \"\" + i + j;\n currentNodeIds.push(key);\n table[key] = { node, lastCount: 0 };\n graph[key] = {};\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n];\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] = getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) - getSegmentBitsLength(table[prevNodeId].lastCount, node.mode);\n table[prevNodeId].lastCount += node.length;\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length;\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) + 4 + Mode2.getCharCountIndicator(node.mode, version2);\n }\n }\n }\n prevNodeIds = currentNodeIds;\n }\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0;\n }\n return { map: graph, table };\n }\n function buildSingleSegment(data, modesHint) {\n let mode2;\n const bestMode = Mode2.getBestModeForData(data);\n mode2 = Mode2.from(modesHint, bestMode);\n if (mode2 !== Mode2.BYTE && mode2.bit < bestMode.bit) {\n throw new Error('\"' + data + '\" cannot be encoded with mode ' + Mode2.toString(mode2) + \".\\n Suggested mode is: \" + Mode2.toString(bestMode));\n }\n if (mode2 === Mode2.KANJI && !Utils2.isKanjiModeEnabled()) {\n mode2 = Mode2.BYTE;\n }\n switch (mode2) {\n case Mode2.NUMERIC:\n return new NumericData2(data);\n case Mode2.ALPHANUMERIC:\n return new AlphanumericData2(data);\n case Mode2.KANJI:\n return new KanjiData2(data);\n case Mode2.BYTE:\n return new ByteData2(data);\n }\n }\n exports$1.fromArray = function fromArray(array) {\n return array.reduce(function(acc, seg) {\n if (typeof seg === \"string\") {\n acc.push(buildSingleSegment(seg, null));\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode));\n }\n return acc;\n }, []);\n };\n exports$1.fromString = function fromString(data, version2) {\n const segs = getSegmentsFromString(data, Utils2.isKanjiModeEnabled());\n const nodes = buildNodes(segs);\n const graph = buildGraph(nodes, version2);\n const path = dijkstra2.find_path(graph.map, \"start\", \"end\");\n const optimizedSegs = [];\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node);\n }\n return exports$1.fromArray(mergeSegments(optimizedSegs));\n };\n exports$1.rawSplit = function rawSplit(data) {\n return exports$1.fromArray(\n getSegmentsFromString(data, Utils2.isKanjiModeEnabled())\n );\n };\n})(segments);\nconst Utils$1 = utils$1;\nconst ECLevel = errorCorrectionLevel;\nconst BitBuffer = bitBuffer;\nconst BitMatrix = bitMatrix;\nconst AlignmentPattern = alignmentPattern;\nconst FinderPattern = finderPattern;\nconst MaskPattern = maskPattern;\nconst ECCode = errorCorrectionCode;\nconst ReedSolomonEncoder = reedSolomonEncoder;\nconst Version = version;\nconst FormatInfo = formatInfo;\nconst Mode = mode;\nconst Segments = segments;\nfunction setupFinderPattern(matrix, version2) {\n const size = matrix.size;\n const pos = FinderPattern.getPositions(version2);\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0];\n const col = pos[i][1];\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue;\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue;\n if (r >= 0 && r <= 6 && (c === 0 || c === 6) || c >= 0 && c <= 6 && (r === 0 || r === 6) || r >= 2 && r <= 4 && c >= 2 && c <= 4) {\n matrix.set(row + r, col + c, true, true);\n } else {\n matrix.set(row + r, col + c, false, true);\n }\n }\n }\n }\n}\nfunction setupTimingPattern(matrix) {\n const size = matrix.size;\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0;\n matrix.set(r, 6, value, true);\n matrix.set(6, r, value, true);\n }\n}\nfunction setupAlignmentPattern(matrix, version2) {\n const pos = AlignmentPattern.getPositions(version2);\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0];\n const col = pos[i][1];\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 || r === 0 && c === 0) {\n matrix.set(row + r, col + c, true, true);\n } else {\n matrix.set(row + r, col + c, false, true);\n }\n }\n }\n }\n}\nfunction setupVersionInfo(matrix, version2) {\n const size = matrix.size;\n const bits = Version.getEncodedBits(version2);\n let row, col, mod;\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3);\n col = i % 3 + size - 8 - 3;\n mod = (bits >> i & 1) === 1;\n matrix.set(row, col, mod, true);\n matrix.set(col, row, mod, true);\n }\n}\nfunction setupFormatInfo(matrix, errorCorrectionLevel2, maskPattern2) {\n const size = matrix.size;\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel2, maskPattern2);\n let i, mod;\n for (i = 0; i < 15; i++) {\n mod = (bits >> i & 1) === 1;\n if (i < 6) {\n matrix.set(i, 8, mod, true);\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true);\n } else {\n matrix.set(size - 15 + i, 8, mod, true);\n }\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true);\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true);\n } else {\n matrix.set(8, 15 - i - 1, mod, true);\n }\n }\n matrix.set(size - 8, 8, 1, true);\n}\nfunction setupData(matrix, data) {\n const size = matrix.size;\n let inc = -1;\n let row = size - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--;\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false;\n if (byteIndex < data.length) {\n dark = (data[byteIndex] >>> bitIndex & 1) === 1;\n }\n matrix.set(row, col - c, dark);\n bitIndex--;\n if (bitIndex === -1) {\n byteIndex++;\n bitIndex = 7;\n }\n }\n }\n row += inc;\n if (row < 0 || size <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n}\nfunction createData(version2, errorCorrectionLevel2, segments2) {\n const buffer = new BitBuffer();\n segments2.forEach(function(data) {\n buffer.put(data.mode.bit, 4);\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version2));\n data.write(buffer);\n });\n const totalCodewords = Utils$1.getSymbolTotalCodewords(version2);\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version2, errorCorrectionLevel2);\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8;\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4);\n }\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0);\n }\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8;\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 17 : 236, 8);\n }\n return createCodewords(buffer, version2, errorCorrectionLevel2);\n}\nfunction createCodewords(bitBuffer2, version2, errorCorrectionLevel2) {\n const totalCodewords = Utils$1.getSymbolTotalCodewords(version2);\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version2, errorCorrectionLevel2);\n const dataTotalCodewords = totalCodewords - ecTotalCodewords;\n const ecTotalBlocks = ECCode.getBlocksCount(version2, errorCorrectionLevel2);\n const blocksInGroup2 = totalCodewords % ecTotalBlocks;\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2;\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks);\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks);\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1;\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1;\n const rs = new ReedSolomonEncoder(ecCount);\n let offset = 0;\n const dcData = new Array(ecTotalBlocks);\n const ecData = new Array(ecTotalBlocks);\n let maxDataSize = 0;\n const buffer = new Uint8Array(bitBuffer2.buffer);\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2;\n dcData[b] = buffer.slice(offset, offset + dataSize);\n ecData[b] = rs.encode(dcData[b]);\n offset += dataSize;\n maxDataSize = Math.max(maxDataSize, dataSize);\n }\n const data = new Uint8Array(totalCodewords);\n let index = 0;\n let i, r;\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i];\n }\n }\n }\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i];\n }\n }\n return data;\n}\nfunction createSymbol(data, version2, errorCorrectionLevel2, maskPattern2) {\n let segments2;\n if (Array.isArray(data)) {\n segments2 = Segments.fromArray(data);\n } else if (typeof data === \"string\") {\n let estimatedVersion = version2;\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data);\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel2);\n }\n segments2 = Segments.fromString(data, estimatedVersion || 40);\n } else {\n throw new Error(\"Invalid data\");\n }\n const bestVersion = Version.getBestVersionForData(segments2, errorCorrectionLevel2);\n if (!bestVersion) {\n throw new Error(\"The amount of data is too big to be stored in a QR Code\");\n }\n if (!version2) {\n version2 = bestVersion;\n } else if (version2 < bestVersion) {\n throw new Error(\n \"\\nThe chosen QR Code version cannot contain this amount of data.\\nMinimum version required to store current data is: \" + bestVersion + \".\\n\"\n );\n }\n const dataBits = createData(version2, errorCorrectionLevel2, segments2);\n const moduleCount = Utils$1.getSymbolSize(version2);\n const modules = new BitMatrix(moduleCount);\n setupFinderPattern(modules, version2);\n setupTimingPattern(modules);\n setupAlignmentPattern(modules, version2);\n setupFormatInfo(modules, errorCorrectionLevel2, 0);\n if (version2 >= 7) {\n setupVersionInfo(modules, version2);\n }\n setupData(modules, dataBits);\n if (isNaN(maskPattern2)) {\n maskPattern2 = MaskPattern.getBestMask(\n modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel2)\n );\n }\n MaskPattern.applyMask(maskPattern2, modules);\n setupFormatInfo(modules, errorCorrectionLevel2, maskPattern2);\n return {\n modules,\n version: version2,\n errorCorrectionLevel: errorCorrectionLevel2,\n maskPattern: maskPattern2,\n segments: segments2\n };\n}\nqrcode.create = function create(data, options) {\n if (typeof data === \"undefined\" || data === \"\") {\n throw new Error(\"No input text\");\n }\n let errorCorrectionLevel2 = ECLevel.M;\n let version2;\n let mask;\n if (typeof options !== \"undefined\") {\n errorCorrectionLevel2 = ECLevel.from(options.errorCorrectionLevel, ECLevel.M);\n version2 = Version.from(options.version);\n mask = MaskPattern.from(options.maskPattern);\n if (options.toSJISFunc) {\n Utils$1.setToSJISFunction(options.toSJISFunc);\n }\n }\n return createSymbol(data, version2, errorCorrectionLevel2, mask);\n};\nvar canvas = {};\nvar utils = {};\n(function(exports$1) {\n function hex2rgba(hex) {\n if (typeof hex === \"number\") {\n hex = hex.toString();\n }\n if (typeof hex !== \"string\") {\n throw new Error(\"Color should be defined as hex string\");\n }\n let hexCode = hex.slice().replace(\"#\", \"\").split(\"\");\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error(\"Invalid hex color: \" + hex);\n }\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function(c) {\n return [c, c];\n }));\n }\n if (hexCode.length === 6) hexCode.push(\"F\", \"F\");\n const hexValue = parseInt(hexCode.join(\"\"), 16);\n return {\n r: hexValue >> 24 & 255,\n g: hexValue >> 16 & 255,\n b: hexValue >> 8 & 255,\n a: hexValue & 255,\n hex: \"#\" + hexCode.slice(0, 6).join(\"\")\n };\n }\n exports$1.getOptions = function getOptions(options) {\n if (!options) options = {};\n if (!options.color) options.color = {};\n const margin = typeof options.margin === \"undefined\" || options.margin === null || options.margin < 0 ? 4 : options.margin;\n const width = options.width && options.width >= 21 ? options.width : void 0;\n const scale = options.scale || 4;\n return {\n width,\n scale: width ? 4 : scale,\n margin,\n color: {\n dark: hex2rgba(options.color.dark || \"#000000ff\"),\n light: hex2rgba(options.color.light || \"#ffffffff\")\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n };\n };\n exports$1.getScale = function getScale(qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2 ? opts.width / (qrSize + opts.margin * 2) : opts.scale;\n };\n exports$1.getImageWidth = function getImageWidth(qrSize, opts) {\n const scale = exports$1.getScale(qrSize, opts);\n return Math.floor((qrSize + opts.margin * 2) * scale);\n };\n exports$1.qrToImageData = function qrToImageData(imgData, qr, opts) {\n const size = qr.modules.size;\n const data = qr.modules.data;\n const scale = exports$1.getScale(size, opts);\n const symbolSize = Math.floor((size + opts.margin * 2) * scale);\n const scaledMargin = opts.margin * scale;\n const palette = [opts.color.light, opts.color.dark];\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4;\n let pxColor = opts.color.light;\n if (i >= scaledMargin && j >= scaledMargin && i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale);\n const jSrc = Math.floor((j - scaledMargin) / scale);\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0];\n }\n imgData[posDst++] = pxColor.r;\n imgData[posDst++] = pxColor.g;\n imgData[posDst++] = pxColor.b;\n imgData[posDst] = pxColor.a;\n }\n }\n };\n})(utils);\n(function(exports$1) {\n const Utils2 = utils;\n function clearCanvas(ctx, canvas2, size) {\n ctx.clearRect(0, 0, canvas2.width, canvas2.height);\n if (!canvas2.style) canvas2.style = {};\n canvas2.height = size;\n canvas2.width = size;\n canvas2.style.height = size + \"px\";\n canvas2.style.width = size + \"px\";\n }\n function getCanvasElement() {\n try {\n return document.createElement(\"canvas\");\n } catch (e) {\n throw new Error(\"You need to specify a canvas element\");\n }\n }\n exports$1.render = function render2(qrData, canvas2, options) {\n let opts = options;\n let canvasEl = canvas2;\n if (typeof opts === \"undefined\" && (!canvas2 || !canvas2.getContext)) {\n opts = canvas2;\n canvas2 = void 0;\n }\n if (!canvas2) {\n canvasEl = getCanvasElement();\n }\n opts = Utils2.getOptions(opts);\n const size = Utils2.getImageWidth(qrData.modules.size, opts);\n const ctx = canvasEl.getContext(\"2d\");\n const image = ctx.createImageData(size, size);\n Utils2.qrToImageData(image.data, qrData, opts);\n clearCanvas(ctx, canvasEl, size);\n ctx.putImageData(image, 0, 0);\n return canvasEl;\n };\n exports$1.renderToDataURL = function renderToDataURL(qrData, canvas2, options) {\n let opts = options;\n if (typeof opts === \"undefined\" && (!canvas2 || !canvas2.getContext)) {\n opts = canvas2;\n canvas2 = void 0;\n }\n if (!opts) opts = {};\n const canvasEl = exports$1.render(qrData, canvas2, opts);\n const type = opts.type || \"image/png\";\n const rendererOpts = opts.rendererOpts || {};\n return canvasEl.toDataURL(type, rendererOpts.quality);\n };\n})(canvas);\nvar svgTag = {};\nconst Utils = utils;\nfunction getColorAttrib(color, attrib) {\n const alpha = color.a / 255;\n const str = attrib + '=\"' + color.hex + '\"';\n return alpha < 1 ? str + \" \" + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"' : str;\n}\nfunction svgCmd(cmd, x, y) {\n let str = cmd + x;\n if (typeof y !== \"undefined\") str += \" \" + y;\n return str;\n}\nfunction qrToPath(data, size, margin) {\n let path = \"\";\n let moveBy = 0;\n let newRow = false;\n let lineLength = 0;\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size);\n const row = Math.floor(i / size);\n if (!col && !newRow) newRow = true;\n if (data[i]) {\n lineLength++;\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow ? svgCmd(\"M\", col + margin, 0.5 + row + margin) : svgCmd(\"m\", moveBy, 0);\n moveBy = 0;\n newRow = false;\n }\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd(\"h\", lineLength);\n lineLength = 0;\n }\n } else {\n moveBy++;\n }\n }\n return path;\n}\nsvgTag.render = function render(qrData, options, cb) {\n const opts = Utils.getOptions(options);\n const size = qrData.modules.size;\n const data = qrData.modules.data;\n const qrcodesize = size + opts.margin * 2;\n const bg = !opts.color.light.a ? \"\" : \"<path \" + getColorAttrib(opts.color.light, \"fill\") + ' d=\"M0 0h' + qrcodesize + \"v\" + qrcodesize + 'H0z\"/>';\n const path = \"<path \" + getColorAttrib(opts.color.dark, \"stroke\") + ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>';\n const viewBox = 'viewBox=\"0 0 ' + qrcodesize + \" \" + qrcodesize + '\"';\n const width = !opts.width ? \"\" : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" ';\n const svgTag2 = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + \"</svg>\\n\";\n if (typeof cb === \"function\") {\n cb(null, svgTag2);\n }\n return svgTag2;\n};\nconst canPromise = canPromise$1;\nconst QRCode = qrcode;\nconst CanvasRenderer = canvas;\nconst SvgRenderer = svgTag;\nfunction renderCanvas(renderFunc, canvas2, text, opts, cb) {\n const args = [].slice.call(arguments, 1);\n const argsNum = args.length;\n const isLastArgCb = typeof args[argsNum - 1] === \"function\";\n if (!isLastArgCb && !canPromise()) {\n throw new Error(\"Callback required as last argument\");\n }\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error(\"Too few arguments provided\");\n }\n if (argsNum === 2) {\n cb = text;\n text = canvas2;\n canvas2 = opts = void 0;\n } else if (argsNum === 3) {\n if (canvas2.getContext && typeof cb === \"undefined\") {\n cb = opts;\n opts = void 0;\n } else {\n cb = opts;\n opts = text;\n text = canvas2;\n canvas2 = void 0;\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error(\"Too few arguments provided\");\n }\n if (argsNum === 1) {\n text = canvas2;\n canvas2 = opts = void 0;\n } else if (argsNum === 2 && !canvas2.getContext) {\n opts = text;\n text = canvas2;\n canvas2 = void 0;\n }\n return new Promise(function(resolve, reject) {\n try {\n const data = QRCode.create(text, opts);\n resolve(renderFunc(data, canvas2, opts));\n } catch (e) {\n reject(e);\n }\n });\n }\n try {\n const data = QRCode.create(text, opts);\n cb(null, renderFunc(data, canvas2, opts));\n } catch (e) {\n cb(e);\n }\n}\nbrowser.create = QRCode.create;\nbrowser.toCanvas = renderCanvas.bind(null, CanvasRenderer.render);\nbrowser.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL);\nbrowser.toString = renderCanvas.bind(null, function(data, _, opts) {\n return SvgRenderer.render(data, opts);\n});\nasync function generateQRCode(data) {\n try {\n const dataUrl = await browser.toDataURL(data, {\n errorCorrectionLevel: \"M\",\n margin: 2,\n width: 300,\n color: {\n dark: \"#000000\",\n light: \"#FFFFFF\"\n }\n });\n return dataUrl;\n } catch (error) {\n console.error(\"QR code generation failed:\", error);\n throw new Error(\"Failed to generate QR code\");\n }\n}\nasync function generateQRCanvas(data, canvas2) {\n try {\n await browser.toCanvas(canvas2, data, {\n errorCorrectionLevel: \"M\",\n margin: 2,\n width: 300,\n color: {\n dark: \"#000000\",\n light: \"#FFFFFF\"\n }\n });\n } catch (error) {\n console.error(\"QR code generation failed:\", error);\n throw new Error(\"Failed to generate QR code\");\n }\n}\nasync function generateQRSVG(data) {\n try {\n const svg = await browser.toString(data, {\n type: \"svg\",\n errorCorrectionLevel: \"M\",\n margin: 2,\n width: 300,\n color: {\n dark: \"#000000\",\n light: \"#FFFFFF\"\n }\n });\n return svg;\n } catch (error) {\n console.error(\"QR code generation failed:\", error);\n throw new Error(\"Failed to generate QR code\");\n }\n}\nasync function pollRequestStatus(apiUrl, requestId, options = {}) {\n const {\n interval = 2e3,\n timeout = 18e4,\n signal,\n onStatusChange\n } = options;\n const startTime = Date.now();\n while (true) {\n if (signal == null ? void 0 : signal.aborted) {\n throw new Error(\"Polling cancelled\");\n }\n if (Date.now() - startTime > timeout) {\n throw new Error(\"Polling timeout\");\n }\n try {\n const response = await fetch(\n `${apiUrl}/api/onetapforms/requests/${requestId}/status`,\n { signal }\n );\n if (!response.ok) {\n throw new Error(`Status check failed: ${response.statusText}`);\n }\n const status = await response.json();\n if (onStatusChange) {\n onStatusChange(status);\n }\n if (status.approved || status.status === \"completed\" || status.status === \"approved\" || status.status === \"denied\" || status.status === \"expired\") {\n return status;\n }\n await sleep(interval, signal);\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n throw error;\n }\n console.error(\"Polling error:\", error);\n await sleep(interval, signal);\n }\n }\n}\nfunction sleep(ms, signal) {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(resolve, ms);\n if (signal) {\n signal.addEventListener(\"abort\", () => {\n clearTimeout(timer);\n reject(new Error(\"Aborted\"));\n });\n }\n });\n}\nclass OneTapForms {\n constructor(config) {\n this.activePolling = null;\n this.config = {\n apiUrl: \"https://api.onetapforms.com\",\n clientId: config.clientId,\n clientSecret: config.clientSecret,\n // Default to clientId as API key for legacy auth\n apiKey: config.apiKey ?? config.clientId,\n debug: false,\n ...config\n };\n const safeConfig = {\n ...this.config,\n apiKey: this.config.apiKey ? \"[REDACTED]\" : void 0,\n clientSecret: this.config.clientSecret ? \"[REDACTED]\" : void 0\n };\n this.log(\"OneTap Forms SDK initialized\", safeConfig);\n }\n buildAuthHeaders() {\n if (this.config.clientId && this.config.clientSecret) {\n return {\n \"X-Client-ID\": this.config.clientId,\n \"X-Client-Secret\": this.config.clientSecret\n };\n }\n if (this.config.apiKey) {\n return {\n \"X-API-Key\": this.config.apiKey\n };\n }\n return null;\n }\n /**\n * Create a form completion request\n */\n async request(options) {\n try {\n this.log(\"Creating request\", options);\n const deviceType = detectDevice();\n let effectiveMode = \"qr\";\n if (options.mode === \"auto\") {\n effectiveMode = deviceType === \"mobile\" ? \"redirect\" : \"qr\";\n } else if (options.mode === \"redirect\") {\n effectiveMode = \"redirect\";\n } else if (options.mode === \"qr\") {\n effectiveMode = \"qr\";\n }\n this.log(\"Effective mode:\", effectiveMode, \"Device:\", deviceType);\n const response = await this.createRequest({\n clientId: this.config.clientId,\n schemaId: options.schemaId,\n purpose: options.purpose,\n returnUrl: options.returnUrl,\n requestedBundles: options.bundles,\n requestedFields: options.fields,\n mode: effectiveMode,\n metadata: options.metadata,\n customization: options.customization\n });\n this.log(\"Request created:\", response);\n if (effectiveMode === \"redirect\" && response.redirectUrl) {\n this.handleRedirect(response.redirectUrl);\n } else if (effectiveMode === \"qr\" && response.qrCodeData) {\n await this.handleQR(response, options);\n } else if (response.qrCodeData) {\n // Fallback: if qrCodeData exists, use QR flow\n await this.handleQR(response, options);\n }\n } catch (error) {\n this.log(\"Error creating request:\", error);\n if (options.onError) {\n options.onError(\n error instanceof Error ? error : new Error(\"Unknown error\")\n );\n }\n throw error;\n }\n }\n /**\n * Handle redirect flow (mobile)\n */\n handleRedirect(redirectUrl) {\n this.log(\"Redirecting to:\", redirectUrl);\n window.location.href = redirectUrl;\n }\n /**\n * Handle QR code flow (desktop)\n */\n async handleQR(response, options) {\n const qrDataUrl = await generateQRCode(response.qrCodeData);\n this.log(\"QR code generated\");\n if (options.onQRReady) {\n options.onQRReady(qrDataUrl);\n }\n this.activePolling = new AbortController();\n try {\n const status = await pollRequestStatus(\n this.config.apiUrl,\n response.requestId,\n {\n signal: this.activePolling.signal,\n onStatusChange: (status2) => {\n this.log(\"Status update:\", status2);\n }\n }\n );\n if ((status.approved || status.status === \"completed\" || status.status === \"approved\") && status.exchangeToken) {\n this.log(\"Request approved, token received\");\n if (options.onComplete) {\n options.onComplete({\n token: status.exchangeToken,\n requestId: response.requestId\n });\n }\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n this.log(\"Polling cancelled\");\n return;\n }\n this.log(\"Polling error:\", error);\n if (options.onError) {\n options.onError(\n error instanceof Error ? error : new Error(\"Polling failed\")\n );\n }\n }\n }\n /**\n * Cancel active polling (useful for cleanup)\n */\n cancelPolling() {\n if (this.activePolling) {\n this.activePolling.abort();\n this.activePolling = null;\n }\n }\n /**\n * Handle callback from redirect flow\n * Call this when user returns to your site with token in URL\n */\n handleCallback() {\n const params = new URLSearchParams(window.location.search);\n const token = params.get(\"token\");\n const requestId = params.get(\"requestId\");\n if (token && requestId) {\n this.log(\"Callback received with token\");\n return { token, requestId };\n }\n return null;\n }\n /**\n * Exchange token for user data (server-side only!)\n * This should be called from your backend, not the browser\n */\n async exchangeToken(token) {\n this.log(\"Exchanging token (Note: This should be done server-side!)\");\n const authHeaders = this.buildAuthHeaders();\n if (!authHeaders) {\n throw new Error(\"Client credentials are required\");\n }\n const response = await fetch(`${this.config.apiUrl}/api/onetapforms/exchange`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...authHeaders\n },\n body: JSON.stringify({ token })\n });\n if (!response.ok) {\n throw new Error(`Token exchange failed: ${response.statusText}`);\n }\n const result = await response.json();\n return result.data;\n }\n /**\n * Create request via API\n */\n async createRequest(body) {\n const authHeaders = this.buildAuthHeaders();\n if (!authHeaders) {\n throw new Error(\"Client credentials are required\");\n }\n const response = await fetch(`${this.config.apiUrl}/api/onetapforms/requests`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...authHeaders\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n const error = await response.json();\n throw new Error(error.message || \"Failed to create request\");\n }\n return response.json();\n }\n /**\n * Debug logging\n */\n log(message, ...args) {\n if (this.config.debug) {\n console.log(`[OneTapForms] ${message}`, ...args);\n }\n }\n}\nfunction autofillFields(options) {\n const { mappings, data, triggerEvents = true, clearExisting = false } = options;\n for (const mapping of mappings) {\n try {\n const element = document.querySelector(mapping.selector);\n if (!element) {\n console.warn(`Element not found: ${mapping.selector}`);\n continue;\n }\n const value = getNestedValue(data, mapping.dataPath);\n if (value === null || value === void 0) {\n console.warn(`No value found for path: ${mapping.dataPath}`);\n continue;\n }\n const stringValue = mapping.transform ? mapping.transform(value) : String(value);\n if (element instanceof HTMLInputElement) {\n fillInput(element, stringValue, { triggerEvents, clearExisting });\n } else if (element instanceof HTMLTextAreaElement) {\n fillTextarea(element, stringValue, { triggerEvents, clearExisting });\n } else if (element instanceof HTMLSelectElement) {\n fillSelect(element, stringValue, { triggerEvents, clearExisting });\n } else {\n console.warn(`Unsupported element type: ${element.tagName}`);\n }\n } catch (error) {\n console.error(`Error filling field ${mapping.selector}:`, error);\n }\n }\n}\nfunction fillInput(input, value, options) {\n if (!options.clearExisting && input.value) {\n return;\n }\n input.value = value;\n if (options.triggerEvents) {\n input.dispatchEvent(new Event(\"input\", { bubbles: true }));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n}\nfunction fillTextarea(textarea, value, options) {\n if (!options.clearExisting && textarea.value) {\n return;\n }\n textarea.value = value;\n if (options.triggerEvents) {\n textarea.dispatchEvent(new Event(\"input\", { bubbles: true }));\n textarea.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n}\nfunction fillSelect(select, value, options) {\n if (!options.clearExisting && select.value) {\n return;\n }\n const option = Array.from(select.options).find(\n (opt) => opt.value === value || opt.text === value\n );\n if (option) {\n select.value = option.value;\n if (options.triggerEvents) {\n select.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n } else {\n console.warn(`No matching option found in select for value: ${value}`);\n }\n}\nfunction getNestedValue(obj, path) {\n const parts = path.split(\".\");\n let current = obj;\n for (const part of parts) {\n if (current === null || current === void 0) {\n return void 0;\n }\n if (typeof current === \"object\" && part in current) {\n current = current[part];\n } else {\n return void 0;\n }\n }\n return current;\n}\nfunction createJobApplicationMappings() {\n return [\n // Name fields\n { selector: 'input[name=\"firstName\"]', dataPath: \"name.first\" },\n { selector: 'input[name=\"first_name\"]', dataPath: \"name.first\" },\n { selector: 'input[name=\"lastName\"]', dataPath: \"name.last\" },\n { selector: 'input[name=\"last_name\"]', dataPath: \"name.last\" },\n { selector: 'input[name=\"fullName\"]', dataPath: \"name\", transform: (val) => {\n const name = val;\n return `${name.first} ${name.last}`;\n } },\n // Email\n { selector: 'input[type=\"email\"]', dataPath: \"email\" },\n { selector: 'input[name=\"email\"]', dataPath: \"email\" },\n // Phone\n { selector: 'input[type=\"tel\"]', dataPath: \"phone\" },\n { selector: 'input[name=\"phone\"]', dataPath: \"phone\" },\n // Location\n { selector: 'input[name=\"city\"]', dataPath: \"location.city\" },\n { selector: 'input[name=\"state\"]', dataPath: \"location.state\" },\n // Resume URL (hidden field or display)\n { selector: 'input[name=\"resumeUrl\"]', dataPath: \"documents.resume.url\" }\n ];\n}\nfunction autofillJobApplication(data) {\n autofillFields({\n mappings: createJobApplicationMappings(),\n data,\n triggerEvents: true,\n clearExisting: false\n });\n}\nexport {\n OneTapForms,\n autofillFields,\n autofillJobApplication,\n createJobApplicationMappings,\n OneTapForms as default,\n detectDevice,\n generateQRCanvas,\n generateQRCode,\n generateQRSVG,\n getBrowserName,\n isIOSBrowser,\n pollRequestStatus,\n supportsUniversalLinks\n};\n//# sourceMappingURL=onetapforms.es.js.map\n","import type { OneTapFormsConfig, RequestOptions, CompletionResult } from './types';\nimport { OneTapForms as OneTapFormsImpl } from './onetapforms.js';\n\n/**\n * OneTapForms SDK class for secure, biometric-authenticated form completion\n */\nexport class OneTapForms {\n private instance: any;\n\n constructor(config: OneTapFormsConfig) {\n this.instance = new OneTapFormsImpl(config);\n }\n\n /**\n * Create a form completion request\n */\n async request(options: RequestOptions): Promise<void> {\n return this.instance.request(options);\n }\n\n /**\n * Cancel active polling (useful for cleanup)\n */\n cancelPolling(): void {\n return this.instance.cancelPolling();\n }\n\n /**\n * Handle callback from redirect flow\n * Call this when user returns to your site with token in URL\n */\n handleCallback(): CompletionResult | null {\n return this.instance.handleCallback();\n }\n\n /**\n * Exchange token for user data (server-side only!)\n * This should be called from your backend, not the browser\n */\n async exchangeToken(token: string): Promise<any> {\n return this.instance.exchangeToken(token);\n }\n\n /**\n * Get the App Store URL for downloading OneTapForms app\n * Use this to encourage users to download the app for faster form completion\n */\n getAppDownloadUrl(): string {\n return 'https://apps.apple.com/app/onetapforms';\n }\n\n /**\n * Show a prompt encouraging users to download the OneTapForms app\n * This helps developers get faster form completion and better conversion rates\n *\n * @param options Customization options for the prompt\n */\n showDownloadPrompt(options?: {\n title?: string;\n message?: string;\n buttonText?: string;\n onDismiss?: () => void;\n }): void {\n if (typeof window === 'undefined') {\n return; // Server-side, do nothing\n }\n\n const title = options?.title || 'Download OneTapForms for Faster Form Completion';\n const message = options?.message ||\n 'Complete forms in seconds with one tap! Download the OneTapForms app to instantly fill forms using Face ID/Touch ID.';\n const buttonText = options?.buttonText || 'Download App';\n const appUrl = this.getAppDownloadUrl();\n\n // Create a simple modal/prompt\n const modal = document.createElement('div');\n modal.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n `;\n\n const content = document.createElement('div');\n content.style.cssText = `\n background: white;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n margin: 20px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\n `;\n\n const titleEl = document.createElement('h3');\n titleEl.textContent = title;\n titleEl.style.cssText = `\n margin: 0 0 12px 0;\n font-size: 20px;\n font-weight: 600;\n color: #1a1a1a;\n `;\n\n const messageEl = document.createElement('p');\n messageEl.textContent = message;\n messageEl.style.cssText = `\n margin: 0 0 20px 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n `;\n\n const buttonContainer = document.createElement('div');\n buttonContainer.style.cssText = `\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n `;\n\n const dismissBtn = document.createElement('button');\n dismissBtn.textContent = 'Maybe Later';\n dismissBtn.style.cssText = `\n padding: 10px 20px;\n border: 1px solid #ddd;\n background: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n color: #666;\n `;\n dismissBtn.onclick = () => {\n document.body.removeChild(modal);\n if (options?.onDismiss) {\n options.onDismiss();\n }\n };\n\n const downloadBtn = document.createElement('button');\n downloadBtn.textContent = buttonText;\n downloadBtn.style.cssText = `\n padding: 10px 20px;\n border: none;\n background: #007AFF;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n `;\n downloadBtn.onclick = () => {\n window.open(appUrl, '_blank');\n document.body.removeChild(modal);\n };\n\n buttonContainer.appendChild(dismissBtn);\n buttonContainer.appendChild(downloadBtn);\n\n content.appendChild(titleEl);\n content.appendChild(messageEl);\n content.appendChild(buttonContainer);\n modal.appendChild(content);\n\n // Close on background click\n modal.onclick = (e) => {\n if (e.target === modal) {\n document.body.removeChild(modal);\n if (options?.onDismiss) {\n options.onDismiss();\n }\n }\n };\n\n document.body.appendChild(modal);\n }\n}\n\nexport default OneTapForms;\n"],"names":["OneTapFormsImpl"],"mappings":"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,CAAC;AACH,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE;AACF,CAAC;AACD,MAAM,kBAAkB,GAAG;AAC3B;AACA,EAAE,CAAC;AACH,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,EAAE;AACJ,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,IAAI;AACN,EAAE,IAAI;AACN,EAAE,GAAG;AACL,E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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { OneTapForms, default } from './
|
|
1
|
+
export { OneTapForms, default } from './sdk';
|
|
2
2
|
export type { OneTapFormsConfig, RequestOptions, CompletionResult } from './types';
|
package/dist/index.esm.js
CHANGED
|
@@ -1,30 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// Lazy load the JS implementation
|
|
4
|
-
function getOneTapFormsClass() {
|
|
5
|
-
if (!OneTapFormsJS) {
|
|
6
|
-
// In browser/build environment, this will be resolved at build time
|
|
7
|
-
// The bundled JS file exports OneTapForms as a class
|
|
8
|
-
if (typeof window !== 'undefined') {
|
|
9
|
-
// Browser environment - use global or import
|
|
10
|
-
const module = require('./onetapforms.js');
|
|
11
|
-
OneTapFormsJS = module.OneTapForms || module.default;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
// Node environment
|
|
15
|
-
const module = require('./onetapforms.js');
|
|
16
|
-
OneTapFormsJS = module.OneTapForms || module.default;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return OneTapFormsJS;
|
|
20
|
-
}
|
|
1
|
+
import { OneTapForms as OneTapForms$1 } from './onetapforms.js';
|
|
2
|
+
|
|
21
3
|
/**
|
|
22
4
|
* OneTapForms SDK class for secure, biometric-authenticated form completion
|
|
23
5
|
*/
|
|
24
6
|
class OneTapForms {
|
|
25
7
|
constructor(config) {
|
|
26
|
-
|
|
27
|
-
this.instance = new OneTapFormsClass(config);
|
|
8
|
+
this.instance = new OneTapForms$1(config);
|
|
28
9
|
}
|
|
29
10
|
/**
|
|
30
11
|
* Create a form completion request
|
|
@@ -170,17 +151,6 @@ class OneTapForms {
|
|
|
170
151
|
};
|
|
171
152
|
document.body.appendChild(modal);
|
|
172
153
|
}
|
|
173
|
-
/**
|
|
174
|
-
* Check if the user likely has the OneTapForms app installed
|
|
175
|
-
* Returns true if on iOS and Universal Links are supported
|
|
176
|
-
*/
|
|
177
|
-
isAppLikelyInstalled() {
|
|
178
|
-
if (typeof window === 'undefined' || typeof navigator === 'undefined') {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
const userAgent = navigator.userAgent || '';
|
|
182
|
-
return /iPhone|iPad|iPod/i.test(userAgent);
|
|
183
|
-
}
|
|
184
154
|
}
|
|
185
155
|
|
|
186
156
|
export { OneTapForms, OneTapForms as default };
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/sdk.ts"],"sourcesContent":["import type { OneTapFormsConfig, RequestOptions, CompletionResult } from './types';\nimport { OneTapForms as OneTapFormsImpl } from './onetapforms.js';\n\n/**\n * OneTapForms SDK class for secure, biometric-authenticated form completion\n */\nexport class OneTapForms {\n private instance: any;\n\n constructor(config: OneTapFormsConfig) {\n this.instance = new OneTapFormsImpl(config);\n }\n\n /**\n * Create a form completion request\n */\n async request(options: RequestOptions): Promise<void> {\n return this.instance.request(options);\n }\n\n /**\n * Cancel active polling (useful for cleanup)\n */\n cancelPolling(): void {\n return this.instance.cancelPolling();\n }\n\n /**\n * Handle callback from redirect flow\n * Call this when user returns to your site with token in URL\n */\n handleCallback(): CompletionResult | null {\n return this.instance.handleCallback();\n }\n\n /**\n * Exchange token for user data (server-side only!)\n * This should be called from your backend, not the browser\n */\n async exchangeToken(token: string): Promise<any> {\n return this.instance.exchangeToken(token);\n }\n\n /**\n * Get the App Store URL for downloading OneTapForms app\n * Use this to encourage users to download the app for faster form completion\n */\n getAppDownloadUrl(): string {\n return 'https://apps.apple.com/app/onetapforms';\n }\n\n /**\n * Show a prompt encouraging users to download the OneTapForms app\n * This helps developers get faster form completion and better conversion rates\n *\n * @param options Customization options for the prompt\n */\n showDownloadPrompt(options?: {\n title?: string;\n message?: string;\n buttonText?: string;\n onDismiss?: () => void;\n }): void {\n if (typeof window === 'undefined') {\n return; // Server-side, do nothing\n }\n\n const title = options?.title || 'Download OneTapForms for Faster Form Completion';\n const message = options?.message ||\n 'Complete forms in seconds with one tap! Download the OneTapForms app to instantly fill forms using Face ID/Touch ID.';\n const buttonText = options?.buttonText || 'Download App';\n const appUrl = this.getAppDownloadUrl();\n\n // Create a simple modal/prompt\n const modal = document.createElement('div');\n modal.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n `;\n\n const content = document.createElement('div');\n content.style.cssText = `\n background: white;\n padding: 24px;\n border-radius: 12px;\n max-width: 400px;\n margin: 20px;\n box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\n `;\n\n const titleEl = document.createElement('h3');\n titleEl.textContent = title;\n titleEl.style.cssText = `\n margin: 0 0 12px 0;\n font-size: 20px;\n font-weight: 600;\n color: #1a1a1a;\n `;\n\n const messageEl = document.createElement('p');\n messageEl.textContent = message;\n messageEl.style.cssText = `\n margin: 0 0 20px 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n `;\n\n const buttonContainer = document.createElement('div');\n buttonContainer.style.cssText = `\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n `;\n\n const dismissBtn = document.createElement('button');\n dismissBtn.textContent = 'Maybe Later';\n dismissBtn.style.cssText = `\n padding: 10px 20px;\n border: 1px solid #ddd;\n background: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n color: #666;\n `;\n dismissBtn.onclick = () => {\n document.body.removeChild(modal);\n if (options?.onDismiss) {\n options.onDismiss();\n }\n };\n\n const downloadBtn = document.createElement('button');\n downloadBtn.textContent = buttonText;\n downloadBtn.style.cssText = `\n padding: 10px 20px;\n border: none;\n background: #007AFF;\n color: white;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n `;\n downloadBtn.onclick = () => {\n window.open(appUrl, '_blank');\n document.body.removeChild(modal);\n };\n\n buttonContainer.appendChild(dismissBtn);\n buttonContainer.appendChild(downloadBtn);\n\n content.appendChild(titleEl);\n content.appendChild(messageEl);\n content.appendChild(buttonContainer);\n modal.appendChild(content);\n\n // Close on background click\n modal.onclick = (e) => {\n if (e.target === modal) {\n document.body.removeChild(modal);\n if (options?.onDismiss) {\n options.onDismiss();\n }\n }\n };\n\n document.body.appendChild(modal);\n }\n}\n\nexport default OneTapForms;\n"],"names":["OneTapFormsImpl"],"mappings":"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"}
|
package/dist/onetapforms.js
CHANGED
|
@@ -2098,12 +2098,33 @@ class OneTapForms {
|
|
|
2098
2098
|
this.activePolling = null;
|
|
2099
2099
|
this.config = {
|
|
2100
2100
|
apiUrl: "https://api.onetapforms.com",
|
|
2101
|
-
|
|
2102
|
-
|
|
2101
|
+
clientId: config.clientId,
|
|
2102
|
+
clientSecret: config.clientSecret,
|
|
2103
|
+
// Default to clientId as API key for legacy auth
|
|
2104
|
+
apiKey: config.apiKey ?? config.clientId,
|
|
2103
2105
|
debug: false,
|
|
2104
2106
|
...config
|
|
2105
2107
|
};
|
|
2106
|
-
|
|
2108
|
+
const safeConfig = {
|
|
2109
|
+
...this.config,
|
|
2110
|
+
apiKey: this.config.apiKey ? "[REDACTED]" : void 0,
|
|
2111
|
+
clientSecret: this.config.clientSecret ? "[REDACTED]" : void 0
|
|
2112
|
+
};
|
|
2113
|
+
this.log("OneTap Forms SDK initialized", safeConfig);
|
|
2114
|
+
}
|
|
2115
|
+
buildAuthHeaders() {
|
|
2116
|
+
if (this.config.clientId && this.config.clientSecret) {
|
|
2117
|
+
return {
|
|
2118
|
+
"X-Client-ID": this.config.clientId,
|
|
2119
|
+
"X-Client-Secret": this.config.clientSecret
|
|
2120
|
+
};
|
|
2121
|
+
}
|
|
2122
|
+
if (this.config.apiKey) {
|
|
2123
|
+
return {
|
|
2124
|
+
"X-API-Key": this.config.apiKey
|
|
2125
|
+
};
|
|
2126
|
+
}
|
|
2127
|
+
return null;
|
|
2107
2128
|
}
|
|
2108
2129
|
/**
|
|
2109
2130
|
* Create a form completion request
|
|
@@ -2230,11 +2251,15 @@ class OneTapForms {
|
|
|
2230
2251
|
*/
|
|
2231
2252
|
async exchangeToken(token) {
|
|
2232
2253
|
this.log("Exchanging token (Note: This should be done server-side!)");
|
|
2254
|
+
const authHeaders = this.buildAuthHeaders();
|
|
2255
|
+
if (!authHeaders) {
|
|
2256
|
+
throw new Error("Client credentials are required");
|
|
2257
|
+
}
|
|
2233
2258
|
const response = await fetch(`${this.config.apiUrl}/api/onetapforms/exchange`, {
|
|
2234
2259
|
method: "POST",
|
|
2235
2260
|
headers: {
|
|
2236
2261
|
"Content-Type": "application/json",
|
|
2237
|
-
|
|
2262
|
+
...authHeaders
|
|
2238
2263
|
},
|
|
2239
2264
|
body: JSON.stringify({ token })
|
|
2240
2265
|
});
|
|
@@ -2248,11 +2273,15 @@ class OneTapForms {
|
|
|
2248
2273
|
* Create request via API
|
|
2249
2274
|
*/
|
|
2250
2275
|
async createRequest(body) {
|
|
2276
|
+
const authHeaders = this.buildAuthHeaders();
|
|
2277
|
+
if (!authHeaders) {
|
|
2278
|
+
throw new Error("Client credentials are required");
|
|
2279
|
+
}
|
|
2251
2280
|
const response = await fetch(`${this.config.apiUrl}/api/onetapforms/requests`, {
|
|
2252
2281
|
method: "POST",
|
|
2253
2282
|
headers: {
|
|
2254
2283
|
"Content-Type": "application/json",
|
|
2255
|
-
|
|
2284
|
+
...authHeaders
|
|
2256
2285
|
},
|
|
2257
2286
|
body: JSON.stringify(body)
|
|
2258
2287
|
});
|
package/dist/sdk.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { OneTapFormsConfig, RequestOptions, CompletionResult } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* OneTapForms SDK class for secure, biometric-authenticated form completion
|
|
4
|
+
*/
|
|
5
|
+
export declare class OneTapForms {
|
|
6
|
+
private instance;
|
|
7
|
+
constructor(config: OneTapFormsConfig);
|
|
8
|
+
/**
|
|
9
|
+
* Create a form completion request
|
|
10
|
+
*/
|
|
11
|
+
request(options: RequestOptions): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Cancel active polling (useful for cleanup)
|
|
14
|
+
*/
|
|
15
|
+
cancelPolling(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Handle callback from redirect flow
|
|
18
|
+
* Call this when user returns to your site with token in URL
|
|
19
|
+
*/
|
|
20
|
+
handleCallback(): CompletionResult | null;
|
|
21
|
+
/**
|
|
22
|
+
* Exchange token for user data (server-side only!)
|
|
23
|
+
* This should be called from your backend, not the browser
|
|
24
|
+
*/
|
|
25
|
+
exchangeToken(token: string): Promise<any>;
|
|
26
|
+
/**
|
|
27
|
+
* Get the App Store URL for downloading OneTapForms app
|
|
28
|
+
* Use this to encourage users to download the app for faster form completion
|
|
29
|
+
*/
|
|
30
|
+
getAppDownloadUrl(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Show a prompt encouraging users to download the OneTapForms app
|
|
33
|
+
* This helps developers get faster form completion and better conversion rates
|
|
34
|
+
*
|
|
35
|
+
* @param options Customization options for the prompt
|
|
36
|
+
*/
|
|
37
|
+
showDownloadPrompt(options?: {
|
|
38
|
+
title?: string;
|
|
39
|
+
message?: string;
|
|
40
|
+
buttonText?: string;
|
|
41
|
+
onDismiss?: () => void;
|
|
42
|
+
}): void;
|
|
43
|
+
}
|
|
44
|
+
export default OneTapForms;
|
package/dist/types.d.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
export interface OneTapFormsConfig {
|
|
5
5
|
/** Your client ID provided by Createlex LLC */
|
|
6
6
|
clientId: string;
|
|
7
|
+
/** Your client secret provided by Createlex LLC (recommended for server-authenticated flows) */
|
|
8
|
+
clientSecret?: string;
|
|
7
9
|
/** API URL (defaults to https://api.createlex.com) */
|
|
8
10
|
apiUrl?: string;
|
|
9
11
|
/** API key (optional, defaults to clientId) */
|