-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathqrgen.min.js
20 lines (19 loc) · 11.7 KB
/
qrgen.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"use strict";var qrcodegen=new function(){this.QrCode=function(e,n,i,u){if(e<O||e>T)throw"Version value out of range";if(u<-1||u>7)throw"Mask value out of range";if(!(n instanceof D))throw"QrCode.Ecc expected";for(var f=e*4+17,g=[],v=0;v<f;v++)g.push(!1);for(var d=[],E=[],v=0;v<f;v++)d.push(g.slice()),E.push(g.slice());C();var R=z(i);if(X(R),u==-1)for(var b=1/0,v=0;v<8;v++){F(v),N(v);var P=$();P<b&&(u=v,b=P),F(v)}if(u<0||u>7)throw"Assertion error";F(u),N(u),E=null,Object.defineProperty(this,"version",{value:e}),Object.defineProperty(this,"size",{value:f}),Object.defineProperty(this,"errorCorrectionLevel",{value:n}),Object.defineProperty(this,"mask",{value:u}),this.getModule=function(r,t){return 0<=r&&r<f&&0<=t&&t<f&&d[t][r]},this.drawCanvas=function(r,t,a){if(r<=0||t<0)throw"Value out of range";var o=(f+t*2)*r;a.width=o,a.height=o;for(var s=a.getContext("2d"),c=-t;c<f+t;c++)for(var l=-t;l<f+t;l++)s.fillStyle=this.getModule(l,c)?"#000000":"#FFFFFF",s.fillRect((l+t)*r,(c+t)*r,r,r)},this.toSvgString=function(r){if(r<0)throw"Border must be non-negative";for(var t=[],a=0;a<f;a++)for(var o=0;o<f;o++)this.getModule(o,a)&&t.push("M"+(o+r)+","+(a+r)+"h1v1h-1z");return`<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 `+(f+r*2)+" "+(f+r*2)+`" stroke="none">
<rect width="100%" height="100%" fill="#FFFFFF"/>
<path d="`+t.join(" ")+`" fill="#000000"/>
</svg>
`};function C(){for(var r=0;r<f;r++)w(6,r,r%2==0),w(r,6,r%2==0);Q(3,3),Q(f-4,3),Q(3,f-4);for(var t=J(),a=t.length,r=0;r<a;r++)for(var o=0;o<a;o++)r==0&&o==0||r==0&&o==a-1||r==a-1&&o==0||H(t[r],t[o]);N(0),W()}function N(r){for(var t=n.formatBits<<3|r,a=t,o=0;o<10;o++)a=a<<1^(a>>>9)*1335;var s=(t<<10|a)^21522;if(s>>>15!=0)throw"Assertion error";for(var o=0;o<=5;o++)w(8,o,A(s,o));w(8,7,A(s,6)),w(8,8,A(s,7)),w(7,8,A(s,8));for(var o=9;o<15;o++)w(14-o,8,A(s,o));for(var o=0;o<8;o++)w(f-1-o,8,A(s,o));for(var o=8;o<15;o++)w(8,f-15+o,A(s,o));w(8,f-8,!0)}function W(){if(!(e<7)){for(var r=e,t=0;t<12;t++)r=r<<1^(r>>>11)*7973;var a=e<<12|r;if(a>>>18!=0)throw"Assertion error";for(var t=0;t<18;t++){var o=A(a,t),s=f-11+t%3,c=Math.floor(t/3);w(s,c,o),w(c,s,o)}}}function Q(r,t){for(var a=-4;a<=4;a++)for(var o=-4;o<=4;o++){var s=Math.max(Math.abs(o),Math.abs(a)),c=r+o,l=t+a;0<=c&&c<f&&0<=l&&l<f&&w(c,l,s!=2&&s!=4)}}function H(r,t){for(var a=-2;a<=2;a++)for(var o=-2;o<=2;o++)w(r+o,t+a,Math.max(Math.abs(o),Math.abs(a))!=1)}function w(r,t,a){d[t][r]=a,E[t][r]=!0}function z(r){if(r.length!=h.getNumDataCodewords(e,n))throw"Invalid argument";for(var t=h.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e],a=h.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e],o=Math.floor(h.getNumRawDataModules(e)/8),s=t-o%t,c=Math.floor(o/t),l=[],m=h.reedSolomonComputeDivisor(a),p=0,I=0;p<t;p++){var B=r.slice(I,I+c-a+(p<s?0:1));I+=B.length;var G=h.reedSolomonComputeRemainder(B,m);p<s&&B.push(0),l.push(B.concat(G))}for(var L=[],p=0;p<l[0].length;p++)for(var _=0;_<l.length;_++)(p!=c-a||_>=s)&&L.push(l[_][p]);if(L.length!=o)throw"Assertion error";return L}function X(r){if(r.length!=Math.floor(h.getNumRawDataModules(e)/8))throw"Invalid argument";for(var t=0,a=f-1;a>=1;a-=2){a==6&&(a=5);for(var o=0;o<f;o++)for(var s=0;s<2;s++){var c=a-s,l=(a+1&2)==0,m=l?f-1-o:o;!E[m][c]&&t<r.length*8&&(d[m][c]=A(r[t>>>3],7-(t&7)),t++)}}if(t!=r.length*8)throw"Assertion error"}function F(r){if(r<0||r>7)throw"Mask value out of range";for(var t=0;t<f;t++)for(var a=0;a<f;a++){var o;switch(r){case 0:o=(a+t)%2==0;break;case 1:o=t%2==0;break;case 2:o=a%3==0;break;case 3:o=(a+t)%3==0;break;case 4:o=(Math.floor(a/3)+Math.floor(t/2))%2==0;break;case 5:o=a*t%2+a*t%3==0;break;case 6:o=(a*t%2+a*t%3)%2==0;break;case 7:o=((a+t)%2+a*t%3)%2==0;break;default:throw"Assertion error"}!E[t][a]&&o&&(d[t][a]=!d[t][a])}}function $(){for(var r=0,t=0;t<f;t++){for(var a=!1,o=0,s=[0,0,0,0,0,0,0],c=f,l=0;l<f;l++)d[t][l]==a?(o++,o==5?r+=h.PENALTY_N1:o>5&&r++):(h.finderPenaltyAddHistory(o+c,s),c=0,a||(r+=k(s)*h.PENALTY_N3),a=d[t][l],o=1);r+=Y(a,o+c,s)*h.PENALTY_N3}for(var l=0;l<f;l++){for(var a=!1,m=0,s=[0,0,0,0,0,0,0],c=f,t=0;t<f;t++)d[t][l]==a?(m++,m==5?r+=h.PENALTY_N1:m>5&&r++):(h.finderPenaltyAddHistory(m+c,s),c=0,a||(r+=k(s)*h.PENALTY_N3),a=d[t][l],m=1);r+=Y(a,m+c,s)*h.PENALTY_N3}for(var t=0;t<f-1;t++)for(var l=0;l<f-1;l++){var p=d[t][l];p==d[t][l+1]&&p==d[t+1][l]&&p==d[t+1][l+1]&&(r+=h.PENALTY_N2)}var I=0;d.forEach(function(L){L.forEach(function(_){_&&I++})});var B=f*f,G=Math.ceil(Math.abs(I*20-B*10)/B)-1;return r+=G*h.PENALTY_N4,r}function J(){if(e==1)return[];for(var r=Math.floor(e/7)+2,t=e==32?26:Math.ceil((f-13)/(r*2-2))*2,a=[6],o=f-7;a.length<r;o-=t)a.splice(1,0,o);return a}function k(r){var t=r[1];if(t>f*3)throw"Assertion error";var a=t>0&&r[2]==t&&r[3]==t*3&&r[4]==t&&r[5]==t;return(a&&r[0]>=t*4&&r[6]>=t?1:0)+(a&&r[6]>=t*4&&r[0]>=t?1:0)}function Y(r,t,a){return r&&(h.finderPenaltyAddHistory(t,a),t=0),t+=f,h.finderPenaltyAddHistory(t,a),k(a)}function A(r,t){return(r>>>t&1)!=0}},this.QrCode.encodeText=function(e,n){var i=qrcodegen.QrSegment.makeSegments(e);return this.encodeSegments(i,n)},this.QrCode.encodeBinary=function(e,n){var i=qrcodegen.QrSegment.makeBytes(e);return this.encodeSegments([i],n)},this.QrCode.encodeSegments=function(e,n,i,u,f,g){if(i==null&&(i=O),u==null&&(u=T),f==null&&(f=-1),g==null&&(g=!0),!(O<=i&&i<=u&&u<=T)||f<-1||f>7)throw"Invalid value";var v,d;for(v=i;;v++){var R=h.getNumDataCodewords(v,n)*8;if(d=qrcodegen.QrSegment.getTotalBits(e,v),d<=R)break;if(v>=u)throw"Data too long"}[this.Ecc.MEDIUM,this.Ecc.QUARTILE,this.Ecc.HIGH].forEach(function(C){g&&d<=h.getNumDataCodewords(v,C)*8&&(n=C)});var E=new M;if(e.forEach(function(C){E.appendBits(C.mode.modeBits,4),E.appendBits(C.numChars,C.mode.numCharCountBits(v)),C.getData().forEach(function(N){E.push(N)})}),E.length!=d)throw"Assertion error";var R=h.getNumDataCodewords(v,n)*8;if(E.length>R||(E.appendBits(0,Math.min(4,R-E.length)),E.appendBits(0,(8-E.length%8)%8),E.length%8!=0))throw"Assertion error";for(var b=236;E.length<R;b^=253)E.appendBits(b,8);for(var P=[];P.length*8<E.length;)P.push(0);return E.forEach(function(C,N){P[N>>>3]|=C<<7-(N&7)}),new this(v,n,P,f)};var h={};h.getNumRawDataModules=function(e){if(e<O||e>T)throw"Version number out of range";var n=(16*e+128)*e+64;if(e>=2){var i=Math.floor(e/7)+2;n-=(25*i-10)*i-55,e>=7&&(n-=36)}return n},h.getNumDataCodewords=function(e,n){return Math.floor(h.getNumRawDataModules(e)/8)-h.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*h.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]},h.reedSolomonComputeDivisor=function(e){if(e<1||e>255)throw"Degree out of range";for(var n=[],i=0;i<e-1;i++)n.push(0);n.push(1);for(var u=1,i=0;i<e;i++){for(var f=0;f<n.length;f++)n[f]=h.reedSolomonMultiply(n[f],u),f+1<n.length&&(n[f]^=n[f+1]);u=h.reedSolomonMultiply(u,2)}return n},h.reedSolomonComputeRemainder=function(e,n){var i=n.map(function(){return 0});return e.forEach(function(u){var f=u^i.shift();i.push(0),n.forEach(function(g,v){i[v]^=h.reedSolomonMultiply(g,f)})}),i},h.reedSolomonMultiply=function(e,n){if(e>>>8!=0||n>>>8!=0)throw"Byte out of range";for(var i=0,u=7;u>=0;u--)i=i<<1^(i>>>7)*285,i^=(n>>>u&1)*e;if(i>>>8!=0)throw"Assertion error";return i},h.finderPenaltyAddHistory=function(e,n){n.pop(),n.unshift(e)},h.hasFinderLikePattern=function(e){var n=e[1];return n>0&&e[2]==n&&e[4]==n&&e[5]==n&&e[3]==n*3&&Math.max(e[0],e[6])>=n*4};var O=1,T=40;Object.defineProperty(this.QrCode,"MIN_VERSION",{value:O}),Object.defineProperty(this.QrCode,"MAX_VERSION",{value:T}),h.PENALTY_N1=3,h.PENALTY_N2=3,h.PENALTY_N3=40,h.PENALTY_N4=10,h.ECC_CODEWORDS_PER_BLOCK=[[null,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[null,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[null,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[null,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],h.NUM_ERROR_CORRECTION_BLOCKS=[[null,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[null,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[null,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[null,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],this.QrCode.Ecc={LOW:new D(0,1),MEDIUM:new D(1,0),QUARTILE:new D(2,3),HIGH:new D(3,2)};function D(e,n){Object.defineProperty(this,"ordinal",{value:e}),Object.defineProperty(this,"formatBits",{value:n})}this.QrSegment=function(e,n,i){if(n<0||!(e instanceof S))throw"Invalid argument";i=i.slice(),Object.defineProperty(this,"mode",{value:e}),Object.defineProperty(this,"numChars",{value:n}),this.getData=function(){return i.slice()}},this.QrSegment.makeBytes=function(e){var n=new M;return e.forEach(function(i){n.appendBits(i,8)}),new this(this.Mode.BYTE,e.length,n)},this.QrSegment.makeNumeric=function(e){if(!this.NUMERIC_REGEX.test(e))throw"String contains non-numeric characters";for(var n=new M,i=0;i<e.length;){var u=Math.min(e.length-i,3);n.appendBits(parseInt(e.substring(i,i+u),10),u*3+1),i+=u}return new this(this.Mode.NUMERIC,e.length,n)},this.QrSegment.makeAlphanumeric=function(e){if(!this.ALPHANUMERIC_REGEX.test(e))throw"String contains unencodable characters in alphanumeric mode";var n=new M,i;for(i=0;i+2<=e.length;i+=2){var u=U.ALPHANUMERIC_CHARSET.indexOf(e.charAt(i))*45;u+=U.ALPHANUMERIC_CHARSET.indexOf(e.charAt(i+1)),n.appendBits(u,11)}return i<e.length&&n.appendBits(U.ALPHANUMERIC_CHARSET.indexOf(e.charAt(i)),6),new this(this.Mode.ALPHANUMERIC,e.length,n)},this.QrSegment.makeSegments=function(e){return e==""?[]:this.NUMERIC_REGEX.test(e)?[this.makeNumeric(e)]:this.ALPHANUMERIC_REGEX.test(e)?[this.makeAlphanumeric(e)]:[this.makeBytes(K(e))]},this.QrSegment.makeEci=function(e){var n=new M;if(e<0)throw"ECI assignment value out of range";if(e<128)n.appendBits(e,8);else if(e<16384)n.appendBits(2,2),n.appendBits(e,14);else if(e<1e6)n.appendBits(6,3),n.appendBits(e,21);else throw"ECI assignment value out of range";return new this(this.Mode.ECI,0,n)},this.QrSegment.getTotalBits=function(e,n){for(var i=0,u=0;u<e.length;u++){var f=e[u],g=f.mode.numCharCountBits(n);if(f.numChars>=1<<g)return 1/0;i+=4+g+f.getData().length}return i};var U={};this.QrSegment.NUMERIC_REGEX=/^[0-9]*$/,this.QrSegment.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,U.ALPHANUMERIC_CHARSET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",this.QrSegment.Mode={NUMERIC:new S(1,[10,12,14]),ALPHANUMERIC:new S(2,[9,11,13]),BYTE:new S(4,[8,16,16]),KANJI:new S(8,[8,10,12]),ECI:new S(7,[0,0,0])};function S(e,n){Object.defineProperty(this,"modeBits",{value:e}),this.numCharCountBits=function(i){return n[Math.floor((i+7)/17)]}}function K(e){e=encodeURI(e);for(var n=[],i=0;i<e.length;i++)e.charAt(i)!="%"?n.push(e.charCodeAt(i)):(n.push(parseInt(e.substring(i+1,i+3),16)),i+=2);return n}function M(){Array.call(this),this.appendBits=function(e,n){if(n<0||n>31||e>>>n!=0)throw"Value out of range";for(var i=n-1;i>=0;i--)this.push(e>>>i&1)}}M.prototype=Object.create(Array.prototype),M.prototype.constructor=M};
//# sourceMappingURL=qrgen.min.js.map
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.qrgen = {}));
})(this, (function (exports) {
exports.QrCode = qrcodegen.QrCode;
exports.QrSegment = qrcodegen.QrSegment;
Object.defineProperty(exports, '__esModule', {
value: true
});
}));