3 lines
18 KiB
JavaScript
3 lines
18 KiB
JavaScript
import{u as st,B as J}from"./main-COIelIo0.js";import"./pwa-viewport-Bz1GOnQv.js";import"./ScheduledAtField-Dw49_KZ-.js";import"./ICONS-BJuc0WJ2.js";const{best:F,bin:at,drawTemplate:ct,fillArr:Y,info:C,interleave:lt,validateVersion:tt,zigzag:ft}=st,X=3,ut=8,dt=24,ht=2,yt=1.333,et=2,xt=3,b=t=>t>>>0,_=(t,e)=>{const n=t.x-e.x,r=t.y-e.y;return n*n+r*r},N=(t,e)=>Math.sqrt(_(t,e)),B=t=>t.reduce((e,n)=>e+n),G=(t,e)=>{t.x+=e.x,t.y+=e.y},mt=t=>({x:-t.x,y:-t.y}),$=t=>({x:t.y,y:t.x}),V=t=>({x:t.x,y:t.y}),O=t=>({x:b(t.x),y:b(t.y)}),wt=(t,e)=>({x:t.x+e.x,y:t.y+e.y});function I(t,e,n){return Math.max(Math.min(t,n||t),e||t)}const nt=t=>{const e=t.data.length/(t.width*t.height);if(e===3||e===4)return e;throw new Error(`Unknown image format, bytes per pixel=${e}`)};function gt(t){const e=nt(t),n=new Uint8Array(t.height*t.width);for(let c=0,l=0,d=t.data;c<d.length;c+=e){const y=d[c],p=d[c+1],x=d[c+2];n[l++]=b((y+2*p+x)/4)&255}const r=ut;if(t.width<r*5||t.height<r*5)throw new Error("image too small");const o=Math.ceil(t.width/r),a=Math.ceil(t.height/r),s=t.height-r,i=t.width-r,f=new Uint8Array(o*a);for(let c=0;c<a;c++){const l=I(c*r,0,s);for(let d=0;d<o;d++){const y=I(d*r,0,i);let p=0,x=255,v=0;for(let m=0,g=l*t.width+y;m<r;m=m+1,g=g+t.width)for(let h=0;h<r;h++){const w=n[g+h];p+=w,x=Math.min(x,w),v=Math.max(v,w)}let S=Math.floor(p/r**2);if(v-x<=dt&&(S=x/2,c>0&&d>0)){const m=(h,w)=>w*o+h,g=(f[m(d,c-1)]+2*f[m(d-1,c)]+f[m(d-1,c-1)])/4;x<g&&(S=g)}f[o*c+d]=b(S)}}const u=new J({width:t.width,height:t.height});for(let c=0;c<a;c++){const l=I(c*r,0,s),d=I(c,2,a-3);for(let y=0;y<o;y++){const p=I(y*r,0,i),x=I(y,2,o-3);let v=0;for(let m=-2;m<=2;m++){const g=o*(d+m)+x;for(let h=-2;h<=2;h++)v+=f[g+h]}const S=v/25;for(let m=0,g=l*t.width+p;m<r;m+=1,g+=t.width)for(let h=0;h<r;h++)n[g+h]<=S&&(u.data[l+m][p+h]=!0)}}return u}function vt(t,e){if(Math.abs(e.y-t.y)<=e.moduleSize&&Math.abs(e.x-t.x)<=e.moduleSize){const n=Math.abs(e.moduleSize-t.moduleSize);return n<=1||n<=t.moduleSize}return!1}function pt(t,e){const n=t.count+e.count;return{x:(t.count*t.x+e.count*e.x)/n,y:(t.count*t.y+e.count*e.y)/n,moduleSize:(t.count*t.moduleSize+e.count*e.moduleSize)/n,count:n}}const St=t=>t.filter(e=>e.count>=et);function ot(t,e){const n=e||Y(t.length,1);if(t.length!==n.length)throw new Error("invalid pattern");if(!(t.length&1))throw new Error("invalid pattern, length should be odd");const r={center:Math.ceil(t.length/2)-1,length:t.length,pattern:t,size:n,runs:()=>Y(t.length,0),totalSize:B(n),total:o=>o.reduce((a,s)=>a+s),shift:(o,a)=>{for(let s=0;s<o.length-a;s++)o[s]=o[s+2];for(let s=o.length-a;s<o.length;s++)o[s]=0},checkSize(o,a,s=ht){const i=a/s;for(let f=0;f<o.length;f++)if(Math.abs(n[f]*a-o[f])>=n[f]*i)return!1;return!0},add(o,a,s,i){const f=i/k.totalSize,u={x:a,y:s,moduleSize:f,count:1};for(let c=0;c<o.length;c++){const l=o[c];if(vt(l,u))return o[c]=pt(l,u)}o.push(u)},toCenter(o,a){for(let s=t.length-1;s>r.center;s--)a-=o[s];return a-=o[r.center]/2,a},check(o,a,s,i,f){let u=0,c=V(s);const l=mt(i),d=(y,p)=>{for(;o.isInside(c)&&!!o.point(c)===r.pattern[y];G(c,p))a[y]++,u++;if(a[y]===0)return!0;const x=y===r.center;return!!(f&&!x&&a[y]>r.size[y]*f)};for(let y=r.center;y>=0;y--)if(d(y,l))return!1;c=V(s),G(c,i),u=1;for(let y=r.center;y<r.length;y++)if(d(y,i))return!1;return u},scanLine(o,a,s,i,f){const u=r.runs();let c=0,l=s;if(s)for(;l<i&&!!o.data[a][l]===r.pattern[0];)l++;for(;l<i;l++){if(!!o.data[a][l]===r.pattern[c]){if(u[c]++,l!==o.width-1)continue;l++}if(c!==r.length-1){u[++c]++;continue}const d=f(u,l);if(d)c=0,u.fill(0);else{if(d===!1)break;r.shift(u,2),c=r.length-2,u[c]++}}}};return r}const k=ot([!0,!1,!0,!1,!0],[1,1,3,1,1]),D=ot([!1,!0,!1]);function bt(t){let e=[];function n(h,w=2){const A=B(h);if(A<k.totalSize)return!1;const E=A/k.totalSize;return k.checkSize(h,E,w)}function r(h,w,A,E){const z=k.runs();let M=k.check(t,z,h,E,w);if(M===!1)return!1;const R=B(z);return 5*Math.abs(R-A)>=2*A?!1:n(z)?k.toCenter(z,M):!1}function o(h,w,A){if(!n(h))return!1;const E=B(h);let z=k.toCenter(h,A),M=r({x:b(z),y:w},h[2],E,{y:1,x:0});if(M===!1)return!1;M+=w;let R=r({x:b(z),y:b(M)},h[2],E,{y:0,x:1});if(R===!1)return!1;z=R+b(z);const T=k.runs();return!k.check(t,T,{x:b(z),y:b(M)},{x:1,y:1})||!n(T,yt)?!1:(k.add(e,z,M,E),!0)}let a=!1,s=I(b(3*t.height/388),xt),i=!1;for(let h=s-1;h<t.height&&!i;h+=s)k.scanLine(t,h,0,t.width,(w,A)=>{if(o(w,h,A)){if(s=2,a){let E=0,z=0;for(const T of e)T.count<et||(E++,z+=T.moduleSize);if(E<3)return;const M=z/e.length;let R=0;for(const T of e)R+=Math.abs(T.moduleSize-M);if(R<=.05*z)return i=!0,!1}else if(e.length>1){const E=St(e);if(E.length<2)return!0;a=!0;const z=b((Math.abs(E[0].x-E[1].x)-Math.abs(E[0].y-E[1].y))/2);return z<=w[2]+s?!0:(h+=z-w[2]-s,!1)}}});const f=e.length;if(f<3)throw new Error(`Finder: len(found) = ${f}`);e.sort((h,w)=>h.moduleSize-w.moduleSize);const u=F();for(let h=0;h<f-2;h++){const w=e[h];for(let A=h+1;A<f-1;A++){const E=e[A],z=_(w,E);for(let M=A+1;M<f;M++){const R=e[M];if(R.moduleSize>w.moduleSize*1.4)continue;const T=[z,_(E,R),_(w,R)].sort((rt,it)=>rt-it),L=T[0],Q=T[1],j=T[2];u.add(Math.abs(j-2*Q)+Math.abs(j-2*L),[w,E,R])}}}const c=u.get();if(!c)throw new Error("cannot find finder");const l=c[0],d=c[1],y=c[2],p=N(l,d),x=N(d,y),v=N(l,y);let S=y,m=l,g=d;if(x>=p&&x>=v?(S=l,m=d,g=y):v>=x&&v>=p&&(S=d,m=l,g=y),(g.x-S.x)*(m.y-S.y)-(g.y-S.y)*(m.x-S.x)<0){let h=m;m=g,g=h}return{bl:m,tl:S,tr:g}}function zt(t,e,n){const{moduleSize:r}=e,o=b(n*r),a=I(e.x-o,0),s=I(e.x+o,void 0,t.width-1),i=s-a,f=I(e.y-o,0),u=I(e.y+o,void 0,t.height-1),c=u-f;if(i<r*3||c<r*3)throw new Error(`x = ${i}, y=${c} moduleSize = ${r}`);const l=a,d=f,y=s-a,p=u-f,x=[],v=l+y,S=b(d+p/2);for(let m=0;m<p;m++){const g=b((m+1)/2),h=S+(m&1?-g:g);let w;if(D.scanLine(t,h,l,v,(A,E)=>{if(!D.checkSize(A,r))return;const z=B(A),M=D.toCenter(A,E),R=D.runs();let T=D.check(t,R,{x:b(M),y:h},{y:1,x:0},2*A[1]);if(T===!1)return;T+=h;const L=B(R);if(5*Math.abs(L-z)>=2*z||!D.checkSize(R,r))return;const Q=D.toCenter(R,T);if(w=D.add(x,M,Q,z),w)return!1}),w)return w}if(x.length>0)return x[0];throw new Error("Alignment pattern not found")}function W(t,e,n){let r=!1,o={x:Math.abs(n.x-e.x),y:Math.abs(n.y-e.y)};o.y>o.x&&(r=!0,e=$(e),n=$(n),o=$(o));let a=-o.x/2,s={x:e.x>=n.x?-1:1,y:e.y>=n.y?-1:1},i=0,f=n.x+s.x;for(let u=e.x,c=e.y;u!==f;u+=s.x){let l={x:u,y:c};if(r&&(l=$(l)),i===1==!!t.point(l)){if(i===2)return N({x:u,y:c},e);i++}if(a+=o.y,!(a<=0)){if(c===n.y)break;c+=s.y,a-=o.x}}return i===2?N({x:n.x+s.x,y:n.y},e):NaN}function H(t,e,n){let r=W(t,e,n),o=1;const{x:a,y:s}=e;let i=a-(n.x-a);const f=t.width;i<0?(o=a/(a-i),i=0):i>=f&&(o=(f-1-a)/(i-a),i=f-1);let u=b(s-(n.y-s)*o),c=1;const l=t.height;return u<0?(c=s/(s-u),u=0):u>=l&&(c=(l-1-s)/(u-s),u=l-1),i=b(a+(i-a)*c),r+=W(t,e,{x:i,y:u}),r-1}function K(t,e,n){const r=H(t,O(e),O(n)),o=H(t,O(n),O(e));return Number.isNaN(r)?o/k.totalSize:Number.isNaN(o)?r/k.totalSize:(r+o)/(2*k.totalSize)}function Et(t){const{bl:e,tl:n,tr:r}=bt(t),o=(K(t,n,r)+K(t,n,e))/2;if(o<1)throw new Error(`invalid moduleSize = ${o}`);const a=b(N(n,r)/o+.5),s=b(N(n,e)/o+.5);let i=b((a+s)/2+7);const f=i%4;f===0?i++:f===2?i--:f===3&&(i-=2);const u=C.size.decode(i);tt(u);let c;if(C.alignmentPatterns(u).length>0){const m={x:r.x-n.x+e.x,y:r.y-n.y+e.y},g=1-3/(C.size.encode(u)-7),h={x:b(n.x+g*(m.x-n.x)),y:b(n.y+g*(m.y-n.y)),moduleSize:o,count:1};for(let w=4;w<=16;w<<=1)try{c=zt(t,h,w);break}catch{}}const l={x:3.5,y:3.5},d={x:i-3.5,y:3.5},y={x:3.5,y:i-3.5};let p,x;c?(p=c,x={x:i-6.5,y:i-6.5}):(p={x:r.x-n.x+e.x,y:r.y-n.y+e.y},x={x:i-3.5,y:i-3.5});const v=[n,r,p,e];return{bits:At(t,i,v,[l,d,x,y]),points:v}}function Z(t){const e={x:t[0].x-t[1].x+t[2].x-t[3].x,y:t[0].y-t[1].y+t[2].y-t[3].y};if(e.x===0&&e.y===0)return[[t[1].x-t[0].x,t[2].x-t[1].x,t[0].x],[t[1].y-t[0].y,t[2].y-t[1].y,t[0].y],[0,0,1]];{const n={x:t[1].x-t[2].x,y:t[1].y-t[2].y},r={x:t[3].x-t[2].x,y:t[3].y-t[2].y},o=n.x*r.y-r.x*n.y,a=(e.x*r.y-r.x*e.y)/o,s=(n.x*e.y-e.x*n.y)/o;return[[t[1].x-t[0].x+a*t[1].x,t[3].x-t[0].x+s*t[3].x,t[0].x],[t[1].y-t[0].y+a*t[1].y,t[3].y-t[0].y+s*t[3].y,t[0].y],[a,s,1]]}}function At(t,e,n,r){const o=Z(r),a=[[o[1][1]*o[2][2]-o[2][1]*o[1][2],o[2][1]*o[0][2]-o[0][1]*o[2][2],o[0][1]*o[1][2]-o[1][1]*o[0][2]],[o[2][0]*o[1][2]-o[1][0]*o[2][2],o[0][0]*o[2][2]-o[2][0]*o[0][2],o[1][0]*o[0][2]-o[0][0]*o[1][2]],[o[1][0]*o[2][1]-o[2][0]*o[1][1],o[2][0]*o[0][1]-o[0][0]*o[2][1],o[0][0]*o[1][1]-o[1][0]*o[0][1]]],i=Z(n).map(l=>l.map((d,y)=>l.reduce((p,x,v)=>p+x*a[v][y],0))),f=new J(e),u=Y(2*e,0),c=u.length;for(let l=0;l<e;l++){const d=i;for(let y=0;y<c-1;y+=2){const p=y/2+.5,x=l+.5,v=d[2][0]*p+d[2][1]*x+d[2][2];u[y]=b((d[0][0]*p+d[0][1]*x+d[0][2])/v),u[y+1]=b((d[1][0]*p+d[1][1]*x+d[1][2])/v)}for(let y=0;y<c;y+=2){const p=I(u[y],0,t.width-1),x=I(u[y+1],0,t.height-1);t.data[x][p]&&(f.data[l][y/2]=!0)}}return f}function Mt(t){const e=(i,f,u)=>u<<1|(t.data[f][i]?1:0),n=t.height;let r=0;for(let i=5;i>=0;i--)for(let f=n-9;f>=n-11;f--)r=e(f,i,r);let o=0;for(let i=5;i>=0;i--)for(let f=n-9;f>=n-11;f--)o=e(i,f,o);let a=0;for(let i=0;i<6;i++)a=e(i,8,a);a=e(7,8,a),a=e(8,8,a),a=e(8,7,a);for(let i=5;i>=0;i--)a=e(8,i,a);let s=0;for(let i=n-1;i>=n-7;i--)s=e(8,i,s);for(let i=n-8;i<n;i++)s=e(i,8,s);return{version1:r,version2:o,format1:a,format2:s}}function Rt(t){const e=c=>{let l=0;for(;c;)c&1&&l++,c>>=1;return l},n=t.height,{version1:r,version2:o,format1:a,format2:s}=Mt(t);let i;const f=F();for(const c of["medium","low","high","quartile"])for(let l=0;l<8;l++){const d=C.formatBits(c,l),y={ecc:c,mask:l};if(d===a||d===s){i=y;break}f.add(e(a^d),y),a!==s&&f.add(e(s^d),y)}if(i===void 0&&f.score()<=X&&(i=f.get()),i===void 0)throw new Error("invalid format pattern");let u=C.size.decode(n);if(u<7)tt(u);else{u=void 0;const c=F();for(let l=7;l<=40;l++){const d=C.versionBits(l);if(d===r||d===o){u=l;break}c.add(e(r^d),l),r!==o&&c.add(e(o^d),l)}if(u===void 0&&c.score()<=X&&(u=c.get()),u===void 0)throw new Error("invalid version pattern");if(C.size.encode(u)!==n)throw new Error("invalid version size")}return{version:u,...i}}function Tt(t){const e=t.height;if(e<21||(e&3)!==1||e!==t.width)throw new Error(`decode: invalid size=${e}`);const{version:n,mask:r,ecc:o}=Rt(t),a=ct(n,o,r),{total:s}=C.capacity(n,o),i=new Uint8Array(s);let f=0,u=0,c=0;if(ft(a,r,(v,S,m)=>{c++,u<<=1,u|=+(!!t.data[S][v]!==m),c===8&&(i[f++]=u,c=0,u=0)}),f!==s)throw new Error(`decode: pos=${f}, total=${s}`);let l=Array.from(lt(n,o).decode(i)).map(v=>at(v,8)).join("");const d=v=>{if(v>l.length)throw new Error("Not enough bits");const S=l.slice(0,v);return l=l.slice(v),S},y=v=>+`0b${v}`,p={"0000":"terminator","0001":"numeric","0010":"alphanumeric","0100":"byte","0111":"eci",1e3:"kanji"};let x="";for(;!(l.length<4);){const v=d(4),S=p[v];if(S===void 0)throw new Error(`Unknown modeBits=${v} res="${x}"`);if(S==="terminator")break;const m=C.lengthBits(n,S);let g=y(d(m));if(S==="numeric"){for(;g>=3;){const h=y(d(10));if(h>=1e3)throw new Error(`numberic(3) = ${h}`);x+=h.toString().padStart(3,"0"),g-=3}if(g===2){const h=y(d(7));if(h>=100)throw new Error(`numeric(2) = ${h}`);x+=h.toString().padStart(2,"0")}else if(g===1){const h=y(d(4));if(h>=10)throw new Error(`Numeric(1) = ${h}`);x+=h.toString()}}else if(S==="alphanumeric"){for(;g>=2;){const h=y(d(11));x+=C.alphabet.alphanumerc.encode([Math.floor(h/45),h%45]).join(""),g-=2}g===1&&(x+=C.alphabet.alphanumerc.encode([y(d(6))]).join(""))}else if(S==="byte"){let h=[];for(let w=0;w<g;w++)h.push(+`0b${d(8)}`);x+=new TextDecoder().decode(new Uint8Array(h))}else throw new Error(`Unknown mode=${S}`)}return x}function kt(t){const e=Array.isArray(t.data)?new Uint8Array(t.data):t.data,{height:n,width:r}=t,o=Math.min(n,r),a={x:Math.floor((r-o)/2),y:Math.floor((n-o)/2)},s=nt(t),i=new Uint8Array(o*o*s);for(let f=0;f<o;f++){const u=((f+a.y)*r+a.x)*s,c=f*o*s,l=o*s;i.set(e.subarray(u,u+l),c)}return{offset:a,img:{height:o,width:o,data:i}}}function It(t,e={}){for(const i of["height","width"])if(!Number.isSafeInteger(t[i])||t[i]<=0)throw new Error(`invalid img.${i}=${t[i]} (${typeof t[i]})`);if(!Array.isArray(t.data)&&!(t.data instanceof Uint8Array)&&!(t.data instanceof Uint8ClampedArray))throw new Error(`invalid image.data=${t.data} (${typeof t.data})`);if(e.cropToSquare!==void 0&&typeof e.cropToSquare!="boolean")throw new Error(`invalid opts.cropToSquare=${e.cropToSquare}`);for(const i of["pointsOnDetect","imageOnBitmap","imageOnDetect","imageOnResult"])if(e[i]!==void 0&&typeof e[i]!="function")throw new Error(`invalid opts.${i}=${e[i]} (${typeof e[i]})`);let n={x:0,y:0};e.cropToSquare&&({img:t,offset:n}=kt(t));const r=gt(t);e.imageOnBitmap&&e.imageOnBitmap(r.toImage());const{bits:o,points:a}=Et(r);if(e.pointsOnDetect){const i=a.map(f=>({...f,...wt(f,n)}));e.pointsOnDetect(i)}e.imageOnDetect&&e.imageOnDetect(o.toImage());const s=Tt(o);return e.imageOnResult&&e.imageOnResult(o.toImage()),s}const Ct=t=>{const e=getComputedStyle(t),n=Math.floor(+e.width.split("px")[0]),r=Math.floor(+e.height.split("px")[0]);return{width:n,height:r}},P=(t,e,n)=>{t.height!==e&&(t.height=e),t.width!==n&&(t.width=n)},q=t=>{const e=t.getContext("2d");if(e===null)throw new Error("Cannot get canvas context");return{canvas:t,context:e}},U=({canvas:t,context:e})=>{e.clearRect(0,0,t.width,t.height)};class Pt{opts;lastDetect=0;main;overlay;bitmap;resultQR;constructor({overlay:e,bitmap:n,resultQR:r}={},o={}){this.opts={resultBlockSize:8,overlayMainColor:"green",overlayFinderColor:"blue",overlaySideColor:"black",overlayTimeout:500,cropToSquare:!0,...o},this.main=q(document.createElement("canvas")),e&&(this.overlay=q(e)),n&&(this.bitmap=q(n)),r&&(this.resultQR=q(r),this.resultQR.context.imageSmoothingEnabled=!1)}setSize(e,n){P(this.main.canvas,e,n),this.overlay&&P(this.overlay.canvas,e,n),this.bitmap&&P(this.bitmap.canvas,e,n)}drawBitmap({data:e,height:n,width:r}){if(!this.bitmap)return;const o=new ImageData(Uint8ClampedArray.from(e),r,n);let a={x:0,y:0};this.opts.cropToSquare&&(a={x:Math.ceil((this.bitmap.canvas.width-r)/2),y:Math.ceil((this.bitmap.canvas.height-n)/2)}),this.bitmap.context.putImageData(o,a.x,a.y)}drawResultQr({data:e,height:n,width:r}){if(!this.resultQR)return;const o=this.opts.resultBlockSize;P(this.resultQR.canvas,n,r);const a=new ImageData(Uint8ClampedArray.from(e),r,n);this.resultQR.context.putImageData(a,0,0),this.resultQR.canvas.style=`image-rendering: pixelated; width: ${o*r}px; height: ${o*n}px`}drawOverlay(e){if(!this.overlay)return;const n=this.overlay.context,r=this.overlay.canvas.height,o=this.overlay.canvas.width;if(this.opts.cropToSquare&&r!==o){const a=Math.min(r,o),s={x:Math.floor((o-a)/2),y:Math.floor((r-a)/2)};n.clearRect(s.x,s.y,a,a),n.fillStyle=this.opts.overlaySideColor,o>r?(n.fillRect(0,0,s.x,r),n.fillRect(o-s.x,0,s.x,r)):r>o&&(n.fillRect(0,0,o,s.y),n.fillRect(0,r-s.y,o,s.y))}else n.clearRect(0,0,o,r);if(e){const[a,s,i,f]=e;n.fillStyle=this.opts.overlayMainColor,n.beginPath(),n.moveTo(a.x,a.y),n.lineTo(s.x,s.y),n.lineTo(i.x,i.y),n.lineTo(f.x,f.y),n.fill(),n.closePath(),n.fillStyle=this.opts.overlayFinderColor;for(const u of e){if(!("moduleSize"in u))continue;const c=u.x-3*u.moduleSize,l=u.y-3*u.moduleSize,d=7*u.moduleSize;n.fillRect(c,l,d,d)}}}drawImage(e,n,r){this.setSize(n,r);const{context:o}=this.main;o.drawImage(e,0,0,r,n);const a=o.getImageData(0,0,r,n),s={cropToSquare:this.opts.cropToSquare};this.bitmap&&(s.imageOnBitmap=i=>this.drawBitmap(i)),this.overlay&&(s.pointsOnDetect=i=>this.drawOverlay(i)),this.resultQR&&(s.imageOnResult=i=>this.drawResultQr(i));try{const i=It(a,s);return this.lastDetect=Date.now(),i}catch{this.overlay&&Date.now()-this.lastDetect>this.opts.overlayTimeout&&this.drawOverlay()}}clear(){U(this.main),this.overlay&&U(this.overlay),this.bitmap&&U(this.bitmap),this.resultQR&&U(this.resultQR)}}class Dt{stream;player;constructor(e,n){this.stream=e,this.player=n,this.setStream(e)}setStream(e){this.stream=e;const{player:n}=this;n.setAttribute("autoplay",""),n.setAttribute("muted",""),n.setAttribute("playsinline",""),n.srcObject=e}async listDevices(){if(!navigator.mediaDevices||!navigator.mediaDevices.enumerateDevices)throw new Error("Media Devices not supported");return(await navigator.mediaDevices.enumerateDevices()).filter(n=>n.kind==="videoinput").map(n=>({deviceId:n.deviceId,label:n.label||`Camera ${n.deviceId}`}))}async setDevice(e){this.stop();const n=await navigator.mediaDevices.getUserMedia({video:{deviceId:{exact:e}}});this.setStream(n)}readFrame(e,n=!1){const{player:r}=this;if(n)return e.drawImage(r,r.videoHeight,r.videoWidth);const o=Ct(r);return e.drawImage(r,o.height,o.width)}stop(){for(const e of this.stream.getTracks())e.stop()}}async function qt(t){const e=await navigator.mediaDevices.getUserMedia({video:{height:{ideal:window.screen.height},width:{ideal:window.screen.width},facingMode:"environment"}});return new Dt(e,t)}function Ut(t){let e;function n(r){t(r),e=requestAnimationFrame(n)}return e=requestAnimationFrame(n),()=>{e!==void 0&&(cancelAnimationFrame(e),e=void 0)}}function _t(t,e,n){return new Promise((r,o)=>{if(!(Number.isSafeInteger(e)&&Number.isSafeInteger(n)&&e>0&&n>0&&e<8192&&n<8192))return o(new Error("invalid width and height: "+e+" "+n));const s=new DOMParser().parseFromString(t,"image/svg+xml"),i=s.documentElement;i.setAttribute("width",String(e)),i.setAttribute("height",String(n));const f=s.createElementNS("http://www.w3.org/2000/svg","rect");f.setAttribute("width","100%"),f.setAttribute("height","100%"),f.setAttribute("fill","white"),i.insertBefore(f,i.firstChild);const c=new XMLSerializer().serializeToString(s),l=new Image;l.src="data:image/svg+xml,"+encodeURIComponent(c),l.onload=function(){const d=document.createElement("canvas");d.width=e,d.height=n;const y=d.getContext("2d");if(!y)return o(new Error("was not able to create 2d context"));y.drawImage(l,0,0,e,n);const p=d.toDataURL("image/png");r(p)},l.onerror=o})}export{Pt as QRCanvas,Ut as frameLoop,qt as frontalCamera,Ct as getSize,_t as svgToPng};
|
|
//# sourceMappingURL=dom-BnEjxmqU.js.map
|