/* QRious v5.0.0 | (C) 2024 Tara Rostami | GPL v3 License QRious v4.0.2 | (C) 2017 Alasdair Mercer | GPL v3 License Based on jsqrencode | (C) 2010 tz@execpc.com | GPL v3 License */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.QRious=e()}(this,function(){"use strict";var t=function(){},e=Object.prototype.hasOwnProperty,i=Array.prototype.slice;function s(t,s,n){n=i.call(arguments,2);for(var r,a,o=0,h=n.length;on?i:Math.max(0,n)},render:function(t){this.enabled&&(this.resize(),this.reset(),this.draw(t))},reset:function(){},resize:function(){}}),a=r.extend({draw:function(t){var e,i,s=this.qrious,n=this.getModuleSize(t),r=this.getOffset(t),a=this.element.getContext("2d"),o=s.positionCorner,h=s.dataCornerTL,f=s.dataCornerTR,c=s.dataCornerBR,u=s.dataCornerBL,l=s.positionSep||"D",_=s.dataSep||"D";for(e=0,a.fillStyle=s.foreground,a.globalAlpha=s.foregroundAlpha;e>1&1,s=0;s0;e--)s[e]=s[e]?s[e-1]^f.EXPONENT[u._modN(f.LOG[s[e]]+t)]:s[e-1];s[0]=f.EXPONENT[u._modN(f.LOG[s[0]]+t)]}for(t=0;t<=i;t++)s[t]=f.LOG[s[t]]},_checkBadness:function(){var t,e,i,s,n,r=0,a=this._badness,o=this.buffer,h=this.width;for(n=0;nh*h;)l-=h*h,c++;for(r+=c*u.N4,s=0;s=a-2&&(t=a-2,n>9&&t--);var o=t;if(n>9){for(r[o+2]=0,r[o+3]=0;o--;)e=r[o],r[o+3]|=255&e<<4,r[o+2]=e>>4;r[2]|=255&t<<4,r[1]=t>>4,r[0]=64|t>>12}else{for(r[o+1]=0,r[o+2]=0;o--;)e=r[o],r[o+2]|=255&e<<4,r[o+1]=e>>4;r[1]|=255&t<<4,r[0]=64|t>>4}for(o=t+3-(n<10);o=5&&(i+=u.N1+s[e]-5);for(e=3;et||3*s[e-3]>=4*s[e]||3*s[e+3]>=4*s[e])&&(i+=u.N3);return i},_finish:function(){this._stringBuffer=this.buffer.slice();var t,e,i=0,s=3e4;for(e=0;e<8&&(this._applyMask(e),(t=this._checkBadness())>=1)1&s&&(n[r-1-e+8*r]=1,e<6?n[8+r*e]=1:n[8+r*(e+1)]=1);for(e=0;e<7;e++,s>>=1)1&s&&(n[8+r*(r-7+e)]=1,e?n[6-e+8*r]=1:n[7+8*r]=1)},_interleaveBlocks:function(){var t,e,i=this._dataBlock,s=this._ecc,n=this._eccBlock,r=0,a=this._calculateMaxLength(),o=this._neccBlock1,h=this._neccBlock2,f=this._stringBuffer;for(t=0;t1)for(t=o.BLOCK[s],i=n-7;;){for(e=n-7;e>t-3&&(this._addAlignment(e,i),!(e6)for(i=0,t=c.BLOCK[r-7],e=17;i<6;i++)for(s=0;s<3;s++,e--)1&(e>11?r>>e-12:t>>e)?(n[5-i+a*(2-s+a-11)]=1,n[2-s+a-11+a*(5-i)]=1):(this._setMask(5-i,2-s+a-11),this._setMask(2-s+a-11,5-i))},_isMasked:function(t,e){var i=u._getMaskBit(t,e);return 1===this._mask[i]},_isBoldMasked:function(t,e){var i=u._getMaskBit(t,e);return 1===this._boldmask[i]},_pack:function(){var t,e,i,s=1,n=1,r=this.width,a=r-1,o=r-1,h=(this._dataBlock+this._eccBlock)*(this._neccBlock1+this._neccBlock2)+this._neccBlock2;for(e=0;ee&&(i=t,t=e,e=i),i=(e+e*e>>1)+t},_modN:function(t){for(;t>=255;)t-=255,t=(t>>8)+(255&t);return t},N1:3,N2:3,N3:40,N4:10}),l=r.extend({draw:function(){this.element.src=this.qrious.toDataURL()},reset:function(){this.element.src=""},resize:function(){var t=this.element;t.width=t.height=this.qrious.size}}),_=n.extend(function(t,e,i,s){this.name=t,this.modifiable=!!e,this.defaultValue=i,this._valueTransformer=s},{transform:function(t){var e=this._valueTransformer;return"function"==typeof e?e(t,this):t}}),d=n.extend(null,{abs:function(t){return null!=t?Math.abs(t):null},hasOwn:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},noop:function(){},toUpperCase:function(t){return null!=t?t.toUpperCase():null}}),v=n.extend(function(t){this.options={},t.forEach(function(t){this.options[t.name]=t},this)},{exists:function(t){return null!=this.options[t]},get:function(t,e){return v._get(this.options[t],e)},getAll:function(t){var e,i=this.options,s={};for(e in i)d.hasOwn(i,e)&&(s[e]=v._get(i[e],t));return s},init:function(t,e,i){var s,n;for(s in"function"!=typeof i&&(i=d.noop),this.options)d.hasOwn(this.options,s)&&(n=this.options[s],v._set(n,n.defaultValue,e),v._createAccessor(n,e,i));this._setAll(t,e,!0)},set:function(t,e,i){return this._set(t,e,i)},setAll:function(t,e){return this._setAll(t,e)},_set:function(t,e,i,s){var n=this.options[t];if(!n)throw Error("Invalid option: "+t);if(!n.modifiable&&!s)throw Error("Option cannot be modified: "+t);return v._set(n,e,i)},_setAll:function(t,e,i){if(!t)return!1;var s,n=!1;for(s in t)d.hasOwn(t,s)&&this._set(s,t[s],e,i)&&(n=!0);return n}},{_createAccessor:function(t,e,i){var s={get:function(){return v._get(t,e)}};t.modifiable&&(s.set=function(s){v._set(t,s,e)&&i(s,t)}),Object.defineProperty(e,t.name,s)},_get:function(t,e){return e["_"+t.name]},_set:function(t,e,i){var s="_"+t.name,n=i[s],r=t.transform(null!=e?e:t.defaultValue);return i[s]=r,r!==n}}),p=n.extend(function(){this._services={}},{getService:function(t){var e=this._services[t];if(!e)throw Error("Service is not being managed with name: "+t);return e},setService:function(t,e){if(this._services[t])throw Error("Service is already managed with name: "+t);e&&(this._services[t]=e)}}),k=new v([new _("background",!0,"white"),new _("backgroundAlpha",!0,1,d.abs),new _("element"),new _("foreground",!0,"black"),new _("foregroundAlpha",!0,1,d.abs),new _("level",!0,"L",d.toUpperCase),new _("positionSep",!0,"D",d.toUpperCase),new _("dataSep",!0,"D",d.toUpperCase),new _("mime",!0,"image/png"),new _("padding",!0,null,d.abs),new _("size",!0,100,d.abs),new _("value",!0,""),new _("positionCorner",!0,0,d.abs),new _("dataCornerTL",!0,0,d.abs),new _("dataCornerTR",!0,0,d.abs),new _("dataCornerBR",!0,0,d.abs),new _("dataCornerBL",!0,0,d.abs)]),m=new p,g=n.extend(function(t){k.init(t,this,this.update.bind(this));var e=k.get("element",this),i=m.getService("element"),s=e&&i.isCanvas(e)?e:i.createCanvas(),n=e&&i.isImage(e)?e:i.createImage();this._canvasRenderer=new a(this,s,!0),this._imageRenderer=new l(this,n,n===e),this.update()},{get:function(){return k.getAll(this)},set:function(t){k.setAll(t,this)&&this.update()},toDataURL:function(t){return this.canvas.toDataURL(t||this.mime)},update:function(){var t=new u({level:this.level,value:this.value});this._canvasRenderer.render(t),this._imageRenderer.render(t)}},{use:function(t){m.setService(t.getName(),t)}});Object.defineProperties(g.prototype,{canvas:{get:function(){return this._canvasRenderer.getElement()}},image:{get:function(){return this._imageRenderer.getElement()}}});var M=n.extend({getName:function(){}}).extend({createCanvas:function(){},createImage:function(){},getName:function(){return"element"},isCanvas:function(t){},isImage:function(t){}}).extend({createCanvas:function(){return document.createElement("canvas")},createImage:function(){return document.createElement("img")},isCanvas:function(t){return t instanceof HTMLCanvasElement},isImage:function(t){return t instanceof HTMLImageElement}});return g.use(new M),g});