zan-poster
Version:
通过json在canvas上绘制图像, 基于cax画图框架开发, 本画图组件是json2canvas库的改造、优化版本 (详情查看README.md文档末说明)。
2 lines • 44.4 kB
JavaScript
import{r as t,c as i,h as s,g as e}from"./index-86f0f68f.js";function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var h=function(){function t(s,e){var n=e.length,h,r;return n>=2?(h=e.slice(0,n/2),r=e.slice(n/2,n),i(s,t(s,h),t(s,r))):e.slice()}function i(t,i,s){for(var e=[],n=i.length,h=s.length;n>0&&h>0;)t(i[0],s[0])<=0?(e.push(i.shift()),n--):(e.push(s.shift()),h--);return n>0?e.push.apply(e,i):e.push.apply(e,s),e}return t}(),r=function(){function t(t,i,s){var e,n;for(e=0,n=i.length;e<n&&!(t(i[e],s)>0);e++);return e}return t}(),o,a;o=h;a=r;var c=function(){var t;t={};function i(t){return function(){return t}}function s(t){t=t||{},this.config=t,this.config.childrenPropertyName=t.childrenPropertyName||"children",this.config.modelComparatorFn=t.modelComparatorFn}function e(t,i){return i.parent=t,t.children.push(i),i}function n(t,i){this.config=t,this.model=i,this.children=[]}s.prototype.parse=function(t){var i,s,h;if(!(t instanceof Object))throw new TypeError("Model must be of type object.");if(h=new n(this.config,t),t[this.config.childrenPropertyName]instanceof Array)for(this.config.modelComparatorFn&&(t[this.config.childrenPropertyName]=o(this.config.modelComparatorFn,t[this.config.childrenPropertyName])),i=0,s=t[this.config.childrenPropertyName].length;i<s;i++)e(h,this.parse(t[this.config.childrenPropertyName][i]));return h};function h(t){return typeof t.config.modelComparatorFn=="function"}n.prototype.isRoot=function(){return this.parent===void 0},n.prototype.hasChildren=function(){return this.children.length>0};function r(t,i,s){var e;if(!(i instanceof n))throw new TypeError("Child must be of type Node.");if(i.parent=t,t.model[t.config.childrenPropertyName]instanceof Array||(t.model[t.config.childrenPropertyName]=[]),h(t))e=a(t.config.modelComparatorFn,t.model[t.config.childrenPropertyName],i.model),t.model[t.config.childrenPropertyName].splice(e,0,i.model),t.children.splice(e,0,i);else if(s===void 0)t.model[t.config.childrenPropertyName].push(i.model),t.children.push(i);else{if(s<0||s>t.children.length)throw new Error("Invalid index.");t.model[t.config.childrenPropertyName].splice(s,0,i.model),t.children.splice(s,0,i)}return i}n.prototype.addChild=function(t){return r(this,t)},n.prototype.addChildAtIndex=function(t,i){if(h(this))throw new Error("Cannot add child at index when using a comparator function.");return r(this,t,i)},n.prototype.setIndex=function(t){if(h(this))throw new Error("Cannot set node index when using a comparator function.");if(this.isRoot()){if(t===0)return this;throw new Error("Invalid index.")}if(t<0||t>=this.parent.children.length)throw new Error("Invalid index.");var i=this.parent.children.indexOf(this);return this.parent.children.splice(t,0,this.parent.children.splice(i,1)[0]),this.parent.model[this.parent.config.childrenPropertyName].splice(t,0,this.parent.model[this.parent.config.childrenPropertyName].splice(i,1)[0]),this},n.prototype.getPath=function(){var t=[];return function i(s){t.unshift(s),s.isRoot()||i(s.parent)}(this),t},n.prototype.getIndex=function(){return this.isRoot()?0:this.parent.children.indexOf(this)};function c(){var i={};if(arguments.length===1?typeof arguments[0]=="function"?i.fn=arguments[0]:i.options=arguments[0]:arguments.length===2?typeof arguments[0]=="function"?(i.fn=arguments[0],i.ctx=arguments[1]):(i.options=arguments[0],i.fn=arguments[1]):(i.options=arguments[0],i.fn=arguments[1],i.ctx=arguments[2]),i.options=i.options||{},i.options.strategy||(i.options.strategy="pre"),!t[i.options.strategy])throw new Error("Unknown tree walk strategy. Valid strategies are 'pre' [default], 'post' and 'breadth'.");return i}return n.prototype.walk=function(){var i;i=c.apply(this,arguments),t[i.options.strategy].call(this,i.fn,i.ctx)},t.pre=function t(i,s){var e,n,h;for(h=i.call(s,this),e=0,n=this.children.length;e<n;e++){if(h===!1)return!1;h=t.call(this.children[e],i,s)}return h},t.post=function t(i,s){var e,n,h;for(e=0,n=this.children.length;e<n;e++)if(h=t.call(this.children[e],i,s),h===!1)return!1;return h=i.call(s,this),h},t.breadth=function(t,i){var s=[this];(function e(){var n,h,r;if(s.length!==0){for(r=s.shift(),n=0,h=r.children.length;n<h;n++)s.push(r.children[n]);t.call(i,r)!==!1&&e()}})()},n.prototype.all=function(){var s,e=[];return s=c.apply(this,arguments),s.fn=s.fn||i(!0),t[s.options.strategy].call(this,(function(t){s.fn.call(s.ctx,t)&&e.push(t)}),s.ctx),e},n.prototype.first=function(){var s,e;return s=c.apply(this,arguments),s.fn=s.fn||i(!0),t[s.options.strategy].call(this,(function(t){if(s.fn.call(s.ctx,t))return e=t,!1}),s.ctx),e},n.prototype.drop=function(){var t;return this.isRoot()||(t=this.parent.children.indexOf(this),this.parent.children.splice(t,1),this.parent.model[this.config.childrenPropertyName].splice(t,1),this.parent=void 0,delete this.parent),this},s}();const u=n(c);let l=null;typeof wx<"u"&&(wx.getSharedCanvas?l=wx.getSharedCanvas():wx.createCanvas&&(l=wx.createCanvas()));const f=l,d=.017453292519943295,p=Math.PI*2;class w{constructor(t,i,s,e,n,h){return this.a=t!=null?t:1,this.b=i||0,this.c=s||0,this.d=e!=null?e:1,this.tx=n||0,this.ty=h||0,this}identity(){return this.a=this.d=1,this.b=this.c=this.tx=this.ty=0,this}appendTransform(t,i,s,e,n,h,r,o,a){if(n%360)var c=n*d,u=Math.cos(c),l=Math.sin(c);else u=1,l=0;return h||r?(h*=d,r*=d,this.append(Math.cos(r),Math.sin(r),-Math.sin(h),Math.cos(h),t,i),this.append(u*s,l*s,-l*e,u*e,0,0)):this.append(u*s,l*s,-l*e,u*e,t,i),(o||a)&&(this.tx-=o*this.a+a*this.c,this.ty-=o*this.b+a*this.d),this}append(t,i,s,e,n,h){var r=this.a,o=this.b,a=this.c,c=this.d;return this.a=t*r+i*a,this.b=t*o+i*c,this.c=s*r+e*a,this.d=s*o+e*c,this.tx=n*r+h*a+this.tx,this.ty=n*o+h*c+this.ty,this}initialize(t,i,s,e,n,h){return this.a=t,this.b=i,this.c=s,this.d=e,this.tx=n,this.ty=h,this}setValues(t,i,s,e,n,h){return this.a=t!=null?t:1,this.b=i||0,this.c=s||0,this.d=e!=null?e:1,this.tx=n||0,this.ty=h||0,this}invert(){let t=this.a,i=this.b,s=this.c,e=this.d,n=this.tx,h=t*e-i*s;return this.a=e/h,this.b=-i/h,this.c=-s/h,this.d=t/h,this.tx=(s*this.ty-e*n)/h,this.ty=-(t*this.ty-i*n)/h,this}copy(t){return this.setValues(t.a,t.b,t.c,t.d,t.tx,t.ty)}}w.decompose=function(t,i,s,e,n,h,r){const o=-Math.atan2(-s,e),a=Math.atan2(i,t),c=Math.abs(o+a);c<1e-5||Math.abs(p-c)<1e-5?(r.rotation=a,t<0&&e>=0&&(r.rotation+=r.rotation<=0?Math.PI:-Math.PI),r.skewX=r.skewY=0):(r.rotation=0,r.skewX=o,r.skewY=a),r.scaleX=Math.sqrt(t*t+i*i),r.scaleY=Math.sqrt(s*s+e*e),r.x=n,r.y=h};const m={stagePropagationStopped:{}};class g{constructor(){this._listeners=null,this._captureListeners=null}addEventListener(t,i,s){var e;s?e=this._captureListeners=this._captureListeners||{}:e=this._listeners=this._listeners||{};var n=e[t];return n&&this.removeEventListener(t,i,s),n=e[t],n?n.push(i):e[t]=[i],i}removeEventListener(t,i,s){var e=s?this._captureListeners:this._listeners;if(e){var n=e[t];n&&n.every(((t,s)=>t===i?(n.splice(s,1),!1):!0))}}on(t,i,s){this.addEventListener(t,i,s)}off(t,i,s){this.removeEventListener(t,i,s)}dispatchEvent(t){m.stagePropagationStopped[t.type]=!1;for(var i=this,s=[i];i.parent;)s.push(i=i.parent);var e,n=s.length;for(e=n-1;e>=0&&!t.propagationStopped;e--)s[e]._dispatchEvent(t,0);for(e=0;e<n&&!t.propagationStopped;e++)s[e]._dispatchEvent(t,1)}_dispatchEvent(t,i){if(t.target=this,this._captureListeners&&i===0){let i=this._captureListeners[t.type];i&&i.forEach((i=>{i.call(this,t)}))}if(this._listeners&&i===1){let i=this._listeners[t.type];i&&i.forEach((i=>{i.call(this,t)}))}}}var v={};v._nextID=0;v.get=function(){return v._nextID++};class b extends g{constructor(){super(),this.alpha=this.complexAlpha=this.scaleX=this.scaleY=1,this.x=this.y=this.rotation=this.skewX=this.skewY=this.originX=this.originY=0,this.cursor=null,this.visible=!0,this._matrix=new w,this._hitMatrix=new w,this.id=v.get(),this.clipGraphics=null,this.clipRuleNonzero=!0,this.fixed=!1,this.shadow=null,this.compositeOperation=null,this.absClipGraphics=null,this.absClipRuleNonzero=!0,this.cacheUpdating=!1;try{Object.defineProperties(this,{stage:{get:this._getStage},scale:{get:function(){return this.scaleX},set:function(t){this.scaleX=this.scaleY=t}}})}catch{}this.hitBox=null}isVisible(){return this.visible&&this.alpha>0&&this.scaleX!==0&&this.scaleY!==0}initAABB(){if((this.width===void 0||this.height===void 0)&&!this.hitBox)return;let t,i,s=this.width,e=this.height,n=this._matrix,h=n.tx,r=n.ty;this.hitBox&&(s=this.hitBox[2],e=this.hitBox[3],h=this.hitBox[0]*n.a+this.hitBox[1]*n.c+h,r=this.hitBox[0]*n.b+this.hitBox[1]*n.d+r);let o=s*n.a,a=s*n.b,c=e*n.c,u=e*n.d,l=h,f=h,d=r,p=r;(t=o+h)<l?l=t:t>f&&(f=t),(t=o+c+h)<l?l=t:t>f&&(f=t),(t=c+h)<l?l=t:t>f&&(f=t),(i=a+r)<d?d=i:i>p&&(p=i),(i=a+u+r)<d?d=i:i>p&&(p=i),(i=u+r)<d?d=i:i>p&&(p=i),this.AABB=[l,d,f-l,p-d],this.rectPoints=[{x:h,y:r},{x:o+h,y:a+r},{x:o+c+h,y:a+u+r},{x:c+h,y:u+r}]}destroy(){this.parent.remove(this)}hover(t,i,s){this.on("mouseover",t),this.on("mouseout",i),s&&this.on("mousemove",s)}clip(t,i){this.clipGraphics=t,this.clipRuleNonzero=!i}unclip(){this.clipGraphics=null}absClip(t,i){this.absClipGraphics=t,this.absClipRuleNonzero=!i}unAbsClip(){this.absClipGraphics=null}cache(t,i,s,e,n,h){this._cacheData={x:t||0,y:i||0,width:s||this.width,height:e||this.height,scale:n||1},this.cacheUpdating=h,this.cacheCanvas||(typeof wx<"u"&&wx.createCanvas?this.cacheCanvas=wx.createCanvas():this.cacheCanvas=document.createElement("canvas"),this.cacheCtx=this.cacheCanvas.getContext("2d")),this.cacheCanvas.width=this._cacheData.width*this._cacheData.scale,this.cacheCanvas.height=this._cacheData.height*this._cacheData.scale,this._readyToCache=!0}uncache(){this.cacheCanvas=null}filter(t,i){i=Object.assign({},{x:0,y:0,width:this.width,height:this.height},i),this.cache(i.x,i.y,i.width,i.height),this._readyToFilter=!0,this._filterName=t}setTransform(t,i,s,e,n,h,r,o,a){this.x=t||0,this.y=i||0,this.scaleX=s!=null?s:1,this.scaleY=e!=null?e:1,this.rotation=n||0,this.skewX=h||0,this.skewY=r||0,this.originX=o||0,this.originY=a||0}setMatrix(t,i,s,e,n,h){w.decompose(t,i,s,e,n,h,this)}unfilter(){this.uncache()}_getStage(){for(var t=this;t.parent;)t=t.parent;return t.___instanceof==="Stage"?t:null}}class y extends b{constructor(t){super(t),this.children=[]}add(t){const i=arguments.length;for(let t=0;t<i;t++){const i=arguments[t],s=i.parent;s&&s.removeChildAt(s.children.indexOf(i)),this.children.push(i),i.parent=this}}addChildAt(t,i){const s=t.parent;s&&s.removeChildAt(s.children.indexOf(t)),t.parent=this,this.children.splice(i,0,t)}removeChildAt(t){const i=this.children[t];i&&(i.parent=null),this.children.splice(t,1)}replace(t,i){const s=i.parent.children.indexOf(i);this.removeChildAt(s),this.addChildAt(t,s)}remove(t){const i=arguments.length;let s=this.children.length;for(let e=0;e<i;e++)for(let i=0;i<s;i++)t.id===this.children[i].id&&(t.parent=null,this.children.splice(i,1),i--,s--)}empty(){this.children.forEach((t=>{t.parent=null})),this.children.length=0}destroy(){this.empty(),this.parent&&super.destroy()}}const x={globalAlpha:!0,filter:!0,fillStyle:!0,strokeStyle:!0,lineWidth:!0,lineCap:!0,lineDashOffset:!0,lineJoin:!0,miterLimit:!0};class A extends b{constructor(){super(),this.cmds=[],this.currentGradient=null}globalAlpha(){return this.cmds.push(["globalAlpha",arguments]),this}filter(){return this.cmds.push(["filter",arguments]),this}filter(...t){return this.cmds.push(["filter",t]),this}clearRect(...t){return this.cmds.push(["clearRect",t]),this}rect(...t){return this.cmds.push(["rect",t]),this}clear(){return this.cmds.length=0,this}setLineDash(...t){return this.cmds.push(["setLineDash",t]),this}strokeRect(...t){return this.cmds.push(["strokeRect",t]),this}fillRect(...t){return this.cmds.push(["fillRect",t]),this}beginPath(...t){return this.cmds.push(["beginPath",t]),this}arc(...t){return this.cmds.push(["arc",t]),this}closePath(...t){return this.cmds.push(["closePath",t]),this}fillStyle(...t){return this.cmds.push(["fillStyle",t]),this}fill(...t){return this.cmds.push(["fill",t]),this}strokeStyle(...t){return this.cmds.push(["strokeStyle",t]),this}lineWidth(...t){return this.cmds.push(["lineWidth",t]),this}lineCap(...t){return this.cmds.push(["lineCap",t]),this}lineDashOffset(...t){return this.cmds.push(["lineDashOffset",t]),this}lineJoin(...t){return this.cmds.push(["lineJoin",t]),this}miterLimit(...t){return this.cmds.push(["miterLimit",t]),this}stroke(...t){return this.cmds.push(["stroke",t]),this}moveTo(...t){return this.cmds.push(["moveTo",t]),this}lineTo(...t){return this.cmds.push(["lineTo",t]),this}bezierCurveTo(...t){return this.cmds.push(["bezierCurveTo",t]),this}quadraticCurveTo(...t){return this.cmds.push(["quadraticCurveTo",t]),this}createRadialGradient(...t){return this.cmds.push(["createRadialGradient",t]),this}createLinearGradient(...t){return this.cmds.push(["createLinearGradient",t]),this}addColorStop(...t){return this.cmds.push(["addColorStop",t]),this}fillGradient(){return this.cmds.push(["fillGradient"]),this}arcTo(...t){return this.cmds.push(["arcTo",t]),this}render(t){this.cmds.forEach((i=>{const s=i[0];if(x[s])t[s]=i[1][0];else if(s==="addColorStop")this.currentGradient&&this.currentGradient.addColorStop(i[1][0],i[1][1]);else if(s==="fillGradient")t.fillStyle=this.currentGradient;else{const e=t[s](...i[1]);(s==="createRadialGradient"||s==="createLinearGradient")&&(this.currentGradient=e)}}))}}function M(t,i){!t.includes("https://")&&!t.includes("http://")||/^https?:\/\/tmp\//.test(t)?wx.getImageInfo({src:t,success:s=>{i({img:t,width:s.width,height:s.height})}}):wx.downloadFile({url:t,success:t=>{t.statusCode===200&&wx.getImageInfo({src:t.tempFilePath,success:s=>{i({img:t.tempFilePath,width:s.width,height:s.height})}})}})}function k(){return typeof global!="object"||!global||global.Math!==Math||global.Array!==Array?typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:function(){return this}():global}const S=k(),F={getImageInWx:M,root:S,isWeapp:typeof wx<"u"&&wx.getSystemInfo&&typeof Page<"u",isWegame:typeof wx<"u"&&wx.getSystemInfo&&typeof Page>"u"};class C extends b{constructor(t,i){super(),typeof t=="string"?C.cache[t]?(F.isWeapp?(this.img=C.cache[t].img,this.rect=[0,0,C.cache[t].width,C.cache[t].height],this.width=this.rect[2],this.height=this.rect[3]):(this.img=C.cache[t],this.rect=[0,0,this.img.width,this.img.height],this.width=this.img.width,this.height=this.img.height),i&&i.call(this)):(this.img=F.isWegame?wx.createImage():new window.Image,this.img.onload=()=>{this.rect||(this.rect=[0,0,this.img.width,this.img.height]),this.width=this.img.width,this.height=this.img.height,i&&i.call(this),C.cache[t]=this.img},this.img.src=t):(this.img=t,this.rect=[0,0,t.width,t.height],this.width=t.width,this.height=t.height,C.cache[t.src]=t,i&&i.call(this))}clone(t){const i=new C(t);return i.x=this.x,i.y=this.y,i.scaleX=this.scaleX,i.scaleY=this.scaleY,i.rotation=this.rotation,i.skewX=this.skewX,i.skewY=this.skewY,i.originX=this.originX,i.originY=this.originY,i.width=this.width,i.height=this.height,i.cursor=this.cursor,i}}C.cache={};let I;F.isWeapp?I=wx.createCanvasContext("measure0"):typeof document<"u"&&(I=document.createElement("canvas").getContext("2d"));class P extends b{constructor(t,i){super(null),this.text=t,i=i||{},this.font=i.font||"10px sans-serif",this.fontSize=i.fontSize||10,this.textAlign=i.textAlign||"left",this.baseline=i.baseline||"top",this.fillStyle=i.fillStyle||i.color,this.lineWidth=i.lineWidth||1,this.strokeStyle=i.strokeStyle}getWidth(){return I||F.isWegame&&(I=wx.createCanvas().getContext("2d")),this.font&&(I.font=this.font),I.measureText(this.text).width}}function $(t,i){const s=t.data;i=i===void 0?1:i;for(var e=0;e<s.length;e+=4)s[e]=s[e]+i*(255-2*s[e]),s[e+1]=s[e+1]+i*(255-2*s[e+1]),s[e+2]=s[e+2]+i*(255-2*s[e+2]);return t}let L=null;typeof document<"u"?L=document.createElement("canvas").getContext("2d"):typeof wx<"u"&&wx.createCanvas&&(L=wx.createCanvas().getContext("2d"));function O(t,i){return L.createImageData(t,i)}function R(t,i){if(i=Math.abs(i),i<=1)return t;for(var s=i/2,e=Math.ceil(i)+(1-Math.ceil(i)%2),n=new Float32Array(e),h=(s+.5)/3,r=h*h,o=1/Math.sqrt(2*Math.PI*r),a=-1/(2*h*h),c=0,u=Math.floor(e/2),l=0;l<e;l++){var f=l-u,d=o*Math.exp(f*f*a);n[l]=d,c+=d}for(var l=0;l<n.length;l++)n[l]/=c;return T(t,n,n)}function T(t,i,s,e){return _(j(t,s),i)}function _(t,i,s){for(var e=i.length,n=Math.floor(e/2),h=t.data,r=t.width,o=t.height,a=r,c=o,u=O(a,c),l=u.data,f=0,d=0;d<c;d++)for(var p=0;p<a;p++){for(var w=d,m=p,g=(d*a+p)*4,v=0,b=0,y=0,x=0,A=0;A<e;A++){var M=w,k=Math.min(r-1,Math.max(0,m+A-n)),S=(M*r+k)*4,F=i[A];v+=h[S]*F,b+=h[S+1]*F,y+=h[S+2]*F,x+=h[S+3]*F}l[g]=v,l[g+1]=b,l[g+2]=y,l[g+3]=x+f*(255-x)}return u}function j(t,i,s){for(var e=i.length,n=Math.floor(e/2),h=t.data,r=t.width,o=t.height,a=r,c=o,u=O(a,c),l=u.data,f=0,d=0;d<c;d++)for(var p=0;p<a;p++){for(var w=d,m=p,g=(d*a+p)*4,v=0,b=0,y=0,x=0,A=0;A<e;A++){var M=Math.min(o-1,Math.max(0,w+A-n)),k=m,S=(M*r+k)*4,F=i[A];v+=h[S]*F,b+=h[S+1]*F,y+=h[S+2]*F,x+=h[S+3]*F}l[g]=v,l[g+1]=b,l[g+2]=y,l[g+3]=x+f*(255-x)}return u}function E(t,i){const s=t.data,e=s.length;for(let t=0;t<e;t+=4)s[t]+=i,s[t+1]+=i,s[t+2]+=i;return t}function B(t,i){const s=t.data,e=s.length,n=259*(i+255)/(255*(259-i));for(let t=0;t<e;t+=4)s[t]=n*(s[t]-128)+128,s[t+1]=n*(s[t+1]-128)+128,s[t+2]=n*(s[t+2]-128)+128;return t}function G(t,i){const s=t.data,e=s.length;for(let t=0;t<e;t+=4){let e=s[t],n=s[t+1],h=s[t+2],r=.2126*e+.7152*n+.0722*h;s[t]=e+(r-e)*i,s[t+1]=n+(r-n)*i,s[t+2]=h+(r-h)*i}return t}function z(t,i){const s=t.data,e=s.length;for(let t=0;t<e;t+=4){const e=s[t],n=s[t+1],h=s[t+2],r=e*.393+n*.769+h*.189,o=e*.349+n*.686+h*.168,a=e*.272+n*.534+h*.131;s[t]=e+(r-e)*i,s[t+1]=n+(o-n)*i,s[t+2]=h+(a-h)*i}return t}function W(t,i){const s=t.data,e=s.length;for(let t=0;t<e;t+=4){const e=s[t],n=s[t+1],h=s[t+2],r=.2126*e+.7152*n+.0722*h>=i?255:0;s[t]=s[t+1]=s[t+2]=r}return t}function H(t,i){const s=t.data,e=s.length;for(let t=0;t<e;t+=4)s[t]=Math.pow(s[t]/255,i)*255,s[t+1]=Math.pow(s[t+1]/255,i)*255,s[t+2]=Math.pow(s[t+2]/255,i)*255;return t}function D(t,i){const s=t.data,e=s.length,n=i.color.charAt(0)==="#"?i.color.substr(1):i.color,h={r:parseInt(n.substr(0,2),16),g:parseInt(n.substr(2,2),16),b:parseInt(n.substr(4,2),16)};for(let t=0;t<e;t+=4)s[t]-=(s[t]-h.r)*i.amount,s[t+1]-=(s[t+1]-h.g)*i.amount,s[t+2]-=(s[t+2]-h.b)*i.amount;return t}function N(t,i){if(typeof i=="string"){let s=i.split("(")[0],e=V(i);switch(s){case"invert":return $(t,e);case"brightness":return E(t,-255+e*255);case"blur":return R(t,e);case"contrast":return B(t,-255+e*255);case"grayscale":return G(t,e);case"sepia":return z(t,e);case"threshold":return W(t,e);case"gamma":return H(t,e)}}else switch(i.type){case"colorize":return D(t,i)}}function V(t){return t=t.replace(/(invert)|(brightness)|(blur)|(contrast)|(grayscale)|(sepia)|(threshold)|(gamma)?\(/g,"").replace(")",""),t.indexOf("%")!==-1?Number(t.replace("%",""))/100:t.indexOf("px")!==-1?Number(t.replace("px","")):Number(t)}class q{render(){}renderGraphics(){}clear(){}}class J extends q{constructor(t,i,s,e){super(),arguments.length===3?this.ctx=t:this.ctx=t.getContext("2d",e),this.width=i,this.height=s}clear(t,i,s){t.clearRect(0,0,i,s)}render(t,i,s){const e=i._matrix;if(i.children){const n=i.children.slice(0),h=n.length;for(let r=0;r<h;r++){const h=n[r];e.initialize(1,0,0,1,0,0),e.appendTransform(i.x,i.y,i.scaleX,i.scaleY,i.rotation,i.skewX,i.skewY,i.originX,i.originY),t.save(),this._render(t,h,s?null:e,s,!0),t.restore()}}else this._render(t,i,s?null:e,s)}_render(t,i,s,e,n){if(!i.isVisible())return;s&&!i.fixed?i._matrix.initialize(s.a,s.b,s.c,s.d,s.tx,s.ty):e&&!i.fixed?i._matrix.initialize(e.scale,0,0,e.scale,e.x*-1,e.y*-1):i._matrix.initialize(1,0,0,1,0,0),s=i._matrix,(n||!e)&&s.appendTransform(i.x,i.y,i.scaleX,i.scaleY,i.rotation,i.skewX,i.skewY,i.originX,i.originY);const h=i.clipGraphics;h&&(t.beginPath(),h._matrix.copy(s),h._matrix.appendTransform(h.x,h.y,h.scaleX,h.scaleY,h.rotation,h.skewX,h.skewY,h.originX,h.originY),t.setTransform(h._matrix.a,h._matrix.b,h._matrix.c,h._matrix.d,h._matrix.tx,h._matrix.ty),h.render(t),t.clip(i.clipRuleNonzero?"nonzero":"evenodd"));const r=i.absClipGraphics;if(r&&(t.beginPath(),r._matrix.initialize(1,0,0,1,0,0),r._matrix.appendTransform(r.x,r.y,r.scaleX,r.scaleY,r.rotation,r.skewX,r.skewY,r.originX,r.originY),t.setTransform(r._matrix.a,r._matrix.b,r._matrix.c,r._matrix.d,r._matrix.tx,r._matrix.ty),r.render(t),t.clip(i.absClipRuleNonzero?"nonzero":"evenodd")),t.setTransform(s.a,s.b,s.c,s.d,s.tx,s.ty),i._readyToCache||i.cacheUpdating)this.setComplexProps(t,i),i._readyToCache=!1,i.cacheCtx.clearRect(0,0,i.cacheCanvas.width,i.cacheCanvas.height),i.cacheCtx.save(),this.render(i.cacheCtx,i,i._cacheData),i.cacheCtx.restore(),i._readyToFilter&&(i.cacheCtx.putImageData(N(i.cacheCtx.getImageData(0,0,i.cacheCanvas.width,i.cacheCanvas.height),i._filterName),0,0),this._readyToFilter=!1),i.filterStyle&&(t.filter=i.filterStyle),this.drawImage(t,i.cacheCanvas,i._cacheData.x,i._cacheData.y);else if(i.cacheCanvas&&!e)this.setComplexProps(t,i),i.filterStyle&&(t.filter=i.filterStyle),this.drawImage(t,i.cacheCanvas,i._cacheData.x,i._cacheData.y);else if(i instanceof y){const e=i.children.slice(0),n=e.length;for(let i=0;i<n;i++)t.save(),this._render(t,e[i],s),t.restore()}else if(i instanceof A)this.setComplexProps(t,i),i.render(t);else if(i instanceof C&&i.rect){this.setComplexProps(t,i);const s=i.rect;i.filterStyle&&(t.filter=i.filterStyle),this.drawImage(t,i.img,s[0],s[1],s[2],s[3],0,0,s[2],s[3])}else i instanceof P&&(this.setComplexProps(t,i),t.font=i.font,t.textAlign=i.textAlign,t.textBaseline=i.baseline,i.fillStyle?(t.fillStyle=i.fillStyle,t.fillText(i.text,0,0,i.maxWidth)):i.strokeStyle?(t.strokeStyle=i.strokeStyle,t.lineWidth=i.lineWidth,t.strokeText(i.text,0,0)):console.warn("The Text element needs to have 【fillStyle】 or 【strokeStyle】 set in order to be rendered."))}drawImage(t,...i){t.drawImage(...i)}setComplexProps(t,i){i.complexCompositeOperation=t.globalCompositeOperation=this.getCompositeOperation(i),i.complexAlpha=t.globalAlpha=this.getAlpha(i,1),i.complexShadow=this.getShadow(i),i.complexShadow&&(t.shadowColor=i.complexShadow.color,t.shadowOffsetX=i.complexShadow.offsetX,t.shadowOffsetY=i.complexShadow.offsetY,t.shadowBlur=i.complexShadow.blur)}getCompositeOperation(t){if(t.compositeOperation)return t.compositeOperation;if(t.parent)return this.getCompositeOperation(t.parent)}getAlpha(t,i){const s=t.alpha*i;return t.parent?this.getAlpha(t.parent,s):s}getShadow(t){if(t.shadow)return t.shadow;if(t.parent)return this.getShadow(t.parent)}}class U{constructor(t,i,s){this.renderList=[],arguments.length===3?(this.renderer=new J(t,i,s),this.width=i,this.height=s):(this.renderer=new J(t),this.width=t.width,this.height=t.height),this.ctx=this.renderer.ctx}update(t){this.renderer.clear(this.ctx,this.width,this.height),this.ctx.draw&&this.ctx.draw(),this.renderer.render(this.ctx,t)}getHitRenderList(t){const i=this.renderList;return i.length=0,this.computeMatrix(t),i}computeMatrix(t){for(let i=0,s=t.children.length;i<s;i++)this._computeMatrix(t.children[i])}initComplex(t){t.complexCompositeOperation=this._getCompositeOperation(t),t.complexAlpha=this._getAlpha(t,1)}_computeMatrix(t,i){if(t.isVisible())if(i&&!t.fixed?t._matrix.initialize(i.a,i.b,i.c,i.d,i.tx,i.ty):t._matrix.initialize(1,0,0,1,0,0),t._matrix.appendTransform(t.x,t.y,t.scaleX,t.scaleY,t.rotation,t.skewX,t.skewY,t.originX,t.originY),t instanceof y){const i=t.children,s=i.length;let e=0;for(;e<s;e++)this._computeMatrix(i[e],t._matrix)}else t.initAABB(),this.renderList.push(t),this.initComplex(t)}_getCompositeOperation(t){if(t.compositeOperation)return t.compositeOperation;if(t.parent)return this._getCompositeOperation(t.parent)}_getAlpha(t,i){const s=t.alpha*i;return t.parent?this._getAlpha(t.parent,s):s}isInStage(t){return this.collisionBetweenAABB(t.AABB,this.stage.AABB)}collisionBetweenAABB(t,i){return!(t[0]+t[2]<i[0]||t[0]>i[0]+i[2]||t[1]+t[3]<i[1]||t[1]>i[1]+i[3])}}class Q extends y{constructor(t,i,s,e){if(super(),s)this.canvas=s,this.ctx=this.canvas.getContext("2d");else throw new Error("无效canvas元素");this.renderer=new U(this.ctx,t,i),this._overObject=null,this.hitAABB=!0,this.width=t,this.height=i}update(){this.renderer.update(this)}}class X extends y{constructor(t,i,s,e){super();const n=arguments.length;if(this.isWegame=typeof wx<"u"&&typeof Page>"u",this.moveDetectionInterval=0,n===0)this.canvas=f,this.disableMoveDetection=!0,this.moveDetectionInterval=500;else{if(n===4)return new Q(arguments[0],arguments[1],arguments[2],arguments[3]);n===1?this.canvas=typeof t=="string"?document.querySelector(t):t:(this.renderTo=typeof s=="string"?document.querySelector(s):s,this.renderTo.tagName==="CANVAS"?(this.canvas=this.renderTo,this.canvas.width=t,this.canvas.height=i):(this.canvas=document.createElement("canvas"),this.canvas.width=t,this.canvas.height=i,this.renderTo.appendChild(this.canvas))),this._boundingClientRect=this.canvas.getBoundingClientRect(),this.offset=this._getOffset(this.canvas)}this.renderer=new U(this.canvas,this.canvas.width,this.canvas.height,e),this.borderTopWidth=0,this.borderLeftWidth=0,this.hitAABB=!1,this._overObject=null,this._scaleX=1,this._scaleY=1,this._mouseDownX=0,this._mouseDownY=0,this._mouseUpX=0,this._mouseUpY=0,this.willDragObject=null,this.preStageX=null,this.preStageY=null,this.width=this.canvas.width,this.height=this.canvas.height,this.___instanceof="Stage",this._moveDetectionTime=Date.now()}_getOffset(t){if(this.isWegame)return[0,0];let i=0,s=0;if(document.documentElement.getBoundingClientRect&&t.getBoundingClientRect){let e=t.getBoundingClientRect();s=e.left,i=e.top}else{for(;t.offsetParent;)i+=t.offsetTop,s+=t.offsetLeft,t=t.offsetParent;return[s,i]}return[s+Math.max(document.documentElement.scrollLeft,document.body.scrollLeft),i+Math.max(document.documentElement.scrollTop,document.body.scrollTop)]}update(){this.renderer.update(this)}}class Y extends A{draw(){}render(t){this.clear(),this.draw(),super.render(t)}}const K={util:{randomInt:(t,i)=>t+Math.floor(Math.random()*(i-t+1))},Stage:X,WeStage:Q,Graphics:A,Bitmap:C,Text:P,Group:y,Shape:Y,caxCanvasId:0},Z=typeof wx!="undefined"&&wx.getSystemInfo&&!wx.createCanvas&&wx.createCanvasContext;typeof wx!="undefined"&&wx.getSystemInfo&&wx.createCanvas;function tt({option:t},i){let s=null;if(t.linearGradient&&t.colors){const e=t.linearGradient.length>4?"createRadialGradient":"createLinearGradient";s=i[e](...t.linearGradient);for(let i=0;i<t.colors.length;i++)s.addColorStop(...t.colors[i])}return s||t.fillStyle}function it(t){return JSON.parse(JSON.stringify(t))}const st={shape:"shape",rect:"rect",circle:"circle",line:"line",image:"image",text:"text",group:"group",container:"container"};class et extends K.Graphics{constructor(t,i){if(super(),t=Object.assign({font:"10px sans-serif",color:"black",textAlign:"left",baseline:"top",orientation:"horizontal",lineHeight:0},t),!t.lineHeight){const i=/\d+px/i.exec(t.font);i&&(t.lineHeight=Number.parseFloat(i[0]))}this.option=t||{},this.text=t.text,this.ctx=i?i.getContext("2d"):document.createElement("canvas").getContext("2d")}getWidth(t){var i;this.option.font&&(this.ctx.font=this.option.font);const{width:s}=(i=this.ctx)==null?void 0:i.measureText(`${t||this.text}`);return s||0}getHeight(){return this.renderBreakLine({ctx:this.ctx,isMeasure:!0})}render(t){t.save(),t.fillStyle=tt({option:this.option},this.ctx)||this.option.color,t.font=this.option.font,t.textAlign=this.option.textAlign,t.textBaseline=this.option.baseline,this.option.filter&&(t.filter=this.option.filter),this.option.orientation==="vertical"?this.renderVertical({ctx:t}):this.option.maxWidth&&this.getWidth()>this.option.maxWidth?this.renderBreakLine({ctx:t,symbol:this.option.symbol}):this.fill(t,this.text),t.restore()}fill(t,i="",s=0,e=0){const{actualBoundingBoxDescent:n,width:h}=t.measureText(`${i}`),r=Math.ceil(n);if(this.option.lineDecoration){const{lineSize:n,lineColor:o,lineOffset:a=0,lineOffsetTop:c=0,lineOffsetLeft:u=0,color:l,lineDecoration:f,lineLevel:d}=this.option;d!=="bottom"&&t.fillText(i,s,e);let p=0;switch(f){case"middle":p=r/2;break;case"bottom":p=r;break}t.strokeStyle=o||l||"#222",t.lineWidth=n||2,t.beginPath(),t.moveTo(s+u,p+e+(a||c)),t.lineTo(s+h+u,p+e+(a||c)),t.stroke(),d==="bottom"&&t.fillText(i,s,e)}else t.fillText(i,s,e)}renderVertical({ctx:t}){const i=this.text.split(""),s=i.map((t=>this.getWidth(t))),e=t.textAlign,n=t.textBaseline;let h=0,r=0;const o=this.text;return e==="left"?h=h+Math.max.apply(null,s)/2:e==="right"&&(h=h-Math.max.apply(null,s)/2),n==="bottom"||n==="alphabetic"||n==="ideographic"?r=r-s[0]/2:(n==="top"||n==="hanging")&&(r=r+s[0]/2),t.textAlign="center",t.textBaseline="middle",i.forEach(((i,e)=>{const n=i.charCodeAt(0);n<=256?(t.translate(h,r),t.rotate(90*Math.PI/180),t.translate(-h,-r)):e>0&&o.charCodeAt(e-1)<256&&(r=r+s[e-1]/2),this.fill(t,i,h,r),n<=256&&(t.translate(h,r),t.rotate(-90*Math.PI/180),t.translate(-h,-r));const a=s[e];r=r+a})),t.textAlign=e,t.textBaseline=n,r}renderBreakLine({ctx:t,isMeasure:i=!1,symbol:s="..."}){const e=/\b(?![\u0020-\u002F\u003A-\u003F\u2000-\u206F\u2E00-\u2E7F\u3000-\u303F\uFF00-\uFF1F])|(?=[\u2E80-\u2FFF\u3040-\u9FFF])/g;let n="",h=0,r=1;const o=[];this.option.text.replace(e,(function(){o.push(arguments[arguments.length-2]-1)}));let a=0;for(let e=0;e<this.option.text.length;e++)if(o.includes(e)&&(a=e),n+=[this.option.text[e]],this.getWidth(n)>this.option.maxWidth||this.option.text[e].charCodeAt(0)===10){let o="";if(r===this.option.maxLine&&e!==this.option.text.length?(o=`${n.substring(0,n.length-1)}${s||""}`,n=""):a===e||this.option.text[e].charCodeAt(0)===10?(o=n,n=""):(o=n.substring(0,n.length-(e-a)),n=n.substring(n.length-(e-a),n.length)),this.option.text[e].charCodeAt(0)===10&&(o=o.substring(0,o.length-1)),!i&&this.fill(t,o,0,h,!1),r===this.option.maxLine&&e!==this.option.text.length)break;h+=this.option.lineHeight||0,r++}return n&&!i&&this.fill(t,n,0,h,!1),h+this.option.lineHeight-2}}class nt extends K.Graphics{constructor(t,i){if(super(),t=Object.assign({lineWidth:1,lt:!0,rt:!0,lb:!0,rb:!0},t),this.option=t,this.ctx=i?i.getContext("2d"):document.createElement("canvas").getContext("2d"),this.beginPath(),t.type===st.shape){this.setShape();return}switch(t.type){case st.rect:t.r>0?this.setRoundedRect(t):this.rect(0,0,t.width,t.height);break;case st.circle:{let i=1,s=0;t.angle&&(i=t.angle/360),t.sAngle&&(s=t.sAngle/360),this.arc(0,0,t.r,s*Math.PI*2,i*Math.PI*2,!1);break}case st.line:this.moveTo(0,0),this.lineTo(t.long,0);break}const s=tt({option:t},this.ctx);!("fillStyle"in t)&&!t.strokeStyle&&(t.fillStyle="#FFFFFF"),t.fillStyle?(this.fillStyle(s||t.fillStyle),this.fill()):t.strokeStyle&&(this.lineWidth(t.lineWidth),this.lineCap(t.lineCap),this.strokeStyle(s||t.strokeStyle),this.stroke())}render(t){t.setLineDash(this.option.lineDash||[]),t.lineDashOffset=this.option.lineDashOffset||0,this.option.filter&&(t.filter=this.option.filter),super.render(t)}setRoundedRect(t){const i=t.r,s=t.r,e=0,n=t.width,h=0,r=t.width,o=t.height,a=0,c=t.height,u=0,l=0;this.moveTo(s,e),t.rt?this.arcTo(n,h,r,o,i):this.lineTo(n,h),t.rb?this.arcTo(r,o,a,c,i):this.lineTo(r,o),t.lb?this.arcTo(a,c,u,l,i):this.lineTo(a,c),t.lt?this.arcTo(u,l,s,e,i):this.lineTo(u,l)}setShape(){const{ctx:t,option:i}=this;t.save();for(const t of i.cmds){const[i,s=[]]=t;this[i](...s)}t.restore()}}const ht={lfit:0,mfit:2,fill:1,pad:4,fixed:5};function rt(t,i={}){if(!t||typeof t!="string")return"";if(at(t))return t;const s=ct(t)||{},e={mode:"fill",limit:0,rate:1,quality:90,webp:!1,...i};let n=!1;const h=[],r=s.params?`&${s.params}`:"";let o=[`?t1t=poster${r}&x-oss-process=image/resize`,`m_${e.mode}`,`limit_${e.limit}`];if(e.oss==="qiniu"||ot(t))n=!0,o=[`?t1t=poster${r}&imageView2`,ht[e.mode],"ignore-error",1],e.width&&o.push("w",e.width*e.rate),e.height&&o.push("h",e.height*e.rate),e.quality&&o.push("q",e.quality||100),e.webp&&o.push("format","webp");else{if(e.color&&o.push(`color_${e.color.replace(/^#/,"")}`),e.width&&o.push(`w_${e.width*e.rate}`),e.height&&o.push(`h_${e.height*e.rate}`),e.l&&o.push(`l_${e.l}`),e.s&&o.push(`s_${e.s}`),e.p&&o.push(`p_${e.p}`),e.quality&&h.push(`quality,q_${e.quality}`),e.blur){const[t=0,i=0]=e.blur||[];h.push(`blur,r_${t},s_${i||t}`)}e.webp&&h.push("format,webp")}return`${s.url}${o.join(n?"/":",")}/${h.join("/")}`}function ot(t){return/^https?:\/\/xs\.c3tech\.cn/.test(t)}function at(t){return!/^http/.test(t)}function ct(t,i=["x-oss-process=image","imageView2","imageView1","t1t"]){const s=t.match(/(.*)\?(.*)/)||[];if(s.length){const e=(s[2]||"").split("&")||[];return{origin:t,url:(s[1]||t).replace(/[!|#].*/,""),params:e.map((t=>(~t.indexOf("source")&&(t=t.match(/source=\d+/)[0]),i.some((i=>~t.indexOf(i)))?null:t))).filter((t=>t&&~t.indexOf("="))).join("&")}}return{url:t}}const ut=new u;let lt=null,ft=null,dt=null;const pt=new Map;let wt=new Map;const mt=[];async function gt(t,i,s=null,e,n){const h=ut.parse(Object.assign({scale:1},it(t)));ft=typeof i=="string"?i:Array.isArray(i)?i[0].node:i;const r=[h.model.width*h.model.scale,h.model.height*h.model.scale,ft];lt=Z?new K.Stage(...r,s):new K.Stage(...r),lt.scale=h.model.scale,dt=await Ft();let o=null;const a=[],c=[];h.all().forEach(((t,i)=>{if(t.model.hidden){t.drop();return}let s=t.model;if(s.url&&(s=Lt(s),c.includes(s.url)||(c.push(s.url),a.push(Ct(s.url)))),s.fonts&&mt.push(...It(s.fonts)),s.type===st.group||i===0){if(s.url){const i={type:st.image,width:s.width,height:s.height,url:s.url,decorate:!0};t.addChildAtIndex(ut.parse(i),0)}else if(s.fillStyle){const e=it(s);delete e.children,e.type=st.rect,e.x=0,e.y=0,e.decorate=!0,i===0&&(o=e),t.addChildAtIndex(ut.parse(e),0)}}})),Promise.all([...a,...mt]).then((t=>{t.forEach((({url:t,bitmap:i,family:s,source:e})=>{t?wt.set(t,i):s&&pt.set(s,e)})),!(Z&&s&&s.data.preload)&&($t(h),!Z&&ft&&(ft.width=h.model.width,ft.height=h.model.height),n&&n(h.model),o&&(o.height=h.model.height),lt.add(bt({option:h.model})),setTimeout((()=>{lt.update(),e&&e(h.model)}),100))}))}function vt(){wt=new Map}function bt({option:t,parent:i}){const s=new K.Group;return t.width&&(s.width=t.width),t.height&&(s.height=t.height),kt(s,t,i),t.children&&t.children.forEach((t=>{let i=null;const e={option:t,parent:s};switch(t.type){case st.group:case st.container:i=bt(e);break;case st.rect:case st.circle:case st.line:case st.shape:i=yt(e);break;case st.image:i=xt(e);break;case st.text:i=At(e);break}i&&s.add(i)})),s}function yt({option:t,parent:i}){const s=new nt(t,ft);return kt(s,t,i),Mt(s,t),s}function xt({option:t,parent:i}){const s=wt.get(t.url);if(s){const e=s.used?s.clone(s.img):s;s.used=!0,e.scale=t.width/e.width,t.filter&&(e.filterStyle=t.filter),kt(e,t,i),Mt(e,t);const n=e.width,h=t.height?t.height/e.scale:e.height;t.isCenter&&e.width!==t.width&&e.height!==t.height&&(e.width>e.height?(e.y=0,e.x+=Math.round((e.width-t.width)/-2)):(e.x=0,e.y+=Math.round((e.height-t.height)/-2)));const r=new nt({...t,width:n,height:h,r:t.isCircular?t.width/e.scale/2:t.r/e.scale||0,type:"rect",fillStyle:""},ft);return e.clip(r),e}return null}function At({option:t,parent:i}){const s=new et(t,ft);return t.shadow&&(s.shadow=t.shadow),kt(s,t,i),Mt(s,t),s}function Mt(t,i){if(!i.rotation)return;let s,e=0;switch(i.type){case st.image:s=t.width,e=t.height,t.x+=s/2*t.scale,t.y+=e/2*t.scale;break;case st.text:s=t.getWidth(),s>i.maxWidth&&(s=i.maxWidth),e=t.getHeight(),t.x+=s/2,t.y+=e/2;break;default:s=i.width,e=i.height,t.x+=s/2,t.y+=e/2;break}t.originX=s/2,t.originY=e/2,t.rotation=i.rotation}function kt(t,i,s){St({ele:t,option:i,value:"x",parent:s}),St({ele:t,option:i,value:"y",parent:s})}function St({ele:t,option:i,value:s,parent:e}){switch(i[s]){case"center":switch(i.type){case st.image:t[s]=(e.width-t.width*t.scale)/2;break;case st.text:t[s]=(e.width-t.getWidth())/2;break}break;case"bottom":switch(i.type){case st.image:t[s]=e.height-t.height*t.scale;break;case st.rect:case st.group:t[s]=e.height-i.height;break}break;default:switch(i.type){case st.circle:t[s]=i[s]+i.r;break;default:t[s]=i[s]||0;break}}}async function Ft(){const t=await new Promise(((t,i)=>{if(!Z)return t(!1);const s=Z?ft.createImage():new Image;s.onload=function(){t(!0)},s.onerror=function(){t(!1)},s.src="data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA"})).then();return function(){return t}}function Ct(t){return new Promise((i=>{if(Z){const s=ft.createImage();s.onload=()=>{new K.Bitmap(s,(function(){i({url:t,bitmap:this})}))},s.onerror=s=>{console.log(s),i({url:t,bitmap:null})},s.crossOrigin="Anonymous",s.src=t}else{const s=new Image;s.onload=function(){new K.Bitmap(s,(function(){i({url:t,bitmap:this})}))},s.onerror=function(s){console.error(s),i({url:t,bitmap:null})},s.setAttribute("crossOrigin","Anonymous"),s.src=t}}))}function It(t=[]){const i=Array.isArray(t)?t:[t],s=[];for(const t of i)pt.get(t.family)||s.push(new Promise((i=>{Z?wx.loadFontFace({family:t.family,source:t.source,scopes:["webview","native"],success(){i(t)},fail(s){console.log("loadFontFace: ",t,s),i(t)}}):new FontFace(t.family,`url(${t.source})`).load().then((()=>{i(t)})).catch((s=>{console.log("loadFontFace: ",t,s),i(t)}))})));return s}function Pt(t){switch(t.type){case st.text:{const i=new et(t,ft),s=t.width||Math.round(i.getWidth()),e=Math.round(i.getHeight());return{...t,width:t.maxWidth?Math.min(t.maxWidth,s):s,height:t.height||e||0}}default:return t.decorate?{}:{...t}}}function $t(t){t.all().reverse().forEach((t=>{var i;const s=t.model;let e=0;if(s.type===st.text&&s.height==="auto"){const t=new et(s,ft);e+=t.getHeight()-(s.uiHeight||0)}if(s.type===st.image&&s.maxHeight&&s.height==="auto"){const t=wt.get(s.url);if(t){const i=s.width/t.img.width,n=Math.min(Math.round(i*t.img.height),s.maxHeight);s.height=n,e+=n-s.maxHeight}}if(s.type===st.container){s.x=s.x||0,s.y=s.y||0,s.paddingTop=s.paddingTop||0,s.paddingBottom=s.paddingBottom||0,s.paddingLeft=s.paddingLeft||0,s.paddingRight=s.paddingRight||0;const i=t.parent&&t.parent.model||{};if(!s.width&&i.width&&(s.width=i.width-s.x*2),s.height&&(e+=s.height+s.paddingTop+s.paddingBottom),s.children.every((t=>t.height))){const t={x:s.paddingLeft,y:s.paddingTop},i=[];s.children.filter((t=>{var i;return t.type==="group"&&((i=t.children)==null?void 0:i.length)})).forEach(((e,n)=>{e.x=e.x||0,e.y=e.y||0,e.width=e.width||s.width;const h=e.x+e.width,r=e.y+e.height;n===0&&i.push(r),t.x+h<=s.width||n===0?(e.x=t.x+e.x,e.y=t.y+e.y,t.x+=h):(t.y=i.reduce(((t,i)=>t+i),0),i.push(r),t.x=s.paddingLeft,e.x=t.x+e.x,e.y=t.y+e.y,t.x+=e.x+e.width)})),s.height||(s.height=i.reduce(((t,i)=>t+i),0)+s.paddingTop+s.paddingBottom,e+=s.height)}if(s.fillStyle){const t=it(s);delete t.children,t.type=st.rect,t.x=0,t.y=0,t.height=s.height,t.decorate=!0,s.children.unshift(t)}}if(s.type===st.group&&["row","justify","column"].includes(s.display)){const n={x:0,y:0,maxHeight:0,maxWidth:0,index:0};let h=null;if(s.children.forEach((t=>{t.decorate&&!h&&(h=t),t.x=t.x||0,t.y=t.y||0;const i=Pt(t)||{};i.x=i.x||0,i.y=i.y||0,t.width=i.width,t.height=i.height;let r=!1;switch(t.auto&&!(t.children||[]).filter((t=>!t.decorate)).length&&!t.text&&!t.url&&(r=!0,t={x:0,y:0,width:0,height:0}),s.display){case"justify":case"row":{!n.index&&s.display==="justify"&&(t.x=0),r||(t.x+=n.x,n.x+=i.x+(i.width||0),n.maxHeight=Math.max(i.height,n.maxHeight),n.maxWidth=Math.max(i.width,n.maxWidth),h||n.index++);break}case"column":{let s=0;r&&(s-=i.height+i.y,e-=i.height),t.y+=n.y+s,n.y+=i.y+(i.height||0)+s,n.maxWidth=Math.max(i.width,n.maxWidth),n.maxHeight=Math.max(i.height,n.maxHeight);break}}})),n.maxWidth&&!s.width&&t.parent.model.type!=="container"&&(s.width=n.maxWidth),s.height||(["row","justify"].includes(s.display)&&n.maxHeight?s.height=n.maxHeight:s.height=n.y),h&&s.height&&s.width&&(h.height=s.height,h.width=s.width),["row","justify"].includes(s.display)&&(["center","right"].includes(s.align)&&s.width&&(s.x=s.align==="center"?(s.width-n.x+s.x*2)/2:s.x+s.width-n.x),["middle","bottom"].includes(s.vertical)&&s.height&&((i=s.children)!=null&&i.length))){let t=0;s.children.forEach((i=>{switch(s.vertical){case"middle":{t=(s.height-i.height)/2;break}case"bottom":{t=s.height-i.height;break}}i.y+=t}))}}e&&t.getPath().forEach(((t,i)=>{if(i===0)t.model.height+=e;else{const i=t.parent;i.children.slice(t.getIndex()+1,i.children.length).forEach((t=>{!t.model.pin&&!Number.isNaN(Number.parseInt(t.model.y))&&t.parent.model.display!=="column"&&(t.model.y+=e)}))}}))})),t.model.minHeight&&t.model.height<t.model.minHeight&&(t.model.height=t.model.minHeight)}function Lt(t){const i=t.ratio||1;return!t.height||t.height==="auto"?t.url=rt(t.url,{mode:"mfit",width:t.width*i,webp:dt==null?void 0:dt()}):t.url=rt(t.url,{width:t.width*i,height:t.height*i,webp:dt==null?void 0:dt()}),t}const Ot={draw:gt,clear:vt,loadFonts:It,imageOSSResize:rt};const Rt=".zan-poster{width:100%;display:flex;align-items:center;justify-content:center;position:relative}.zan-poster .preview-image{width:100%;max-width:500px;height:auto;object-fit:contain}.zan-poster .drawer{position:absolute;left:110vw;top:0;pointer-events:none;opacity:0}";const Tt=Rt;const _t="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";const jt=class{constructor(s){t(this,s);this.change=i(this,"change",7);this.ready=i(this,"ready",7);this.painting=null;this.preload=false;this.showCanvas=false;this.showLoading=true;this.isSave=true;this.base64=true;this.sync=true;this.canvasList=[];this.canvasId=`canvasId-${(new Date).getTime()}`;this.canvas=null;this.isPainting=false;this.readying=false;this.syncPainting=true;this.imgUrl="";this.success=undefined;this.fail=undefined}watchPaintingHandler(t){this.setValue(t);this.start()}watchSyncHandler(t){this.syncPainting=t}setValue(t){const i=Array.isArray(t)?t:[t];if(t&&i.length&&i.every((t=>t&&t.width&&t.height))&&!this.isPainting){this.canvasList=i}}changeHandler(t){this.change.emit(t)}readyHandler(){this.ready.emit()}async draw(t){this.setValue(t.painting);if(typeof t.sync!=="undefined"){this.syncPainting=!(!t.sync&&t.success)}this.success=t.success;this.fail=t.fail;return await this.start()}componentWillLoad(){this.readying=true;this.readyHandler()}async start(){if(this.isPainting){return}const t=this.canvasList;const i=t.length;const s=Array(i).fill({tempFilePath:_t});const e=[];this.isPainting=true;for(let n=0;n<i;n++){const i=t[n];await this.drawer(i).then((t=>{s.splice(n,1,t);if(!this.syncPainting){this.submitSuccess(s)}})).catch((t=>{console.log(t);e.push(t)}))}this.isPainting=false;if(s.length){this.syncPainting&&this.submitSuccess(s);this.success=null;this.fail=null;this.canvasList=[];this.syncPainting=this.sync;return s}else{this.fail&&this.fail(e);this.success=null;this.fail=null;this.canvasList=[];this.syncPainting=this.sync;return e[0]}}submitSuccess(t){this.success&&this.success(t);this.changeHandler(t)}async drawer(t){return new Promise(((i,s)=>{const e=setInterval((()=>{if(t&&this.readying&&this.canvas){clearInterval(e);try{Ot.draw(t,this.canvas,{data:{preload:this.preload}},(()=>{setTimeout((()=>{this.isSave&&this.saveImage().then(i).catch(s)}))}),(t=>{this.canvas.width=t.width;this.canvas.height=t.height}))}catch(t){console.log(t);s(t)}}else{this.canvas=this.el.shadowRoot.querySelector(".drawer")}}),50)}))}async saveImage(){return new Promise(((t,i)=>{if(this.base64){this.imgUrl=this.canvas.toDataURL("image/png");t({tempFilePath:this.imgUrl,errMsg:"drawer:ok",width:this.canvas.width,height:this.canvas.height});return}this.canvas.toBlob((s=>{this.imgUrl=URL.createObjectURL(s);if(this.imgUrl){t({tempFilePath:this.imgUrl,errMsg:"drawer:ok",width:this.canvas.width,height:this.canvas.height})}else{i({errMsg:"drawer:fail"})}}))}))}imageHandler(){if(this.imgUrl){URL.revokeObjectURL(this.imgUrl)}}render(){return s("div",{key:"c96428627778c4f07daa08e52f3de9446894dfa2",class:"zan-poster",style:{overflow:this.showCanvas?"auto":"hidden"}},s("canvas",{key:"73fa941a8a9034b806733bff6582807494d47dd5",id:this.canvasId,class:"drawer"}),this.imgUrl&&this.showCanvas&&s("img",{key:"b8b730db34f06b6212857fede01924269c5c4a05",src:this.imgUrl,class:"preview-image",onLoad:this.imageHandler}))}get el(){return e(this)}static get watchers(){return{painting:["watchPaintingHandler"],sync:["watchSyncHandler"]}}};jt.style=Tt;export{jt as zan_poster};
//# sourceMappingURL=zan-poster.entry.js.map