@hopeplayer/core 1.0.17 → 1.1.0
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/dist/HopePlayerElement.d.ts +4 -0
- package/dist/HopePlayerElement.d.ts.map +1 -1
- package/dist/chunks/{adTriggers-4SueRFgK.js → adTriggers-DXmtF4t2.js} +112 -117
- package/dist/chunks/adTriggers-DXmtF4t2.js.map +1 -0
- package/dist/chunks/{ads-DPL7m9PV.js → ads-BZYADoen.js} +2 -2
- package/dist/chunks/{ads-DPL7m9PV.js.map → ads-BZYADoen.js.map} +1 -1
- package/dist/chunks/{cast-DCAT2agI.js → cast-BGgfNj37.js} +70 -66
- package/dist/chunks/cast-BGgfNj37.js.map +1 -0
- package/dist/chunks/hls-DAtZkTUi.js +45 -0
- package/dist/chunks/{hls-BOHE_fg_.js.map → hls-DAtZkTUi.js.map} +1 -1
- package/dist/chunks/hlsLight-CCe_8eOw.js +28 -0
- package/dist/chunks/hlsLight-CCe_8eOw.js.map +1 -0
- package/dist/chunks/{markers-DE4O8xbw.js → markers-u2bpLu30.js} +2 -2
- package/dist/chunks/{markers-DE4O8xbw.js.map → markers-u2bpLu30.js.map} +1 -1
- package/dist/chunks/{player-C886oKP-.js → player-B_e_Nnvb.js} +510 -435
- package/dist/chunks/player-B_e_Nnvb.js.map +1 -0
- package/dist/chunks/{playlist-CI3mRZjo.js → playlist-ClnEXcRy.js} +24 -24
- package/dist/chunks/playlist-ClnEXcRy.js.map +1 -0
- package/dist/chunks/{qrResume-BNy8XCp_.js → qrResume-DXwD3oSA.js} +29 -30
- package/dist/chunks/{qrResume-BNy8XCp_.js.map → qrResume-DXwD3oSA.js.map} +1 -1
- package/dist/chunks/{redirectScreen-CJ3q9OX4.js → redirectScreen-DZwpVYWk.js} +2 -2
- package/dist/chunks/{redirectScreen-CJ3q9OX4.js.map → redirectScreen-DZwpVYWk.js.map} +1 -1
- package/dist/chunks/{rewardedUnlock-EyGMB9PK.js → rewardedUnlock-DoRVfTlV.js} +2 -2
- package/dist/chunks/{rewardedUnlock-EyGMB9PK.js.map → rewardedUnlock-DoRVfTlV.js.map} +1 -1
- package/dist/chunks/seekWhenReady-Clzne3-S.js +32 -0
- package/dist/chunks/seekWhenReady-Clzne3-S.js.map +1 -0
- package/dist/chunks/{segments-C2HKU6XK.js → segments-DERcwNUG.js} +2 -2
- package/dist/chunks/{segments-C2HKU6XK.js.map → segments-DERcwNUG.js.map} +1 -1
- package/dist/chunks/skipSegments-XjblXCGo.js +122 -0
- package/dist/chunks/skipSegments-XjblXCGo.js.map +1 -0
- package/dist/chunks/{sponsorship-DyFwGmEb.js → sponsorship-BT21uwN5.js} +36 -41
- package/dist/chunks/sponsorship-BT21uwN5.js.map +1 -0
- package/dist/chunks/{spriteThumbnails-D0NQ5CCp.js → spriteThumbnails-y_JaE9LE.js} +2 -2
- package/dist/chunks/{spriteThumbnails-D0NQ5CCp.js.map → spriteThumbnails-y_JaE9LE.js.map} +1 -1
- package/dist/chunks/{story-D5Got6-6.js → story-UpOGg7Ch.js} +27 -15
- package/dist/chunks/story-UpOGg7Ch.js.map +1 -0
- package/dist/chunks/trackingPixel-D2wxdCEz.js +20 -0
- package/dist/chunks/trackingPixel-D2wxdCEz.js.map +1 -0
- package/dist/controls/SeekBar.d.ts.map +1 -1
- package/dist/controls/SettingsMenu.d.ts +16 -0
- package/dist/controls/SettingsMenu.d.ts.map +1 -1
- package/dist/hls/SourceManager.d.ts +2 -0
- package/dist/hls/SourceManager.d.ts.map +1 -1
- package/dist/hope-player.js +1 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/types.d.ts +5 -0
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/keyboard/KeyboardController.d.ts.map +1 -1
- package/dist/plugins/ad-triggers/AdTriggers.d.ts.map +1 -1
- package/dist/plugins/cast/CastController.d.ts.map +1 -1
- package/dist/plugins/playlist/PlaylistRunner.d.ts.map +1 -1
- package/dist/plugins/qr-resume/QrResume.d.ts.map +1 -1
- package/dist/plugins/shared/seekWhenReady.d.ts +22 -0
- package/dist/plugins/shared/seekWhenReady.d.ts.map +1 -0
- package/dist/plugins/shared/trackingPixel.d.ts +8 -0
- package/dist/plugins/shared/trackingPixel.d.ts.map +1 -0
- package/dist/plugins/skip-segments/SkipSegments.d.ts +40 -0
- package/dist/plugins/skip-segments/SkipSegments.d.ts.map +1 -0
- package/dist/plugins/skip-segments/index.d.ts +6 -0
- package/dist/plugins/skip-segments/index.d.ts.map +1 -0
- package/dist/plugins/sponsorship/SponsorshipLayer.d.ts.map +1 -1
- package/dist/plugins/story/HopeStory.d.ts +2 -0
- package/dist/plugins/story/HopeStory.d.ts.map +1 -1
- package/dist/screens/ErrorScreen.d.ts +7 -0
- package/dist/screens/ErrorScreen.d.ts.map +1 -1
- package/dist/types/index.d.ts +60 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/media-error.d.ts +10 -0
- package/dist/utils/media-error.d.ts.map +1 -0
- package/dist/utils/seek-by.d.ts +8 -0
- package/dist/utils/seek-by.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/chunks/adTriggers-4SueRFgK.js.map +0 -1
- package/dist/chunks/cast-DCAT2agI.js.map +0 -1
- package/dist/chunks/hls-BOHE_fg_.js +0 -24791
- package/dist/chunks/player-C886oKP-.js.map +0 -1
- package/dist/chunks/playlist-CI3mRZjo.js.map +0 -1
- package/dist/chunks/sponsorship-DyFwGmEb.js.map +0 -1
- package/dist/chunks/story-D5Got6-6.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrResume-BNy8XCp_.js","sources":["../../../../node_modules/qrcode-generator/dist/qrcode.mjs","../../src/plugins/qr-resume/qrSvg.ts","../../src/plugins/qr-resume/QrResume.ts","../../src/plugins/qr-resume/index.ts"],"sourcesContent":["//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\n//---------------------------------------------------------------------\n// qrcode\n//---------------------------------------------------------------------\n\n/**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\nexport const qrcode = function(typeNumber, errorCorrectionLevel) {\n\n const PAD0 = 0xEC;\n const PAD1 = 0x11;\n\n let _typeNumber = typeNumber;\n const _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n let _modules = null;\n let _moduleCount = 0;\n let _dataCache = null;\n const _dataList = [];\n\n const _this = {};\n\n const makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n const modules = new Array(moduleCount);\n for (let row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (let col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n const setupPositionProbePattern = function(row, col) {\n\n for (let r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (let c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n const getBestMaskPattern = function() {\n\n let minLostPoint = 0;\n let pattern = 0;\n\n for (let i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n const lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n const setupTimingPattern = function() {\n\n for (let r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (let c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n const setupPositionAdjustPattern = function() {\n\n const pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (let i = 0; i < pos.length; i += 1) {\n\n for (let j = 0; j < pos.length; j += 1) {\n\n const row = pos[i];\n const col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (let r = -2; r <= 2; r += 1) {\n\n for (let c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n const setupTypeNumber = function(test) {\n\n const bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n const setupTypeInfo = function(test, maskPattern) {\n\n const data = (_errorCorrectionLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n const mapData = function(data, maskPattern) {\n\n let inc = -1;\n let row = _moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n const maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (let col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (let c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n let dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n const mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n const createBytes = function(buffer, rsBlocks) {\n\n let offset = 0;\n\n let maxDcCount = 0;\n let maxEcCount = 0;\n\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n\n for (let r = 0; r < rsBlocks.length; r += 1) {\n\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (let i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i += 1) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n const data = new Array(totalCodeCount);\n let index = 0;\n\n for (let i = 0; i < maxDcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (let i = 0; i < maxEcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n const createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < dataList.length; i += 1) {\n const data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n let newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n let typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < _dataList.length; i++) {\n const data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n let qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (let r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (let c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n let opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n let c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n const c = Math.floor( (x - min) / cellSize);\n const r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n\n let img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n const escapeXml = function(s) {\n let escaped = '';\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n const _createHalfASCII = function(margin) {\n const cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r1, r2, p;\n\n const blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n const blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n let ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r, p;\n\n const white = Array(cellSize+1).join('██');\n const black = Array(cellSize+1).join(' ');\n\n let ascii = '';\n let line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n const length = _this.getModuleCount();\n for (let row = 0; row < length; row++) {\n for (let col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrcode.stringToBytes\n//---------------------------------------------------------------------\n\nqrcode.stringToBytes = function(s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n};\n\n//---------------------------------------------------------------------\n// qrcode.createStringToBytes\n//---------------------------------------------------------------------\n\n/**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\nqrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n const unicodeMap = function() {\n\n const bin = base64DecodeInputStream(unicodeData);\n const read = function() {\n const b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n let count = 0;\n const unicodeMap = {};\n while (true) {\n const b0 = bin.read();\n if (b0 == -1) break;\n const b1 = read();\n const b2 = read();\n const b3 = read();\n const k = String.fromCharCode( (b0 << 8) | b1);\n const v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n const unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n const b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n};\n\n//---------------------------------------------------------------------\n// QRMode\n//---------------------------------------------------------------------\n\nconst QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n};\n\n//---------------------------------------------------------------------\n// QRErrorCorrectionLevel\n//---------------------------------------------------------------------\n\nconst QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n};\n\n//---------------------------------------------------------------------\n// QRMaskPattern\n//---------------------------------------------------------------------\n\nconst QRMaskPattern = {\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\n//---------------------------------------------------------------------\n// QRUtil\n//---------------------------------------------------------------------\n\nconst QRUtil = function() {\n\n const PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n const G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n const G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n const G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n const _this = {};\n\n const getBCHDigit = function(data) {\n let digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n let d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n let d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n let a = qrPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n const moduleCount = qrcode.getModuleCount();\n\n let lostPoint = 0;\n\n // LEVEL1\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount; col += 1) {\n\n let sameCount = 0;\n const dark = qrcode.isDark(row, col);\n\n for (let r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (let c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (let row = 0; row < moduleCount - 1; row += 1) {\n for (let col = 0; col < moduleCount - 1; col += 1) {\n let count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n let darkCount = 0;\n\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// QRMath\n//---------------------------------------------------------------------\n\nconst QRMath = function() {\n\n const EXP_TABLE = new Array(256);\n const LOG_TABLE = new Array(256);\n\n // initialize tables\n for (let i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (let i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (let i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n const _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrPolynomial\n//---------------------------------------------------------------------\n\nconst qrPolynomial = function(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n const _num = function() {\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n const _num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n const _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n const num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (let i = 0; i < _this.getLength(); i += 1) {\n for (let j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n const ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n const num = new Array(_this.getLength() );\n for (let i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (let i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// QRRSBlock\n//---------------------------------------------------------------------\n\nconst QRRSBlock = function() {\n\n const RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n const qrRSBlock = function(totalCount, dataCount) {\n const _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n const _this = {};\n\n const getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n const rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n const length = rsBlock.length / 3;\n\n const list = [];\n\n for (let i = 0; i < length; i += 1) {\n\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n\n for (let j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrBitBuffer\n//---------------------------------------------------------------------\n\nconst qrBitBuffer = function() {\n\n const _buffer = [];\n let _length = 0;\n\n const _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n const bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (let i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n const bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrNumber\n//---------------------------------------------------------------------\n\nconst qrNumber = function(data) {\n\n const _mode = QRMode.MODE_NUMBER;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const data = _data;\n\n let i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n const strToNum = function(s) {\n let num = 0;\n for (let i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n const chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrAlphaNum\n//---------------------------------------------------------------------\n\nconst qrAlphaNum = function(data) {\n\n const _mode = QRMode.MODE_ALPHA_NUM;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const s = _data;\n\n let i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n const getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case '\\u0020' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qr8BitByte\n//---------------------------------------------------------------------\n\nconst qr8BitByte = function(data) {\n\n const _mode = QRMode.MODE_8BIT_BYTE;\n const _data = data;\n const _bytes = qrcode.stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (let i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrKanji\n//---------------------------------------------------------------------\n\nconst qrKanji = function(data) {\n\n const _mode = QRMode.MODE_KANJI;\n const _data = data;\n\n const stringToBytes = qrcode.stringToBytes;\n !function(c, code) {\n // self test for sjis support.\n const test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n const _bytes = stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n const data = _bytes;\n\n let i = 0;\n\n while (i + 1 < data.length) {\n\n let c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n};\n\n//=====================================================================\n// GIF Support etc.\n//\n\n//---------------------------------------------------------------------\n// byteArrayOutputStream\n//---------------------------------------------------------------------\n\nconst byteArrayOutputStream = function() {\n\n const _bytes = [];\n\n const _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (let i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (let i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n let s = '';\n s += '[';\n for (let i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64EncodeOutputStream\n//---------------------------------------------------------------------\n\nconst base64EncodeOutputStream = function() {\n\n let _buffer = 0;\n let _buflen = 0;\n let _length = 0;\n let _base64 = '';\n\n const _this = {};\n\n const writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n const encode = function(n) {\n if (n < 0) {\n throw 'n:' + n;\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n } else {\n throw 'n:' + n;\n }\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n const padlen = 3 - _length % 3;\n for (let i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64DecodeInputStream\n//---------------------------------------------------------------------\n\nconst base64DecodeInputStream = function(str) {\n\n const _str = str;\n let _pos = 0;\n let _buffer = 0;\n let _buflen = 0;\n\n const _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n const c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n const n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n const decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// gifImage (B/W)\n//---------------------------------------------------------------------\n\nconst gifImage = function(width, height) {\n\n const _width = width;\n const _height = height;\n const _data = new Array(width * height);\n\n const _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n const lzwMinCodeSize = 2;\n const raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n let offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n const bitOutputStream = function(out) {\n\n const _out = out;\n let _bitLength = 0;\n let _bitBuffer = 0;\n\n const _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n const getLZWRaster = function(lzwMinCodeSize) {\n\n const clearCode = 1 << lzwMinCodeSize;\n const endCode = (1 << lzwMinCodeSize) + 1;\n let bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n const table = lzwTable();\n\n for (let i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n const byteOut = byteArrayOutputStream();\n const bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n let dataIndex = 0;\n\n let s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n const c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n const lzwTable = function() {\n\n const _map = {};\n let _size = 0;\n\n const _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n};\n\nconst createDataURL = function(width, height, getPixel) {\n const gif = gifImage(width, height);\n for (let y = 0; y < height; y += 1) {\n for (let x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n const b = byteArrayOutputStream();\n gif.write(b);\n\n const base64 = base64EncodeOutputStream();\n const bytes = b.toByteArray();\n for (let i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n};\n\nexport default qrcode;\n\nexport const stringToBytes = qrcode.stringToBytes;\n","import QRCodeGenerator from 'qrcode-generator';\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst XLINK_NS = 'http://www.w3.org/1999/xlink';\n\nexport interface QrSvgOptions {\n size: number;\n logoUrl?: string;\n /** 0-0.3 arası — `H` (en yüksek, ~%30 toleranslı) hata düzeltme seviyesiyle bile daha büyük değerler taranabilirliği bozabilir. */\n logoScale: number;\n}\n\n/** data'yı QR SVG'sine çizer (DOM API ile). */\nexport function buildQrSvg(data: string, opts: QrSvgOptions): SVGSVGElement {\n const qr = QRCodeGenerator(0, opts.logoUrl ? 'H' : 'M');\n qr.addData(data);\n qr.make();\n\n const count = qr.getModuleCount();\n const cell = opts.size / count;\n\n const svg = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('viewBox', `0 0 ${opts.size} ${opts.size}`);\n svg.setAttribute('width', String(opts.size));\n svg.setAttribute('height', String(opts.size));\n\n const bg = document.createElementNS(SVG_NS, 'rect');\n bg.setAttribute('width', '100%');\n bg.setAttribute('height', '100%');\n bg.setAttribute('fill', '#fff');\n svg.appendChild(bg);\n\n const modules = document.createElementNS(SVG_NS, 'g');\n modules.setAttribute('fill', '#000');\n for (let row = 0; row < count; row++) {\n for (let col = 0; col < count; col++) {\n if (!qr.isDark(row, col)) continue;\n const rect = document.createElementNS(SVG_NS, 'rect');\n rect.setAttribute('x', String(col * cell));\n rect.setAttribute('y', String(row * cell));\n rect.setAttribute('width', String(cell));\n rect.setAttribute('height', String(cell));\n modules.appendChild(rect);\n }\n }\n svg.appendChild(modules);\n\n if (opts.logoUrl) {\n const logoSize = opts.size * opts.logoScale;\n const pad = logoSize * 0.18;\n const backSize = logoSize + pad * 2;\n const backXY = (opts.size - backSize) / 2;\n const logoXY = (opts.size - logoSize) / 2;\n\n const back = document.createElementNS(SVG_NS, 'rect');\n back.setAttribute('x', String(backXY));\n back.setAttribute('y', String(backXY));\n back.setAttribute('width', String(backSize));\n back.setAttribute('height', String(backSize));\n back.setAttribute('rx', String(backSize * 0.22));\n back.setAttribute('fill', '#fff');\n svg.appendChild(back);\n\n const img = document.createElementNS(SVG_NS, 'image');\n img.setAttribute('href', opts.logoUrl);\n // Eski Safari sürümleri `href`i değil yalnızca `xlink:href`i anlıyor.\n img.setAttributeNS(XLINK_NS, 'xlink:href', opts.logoUrl);\n img.setAttribute('x', String(logoXY));\n img.setAttribute('y', String(logoXY));\n img.setAttribute('width', String(logoSize));\n img.setAttribute('height', String(logoSize));\n img.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.appendChild(img);\n }\n\n return svg;\n}\n","import type { QrResumeOptions } from '../../types';\nimport type { HopeLocaleStrings } from '../../i18n/types';\nimport { buildQrSvg } from './qrSvg';\n\nexport interface QrResumePlayerContext {\n videoEl: HTMLVideoElement;\n overlayContainerEl: HTMLElement;\n i18n: HopeLocaleStrings;\n}\n\nconst STORAGE_KEY = 'hope-qr-resume-dismissed';\n\n/** Yeterince izlenmiş bir noktada duraklatılınca \"telefonundan devam et\" QR kodu. */\nexport class QrResume {\n private wrapper: HTMLElement | null = null;\n private seeking = false;\n private seekTimeout: ReturnType<typeof setTimeout> | null = null;\n private pauseTimeout: ReturnType<typeof setTimeout> | null = null;\n private readonly paramName: string;\n\n constructor(\n private readonly ctx: QrResumePlayerContext,\n private readonly options: QrResumeOptions\n ) {\n this.paramName = options.paramName ?? 'vtime';\n\n this.applyResumeFromUrl();\n\n ctx.videoEl.addEventListener('play', this.onPlay);\n ctx.videoEl.addEventListener('ended', this.onPlay);\n ctx.videoEl.addEventListener('seeking', this.onSeeking);\n ctx.videoEl.addEventListener('seeked', this.onSeeked);\n ctx.videoEl.addEventListener('pause', this.onPause);\n }\n\n /** Dışarıdan (ör. entegratörün kendi \"telefonuna gönder\" butonu, ya da docs demo'sundaki test butonu) manuel olarak göstermek için — \"kaldığın yerden devam et\" otomatik tetiklenme kuralları (minElapsed/minRemaining) BURADA uygulanmaz, çağıran taraf bilinçli olarak gösteriyor demektir. */\n show(): void {\n this.create();\n }\n\n hide(): void {\n this.remove();\n }\n\n /** Ayarlar menüsündeki aç/kapa satırı — \"Bir daha gösterme\" sonrası tekrar açılabilsin. */\n isEnabled(): boolean {\n return !this.isDismissedForever();\n }\n\n setEnabled(enabled: boolean): void {\n this.setDismissedForever(!enabled);\n }\n\n /** Ekran her gösterimde sıfırdan oluşturuluyor ve güncel `ctx.i18n`'i okuyor — RedirectScreen'deki AYNI desen. */\n refreshLabels(): void {\n /* no-op */\n }\n\n destroy(): void {\n this.ctx.videoEl.removeEventListener('play', this.onPlay);\n this.ctx.videoEl.removeEventListener('ended', this.onPlay);\n this.ctx.videoEl.removeEventListener('seeking', this.onSeeking);\n this.ctx.videoEl.removeEventListener('seeked', this.onSeeked);\n this.ctx.videoEl.removeEventListener('pause', this.onPause);\n if (this.seekTimeout) clearTimeout(this.seekTimeout);\n if (this.pauseTimeout) clearTimeout(this.pauseTimeout);\n this.remove();\n }\n\n private isDismissedForever(): boolean {\n if (this.options.rememberDismiss === false) return false;\n try {\n return window.localStorage.getItem(STORAGE_KEY) === '1';\n } catch {\n return false;\n }\n }\n\n private setDismissedForever(value: boolean): void {\n try {\n window.localStorage.setItem(STORAGE_KEY, value ? '1' : '0');\n } catch {\n /* gizli mod vb. — sessizce yoksay */\n }\n }\n\n private buildResumeUrl(time: number): string {\n const url = new URL(window.location.href);\n url.searchParams.set(this.paramName, String(Math.floor(time)));\n return url.toString();\n }\n\n private applyResumeFromUrl(): void {\n const url = new URL(window.location.href);\n const raw = url.searchParams.get(this.paramName);\n if (raw === null || !/^\\d+$/.test(raw)) return;\n\n const seconds = Number(raw);\n const seekOnceReady = () => {\n this.ctx.videoEl.currentTime = seconds;\n };\n if (this.ctx.videoEl.readyState >= 1) seekOnceReady();\n else this.ctx.videoEl.addEventListener('loadedmetadata', seekOnceReady, { once: true });\n\n url.searchParams.delete(this.paramName);\n window.history.replaceState(window.history.state, '', url.toString());\n }\n\n private readonly onPlay = (): void => this.remove();\n\n private readonly onSeeking = (): void => {\n this.seeking = true;\n if (this.seekTimeout) clearTimeout(this.seekTimeout);\n this.seekTimeout = setTimeout(() => {\n this.seeking = false;\n }, 150);\n };\n\n private readonly onSeeked = (): void => {\n if (this.seekTimeout) clearTimeout(this.seekTimeout);\n this.seeking = false;\n };\n\n private readonly onPause = (): void => {\n if (this.isDismissedForever()) return;\n const { currentTime, duration } = this.ctx.videoEl;\n const minElapsed = this.options.minElapsed ?? 60;\n const minRemaining = this.options.minRemaining ?? 60;\n if (!(duration - currentTime > minRemaining && currentTime > minElapsed)) return;\n\n // Eski koddaki AYNI kısa gecikme — 'seeking' sırasında da anlık bir\n // 'pause' tetiklenebiliyor (scrub), bu ekranın yanlışlıkla\n // belirmesini önlüyor.\n if (this.pauseTimeout) clearTimeout(this.pauseTimeout);\n this.pauseTimeout = setTimeout(() => {\n if (!this.seeking && this.ctx.videoEl.paused) this.create();\n }, 150);\n };\n\n private remove(): void {\n this.wrapper?.remove();\n this.wrapper = null;\n }\n\n private create(): void {\n this.remove();\n const size = this.options.size ?? 220;\n const url = this.buildResumeUrl(this.ctx.videoEl.currentTime);\n\n const wrapper = document.createElement('div');\n wrapper.setAttribute('part', 'qr-resume-screen');\n wrapper.className =\n 'hp:absolute hp:inset-0 hp:z-30 hp:flex hp:flex-col hp:items-center hp:justify-center hp:gap-3 hp:bg-black/85 hp:text-white hp:text-center hp:p-4';\n\n const codeWrap = document.createElement('div');\n codeWrap.className = 'hp:rounded-lg hp:overflow-hidden hp:shadow-lg hp:leading-none';\n codeWrap.appendChild(buildQrSvg(url, { size, logoUrl: this.options.logo, logoScale: this.options.logoScale ?? 0.22 }));\n wrapper.appendChild(codeWrap);\n\n const text = document.createElement('div');\n text.className = 'hp:text-sm hp:opacity-90 hp:max-w-xs';\n text.textContent = this.ctx.i18n.qrResumeTitle;\n wrapper.appendChild(text);\n\n const buttons = document.createElement('div');\n buttons.className = 'hp:flex hp:gap-2 hp:mt-1';\n\n const dismissBtn = document.createElement('button');\n dismissBtn.type = 'button';\n dismissBtn.textContent = this.ctx.i18n.qrResumeDontShowAgain;\n dismissBtn.className = 'hp:px-4 hp:py-1.5 hp:rounded hp:bg-white/15 hp:text-white hp:border-0 hp:cursor-pointer hp:text-sm';\n dismissBtn.addEventListener('click', () => {\n this.setDismissedForever(true);\n this.remove();\n });\n\n const continueBtn = document.createElement('button');\n continueBtn.type = 'button';\n continueBtn.textContent = this.ctx.i18n.qrResumeContinue;\n continueBtn.className = 'hp:px-4 hp:py-1.5 hp:rounded hp:bg-accent hp:text-on-accent hp:border-0 hp:cursor-pointer hp:text-sm';\n continueBtn.addEventListener('click', () => {\n this.remove();\n if (this.ctx.videoEl.paused) void this.ctx.videoEl.play();\n });\n\n buttons.append(dismissBtn, continueBtn);\n wrapper.appendChild(buttons);\n\n this.ctx.overlayContainerEl.appendChild(wrapper);\n this.wrapper = wrapper;\n }\n}\n","import { QrResume, type QrResumePlayerContext } from './QrResume';\nimport type { QrResumeOptions } from '../../types';\n\nexport function installQrResume(ctx: QrResumePlayerContext, options: QrResumeOptions): QrResume {\n return new QrResume(ctx, options);\n}\n\nexport { QrResume };\nexport type { QrResumePlayerContext };\n"],"names":["qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","getBestMaskPattern","minLostPoint","pattern","i","lostPoint","QRUtil","pos","j","bits","mod","data","inc","bitIndex","byteIndex","maskFunc","dark","createBytes","buffer","rsBlocks","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","modPoly","qrPolynomial","modIndex","totalCodeCount","index","dataList","QRRSBlock","qrBitBuffer","totalDataCount","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","cellSize","margin","qrHtml","alt","title","opts","size","mc","mr","qrSvg","rect","escapeXml","min","max","createDataURL","x","y","img","s","escaped","_createHalfASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","white","black","line","context","length","bytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","b2","b3","k","v","unknownChar","QRMode","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","d","errorCorrectLength","a","QRMath","type","sameCount","darkCount","ratio","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","RS_BLOCK_TABLE","qrRSBlock","totalCount","dataCount","getRsBlockTable","rsBlock","list","_buffer","_length","bufIndex","bit","_mode","_data","strToNum","chatToNum","getCode","_bytes","stringToBytes","code","byteArrayOutputStream","off","len","base64EncodeOutputStream","_buflen","_base64","writeEncoded","encode","padlen","str","_str","_pos","decode","gifImage","width","height","_width","_height","pixel","out","lzwMinCodeSize","raster","getLZWRaster","bitOutputStream","_out","_bitLength","_bitBuffer","clearCode","endCode","bitLength","table","lzwTable","byteOut","bitOut","dataIndex","_map","_size","key","getPixel","gif","base64","SVG_NS","XLINK_NS","buildQrSvg","qr","QRCodeGenerator","cell","svg","bg","logoSize","pad","backSize","backXY","logoXY","back","STORAGE_KEY","QrResume","ctx","options","__publicField","currentTime","duration","minElapsed","minRemaining","enabled","value","time","url","raw","seconds","seekOnceReady","_a","wrapper","codeWrap","text","buttons","dismissBtn","continueBtn","installQrResume"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"qrResume-DXwD3oSA.js","sources":["../../../../node_modules/qrcode-generator/dist/qrcode.mjs","../../src/plugins/qr-resume/qrSvg.ts","../../src/plugins/qr-resume/QrResume.ts","../../src/plugins/qr-resume/index.ts"],"sourcesContent":["//---------------------------------------------------------------------\n//\n// QR Code Generator for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word 'QR Code' is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n\n//---------------------------------------------------------------------\n// qrcode\n//---------------------------------------------------------------------\n\n/**\n * qrcode\n * @param typeNumber 1 to 40\n * @param errorCorrectionLevel 'L','M','Q','H'\n */\nexport const qrcode = function(typeNumber, errorCorrectionLevel) {\n\n const PAD0 = 0xEC;\n const PAD1 = 0x11;\n\n let _typeNumber = typeNumber;\n const _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];\n let _modules = null;\n let _moduleCount = 0;\n let _dataCache = null;\n const _dataList = [];\n\n const _this = {};\n\n const makeImpl = function(test, maskPattern) {\n\n _moduleCount = _typeNumber * 4 + 17;\n _modules = function(moduleCount) {\n const modules = new Array(moduleCount);\n for (let row = 0; row < moduleCount; row += 1) {\n modules[row] = new Array(moduleCount);\n for (let col = 0; col < moduleCount; col += 1) {\n modules[row][col] = null;\n }\n }\n return modules;\n }(_moduleCount);\n\n setupPositionProbePattern(0, 0);\n setupPositionProbePattern(_moduleCount - 7, 0);\n setupPositionProbePattern(0, _moduleCount - 7);\n setupPositionAdjustPattern();\n setupTimingPattern();\n setupTypeInfo(test, maskPattern);\n\n if (_typeNumber >= 7) {\n setupTypeNumber(test);\n }\n\n if (_dataCache == null) {\n _dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);\n }\n\n mapData(_dataCache, maskPattern);\n };\n\n const setupPositionProbePattern = function(row, col) {\n\n for (let r = -1; r <= 7; r += 1) {\n\n if (row + r <= -1 || _moduleCount <= row + r) continue;\n\n for (let c = -1; c <= 7; c += 1) {\n\n if (col + c <= -1 || _moduleCount <= col + c) continue;\n\n if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n || (0 <= c && c <= 6 && (r == 0 || r == 6) )\n || (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n };\n\n const getBestMaskPattern = function() {\n\n let minLostPoint = 0;\n let pattern = 0;\n\n for (let i = 0; i < 8; i += 1) {\n\n makeImpl(true, i);\n\n const lostPoint = QRUtil.getLostPoint(_this);\n\n if (i == 0 || minLostPoint > lostPoint) {\n minLostPoint = lostPoint;\n pattern = i;\n }\n }\n\n return pattern;\n };\n\n const setupTimingPattern = function() {\n\n for (let r = 8; r < _moduleCount - 8; r += 1) {\n if (_modules[r][6] != null) {\n continue;\n }\n _modules[r][6] = (r % 2 == 0);\n }\n\n for (let c = 8; c < _moduleCount - 8; c += 1) {\n if (_modules[6][c] != null) {\n continue;\n }\n _modules[6][c] = (c % 2 == 0);\n }\n };\n\n const setupPositionAdjustPattern = function() {\n\n const pos = QRUtil.getPatternPosition(_typeNumber);\n\n for (let i = 0; i < pos.length; i += 1) {\n\n for (let j = 0; j < pos.length; j += 1) {\n\n const row = pos[i];\n const col = pos[j];\n\n if (_modules[row][col] != null) {\n continue;\n }\n\n for (let r = -2; r <= 2; r += 1) {\n\n for (let c = -2; c <= 2; c += 1) {\n\n if (r == -2 || r == 2 || c == -2 || c == 2\n || (r == 0 && c == 0) ) {\n _modules[row + r][col + c] = true;\n } else {\n _modules[row + r][col + c] = false;\n }\n }\n }\n }\n }\n };\n\n const setupTypeNumber = function(test) {\n\n const bits = QRUtil.getBCHTypeNumber(_typeNumber);\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;\n }\n\n for (let i = 0; i < 18; i += 1) {\n const mod = (!test && ( (bits >> i) & 1) == 1);\n _modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n }\n };\n\n const setupTypeInfo = function(test, maskPattern) {\n\n const data = (_errorCorrectionLevel << 3) | maskPattern;\n const bits = QRUtil.getBCHTypeInfo(data);\n\n // vertical\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 6) {\n _modules[i][8] = mod;\n } else if (i < 8) {\n _modules[i + 1][8] = mod;\n } else {\n _modules[_moduleCount - 15 + i][8] = mod;\n }\n }\n\n // horizontal\n for (let i = 0; i < 15; i += 1) {\n\n const mod = (!test && ( (bits >> i) & 1) == 1);\n\n if (i < 8) {\n _modules[8][_moduleCount - i - 1] = mod;\n } else if (i < 9) {\n _modules[8][15 - i - 1 + 1] = mod;\n } else {\n _modules[8][15 - i - 1] = mod;\n }\n }\n\n // fixed module\n _modules[_moduleCount - 8][8] = (!test);\n };\n\n const mapData = function(data, maskPattern) {\n\n let inc = -1;\n let row = _moduleCount - 1;\n let bitIndex = 7;\n let byteIndex = 0;\n const maskFunc = QRUtil.getMaskFunction(maskPattern);\n\n for (let col = _moduleCount - 1; col > 0; col -= 2) {\n\n if (col == 6) col -= 1;\n\n while (true) {\n\n for (let c = 0; c < 2; c += 1) {\n\n if (_modules[row][col - c] == null) {\n\n let dark = false;\n\n if (byteIndex < data.length) {\n dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n }\n\n const mask = maskFunc(row, col - c);\n\n if (mask) {\n dark = !dark;\n }\n\n _modules[row][col - c] = dark;\n bitIndex -= 1;\n\n if (bitIndex == -1) {\n byteIndex += 1;\n bitIndex = 7;\n }\n }\n }\n\n row += inc;\n\n if (row < 0 || _moduleCount <= row) {\n row -= inc;\n inc = -inc;\n break;\n }\n }\n }\n };\n\n const createBytes = function(buffer, rsBlocks) {\n\n let offset = 0;\n\n let maxDcCount = 0;\n let maxEcCount = 0;\n\n const dcdata = new Array(rsBlocks.length);\n const ecdata = new Array(rsBlocks.length);\n\n for (let r = 0; r < rsBlocks.length; r += 1) {\n\n const dcCount = rsBlocks[r].dataCount;\n const ecCount = rsBlocks[r].totalCount - dcCount;\n\n maxDcCount = Math.max(maxDcCount, dcCount);\n maxEcCount = Math.max(maxEcCount, ecCount);\n\n dcdata[r] = new Array(dcCount);\n\n for (let i = 0; i < dcdata[r].length; i += 1) {\n dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];\n }\n offset += dcCount;\n\n const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);\n const rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);\n\n const modPoly = rawPoly.mod(rsPoly);\n ecdata[r] = new Array(rsPoly.getLength() - 1);\n for (let i = 0; i < ecdata[r].length; i += 1) {\n const modIndex = i + modPoly.getLength() - ecdata[r].length;\n ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;\n }\n }\n\n let totalCodeCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalCodeCount += rsBlocks[i].totalCount;\n }\n\n const data = new Array(totalCodeCount);\n let index = 0;\n\n for (let i = 0; i < maxDcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < dcdata[r].length) {\n data[index] = dcdata[r][i];\n index += 1;\n }\n }\n }\n\n for (let i = 0; i < maxEcCount; i += 1) {\n for (let r = 0; r < rsBlocks.length; r += 1) {\n if (i < ecdata[r].length) {\n data[index] = ecdata[r][i];\n index += 1;\n }\n }\n }\n\n return data;\n };\n\n const createData = function(typeNumber, errorCorrectionLevel, dataList) {\n\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);\n\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < dataList.length; i += 1) {\n const data = dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n // calc num max data.\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i += 1) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() > totalDataCount * 8) {\n throw 'code length overflow. ('\n + buffer.getLengthInBits()\n + '>'\n + totalDataCount * 8\n + ')';\n }\n\n // end code\n if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n buffer.put(0, 4);\n }\n\n // padding\n while (buffer.getLengthInBits() % 8 != 0) {\n buffer.putBit(false);\n }\n\n // padding\n while (true) {\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD0, 8);\n\n if (buffer.getLengthInBits() >= totalDataCount * 8) {\n break;\n }\n buffer.put(PAD1, 8);\n }\n\n return createBytes(buffer, rsBlocks);\n };\n\n _this.addData = function(data, mode) {\n\n mode = mode || 'Byte';\n\n let newData = null;\n\n switch(mode) {\n case 'Numeric' :\n newData = qrNumber(data);\n break;\n case 'Alphanumeric' :\n newData = qrAlphaNum(data);\n break;\n case 'Byte' :\n newData = qr8BitByte(data);\n break;\n case 'Kanji' :\n newData = qrKanji(data);\n break;\n default :\n throw 'mode:' + mode;\n }\n\n _dataList.push(newData);\n _dataCache = null;\n };\n\n _this.isDark = function(row, col) {\n if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {\n throw row + ',' + col;\n }\n return _modules[row][col];\n };\n\n _this.getModuleCount = function() {\n return _moduleCount;\n };\n\n _this.make = function() {\n if (_typeNumber < 1) {\n let typeNumber = 1;\n\n for (; typeNumber < 40; typeNumber++) {\n const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);\n const buffer = qrBitBuffer();\n\n for (let i = 0; i < _dataList.length; i++) {\n const data = _dataList[i];\n buffer.put(data.getMode(), 4);\n buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );\n data.write(buffer);\n }\n\n let totalDataCount = 0;\n for (let i = 0; i < rsBlocks.length; i++) {\n totalDataCount += rsBlocks[i].dataCount;\n }\n\n if (buffer.getLengthInBits() <= totalDataCount * 8) {\n break;\n }\n }\n\n _typeNumber = typeNumber;\n }\n\n makeImpl(false, getBestMaskPattern() );\n };\n\n _this.createTableTag = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n let qrHtml = '';\n\n qrHtml += '<table style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: ' + margin + 'px;';\n qrHtml += '\">';\n qrHtml += '<tbody>';\n\n for (let r = 0; r < _this.getModuleCount(); r += 1) {\n\n qrHtml += '<tr>';\n\n for (let c = 0; c < _this.getModuleCount(); c += 1) {\n qrHtml += '<td style=\"';\n qrHtml += ' border-width: 0px; border-style: none;';\n qrHtml += ' border-collapse: collapse;';\n qrHtml += ' padding: 0px; margin: 0px;';\n qrHtml += ' width: ' + cellSize + 'px;';\n qrHtml += ' height: ' + cellSize + 'px;';\n qrHtml += ' background-color: ';\n qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';\n qrHtml += ';';\n qrHtml += '\"/>';\n }\n\n qrHtml += '</tr>';\n }\n\n qrHtml += '</tbody>';\n qrHtml += '</table>';\n\n return qrHtml;\n };\n\n _this.createSvgTag = function(cellSize, margin, alt, title) {\n\n let opts = {};\n if (typeof arguments[0] == 'object') {\n // Called by options.\n opts = arguments[0];\n // overwrite cellSize and margin.\n cellSize = opts.cellSize;\n margin = opts.margin;\n alt = opts.alt;\n title = opts.title;\n }\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n // Compose alt property surrogate\n alt = (typeof alt === 'string') ? {text: alt} : alt || {};\n alt.text = alt.text || null;\n alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;\n\n // Compose title property surrogate\n title = (typeof title === 'string') ? {text: title} : title || {};\n title.text = title.text || null;\n title.id = (title.text) ? title.id || 'qrcode-title' : null;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n let c, mc, r, mr, qrSvg='', rect;\n\n rect = 'l' + cellSize + ',0 0,' + cellSize +\n ' -' + cellSize + ',0 0,-' + cellSize + 'z ';\n\n qrSvg += '<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"';\n qrSvg += !opts.scalable ? ' width=\"' + size + 'px\" height=\"' + size + 'px\"' : '';\n qrSvg += ' viewBox=\"0 0 ' + size + ' ' + size + '\" ';\n qrSvg += ' preserveAspectRatio=\"xMinYMin meet\"';\n qrSvg += (title.text || alt.text) ? ' role=\"img\" aria-labelledby=\"' +\n escapeXml([title.id, alt.id].join(' ').trim() ) + '\"' : '';\n qrSvg += '>';\n qrSvg += (title.text) ? '<title id=\"' + escapeXml(title.id) + '\">' +\n escapeXml(title.text) + '</title>' : '';\n qrSvg += (alt.text) ? '<description id=\"' + escapeXml(alt.id) + '\">' +\n escapeXml(alt.text) + '</description>' : '';\n qrSvg += '<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>';\n qrSvg += '<path d=\"';\n\n for (r = 0; r < _this.getModuleCount(); r += 1) {\n mr = r * cellSize + margin;\n for (c = 0; c < _this.getModuleCount(); c += 1) {\n if (_this.isDark(r, c) ) {\n mc = c*cellSize+margin;\n qrSvg += 'M' + mc + ',' + mr + rect;\n }\n }\n }\n\n qrSvg += '\" stroke=\"transparent\" fill=\"black\"/>';\n qrSvg += '</svg>';\n\n return qrSvg;\n };\n\n _this.createDataURL = function(cellSize, margin) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n return createDataURL(size, size, function(x, y) {\n if (min <= x && x < max && min <= y && y < max) {\n const c = Math.floor( (x - min) / cellSize);\n const r = Math.floor( (y - min) / cellSize);\n return _this.isDark(r, c)? 0 : 1;\n } else {\n return 1;\n }\n } );\n };\n\n _this.createImgTag = function(cellSize, margin, alt) {\n\n cellSize = cellSize || 2;\n margin = (typeof margin == 'undefined')? cellSize * 4 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n\n let img = '';\n img += '<img';\n img += '\\u0020src=\"';\n img += _this.createDataURL(cellSize, margin);\n img += '\"';\n img += '\\u0020width=\"';\n img += size;\n img += '\"';\n img += '\\u0020height=\"';\n img += size;\n img += '\"';\n if (alt) {\n img += '\\u0020alt=\"';\n img += escapeXml(alt);\n img += '\"';\n }\n img += '/>';\n\n return img;\n };\n\n const escapeXml = function(s) {\n let escaped = '';\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charAt(i);\n switch(c) {\n case '<': escaped += '<'; break;\n case '>': escaped += '>'; break;\n case '&': escaped += '&'; break;\n case '\"': escaped += '"'; break;\n default : escaped += c; break;\n }\n }\n return escaped;\n };\n\n const _createHalfASCII = function(margin) {\n const cellSize = 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r1, r2, p;\n\n const blocks = {\n '██': '█',\n '█ ': '▀',\n ' █': '▄',\n ' ': ' '\n };\n\n const blocksLastLineNoMargin = {\n '██': '▀',\n '█ ': '▀',\n ' █': ' ',\n ' ': ' '\n };\n\n let ascii = '';\n for (y = 0; y < size; y += 2) {\n r1 = Math.floor((y - min) / cellSize);\n r2 = Math.floor((y + 1 - min) / cellSize);\n for (x = 0; x < size; x += 1) {\n p = '█';\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {\n p = ' ';\n }\n\n if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {\n p += ' ';\n }\n else {\n p += '█';\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];\n }\n\n ascii += '\\n';\n }\n\n if (size % 2 && margin > 0) {\n return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.createASCII = function(cellSize, margin) {\n cellSize = cellSize || 1;\n\n if (cellSize < 2) {\n return _createHalfASCII(margin);\n }\n\n cellSize -= 1;\n margin = (typeof margin == 'undefined')? cellSize * 2 : margin;\n\n const size = _this.getModuleCount() * cellSize + margin * 2;\n const min = margin;\n const max = size - margin;\n\n let y, x, r, p;\n\n const white = Array(cellSize+1).join('██');\n const black = Array(cellSize+1).join(' ');\n\n let ascii = '';\n let line = '';\n for (y = 0; y < size; y += 1) {\n r = Math.floor( (y - min) / cellSize);\n line = '';\n for (x = 0; x < size; x += 1) {\n p = 1;\n\n if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {\n p = 0;\n }\n\n // Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.\n line += p ? white : black;\n }\n\n for (r = 0; r < cellSize; r += 1) {\n ascii += line + '\\n';\n }\n }\n\n return ascii.substring(0, ascii.length-1);\n };\n\n _this.renderTo2dContext = function(context, cellSize) {\n cellSize = cellSize || 2;\n const length = _this.getModuleCount();\n for (let row = 0; row < length; row++) {\n for (let col = 0; col < length; col++) {\n context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';\n context.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);\n }\n }\n }\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrcode.stringToBytes\n//---------------------------------------------------------------------\n\nqrcode.stringToBytes = function(s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n bytes.push(c & 0xff);\n }\n return bytes;\n};\n\n//---------------------------------------------------------------------\n// qrcode.createStringToBytes\n//---------------------------------------------------------------------\n\n/**\n * @param unicodeData base64 string of byte array.\n * [16bit Unicode],[16bit Bytes], ...\n * @param numChars\n */\nqrcode.createStringToBytes = function(unicodeData, numChars) {\n\n // create conversion map.\n\n const unicodeMap = function() {\n\n const bin = base64DecodeInputStream(unicodeData);\n const read = function() {\n const b = bin.read();\n if (b == -1) throw 'eof';\n return b;\n };\n\n let count = 0;\n const unicodeMap = {};\n while (true) {\n const b0 = bin.read();\n if (b0 == -1) break;\n const b1 = read();\n const b2 = read();\n const b3 = read();\n const k = String.fromCharCode( (b0 << 8) | b1);\n const v = (b2 << 8) | b3;\n unicodeMap[k] = v;\n count += 1;\n }\n if (count != numChars) {\n throw count + ' != ' + numChars;\n }\n\n return unicodeMap;\n }();\n\n const unknownChar = '?'.charCodeAt(0);\n\n return function(s) {\n const bytes = [];\n for (let i = 0; i < s.length; i += 1) {\n const c = s.charCodeAt(i);\n if (c < 128) {\n bytes.push(c);\n } else {\n const b = unicodeMap[s.charAt(i)];\n if (typeof b == 'number') {\n if ( (b & 0xff) == b) {\n // 1byte\n bytes.push(b);\n } else {\n // 2bytes\n bytes.push(b >>> 8);\n bytes.push(b & 0xff);\n }\n } else {\n bytes.push(unknownChar);\n }\n }\n }\n return bytes;\n };\n};\n\n//---------------------------------------------------------------------\n// QRMode\n//---------------------------------------------------------------------\n\nconst QRMode = {\n MODE_NUMBER : 1 << 0,\n MODE_ALPHA_NUM : 1 << 1,\n MODE_8BIT_BYTE : 1 << 2,\n MODE_KANJI : 1 << 3\n};\n\n//---------------------------------------------------------------------\n// QRErrorCorrectionLevel\n//---------------------------------------------------------------------\n\nconst QRErrorCorrectionLevel = {\n L : 1,\n M : 0,\n Q : 3,\n H : 2\n};\n\n//---------------------------------------------------------------------\n// QRMaskPattern\n//---------------------------------------------------------------------\n\nconst QRMaskPattern = {\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\n//---------------------------------------------------------------------\n// QRUtil\n//---------------------------------------------------------------------\n\nconst QRUtil = function() {\n\n const PATTERN_POSITION_TABLE = [\n [],\n [6, 18],\n [6, 22],\n [6, 26],\n [6, 30],\n [6, 34],\n [6, 22, 38],\n [6, 24, 42],\n [6, 26, 46],\n [6, 28, 50],\n [6, 30, 54],\n [6, 32, 58],\n [6, 34, 62],\n [6, 26, 46, 66],\n [6, 26, 48, 70],\n [6, 26, 50, 74],\n [6, 30, 54, 78],\n [6, 30, 56, 82],\n [6, 30, 58, 86],\n [6, 34, 62, 90],\n [6, 28, 50, 72, 94],\n [6, 26, 50, 74, 98],\n [6, 30, 54, 78, 102],\n [6, 28, 54, 80, 106],\n [6, 32, 58, 84, 110],\n [6, 30, 58, 86, 114],\n [6, 34, 62, 90, 118],\n [6, 26, 50, 74, 98, 122],\n [6, 30, 54, 78, 102, 126],\n [6, 26, 52, 78, 104, 130],\n [6, 30, 56, 82, 108, 134],\n [6, 34, 60, 86, 112, 138],\n [6, 30, 58, 86, 114, 142],\n [6, 34, 62, 90, 118, 146],\n [6, 30, 54, 78, 102, 126, 150],\n [6, 24, 50, 76, 102, 128, 154],\n [6, 28, 54, 80, 106, 132, 158],\n [6, 32, 58, 84, 110, 136, 162],\n [6, 26, 54, 82, 110, 138, 166],\n [6, 30, 58, 86, 114, 142, 170]\n ];\n const G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);\n const G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);\n const G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);\n\n const _this = {};\n\n const getBCHDigit = function(data) {\n let digit = 0;\n while (data != 0) {\n digit += 1;\n data >>>= 1;\n }\n return digit;\n };\n\n _this.getBCHTypeInfo = function(data) {\n let d = data << 10;\n while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {\n d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );\n }\n return ( (data << 10) | d) ^ G15_MASK;\n };\n\n _this.getBCHTypeNumber = function(data) {\n let d = data << 12;\n while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {\n d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );\n }\n return (data << 12) | d;\n };\n\n _this.getPatternPosition = function(typeNumber) {\n return PATTERN_POSITION_TABLE[typeNumber - 1];\n };\n\n _this.getMaskFunction = function(maskPattern) {\n\n switch (maskPattern) {\n\n case QRMaskPattern.PATTERN000 :\n return function(i, j) { return (i + j) % 2 == 0; };\n case QRMaskPattern.PATTERN001 :\n return function(i, j) { return i % 2 == 0; };\n case QRMaskPattern.PATTERN010 :\n return function(i, j) { return j % 3 == 0; };\n case QRMaskPattern.PATTERN011 :\n return function(i, j) { return (i + j) % 3 == 0; };\n case QRMaskPattern.PATTERN100 :\n return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };\n case QRMaskPattern.PATTERN101 :\n return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };\n case QRMaskPattern.PATTERN110 :\n return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };\n case QRMaskPattern.PATTERN111 :\n return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };\n\n default :\n throw 'bad maskPattern:' + maskPattern;\n }\n };\n\n _this.getErrorCorrectPolynomial = function(errorCorrectLength) {\n let a = qrPolynomial([1], 0);\n for (let i = 0; i < errorCorrectLength; i += 1) {\n a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );\n }\n return a;\n };\n\n _this.getLengthInBits = function(mode, type) {\n\n if (1 <= type && type < 10) {\n\n // 1 - 9\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 10;\n case QRMode.MODE_ALPHA_NUM : return 9;\n case QRMode.MODE_8BIT_BYTE : return 8;\n case QRMode.MODE_KANJI : return 8;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 27) {\n\n // 10 - 26\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 12;\n case QRMode.MODE_ALPHA_NUM : return 11;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 10;\n default :\n throw 'mode:' + mode;\n }\n\n } else if (type < 41) {\n\n // 27 - 40\n\n switch(mode) {\n case QRMode.MODE_NUMBER : return 14;\n case QRMode.MODE_ALPHA_NUM : return 13;\n case QRMode.MODE_8BIT_BYTE : return 16;\n case QRMode.MODE_KANJI : return 12;\n default :\n throw 'mode:' + mode;\n }\n\n } else {\n throw 'type:' + type;\n }\n };\n\n _this.getLostPoint = function(qrcode) {\n\n const moduleCount = qrcode.getModuleCount();\n\n let lostPoint = 0;\n\n // LEVEL1\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount; col += 1) {\n\n let sameCount = 0;\n const dark = qrcode.isDark(row, col);\n\n for (let r = -1; r <= 1; r += 1) {\n\n if (row + r < 0 || moduleCount <= row + r) {\n continue;\n }\n\n for (let c = -1; c <= 1; c += 1) {\n\n if (col + c < 0 || moduleCount <= col + c) {\n continue;\n }\n\n if (r == 0 && c == 0) {\n continue;\n }\n\n if (dark == qrcode.isDark(row + r, col + c) ) {\n sameCount += 1;\n }\n }\n }\n\n if (sameCount > 5) {\n lostPoint += (3 + sameCount - 5);\n }\n }\n };\n\n // LEVEL2\n\n for (let row = 0; row < moduleCount - 1; row += 1) {\n for (let col = 0; col < moduleCount - 1; col += 1) {\n let count = 0;\n if (qrcode.isDark(row, col) ) count += 1;\n if (qrcode.isDark(row + 1, col) ) count += 1;\n if (qrcode.isDark(row, col + 1) ) count += 1;\n if (qrcode.isDark(row + 1, col + 1) ) count += 1;\n if (count == 0 || count == 4) {\n lostPoint += 3;\n }\n }\n }\n\n // LEVEL3\n\n for (let row = 0; row < moduleCount; row += 1) {\n for (let col = 0; col < moduleCount - 6; col += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row, col + 1)\n && qrcode.isDark(row, col + 2)\n && qrcode.isDark(row, col + 3)\n && qrcode.isDark(row, col + 4)\n && !qrcode.isDark(row, col + 5)\n && qrcode.isDark(row, col + 6) ) {\n lostPoint += 40;\n }\n }\n }\n\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount - 6; row += 1) {\n if (qrcode.isDark(row, col)\n && !qrcode.isDark(row + 1, col)\n && qrcode.isDark(row + 2, col)\n && qrcode.isDark(row + 3, col)\n && qrcode.isDark(row + 4, col)\n && !qrcode.isDark(row + 5, col)\n && qrcode.isDark(row + 6, col) ) {\n lostPoint += 40;\n }\n }\n }\n\n // LEVEL4\n\n let darkCount = 0;\n\n for (let col = 0; col < moduleCount; col += 1) {\n for (let row = 0; row < moduleCount; row += 1) {\n if (qrcode.isDark(row, col) ) {\n darkCount += 1;\n }\n }\n }\n\n const ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n lostPoint += ratio * 10;\n\n return lostPoint;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// QRMath\n//---------------------------------------------------------------------\n\nconst QRMath = function() {\n\n const EXP_TABLE = new Array(256);\n const LOG_TABLE = new Array(256);\n\n // initialize tables\n for (let i = 0; i < 8; i += 1) {\n EXP_TABLE[i] = 1 << i;\n }\n for (let i = 8; i < 256; i += 1) {\n EXP_TABLE[i] = EXP_TABLE[i - 4]\n ^ EXP_TABLE[i - 5]\n ^ EXP_TABLE[i - 6]\n ^ EXP_TABLE[i - 8];\n }\n for (let i = 0; i < 255; i += 1) {\n LOG_TABLE[EXP_TABLE[i] ] = i;\n }\n\n const _this = {};\n\n _this.glog = function(n) {\n\n if (n < 1) {\n throw 'glog(' + n + ')';\n }\n\n return LOG_TABLE[n];\n };\n\n _this.gexp = function(n) {\n\n while (n < 0) {\n n += 255;\n }\n\n while (n >= 256) {\n n -= 255;\n }\n\n return EXP_TABLE[n];\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrPolynomial\n//---------------------------------------------------------------------\n\nconst qrPolynomial = function(num, shift) {\n\n if (typeof num.length == 'undefined') {\n throw num.length + '/' + shift;\n }\n\n const _num = function() {\n let offset = 0;\n while (offset < num.length && num[offset] == 0) {\n offset += 1;\n }\n const _num = new Array(num.length - offset + shift);\n for (let i = 0; i < num.length - offset; i += 1) {\n _num[i] = num[i + offset];\n }\n return _num;\n }();\n\n const _this = {};\n\n _this.getAt = function(index) {\n return _num[index];\n };\n\n _this.getLength = function() {\n return _num.length;\n };\n\n _this.multiply = function(e) {\n\n const num = new Array(_this.getLength() + e.getLength() - 1);\n\n for (let i = 0; i < _this.getLength(); i += 1) {\n for (let j = 0; j < e.getLength(); j += 1) {\n num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );\n }\n }\n\n return qrPolynomial(num, 0);\n };\n\n _this.mod = function(e) {\n\n if (_this.getLength() - e.getLength() < 0) {\n return _this;\n }\n\n const ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );\n\n const num = new Array(_this.getLength() );\n for (let i = 0; i < _this.getLength(); i += 1) {\n num[i] = _this.getAt(i);\n }\n\n for (let i = 0; i < e.getLength(); i += 1) {\n num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);\n }\n\n // recursive call\n return qrPolynomial(num, 0).mod(e);\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// QRRSBlock\n//---------------------------------------------------------------------\n\nconst QRRSBlock = function() {\n\n const RS_BLOCK_TABLE = [\n\n // L\n // M\n // Q\n // H\n\n // 1\n [1, 26, 19],\n [1, 26, 16],\n [1, 26, 13],\n [1, 26, 9],\n\n // 2\n [1, 44, 34],\n [1, 44, 28],\n [1, 44, 22],\n [1, 44, 16],\n\n // 3\n [1, 70, 55],\n [1, 70, 44],\n [2, 35, 17],\n [2, 35, 13],\n\n // 4\n [1, 100, 80],\n [2, 50, 32],\n [2, 50, 24],\n [4, 25, 9],\n\n // 5\n [1, 134, 108],\n [2, 67, 43],\n [2, 33, 15, 2, 34, 16],\n [2, 33, 11, 2, 34, 12],\n\n // 6\n [2, 86, 68],\n [4, 43, 27],\n [4, 43, 19],\n [4, 43, 15],\n\n // 7\n [2, 98, 78],\n [4, 49, 31],\n [2, 32, 14, 4, 33, 15],\n [4, 39, 13, 1, 40, 14],\n\n // 8\n [2, 121, 97],\n [2, 60, 38, 2, 61, 39],\n [4, 40, 18, 2, 41, 19],\n [4, 40, 14, 2, 41, 15],\n\n // 9\n [2, 146, 116],\n [3, 58, 36, 2, 59, 37],\n [4, 36, 16, 4, 37, 17],\n [4, 36, 12, 4, 37, 13],\n\n // 10\n [2, 86, 68, 2, 87, 69],\n [4, 69, 43, 1, 70, 44],\n [6, 43, 19, 2, 44, 20],\n [6, 43, 15, 2, 44, 16],\n\n // 11\n [4, 101, 81],\n [1, 80, 50, 4, 81, 51],\n [4, 50, 22, 4, 51, 23],\n [3, 36, 12, 8, 37, 13],\n\n // 12\n [2, 116, 92, 2, 117, 93],\n [6, 58, 36, 2, 59, 37],\n [4, 46, 20, 6, 47, 21],\n [7, 42, 14, 4, 43, 15],\n\n // 13\n [4, 133, 107],\n [8, 59, 37, 1, 60, 38],\n [8, 44, 20, 4, 45, 21],\n [12, 33, 11, 4, 34, 12],\n\n // 14\n [3, 145, 115, 1, 146, 116],\n [4, 64, 40, 5, 65, 41],\n [11, 36, 16, 5, 37, 17],\n [11, 36, 12, 5, 37, 13],\n\n // 15\n [5, 109, 87, 1, 110, 88],\n [5, 65, 41, 5, 66, 42],\n [5, 54, 24, 7, 55, 25],\n [11, 36, 12, 7, 37, 13],\n\n // 16\n [5, 122, 98, 1, 123, 99],\n [7, 73, 45, 3, 74, 46],\n [15, 43, 19, 2, 44, 20],\n [3, 45, 15, 13, 46, 16],\n\n // 17\n [1, 135, 107, 5, 136, 108],\n [10, 74, 46, 1, 75, 47],\n [1, 50, 22, 15, 51, 23],\n [2, 42, 14, 17, 43, 15],\n\n // 18\n [5, 150, 120, 1, 151, 121],\n [9, 69, 43, 4, 70, 44],\n [17, 50, 22, 1, 51, 23],\n [2, 42, 14, 19, 43, 15],\n\n // 19\n [3, 141, 113, 4, 142, 114],\n [3, 70, 44, 11, 71, 45],\n [17, 47, 21, 4, 48, 22],\n [9, 39, 13, 16, 40, 14],\n\n // 20\n [3, 135, 107, 5, 136, 108],\n [3, 67, 41, 13, 68, 42],\n [15, 54, 24, 5, 55, 25],\n [15, 43, 15, 10, 44, 16],\n\n // 21\n [4, 144, 116, 4, 145, 117],\n [17, 68, 42],\n [17, 50, 22, 6, 51, 23],\n [19, 46, 16, 6, 47, 17],\n\n // 22\n [2, 139, 111, 7, 140, 112],\n [17, 74, 46],\n [7, 54, 24, 16, 55, 25],\n [34, 37, 13],\n\n // 23\n [4, 151, 121, 5, 152, 122],\n [4, 75, 47, 14, 76, 48],\n [11, 54, 24, 14, 55, 25],\n [16, 45, 15, 14, 46, 16],\n\n // 24\n [6, 147, 117, 4, 148, 118],\n [6, 73, 45, 14, 74, 46],\n [11, 54, 24, 16, 55, 25],\n [30, 46, 16, 2, 47, 17],\n\n // 25\n [8, 132, 106, 4, 133, 107],\n [8, 75, 47, 13, 76, 48],\n [7, 54, 24, 22, 55, 25],\n [22, 45, 15, 13, 46, 16],\n\n // 26\n [10, 142, 114, 2, 143, 115],\n [19, 74, 46, 4, 75, 47],\n [28, 50, 22, 6, 51, 23],\n [33, 46, 16, 4, 47, 17],\n\n // 27\n [8, 152, 122, 4, 153, 123],\n [22, 73, 45, 3, 74, 46],\n [8, 53, 23, 26, 54, 24],\n [12, 45, 15, 28, 46, 16],\n\n // 28\n [3, 147, 117, 10, 148, 118],\n [3, 73, 45, 23, 74, 46],\n [4, 54, 24, 31, 55, 25],\n [11, 45, 15, 31, 46, 16],\n\n // 29\n [7, 146, 116, 7, 147, 117],\n [21, 73, 45, 7, 74, 46],\n [1, 53, 23, 37, 54, 24],\n [19, 45, 15, 26, 46, 16],\n\n // 30\n [5, 145, 115, 10, 146, 116],\n [19, 75, 47, 10, 76, 48],\n [15, 54, 24, 25, 55, 25],\n [23, 45, 15, 25, 46, 16],\n\n // 31\n [13, 145, 115, 3, 146, 116],\n [2, 74, 46, 29, 75, 47],\n [42, 54, 24, 1, 55, 25],\n [23, 45, 15, 28, 46, 16],\n\n // 32\n [17, 145, 115],\n [10, 74, 46, 23, 75, 47],\n [10, 54, 24, 35, 55, 25],\n [19, 45, 15, 35, 46, 16],\n\n // 33\n [17, 145, 115, 1, 146, 116],\n [14, 74, 46, 21, 75, 47],\n [29, 54, 24, 19, 55, 25],\n [11, 45, 15, 46, 46, 16],\n\n // 34\n [13, 145, 115, 6, 146, 116],\n [14, 74, 46, 23, 75, 47],\n [44, 54, 24, 7, 55, 25],\n [59, 46, 16, 1, 47, 17],\n\n // 35\n [12, 151, 121, 7, 152, 122],\n [12, 75, 47, 26, 76, 48],\n [39, 54, 24, 14, 55, 25],\n [22, 45, 15, 41, 46, 16],\n\n // 36\n [6, 151, 121, 14, 152, 122],\n [6, 75, 47, 34, 76, 48],\n [46, 54, 24, 10, 55, 25],\n [2, 45, 15, 64, 46, 16],\n\n // 37\n [17, 152, 122, 4, 153, 123],\n [29, 74, 46, 14, 75, 47],\n [49, 54, 24, 10, 55, 25],\n [24, 45, 15, 46, 46, 16],\n\n // 38\n [4, 152, 122, 18, 153, 123],\n [13, 74, 46, 32, 75, 47],\n [48, 54, 24, 14, 55, 25],\n [42, 45, 15, 32, 46, 16],\n\n // 39\n [20, 147, 117, 4, 148, 118],\n [40, 75, 47, 7, 76, 48],\n [43, 54, 24, 22, 55, 25],\n [10, 45, 15, 67, 46, 16],\n\n // 40\n [19, 148, 118, 6, 149, 119],\n [18, 75, 47, 31, 76, 48],\n [34, 54, 24, 34, 55, 25],\n [20, 45, 15, 61, 46, 16]\n ];\n\n const qrRSBlock = function(totalCount, dataCount) {\n const _this = {};\n _this.totalCount = totalCount;\n _this.dataCount = dataCount;\n return _this;\n };\n\n const _this = {};\n\n const getRsBlockTable = function(typeNumber, errorCorrectionLevel) {\n\n switch(errorCorrectionLevel) {\n case QRErrorCorrectionLevel.L :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n case QRErrorCorrectionLevel.M :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n case QRErrorCorrectionLevel.Q :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n case QRErrorCorrectionLevel.H :\n return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n default :\n return undefined;\n }\n };\n\n _this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {\n\n const rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);\n\n if (typeof rsBlock == 'undefined') {\n throw 'bad rs block @ typeNumber:' + typeNumber +\n '/errorCorrectionLevel:' + errorCorrectionLevel;\n }\n\n const length = rsBlock.length / 3;\n\n const list = [];\n\n for (let i = 0; i < length; i += 1) {\n\n const count = rsBlock[i * 3 + 0];\n const totalCount = rsBlock[i * 3 + 1];\n const dataCount = rsBlock[i * 3 + 2];\n\n for (let j = 0; j < count; j += 1) {\n list.push(qrRSBlock(totalCount, dataCount) );\n }\n }\n\n return list;\n };\n\n return _this;\n}();\n\n//---------------------------------------------------------------------\n// qrBitBuffer\n//---------------------------------------------------------------------\n\nconst qrBitBuffer = function() {\n\n const _buffer = [];\n let _length = 0;\n\n const _this = {};\n\n _this.getBuffer = function() {\n return _buffer;\n };\n\n _this.getAt = function(index) {\n const bufIndex = Math.floor(index / 8);\n return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n };\n\n _this.put = function(num, length) {\n for (let i = 0; i < length; i += 1) {\n _this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n }\n };\n\n _this.getLengthInBits = function() {\n return _length;\n };\n\n _this.putBit = function(bit) {\n\n const bufIndex = Math.floor(_length / 8);\n if (_buffer.length <= bufIndex) {\n _buffer.push(0);\n }\n\n if (bit) {\n _buffer[bufIndex] |= (0x80 >>> (_length % 8) );\n }\n\n _length += 1;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrNumber\n//---------------------------------------------------------------------\n\nconst qrNumber = function(data) {\n\n const _mode = QRMode.MODE_NUMBER;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const data = _data;\n\n let i = 0;\n\n while (i + 2 < data.length) {\n buffer.put(strToNum(data.substring(i, i + 3) ), 10);\n i += 3;\n }\n\n if (i < data.length) {\n if (data.length - i == 1) {\n buffer.put(strToNum(data.substring(i, i + 1) ), 4);\n } else if (data.length - i == 2) {\n buffer.put(strToNum(data.substring(i, i + 2) ), 7);\n }\n }\n };\n\n const strToNum = function(s) {\n let num = 0;\n for (let i = 0; i < s.length; i += 1) {\n num = num * 10 + chatToNum(s.charAt(i) );\n }\n return num;\n };\n\n const chatToNum = function(c) {\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n }\n throw 'illegal char :' + c;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrAlphaNum\n//---------------------------------------------------------------------\n\nconst qrAlphaNum = function(data) {\n\n const _mode = QRMode.MODE_ALPHA_NUM;\n const _data = data;\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _data.length;\n };\n\n _this.write = function(buffer) {\n\n const s = _data;\n\n let i = 0;\n\n while (i + 1 < s.length) {\n buffer.put(\n getCode(s.charAt(i) ) * 45 +\n getCode(s.charAt(i + 1) ), 11);\n i += 2;\n }\n\n if (i < s.length) {\n buffer.put(getCode(s.charAt(i) ), 6);\n }\n };\n\n const getCode = function(c) {\n\n if ('0' <= c && c <= '9') {\n return c.charCodeAt(0) - '0'.charCodeAt(0);\n } else if ('A' <= c && c <= 'Z') {\n return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;\n } else {\n switch (c) {\n case '\\u0020' : return 36;\n case '$' : return 37;\n case '%' : return 38;\n case '*' : return 39;\n case '+' : return 40;\n case '-' : return 41;\n case '.' : return 42;\n case '/' : return 43;\n case ':' : return 44;\n default :\n throw 'illegal char :' + c;\n }\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qr8BitByte\n//---------------------------------------------------------------------\n\nconst qr8BitByte = function(data) {\n\n const _mode = QRMode.MODE_8BIT_BYTE;\n const _data = data;\n const _bytes = qrcode.stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return _bytes.length;\n };\n\n _this.write = function(buffer) {\n for (let i = 0; i < _bytes.length; i += 1) {\n buffer.put(_bytes[i], 8);\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// qrKanji\n//---------------------------------------------------------------------\n\nconst qrKanji = function(data) {\n\n const _mode = QRMode.MODE_KANJI;\n const _data = data;\n\n const stringToBytes = qrcode.stringToBytes;\n !function(c, code) {\n // self test for sjis support.\n const test = stringToBytes(c);\n if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {\n throw 'sjis not supported.';\n }\n }('\\u53cb', 0x9746);\n\n const _bytes = stringToBytes(data);\n\n const _this = {};\n\n _this.getMode = function() {\n return _mode;\n };\n\n _this.getLength = function(buffer) {\n return ~~(_bytes.length / 2);\n };\n\n _this.write = function(buffer) {\n\n const data = _bytes;\n\n let i = 0;\n\n while (i + 1 < data.length) {\n\n let c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);\n\n if (0x8140 <= c && c <= 0x9FFC) {\n c -= 0x8140;\n } else if (0xE040 <= c && c <= 0xEBBF) {\n c -= 0xC140;\n } else {\n throw 'illegal char at ' + (i + 1) + '/' + c;\n }\n\n c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);\n\n buffer.put(c, 13);\n\n i += 2;\n }\n\n if (i < data.length) {\n throw 'illegal char at ' + (i + 1);\n }\n };\n\n return _this;\n};\n\n//=====================================================================\n// GIF Support etc.\n//\n\n//---------------------------------------------------------------------\n// byteArrayOutputStream\n//---------------------------------------------------------------------\n\nconst byteArrayOutputStream = function() {\n\n const _bytes = [];\n\n const _this = {};\n\n _this.writeByte = function(b) {\n _bytes.push(b & 0xff);\n };\n\n _this.writeShort = function(i) {\n _this.writeByte(i);\n _this.writeByte(i >>> 8);\n };\n\n _this.writeBytes = function(b, off, len) {\n off = off || 0;\n len = len || b.length;\n for (let i = 0; i < len; i += 1) {\n _this.writeByte(b[i + off]);\n }\n };\n\n _this.writeString = function(s) {\n for (let i = 0; i < s.length; i += 1) {\n _this.writeByte(s.charCodeAt(i) );\n }\n };\n\n _this.toByteArray = function() {\n return _bytes;\n };\n\n _this.toString = function() {\n let s = '';\n s += '[';\n for (let i = 0; i < _bytes.length; i += 1) {\n if (i > 0) {\n s += ',';\n }\n s += _bytes[i];\n }\n s += ']';\n return s;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64EncodeOutputStream\n//---------------------------------------------------------------------\n\nconst base64EncodeOutputStream = function() {\n\n let _buffer = 0;\n let _buflen = 0;\n let _length = 0;\n let _base64 = '';\n\n const _this = {};\n\n const writeEncoded = function(b) {\n _base64 += String.fromCharCode(encode(b & 0x3f) );\n };\n\n const encode = function(n) {\n if (n < 0) {\n throw 'n:' + n;\n } else if (n < 26) {\n return 0x41 + n;\n } else if (n < 52) {\n return 0x61 + (n - 26);\n } else if (n < 62) {\n return 0x30 + (n - 52);\n } else if (n == 62) {\n return 0x2b;\n } else if (n == 63) {\n return 0x2f;\n } else {\n throw 'n:' + n;\n }\n };\n\n _this.writeByte = function(n) {\n\n _buffer = (_buffer << 8) | (n & 0xff);\n _buflen += 8;\n _length += 1;\n\n while (_buflen >= 6) {\n writeEncoded(_buffer >>> (_buflen - 6) );\n _buflen -= 6;\n }\n };\n\n _this.flush = function() {\n\n if (_buflen > 0) {\n writeEncoded(_buffer << (6 - _buflen) );\n _buffer = 0;\n _buflen = 0;\n }\n\n if (_length % 3 != 0) {\n // padding\n const padlen = 3 - _length % 3;\n for (let i = 0; i < padlen; i += 1) {\n _base64 += '=';\n }\n }\n };\n\n _this.toString = function() {\n return _base64;\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// base64DecodeInputStream\n//---------------------------------------------------------------------\n\nconst base64DecodeInputStream = function(str) {\n\n const _str = str;\n let _pos = 0;\n let _buffer = 0;\n let _buflen = 0;\n\n const _this = {};\n\n _this.read = function() {\n\n while (_buflen < 8) {\n\n if (_pos >= _str.length) {\n if (_buflen == 0) {\n return -1;\n }\n throw 'unexpected end of file./' + _buflen;\n }\n\n const c = _str.charAt(_pos);\n _pos += 1;\n\n if (c == '=') {\n _buflen = 0;\n return -1;\n } else if (c.match(/^\\s$/) ) {\n // ignore if whitespace.\n continue;\n }\n\n _buffer = (_buffer << 6) | decode(c.charCodeAt(0) );\n _buflen += 6;\n }\n\n const n = (_buffer >>> (_buflen - 8) ) & 0xff;\n _buflen -= 8;\n return n;\n };\n\n const decode = function(c) {\n if (0x41 <= c && c <= 0x5a) {\n return c - 0x41;\n } else if (0x61 <= c && c <= 0x7a) {\n return c - 0x61 + 26;\n } else if (0x30 <= c && c <= 0x39) {\n return c - 0x30 + 52;\n } else if (c == 0x2b) {\n return 62;\n } else if (c == 0x2f) {\n return 63;\n } else {\n throw 'c:' + c;\n }\n };\n\n return _this;\n};\n\n//---------------------------------------------------------------------\n// gifImage (B/W)\n//---------------------------------------------------------------------\n\nconst gifImage = function(width, height) {\n\n const _width = width;\n const _height = height;\n const _data = new Array(width * height);\n\n const _this = {};\n\n _this.setPixel = function(x, y, pixel) {\n _data[y * _width + x] = pixel;\n };\n\n _this.write = function(out) {\n\n //---------------------------------\n // GIF Signature\n\n out.writeString('GIF87a');\n\n //---------------------------------\n // Screen Descriptor\n\n out.writeShort(_width);\n out.writeShort(_height);\n\n out.writeByte(0x80); // 2bit\n out.writeByte(0);\n out.writeByte(0);\n\n //---------------------------------\n // Global Color Map\n\n // black\n out.writeByte(0x00);\n out.writeByte(0x00);\n out.writeByte(0x00);\n\n // white\n out.writeByte(0xff);\n out.writeByte(0xff);\n out.writeByte(0xff);\n\n //---------------------------------\n // Image Descriptor\n\n out.writeString(',');\n out.writeShort(0);\n out.writeShort(0);\n out.writeShort(_width);\n out.writeShort(_height);\n out.writeByte(0);\n\n //---------------------------------\n // Local Color Map\n\n //---------------------------------\n // Raster Data\n\n const lzwMinCodeSize = 2;\n const raster = getLZWRaster(lzwMinCodeSize);\n\n out.writeByte(lzwMinCodeSize);\n\n let offset = 0;\n\n while (raster.length - offset > 255) {\n out.writeByte(255);\n out.writeBytes(raster, offset, 255);\n offset += 255;\n }\n\n out.writeByte(raster.length - offset);\n out.writeBytes(raster, offset, raster.length - offset);\n out.writeByte(0x00);\n\n //---------------------------------\n // GIF Terminator\n out.writeString(';');\n };\n\n const bitOutputStream = function(out) {\n\n const _out = out;\n let _bitLength = 0;\n let _bitBuffer = 0;\n\n const _this = {};\n\n _this.write = function(data, length) {\n\n if ( (data >>> length) != 0) {\n throw 'length over';\n }\n\n while (_bitLength + length >= 8) {\n _out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );\n length -= (8 - _bitLength);\n data >>>= (8 - _bitLength);\n _bitBuffer = 0;\n _bitLength = 0;\n }\n\n _bitBuffer = (data << _bitLength) | _bitBuffer;\n _bitLength = _bitLength + length;\n };\n\n _this.flush = function() {\n if (_bitLength > 0) {\n _out.writeByte(_bitBuffer);\n }\n };\n\n return _this;\n };\n\n const getLZWRaster = function(lzwMinCodeSize) {\n\n const clearCode = 1 << lzwMinCodeSize;\n const endCode = (1 << lzwMinCodeSize) + 1;\n let bitLength = lzwMinCodeSize + 1;\n\n // Setup LZWTable\n const table = lzwTable();\n\n for (let i = 0; i < clearCode; i += 1) {\n table.add(String.fromCharCode(i) );\n }\n table.add(String.fromCharCode(clearCode) );\n table.add(String.fromCharCode(endCode) );\n\n const byteOut = byteArrayOutputStream();\n const bitOut = bitOutputStream(byteOut);\n\n // clear code\n bitOut.write(clearCode, bitLength);\n\n let dataIndex = 0;\n\n let s = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n while (dataIndex < _data.length) {\n\n const c = String.fromCharCode(_data[dataIndex]);\n dataIndex += 1;\n\n if (table.contains(s + c) ) {\n\n s = s + c;\n\n } else {\n\n bitOut.write(table.indexOf(s), bitLength);\n\n if (table.size() < 0xfff) {\n\n if (table.size() == (1 << bitLength) ) {\n bitLength += 1;\n }\n\n table.add(s + c);\n }\n\n s = c;\n }\n }\n\n bitOut.write(table.indexOf(s), bitLength);\n\n // end code\n bitOut.write(endCode, bitLength);\n\n bitOut.flush();\n\n return byteOut.toByteArray();\n };\n\n const lzwTable = function() {\n\n const _map = {};\n let _size = 0;\n\n const _this = {};\n\n _this.add = function(key) {\n if (_this.contains(key) ) {\n throw 'dup key:' + key;\n }\n _map[key] = _size;\n _size += 1;\n };\n\n _this.size = function() {\n return _size;\n };\n\n _this.indexOf = function(key) {\n return _map[key];\n };\n\n _this.contains = function(key) {\n return typeof _map[key] != 'undefined';\n };\n\n return _this;\n };\n\n return _this;\n};\n\nconst createDataURL = function(width, height, getPixel) {\n const gif = gifImage(width, height);\n for (let y = 0; y < height; y += 1) {\n for (let x = 0; x < width; x += 1) {\n gif.setPixel(x, y, getPixel(x, y) );\n }\n }\n\n const b = byteArrayOutputStream();\n gif.write(b);\n\n const base64 = base64EncodeOutputStream();\n const bytes = b.toByteArray();\n for (let i = 0; i < bytes.length; i += 1) {\n base64.writeByte(bytes[i]);\n }\n base64.flush();\n\n return 'data:image/gif;base64,' + base64;\n};\n\nexport default qrcode;\n\nexport const stringToBytes = qrcode.stringToBytes;\n","import QRCodeGenerator from 'qrcode-generator';\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nconst XLINK_NS = 'http://www.w3.org/1999/xlink';\n\nexport interface QrSvgOptions {\n size: number;\n logoUrl?: string;\n /** 0-0.3 arası — `H` (en yüksek, ~%30 toleranslı) hata düzeltme seviyesiyle bile daha büyük değerler taranabilirliği bozabilir. */\n logoScale: number;\n}\n\n/** data'yı QR SVG'sine çizer (DOM API ile). */\nexport function buildQrSvg(data: string, opts: QrSvgOptions): SVGSVGElement {\n const qr = QRCodeGenerator(0, opts.logoUrl ? 'H' : 'M');\n qr.addData(data);\n qr.make();\n\n const count = qr.getModuleCount();\n const cell = opts.size / count;\n\n const svg = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('viewBox', `0 0 ${opts.size} ${opts.size}`);\n svg.setAttribute('width', String(opts.size));\n svg.setAttribute('height', String(opts.size));\n\n const bg = document.createElementNS(SVG_NS, 'rect');\n bg.setAttribute('width', '100%');\n bg.setAttribute('height', '100%');\n bg.setAttribute('fill', '#fff');\n svg.appendChild(bg);\n\n const modules = document.createElementNS(SVG_NS, 'g');\n modules.setAttribute('fill', '#000');\n for (let row = 0; row < count; row++) {\n for (let col = 0; col < count; col++) {\n if (!qr.isDark(row, col)) continue;\n const rect = document.createElementNS(SVG_NS, 'rect');\n rect.setAttribute('x', String(col * cell));\n rect.setAttribute('y', String(row * cell));\n rect.setAttribute('width', String(cell));\n rect.setAttribute('height', String(cell));\n modules.appendChild(rect);\n }\n }\n svg.appendChild(modules);\n\n if (opts.logoUrl) {\n const logoSize = opts.size * opts.logoScale;\n const pad = logoSize * 0.18;\n const backSize = logoSize + pad * 2;\n const backXY = (opts.size - backSize) / 2;\n const logoXY = (opts.size - logoSize) / 2;\n\n const back = document.createElementNS(SVG_NS, 'rect');\n back.setAttribute('x', String(backXY));\n back.setAttribute('y', String(backXY));\n back.setAttribute('width', String(backSize));\n back.setAttribute('height', String(backSize));\n back.setAttribute('rx', String(backSize * 0.22));\n back.setAttribute('fill', '#fff');\n svg.appendChild(back);\n\n const img = document.createElementNS(SVG_NS, 'image');\n img.setAttribute('href', opts.logoUrl);\n // Eski Safari sürümleri `href`i değil yalnızca `xlink:href`i anlıyor.\n img.setAttributeNS(XLINK_NS, 'xlink:href', opts.logoUrl);\n img.setAttribute('x', String(logoXY));\n img.setAttribute('y', String(logoXY));\n img.setAttribute('width', String(logoSize));\n img.setAttribute('height', String(logoSize));\n img.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.appendChild(img);\n }\n\n return svg;\n}\n","import type { QrResumeOptions } from '../../types';\nimport type { HopeLocaleStrings } from '../../i18n/types';\nimport { buildQrSvg } from './qrSvg';\nimport { seekWhenReady } from '../shared/seekWhenReady';\n\nexport interface QrResumePlayerContext {\n videoEl: HTMLVideoElement;\n overlayContainerEl: HTMLElement;\n i18n: HopeLocaleStrings;\n}\n\nconst STORAGE_KEY = 'hope-qr-resume-dismissed';\n\n/** Yeterince izlenmiş bir noktada duraklatılınca \"telefonundan devam et\" QR kodu. */\nexport class QrResume {\n private wrapper: HTMLElement | null = null;\n private seeking = false;\n private seekTimeout: ReturnType<typeof setTimeout> | null = null;\n private pauseTimeout: ReturnType<typeof setTimeout> | null = null;\n private readonly paramName: string;\n\n constructor(\n private readonly ctx: QrResumePlayerContext,\n private readonly options: QrResumeOptions\n ) {\n this.paramName = options.paramName ?? 'vtime';\n\n this.applyResumeFromUrl();\n\n ctx.videoEl.addEventListener('play', this.onPlay);\n ctx.videoEl.addEventListener('ended', this.onPlay);\n ctx.videoEl.addEventListener('seeking', this.onSeeking);\n ctx.videoEl.addEventListener('seeked', this.onSeeked);\n ctx.videoEl.addEventListener('pause', this.onPause);\n }\n\n /** Dışarıdan (ör. entegratörün kendi \"telefonuna gönder\" butonu, ya da docs demo'sundaki test butonu) manuel olarak göstermek için — \"kaldığın yerden devam et\" otomatik tetiklenme kuralları (minElapsed/minRemaining) BURADA uygulanmaz, çağıran taraf bilinçli olarak gösteriyor demektir. */\n show(): void {\n this.create();\n }\n\n hide(): void {\n this.remove();\n }\n\n /** Ayarlar menüsündeki aç/kapa satırı — \"Bir daha gösterme\" sonrası tekrar açılabilsin. */\n isEnabled(): boolean {\n return !this.isDismissedForever();\n }\n\n setEnabled(enabled: boolean): void {\n this.setDismissedForever(!enabled);\n }\n\n /** Ekran her gösterimde sıfırdan oluşturuluyor ve güncel `ctx.i18n`'i okuyor — RedirectScreen'deki AYNI desen. */\n refreshLabels(): void {\n /* no-op */\n }\n\n destroy(): void {\n this.ctx.videoEl.removeEventListener('play', this.onPlay);\n this.ctx.videoEl.removeEventListener('ended', this.onPlay);\n this.ctx.videoEl.removeEventListener('seeking', this.onSeeking);\n this.ctx.videoEl.removeEventListener('seeked', this.onSeeked);\n this.ctx.videoEl.removeEventListener('pause', this.onPause);\n if (this.seekTimeout) clearTimeout(this.seekTimeout);\n if (this.pauseTimeout) clearTimeout(this.pauseTimeout);\n this.remove();\n }\n\n private isDismissedForever(): boolean {\n if (this.options.rememberDismiss === false) return false;\n try {\n return window.localStorage.getItem(STORAGE_KEY) === '1';\n } catch {\n return false;\n }\n }\n\n private setDismissedForever(value: boolean): void {\n try {\n window.localStorage.setItem(STORAGE_KEY, value ? '1' : '0');\n } catch {\n /* gizli mod vb. — sessizce yoksay */\n }\n }\n\n private buildResumeUrl(time: number): string {\n const url = new URL(window.location.href);\n url.searchParams.set(this.paramName, String(Math.floor(time)));\n return url.toString();\n }\n\n private applyResumeFromUrl(): void {\n const url = new URL(window.location.href);\n const raw = url.searchParams.get(this.paramName);\n if (raw === null || !/^\\d+$/.test(raw)) return;\n\n const seconds = Number(raw);\n const v = this.ctx.videoEl;\n // WebKit (Safari) readyState'i loadedmetadata'dan ÖNCE yükseltiyor; o arada yapılan sarmayı meta veriyi\n // işlerken sıfırlıyor (seeked → 0. sn). Sarmanın sonucu (seeked) doğrulanır, kaydıysa bir kez daha uygulanır.\n seekWhenReady(v, seconds, { attempts: 2 });\n\n url.searchParams.delete(this.paramName);\n window.history.replaceState(window.history.state, '', url.toString());\n }\n\n private readonly onPlay = (): void => this.remove();\n\n private readonly onSeeking = (): void => {\n this.seeking = true;\n if (this.seekTimeout) clearTimeout(this.seekTimeout);\n this.seekTimeout = setTimeout(() => {\n this.seeking = false;\n }, 150);\n };\n\n private readonly onSeeked = (): void => {\n if (this.seekTimeout) clearTimeout(this.seekTimeout);\n this.seeking = false;\n };\n\n private readonly onPause = (): void => {\n if (this.isDismissedForever()) return;\n const { currentTime, duration } = this.ctx.videoEl;\n const minElapsed = this.options.minElapsed ?? 60;\n const minRemaining = this.options.minRemaining ?? 60;\n if (!(duration - currentTime > minRemaining && currentTime > minElapsed)) return;\n\n // Eski koddaki AYNI kısa gecikme — 'seeking' sırasında da anlık bir\n // 'pause' tetiklenebiliyor (scrub), bu ekranın yanlışlıkla\n // belirmesini önlüyor.\n if (this.pauseTimeout) clearTimeout(this.pauseTimeout);\n this.pauseTimeout = setTimeout(() => {\n if (!this.seeking && this.ctx.videoEl.paused) this.create();\n }, 150);\n };\n\n private remove(): void {\n this.wrapper?.remove();\n this.wrapper = null;\n }\n\n private create(): void {\n this.remove();\n const size = this.options.size ?? 220;\n const url = this.buildResumeUrl(this.ctx.videoEl.currentTime);\n\n const wrapper = document.createElement('div');\n wrapper.setAttribute('part', 'qr-resume-screen');\n wrapper.className =\n 'hp:absolute hp:inset-0 hp:z-30 hp:flex hp:flex-col hp:items-center hp:justify-center hp:gap-3 hp:bg-black/85 hp:text-white hp:text-center hp:p-4';\n\n const codeWrap = document.createElement('div');\n codeWrap.className = 'hp:rounded-lg hp:overflow-hidden hp:shadow-lg hp:leading-none';\n codeWrap.appendChild(buildQrSvg(url, { size, logoUrl: this.options.logo, logoScale: this.options.logoScale ?? 0.22 }));\n wrapper.appendChild(codeWrap);\n\n const text = document.createElement('div');\n text.className = 'hp:text-sm hp:opacity-90 hp:max-w-xs';\n text.textContent = this.ctx.i18n.qrResumeTitle;\n wrapper.appendChild(text);\n\n const buttons = document.createElement('div');\n buttons.className = 'hp:flex hp:gap-2 hp:mt-1';\n\n const dismissBtn = document.createElement('button');\n dismissBtn.type = 'button';\n dismissBtn.textContent = this.ctx.i18n.qrResumeDontShowAgain;\n dismissBtn.className = 'hp:px-4 hp:py-1.5 hp:rounded hp:bg-white/15 hp:text-white hp:border-0 hp:cursor-pointer hp:text-sm';\n dismissBtn.addEventListener('click', () => {\n this.setDismissedForever(true);\n this.remove();\n });\n\n const continueBtn = document.createElement('button');\n continueBtn.type = 'button';\n continueBtn.textContent = this.ctx.i18n.qrResumeContinue;\n continueBtn.className = 'hp:px-4 hp:py-1.5 hp:rounded hp:bg-accent hp:text-on-accent hp:border-0 hp:cursor-pointer hp:text-sm';\n continueBtn.addEventListener('click', () => {\n this.remove();\n if (this.ctx.videoEl.paused) void this.ctx.videoEl.play();\n });\n\n buttons.append(dismissBtn, continueBtn);\n wrapper.appendChild(buttons);\n\n this.ctx.overlayContainerEl.appendChild(wrapper);\n this.wrapper = wrapper;\n }\n}\n","import { QrResume, type QrResumePlayerContext } from './QrResume';\nimport type { QrResumeOptions } from '../../types';\n\nexport function installQrResume(ctx: QrResumePlayerContext, options: QrResumeOptions): QrResume {\n return new QrResume(ctx, options);\n}\n\nexport { QrResume };\nexport type { QrResumePlayerContext };\n"],"names":["qrcode","typeNumber","errorCorrectionLevel","_typeNumber","_errorCorrectionLevel","QRErrorCorrectionLevel","_modules","_moduleCount","_dataCache","_dataList","_this","makeImpl","test","maskPattern","moduleCount","modules","row","col","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","getBestMaskPattern","minLostPoint","pattern","i","lostPoint","QRUtil","pos","j","bits","mod","data","inc","bitIndex","byteIndex","maskFunc","dark","createBytes","buffer","rsBlocks","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","rsPoly","modPoly","qrPolynomial","modIndex","totalCodeCount","index","dataList","QRRSBlock","qrBitBuffer","totalDataCount","mode","newData","qrNumber","qrAlphaNum","qr8BitByte","qrKanji","cellSize","margin","qrHtml","alt","title","opts","size","mc","mr","qrSvg","rect","escapeXml","min","max","createDataURL","x","y","img","s","escaped","_createHalfASCII","r1","r2","p","blocks","blocksLastLineNoMargin","ascii","white","black","line","context","length","bytes","unicodeData","numChars","unicodeMap","bin","base64DecodeInputStream","read","b","count","b0","b1","b2","b3","k","v","unknownChar","QRMode","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","digit","d","errorCorrectLength","a","QRMath","type","sameCount","darkCount","ratio","EXP_TABLE","LOG_TABLE","n","num","shift","_num","e","RS_BLOCK_TABLE","qrRSBlock","totalCount","dataCount","getRsBlockTable","rsBlock","list","_buffer","_length","bufIndex","bit","_mode","_data","strToNum","chatToNum","getCode","_bytes","stringToBytes","code","byteArrayOutputStream","off","len","base64EncodeOutputStream","_buflen","_base64","writeEncoded","encode","padlen","str","_str","_pos","decode","gifImage","width","height","_width","_height","pixel","out","lzwMinCodeSize","raster","getLZWRaster","bitOutputStream","_out","_bitLength","_bitBuffer","clearCode","endCode","bitLength","table","lzwTable","byteOut","bitOut","dataIndex","_map","_size","key","getPixel","gif","base64","SVG_NS","XLINK_NS","buildQrSvg","qr","QRCodeGenerator","cell","svg","bg","logoSize","pad","backSize","backXY","logoXY","back","STORAGE_KEY","QrResume","ctx","options","__publicField","currentTime","duration","minElapsed","minRemaining","enabled","value","time","url","raw","seconds","seekWhenReady","_a","wrapper","codeWrap","text","buttons","dismissBtn","continueBtn","installQrResume"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var w = Object.defineProperty;
|
|
2
2
|
var N = (o, e, t) => e in o ? w(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
|
|
3
3
|
var l = (o, e, t) => N(o, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
-
import { c as f } from "./player-
|
|
4
|
+
import { c as f } from "./player-B_e_Nnvb.js";
|
|
5
5
|
const b = "http://www.w3.org/2000/svg", C = 18, g = 2 * Math.PI * C, A = 10;
|
|
6
6
|
function y(o) {
|
|
7
7
|
const e = document.createElementNS(b, "svg");
|
|
@@ -205,4 +205,4 @@ export {
|
|
|
205
205
|
L as RedirectScreen,
|
|
206
206
|
T as installRedirectScreen
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=redirectScreen-
|
|
208
|
+
//# sourceMappingURL=redirectScreen-DZwpVYWk.js.map
|