2 lines
21 KiB
JavaScript
2 lines
21 KiB
JavaScript
import{i as e,r as t}from"./main-BRo5yFiv.js";var n=3,r=8,i=24,a=2,o=1.333,s=2,c=3,l=new Uint16Array(65536),u=new Uint8Array(65536),d=new Uint8Array(65536);for(let e=0;e<l.length;e++){let t=e&255,n=e>>>8;l[e]=t+n,u[e]=t<n?t:n,d[e]=t>n?t:n}var f=e=>e>>>0,p=(e,t)=>{let n=e.x-t.x,r=e.y-t.y;return n*n+r*r},m=(e,t)=>Math.sqrt(p(e,t)),h=e=>e.reduce((e,t)=>e+t),g=(e,t)=>{e.x+=t.x,e.y+=t.y},_=e=>({x:-e.x,y:-e.y}),v=e=>({x:e.y,y:e.x}),y=e=>({x:e.x,y:e.y}),b=e=>({x:f(e.x),y:f(e.y)}),x=(e,t)=>({x:e.x+t.x,y:e.y+t.y}),S=e=>(e>>>=0,e===0?32:31-Math.clz32((e&-e)>>>0));function C(e,t,n){let r=e;return n!==void 0&&(r=Math.min(r,n)),t!==void 0&&(r=Math.max(r,t)),r}function w(e){let t=e,n=t.data.length/(t.width*t.height);if(n===3||n===4)return n;throw Error(`Unknown image format, bytes per pixel=${n}`)}function T(e){return e instanceof Uint8Array||e instanceof Uint8ClampedArray}function E(e){let n=e,a=n.width,o=n.height,s=n.data,c=w(e),p=o*a,m=new Uint8Array(p);if(c===4&&T(s)&&!(s.byteOffset&3)){let e=new Uint32Array(s.buffer,s.byteOffset,p),t=new Uint32Array(m.buffer,m.byteOffset,m.length>>>2),n=e.length&-4;for(let r=0,i=0;r<n;r+=4,i++){let n=e[r]>>>0,a=e[r+1]>>>0,o=e[r+2]>>>0,s=e[r+3]>>>0,c=(n&255)+((n>>>8&255)<<1)+(n>>>16&255)>>>2,l=(a&255)+((a>>>8&255)<<1)+(a>>>16&255)>>>2,u=(o&255)+((o>>>8&255)<<1)+(o>>>16&255)>>>2,d=(s&255)+((s>>>8&255)<<1)+(s>>>16&255)>>>2;t[i]=c|l<<8|u<<16|d<<24}for(let t=n;t<e.length;t++){let n=e[t]>>>0;m[t]=(n&255)+((n>>>8&255)<<1)+(n>>>16&255)>>>2}}else for(let e=0,t=0,n=s;e<n.length;e+=c){let r=n[e],i=n[e+1],a=n[e+2];m[t++]=f((r+2*i+a)/4)&255}let h=0,g=0,_=c*16;for(let e=0;e<s.length;e+=_){let t=s[e],n=s[e+1],r=s[e+2];h+=(t>n?t>r?t:r:n>r?n:r)-(t<n?t<r?t:r:n<r?n:r),g++}let v=h/g,y=r;if(a<y*5||o<y*5)throw Error(`image too small`);let b=Math.ceil(a/y),x=Math.ceil(o/y),S=o-y,E=a-y,D=b*x,O=new Uint32Array(D),k=0,A=0,j=a+3&-4,M=a,N;if(a&3){let e=j*o,t=new Uint8Array(e);for(let e=0;e<o;e++){let n=e*a,r=e*j;t.set(m.subarray(n,n+a),r)}M=j,N=new Uint32Array(t.buffer,t.byteOffset,j*o>>>2)}else N=new Uint32Array(m.buffer,m.byteOffset,m.length>>>2);for(let e=0;e<x;e++){let t=C(e*y,0,S);for(let n=0;n<b;n++){let r=C(n*y,0,E),o=0,s=255,c=0;if(r&3)for(let e=0,n=t*a+r;e<y;e++,n+=a)for(let e=0;e<y;e++){let t=m[n+e];o+=t,t<s&&(s=t),t>c&&(c=t)}else for(let e=0,n=t*M+r;e<y;e++,n+=M){let e=n>>>2,t=N[e]>>>0,r=N[e+1]>>>0,i=t&65535,a=t>>>16,f=r&65535,p=r>>>16;o+=l[i]+l[a]+l[f]+l[p];let m=u[i],h=u[a],g=u[f],_=u[p];m<s&&(s=m),h<s&&(s=h),g<s&&(s=g),_<s&&(s=_);let v=d[i],y=d[a],b=d[f],x=d[p];v>c&&(c=v),y>c&&(c=y),b>c&&(c=b),x>c&&(c=x)}let p=b*e+n,h=c-s,g=o>>>6;if(h<=i&&(g=s/2,e>0&&n>0)){let t=(e,t)=>t*b+e,r=(O[t(n,e-1)]&255)+2*(O[t(n-1,e)]&255)+(O[t(n-1,e-1)]&255);s*4<r&&(g=r/4)}O[p]=f(g)|s<<8|c<<16,h>40&&g<224&&k++,h<=10&&A++}}let P=k/D,F=A/D,I=F>.55&&F<.66&&P<.02&&v>10&&v<20?-1:0,L=F<.62||v>30,R=b+1,z=(x+1)*R,B=new Uint32Array(z),V=L?new Float32Array(z):void 0;for(let e=0;e<x;e++){let t=0,n=0,r=e*b,i=(e+1)*R,a=e*R;for(let e=0;e<b;e++){let o=O[r+e]&255;t+=o,V&&(n+=o*o),B[i+e+1]=B[a+e+1]+t,V&&(V[i+e+1]=V[a+e+1]+n)}}let H=new t({width:a,height:o}),U=Math.ceil(a/32),W=H.value;for(let e=0;e<x;e++){let t=C(e*y,0,S),n=C(e,2,x-2-1),r=n-2,i=n+2,o=r*R,s=(i+1)*R;for(let n=0;n<b;n++){let r=C(n*y,0,E),i=r&31,c=r>>>5,l=C(n,2,b-2-1),u=l-2,d=l+2,p=(B[s+(d+1)]-B[o+(d+1)]-B[s+u]+B[o+u])/25|0,h=p,g=O[b*e+n],_=g&255,x=g>>>8&255,S=g>>>16,w=S-x;if(p<x)continue;if(p>=S){for(let e=0,n=t*U+c;e<y;e++,n+=U){let e=255<<i>>>0;W[n]|=e,i>24&&(W[n+1]|=255>>>32-i)}continue}let T=_-p>>4;T<0&&(T=0),T>1&&(T=1);let D=0;if(w>6&&p>48&&p<232){let e=v>8?v-8:0,t=128-Math.abs(p-128);D=f(e*(w-6)*t/22e5),D>1&&(D=1)}let k=0;if(V&&w>=6&&w<=128){let e=(V[s+(d+1)]-V[o+(d+1)]-V[s+u]+V[o+u])/25-p*p;e<0&&(e=0),k=f((p-x)*(e-196)/((e+832)*9)),k<-1&&(k=-1),k>4&&(k=4)}h=p+T+D+k,v>10&&w>=8&&w<=96&&p>x+8&&p<192&&h++,F>.68&&F<.86&&w>=6&&w<=20&&p<196&&h++,h+=I,h<x&&(h=x),h>S&&(h=S);for(let e=0,n=t*a+r,o=t*U+c;e<y;e++,n+=a,o+=U){let e=0;if(m[n]<=h&&(e|=1),m[n+1]<=h&&(e|=2),m[n+2]<=h&&(e|=4),m[n+3]<=h&&(e|=8),m[n+4]<=h&&(e|=16),m[n+5]<=h&&(e|=32),m[n+6]<=h&&(e|=64),m[n+7]<=h&&(e|=128),e===0)continue;let t=e<<i>>>0;W[o]|=t,i>24&&(W[o+1]|=e>>>32-i)}}}return H}function D(e,t){if(Math.abs(t.y-e.y)<=t.moduleSize&&Math.abs(t.x-e.x)<=t.moduleSize){let n=Math.abs(t.moduleSize-e.moduleSize);return n<=1||n<=e.moduleSize}return!1}function O(e,t){let n=e.count+t.count;return{x:(e.count*e.x+t.count*t.x)/n,y:(e.count*e.y+t.count*t.y)/n,moduleSize:(e.count*e.moduleSize+t.count*t.moduleSize)/n,count:n}}var k=e=>e.filter(e=>e.count>=s);function A(t,n){let r=n||e.fillArr(t.length,1);if(t.length!==r.length)throw Error(`invalid pattern`);if(!(t.length&1))throw Error(`invalid pattern, length should be odd`);let i={center:Math.ceil(t.length/2)-1,length:t.length,pattern:t,size:r,runs:()=>e.fillArr(t.length,0),totalSize:h(r),total:e=>e.reduce((e,t)=>e+t),shift:(e,t)=>{for(let n=0;n<e.length-t;n++)e[n]=e[n+2];for(let n=e.length-t;n<e.length;n++)e[n]=0},checkSize(e,t,n=a){let i=t/n;for(let n=0;n<e.length;n++)if(Math.abs(r[n]*t-e[n])>=r[n]*i)return!1;return!0},add(e,t,n,r){let a={x:t,y:n,moduleSize:r/i.totalSize,count:1};for(let t=0;t<e.length;t++){let n=e[t];if(D(n,a))return e[t]=O(n,a)}e.push(a)},toCenter(e,n){for(let r=t.length-1;r>i.center;r--)n-=e[r];return n-=e[i.center]/2,n},check(e,t,n,r,a){let o=e,s=0,c=y(n),l=_(r),u=(e,n)=>{for(;o.isInside(c)&&!!o.point(c)===i.pattern[e];g(c,n))t[e]++,s++;if(t[e]===0)return!0;let r=e===i.center;return!!(a&&!r&&t[e]>i.size[e]*a)};for(let e=i.center;e>=0;e--)if(u(e,l))return!1;c=y(n),g(c,r),s=1;for(let e=i.center;e<i.length;e++)if(u(e,r))return!1;return s},scanLine(e,t,n,r,a){let o=e,s=i.runs(),c=o.words,l=o.value,u=t*c,d=i.pattern,f=e=>(l[u+(e>>>5)]>>>(e&31)&1)==1,p=(e,t)=>{let n=u+(e>>>5),i=e&31,a=l[n]>>>i>>>0,o=r-e,s=0;for(;o>0;){let e=32-i,r=S(t?~a>>>0:a);if(r>e&&(r=e),r>o&&(r=o),s+=r,r<e&&r<o||(o-=r,o<=0))break;n++,i=0,a=l[n]>>>0}return s},m=0,h=n;for(n&&(h+=p(h,d[0]));h<r;h++){let e=f(h);if(e===d[m]){let t=p(h,e);if(s[m]+=t,h+=t-1,h!==o.width-1)continue;h++}if(m!==i.length-1){s[++m]++;continue}let t=a(s,h);if(t)m=0,s.fill(0);else if(t===!1)break;else i.shift(s,2),m=i.length-2,s[m]++}}};return i}var j=A([!0,!1,!0,!1,!0],[1,1,3,1,1]),M=A([!1,!0,!1]);function N(t){let n=t,r=[];function i(e,t=2){let n=h(e);if(n<j.totalSize)return!1;let r=n/j.totalSize;return j.checkSize(e,r,t)}function a(e,t,r,a){let o=j.runs(),s=j.check(n,o,e,a,t);if(s===!1)return!1;let c=h(o);return 5*Math.abs(c-r)>=2*r?!1:i(o)?j.toCenter(o,s):!1}function l(e,t,s){if(!i(e))return!1;let c=h(e),l=j.toCenter(e,s),u=a({x:f(l),y:t},e[2],c,{y:1,x:0});if(u===!1)return!1;u+=t;let d=a({x:f(l),y:f(u)},e[2],c,{y:0,x:1});if(d===!1)return!1;l=d+f(l);let p=j.runs();return!j.check(n,p,{x:f(l),y:f(u)},{x:1,y:1})||!i(p,o)?!1:(j.add(r,l,u,c),!0)}let u=!1,d=C(f(3*n.height/388),c),g=!1;for(let e=d-1;e<n.height&&!g;e+=d)j.scanLine(n,e,0,n.width,(t,n)=>{if(l(t,e,n)){if(d=2,u){let e=0,t=0;for(let n of r)n.count<s||(e++,t+=n.moduleSize);if(e<3)return;let n=t/r.length,i=0;for(let e of r)i+=Math.abs(e.moduleSize-n);if(i<=.05*t)return g=!0,!1}else if(r.length>1){let n=k(r);if(n.length<2)return!0;u=!0;let i=f((Math.abs(n[0].x-n[1].x)-Math.abs(n[0].y-n[1].y))/2);return i<=t[2]+d?!0:(e+=i-t[2]-d,!1)}}});let _=r.length;if(_<3)throw Error(`Finder: len(found) = ${_}`);r.sort((e,t)=>e.moduleSize-t.moduleSize);let v=e.best();for(let e=0;e<_-2;e++){let t=r[e];for(let n=e+1;n<_-1;n++){let e=r[n],i=p(t,e);for(let a=n+1;a<_;a++){let n=r[a];if(n.moduleSize>t.moduleSize*1.4)continue;let o=[i,p(e,n),p(t,n)].sort((e,t)=>e-t),s=o[0],c=o[1],l=o[2];v.add(Math.abs(l-2*c)+Math.abs(l-2*s),[t,e,n])}}}let y=v.get();if(!y)throw Error(`cannot find finder`);let b=y[0],x=y[1],S=y[2],w=m(b,x),T=m(x,S),E=m(b,S),D=S,O=b,A=x;if(T>=w&&T>=E?(D=b,O=x,A=S):E>=T&&E>=w&&(D=x,O=b,A=S),(A.x-D.x)*(O.y-D.y)-(A.y-D.y)*(O.x-D.x)<0){let e=O;O=A,A=e}return{bl:O,tl:D,tr:A}}function P(e,t,n){let r=e,{moduleSize:i}=t,a=f(n*i),o=C(t.x-a,0),s=C(t.x+a,void 0,r.width-1),c=s-o,l=C(t.y-a,0),u=C(t.y+a,void 0,r.height-1),d=u-l;if(c<i*3||d<i*3)throw Error(`x = ${c}, y=${d} moduleSize = ${i}`);let p=o,m=l,g=s-o+1,_=u-l+1,v=[],y=p+g,b=f(m+_/2);for(let e=0;e<_;e++){let t=f((e+1)/2),n=b+(e&1?-t:t),a;if(M.scanLine(r,n,p,y,(e,t)=>{if(!M.checkSize(e,i))return;let o=h(e),s=M.toCenter(e,t),c=M.runs(),l=M.check(r,c,{x:f(s),y:n},{y:1,x:0},2*e[1]);if(l===!1)return;l+=n;let u=h(c);if(5*Math.abs(u-o)>=2*o||!M.checkSize(c,i))return;let d=M.toCenter(c,l);if(a=M.add(v,s,d,o),a)return!1}),a)return a}if(v.length>0)return v[0];throw Error(`Alignment pattern not found`)}function F(e,t,n){let r=e,i=!1,a={x:Math.abs(n.x-t.x),y:Math.abs(n.y-t.y)};a.y>a.x&&(i=!0,t=v(t),n=v(n),a=v(a));let o=-a.x/2,s={x:t.x>=n.x?-1:1,y:t.y>=n.y?-1:1},c=0,l=n.x+s.x;for(let e=t.x,u=t.y;e!==l;e+=s.x){let l={x:e,y:u};if(i&&(l=v(l)),c===1==!!r.point(l)){if(c===2)return m({x:e,y:u},t);c++}if(o+=a.y,!(o<=0)){if(u===n.y)break;u+=s.y,o-=a.x}}return c===2?m({x:n.x+s.x,y:n.y},t):NaN}function I(e,t,n){let r=e,i=F(r,t,n),a=1,{x:o,y:s}=t,c=o-(n.x-o),l=r.width;c<0?(a=o/(o-c),c=0):c>=l&&(a=(l-1-o)/(c-o),c=l-1);let u=f(s-(n.y-s)*a),d=1,p=r.height;return u<0?(d=s/(s-u),u=0):u>=p&&(d=(p-1-s)/(u-s),u=p-1),c=f(o+(c-o)*d),i+=F(r,t,{x:c,y:u}),i-1}function L(e,t,n){let r=I(e,b(t),b(n)),i=I(e,b(n),b(t));return Number.isNaN(r)?i/j.totalSize:Number.isNaN(i)?r/j.totalSize:(r+i)/(2*j.totalSize)}function R(t){let n=t,r,i,a;try{({bl:r,tl:i,tr:a}=N(n))}catch{try{n.negate(),{bl:r,tl:i,tr:a}=N(n)}catch(e){throw n.negate(),e}}let o=(L(n,i,a)+L(n,i,r))/2;if(o<1)throw Error(`invalid moduleSize = ${o}`);let s=f((f(m(i,a)/o+.5)+f(m(i,r)/o+.5))/2+7),c=s%4;c===0?s++:c===2?s--:c===3&&(s-=2);let l=e.info.size.decode(s);e.validateVersion(l);let u;if(e.info.alignmentPatterns(l).length>0){let t={x:a.x-i.x+r.x,y:a.y-i.y+r.y},s=1-3/(e.info.size.encode(l)-7),c={x:f(i.x+s*(t.x-i.x)),y:f(i.y+s*(t.y-i.y)),moduleSize:o,count:1};for(let e=4;e<=16;e<<=1)try{u=P(n,c,e);break}catch{}}let d={x:3.5,y:3.5},p={x:s-3.5,y:3.5},h={x:3.5,y:s-3.5},g,_;u?(g=u,_={x:s-6.5,y:s-6.5}):(g={x:a.x-i.x+r.x,y:a.y-i.y+r.y},_={x:s-3.5,y:s-3.5});let v=[i,a,g,r];return{bits:B(n,s,v,[d,p,_,h]),points:v}}function z(e){let t={x:e[0].x-e[1].x+e[2].x-e[3].x,y:e[0].y-e[1].y+e[2].y-e[3].y};if(t.x===0&&t.y===0)return[[e[1].x-e[0].x,e[2].x-e[1].x,e[0].x],[e[1].y-e[0].y,e[2].y-e[1].y,e[0].y],[0,0,1]];{let n={x:e[1].x-e[2].x,y:e[1].y-e[2].y},r={x:e[3].x-e[2].x,y:e[3].y-e[2].y},i=n.x*r.y-r.x*n.y,a=(t.x*r.y-r.x*t.y)/i,o=(n.x*t.y-t.x*n.y)/i;return[[e[1].x-e[0].x+a*e[1].x,e[3].x-e[0].x+o*e[3].x,e[0].x],[e[1].y-e[0].y+a*e[1].y,e[3].y-e[0].y+o*e[3].y,e[0].y],[a,o,1]]}}function B(n,r,i,a){let o=n,s=z(a),c=[[s[1][1]*s[2][2]-s[2][1]*s[1][2],s[2][1]*s[0][2]-s[0][1]*s[2][2],s[0][1]*s[1][2]-s[1][1]*s[0][2]],[s[2][0]*s[1][2]-s[1][0]*s[2][2],s[0][0]*s[2][2]-s[2][0]*s[0][2],s[1][0]*s[0][2]-s[0][0]*s[1][2]],[s[1][0]*s[2][1]-s[2][0]*s[1][1],s[2][0]*s[0][1]-s[0][0]*s[2][1],s[0][0]*s[1][1]-s[1][0]*s[0][1]]],l=z(i).map(e=>e.map((t,n)=>e.reduce((e,t,r)=>e+t*c[r][n],0))),u=new t(r),d=e.fillArr(2*r,0),p=d.length;for(let e=0;e<r;e++){let t=l;for(let n=0;n<p-1;n+=2){let r=n/2+.5,i=e+.5,a=t[2][0]*r+t[2][1]*i+t[2][2];d[n]=f(C((t[0][0]*r+t[0][1]*i+t[0][2])/a,0,o.width-1)),d[n+1]=f(C((t[1][0]*r+t[1][1]*i+t[1][2])/a,0,o.height-1))}for(let t=0;t<p;t+=2)o.get(d[t],d[t+1])&&u.set(t/2|0,e,!0)}return u}function V(e){let t=e,n=(e,n,r)=>r<<1|!!t.get(e,n),r=t.height,i=0;for(let e=5;e>=0;e--)for(let t=r-9;t>=r-11;t--)i=n(t,e,i);let a=0;for(let e=5;e>=0;e--)for(let t=r-9;t>=r-11;t--)a=n(e,t,a);let o=0;for(let e=0;e<6;e++)o=n(e,8,o);o=n(7,8,o),o=n(8,8,o),o=n(8,7,o);for(let e=5;e>=0;e--)o=n(8,e,o);let s=0;for(let e=r-1;e>=r-7;e--)s=n(8,e,s);for(let e=r-8;e<r;e++)s=n(e,8,s);return{version1:i,version2:a,format1:o,format2:s}}function H(t){let r=t,i=r.height,{version1:a,version2:o,format1:s,format2:c}=V(r),l,u=e.best();for(let t of[`medium`,`low`,`high`,`quartile`])for(let n=0;n<8;n++){let r=e.info.formatBits(t,n),i={ecc:t,mask:n};if(r===s||r===c){l=i;break}u.add(e.popcnt(s^r),i),s!==c&&u.add(e.popcnt(c^r),i)}if(l===void 0&&u.score()<=n&&(l=u.get()),l===void 0)throw Error(`invalid format pattern`);let d=e.info.size.decode(i);if(d<7)e.validateVersion(d);else{d=void 0;let t=e.best();for(let n=7;n<=40;n++){let r=e.info.versionBits(n);if(r===a||r===o){d=n;break}t.add(e.popcnt(a^r),n),a!==o&&t.add(e.popcnt(o^r),n)}if(d===void 0&&t.score()<=n&&(d=t.get()),d===void 0)throw Error(`invalid version pattern`);if(e.info.size.encode(d)!==i)throw Error(`invalid version size`)}return{version:d,...l}}var U={1:`iso-8859-1`,2:`ibm437`,3:`iso-8859-1`,4:`iso-8859-2`,5:`iso-8859-3`,6:`iso-8859-4`,7:`iso-8859-5`,8:`iso-8859-6`,9:`iso-8859-7`,10:`iso-8859-8`,11:`iso-8859-9`,13:`iso-8859-11`,15:`iso-8859-13`,16:`iso-8859-14`,17:`iso-8859-15`,18:`iso-8859-16`,20:`shift-jis`,21:`windows-1250`,22:`windows-1251`,23:`windows-1252`,24:`windows-1256`,25:`utf-16be`,26:`utf-8`,28:`big5`,29:`gbk`,30:`euc-kr`};function W(e,t=26){let n=U[t];if(!n)throw Error(`Unsupported ECI: ${t}`);return new TextDecoder(n).decode(e)}function G(t,n=W){let r=t,i=r.height;if(i<21||(i&3)!=1||i!==r.width)throw Error(`decode: invalid size=${i}`);let{version:a,mask:o,ecc:s}=H(r),c=e.drawTemplate(a,s,o),{total:l}=e.info.capacity(a,s),u=new Uint8Array(l),d=0,f=0,p=0;if(e.zigzag(c,o,(e,t,n)=>{p++,f<<=1,f|=+(!!r.get(e,t)!==n),p===8&&(u[d++]=f,p=0,f=0)}),d!==l)throw Error(`decode: pos=${d}, total=${l}`);let m=Array.from(e.interleave(a,s).decode(u)).map(t=>e.bin(t,8)).join(``),h=e=>{if(e>m.length)throw Error(`Not enough bits`);let t=m.slice(0,e);return m=m.slice(e),t},g=e=>Number(`0b${e}`),_={"0000":`terminator`,"0001":`numeric`,"0010":`alphanumeric`,"0100":`byte`,"0111":`eci`,1e3:`kanji`},v=``,y=26;for(;!(m.length<4);){let t=h(4),r=_[t];if(r===void 0)throw Error(`Unknown modeBits=${t} res="${v}"`);if(r===`terminator`)break;let i=g(h(e.info.lengthBits(a,r)));if(r===`numeric`){for(;i>=3;){let e=g(h(10));if(e>=1e3)throw Error(`numberic(3) = ${e}`);v+=e.toString().padStart(3,`0`),i-=3}if(i===2){let e=g(h(7));if(e>=100)throw Error(`numeric(2) = ${e}`);v+=e.toString().padStart(2,`0`)}else if(i===1){let e=g(h(4));if(e>=10)throw Error(`Numeric(1) = ${e}`);v+=e.toString()}}else if(r===`alphanumeric`){for(;i>=2;){let t=g(h(11));v+=e.info.alphabet.alphanumerc.encode([Math.floor(t/45),t%45]).join(``),i-=2}i===1&&(v+=e.info.alphabet.alphanumerc.encode([g(h(6))]).join(``))}else if(r===`eci`){let e=g(h(8));y=e&128?(e&192)==128?(e&63)<<8|g(h(8)):(e&31)<<16|g(h(16)):e;continue}else if(r===`byte`){let e=new Uint8Array(i);for(let t=0;t<i;t++)e[t]=g(h(8));v+=n(e,y)}else if(r===`kanji`)throw Error(`Kanji mode is not supported`);else throw Error(`Unknown mode=${r}`)}return v}function K(e){let t=e,n=Array.isArray(t.data)?new Uint8Array(t.data):t.data,{height:r,width:i}=t,a=Math.min(r,i),o={x:Math.floor((i-a)/2),y:Math.floor((r-a)/2)},s=w(e),c=new Uint8Array(a*a*s);for(let e=0;e<a;e++){let t=((e+o.y)*i+o.x)*s,r=e*a*s,l=a*s;c.set(n.subarray(t,t+l),r)}return{offset:o,img:{height:a,width:a,data:c}}}function q(e,t={}){let n=e,r=t;for(let e of[`height`,`width`])if(!Number.isSafeInteger(n[e])||n[e]<=0)throw Error(`invalid img.${e}=${n[e]} (${typeof n[e]})`);let{data:i}=n;if(!Array.isArray(i)&&!T(i))throw Error(`invalid image.data=${i} (${typeof i})`);if(r.cropToSquare!==void 0&&typeof r.cropToSquare!=`boolean`)throw Error(`invalid opts.cropToSquare=${r.cropToSquare}`);for(let e of[`textDecoder`,`pointsOnDetect`,`imageOnBitmap`,`imageOnDetect`,`imageOnResult`])if(r[e]!==void 0&&typeof r[e]!=`function`)throw Error(`invalid opts.${e}=${r[e]} (${typeof r[e]})`);let a={x:0,y:0};r.cropToSquare&&({img:n,offset:a}=K(n));let o=E(n);r.imageOnBitmap&&r.imageOnBitmap(o.toImage());let{bits:s,points:c}=R(o);if(r.pointsOnDetect){let e=c.map(e=>({...e,...x(e,a)}));r.pointsOnDetect(e)}r.imageOnDetect&&r.imageOnDetect(s.toImage());let l=G(s,r.textDecoder);return r.imageOnResult&&r.imageOnResult(s.toImage()),l}var J=e=>{let t=getComputedStyle(e);return{width:Math.floor(+t.width.split(`px`)[0]),height:Math.floor(+t.height.split(`px`)[0])}},Y=(e,t,n)=>{e.height!==t&&(e.height=t),e.width!==n&&(e.width=n)},X=e=>{let t=e.getContext(`2d`);if(t===null)throw Error(`Cannot get canvas context`);return{canvas:e,context:t}},Z=({canvas:e,context:t})=>{t.clearRect(0,0,e.width,e.height)},Q=class{opts;lastDetect=0;main;overlay;bitmap;resultQR;constructor(e={},t={}){let{overlay:n,bitmap:r,resultQR:i}=e;this.opts={resultBlockSize:8,overlayMainColor:`green`,overlayFinderColor:`blue`,overlaySideColor:`black`,overlayTimeout:500,cropToSquare:!0,...t},this.main=X(document.createElement(`canvas`)),n&&(this.overlay=X(n)),r&&(this.bitmap=X(r)),i&&(this.resultQR=X(i),this.resultQR.context.imageSmoothingEnabled=!1)}setSize(e,t){Y(this.main.canvas,e,t),this.overlay&&Y(this.overlay.canvas,e,t),this.bitmap&&Y(this.bitmap.canvas,e,t)}drawBitmap({data:e,height:t,width:n}){if(!this.bitmap)return;let r=new ImageData(Uint8ClampedArray.from(e),n,t),i={x:0,y:0};this.opts.cropToSquare&&(i={x:Math.floor((this.bitmap.canvas.width-n)/2),y:Math.floor((this.bitmap.canvas.height-t)/2)}),this.bitmap.context.putImageData(r,i.x,i.y)}drawResultQr({data:e,height:t,width:n}){if(!this.resultQR)return;let r=this.opts.resultBlockSize;Y(this.resultQR.canvas,t,n);let i=new ImageData(Uint8ClampedArray.from(e),n,t);this.resultQR.context.putImageData(i,0,0),this.resultQR.canvas.style=`image-rendering: pixelated; width: ${r*n}px; height: ${r*t}px`}drawOverlay(e){if(!this.overlay)return;let t=this.overlay.context,n=this.overlay.canvas.height,r=this.overlay.canvas.width;if(this.opts.cropToSquare&&n!==r){let e=Math.min(n,r),i={x:Math.floor((r-e)/2),y:Math.floor((n-e)/2)};if(t.clearRect(i.x,i.y,e,e),t.fillStyle=this.opts.overlaySideColor,r>n){let a=i.x+e;t.fillRect(0,0,i.x,n),t.fillRect(a,0,r-a,n)}else if(n>r){let a=i.y+e;t.fillRect(0,0,r,i.y),t.fillRect(0,a,r,n-a)}}else t.clearRect(0,0,r,n);if(e){let[n,r,i,a]=e;t.fillStyle=this.opts.overlayMainColor,t.beginPath(),t.moveTo(n.x,n.y),t.lineTo(r.x,r.y),t.lineTo(i.x,i.y),t.lineTo(a.x,a.y),t.fill(),t.closePath(),t.fillStyle=this.opts.overlayFinderColor;for(let n of e){if(!(`moduleSize`in n))continue;let e=n.x-3*n.moduleSize,r=n.y-3*n.moduleSize,i=7*n.moduleSize;t.fillRect(e,r,i,i)}}}drawImage(e,t,n){this.setSize(t,n);let{context:r}=this.main;r.drawImage(e,0,0,n,t);let i=r.getImageData(0,0,n,t),a={cropToSquare:this.opts.cropToSquare,textDecoder:this.opts.textDecoder};this.bitmap&&(a.imageOnBitmap=e=>this.drawBitmap(e)),this.overlay&&(a.pointsOnDetect=e=>this.drawOverlay(e)),this.resultQR&&(a.imageOnResult=e=>this.drawResultQr(e));try{let e=q(i,a);return this.lastDetect=Date.now(),e}catch{this.overlay&&Date.now()-this.lastDetect>this.opts.overlayTimeout&&this.drawOverlay()}}clear(){Z(this.main),this.overlay&&Z(this.overlay),this.bitmap&&Z(this.bitmap),this.resultQR&&Z(this.resultQR)}},$=class{stream;player;constructor(e,t){this.stream=e,this.player=t,this.setStream(e)}setStream(e){this.stream=e;let{player:t}=this;t.setAttribute(`autoplay`,``),t.setAttribute(`muted`,``),t.setAttribute(`playsinline`,``),t.srcObject=e}async listDevices(){if(!navigator.mediaDevices||!navigator.mediaDevices.enumerateDevices)throw Error(`Media Devices not supported`);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`videoinput`).map(e=>({deviceId:e.deviceId,label:e.label||`Camera ${e.deviceId}`}))}async setDevice(e){this.stop();let t=await navigator.mediaDevices.getUserMedia({video:{deviceId:{exact:e}}});this.setStream(t)}readFrame(e,t=!1){let{player:n}=this;if(t)return e.drawImage(n,n.videoHeight,n.videoWidth);let r=J(n);return e.drawImage(n,r.height,r.width)}stop(){for(let e of this.stream.getTracks())e.stop()}};async function ee(e){return new $(await navigator.mediaDevices.getUserMedia({video:{height:{ideal:window.screen.height},width:{ideal:window.screen.width},facingMode:`environment`}}),e)}function te(e){let t;function n(r){e(r),t=requestAnimationFrame(n)}return t=requestAnimationFrame(n),()=>{t!==void 0&&(cancelAnimationFrame(t),t=void 0)}}function ne(e,t,n){return new Promise((r,i)=>{if(!(Number.isSafeInteger(t)&&Number.isSafeInteger(n)&&t>0&&n>0&&t<8192&&n<8192))return i(Error(`invalid width and height: `+t+` `+n));let a=new DOMParser().parseFromString(e,`image/svg+xml`),o=a.documentElement;o.setAttribute(`width`,String(t)),o.setAttribute(`height`,String(n));let s=a.createElementNS(`http://www.w3.org/2000/svg`,`rect`);s.setAttribute(`width`,`100%`),s.setAttribute(`height`,`100%`),s.setAttribute(`fill`,`white`),o.insertBefore(s,o.firstChild);let c=new XMLSerializer().serializeToString(a),l=new Image;l.onload=function(){let e=document.createElement(`canvas`);e.width=t,e.height=n;let a=e.getContext(`2d`);if(!a)return i(Error(`was not able to create 2d context`));a.drawImage(l,0,0,t,n),r(e.toDataURL(`image/png`))},l.onerror=i,l.src=`data:image/svg+xml,`+encodeURIComponent(c)})}async function re(e){let t=new Blob([e],{type:`image/gif`}),n=await createImageBitmap(t);try{let e=new OffscreenCanvas(n.width,n.height),t=e.getContext(`bitmaprenderer`,{alpha:!1});if(!t)throw Error(`was not able to create bitmaprenderer context`);return t.transferFromImageBitmap(n),await e.convertToBlob({type:`image/png`})}finally{n.close()}}export{Q as QRCanvas,te as frameLoop,ee as frontalCamera,J as getSize,re as gifToPng,ne as svgToPng};
|
|
//# sourceMappingURL=dom-CrhkFlqe.js.map
|