@agent-play/play-ui 3.6.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{S as H,b as L,G as B,c as U,D as y,d as S,g as b,n as R,f as j,M as V,B as P,h as F,E as C,i as N,j as $,k as I,l as J,R as K,w as Q,e as E}from"./index-BN8bwUYb.js";const W=class k extends H{constructor(e){e={...k.defaultOptions,...e},super(e),this.enabled=!0,this._state=L.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.clipToViewport=e.clipToViewport,this.addResource("uTexture",0,1),e.blendRequired&&this.addResource("uBackTexture",0,3)}apply(e,t,n,r){e.applyFilter(this,t,n,r)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:n,...r}=e;let i,a;return t&&(i=B.from(t)),n&&(a=U.from(n)),new k({gpuProgram:i,glProgram:a,...r})}};W.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1,clipToViewport:!0};let Z=W,w;function M(c){const e=y.get().createCanvas(6,1),t=e.getContext("2d");return t.fillStyle=c,t.fillRect(0,0,6,1),e}function ee(){if(w!==void 0)return w;try{const c=M("#ff00ff"),e=M("#ffff00"),n=y.get().createCanvas(6,1).getContext("2d");n.globalCompositeOperation="multiply",n.drawImage(c,0,0),n.drawImage(e,2,0);const r=n.getImageData(2,0,1,1);if(!r)w=!1;else{const i=r.data;w=i[0]===255&&i[1]===0&&i[2]===0}}catch{w=!1}return w}const p={canvas:null,convertTintToImage:!1,cacheStepsPerColorChannel:8,canUseMultiply:ee(),tintMethod:null,_canvasSourceCache:new WeakMap,_unpremultipliedCache:new WeakMap,getCanvasSource:c=>{const e=c.source,t=e==null?void 0:e.resource;if(!t)return null;const n=e.alphaMode==="premultiplied-alpha",r=e.resourceWidth??e.pixelWidth,i=e.resourceHeight??e.pixelHeight,a=r!==e.pixelWidth||i!==e.pixelHeight;if(n){if((t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas)&&!a)return t;const s=p._unpremultipliedCache.get(e);if((s==null?void 0:s.resourceId)===e._resourceId)return s.canvas}if(t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array||t instanceof Uint16Array||t instanceof Int16Array||t instanceof Uint32Array||t instanceof Int32Array||t instanceof Float32Array||t instanceof ArrayBuffer){const s=p._canvasSourceCache.get(e);if((s==null?void 0:s.resourceId)===e._resourceId)return s.canvas;const o=y.get().createCanvas(e.pixelWidth,e.pixelHeight),l=o.getContext("2d"),d=l.createImageData(e.pixelWidth,e.pixelHeight),u=d.data,h=t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(e.format==="bgra8unorm")for(let f=0;f<u.length&&f+3<h.length;f+=4)u[f]=h[f+2],u[f+1]=h[f+1],u[f+2]=h[f],u[f+3]=h[f+3];else u.set(h.subarray(0,u.length));return l.putImageData(d,0,0),p._canvasSourceCache.set(e,{canvas:o,resourceId:e._resourceId}),o}if(n){const s=y.get().createCanvas(e.pixelWidth,e.pixelHeight),o=s.getContext("2d",{willReadFrequently:!0});s.width=e.pixelWidth,s.height=e.pixelHeight,o.drawImage(t,0,0);const l=o.getImageData(0,0,s.width,s.height),d=l.data;for(let u=0;u<d.length;u+=4){const h=d[u+3];if(h>0){const f=255/h;d[u]=Math.min(255,d[u]*f+.5),d[u+1]=Math.min(255,d[u+1]*f+.5),d[u+2]=Math.min(255,d[u+2]*f+.5)}}return o.putImageData(l,0,0),p._unpremultipliedCache.set(e,{canvas:s,resourceId:e._resourceId}),s}if(a){const s=p._canvasSourceCache.get(e);if((s==null?void 0:s.resourceId)===e._resourceId)return s.canvas;const o=y.get().createCanvas(e.pixelWidth,e.pixelHeight),l=o.getContext("2d");return o.width=e.pixelWidth,o.height=e.pixelHeight,l.drawImage(t,0,0),p._canvasSourceCache.set(e,{canvas:o,resourceId:e._resourceId}),o}return t},getTintedCanvas:(c,e)=>{const t=c.texture,n=S.shared.setValue(e).toHex(),r=t.tintCache||(t.tintCache={}),i=r[n],a=t.source._resourceId;if((i==null?void 0:i.tintId)===a)return i;const s=i&&"getContext"in i?i:y.get().createCanvas();return p.tintMethod(t,e,s),s.tintId=a,r[n]=s,r[n]},getTintedPattern:(c,e)=>{const t=S.shared.setValue(e).toHex(),n=c.patternCache||(c.patternCache={}),r=c.source._resourceId;let i=n[t];return(i==null?void 0:i.tintId)===r||(p.canvas||(p.canvas=y.get().createCanvas()),p.tintMethod(c,e,p.canvas),i=p.canvas.getContext("2d").createPattern(p.canvas,"repeat"),i.tintId=r,n[t]=i),i},applyPatternTransform:(c,e,t=!0)=>{if(!e)return;const n=c;if(!n.setTransform)return;const r=globalThis.DOMMatrix;if(!r)return;const i=new r([e.a,e.b,e.c,e.d,e.tx,e.ty]);n.setTransform(t?i.inverse():i)},tintWithMultiply:(c,e,t)=>{const n=t.getContext("2d"),r=c.frame.clone(),i=c.source._resolution??c.source.resolution??1,a=c.rotate;r.x*=i,r.y*=i,r.width*=i,r.height*=i;const s=b.isVertical(a),o=s?r.height:r.width,l=s?r.width:r.height;t.width=Math.ceil(o),t.height=Math.ceil(l),n.save(),n.fillStyle=S.shared.setValue(e).toHex(),n.fillRect(0,0,o,l),n.globalCompositeOperation="multiply";const d=p.getCanvasSource(c);if(!d){n.restore();return}a&&p._applyInverseRotation(n,a,r.width,r.height),n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.globalCompositeOperation="destination-atop",n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.restore()},tintWithOverlay:(c,e,t)=>{const n=t.getContext("2d"),r=c.frame.clone(),i=c.source._resolution??c.source.resolution??1,a=c.rotate;r.x*=i,r.y*=i,r.width*=i,r.height*=i;const s=b.isVertical(a),o=s?r.height:r.width,l=s?r.width:r.height;t.width=Math.ceil(o),t.height=Math.ceil(l),n.save(),n.globalCompositeOperation="copy",n.fillStyle=S.shared.setValue(e).toHex(),n.fillRect(0,0,o,l),n.globalCompositeOperation="destination-atop";const d=p.getCanvasSource(c);if(!d){n.restore();return}a&&p._applyInverseRotation(n,a,r.width,r.height),n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.restore()},tintWithPerPixel:(c,e,t)=>{const n=t.getContext("2d"),r=c.frame.clone(),i=c.source._resolution??c.source.resolution??1,a=c.rotate;r.x*=i,r.y*=i,r.width*=i,r.height*=i;const s=b.isVertical(a),o=s?r.height:r.width,l=s?r.width:r.height;t.width=Math.ceil(o),t.height=Math.ceil(l),n.save(),n.globalCompositeOperation="copy";const d=p.getCanvasSource(c);if(!d){n.restore();return}a&&p._applyInverseRotation(n,a,r.width,r.height),n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.restore();const u=e>>16&255,h=e>>8&255,f=e&255,m=n.getImageData(0,0,o,l),g=m.data;for(let x=0;x<g.length;x+=4)g[x]=g[x]*u/255,g[x+1]=g[x+1]*h/255,g[x+2]=g[x+2]*f/255;n.putImageData(m,0,0)},_applyInverseRotation:(c,e,t,n)=>{const r=b.inv(e),i=b.uX(r),a=b.uY(r),s=b.vX(r),o=b.vY(r),l=-Math.min(0,i*t,s*n,i*t+s*n),d=-Math.min(0,a*t,o*n,a*t+o*n);c.transform(i,a,s,o,l,d)}};p.tintMethod=p.canUseMultiply?p.tintWithMultiply:p.tintWithPerPixel;class te{constructor(e){this._canvasPool=Object.create(null),this.canvasOptions=e||{},this.enableFullScreen=!1}_createCanvasAndContext(e,t){const n=y.get().createCanvas();n.width=e,n.height=t;const r=n.getContext("2d");return{canvas:n,context:r}}getOptimalCanvasAndContext(e,t,n=1){e=Math.ceil(e*n-1e-6),t=Math.ceil(t*n-1e-6),e=R(e),t=R(t);const r=(e<<17)+(t<<1);this._canvasPool[r]||(this._canvasPool[r]=[]);let i=this._canvasPool[r].pop();return i||(i=this._createCanvasAndContext(e,t)),i}returnCanvasAndContext(e){const t=e.canvas,{width:n,height:r}=t,i=(n<<17)+(r<<1);e.context.resetTransform(),e.context.clearRect(0,0,n,r),this._canvasPool[i].push(e)}clear(){this._canvasPool={}}}const z=new te;j.register(z);const O=new V;function Y(c,e){e.clear();const t=e.matrix;for(let n=0;n<c.length;n++){const r=c[n];if(r.globalDisplayStatus<7)continue;const i=r.renderGroup??r.parentRenderGroup;i!=null&&i.isCachedAsTexture?e.matrix=O.copyFrom(i.textureOffsetInverseTransform).append(r.worldTransform):i!=null&&i._parentCacheAsTextureRenderGroup?e.matrix=O.copyFrom(i._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(r.groupTransform):e.matrix=r.worldTransform,e.addBounds(r.bounds)}return e.matrix=t,e}const re=new P;function ne(c,e,t,n,r=!1){const i=re;i.minX=0,i.minY=0,i.maxX=c.width/n|0,i.maxY=c.height/n|0;const a=F.getOptimalTexture(i.width,i.height,n,!1,r);return a.source.uploadMethodId="image",a.source.resource=c,a.source.alphaMode="premultiply-alpha-on-upload",a.frame.width=e/n,a.frame.height=t/n,a.source.emit("update",a.source),a.updateUvs(),a}function G(c){return typeof c.getCanvasFilterString=="function"}class ie{constructor(){this.skip=!1,this.useClip=!1,this.filters=null,this.container=null,this.bounds=new P,this.cssFilterString=""}}class q{constructor(e){this._filterStack=[],this._filterStackIndex=0,this._savedStates=[],this._alphaMultiplier=1,this._warnedFilterTypes=new Set,this.renderer=e}push(e){const t=this._pushFilterFrame(),n=e.filterEffect.filters;if(t.skip=!1,t.useClip=!1,t.filters=n,t.container=e.container,t.cssFilterString="",n.every(o=>!o.enabled)){t.skip=!0;return}const r=[],i=1;for(const o of n){if(!o.enabled)continue;if(!G(o)){this._warnUnsupportedFilter(o);continue}const l=o.getCanvasFilterString();if(l===null){this._warnUnsupportedFilter(o);continue}l&&r.push(l)}if(r.length===0&&i===1){t.skip=!0;return}t.cssFilterString=r.join(" "),this._calculateFilterArea(e,t.bounds),t.useClip=!!e.filterEffect.filterArea;const a=this.renderer.canvasContext.activeContext,s=a.filter||"none";if(this._savedStates.push({filter:s,alphaMultiplier:this._alphaMultiplier}),t.useClip&&Number.isFinite(t.bounds.width)&&Number.isFinite(t.bounds.height)&&t.bounds.width>0&&t.bounds.height>0){const o=this.renderer.canvasContext.activeResolution||1;a.save(),a.setTransform(1,0,0,1,0,0),a.beginPath(),a.rect(t.bounds.x*o,t.bounds.y*o,t.bounds.width*o,t.bounds.height*o),a.clip()}else t.useClip=!1;t.cssFilterString&&(a.filter=s!=="none"?`${s} ${t.cssFilterString}`:t.cssFilterString)}pop(){const e=this._popFilterFrame();if(e.skip)return;const t=this._savedStates.pop();if(!t)return;const n=this.renderer.canvasContext.activeContext;e.useClip?n.restore():n.filter=t.filter,this._alphaMultiplier=t.alphaMultiplier}generateFilteredTexture({texture:e,filters:t}){if(!(t!=null&&t.length)||t.every(v=>!v.enabled))return e;const n=[],r=1;for(const v of t){if(!v.enabled)continue;if(!G(v)){this._warnUnsupportedFilter(v);continue}const T=v.getCanvasFilterString();if(T===null){this._warnUnsupportedFilter(v);continue}T&&n.push(T)}if(n.length===0&&r===1)return e;const i=p.getCanvasSource(e);if(!i)return e;const a=e.frame,s=e.source._resolution??e.source.resolution??1,o=a.width,l=a.height,d=z.getOptimalCanvasAndContext(o,l,s),{canvas:u,context:h}=d;h.setTransform(1,0,0,1,0,0),h.clearRect(0,0,u.width,u.height),n.length&&(h.filter=n.join(" "));const f=a.x*s,m=a.y*s,g=o*s,x=l*s;return h.drawImage(i,f,m,g,x,0,0,g,x),h.filter="none",h.globalAlpha=1,ne(u,o,l,s)}_calculateFilterArea(e,t){if(e.renderables?Y(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){const n=e.container.renderGroup||e.container.parentRenderGroup,r=n==null?void 0:n.cacheToLocalTransform;r&&t.applyMatrix(r)}}_warnUnsupportedFilter(e){var n;const t=((n=e==null?void 0:e.constructor)==null?void 0:n.name)||"Filter";this._warnedFilterTypes.has(t)||(this._warnedFilterTypes.add(t),console.warn(`CanvasRenderer: filter "${t}" is not supported in Canvas2D and will be skipped.`))}get alphaMultiplier(){return this._alphaMultiplier}_pushFilterFrame(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new ie),this._filterStackIndex++,e}_popFilterFrame(){return this._filterStackIndex<=0?this._filterStack[0]:(this._filterStackIndex--,this._filterStack[this._filterStackIndex])}destroy(){this._filterStack=null,this._savedStates=null,this._warnedFilterTypes=null,this._alphaMultiplier=1}}q.extension={type:[C.CanvasSystem],name:"filter"};var ae=`in vec2 aPosition;
1
+ import{S as H,b as L,G as B,c as U,D as y,d as S,g as b,n as R,f as j,M as V,B as P,h as F,E as C,i as N,j as $,k as I,l as J,R as K,w as Q,e as E}from"./index-dcrq2zGS.js";const W=class k extends H{constructor(e){e={...k.defaultOptions,...e},super(e),this.enabled=!0,this._state=L.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.clipToViewport=e.clipToViewport,this.addResource("uTexture",0,1),e.blendRequired&&this.addResource("uBackTexture",0,3)}apply(e,t,n,r){e.applyFilter(this,t,n,r)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:n,...r}=e;let i,a;return t&&(i=B.from(t)),n&&(a=U.from(n)),new k({gpuProgram:i,glProgram:a,...r})}};W.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1,clipToViewport:!0};let Z=W,w;function M(c){const e=y.get().createCanvas(6,1),t=e.getContext("2d");return t.fillStyle=c,t.fillRect(0,0,6,1),e}function ee(){if(w!==void 0)return w;try{const c=M("#ff00ff"),e=M("#ffff00"),n=y.get().createCanvas(6,1).getContext("2d");n.globalCompositeOperation="multiply",n.drawImage(c,0,0),n.drawImage(e,2,0);const r=n.getImageData(2,0,1,1);if(!r)w=!1;else{const i=r.data;w=i[0]===255&&i[1]===0&&i[2]===0}}catch{w=!1}return w}const p={canvas:null,convertTintToImage:!1,cacheStepsPerColorChannel:8,canUseMultiply:ee(),tintMethod:null,_canvasSourceCache:new WeakMap,_unpremultipliedCache:new WeakMap,getCanvasSource:c=>{const e=c.source,t=e==null?void 0:e.resource;if(!t)return null;const n=e.alphaMode==="premultiplied-alpha",r=e.resourceWidth??e.pixelWidth,i=e.resourceHeight??e.pixelHeight,a=r!==e.pixelWidth||i!==e.pixelHeight;if(n){if((t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas)&&!a)return t;const s=p._unpremultipliedCache.get(e);if((s==null?void 0:s.resourceId)===e._resourceId)return s.canvas}if(t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array||t instanceof Uint16Array||t instanceof Int16Array||t instanceof Uint32Array||t instanceof Int32Array||t instanceof Float32Array||t instanceof ArrayBuffer){const s=p._canvasSourceCache.get(e);if((s==null?void 0:s.resourceId)===e._resourceId)return s.canvas;const o=y.get().createCanvas(e.pixelWidth,e.pixelHeight),l=o.getContext("2d"),d=l.createImageData(e.pixelWidth,e.pixelHeight),u=d.data,h=t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength);if(e.format==="bgra8unorm")for(let f=0;f<u.length&&f+3<h.length;f+=4)u[f]=h[f+2],u[f+1]=h[f+1],u[f+2]=h[f],u[f+3]=h[f+3];else u.set(h.subarray(0,u.length));return l.putImageData(d,0,0),p._canvasSourceCache.set(e,{canvas:o,resourceId:e._resourceId}),o}if(n){const s=y.get().createCanvas(e.pixelWidth,e.pixelHeight),o=s.getContext("2d",{willReadFrequently:!0});s.width=e.pixelWidth,s.height=e.pixelHeight,o.drawImage(t,0,0);const l=o.getImageData(0,0,s.width,s.height),d=l.data;for(let u=0;u<d.length;u+=4){const h=d[u+3];if(h>0){const f=255/h;d[u]=Math.min(255,d[u]*f+.5),d[u+1]=Math.min(255,d[u+1]*f+.5),d[u+2]=Math.min(255,d[u+2]*f+.5)}}return o.putImageData(l,0,0),p._unpremultipliedCache.set(e,{canvas:s,resourceId:e._resourceId}),s}if(a){const s=p._canvasSourceCache.get(e);if((s==null?void 0:s.resourceId)===e._resourceId)return s.canvas;const o=y.get().createCanvas(e.pixelWidth,e.pixelHeight),l=o.getContext("2d");return o.width=e.pixelWidth,o.height=e.pixelHeight,l.drawImage(t,0,0),p._canvasSourceCache.set(e,{canvas:o,resourceId:e._resourceId}),o}return t},getTintedCanvas:(c,e)=>{const t=c.texture,n=S.shared.setValue(e).toHex(),r=t.tintCache||(t.tintCache={}),i=r[n],a=t.source._resourceId;if((i==null?void 0:i.tintId)===a)return i;const s=i&&"getContext"in i?i:y.get().createCanvas();return p.tintMethod(t,e,s),s.tintId=a,r[n]=s,r[n]},getTintedPattern:(c,e)=>{const t=S.shared.setValue(e).toHex(),n=c.patternCache||(c.patternCache={}),r=c.source._resourceId;let i=n[t];return(i==null?void 0:i.tintId)===r||(p.canvas||(p.canvas=y.get().createCanvas()),p.tintMethod(c,e,p.canvas),i=p.canvas.getContext("2d").createPattern(p.canvas,"repeat"),i.tintId=r,n[t]=i),i},applyPatternTransform:(c,e,t=!0)=>{if(!e)return;const n=c;if(!n.setTransform)return;const r=globalThis.DOMMatrix;if(!r)return;const i=new r([e.a,e.b,e.c,e.d,e.tx,e.ty]);n.setTransform(t?i.inverse():i)},tintWithMultiply:(c,e,t)=>{const n=t.getContext("2d"),r=c.frame.clone(),i=c.source._resolution??c.source.resolution??1,a=c.rotate;r.x*=i,r.y*=i,r.width*=i,r.height*=i;const s=b.isVertical(a),o=s?r.height:r.width,l=s?r.width:r.height;t.width=Math.ceil(o),t.height=Math.ceil(l),n.save(),n.fillStyle=S.shared.setValue(e).toHex(),n.fillRect(0,0,o,l),n.globalCompositeOperation="multiply";const d=p.getCanvasSource(c);if(!d){n.restore();return}a&&p._applyInverseRotation(n,a,r.width,r.height),n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.globalCompositeOperation="destination-atop",n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.restore()},tintWithOverlay:(c,e,t)=>{const n=t.getContext("2d"),r=c.frame.clone(),i=c.source._resolution??c.source.resolution??1,a=c.rotate;r.x*=i,r.y*=i,r.width*=i,r.height*=i;const s=b.isVertical(a),o=s?r.height:r.width,l=s?r.width:r.height;t.width=Math.ceil(o),t.height=Math.ceil(l),n.save(),n.globalCompositeOperation="copy",n.fillStyle=S.shared.setValue(e).toHex(),n.fillRect(0,0,o,l),n.globalCompositeOperation="destination-atop";const d=p.getCanvasSource(c);if(!d){n.restore();return}a&&p._applyInverseRotation(n,a,r.width,r.height),n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.restore()},tintWithPerPixel:(c,e,t)=>{const n=t.getContext("2d"),r=c.frame.clone(),i=c.source._resolution??c.source.resolution??1,a=c.rotate;r.x*=i,r.y*=i,r.width*=i,r.height*=i;const s=b.isVertical(a),o=s?r.height:r.width,l=s?r.width:r.height;t.width=Math.ceil(o),t.height=Math.ceil(l),n.save(),n.globalCompositeOperation="copy";const d=p.getCanvasSource(c);if(!d){n.restore();return}a&&p._applyInverseRotation(n,a,r.width,r.height),n.drawImage(d,r.x,r.y,r.width,r.height,0,0,r.width,r.height),n.restore();const u=e>>16&255,h=e>>8&255,f=e&255,m=n.getImageData(0,0,o,l),g=m.data;for(let x=0;x<g.length;x+=4)g[x]=g[x]*u/255,g[x+1]=g[x+1]*h/255,g[x+2]=g[x+2]*f/255;n.putImageData(m,0,0)},_applyInverseRotation:(c,e,t,n)=>{const r=b.inv(e),i=b.uX(r),a=b.uY(r),s=b.vX(r),o=b.vY(r),l=-Math.min(0,i*t,s*n,i*t+s*n),d=-Math.min(0,a*t,o*n,a*t+o*n);c.transform(i,a,s,o,l,d)}};p.tintMethod=p.canUseMultiply?p.tintWithMultiply:p.tintWithPerPixel;class te{constructor(e){this._canvasPool=Object.create(null),this.canvasOptions=e||{},this.enableFullScreen=!1}_createCanvasAndContext(e,t){const n=y.get().createCanvas();n.width=e,n.height=t;const r=n.getContext("2d");return{canvas:n,context:r}}getOptimalCanvasAndContext(e,t,n=1){e=Math.ceil(e*n-1e-6),t=Math.ceil(t*n-1e-6),e=R(e),t=R(t);const r=(e<<17)+(t<<1);this._canvasPool[r]||(this._canvasPool[r]=[]);let i=this._canvasPool[r].pop();return i||(i=this._createCanvasAndContext(e,t)),i}returnCanvasAndContext(e){const t=e.canvas,{width:n,height:r}=t,i=(n<<17)+(r<<1);e.context.resetTransform(),e.context.clearRect(0,0,n,r),this._canvasPool[i].push(e)}clear(){this._canvasPool={}}}const z=new te;j.register(z);const O=new V;function Y(c,e){e.clear();const t=e.matrix;for(let n=0;n<c.length;n++){const r=c[n];if(r.globalDisplayStatus<7)continue;const i=r.renderGroup??r.parentRenderGroup;i!=null&&i.isCachedAsTexture?e.matrix=O.copyFrom(i.textureOffsetInverseTransform).append(r.worldTransform):i!=null&&i._parentCacheAsTextureRenderGroup?e.matrix=O.copyFrom(i._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(r.groupTransform):e.matrix=r.worldTransform,e.addBounds(r.bounds)}return e.matrix=t,e}const re=new P;function ne(c,e,t,n,r=!1){const i=re;i.minX=0,i.minY=0,i.maxX=c.width/n|0,i.maxY=c.height/n|0;const a=F.getOptimalTexture(i.width,i.height,n,!1,r);return a.source.uploadMethodId="image",a.source.resource=c,a.source.alphaMode="premultiply-alpha-on-upload",a.frame.width=e/n,a.frame.height=t/n,a.source.emit("update",a.source),a.updateUvs(),a}function G(c){return typeof c.getCanvasFilterString=="function"}class ie{constructor(){this.skip=!1,this.useClip=!1,this.filters=null,this.container=null,this.bounds=new P,this.cssFilterString=""}}class q{constructor(e){this._filterStack=[],this._filterStackIndex=0,this._savedStates=[],this._alphaMultiplier=1,this._warnedFilterTypes=new Set,this.renderer=e}push(e){const t=this._pushFilterFrame(),n=e.filterEffect.filters;if(t.skip=!1,t.useClip=!1,t.filters=n,t.container=e.container,t.cssFilterString="",n.every(o=>!o.enabled)){t.skip=!0;return}const r=[],i=1;for(const o of n){if(!o.enabled)continue;if(!G(o)){this._warnUnsupportedFilter(o);continue}const l=o.getCanvasFilterString();if(l===null){this._warnUnsupportedFilter(o);continue}l&&r.push(l)}if(r.length===0&&i===1){t.skip=!0;return}t.cssFilterString=r.join(" "),this._calculateFilterArea(e,t.bounds),t.useClip=!!e.filterEffect.filterArea;const a=this.renderer.canvasContext.activeContext,s=a.filter||"none";if(this._savedStates.push({filter:s,alphaMultiplier:this._alphaMultiplier}),t.useClip&&Number.isFinite(t.bounds.width)&&Number.isFinite(t.bounds.height)&&t.bounds.width>0&&t.bounds.height>0){const o=this.renderer.canvasContext.activeResolution||1;a.save(),a.setTransform(1,0,0,1,0,0),a.beginPath(),a.rect(t.bounds.x*o,t.bounds.y*o,t.bounds.width*o,t.bounds.height*o),a.clip()}else t.useClip=!1;t.cssFilterString&&(a.filter=s!=="none"?`${s} ${t.cssFilterString}`:t.cssFilterString)}pop(){const e=this._popFilterFrame();if(e.skip)return;const t=this._savedStates.pop();if(!t)return;const n=this.renderer.canvasContext.activeContext;e.useClip?n.restore():n.filter=t.filter,this._alphaMultiplier=t.alphaMultiplier}generateFilteredTexture({texture:e,filters:t}){if(!(t!=null&&t.length)||t.every(v=>!v.enabled))return e;const n=[],r=1;for(const v of t){if(!v.enabled)continue;if(!G(v)){this._warnUnsupportedFilter(v);continue}const T=v.getCanvasFilterString();if(T===null){this._warnUnsupportedFilter(v);continue}T&&n.push(T)}if(n.length===0&&r===1)return e;const i=p.getCanvasSource(e);if(!i)return e;const a=e.frame,s=e.source._resolution??e.source.resolution??1,o=a.width,l=a.height,d=z.getOptimalCanvasAndContext(o,l,s),{canvas:u,context:h}=d;h.setTransform(1,0,0,1,0,0),h.clearRect(0,0,u.width,u.height),n.length&&(h.filter=n.join(" "));const f=a.x*s,m=a.y*s,g=o*s,x=l*s;return h.drawImage(i,f,m,g,x,0,0,g,x),h.filter="none",h.globalAlpha=1,ne(u,o,l,s)}_calculateFilterArea(e,t){if(e.renderables?Y(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){const n=e.container.renderGroup||e.container.parentRenderGroup,r=n==null?void 0:n.cacheToLocalTransform;r&&t.applyMatrix(r)}}_warnUnsupportedFilter(e){var n;const t=((n=e==null?void 0:e.constructor)==null?void 0:n.name)||"Filter";this._warnedFilterTypes.has(t)||(this._warnedFilterTypes.add(t),console.warn(`CanvasRenderer: filter "${t}" is not supported in Canvas2D and will be skipped.`))}get alphaMultiplier(){return this._alphaMultiplier}_pushFilterFrame(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new ie),this._filterStackIndex++,e}_popFilterFrame(){return this._filterStackIndex<=0?this._filterStack[0]:(this._filterStackIndex--,this._filterStack[this._filterStackIndex])}destroy(){this._filterStack=null,this._savedStates=null,this._warnedFilterTypes=null,this._alphaMultiplier=1}}q.extension={type:[C.CanvasSystem],name:"filter"};var ae=`in vec2 aPosition;
2
2
  out vec2 vTextureCoord;
3
3
 
4
4
  uniform vec4 uInputSize;
package/dist/index.html CHANGED
@@ -17,7 +17,7 @@
17
17
  background: #0f172a;
18
18
  }
19
19
  </style>
20
- <script type="module" crossorigin src="/agent-play/assets/index-BN8bwUYb.js"></script>
20
+ <script type="module" crossorigin src="/agent-play/assets/index-dcrq2zGS.js"></script>
21
21
  </head>
22
22
  <body>
23
23
  </body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-play/play-ui",
3
- "version": "3.6.0",
3
+ "version": "3.7.0",
4
4
  "description": "Vite-built watch canvas (Pixi.js) for Agent Play. Publishes static files under dist/ for self-hosting or embedding beside your own API.",
5
5
  "private": false,
6
6
  "type": "module",