diff --git a/public/Preset/5.贴图轴点.json b/dist/Preset/5.贴图轴点1.json similarity index 100% rename from public/Preset/5.贴图轴点.json rename to dist/Preset/5.贴图轴点1.json diff --git a/dist/Preset/6.粒子轴点2.json b/dist/Preset/6.粒子轴点2.json new file mode 100644 index 0000000..a746692 --- /dev/null +++ b/dist/Preset/6.粒子轴点2.json @@ -0,0 +1,531 @@ +{ + "format": "SpineParticle.EditorConfig", + "version": 1, + "savedAt": "2026-10-22T04:01:50.731Z", + "editor": { + "viewScale": 0.287476104098836, + "viewX": -5.508720333236539, + "viewY": 2.457727380580252 + }, + "settings": { + "backgroundX": 0, + "backgroundY": 0, + "backgroundOpacity": 1, + "backgroundImageName": "", + "backgroundImageData": "", + "showGrid": true, + "exportSettings": { + "imagesPath": "./images/", + "spineVersion": "4.2", + "keyframeCurve": "bezier", + "fps": 30, + "omitFps": false, + "integerFrameAlignment": true, + "bonePool": true, + "excludeEmptyAnimations": false, + "fileName": "SpineParticle.json" + } + }, + "timeline": { + "fps": 30, + "loop": true, + "playbackStart": 0, + "playbackEnd": 30, + "animations": [ + "animation" + ] + }, + "selection": { + "type": "particle", + "id": 1 + }, + "scene": { + "systems": [ + { + "id": 1, + "visible": true, + "animation": "animation", + "config": { + "imageResources": [ + { + "id": 1, + "textureName": "217cc2f5b2914d1716898385698d9eb17e352d97385b8-Fojf0Y", + "textureFolder": "", + "previewUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAApIAAAKSCAYAAABhiDtmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEMTM4OTM1REExQzMxMUU3OENFN0IxN0YxNDFFOEQ5NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEMTM4OTM1RUExQzMxMUU3OENFN0IxN0YxNDFFOEQ5NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQxMzg5MzVCQTFDMzExRTc4Q0U3QjE3RjE0MUU4RDk1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQxMzg5MzVDQTFDMzExRTc4Q0U3QjE3RjE0MUU4RDk1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CRuTCgADgi1JREFUeNrsveuS5EaS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", + "imageMode": "fixed", + "sequencePlayback": "loop-forward", + "sequenceFps": 30, + "sequenceFrames": [], + "weight": 100, + "locked": false, + "scale": 1, + "anchorX": 0.49669471153846156, + "anchorY": 1.5949519230769231, + "colorMode": "fixed", + "colorStart": "#ffffff", + "colorEnd": "#ff4d4d", + "colorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ff4d4d" + } + ], + "blend": "add", + "independentAlpha": "off", + "alpha": 1, + "alphaCurveMode": "跟随导出", + "alphaCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.1, + "y": 1 + }, + { + "x": 0.9, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ] + } + ], + "imageWeightVersion": 1, + "name": "ParticleSystem1", + "mode": "stream", + "rate": 74, + "streamBehavior": "loop", + "loopDurationFrames": 30, + "generateLoopStartAnimation": false, + "loopStartUseCustomDuration": false, + "loopStartDurationFrames": 30, + "generateLoopEndAnimation": false, + "loopEndUseCustomDuration": false, + "loopEndDurationFrames": 30, + "burstCount": 50, + "burstLoop": false, + "delay": 0, + "duration": 1, + "shape": "point", + "showShape": true, + "shapeRangeVersion": 1, + "innerRadius": 0, + "outerRadius": 100, + "innerRectW": 0, + "innerRectH": 0, + "outerRectW": 200, + "outerRectH": 100, + "spawnPathId": 0, + "spawnPathDistribution": "fixed", + "radius": 30, + "rectW": 60, + "rectH": 40, + "centerX": 0, + "centerY": 0, + "rootRotation": 0, + "rootScaleX": 1, + "rootScaleY": 1, + "renderLayerMode": "top", + "renderLayerSpineId": 0, + "renderLayerSlotName": "", + "renderLayerSlotPosition": "above", + "renderLayerFollowAttachment": false, + "emissionAngleMode": "random", + "direction": 0, + "spread": 360, + "coneDirection": 90, + "coneAngle": 60, + "lifeMin": 0.2, + "lifeMax": 1, + "lifeMode": "random", + "lifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "speedMin": 0, + "speedMax": 140, + "speedMode": "fixed", + "speedCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleMin": 1, + "scaleMax": 0, + "scaleMode": "random", + "scaleAxisMode": "uniform", + "scaleYMin": 0.3, + "scaleYMax": 0.8, + "scaleCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleYCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleEndRatio": 0.3, + "initialRotationMode": "random", + "initialRotationMin": 0, + "initialRotationMax": 360, + "initialRotationCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "alpha": 0.9, + "alphaEnd": 0, + "rotationSpeedMin": -90, + "rotationSpeedMax": 90, + "speedOverLifeEnabled": false, + "speedOverLifeMode": "fixed", + "speedOverLifeMin": 1, + "speedOverLifeMax": 1, + "speedOverLifeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleOverLifeEnabled": false, + "scaleOverLifeMode": "curve", + "scaleOverLifeAxisMode": "uniform", + "scaleOverLifeMin": 0, + "scaleOverLifeMax": 1, + "scaleYOverLifeMin": 0, + "scaleYOverLifeMax": 1, + "scaleOverLifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.08, + "y": 1 + }, + { + "x": 0.88, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ], + "scaleYOverLifeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "rotationOverLifeEnabled": true, + "rotationOverLifeMode": "random", + "rotationOverLifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "gravity": 980, + "gravityMode": "fixed", + "gravityMin": 980, + "gravityMax": 980, + "gravityDirection": -90, + "gravityCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "damping": 0, + "seed": 999717, + "colorStart": "#ffffff", + "colorEnd": "#ff4d4d", + "colorOverLife": false, + "blend": "add", + "alphaMode": "curve", + "curveMode": "线性", + "alphaCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.38, + "y": 1 + }, + { + "x": 0.63, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ], + "textureName": "star", + "textureFolder": "", + "alphaScale": 1, + "anchorX": 0.5, + "anchorY": 0.5, + "independentAlpha": "off", + "offsetX": 0, + "offsetY": 0, + "noise": false, + "noiseAmt": 30, + "noiseRange": 100, + "noiseSpeed": 1, + "useGravity": false, + "wind": false, + "windX": 0, + "windY": 0, + "windMode": "fixed", + "windMin": 100, + "windMax": 100, + "windDirection": 0, + "windCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "forceField": false, + "forceStrength": 10, + "forceRadius": 100, + "forceCenterX": 0, + "forceCenterY": 0, + "forceFalloff": "linear", + "showForceFieldShape": true, + "vortex": false, + "vortexStrength": 10, + "vortexRadius": 100, + "vortexCenterX": 0, + "vortexCenterY": 0, + "vortexFalloff": "linear", + "showVortexShape": true, + "attraction": false, + "attractionCenterX": 200, + "attractionCenterY": 0, + "attractionRadius": 20, + "attractionDuration": 0.5, + "attractionDelay": 0.1, + "attractionDelayMode": "particle", + "attractionPath": "curve", + "showAttractionShape": true, + "trail": false, + "trailConfigVersion": 3, + "trailResources": [ + { + "id": 1, + "textureName": "trail", + "previewUrl": "/images/trail.png", + "weight": 100, + "locked": false, + "rotation": 0, + "colorMode": "particle", + "color": "#ffffff", + "colorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ffffff" + } + ], + "blend": "normal", + "alphaMode": "particle", + "alpha": 1, + "alphaCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "boneCount": 3, + "trailRatio": 100, + "lengthMode": "fixed", + "length": 100, + "lengthMin": 100, + "lengthMax": 100, + "widthSizeMode": "fixed", + "width": 100, + "widthMin": 100, + "widthMax": 100, + "widthMode": "particle", + "lifeLengthEnabled": false, + "lifeLengthCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "shapeEnabled": false, + "shapeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ] + } + ], + "trailResourceVersion": 6, + "trailTextureName": "trail", + "trailPreviewUrl": "/images/trail.png", + "trailColorMode": "particle", + "trailColor": "#ffffff", + "trailColorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ffffff" + } + ], + "trailAlphaMode": "particle", + "trailAlpha": 1, + "trailAlphaCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailBoneCount": 3, + "trailLength": 100, + "trailWidth": 100, + "trailWidthMode": "particle", + "trailLifeLengthEnabled": false, + "trailLifeLengthCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailShapeEnabled": false, + "trailShapeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailGridRows": 4, + "trailGridCols": 4, + "collision": false, + "collisionColliderIds": [], + "pathFollow": false, + "emitterFollow": false, + "emitterFollowMode": "none", + "emitterFollowPathId": 0, + "emitterFollowSpineId": 0, + "emitterFollowBoneName": "", + "emitterFollowBoneOffsetX": 0, + "emitterFollowBoneOffsetY": 0, + "emitterFollowBoneRotation": 0, + "emitterFollowBoneScaleX": 1, + "emitterFollowBoneScaleY": 1, + "emitterAngleMode": "fixed", + "emitterFollowCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "emitterFollowDuration": 2, + "emitterFollowSpace": "world", + "emitterFollowDirection": "forward", + "emitterFollowOffset": 0 + } + } + ], + "colliders": [], + "paths": [], + "spines": [] + } +} \ No newline at end of file diff --git a/dist/Preset/5.SpineBoy.json b/dist/Preset/7.SpineBoy.json similarity index 100% rename from dist/Preset/5.SpineBoy.json rename to dist/Preset/7.SpineBoy.json diff --git a/dist/Preset/index.json b/dist/Preset/index.json index a9b4229..e97a788 100644 --- a/dist/Preset/index.json +++ b/dist/Preset/index.json @@ -16,7 +16,15 @@ "file": "4.雷电序列帧.json" }, { - "name": "5.SpineBoy", - "file": "5.SpineBoy.json" + "name": "5.贴图轴点1", + "file": "5.贴图轴点1.json" + }, + { + "name": "6.粒子轴点2", + "file": "6.粒子轴点2.json" + }, + { + "name": "7.SpineBoy", + "file": "7.SpineBoy.json" } ] diff --git a/dist/assets/index-CkcQpCi2.js b/dist/assets/index-BDM5NpkZ.js similarity index 55% rename from dist/assets/index-CkcQpCi2.js rename to dist/assets/index-BDM5NpkZ.js index ebf095d..b455daa 100644 --- a/dist/assets/index-CkcQpCi2.js +++ b/dist/assets/index-BDM5NpkZ.js @@ -1,43 +1,43 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BtGWLkYx.js","assets/index-yF8mmEQU.js"])))=>i.map(i=>d[i]); -var qS=Object.defineProperty;var KS=(i,e,t)=>e in i?qS(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var M=(i,e,t)=>KS(i,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))s(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function t(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(n){if(n.ep)return;n.ep=!0;const r=t(n);fetch(n.href,r)}})();/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CUwqGGwd.js","assets/index-BS4GpQRH.js"])))=>i.map(i=>d[i]); +var ZS=Object.defineProperty;var JS=(i,e,t)=>e in i?ZS(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var S=(i,e,t)=>JS(i,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))s(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function t(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(n){if(n.ep)return;n.ep=!0;const r=t(n);fetch(n.href,r)}})();/** * @vue/shared v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Gm(i){const e=Object.create(null);for(const t of i.split(","))e[t]=1;return t=>t in e}const Lt={},Go=[],on=()=>{},_y=()=>!1,Uh=i=>i.charCodeAt(0)===111&&i.charCodeAt(1)===110&&(i.charCodeAt(2)>122||i.charCodeAt(2)<97),$h=i=>i.startsWith("onUpdate:"),ms=Object.assign,jm=(i,e)=>{const t=i.indexOf(e);t>-1&&i.splice(t,1)},ZS=Object.prototype.hasOwnProperty,Pt=(i,e)=>ZS.call(i,e),We=Array.isArray,jo=i=>Tl(i)==="[object Map]",fa=i=>Tl(i)==="[object Set]",$p=i=>Tl(i)==="[object Date]",it=i=>typeof i=="function",Yt=i=>typeof i=="string",si=i=>typeof i=="symbol",kt=i=>i!==null&&typeof i=="object",Cy=i=>(kt(i)||it(i))&&it(i.then)&&it(i.catch),Ay=Object.prototype.toString,Tl=i=>Ay.call(i),JS=i=>Tl(i).slice(8,-1),Ey=i=>Tl(i)==="[object Object]",Xh=i=>Yt(i)&&i!=="NaN"&&i[0]!=="-"&&""+parseInt(i,10)===i,Wa=Gm(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Vh=i=>{const e=Object.create(null);return(t=>e[t]||(e[t]=i(t)))},QS=/-\w/g,Ai=Vh(i=>i.replace(QS,e=>e.slice(1).toUpperCase())),eM=/\B([A-Z])/g,Tr=Vh(i=>i.replace(eM,"-$1").toLowerCase()),Iy=Vh(i=>i.charAt(0).toUpperCase()+i.slice(1)),Mu=Vh(i=>i?`on${Iy(i)}`:""),Qi=(i,e)=>!Object.is(i,e),Tc=(i,...e)=>{for(let t=0;t{Object.defineProperty(i,e,{configurable:!0,enumerable:!1,writable:s,value:t})},Yh=i=>{const e=parseFloat(i);return isNaN(e)?i:e},tM=i=>{const e=Yt(i)?Number(i):NaN;return isNaN(e)?i:e};let Xp;const Gh=()=>Xp||(Xp=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Vt(i){if(We(i)){const e={};for(let t=0;t{if(t){const s=t.split(iM);s.length>1&&(e[s[0].trim()]=s[1].trim())}}),e}function Ae(i){let e="";if(Yt(i))e=i;else if(We(i))for(let t=0;tma(t,e))}const ky=i=>!!(i&&i.__v_isRef===!0),ye=i=>Yt(i)?i:i==null?"":We(i)||kt(i)&&(i.toString===Ay||!it(i.toString))?ky(i)?ye(i.value):JSON.stringify(i,Fy,2):String(i),Fy=(i,e)=>ky(e)?Fy(i,e.value):jo(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[s,n],r)=>(t[Tu(s,r)+" =>"]=n,t),{})}:fa(e)?{[`Set(${e.size})`]:[...e.values()].map(t=>Tu(t))}:si(e)?Tu(e):kt(e)&&!We(e)&&!Ey(e)?String(e):e,Tu=(i,e="")=>{var t;return si(i)?`Symbol(${(t=i.description)!=null?t:e})`:i};/** +**/function jm(i){const e=Object.create(null);for(const t of i.split(","))e[t]=1;return t=>t in e}const Lt={},Go=[],on=()=>{},Ay=()=>!1,Uh=i=>i.charCodeAt(0)===111&&i.charCodeAt(1)===110&&(i.charCodeAt(2)>122||i.charCodeAt(2)<97),$h=i=>i.startsWith("onUpdate:"),ps=Object.assign,Hm=(i,e)=>{const t=i.indexOf(e);t>-1&&i.splice(t,1)},QS=Object.prototype.hasOwnProperty,Pt=(i,e)=>QS.call(i,e),We=Array.isArray,jo=i=>Tl(i)==="[object Map]",fa=i=>Tl(i)==="[object Set]",Xp=i=>Tl(i)==="[object Date]",it=i=>typeof i=="function",Yt=i=>typeof i=="string",si=i=>typeof i=="symbol",kt=i=>i!==null&&typeof i=="object",Ey=i=>(kt(i)||it(i))&&it(i.then)&&it(i.catch),Iy=Object.prototype.toString,Tl=i=>Iy.call(i),eM=i=>Tl(i).slice(8,-1),Ry=i=>Tl(i)==="[object Object]",Xh=i=>Yt(i)&&i!=="NaN"&&i[0]!=="-"&&""+parseInt(i,10)===i,Wa=jm(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Vh=i=>{const e=Object.create(null);return(t=>e[t]||(e[t]=i(t)))},tM=/-\w/g,Ai=Vh(i=>i.replace(tM,e=>e.slice(1).toUpperCase())),sM=/\B([A-Z])/g,Tr=Vh(i=>i.replace(sM,"-$1").toLowerCase()),Py=Vh(i=>i.charAt(0).toUpperCase()+i.slice(1)),Mu=Vh(i=>i?`on${Py(i)}`:""),Qi=(i,e)=>!Object.is(i,e),Tc=(i,...e)=>{for(let t=0;t{Object.defineProperty(i,e,{configurable:!0,enumerable:!1,writable:s,value:t})},Yh=i=>{const e=parseFloat(i);return isNaN(e)?i:e},iM=i=>{const e=Yt(i)?Number(i):NaN;return isNaN(e)?i:e};let Vp;const Gh=()=>Vp||(Vp=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Vt(i){if(We(i)){const e={};for(let t=0;t{if(t){const s=t.split(rM);s.length>1&&(e[s[0].trim()]=s[1].trim())}}),e}function Ae(i){let e="";if(Yt(i))e=i;else if(We(i))for(let t=0;tma(t,e))}const Oy=i=>!!(i&&i.__v_isRef===!0),ye=i=>Yt(i)?i:i==null?"":We(i)||kt(i)&&(i.toString===Iy||!it(i.toString))?Oy(i)?ye(i.value):JSON.stringify(i,Ly,2):String(i),Ly=(i,e)=>Oy(e)?Ly(i,e.value):jo(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[s,n],r)=>(t[Tu(s,r)+" =>"]=n,t),{})}:fa(e)?{[`Set(${e.size})`]:[...e.values()].map(t=>Tu(t))}:si(e)?Tu(e):kt(e)&&!We(e)&&!Ry(e)?String(e):e,Tu=(i,e="")=>{var t;return si(i)?`Symbol(${(t=i.description)!=null?t:e})`:i};/** * @vue/reactivity v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let us;class Oy{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&us&&(us.active?(this.parent=us,this.index=(us.scopes||(us.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){const s=this.scopes.slice();for(e=0,t=s.length;e0&&--this._on===0){if(us===this)us=this.prevScope;else{let e=us;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,s;for(t=0,s=this.effects.length;t0)return;if(qa){let e=qa;for(qa=void 0;e;){const t=e.next;e.next=void 0,e.flags&=-9,e=t}}let i;for(;za;){let e=za;for(za=void 0;e;){const t=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(s){i||(i=s)}e=t}}if(i)throw i}function $y(i){for(let e=i.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Xy(i){let e,t=i.depsTail,s=t;for(;s;){const n=s.prevDep;s.version===-1?(s===t&&(t=n),qm(s),hM(s)):e=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=n}i.deps=e,i.depsTail=t}function vf(i){for(let e=i.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Vy(e.dep.computed)||e.dep.version!==e.version))return!0;return!!i._dirty}function Vy(i){if(i.flags&4&&!(i.flags&16)||(i.flags&=-17,i.globalVersion===al)||(i.globalVersion=al,!i.isSSR&&i.flags&128&&(!i.deps&&!i._dirty||!vf(i))))return;i.flags|=2;const e=i.dep,t=Dt,s=Ei;Dt=i,Ei=!0;try{$y(i);const n=i.fn(i._value);(e.version===0||Qi(n,i._value))&&(i.flags|=128,i._value=n,e.version++)}catch(n){throw e.version++,n}finally{Dt=t,Ei=s,Xy(i),i.flags&=-3}}function qm(i,e=!1){const{dep:t,prevSub:s,nextSub:n}=i;if(s&&(s.nextSub=n,i.prevSub=void 0),n&&(n.prevSub=s,i.nextSub=void 0),t.subs===i&&(t.subs=s,!s&&t.computed)){t.computed.flags&=-5;for(let r=t.computed.deps;r;r=r.nextDep)qm(r,!0)}!e&&!--t.sc&&t.map&&t.map.delete(t.key)}function hM(i){const{prevDep:e,nextDep:t}=i;e&&(e.nextDep=t,i.prevDep=void 0),t&&(t.prevDep=e,i.nextDep=void 0)}let Ei=!0;const Yy=[];function $n(){Yy.push(Ei),Ei=!1}function Xn(){const i=Yy.pop();Ei=i===void 0?!0:i}function Vp(i){const{cleanup:e}=i;if(i.cleanup=void 0,e){const t=Dt;Dt=void 0;try{e()}finally{Dt=t}}}let al=0;class uM{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Km{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!Dt||!Ei||Dt===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==Dt)t=this.activeLink=new uM(Dt,this),Dt.deps?(t.prevDep=Dt.depsTail,Dt.depsTail.nextDep=t,Dt.depsTail=t):Dt.deps=Dt.depsTail=t,Gy(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){const s=t.nextDep;s.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=s),t.prevDep=Dt.depsTail,t.nextDep=void 0,Dt.depsTail.nextDep=t,Dt.depsTail=t,Dt.deps===t&&(Dt.deps=s)}return t}trigger(e){this.version++,al++,this.notify(e)}notify(e){Wm();try{for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&t.sub.dep.notify()}finally{zm()}}}function Gy(i){if(i.dep.sc++,i.sub.flags&4){const e=i.dep.computed;if(e&&!i.dep.subs){e.flags|=20;for(let s=e.deps;s;s=s.nextDep)Gy(s)}const t=i.dep.subs;t!==i&&(i.prevSub=t,t&&(t.nextSub=i)),i.dep.subs=i}}const Vc=new WeakMap,so=Symbol(""),yf=Symbol(""),ll=Symbol("");function ks(i,e,t){if(Ei&&Dt){let s=Vc.get(i);s||Vc.set(i,s=new Map);let n=s.get(t);n||(s.set(t,n=new Km),n.map=s,n.key=t),n.track()}}function Cn(i,e,t,s,n,r){const o=Vc.get(i);if(!o){al++;return}const a=l=>{l&&l.trigger()};if(Wm(),e==="clear")o.forEach(a);else{const l=We(i),c=l&&Xh(t);if(l&&t==="length"){const h=Number(s);o.forEach((u,d)=>{(d==="length"||d===ll||!si(d)&&d>=h)&&a(u)})}else switch((t!==void 0||o.has(void 0))&&a(o.get(t)),c&&a(o.get(ll)),e){case"add":l?c&&a(o.get("length")):(a(o.get(so)),jo(i)&&a(o.get(yf)));break;case"delete":l||(a(o.get(so)),jo(i)&&a(o.get(yf)));break;case"set":jo(i)&&a(o.get(so));break}}zm()}function dM(i,e){const t=Vc.get(i);return t&&t.get(e)}function Mo(i){const e=St(i);return e===i?e:(ks(e,"iterate",ll),ti(i)?e:e.map(Fi))}function jh(i){return ks(i=St(i),"iterate",ll),i}function qi(i,e){return Vn(i)?ra(Bn(i)?Fi(e):e):Fi(e)}const fM={__proto__:null,[Symbol.iterator](){return Cu(this,Symbol.iterator,i=>qi(this,i))},concat(...i){return Mo(this).concat(...i.map(e=>We(e)?Mo(e):e))},entries(){return Cu(this,"entries",i=>(i[1]=qi(this,i[1]),i))},every(i,e){return pn(this,"every",i,e,void 0,arguments)},filter(i,e){return pn(this,"filter",i,e,t=>t.map(s=>qi(this,s)),arguments)},find(i,e){return pn(this,"find",i,e,t=>qi(this,t),arguments)},findIndex(i,e){return pn(this,"findIndex",i,e,void 0,arguments)},findLast(i,e){return pn(this,"findLast",i,e,t=>qi(this,t),arguments)},findLastIndex(i,e){return pn(this,"findLastIndex",i,e,void 0,arguments)},forEach(i,e){return pn(this,"forEach",i,e,void 0,arguments)},includes(...i){return Au(this,"includes",i)},indexOf(...i){return Au(this,"indexOf",i)},join(i){return Mo(this).join(i)},lastIndexOf(...i){return Au(this,"lastIndexOf",i)},map(i,e){return pn(this,"map",i,e,void 0,arguments)},pop(){return Ca(this,"pop")},push(...i){return Ca(this,"push",i)},reduce(i,...e){return Yp(this,"reduce",i,e)},reduceRight(i,...e){return Yp(this,"reduceRight",i,e)},shift(){return Ca(this,"shift")},some(i,e){return pn(this,"some",i,e,void 0,arguments)},splice(...i){return Ca(this,"splice",i)},toReversed(){return Mo(this).toReversed()},toSorted(i){return Mo(this).toSorted(i)},toSpliced(...i){return Mo(this).toSpliced(...i)},unshift(...i){return Ca(this,"unshift",i)},values(){return Cu(this,"values",i=>qi(this,i))}};function Cu(i,e,t){const s=jh(i),n=s[e]();return s!==i&&!ti(i)&&(n._next=n.next,n.next=()=>{const r=n._next();return r.done||(r.value=t(r.value)),r}),n}const mM=Array.prototype;function pn(i,e,t,s,n,r){const o=jh(i),a=o!==i&&!ti(i),l=o[e];if(l!==mM[e]){const u=l.apply(i,r);return a?Fi(u):u}let c=t;o!==i&&(a?c=function(u,d){return t.call(this,qi(i,u),d,i)}:t.length>2&&(c=function(u,d){return t.call(this,u,d,i)}));const h=l.call(o,c,s);return a&&n?n(h):h}function Yp(i,e,t,s){const n=jh(i),r=n!==i&&!ti(i);let o=t,a=!1;n!==i&&(r?(a=s.length===0,o=function(c,h,u){return a&&(a=!1,c=qi(i,c)),t.call(this,c,qi(i,h),u,i)}):t.length>3&&(o=function(c,h,u){return t.call(this,c,h,u,i)}));const l=n[e](o,...s);return a?qi(i,l):l}function Au(i,e,t){const s=St(i);ks(s,"iterate",ll);const n=s[e](...t);return(n===-1||n===!1)&&Hh(t[0])?(t[0]=St(t[0]),s[e](...t)):n}function Ca(i,e,t=[]){$n(),Wm();const s=St(i)[e].apply(i,t);return zm(),Xn(),s}const pM=Gm("__proto__,__v_isRef,__isVue"),jy=new Set(Object.getOwnPropertyNames(Symbol).filter(i=>i!=="arguments"&&i!=="caller").map(i=>Symbol[i]).filter(si));function gM(i){si(i)||(i=String(i));const e=St(this);return ks(e,"has",i),e.hasOwnProperty(i)}class Hy{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,s){if(t==="__v_skip")return e.__v_skip;const n=this._isReadonly,r=this._isShallow;if(t==="__v_isReactive")return!n;if(t==="__v_isReadonly")return n;if(t==="__v_isShallow")return r;if(t==="__v_raw")return s===(n?r?CM:Ky:r?qy:zy).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(s)?e:void 0;const o=We(e);if(!n){let l;if(o&&(l=fM[t]))return l;if(t==="hasOwnProperty")return gM}const a=Reflect.get(e,t,Gt(e)?e:s);if((si(t)?jy.has(t):pM(t))||(n||ks(e,"get",t),r))return a;if(Gt(a)){const l=o&&Xh(t)?a:a.value;return n&&kt(l)?bf(l):l}return kt(a)?n?bf(a):mo(a):a}}class Wy extends Hy{constructor(e=!1){super(!1,e)}set(e,t,s,n){let r=e[t];const o=We(e)&&Xh(t);if(!this._isShallow){const c=Vn(r);if(!ti(s)&&!Vn(s)&&(r=St(r),s=St(s)),!o&&Gt(r)&&!Gt(s))return c||(r.value=s),!0}const a=o?Number(t)i,$l=i=>Reflect.getPrototypeOf(i);function wM(i,e,t){return function(...s){const n=this.__v_raw,r=St(n),o=jo(r),a=i==="entries"||i===Symbol.iterator&&o,l=i==="keys"&&o,c=n[i](...s),h=t?xf:e?ra:Fi;return!e&&ks(r,"iterate",l?yf:so),ms(Object.create(c),{next(){const{value:u,done:d}=c.next();return d?{value:u,done:d}:{value:a?[h(u[0]),h(u[1])]:h(u),done:d}}})}}function Xl(i){return function(...e){return i==="delete"?!1:i==="clear"?void 0:this}}function SM(i,e){const t={get(n){const r=this.__v_raw,o=St(r),a=St(n);i||(Qi(n,a)&&ks(o,"get",n),ks(o,"get",a));const{has:l}=$l(o),c=e?xf:i?ra:Fi;if(l.call(o,n))return c(r.get(n));if(l.call(o,a))return c(r.get(a));r!==o&&r.get(n)},get size(){const n=this.__v_raw;return!i&&ks(St(n),"iterate",so),n.size},has(n){const r=this.__v_raw,o=St(r),a=St(n);return i||(Qi(n,a)&&ks(o,"has",n),ks(o,"has",a)),n===a?r.has(n):r.has(n)||r.has(a)},forEach(n,r){const o=this,a=o.__v_raw,l=St(a),c=e?xf:i?ra:Fi;return!i&&ks(l,"iterate",so),a.forEach((h,u)=>n.call(r,c(h),c(u),o))}};return ms(t,i?{add:Xl("add"),set:Xl("set"),delete:Xl("delete"),clear:Xl("clear")}:{add(n){const r=St(this),o=$l(r),a=St(n),l=!e&&!ti(n)&&!Vn(n)?a:n;return o.has.call(r,l)||Qi(n,l)&&o.has.call(r,n)||Qi(a,l)&&o.has.call(r,a)||(r.add(l),Cn(r,"add",l,l)),this},set(n,r){!e&&!ti(r)&&!Vn(r)&&(r=St(r));const o=St(this),{has:a,get:l}=$l(o);let c=a.call(o,n);c||(n=St(n),c=a.call(o,n));const h=l.call(o,n);return o.set(n,r),c?Qi(r,h)&&Cn(o,"set",n,r):Cn(o,"add",n,r),this},delete(n){const r=St(this),{has:o,get:a}=$l(r);let l=o.call(r,n);l||(n=St(n),l=o.call(r,n)),a&&a.call(r,n);const c=r.delete(n);return l&&Cn(r,"delete",n,void 0),c},clear(){const n=St(this),r=n.size!==0,o=n.clear();return r&&Cn(n,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(n=>{t[n]=wM(n,i,e)}),t}function Zm(i,e){const t=SM(i,e);return(s,n,r)=>n==="__v_isReactive"?!i:n==="__v_isReadonly"?i:n==="__v_raw"?s:Reflect.get(Pt(t,n)&&n in s?t:s,n,r)}const MM={get:Zm(!1,!1)},TM={get:Zm(!1,!0)},_M={get:Zm(!0,!1)};const zy=new WeakMap,qy=new WeakMap,Ky=new WeakMap,CM=new WeakMap;function AM(i){switch(i){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function mo(i){return Vn(i)?i:Jm(i,!1,yM,MM,zy)}function EM(i){return Jm(i,!1,bM,TM,qy)}function bf(i){return Jm(i,!0,xM,_M,Ky)}function Jm(i,e,t,s,n){if(!kt(i)||i.__v_raw&&!(e&&i.__v_isReactive)||i.__v_skip||!Object.isExtensible(i))return i;const r=n.get(i);if(r)return r;const o=AM(JS(i));if(o===0)return i;const a=new Proxy(i,o===2?s:t);return n.set(i,a),a}function Bn(i){return Vn(i)?Bn(i.__v_raw):!!(i&&i.__v_isReactive)}function Vn(i){return!!(i&&i.__v_isReadonly)}function ti(i){return!!(i&&i.__v_isShallow)}function Hh(i){return i?!!i.__v_raw:!1}function St(i){const e=i&&i.__v_raw;return e?St(e):i}function ur(i){return!Pt(i,"__v_skip")&&Object.isExtensible(i)&&Ry(i,"__v_skip",!0),i}const Fi=i=>kt(i)?mo(i):i,ra=i=>kt(i)?bf(i):i;function Gt(i){return i?i.__v_isRef===!0:!1}function Fe(i){return IM(i,!1)}function IM(i,e){return Gt(i)?i:new RM(i,e)}class RM{constructor(e,t){this.dep=new Km,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:St(e),this._value=t?e:Fi(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){const t=this._rawValue,s=this.__v_isShallow||ti(e)||Vn(e);e=s?e:St(e),Qi(e,t)&&(this._rawValue=e,this._value=s?e:Fi(e),this.dep.trigger())}}function I(i){return Gt(i)?i.value:i}const PM={get:(i,e,t)=>e==="__v_raw"?i:I(Reflect.get(i,e,t)),set:(i,e,t,s)=>{const n=i[e];return Gt(n)&&!Gt(t)?(n.value=t,!0):Reflect.set(i,e,t,s)}};function Zy(i){return Bn(i)?i:new Proxy(i,PM)}function kM(i){const e=We(i)?new Array(i.length):{};for(const t in i)e[t]=OM(i,t);return e}class FM{constructor(e,t,s){this._object=e,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._key=si(t)?t:String(t),this._raw=St(e);let n=!0,r=e;if(!We(e)||si(this._key)||!Xh(this._key))do n=!Hh(r)||ti(r);while(n&&(r=r.__v_raw));this._shallow=n}get value(){let e=this._object[this._key];return this._shallow&&(e=I(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&Gt(this._raw[this._key])){const t=this._object[this._key];if(Gt(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return dM(this._raw,this._key)}}function OM(i,e,t){return new FM(i,e,t)}class LM{constructor(e,t,s){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Km(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=al-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Dt!==this)return Uy(this,!0),!0}get value(){const e=this.dep.track();return Vy(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function BM(i,e,t=!1){let s,n;return it(i)?s=i:(s=i.get,n=i.set),new LM(s,n,t)}const Vl={},Yc=new WeakMap;let $r;function NM(i,e=!1,t=$r){if(t){let s=Yc.get(t);s||Yc.set(t,s=[]),s.push(i)}}function DM(i,e,t=Lt){const{immediate:s,deep:n,once:r,scheduler:o,augmentJob:a,call:l}=t,c=w=>n?w:ti(w)||n===!1||n===0?An(w,1):An(w);let h,u,d,f,p=!1,m=!1;if(Gt(i)?(u=()=>i.value,p=ti(i)):Bn(i)?(u=()=>c(i),p=!0):We(i)?(m=!0,p=i.some(w=>Bn(w)||ti(w)),u=()=>i.map(w=>{if(Gt(w))return w.value;if(Bn(w))return c(w);if(it(w))return l?l(w,2):w()})):it(i)?e?u=l?()=>l(i,2):i:u=()=>{if(d){$n();try{d()}finally{Xn()}}const w=$r;$r=h;try{return l?l(i,3,[f]):i(f)}finally{$r=w}}:u=on,e&&n){const w=u,_=n===!0?1/0:n;u=()=>An(w(),_)}const g=By(),y=()=>{h.stop(),g&&g.active&&jm(g.effects,h)};if(r&&e){const w=e;e=(..._)=>{const S=w(..._);return y(),S}}let x=m?new Array(i.length).fill(Vl):Vl;const v=w=>{if(!(!(h.flags&1)||!h.dirty&&!w))if(e){const _=h.run();if(w||n||p||(m?_.some((S,b)=>Qi(S,x[b])):Qi(_,x))){d&&d();const S=$r;$r=h;try{const b=[_,x===Vl?void 0:m&&x[0]===Vl?[]:x,f];x=_,l?l(e,3,b):e(...b)}finally{$r=S}}}else h.run()};return a&&a(v),h=new Ny(u),h.scheduler=o?()=>o(v,!1):v,f=w=>NM(w,!1,h),d=h.onStop=()=>{const w=Yc.get(h);if(w){if(l)l(w,4);else for(const _ of w)_();Yc.delete(h)}},e?s?v(!0):x=h.run():o?o(v.bind(null,!0),!0):h.run(),y.pause=h.pause.bind(h),y.resume=h.resume.bind(h),y.stop=y,y}function An(i,e=1/0,t){if(e<=0||!kt(i)||i.__v_skip||(t=t||new Map,(t.get(i)||0)>=e))return i;if(t.set(i,e),e--,Gt(i))An(i.value,e,t);else if(We(i))for(let s=0;s{An(s,e,t)});else if(Ey(i)){for(const s in i)An(i[s],e,t);for(const s of Object.getOwnPropertySymbols(i))Object.prototype.propertyIsEnumerable.call(i,s)&&An(i[s],e,t)}return i}/** +**/let ds;class By{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&ds&&(ds.active?(this.parent=ds,this.index=(ds.scopes||(ds.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){const s=this.scopes.slice();for(e=0,t=s.length;e0&&--this._on===0){if(ds===this)ds=this.prevScope;else{let e=ds;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,s;for(t=0,s=this.effects.length;t0)return;if(qa){let e=qa;for(qa=void 0;e;){const t=e.next;e.next=void 0,e.flags&=-9,e=t}}let i;for(;za;){let e=za;for(za=void 0;e;){const t=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(s){i||(i=s)}e=t}}if(i)throw i}function Vy(i){for(let e=i.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Yy(i){let e,t=i.depsTail,s=t;for(;s;){const n=s.prevDep;s.version===-1?(s===t&&(t=n),Km(s),dM(s)):e=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=n}i.deps=e,i.depsTail=t}function yf(i){for(let e=i.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(Gy(e.dep.computed)||e.dep.version!==e.version))return!0;return!!i._dirty}function Gy(i){if(i.flags&4&&!(i.flags&16)||(i.flags&=-17,i.globalVersion===al)||(i.globalVersion=al,!i.isSSR&&i.flags&128&&(!i.deps&&!i._dirty||!yf(i))))return;i.flags|=2;const e=i.dep,t=Dt,s=Ei;Dt=i,Ei=!0;try{Vy(i);const n=i.fn(i._value);(e.version===0||Qi(n,i._value))&&(i.flags|=128,i._value=n,e.version++)}catch(n){throw e.version++,n}finally{Dt=t,Ei=s,Yy(i),i.flags&=-3}}function Km(i,e=!1){const{dep:t,prevSub:s,nextSub:n}=i;if(s&&(s.nextSub=n,i.prevSub=void 0),n&&(n.prevSub=s,i.nextSub=void 0),t.subs===i&&(t.subs=s,!s&&t.computed)){t.computed.flags&=-5;for(let r=t.computed.deps;r;r=r.nextDep)Km(r,!0)}!e&&!--t.sc&&t.map&&t.map.delete(t.key)}function dM(i){const{prevDep:e,nextDep:t}=i;e&&(e.nextDep=t,i.prevDep=void 0),t&&(t.prevDep=e,i.nextDep=void 0)}let Ei=!0;const jy=[];function $n(){jy.push(Ei),Ei=!1}function Xn(){const i=jy.pop();Ei=i===void 0?!0:i}function Yp(i){const{cleanup:e}=i;if(i.cleanup=void 0,e){const t=Dt;Dt=void 0;try{e()}finally{Dt=t}}}let al=0;class fM{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Zm{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!Dt||!Ei||Dt===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==Dt)t=this.activeLink=new fM(Dt,this),Dt.deps?(t.prevDep=Dt.depsTail,Dt.depsTail.nextDep=t,Dt.depsTail=t):Dt.deps=Dt.depsTail=t,Hy(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){const s=t.nextDep;s.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=s),t.prevDep=Dt.depsTail,t.nextDep=void 0,Dt.depsTail.nextDep=t,Dt.depsTail=t,Dt.deps===t&&(Dt.deps=s)}return t}trigger(e){this.version++,al++,this.notify(e)}notify(e){zm();try{for(let t=this.subs;t;t=t.prevSub)t.sub.notify()&&t.sub.dep.notify()}finally{qm()}}}function Hy(i){if(i.dep.sc++,i.sub.flags&4){const e=i.dep.computed;if(e&&!i.dep.subs){e.flags|=20;for(let s=e.deps;s;s=s.nextDep)Hy(s)}const t=i.dep.subs;t!==i&&(i.prevSub=t,t&&(t.nextSub=i)),i.dep.subs=i}}const Vc=new WeakMap,so=Symbol(""),xf=Symbol(""),ll=Symbol("");function ks(i,e,t){if(Ei&&Dt){let s=Vc.get(i);s||Vc.set(i,s=new Map);let n=s.get(t);n||(s.set(t,n=new Zm),n.map=s,n.key=t),n.track()}}function Cn(i,e,t,s,n,r){const o=Vc.get(i);if(!o){al++;return}const a=l=>{l&&l.trigger()};if(zm(),e==="clear")o.forEach(a);else{const l=We(i),c=l&&Xh(t);if(l&&t==="length"){const h=Number(s);o.forEach((u,d)=>{(d==="length"||d===ll||!si(d)&&d>=h)&&a(u)})}else switch((t!==void 0||o.has(void 0))&&a(o.get(t)),c&&a(o.get(ll)),e){case"add":l?c&&a(o.get("length")):(a(o.get(so)),jo(i)&&a(o.get(xf)));break;case"delete":l||(a(o.get(so)),jo(i)&&a(o.get(xf)));break;case"set":jo(i)&&a(o.get(so));break}}qm()}function mM(i,e){const t=Vc.get(i);return t&&t.get(e)}function Mo(i){const e=St(i);return e===i?e:(ks(e,"iterate",ll),ti(i)?e:e.map(Fi))}function jh(i){return ks(i=St(i),"iterate",ll),i}function qi(i,e){return Vn(i)?ra(Bn(i)?Fi(e):e):Fi(e)}const pM={__proto__:null,[Symbol.iterator](){return Cu(this,Symbol.iterator,i=>qi(this,i))},concat(...i){return Mo(this).concat(...i.map(e=>We(e)?Mo(e):e))},entries(){return Cu(this,"entries",i=>(i[1]=qi(this,i[1]),i))},every(i,e){return pn(this,"every",i,e,void 0,arguments)},filter(i,e){return pn(this,"filter",i,e,t=>t.map(s=>qi(this,s)),arguments)},find(i,e){return pn(this,"find",i,e,t=>qi(this,t),arguments)},findIndex(i,e){return pn(this,"findIndex",i,e,void 0,arguments)},findLast(i,e){return pn(this,"findLast",i,e,t=>qi(this,t),arguments)},findLastIndex(i,e){return pn(this,"findLastIndex",i,e,void 0,arguments)},forEach(i,e){return pn(this,"forEach",i,e,void 0,arguments)},includes(...i){return Au(this,"includes",i)},indexOf(...i){return Au(this,"indexOf",i)},join(i){return Mo(this).join(i)},lastIndexOf(...i){return Au(this,"lastIndexOf",i)},map(i,e){return pn(this,"map",i,e,void 0,arguments)},pop(){return Ca(this,"pop")},push(...i){return Ca(this,"push",i)},reduce(i,...e){return Gp(this,"reduce",i,e)},reduceRight(i,...e){return Gp(this,"reduceRight",i,e)},shift(){return Ca(this,"shift")},some(i,e){return pn(this,"some",i,e,void 0,arguments)},splice(...i){return Ca(this,"splice",i)},toReversed(){return Mo(this).toReversed()},toSorted(i){return Mo(this).toSorted(i)},toSpliced(...i){return Mo(this).toSpliced(...i)},unshift(...i){return Ca(this,"unshift",i)},values(){return Cu(this,"values",i=>qi(this,i))}};function Cu(i,e,t){const s=jh(i),n=s[e]();return s!==i&&!ti(i)&&(n._next=n.next,n.next=()=>{const r=n._next();return r.done||(r.value=t(r.value)),r}),n}const gM=Array.prototype;function pn(i,e,t,s,n,r){const o=jh(i),a=o!==i&&!ti(i),l=o[e];if(l!==gM[e]){const u=l.apply(i,r);return a?Fi(u):u}let c=t;o!==i&&(a?c=function(u,d){return t.call(this,qi(i,u),d,i)}:t.length>2&&(c=function(u,d){return t.call(this,u,d,i)}));const h=l.call(o,c,s);return a&&n?n(h):h}function Gp(i,e,t,s){const n=jh(i),r=n!==i&&!ti(i);let o=t,a=!1;n!==i&&(r?(a=s.length===0,o=function(c,h,u){return a&&(a=!1,c=qi(i,c)),t.call(this,c,qi(i,h),u,i)}):t.length>3&&(o=function(c,h,u){return t.call(this,c,h,u,i)}));const l=n[e](o,...s);return a?qi(i,l):l}function Au(i,e,t){const s=St(i);ks(s,"iterate",ll);const n=s[e](...t);return(n===-1||n===!1)&&Hh(t[0])?(t[0]=St(t[0]),s[e](...t)):n}function Ca(i,e,t=[]){$n(),zm();const s=St(i)[e].apply(i,t);return qm(),Xn(),s}const vM=jm("__proto__,__v_isRef,__isVue"),Wy=new Set(Object.getOwnPropertyNames(Symbol).filter(i=>i!=="arguments"&&i!=="caller").map(i=>Symbol[i]).filter(si));function yM(i){si(i)||(i=String(i));const e=St(this);return ks(e,"has",i),e.hasOwnProperty(i)}class zy{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,s){if(t==="__v_skip")return e.__v_skip;const n=this._isReadonly,r=this._isShallow;if(t==="__v_isReactive")return!n;if(t==="__v_isReadonly")return n;if(t==="__v_isShallow")return r;if(t==="__v_raw")return s===(n?r?EM:Jy:r?Zy:Ky).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(s)?e:void 0;const o=We(e);if(!n){let l;if(o&&(l=pM[t]))return l;if(t==="hasOwnProperty")return yM}const a=Reflect.get(e,t,Gt(e)?e:s);if((si(t)?Wy.has(t):vM(t))||(n||ks(e,"get",t),r))return a;if(Gt(a)){const l=o&&Xh(t)?a:a.value;return n&&kt(l)?wf(l):l}return kt(a)?n?wf(a):mo(a):a}}class qy extends zy{constructor(e=!1){super(!1,e)}set(e,t,s,n){let r=e[t];const o=We(e)&&Xh(t);if(!this._isShallow){const c=Vn(r);if(!ti(s)&&!Vn(s)&&(r=St(r),s=St(s)),!o&&Gt(r)&&!Gt(s))return c||(r.value=s),!0}const a=o?Number(t)i,$l=i=>Reflect.getPrototypeOf(i);function MM(i,e,t){return function(...s){const n=this.__v_raw,r=St(n),o=jo(r),a=i==="entries"||i===Symbol.iterator&&o,l=i==="keys"&&o,c=n[i](...s),h=t?bf:e?ra:Fi;return!e&&ks(r,"iterate",l?xf:so),ps(Object.create(c),{next(){const{value:u,done:d}=c.next();return d?{value:u,done:d}:{value:a?[h(u[0]),h(u[1])]:h(u),done:d}}})}}function Xl(i){return function(...e){return i==="delete"?!1:i==="clear"?void 0:this}}function TM(i,e){const t={get(n){const r=this.__v_raw,o=St(r),a=St(n);i||(Qi(n,a)&&ks(o,"get",n),ks(o,"get",a));const{has:l}=$l(o),c=e?bf:i?ra:Fi;if(l.call(o,n))return c(r.get(n));if(l.call(o,a))return c(r.get(a));r!==o&&r.get(n)},get size(){const n=this.__v_raw;return!i&&ks(St(n),"iterate",so),n.size},has(n){const r=this.__v_raw,o=St(r),a=St(n);return i||(Qi(n,a)&&ks(o,"has",n),ks(o,"has",a)),n===a?r.has(n):r.has(n)||r.has(a)},forEach(n,r){const o=this,a=o.__v_raw,l=St(a),c=e?bf:i?ra:Fi;return!i&&ks(l,"iterate",so),a.forEach((h,u)=>n.call(r,c(h),c(u),o))}};return ps(t,i?{add:Xl("add"),set:Xl("set"),delete:Xl("delete"),clear:Xl("clear")}:{add(n){const r=St(this),o=$l(r),a=St(n),l=!e&&!ti(n)&&!Vn(n)?a:n;return o.has.call(r,l)||Qi(n,l)&&o.has.call(r,n)||Qi(a,l)&&o.has.call(r,a)||(r.add(l),Cn(r,"add",l,l)),this},set(n,r){!e&&!ti(r)&&!Vn(r)&&(r=St(r));const o=St(this),{has:a,get:l}=$l(o);let c=a.call(o,n);c||(n=St(n),c=a.call(o,n));const h=l.call(o,n);return o.set(n,r),c?Qi(r,h)&&Cn(o,"set",n,r):Cn(o,"add",n,r),this},delete(n){const r=St(this),{has:o,get:a}=$l(r);let l=o.call(r,n);l||(n=St(n),l=o.call(r,n)),a&&a.call(r,n);const c=r.delete(n);return l&&Cn(r,"delete",n,void 0),c},clear(){const n=St(this),r=n.size!==0,o=n.clear();return r&&Cn(n,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(n=>{t[n]=MM(n,i,e)}),t}function Jm(i,e){const t=TM(i,e);return(s,n,r)=>n==="__v_isReactive"?!i:n==="__v_isReadonly"?i:n==="__v_raw"?s:Reflect.get(Pt(t,n)&&n in s?t:s,n,r)}const _M={get:Jm(!1,!1)},CM={get:Jm(!1,!0)},AM={get:Jm(!0,!1)};const Ky=new WeakMap,Zy=new WeakMap,Jy=new WeakMap,EM=new WeakMap;function IM(i){switch(i){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function mo(i){return Vn(i)?i:Qm(i,!1,bM,_M,Ky)}function RM(i){return Qm(i,!1,SM,CM,Zy)}function wf(i){return Qm(i,!0,wM,AM,Jy)}function Qm(i,e,t,s,n){if(!kt(i)||i.__v_raw&&!(e&&i.__v_isReactive)||i.__v_skip||!Object.isExtensible(i))return i;const r=n.get(i);if(r)return r;const o=IM(eM(i));if(o===0)return i;const a=new Proxy(i,o===2?s:t);return n.set(i,a),a}function Bn(i){return Vn(i)?Bn(i.__v_raw):!!(i&&i.__v_isReactive)}function Vn(i){return!!(i&&i.__v_isReadonly)}function ti(i){return!!(i&&i.__v_isShallow)}function Hh(i){return i?!!i.__v_raw:!1}function St(i){const e=i&&i.__v_raw;return e?St(e):i}function ur(i){return!Pt(i,"__v_skip")&&Object.isExtensible(i)&&ky(i,"__v_skip",!0),i}const Fi=i=>kt(i)?mo(i):i,ra=i=>kt(i)?wf(i):i;function Gt(i){return i?i.__v_isRef===!0:!1}function Fe(i){return PM(i,!1)}function PM(i,e){return Gt(i)?i:new kM(i,e)}class kM{constructor(e,t){this.dep=new Zm,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:St(e),this._value=t?e:Fi(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){const t=this._rawValue,s=this.__v_isShallow||ti(e)||Vn(e);e=s?e:St(e),Qi(e,t)&&(this._rawValue=e,this._value=s?e:Fi(e),this.dep.trigger())}}function R(i){return Gt(i)?i.value:i}const FM={get:(i,e,t)=>e==="__v_raw"?i:R(Reflect.get(i,e,t)),set:(i,e,t,s)=>{const n=i[e];return Gt(n)&&!Gt(t)?(n.value=t,!0):Reflect.set(i,e,t,s)}};function Qy(i){return Bn(i)?i:new Proxy(i,FM)}function OM(i){const e=We(i)?new Array(i.length):{};for(const t in i)e[t]=BM(i,t);return e}class LM{constructor(e,t,s){this._object=e,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._key=si(t)?t:String(t),this._raw=St(e);let n=!0,r=e;if(!We(e)||si(this._key)||!Xh(this._key))do n=!Hh(r)||ti(r);while(n&&(r=r.__v_raw));this._shallow=n}get value(){let e=this._object[this._key];return this._shallow&&(e=R(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&Gt(this._raw[this._key])){const t=this._object[this._key];if(Gt(t)){t.value=e;return}}this._object[this._key]=e}get dep(){return mM(this._raw,this._key)}}function BM(i,e,t){return new LM(i,e,t)}class NM{constructor(e,t,s){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Zm(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=al-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Dt!==this)return Xy(this,!0),!0}get value(){const e=this.dep.track();return Gy(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function DM(i,e,t=!1){let s,n;return it(i)?s=i:(s=i.get,n=i.set),new NM(s,n,t)}const Vl={},Yc=new WeakMap;let $r;function UM(i,e=!1,t=$r){if(t){let s=Yc.get(t);s||Yc.set(t,s=[]),s.push(i)}}function $M(i,e,t=Lt){const{immediate:s,deep:n,once:r,scheduler:o,augmentJob:a,call:l}=t,c=M=>n?M:ti(M)||n===!1||n===0?An(M,1):An(M);let h,u,d,f,p=!1,m=!1;if(Gt(i)?(u=()=>i.value,p=ti(i)):Bn(i)?(u=()=>c(i),p=!0):We(i)?(m=!0,p=i.some(M=>Bn(M)||ti(M)),u=()=>i.map(M=>{if(Gt(M))return M.value;if(Bn(M))return c(M);if(it(M))return l?l(M,2):M()})):it(i)?e?u=l?()=>l(i,2):i:u=()=>{if(d){$n();try{d()}finally{Xn()}}const M=$r;$r=h;try{return l?l(i,3,[f]):i(f)}finally{$r=M}}:u=on,e&&n){const M=u,C=n===!0?1/0:n;u=()=>An(M(),C)}const g=Dy(),v=()=>{h.stop(),g&&g.active&&Hm(g.effects,h)};if(r&&e){const M=e;e=(...C)=>{const w=M(...C);return v(),w}}let y=m?new Array(i.length).fill(Vl):Vl;const x=M=>{if(!(!(h.flags&1)||!h.dirty&&!M))if(e){const C=h.run();if(M||n||p||(m?C.some((w,b)=>Qi(w,y[b])):Qi(C,y))){d&&d();const w=$r;$r=h;try{const b=[C,y===Vl?void 0:m&&y[0]===Vl?[]:y,f];y=C,l?l(e,3,b):e(...b)}finally{$r=w}}}else h.run()};return a&&a(x),h=new Uy(u),h.scheduler=o?()=>o(x,!1):x,f=M=>UM(M,!1,h),d=h.onStop=()=>{const M=Yc.get(h);if(M){if(l)l(M,4);else for(const C of M)C();Yc.delete(h)}},e?s?x(!0):y=h.run():o?o(x.bind(null,!0),!0):h.run(),v.pause=h.pause.bind(h),v.resume=h.resume.bind(h),v.stop=v,v}function An(i,e=1/0,t){if(e<=0||!kt(i)||i.__v_skip||(t=t||new Map,(t.get(i)||0)>=e))return i;if(t.set(i,e),e--,Gt(i))An(i.value,e,t);else if(We(i))for(let s=0;s{An(s,e,t)});else if(Ry(i)){for(const s in i)An(i[s],e,t);for(const s of Object.getOwnPropertySymbols(i))Object.prototype.propertyIsEnumerable.call(i,s)&&An(i[s],e,t)}return i}/** * @vue/runtime-core v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function _l(i,e,t,s){try{return s?i(...s):i()}catch(n){Wh(n,e,t)}}function pi(i,e,t,s){if(it(i)){const n=_l(i,e,t,s);return n&&Cy(n)&&n.catch(r=>{Wh(r,e,t)}),n}if(We(i)){const n=[];for(let r=0;r>>1,n=$s[s],r=cl(n);r=cl(t)?$s.push(i):$s.splice($M(e),0,i),i.flags|=1,Qy()}}function Qy(){Gc||(Gc=Jy.then(tx))}function XM(i){if(!We(i))sr&&i.id===-1?sr.splice(ko+1,0,i):i.flags&1||(Ho.push(i),i.flags|=1);else for(let e=0;ecl(t)-cl(s));if(Ho.length=0,sr){for(let t=0;ti.id==null?i.flags&2?-1:1/0:i.id;function tx(i){try{for(Gi=0;Gi<$s.length;Gi++){const e=$s[Gi];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),_l(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;Gi<$s.length;Gi++){const e=$s[Gi];e&&(e.flags&=-2)}Gi=-1,$s.length=0,ex(),Gc=null,($s.length||Ho.length)&&tx()}}let Ls=null,sx=null;function jc(i){const e=Ls;return Ls=i,sx=i&&i.type.__scopeId||null,e}function qh(i,e=Ls,t){if(!e||i._n)return i;const s=(...n)=>{s._d&&qc(-1);const r=jc(e),o=Nn.length;let a;try{a=i(...n)}finally{for(let l=Nn.length;l>o;l--)np();jc(r),s._d&&qc(1)}return a};return s._n=!0,s._c=!0,s._d=!0,s}function ce(i,e){if(Ls===null)return i;const t=tu(Ls),s=i.dirs||(i.dirs=[]);for(let n=0;n1)return t&&it(e)?e.call(s&&s.proxy):e}}function VM(){return!!(rp()||io)}const YM=Symbol.for("v-scx"),GM=()=>Wo(YM);function Fo(i,e){return ep(i,null,e)}function Cs(i,e,t){return ep(i,e,t)}function ep(i,e,t=Lt){const{immediate:s,deep:n,flush:r,once:o}=t,a=ms({},t),l=e&&s||!e&&r!=="post";let c;if(ml){if(r==="sync"){const f=GM();c=f.__watcherHandles||(f.__watcherHandles=[])}else if(!l){const f=()=>{};return f.stop=on,f.resume=on,f.pause=on,f}}const h=Xs;a.call=(f,p,m)=>pi(f,h,p,m);let u=!1;r==="post"?a.scheduler=f=>{Ns(f,h&&h.suspense)}:r!=="sync"&&(u=!0,a.scheduler=(f,p)=>{p?f():Qm(f)}),a.augmentJob=f=>{e&&(f.flags|=4),u&&(f.flags|=2,h&&(f.id=h.uid,f.i=h))};const d=DM(i,e,a);return ml&&(c?c.push(d):l&&d()),d}function jM(i,e,t){const s=this.proxy,n=Yt(i)?i.includes(".")?nx(s,i):()=>s[i]:i.bind(s,s);let r;it(e)?r=e:(r=e.handler,t=e);const o=Al(this),a=ep(n,r.bind(s),t);return o(),a}function nx(i,e){const t=e.split(".");return()=>{let s=i;for(let n=0;ni.__isTeleport,Hr=i=>i&&(i.disabled||i.disabled===""),HM=i=>i&&(i.defer||i.defer===""),jp=i=>typeof SVGElement<"u"&&i instanceof SVGElement,Hp=i=>typeof MathMLElement=="function"&&i instanceof MathMLElement,wf=(i,e)=>{const t=i&&i.to;return Yt(t)?e?e(t):null:t},WM={name:"Teleport",__isTeleport:!0,process(i,e,t,s,n,r,o,a,l,c){const{mc:h,pc:u,pbc:d,o:{insert:f,querySelector:p,createText:m,createComment:g,parentNode:y}}=c,x=Hr(e.props);let{dynamicChildren:v}=e;const w=(b,A,P)=>{b.shapeFlag&16&&h(b.children,A,P,n,r,o,a,l)},_=(b=e)=>{const A=Hr(b.props),P=b.target=wf(b.props,p),F=Sf(P,b,m,f);P&&(o!=="svg"&&jp(P)?o="svg":o!=="mathml"&&Hp(P)&&(o="mathml"),n&&n.isCE&&(n.ce._teleportTargets||(n.ce._teleportTargets=new Set)).add(P),A||(w(b,P,F),Ba(b,!1)))},S=b=>{const A=()=>{if(Jn.get(b)===A){if(Jn.delete(b),Hr(b.props)){const P=y(b.el)||t;w(b,P,b.anchor),Ba(b,!0)}_(b)}};Jn.set(b,A),Ns(A,r)};if(i==null){const b=e.el=m(""),A=e.anchor=m("");if(f(b,t,s),f(A,t,s),HM(e.props)||r&&r.pendingBranch){S(e);return}x&&(w(e,t,A),Ba(e,!0)),_()}else{e.el=i.el;const b=e.anchor=i.anchor,A=Jn.get(i);if(A){A.flags|=8,Jn.delete(i),S(e);return}e.targetStart=i.targetStart;const P=e.target=i.target,F=e.targetAnchor=i.targetAnchor,E=Hr(i.props),k=E?t:P,B=E?b:F;if(o==="svg"||jp(P)?o="svg":(o==="mathml"||Hp(P))&&(o="mathml"),v?(d(i.dynamicChildren,v,k,n,r,o,a),ip(i,e,!0)):l||u(i,e,k,B,n,r,o,a,!1),x)E?e.props&&i.props&&e.props.to!==i.props.to&&(e.props.to=i.props.to):Yl(e,t,b,c,1);else if((e.props&&e.props.to)!==(i.props&&i.props.to)){const D=wf(e.props,p);D&&(e.target=D,Yl(e,D,null,c,0))}else E&&Yl(e,P,F,c,1);Ba(e,x)}},remove(i,e,t,{um:s,o:{remove:n}},r){const{shapeFlag:o,children:a,anchor:l,targetStart:c,targetAnchor:h,target:u,props:d}=i,f=Hr(d),p=r||!f,m=Jn.get(i);if(m&&(m.flags|=8,Jn.delete(i)),u&&(n(c),n(h)),r&&n(l),!m&&(f||u)&&o&16)for(let g=0;g{i.isMounted=!0}),po(()=>{i.isUnmounting=!0}),i}const oi=[Function,Array],ox={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:oi,onEnter:oi,onAfterEnter:oi,onEnterCancelled:oi,onBeforeLeave:oi,onLeave:oi,onAfterLeave:oi,onLeaveCancelled:oi,onBeforeAppear:oi,onAppear:oi,onAfterAppear:oi,onAppearCancelled:oi},ax=i=>{const e=i.subTree;return e.component?ax(e.component):e},ZM={name:"BaseTransition",props:ox,setup(i,{slots:e}){const t=rp(),s=KM();return()=>{const n=e.default&&hx(e.default(),!0),r=n&&n.length?lx(n):t.subTree?xe():void 0;if(!r)return;const o=St(i),{mode:a}=o;if(s.isLeaving)return Eu(r);const l=Hc(r);if(!l)return Eu(r);let c=Mf(l,o,s,t,u=>c=u);l.type!==Os&&hl(l,c);let h=t.subTree&&Hc(t.subTree);if(h&&h.type!==Os&&!Wr(h,l)&&ax(t).type!==Os){let u=Mf(h,o,s,t);if(hl(h,u),a==="out-in"&&l.type!==Os)return s.isLeaving=!0,u.afterLeave=()=>{s.isLeaving=!1,t.job.flags&8||t.update(),delete u.afterLeave,h=void 0},Eu(r);a==="in-out"&&l.type!==Os?u.delayLeave=(d,f,p)=>{const m=cx(s,h);m[String(h.key)]=h,d[hi]=()=>{f(),d[hi]=void 0,delete c.delayedLeave,h=void 0},c.delayedLeave=()=>{p(),delete c.delayedLeave,h=void 0}}:h=void 0}else h&&(h=void 0);return r}}};function lx(i){let e=i[0];if(i.length>1){for(const t of i)if(t.type!==Os){e=t;break}}return e}const JM=ZM;function cx(i,e){const{leavingVNodes:t}=i;let s=t.get(e.type);return s||(s=Object.create(null),t.set(e.type,s)),s}function Mf(i,e,t,s,n){const{appear:r,mode:o,persisted:a=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:h,onEnterCancelled:u,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:m,onBeforeAppear:g,onAppear:y,onAfterAppear:x,onAppearCancelled:v}=e,w=String(i.key),_=cx(t,i),S=(P,F)=>{P&&pi(P,s,9,F)},b=(P,F)=>{const E=F[1];S(P,F),We(P)?P.every(k=>k.length<=1)&&E():P.length<=1&&E()},A={mode:o,persisted:a,beforeEnter(P){let F=l;if(!t.isMounted)if(r)F=g||l;else return;P[hi]&&P[hi](!0);const E=_[w];E&&Wr(i,E)&&E.el[hi]&&E.el[hi](),S(F,[P])},enter(P){if(_[w]===i)return;let F=c,E=h,k=u;if(!t.isMounted)if(r)F=y||c,E=x||h,k=v||u;else return;let B=!1;P[Aa]=X=>{B||(B=!0,X?S(k,[P]):S(E,[P]),A.delayedLeave&&A.delayedLeave(),P[Aa]=void 0)};const D=P[Aa].bind(null,!1);F?b(F,[P,D]):D()},leave(P,F){const E=String(i.key);if(P[Aa]&&P[Aa](!0),t.isUnmounting)return F();S(d,[P]);let k=!1;P[hi]=D=>{k||(k=!0,F(),D?S(m,[P]):S(p,[P]),P[hi]=void 0,_[E]===i&&delete _[E])};const B=P[hi].bind(null,!1);_[E]=i,f?b(f,[P,B]):B()},clone(P){const F=Mf(P,e,t,s,n);return n&&n(F),F}};return A}function Eu(i){if(Zh(i))return i=wr(i),i.children=null,i}function Hc(i){if(!Zh(i))return Kh(i.type)&&i.children?lx(i.children):i;if(i.component)return i.component.subTree;const{shapeFlag:e,children:t}=i;if(t){if(e&16)return t[0];if(e&32&&it(t.default))return t.default()}}function hl(i,e){if(i.shapeFlag&6&&i.component){i.transition=e;const t=i.component.subTree;hl(Kh(t.type)&&Hc(t)||t,e)}else i.shapeFlag&128?(i.ssContent.transition=e.clone(i.ssContent),i.ssFallback.transition=e.clone(i.ssFallback)):i.transition=e}function hx(i,e=!1,t){let s=[],n=0;for(let r=0;r1)for(let r=0;rKa(m,e&&(We(e)?e[g]:e),t,s,n));return}if(zo(s)&&!n){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Ka(i,e,t,s.component.subTree);return}const r=s.shapeFlag&4?tu(s.component):s.el,o=n?null:r,{i:a,r:l}=i,c=e&&e.r,h=a.refs===Lt?a.refs={}:a.refs,u=a.setupState,d=St(u),f=u===Lt?_y:m=>Wp(h,m)?!1:Pt(d,m),p=(m,g)=>!(g&&Wp(h,g));if(c!=null&&c!==l){if(zp(e),Yt(c))h[c]=null,f(c)&&(u[c]=null);else if(Gt(c)){const m=e;p(c,m.k)&&(c.value=null),m.k&&(h[m.k]=null)}}if(it(l))_l(l,a,12,[o,h]);else{const m=Yt(l),g=Gt(l);if(m||g){const y=()=>{if(i.f){const x=m?f(l)?u[l]:h[l]:p()||!i.k?l.value:h[i.k];if(n)We(x)&&jm(x,r);else if(We(x))x.includes(r)||x.push(r);else if(m)h[l]=[r],f(l)&&(u[l]=h[l]);else{const v=[r];p(l,i.k)&&(l.value=v),i.k&&(h[i.k]=v)}}else m?(h[l]=o,f(l)&&(u[l]=o)):g&&(p(l,i.k)&&(l.value=o),i.k&&(h[i.k]=o))};if(o){const x=()=>{y(),Wc.delete(i)};x.id=-1,Wc.set(i,x),Ns(x,t)}else zp(i),y()}}}function zp(i){const e=Wc.get(i);e&&(e.flags|=8,Wc.delete(i))}Gh().requestIdleCallback;Gh().cancelIdleCallback;const zo=i=>!!i.type.__asyncLoader,Zh=i=>i.type.__isKeepAlive;function QM(i,e){dx(i,"a",e)}function eT(i,e){dx(i,"da",e)}function dx(i,e,t=Xs){const s=i.__wdc||(i.__wdc=()=>{let n=t;for(;n;){if(n.isDeactivated)return;n=n.parent}return i()});if(Jh(e,s,t),t){let n=t.parent;for(;n&&n.parent;)Zh(n.parent.vnode)&&tT(s,e,t,n),n=n.parent}}function tT(i,e,t,s){const n=Jh(e,i,s,!0);Cl(()=>{jm(s[e],n)},t)}function Jh(i,e,t=Xs,s=!1){if(t){const n=t[i]||(t[i]=[]),r=e.__weh||(e.__weh=(...o)=>{$n();const a=Al(t),l=pi(e,t,i,o);return a(),Xn(),l});return s?n.unshift(r):n.push(r),r}}const Wn=i=>(e,t=Xs)=>{(!ml||i==="sp")&&Jh(i,(...s)=>e(...s),t)},sT=Wn("bm"),Oi=Wn("m"),iT=Wn("bu"),nT=Wn("u"),po=Wn("bum"),Cl=Wn("um"),rT=Wn("sp"),oT=Wn("rtg"),aT=Wn("rtc");function lT(i,e=Xs){Jh("ec",i,e)}const cT=Symbol.for("v-ndc");function Ft(i,e,t,s){let n;const r=t,o=We(i);if(o||Yt(i)){const a=o&&Bn(i);let l=!1,c=!1;a&&(l=!ti(i),c=Vn(i),i=jh(i)),n=new Array(i.length);for(let h=0,u=i.length;he(a,l,void 0,r));else{const a=Object.keys(i);n=new Array(a.length);for(let l=0,c=a.length;l0;return z(),At(Ce,null,[be("slot",c,s)],h?-2:64)}let o=i[e];o&&o._c&&(o._d=!1);const a=Nn.length;z();let l;try{const c=o&&fx(o(t)),h=t.key||r||c&&c.key;l=At(Ce,{key:(h&&!si(h)?h:`_${e}`)+(!c&&s?"_fb":"")},c||(s?s():[]),c&&i._===1?64:-2)}catch(c){for(let h=Nn.length;h>a;h--)np();throw c}finally{o&&o._c&&(o._d=!0)}return l}function fx(i){return i.some(e=>dl(e)?!(e.type===Os||e.type===Ce&&!fx(e.children)):!0)?i:null}const Tf=i=>i?kx(i)?tu(i):Tf(i.parent):null,Za=ms(Object.create(null),{$:i=>i,$el:i=>i.vnode.el,$data:i=>i.data,$props:i=>i.props,$attrs:i=>i.attrs,$slots:i=>i.slots,$refs:i=>i.refs,$parent:i=>Tf(i.parent),$root:i=>Tf(i.root),$host:i=>i.ce,$emit:i=>i.emit,$options:i=>px(i),$forceUpdate:i=>i.f||(i.f=()=>{Qm(i.update)}),$nextTick:i=>i.n||(i.n=zh.bind(i.proxy)),$watch:i=>jM.bind(i)}),Iu=(i,e)=>i!==Lt&&!i.__isScriptSetup&&Pt(i,e),uT={get({_:i},e){if(e==="__v_skip")return!0;const{ctx:t,setupState:s,data:n,props:r,accessCache:o,type:a,appContext:l}=i;if(e[0]!=="$"){const d=o[e];if(d!==void 0)switch(d){case 1:return s[e];case 2:return n[e];case 4:return t[e];case 3:return r[e]}else{if(Iu(s,e))return o[e]=1,s[e];if(n!==Lt&&Pt(n,e))return o[e]=2,n[e];if(Pt(r,e))return o[e]=3,r[e];if(t!==Lt&&Pt(t,e))return o[e]=4,t[e];_f&&(o[e]=0)}}const c=Za[e];let h,u;if(c)return e==="$attrs"&&ks(i.attrs,"get",""),c(i);if((h=a.__cssModules)&&(h=h[e]))return h;if(t!==Lt&&Pt(t,e))return o[e]=4,t[e];if(u=l.config.globalProperties,Pt(u,e))return u[e]},set({_:i},e,t){const{data:s,setupState:n,ctx:r}=i;return Iu(n,e)?(n[e]=t,!0):s!==Lt&&Pt(s,e)?(s[e]=t,!0):Pt(i.props,e)||e[0]==="$"&&e.slice(1)in i?!1:(r[e]=t,!0)},has({_:{data:i,setupState:e,accessCache:t,ctx:s,appContext:n,props:r,type:o}},a){let l;return!!(t[a]||i!==Lt&&a[0]!=="$"&&Pt(i,a)||Iu(e,a)||Pt(r,a)||Pt(s,a)||Pt(Za,a)||Pt(n.config.globalProperties,a)||(l=o.__cssModules)&&l[a])},defineProperty(i,e,t){return t.get!=null?i._.accessCache[e]=0:Pt(t,"value")&&this.set(i,e,t.value,null),Reflect.defineProperty(i,e,t)}};function qp(i){return We(i)?i.reduce((e,t)=>(e[t]=null,e),{}):i}let _f=!0;function dT(i){const e=px(i),t=i.proxy,s=i.ctx;_f=!1,e.beforeCreate&&Kp(e.beforeCreate,i,"bc");const{data:n,computed:r,methods:o,watch:a,provide:l,inject:c,created:h,beforeMount:u,mounted:d,beforeUpdate:f,updated:p,activated:m,deactivated:g,beforeDestroy:y,beforeUnmount:x,destroyed:v,unmounted:w,render:_,renderTracked:S,renderTriggered:b,errorCaptured:A,serverPrefetch:P,expose:F,inheritAttrs:E,components:k,directives:B,filters:D}=e;if(c&&fT(c,s,null),o)for(const U in o){const C=o[U];it(C)&&(s[U]=C.bind(t))}if(n){const U=n.call(t,t);kt(U)&&(i.data=mo(U))}if(_f=!0,r)for(const U in r){const C=r[U],R=it(C)?C.bind(t,t):it(C.get)?C.get.bind(t,t):on,O=!it(C)&&it(C.set)?C.set.bind(t):on,L=De({get:R,set:O});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>L.value,set:$=>L.value=$})}if(a)for(const U in a)mx(a[U],s,t,U);if(l){const U=it(l)?l.call(t):l;Reflect.ownKeys(U).forEach(C=>{ix(C,U[C])})}h&&Kp(h,i,"c");function N(U,C){We(C)?C.forEach(R=>U(R.bind(t))):C&&U(C.bind(t))}if(N(sT,u),N(Oi,d),N(iT,f),N(nT,p),N(QM,m),N(eT,g),N(lT,A),N(aT,S),N(oT,b),N(po,x),N(Cl,w),N(rT,P),We(F))if(F.length){const U=i.exposed||(i.exposed={});F.forEach(C=>{Object.defineProperty(U,C,{get:()=>t[C],set:R=>t[C]=R,enumerable:!0})})}else i.exposed||(i.exposed={});_&&i.render===on&&(i.render=_),E!=null&&(i.inheritAttrs=E),k&&(i.components=k),B&&(i.directives=B),P&&ux(i)}function fT(i,e,t=on){We(i)&&(i=Cf(i));for(const s in i){const n=i[s];let r;kt(n)?"default"in n?r=Wo(n.from||s,n.default,!0):r=Wo(n.from||s):r=Wo(n),Gt(r)?Object.defineProperty(e,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):e[s]=r}}function Kp(i,e,t){pi(We(i)?i.map(s=>s.bind(e.proxy)):i.bind(e.proxy),e,t)}function mx(i,e,t,s){let n=s.includes(".")?nx(t,s):()=>t[s];if(Yt(i)){const r=e[i];it(r)&&Cs(n,r)}else if(it(i))Cs(n,i.bind(t));else if(kt(i))if(We(i))i.forEach(r=>mx(r,e,t,s));else{const r=it(i.handler)?i.handler.bind(t):e[i.handler];it(r)&&Cs(n,r,i)}}function px(i){const e=i.type,{mixins:t,extends:s}=e,{mixins:n,optionsCache:r,config:{optionMergeStrategies:o}}=i.appContext,a=r.get(e);let l;return a?l=a:!n.length&&!t&&!s?l=e:(l={},n.length&&n.forEach(c=>zc(l,c,o,!0)),zc(l,e,o)),kt(e)&&r.set(e,l),l}function zc(i,e,t,s=!1){const{mixins:n,extends:r}=e;r&&zc(i,r,t,!0),n&&n.forEach(o=>zc(i,o,t,!0));for(const o in e)if(!(s&&o==="expose")){const a=mT[o]||t&&t[o];i[o]=a?a(i[o],e[o]):e[o]}return i}const mT={data:Zp,props:Jp,emits:Jp,methods:Na,computed:Na,beforeCreate:Bs,created:Bs,beforeMount:Bs,mounted:Bs,beforeUpdate:Bs,updated:Bs,beforeDestroy:Bs,beforeUnmount:Bs,destroyed:Bs,unmounted:Bs,activated:Bs,deactivated:Bs,errorCaptured:Bs,serverPrefetch:Bs,components:Na,directives:Na,watch:gT,provide:Zp,inject:pT};function Zp(i,e){return e?i?function(){return ms(it(i)?i.call(this,this):i,it(e)?e.call(this,this):e)}:e:i}function pT(i,e){return Na(Cf(i),Cf(e))}function Cf(i){if(We(i)){const e={};for(let t=0;te==="modelValue"||e==="model-value"?i.modelModifiers:i[`${e}Modifiers`]||i[`${Ai(e)}Modifiers`]||i[`${Tr(e)}Modifiers`];function bT(i,e,...t){if(i.isUnmounted)return;const s=i.vnode.props||Lt;let n=t;const r=e.startsWith("update:"),o=r&&xT(s,e.slice(7));o&&(o.trim&&(n=t.map(h=>Yt(h)?h.trim():h)),o.number&&(n=t.map(Yh)));let a,l=s[a=Mu(e)]||s[a=Mu(Ai(e))];!l&&r&&(l=s[a=Mu(Tr(e))]),l&&pi(l,i,6,n);const c=s[a+"Once"];if(c){if(!i.emitted)i.emitted={};else if(i.emitted[a])return;i.emitted[a]=!0,pi(c,i,6,n)}}const wT=new WeakMap;function vx(i,e,t=!1){const s=t?wT:e.emitsCache,n=s.get(i);if(n!==void 0)return n;const r=i.emits;let o={},a=!1;if(!it(i)){const l=c=>{const h=vx(c,e,!0);h&&(a=!0,ms(o,h))};!t&&e.mixins.length&&e.mixins.forEach(l),i.extends&&l(i.extends),i.mixins&&i.mixins.forEach(l)}return!r&&!a?(kt(i)&&s.set(i,null),null):(We(r)?r.forEach(l=>o[l]=null):ms(o,r),kt(i)&&s.set(i,o),o)}function Qh(i,e){return!i||!Uh(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),Pt(i,e[0].toLowerCase()+e.slice(1))||Pt(i,Tr(e))||Pt(i,e))}function Qp(i){const{type:e,vnode:t,proxy:s,withProxy:n,propsOptions:[r],slots:o,attrs:a,emit:l,render:c,renderCache:h,props:u,data:d,setupState:f,ctx:p,inheritAttrs:m}=i,g=jc(i);let y,x;try{if(t.shapeFlag&4){const w=n||s,_=w;y=Ki(c.call(_,w,h,u,f,d,p)),x=a}else{const w=e;y=Ki(w.length>1?w(u,{attrs:a,slots:o,emit:l}):w(u,null)),x=e.props?a:ST(a)}}catch(w){Nn.length=0,Wh(w,i,1),y=be(Os)}let v=y;if(x&&m!==!1){const w=Object.keys(x),{shapeFlag:_}=v;w.length&&_&7&&(r&&w.some($h)&&(x=MT(x,r)),v=wr(v,x,!1,!0))}if(t.dirs&&(v=wr(v,null,!1,!0),v.dirs=v.dirs?v.dirs.concat(t.dirs):t.dirs),t.transition){const w=Kh(v.type)&&Hc(v)||v;hl(w,t.transition)}return y=v,jc(g),y}const ST=i=>{let e;for(const t in i)(t==="class"||t==="style"||Uh(t))&&((e||(e={}))[t]=i[t]);return e},MT=(i,e)=>{const t={};for(const s in i)(!$h(s)||!(s.slice(9)in e))&&(t[s]=i[s]);return t};function TT(i,e,t){const{props:s,children:n,component:r}=i,{props:o,children:a,patchFlag:l}=e,c=r.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&l>=0){if(l&1024)return!0;if(l&16)return s?eg(s,o,c):!!o;if(l&8){const h=e.dynamicProps;for(let u=0;uObject.create(xx),wx=i=>Object.getPrototypeOf(i)===xx;function CT(i,e,t,s=!1){const n={},r=bx();i.propsDefaults=Object.create(null),Sx(i,e,n,r);for(const o in i.propsOptions[0])o in n||(n[o]=void 0);t?i.props=s?n:EM(n):i.type.props?i.props=n:i.props=r,i.attrs=r}function AT(i,e,t,s){const{props:n,attrs:r,vnode:{patchFlag:o}}=i,a=St(n),[l]=i.propsOptions;let c=!1;if((s||o>0)&&!(o&16)){if(o&8){const h=i.vnode.dynamicProps;for(let u=0;u{l=!0;const[d,f]=Mx(u,e,!0);ms(o,d),f&&a.push(...f)};!t&&e.mixins.length&&e.mixins.forEach(h),i.extends&&h(i.extends),i.mixins&&i.mixins.forEach(h)}if(!r&&!l)return kt(i)&&s.set(i,Go),Go;if(We(r))for(let h=0;hi==="_"||i==="_ctx"||i==="$stable",sp=i=>We(i)?i.map(Ki):[Ki(i)],IT=(i,e,t)=>{if(e._n)return e;const s=qh((...n)=>sp(e(...n)),t);return s._c=!1,s},Tx=(i,e,t)=>{const s=i._ctx;for(const n in i){if(tp(n))continue;const r=i[n];if(it(r))e[n]=IT(n,r,s);else if(r!=null){const o=sp(r);e[n]=()=>o}}},_x=(i,e)=>{const t=sp(e);i.slots.default=()=>t},Cx=(i,e,t)=>{for(const s in e)(t||!tp(s))&&(i[s]=e[s])},RT=(i,e,t)=>{const s=i.slots=bx();if(i.vnode.shapeFlag&32){const n=e._;n?(Cx(s,e,t),t&&Ry(s,"_",n,!0)):Tx(e,s)}else e&&_x(i,e)},PT=(i,e,t)=>{const{vnode:s,slots:n}=i;let r=!0,o=Lt;if(s.shapeFlag&32){const a=e._;a?t&&a===1?r=!1:Cx(n,e,t):(r=!e.$stable,Tx(e,n)),o=e}else e&&(_x(i,e),o={default:1});if(r)for(const a in n)!tp(a)&&o[a]==null&&delete n[a]},Ns=BT;function kT(i){return FT(i)}function FT(i,e){const t=Gh();t.__VUE__=!0;const{insert:s,remove:n,patchProp:r,createElement:o,createText:a,createComment:l,setText:c,setElementText:h,parentNode:u,nextSibling:d,setScopeId:f=on,insertStaticContent:p}=i,m=(Y,W,H,G=null,q=null,se=null,ue=void 0,ne=null,de=!!W.dynamicChildren)=>{if(Y===W)return;Y&&!Wr(Y,W)&&(G=re(Y),$(Y,q,se,!0),Y=null),W.patchFlag===-2&&(de=!1,W.dynamicChildren=null);const{type:le,ref:Re,shapeFlag:we}=W;switch(le){case eu:g(Y,W,H,G);break;case Os:y(Y,W,H,G);break;case _c:Y==null&&x(W,H,G,ue);break;case Ce:k(Y,W,H,G,q,se,ue,ne,de);break;default:we&1?_(Y,W,H,G,q,se,ue,ne,de):we&6?B(Y,W,H,G,q,se,ue,ne,de):(we&64||we&128)&&le.process(Y,W,H,G,q,se,ue,ne,de,he)}Re!=null&&q?Ka(Re,Y&&Y.ref,se,W||Y,!W):Re==null&&Y&&Y.ref!=null&&Ka(Y.ref,null,se,Y,!0)},g=(Y,W,H,G)=>{if(Y==null)s(W.el=a(W.children),H,G);else{const q=W.el=Y.el;W.children!==Y.children&&c(q,W.children)}},y=(Y,W,H,G)=>{Y==null?s(W.el=l(W.children||""),H,G):W.el=Y.el},x=(Y,W,H,G)=>{[Y.el,Y.anchor]=p(Y.children,W,H,G,Y.el,Y.anchor)},v=({el:Y,anchor:W},H,G)=>{let q;for(;Y&&Y!==W;)q=d(Y),s(Y,H,G),Y=q;s(W,H,G)},w=({el:Y,anchor:W})=>{let H;for(;Y&&Y!==W;)H=d(Y),n(Y),Y=H;n(W)},_=(Y,W,H,G,q,se,ue,ne,de)=>{if(W.type==="svg"?ue="svg":W.type==="math"&&(ue="mathml"),Y==null)S(W,H,G,q,se,ue,ne,de);else{const le=Y.el&&Y.el._isVueCE?Y.el:null;try{le&&le._beginPatch(),P(Y,W,q,se,ue,ne,de)}finally{le&&le._endPatch()}}},S=(Y,W,H,G,q,se,ue,ne)=>{let de,le;const{props:Re,shapeFlag:we,transition:me,dirs:Ue}=Y;if(de=Y.el=o(Y.type,se,Re&&Re.is,Re),we&8?h(de,Y.children):we&16&&A(Y.children,de,null,G,q,Ru(Y,se),ue,ne),Ue&&Pr(Y,null,G,"created"),b(de,Y,Y.scopeId,ue,G),Re){for(const qe in Re)qe!=="value"&&!Wa(qe)&&r(de,qe,null,Re[qe],se,G);"value"in Re&&r(de,"value",null,Re.value,se),(le=Re.onVnodeBeforeMount)&&Di(le,G,Y)}Ue&&Pr(Y,null,G,"beforeMount");const Je=OT(q,me);Je&&me.beforeEnter(de),s(de,W,H),((le=Re&&Re.onVnodeMounted)||Je||Ue)&&Ns(()=>{try{le&&Di(le,G,Y),Je&&me.enter(de),Ue&&Pr(Y,null,G,"mounted")}finally{}},q)},b=(Y,W,H,G,q)=>{if(H&&f(Y,H),G)for(let se=0;se{for(let le=de;le{const ne=W.el=Y.el;let{patchFlag:de,dynamicChildren:le,dirs:Re}=W;de|=Y.patchFlag&16;const we=Y.props||Lt,me=W.props||Lt;let Ue;if(H&&kr(H,!1),(Ue=me.onVnodeBeforeUpdate)&&Di(Ue,H,W,Y),Re&&Pr(W,Y,H,"beforeUpdate"),H&&kr(H,!0),le&&(!Y.dynamicChildren||Y.dynamicChildren.length!==le.length)&&(de=0,ue=!1,le=null),(we.innerHTML&&me.innerHTML==null||we.textContent&&me.textContent==null)&&h(ne,""),le?F(Y.dynamicChildren,le,ne,H,G,Ru(W,q),se):ue||C(Y,W,ne,null,H,G,Ru(W,q),se,!1),de>0){if(de&16)E(ne,we,me,H,q);else if(de&2&&we.class!==me.class&&r(ne,"class",null,me.class,q),de&4&&r(ne,"style",we.style,me.style,q),de&8){const Je=W.dynamicProps;for(let qe=0;qe{Ue&&Di(Ue,H,W,Y),Re&&Pr(W,Y,H,"updated")},G)},F=(Y,W,H,G,q,se,ue)=>{for(let ne=0;ne{if(W!==H){if(W!==Lt)for(const se in W)!Wa(se)&&!(se in H)&&r(Y,se,W[se],null,q,G);for(const se in H){if(Wa(se))continue;const ue=H[se],ne=W[se];ue!==ne&&se!=="value"&&r(Y,se,ne,ue,q,G)}"value"in H&&r(Y,"value",W.value,H.value,q)}},k=(Y,W,H,G,q,se,ue,ne,de)=>{const le=W.el=Y?Y.el:a(""),Re=W.anchor=Y?Y.anchor:a("");let{patchFlag:we,dynamicChildren:me,slotScopeIds:Ue}=W;Ue&&(ne=ne?ne.concat(Ue):Ue),Y==null?(s(le,H,G),s(Re,H,G),A(W.children||[],H,Re,q,se,ue,ne,de)):we>0&&we&64&&me&&Y.dynamicChildren&&Y.dynamicChildren.length===me.length?(F(Y.dynamicChildren,me,H,q,se,ue,ne),(W.key!=null||q&&W===q.subTree)&&ip(Y,W,!0)):C(Y,W,H,Re,q,se,ue,ne,de)},B=(Y,W,H,G,q,se,ue,ne,de)=>{W.slotScopeIds=ne,Y==null?W.shapeFlag&512?q.ctx.activate(W,H,G,ue,de):D(W,H,G,q,se,ue,de):X(Y,W,de)},D=(Y,W,H,G,q,se,ue)=>{const ne=Y.component=VT(Y,G,q);if(Zh(Y)&&(ne.ctx.renderer=he),YT(ne,!1,ue),ne.asyncDep){if(q&&q.registerDep(ne,N,ue),!Y.el){const de=ne.subTree=be(Os);y(null,de,W,H),Y.placeholder=de.el}}else N(ne,Y,W,H,q,se,ue)},X=(Y,W,H)=>{const G=W.component=Y.component;if(TT(Y,W,H))if(G.asyncDep&&!G.asyncResolved){U(G,W,H);return}else G.next=W,G.update();else W.el=Y.el,G.vnode=W},N=(Y,W,H,G,q,se,ue)=>{const ne=()=>{if(Y.isMounted){let{next:we,bu:me,u:Ue,parent:Je,vnode:qe}=Y;{const Te=Ax(Y);if(Te){we&&(we.el=qe.el,U(Y,we,ue)),Te.asyncDep.then(()=>{Ns(()=>{Y.isUnmounted||le()},q)});return}}let Ze=we,Be;kr(Y,!1),we?(we.el=qe.el,U(Y,we,ue)):we=qe,me&&Tc(me),(Be=we.props&&we.props.onVnodeBeforeUpdate)&&Di(Be,Je,we,qe),kr(Y,!0);const Me=Qp(Y),nt=Y.subTree;Y.subTree=Me,m(nt,Me,u(nt.el),re(nt),Y,q,se),we.el=Me.el,Ze===null&&_T(Y,Me.el),Ue&&Ns(Ue,q),(Be=we.props&&we.props.onVnodeUpdated)&&Ns(()=>Di(Be,Je,we,qe),q)}else{let we;const{el:me,props:Ue}=W,{bm:Je,m:qe,parent:Ze,root:Be,type:Me}=Y,nt=zo(W);kr(Y,!1),Je&&Tc(Je),!nt&&(we=Ue&&Ue.onVnodeBeforeMount)&&Di(we,Ze,W),kr(Y,!0);{Be.ce&&Be.ce._hasShadowRoot()&&Be.ce._injectChildStyle(Me,Y.parent?Y.parent.type:void 0);const Te=Y.subTree=Qp(Y);m(null,Te,H,G,Y,q,se),W.el=Te.el}if(qe&&Ns(qe,q),!nt&&(we=Ue&&Ue.onVnodeMounted)){const Te=W;Ns(()=>Di(we,Ze,Te),q)}(W.shapeFlag&256||Ze&&zo(Ze.vnode)&&Ze.vnode.shapeFlag&256)&&Y.a&&Ns(Y.a,q),Y.isMounted=!0,W=H=G=null}};Y.scope.on();const de=Y.effect=new Ny(ne);Y.scope.off();const le=Y.update=de.run.bind(de),Re=Y.job=de.runIfDirty.bind(de);Re.i=Y,Re.id=Y.uid,de.scheduler=()=>Qm(Re),kr(Y,!0),le()},U=(Y,W,H)=>{W.component=Y;const G=Y.vnode.props;Y.vnode=W,Y.next=null,AT(Y,W.props,G,H),PT(Y,W.children,H),$n(),Gp(Y),Xn()},C=(Y,W,H,G,q,se,ue,ne,de=!1)=>{const le=Y&&Y.children,Re=Y?Y.shapeFlag:0,we=W.children,{patchFlag:me,shapeFlag:Ue}=W;if(me>0){if(me&128){O(le,we,H,G,q,se,ue,ne,de);return}else if(me&256){R(le,we,H,G,q,se,ue,ne,de);return}}Ue&8?(Re&16&&ie(le,q,se),we!==le&&h(H,we)):Re&16?Ue&16?O(le,we,H,G,q,se,ue,ne,de):ie(le,q,se,!0):(Re&8&&h(H,""),Ue&16&&A(we,H,G,q,se,ue,ne,de))},R=(Y,W,H,G,q,se,ue,ne,de)=>{Y=Y||Go,W=W||Go;const le=Y.length,Re=W.length,we=Math.min(le,Re);let me;for(me=0;meRe?ie(Y,q,se,!0,!1,we):A(W,H,G,q,se,ue,ne,de,we)},O=(Y,W,H,G,q,se,ue,ne,de)=>{let le=0;const Re=W.length;let we=Y.length-1,me=Re-1;for(;le<=we&&le<=me;){const Ue=Y[le],Je=W[le]=de?_n(W[le]):Ki(W[le]);if(Wr(Ue,Je))m(Ue,Je,H,null,q,se,ue,ne,de);else break;le++}for(;le<=we&&le<=me;){const Ue=Y[we],Je=W[me]=de?_n(W[me]):Ki(W[me]);if(Wr(Ue,Je))m(Ue,Je,H,null,q,se,ue,ne,de);else break;we--,me--}if(le>we){if(le<=me){const Ue=me+1,Je=Ueme)for(;le<=we;)$(Y[le],q,se,!0),le++;else{const Ue=le,Je=le,qe=new Map;for(le=Je;le<=me;le++){const xt=W[le]=de?_n(W[le]):Ki(W[le]);xt.key!=null&&qe.set(xt.key,le)}let Ze,Be=0;const Me=me-Je+1;let nt=!1,Te=0;const gs=new Array(Me);for(le=0;le=Me){$(xt,q,se,!0);continue}let te;if(xt.key!=null)te=qe.get(xt.key);else for(Ze=Je;Ze<=me;Ze++)if(gs[Ze-Je]===0&&Wr(xt,W[Ze])){te=Ze;break}te===void 0?$(xt,q,se,!0):(gs[te-Je]=le+1,te>=Te?Te=te:nt=!0,m(xt,W[te],H,null,q,se,ue,ne,de),Be++)}const Ct=nt?LT(gs):Go;for(Ze=Ct.length-1,le=Me-1;le>=0;le--){const xt=Je+le,te=W[xt],oe=W[xt+1],lt=xt+1{const{el:se,type:ue,transition:ne,children:de,shapeFlag:le}=Y;if(le&6){L(Y.component.subTree,W,H,G);return}if(le&128){Y.suspense.move(W,H,G);return}if(le&64){ue.move(Y,W,H,he);return}if(ue===Ce){s(se,W,H);for(let we=0;wene.enter(se),q));else{const{leave:we,delayLeave:me,afterLeave:Ue}=ne,Je=()=>{Y.ctx.isUnmounted?n(se):s(se,W,H)},qe=()=>{const Ze=se._isLeaving||!!se[hi];se._isLeaving&&se[hi](!0),ne.persisted&&!Ze?Je():we(se,()=>{Je(),Ue&&Ue()})};me?me(se,Je,qe):qe()}else s(se,W,H)},$=(Y,W,H,G=!1,q=!1)=>{const{type:se,props:ue,ref:ne,children:de,dynamicChildren:le,shapeFlag:Re,patchFlag:we,dirs:me,cacheIndex:Ue,memo:Je}=Y;if(we===-2&&(q=!1),ne!=null&&($n(),Ka(ne,null,H,Y,!0),Xn()),Ue!=null&&(W.renderCache[Ue]=void 0),Re&256){W.ctx.deactivate(Y);return}const qe=Re&1&&me,Ze=!zo(Y);let Be;if(Ze&&(Be=ue&&ue.onVnodeBeforeUnmount)&&Di(Be,W,Y),Re&6)K(Y.component,H,G);else{if(Re&128){Y.suspense.unmount(H,G);return}qe&&Pr(Y,null,W,"beforeUnmount"),Re&64?Y.type.remove(Y,W,H,he,G):le&&!le.hasOnce&&(se!==Ce||we>0&&we&64)?ie(le,W,H,!1,!0):(se===Ce&&we&384||!q&&Re&16)&&ie(de,W,H),G&&V(Y)}const Me=Je!=null&&Ue==null;(Ze&&(Be=ue&&ue.onVnodeUnmounted)||qe||Me)&&Ns(()=>{Be&&Di(Be,W,Y),qe&&Pr(Y,null,W,"unmounted"),Me&&(Y.el=null)},H)},V=Y=>{const{type:W,el:H,anchor:G,transition:q}=Y;if(W===Ce){j(H,G);return}if(W===_c){w(Y);return}const se=()=>{n(H),q&&!q.persisted&&q.afterLeave&&q.afterLeave()};if(Y.shapeFlag&1&&q&&!q.persisted){const{leave:ue,delayLeave:ne}=q,de=()=>ue(H,se);ne?ne(Y.el,se,de):de()}else se()},j=(Y,W)=>{let H;for(;Y!==W;)H=d(Y),n(Y),Y=H;n(W)},K=(Y,W,H)=>{const{bum:G,scope:q,job:se,subTree:ue,um:ne,m:de,a:le}=Y;sg(de),sg(le),G&&Tc(G),q.stop(),se&&(se.flags|=8,$(ue,Y,W,H)),ne&&Ns(ne,W),Ns(()=>{Y.isUnmounted=!0},W)},ie=(Y,W,H,G=!1,q=!1,se=0)=>{for(let ue=se;ue{if(Y.shapeFlag&6)return re(Y.component.subTree);if(Y.shapeFlag&128)return Y.suspense.next();const W=d(Y.anchor||Y.el),H=W&&W[rx];return H?d(H):W};let pe=!1;const ge=(Y,W,H)=>{let G;Y==null?W._vnode&&($(W._vnode,null,null,!0),G=W._vnode.component):m(W._vnode||null,Y,W,null,null,null,H),W._vnode=Y,pe||(pe=!0,Gp(G),ex(),pe=!1)},he={p:m,um:$,m:L,r:V,mt:D,mc:A,pc:C,pbc:F,n:re,o:i};return{render:ge,hydrate:void 0,createApp:yT(ge)}}function Ru({type:i,props:e},t){return t==="svg"&&i==="foreignObject"||t==="mathml"&&i==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:t}function kr({effect:i,job:e},t){t?(i.flags|=32,e.flags|=4):(i.flags&=-33,e.flags&=-5)}function OT(i,e){return(!i||i&&!i.pendingBranch)&&e&&!e.persisted}function ip(i,e,t=!1){const s=i.children,n=e.children;if(We(s)&&We(n))for(let r=0;r>1,i[t[a]]0&&(e[s]=t[r-1]),t[r]=s)}}for(r=t.length,o=t[r-1];r-- >0;)t[r]=o,o=e[o];return t}function Ax(i){const e=i.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Ax(e)}function sg(i){if(i)for(let e=0;ei.__isSuspense;function BT(i,e){e&&e.pendingBranch?We(i)?e.effects.push(...i):e.effects.push(i):XM(i)}const Ce=Symbol.for("v-fgt"),eu=Symbol.for("v-txt"),Os=Symbol.for("v-cmt"),_c=Symbol.for("v-stc"),Nn=[];let ei=null;function z(i=!1){Nn.push(ei=i?null:[])}function np(){Nn.pop(),ei=Nn[Nn.length-1]||null}let ul=1;function qc(i,e=!1){ul+=i,i<0&&ei&&e&&(ei.hasOnce=!0)}function Rx(i){return i.dynamicChildren=ul>0?ei||Go:null,np(),ul>0&&ei&&ei.push(i),i}function J(i,e,t,s,n,r){return Rx(T(i,e,t,s,n,r,!0))}function At(i,e,t,s,n){return Rx(be(i,e,t,s,n,!0))}function dl(i){return i?i.__v_isVNode===!0:!1}function Wr(i,e){return i.type===e.type&&i.key===e.key}const Px=({key:i})=>i??null,Cc=({ref:i,ref_key:e,ref_for:t})=>(typeof i=="number"&&(i=""+i),i!=null?Yt(i)||Gt(i)||it(i)?{i:Ls,r:i,k:e,f:!!t}:i:null);function T(i,e=null,t=null,s=0,n=null,r=i===Ce?0:1,o=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:i,props:e,key:e&&Px(e),ref:e&&Cc(e),scopeId:sx,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:Ls};return a?(Kc(l,t),r&128&&i.normalize(l)):t&&(l.shapeFlag|=Yt(t)?8:16),ul>0&&!o&&ei&&(l.patchFlag>0||r&6)&&l.patchFlag!==32&&ei.push(l),l}const be=NT;function NT(i,e=null,t=null,s=0,n=null,r=!1){if((!i||i===cT)&&(i=Os),dl(i)){const a=wr(i,e,!0);return t&&Kc(a,t),ul>0&&!r&&ei&&(a.shapeFlag&6?ei[ei.indexOf(i)]=a:ei.push(a)),a.patchFlag=-2,a}if(WT(i)&&(i=i.__vccOpts),e){e=DT(e);let{class:a,style:l}=e;a&&!Yt(a)&&(e.class=Ae(a)),kt(l)&&(Hh(l)&&!We(l)&&(l=ms({},l)),e.style=Vt(l))}const o=Yt(i)?1:Ix(i)?128:Kh(i)?64:kt(i)?4:it(i)?2:0;return T(i,e,t,s,n,o,r,!0)}function DT(i){return i?Hh(i)||wx(i)?ms({},i):i:null}function wr(i,e,t=!1,s=!1){const{props:n,ref:r,patchFlag:o,children:a,transition:l}=i,c=e?UT(n||{},e):n,h={__v_isVNode:!0,__v_skip:!0,type:i.type,props:c,key:c&&Px(c),ref:e&&e.ref?t&&r?We(r)?r.concat(Cc(e)):[r,Cc(e)]:Cc(e):r,scopeId:i.scopeId,slotScopeIds:i.slotScopeIds,children:a,target:i.target,targetStart:i.targetStart,targetAnchor:i.targetAnchor,staticCount:i.staticCount,shapeFlag:i.shapeFlag,patchFlag:e&&i.type!==Ce?o===-1?16:o|16:o,dynamicProps:i.dynamicProps,dynamicChildren:i.dynamicChildren,appContext:i.appContext,dirs:i.dirs,transition:l,component:i.component,suspense:i.suspense,ssContent:i.ssContent&&wr(i.ssContent),ssFallback:i.ssFallback&&wr(i.ssFallback),placeholder:i.placeholder,el:i.el,anchor:i.anchor,ctx:i.ctx,ce:i.ce};return l&&s&&hl(h,l.clone(h)),h}function gt(i=" ",e=0){return be(eu,null,i,e)}function Qs(i,e){const t=be(_c,null,i);return t.staticCount=e,t}function xe(i="",e=!1){return e?(z(),At(Os,null,i)):be(Os,null,i)}function Ki(i){return i==null||typeof i=="boolean"?be(Os):We(i)?be(Ce,null,i.slice()):dl(i)?_n(i):be(eu,null,String(i))}function _n(i){return i.el===null&&i.patchFlag!==-1||i.memo?i:wr(i)}function Kc(i,e){let t=0;const{shapeFlag:s}=i;if(e==null)e=null;else if(We(e))t=16;else if(typeof e=="object")if(s&65){const n=e.default;n&&(n._c&&(n._d=!1),Kc(i,n()),n._c&&(n._d=!0));return}else{t=32;const n=e._;!n&&!wx(e)?e._ctx=Ls:n===3&&Ls&&(Ls.slots._===1?e._=1:(e._=2,i.patchFlag|=1024))}else if(it(e)){if(s&65){Kc(i,{default:e});return}e={default:e,_ctx:Ls},t=32}else e=String(e),s&64?(t=16,e=[gt(e)]):t=8;i.children=e,i.shapeFlag|=t}function UT(...i){const e={};for(let t=0;tXs||Ls;let Zc,fl;{const i=Gh(),e=(t,s)=>{let n;return(n=i[t])||(n=i[t]=[]),n.push(s),r=>{n.length>1?n.forEach(o=>o(r)):n[0](r)}};Zc=e("__VUE_INSTANCE_SETTERS__",t=>Xs=t),fl=e("__VUE_SSR_SETTERS__",t=>ml=t)}const Al=i=>{const e=Xs;return Zc(i),i.scope.on(),()=>{i.scope.off(),Zc(e)}},ig=()=>{Xs&&Xs.scope.off(),Zc(null)};function kx(i){return i.vnode.shapeFlag&4}let ml=!1;function YT(i,e=!1,t=!1){e&&fl(e);const{props:s,children:n}=i.vnode,r=kx(i);CT(i,s,r,e),RT(i,n,t||e);const o=r?GT(i,e):void 0;return e&&fl(!1),o}function GT(i,e){const t=i.type;i.accessCache=Object.create(null),i.proxy=new Proxy(i.ctx,uT);const{setup:s}=t;if(s){$n();const n=i.setupContext=s.length>1?HT(i):null,r=Al(i),o=_l(s,i,0,[i.props,n]),a=Cy(o);if(Xn(),r(),(a||i.sp)&&!zo(i)&&ux(i),a){if(o.then(ig,ig),e)return o.then(l=>{fl(!0);try{ng(i,l,e)}finally{fl(!1)}}).catch(l=>{Wh(l,i,0)});i.asyncDep=o}else ng(i,o)}else Fx(i)}function ng(i,e,t){it(e)?i.type.__ssrInlineRender?i.ssrRender=e:i.render=e:kt(e)&&(i.setupState=Zy(e)),Fx(i)}function Fx(i,e,t){const s=i.type;i.render||(i.render=s.render||on);{const n=Al(i);$n();try{dT(i)}finally{Xn(),n()}}}const jT={get(i,e){return ks(i,"get",""),i[e]}};function HT(i){const e=t=>{i.exposed=t||{}};return{attrs:new Proxy(i.attrs,jT),slots:i.slots,emit:i.emit,expose:e}}function tu(i){return i.exposed?i.exposeProxy||(i.exposeProxy=new Proxy(Zy(ur(i.exposed)),{get(e,t){if(t in e)return e[t];if(t in Za)return Za[t](i)},has(e,t){return t in e||t in Za}})):i.proxy}function WT(i){return it(i)&&"__vccOpts"in i}const De=(i,e)=>BM(i,e,ml);function zT(i,e,t){try{qc(-1);const s=arguments.length;return s===2?kt(e)&&!We(e)?dl(e)?be(i,null,[e]):be(i,e):be(i,null,e):(s>3?t=Array.prototype.slice.call(arguments,2):s===3&&dl(t)&&(t=[t]),be(i,e,t))}finally{qc(1)}}const qT="3.5.41";/** +**/function _l(i,e,t,s){try{return s?i(...s):i()}catch(n){Wh(n,e,t)}}function pi(i,e,t,s){if(it(i)){const n=_l(i,e,t,s);return n&&Ey(n)&&n.catch(r=>{Wh(r,e,t)}),n}if(We(i)){const n=[];for(let r=0;r>>1,n=$s[s],r=cl(n);r=cl(t)?$s.push(i):$s.splice(VM(e),0,i),i.flags|=1,tx()}}function tx(){Gc||(Gc=ex.then(ix))}function YM(i){if(!We(i))sr&&i.id===-1?sr.splice(ko+1,0,i):i.flags&1||(Ho.push(i),i.flags|=1);else for(let e=0;ecl(t)-cl(s));if(Ho.length=0,sr){for(let t=0;ti.id==null?i.flags&2?-1:1/0:i.id;function ix(i){try{for(Gi=0;Gi<$s.length;Gi++){const e=$s[Gi];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),_l(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;Gi<$s.length;Gi++){const e=$s[Gi];e&&(e.flags&=-2)}Gi=-1,$s.length=0,sx(),Gc=null,($s.length||Ho.length)&&ix()}}let Ls=null,nx=null;function jc(i){const e=Ls;return Ls=i,nx=i&&i.type.__scopeId||null,e}function qh(i,e=Ls,t){if(!e||i._n)return i;const s=(...n)=>{s._d&&qc(-1);const r=jc(e),o=Nn.length;let a;try{a=i(...n)}finally{for(let l=Nn.length;l>o;l--)rp();jc(r),s._d&&qc(1)}return a};return s._n=!0,s._c=!0,s._d=!0,s}function ce(i,e){if(Ls===null)return i;const t=tu(Ls),s=i.dirs||(i.dirs=[]);for(let n=0;n1)return t&&it(e)?e.call(s&&s.proxy):e}}function GM(){return!!(op()||io)}const jM=Symbol.for("v-scx"),HM=()=>Wo(jM);function Fo(i,e){return tp(i,null,e)}function cs(i,e,t){return tp(i,e,t)}function tp(i,e,t=Lt){const{immediate:s,deep:n,flush:r,once:o}=t,a=ps({},t),l=e&&s||!e&&r!=="post";let c;if(ml){if(r==="sync"){const f=HM();c=f.__watcherHandles||(f.__watcherHandles=[])}else if(!l){const f=()=>{};return f.stop=on,f.resume=on,f.pause=on,f}}const h=Xs;a.call=(f,p,m)=>pi(f,h,p,m);let u=!1;r==="post"?a.scheduler=f=>{Ns(f,h&&h.suspense)}:r!=="sync"&&(u=!0,a.scheduler=(f,p)=>{p?f():ep(f)}),a.augmentJob=f=>{e&&(f.flags|=4),u&&(f.flags|=2,h&&(f.id=h.uid,f.i=h))};const d=$M(i,e,a);return ml&&(c?c.push(d):l&&d()),d}function WM(i,e,t){const s=this.proxy,n=Yt(i)?i.includes(".")?ox(s,i):()=>s[i]:i.bind(s,s);let r;it(e)?r=e:(r=e.handler,t=e);const o=Al(this),a=tp(n,r.bind(s),t);return o(),a}function ox(i,e){const t=e.split(".");return()=>{let s=i;for(let n=0;ni.__isTeleport,Hr=i=>i&&(i.disabled||i.disabled===""),zM=i=>i&&(i.defer||i.defer===""),Hp=i=>typeof SVGElement<"u"&&i instanceof SVGElement,Wp=i=>typeof MathMLElement=="function"&&i instanceof MathMLElement,Sf=(i,e)=>{const t=i&&i.to;return Yt(t)?e?e(t):null:t},qM={name:"Teleport",__isTeleport:!0,process(i,e,t,s,n,r,o,a,l,c){const{mc:h,pc:u,pbc:d,o:{insert:f,querySelector:p,createText:m,createComment:g,parentNode:v}}=c,y=Hr(e.props);let{dynamicChildren:x}=e;const M=(b,_,E)=>{b.shapeFlag&16&&h(b.children,_,E,n,r,o,a,l)},C=(b=e)=>{const _=Hr(b.props),E=b.target=Sf(b.props,p),F=Mf(E,b,m,f);E&&(o!=="svg"&&Hp(E)?o="svg":o!=="mathml"&&Wp(E)&&(o="mathml"),n&&n.isCE&&(n.ce._teleportTargets||(n.ce._teleportTargets=new Set)).add(E),_||(M(b,E,F),Ba(b,!1)))},w=b=>{const _=()=>{if(Jn.get(b)===_){if(Jn.delete(b),Hr(b.props)){const E=v(b.el)||t;M(b,E,b.anchor),Ba(b,!0)}C(b)}};Jn.set(b,_),Ns(_,r)};if(i==null){const b=e.el=m(""),_=e.anchor=m("");if(f(b,t,s),f(_,t,s),zM(e.props)||r&&r.pendingBranch){w(e);return}y&&(M(e,t,_),Ba(e,!0)),C()}else{e.el=i.el;const b=e.anchor=i.anchor,_=Jn.get(i);if(_){_.flags|=8,Jn.delete(i),w(e);return}e.targetStart=i.targetStart;const E=e.target=i.target,F=e.targetAnchor=i.targetAnchor,I=Hr(i.props),k=I?t:E,B=I?b:F;if(o==="svg"||Hp(E)?o="svg":(o==="mathml"||Wp(E))&&(o="mathml"),x?(d(i.dynamicChildren,x,k,n,r,o,a),np(i,e,!0)):l||u(i,e,k,B,n,r,o,a,!1),y)I?e.props&&i.props&&e.props.to!==i.props.to&&(e.props.to=i.props.to):Yl(e,t,b,c,1);else if((e.props&&e.props.to)!==(i.props&&i.props.to)){const D=Sf(e.props,p);D&&(e.target=D,Yl(e,D,null,c,0))}else I&&Yl(e,E,F,c,1);Ba(e,y)}},remove(i,e,t,{um:s,o:{remove:n}},r){const{shapeFlag:o,children:a,anchor:l,targetStart:c,targetAnchor:h,target:u,props:d}=i,f=Hr(d),p=r||!f,m=Jn.get(i);if(m&&(m.flags|=8,Jn.delete(i)),u&&(n(c),n(h)),r&&n(l),!m&&(f||u)&&o&16)for(let g=0;g{i.isMounted=!0}),po(()=>{i.isUnmounting=!0}),i}const oi=[Function,Array],lx={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:oi,onEnter:oi,onAfterEnter:oi,onEnterCancelled:oi,onBeforeLeave:oi,onLeave:oi,onAfterLeave:oi,onLeaveCancelled:oi,onBeforeAppear:oi,onAppear:oi,onAfterAppear:oi,onAppearCancelled:oi},cx=i=>{const e=i.subTree;return e.component?cx(e.component):e},QM={name:"BaseTransition",props:lx,setup(i,{slots:e}){const t=op(),s=JM();return()=>{const n=e.default&&dx(e.default(),!0),r=n&&n.length?hx(n):t.subTree?xe():void 0;if(!r)return;const o=St(i),{mode:a}=o;if(s.isLeaving)return Eu(r);const l=Hc(r);if(!l)return Eu(r);let c=Tf(l,o,s,t,u=>c=u);l.type!==Os&&hl(l,c);let h=t.subTree&&Hc(t.subTree);if(h&&h.type!==Os&&!Wr(h,l)&&cx(t).type!==Os){let u=Tf(h,o,s,t);if(hl(h,u),a==="out-in"&&l.type!==Os)return s.isLeaving=!0,u.afterLeave=()=>{s.isLeaving=!1,t.job.flags&8||t.update(),delete u.afterLeave,h=void 0},Eu(r);a==="in-out"&&l.type!==Os?u.delayLeave=(d,f,p)=>{const m=ux(s,h);m[String(h.key)]=h,d[hi]=()=>{f(),d[hi]=void 0,delete c.delayedLeave,h=void 0},c.delayedLeave=()=>{p(),delete c.delayedLeave,h=void 0}}:h=void 0}else h&&(h=void 0);return r}}};function hx(i){let e=i[0];if(i.length>1){for(const t of i)if(t.type!==Os){e=t;break}}return e}const eT=QM;function ux(i,e){const{leavingVNodes:t}=i;let s=t.get(e.type);return s||(s=Object.create(null),t.set(e.type,s)),s}function Tf(i,e,t,s,n){const{appear:r,mode:o,persisted:a=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:h,onEnterCancelled:u,onBeforeLeave:d,onLeave:f,onAfterLeave:p,onLeaveCancelled:m,onBeforeAppear:g,onAppear:v,onAfterAppear:y,onAppearCancelled:x}=e,M=String(i.key),C=ux(t,i),w=(E,F)=>{E&&pi(E,s,9,F)},b=(E,F)=>{const I=F[1];w(E,F),We(E)?E.every(k=>k.length<=1)&&I():E.length<=1&&I()},_={mode:o,persisted:a,beforeEnter(E){let F=l;if(!t.isMounted)if(r)F=g||l;else return;E[hi]&&E[hi](!0);const I=C[M];I&&Wr(i,I)&&I.el[hi]&&I.el[hi](),w(F,[E])},enter(E){if(C[M]===i)return;let F=c,I=h,k=u;if(!t.isMounted)if(r)F=v||c,I=y||h,k=x||u;else return;let B=!1;E[Aa]=X=>{B||(B=!0,X?w(k,[E]):w(I,[E]),_.delayedLeave&&_.delayedLeave(),E[Aa]=void 0)};const D=E[Aa].bind(null,!1);F?b(F,[E,D]):D()},leave(E,F){const I=String(i.key);if(E[Aa]&&E[Aa](!0),t.isUnmounting)return F();w(d,[E]);let k=!1;E[hi]=D=>{k||(k=!0,F(),D?w(m,[E]):w(p,[E]),E[hi]=void 0,C[I]===i&&delete C[I])};const B=E[hi].bind(null,!1);C[I]=i,f?b(f,[E,B]):B()},clone(E){const F=Tf(E,e,t,s,n);return n&&n(F),F}};return _}function Eu(i){if(Zh(i))return i=wr(i),i.children=null,i}function Hc(i){if(!Zh(i))return Kh(i.type)&&i.children?hx(i.children):i;if(i.component)return i.component.subTree;const{shapeFlag:e,children:t}=i;if(t){if(e&16)return t[0];if(e&32&&it(t.default))return t.default()}}function hl(i,e){if(i.shapeFlag&6&&i.component){i.transition=e;const t=i.component.subTree;hl(Kh(t.type)&&Hc(t)||t,e)}else i.shapeFlag&128?(i.ssContent.transition=e.clone(i.ssContent),i.ssFallback.transition=e.clone(i.ssFallback)):i.transition=e}function dx(i,e=!1,t){let s=[],n=0;for(let r=0;r1)for(let r=0;rKa(m,e&&(We(e)?e[g]:e),t,s,n));return}if(zo(s)&&!n){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Ka(i,e,t,s.component.subTree);return}const r=s.shapeFlag&4?tu(s.component):s.el,o=n?null:r,{i:a,r:l}=i,c=e&&e.r,h=a.refs===Lt?a.refs={}:a.refs,u=a.setupState,d=St(u),f=u===Lt?Ay:m=>zp(h,m)?!1:Pt(d,m),p=(m,g)=>!(g&&zp(h,g));if(c!=null&&c!==l){if(qp(e),Yt(c))h[c]=null,f(c)&&(u[c]=null);else if(Gt(c)){const m=e;p(c,m.k)&&(c.value=null),m.k&&(h[m.k]=null)}}if(it(l))_l(l,a,12,[o,h]);else{const m=Yt(l),g=Gt(l);if(m||g){const v=()=>{if(i.f){const y=m?f(l)?u[l]:h[l]:p()||!i.k?l.value:h[i.k];if(n)We(y)&&Hm(y,r);else if(We(y))y.includes(r)||y.push(r);else if(m)h[l]=[r],f(l)&&(u[l]=h[l]);else{const x=[r];p(l,i.k)&&(l.value=x),i.k&&(h[i.k]=x)}}else m?(h[l]=o,f(l)&&(u[l]=o)):g&&(p(l,i.k)&&(l.value=o),i.k&&(h[i.k]=o))};if(o){const y=()=>{v(),Wc.delete(i)};y.id=-1,Wc.set(i,y),Ns(y,t)}else qp(i),v()}}}function qp(i){const e=Wc.get(i);e&&(e.flags|=8,Wc.delete(i))}Gh().requestIdleCallback;Gh().cancelIdleCallback;const zo=i=>!!i.type.__asyncLoader,Zh=i=>i.type.__isKeepAlive;function tT(i,e){mx(i,"a",e)}function sT(i,e){mx(i,"da",e)}function mx(i,e,t=Xs){const s=i.__wdc||(i.__wdc=()=>{let n=t;for(;n;){if(n.isDeactivated)return;n=n.parent}return i()});if(Jh(e,s,t),t){let n=t.parent;for(;n&&n.parent;)Zh(n.parent.vnode)&&iT(s,e,t,n),n=n.parent}}function iT(i,e,t,s){const n=Jh(e,i,s,!0);Cl(()=>{Hm(s[e],n)},t)}function Jh(i,e,t=Xs,s=!1){if(t){const n=t[i]||(t[i]=[]),r=e.__weh||(e.__weh=(...o)=>{$n();const a=Al(t),l=pi(e,t,i,o);return a(),Xn(),l});return s?n.unshift(r):n.push(r),r}}const Wn=i=>(e,t=Xs)=>{(!ml||i==="sp")&&Jh(i,(...s)=>e(...s),t)},nT=Wn("bm"),Oi=Wn("m"),rT=Wn("bu"),oT=Wn("u"),po=Wn("bum"),Cl=Wn("um"),aT=Wn("sp"),lT=Wn("rtg"),cT=Wn("rtc");function hT(i,e=Xs){Jh("ec",i,e)}const uT=Symbol.for("v-ndc");function Ft(i,e,t,s){let n;const r=t,o=We(i);if(o||Yt(i)){const a=o&&Bn(i);let l=!1,c=!1;a&&(l=!ti(i),c=Vn(i),i=jh(i)),n=new Array(i.length);for(let h=0,u=i.length;he(a,l,void 0,r));else{const a=Object.keys(i);n=new Array(a.length);for(let l=0,c=a.length;l0;return z(),At(Ce,null,[be("slot",c,s)],h?-2:64)}let o=i[e];o&&o._c&&(o._d=!1);const a=Nn.length;z();let l;try{const c=o&&px(o(t)),h=t.key||r||c&&c.key;l=At(Ce,{key:(h&&!si(h)?h:`_${e}`)+(!c&&s?"_fb":"")},c||(s?s():[]),c&&i._===1?64:-2)}catch(c){for(let h=Nn.length;h>a;h--)rp();throw c}finally{o&&o._c&&(o._d=!0)}return l}function px(i){return i.some(e=>dl(e)?!(e.type===Os||e.type===Ce&&!px(e.children)):!0)?i:null}const _f=i=>i?Ox(i)?tu(i):_f(i.parent):null,Za=ps(Object.create(null),{$:i=>i,$el:i=>i.vnode.el,$data:i=>i.data,$props:i=>i.props,$attrs:i=>i.attrs,$slots:i=>i.slots,$refs:i=>i.refs,$parent:i=>_f(i.parent),$root:i=>_f(i.root),$host:i=>i.ce,$emit:i=>i.emit,$options:i=>vx(i),$forceUpdate:i=>i.f||(i.f=()=>{ep(i.update)}),$nextTick:i=>i.n||(i.n=zh.bind(i.proxy)),$watch:i=>WM.bind(i)}),Iu=(i,e)=>i!==Lt&&!i.__isScriptSetup&&Pt(i,e),fT={get({_:i},e){if(e==="__v_skip")return!0;const{ctx:t,setupState:s,data:n,props:r,accessCache:o,type:a,appContext:l}=i;if(e[0]!=="$"){const d=o[e];if(d!==void 0)switch(d){case 1:return s[e];case 2:return n[e];case 4:return t[e];case 3:return r[e]}else{if(Iu(s,e))return o[e]=1,s[e];if(n!==Lt&&Pt(n,e))return o[e]=2,n[e];if(Pt(r,e))return o[e]=3,r[e];if(t!==Lt&&Pt(t,e))return o[e]=4,t[e];Cf&&(o[e]=0)}}const c=Za[e];let h,u;if(c)return e==="$attrs"&&ks(i.attrs,"get",""),c(i);if((h=a.__cssModules)&&(h=h[e]))return h;if(t!==Lt&&Pt(t,e))return o[e]=4,t[e];if(u=l.config.globalProperties,Pt(u,e))return u[e]},set({_:i},e,t){const{data:s,setupState:n,ctx:r}=i;return Iu(n,e)?(n[e]=t,!0):s!==Lt&&Pt(s,e)?(s[e]=t,!0):Pt(i.props,e)||e[0]==="$"&&e.slice(1)in i?!1:(r[e]=t,!0)},has({_:{data:i,setupState:e,accessCache:t,ctx:s,appContext:n,props:r,type:o}},a){let l;return!!(t[a]||i!==Lt&&a[0]!=="$"&&Pt(i,a)||Iu(e,a)||Pt(r,a)||Pt(s,a)||Pt(Za,a)||Pt(n.config.globalProperties,a)||(l=o.__cssModules)&&l[a])},defineProperty(i,e,t){return t.get!=null?i._.accessCache[e]=0:Pt(t,"value")&&this.set(i,e,t.value,null),Reflect.defineProperty(i,e,t)}};function Kp(i){return We(i)?i.reduce((e,t)=>(e[t]=null,e),{}):i}let Cf=!0;function mT(i){const e=vx(i),t=i.proxy,s=i.ctx;Cf=!1,e.beforeCreate&&Zp(e.beforeCreate,i,"bc");const{data:n,computed:r,methods:o,watch:a,provide:l,inject:c,created:h,beforeMount:u,mounted:d,beforeUpdate:f,updated:p,activated:m,deactivated:g,beforeDestroy:v,beforeUnmount:y,destroyed:x,unmounted:M,render:C,renderTracked:w,renderTriggered:b,errorCaptured:_,serverPrefetch:E,expose:F,inheritAttrs:I,components:k,directives:B,filters:D}=e;if(c&&pT(c,s,null),o)for(const U in o){const A=o[U];it(A)&&(s[U]=A.bind(t))}if(n){const U=n.call(t,t);kt(U)&&(i.data=mo(U))}if(Cf=!0,r)for(const U in r){const A=r[U],P=it(A)?A.bind(t,t):it(A.get)?A.get.bind(t,t):on,O=!it(A)&&it(A.set)?A.set.bind(t):on,L=De({get:P,set:O});Object.defineProperty(s,U,{enumerable:!0,configurable:!0,get:()=>L.value,set:$=>L.value=$})}if(a)for(const U in a)gx(a[U],s,t,U);if(l){const U=it(l)?l.call(t):l;Reflect.ownKeys(U).forEach(A=>{rx(A,U[A])})}h&&Zp(h,i,"c");function N(U,A){We(A)?A.forEach(P=>U(P.bind(t))):A&&U(A.bind(t))}if(N(nT,u),N(Oi,d),N(rT,f),N(oT,p),N(tT,m),N(sT,g),N(hT,_),N(cT,w),N(lT,b),N(po,y),N(Cl,M),N(aT,E),We(F))if(F.length){const U=i.exposed||(i.exposed={});F.forEach(A=>{Object.defineProperty(U,A,{get:()=>t[A],set:P=>t[A]=P,enumerable:!0})})}else i.exposed||(i.exposed={});C&&i.render===on&&(i.render=C),I!=null&&(i.inheritAttrs=I),k&&(i.components=k),B&&(i.directives=B),E&&fx(i)}function pT(i,e,t=on){We(i)&&(i=Af(i));for(const s in i){const n=i[s];let r;kt(n)?"default"in n?r=Wo(n.from||s,n.default,!0):r=Wo(n.from||s):r=Wo(n),Gt(r)?Object.defineProperty(e,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):e[s]=r}}function Zp(i,e,t){pi(We(i)?i.map(s=>s.bind(e.proxy)):i.bind(e.proxy),e,t)}function gx(i,e,t,s){let n=s.includes(".")?ox(t,s):()=>t[s];if(Yt(i)){const r=e[i];it(r)&&cs(n,r)}else if(it(i))cs(n,i.bind(t));else if(kt(i))if(We(i))i.forEach(r=>gx(r,e,t,s));else{const r=it(i.handler)?i.handler.bind(t):e[i.handler];it(r)&&cs(n,r,i)}}function vx(i){const e=i.type,{mixins:t,extends:s}=e,{mixins:n,optionsCache:r,config:{optionMergeStrategies:o}}=i.appContext,a=r.get(e);let l;return a?l=a:!n.length&&!t&&!s?l=e:(l={},n.length&&n.forEach(c=>zc(l,c,o,!0)),zc(l,e,o)),kt(e)&&r.set(e,l),l}function zc(i,e,t,s=!1){const{mixins:n,extends:r}=e;r&&zc(i,r,t,!0),n&&n.forEach(o=>zc(i,o,t,!0));for(const o in e)if(!(s&&o==="expose")){const a=gT[o]||t&&t[o];i[o]=a?a(i[o],e[o]):e[o]}return i}const gT={data:Jp,props:Qp,emits:Qp,methods:Na,computed:Na,beforeCreate:Bs,created:Bs,beforeMount:Bs,mounted:Bs,beforeUpdate:Bs,updated:Bs,beforeDestroy:Bs,beforeUnmount:Bs,destroyed:Bs,unmounted:Bs,activated:Bs,deactivated:Bs,errorCaptured:Bs,serverPrefetch:Bs,components:Na,directives:Na,watch:yT,provide:Jp,inject:vT};function Jp(i,e){return e?i?function(){return ps(it(i)?i.call(this,this):i,it(e)?e.call(this,this):e)}:e:i}function vT(i,e){return Na(Af(i),Af(e))}function Af(i){if(We(i)){const e={};for(let t=0;te==="modelValue"||e==="model-value"?i.modelModifiers:i[`${e}Modifiers`]||i[`${Ai(e)}Modifiers`]||i[`${Tr(e)}Modifiers`];function ST(i,e,...t){if(i.isUnmounted)return;const s=i.vnode.props||Lt;let n=t;const r=e.startsWith("update:"),o=r&&wT(s,e.slice(7));o&&(o.trim&&(n=t.map(h=>Yt(h)?h.trim():h)),o.number&&(n=t.map(Yh)));let a,l=s[a=Mu(e)]||s[a=Mu(Ai(e))];!l&&r&&(l=s[a=Mu(Tr(e))]),l&&pi(l,i,6,n);const c=s[a+"Once"];if(c){if(!i.emitted)i.emitted={};else if(i.emitted[a])return;i.emitted[a]=!0,pi(c,i,6,n)}}const MT=new WeakMap;function xx(i,e,t=!1){const s=t?MT:e.emitsCache,n=s.get(i);if(n!==void 0)return n;const r=i.emits;let o={},a=!1;if(!it(i)){const l=c=>{const h=xx(c,e,!0);h&&(a=!0,ps(o,h))};!t&&e.mixins.length&&e.mixins.forEach(l),i.extends&&l(i.extends),i.mixins&&i.mixins.forEach(l)}return!r&&!a?(kt(i)&&s.set(i,null),null):(We(r)?r.forEach(l=>o[l]=null):ps(o,r),kt(i)&&s.set(i,o),o)}function Qh(i,e){return!i||!Uh(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),Pt(i,e[0].toLowerCase()+e.slice(1))||Pt(i,Tr(e))||Pt(i,e))}function eg(i){const{type:e,vnode:t,proxy:s,withProxy:n,propsOptions:[r],slots:o,attrs:a,emit:l,render:c,renderCache:h,props:u,data:d,setupState:f,ctx:p,inheritAttrs:m}=i,g=jc(i);let v,y;try{if(t.shapeFlag&4){const M=n||s,C=M;v=Ki(c.call(C,M,h,u,f,d,p)),y=a}else{const M=e;v=Ki(M.length>1?M(u,{attrs:a,slots:o,emit:l}):M(u,null)),y=e.props?a:TT(a)}}catch(M){Nn.length=0,Wh(M,i,1),v=be(Os)}let x=v;if(y&&m!==!1){const M=Object.keys(y),{shapeFlag:C}=x;M.length&&C&7&&(r&&M.some($h)&&(y=_T(y,r)),x=wr(x,y,!1,!0))}if(t.dirs&&(x=wr(x,null,!1,!0),x.dirs=x.dirs?x.dirs.concat(t.dirs):t.dirs),t.transition){const M=Kh(x.type)&&Hc(x)||x;hl(M,t.transition)}return v=x,jc(g),v}const TT=i=>{let e;for(const t in i)(t==="class"||t==="style"||Uh(t))&&((e||(e={}))[t]=i[t]);return e},_T=(i,e)=>{const t={};for(const s in i)(!$h(s)||!(s.slice(9)in e))&&(t[s]=i[s]);return t};function CT(i,e,t){const{props:s,children:n,component:r}=i,{props:o,children:a,patchFlag:l}=e,c=r.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&l>=0){if(l&1024)return!0;if(l&16)return s?tg(s,o,c):!!o;if(l&8){const h=e.dynamicProps;for(let u=0;uObject.create(wx),Mx=i=>Object.getPrototypeOf(i)===wx;function ET(i,e,t,s=!1){const n={},r=Sx();i.propsDefaults=Object.create(null),Tx(i,e,n,r);for(const o in i.propsOptions[0])o in n||(n[o]=void 0);t?i.props=s?n:RM(n):i.type.props?i.props=n:i.props=r,i.attrs=r}function IT(i,e,t,s){const{props:n,attrs:r,vnode:{patchFlag:o}}=i,a=St(n),[l]=i.propsOptions;let c=!1;if((s||o>0)&&!(o&16)){if(o&8){const h=i.vnode.dynamicProps;for(let u=0;u{l=!0;const[d,f]=_x(u,e,!0);ps(o,d),f&&a.push(...f)};!t&&e.mixins.length&&e.mixins.forEach(h),i.extends&&h(i.extends),i.mixins&&i.mixins.forEach(h)}if(!r&&!l)return kt(i)&&s.set(i,Go),Go;if(We(r))for(let h=0;hi==="_"||i==="_ctx"||i==="$stable",ip=i=>We(i)?i.map(Ki):[Ki(i)],PT=(i,e,t)=>{if(e._n)return e;const s=qh((...n)=>ip(e(...n)),t);return s._c=!1,s},Cx=(i,e,t)=>{const s=i._ctx;for(const n in i){if(sp(n))continue;const r=i[n];if(it(r))e[n]=PT(n,r,s);else if(r!=null){const o=ip(r);e[n]=()=>o}}},Ax=(i,e)=>{const t=ip(e);i.slots.default=()=>t},Ex=(i,e,t)=>{for(const s in e)(t||!sp(s))&&(i[s]=e[s])},kT=(i,e,t)=>{const s=i.slots=Sx();if(i.vnode.shapeFlag&32){const n=e._;n?(Ex(s,e,t),t&&ky(s,"_",n,!0)):Cx(e,s)}else e&&Ax(i,e)},FT=(i,e,t)=>{const{vnode:s,slots:n}=i;let r=!0,o=Lt;if(s.shapeFlag&32){const a=e._;a?t&&a===1?r=!1:Ex(n,e,t):(r=!e.$stable,Cx(e,n)),o=e}else e&&(Ax(i,e),o={default:1});if(r)for(const a in n)!sp(a)&&o[a]==null&&delete n[a]},Ns=DT;function OT(i){return LT(i)}function LT(i,e){const t=Gh();t.__VUE__=!0;const{insert:s,remove:n,patchProp:r,createElement:o,createText:a,createComment:l,setText:c,setElementText:h,parentNode:u,nextSibling:d,setScopeId:f=on,insertStaticContent:p}=i,m=(Y,W,H,G=null,q=null,se=null,ue=void 0,ne=null,de=!!W.dynamicChildren)=>{if(Y===W)return;Y&&!Wr(Y,W)&&(G=re(Y),$(Y,q,se,!0),Y=null),W.patchFlag===-2&&(de=!1,W.dynamicChildren=null);const{type:le,ref:Re,shapeFlag:we}=W;switch(le){case eu:g(Y,W,H,G);break;case Os:v(Y,W,H,G);break;case _c:Y==null&&y(W,H,G,ue);break;case Ce:k(Y,W,H,G,q,se,ue,ne,de);break;default:we&1?C(Y,W,H,G,q,se,ue,ne,de):we&6?B(Y,W,H,G,q,se,ue,ne,de):(we&64||we&128)&&le.process(Y,W,H,G,q,se,ue,ne,de,he)}Re!=null&&q?Ka(Re,Y&&Y.ref,se,W||Y,!W):Re==null&&Y&&Y.ref!=null&&Ka(Y.ref,null,se,Y,!0)},g=(Y,W,H,G)=>{if(Y==null)s(W.el=a(W.children),H,G);else{const q=W.el=Y.el;W.children!==Y.children&&c(q,W.children)}},v=(Y,W,H,G)=>{Y==null?s(W.el=l(W.children||""),H,G):W.el=Y.el},y=(Y,W,H,G)=>{[Y.el,Y.anchor]=p(Y.children,W,H,G,Y.el,Y.anchor)},x=({el:Y,anchor:W},H,G)=>{let q;for(;Y&&Y!==W;)q=d(Y),s(Y,H,G),Y=q;s(W,H,G)},M=({el:Y,anchor:W})=>{let H;for(;Y&&Y!==W;)H=d(Y),n(Y),Y=H;n(W)},C=(Y,W,H,G,q,se,ue,ne,de)=>{if(W.type==="svg"?ue="svg":W.type==="math"&&(ue="mathml"),Y==null)w(W,H,G,q,se,ue,ne,de);else{const le=Y.el&&Y.el._isVueCE?Y.el:null;try{le&&le._beginPatch(),E(Y,W,q,se,ue,ne,de)}finally{le&&le._endPatch()}}},w=(Y,W,H,G,q,se,ue,ne)=>{let de,le;const{props:Re,shapeFlag:we,transition:me,dirs:Ue}=Y;if(de=Y.el=o(Y.type,se,Re&&Re.is,Re),we&8?h(de,Y.children):we&16&&_(Y.children,de,null,G,q,Ru(Y,se),ue,ne),Ue&&Pr(Y,null,G,"created"),b(de,Y,Y.scopeId,ue,G),Re){for(const qe in Re)qe!=="value"&&!Wa(qe)&&r(de,qe,null,Re[qe],se,G);"value"in Re&&r(de,"value",null,Re.value,se),(le=Re.onVnodeBeforeMount)&&Di(le,G,Y)}Ue&&Pr(Y,null,G,"beforeMount");const Je=BT(q,me);Je&&me.beforeEnter(de),s(de,W,H),((le=Re&&Re.onVnodeMounted)||Je||Ue)&&Ns(()=>{try{le&&Di(le,G,Y),Je&&me.enter(de),Ue&&Pr(Y,null,G,"mounted")}finally{}},q)},b=(Y,W,H,G,q)=>{if(H&&f(Y,H),G)for(let se=0;se{for(let le=de;le{const ne=W.el=Y.el;let{patchFlag:de,dynamicChildren:le,dirs:Re}=W;de|=Y.patchFlag&16;const we=Y.props||Lt,me=W.props||Lt;let Ue;if(H&&kr(H,!1),(Ue=me.onVnodeBeforeUpdate)&&Di(Ue,H,W,Y),Re&&Pr(W,Y,H,"beforeUpdate"),H&&kr(H,!0),le&&(!Y.dynamicChildren||Y.dynamicChildren.length!==le.length)&&(de=0,ue=!1,le=null),(we.innerHTML&&me.innerHTML==null||we.textContent&&me.textContent==null)&&h(ne,""),le?F(Y.dynamicChildren,le,ne,H,G,Ru(W,q),se):ue||A(Y,W,ne,null,H,G,Ru(W,q),se,!1),de>0){if(de&16)I(ne,we,me,H,q);else if(de&2&&we.class!==me.class&&r(ne,"class",null,me.class,q),de&4&&r(ne,"style",we.style,me.style,q),de&8){const Je=W.dynamicProps;for(let qe=0;qe{Ue&&Di(Ue,H,W,Y),Re&&Pr(W,Y,H,"updated")},G)},F=(Y,W,H,G,q,se,ue)=>{for(let ne=0;ne{if(W!==H){if(W!==Lt)for(const se in W)!Wa(se)&&!(se in H)&&r(Y,se,W[se],null,q,G);for(const se in H){if(Wa(se))continue;const ue=H[se],ne=W[se];ue!==ne&&se!=="value"&&r(Y,se,ne,ue,q,G)}"value"in H&&r(Y,"value",W.value,H.value,q)}},k=(Y,W,H,G,q,se,ue,ne,de)=>{const le=W.el=Y?Y.el:a(""),Re=W.anchor=Y?Y.anchor:a("");let{patchFlag:we,dynamicChildren:me,slotScopeIds:Ue}=W;Ue&&(ne=ne?ne.concat(Ue):Ue),Y==null?(s(le,H,G),s(Re,H,G),_(W.children||[],H,Re,q,se,ue,ne,de)):we>0&&we&64&&me&&Y.dynamicChildren&&Y.dynamicChildren.length===me.length?(F(Y.dynamicChildren,me,H,q,se,ue,ne),(W.key!=null||q&&W===q.subTree)&&np(Y,W,!0)):A(Y,W,H,Re,q,se,ue,ne,de)},B=(Y,W,H,G,q,se,ue,ne,de)=>{W.slotScopeIds=ne,Y==null?W.shapeFlag&512?q.ctx.activate(W,H,G,ue,de):D(W,H,G,q,se,ue,de):X(Y,W,de)},D=(Y,W,H,G,q,se,ue)=>{const ne=Y.component=GT(Y,G,q);if(Zh(Y)&&(ne.ctx.renderer=he),jT(ne,!1,ue),ne.asyncDep){if(q&&q.registerDep(ne,N,ue),!Y.el){const de=ne.subTree=be(Os);v(null,de,W,H),Y.placeholder=de.el}}else N(ne,Y,W,H,q,se,ue)},X=(Y,W,H)=>{const G=W.component=Y.component;if(CT(Y,W,H))if(G.asyncDep&&!G.asyncResolved){U(G,W,H);return}else G.next=W,G.update();else W.el=Y.el,G.vnode=W},N=(Y,W,H,G,q,se,ue)=>{const ne=()=>{if(Y.isMounted){let{next:we,bu:me,u:Ue,parent:Je,vnode:qe}=Y;{const Te=Ix(Y);if(Te){we&&(we.el=qe.el,U(Y,we,ue)),Te.asyncDep.then(()=>{Ns(()=>{Y.isUnmounted||le()},q)});return}}let Ze=we,Be;kr(Y,!1),we?(we.el=qe.el,U(Y,we,ue)):we=qe,me&&Tc(me),(Be=we.props&&we.props.onVnodeBeforeUpdate)&&Di(Be,Je,we,qe),kr(Y,!0);const Me=eg(Y),nt=Y.subTree;Y.subTree=Me,m(nt,Me,u(nt.el),re(nt),Y,q,se),we.el=Me.el,Ze===null&&AT(Y,Me.el),Ue&&Ns(Ue,q),(Be=we.props&&we.props.onVnodeUpdated)&&Ns(()=>Di(Be,Je,we,qe),q)}else{let we;const{el:me,props:Ue}=W,{bm:Je,m:qe,parent:Ze,root:Be,type:Me}=Y,nt=zo(W);kr(Y,!1),Je&&Tc(Je),!nt&&(we=Ue&&Ue.onVnodeBeforeMount)&&Di(we,Ze,W),kr(Y,!0);{Be.ce&&Be.ce._hasShadowRoot()&&Be.ce._injectChildStyle(Me,Y.parent?Y.parent.type:void 0);const Te=Y.subTree=eg(Y);m(null,Te,H,G,Y,q,se),W.el=Te.el}if(qe&&Ns(qe,q),!nt&&(we=Ue&&Ue.onVnodeMounted)){const Te=W;Ns(()=>Di(we,Ze,Te),q)}(W.shapeFlag&256||Ze&&zo(Ze.vnode)&&Ze.vnode.shapeFlag&256)&&Y.a&&Ns(Y.a,q),Y.isMounted=!0,W=H=G=null}};Y.scope.on();const de=Y.effect=new Uy(ne);Y.scope.off();const le=Y.update=de.run.bind(de),Re=Y.job=de.runIfDirty.bind(de);Re.i=Y,Re.id=Y.uid,de.scheduler=()=>ep(Re),kr(Y,!0),le()},U=(Y,W,H)=>{W.component=Y;const G=Y.vnode.props;Y.vnode=W,Y.next=null,IT(Y,W.props,G,H),FT(Y,W.children,H),$n(),jp(Y),Xn()},A=(Y,W,H,G,q,se,ue,ne,de=!1)=>{const le=Y&&Y.children,Re=Y?Y.shapeFlag:0,we=W.children,{patchFlag:me,shapeFlag:Ue}=W;if(me>0){if(me&128){O(le,we,H,G,q,se,ue,ne,de);return}else if(me&256){P(le,we,H,G,q,se,ue,ne,de);return}}Ue&8?(Re&16&&ie(le,q,se),we!==le&&h(H,we)):Re&16?Ue&16?O(le,we,H,G,q,se,ue,ne,de):ie(le,q,se,!0):(Re&8&&h(H,""),Ue&16&&_(we,H,G,q,se,ue,ne,de))},P=(Y,W,H,G,q,se,ue,ne,de)=>{Y=Y||Go,W=W||Go;const le=Y.length,Re=W.length,we=Math.min(le,Re);let me;for(me=0;meRe?ie(Y,q,se,!0,!1,we):_(W,H,G,q,se,ue,ne,de,we)},O=(Y,W,H,G,q,se,ue,ne,de)=>{let le=0;const Re=W.length;let we=Y.length-1,me=Re-1;for(;le<=we&&le<=me;){const Ue=Y[le],Je=W[le]=de?_n(W[le]):Ki(W[le]);if(Wr(Ue,Je))m(Ue,Je,H,null,q,se,ue,ne,de);else break;le++}for(;le<=we&&le<=me;){const Ue=Y[we],Je=W[me]=de?_n(W[me]):Ki(W[me]);if(Wr(Ue,Je))m(Ue,Je,H,null,q,se,ue,ne,de);else break;we--,me--}if(le>we){if(le<=me){const Ue=me+1,Je=Ueme)for(;le<=we;)$(Y[le],q,se,!0),le++;else{const Ue=le,Je=le,qe=new Map;for(le=Je;le<=me;le++){const xt=W[le]=de?_n(W[le]):Ki(W[le]);xt.key!=null&&qe.set(xt.key,le)}let Ze,Be=0;const Me=me-Je+1;let nt=!1,Te=0;const vs=new Array(Me);for(le=0;le=Me){$(xt,q,se,!0);continue}let te;if(xt.key!=null)te=qe.get(xt.key);else for(Ze=Je;Ze<=me;Ze++)if(vs[Ze-Je]===0&&Wr(xt,W[Ze])){te=Ze;break}te===void 0?$(xt,q,se,!0):(vs[te-Je]=le+1,te>=Te?Te=te:nt=!0,m(xt,W[te],H,null,q,se,ue,ne,de),Be++)}const Ct=nt?NT(vs):Go;for(Ze=Ct.length-1,le=Me-1;le>=0;le--){const xt=Je+le,te=W[xt],oe=W[xt+1],lt=xt+1{const{el:se,type:ue,transition:ne,children:de,shapeFlag:le}=Y;if(le&6){L(Y.component.subTree,W,H,G);return}if(le&128){Y.suspense.move(W,H,G);return}if(le&64){ue.move(Y,W,H,he);return}if(ue===Ce){s(se,W,H);for(let we=0;wene.enter(se),q));else{const{leave:we,delayLeave:me,afterLeave:Ue}=ne,Je=()=>{Y.ctx.isUnmounted?n(se):s(se,W,H)},qe=()=>{const Ze=se._isLeaving||!!se[hi];se._isLeaving&&se[hi](!0),ne.persisted&&!Ze?Je():we(se,()=>{Je(),Ue&&Ue()})};me?me(se,Je,qe):qe()}else s(se,W,H)},$=(Y,W,H,G=!1,q=!1)=>{const{type:se,props:ue,ref:ne,children:de,dynamicChildren:le,shapeFlag:Re,patchFlag:we,dirs:me,cacheIndex:Ue,memo:Je}=Y;if(we===-2&&(q=!1),ne!=null&&($n(),Ka(ne,null,H,Y,!0),Xn()),Ue!=null&&(W.renderCache[Ue]=void 0),Re&256){W.ctx.deactivate(Y);return}const qe=Re&1&&me,Ze=!zo(Y);let Be;if(Ze&&(Be=ue&&ue.onVnodeBeforeUnmount)&&Di(Be,W,Y),Re&6)K(Y.component,H,G);else{if(Re&128){Y.suspense.unmount(H,G);return}qe&&Pr(Y,null,W,"beforeUnmount"),Re&64?Y.type.remove(Y,W,H,he,G):le&&!le.hasOnce&&(se!==Ce||we>0&&we&64)?ie(le,W,H,!1,!0):(se===Ce&&we&384||!q&&Re&16)&&ie(de,W,H),G&&V(Y)}const Me=Je!=null&&Ue==null;(Ze&&(Be=ue&&ue.onVnodeUnmounted)||qe||Me)&&Ns(()=>{Be&&Di(Be,W,Y),qe&&Pr(Y,null,W,"unmounted"),Me&&(Y.el=null)},H)},V=Y=>{const{type:W,el:H,anchor:G,transition:q}=Y;if(W===Ce){j(H,G);return}if(W===_c){M(Y);return}const se=()=>{n(H),q&&!q.persisted&&q.afterLeave&&q.afterLeave()};if(Y.shapeFlag&1&&q&&!q.persisted){const{leave:ue,delayLeave:ne}=q,de=()=>ue(H,se);ne?ne(Y.el,se,de):de()}else se()},j=(Y,W)=>{let H;for(;Y!==W;)H=d(Y),n(Y),Y=H;n(W)},K=(Y,W,H)=>{const{bum:G,scope:q,job:se,subTree:ue,um:ne,m:de,a:le}=Y;ig(de),ig(le),G&&Tc(G),q.stop(),se&&(se.flags|=8,$(ue,Y,W,H)),ne&&Ns(ne,W),Ns(()=>{Y.isUnmounted=!0},W)},ie=(Y,W,H,G=!1,q=!1,se=0)=>{for(let ue=se;ue{if(Y.shapeFlag&6)return re(Y.component.subTree);if(Y.shapeFlag&128)return Y.suspense.next();const W=d(Y.anchor||Y.el),H=W&&W[ax];return H?d(H):W};let pe=!1;const ge=(Y,W,H)=>{let G;Y==null?W._vnode&&($(W._vnode,null,null,!0),G=W._vnode.component):m(W._vnode||null,Y,W,null,null,null,H),W._vnode=Y,pe||(pe=!0,jp(G),sx(),pe=!1)},he={p:m,um:$,m:L,r:V,mt:D,mc:_,pc:A,pbc:F,n:re,o:i};return{render:ge,hydrate:void 0,createApp:bT(ge)}}function Ru({type:i,props:e},t){return t==="svg"&&i==="foreignObject"||t==="mathml"&&i==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:t}function kr({effect:i,job:e},t){t?(i.flags|=32,e.flags|=4):(i.flags&=-33,e.flags&=-5)}function BT(i,e){return(!i||i&&!i.pendingBranch)&&e&&!e.persisted}function np(i,e,t=!1){const s=i.children,n=e.children;if(We(s)&&We(n))for(let r=0;r>1,i[t[a]]0&&(e[s]=t[r-1]),t[r]=s)}}for(r=t.length,o=t[r-1];r-- >0;)t[r]=o,o=e[o];return t}function Ix(i){const e=i.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Ix(e)}function ig(i){if(i)for(let e=0;ei.__isSuspense;function DT(i,e){e&&e.pendingBranch?We(i)?e.effects.push(...i):e.effects.push(i):YM(i)}const Ce=Symbol.for("v-fgt"),eu=Symbol.for("v-txt"),Os=Symbol.for("v-cmt"),_c=Symbol.for("v-stc"),Nn=[];let ei=null;function z(i=!1){Nn.push(ei=i?null:[])}function rp(){Nn.pop(),ei=Nn[Nn.length-1]||null}let ul=1;function qc(i,e=!1){ul+=i,i<0&&ei&&e&&(ei.hasOnce=!0)}function kx(i){return i.dynamicChildren=ul>0?ei||Go:null,rp(),ul>0&&ei&&ei.push(i),i}function J(i,e,t,s,n,r){return kx(T(i,e,t,s,n,r,!0))}function At(i,e,t,s,n){return kx(be(i,e,t,s,n,!0))}function dl(i){return i?i.__v_isVNode===!0:!1}function Wr(i,e){return i.type===e.type&&i.key===e.key}const Fx=({key:i})=>i??null,Cc=({ref:i,ref_key:e,ref_for:t})=>(typeof i=="number"&&(i=""+i),i!=null?Yt(i)||Gt(i)||it(i)?{i:Ls,r:i,k:e,f:!!t}:i:null);function T(i,e=null,t=null,s=0,n=null,r=i===Ce?0:1,o=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:i,props:e,key:e&&Fx(e),ref:e&&Cc(e),scopeId:nx,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:Ls};return a?(Kc(l,t),r&128&&i.normalize(l)):t&&(l.shapeFlag|=Yt(t)?8:16),ul>0&&!o&&ei&&(l.patchFlag>0||r&6)&&l.patchFlag!==32&&ei.push(l),l}const be=UT;function UT(i,e=null,t=null,s=0,n=null,r=!1){if((!i||i===uT)&&(i=Os),dl(i)){const a=wr(i,e,!0);return t&&Kc(a,t),ul>0&&!r&&ei&&(a.shapeFlag&6?ei[ei.indexOf(i)]=a:ei.push(a)),a.patchFlag=-2,a}if(qT(i)&&(i=i.__vccOpts),e){e=$T(e);let{class:a,style:l}=e;a&&!Yt(a)&&(e.class=Ae(a)),kt(l)&&(Hh(l)&&!We(l)&&(l=ps({},l)),e.style=Vt(l))}const o=Yt(i)?1:Px(i)?128:Kh(i)?64:kt(i)?4:it(i)?2:0;return T(i,e,t,s,n,o,r,!0)}function $T(i){return i?Hh(i)||Mx(i)?ps({},i):i:null}function wr(i,e,t=!1,s=!1){const{props:n,ref:r,patchFlag:o,children:a,transition:l}=i,c=e?XT(n||{},e):n,h={__v_isVNode:!0,__v_skip:!0,type:i.type,props:c,key:c&&Fx(c),ref:e&&e.ref?t&&r?We(r)?r.concat(Cc(e)):[r,Cc(e)]:Cc(e):r,scopeId:i.scopeId,slotScopeIds:i.slotScopeIds,children:a,target:i.target,targetStart:i.targetStart,targetAnchor:i.targetAnchor,staticCount:i.staticCount,shapeFlag:i.shapeFlag,patchFlag:e&&i.type!==Ce?o===-1?16:o|16:o,dynamicProps:i.dynamicProps,dynamicChildren:i.dynamicChildren,appContext:i.appContext,dirs:i.dirs,transition:l,component:i.component,suspense:i.suspense,ssContent:i.ssContent&&wr(i.ssContent),ssFallback:i.ssFallback&&wr(i.ssFallback),placeholder:i.placeholder,el:i.el,anchor:i.anchor,ctx:i.ctx,ce:i.ce};return l&&s&&hl(h,l.clone(h)),h}function gt(i=" ",e=0){return be(eu,null,i,e)}function Qs(i,e){const t=be(_c,null,i);return t.staticCount=e,t}function xe(i="",e=!1){return e?(z(),At(Os,null,i)):be(Os,null,i)}function Ki(i){return i==null||typeof i=="boolean"?be(Os):We(i)?be(Ce,null,i.slice()):dl(i)?_n(i):be(eu,null,String(i))}function _n(i){return i.el===null&&i.patchFlag!==-1||i.memo?i:wr(i)}function Kc(i,e){let t=0;const{shapeFlag:s}=i;if(e==null)e=null;else if(We(e))t=16;else if(typeof e=="object")if(s&65){const n=e.default;n&&(n._c&&(n._d=!1),Kc(i,n()),n._c&&(n._d=!0));return}else{t=32;const n=e._;!n&&!Mx(e)?e._ctx=Ls:n===3&&Ls&&(Ls.slots._===1?e._=1:(e._=2,i.patchFlag|=1024))}else if(it(e)){if(s&65){Kc(i,{default:e});return}e={default:e,_ctx:Ls},t=32}else e=String(e),s&64?(t=16,e=[gt(e)]):t=8;i.children=e,i.shapeFlag|=t}function XT(...i){const e={};for(let t=0;tXs||Ls;let Zc,fl;{const i=Gh(),e=(t,s)=>{let n;return(n=i[t])||(n=i[t]=[]),n.push(s),r=>{n.length>1?n.forEach(o=>o(r)):n[0](r)}};Zc=e("__VUE_INSTANCE_SETTERS__",t=>Xs=t),fl=e("__VUE_SSR_SETTERS__",t=>ml=t)}const Al=i=>{const e=Xs;return Zc(i),i.scope.on(),()=>{i.scope.off(),Zc(e)}},ng=()=>{Xs&&Xs.scope.off(),Zc(null)};function Ox(i){return i.vnode.shapeFlag&4}let ml=!1;function jT(i,e=!1,t=!1){e&&fl(e);const{props:s,children:n}=i.vnode,r=Ox(i);ET(i,s,r,e),kT(i,n,t||e);const o=r?HT(i,e):void 0;return e&&fl(!1),o}function HT(i,e){const t=i.type;i.accessCache=Object.create(null),i.proxy=new Proxy(i.ctx,fT);const{setup:s}=t;if(s){$n();const n=i.setupContext=s.length>1?zT(i):null,r=Al(i),o=_l(s,i,0,[i.props,n]),a=Ey(o);if(Xn(),r(),(a||i.sp)&&!zo(i)&&fx(i),a){if(o.then(ng,ng),e)return o.then(l=>{fl(!0);try{rg(i,l,e)}finally{fl(!1)}}).catch(l=>{Wh(l,i,0)});i.asyncDep=o}else rg(i,o)}else Lx(i)}function rg(i,e,t){it(e)?i.type.__ssrInlineRender?i.ssrRender=e:i.render=e:kt(e)&&(i.setupState=Qy(e)),Lx(i)}function Lx(i,e,t){const s=i.type;i.render||(i.render=s.render||on);{const n=Al(i);$n();try{mT(i)}finally{Xn(),n()}}}const WT={get(i,e){return ks(i,"get",""),i[e]}};function zT(i){const e=t=>{i.exposed=t||{}};return{attrs:new Proxy(i.attrs,WT),slots:i.slots,emit:i.emit,expose:e}}function tu(i){return i.exposed?i.exposeProxy||(i.exposeProxy=new Proxy(Qy(ur(i.exposed)),{get(e,t){if(t in e)return e[t];if(t in Za)return Za[t](i)},has(e,t){return t in e||t in Za}})):i.proxy}function qT(i){return it(i)&&"__vccOpts"in i}const De=(i,e)=>DM(i,e,ml);function KT(i,e,t){try{qc(-1);const s=arguments.length;return s===2?kt(e)&&!We(e)?dl(e)?be(i,null,[e]):be(i,e):be(i,null,e):(s>3?t=Array.prototype.slice.call(arguments,2):s===3&&dl(t)&&(t=[t]),be(i,e,t))}finally{qc(1)}}const ZT="3.5.41";/** * @vue/runtime-dom v3.5.41 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Ef;const rg=typeof window<"u"&&window.trustedTypes;if(rg)try{Ef=rg.createPolicy("vue",{createHTML:i=>i})}catch{}const Ox=Ef?i=>Ef.createHTML(i):i=>i,KT="http://www.w3.org/2000/svg",ZT="http://www.w3.org/1998/Math/MathML",bn=typeof document<"u"?document:null,og=bn&&bn.createElement("template"),JT={insert:(i,e,t)=>{e.insertBefore(i,t||null)},remove:i=>{const e=i.parentNode;e&&e.removeChild(i)},createElement:(i,e,t,s)=>{const n=e==="svg"?bn.createElementNS(KT,i):e==="mathml"?bn.createElementNS(ZT,i):t?bn.createElement(i,{is:t}):bn.createElement(i);return i==="select"&&s&&s.multiple!=null&&n.setAttribute("multiple",s.multiple),n},createText:i=>bn.createTextNode(i),createComment:i=>bn.createComment(i),setText:(i,e)=>{i.nodeValue=e},setElementText:(i,e)=>{i.textContent=e},parentNode:i=>i.parentNode,nextSibling:i=>i.nextSibling,querySelector:i=>bn.querySelector(i),setScopeId(i,e){i.setAttribute(e,"")},insertStaticContent(i,e,t,s,n,r){const o=t?t.previousSibling:e.lastChild;if(n&&(n===r||n.nextSibling))for(;e.insertBefore(n.cloneNode(!0),t),!(n===r||!(n=n.nextSibling)););else{og.innerHTML=Ox(s==="svg"?`${i}`:s==="mathml"?`${i}`:i);const a=og.content;if(s==="svg"||s==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}e.insertBefore(a,t)}return[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}},qn="transition",Ea="animation",pl=Symbol("_vtc"),Lx={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},QT=ms({},ox,Lx),e2=i=>(i.displayName="Transition",i.props=QT,i),t2=e2((i,{slots:e})=>zT(JM,s2(i),e)),Fr=(i,e=[])=>{We(i)?i.forEach(t=>t(...e)):i&&i(...e)},ag=i=>i?We(i)?i.some(e=>e.length>1):i.length>1:!1;function s2(i){const e={};for(const k in i)k in Lx||(e[k]=i[k]);if(i.css===!1)return e;const{name:t="v",type:s,duration:n,enterFromClass:r=`${t}-enter-from`,enterActiveClass:o=`${t}-enter-active`,enterToClass:a=`${t}-enter-to`,appearFromClass:l=r,appearActiveClass:c=o,appearToClass:h=a,leaveFromClass:u=`${t}-leave-from`,leaveActiveClass:d=`${t}-leave-active`,leaveToClass:f=`${t}-leave-to`}=i,p=i2(n),m=p&&p[0],g=p&&p[1],{onBeforeEnter:y,onEnter:x,onEnterCancelled:v,onLeave:w,onLeaveCancelled:_,onBeforeAppear:S=y,onAppear:b=x,onAppearCancelled:A=v}=e,P=(k,B,D,X)=>{k._enterCancelled=X,Or(k,B?h:a),Or(k,B?c:o),D&&D()},F=(k,B)=>{k._isLeaving=!1,Or(k,u),Or(k,f),Or(k,d),B&&B()},E=k=>(B,D)=>{const X=k?b:x,N=()=>P(B,k,D);Fr(X,[B,N]),lg(()=>{Or(B,k?l:r),gn(B,k?h:a),ag(X)||cg(B,s,m,N)})};return ms(e,{onBeforeEnter(k){Fr(y,[k]),gn(k,r),gn(k,o)},onBeforeAppear(k){Fr(S,[k]),gn(k,l),gn(k,c)},onEnter:E(!1),onAppear:E(!0),onLeave(k,B){k._isLeaving=!0;const D=()=>F(k,B);gn(k,u),k._enterCancelled?(gn(k,d),dg(k)):(dg(k),gn(k,d)),lg(()=>{k._isLeaving&&(Or(k,u),gn(k,f),ag(w)||cg(k,s,g,D))}),Fr(w,[k,D])},onEnterCancelled(k){P(k,!1,void 0,!0),Fr(v,[k])},onAppearCancelled(k){P(k,!0,void 0,!0),Fr(A,[k])},onLeaveCancelled(k){F(k),Fr(_,[k])}})}function i2(i){if(i==null)return null;if(kt(i))return[Pu(i.enter),Pu(i.leave)];{const e=Pu(i);return[e,e]}}function Pu(i){return tM(i)}function gn(i,e){e.split(/\s+/).forEach(t=>t&&i.classList.add(t)),(i[pl]||(i[pl]=new Set)).add(e)}function Or(i,e){e.split(/\s+/).forEach(s=>s&&i.classList.remove(s));const t=i[pl];t&&(t.delete(e),t.size||(i[pl]=void 0))}function lg(i){requestAnimationFrame(()=>{requestAnimationFrame(i)})}let n2=0;function cg(i,e,t,s){const n=i._endId=++n2,r=()=>{n===i._endId&&s()};if(t!=null)return setTimeout(r,t);const{type:o,timeout:a,propCount:l}=r2(i,e);if(!o)return s();const c=o+"end";let h=0;const u=()=>{i.removeEventListener(c,d),r()},d=f=>{f.target===i&&++h>=l&&u()};setTimeout(()=>{h(t[p]||"").split(", "),n=s(`${qn}Delay`),r=s(`${qn}Duration`),o=hg(n,r),a=s(`${Ea}Delay`),l=s(`${Ea}Duration`),c=hg(a,l);let h=null,u=0,d=0;e===qn?o>0&&(h=qn,u=o,d=r.length):e===Ea?c>0&&(h=Ea,u=c,d=l.length):(u=Math.max(o,c),h=u>0?o>c?qn:Ea:null,d=h?h===qn?r.length:l.length:0);const f=h===qn&&/\b(?:transform|all)(?:,|$)/.test(s(`${qn}Property`).toString());return{type:h,timeout:u,propCount:d,hasTransform:f}}function hg(i,e){for(;i.lengthug(t)+ug(i[s])))}function ug(i){return i==="auto"?0:Number(i.slice(0,-1).replace(",","."))*1e3}function dg(i){return(i?i.ownerDocument:document).body.offsetHeight}function o2(i,e,t){const s=i[pl];s&&(e=(e?[e,...s]:[...s]).join(" ")),e==null?i.removeAttribute("class"):t?i.setAttribute("class",e):i.className=e}const Jc=Symbol("_vod"),Bx=Symbol("_vsh"),ws={name:"show",beforeMount(i,{value:e},{transition:t}){i[Jc]=i.style.display==="none"?"":i.style.display,t&&e?t.beforeEnter(i):Ia(i,e)},mounted(i,{value:e},{transition:t}){t&&e&&t.enter(i)},updated(i,{value:e,oldValue:t},{transition:s}){!e!=!t&&(s?e?(s.beforeEnter(i),Ia(i,!0),s.enter(i)):s.leave(i,()=>{Ia(i,!1)}):Ia(i,e))},beforeUnmount(i,{value:e}){Ia(i,e)}};function Ia(i,e){i.style.display=e?i[Jc]:"none",i[Bx]=!e}const a2=Symbol(""),l2=/(?:^|;)\s*display\s*:/;function c2(i,e,t){const s=i.style,n=Yt(t);let r=!1;if(t&&!n){if(e)if(Yt(e))for(const o of e.split(";")){const a=o.slice(0,o.indexOf(":")).trim();t[a]==null&&Da(s,a,"")}else for(const o in e)t[o]==null&&Da(s,o,"");for(const o in t){o==="display"&&(r=!0);const a=t[o];a!=null?u2(i,o,!Yt(e)&&e?e[o]:void 0,a)||Da(s,o,a):Da(s,o,"")}}else if(n){if(e!==t){const o=s[a2];o&&(t+=";"+o),s.cssText=t,r=l2.test(t)}}else e&&i.removeAttribute("style");Jc in i&&(i[Jc]=r?s.display:"",i[Bx]&&(s.display="none"))}const fg=/\s*!important$/;function Da(i,e,t){if(We(t))t.forEach(s=>Da(i,e,s));else if(t==null&&(t=""),e.startsWith("--"))i.setProperty(e,t);else{const s=h2(i,e);fg.test(t)?i.setProperty(Tr(s),t.replace(fg,""),"important"):i[s]=t}}const mg=["Webkit","Moz","ms"],ku={};function h2(i,e){const t=ku[e];if(t)return t;let s=Ai(e);if(s!=="filter"&&s in i)return ku[e]=s;s=Iy(s);for(let n=0;nFu||(v2.then(()=>Fu=0),Fu=Date.now());function x2(i,e){const t=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=t.attached)return;const n=t.value;if(We(n)){const r=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{r.call(s),s._stopped=!0};const o=n.slice(),a=[s];for(let l=0;li.charCodeAt(0)===111&&i.charCodeAt(1)===110&&i.charCodeAt(2)>96&&i.charCodeAt(2)<123,b2=(i,e,t,s,n,r)=>{const o=n==="svg";e==="class"?o2(i,s,o):e==="style"?c2(i,t,s):Uh(e)?$h(e)||f2(i,e,t,s,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):w2(i,e,s,o))?(vg(i,e,s),!i.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&gg(i,e,s,o,r,e!=="value")):i._isVueCE&&(S2(i,e)||i._def.__asyncLoader&&(/[A-Z]/.test(e)||!Yt(s)))?vg(i,Ai(e),s,r,e):(e==="true-value"?i._trueValue=s:e==="false-value"&&(i._falseValue=s),gg(i,e,s,o))};function w2(i,e,t,s){if(s)return!!(e==="innerHTML"||e==="textContent"||e in i&&xg(e)&&it(t));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&i.tagName==="IFRAME"||e==="form"||e==="list"&&i.tagName==="INPUT"||e==="type"&&i.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const n=i.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return xg(e)&&Yt(t)?!1:e in i}function S2(i,e){const t=i._def.props;if(!t)return!1;const s=Ai(e);return Array.isArray(t)?t.some(n=>Ai(n)===s):Object.keys(t).some(n=>Ai(n)===s)}const oa=i=>{const e=i.props["onUpdate:modelValue"]||!1;return We(e)?t=>Tc(e,t):e};function M2(i){i.target.composing=!0}function bg(i){const e=i.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const tn=Symbol("_assign"),Gl=Symbol("_initialValue");function Ou(i,e,t){return e&&(i=i.trim()),t&&(i=Yh(i)),i}const je={created(i,{modifiers:{lazy:e,trim:t,number:s}},n){i.parentNode&&(i.type==="text"?i[Gl]=i.defaultValue.replace(/[\r\n]/g,""):i.type==="textarea"&&(i[Gl]=i.defaultValue.replace(/\r\n?/g,` -`))),i[tn]=oa(n);const r=s||n.props&&n.props.type==="number";ar(i,e?"change":"input",o=>{o.target.composing||i[tn](Ou(i.value,t,r))}),(t||r)&&ar(i,"change",()=>{i.value=Ou(i.value,t,r)}),e||(ar(i,"compositionstart",M2),ar(i,"compositionend",bg),ar(i,"change",bg))},mounted(i,{value:e,modifiers:{trim:t,number:s}}){const n=e??"",r=i[Gl];delete i[Gl],r!==void 0&&(i.type==="text"||i.type==="textarea")&&i.value!==r?i[tn](Ou(i.value,t,s)):i.value=n},beforeUpdate(i,{value:e,oldValue:t,modifiers:{lazy:s,trim:n,number:r}},o){if(i[tn]=oa(o),i.composing)return;const a=(r||i.type==="number")&&!/^0\d/.test(i.value)?Yh(i.value):i.value,l=e??"";if(a===l)return;const c=i.getRootNode();(c instanceof Document||c instanceof ShadowRoot)&&c.activeElement===i&&i.type!=="range"&&(s&&e===t||n&&i.value.trim()===l)||(i.value=l)}},yt={deep:!0,created(i,e,t){i[tn]=oa(t),ar(i,"change",()=>{const s=i._modelValue,n=gl(i),r=i.checked,o=i[tn];if(We(s)){const a=Hm(s,n),l=a!==-1;if(r&&!l)o(s.concat(n));else if(!r&&l){const c=[...s];c.splice(a,1),o(c)}}else if(fa(s)){const a=new Set(s);r?a.add(n):a.delete(n),o(a)}else o(Nx(i,r))})},mounted:wg,beforeUpdate(i,e,t){i[tn]=oa(t),wg(i,e,t)}};function wg(i,{value:e,oldValue:t},s){i._modelValue=e;let n;if(We(e))n=Hm(e,s.props.value)>-1;else if(fa(e))n=e.has(s.props.value);else{if(e===t)return;n=ma(e,Nx(i,!0))}i.checked!==n&&(i.checked=n)}const _t={deep:!0,created(i,{value:e,modifiers:{number:t}},s){i._modelValue=e,ar(i,"change",()=>{const n=Array.prototype.filter.call(i.options,r=>r.selected).map(r=>t?Yh(gl(r)):gl(r));i[tn](i.multiple?fa(i._modelValue)?new Set(n):n:n[0]),i._assigning=!0,zh(()=>{i._assigning=!1})}),i[tn]=oa(s)},mounted(i,{value:e}){Sg(i,e)},beforeUpdate(i,{value:e},t){i._modelValue=e,i[tn]=oa(t)},updated(i,{value:e}){i._assigning||Sg(i,e)}};function Sg(i,e){const t=i.multiple,s=We(e);if(!(t&&!s&&!fa(e))){for(let n=0,r=i.options.length;nString(c)===String(a)):o.selected=Hm(e,a)>-1}else o.selected=e.has(a);else if(ma(gl(o),e)){i.selectedIndex!==n&&(i.selectedIndex=n);return}}!t&&i.selectedIndex!==-1&&(i.selectedIndex=-1)}}function gl(i){return"_value"in i?i._value:i.value}function Nx(i,e){const t=e?"_trueValue":"_falseValue";return t in i?i[t]:e}const T2=["ctrl","shift","alt","meta"],_2={stop:i=>i.stopPropagation(),prevent:i=>i.preventDefault(),self:i=>i.target!==i.currentTarget,ctrl:i=>!i.ctrlKey,shift:i=>!i.shiftKey,alt:i=>!i.altKey,meta:i=>!i.metaKey,left:i=>"button"in i&&i.button!==0,middle:i=>"button"in i&&i.button!==1,right:i=>"button"in i&&i.button!==2,exact:(i,e)=>T2.some(t=>i[`${t}Key`]&&!e.includes(t))},Ke=(i,e)=>{if(!i)return i;const t=i._withMods||(i._withMods={}),s=e.join(".");return t[s]||(t[s]=((n,...r)=>{for(let o=0;o{const t=i._withKeys||(i._withKeys={}),s=e.join(".");return t[s]||(t[s]=(n=>{if(!("key"in n))return;const r=Tr(n.key);if(e.some(o=>o===r||C2[o]===r))return i(n)}))},A2=ms({patchProp:b2},JT);let Mg;function E2(){return Mg||(Mg=kT(A2))}const I2=((...i)=>{const e=E2().createApp(...i),{mount:t}=e;return e.mount=s=>{const n=P2(s);if(!n)return;const r=e._component;!it(r)&&!r.render&&!r.template&&(r.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const o=t(n,!1,R2(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),o},e});function R2(i){if(i instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&i instanceof MathMLElement)return"mathml"}function P2(i){return Yt(i)?document.querySelector(i):i}/*! +**/let If;const og=typeof window<"u"&&window.trustedTypes;if(og)try{If=og.createPolicy("vue",{createHTML:i=>i})}catch{}const Bx=If?i=>If.createHTML(i):i=>i,JT="http://www.w3.org/2000/svg",QT="http://www.w3.org/1998/Math/MathML",bn=typeof document<"u"?document:null,ag=bn&&bn.createElement("template"),e_={insert:(i,e,t)=>{e.insertBefore(i,t||null)},remove:i=>{const e=i.parentNode;e&&e.removeChild(i)},createElement:(i,e,t,s)=>{const n=e==="svg"?bn.createElementNS(JT,i):e==="mathml"?bn.createElementNS(QT,i):t?bn.createElement(i,{is:t}):bn.createElement(i);return i==="select"&&s&&s.multiple!=null&&n.setAttribute("multiple",s.multiple),n},createText:i=>bn.createTextNode(i),createComment:i=>bn.createComment(i),setText:(i,e)=>{i.nodeValue=e},setElementText:(i,e)=>{i.textContent=e},parentNode:i=>i.parentNode,nextSibling:i=>i.nextSibling,querySelector:i=>bn.querySelector(i),setScopeId(i,e){i.setAttribute(e,"")},insertStaticContent(i,e,t,s,n,r){const o=t?t.previousSibling:e.lastChild;if(n&&(n===r||n.nextSibling))for(;e.insertBefore(n.cloneNode(!0),t),!(n===r||!(n=n.nextSibling)););else{ag.innerHTML=Bx(s==="svg"?`${i}`:s==="mathml"?`${i}`:i);const a=ag.content;if(s==="svg"||s==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}e.insertBefore(a,t)}return[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}},qn="transition",Ea="animation",pl=Symbol("_vtc"),Nx={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},t_=ps({},lx,Nx),s_=i=>(i.displayName="Transition",i.props=t_,i),i_=s_((i,{slots:e})=>KT(eT,n_(i),e)),Fr=(i,e=[])=>{We(i)?i.forEach(t=>t(...e)):i&&i(...e)},lg=i=>i?We(i)?i.some(e=>e.length>1):i.length>1:!1;function n_(i){const e={};for(const k in i)k in Nx||(e[k]=i[k]);if(i.css===!1)return e;const{name:t="v",type:s,duration:n,enterFromClass:r=`${t}-enter-from`,enterActiveClass:o=`${t}-enter-active`,enterToClass:a=`${t}-enter-to`,appearFromClass:l=r,appearActiveClass:c=o,appearToClass:h=a,leaveFromClass:u=`${t}-leave-from`,leaveActiveClass:d=`${t}-leave-active`,leaveToClass:f=`${t}-leave-to`}=i,p=r_(n),m=p&&p[0],g=p&&p[1],{onBeforeEnter:v,onEnter:y,onEnterCancelled:x,onLeave:M,onLeaveCancelled:C,onBeforeAppear:w=v,onAppear:b=y,onAppearCancelled:_=x}=e,E=(k,B,D,X)=>{k._enterCancelled=X,Or(k,B?h:a),Or(k,B?c:o),D&&D()},F=(k,B)=>{k._isLeaving=!1,Or(k,u),Or(k,f),Or(k,d),B&&B()},I=k=>(B,D)=>{const X=k?b:y,N=()=>E(B,k,D);Fr(X,[B,N]),cg(()=>{Or(B,k?l:r),gn(B,k?h:a),lg(X)||hg(B,s,m,N)})};return ps(e,{onBeforeEnter(k){Fr(v,[k]),gn(k,r),gn(k,o)},onBeforeAppear(k){Fr(w,[k]),gn(k,l),gn(k,c)},onEnter:I(!1),onAppear:I(!0),onLeave(k,B){k._isLeaving=!0;const D=()=>F(k,B);gn(k,u),k._enterCancelled?(gn(k,d),fg(k)):(fg(k),gn(k,d)),cg(()=>{k._isLeaving&&(Or(k,u),gn(k,f),lg(M)||hg(k,s,g,D))}),Fr(M,[k,D])},onEnterCancelled(k){E(k,!1,void 0,!0),Fr(x,[k])},onAppearCancelled(k){E(k,!0,void 0,!0),Fr(_,[k])},onLeaveCancelled(k){F(k),Fr(C,[k])}})}function r_(i){if(i==null)return null;if(kt(i))return[Pu(i.enter),Pu(i.leave)];{const e=Pu(i);return[e,e]}}function Pu(i){return iM(i)}function gn(i,e){e.split(/\s+/).forEach(t=>t&&i.classList.add(t)),(i[pl]||(i[pl]=new Set)).add(e)}function Or(i,e){e.split(/\s+/).forEach(s=>s&&i.classList.remove(s));const t=i[pl];t&&(t.delete(e),t.size||(i[pl]=void 0))}function cg(i){requestAnimationFrame(()=>{requestAnimationFrame(i)})}let o_=0;function hg(i,e,t,s){const n=i._endId=++o_,r=()=>{n===i._endId&&s()};if(t!=null)return setTimeout(r,t);const{type:o,timeout:a,propCount:l}=a_(i,e);if(!o)return s();const c=o+"end";let h=0;const u=()=>{i.removeEventListener(c,d),r()},d=f=>{f.target===i&&++h>=l&&u()};setTimeout(()=>{h(t[p]||"").split(", "),n=s(`${qn}Delay`),r=s(`${qn}Duration`),o=ug(n,r),a=s(`${Ea}Delay`),l=s(`${Ea}Duration`),c=ug(a,l);let h=null,u=0,d=0;e===qn?o>0&&(h=qn,u=o,d=r.length):e===Ea?c>0&&(h=Ea,u=c,d=l.length):(u=Math.max(o,c),h=u>0?o>c?qn:Ea:null,d=h?h===qn?r.length:l.length:0);const f=h===qn&&/\b(?:transform|all)(?:,|$)/.test(s(`${qn}Property`).toString());return{type:h,timeout:u,propCount:d,hasTransform:f}}function ug(i,e){for(;i.lengthdg(t)+dg(i[s])))}function dg(i){return i==="auto"?0:Number(i.slice(0,-1).replace(",","."))*1e3}function fg(i){return(i?i.ownerDocument:document).body.offsetHeight}function l_(i,e,t){const s=i[pl];s&&(e=(e?[e,...s]:[...s]).join(" ")),e==null?i.removeAttribute("class"):t?i.setAttribute("class",e):i.className=e}const Jc=Symbol("_vod"),Dx=Symbol("_vsh"),Ss={name:"show",beforeMount(i,{value:e},{transition:t}){i[Jc]=i.style.display==="none"?"":i.style.display,t&&e?t.beforeEnter(i):Ia(i,e)},mounted(i,{value:e},{transition:t}){t&&e&&t.enter(i)},updated(i,{value:e,oldValue:t},{transition:s}){!e!=!t&&(s?e?(s.beforeEnter(i),Ia(i,!0),s.enter(i)):s.leave(i,()=>{Ia(i,!1)}):Ia(i,e))},beforeUnmount(i,{value:e}){Ia(i,e)}};function Ia(i,e){i.style.display=e?i[Jc]:"none",i[Dx]=!e}const c_=Symbol(""),h_=/(?:^|;)\s*display\s*:/;function u_(i,e,t){const s=i.style,n=Yt(t);let r=!1;if(t&&!n){if(e)if(Yt(e))for(const o of e.split(";")){const a=o.slice(0,o.indexOf(":")).trim();t[a]==null&&Da(s,a,"")}else for(const o in e)t[o]==null&&Da(s,o,"");for(const o in t){o==="display"&&(r=!0);const a=t[o];a!=null?f_(i,o,!Yt(e)&&e?e[o]:void 0,a)||Da(s,o,a):Da(s,o,"")}}else if(n){if(e!==t){const o=s[c_];o&&(t+=";"+o),s.cssText=t,r=h_.test(t)}}else e&&i.removeAttribute("style");Jc in i&&(i[Jc]=r?s.display:"",i[Dx]&&(s.display="none"))}const mg=/\s*!important$/;function Da(i,e,t){if(We(t))t.forEach(s=>Da(i,e,s));else if(t==null&&(t=""),e.startsWith("--"))i.setProperty(e,t);else{const s=d_(i,e);mg.test(t)?i.setProperty(Tr(s),t.replace(mg,""),"important"):i[s]=t}}const pg=["Webkit","Moz","ms"],ku={};function d_(i,e){const t=ku[e];if(t)return t;let s=Ai(e);if(s!=="filter"&&s in i)return ku[e]=s;s=Py(s);for(let n=0;nFu||(x_.then(()=>Fu=0),Fu=Date.now());function w_(i,e){const t=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=t.attached)return;const n=t.value;if(We(n)){const r=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{r.call(s),s._stopped=!0};const o=n.slice(),a=[s];for(let l=0;li.charCodeAt(0)===111&&i.charCodeAt(1)===110&&i.charCodeAt(2)>96&&i.charCodeAt(2)<123,S_=(i,e,t,s,n,r)=>{const o=n==="svg";e==="class"?l_(i,s,o):e==="style"?u_(i,t,s):Uh(e)?$h(e)||p_(i,e,t,s,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):M_(i,e,s,o))?(yg(i,e,s),!i.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&vg(i,e,s,o,r,e!=="value")):i._isVueCE&&(T_(i,e)||i._def.__asyncLoader&&(/[A-Z]/.test(e)||!Yt(s)))?yg(i,Ai(e),s,r,e):(e==="true-value"?i._trueValue=s:e==="false-value"&&(i._falseValue=s),vg(i,e,s,o))};function M_(i,e,t,s){if(s)return!!(e==="innerHTML"||e==="textContent"||e in i&&bg(e)&&it(t));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&i.tagName==="IFRAME"||e==="form"||e==="list"&&i.tagName==="INPUT"||e==="type"&&i.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const n=i.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return bg(e)&&Yt(t)?!1:e in i}function T_(i,e){const t=i._def.props;if(!t)return!1;const s=Ai(e);return Array.isArray(t)?t.some(n=>Ai(n)===s):Object.keys(t).some(n=>Ai(n)===s)}const oa=i=>{const e=i.props["onUpdate:modelValue"]||!1;return We(e)?t=>Tc(e,t):e};function __(i){i.target.composing=!0}function wg(i){const e=i.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const tn=Symbol("_assign"),Gl=Symbol("_initialValue");function Ou(i,e,t){return e&&(i=i.trim()),t&&(i=Yh(i)),i}const je={created(i,{modifiers:{lazy:e,trim:t,number:s}},n){i.parentNode&&(i.type==="text"?i[Gl]=i.defaultValue.replace(/[\r\n]/g,""):i.type==="textarea"&&(i[Gl]=i.defaultValue.replace(/\r\n?/g,` +`))),i[tn]=oa(n);const r=s||n.props&&n.props.type==="number";ar(i,e?"change":"input",o=>{o.target.composing||i[tn](Ou(i.value,t,r))}),(t||r)&&ar(i,"change",()=>{i.value=Ou(i.value,t,r)}),e||(ar(i,"compositionstart",__),ar(i,"compositionend",wg),ar(i,"change",wg))},mounted(i,{value:e,modifiers:{trim:t,number:s}}){const n=e??"",r=i[Gl];delete i[Gl],r!==void 0&&(i.type==="text"||i.type==="textarea")&&i.value!==r?i[tn](Ou(i.value,t,s)):i.value=n},beforeUpdate(i,{value:e,oldValue:t,modifiers:{lazy:s,trim:n,number:r}},o){if(i[tn]=oa(o),i.composing)return;const a=(r||i.type==="number")&&!/^0\d/.test(i.value)?Yh(i.value):i.value,l=e??"";if(a===l)return;const c=i.getRootNode();(c instanceof Document||c instanceof ShadowRoot)&&c.activeElement===i&&i.type!=="range"&&(s&&e===t||n&&i.value.trim()===l)||(i.value=l)}},yt={deep:!0,created(i,e,t){i[tn]=oa(t),ar(i,"change",()=>{const s=i._modelValue,n=gl(i),r=i.checked,o=i[tn];if(We(s)){const a=Wm(s,n),l=a!==-1;if(r&&!l)o(s.concat(n));else if(!r&&l){const c=[...s];c.splice(a,1),o(c)}}else if(fa(s)){const a=new Set(s);r?a.add(n):a.delete(n),o(a)}else o(Ux(i,r))})},mounted:Sg,beforeUpdate(i,e,t){i[tn]=oa(t),Sg(i,e,t)}};function Sg(i,{value:e,oldValue:t},s){i._modelValue=e;let n;if(We(e))n=Wm(e,s.props.value)>-1;else if(fa(e))n=e.has(s.props.value);else{if(e===t)return;n=ma(e,Ux(i,!0))}i.checked!==n&&(i.checked=n)}const _t={deep:!0,created(i,{value:e,modifiers:{number:t}},s){i._modelValue=e,ar(i,"change",()=>{const n=Array.prototype.filter.call(i.options,r=>r.selected).map(r=>t?Yh(gl(r)):gl(r));i[tn](i.multiple?fa(i._modelValue)?new Set(n):n:n[0]),i._assigning=!0,zh(()=>{i._assigning=!1})}),i[tn]=oa(s)},mounted(i,{value:e}){Mg(i,e)},beforeUpdate(i,{value:e},t){i._modelValue=e,i[tn]=oa(t)},updated(i,{value:e}){i._assigning||Mg(i,e)}};function Mg(i,e){const t=i.multiple,s=We(e);if(!(t&&!s&&!fa(e))){for(let n=0,r=i.options.length;nString(c)===String(a)):o.selected=Wm(e,a)>-1}else o.selected=e.has(a);else if(ma(gl(o),e)){i.selectedIndex!==n&&(i.selectedIndex=n);return}}!t&&i.selectedIndex!==-1&&(i.selectedIndex=-1)}}function gl(i){return"_value"in i?i._value:i.value}function Ux(i,e){const t=e?"_trueValue":"_falseValue";return t in i?i[t]:e}const C_=["ctrl","shift","alt","meta"],A_={stop:i=>i.stopPropagation(),prevent:i=>i.preventDefault(),self:i=>i.target!==i.currentTarget,ctrl:i=>!i.ctrlKey,shift:i=>!i.shiftKey,alt:i=>!i.altKey,meta:i=>!i.metaKey,left:i=>"button"in i&&i.button!==0,middle:i=>"button"in i&&i.button!==1,right:i=>"button"in i&&i.button!==2,exact:(i,e)=>C_.some(t=>i[`${t}Key`]&&!e.includes(t))},Ke=(i,e)=>{if(!i)return i;const t=i._withMods||(i._withMods={}),s=e.join(".");return t[s]||(t[s]=((n,...r)=>{for(let o=0;o{const t=i._withKeys||(i._withKeys={}),s=e.join(".");return t[s]||(t[s]=(n=>{if(!("key"in n))return;const r=Tr(n.key);if(e.some(o=>o===r||E_[o]===r))return i(n)}))},I_=ps({patchProp:S_},e_);let Tg;function R_(){return Tg||(Tg=OT(I_))}const P_=((...i)=>{const e=R_().createApp(...i),{mount:t}=e;return e.mount=s=>{const n=F_(s);if(!n)return;const r=e._component;!it(r)&&!r.render&&!r.template&&(r.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const o=t(n,!1,k_(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),o},e});function k_(i){if(i instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&i instanceof MathMLElement)return"mathml"}function F_(i){return Yt(i)?document.querySelector(i):i}/*! * pinia v4.0.3 * (c) 2026 Eduardo San Martin Morote * @license MIT - */let Dx;const su=i=>Dx=i,Ux=Symbol();function Tg(i){return i&&typeof i=="object"&&Object.prototype.toString.call(i)==="[object Object]"&&typeof i.toJSON!="function"}function k2(){const i=Ly(!0),e=i.run(()=>Fe({}));let t=[],s=[];const n=ur({install(r){su(n),n._a=r,r.provide(Ux,n),r.config.globalProperties.$pinia=n,s.forEach(o=>t.push(o)),s=[]},use(r){return this._a?t.push(r):s.push(r),this},_p:t,_a:null,_e:i,_s:new Map,state:e});return n}const If=()=>{};function _g(i,e,t,s=If){i.add(e);const n=()=>{i.delete(e)&&s()};return!t&&By()&&cM(n),n}function To(i,...e){i.forEach(t=>{t(...e)})}const F2=i=>i(),Cg=Symbol(),Lu=Symbol();function Rf(i,e){i instanceof Map&&e instanceof Map?e.forEach((t,s)=>i.set(s,t)):i instanceof Set&&e instanceof Set&&e.forEach(i.add,i);for(const t in e){if(!Object.hasOwn(e,t))continue;const s=e[t],n=i[t];Tg(n)&&Tg(s)&&Object.hasOwn(i,t)&&!Gt(s)&&!Bn(s)?i[t]=Rf(n,s):i[t]=s}return i}const O2=Symbol();function L2(i){return!i||typeof i!="object"||!Object.hasOwn(i,O2)}const{assign:Qn}=Object;function B2(i){return!!(Gt(i)&&i.effect)}function N2(i,e,t,s){const{state:n,actions:r,getters:o}=e,a=t.state.value[i];let l;function c(){a||(t.state.value[i]=n?n():{});const h=kM(t.state.value[i]);return Qn(h,r,Object.keys(o||{}).reduce((u,d)=>(u[d]=ur(De(()=>{su(t);const f=t._s.get(i);return o[d].call(f,f)})),u),{}))}return l=$x(i,c,e,t,s,!0),l}function $x(i,e,t={},s,n,r){let o;const a=Qn({actions:{}},t),l={deep:!0};let c,h,u=new Set,d=new Set,f;const p=s.state.value[i];!r&&!p&&(s.state.value[i]={});let m;function g(b){let A;c=h=!1,typeof b=="function"?(b(s.state.value[i]),A={type:"patch function",storeId:i,events:f}):(Rf(s.state.value[i],b),A={type:"patch object",payload:b,storeId:i,events:f});const P=m=Symbol();zh().then(()=>{m===P&&(c=!0)}),h=!0,To(u,A,s.state.value[i])}const y=r?function(){const{state:A}=t,P=A?A():{};this.$patch(F=>{Qn(F,P)})}:If;function x(){o.stop(),u.clear(),d.clear(),s._s.delete(i)}const v=(b,A="")=>{if(Cg in b)return b[Lu]=A,b;const P=function(){su(s);const F=Array.from(arguments),E=new Set,k=new Set;function B(N){E.add(N)}function D(N){k.add(N)}To(d,{args:F,name:P[Lu],store:_,after:B,onError:D});let X;try{X=b.apply(this&&this.$id===i?this:_,F)}catch(N){throw To(k,N),N}return X instanceof Promise?X.then(N=>(To(E,N),N)).catch(N=>(To(k,N),Promise.reject(N))):(To(E,X),X)};return P[Cg]=!0,P[Lu]=A,P},w={_p:s,$id:i,$onAction:_g.bind(null,d),$patch:g,$reset:y,$subscribe(b,A={}){if(u.has(b))return If;const P=_g(u,b,A.detached,()=>F()),F=o.run(()=>Cs(()=>s.state.value[i],E=>{(A.flush==="sync"?h:c)&&b({storeId:i,type:"direct",events:f},E)},Qn({},l,A)));return P},$dispose:x},_=mo(w);s._s.set(i,_);const S=(s._a&&s._a.runWithContext||F2)(()=>s._e.run(()=>(o=Ly()).run(()=>e({action:v}))));for(const b in S){const A=S[b];Gt(A)&&!B2(A)||Bn(A)?r||(p&&L2(A)&&(Gt(A)?A.value=p[b]:((A instanceof Set||A instanceof Map)&&A.clear(),Rf(A,p[b]))),s.state.value[i][b]=A):typeof A=="function"&&(S[b]=v(A,b),a.actions[b]=A)}return Qn(_,S),Qn(St(_),S),Object.defineProperty(_,"$state",{get:()=>s.state.value[i],set:b=>{g(A=>{Qn(A,b)})}}),s._p.forEach(b=>{const A=o.run(()=>b({store:_,app:s._a,pinia:s,options:a}));Qn(_,A)}),p&&r&&t.hydrate&&t.hydrate(_.$state,p),c=!0,h=!0,_}/*! #__NO_SIDE_EFFECTS__ */function D2(i,e,t){let s;const n=typeof e=="function";s=n?t:e;function r(o,a){const l=VM();return o=o||(l?Wo(Ux,null):null),o&&su(o),o=Dx,o._s.has(i)||(n?$x(i,e,s,o):N2(i,s,o)),o._s.get(i)}return r.$id=i,r}var go=(i=>(i[i.WEBGL_LEGACY=0]="WEBGL_LEGACY",i[i.WEBGL=1]="WEBGL",i[i.WEBGL2=2]="WEBGL2",i))(go||{}),Xx=(i=>(i[i.UNKNOWN=0]="UNKNOWN",i[i.WEBGL=1]="WEBGL",i[i.CANVAS=2]="CANVAS",i))(Xx||{}),Pf=(i=>(i[i.COLOR=16384]="COLOR",i[i.DEPTH=256]="DEPTH",i[i.STENCIL=1024]="STENCIL",i))(Pf||{}),He=(i=>(i[i.NORMAL=0]="NORMAL",i[i.ADD=1]="ADD",i[i.MULTIPLY=2]="MULTIPLY",i[i.SCREEN=3]="SCREEN",i[i.OVERLAY=4]="OVERLAY",i[i.DARKEN=5]="DARKEN",i[i.LIGHTEN=6]="LIGHTEN",i[i.COLOR_DODGE=7]="COLOR_DODGE",i[i.COLOR_BURN=8]="COLOR_BURN",i[i.HARD_LIGHT=9]="HARD_LIGHT",i[i.SOFT_LIGHT=10]="SOFT_LIGHT",i[i.DIFFERENCE=11]="DIFFERENCE",i[i.EXCLUSION=12]="EXCLUSION",i[i.HUE=13]="HUE",i[i.SATURATION=14]="SATURATION",i[i.COLOR=15]="COLOR",i[i.LUMINOSITY=16]="LUMINOSITY",i[i.NORMAL_NPM=17]="NORMAL_NPM",i[i.ADD_NPM=18]="ADD_NPM",i[i.SCREEN_NPM=19]="SCREEN_NPM",i[i.NONE=20]="NONE",i[i.SRC_OVER=0]="SRC_OVER",i[i.SRC_IN=21]="SRC_IN",i[i.SRC_OUT=22]="SRC_OUT",i[i.SRC_ATOP=23]="SRC_ATOP",i[i.DST_OVER=24]="DST_OVER",i[i.DST_IN=25]="DST_IN",i[i.DST_OUT=26]="DST_OUT",i[i.DST_ATOP=27]="DST_ATOP",i[i.ERASE=26]="ERASE",i[i.SUBTRACT=28]="SUBTRACT",i[i.XOR=29]="XOR",i))(He||{}),sn=(i=>(i[i.POINTS=0]="POINTS",i[i.LINES=1]="LINES",i[i.LINE_LOOP=2]="LINE_LOOP",i[i.LINE_STRIP=3]="LINE_STRIP",i[i.TRIANGLES=4]="TRIANGLES",i[i.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",i[i.TRIANGLE_FAN=6]="TRIANGLE_FAN",i))(sn||{}),_e=(i=>(i[i.RGBA=6408]="RGBA",i[i.RGB=6407]="RGB",i[i.RG=33319]="RG",i[i.RED=6403]="RED",i[i.RGBA_INTEGER=36249]="RGBA_INTEGER",i[i.RGB_INTEGER=36248]="RGB_INTEGER",i[i.RG_INTEGER=33320]="RG_INTEGER",i[i.RED_INTEGER=36244]="RED_INTEGER",i[i.ALPHA=6406]="ALPHA",i[i.LUMINANCE=6409]="LUMINANCE",i[i.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",i[i.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",i[i.DEPTH_STENCIL=34041]="DEPTH_STENCIL",i))(_e||{}),qo=(i=>(i[i.TEXTURE_2D=3553]="TEXTURE_2D",i[i.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",i[i.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",i[i.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",i[i.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",i[i.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",i[i.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",i[i.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",i[i.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",i))(qo||{}),$e=(i=>(i[i.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",i[i.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",i[i.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",i[i.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",i[i.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",i[i.UNSIGNED_INT=5125]="UNSIGNED_INT",i[i.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",i[i.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",i[i.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",i[i.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",i[i.BYTE=5120]="BYTE",i[i.SHORT=5122]="SHORT",i[i.INT=5124]="INT",i[i.FLOAT=5126]="FLOAT",i[i.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",i[i.HALF_FLOAT=36193]="HALF_FLOAT",i))($e||{}),Ne=(i=>(i[i.FLOAT=0]="FLOAT",i[i.INT=1]="INT",i[i.UINT=2]="UINT",i))(Ne||{}),Ci=(i=>(i[i.NEAREST=0]="NEAREST",i[i.LINEAR=1]="LINEAR",i))(Ci||{}),Ii=(i=>(i[i.CLAMP=33071]="CLAMP",i[i.REPEAT=10497]="REPEAT",i[i.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",i))(Ii||{}),gi=(i=>(i[i.OFF=0]="OFF",i[i.POW2=1]="POW2",i[i.ON=2]="ON",i[i.ON_MANUAL=3]="ON_MANUAL",i))(gi||{}),xs=(i=>(i[i.NPM=0]="NPM",i[i.UNPACK=1]="UNPACK",i[i.PMA=2]="PMA",i[i.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",i[i.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",i[i.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",i))(xs||{}),Zi=(i=>(i[i.NO=0]="NO",i[i.YES=1]="YES",i[i.AUTO=2]="AUTO",i[i.BLEND=0]="BLEND",i[i.CLEAR=1]="CLEAR",i[i.BLIT=2]="BLIT",i))(Zi||{}),op=(i=>(i[i.AUTO=0]="AUTO",i[i.MANUAL=1]="MANUAL",i))(op||{}),fi=(i=>(i.LOW="lowp",i.MEDIUM="mediump",i.HIGH="highp",i))(fi||{}),hs=(i=>(i[i.NONE=0]="NONE",i[i.SCISSOR=1]="SCISSOR",i[i.STENCIL=2]="STENCIL",i[i.SPRITE=3]="SPRITE",i[i.COLOR=4]="COLOR",i))(hs||{}),ls=(i=>(i[i.NONE=0]="NONE",i[i.LOW=2]="LOW",i[i.MEDIUM=4]="MEDIUM",i[i.HIGH=8]="HIGH",i))(ls||{}),an=(i=>(i[i.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",i[i.ARRAY_BUFFER=34962]="ARRAY_BUFFER",i[i.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",i))(an||{});const U2={createCanvas:(i,e)=>{const t=document.createElement("canvas");return t.width=i,t.height=e,t},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(i,e)=>fetch(i,e),parseXML:i=>new DOMParser().parseFromString(i,"text/xml")},Le={ADAPTER:U2,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var Bu=/iPhone/i,Ag=/iPod/i,Eg=/iPad/i,Ig=/\biOS-universal(?:.+)Mac\b/i,Nu=/\bAndroid(?:.+)Mobile\b/i,Rg=/Android/i,_o=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,jl=/Silk/i,vn=/Windows Phone/i,Pg=/\bWindows(?:.+)ARM\b/i,kg=/BlackBerry/i,Fg=/BB10/i,Og=/Opera Mini/i,Lg=/\b(CriOS|Chrome)(?:.+)Mobile/i,Bg=/Mobile(?:.+)Firefox\b/i,Ng=function(i){return typeof i<"u"&&i.platform==="MacIntel"&&typeof i.maxTouchPoints=="number"&&i.maxTouchPoints>1&&typeof MSStream>"u"};function $2(i){return function(e){return e.test(i)}}function Dg(i){var e={userAgent:"",platform:"",maxTouchPoints:0};!i&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof i=="string"?e.userAgent=i:i&&i.userAgent&&(e={userAgent:i.userAgent,platform:i.platform,maxTouchPoints:i.maxTouchPoints||0});var t=e.userAgent,s=t.split("[FBAN");typeof s[1]<"u"&&(t=s[0]),s=t.split("Twitter"),typeof s[1]<"u"&&(t=s[0]);var n=$2(t),r={apple:{phone:n(Bu)&&!n(vn),ipod:n(Ag),tablet:!n(Bu)&&(n(Eg)||Ng(e))&&!n(vn),universal:n(Ig),device:(n(Bu)||n(Ag)||n(Eg)||n(Ig)||Ng(e))&&!n(vn)},amazon:{phone:n(_o),tablet:!n(_o)&&n(jl),device:n(_o)||n(jl)},android:{phone:!n(vn)&&n(_o)||!n(vn)&&n(Nu),tablet:!n(vn)&&!n(_o)&&!n(Nu)&&(n(jl)||n(Rg)),device:!n(vn)&&(n(_o)||n(jl)||n(Nu)||n(Rg))||n(/\bokhttp\b/i)},windows:{phone:n(vn),tablet:n(Pg),device:n(vn)||n(Pg)},other:{blackberry:n(kg),blackberry10:n(Fg),opera:n(Og),firefox:n(Bg),chrome:n(Lg),device:n(kg)||n(Fg)||n(Og)||n(Bg)||n(Lg)},any:!1,phone:!1,tablet:!1};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}const X2=Dg.default??Dg,In=X2(globalThis.navigator);Le.RETINA_PREFIX=/@([0-9\.]+)x/;Le.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var Qc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Vx(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}function V2(i){if(Object.prototype.hasOwnProperty.call(i,"__esModule"))return i;var e=i.default;if(typeof e=="function"){var t=function s(){return this instanceof s?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(i).forEach(function(s){var n=Object.getOwnPropertyDescriptor(i,s);Object.defineProperty(t,s,n.get?n:{enumerable:!0,get:function(){return i[s]}})}),t}var Du={exports:{}},Ug;function Y2(){return Ug||(Ug=1,(function(i){var e=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function n(l,c,h){this.fn=l,this.context=c,this.once=h||!1}function r(l,c,h,u,d){if(typeof h!="function")throw new TypeError("The listener must be a function");var f=new n(h,u||l,d),p=t?t+c:c;return l._events[p]?l._events[p].fn?l._events[p]=[l._events[p],f]:l._events[p].push(f):(l._events[p]=f,l._eventsCount++),l}function o(l,c){--l._eventsCount===0?l._events=new s:delete l._events[c]}function a(){this._events=new s,this._eventsCount=0}a.prototype.eventNames=function(){var c=[],h,u;if(this._eventsCount===0)return c;for(u in h=this._events)e.call(h,u)&&c.push(t?u.slice(1):u);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(h)):c},a.prototype.listeners=function(c){var h=t?t+c:c,u=this._events[h];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);d80*C){V=K=N[0],j=ie=N[1];for(var he=C;heK&&(K=re),pe>ie&&(ie=pe);ge=Math.max(K-V,ie-j),ge=ge!==0?32767/ge:0}return s(L,$,C,V,j,ge,0),$}function e(N,U,C,R,O){var L,$;if(O===X(N,U,C,R)>0)for(L=U;L=U;L-=R)$=k(L,N[L],N[L+1],$);return $&&w($,$.next)&&(B($),$=$.next),$}function t(N,U){if(!N)return N;U||(U=N);var C=N,R;do if(R=!1,!C.steiner&&(w(C,C.next)||v(C.prev,C,C.next)===0)){if(B(C),C=U=C.prev,C===C.next)break;R=!0}else C=C.next;while(R||C!==U);return U}function s(N,U,C,R,O,L,$){if(N){!$&&L&&f(N,R,O,L);for(var V=N,j,K;N.prev!==N.next;){if(j=N.prev,K=N.next,L?r(N,R,O,L):n(N)){U.push(j.i/C|0),U.push(N.i/C|0),U.push(K.i/C|0),B(N),N=K.next,V=K.next;continue}if(N=K,N===V){$?$===1?(N=o(t(N),U,C),s(N,U,C,R,O,L,2)):$===2&&a(N,U,C,R,O,L):s(t(N),U,C,R,O,L,1);break}}}}function n(N){var U=N.prev,C=N,R=N.next;if(v(U,C,R)>=0)return!1;for(var O=U.x,L=C.x,$=R.x,V=U.y,j=C.y,K=R.y,ie=OL?O>$?O:$:L>$?L:$,ge=V>j?V>K?V:K:j>K?j:K,he=R.next;he!==U;){if(he.x>=ie&&he.x<=pe&&he.y>=re&&he.y<=ge&&y(O,V,L,j,$,K,he.x,he.y)&&v(he.prev,he,he.next)>=0)return!1;he=he.next}return!0}function r(N,U,C,R){var O=N.prev,L=N,$=N.next;if(v(O,L,$)>=0)return!1;for(var V=O.x,j=L.x,K=$.x,ie=O.y,re=L.y,pe=$.y,ge=Vj?V>K?V:K:j>K?j:K,Y=ie>re?ie>pe?ie:pe:re>pe?re:pe,W=m(ge,he,U,C,R),H=m(fe,Y,U,C,R),G=N.prevZ,q=N.nextZ;G&&G.z>=W&&q&&q.z<=H;){if(G.x>=ge&&G.x<=fe&&G.y>=he&&G.y<=Y&&G!==O&&G!==$&&y(V,ie,j,re,K,pe,G.x,G.y)&&v(G.prev,G,G.next)>=0||(G=G.prevZ,q.x>=ge&&q.x<=fe&&q.y>=he&&q.y<=Y&&q!==O&&q!==$&&y(V,ie,j,re,K,pe,q.x,q.y)&&v(q.prev,q,q.next)>=0))return!1;q=q.nextZ}for(;G&&G.z>=W;){if(G.x>=ge&&G.x<=fe&&G.y>=he&&G.y<=Y&&G!==O&&G!==$&&y(V,ie,j,re,K,pe,G.x,G.y)&&v(G.prev,G,G.next)>=0)return!1;G=G.prevZ}for(;q&&q.z<=H;){if(q.x>=ge&&q.x<=fe&&q.y>=he&&q.y<=Y&&q!==O&&q!==$&&y(V,ie,j,re,K,pe,q.x,q.y)&&v(q.prev,q,q.next)>=0)return!1;q=q.nextZ}return!0}function o(N,U,C){var R=N;do{var O=R.prev,L=R.next.next;!w(O,L)&&_(O,R,R.next,L)&&P(O,L)&&P(L,O)&&(U.push(O.i/C|0),U.push(R.i/C|0),U.push(L.i/C|0),B(R),B(R.next),R=N=L),R=R.next}while(R!==N);return t(R)}function a(N,U,C,R,O,L){var $=N;do{for(var V=$.next.next;V!==$.prev;){if($.i!==V.i&&x($,V)){var j=E($,V);$=t($,$.next),j=t(j,j.next),s($,U,C,R,O,L,0),s(j,U,C,R,O,L,0);return}V=V.next}$=$.next}while($!==N)}function l(N,U,C,R){var O=[],L,$,V,j,K;for(L=0,$=U.length;L<$;L++)V=U[L]*R,j=L<$-1?U[L+1]*R:N.length,K=e(N,V,j,R,!1),K===K.next&&(K.steiner=!0),O.push(g(K));for(O.sort(c),L=0;L=C.next.y&&C.next.y!==C.y){var V=C.x+(O-C.y)*(C.next.x-C.x)/(C.next.y-C.y);if(V<=R&&V>L&&(L=V,$=C.x=C.x&&C.x>=K&&R!==C.x&&y(O$.x||C.x===$.x&&d($,C)))&&($=C,re=pe)),C=C.next;while(C!==j);return $}function d(N,U){return v(N.prev,N,U.prev)<0&&v(U.next,N,N.next)<0}function f(N,U,C,R){var O=N;do O.z===0&&(O.z=m(O.x,O.y,U,C,R)),O.prevZ=O.prev,O.nextZ=O.next,O=O.next;while(O!==N);O.prevZ.nextZ=null,O.prevZ=null,p(O)}function p(N){var U,C,R,O,L,$,V,j,K=1;do{for(C=N,N=null,L=null,$=0;C;){for($++,R=C,V=0,U=0;U0||j>0&&R;)V!==0&&(j===0||!R||C.z<=R.z)?(O=C,C=C.nextZ,V--):(O=R,R=R.nextZ,j--),L?L.nextZ=O:N=O,O.prevZ=L,L=O;C=R}L.nextZ=null,K*=2}while($>1);return N}function m(N,U,C,R,O){return N=(N-C)*O|0,U=(U-R)*O|0,N=(N|N<<8)&16711935,N=(N|N<<4)&252645135,N=(N|N<<2)&858993459,N=(N|N<<1)&1431655765,U=(U|U<<8)&16711935,U=(U|U<<4)&252645135,U=(U|U<<2)&858993459,U=(U|U<<1)&1431655765,N|U<<1}function g(N){var U=N,C=N;do(U.x=(N-$)*(L-V)&&(N-$)*(R-V)>=(C-$)*(U-V)&&(C-$)*(L-V)>=(O-$)*(R-V)}function x(N,U){return N.next.i!==U.i&&N.prev.i!==U.i&&!A(N,U)&&(P(N,U)&&P(U,N)&&F(N,U)&&(v(N.prev,N,U.prev)||v(N,U.prev,U))||w(N,U)&&v(N.prev,N,N.next)>0&&v(U.prev,U,U.next)>0)}function v(N,U,C){return(U.y-N.y)*(C.x-U.x)-(U.x-N.x)*(C.y-U.y)}function w(N,U){return N.x===U.x&&N.y===U.y}function _(N,U,C,R){var O=b(v(N,U,C)),L=b(v(N,U,R)),$=b(v(C,R,N)),V=b(v(C,R,U));return!!(O!==L&&$!==V||O===0&&S(N,C,U)||L===0&&S(N,R,U)||$===0&&S(C,N,R)||V===0&&S(C,U,R))}function S(N,U,C){return U.x<=Math.max(N.x,C.x)&&U.x>=Math.min(N.x,C.x)&&U.y<=Math.max(N.y,C.y)&&U.y>=Math.min(N.y,C.y)}function b(N){return N>0?1:N<0?-1:0}function A(N,U){var C=N;do{if(C.i!==N.i&&C.next.i!==N.i&&C.i!==U.i&&C.next.i!==U.i&&_(C,C.next,N,U))return!0;C=C.next}while(C!==N);return!1}function P(N,U){return v(N.prev,N,N.next)<0?v(N,U,N.next)>=0&&v(N,N.prev,U)>=0:v(N,U,N.prev)<0||v(N,N.next,U)<0}function F(N,U){var C=N,R=!1,O=(N.x+U.x)/2,L=(N.y+U.y)/2;do C.y>L!=C.next.y>L&&C.next.y!==C.y&&O<(C.next.x-C.x)*(L-C.y)/(C.next.y-C.y)+C.x&&(R=!R),C=C.next;while(C!==N);return R}function E(N,U){var C=new D(N.i,N.x,N.y),R=new D(U.i,U.x,U.y),O=N.next,L=U.prev;return N.next=U,U.prev=N,C.next=O,O.prev=C,R.next=C,C.prev=R,L.next=R,R.prev=L,R}function k(N,U,C,R){var O=new D(N,U,C);return R?(O.next=R.next,O.prev=R,R.next.prev=O,R.next=O):(O.prev=O,O.next=O),O}function B(N){N.next.prev=N.prev,N.prev.next=N.next,N.prevZ&&(N.prevZ.nextZ=N.nextZ),N.nextZ&&(N.nextZ.prevZ=N.prevZ)}function D(N,U,C){this.i=N,this.x=U,this.y=C,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}i.deviation=function(N,U,C,R){var O=U&&U.length,L=O?U[0]*C:N.length,$=Math.abs(X(N,0,L,C));if(O)for(var V=0,j=U.length;V0&&(R+=N[O-1].length,C.holes.push(R))}return C},Hl.exports}var H2=j2();const W2=Vx(H2);var Lr={},Ua={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */var z2=Ua.exports,Xg;function q2(){return Xg||(Xg=1,(function(i,e){(function(t){var s=e&&!e.nodeType&&e,n=i&&!i.nodeType&&i,r=typeof Qc=="object"&&Qc;(r.global===r||r.window===r||r.self===r)&&(t=r);var o,a=2147483647,l=36,c=1,h=26,u=38,d=700,f=72,p=128,m="-",g=/^xn--/,y=/[^\x20-\x7E]/,x=/[\x2E\u3002\uFF0E\uFF61]/g,v={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=l-c,_=Math.floor,S=String.fromCharCode,b;function A(O){throw new RangeError(v[O])}function P(O,L){for(var $=O.length,V=[];$--;)V[$]=L(O[$]);return V}function F(O,L){var $=O.split("@"),V="";$.length>1&&(V=$[0]+"@",O=$[1]),O=O.replace(x,".");var j=O.split("."),K=P(j,L).join(".");return V+K}function E(O){for(var L=[],$=0,V=O.length,j,K;$=55296&&j<=56319&&$65535&&(L-=65536,$+=S(L>>>10&1023|55296),L=56320|L&1023),$+=S(L),$}).join("")}function B(O){return O-48<10?O-22:O-65<26?O-65:O-97<26?O-97:l}function D(O,L){return O+22+75*(O<26)-((L!=0)<<5)}function X(O,L,$){var V=0;for(O=$?_(O/d):O>>1,O+=_(O/L);O>w*h>>1;V+=l)O=_(O/w);return _(V+(w+1)*O/(O+u))}function N(O){var L=[],$=O.length,V,j=0,K=p,ie=f,re,pe,ge,he,fe,Y,W,H,G;for(re=O.lastIndexOf(m),re<0&&(re=0),pe=0;pe=128&&A("not-basic"),L.push(O.charCodeAt(pe));for(ge=re>0?re+1:0;ge<$;){for(he=j,fe=1,Y=l;ge>=$&&A("invalid-input"),W=B(O.charCodeAt(ge++)),(W>=l||W>_((a-j)/fe))&&A("overflow"),j+=W*fe,H=Y<=ie?c:Y>=ie+h?h:Y-ie,!(W_(a/G)&&A("overflow"),fe*=G;V=L.length+1,ie=X(j-he,V,he==0),_(j/V)>a-K&&A("overflow"),K+=_(j/V),j%=V,L.splice(j++,0,K)}return k(L)}function U(O){var L,$,V,j,K,ie,re,pe,ge,he,fe,Y=[],W,H,G,q;for(O=E(O),W=O.length,L=p,$=0,K=f,ie=0;ie=L&&fe_((a-$)/H)&&A("overflow"),$+=(re-L)*H,L=re,ie=0;iea&&A("overflow"),fe==L){for(pe=$,ge=l;he=ge<=K?c:ge>=K+h?h:ge-K,!(pe-1e3&&te<1e3||S.call(/e/,oe))return oe;var lt=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof te=="number"){var It=te<0?-F(-te):F(te);if(It!==te){var Rt=String(It),tt=x.call(oe,Rt.length+1);return v.call(Rt,lt,"$&_")+"."+v.call(v.call(tt,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(oe,lt,"$&_")}var R=J2,O=R.custom,L=H(O)?O:null,$={__proto__:null,double:'"',single:"'"},V={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};$u=function te(oe,lt,It,Rt){var tt=lt||{};if(se(tt,"quoteStyle")&&!se($,tt.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(se(tt,"maxStringLength")&&(typeof tt.maxStringLength=="number"?tt.maxStringLength<0&&tt.maxStringLength!==1/0:tt.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var ni=se(tt,"customInspect")?tt.customInspect:!0;if(typeof ni!="boolean"&&ni!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(se(tt,"indent")&&tt.indent!==null&&tt.indent!==" "&&!(parseInt(tt.indent,10)===tt.indent&&tt.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(se(tt,"numericSeparator")&&typeof tt.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var rs=tt.numericSeparator;if(typeof oe>"u")return"undefined";if(oe===null)return"null";if(typeof oe=="boolean")return oe?"true":"false";if(typeof oe=="string")return qe(oe,tt);if(typeof oe=="number"){if(oe===0)return 1/0/oe>0?"0":"-0";var ss=String(oe);return rs?C(oe,ss):ss}if(typeof oe=="bigint"){var Tt=String(oe)+"n";return rs?C(oe,Tt):Tt}var vi=typeof tt.depth>"u"?5:tt.depth;if(typeof It>"u"&&(It=0),It>=vi&&vi>0&&typeof oe=="object")return re(oe)?"[Array]":"[Object]";var As=gs(tt,It);if(typeof Rt>"u")Rt=[];else if(de(Rt,oe)>=0)return"[Circular]";function os(zn,So,Su){if(So&&(Rt=P.call(Rt),Rt.push(So)),Su){var Ul={depth:tt.depth};return se(tt,"quoteStyle")&&(Ul.quoteStyle=tt.quoteStyle),te(zn,Ul,It+1,Rt)}return te(zn,tt,It+1,Rt)}if(typeof oe=="function"&&!ge(oe)){var fn=ne(oe),ri=xt(oe,os);return"[Function"+(fn?": "+fn:" (anonymous)")+"]"+(ri.length>0?" { "+A.call(ri,", ")+" }":"")}if(H(oe)){var Bi=D?v.call(String(oe),/^(Symbol\(.*\))_[^)]*$/,"$1"):B.call(oe);return typeof oe=="object"&&!D?Be(Bi):Bi}if(Je(oe)){for(var Ni="<"+_.call(String(oe.nodeName)),Er=oe.attributes||[],Ir=0;Ir",Ni}if(re(oe)){if(oe.length===0)return"[]";var xa=xt(oe,os);return As&&!Te(xa)?"["+Ct(xa,As)+"]":"[ "+A.call(xa,", ")+" ]"}if(he(oe)){var ba=xt(oe,os);return!("cause"in Error.prototype)&&"cause"in oe&&!N.call(oe,"cause")?"{ ["+String(oe)+"] "+A.call(b.call("[cause]: "+os(oe.cause),ba),", ")+" }":ba.length===0?"["+String(oe)+"]":"{ ["+String(oe)+"] "+A.call(ba,", ")+" }"}if(typeof oe=="object"&&ni){if(L&&typeof oe[L]=="function"&&R)return R(oe,{depth:vi-It});if(ni!=="symbol"&&typeof oe.inspect=="function")return oe.inspect()}if(le(oe)){var Bl=[];return s&&s.call(oe,function(zn,So){Bl.push(os(So,oe,!0)+" => "+os(zn,oe))}),nt("Map",t.call(oe),Bl,As)}if(me(oe)){var Nl=[];return a&&a.call(oe,function(zn){Nl.push(os(zn,oe))}),nt("Set",o.call(oe),Nl,As)}if(Re(oe))return Me("WeakMap");if(Ue(oe))return Me("WeakSet");if(we(oe))return Me("WeakRef");if(Y(oe))return Be(os(Number(oe)));if(G(oe))return Be(os(E.call(oe)));if(W(oe))return Be(p.call(oe));if(fe(oe))return Be(os(String(oe)));if(typeof window<"u"&&oe===window)return"{ [object Window] }";if(typeof globalThis<"u"&&oe===globalThis||typeof Qc<"u"&&oe===Qc)return"{ [object globalThis] }";if(!pe(oe)&&!ge(oe)){var wa=xt(oe,os),Sa=U?U(oe)===Object.prototype:oe instanceof Object||oe.constructor===Object,Ma=oe instanceof Object?"":"null prototype",Dl=!Sa&&X&&Object(oe)===oe&&X in oe?x.call(ue(oe),8,-1):Ma?"Object":"",wu=Sa||typeof oe.constructor!="function"?"":oe.constructor.name?oe.constructor.name+" ":"",Ta=wu+(Dl||Ma?"["+A.call(b.call([],Dl||[],Ma||[]),": ")+"] ":"");return wa.length===0?Ta+"{}":As?Ta+"{"+Ct(wa,As)+"}":Ta+"{ "+A.call(wa,", ")+" }"}return String(oe)};function j(te,oe,lt){var It=lt.quoteStyle||oe,Rt=$[It];return Rt+te+Rt}function K(te){return v.call(String(te),/"/g,""")}function ie(te){return!X||!(typeof te=="object"&&(X in te||typeof te[X]<"u"))}function re(te){return ue(te)==="[object Array]"&&ie(te)}function pe(te){return ue(te)==="[object Date]"&&ie(te)}function ge(te){return ue(te)==="[object RegExp]"&&ie(te)}function he(te){return ue(te)==="[object Error]"&&ie(te)}function fe(te){return ue(te)==="[object String]"&&ie(te)}function Y(te){return ue(te)==="[object Number]"&&ie(te)}function W(te){return ue(te)==="[object Boolean]"&&ie(te)}function H(te){if(D)return te&&typeof te=="object"&&te instanceof Symbol;if(typeof te=="symbol")return!0;if(!te||typeof te!="object"||!B)return!1;try{return B.call(te),!0}catch{}return!1}function G(te){if(!te||typeof te!="object"||!E)return!1;try{return E.call(te),!0}catch{}return!1}var q=Object.prototype.hasOwnProperty||function(te){return te in this};function se(te,oe){return q.call(te,oe)}function ue(te){return m.call(te)}function ne(te){if(te.name)return te.name;var oe=y.call(g.call(te),/^function\s*([\w$]+)/);return oe?oe[1]:null}function de(te,oe){if(te.indexOf)return te.indexOf(oe);for(var lt=0,It=te.length;ltoe.maxStringLength){var lt=te.length-oe.maxStringLength,It="... "+lt+" more character"+(lt>1?"s":"");return qe(x.call(te,0,oe.maxStringLength),oe)+It}var Rt=V[oe.quoteStyle||"single"];Rt.lastIndex=0;var tt=v.call(v.call(te,Rt,"\\$1"),/[\x00-\x1f]/g,Ze);return j(tt,"single",oe)}function Ze(te){var oe=te.charCodeAt(0),lt={8:"b",9:"t",10:"n",12:"f",13:"r"}[oe];return lt?"\\"+lt:"\\x"+(oe<16?"0":"")+w.call(oe.toString(16))}function Be(te){return"Object("+te+")"}function Me(te){return te+" { ? }"}function nt(te,oe,lt,It){var Rt=It?Ct(lt,It):A.call(lt,", ");return te+" ("+oe+") {"+Rt+"}"}function Te(te){for(var oe=0;oe=0)return!1;return!0}function gs(te,oe){var lt;if(te.indent===" ")lt=" ";else if(typeof te.indent=="number"&&te.indent>0)lt=A.call(Array(te.indent+1)," ");else return null;return{base:lt,prev:A.call(Array(oe+1),lt)}}function Ct(te,oe){if(te.length===0)return"";var lt=` -`+oe.prev+oe.base;return lt+A.call(te,","+lt)+` -`+oe.prev}function xt(te,oe){var lt=re(te),It=[];if(lt){It.length=te.length;for(var Rt=0;Rt"u"||!b?i:b(Uint8Array),D={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?i:ArrayBuffer,"%ArrayIteratorPrototype%":S&&b?b([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":k,"%AsyncGenerator%":k,"%AsyncGeneratorFunction%":k,"%AsyncIteratorPrototype%":k,"%Atomics%":typeof Atomics>"u"?i:Atomics,"%BigInt%":typeof BigInt>"u"?i:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?i:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?i:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":t,"%eval%":eval,"%EvalError%":s,"%Float16Array%":typeof Float16Array>"u"?i:Float16Array,"%Float32Array%":typeof Float32Array>"u"?i:Float32Array,"%Float64Array%":typeof Float64Array>"u"?i:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?i:FinalizationRegistry,"%Function%":g,"%GeneratorFunction%":k,"%Int8Array%":typeof Int8Array>"u"?i:Int8Array,"%Int16Array%":typeof Int16Array>"u"?i:Int16Array,"%Int32Array%":typeof Int32Array>"u"?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":S&&b?b(b([][Symbol.iterator]())):i,"%JSON%":typeof JSON=="object"?JSON:i,"%Map%":typeof Map>"u"?i:Map,"%MapIteratorPrototype%":typeof Map>"u"||!S||!b?i:b(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":e,"%Object.getOwnPropertyDescriptor%":x,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?i:Promise,"%Proxy%":typeof Proxy>"u"?i:Proxy,"%RangeError%":n,"%ReferenceError%":r,"%Reflect%":typeof Reflect>"u"?i:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?i:Set,"%SetIteratorPrototype%":typeof Set>"u"||!S||!b?i:b(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":S&&b?b(""[Symbol.iterator]()):i,"%Symbol%":S?Symbol:i,"%SyntaxError%":o,"%ThrowTypeError%":_,"%TypedArray%":B,"%TypeError%":a,"%Uint8Array%":typeof Uint8Array>"u"?i:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?i:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?i:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?i:Uint32Array,"%URIError%":l,"%WeakMap%":typeof WeakMap>"u"?i:WeakMap,"%WeakRef%":typeof WeakRef>"u"?i:WeakRef,"%WeakSet%":typeof WeakSet>"u"?i:WeakSet,"%Function.prototype.call%":E,"%Function.prototype.apply%":F,"%Object.defineProperty%":v,"%Object.getPrototypeOf%":A,"%Math.abs%":c,"%Math.floor%":h,"%Math.max%":u,"%Math.min%":d,"%Math.pow%":f,"%Math.round%":p,"%Math.sign%":m,"%Reflect.getPrototypeOf%":P};if(b)try{null.error}catch(ge){var X=b(b(ge));D["%Error.prototype%"]=X}var N=function ge(he){var fe;if(he==="%AsyncFunction%")fe=y("async function () {}");else if(he==="%GeneratorFunction%")fe=y("function* () {}");else if(he==="%AsyncGeneratorFunction%")fe=y("async function* () {}");else if(he==="%AsyncGenerator%"){var Y=ge("%AsyncGeneratorFunction%");Y&&(fe=Y.prototype)}else if(he==="%AsyncIteratorPrototype%"){var W=ge("%AsyncGenerator%");W&&b&&(fe=b(W.prototype))}return D[he]=fe,fe},U={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},C=nu(),R=S_(),O=C.call(E,Array.prototype.concat),L=C.call(F,Array.prototype.splice),$=C.call(E,String.prototype.replace),V=C.call(E,String.prototype.slice),j=C.call(E,RegExp.prototype.exec),K=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ie=/\\(\\)?/g,re=function(he){var fe=V(he,0,1),Y=V(he,-1);if(fe==="%"&&Y!=="%")throw new o("invalid intrinsic syntax, expected closing `%`");if(Y==="%"&&fe!=="%")throw new o("invalid intrinsic syntax, expected opening `%`");var W=[];return $(he,K,function(H,G,q,se){W[W.length]=q?$(se,ie,"$1"):G||H}),W},pe=function(he,fe){var Y=he,W;if(R(U,Y)&&(W=U[Y],Y="%"+W[0]+"%"),R(D,Y)){var H=D[Y];if(H===k&&(H=N(Y)),typeof H>"u"&&!fe)throw new a("intrinsic "+he+" exists, but is not available. Please file an issue!");return{alias:W,name:Y,value:H}}throw new o("intrinsic "+he+" does not exist!")};return bd=function(he,fe){if(typeof he!="string"||he.length===0)throw new a("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof fe!="boolean")throw new a('"allowMissing" argument must be a boolean');if(j(/^%?[^%]*%?$/,he)===null)throw new o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var Y=re(he),W=Y.length>0?Y[0]:"",H=pe("%"+W+"%",fe),G=H.name,q=H.value,se=!1,ue=H.alias;ue&&(W=ue[0],L(Y,O([0,1],ue)));for(var ne=1,de=!0;ne=Y.length){var me=x(q,le);de=!!me,de&&"get"in me&&!("originalValue"in me.get)?q=me.get:q=q[le]}else de=R(q,le),q=q[le];de&&!se&&(D[G]=q)}}return q},bd}var wd,T0;function Kx(){if(T0)return wd;T0=1;var i=lp(),e=qx(),t=e([i("%String.prototype.indexOf%")]);return wd=function(n,r){var o=i(n,!!r);return typeof o=="function"&&t(n,".prototype.")>-1?e([o]):o},wd}var Sd,_0;function Zx(){if(_0)return Sd;_0=1;var i=lp(),e=Kx(),t=iu(),s=pa(),n=i("%Map%",!0),r=e("Map.prototype.get",!0),o=e("Map.prototype.set",!0),a=e("Map.prototype.has",!0),l=e("Map.prototype.delete",!0),c=e("Map.prototype.size",!0);return Sd=!!n&&function(){var u,d={assert:function(f){if(!d.has(f))throw new s("Side channel does not contain "+t(f))},delete:function(f){if(u){var p=l(u,f);return c(u)===0&&(u=void 0),p}return!1},get:function(f){if(u)return r(u,f)},has:function(f){return u?a(u,f):!1},set:function(f,p){u||(u=new n),o(u,f,p)}};return d},Sd}var Md,C0;function M_(){if(C0)return Md;C0=1;var i=lp(),e=Kx(),t=iu(),s=Zx(),n=pa(),r=i("%WeakMap%",!0),o=e("WeakMap.prototype.get",!0),a=e("WeakMap.prototype.set",!0),l=e("WeakMap.prototype.has",!0),c=e("WeakMap.prototype.delete",!0);return Md=r?function(){var u,d,f={assert:function(p){if(!f.has(p))throw new n("Side channel does not contain "+t(p))},delete:function(p){if(r&&p&&(typeof p=="object"||typeof p=="function")){if(u)return c(u,p)}else if(s&&d)return d.delete(p);return!1},get:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?o(u,p):d&&d.get(p)},has:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?l(u,p):!!d&&d.has(p)},set:function(p,m){r&&p&&(typeof p=="object"||typeof p=="function")?(u||(u=new r),a(u,p,m)):s&&(d||(d=s()),d.set(p,m))}};return f}:s,Md}var Td,A0;function Jx(){if(A0)return Td;A0=1;var i=pa(),e=iu(),t=Q2(),s=Zx(),n=M_(),r=n||s||t;return Td=function(){var a,l={assert:function(c){if(!l.has(c)){var h=c&&Object(c)===c?"the given object key":e(c);throw new i("Side channel does not contain "+h)}},delete:function(c){return!!a&&a.delete(c)},get:function(c){return a&&a.get(c)},has:function(c){return!!a&&a.has(c)},set:function(c,h){a||(a=r()),a.set(c,h)}};return l},Td}var _d,E0;function cp(){if(E0)return _d;E0=1;var i=String.prototype.replace,e=/%20/g,t={RFC1738:"RFC1738",RFC3986:"RFC3986"};return _d={default:t.RFC3986,formatters:{RFC1738:function(s){return i.call(s,e,"+")},RFC3986:function(s){return String(s)}},RFC1738:t.RFC1738,RFC3986:t.RFC3986},_d}var Cd,I0;function Qx(){if(I0)return Cd;I0=1;var i=cp(),e=Jx(),t=jx(),s=Object.prototype.hasOwnProperty,n=Array.isArray,r=e(),o=function(P,F){return r.set(P,F),P},a=function(P){return r.has(P)},l=function(P){return r.get(P)},c=function(P,F){r.set(P,F)},h=(function(){for(var A=[],P=0;P<256;++P)A[A.length]="%"+((P<16?"0":"")+P.toString(16)).toUpperCase();return A})(),u=function(P){for(;P.length>1;){var F=P.pop(),E=F.obj[F.prop];if(n(E)){for(var k=[],B=0;B=E.arrayLimit){if(E.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+E.arrayLimit+" element"+(E.arrayLimit===1?"":"s")+" allowed in an array.");return o(d(P.concat(F),E),k)}P[k]=F}else if(P&&typeof P=="object")if(a(P)){var B=l(P)+1;P[B]=F,c(P,B)}else{if(E&&E.strictMerge)return[P,F];(E&&(E.plainObjects||E.allowPrototypes)||!s.call(Object.prototype,F))&&(P[F]=!0)}else return[P,F];return P}if(!P||typeof P!="object"){if(a(F)){for(var D=Object.keys(F),X=E&&E.plainObjects?{__proto__:null,0:P}:{0:P},N=0;NE.arrayLimit){if(E.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+E.arrayLimit+" element"+(E.arrayLimit===1?"":"s")+" allowed in an array.");return o(d(C,E),C.length-1)}return C}var R=P;if(n(P)&&!n(F)&&(R=d(P,E)),n(P)&&n(F)){if(F.forEach(function(O,L){if(s.call(P,L)){var $=P[L];$&&typeof $=="object"&&O&&typeof O=="object"?P[L]=A($,O,E):P[P.length]=O}else P[L]=O}),E&&typeof E.arrayLimit=="number"&&P.length>E.arrayLimit){if(E.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+E.arrayLimit+" element"+(E.arrayLimit===1?"":"s")+" allowed in an array.");return o(d(P,E),P.length-1)}return P}return Object.keys(F).reduce(function(O,L){var $=F[L];if(s.call(O,L)?f(O,L,A(O[L],$,E)):f(O,L,$),a(F)&&!a(O)&&o(O,l(F)),a(O)){var V=parseInt(L,10);String(V)===L&&V>=0&&V>l(O)&&c(O,V)}return O},R)},m=function(P,F){return Object.keys(F).reduce(function(E,k){return f(E,k,F[k]),E},P)},g=function(A,P,F){var E=A.replace(/\+/g," ");if(F==="iso-8859-1")return E.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(E)}catch{return E}},y=1024,x=function(P,F,E,k,B){if(P.length===0)return P;var D=P;if(typeof P=="symbol"?D=Symbol.prototype.toString.call(P):typeof P!="string"&&(D=String(P)),E==="iso-8859-1")return escape(D).replace(/%u[0-9a-f]{4}/gi,function($){return"%26%23"+parseInt($.slice(2),16)+"%3B"});for(var X="",N=0;N=y?D.slice(N,N+y):D;if(N+y=55296&&C<=56319&&(U=U.slice(0,-1),N-=1)}for(var R=[],O=0;O=48&&L<=57||L>=65&&L<=90||L>=97&&L<=122||B===i.RFC1738&&(L===40||L===41)){R[R.length]=U.charAt(O);continue}if(L<128){R[R.length]=h[L];continue}if(L<2048){R[R.length]=h[192|L>>6]+h[128|L&63];continue}if(L<55296||L>=57344){R[R.length]=h[224|L>>12]+h[128|L>>6&63]+h[128|L&63];continue}O+=1,L=65536+((L&1023)<<10|U.charCodeAt(O)&1023),R[R.length]=h[240|L>>18]+h[128|L>>12&63]+h[128|L>>6&63]+h[128|L&63]}X+=R.join("")}return X},v=function(P){for(var F=[{obj:{o:P},prop:"o"}],E=e(),k=0;kE){if(B)throw new RangeError("Array limit exceeded. Only "+E+" element"+(E===1?"":"s")+" allowed in an array.");return o(d(X,{plainObjects:k}),X.length-1)}return X},b=function(P,F){if(n(P)){for(var E=[],k=0;k"u"&&(O=0)}if(typeof P=="function"?C=P(y,C):C instanceof Date?C=k(C):x==="comma"&&r(C)&&(C=e.maybeMap(C,function(G){return G instanceof Date?k(G):G})),C===null){if(_)return D(A&&!X?A(y,h.encoder,N,"key",B):y);C=""}if(u(C)||e.isBuffer(C)){if(A){var V=X?y:A(y,h.encoder,N,"key",B);return[D(V)+"="+D(A(C,h.encoder,N,"value",B))]}return[D(y)+"="+D(String(C))]}var j=[];if(typeof C>"u")return j;var K;if(x==="comma"&&r(C))X&&A&&(C=e.maybeMap(C,function(G){return G==null?G:A(G)})),K=[{value:C.length>0?C.join(",")||null:void 0}];else if(r(P))K=P;else{var ie=Object.keys(C);K=F?ie.sort(F):ie}var re=b?String(y).replace(/\./g,"%2E"):String(y),pe=v&&r(C)&&C.length===1?re+"[]":re;if(w&&r(C)&&C.length===0)return pe+"[]";for(var ge=0;ge"u"?g.encodeDotInKeys===!0?!0:h.allowDots:!!g.allowDots;return{addQueryPrefix:typeof g.addQueryPrefix=="boolean"?g.addQueryPrefix:h.addQueryPrefix,allowDots:S,allowEmptyArrays:typeof g.allowEmptyArrays=="boolean"?!!g.allowEmptyArrays:h.allowEmptyArrays,arrayFormat:_,charset:y,charsetSentinel:typeof g.charsetSentinel=="boolean"?g.charsetSentinel:h.charsetSentinel,commaRoundTrip:!!g.commaRoundTrip,delimiter:typeof g.delimiter>"u"?h.delimiter:g.delimiter,encode:typeof g.encode=="boolean"?g.encode:h.encode,encodeDotInKeys:typeof g.encodeDotInKeys=="boolean"?g.encodeDotInKeys:h.encodeDotInKeys,encoder:typeof g.encoder=="function"?g.encoder:h.encoder,encodeValuesOnly:typeof g.encodeValuesOnly=="boolean"?g.encodeValuesOnly:h.encodeValuesOnly,filter:w,format:x,formatter:v,serializeDate:typeof g.serializeDate=="function"?g.serializeDate:h.serializeDate,skipNulls:typeof g.skipNulls=="boolean"?g.skipNulls:h.skipNulls,sort:typeof g.sort=="function"?g.sort:null,strictNullHandling:typeof g.strictNullHandling=="boolean"?g.strictNullHandling:h.strictNullHandling}};return Ad=function(m,g){var y=m,x=p(g),v,w;typeof x.filter=="function"?(w=x.filter,y=w("",y)):r(x.filter)&&(w=x.filter,v=w);var _=[];if(typeof y!="object"||y===null)return"";var S=n[x.arrayFormat],b=S==="comma"&&x.commaRoundTrip;v||(v=Object.keys(y)),x.sort&&v.sort(x.sort);for(var A=i(),P=0;P"u"||F===null)){var E=y[F];x.skipNulls&&E===null||a(_,f(E,F,S,b,x.allowEmptyArrays,x.strictNullHandling,x.skipNulls,x.encodeDotInKeys,x.encode?x.encoder:null,x.filter,x.sort,x.allowDots,x.serializeDate,x.format,x.formatter,x.encodeValuesOnly,x.charset,A))}}var k=_.join(x.delimiter),B=x.addQueryPrefix===!0?"?":"";return x.charsetSentinel&&(x.charset==="iso-8859-1"?B+="utf8=%26%2310003%3B"+x.delimiter:B+="utf8=%E2%9C%93"+x.delimiter),k.length>0?B+k:""},Ad}var Ed,P0;function __(){if(P0)return Ed;P0=1;var i=Qx(),e=Object.prototype.hasOwnProperty,t=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:i.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},n=function(f){return f.replace(/&#(\d+);/g,function(p,m){return String.fromCharCode(parseInt(m,10))})},r=function(f,p,m,g){if(f&&typeof f=="string"&&p.comma&&f.indexOf(",")>-1){if(g&&p.throwOnLimitExceeded)for(var y=0,x=f.indexOf(",");x>-1;){if(y+=1,y>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");x=f.indexOf(",",x+1)}return f.split(",")}if(p.throwOnLimitExceeded&&m>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");return f},o="utf8=%26%2310003%3B",a="utf8=%E2%9C%93",l=function(p,m){var g={__proto__:null},y=m.ignoreQueryPrefix?p.replace(/^\?/,""):p;y=y.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var x=m.parameterLimit===1/0?void 0:m.parameterLimit,v=y.split(m.delimiter,m.throwOnLimitExceeded&&typeof x<"u"?x+1:x);if(m.throwOnLimitExceeded&&typeof x<"u"&&v.length>x)throw new RangeError("Parameter limit exceeded. Only "+x+" parameter"+(x===1?"":"s")+" allowed.");var w=-1,_,S=m.charset;if(m.charsetSentinel)for(_=0;_-1&&(E=t(E)?[E]:E),m.comma&&t(E)&&E.length>m.arrayLimit&&(E=i.combine([],E,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded)),F!==null){var k=e.call(g,F);k&&(m.duplicates==="combine"||b.indexOf("[]=")>-1)?g[F]=i.combine(g[F],E,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded):(!k||m.duplicates==="last")&&(g[F]=E)}}return g},c=function(f,p,m,g){var y=0;if(f.length>0&&f[f.length-1]==="[]"){var x=f.slice(0,-1).join("");y=Array.isArray(p)&&p[x]?p[x].length:0}for(var v=g?p:r(p,m,y),w=f.length-1;w>=0;--w){var _,S=f[w];if(S==="[]"&&m.parseArrays)i.isOverflow(v)?_=v:_=m.allowEmptyArrays&&(v===""||m.strictNullHandling&&v===null)?[]:i.combine([],v,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded);else{_=m.plainObjects?{__proto__:null}:{};var b=S.charAt(0)==="["&&S.charAt(S.length-1)==="]"?S.slice(1,-1):S,A=m.decodeDotInKeys?b.replace(/%2E/g,"."):b,P=parseInt(A,10),F=!isNaN(P)&&S!==A&&String(P)===A&&P>=0&&m.parseArrays;if(!m.parseArrays&&A==="")_={0:v};else if(F&&P=0?g.slice(0,x):g;if(v){if(!m.plainObjects&&e.call(Object.prototype,v)&&!m.allowPrototypes)return;y[y.length]=v}for(var w=g.length,_=x,S=0;_>=0&&S=0){if(m.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+m.depth+" and strictDepth is true");y[y.length]="["+g.slice(_)+"]"}return y},u=function(p,m,g,y){if(p){var x=h(p,g);if(x)return c(x,m,g,y)}},d=function(p){if(!p)return s;if(typeof p.allowEmptyArrays<"u"&&typeof p.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof p.decodeDotInKeys<"u"&&typeof p.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(p.decoder!==null&&typeof p.decoder<"u"&&typeof p.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof p.charset<"u"&&p.charset!=="utf-8"&&p.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(typeof p.throwOnLimitExceeded<"u"&&typeof p.throwOnLimitExceeded!="boolean")throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var m=typeof p.charset>"u"?s.charset:p.charset,g=typeof p.duplicates>"u"?s.duplicates:p.duplicates;if(g!=="combine"&&g!=="first"&&g!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var y=typeof p.allowDots>"u"?p.decodeDotInKeys===!0?!0:s.allowDots:!!p.allowDots;return{allowDots:y,allowEmptyArrays:typeof p.allowEmptyArrays=="boolean"?!!p.allowEmptyArrays:s.allowEmptyArrays,allowPrototypes:typeof p.allowPrototypes=="boolean"?p.allowPrototypes:s.allowPrototypes,allowSparse:typeof p.allowSparse=="boolean"?p.allowSparse:s.allowSparse,arrayLimit:typeof p.arrayLimit=="number"?p.arrayLimit:s.arrayLimit,charset:m,charsetSentinel:typeof p.charsetSentinel=="boolean"?p.charsetSentinel:s.charsetSentinel,comma:typeof p.comma=="boolean"?p.comma:s.comma,decodeDotInKeys:typeof p.decodeDotInKeys=="boolean"?p.decodeDotInKeys:s.decodeDotInKeys,decoder:typeof p.decoder=="function"?p.decoder:s.decoder,delimiter:typeof p.delimiter=="string"||i.isRegExp(p.delimiter)?p.delimiter:s.delimiter,depth:typeof p.depth=="number"||p.depth===!1?+p.depth:s.depth,duplicates:g,ignoreQueryPrefix:p.ignoreQueryPrefix===!0,interpretNumericEntities:typeof p.interpretNumericEntities=="boolean"?p.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:typeof p.parameterLimit=="number"?p.parameterLimit:s.parameterLimit,parseArrays:p.parseArrays!==!1,plainObjects:typeof p.plainObjects=="boolean"?p.plainObjects:s.plainObjects,strictDepth:typeof p.strictDepth=="boolean"?!!p.strictDepth:s.strictDepth,strictMerge:typeof p.strictMerge=="boolean"?!!p.strictMerge:s.strictMerge,strictNullHandling:typeof p.strictNullHandling=="boolean"?p.strictNullHandling:s.strictNullHandling,throwOnLimitExceeded:typeof p.throwOnLimitExceeded=="boolean"?p.throwOnLimitExceeded:!1}};return Ed=function(f,p){var m=d(p);if(f===""||f===null||typeof f>"u")return m.plainObjects?{__proto__:null}:{};for(var g=typeof f=="string"?l(f,m):f,y=m.plainObjects?{__proto__:null}:{},x=Object.keys(g),v=0;v",'"',"`"," ","\r",` -`," "],o=["{","}","|","\\","^","`"].concat(r),a=["'"].concat(o),l=["%","/","?",";","#"].concat(a),c=["/","?","#"],h=255,u=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},p={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=C_();function y(_,S,b){if(_&&typeof _=="object"&&_ instanceof e)return _;var A=new e;return A.parse(_,S,b),A}e.prototype.parse=function(_,S,b){if(typeof _!="string")throw new TypeError("Parameter 'url' must be a string, not "+typeof _);var A=_.indexOf("?"),P=A!==-1&&A<_.indexOf("#")?"?":"#",F=_.split(P),E=/\\/g;F[0]=F[0].replace(E,"/"),_=F.join(P);var k=_;if(k=k.trim(),!b&&_.split("#").length===1){var B=n.exec(k);if(B)return this.path=k,this.href=k,this.pathname=B[1],B[2]?(this.search=B[2],S?this.query=g.parse(this.search.substr(1)):this.query=this.search.substr(1)):S&&(this.search="",this.query={}),this}var D=t.exec(k);if(D){D=D[0];var X=D.toLowerCase();this.protocol=X,k=k.substr(D.length)}if(b||D||k.match(/^\/\/[^@/]+@[^@/]+/)){var N=k.substr(0,2)==="//";N&&!(D&&p[D])&&(k=k.substr(2),this.slashes=!0)}if(!p[D]&&(N||D&&!m[D])){for(var U=-1,C=0;C127?ie+="x":ie+=K[re];if(!ie.match(u)){var ge=V.slice(0,C),he=V.slice(C+1),fe=K.match(d);fe&&(ge.push(fe[1]),he.unshift(fe[2])),he.length&&(k="/"+he.join(".")+k),this.hostname=ge.join(".");break}}}this.hostname.length>h?this.hostname="":this.hostname=this.hostname.toLowerCase(),$||(this.hostname=i.toASCII(this.hostname));var Y=this.port?":"+this.port:"",W=this.hostname||"";this.host=W+Y,this.href+=this.host,$&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),k[0]!=="/"&&(k="/"+k))}if(!f[X])for(var C=0,j=a.length;C0?b.host.split("@"):!1;ie&&(b.auth=ie.shift(),b.hostname=ie.shift(),b.host=b.hostname)}return b.search=_.search,b.query=_.query,(b.pathname!==null||b.search!==null)&&(b.path=(b.pathname?b.pathname:"")+(b.search?b.search:"")),b.href=b.format(),b}if(!V.length)return b.pathname=null,b.search?b.path="/"+b.search:b.path=null,b.href=b.format(),b;for(var re=V.slice(-1)[0],pe=(b.host||_.host||V.length>1)&&(re==="."||re==="..")||re==="",ge=0,he=V.length;he>=0;he--)re=V[he],re==="."?V.splice(he,1):re===".."?(V.splice(he,1),ge++):ge&&(V.splice(he,1),ge--);if(!L&&!$)for(;ge--;ge)V.unshift("..");L&&V[0]!==""&&(!V[0]||V[0].charAt(0)!=="/")&&V.unshift(""),pe&&V.join("/").substr(-1)!=="/"&&V.push("");var fe=V[0]===""||V[0]&&V[0].charAt(0)==="/";if(K){b.hostname=fe?"":V.length?V.shift():"",b.host=b.hostname;var ie=b.host&&b.host.indexOf("@")>0?b.host.split("@"):!1;ie&&(b.auth=ie.shift(),b.hostname=ie.shift(),b.host=b.hostname)}return L=L||b.host&&V.length,L&&!fe&&V.unshift(""),V.length>0?b.pathname=V.join("/"):(b.pathname=null,b.path=null),(b.pathname!==null||b.search!==null)&&(b.path=(b.pathname?b.pathname:"")+(b.search?b.search:"")),b.auth=_.auth||b.auth,b.slashes=b.slashes||_.slashes,b.href=b.format(),b},e.prototype.parseHost=function(){var _=this.host,S=s.exec(_);S&&(S=S[0],S!==":"&&(this.port=S.substr(1)),_=_.substr(0,_.length-S.length)),_&&(this.hostname=_)},Lr.parse=y,Lr.resolve=v,Lr.resolveObject=w,Lr.format=x,Lr.Url=e,Lr}A_();const O0={};function ht(i,e,t=3){if(O0[e])return;let s=new Error().stack;typeof s>"u"?console.warn("PixiJS Deprecation Warning: ",`${e} + */let $x;const su=i=>$x=i,Xx=Symbol();function _g(i){return i&&typeof i=="object"&&Object.prototype.toString.call(i)==="[object Object]"&&typeof i.toJSON!="function"}function O_(){const i=Ny(!0),e=i.run(()=>Fe({}));let t=[],s=[];const n=ur({install(r){su(n),n._a=r,r.provide(Xx,n),r.config.globalProperties.$pinia=n,s.forEach(o=>t.push(o)),s=[]},use(r){return this._a?t.push(r):s.push(r),this},_p:t,_a:null,_e:i,_s:new Map,state:e});return n}const Rf=()=>{};function Cg(i,e,t,s=Rf){i.add(e);const n=()=>{i.delete(e)&&s()};return!t&&Dy()&&uM(n),n}function To(i,...e){i.forEach(t=>{t(...e)})}const L_=i=>i(),Ag=Symbol(),Lu=Symbol();function Pf(i,e){i instanceof Map&&e instanceof Map?e.forEach((t,s)=>i.set(s,t)):i instanceof Set&&e instanceof Set&&e.forEach(i.add,i);for(const t in e){if(!Object.hasOwn(e,t))continue;const s=e[t],n=i[t];_g(n)&&_g(s)&&Object.hasOwn(i,t)&&!Gt(s)&&!Bn(s)?i[t]=Pf(n,s):i[t]=s}return i}const B_=Symbol();function N_(i){return!i||typeof i!="object"||!Object.hasOwn(i,B_)}const{assign:Qn}=Object;function D_(i){return!!(Gt(i)&&i.effect)}function U_(i,e,t,s){const{state:n,actions:r,getters:o}=e,a=t.state.value[i];let l;function c(){a||(t.state.value[i]=n?n():{});const h=OM(t.state.value[i]);return Qn(h,r,Object.keys(o||{}).reduce((u,d)=>(u[d]=ur(De(()=>{su(t);const f=t._s.get(i);return o[d].call(f,f)})),u),{}))}return l=Vx(i,c,e,t,s,!0),l}function Vx(i,e,t={},s,n,r){let o;const a=Qn({actions:{}},t),l={deep:!0};let c,h,u=new Set,d=new Set,f;const p=s.state.value[i];!r&&!p&&(s.state.value[i]={});let m;function g(b){let _;c=h=!1,typeof b=="function"?(b(s.state.value[i]),_={type:"patch function",storeId:i,events:f}):(Pf(s.state.value[i],b),_={type:"patch object",payload:b,storeId:i,events:f});const E=m=Symbol();zh().then(()=>{m===E&&(c=!0)}),h=!0,To(u,_,s.state.value[i])}const v=r?function(){const{state:_}=t,E=_?_():{};this.$patch(F=>{Qn(F,E)})}:Rf;function y(){o.stop(),u.clear(),d.clear(),s._s.delete(i)}const x=(b,_="")=>{if(Ag in b)return b[Lu]=_,b;const E=function(){su(s);const F=Array.from(arguments),I=new Set,k=new Set;function B(N){I.add(N)}function D(N){k.add(N)}To(d,{args:F,name:E[Lu],store:C,after:B,onError:D});let X;try{X=b.apply(this&&this.$id===i?this:C,F)}catch(N){throw To(k,N),N}return X instanceof Promise?X.then(N=>(To(I,N),N)).catch(N=>(To(k,N),Promise.reject(N))):(To(I,X),X)};return E[Ag]=!0,E[Lu]=_,E},M={_p:s,$id:i,$onAction:Cg.bind(null,d),$patch:g,$reset:v,$subscribe(b,_={}){if(u.has(b))return Rf;const E=Cg(u,b,_.detached,()=>F()),F=o.run(()=>cs(()=>s.state.value[i],I=>{(_.flush==="sync"?h:c)&&b({storeId:i,type:"direct",events:f},I)},Qn({},l,_)));return E},$dispose:y},C=mo(M);s._s.set(i,C);const w=(s._a&&s._a.runWithContext||L_)(()=>s._e.run(()=>(o=Ny()).run(()=>e({action:x}))));for(const b in w){const _=w[b];Gt(_)&&!D_(_)||Bn(_)?r||(p&&N_(_)&&(Gt(_)?_.value=p[b]:((_ instanceof Set||_ instanceof Map)&&_.clear(),Pf(_,p[b]))),s.state.value[i][b]=_):typeof _=="function"&&(w[b]=x(_,b),a.actions[b]=_)}return Qn(C,w),Qn(St(C),w),Object.defineProperty(C,"$state",{get:()=>s.state.value[i],set:b=>{g(_=>{Qn(_,b)})}}),s._p.forEach(b=>{const _=o.run(()=>b({store:C,app:s._a,pinia:s,options:a}));Qn(C,_)}),p&&r&&t.hydrate&&t.hydrate(C.$state,p),c=!0,h=!0,C}/*! #__NO_SIDE_EFFECTS__ */function $_(i,e,t){let s;const n=typeof e=="function";s=n?t:e;function r(o,a){const l=GM();return o=o||(l?Wo(Xx,null):null),o&&su(o),o=$x,o._s.has(i)||(n?Vx(i,e,s,o):U_(i,s,o)),o._s.get(i)}return r.$id=i,r}var go=(i=>(i[i.WEBGL_LEGACY=0]="WEBGL_LEGACY",i[i.WEBGL=1]="WEBGL",i[i.WEBGL2=2]="WEBGL2",i))(go||{}),Yx=(i=>(i[i.UNKNOWN=0]="UNKNOWN",i[i.WEBGL=1]="WEBGL",i[i.CANVAS=2]="CANVAS",i))(Yx||{}),kf=(i=>(i[i.COLOR=16384]="COLOR",i[i.DEPTH=256]="DEPTH",i[i.STENCIL=1024]="STENCIL",i))(kf||{}),He=(i=>(i[i.NORMAL=0]="NORMAL",i[i.ADD=1]="ADD",i[i.MULTIPLY=2]="MULTIPLY",i[i.SCREEN=3]="SCREEN",i[i.OVERLAY=4]="OVERLAY",i[i.DARKEN=5]="DARKEN",i[i.LIGHTEN=6]="LIGHTEN",i[i.COLOR_DODGE=7]="COLOR_DODGE",i[i.COLOR_BURN=8]="COLOR_BURN",i[i.HARD_LIGHT=9]="HARD_LIGHT",i[i.SOFT_LIGHT=10]="SOFT_LIGHT",i[i.DIFFERENCE=11]="DIFFERENCE",i[i.EXCLUSION=12]="EXCLUSION",i[i.HUE=13]="HUE",i[i.SATURATION=14]="SATURATION",i[i.COLOR=15]="COLOR",i[i.LUMINOSITY=16]="LUMINOSITY",i[i.NORMAL_NPM=17]="NORMAL_NPM",i[i.ADD_NPM=18]="ADD_NPM",i[i.SCREEN_NPM=19]="SCREEN_NPM",i[i.NONE=20]="NONE",i[i.SRC_OVER=0]="SRC_OVER",i[i.SRC_IN=21]="SRC_IN",i[i.SRC_OUT=22]="SRC_OUT",i[i.SRC_ATOP=23]="SRC_ATOP",i[i.DST_OVER=24]="DST_OVER",i[i.DST_IN=25]="DST_IN",i[i.DST_OUT=26]="DST_OUT",i[i.DST_ATOP=27]="DST_ATOP",i[i.ERASE=26]="ERASE",i[i.SUBTRACT=28]="SUBTRACT",i[i.XOR=29]="XOR",i))(He||{}),sn=(i=>(i[i.POINTS=0]="POINTS",i[i.LINES=1]="LINES",i[i.LINE_LOOP=2]="LINE_LOOP",i[i.LINE_STRIP=3]="LINE_STRIP",i[i.TRIANGLES=4]="TRIANGLES",i[i.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",i[i.TRIANGLE_FAN=6]="TRIANGLE_FAN",i))(sn||{}),_e=(i=>(i[i.RGBA=6408]="RGBA",i[i.RGB=6407]="RGB",i[i.RG=33319]="RG",i[i.RED=6403]="RED",i[i.RGBA_INTEGER=36249]="RGBA_INTEGER",i[i.RGB_INTEGER=36248]="RGB_INTEGER",i[i.RG_INTEGER=33320]="RG_INTEGER",i[i.RED_INTEGER=36244]="RED_INTEGER",i[i.ALPHA=6406]="ALPHA",i[i.LUMINANCE=6409]="LUMINANCE",i[i.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",i[i.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",i[i.DEPTH_STENCIL=34041]="DEPTH_STENCIL",i))(_e||{}),qo=(i=>(i[i.TEXTURE_2D=3553]="TEXTURE_2D",i[i.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",i[i.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",i[i.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",i[i.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",i[i.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",i[i.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",i[i.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",i[i.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",i))(qo||{}),$e=(i=>(i[i.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",i[i.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",i[i.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",i[i.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",i[i.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",i[i.UNSIGNED_INT=5125]="UNSIGNED_INT",i[i.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",i[i.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",i[i.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",i[i.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",i[i.BYTE=5120]="BYTE",i[i.SHORT=5122]="SHORT",i[i.INT=5124]="INT",i[i.FLOAT=5126]="FLOAT",i[i.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",i[i.HALF_FLOAT=36193]="HALF_FLOAT",i))($e||{}),Ne=(i=>(i[i.FLOAT=0]="FLOAT",i[i.INT=1]="INT",i[i.UINT=2]="UINT",i))(Ne||{}),Ci=(i=>(i[i.NEAREST=0]="NEAREST",i[i.LINEAR=1]="LINEAR",i))(Ci||{}),Ii=(i=>(i[i.CLAMP=33071]="CLAMP",i[i.REPEAT=10497]="REPEAT",i[i.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",i))(Ii||{}),gi=(i=>(i[i.OFF=0]="OFF",i[i.POW2=1]="POW2",i[i.ON=2]="ON",i[i.ON_MANUAL=3]="ON_MANUAL",i))(gi||{}),bs=(i=>(i[i.NPM=0]="NPM",i[i.UNPACK=1]="UNPACK",i[i.PMA=2]="PMA",i[i.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",i[i.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",i[i.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",i))(bs||{}),Zi=(i=>(i[i.NO=0]="NO",i[i.YES=1]="YES",i[i.AUTO=2]="AUTO",i[i.BLEND=0]="BLEND",i[i.CLEAR=1]="CLEAR",i[i.BLIT=2]="BLIT",i))(Zi||{}),ap=(i=>(i[i.AUTO=0]="AUTO",i[i.MANUAL=1]="MANUAL",i))(ap||{}),fi=(i=>(i.LOW="lowp",i.MEDIUM="mediump",i.HIGH="highp",i))(fi||{}),us=(i=>(i[i.NONE=0]="NONE",i[i.SCISSOR=1]="SCISSOR",i[i.STENCIL=2]="STENCIL",i[i.SPRITE=3]="SPRITE",i[i.COLOR=4]="COLOR",i))(us||{}),ls=(i=>(i[i.NONE=0]="NONE",i[i.LOW=2]="LOW",i[i.MEDIUM=4]="MEDIUM",i[i.HIGH=8]="HIGH",i))(ls||{}),an=(i=>(i[i.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",i[i.ARRAY_BUFFER=34962]="ARRAY_BUFFER",i[i.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",i))(an||{});const X_={createCanvas:(i,e)=>{const t=document.createElement("canvas");return t.width=i,t.height=e,t},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(i,e)=>fetch(i,e),parseXML:i=>new DOMParser().parseFromString(i,"text/xml")},Le={ADAPTER:X_,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var Bu=/iPhone/i,Eg=/iPod/i,Ig=/iPad/i,Rg=/\biOS-universal(?:.+)Mac\b/i,Nu=/\bAndroid(?:.+)Mobile\b/i,Pg=/Android/i,_o=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,jl=/Silk/i,vn=/Windows Phone/i,kg=/\bWindows(?:.+)ARM\b/i,Fg=/BlackBerry/i,Og=/BB10/i,Lg=/Opera Mini/i,Bg=/\b(CriOS|Chrome)(?:.+)Mobile/i,Ng=/Mobile(?:.+)Firefox\b/i,Dg=function(i){return typeof i<"u"&&i.platform==="MacIntel"&&typeof i.maxTouchPoints=="number"&&i.maxTouchPoints>1&&typeof MSStream>"u"};function V_(i){return function(e){return e.test(i)}}function Ug(i){var e={userAgent:"",platform:"",maxTouchPoints:0};!i&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof i=="string"?e.userAgent=i:i&&i.userAgent&&(e={userAgent:i.userAgent,platform:i.platform,maxTouchPoints:i.maxTouchPoints||0});var t=e.userAgent,s=t.split("[FBAN");typeof s[1]<"u"&&(t=s[0]),s=t.split("Twitter"),typeof s[1]<"u"&&(t=s[0]);var n=V_(t),r={apple:{phone:n(Bu)&&!n(vn),ipod:n(Eg),tablet:!n(Bu)&&(n(Ig)||Dg(e))&&!n(vn),universal:n(Rg),device:(n(Bu)||n(Eg)||n(Ig)||n(Rg)||Dg(e))&&!n(vn)},amazon:{phone:n(_o),tablet:!n(_o)&&n(jl),device:n(_o)||n(jl)},android:{phone:!n(vn)&&n(_o)||!n(vn)&&n(Nu),tablet:!n(vn)&&!n(_o)&&!n(Nu)&&(n(jl)||n(Pg)),device:!n(vn)&&(n(_o)||n(jl)||n(Nu)||n(Pg))||n(/\bokhttp\b/i)},windows:{phone:n(vn),tablet:n(kg),device:n(vn)||n(kg)},other:{blackberry:n(Fg),blackberry10:n(Og),opera:n(Lg),firefox:n(Ng),chrome:n(Bg),device:n(Fg)||n(Og)||n(Lg)||n(Ng)||n(Bg)},any:!1,phone:!1,tablet:!1};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}const Y_=Ug.default??Ug,In=Y_(globalThis.navigator);Le.RETINA_PREFIX=/@([0-9\.]+)x/;Le.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var Qc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Gx(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}function G_(i){if(Object.prototype.hasOwnProperty.call(i,"__esModule"))return i;var e=i.default;if(typeof e=="function"){var t=function s(){return this instanceof s?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(i).forEach(function(s){var n=Object.getOwnPropertyDescriptor(i,s);Object.defineProperty(t,s,n.get?n:{enumerable:!0,get:function(){return i[s]}})}),t}var Du={exports:{}},$g;function j_(){return $g||($g=1,(function(i){var e=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function n(l,c,h){this.fn=l,this.context=c,this.once=h||!1}function r(l,c,h,u,d){if(typeof h!="function")throw new TypeError("The listener must be a function");var f=new n(h,u||l,d),p=t?t+c:c;return l._events[p]?l._events[p].fn?l._events[p]=[l._events[p],f]:l._events[p].push(f):(l._events[p]=f,l._eventsCount++),l}function o(l,c){--l._eventsCount===0?l._events=new s:delete l._events[c]}function a(){this._events=new s,this._eventsCount=0}a.prototype.eventNames=function(){var c=[],h,u;if(this._eventsCount===0)return c;for(u in h=this._events)e.call(h,u)&&c.push(t?u.slice(1):u);return Object.getOwnPropertySymbols?c.concat(Object.getOwnPropertySymbols(h)):c},a.prototype.listeners=function(c){var h=t?t+c:c,u=this._events[h];if(!u)return[];if(u.fn)return[u.fn];for(var d=0,f=u.length,p=new Array(f);d80*A){V=K=N[0],j=ie=N[1];for(var he=A;heK&&(K=re),pe>ie&&(ie=pe);ge=Math.max(K-V,ie-j),ge=ge!==0?32767/ge:0}return s(L,$,A,V,j,ge,0),$}function e(N,U,A,P,O){var L,$;if(O===X(N,U,A,P)>0)for(L=U;L=U;L-=P)$=k(L,N[L],N[L+1],$);return $&&M($,$.next)&&(B($),$=$.next),$}function t(N,U){if(!N)return N;U||(U=N);var A=N,P;do if(P=!1,!A.steiner&&(M(A,A.next)||x(A.prev,A,A.next)===0)){if(B(A),A=U=A.prev,A===A.next)break;P=!0}else A=A.next;while(P||A!==U);return U}function s(N,U,A,P,O,L,$){if(N){!$&&L&&f(N,P,O,L);for(var V=N,j,K;N.prev!==N.next;){if(j=N.prev,K=N.next,L?r(N,P,O,L):n(N)){U.push(j.i/A|0),U.push(N.i/A|0),U.push(K.i/A|0),B(N),N=K.next,V=K.next;continue}if(N=K,N===V){$?$===1?(N=o(t(N),U,A),s(N,U,A,P,O,L,2)):$===2&&a(N,U,A,P,O,L):s(t(N),U,A,P,O,L,1);break}}}}function n(N){var U=N.prev,A=N,P=N.next;if(x(U,A,P)>=0)return!1;for(var O=U.x,L=A.x,$=P.x,V=U.y,j=A.y,K=P.y,ie=OL?O>$?O:$:L>$?L:$,ge=V>j?V>K?V:K:j>K?j:K,he=P.next;he!==U;){if(he.x>=ie&&he.x<=pe&&he.y>=re&&he.y<=ge&&v(O,V,L,j,$,K,he.x,he.y)&&x(he.prev,he,he.next)>=0)return!1;he=he.next}return!0}function r(N,U,A,P){var O=N.prev,L=N,$=N.next;if(x(O,L,$)>=0)return!1;for(var V=O.x,j=L.x,K=$.x,ie=O.y,re=L.y,pe=$.y,ge=Vj?V>K?V:K:j>K?j:K,Y=ie>re?ie>pe?ie:pe:re>pe?re:pe,W=m(ge,he,U,A,P),H=m(fe,Y,U,A,P),G=N.prevZ,q=N.nextZ;G&&G.z>=W&&q&&q.z<=H;){if(G.x>=ge&&G.x<=fe&&G.y>=he&&G.y<=Y&&G!==O&&G!==$&&v(V,ie,j,re,K,pe,G.x,G.y)&&x(G.prev,G,G.next)>=0||(G=G.prevZ,q.x>=ge&&q.x<=fe&&q.y>=he&&q.y<=Y&&q!==O&&q!==$&&v(V,ie,j,re,K,pe,q.x,q.y)&&x(q.prev,q,q.next)>=0))return!1;q=q.nextZ}for(;G&&G.z>=W;){if(G.x>=ge&&G.x<=fe&&G.y>=he&&G.y<=Y&&G!==O&&G!==$&&v(V,ie,j,re,K,pe,G.x,G.y)&&x(G.prev,G,G.next)>=0)return!1;G=G.prevZ}for(;q&&q.z<=H;){if(q.x>=ge&&q.x<=fe&&q.y>=he&&q.y<=Y&&q!==O&&q!==$&&v(V,ie,j,re,K,pe,q.x,q.y)&&x(q.prev,q,q.next)>=0)return!1;q=q.nextZ}return!0}function o(N,U,A){var P=N;do{var O=P.prev,L=P.next.next;!M(O,L)&&C(O,P,P.next,L)&&E(O,L)&&E(L,O)&&(U.push(O.i/A|0),U.push(P.i/A|0),U.push(L.i/A|0),B(P),B(P.next),P=N=L),P=P.next}while(P!==N);return t(P)}function a(N,U,A,P,O,L){var $=N;do{for(var V=$.next.next;V!==$.prev;){if($.i!==V.i&&y($,V)){var j=I($,V);$=t($,$.next),j=t(j,j.next),s($,U,A,P,O,L,0),s(j,U,A,P,O,L,0);return}V=V.next}$=$.next}while($!==N)}function l(N,U,A,P){var O=[],L,$,V,j,K;for(L=0,$=U.length;L<$;L++)V=U[L]*P,j=L<$-1?U[L+1]*P:N.length,K=e(N,V,j,P,!1),K===K.next&&(K.steiner=!0),O.push(g(K));for(O.sort(c),L=0;L=A.next.y&&A.next.y!==A.y){var V=A.x+(O-A.y)*(A.next.x-A.x)/(A.next.y-A.y);if(V<=P&&V>L&&(L=V,$=A.x=A.x&&A.x>=K&&P!==A.x&&v(O$.x||A.x===$.x&&d($,A)))&&($=A,re=pe)),A=A.next;while(A!==j);return $}function d(N,U){return x(N.prev,N,U.prev)<0&&x(U.next,N,N.next)<0}function f(N,U,A,P){var O=N;do O.z===0&&(O.z=m(O.x,O.y,U,A,P)),O.prevZ=O.prev,O.nextZ=O.next,O=O.next;while(O!==N);O.prevZ.nextZ=null,O.prevZ=null,p(O)}function p(N){var U,A,P,O,L,$,V,j,K=1;do{for(A=N,N=null,L=null,$=0;A;){for($++,P=A,V=0,U=0;U0||j>0&&P;)V!==0&&(j===0||!P||A.z<=P.z)?(O=A,A=A.nextZ,V--):(O=P,P=P.nextZ,j--),L?L.nextZ=O:N=O,O.prevZ=L,L=O;A=P}L.nextZ=null,K*=2}while($>1);return N}function m(N,U,A,P,O){return N=(N-A)*O|0,U=(U-P)*O|0,N=(N|N<<8)&16711935,N=(N|N<<4)&252645135,N=(N|N<<2)&858993459,N=(N|N<<1)&1431655765,U=(U|U<<8)&16711935,U=(U|U<<4)&252645135,U=(U|U<<2)&858993459,U=(U|U<<1)&1431655765,N|U<<1}function g(N){var U=N,A=N;do(U.x=(N-$)*(L-V)&&(N-$)*(P-V)>=(A-$)*(U-V)&&(A-$)*(L-V)>=(O-$)*(P-V)}function y(N,U){return N.next.i!==U.i&&N.prev.i!==U.i&&!_(N,U)&&(E(N,U)&&E(U,N)&&F(N,U)&&(x(N.prev,N,U.prev)||x(N,U.prev,U))||M(N,U)&&x(N.prev,N,N.next)>0&&x(U.prev,U,U.next)>0)}function x(N,U,A){return(U.y-N.y)*(A.x-U.x)-(U.x-N.x)*(A.y-U.y)}function M(N,U){return N.x===U.x&&N.y===U.y}function C(N,U,A,P){var O=b(x(N,U,A)),L=b(x(N,U,P)),$=b(x(A,P,N)),V=b(x(A,P,U));return!!(O!==L&&$!==V||O===0&&w(N,A,U)||L===0&&w(N,P,U)||$===0&&w(A,N,P)||V===0&&w(A,U,P))}function w(N,U,A){return U.x<=Math.max(N.x,A.x)&&U.x>=Math.min(N.x,A.x)&&U.y<=Math.max(N.y,A.y)&&U.y>=Math.min(N.y,A.y)}function b(N){return N>0?1:N<0?-1:0}function _(N,U){var A=N;do{if(A.i!==N.i&&A.next.i!==N.i&&A.i!==U.i&&A.next.i!==U.i&&C(A,A.next,N,U))return!0;A=A.next}while(A!==N);return!1}function E(N,U){return x(N.prev,N,N.next)<0?x(N,U,N.next)>=0&&x(N,N.prev,U)>=0:x(N,U,N.prev)<0||x(N,N.next,U)<0}function F(N,U){var A=N,P=!1,O=(N.x+U.x)/2,L=(N.y+U.y)/2;do A.y>L!=A.next.y>L&&A.next.y!==A.y&&O<(A.next.x-A.x)*(L-A.y)/(A.next.y-A.y)+A.x&&(P=!P),A=A.next;while(A!==N);return P}function I(N,U){var A=new D(N.i,N.x,N.y),P=new D(U.i,U.x,U.y),O=N.next,L=U.prev;return N.next=U,U.prev=N,A.next=O,O.prev=A,P.next=A,A.prev=P,L.next=P,P.prev=L,P}function k(N,U,A,P){var O=new D(N,U,A);return P?(O.next=P.next,O.prev=P,P.next.prev=O,P.next=O):(O.prev=O,O.next=O),O}function B(N){N.next.prev=N.prev,N.prev.next=N.next,N.prevZ&&(N.prevZ.nextZ=N.nextZ),N.nextZ&&(N.nextZ.prevZ=N.prevZ)}function D(N,U,A){this.i=N,this.x=U,this.y=A,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}i.deviation=function(N,U,A,P){var O=U&&U.length,L=O?U[0]*A:N.length,$=Math.abs(X(N,0,L,A));if(O)for(var V=0,j=U.length;V0&&(P+=N[O-1].length,A.holes.push(P))}return A},Hl.exports}var z_=W_();const q_=Gx(z_);var Lr={},Ua={exports:{}};/*! https://mths.be/punycode v1.4.1 by @mathias */var K_=Ua.exports,Vg;function Z_(){return Vg||(Vg=1,(function(i,e){(function(t){var s=e&&!e.nodeType&&e,n=i&&!i.nodeType&&i,r=typeof Qc=="object"&&Qc;(r.global===r||r.window===r||r.self===r)&&(t=r);var o,a=2147483647,l=36,c=1,h=26,u=38,d=700,f=72,p=128,m="-",g=/^xn--/,v=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,x={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},M=l-c,C=Math.floor,w=String.fromCharCode,b;function _(O){throw new RangeError(x[O])}function E(O,L){for(var $=O.length,V=[];$--;)V[$]=L(O[$]);return V}function F(O,L){var $=O.split("@"),V="";$.length>1&&(V=$[0]+"@",O=$[1]),O=O.replace(y,".");var j=O.split("."),K=E(j,L).join(".");return V+K}function I(O){for(var L=[],$=0,V=O.length,j,K;$=55296&&j<=56319&&$65535&&(L-=65536,$+=w(L>>>10&1023|55296),L=56320|L&1023),$+=w(L),$}).join("")}function B(O){return O-48<10?O-22:O-65<26?O-65:O-97<26?O-97:l}function D(O,L){return O+22+75*(O<26)-((L!=0)<<5)}function X(O,L,$){var V=0;for(O=$?C(O/d):O>>1,O+=C(O/L);O>M*h>>1;V+=l)O=C(O/M);return C(V+(M+1)*O/(O+u))}function N(O){var L=[],$=O.length,V,j=0,K=p,ie=f,re,pe,ge,he,fe,Y,W,H,G;for(re=O.lastIndexOf(m),re<0&&(re=0),pe=0;pe=128&&_("not-basic"),L.push(O.charCodeAt(pe));for(ge=re>0?re+1:0;ge<$;){for(he=j,fe=1,Y=l;ge>=$&&_("invalid-input"),W=B(O.charCodeAt(ge++)),(W>=l||W>C((a-j)/fe))&&_("overflow"),j+=W*fe,H=Y<=ie?c:Y>=ie+h?h:Y-ie,!(WC(a/G)&&_("overflow"),fe*=G;V=L.length+1,ie=X(j-he,V,he==0),C(j/V)>a-K&&_("overflow"),K+=C(j/V),j%=V,L.splice(j++,0,K)}return k(L)}function U(O){var L,$,V,j,K,ie,re,pe,ge,he,fe,Y=[],W,H,G,q;for(O=I(O),W=O.length,L=p,$=0,K=f,ie=0;ie=L&&feC((a-$)/H)&&_("overflow"),$+=(re-L)*H,L=re,ie=0;iea&&_("overflow"),fe==L){for(pe=$,ge=l;he=ge<=K?c:ge>=K+h?h:ge-K,!(pe-1e3&&te<1e3||w.call(/e/,oe))return oe;var lt=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof te=="number"){var It=te<0?-F(-te):F(te);if(It!==te){var Rt=String(It),tt=y.call(oe,Rt.length+1);return x.call(Rt,lt,"$&_")+"."+x.call(x.call(tt,/([0-9]{3})/g,"$&_"),/_$/,"")}}return x.call(oe,lt,"$&_")}var P=e2,O=P.custom,L=H(O)?O:null,$={__proto__:null,double:'"',single:"'"},V={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};$u=function te(oe,lt,It,Rt){var tt=lt||{};if(se(tt,"quoteStyle")&&!se($,tt.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(se(tt,"maxStringLength")&&(typeof tt.maxStringLength=="number"?tt.maxStringLength<0&&tt.maxStringLength!==1/0:tt.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var ni=se(tt,"customInspect")?tt.customInspect:!0;if(typeof ni!="boolean"&&ni!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(se(tt,"indent")&&tt.indent!==null&&tt.indent!==" "&&!(parseInt(tt.indent,10)===tt.indent&&tt.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(se(tt,"numericSeparator")&&typeof tt.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var rs=tt.numericSeparator;if(typeof oe>"u")return"undefined";if(oe===null)return"null";if(typeof oe=="boolean")return oe?"true":"false";if(typeof oe=="string")return qe(oe,tt);if(typeof oe=="number"){if(oe===0)return 1/0/oe>0?"0":"-0";var ss=String(oe);return rs?A(oe,ss):ss}if(typeof oe=="bigint"){var Tt=String(oe)+"n";return rs?A(oe,Tt):Tt}var vi=typeof tt.depth>"u"?5:tt.depth;if(typeof It>"u"&&(It=0),It>=vi&&vi>0&&typeof oe=="object")return re(oe)?"[Array]":"[Object]";var As=vs(tt,It);if(typeof Rt>"u")Rt=[];else if(de(Rt,oe)>=0)return"[Circular]";function os(zn,So,Su){if(So&&(Rt=E.call(Rt),Rt.push(So)),Su){var Ul={depth:tt.depth};return se(tt,"quoteStyle")&&(Ul.quoteStyle=tt.quoteStyle),te(zn,Ul,It+1,Rt)}return te(zn,tt,It+1,Rt)}if(typeof oe=="function"&&!ge(oe)){var fn=ne(oe),ri=xt(oe,os);return"[Function"+(fn?": "+fn:" (anonymous)")+"]"+(ri.length>0?" { "+_.call(ri,", ")+" }":"")}if(H(oe)){var Bi=D?x.call(String(oe),/^(Symbol\(.*\))_[^)]*$/,"$1"):B.call(oe);return typeof oe=="object"&&!D?Be(Bi):Bi}if(Je(oe)){for(var Ni="<"+C.call(String(oe.nodeName)),Er=oe.attributes||[],Ir=0;Ir",Ni}if(re(oe)){if(oe.length===0)return"[]";var xa=xt(oe,os);return As&&!Te(xa)?"["+Ct(xa,As)+"]":"[ "+_.call(xa,", ")+" ]"}if(he(oe)){var ba=xt(oe,os);return!("cause"in Error.prototype)&&"cause"in oe&&!N.call(oe,"cause")?"{ ["+String(oe)+"] "+_.call(b.call("[cause]: "+os(oe.cause),ba),", ")+" }":ba.length===0?"["+String(oe)+"]":"{ ["+String(oe)+"] "+_.call(ba,", ")+" }"}if(typeof oe=="object"&&ni){if(L&&typeof oe[L]=="function"&&P)return P(oe,{depth:vi-It});if(ni!=="symbol"&&typeof oe.inspect=="function")return oe.inspect()}if(le(oe)){var Bl=[];return s&&s.call(oe,function(zn,So){Bl.push(os(So,oe,!0)+" => "+os(zn,oe))}),nt("Map",t.call(oe),Bl,As)}if(me(oe)){var Nl=[];return a&&a.call(oe,function(zn){Nl.push(os(zn,oe))}),nt("Set",o.call(oe),Nl,As)}if(Re(oe))return Me("WeakMap");if(Ue(oe))return Me("WeakSet");if(we(oe))return Me("WeakRef");if(Y(oe))return Be(os(Number(oe)));if(G(oe))return Be(os(I.call(oe)));if(W(oe))return Be(p.call(oe));if(fe(oe))return Be(os(String(oe)));if(typeof window<"u"&&oe===window)return"{ [object Window] }";if(typeof globalThis<"u"&&oe===globalThis||typeof Qc<"u"&&oe===Qc)return"{ [object globalThis] }";if(!pe(oe)&&!ge(oe)){var wa=xt(oe,os),Sa=U?U(oe)===Object.prototype:oe instanceof Object||oe.constructor===Object,Ma=oe instanceof Object?"":"null prototype",Dl=!Sa&&X&&Object(oe)===oe&&X in oe?y.call(ue(oe),8,-1):Ma?"Object":"",wu=Sa||typeof oe.constructor!="function"?"":oe.constructor.name?oe.constructor.name+" ":"",Ta=wu+(Dl||Ma?"["+_.call(b.call([],Dl||[],Ma||[]),": ")+"] ":"");return wa.length===0?Ta+"{}":As?Ta+"{"+Ct(wa,As)+"}":Ta+"{ "+_.call(wa,", ")+" }"}return String(oe)};function j(te,oe,lt){var It=lt.quoteStyle||oe,Rt=$[It];return Rt+te+Rt}function K(te){return x.call(String(te),/"/g,""")}function ie(te){return!X||!(typeof te=="object"&&(X in te||typeof te[X]<"u"))}function re(te){return ue(te)==="[object Array]"&&ie(te)}function pe(te){return ue(te)==="[object Date]"&&ie(te)}function ge(te){return ue(te)==="[object RegExp]"&&ie(te)}function he(te){return ue(te)==="[object Error]"&&ie(te)}function fe(te){return ue(te)==="[object String]"&&ie(te)}function Y(te){return ue(te)==="[object Number]"&&ie(te)}function W(te){return ue(te)==="[object Boolean]"&&ie(te)}function H(te){if(D)return te&&typeof te=="object"&&te instanceof Symbol;if(typeof te=="symbol")return!0;if(!te||typeof te!="object"||!B)return!1;try{return B.call(te),!0}catch{}return!1}function G(te){if(!te||typeof te!="object"||!I)return!1;try{return I.call(te),!0}catch{}return!1}var q=Object.prototype.hasOwnProperty||function(te){return te in this};function se(te,oe){return q.call(te,oe)}function ue(te){return m.call(te)}function ne(te){if(te.name)return te.name;var oe=v.call(g.call(te),/^function\s*([\w$]+)/);return oe?oe[1]:null}function de(te,oe){if(te.indexOf)return te.indexOf(oe);for(var lt=0,It=te.length;ltoe.maxStringLength){var lt=te.length-oe.maxStringLength,It="... "+lt+" more character"+(lt>1?"s":"");return qe(y.call(te,0,oe.maxStringLength),oe)+It}var Rt=V[oe.quoteStyle||"single"];Rt.lastIndex=0;var tt=x.call(x.call(te,Rt,"\\$1"),/[\x00-\x1f]/g,Ze);return j(tt,"single",oe)}function Ze(te){var oe=te.charCodeAt(0),lt={8:"b",9:"t",10:"n",12:"f",13:"r"}[oe];return lt?"\\"+lt:"\\x"+(oe<16?"0":"")+M.call(oe.toString(16))}function Be(te){return"Object("+te+")"}function Me(te){return te+" { ? }"}function nt(te,oe,lt,It){var Rt=It?Ct(lt,It):_.call(lt,", ");return te+" ("+oe+") {"+Rt+"}"}function Te(te){for(var oe=0;oe=0)return!1;return!0}function vs(te,oe){var lt;if(te.indent===" ")lt=" ";else if(typeof te.indent=="number"&&te.indent>0)lt=_.call(Array(te.indent+1)," ");else return null;return{base:lt,prev:_.call(Array(oe+1),lt)}}function Ct(te,oe){if(te.length===0)return"";var lt=` +`+oe.prev+oe.base;return lt+_.call(te,","+lt)+` +`+oe.prev}function xt(te,oe){var lt=re(te),It=[];if(lt){It.length=te.length;for(var Rt=0;Rt"u"||!b?i:b(Uint8Array),D={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?i:ArrayBuffer,"%ArrayIteratorPrototype%":w&&b?b([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":k,"%AsyncGenerator%":k,"%AsyncGeneratorFunction%":k,"%AsyncIteratorPrototype%":k,"%Atomics%":typeof Atomics>"u"?i:Atomics,"%BigInt%":typeof BigInt>"u"?i:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?i:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?i:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":t,"%eval%":eval,"%EvalError%":s,"%Float16Array%":typeof Float16Array>"u"?i:Float16Array,"%Float32Array%":typeof Float32Array>"u"?i:Float32Array,"%Float64Array%":typeof Float64Array>"u"?i:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?i:FinalizationRegistry,"%Function%":g,"%GeneratorFunction%":k,"%Int8Array%":typeof Int8Array>"u"?i:Int8Array,"%Int16Array%":typeof Int16Array>"u"?i:Int16Array,"%Int32Array%":typeof Int32Array>"u"?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":w&&b?b(b([][Symbol.iterator]())):i,"%JSON%":typeof JSON=="object"?JSON:i,"%Map%":typeof Map>"u"?i:Map,"%MapIteratorPrototype%":typeof Map>"u"||!w||!b?i:b(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":e,"%Object.getOwnPropertyDescriptor%":y,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?i:Promise,"%Proxy%":typeof Proxy>"u"?i:Proxy,"%RangeError%":n,"%ReferenceError%":r,"%Reflect%":typeof Reflect>"u"?i:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?i:Set,"%SetIteratorPrototype%":typeof Set>"u"||!w||!b?i:b(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":w&&b?b(""[Symbol.iterator]()):i,"%Symbol%":w?Symbol:i,"%SyntaxError%":o,"%ThrowTypeError%":C,"%TypedArray%":B,"%TypeError%":a,"%Uint8Array%":typeof Uint8Array>"u"?i:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?i:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?i:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?i:Uint32Array,"%URIError%":l,"%WeakMap%":typeof WeakMap>"u"?i:WeakMap,"%WeakRef%":typeof WeakRef>"u"?i:WeakRef,"%WeakSet%":typeof WeakSet>"u"?i:WeakSet,"%Function.prototype.call%":I,"%Function.prototype.apply%":F,"%Object.defineProperty%":x,"%Object.getPrototypeOf%":_,"%Math.abs%":c,"%Math.floor%":h,"%Math.max%":u,"%Math.min%":d,"%Math.pow%":f,"%Math.round%":p,"%Math.sign%":m,"%Reflect.getPrototypeOf%":E};if(b)try{null.error}catch(ge){var X=b(b(ge));D["%Error.prototype%"]=X}var N=function ge(he){var fe;if(he==="%AsyncFunction%")fe=v("async function () {}");else if(he==="%GeneratorFunction%")fe=v("function* () {}");else if(he==="%AsyncGeneratorFunction%")fe=v("async function* () {}");else if(he==="%AsyncGenerator%"){var Y=ge("%AsyncGeneratorFunction%");Y&&(fe=Y.prototype)}else if(he==="%AsyncIteratorPrototype%"){var W=ge("%AsyncGenerator%");W&&b&&(fe=b(W.prototype))}return D[he]=fe,fe},U={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},A=nu(),P=T2(),O=A.call(I,Array.prototype.concat),L=A.call(F,Array.prototype.splice),$=A.call(I,String.prototype.replace),V=A.call(I,String.prototype.slice),j=A.call(I,RegExp.prototype.exec),K=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ie=/\\(\\)?/g,re=function(he){var fe=V(he,0,1),Y=V(he,-1);if(fe==="%"&&Y!=="%")throw new o("invalid intrinsic syntax, expected closing `%`");if(Y==="%"&&fe!=="%")throw new o("invalid intrinsic syntax, expected opening `%`");var W=[];return $(he,K,function(H,G,q,se){W[W.length]=q?$(se,ie,"$1"):G||H}),W},pe=function(he,fe){var Y=he,W;if(P(U,Y)&&(W=U[Y],Y="%"+W[0]+"%"),P(D,Y)){var H=D[Y];if(H===k&&(H=N(Y)),typeof H>"u"&&!fe)throw new a("intrinsic "+he+" exists, but is not available. Please file an issue!");return{alias:W,name:Y,value:H}}throw new o("intrinsic "+he+" does not exist!")};return bd=function(he,fe){if(typeof he!="string"||he.length===0)throw new a("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof fe!="boolean")throw new a('"allowMissing" argument must be a boolean');if(j(/^%?[^%]*%?$/,he)===null)throw new o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var Y=re(he),W=Y.length>0?Y[0]:"",H=pe("%"+W+"%",fe),G=H.name,q=H.value,se=!1,ue=H.alias;ue&&(W=ue[0],L(Y,O([0,1],ue)));for(var ne=1,de=!0;ne=Y.length){var me=y(q,le);de=!!me,de&&"get"in me&&!("originalValue"in me.get)?q=me.get:q=q[le]}else de=P(q,le),q=q[le];de&&!se&&(D[G]=q)}}return q},bd}var wd,_0;function Jx(){if(_0)return wd;_0=1;var i=cp(),e=Zx(),t=e([i("%String.prototype.indexOf%")]);return wd=function(n,r){var o=i(n,!!r);return typeof o=="function"&&t(n,".prototype.")>-1?e([o]):o},wd}var Sd,C0;function Qx(){if(C0)return Sd;C0=1;var i=cp(),e=Jx(),t=iu(),s=pa(),n=i("%Map%",!0),r=e("Map.prototype.get",!0),o=e("Map.prototype.set",!0),a=e("Map.prototype.has",!0),l=e("Map.prototype.delete",!0),c=e("Map.prototype.size",!0);return Sd=!!n&&function(){var u,d={assert:function(f){if(!d.has(f))throw new s("Side channel does not contain "+t(f))},delete:function(f){if(u){var p=l(u,f);return c(u)===0&&(u=void 0),p}return!1},get:function(f){if(u)return r(u,f)},has:function(f){return u?a(u,f):!1},set:function(f,p){u||(u=new n),o(u,f,p)}};return d},Sd}var Md,A0;function _2(){if(A0)return Md;A0=1;var i=cp(),e=Jx(),t=iu(),s=Qx(),n=pa(),r=i("%WeakMap%",!0),o=e("WeakMap.prototype.get",!0),a=e("WeakMap.prototype.set",!0),l=e("WeakMap.prototype.has",!0),c=e("WeakMap.prototype.delete",!0);return Md=r?function(){var u,d,f={assert:function(p){if(!f.has(p))throw new n("Side channel does not contain "+t(p))},delete:function(p){if(r&&p&&(typeof p=="object"||typeof p=="function")){if(u)return c(u,p)}else if(s&&d)return d.delete(p);return!1},get:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?o(u,p):d&&d.get(p)},has:function(p){return r&&p&&(typeof p=="object"||typeof p=="function")&&u?l(u,p):!!d&&d.has(p)},set:function(p,m){r&&p&&(typeof p=="object"||typeof p=="function")?(u||(u=new r),a(u,p,m)):s&&(d||(d=s()),d.set(p,m))}};return f}:s,Md}var Td,E0;function eb(){if(E0)return Td;E0=1;var i=pa(),e=iu(),t=t2(),s=Qx(),n=_2(),r=n||s||t;return Td=function(){var a,l={assert:function(c){if(!l.has(c)){var h=c&&Object(c)===c?"the given object key":e(c);throw new i("Side channel does not contain "+h)}},delete:function(c){return!!a&&a.delete(c)},get:function(c){return a&&a.get(c)},has:function(c){return!!a&&a.has(c)},set:function(c,h){a||(a=r()),a.set(c,h)}};return l},Td}var _d,I0;function hp(){if(I0)return _d;I0=1;var i=String.prototype.replace,e=/%20/g,t={RFC1738:"RFC1738",RFC3986:"RFC3986"};return _d={default:t.RFC3986,formatters:{RFC1738:function(s){return i.call(s,e,"+")},RFC3986:function(s){return String(s)}},RFC1738:t.RFC1738,RFC3986:t.RFC3986},_d}var Cd,R0;function tb(){if(R0)return Cd;R0=1;var i=hp(),e=eb(),t=Wx(),s=Object.prototype.hasOwnProperty,n=Array.isArray,r=e(),o=function(E,F){return r.set(E,F),E},a=function(E){return r.has(E)},l=function(E){return r.get(E)},c=function(E,F){r.set(E,F)},h=(function(){for(var _=[],E=0;E<256;++E)_[_.length]="%"+((E<16?"0":"")+E.toString(16)).toUpperCase();return _})(),u=function(E){for(;E.length>1;){var F=E.pop(),I=F.obj[F.prop];if(n(I)){for(var k=[],B=0;B=I.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return o(d(E.concat(F),I),k)}E[k]=F}else if(E&&typeof E=="object")if(a(E)){var B=l(E)+1;E[B]=F,c(E,B)}else{if(I&&I.strictMerge)return[E,F];(I&&(I.plainObjects||I.allowPrototypes)||!s.call(Object.prototype,F))&&(E[F]=!0)}else return[E,F];return E}if(!E||typeof E!="object"){if(a(F)){for(var D=Object.keys(F),X=I&&I.plainObjects?{__proto__:null,0:E}:{0:E},N=0;NI.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return o(d(A,I),A.length-1)}return A}var P=E;if(n(E)&&!n(F)&&(P=d(E,I)),n(E)&&n(F)){if(F.forEach(function(O,L){if(s.call(E,L)){var $=E[L];$&&typeof $=="object"&&O&&typeof O=="object"?E[L]=_($,O,I):E[E.length]=O}else E[L]=O}),I&&typeof I.arrayLimit=="number"&&E.length>I.arrayLimit){if(I.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+I.arrayLimit+" element"+(I.arrayLimit===1?"":"s")+" allowed in an array.");return o(d(E,I),E.length-1)}return E}return Object.keys(F).reduce(function(O,L){var $=F[L];if(s.call(O,L)?f(O,L,_(O[L],$,I)):f(O,L,$),a(F)&&!a(O)&&o(O,l(F)),a(O)){var V=parseInt(L,10);String(V)===L&&V>=0&&V>l(O)&&c(O,V)}return O},P)},m=function(E,F){return Object.keys(F).reduce(function(I,k){return f(I,k,F[k]),I},E)},g=function(_,E,F){var I=_.replace(/\+/g," ");if(F==="iso-8859-1")return I.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(I)}catch{return I}},v=1024,y=function(E,F,I,k,B){if(E.length===0)return E;var D=E;if(typeof E=="symbol"?D=Symbol.prototype.toString.call(E):typeof E!="string"&&(D=String(E)),I==="iso-8859-1")return escape(D).replace(/%u[0-9a-f]{4}/gi,function($){return"%26%23"+parseInt($.slice(2),16)+"%3B"});for(var X="",N=0;N=v?D.slice(N,N+v):D;if(N+v=55296&&A<=56319&&(U=U.slice(0,-1),N-=1)}for(var P=[],O=0;O=48&&L<=57||L>=65&&L<=90||L>=97&&L<=122||B===i.RFC1738&&(L===40||L===41)){P[P.length]=U.charAt(O);continue}if(L<128){P[P.length]=h[L];continue}if(L<2048){P[P.length]=h[192|L>>6]+h[128|L&63];continue}if(L<55296||L>=57344){P[P.length]=h[224|L>>12]+h[128|L>>6&63]+h[128|L&63];continue}O+=1,L=65536+((L&1023)<<10|U.charCodeAt(O)&1023),P[P.length]=h[240|L>>18]+h[128|L>>12&63]+h[128|L>>6&63]+h[128|L&63]}X+=P.join("")}return X},x=function(E){for(var F=[{obj:{o:E},prop:"o"}],I=e(),k=0;kI){if(B)throw new RangeError("Array limit exceeded. Only "+I+" element"+(I===1?"":"s")+" allowed in an array.");return o(d(X,{plainObjects:k}),X.length-1)}return X},b=function(E,F){if(n(E)){for(var I=[],k=0;k"u"&&(O=0)}if(typeof E=="function"?A=E(v,A):A instanceof Date?A=k(A):y==="comma"&&r(A)&&(A=e.maybeMap(A,function(G){return G instanceof Date?k(G):G})),A===null){if(C)return D(_&&!X?_(v,h.encoder,N,"key",B):v);A=""}if(u(A)||e.isBuffer(A)){if(_){var V=X?v:_(v,h.encoder,N,"key",B);return[D(V)+"="+D(_(A,h.encoder,N,"value",B))]}return[D(v)+"="+D(String(A))]}var j=[];if(typeof A>"u")return j;var K;if(y==="comma"&&r(A))X&&_&&(A=e.maybeMap(A,function(G){return G==null?G:_(G)})),K=[{value:A.length>0?A.join(",")||null:void 0}];else if(r(E))K=E;else{var ie=Object.keys(A);K=F?ie.sort(F):ie}var re=b?String(v).replace(/\./g,"%2E"):String(v),pe=x&&r(A)&&A.length===1?re+"[]":re;if(M&&r(A)&&A.length===0)return pe+"[]";for(var ge=0;ge"u"?g.encodeDotInKeys===!0?!0:h.allowDots:!!g.allowDots;return{addQueryPrefix:typeof g.addQueryPrefix=="boolean"?g.addQueryPrefix:h.addQueryPrefix,allowDots:w,allowEmptyArrays:typeof g.allowEmptyArrays=="boolean"?!!g.allowEmptyArrays:h.allowEmptyArrays,arrayFormat:C,charset:v,charsetSentinel:typeof g.charsetSentinel=="boolean"?g.charsetSentinel:h.charsetSentinel,commaRoundTrip:!!g.commaRoundTrip,delimiter:typeof g.delimiter>"u"?h.delimiter:g.delimiter,encode:typeof g.encode=="boolean"?g.encode:h.encode,encodeDotInKeys:typeof g.encodeDotInKeys=="boolean"?g.encodeDotInKeys:h.encodeDotInKeys,encoder:typeof g.encoder=="function"?g.encoder:h.encoder,encodeValuesOnly:typeof g.encodeValuesOnly=="boolean"?g.encodeValuesOnly:h.encodeValuesOnly,filter:M,format:y,formatter:x,serializeDate:typeof g.serializeDate=="function"?g.serializeDate:h.serializeDate,skipNulls:typeof g.skipNulls=="boolean"?g.skipNulls:h.skipNulls,sort:typeof g.sort=="function"?g.sort:null,strictNullHandling:typeof g.strictNullHandling=="boolean"?g.strictNullHandling:h.strictNullHandling}};return Ad=function(m,g){var v=m,y=p(g),x,M;typeof y.filter=="function"?(M=y.filter,v=M("",v)):r(y.filter)&&(M=y.filter,x=M);var C=[];if(typeof v!="object"||v===null)return"";var w=n[y.arrayFormat],b=w==="comma"&&y.commaRoundTrip;x||(x=Object.keys(v)),y.sort&&x.sort(y.sort);for(var _=i(),E=0;E"u"||F===null)){var I=v[F];y.skipNulls&&I===null||a(C,f(I,F,w,b,y.allowEmptyArrays,y.strictNullHandling,y.skipNulls,y.encodeDotInKeys,y.encode?y.encoder:null,y.filter,y.sort,y.allowDots,y.serializeDate,y.format,y.formatter,y.encodeValuesOnly,y.charset,_))}}var k=C.join(y.delimiter),B=y.addQueryPrefix===!0?"?":"";return y.charsetSentinel&&(y.charset==="iso-8859-1"?B+="utf8=%26%2310003%3B"+y.delimiter:B+="utf8=%E2%9C%93"+y.delimiter),k.length>0?B+k:""},Ad}var Ed,k0;function A2(){if(k0)return Ed;k0=1;var i=tb(),e=Object.prototype.hasOwnProperty,t=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:i.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},n=function(f){return f.replace(/&#(\d+);/g,function(p,m){return String.fromCharCode(parseInt(m,10))})},r=function(f,p,m,g){if(f&&typeof f=="string"&&p.comma&&f.indexOf(",")>-1){if(g&&p.throwOnLimitExceeded)for(var v=0,y=f.indexOf(",");y>-1;){if(v+=1,v>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");y=f.indexOf(",",y+1)}return f.split(",")}if(p.throwOnLimitExceeded&&m>=p.arrayLimit)throw new RangeError("Array limit exceeded. Only "+p.arrayLimit+" element"+(p.arrayLimit===1?"":"s")+" allowed in an array.");return f},o="utf8=%26%2310003%3B",a="utf8=%E2%9C%93",l=function(p,m){var g={__proto__:null},v=m.ignoreQueryPrefix?p.replace(/^\?/,""):p;v=v.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var y=m.parameterLimit===1/0?void 0:m.parameterLimit,x=v.split(m.delimiter,m.throwOnLimitExceeded&&typeof y<"u"?y+1:y);if(m.throwOnLimitExceeded&&typeof y<"u"&&x.length>y)throw new RangeError("Parameter limit exceeded. Only "+y+" parameter"+(y===1?"":"s")+" allowed.");var M=-1,C,w=m.charset;if(m.charsetSentinel)for(C=0;C-1&&(I=t(I)?[I]:I),m.comma&&t(I)&&I.length>m.arrayLimit&&(I=i.combine([],I,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded)),F!==null){var k=e.call(g,F);k&&(m.duplicates==="combine"||b.indexOf("[]=")>-1)?g[F]=i.combine(g[F],I,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded):(!k||m.duplicates==="last")&&(g[F]=I)}}return g},c=function(f,p,m,g){var v=0;if(f.length>0&&f[f.length-1]==="[]"){var y=f.slice(0,-1).join("");v=Array.isArray(p)&&p[y]?p[y].length:0}for(var x=g?p:r(p,m,v),M=f.length-1;M>=0;--M){var C,w=f[M];if(w==="[]"&&m.parseArrays)i.isOverflow(x)?C=x:C=m.allowEmptyArrays&&(x===""||m.strictNullHandling&&x===null)?[]:i.combine([],x,m.arrayLimit,m.plainObjects,m.throwOnLimitExceeded);else{C=m.plainObjects?{__proto__:null}:{};var b=w.charAt(0)==="["&&w.charAt(w.length-1)==="]"?w.slice(1,-1):w,_=m.decodeDotInKeys?b.replace(/%2E/g,"."):b,E=parseInt(_,10),F=!isNaN(E)&&w!==_&&String(E)===_&&E>=0&&m.parseArrays;if(!m.parseArrays&&_==="")C={0:x};else if(F&&E=0?g.slice(0,y):g;if(x){if(!m.plainObjects&&e.call(Object.prototype,x)&&!m.allowPrototypes)return;v[v.length]=x}for(var M=g.length,C=y,w=0;C>=0&&w=0){if(m.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+m.depth+" and strictDepth is true");v[v.length]="["+g.slice(C)+"]"}return v},u=function(p,m,g,v){if(p){var y=h(p,g);if(y)return c(y,m,g,v)}},d=function(p){if(!p)return s;if(typeof p.allowEmptyArrays<"u"&&typeof p.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof p.decodeDotInKeys<"u"&&typeof p.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(p.decoder!==null&&typeof p.decoder<"u"&&typeof p.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof p.charset<"u"&&p.charset!=="utf-8"&&p.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(typeof p.throwOnLimitExceeded<"u"&&typeof p.throwOnLimitExceeded!="boolean")throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var m=typeof p.charset>"u"?s.charset:p.charset,g=typeof p.duplicates>"u"?s.duplicates:p.duplicates;if(g!=="combine"&&g!=="first"&&g!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var v=typeof p.allowDots>"u"?p.decodeDotInKeys===!0?!0:s.allowDots:!!p.allowDots;return{allowDots:v,allowEmptyArrays:typeof p.allowEmptyArrays=="boolean"?!!p.allowEmptyArrays:s.allowEmptyArrays,allowPrototypes:typeof p.allowPrototypes=="boolean"?p.allowPrototypes:s.allowPrototypes,allowSparse:typeof p.allowSparse=="boolean"?p.allowSparse:s.allowSparse,arrayLimit:typeof p.arrayLimit=="number"?p.arrayLimit:s.arrayLimit,charset:m,charsetSentinel:typeof p.charsetSentinel=="boolean"?p.charsetSentinel:s.charsetSentinel,comma:typeof p.comma=="boolean"?p.comma:s.comma,decodeDotInKeys:typeof p.decodeDotInKeys=="boolean"?p.decodeDotInKeys:s.decodeDotInKeys,decoder:typeof p.decoder=="function"?p.decoder:s.decoder,delimiter:typeof p.delimiter=="string"||i.isRegExp(p.delimiter)?p.delimiter:s.delimiter,depth:typeof p.depth=="number"||p.depth===!1?+p.depth:s.depth,duplicates:g,ignoreQueryPrefix:p.ignoreQueryPrefix===!0,interpretNumericEntities:typeof p.interpretNumericEntities=="boolean"?p.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:typeof p.parameterLimit=="number"?p.parameterLimit:s.parameterLimit,parseArrays:p.parseArrays!==!1,plainObjects:typeof p.plainObjects=="boolean"?p.plainObjects:s.plainObjects,strictDepth:typeof p.strictDepth=="boolean"?!!p.strictDepth:s.strictDepth,strictMerge:typeof p.strictMerge=="boolean"?!!p.strictMerge:s.strictMerge,strictNullHandling:typeof p.strictNullHandling=="boolean"?p.strictNullHandling:s.strictNullHandling,throwOnLimitExceeded:typeof p.throwOnLimitExceeded=="boolean"?p.throwOnLimitExceeded:!1}};return Ed=function(f,p){var m=d(p);if(f===""||f===null||typeof f>"u")return m.plainObjects?{__proto__:null}:{};for(var g=typeof f=="string"?l(f,m):f,v=m.plainObjects?{__proto__:null}:{},y=Object.keys(g),x=0;x",'"',"`"," ","\r",` +`," "],o=["{","}","|","\\","^","`"].concat(r),a=["'"].concat(o),l=["%","/","?",";","#"].concat(a),c=["/","?","#"],h=255,u=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},p={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=E2();function v(C,w,b){if(C&&typeof C=="object"&&C instanceof e)return C;var _=new e;return _.parse(C,w,b),_}e.prototype.parse=function(C,w,b){if(typeof C!="string")throw new TypeError("Parameter 'url' must be a string, not "+typeof C);var _=C.indexOf("?"),E=_!==-1&&_127?ie+="x":ie+=K[re];if(!ie.match(u)){var ge=V.slice(0,A),he=V.slice(A+1),fe=K.match(d);fe&&(ge.push(fe[1]),he.unshift(fe[2])),he.length&&(k="/"+he.join(".")+k),this.hostname=ge.join(".");break}}}this.hostname.length>h?this.hostname="":this.hostname=this.hostname.toLowerCase(),$||(this.hostname=i.toASCII(this.hostname));var Y=this.port?":"+this.port:"",W=this.hostname||"";this.host=W+Y,this.href+=this.host,$&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),k[0]!=="/"&&(k="/"+k))}if(!f[X])for(var A=0,j=a.length;A0?b.host.split("@"):!1;ie&&(b.auth=ie.shift(),b.hostname=ie.shift(),b.host=b.hostname)}return b.search=C.search,b.query=C.query,(b.pathname!==null||b.search!==null)&&(b.path=(b.pathname?b.pathname:"")+(b.search?b.search:"")),b.href=b.format(),b}if(!V.length)return b.pathname=null,b.search?b.path="/"+b.search:b.path=null,b.href=b.format(),b;for(var re=V.slice(-1)[0],pe=(b.host||C.host||V.length>1)&&(re==="."||re==="..")||re==="",ge=0,he=V.length;he>=0;he--)re=V[he],re==="."?V.splice(he,1):re===".."?(V.splice(he,1),ge++):ge&&(V.splice(he,1),ge--);if(!L&&!$)for(;ge--;ge)V.unshift("..");L&&V[0]!==""&&(!V[0]||V[0].charAt(0)!=="/")&&V.unshift(""),pe&&V.join("/").substr(-1)!=="/"&&V.push("");var fe=V[0]===""||V[0]&&V[0].charAt(0)==="/";if(K){b.hostname=fe?"":V.length?V.shift():"",b.host=b.hostname;var ie=b.host&&b.host.indexOf("@")>0?b.host.split("@"):!1;ie&&(b.auth=ie.shift(),b.hostname=ie.shift(),b.host=b.hostname)}return L=L||b.host&&V.length,L&&!fe&&V.unshift(""),V.length>0?b.pathname=V.join("/"):(b.pathname=null,b.path=null),(b.pathname!==null||b.search!==null)&&(b.path=(b.pathname?b.pathname:"")+(b.search?b.search:"")),b.auth=C.auth||b.auth,b.slashes=b.slashes||C.slashes,b.href=b.format(),b},e.prototype.parseHost=function(){var C=this.host,w=s.exec(C);w&&(w=w[0],w!==":"&&(this.port=w.substr(1)),C=C.substr(0,C.length-w.length)),C&&(this.hostname=C)},Lr.parse=v,Lr.resolve=x,Lr.resolveObject=M,Lr.format=y,Lr.Url=e,Lr}I2();const L0={};function ht(i,e,t=3){if(L0[e])return;let s=new Error().stack;typeof s>"u"?console.warn("PixiJS Deprecation Warning: ",`${e} Deprecated since v${i}`):(s=s.split(` `).splice(t).join(` `),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${e} Deprecated since v${i}`),console.warn(s),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${e} -Deprecated since v${i}`),console.warn(s))),O0[e]=!0}function yi(i){if(typeof i!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(i)}`)}function Ra(i){return i.split("?")[0].split("#")[0]}function E_(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function I_(i,e,t){return i.replace(new RegExp(E_(e),"g"),t)}function R_(i,e){let t="",s=0,n=-1,r=0,o=-1;for(let a=0;a<=i.length;++a){if(a2){const l=t.lastIndexOf("/");if(l!==t.length-1){l===-1?(t="",s=0):(t=t.slice(0,l),s=t.length-1-t.lastIndexOf("/")),n=a,r=0;continue}}else if(t.length===2||t.length===1){t="",s=0,n=a,r=0;continue}}}else t.length>0?t+=`/${i.slice(n+1,a)}`:t=i.slice(n+1,a),s=a-n-1;n=a,r=0}else o===46&&r!==-1?++r:r=-1}return t}const ts={toPosix(i){return I_(i,"\\","/")},isUrl(i){return/^https?:/.test(this.toPosix(i))},isDataUrl(i){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(i)},isBlobUrl(i){return i.startsWith("blob:")},hasProtocol(i){return/^[^/:]+:/.test(this.toPosix(i))},getProtocol(i){yi(i),i=this.toPosix(i);const e=/^file:\/\/\//.exec(i);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(i);return t?t[0]:""},toAbsolute(i,e,t){if(yi(i),this.isDataUrl(i)||this.isBlobUrl(i))return i;const s=Ra(this.toPosix(e??Le.ADAPTER.getBaseUrl())),n=Ra(this.toPosix(t??this.rootname(s)));return i=this.toPosix(i),i.startsWith("/")?ts.join(n,i.slice(1)):this.isAbsolute(i)?i:this.join(s,i)},normalize(i){if(yi(i),i.length===0)return".";if(this.isDataUrl(i)||this.isBlobUrl(i))return i;i=this.toPosix(i);let e="";const t=i.startsWith("/");this.hasProtocol(i)&&(e=this.rootname(i),i=i.slice(e.length));const s=i.endsWith("/");return i=R_(i),i.length>0&&s&&(i+="/"),t?`/${i}`:e+i},isAbsolute(i){return yi(i),i=this.toPosix(i),this.hasProtocol(i)?!0:i.startsWith("/")},join(...i){if(i.length===0)return".";let e;for(let t=0;t0)if(e===void 0)e=s;else{const n=i[t-1]??"";this.joinExtensions.includes(this.extname(n).toLowerCase())?e+=`/../${s}`:e+=`/${s}`}}return e===void 0?".":this.normalize(e)},dirname(i){if(yi(i),i.length===0)return".";i=this.toPosix(i);let e=i.charCodeAt(0);const t=e===47;let s=-1,n=!0;const r=this.getProtocol(i),o=i;i=i.slice(r.length);for(let a=i.length-1;a>=1;--a)if(e=i.charCodeAt(a),e===47){if(!n){s=a;break}}else n=!1;return s===-1?t?"/":this.isUrl(o)?r+i:r:t&&s===1?"//":r+i.slice(0,s)},rootname(i){yi(i),i=this.toPosix(i);let e="";if(i.startsWith("/")?e="/":e=this.getProtocol(i),this.isUrl(i)){const t=i.indexOf("/",e.length);t!==-1?e=i.slice(0,t):e=i,e.endsWith("/")||(e+="/")}return e},basename(i,e){yi(i),e&&yi(e),i=Ra(this.toPosix(i));let t=0,s=-1,n=!0,r;if(e!==void 0&&e.length>0&&e.length<=i.length){if(e.length===i.length&&e===i)return"";let o=e.length-1,a=-1;for(r=i.length-1;r>=0;--r){const l=i.charCodeAt(r);if(l===47){if(!n){t=r+1;break}}else a===-1&&(n=!1,a=r+1),o>=0&&(l===e.charCodeAt(o)?--o===-1&&(s=r):(o=-1,s=a))}return t===s?s=a:s===-1&&(s=i.length),i.slice(t,s)}for(r=i.length-1;r>=0;--r)if(i.charCodeAt(r)===47){if(!n){t=r+1;break}}else s===-1&&(n=!1,s=r+1);return s===-1?"":i.slice(t,s)},extname(i){yi(i),i=Ra(this.toPosix(i));let e=-1,t=0,s=-1,n=!0,r=0;for(let o=i.length-1;o>=0;--o){const a=i.charCodeAt(o);if(a===47){if(!n){t=o+1;break}continue}s===-1&&(n=!1,s=o+1),a===46?e===-1?e=o:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||s===-1||r===0||r===1&&e===s-1&&e===t+1?"":i.slice(e,s)},parse(i){yi(i);const e={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return e;i=Ra(this.toPosix(i));let t=i.charCodeAt(0);const s=this.isAbsolute(i);let n;e.root=this.rootname(i),s||this.hasProtocol(i)?n=1:n=0;let r=-1,o=0,a=-1,l=!0,c=i.length-1,h=0;for(;c>=n;--c){if(t=i.charCodeAt(c),t===47){if(!l){o=c+1;break}continue}a===-1&&(l=!1,a=c+1),t===46?r===-1?r=c:h!==1&&(h=1):r!==-1&&(h=-1)}return r===-1||a===-1||h===0||h===1&&r===a-1&&r===o+1?a!==-1&&(o===0&&s?e.base=e.name=i.slice(1,a):e.base=e.name=i.slice(o,a)):(o===0&&s?(e.name=i.slice(1,r),e.base=i.slice(1,a)):(e.name=i.slice(o,r),e.base=i.slice(o,a)),e.ext=i.slice(r,a)),e.dir=this.dirname(i),e},sep:"/",delimiter:":",joinExtensions:[".html"]};let Rd;async function P_(){return Rd??(Rd=(async()=>{var r;const i=document.createElement("canvas").getContext("webgl");if(!i)return xs.UNPACK;const e=await new Promise(o=>{const a=document.createElement("video");a.onloadeddata=()=>o(a),a.onerror=()=>o(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!e)return xs.UNPACK;const t=i.createTexture();i.bindTexture(i.TEXTURE_2D,t);const s=i.createFramebuffer();i.bindFramebuffer(i.FRAMEBUFFER,s),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,t,0),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,i.NONE),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,n),i.deleteFramebuffer(s),i.deleteTexture(t),(r=i.getExtension("WEBGL_lose_context"))==null||r.loseContext(),n[0]<=n[3]?xs.PMA:xs.UNPACK})()),Rd}let Pd;function k_(){return typeof Pd>"u"&&(Pd=(function(){var e;const i={stencil:!0,failIfMajorPerformanceCaveat:Le.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!Le.ADAPTER.getWebGLRenderingContext())return!1;const t=Le.ADAPTER.createCanvas();let s=t.getContext("webgl",i)||t.getContext("experimental-webgl",i);const n=!!((e=s==null?void 0:s.getContextAttributes())!=null&&e.stencil);if(s){const r=s.getExtension("WEBGL_lose_context");r&&r.loseContext()}return s=null,n}catch{return!1}})()),Pd}var F_={grad:.9,turn:360,rad:360/(2*Math.PI)},yn=function(i){return typeof i=="string"?i.length>0:typeof i=="number"},ys=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*i)/t+0},mi=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),i>t?t:i>e?i:e},eb=function(i){return(i=isFinite(i)?i%360:0)>0?i:i+360},L0=function(i){return{r:mi(i.r,0,255),g:mi(i.g,0,255),b:mi(i.b,0,255),a:mi(i.a)}},kd=function(i){return{r:ys(i.r),g:ys(i.g),b:ys(i.b),a:ys(i.a,3)}},O_=/^#([0-9a-f]{3,8})$/i,Wl=function(i){var e=i.toString(16);return e.length<2?"0"+e:e},tb=function(i){var e=i.r,t=i.g,s=i.b,n=i.a,r=Math.max(e,t,s),o=r-Math.min(e,t,s),a=o?r===e?(t-s)/o:r===t?2+(s-e)/o:4+(e-t)/o:0;return{h:60*(a<0?a+6:a),s:r?o/r*100:0,v:r/255*100,a:n}},sb=function(i){var e=i.h,t=i.s,s=i.v,n=i.a;e=e/360*6,t/=100,s/=100;var r=Math.floor(e),o=s*(1-t),a=s*(1-(e-r)*t),l=s*(1-(1-e+r)*t),c=r%6;return{r:255*[s,a,o,o,l,s][c],g:255*[l,s,s,a,o,o][c],b:255*[o,o,l,s,s,a][c],a:n}},B0=function(i){return{h:eb(i.h),s:mi(i.s,0,100),l:mi(i.l,0,100),a:mi(i.a)}},N0=function(i){return{h:ys(i.h),s:ys(i.s),l:ys(i.l),a:ys(i.a,3)}},D0=function(i){return sb((t=(e=i).s,{h:e.h,s:(t*=((s=e.l)<50?s:100-s)/100)>0?2*t/(s+t)*100:0,v:s+t,a:e.a}));var e,t,s},Ja=function(i){return{h:(e=tb(i)).h,s:(n=(200-(t=e.s))*(s=e.v)/100)>0&&n<200?t*s/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,t,s,n},L_=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,B_=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,N_=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,D_=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,kf={string:[[function(i){var e=O_.exec(i);return e?(i=e[1]).length<=4?{r:parseInt(i[0]+i[0],16),g:parseInt(i[1]+i[1],16),b:parseInt(i[2]+i[2],16),a:i.length===4?ys(parseInt(i[3]+i[3],16)/255,2):1}:i.length===6||i.length===8?{r:parseInt(i.substr(0,2),16),g:parseInt(i.substr(2,2),16),b:parseInt(i.substr(4,2),16),a:i.length===8?ys(parseInt(i.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(i){var e=N_.exec(i)||D_.exec(i);return e?e[2]!==e[4]||e[4]!==e[6]?null:L0({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(i){var e=L_.exec(i)||B_.exec(i);if(!e)return null;var t,s,n=B0({h:(t=e[1],s=e[2],s===void 0&&(s="deg"),Number(t)*(F_[s]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return D0(n)},"hsl"]],object:[[function(i){var e=i.r,t=i.g,s=i.b,n=i.a,r=n===void 0?1:n;return yn(e)&&yn(t)&&yn(s)?L0({r:Number(e),g:Number(t),b:Number(s),a:Number(r)}):null},"rgb"],[function(i){var e=i.h,t=i.s,s=i.l,n=i.a,r=n===void 0?1:n;if(!yn(e)||!yn(t)||!yn(s))return null;var o=B0({h:Number(e),s:Number(t),l:Number(s),a:Number(r)});return D0(o)},"hsl"],[function(i){var e=i.h,t=i.s,s=i.v,n=i.a,r=n===void 0?1:n;if(!yn(e)||!yn(t)||!yn(s))return null;var o=(function(a){return{h:eb(a.h),s:mi(a.s,0,100),v:mi(a.v,0,100),a:mi(a.a)}})({h:Number(e),s:Number(t),v:Number(s),a:Number(r)});return sb(o)},"hsv"]]},U0=function(i,e){for(var t=0;t=.5},i.prototype.toHex=function(){return e=kd(this.rgba),t=e.r,s=e.g,n=e.b,o=(r=e.a)<1?Wl(ys(255*r)):"","#"+Wl(t)+Wl(s)+Wl(n)+o;var e,t,s,n,r,o},i.prototype.toRgb=function(){return kd(this.rgba)},i.prototype.toRgbString=function(){return e=kd(this.rgba),t=e.r,s=e.g,n=e.b,(r=e.a)<1?"rgba("+t+", "+s+", "+n+", "+r+")":"rgb("+t+", "+s+", "+n+")";var e,t,s,n,r},i.prototype.toHsl=function(){return N0(Ja(this.rgba))},i.prototype.toHslString=function(){return e=N0(Ja(this.rgba)),t=e.h,s=e.s,n=e.l,(r=e.a)<1?"hsla("+t+", "+s+"%, "+n+"%, "+r+")":"hsl("+t+", "+s+"%, "+n+"%)";var e,t,s,n,r},i.prototype.toHsv=function(){return e=tb(this.rgba),{h:ys(e.h),s:ys(e.s),v:ys(e.v),a:ys(e.a,3)};var e},i.prototype.invert=function(){return Ui({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},i.prototype.saturate=function(e){return e===void 0&&(e=.1),Ui(Fd(this.rgba,e))},i.prototype.desaturate=function(e){return e===void 0&&(e=.1),Ui(Fd(this.rgba,-e))},i.prototype.grayscale=function(){return Ui(Fd(this.rgba,-1))},i.prototype.lighten=function(e){return e===void 0&&(e=.1),Ui($0(this.rgba,e))},i.prototype.darken=function(e){return e===void 0&&(e=.1),Ui($0(this.rgba,-e))},i.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},i.prototype.alpha=function(e){return typeof e=="number"?Ui({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):ys(this.rgba.a,3);var t},i.prototype.hue=function(e){var t=Ja(this.rgba);return typeof e=="number"?Ui({h:e,s:t.s,l:t.l,a:t.a}):ys(t.h)},i.prototype.isEqual=function(e){return this.toHex()===Ui(e).toHex()},i})(),Ui=function(i){return i instanceof Ff?i:new Ff(i)},X0=[],$_=function(i){i.forEach(function(e){X0.indexOf(e)<0&&(e(Ff,kf),X0.push(e))})};function X_(i,e){var t={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},s={};for(var n in t)s[t[n]]=n;var r={};i.prototype.toName=function(o){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var a,l,c=s[this.toHex()];if(c)return c;if(o!=null&&o.closest){var h=this.toRgb(),u=1/0,d="black";if(!r.length)for(var f in t)r[f]=new i(t[f]).toRgb();for(var p in t){var m=(a=h,l=r[p],Math.pow(a.r-l.r,2)+Math.pow(a.g-l.g,2)+Math.pow(a.b-l.b,2));mn===t[r]);if(e!==null&&t!==null){const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(o=>e[o]===t[o])}return e===t}toRgba(){const[e,t,s,n]=this._components;return{r:e,g:t,b:s,a:n}}toRgb(){const[e,t,s]=this._components;return{r:e,g:t,b:s}}toRgbaString(){const[e,t,s]=this.toUint8RgbArray();return`rgba(${e},${t},${s},${this.alpha})`}toUint8RgbArray(e){const[t,s,n]=this._components;return e=e??[],e[0]=Math.round(t*255),e[1]=Math.round(s*255),e[2]=Math.round(n*255),e}toRgbArray(e){e=e??[];const[t,s,n]=this._components;return e[0]=t,e[1]=s,e[2]=n,e}toNumber(){return this._int}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,s,n,r]=Ac.temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=s,this._components[2]*=n,this._components[3]*=r,this.refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this.refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let s=this._int>>16&255,n=this._int>>8&255,r=this._int&255;return t&&(s=s*e+.5|0,n=n*e+.5|0,r=r*e+.5|0),(e*255<<24)+(s<<16)+(n<<8)+r}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(e){return this._components[3]=this._clamp(e),this}round(e){const[t,s,n]=this._components;return this._components[0]=Math.round(t*e)/e,this._components[1]=Math.round(s*e)/e,this._components[2]=Math.round(n*e)/e,this.refreshInt(),this._value=null,this}toArray(e){e=e??[];const[t,s,n,r]=this._components;return e[0]=t,e[1]=s,e[2]=n,e[3]=r,e}normalize(e){let t,s,n,r;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const o=e;t=(o>>16&255)/255,s=(o>>8&255)/255,n=(o&255)/255,r=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,s,n,r=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,s,n,r=255]=e,t/=255,s/=255,n/=255,r/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const a=Ac.HEX_PATTERN.exec(e);a&&(e=`#${a[2]}`)}const o=Ui(e);o.isValid()&&({r:t,g:s,b:n,a:r}=o.rgba,t/=255,s/=255,n/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=s,this._components[2]=n,this._components[3]=r,this.refreshInt();else throw new Error(`Unable to convert color ${e}`)}refreshInt(){this._clamp(this._components);const[e,t,s]=this._components;this._int=(e*255<<16)+(t*255<<8)+(s*255|0)}_clamp(e,t=0,s=1){return typeof e=="number"?Math.min(Math.max(e,t),s):(e.forEach((n,r)=>{e[r]=Math.min(Math.max(n,t),s)}),e)}};Oo.shared=new Oo,Oo.temp=new Oo,Oo.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Et=Oo;function V_(i){return ht("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),Et.shared.setValue(i).toHex()}function Y_(i){return ht("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),Et.shared.setValue(i).toNumber()}function G_(){const i=[],e=[];for(let s=0;s<32;s++)i[s]=s,e[s]=s;i[He.NORMAL_NPM]=He.NORMAL,i[He.ADD_NPM]=He.ADD,i[He.SCREEN_NPM]=He.SCREEN,e[He.NORMAL]=He.NORMAL_NPM,e[He.ADD]=He.ADD_NPM,e[He.SCREEN]=He.SCREEN_NPM;const t=[];return t.push(e),t.push(i),t}const ib=G_();function nb(i,e){return ib[e?1:0][i]}function j_(i,e=null){const t=i*6;if(e=e||new Uint16Array(t),e.length!==t)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${t}`);for(let s=0,n=0;s>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i+1}function V0(i){return!(i&i-1)&&!!i}function Y0(i){let e=(i>65535?1:0)<<4;i>>>=e;let t=(i>255?1:0)<<3;return i>>>=t,e|=t,t=(i>15?1:0)<<2,i>>>=t,e|=t,t=(i>3?1:0)<<1,i>>>=t,e|=t,e|i>>1}function Ko(i,e,t){const s=i.length;let n;if(e>=s||t===0)return;t=e+t>s?s-e:t;const r=s-t;for(n=e;n(i.Renderer="renderer",i.Application="application",i.RendererSystem="renderer-webgl-system",i.RendererPlugin="renderer-webgl-plugin",i.CanvasRendererSystem="renderer-canvas-system",i.CanvasRendererPlugin="renderer-canvas-plugin",i.Asset="asset",i.LoadParser="load-parser",i.ResolveParser="resolve-parser",i.CacheParser="cache-parser",i.DetectionParser="detection-parser",i))(ke||{});const Lf=i=>{if(typeof i=="function"||typeof i=="object"&&i.extension){if(!i.extension)throw new Error("Extension class must have an extension object");i={...typeof i.extension!="object"?{type:i.extension}:i.extension,ref:i}}if(typeof i=="object")i={...i};else throw new Error("Invalid extension type");return typeof i.type=="string"&&(i.type=[i.type]),i},z0=(i,e)=>Lf(i).priority??e,Xe={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...i){return i.map(Lf).forEach(e=>{e.type.forEach(t=>{var s,n;return(n=(s=this._removeHandlers)[t])==null?void 0:n.call(s,e)})}),this},add(...i){return i.map(Lf).forEach(e=>{e.type.forEach(t=>{var r,o;const s=this._addHandlers,n=this._queue;s[t]?(r=s[t])==null||r.call(s,e):(n[t]=n[t]||[],(o=n[t])==null||o.push(e))})}),this},handle(i,e,t){var o;const s=this._addHandlers,n=this._removeHandlers;if(s[i]||n[i])throw new Error(`Extension type ${i} already has a handler`);s[i]=e,n[i]=t;const r=this._queue;return r[i]&&((o=r[i])==null||o.forEach(a=>e(a)),delete r[i]),this},handleByMap(i,e){return this.handle(i,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByList(i,e,t=-1){return this.handle(i,s=>{e.includes(s.ref)||(e.push(s.ref),e.sort((n,r)=>z0(r,t)-z0(n,t)))},s=>{const n=e.indexOf(s.ref);n!==-1&&e.splice(n,1)})}};class Bf{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}const Z_=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` -`);function J_(i){let e="";for(let t=0;t0&&(e+=` -else `),t=0;--s){const n=Nf[s];if(n.test&&n.test(i,t))return new n(i,e)}throw new Error("Unrecognized source type to auto-detect Resource")}class Ri{constructor(e){this.items=[],this._name=e,this._aliasCount=0}emit(e,t,s,n,r,o,a,l){if(arguments.length>8)throw new Error("max arguments reached");const{name:c,items:h}=this;this._aliasCount++;for(let u=0,d=h.length;u0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(e){return e[this._name]&&(this.ensureNonAliasedItems(),this.remove(e),this.items.push(e)),this}remove(e){const t=this.items.indexOf(e);return t!==-1&&(this.ensureNonAliasedItems(),this.items.splice(t,1)),this}contains(e){return this.items.includes(e)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(Ri.prototype,{dispatch:{value:Ri.prototype.emit},run:{value:Ri.prototype.emit}});class vl{constructor(e=0,t=0){this._width=e,this._height=t,this.destroyed=!1,this.internal=!1,this.onResize=new Ri("setRealSize"),this.onUpdate=new Ri("update"),this.onError=new Ri("onError")}bind(e){this.onResize.add(e),this.onUpdate.add(e),this.onError.add(e),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(e){this.onResize.remove(e),this.onUpdate.remove(e),this.onError.remove(e)}resize(e,t){(e!==this._width||t!==this._height)&&(this._width=e,this._height=t,this.onResize.emit(e,t))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(e,t,s){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(e,t){return!1}}class ru extends vl{constructor(e,t){const{width:s,height:n}=t||{};if(!s||!n)throw new Error("BufferResource width or height invalid");super(s,n),this.data=e,this.unpackAlignment=t.unpackAlignment??4}upload(e,t,s){const n=e.gl;n.pixelStorei(n.UNPACK_ALIGNMENT,this.unpackAlignment),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.alphaMode===xs.UNPACK);const r=t.realWidth,o=t.realHeight;return s.width===r&&s.height===o?n.texSubImage2D(t.target,0,0,0,r,o,t.format,s.type,this.data):(s.width=r,s.height=o,n.texImage2D(t.target,0,s.internalFormat,r,o,0,t.format,s.type,this.data)),!0}dispose(){this.data=null}static test(e){return e===null||e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}const eC={scaleMode:Ci.NEAREST,alphaMode:xs.NPM},Df=class Lo extends El{constructor(e=null,t=null){super(),t=Object.assign({},Lo.defaultOptions,t);const{alphaMode:s,mipmap:n,anisotropicLevel:r,scaleMode:o,width:a,height:l,wrapMode:c,format:h,type:u,target:d,resolution:f,resourceOptions:p}=t;e&&!(e instanceof vl)&&(e=ob(e,p),e.internal=!0),this.resolution=f||Le.RESOLUTION,this.width=Math.round((a||0)*this.resolution)/this.resolution,this.height=Math.round((l||0)*this.resolution)/this.resolution,this._mipmap=n,this.anisotropicLevel=r,this._wrapMode=c,this._scaleMode=o,this.format=h,this.type=u,this.target=d,this.alphaMode=s,this.uid=co(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=a>0&&l>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(e)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(e){this._mipmap!==e&&(this._mipmap=e,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(e){this._scaleMode!==e&&(this._scaleMode=e,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(e){this._wrapMode!==e&&(this._wrapMode=e,this.dirtyStyleId++)}setStyle(e,t){let s;return e!==void 0&&e!==this.scaleMode&&(this.scaleMode=e,s=!0),t!==void 0&&t!==this.mipmap&&(this.mipmap=t,s=!0),s&&this.dirtyStyleId++,this}setSize(e,t,s){return s=s||this.resolution,this.setRealSize(e*s,t*s,s)}setRealSize(e,t,s){return this.resolution=s||this.resolution,this.width=Math.round(e)/this.resolution,this.height=Math.round(t)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=V0(this.realWidth)&&V0(this.realHeight)}setResolution(e){const t=this.resolution;return t===e?this:(this.resolution=e,this.valid&&(this.width=Math.round(this.width*t)/e,this.height=Math.round(this.height*t)/e,this.emit("update",this)),this._refreshPOT(),this)}setResource(e){if(this.resource===e)return this;if(this.resource)throw new Error("Resource can be set only once");return e.bind(this),this.resource=e,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(e){this.emit("error",this,e)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete Kn[this.cacheId],delete $i[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),Lo.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(e,t,s=Le.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else{if(!e._pixiId){const a=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${a}_${co()}`}r=e._pixiId}let o=Kn[r];if(n&&s&&!o)throw new Error(`The cacheId "${r}" does not exist in BaseTextureCache.`);return o||(o=new Lo(e,t),o.cacheId=r,Lo.addToCache(o,r)),o}static fromBuffer(e,t,s,n){e=e||new Float32Array(t*s*4);const r=new ru(e,{width:t,height:s,...n==null?void 0:n.resourceOptions});let o,a;return e instanceof Float32Array?(o=_e.RGBA,a=$e.FLOAT):e instanceof Int32Array?(o=_e.RGBA_INTEGER,a=$e.INT):e instanceof Uint32Array?(o=_e.RGBA_INTEGER,a=$e.UNSIGNED_INT):e instanceof Int16Array?(o=_e.RGBA_INTEGER,a=$e.SHORT):e instanceof Uint16Array?(o=_e.RGBA_INTEGER,a=$e.UNSIGNED_SHORT):e instanceof Int8Array?(o=_e.RGBA,a=$e.BYTE):(o=_e.RGBA,a=$e.UNSIGNED_BYTE),r.internal=!0,new Lo(r,Object.assign({},eC,{type:a,format:o},n))}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),Kn[t]&&Kn[t]!==e&&console.warn(`BaseTexture added to the cache with an id [${t}] that already had an entry`),Kn[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=Kn[e];if(t){const s=t.textureCacheIds.indexOf(e);return s>-1&&t.textureCacheIds.splice(s,1),delete Kn[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;t1){for(let u=0;u(i[i.POLY=0]="POLY",i[i.RECT=1]="RECT",i[i.CIRC=2]="CIRC",i[i.ELIP=3]="ELIP",i[i.RREC=4]="RREC",i))(_s||{});class vt{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new vt(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}}vt.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};const zl=[new vt,new vt,new vt,new vt];class ot{constructor(e=0,t=0,s=0,n=0){this.x=Number(e),this.y=Number(t),this.width=Number(s),this.height=Number(n),this.type=_s.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new ot(0,0,0,0)}clone(){return new ot(this.x,this.y,this.width,this.height)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e=this.y&&te.right?e.right:this.right)<=A)return!1;const P=this.ye.bottom?e.bottom:this.bottom)>P}const s=this.left,n=this.right,r=this.top,o=this.bottom;if(n<=s||o<=r)return!1;const a=zl[0].set(e.left,e.top),l=zl[1].set(e.left,e.bottom),c=zl[2].set(e.right,e.top),h=zl[3].set(e.right,e.bottom);if(c.x<=a.x||l.y<=a.y)return!1;const u=Math.sign(t.a*t.d-t.b*t.c);if(u===0||(t.apply(a,a),t.apply(l,l),t.apply(c,c),t.apply(h,h),Math.max(a.x,l.x,c.x,h.x)<=s||Math.min(a.x,l.x,c.x,h.x)>=n||Math.max(a.y,l.y,c.y,h.y)<=r||Math.min(a.y,l.y,c.y,h.y)>=o))return!1;const d=u*(l.y-a.y),f=u*(a.x-l.x),p=d*s+f*r,m=d*n+f*r,g=d*s+f*o,y=d*n+f*o;if(Math.max(p,m,g,y)<=d*a.x+f*a.y||Math.min(p,m,g,y)>=d*h.x+f*h.y)return!1;const x=u*(a.y-c.y),v=u*(c.x-a.x),w=x*s+v*r,_=x*n+v*r,S=x*s+v*o,b=x*n+v*o;return!(Math.max(w,_,S,b)<=x*a.x+v*a.y||Math.min(w,_,S,b)>=x*h.x+v*h.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),s=Math.min(this.x+this.width,e.x+e.width),n=Math.max(this.y,e.y),r=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(s-t,0),this.y=n,this.height=Math.max(r-n,0),this}ceil(e=1,t=.001){const s=Math.ceil((this.x+this.width-t)*e)/e,n=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=s-this.x,this.height=n-this.y,this}enlarge(e){const t=Math.min(this.x,e.x),s=Math.max(this.x+this.width,e.x+e.width),n=Math.min(this.y,e.y),r=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=s-t,this.y=n,this.height=r-n,this}}ot.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class ou{constructor(e=0,t=0,s=0){this.x=e,this.y=t,this.radius=s,this.type=_s.CIRC}clone(){return new ou(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;const s=this.radius*this.radius;let n=this.x-e,r=this.y-t;return n*=n,r*=r,n+r<=s}getBounds(){return new ot(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}ou.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class au{constructor(e=0,t=0,s=0,n=0){this.x=e,this.y=t,this.width=s,this.height=n,this.type=_s.ELIP}clone(){return new au(this.x,this.y,this.width,this.height)}contains(e,t){if(this.width<=0||this.height<=0)return!1;let s=(e-this.x)/this.width,n=(t-this.y)/this.height;return s*=s,n*=n,s+n<=1}getBounds(){return new ot(this.x-this.width,this.y-this.height,this.width,this.height)}}au.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class no{constructor(...e){let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){const s=[];for(let n=0,r=t.length;nt!=h>t&&e<(c-a)*((t-l)/(h-l))+a&&(s=!s)}return s}}no.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((i,e)=>`${i}, ${e}`,"")}]`};class lu{constructor(e=0,t=0,s=0,n=0,r=20){this.x=e,this.y=t,this.width=s,this.height=n,this.radius=r,this.type=_s.RREC}clone(){return new lu(this.x,this.y,this.width,this.height,this.radius)}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){const s=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+s&&t<=this.y+this.height-s||e>=this.x+s&&e<=this.x+this.width-s)return!0;let n=e-(this.x+s),r=t-(this.y+s);const o=s*s;if(n*n+r*r<=o||(n=e-(this.x+this.width-s),n*n+r*r<=o)||(r=t-(this.y+this.height-s),n*n+r*r<=o)||(n=e-(this.x+s),n*n+r*r<=o))return!0}return!1}}lu.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class Ot{constructor(e=1,t=0,s=0,n=1,r=0,o=0){this.array=null,this.a=e,this.b=t,this.c=s,this.d=n,this.tx=r,this.ty=o}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,s,n,r,o){return this.a=e,this.b=t,this.c=s,this.d=n,this.tx=r,this.ty=o,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const s=t||this.array;return e?(s[0]=this.a,s[1]=this.b,s[2]=0,s[3]=this.c,s[4]=this.d,s[5]=0,s[6]=this.tx,s[7]=this.ty,s[8]=1):(s[0]=this.a,s[1]=this.c,s[2]=this.tx,s[3]=this.b,s[4]=this.d,s[5]=this.ty,s[6]=0,s[7]=0,s[8]=1),s}apply(e,t){t=t||new vt;const s=e.x,n=e.y;return t.x=this.a*s+this.c*n+this.tx,t.y=this.b*s+this.d*n+this.ty,t}applyInverse(e,t){t=t||new vt;const s=1/(this.a*this.d+this.c*-this.b),n=e.x,r=e.y;return t.x=this.d*s*n+-this.c*s*r+(this.ty*this.c-this.tx*this.d)*s,t.y=this.a*s*r+-this.b*s*n+(-this.ty*this.a+this.tx*this.b)*s,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),s=Math.sin(e),n=this.a,r=this.c,o=this.tx;return this.a=n*t-this.b*s,this.b=n*s+this.b*t,this.c=r*t-this.d*s,this.d=r*s+this.d*t,this.tx=o*t-this.ty*s,this.ty=o*s+this.ty*t,this}append(e){const t=this.a,s=this.b,n=this.c,r=this.d;return this.a=e.a*t+e.b*n,this.b=e.a*s+e.b*r,this.c=e.c*t+e.d*n,this.d=e.c*s+e.d*r,this.tx=e.tx*t+e.ty*n+this.tx,this.ty=e.tx*s+e.ty*r+this.ty,this}setTransform(e,t,s,n,r,o,a,l,c){return this.a=Math.cos(a+c)*r,this.b=Math.sin(a+c)*r,this.c=-Math.sin(a-l)*o,this.d=Math.cos(a-l)*o,this.tx=e-(s*this.a+n*this.c),this.ty=t-(s*this.b+n*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const s=this.a,n=this.c;this.a=s*e.a+this.b*e.c,this.b=s*e.b+this.b*e.d,this.c=n*e.a+this.d*e.c,this.d=n*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,s=this.b,n=this.c,r=this.d,o=e.pivot,a=-Math.atan2(-n,r),l=Math.atan2(s,t),c=Math.abs(a+l);return c<1e-5||Math.abs(sh-c)<1e-5?(e.rotation=l,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=a,e.skew.y=l),e.scale.x=Math.sqrt(t*t+s*s),e.scale.y=Math.sqrt(n*n+r*r),e.position.x=this.tx+(o.x*t+o.y*n),e.position.y=this.ty+(o.x*s+o.y*r),e}invert(){const e=this.a,t=this.b,s=this.c,n=this.d,r=this.tx,o=e*n-t*s;return this.a=n/o,this.b=-t/o,this.c=-s/o,this.d=e/o,this.tx=(s*this.ty-n*r)/o,this.ty=-(e*this.ty-t*r)/o,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new Ot;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}static get IDENTITY(){return new Ot}static get TEMP_MATRIX(){return new Ot}}Ot.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};const Xr=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],Vr=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Yr=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Gr=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],$f=[],lb=[],ql=Math.sign;function lC(){for(let i=0;i<16;i++){const e=[];$f.push(e);for(let t=0;t<16;t++){const s=ql(Xr[i]*Xr[t]+Yr[i]*Vr[t]),n=ql(Vr[i]*Xr[t]+Gr[i]*Vr[t]),r=ql(Xr[i]*Yr[t]+Yr[i]*Gr[t]),o=ql(Vr[i]*Yr[t]+Gr[i]*Gr[t]);for(let a=0;a<16;a++)if(Xr[a]===s&&Vr[a]===n&&Yr[a]===r&&Gr[a]===o){e.push(a);break}}}for(let i=0;i<16;i++){const e=new Ot;e.set(Xr[i],Vr[i],Yr[i],Gr[i],0,0),lb.push(e)}}lC();const Wt={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:i=>Xr[i],uY:i=>Vr[i],vX:i=>Yr[i],vY:i=>Gr[i],inv:i=>i&8?i&15:-i&7,add:(i,e)=>$f[i][e],sub:(i,e)=>$f[i][Wt.inv(e)],rotate180:i=>i^4,isVertical:i=>(i&3)===2,byDirection:(i,e)=>Math.abs(i)*2<=Math.abs(e)?e>=0?Wt.S:Wt.N:Math.abs(e)*2<=Math.abs(i)?i>0?Wt.E:Wt.W:e>0?i>0?Wt.SE:Wt.SW:i>0?Wt.NE:Wt.NW,matrixAppendRotationInv:(i,e,t=0,s=0)=>{const n=lb[Wt.inv(e)];n.tx=t,n.ty=s,i.append(n)}};class Rn{constructor(e,t,s=0,n=0){this._x=s,this._y=n,this.cb=e,this.scope=t}clone(e=this.cb,t=this.scope){return new Rn(e,t,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this.cb.call(this.scope)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this.cb.call(this.scope)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this.cb.call(this.scope))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this.cb.call(this.scope))}}Rn.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};const Xf=class{constructor(){this.worldTransform=new Ot,this.localTransform=new Ot,this.position=new Rn(this.onChange,this,0,0),this.scale=new Rn(this.onChange,this,1,1),this.pivot=new Rn(this.onChange,this,0,0),this.skew=new Rn(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){const i=this.localTransform;this._localID!==this._currentLocalID&&(i.a=this._cx*this.scale.x,i.b=this._sx*this.scale.x,i.c=this._cy*this.scale.y,i.d=this._sy*this.scale.y,i.tx=this.position.x-(this.pivot.x*i.a+this.pivot.y*i.c),i.ty=this.position.y-(this.pivot.x*i.b+this.pivot.y*i.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(i){const e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==i._worldID){const t=i.worldTransform,s=this.worldTransform;s.a=e.a*t.a+e.b*t.c,s.b=e.a*t.b+e.b*t.d,s.c=e.c*t.a+e.d*t.c,s.d=e.c*t.b+e.d*t.d,s.tx=e.tx*t.a+e.ty*t.c+t.tx,s.ty=e.tx*t.b+e.ty*t.d+t.ty,this._parentID=i._worldID,this._worldID++}}setFromMatrix(i){i.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(i){this._rotation!==i&&(this._rotation=i,this.updateSkew())}};Xf.IDENTITY=new Xf;let hp=Xf;hp.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var cC=`varying vec2 vTextureCoord; +Deprecated since v${i}`),console.warn(s))),L0[e]=!0}function yi(i){if(typeof i!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(i)}`)}function Ra(i){return i.split("?")[0].split("#")[0]}function R2(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function P2(i,e,t){return i.replace(new RegExp(R2(e),"g"),t)}function k2(i,e){let t="",s=0,n=-1,r=0,o=-1;for(let a=0;a<=i.length;++a){if(a2){const l=t.lastIndexOf("/");if(l!==t.length-1){l===-1?(t="",s=0):(t=t.slice(0,l),s=t.length-1-t.lastIndexOf("/")),n=a,r=0;continue}}else if(t.length===2||t.length===1){t="",s=0,n=a,r=0;continue}}}else t.length>0?t+=`/${i.slice(n+1,a)}`:t=i.slice(n+1,a),s=a-n-1;n=a,r=0}else o===46&&r!==-1?++r:r=-1}return t}const ts={toPosix(i){return P2(i,"\\","/")},isUrl(i){return/^https?:/.test(this.toPosix(i))},isDataUrl(i){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(i)},isBlobUrl(i){return i.startsWith("blob:")},hasProtocol(i){return/^[^/:]+:/.test(this.toPosix(i))},getProtocol(i){yi(i),i=this.toPosix(i);const e=/^file:\/\/\//.exec(i);if(e)return e[0];const t=/^[^/:]+:\/{0,2}/.exec(i);return t?t[0]:""},toAbsolute(i,e,t){if(yi(i),this.isDataUrl(i)||this.isBlobUrl(i))return i;const s=Ra(this.toPosix(e??Le.ADAPTER.getBaseUrl())),n=Ra(this.toPosix(t??this.rootname(s)));return i=this.toPosix(i),i.startsWith("/")?ts.join(n,i.slice(1)):this.isAbsolute(i)?i:this.join(s,i)},normalize(i){if(yi(i),i.length===0)return".";if(this.isDataUrl(i)||this.isBlobUrl(i))return i;i=this.toPosix(i);let e="";const t=i.startsWith("/");this.hasProtocol(i)&&(e=this.rootname(i),i=i.slice(e.length));const s=i.endsWith("/");return i=k2(i),i.length>0&&s&&(i+="/"),t?`/${i}`:e+i},isAbsolute(i){return yi(i),i=this.toPosix(i),this.hasProtocol(i)?!0:i.startsWith("/")},join(...i){if(i.length===0)return".";let e;for(let t=0;t0)if(e===void 0)e=s;else{const n=i[t-1]??"";this.joinExtensions.includes(this.extname(n).toLowerCase())?e+=`/../${s}`:e+=`/${s}`}}return e===void 0?".":this.normalize(e)},dirname(i){if(yi(i),i.length===0)return".";i=this.toPosix(i);let e=i.charCodeAt(0);const t=e===47;let s=-1,n=!0;const r=this.getProtocol(i),o=i;i=i.slice(r.length);for(let a=i.length-1;a>=1;--a)if(e=i.charCodeAt(a),e===47){if(!n){s=a;break}}else n=!1;return s===-1?t?"/":this.isUrl(o)?r+i:r:t&&s===1?"//":r+i.slice(0,s)},rootname(i){yi(i),i=this.toPosix(i);let e="";if(i.startsWith("/")?e="/":e=this.getProtocol(i),this.isUrl(i)){const t=i.indexOf("/",e.length);t!==-1?e=i.slice(0,t):e=i,e.endsWith("/")||(e+="/")}return e},basename(i,e){yi(i),e&&yi(e),i=Ra(this.toPosix(i));let t=0,s=-1,n=!0,r;if(e!==void 0&&e.length>0&&e.length<=i.length){if(e.length===i.length&&e===i)return"";let o=e.length-1,a=-1;for(r=i.length-1;r>=0;--r){const l=i.charCodeAt(r);if(l===47){if(!n){t=r+1;break}}else a===-1&&(n=!1,a=r+1),o>=0&&(l===e.charCodeAt(o)?--o===-1&&(s=r):(o=-1,s=a))}return t===s?s=a:s===-1&&(s=i.length),i.slice(t,s)}for(r=i.length-1;r>=0;--r)if(i.charCodeAt(r)===47){if(!n){t=r+1;break}}else s===-1&&(n=!1,s=r+1);return s===-1?"":i.slice(t,s)},extname(i){yi(i),i=Ra(this.toPosix(i));let e=-1,t=0,s=-1,n=!0,r=0;for(let o=i.length-1;o>=0;--o){const a=i.charCodeAt(o);if(a===47){if(!n){t=o+1;break}continue}s===-1&&(n=!1,s=o+1),a===46?e===-1?e=o:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||s===-1||r===0||r===1&&e===s-1&&e===t+1?"":i.slice(e,s)},parse(i){yi(i);const e={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return e;i=Ra(this.toPosix(i));let t=i.charCodeAt(0);const s=this.isAbsolute(i);let n;e.root=this.rootname(i),s||this.hasProtocol(i)?n=1:n=0;let r=-1,o=0,a=-1,l=!0,c=i.length-1,h=0;for(;c>=n;--c){if(t=i.charCodeAt(c),t===47){if(!l){o=c+1;break}continue}a===-1&&(l=!1,a=c+1),t===46?r===-1?r=c:h!==1&&(h=1):r!==-1&&(h=-1)}return r===-1||a===-1||h===0||h===1&&r===a-1&&r===o+1?a!==-1&&(o===0&&s?e.base=e.name=i.slice(1,a):e.base=e.name=i.slice(o,a)):(o===0&&s?(e.name=i.slice(1,r),e.base=i.slice(1,a)):(e.name=i.slice(o,r),e.base=i.slice(o,a)),e.ext=i.slice(r,a)),e.dir=this.dirname(i),e},sep:"/",delimiter:":",joinExtensions:[".html"]};let Rd;async function F2(){return Rd??(Rd=(async()=>{var r;const i=document.createElement("canvas").getContext("webgl");if(!i)return bs.UNPACK;const e=await new Promise(o=>{const a=document.createElement("video");a.onloadeddata=()=>o(a),a.onerror=()=>o(null),a.autoplay=!1,a.crossOrigin="anonymous",a.preload="auto",a.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",a.load()});if(!e)return bs.UNPACK;const t=i.createTexture();i.bindTexture(i.TEXTURE_2D,t);const s=i.createFramebuffer();i.bindFramebuffer(i.FRAMEBUFFER,s),i.framebufferTexture2D(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,t,0),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,i.NONE),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return i.readPixels(0,0,1,1,i.RGBA,i.UNSIGNED_BYTE,n),i.deleteFramebuffer(s),i.deleteTexture(t),(r=i.getExtension("WEBGL_lose_context"))==null||r.loseContext(),n[0]<=n[3]?bs.PMA:bs.UNPACK})()),Rd}let Pd;function O2(){return typeof Pd>"u"&&(Pd=(function(){var e;const i={stencil:!0,failIfMajorPerformanceCaveat:Le.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!Le.ADAPTER.getWebGLRenderingContext())return!1;const t=Le.ADAPTER.createCanvas();let s=t.getContext("webgl",i)||t.getContext("experimental-webgl",i);const n=!!((e=s==null?void 0:s.getContextAttributes())!=null&&e.stencil);if(s){const r=s.getExtension("WEBGL_lose_context");r&&r.loseContext()}return s=null,n}catch{return!1}})()),Pd}var L2={grad:.9,turn:360,rad:360/(2*Math.PI)},yn=function(i){return typeof i=="string"?i.length>0:typeof i=="number"},xs=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=Math.pow(10,e)),Math.round(t*i)/t+0},mi=function(i,e,t){return e===void 0&&(e=0),t===void 0&&(t=1),i>t?t:i>e?i:e},sb=function(i){return(i=isFinite(i)?i%360:0)>0?i:i+360},B0=function(i){return{r:mi(i.r,0,255),g:mi(i.g,0,255),b:mi(i.b,0,255),a:mi(i.a)}},kd=function(i){return{r:xs(i.r),g:xs(i.g),b:xs(i.b),a:xs(i.a,3)}},B2=/^#([0-9a-f]{3,8})$/i,Wl=function(i){var e=i.toString(16);return e.length<2?"0"+e:e},ib=function(i){var e=i.r,t=i.g,s=i.b,n=i.a,r=Math.max(e,t,s),o=r-Math.min(e,t,s),a=o?r===e?(t-s)/o:r===t?2+(s-e)/o:4+(e-t)/o:0;return{h:60*(a<0?a+6:a),s:r?o/r*100:0,v:r/255*100,a:n}},nb=function(i){var e=i.h,t=i.s,s=i.v,n=i.a;e=e/360*6,t/=100,s/=100;var r=Math.floor(e),o=s*(1-t),a=s*(1-(e-r)*t),l=s*(1-(1-e+r)*t),c=r%6;return{r:255*[s,a,o,o,l,s][c],g:255*[l,s,s,a,o,o][c],b:255*[o,o,l,s,s,a][c],a:n}},N0=function(i){return{h:sb(i.h),s:mi(i.s,0,100),l:mi(i.l,0,100),a:mi(i.a)}},D0=function(i){return{h:xs(i.h),s:xs(i.s),l:xs(i.l),a:xs(i.a,3)}},U0=function(i){return nb((t=(e=i).s,{h:e.h,s:(t*=((s=e.l)<50?s:100-s)/100)>0?2*t/(s+t)*100:0,v:s+t,a:e.a}));var e,t,s},Ja=function(i){return{h:(e=ib(i)).h,s:(n=(200-(t=e.s))*(s=e.v)/100)>0&&n<200?t*s/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,t,s,n},N2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,D2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,U2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ff={string:[[function(i){var e=B2.exec(i);return e?(i=e[1]).length<=4?{r:parseInt(i[0]+i[0],16),g:parseInt(i[1]+i[1],16),b:parseInt(i[2]+i[2],16),a:i.length===4?xs(parseInt(i[3]+i[3],16)/255,2):1}:i.length===6||i.length===8?{r:parseInt(i.substr(0,2),16),g:parseInt(i.substr(2,2),16),b:parseInt(i.substr(4,2),16),a:i.length===8?xs(parseInt(i.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(i){var e=U2.exec(i)||$2.exec(i);return e?e[2]!==e[4]||e[4]!==e[6]?null:B0({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(i){var e=N2.exec(i)||D2.exec(i);if(!e)return null;var t,s,n=N0({h:(t=e[1],s=e[2],s===void 0&&(s="deg"),Number(t)*(L2[s]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return U0(n)},"hsl"]],object:[[function(i){var e=i.r,t=i.g,s=i.b,n=i.a,r=n===void 0?1:n;return yn(e)&&yn(t)&&yn(s)?B0({r:Number(e),g:Number(t),b:Number(s),a:Number(r)}):null},"rgb"],[function(i){var e=i.h,t=i.s,s=i.l,n=i.a,r=n===void 0?1:n;if(!yn(e)||!yn(t)||!yn(s))return null;var o=N0({h:Number(e),s:Number(t),l:Number(s),a:Number(r)});return U0(o)},"hsl"],[function(i){var e=i.h,t=i.s,s=i.v,n=i.a,r=n===void 0?1:n;if(!yn(e)||!yn(t)||!yn(s))return null;var o=(function(a){return{h:sb(a.h),s:mi(a.s,0,100),v:mi(a.v,0,100),a:mi(a.a)}})({h:Number(e),s:Number(t),v:Number(s),a:Number(r)});return nb(o)},"hsv"]]},$0=function(i,e){for(var t=0;t=.5},i.prototype.toHex=function(){return e=kd(this.rgba),t=e.r,s=e.g,n=e.b,o=(r=e.a)<1?Wl(xs(255*r)):"","#"+Wl(t)+Wl(s)+Wl(n)+o;var e,t,s,n,r,o},i.prototype.toRgb=function(){return kd(this.rgba)},i.prototype.toRgbString=function(){return e=kd(this.rgba),t=e.r,s=e.g,n=e.b,(r=e.a)<1?"rgba("+t+", "+s+", "+n+", "+r+")":"rgb("+t+", "+s+", "+n+")";var e,t,s,n,r},i.prototype.toHsl=function(){return D0(Ja(this.rgba))},i.prototype.toHslString=function(){return e=D0(Ja(this.rgba)),t=e.h,s=e.s,n=e.l,(r=e.a)<1?"hsla("+t+", "+s+"%, "+n+"%, "+r+")":"hsl("+t+", "+s+"%, "+n+"%)";var e,t,s,n,r},i.prototype.toHsv=function(){return e=ib(this.rgba),{h:xs(e.h),s:xs(e.s),v:xs(e.v),a:xs(e.a,3)};var e},i.prototype.invert=function(){return Ui({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},i.prototype.saturate=function(e){return e===void 0&&(e=.1),Ui(Fd(this.rgba,e))},i.prototype.desaturate=function(e){return e===void 0&&(e=.1),Ui(Fd(this.rgba,-e))},i.prototype.grayscale=function(){return Ui(Fd(this.rgba,-1))},i.prototype.lighten=function(e){return e===void 0&&(e=.1),Ui(X0(this.rgba,e))},i.prototype.darken=function(e){return e===void 0&&(e=.1),Ui(X0(this.rgba,-e))},i.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},i.prototype.alpha=function(e){return typeof e=="number"?Ui({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):xs(this.rgba.a,3);var t},i.prototype.hue=function(e){var t=Ja(this.rgba);return typeof e=="number"?Ui({h:e,s:t.s,l:t.l,a:t.a}):xs(t.h)},i.prototype.isEqual=function(e){return this.toHex()===Ui(e).toHex()},i})(),Ui=function(i){return i instanceof Of?i:new Of(i)},V0=[],V2=function(i){i.forEach(function(e){V0.indexOf(e)<0&&(e(Of,Ff),V0.push(e))})};function Y2(i,e){var t={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},s={};for(var n in t)s[t[n]]=n;var r={};i.prototype.toName=function(o){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var a,l,c=s[this.toHex()];if(c)return c;if(o!=null&&o.closest){var h=this.toRgb(),u=1/0,d="black";if(!r.length)for(var f in t)r[f]=new i(t[f]).toRgb();for(var p in t){var m=(a=h,l=r[p],Math.pow(a.r-l.r,2)+Math.pow(a.g-l.g,2)+Math.pow(a.b-l.b,2));mn===t[r]);if(e!==null&&t!==null){const n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(o=>e[o]===t[o])}return e===t}toRgba(){const[e,t,s,n]=this._components;return{r:e,g:t,b:s,a:n}}toRgb(){const[e,t,s]=this._components;return{r:e,g:t,b:s}}toRgbaString(){const[e,t,s]=this.toUint8RgbArray();return`rgba(${e},${t},${s},${this.alpha})`}toUint8RgbArray(e){const[t,s,n]=this._components;return e=e??[],e[0]=Math.round(t*255),e[1]=Math.round(s*255),e[2]=Math.round(n*255),e}toRgbArray(e){e=e??[];const[t,s,n]=this._components;return e[0]=t,e[1]=s,e[2]=n,e}toNumber(){return this._int}toLittleEndianNumber(){const e=this._int;return(e>>16)+(e&65280)+((e&255)<<16)}multiply(e){const[t,s,n,r]=Ac.temp.setValue(e)._components;return this._components[0]*=t,this._components[1]*=s,this._components[2]*=n,this._components[3]*=r,this.refreshInt(),this._value=null,this}premultiply(e,t=!0){return t&&(this._components[0]*=e,this._components[1]*=e,this._components[2]*=e),this._components[3]=e,this.refreshInt(),this._value=null,this}toPremultiplied(e,t=!0){if(e===1)return(255<<24)+this._int;if(e===0)return t?0:this._int;let s=this._int>>16&255,n=this._int>>8&255,r=this._int&255;return t&&(s=s*e+.5|0,n=n*e+.5|0,r=r*e+.5|0),(e*255<<24)+(s<<16)+(n<<8)+r}toHex(){const e=this._int.toString(16);return`#${"000000".substring(0,6-e.length)+e}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(e){return this._components[3]=this._clamp(e),this}round(e){const[t,s,n]=this._components;return this._components[0]=Math.round(t*e)/e,this._components[1]=Math.round(s*e)/e,this._components[2]=Math.round(n*e)/e,this.refreshInt(),this._value=null,this}toArray(e){e=e??[];const[t,s,n,r]=this._components;return e[0]=t,e[1]=s,e[2]=n,e[3]=r,e}normalize(e){let t,s,n,r;if((typeof e=="number"||e instanceof Number)&&e>=0&&e<=16777215){const o=e;t=(o>>16&255)/255,s=(o>>8&255)/255,n=(o&255)/255,r=1}else if((Array.isArray(e)||e instanceof Float32Array)&&e.length>=3&&e.length<=4)e=this._clamp(e),[t,s,n,r=1]=e;else if((e instanceof Uint8Array||e instanceof Uint8ClampedArray)&&e.length>=3&&e.length<=4)e=this._clamp(e,0,255),[t,s,n,r=255]=e,t/=255,s/=255,n/=255,r/=255;else if(typeof e=="string"||typeof e=="object"){if(typeof e=="string"){const a=Ac.HEX_PATTERN.exec(e);a&&(e=`#${a[2]}`)}const o=Ui(e);o.isValid()&&({r:t,g:s,b:n,a:r}=o.rgba,t/=255,s/=255,n/=255)}if(t!==void 0)this._components[0]=t,this._components[1]=s,this._components[2]=n,this._components[3]=r,this.refreshInt();else throw new Error(`Unable to convert color ${e}`)}refreshInt(){this._clamp(this._components);const[e,t,s]=this._components;this._int=(e*255<<16)+(t*255<<8)+(s*255|0)}_clamp(e,t=0,s=1){return typeof e=="number"?Math.min(Math.max(e,t),s):(e.forEach((n,r)=>{e[r]=Math.min(Math.max(n,t),s)}),e)}};Oo.shared=new Oo,Oo.temp=new Oo,Oo.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Et=Oo;function G2(i){return ht("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),Et.shared.setValue(i).toHex()}function j2(i){return ht("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),Et.shared.setValue(i).toNumber()}function H2(){const i=[],e=[];for(let s=0;s<32;s++)i[s]=s,e[s]=s;i[He.NORMAL_NPM]=He.NORMAL,i[He.ADD_NPM]=He.ADD,i[He.SCREEN_NPM]=He.SCREEN,e[He.NORMAL]=He.NORMAL_NPM,e[He.ADD]=He.ADD_NPM,e[He.SCREEN]=He.SCREEN_NPM;const t=[];return t.push(e),t.push(i),t}const rb=H2();function ob(i,e){return rb[e?1:0][i]}function W2(i,e=null){const t=i*6;if(e=e||new Uint16Array(t),e.length!==t)throw new Error(`Out buffer length is incorrect, got ${e.length} and expected ${t}`);for(let s=0,n=0;s>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i+1}function Y0(i){return!(i&i-1)&&!!i}function G0(i){let e=(i>65535?1:0)<<4;i>>>=e;let t=(i>255?1:0)<<3;return i>>>=t,e|=t,t=(i>15?1:0)<<2,i>>>=t,e|=t,t=(i>3?1:0)<<1,i>>>=t,e|=t,e|i>>1}function Ko(i,e,t){const s=i.length;let n;if(e>=s||t===0)return;t=e+t>s?s-e:t;const r=s-t;for(n=e;n(i.Renderer="renderer",i.Application="application",i.RendererSystem="renderer-webgl-system",i.RendererPlugin="renderer-webgl-plugin",i.CanvasRendererSystem="renderer-canvas-system",i.CanvasRendererPlugin="renderer-canvas-plugin",i.Asset="asset",i.LoadParser="load-parser",i.ResolveParser="resolve-parser",i.CacheParser="cache-parser",i.DetectionParser="detection-parser",i))(ke||{});const Bf=i=>{if(typeof i=="function"||typeof i=="object"&&i.extension){if(!i.extension)throw new Error("Extension class must have an extension object");i={...typeof i.extension!="object"?{type:i.extension}:i.extension,ref:i}}if(typeof i=="object")i={...i};else throw new Error("Invalid extension type");return typeof i.type=="string"&&(i.type=[i.type]),i},q0=(i,e)=>Bf(i).priority??e,Xe={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...i){return i.map(Bf).forEach(e=>{e.type.forEach(t=>{var s,n;return(n=(s=this._removeHandlers)[t])==null?void 0:n.call(s,e)})}),this},add(...i){return i.map(Bf).forEach(e=>{e.type.forEach(t=>{var r,o;const s=this._addHandlers,n=this._queue;s[t]?(r=s[t])==null||r.call(s,e):(n[t]=n[t]||[],(o=n[t])==null||o.push(e))})}),this},handle(i,e,t){var o;const s=this._addHandlers,n=this._removeHandlers;if(s[i]||n[i])throw new Error(`Extension type ${i} already has a handler`);s[i]=e,n[i]=t;const r=this._queue;return r[i]&&((o=r[i])==null||o.forEach(a=>e(a)),delete r[i]),this},handleByMap(i,e){return this.handle(i,t=>{t.name&&(e[t.name]=t.ref)},t=>{t.name&&delete e[t.name]})},handleByList(i,e,t=-1){return this.handle(i,s=>{e.includes(s.ref)||(e.push(s.ref),e.sort((n,r)=>q0(r,t)-q0(n,t)))},s=>{const n=e.indexOf(s.ref);n!==-1&&e.splice(n,1)})}};class Nf{constructor(e){typeof e=="number"?this.rawBinaryData=new ArrayBuffer(e):e instanceof Uint8Array?this.rawBinaryData=e.buffer:this.rawBinaryData=e,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(e){return this[`${e}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(e){switch(e){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${e} isn't a valid view type`)}}}const Q2=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(` +`);function eC(i){let e="";for(let t=0;t0&&(e+=` +else `),t=0;--s){const n=Df[s];if(n.test&&n.test(i,t))return new n(i,e)}throw new Error("Unrecognized source type to auto-detect Resource")}class Ri{constructor(e){this.items=[],this._name=e,this._aliasCount=0}emit(e,t,s,n,r,o,a,l){if(arguments.length>8)throw new Error("max arguments reached");const{name:c,items:h}=this;this._aliasCount++;for(let u=0,d=h.length;u0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(e){return e[this._name]&&(this.ensureNonAliasedItems(),this.remove(e),this.items.push(e)),this}remove(e){const t=this.items.indexOf(e);return t!==-1&&(this.ensureNonAliasedItems(),this.items.splice(t,1)),this}contains(e){return this.items.includes(e)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(Ri.prototype,{dispatch:{value:Ri.prototype.emit},run:{value:Ri.prototype.emit}});class vl{constructor(e=0,t=0){this._width=e,this._height=t,this.destroyed=!1,this.internal=!1,this.onResize=new Ri("setRealSize"),this.onUpdate=new Ri("update"),this.onError=new Ri("onError")}bind(e){this.onResize.add(e),this.onUpdate.add(e),this.onError.add(e),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(e){this.onResize.remove(e),this.onUpdate.remove(e),this.onError.remove(e)}resize(e,t){(e!==this._width||t!==this._height)&&(this._width=e,this._height=t,this.onResize.emit(e,t))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(e,t,s){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(e,t){return!1}}class ru extends vl{constructor(e,t){const{width:s,height:n}=t||{};if(!s||!n)throw new Error("BufferResource width or height invalid");super(s,n),this.data=e,this.unpackAlignment=t.unpackAlignment??4}upload(e,t,s){const n=e.gl;n.pixelStorei(n.UNPACK_ALIGNMENT,this.unpackAlignment),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.alphaMode===bs.UNPACK);const r=t.realWidth,o=t.realHeight;return s.width===r&&s.height===o?n.texSubImage2D(t.target,0,0,0,r,o,t.format,s.type,this.data):(s.width=r,s.height=o,n.texImage2D(t.target,0,s.internalFormat,r,o,0,t.format,s.type,this.data)),!0}dispose(){this.data=null}static test(e){return e===null||e instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array}}const sC={scaleMode:Ci.NEAREST,alphaMode:bs.NPM},Uf=class Lo extends El{constructor(e=null,t=null){super(),t=Object.assign({},Lo.defaultOptions,t);const{alphaMode:s,mipmap:n,anisotropicLevel:r,scaleMode:o,width:a,height:l,wrapMode:c,format:h,type:u,target:d,resolution:f,resourceOptions:p}=t;e&&!(e instanceof vl)&&(e=lb(e,p),e.internal=!0),this.resolution=f||Le.RESOLUTION,this.width=Math.round((a||0)*this.resolution)/this.resolution,this.height=Math.round((l||0)*this.resolution)/this.resolution,this._mipmap=n,this.anisotropicLevel=r,this._wrapMode=c,this._scaleMode=o,this.format=h,this.type=u,this.target=d,this.alphaMode=s,this.uid=co(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=a>0&&l>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource(e)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap(e){this._mipmap!==e&&(this._mipmap=e,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode(e){this._scaleMode!==e&&(this._scaleMode=e,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode(e){this._wrapMode!==e&&(this._wrapMode=e,this.dirtyStyleId++)}setStyle(e,t){let s;return e!==void 0&&e!==this.scaleMode&&(this.scaleMode=e,s=!0),t!==void 0&&t!==this.mipmap&&(this.mipmap=t,s=!0),s&&this.dirtyStyleId++,this}setSize(e,t,s){return s=s||this.resolution,this.setRealSize(e*s,t*s,s)}setRealSize(e,t,s){return this.resolution=s||this.resolution,this.width=Math.round(e)/this.resolution,this.height=Math.round(t)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=Y0(this.realWidth)&&Y0(this.realHeight)}setResolution(e){const t=this.resolution;return t===e?this:(this.resolution=e,this.valid&&(this.width=Math.round(this.width*t)/e,this.height=Math.round(this.height*t)/e,this.emit("update",this)),this._refreshPOT(),this)}setResource(e){if(this.resource===e)return this;if(this.resource)throw new Error("Resource can be set only once");return e.bind(this),this.resource=e,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError(e){this.emit("error",this,e)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete Kn[this.cacheId],delete $i[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),Lo.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from(e,t,s=Le.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else{if(!e._pixiId){const a=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${a}_${co()}`}r=e._pixiId}let o=Kn[r];if(n&&s&&!o)throw new Error(`The cacheId "${r}" does not exist in BaseTextureCache.`);return o||(o=new Lo(e,t),o.cacheId=r,Lo.addToCache(o,r)),o}static fromBuffer(e,t,s,n){e=e||new Float32Array(t*s*4);const r=new ru(e,{width:t,height:s,...n==null?void 0:n.resourceOptions});let o,a;return e instanceof Float32Array?(o=_e.RGBA,a=$e.FLOAT):e instanceof Int32Array?(o=_e.RGBA_INTEGER,a=$e.INT):e instanceof Uint32Array?(o=_e.RGBA_INTEGER,a=$e.UNSIGNED_INT):e instanceof Int16Array?(o=_e.RGBA_INTEGER,a=$e.SHORT):e instanceof Uint16Array?(o=_e.RGBA_INTEGER,a=$e.UNSIGNED_SHORT):e instanceof Int8Array?(o=_e.RGBA,a=$e.BYTE):(o=_e.RGBA,a=$e.UNSIGNED_BYTE),r.internal=!0,new Lo(r,Object.assign({},sC,{type:a,format:o},n))}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),Kn[t]&&Kn[t]!==e&&console.warn(`BaseTexture added to the cache with an id [${t}] that already had an entry`),Kn[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=Kn[e];if(t){const s=t.textureCacheIds.indexOf(e);return s>-1&&t.textureCacheIds.splice(s,1),delete Kn[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;t1){for(let u=0;u(i[i.POLY=0]="POLY",i[i.RECT=1]="RECT",i[i.CIRC=2]="CIRC",i[i.ELIP=3]="ELIP",i[i.RREC=4]="RREC",i))(Cs||{});class vt{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}clone(){return new vt(this.x,this.y)}copyFrom(e){return this.set(e.x,e.y),this}copyTo(e){return e.set(this.x,this.y),e}equals(e){return e.x===this.x&&e.y===this.y}set(e=0,t=e){return this.x=e,this.y=t,this}}vt.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};const zl=[new vt,new vt,new vt,new vt];class ot{constructor(e=0,t=0,s=0,n=0){this.x=Number(e),this.y=Number(t),this.width=Number(s),this.height=Number(n),this.type=Cs.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new ot(0,0,0,0)}clone(){return new ot(this.x,this.y,this.width,this.height)}copyFrom(e){return this.x=e.x,this.y=e.y,this.width=e.width,this.height=e.height,this}copyTo(e){return e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e}contains(e,t){return this.width<=0||this.height<=0?!1:e>=this.x&&e=this.y&&te.right?e.right:this.right)<=_)return!1;const E=this.ye.bottom?e.bottom:this.bottom)>E}const s=this.left,n=this.right,r=this.top,o=this.bottom;if(n<=s||o<=r)return!1;const a=zl[0].set(e.left,e.top),l=zl[1].set(e.left,e.bottom),c=zl[2].set(e.right,e.top),h=zl[3].set(e.right,e.bottom);if(c.x<=a.x||l.y<=a.y)return!1;const u=Math.sign(t.a*t.d-t.b*t.c);if(u===0||(t.apply(a,a),t.apply(l,l),t.apply(c,c),t.apply(h,h),Math.max(a.x,l.x,c.x,h.x)<=s||Math.min(a.x,l.x,c.x,h.x)>=n||Math.max(a.y,l.y,c.y,h.y)<=r||Math.min(a.y,l.y,c.y,h.y)>=o))return!1;const d=u*(l.y-a.y),f=u*(a.x-l.x),p=d*s+f*r,m=d*n+f*r,g=d*s+f*o,v=d*n+f*o;if(Math.max(p,m,g,v)<=d*a.x+f*a.y||Math.min(p,m,g,v)>=d*h.x+f*h.y)return!1;const y=u*(a.y-c.y),x=u*(c.x-a.x),M=y*s+x*r,C=y*n+x*r,w=y*s+x*o,b=y*n+x*o;return!(Math.max(M,C,w,b)<=y*a.x+x*a.y||Math.min(M,C,w,b)>=y*h.x+x*h.y)}pad(e=0,t=e){return this.x-=e,this.y-=t,this.width+=e*2,this.height+=t*2,this}fit(e){const t=Math.max(this.x,e.x),s=Math.min(this.x+this.width,e.x+e.width),n=Math.max(this.y,e.y),r=Math.min(this.y+this.height,e.y+e.height);return this.x=t,this.width=Math.max(s-t,0),this.y=n,this.height=Math.max(r-n,0),this}ceil(e=1,t=.001){const s=Math.ceil((this.x+this.width-t)*e)/e,n=Math.ceil((this.y+this.height-t)*e)/e;return this.x=Math.floor((this.x+t)*e)/e,this.y=Math.floor((this.y+t)*e)/e,this.width=s-this.x,this.height=n-this.y,this}enlarge(e){const t=Math.min(this.x,e.x),s=Math.max(this.x+this.width,e.x+e.width),n=Math.min(this.y,e.y),r=Math.max(this.y+this.height,e.y+e.height);return this.x=t,this.width=s-t,this.y=n,this.height=r-n,this}}ot.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class ou{constructor(e=0,t=0,s=0){this.x=e,this.y=t,this.radius=s,this.type=Cs.CIRC}clone(){return new ou(this.x,this.y,this.radius)}contains(e,t){if(this.radius<=0)return!1;const s=this.radius*this.radius;let n=this.x-e,r=this.y-t;return n*=n,r*=r,n+r<=s}getBounds(){return new ot(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}ou.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class au{constructor(e=0,t=0,s=0,n=0){this.x=e,this.y=t,this.width=s,this.height=n,this.type=Cs.ELIP}clone(){return new au(this.x,this.y,this.width,this.height)}contains(e,t){if(this.width<=0||this.height<=0)return!1;let s=(e-this.x)/this.width,n=(t-this.y)/this.height;return s*=s,n*=n,s+n<=1}getBounds(){return new ot(this.x-this.width,this.y-this.height,this.width,this.height)}}au.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class no{constructor(...e){let t=Array.isArray(e[0])?e[0]:e;if(typeof t[0]!="number"){const s=[];for(let n=0,r=t.length;nt!=h>t&&e<(c-a)*((t-l)/(h-l))+a&&(s=!s)}return s}}no.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((i,e)=>`${i}, ${e}`,"")}]`};class lu{constructor(e=0,t=0,s=0,n=0,r=20){this.x=e,this.y=t,this.width=s,this.height=n,this.radius=r,this.type=Cs.RREC}clone(){return new lu(this.x,this.y,this.width,this.height,this.radius)}contains(e,t){if(this.width<=0||this.height<=0)return!1;if(e>=this.x&&e<=this.x+this.width&&t>=this.y&&t<=this.y+this.height){const s=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(t>=this.y+s&&t<=this.y+this.height-s||e>=this.x+s&&e<=this.x+this.width-s)return!0;let n=e-(this.x+s),r=t-(this.y+s);const o=s*s;if(n*n+r*r<=o||(n=e-(this.x+this.width-s),n*n+r*r<=o)||(r=t-(this.y+this.height-s),n*n+r*r<=o)||(n=e-(this.x+s),n*n+r*r<=o))return!0}return!1}}lu.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class Ot{constructor(e=1,t=0,s=0,n=1,r=0,o=0){this.array=null,this.a=e,this.b=t,this.c=s,this.d=n,this.tx=r,this.ty=o}fromArray(e){this.a=e[0],this.b=e[1],this.c=e[3],this.d=e[4],this.tx=e[2],this.ty=e[5]}set(e,t,s,n,r,o){return this.a=e,this.b=t,this.c=s,this.d=n,this.tx=r,this.ty=o,this}toArray(e,t){this.array||(this.array=new Float32Array(9));const s=t||this.array;return e?(s[0]=this.a,s[1]=this.b,s[2]=0,s[3]=this.c,s[4]=this.d,s[5]=0,s[6]=this.tx,s[7]=this.ty,s[8]=1):(s[0]=this.a,s[1]=this.c,s[2]=this.tx,s[3]=this.b,s[4]=this.d,s[5]=this.ty,s[6]=0,s[7]=0,s[8]=1),s}apply(e,t){t=t||new vt;const s=e.x,n=e.y;return t.x=this.a*s+this.c*n+this.tx,t.y=this.b*s+this.d*n+this.ty,t}applyInverse(e,t){t=t||new vt;const s=1/(this.a*this.d+this.c*-this.b),n=e.x,r=e.y;return t.x=this.d*s*n+-this.c*s*r+(this.ty*this.c-this.tx*this.d)*s,t.y=this.a*s*r+-this.b*s*n+(-this.ty*this.a+this.tx*this.b)*s,t}translate(e,t){return this.tx+=e,this.ty+=t,this}scale(e,t){return this.a*=e,this.d*=t,this.c*=e,this.b*=t,this.tx*=e,this.ty*=t,this}rotate(e){const t=Math.cos(e),s=Math.sin(e),n=this.a,r=this.c,o=this.tx;return this.a=n*t-this.b*s,this.b=n*s+this.b*t,this.c=r*t-this.d*s,this.d=r*s+this.d*t,this.tx=o*t-this.ty*s,this.ty=o*s+this.ty*t,this}append(e){const t=this.a,s=this.b,n=this.c,r=this.d;return this.a=e.a*t+e.b*n,this.b=e.a*s+e.b*r,this.c=e.c*t+e.d*n,this.d=e.c*s+e.d*r,this.tx=e.tx*t+e.ty*n+this.tx,this.ty=e.tx*s+e.ty*r+this.ty,this}setTransform(e,t,s,n,r,o,a,l,c){return this.a=Math.cos(a+c)*r,this.b=Math.sin(a+c)*r,this.c=-Math.sin(a-l)*o,this.d=Math.cos(a-l)*o,this.tx=e-(s*this.a+n*this.c),this.ty=t-(s*this.b+n*this.d),this}prepend(e){const t=this.tx;if(e.a!==1||e.b!==0||e.c!==0||e.d!==1){const s=this.a,n=this.c;this.a=s*e.a+this.b*e.c,this.b=s*e.b+this.b*e.d,this.c=n*e.a+this.d*e.c,this.d=n*e.b+this.d*e.d}return this.tx=t*e.a+this.ty*e.c+e.tx,this.ty=t*e.b+this.ty*e.d+e.ty,this}decompose(e){const t=this.a,s=this.b,n=this.c,r=this.d,o=e.pivot,a=-Math.atan2(-n,r),l=Math.atan2(s,t),c=Math.abs(a+l);return c<1e-5||Math.abs(sh-c)<1e-5?(e.rotation=l,e.skew.x=e.skew.y=0):(e.rotation=0,e.skew.x=a,e.skew.y=l),e.scale.x=Math.sqrt(t*t+s*s),e.scale.y=Math.sqrt(n*n+r*r),e.position.x=this.tx+(o.x*t+o.y*n),e.position.y=this.ty+(o.x*s+o.y*r),e}invert(){const e=this.a,t=this.b,s=this.c,n=this.d,r=this.tx,o=e*n-t*s;return this.a=n/o,this.b=-t/o,this.c=-s/o,this.d=e/o,this.tx=(s*this.ty-n*r)/o,this.ty=-(e*this.ty-t*r)/o,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const e=new Ot;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyTo(e){return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.tx=this.tx,e.ty=this.ty,e}copyFrom(e){return this.a=e.a,this.b=e.b,this.c=e.c,this.d=e.d,this.tx=e.tx,this.ty=e.ty,this}static get IDENTITY(){return new Ot}static get TEMP_MATRIX(){return new Ot}}Ot.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};const Xr=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],Vr=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Yr=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Gr=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],Xf=[],hb=[],ql=Math.sign;function hC(){for(let i=0;i<16;i++){const e=[];Xf.push(e);for(let t=0;t<16;t++){const s=ql(Xr[i]*Xr[t]+Yr[i]*Vr[t]),n=ql(Vr[i]*Xr[t]+Gr[i]*Vr[t]),r=ql(Xr[i]*Yr[t]+Yr[i]*Gr[t]),o=ql(Vr[i]*Yr[t]+Gr[i]*Gr[t]);for(let a=0;a<16;a++)if(Xr[a]===s&&Vr[a]===n&&Yr[a]===r&&Gr[a]===o){e.push(a);break}}}for(let i=0;i<16;i++){const e=new Ot;e.set(Xr[i],Vr[i],Yr[i],Gr[i],0,0),hb.push(e)}}hC();const Wt={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:i=>Xr[i],uY:i=>Vr[i],vX:i=>Yr[i],vY:i=>Gr[i],inv:i=>i&8?i&15:-i&7,add:(i,e)=>Xf[i][e],sub:(i,e)=>Xf[i][Wt.inv(e)],rotate180:i=>i^4,isVertical:i=>(i&3)===2,byDirection:(i,e)=>Math.abs(i)*2<=Math.abs(e)?e>=0?Wt.S:Wt.N:Math.abs(e)*2<=Math.abs(i)?i>0?Wt.E:Wt.W:e>0?i>0?Wt.SE:Wt.SW:i>0?Wt.NE:Wt.NW,matrixAppendRotationInv:(i,e,t=0,s=0)=>{const n=hb[Wt.inv(e)];n.tx=t,n.ty=s,i.append(n)}};class Rn{constructor(e,t,s=0,n=0){this._x=s,this._y=n,this.cb=e,this.scope=t}clone(e=this.cb,t=this.scope){return new Rn(e,t,this._x,this._y)}set(e=0,t=e){return(this._x!==e||this._y!==t)&&(this._x=e,this._y=t,this.cb.call(this.scope)),this}copyFrom(e){return(this._x!==e.x||this._y!==e.y)&&(this._x=e.x,this._y=e.y,this.cb.call(this.scope)),this}copyTo(e){return e.set(this._x,this._y),e}equals(e){return e.x===this._x&&e.y===this._y}get x(){return this._x}set x(e){this._x!==e&&(this._x=e,this.cb.call(this.scope))}get y(){return this._y}set y(e){this._y!==e&&(this._y=e,this.cb.call(this.scope))}}Rn.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};const Vf=class{constructor(){this.worldTransform=new Ot,this.localTransform=new Ot,this.position=new Rn(this.onChange,this,0,0),this.scale=new Rn(this.onChange,this,1,1),this.pivot=new Rn(this.onChange,this,0,0),this.skew=new Rn(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){const i=this.localTransform;this._localID!==this._currentLocalID&&(i.a=this._cx*this.scale.x,i.b=this._sx*this.scale.x,i.c=this._cy*this.scale.y,i.d=this._sy*this.scale.y,i.tx=this.position.x-(this.pivot.x*i.a+this.pivot.y*i.c),i.ty=this.position.y-(this.pivot.x*i.b+this.pivot.y*i.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(i){const e=this.localTransform;if(this._localID!==this._currentLocalID&&(e.a=this._cx*this.scale.x,e.b=this._sx*this.scale.x,e.c=this._cy*this.scale.y,e.d=this._sy*this.scale.y,e.tx=this.position.x-(this.pivot.x*e.a+this.pivot.y*e.c),e.ty=this.position.y-(this.pivot.x*e.b+this.pivot.y*e.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==i._worldID){const t=i.worldTransform,s=this.worldTransform;s.a=e.a*t.a+e.b*t.c,s.b=e.a*t.b+e.b*t.d,s.c=e.c*t.a+e.d*t.c,s.d=e.c*t.b+e.d*t.d,s.tx=e.tx*t.a+e.ty*t.c+t.tx,s.ty=e.tx*t.b+e.ty*t.d+t.ty,this._parentID=i._worldID,this._worldID++}}setFromMatrix(i){i.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(i){this._rotation!==i&&(this._rotation=i,this.updateSkew())}};Vf.IDENTITY=new Vf;let up=Vf;up.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var uC=`varying vec2 vTextureCoord; uniform sampler2D uSampler; void main(void){ gl_FragColor *= texture2D(uSampler, vTextureCoord); -}`,hC=`attribute vec2 aVertexPosition; +}`,dC=`attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; @@ -48,7 +48,7 @@ void main(void){ gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0); vTextureCoord = aTextureCoord; } -`;function K0(i,e,t){const s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),s}function Xd(i){const e=new Array(i);for(let t=0;ti.type==="float"&&i.size===1&&!i.isArray,code:i=>` +`;function Z0(i,e,t){const s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),s}function Xd(i){const e=new Array(i);for(let t=0;ti.type==="float"&&i.size===1&&!i.isArray,code:i=>` if(uv["${i}"] !== ud["${i}"].value) { ud["${i}"].value = uv["${i}"] @@ -168,7 +168,7 @@ void main(void){ cv[3] = v[3]; gl.uniform4f(ud["${i}"].location, v[0], v[1], v[2], v[3]) - }`}],uC={float:` + }`}],fC={float:` if (cv !== v) { cu.value = v; @@ -304,7 +304,7 @@ void main(void){ cu.value = v; gl.uniform1i(location, v); - }`},dC={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function fC(i,e){var s;const t=[` + }`},mC={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function pC(i,e){var s;const t=[` var v = null; var cv = null; var cu = null; @@ -314,18 +314,18 @@ void main(void){ renderer.shader.syncUniformBufferGroup(uv.${n}, '${n}'); `):t.push(` renderer.shader.syncUniformGroup(uv.${n}, syncData); - `));continue}const o=i.uniforms[n];let a=!1;for(let l=0;l=go.WEBGL2&&(e=i.getContext("webgl2",{})),e||(e=i.getContext("webgl",{})||i.getContext("experimental-webgl",{}),e?e.getExtension("WEBGL_draw_buffers"):e=null),Co=e}return Co}let Kl;function pC(){if(!Kl){Kl=fi.MEDIUM;const i=mC();if(i&&i.getShaderPrecisionFormat){const e=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT);e&&(Kl=e.precision?fi.HIGH:fi.MEDIUM)}}return Kl}function Z0(i,e){const t=i.getShaderSource(e).split(` +`))}const db={};let Co=db;function gC(){if(Co===db||Co!=null&&Co.isContextLost()){const i=Le.ADAPTER.createCanvas();let e;Le.PREFER_ENV>=go.WEBGL2&&(e=i.getContext("webgl2",{})),e||(e=i.getContext("webgl",{})||i.getContext("experimental-webgl",{}),e?e.getExtension("WEBGL_draw_buffers"):e=null),Co=e}return Co}let Kl;function vC(){if(!Kl){Kl=fi.MEDIUM;const i=gC();if(i&&i.getShaderPrecisionFormat){const e=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT);e&&(Kl=e.precision?fi.HIGH:fi.MEDIUM)}}return Kl}function J0(i,e){const t=i.getShaderSource(e).split(` `).map((c,h)=>`${h}: ${c}`),s=i.getShaderInfoLog(e),n=s.split(` `),r={},o=n.map(c=>parseFloat(c.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter(c=>c&&!r[c]?(r[c]=!0,!0):!1),a=[""];o.forEach(c=>{t[c-1]=`%c${t[c-1]}%c`,a.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});const l=t.join(` -`);a[0]=l,console.error(s),console.groupCollapsed("click to view full shader code"),console.warn(...a),console.groupEnd()}function gC(i,e,t,s){i.getProgramParameter(e,i.LINK_STATUS)||(i.getShaderParameter(t,i.COMPILE_STATUS)||Z0(i,t),i.getShaderParameter(s,i.COMPILE_STATUS)||Z0(i,s),console.error("PixiJS Error: Could not initialize shader."),i.getProgramInfoLog(e)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",i.getProgramInfoLog(e)))}const vC={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function ub(i){return vC[i]}let Zl=null;const J0={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"};function db(i,e){if(!Zl){const t=Object.keys(J0);Zl={};for(let s=0;s0&&(t+=` else `),sthis.size&&this.flush(),this._vertexCount+=e.vertexData.length/2,this._indexCount+=e.indices.length,this._bufferedTextures[this._bufferSize]=e._texture.baseTexture,this._bufferedElements[this._bufferSize++]=e)}buildTexturesAndDrawCalls(){const{_bufferedTextures:e,maxTextures:t}=this,s=wi._textureArrayPool,n=this.renderer.batch,r=this._tempBoundTextures,o=this.renderer.textureGC.count;let a=++Qe._globalBatch,l=0,c=s[0],h=0;n.copyBoundTextures(r,t);for(let u=0;u=t&&(n.boundArray(c,r,a,t),this.buildDrawCalls(c,h,u),h=u,c=s[++l],++a),d._batchEnabled=a,d.touched=o,c.elements[c.count++]=d)}c.count>0&&(n.boundArray(c,r,a,t),this.buildDrawCalls(c,h,this._bufferSize),++l,++a);for(let u=0;u0);for(let m=0;mthis.size&&this.flush(),this._vertexCount+=e.vertexData.length/2,this._indexCount+=e.indices.length,this._bufferedTextures[this._bufferSize]=e._texture.baseTexture,this._bufferedElements[this._bufferSize++]=e)}buildTexturesAndDrawCalls(){const{_bufferedTextures:e,maxTextures:t}=this,s=wi._textureArrayPool,n=this.renderer.batch,r=this._tempBoundTextures,o=this.renderer.textureGC.count;let a=++Qe._globalBatch,l=0,c=s[0],h=0;n.copyBoundTextures(r,t);for(let u=0;u=t&&(n.boundArray(c,r,a,t),this.buildDrawCalls(c,h,u),h=u,c=s[++l],++a),d._batchEnabled=a,d.touched=o,c.elements[c.count++]=d)}c.count>0&&(n.boundArray(c,r,a,t),this.buildDrawCalls(c,h,this._bufferSize),++l,++a);for(let u=0;u0);for(let m=0;m=0;--n)e[n]=s[n]||null,e[n]&&(e[n]._batchLocation=n)}boundArray(e,t,s,n){const{elements:r,ids:o,count:a}=e;let l=0;for(let c=0;c=0&&u=go.WEBGL2&&(s=e.getContext("webgl2",t)),s)this.webGLVersion=2;else if(this.webGLVersion=1,s=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!s)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=s,this.getExtensions(),this.gl}getExtensions(){const{gl:e}=this,t={loseContext:e.getExtension("WEBGL_lose_context"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc"),bptc:e.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,t,{drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,t,{colorBufferFloat:e.getExtension("EXT_color_buffer_float")})}handleContextLost(e){e.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this.renderer.view;this.renderer=null,e.removeEventListener!==void 0&&(e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(e){const t=e.getContextAttributes(),s="WebGL2RenderingContext"in globalThis&&e instanceof globalThis.WebGL2RenderingContext;s&&(this.webGLVersion=2),t&&!t.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const n=s||!!e.getExtension("OES_element_index_uint");this.supports.uint32Indices=n,n||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}nh.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},nh.extension={type:ke.RendererSystem,name:"context"};Xe.add(nh);class jf{constructor(e,t){if(this.width=Math.round(e),this.height=Math.round(t),!this.width||!this.height)throw new Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new Ri("disposeFramebuffer"),this.multisample=ls.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(e=0,t){return this.colorTextures[e]=t||new Qe(null,{scaleMode:Ci.NEAREST,resolution:1,mipmap:gi.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(e){return this.depthTexture=e||new Qe(null,{scaleMode:Ci.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:gi.OFF,format:_e.DEPTH_COMPONENT,type:$e.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(e,t){if(e=Math.round(e),t=Math.round(t),!e||!t)throw new Error("Framebuffer width and height must not be zero");if(!(e===this.width&&t===this.height)){this.width=e,this.height=t,this.dirtyId++,this.dirtySize++;for(let s=0;s{const n=this.source;this.url=n.src;const r=()=>{this.destroyed||(n.onload=null,n.onerror=null,this.update(),this._load=null,this.createBitmap?t(this.process()):t(this))};n.complete&&n.src?r():(n.onload=r,n.onerror=o=>{s(o),this.onError.emit(o)})}),this._load)}process(){const e=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);const t=globalThis.createImageBitmap,s=!e.crossOrigin||e.crossOrigin==="anonymous";return this._process=fetch(e.src,{mode:s?"cors":"no-cors"}).then(n=>n.blob()).then(n=>t(n,0,0,e.width,e.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===xs.UNPACK?"premultiply":"none"})).then(n=>this.destroyed?Promise.reject():(this.bitmap=n,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(e,t,s){if(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(e,t,s);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(e,t,s,this.bitmap),!this.preserveBitmap){let n=!0;const r=t._glTextures;for(const o in r){const a=r[o];if(a!==s&&a.dirtyId!==t.dirtyId){n=!1;break}}n&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(e){return typeof HTMLImageElement<"u"&&(typeof e=="string"||e instanceof HTMLImageElement)}}class up{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(e,t,s){const n=t.width,r=t.height;if(s){const o=e.width/2/n,a=e.height/2/r,l=e.x/n+o,c=e.y/r+a;s=Wt.add(s,Wt.NW),this.x0=l+o*Wt.uX(s),this.y0=c+a*Wt.uY(s),s=Wt.add(s,2),this.x1=l+o*Wt.uX(s),this.y1=c+a*Wt.uY(s),s=Wt.add(s,2),this.x2=l+o*Wt.uX(s),this.y2=c+a*Wt.uY(s),s=Wt.add(s,2),this.x3=l+o*Wt.uX(s),this.y3=c+a*Wt.uY(s)}else this.x0=e.x/n,this.y0=e.y/r,this.x1=(e.x+e.width)/n,this.y1=e.y/r,this.x2=(e.x+e.width)/n,this.y2=(e.y+e.height)/r,this.x3=e.x/n,this.y3=(e.y+e.height)/r;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}up.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};const tv=new up;function Ql(i){i.destroy=function(){},i.on=function(){},i.once=function(){},i.emit=function(){}}let ze=class Nt extends El{constructor(e,t,s,n,r,o,a){if(super(),this.noFrame=!1,t||(this.noFrame=!0,t=new ot(0,0,1,1)),e instanceof Nt&&(e=e.baseTexture),this.baseTexture=e,this._frame=t,this.trim=n,this.valid=!1,this.destroyed=!1,this._uvs=tv,this.uvMatrix=null,this.orig=s||t,this._rotate=Number(r||0),r===!0)this._rotate=2;else if(this._rotate%2!==0)throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=o?new vt(o.x,o.y):new vt(0,0),this.defaultBorders=a,this._updateID=0,this.textureCacheIds=[],e.valid?this.noFrame?e.valid&&this.onBaseTextureUpdated(e):this.frame=t:e.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&e.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(e){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=e.width,this._frame.height=e.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(e){if(this.baseTexture){if(e){const{resource:t}=this.baseTexture;t!=null&&t.url&&$i[t.url]&&Nt.removeFromCache(t.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,Nt.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){var n;const e=this._frame.clone(),t=this._frame===this.orig?e:this.orig.clone(),s=new Nt(this.baseTexture,!this.noFrame&&e,t,(n=this.trim)==null?void 0:n.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(s._frame=e),s}updateUvs(){this._uvs===tv&&(this._uvs=new up),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(e,t={},s=Le.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else if(e instanceof Qe){if(!e.cacheId){const a=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e.cacheId=`${a}-${co()}`,Qe.addToCache(e,e.cacheId)}r=e.cacheId}else{if(!e._pixiId){const a=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${a}_${co()}`}r=e._pixiId}let o=$i[r];if(n&&s&&!o)throw new Error(`The cacheId "${r}" does not exist in TextureCache.`);return!o&&!(e instanceof Qe)?(t.resolution||(t.resolution=Yn(e)),o=new Nt(new Qe(e,t)),o.baseTexture.cacheId=r,Qe.addToCache(o.baseTexture,r),Nt.addToCache(o,r)):!o&&e instanceof Qe&&(o=new Nt(e),Nt.addToCache(o,r)),o}static fromURL(e,t){const s=Object.assign({autoLoad:!1},t==null?void 0:t.resourceOptions),n=Nt.from(e,Object.assign({resourceOptions:s},t),!1),r=n.baseTexture.resource;return n.baseTexture.valid?Promise.resolve(n):r.load().then(()=>Promise.resolve(n))}static fromBuffer(e,t,s,n){return new Nt(Qe.fromBuffer(e,t,s,n))}static fromLoader(e,t,s,n){const r=new Qe(e,Object.assign({scaleMode:Qe.defaultOptions.scaleMode,resolution:Yn(t)},n)),{resource:o}=r;o instanceof gb&&(o.url=t);const a=new Nt(r);return s||(s=t),Qe.addToCache(a.baseTexture,s),Nt.addToCache(a,s),s!==t&&(Qe.addToCache(a.baseTexture,t),Nt.addToCache(a,t)),a.baseTexture.valid?Promise.resolve(a):new Promise(l=>{a.baseTexture.once("loaded",()=>l(a))})}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),$i[t]&&$i[t]!==e&&console.warn(`Texture added to the cache with an id [${t}] that already had an entry`),$i[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=$i[e];if(t){const s=t.textureCacheIds.indexOf(e);return s>-1&&t.textureCacheIds.splice(s,1),delete $i[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;tthis.baseTexture.width,a=s+r>this.baseTexture.height;if(o||a){const l=o&&a?"and":"or",c=`X: ${t} + ${n} = ${t+n} > ${this.baseTexture.width}`,h=`Y: ${s} + ${r} = ${s+r} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${c} ${l} ${h}`)}this.valid=n&&r&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=e),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(e){this._rotate=e,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return Nt._EMPTY||(Nt._EMPTY=new Nt(new Qe),Ql(Nt._EMPTY),Ql(Nt._EMPTY.baseTexture)),Nt._EMPTY}static get WHITE(){if(!Nt._WHITE){const e=Le.ADAPTER.createCanvas(16,16),t=e.getContext("2d");e.width=16,e.height=16,t.fillStyle="white",t.fillRect(0,0,16,16),Nt._WHITE=new Nt(Qe.from(e)),Ql(Nt._WHITE),Ql(Nt._WHITE.baseTexture)}return Nt._WHITE}};class vo extends ze{constructor(e,t){super(e,t),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(e){this.framebuffer.multisample=e}resize(e,t,s=!0){const n=this.baseTexture.resolution,r=Math.round(e*n)/n,o=Math.round(t*n)/n;this.valid=r>0&&o>0,this._frame.width=this.orig.width=r,this._frame.height=this.orig.height=o,s&&this.baseTexture.resize(r,o),this.updateUvs()}setResolution(e){const{baseTexture:t}=this;t.resolution!==e&&(t.setResolution(e),this.resize(t.width,t.height,!1))}static create(e){return new vo(new pb(e))}}class vb{constructor(e){this.texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(e,t,s=ls.NONE){const n=new pb(Object.assign({width:e,height:t,resolution:1,multisample:s},this.textureOptions));return new vo(n)}getOptimalTexture(e,t,s=1,n=ls.NONE){let r;e=Math.max(Math.ceil(e*s-1e-6),1),t=Math.max(Math.ceil(t*s-1e-6),1),!this.enableFullScreen||e!==this._pixelsWidth||t!==this._pixelsHeight?(e=eh(e),t=eh(t),r=((e&65535)<<16|t&65535)>>>0,n>1&&(r+=n*4294967296)):r=n>1?-n:-1,this.texturePool[r]||(this.texturePool[r]=[]);let o=this.texturePool[r].pop();return o||(o=this.createTexture(e,t,n)),o.filterPoolKey=r,o.setResolution(s),o}getFilterTexture(e,t,s){const n=this.getOptimalTexture(e.width,e.height,t||e.resolution,s||ls.NONE);return n.filterFrame=e.filterFrame,n}returnTexture(e){const t=e.filterPoolKey;e.filterFrame=null,this.texturePool[t].push(e)}returnFilterTexture(e){this.returnTexture(e)}clear(e){if(e=e!==!1,e)for(const t in this.texturePool){const s=this.texturePool[t];if(s)for(let n=0;n0&&e.height>0;for(const t in this.texturePool){if(!(Number(t)<0))continue;const s=this.texturePool[t];if(s)for(let n=0;n1&&(h=this.getOptimalFilterTexture(c.width,c.height,t.resolution),h.filterFrame=c.filterFrame),s[u].apply(this,c,h,Zi.CLEAR,t);const d=c;c=h,h=d}s[u].apply(this,c,l.renderTexture,Zi.BLEND,t),u>1&&t.multisample>1&&this.returnFilterTexture(t.renderTexture),this.returnFilterTexture(c),this.returnFilterTexture(h)}t.clear(),this.statePool.push(t)}bindAndClear(e,t=Zi.CLEAR){const{renderTexture:s,state:n}=this.renderer;if(e===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,e==null?void 0:e.filterFrame){const o=this.tempRect;o.x=0,o.y=0,o.width=e.filterFrame.width,o.height=e.filterFrame.height,s.bind(e,e.filterFrame,o)}else e!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?s.bind(e):this.renderer.renderTexture.bind(e,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const r=n.stateId&1||this.forceClear;(t===Zi.CLEAR||t===Zi.BLIT&&r)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(e,t,s,n){const r=this.renderer;r.state.set(e.state),this.bindAndClear(s,n),e.uniforms.uSampler=t,e.uniforms.filterGlobals=this.globalUniforms,r.shader.bind(e),e.legacy=!!e.program.attributeData.aTextureCoord,e.legacy?(this.quadUv.map(t._frame,t.filterFrame),r.geometry.bind(this.quadUv),r.geometry.draw(sn.TRIANGLES)):(r.geometry.bind(this.quad),r.geometry.draw(sn.TRIANGLE_STRIP))}calculateSpriteMatrix(e,t){const{sourceFrame:s,destinationFrame:n}=this.activeState,{orig:r}=t._texture,o=e.set(n.width,0,0,n.height,s.x,s.y),a=t.worldTransform.copyTo(Ot.TEMP_MATRIX);return a.invert(),o.prepend(a),o.scale(1/r.width,1/r.height),o.translate(t.anchor.x,t.anchor.y),o}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(e,t,s=1,n=ls.NONE){return this.texturePool.getOptimalTexture(e,t,s,n)}getFilterTexture(e,t,s){if(typeof e=="number"){const r=e;e=t,t=r}e=e||this.activeState.renderTexture;const n=this.texturePool.getOptimalTexture(e.width,e.height,t||e.resolution,s||ls.NONE);return n.filterFrame=e.filterFrame,n}returnFilterTexture(e){this.texturePool.returnTexture(e)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(e,t){const s=ec[0],n=ec[1],r=ec[2],o=ec[3];s.set(t.left,t.top),n.set(t.left,t.bottom),r.set(t.right,t.top),o.set(t.right,t.bottom),e.apply(s,s),e.apply(n,n),e.apply(r,r),e.apply(o,o);const a=Math.min(s.x,n.x,r.x,o.x),l=Math.min(s.y,n.y,r.y,o.y),c=Math.max(s.x,n.x,r.x,o.x),h=Math.max(s.y,n.y,r.y,o.y);t.x=a,t.y=l,t.width=c-a,t.height=h-l}roundFrame(e,t,s,n,r){if(!(e.width<=0||e.height<=0||s.width<=0||s.height<=0)){if(r){const{a:o,b:a,c:l,d:c}=r;if((Math.abs(a)>1e-4||Math.abs(l)>1e-4)&&(Math.abs(o)>1e-4||Math.abs(c)>1e-4))return}r=r?Vd.copyFrom(r):Vd.identity(),r.translate(-s.x,-s.y).scale(n.width/s.width,n.height/s.height).translate(n.x,n.y),this.transformAABB(r,e),e.ceil(t),this.transformAABB(r.invert(),e)}}}xb.extension={type:ke.RendererSystem,name:"filter"};Xe.add(xb);class IC{constructor(e){this.framebuffer=e,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=ls.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const RC=new ot;class bb{constructor(e){this.renderer=e,this.managedFramebuffers=[],this.unknownFramebuffer=new jf(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);const e=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new ot,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let t=this.renderer.context.extensions.drawBuffers,s=this.renderer.context.extensions.depthTexture;Le.PREFER_ENV===go.WEBGL_LEGACY&&(t=null,s=null),t?e.drawBuffers=n=>t.drawBuffersWEBGL(n):(this.hasMRT=!1,e.drawBuffers=()=>{}),s||(this.writeDepthTexture=!1)}else this.msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}bind(e,t,s=0){const{gl:n}=this;if(e){const r=e.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(e);this.current!==e&&(this.current=e,n.bindFramebuffer(n.FRAMEBUFFER,r.framebuffer)),r.mipLevel!==s&&(e.dirtyId++,e.dirtyFormat++,r.mipLevel=s),r.dirtyId!==e.dirtyId&&(r.dirtyId=e.dirtyId,r.dirtyFormat!==e.dirtyFormat?(r.dirtyFormat=e.dirtyFormat,r.dirtySize=e.dirtySize,this.updateFramebuffer(e,s)):r.dirtySize!==e.dirtySize&&(r.dirtySize=e.dirtySize,this.resizeFramebuffer(e)));for(let o=0;o>s,a=t.height>>s,l=o/t.width;this.setViewport(t.x*l,t.y*l,o,a)}else{const o=e.width>>s,a=e.height>>s;this.setViewport(0,0,o,a)}}else this.current&&(this.current=null,n.bindFramebuffer(n.FRAMEBUFFER,null)),t?this.setViewport(t.x,t.y,t.width,t.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(e,t,s,n){const r=this.viewport;e=Math.round(e),t=Math.round(t),s=Math.round(s),n=Math.round(n),(r.width!==s||r.height!==n||r.x!==e||r.y!==t)&&(r.x=e,r.y=t,r.width=s,r.height=n,this.gl.viewport(e,t,s,n))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(e,t,s,n,r=Pf.COLOR|Pf.DEPTH){const{gl:o}=this;o.clearColor(e,t,s,n),o.clear(r)}initFramebuffer(e){const{gl:t}=this,s=new IC(t.createFramebuffer());return s.multisample=this.detectSamples(e.multisample),e.glFramebuffers[this.CONTEXT_UID]=s,this.managedFramebuffers.push(e),e.disposeRunner.add(this),s}resizeFramebuffer(e){const{gl:t}=this,s=e.glFramebuffers[this.CONTEXT_UID];if(s.stencil){t.bindRenderbuffer(t.RENDERBUFFER,s.stencil);let o;this.renderer.context.webGLVersion===1?o=t.DEPTH_STENCIL:e.depth&&e.stencil?o=t.DEPTH24_STENCIL8:e.depth?o=t.DEPTH_COMPONENT24:o=t.STENCIL_INDEX8,s.msaaBuffer?t.renderbufferStorageMultisample(t.RENDERBUFFER,s.multisample,o,e.width,e.height):t.renderbufferStorage(t.RENDERBUFFER,o,e.width,e.height)}const n=e.colorTextures;let r=n.length;t.drawBuffers||(r=Math.min(r,1));for(let o=0;o1&&this.canMultisampleFramebuffer(e)?n.msaaBuffer=n.msaaBuffer||s.createRenderbuffer():n.msaaBuffer&&(s.deleteRenderbuffer(n.msaaBuffer),n.msaaBuffer=null,n.blitFramebuffer&&(n.blitFramebuffer.dispose(),n.blitFramebuffer=null));const a=[];for(let l=0;l1&&s.drawBuffers(a),e.depthTexture&&this.writeDepthTexture){const l=e.depthTexture;this.renderer.texture.bind(l,0),s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,l._glTextures[this.CONTEXT_UID].texture,t)}if((e.stencil||e.depth)&&!(e.depthTexture&&this.writeDepthTexture)){n.stencil=n.stencil||s.createRenderbuffer();let l,c;this.renderer.context.webGLVersion===1?(l=s.DEPTH_STENCIL_ATTACHMENT,c=s.DEPTH_STENCIL):e.depth&&e.stencil?(l=s.DEPTH_STENCIL_ATTACHMENT,c=s.DEPTH24_STENCIL8):e.depth?(l=s.DEPTH_ATTACHMENT,c=s.DEPTH_COMPONENT24):(l=s.STENCIL_ATTACHMENT,c=s.STENCIL_INDEX8),s.bindRenderbuffer(s.RENDERBUFFER,n.stencil),n.msaaBuffer?s.renderbufferStorageMultisample(s.RENDERBUFFER,n.multisample,c,e.width,e.height):s.renderbufferStorage(s.RENDERBUFFER,c,e.width,e.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,l,s.RENDERBUFFER,n.stencil)}else n.stencil&&(s.deleteRenderbuffer(n.stencil),n.stencil=null)}canMultisampleFramebuffer(e){return this.renderer.context.webGLVersion!==1&&e.colorTextures.length<=1&&!e.depthTexture}detectSamples(e){const{msaaSamples:t}=this;let s=ls.NONE;if(e<=1||t===null)return s;for(let n=0;n=0&&this.managedFramebuffers.splice(r,1),e.disposeRunner.remove(this),t||(n.deleteFramebuffer(s.framebuffer),s.msaaBuffer&&n.deleteRenderbuffer(s.msaaBuffer),s.stencil&&n.deleteRenderbuffer(s.stencil)),s.blitFramebuffer&&this.disposeFramebuffer(s.blitFramebuffer,t)}disposeAll(e){const t=this.managedFramebuffers;this.managedFramebuffers=[];for(let s=0;ss.createVertexArrayOES(),e.bindVertexArray=n=>s.bindVertexArrayOES(n),e.deleteVertexArray=n=>s.deleteVertexArrayOES(n)):(this.hasVao=!1,e.createVertexArray=()=>null,e.bindVertexArray=()=>null,e.deleteVertexArray=()=>null)}if(t.webGLVersion!==2){const s=e.getExtension("ANGLE_instanced_arrays");s?(e.vertexAttribDivisor=(n,r)=>s.vertexAttribDivisorANGLE(n,r),e.drawElementsInstanced=(n,r,o,a,l)=>s.drawElementsInstancedANGLE(n,r,o,a,l),e.drawArraysInstanced=(n,r,o,a)=>s.drawArraysInstancedANGLE(n,r,o,a)):this.hasInstance=!1}this.canUseUInt32ElementIndex=t.webGLVersion===2||!!t.extensions.uint32ElementIndex}bind(e,t){t=t||this.renderer.shader.shader;const{gl:s}=this;let n=e.glVertexArrayObjects[this.CONTEXT_UID],r=!1;n||(this.managedGeometries[e.id]=e,e.disposeRunner.add(this),e.glVertexArrayObjects[this.CONTEXT_UID]=n={},r=!0);const o=n[t.program.id]||this.initGeometryVao(e,t,r);this._activeGeometry=e,this._activeVao!==o&&(this._activeVao=o,this.hasVao?s.bindVertexArray(o):this.activateVao(e,t.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,t=this.renderer.buffer;for(let s=0;s"u"?.5:t,this.isSimple=!1}get texture(){return this._texture}set texture(e){this._texture=e,this._textureID=-1}multiplyUvs(e,t){t===void 0&&(t=e);const s=this.mapCoord;for(let n=0;n=0;--n)e[n]=s[n]||null,e[n]&&(e[n]._batchLocation=n)}boundArray(e,t,s,n){const{elements:r,ids:o,count:a}=e;let l=0;for(let c=0;c=0&&u=go.WEBGL2&&(s=e.getContext("webgl2",t)),s)this.webGLVersion=2;else if(this.webGLVersion=1,s=e.getContext("webgl",t)||e.getContext("experimental-webgl",t),!s)throw new Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=s,this.getExtensions(),this.gl}getExtensions(){const{gl:e}=this,t={loseContext:e.getExtension("WEBGL_lose_context"),anisotropicFiltering:e.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),s3tc:e.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:e.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:e.getExtension("WEBGL_compressed_texture_etc"),etc1:e.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:e.getExtension("WEBGL_compressed_texture_atc"),astc:e.getExtension("WEBGL_compressed_texture_astc"),bptc:e.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,t,{drawBuffers:e.getExtension("WEBGL_draw_buffers"),depthTexture:e.getExtension("WEBGL_depth_texture"),vertexArrayObject:e.getExtension("OES_vertex_array_object")||e.getExtension("MOZ_OES_vertex_array_object")||e.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:e.getExtension("OES_element_index_uint"),floatTexture:e.getExtension("OES_texture_float"),floatTextureLinear:e.getExtension("OES_texture_float_linear"),textureHalfFloat:e.getExtension("OES_texture_half_float"),textureHalfFloatLinear:e.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,t,{colorBufferFloat:e.getExtension("EXT_color_buffer_float")})}handleContextLost(e){e.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){const e=this.renderer.view;this.renderer=null,e.removeEventListener!==void 0&&(e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(e){const t=e.getContextAttributes(),s="WebGL2RenderingContext"in globalThis&&e instanceof globalThis.WebGL2RenderingContext;s&&(this.webGLVersion=2),t&&!t.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");const n=s||!!e.getExtension("OES_element_index_uint");this.supports.uint32Indices=n,n||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}nh.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},nh.extension={type:ke.RendererSystem,name:"context"};Xe.add(nh);class Hf{constructor(e,t){if(this.width=Math.round(e),this.height=Math.round(t),!this.width||!this.height)throw new Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new Ri("disposeFramebuffer"),this.multisample=ls.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(e=0,t){return this.colorTextures[e]=t||new Qe(null,{scaleMode:Ci.NEAREST,resolution:1,mipmap:gi.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(e){return this.depthTexture=e||new Qe(null,{scaleMode:Ci.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:gi.OFF,format:_e.DEPTH_COMPONENT,type:$e.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(e,t){if(e=Math.round(e),t=Math.round(t),!e||!t)throw new Error("Framebuffer width and height must not be zero");if(!(e===this.width&&t===this.height)){this.width=e,this.height=t,this.dirtyId++,this.dirtySize++;for(let s=0;s{const n=this.source;this.url=n.src;const r=()=>{this.destroyed||(n.onload=null,n.onerror=null,this.update(),this._load=null,this.createBitmap?t(this.process()):t(this))};n.complete&&n.src?r():(n.onload=r,n.onerror=o=>{s(o),this.onError.emit(o)})}),this._load)}process(){const e=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);const t=globalThis.createImageBitmap,s=!e.crossOrigin||e.crossOrigin==="anonymous";return this._process=fetch(e.src,{mode:s?"cors":"no-cors"}).then(n=>n.blob()).then(n=>t(n,0,0,e.width,e.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===bs.UNPACK?"premultiply":"none"})).then(n=>this.destroyed?Promise.reject():(this.bitmap=n,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(e,t,s){if(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(e,t,s);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(e,t,s,this.bitmap),!this.preserveBitmap){let n=!0;const r=t._glTextures;for(const o in r){const a=r[o];if(a!==s&&a.dirtyId!==t.dirtyId){n=!1;break}}n&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(e){return typeof HTMLImageElement<"u"&&(typeof e=="string"||e instanceof HTMLImageElement)}}class dp{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(e,t,s){const n=t.width,r=t.height;if(s){const o=e.width/2/n,a=e.height/2/r,l=e.x/n+o,c=e.y/r+a;s=Wt.add(s,Wt.NW),this.x0=l+o*Wt.uX(s),this.y0=c+a*Wt.uY(s),s=Wt.add(s,2),this.x1=l+o*Wt.uX(s),this.y1=c+a*Wt.uY(s),s=Wt.add(s,2),this.x2=l+o*Wt.uX(s),this.y2=c+a*Wt.uY(s),s=Wt.add(s,2),this.x3=l+o*Wt.uX(s),this.y3=c+a*Wt.uY(s)}else this.x0=e.x/n,this.y0=e.y/r,this.x1=(e.x+e.width)/n,this.y1=e.y/r,this.x2=(e.x+e.width)/n,this.y2=(e.y+e.height)/r,this.x3=e.x/n,this.y3=(e.y+e.height)/r;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}dp.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};const sv=new dp;function Ql(i){i.destroy=function(){},i.on=function(){},i.once=function(){},i.emit=function(){}}let ze=class Nt extends El{constructor(e,t,s,n,r,o,a){if(super(),this.noFrame=!1,t||(this.noFrame=!0,t=new ot(0,0,1,1)),e instanceof Nt&&(e=e.baseTexture),this.baseTexture=e,this._frame=t,this.trim=n,this.valid=!1,this.destroyed=!1,this._uvs=sv,this.uvMatrix=null,this.orig=s||t,this._rotate=Number(r||0),r===!0)this._rotate=2;else if(this._rotate%2!==0)throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=o?new vt(o.x,o.y):new vt(0,0),this.defaultBorders=a,this._updateID=0,this.textureCacheIds=[],e.valid?this.noFrame?e.valid&&this.onBaseTextureUpdated(e):this.frame=t:e.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&e.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(e){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=e.width,this._frame.height=e.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(e){if(this.baseTexture){if(e){const{resource:t}=this.baseTexture;t!=null&&t.url&&$i[t.url]&&Nt.removeFromCache(t.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,Nt.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){var n;const e=this._frame.clone(),t=this._frame===this.orig?e:this.orig.clone(),s=new Nt(this.baseTexture,!this.noFrame&&e,t,(n=this.trim)==null?void 0:n.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(s._frame=e),s}updateUvs(){this._uvs===sv&&(this._uvs=new dp),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(e,t={},s=Le.STRICT_TEXTURE_CACHE){const n=typeof e=="string";let r=null;if(n)r=e;else if(e instanceof Qe){if(!e.cacheId){const a=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e.cacheId=`${a}-${co()}`,Qe.addToCache(e,e.cacheId)}r=e.cacheId}else{if(!e._pixiId){const a=(t==null?void 0:t.pixiIdPrefix)||"pixiid";e._pixiId=`${a}_${co()}`}r=e._pixiId}let o=$i[r];if(n&&s&&!o)throw new Error(`The cacheId "${r}" does not exist in TextureCache.`);return!o&&!(e instanceof Qe)?(t.resolution||(t.resolution=Yn(e)),o=new Nt(new Qe(e,t)),o.baseTexture.cacheId=r,Qe.addToCache(o.baseTexture,r),Nt.addToCache(o,r)):!o&&e instanceof Qe&&(o=new Nt(e),Nt.addToCache(o,r)),o}static fromURL(e,t){const s=Object.assign({autoLoad:!1},t==null?void 0:t.resourceOptions),n=Nt.from(e,Object.assign({resourceOptions:s},t),!1),r=n.baseTexture.resource;return n.baseTexture.valid?Promise.resolve(n):r.load().then(()=>Promise.resolve(n))}static fromBuffer(e,t,s,n){return new Nt(Qe.fromBuffer(e,t,s,n))}static fromLoader(e,t,s,n){const r=new Qe(e,Object.assign({scaleMode:Qe.defaultOptions.scaleMode,resolution:Yn(t)},n)),{resource:o}=r;o instanceof yb&&(o.url=t);const a=new Nt(r);return s||(s=t),Qe.addToCache(a.baseTexture,s),Nt.addToCache(a,s),s!==t&&(Qe.addToCache(a.baseTexture,t),Nt.addToCache(a,t)),a.baseTexture.valid?Promise.resolve(a):new Promise(l=>{a.baseTexture.once("loaded",()=>l(a))})}static addToCache(e,t){t&&(e.textureCacheIds.includes(t)||e.textureCacheIds.push(t),$i[t]&&$i[t]!==e&&console.warn(`Texture added to the cache with an id [${t}] that already had an entry`),$i[t]=e)}static removeFromCache(e){if(typeof e=="string"){const t=$i[e];if(t){const s=t.textureCacheIds.indexOf(e);return s>-1&&t.textureCacheIds.splice(s,1),delete $i[e],t}}else if(e!=null&&e.textureCacheIds){for(let t=0;tthis.baseTexture.width,a=s+r>this.baseTexture.height;if(o||a){const l=o&&a?"and":"or",c=`X: ${t} + ${n} = ${t+n} > ${this.baseTexture.width}`,h=`Y: ${s} + ${r} = ${s+r} > ${this.baseTexture.height}`;throw new Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${c} ${l} ${h}`)}this.valid=n&&r&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=e),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(e){this._rotate=e,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return Nt._EMPTY||(Nt._EMPTY=new Nt(new Qe),Ql(Nt._EMPTY),Ql(Nt._EMPTY.baseTexture)),Nt._EMPTY}static get WHITE(){if(!Nt._WHITE){const e=Le.ADAPTER.createCanvas(16,16),t=e.getContext("2d");e.width=16,e.height=16,t.fillStyle="white",t.fillRect(0,0,16,16),Nt._WHITE=new Nt(Qe.from(e)),Ql(Nt._WHITE),Ql(Nt._WHITE.baseTexture)}return Nt._WHITE}};class vo extends ze{constructor(e,t){super(e,t),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(e){this.framebuffer.multisample=e}resize(e,t,s=!0){const n=this.baseTexture.resolution,r=Math.round(e*n)/n,o=Math.round(t*n)/n;this.valid=r>0&&o>0,this._frame.width=this.orig.width=r,this._frame.height=this.orig.height=o,s&&this.baseTexture.resize(r,o),this.updateUvs()}setResolution(e){const{baseTexture:t}=this;t.resolution!==e&&(t.setResolution(e),this.resize(t.width,t.height,!1))}static create(e){return new vo(new vb(e))}}class xb{constructor(e){this.texturePool={},this.textureOptions=e||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(e,t,s=ls.NONE){const n=new vb(Object.assign({width:e,height:t,resolution:1,multisample:s},this.textureOptions));return new vo(n)}getOptimalTexture(e,t,s=1,n=ls.NONE){let r;e=Math.max(Math.ceil(e*s-1e-6),1),t=Math.max(Math.ceil(t*s-1e-6),1),!this.enableFullScreen||e!==this._pixelsWidth||t!==this._pixelsHeight?(e=eh(e),t=eh(t),r=((e&65535)<<16|t&65535)>>>0,n>1&&(r+=n*4294967296)):r=n>1?-n:-1,this.texturePool[r]||(this.texturePool[r]=[]);let o=this.texturePool[r].pop();return o||(o=this.createTexture(e,t,n)),o.filterPoolKey=r,o.setResolution(s),o}getFilterTexture(e,t,s){const n=this.getOptimalTexture(e.width,e.height,t||e.resolution,s||ls.NONE);return n.filterFrame=e.filterFrame,n}returnTexture(e){const t=e.filterPoolKey;e.filterFrame=null,this.texturePool[t].push(e)}returnFilterTexture(e){this.returnTexture(e)}clear(e){if(e=e!==!1,e)for(const t in this.texturePool){const s=this.texturePool[t];if(s)for(let n=0;n0&&e.height>0;for(const t in this.texturePool){if(!(Number(t)<0))continue;const s=this.texturePool[t];if(s)for(let n=0;n1&&(h=this.getOptimalFilterTexture(c.width,c.height,t.resolution),h.filterFrame=c.filterFrame),s[u].apply(this,c,h,Zi.CLEAR,t);const d=c;c=h,h=d}s[u].apply(this,c,l.renderTexture,Zi.BLEND,t),u>1&&t.multisample>1&&this.returnFilterTexture(t.renderTexture),this.returnFilterTexture(c),this.returnFilterTexture(h)}t.clear(),this.statePool.push(t)}bindAndClear(e,t=Zi.CLEAR){const{renderTexture:s,state:n}=this.renderer;if(e===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,e==null?void 0:e.filterFrame){const o=this.tempRect;o.x=0,o.y=0,o.width=e.filterFrame.width,o.height=e.filterFrame.height,s.bind(e,e.filterFrame,o)}else e!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?s.bind(e):this.renderer.renderTexture.bind(e,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);const r=n.stateId&1||this.forceClear;(t===Zi.CLEAR||t===Zi.BLIT&&r)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(e,t,s,n){const r=this.renderer;r.state.set(e.state),this.bindAndClear(s,n),e.uniforms.uSampler=t,e.uniforms.filterGlobals=this.globalUniforms,r.shader.bind(e),e.legacy=!!e.program.attributeData.aTextureCoord,e.legacy?(this.quadUv.map(t._frame,t.filterFrame),r.geometry.bind(this.quadUv),r.geometry.draw(sn.TRIANGLES)):(r.geometry.bind(this.quad),r.geometry.draw(sn.TRIANGLE_STRIP))}calculateSpriteMatrix(e,t){const{sourceFrame:s,destinationFrame:n}=this.activeState,{orig:r}=t._texture,o=e.set(n.width,0,0,n.height,s.x,s.y),a=t.worldTransform.copyTo(Ot.TEMP_MATRIX);return a.invert(),o.prepend(a),o.scale(1/r.width,1/r.height),o.translate(t.anchor.x,t.anchor.y),o}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(e,t,s=1,n=ls.NONE){return this.texturePool.getOptimalTexture(e,t,s,n)}getFilterTexture(e,t,s){if(typeof e=="number"){const r=e;e=t,t=r}e=e||this.activeState.renderTexture;const n=this.texturePool.getOptimalTexture(e.width,e.height,t||e.resolution,s||ls.NONE);return n.filterFrame=e.filterFrame,n}returnFilterTexture(e){this.texturePool.returnTexture(e)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(e,t){const s=ec[0],n=ec[1],r=ec[2],o=ec[3];s.set(t.left,t.top),n.set(t.left,t.bottom),r.set(t.right,t.top),o.set(t.right,t.bottom),e.apply(s,s),e.apply(n,n),e.apply(r,r),e.apply(o,o);const a=Math.min(s.x,n.x,r.x,o.x),l=Math.min(s.y,n.y,r.y,o.y),c=Math.max(s.x,n.x,r.x,o.x),h=Math.max(s.y,n.y,r.y,o.y);t.x=a,t.y=l,t.width=c-a,t.height=h-l}roundFrame(e,t,s,n,r){if(!(e.width<=0||e.height<=0||s.width<=0||s.height<=0)){if(r){const{a:o,b:a,c:l,d:c}=r;if((Math.abs(a)>1e-4||Math.abs(l)>1e-4)&&(Math.abs(o)>1e-4||Math.abs(c)>1e-4))return}r=r?Vd.copyFrom(r):Vd.identity(),r.translate(-s.x,-s.y).scale(n.width/s.width,n.height/s.height).translate(n.x,n.y),this.transformAABB(r,e),e.ceil(t),this.transformAABB(r.invert(),e)}}}wb.extension={type:ke.RendererSystem,name:"filter"};Xe.add(wb);class PC{constructor(e){this.framebuffer=e,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=ls.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}const kC=new ot;class Sb{constructor(e){this.renderer=e,this.managedFramebuffers=[],this.unknownFramebuffer=new Hf(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);const e=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new ot,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let t=this.renderer.context.extensions.drawBuffers,s=this.renderer.context.extensions.depthTexture;Le.PREFER_ENV===go.WEBGL_LEGACY&&(t=null,s=null),t?e.drawBuffers=n=>t.drawBuffersWEBGL(n):(this.hasMRT=!1,e.drawBuffers=()=>{}),s||(this.writeDepthTexture=!1)}else this.msaaSamples=e.getInternalformatParameter(e.RENDERBUFFER,e.RGBA8,e.SAMPLES)}bind(e,t,s=0){const{gl:n}=this;if(e){const r=e.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(e);this.current!==e&&(this.current=e,n.bindFramebuffer(n.FRAMEBUFFER,r.framebuffer)),r.mipLevel!==s&&(e.dirtyId++,e.dirtyFormat++,r.mipLevel=s),r.dirtyId!==e.dirtyId&&(r.dirtyId=e.dirtyId,r.dirtyFormat!==e.dirtyFormat?(r.dirtyFormat=e.dirtyFormat,r.dirtySize=e.dirtySize,this.updateFramebuffer(e,s)):r.dirtySize!==e.dirtySize&&(r.dirtySize=e.dirtySize,this.resizeFramebuffer(e)));for(let o=0;o>s,a=t.height>>s,l=o/t.width;this.setViewport(t.x*l,t.y*l,o,a)}else{const o=e.width>>s,a=e.height>>s;this.setViewport(0,0,o,a)}}else this.current&&(this.current=null,n.bindFramebuffer(n.FRAMEBUFFER,null)),t?this.setViewport(t.x,t.y,t.width,t.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(e,t,s,n){const r=this.viewport;e=Math.round(e),t=Math.round(t),s=Math.round(s),n=Math.round(n),(r.width!==s||r.height!==n||r.x!==e||r.y!==t)&&(r.x=e,r.y=t,r.width=s,r.height=n,this.gl.viewport(e,t,s,n))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(e,t,s,n,r=kf.COLOR|kf.DEPTH){const{gl:o}=this;o.clearColor(e,t,s,n),o.clear(r)}initFramebuffer(e){const{gl:t}=this,s=new PC(t.createFramebuffer());return s.multisample=this.detectSamples(e.multisample),e.glFramebuffers[this.CONTEXT_UID]=s,this.managedFramebuffers.push(e),e.disposeRunner.add(this),s}resizeFramebuffer(e){const{gl:t}=this,s=e.glFramebuffers[this.CONTEXT_UID];if(s.stencil){t.bindRenderbuffer(t.RENDERBUFFER,s.stencil);let o;this.renderer.context.webGLVersion===1?o=t.DEPTH_STENCIL:e.depth&&e.stencil?o=t.DEPTH24_STENCIL8:e.depth?o=t.DEPTH_COMPONENT24:o=t.STENCIL_INDEX8,s.msaaBuffer?t.renderbufferStorageMultisample(t.RENDERBUFFER,s.multisample,o,e.width,e.height):t.renderbufferStorage(t.RENDERBUFFER,o,e.width,e.height)}const n=e.colorTextures;let r=n.length;t.drawBuffers||(r=Math.min(r,1));for(let o=0;o1&&this.canMultisampleFramebuffer(e)?n.msaaBuffer=n.msaaBuffer||s.createRenderbuffer():n.msaaBuffer&&(s.deleteRenderbuffer(n.msaaBuffer),n.msaaBuffer=null,n.blitFramebuffer&&(n.blitFramebuffer.dispose(),n.blitFramebuffer=null));const a=[];for(let l=0;l1&&s.drawBuffers(a),e.depthTexture&&this.writeDepthTexture){const l=e.depthTexture;this.renderer.texture.bind(l,0),s.framebufferTexture2D(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.TEXTURE_2D,l._glTextures[this.CONTEXT_UID].texture,t)}if((e.stencil||e.depth)&&!(e.depthTexture&&this.writeDepthTexture)){n.stencil=n.stencil||s.createRenderbuffer();let l,c;this.renderer.context.webGLVersion===1?(l=s.DEPTH_STENCIL_ATTACHMENT,c=s.DEPTH_STENCIL):e.depth&&e.stencil?(l=s.DEPTH_STENCIL_ATTACHMENT,c=s.DEPTH24_STENCIL8):e.depth?(l=s.DEPTH_ATTACHMENT,c=s.DEPTH_COMPONENT24):(l=s.STENCIL_ATTACHMENT,c=s.STENCIL_INDEX8),s.bindRenderbuffer(s.RENDERBUFFER,n.stencil),n.msaaBuffer?s.renderbufferStorageMultisample(s.RENDERBUFFER,n.multisample,c,e.width,e.height):s.renderbufferStorage(s.RENDERBUFFER,c,e.width,e.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,l,s.RENDERBUFFER,n.stencil)}else n.stencil&&(s.deleteRenderbuffer(n.stencil),n.stencil=null)}canMultisampleFramebuffer(e){return this.renderer.context.webGLVersion!==1&&e.colorTextures.length<=1&&!e.depthTexture}detectSamples(e){const{msaaSamples:t}=this;let s=ls.NONE;if(e<=1||t===null)return s;for(let n=0;n=0&&this.managedFramebuffers.splice(r,1),e.disposeRunner.remove(this),t||(n.deleteFramebuffer(s.framebuffer),s.msaaBuffer&&n.deleteRenderbuffer(s.msaaBuffer),s.stencil&&n.deleteRenderbuffer(s.stencil)),s.blitFramebuffer&&this.disposeFramebuffer(s.blitFramebuffer,t)}disposeAll(e){const t=this.managedFramebuffers;this.managedFramebuffers=[];for(let s=0;ss.createVertexArrayOES(),e.bindVertexArray=n=>s.bindVertexArrayOES(n),e.deleteVertexArray=n=>s.deleteVertexArrayOES(n)):(this.hasVao=!1,e.createVertexArray=()=>null,e.bindVertexArray=()=>null,e.deleteVertexArray=()=>null)}if(t.webGLVersion!==2){const s=e.getExtension("ANGLE_instanced_arrays");s?(e.vertexAttribDivisor=(n,r)=>s.vertexAttribDivisorANGLE(n,r),e.drawElementsInstanced=(n,r,o,a,l)=>s.drawElementsInstancedANGLE(n,r,o,a,l),e.drawArraysInstanced=(n,r,o,a)=>s.drawArraysInstancedANGLE(n,r,o,a)):this.hasInstance=!1}this.canUseUInt32ElementIndex=t.webGLVersion===2||!!t.extensions.uint32ElementIndex}bind(e,t){t=t||this.renderer.shader.shader;const{gl:s}=this;let n=e.glVertexArrayObjects[this.CONTEXT_UID],r=!1;n||(this.managedGeometries[e.id]=e,e.disposeRunner.add(this),e.glVertexArrayObjects[this.CONTEXT_UID]=n={},r=!0);const o=n[t.program.id]||this.initGeometryVao(e,t,r);this._activeGeometry=e,this._activeVao!==o&&(this._activeVao=o,this.hasVao?s.bindVertexArray(o):this.activateVao(e,t.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){const e=this._activeGeometry,t=this.renderer.buffer;for(let s=0;s"u"?.5:t,this.isSimple=!1}get texture(){return this._texture}set texture(e){this._texture=e,this._textureID=-1}multiplyUvs(e,t){t===void 0&&(t=e);const s=this.mapCoord;for(let n=0;n0?this.maskStack[this.maskStack.length-1]._colorMask:15;s!==t&&this.renderer.gl.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)}destroy(){this.renderer=null}}Sb.extension={type:ke.RendererSystem,name:"mask"};Xe.add(Sb);class Mb{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,s=this.getStackLength();this.maskStack=e;const n=this.getStackLength();n!==s&&(n===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const iv=new Ot,nv=[],Tb=class Ec extends Mb{constructor(e){super(e),this.glConst=Le.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:s}=e,{renderer:n}=this,r=n.renderTexture,o=s.getBounds(!0,nv.pop()??new ot);this.roundFrameToPixels(o,r.current?r.current.resolution:n.resolution,r.sourceFrame,r.destinationFrame,n.projection.transform),t&&o.fit(t),e._scissorRectLocal=o}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:s,c:n,d:r}=e;return(Math.abs(s)>1e-4||Math.abs(n)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(r)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||Ec.isMatrixRotated(t.worldTransform)||Ec.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const s=e._scissorRectLocal;return s.width>0&&s.height>0}roundFrameToPixels(e,t,s,n,r){Ec.isMatrixRotated(r)||(r=r?iv.copyFrom(r):iv.identity(),r.translate(-s.x,-s.y).scale(n.width/s.width,n.height/s.height).translate(n.x,n.y),this.renderer.filter.transformAABB(r,e),e.fit(n),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&nv.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};Tb.extension={type:ke.RendererSystem,name:"scissor"};let LC=Tb;Xe.add(LC);class _b extends Mb{constructor(e){super(e),this.glConst=Le.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:s}=this.renderer,n=e._stencilCounter;n===0&&(this.renderer.framebuffer.forceStencil(),s.clearStencil(0),s.clear(s.STENCIL_BUFFER_BIT),s.enable(s.STENCIL_TEST)),e._stencilCounter++;const r=e._colorMask;r!==0&&(e._colorMask=0,s.colorMask(!1,!1,!1,!1)),s.stencilFunc(s.EQUAL,n,4294967295),s.stencilOp(s.KEEP,s.KEEP,s.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,r!==0&&(e._colorMask=r,s.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const s=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,n=s?s._colorMask:15;n!==0&&(s._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,n!==0&&(s._colorMask=n,t.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}_b.extension={type:ke.RendererSystem,name:"stencil"};Xe.add(_b);class Cb{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return ht("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return ht("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return ht("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}Cb.extension={type:[ke.RendererSystem,ke.CanvasRendererSystem],name:"_plugin"};Xe.add(Cb);class Ab{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new Ot,this.transform=null}update(e,t,s,n){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,s,n),this.transform&&this.projectionMatrix.append(this.transform);const r=this.renderer;r.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,r.globalUniforms.update(),r.shader.shader&&r.shader.syncUniformGroup(r.shader.shader.uniforms.globals)}calculateProjection(e,t,s,n){const r=this.projectionMatrix,o=n?-1:1;r.identity(),r.a=1/t.width*2,r.d=o*(1/t.height*2),r.tx=-1-t.x*r.a,r.ty=-o-t.y*r.d}setTransform(e){}destroy(){this.renderer=null}}Ab.extension={type:ke.RendererSystem,name:"projection"};Xe.add(Ab);const BC=new hp,rv=new ot;class Eb{constructor(e){this.renderer=e,this._tempMatrix=new Ot}generateTexture(e,t){const{region:s,...n}=t||{},r=(s==null?void 0:s.copyTo(rv))||e.getLocalBounds(rv,!0),o=n.resolution||this.renderer.resolution;r.width=Math.max(r.width,1/o),r.height=Math.max(r.height,1/o),n.width=r.width,n.height=r.height,n.resolution=o,n.multisample??(n.multisample=this.renderer.multisample);const a=vo.create(n);this._tempMatrix.tx=-r.x,this._tempMatrix.ty=-r.y;const l=e.transform;return e.transform=BC,this.renderer.render(e,{renderTexture:a,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=l,a}destroy(){}}Eb.extension={type:[ke.RendererSystem,ke.CanvasRendererSystem],name:"textureGenerator"};Xe.add(Eb);const Br=new ot,ka=new ot;class Ib{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new ot,this.destinationFrame=new ot,this.viewportFrame=new ot}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,s){const n=this.renderer;this.current=e;let r,o,a;e?(r=e.baseTexture,a=r.resolution,t||(Br.width=e.frame.width,Br.height=e.frame.height,t=Br),s||(ka.x=e.frame.x,ka.y=e.frame.y,ka.width=t.width,ka.height=t.height,s=ka),o=r.framebuffer):(a=n.resolution,t||(Br.width=n._view.screen.width,Br.height=n._view.screen.height,t=Br),s||(s=Br,s.width=t.width,s.height=t.height));const l=this.viewportFrame;l.x=s.x*a,l.y=s.y*a,l.width=s.width*a,l.height=s.height*a,e||(l.y=n.view.height-(l.y+l.height)),l.ceil(),this.renderer.framebuffer.bind(o,l),this.renderer.projection.update(s,t,a,!o),e?this.renderer.mask.setMaskStack(r.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(s)}clear(e,t){const s=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,n=Et.shared.setValue(e||s);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&n.premultiply(n.alpha);const r=this.destinationFrame,o=this.current?this.current.baseTexture:this.renderer._view.screen,a=r.width!==o.width||r.height!==o.height;if(a){let{x:l,y:c,width:h,height:u}=this.viewportFrame;l=Math.round(l),c=Math.round(c),h=Math.round(h),u=Math.round(u),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(l,c,h,u)}this.renderer.framebuffer.clear(n.red,n.green,n.blue,n.alpha,t),a&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}Ib.extension={type:ke.RendererSystem,name:"renderTexture"};Xe.add(Ib);class NC{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function DC(i,e){const t={},s=e.getProgramParameter(i,e.ACTIVE_ATTRIBUTES);for(let n=0;nc>h?1:-1);for(let c=0;c0?this.maskStack[this.maskStack.length-1]._colorMask:15;s!==t&&this.renderer.gl.colorMask((s&1)!==0,(s&2)!==0,(s&4)!==0,(s&8)!==0)}destroy(){this.renderer=null}}Tb.extension={type:ke.RendererSystem,name:"mask"};Xe.add(Tb);class _b{constructor(e){this.renderer=e,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(e){const{gl:t}=this.renderer,s=this.getStackLength();this.maskStack=e;const n=this.getStackLength();n!==s&&(n===0?t.disable(this.glConst):(t.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}const nv=new Ot,rv=[],Cb=class Ec extends _b{constructor(e){super(e),this.glConst=Le.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._scissorCounter:0}calcScissorRect(e){if(e._scissorRectLocal)return;const t=e._scissorRect,{maskObject:s}=e,{renderer:n}=this,r=n.renderTexture,o=s.getBounds(!0,rv.pop()??new ot);this.roundFrameToPixels(o,r.current?r.current.resolution:n.resolution,r.sourceFrame,r.destinationFrame,n.projection.transform),t&&o.fit(t),e._scissorRectLocal=o}static isMatrixRotated(e){if(!e)return!1;const{a:t,b:s,c:n,d:r}=e;return(Math.abs(s)>1e-4||Math.abs(n)>1e-4)&&(Math.abs(t)>1e-4||Math.abs(r)>1e-4)}testScissor(e){const{maskObject:t}=e;if(!t.isFastRect||!t.isFastRect()||Ec.isMatrixRotated(t.worldTransform)||Ec.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect(e);const s=e._scissorRectLocal;return s.width>0&&s.height>0}roundFrameToPixels(e,t,s,n,r){Ec.isMatrixRotated(r)||(r=r?nv.copyFrom(r):nv.identity(),r.translate(-s.x,-s.y).scale(n.width/s.width,n.height/s.height).translate(n.x,n.y),this.renderer.filter.transformAABB(r,e),e.fit(n),e.x=Math.round(e.x*t),e.y=Math.round(e.y*t),e.width=Math.round(e.width*t),e.height=Math.round(e.height*t))}push(e){e._scissorRectLocal||this.calcScissorRect(e);const{gl:t}=this.renderer;e._scissorRect||t.enable(t.SCISSOR_TEST),e._scissorCounter++,e._scissorRect=e._scissorRectLocal,this._useCurrent()}pop(e){const{gl:t}=this.renderer;e&&rv.push(e._scissorRectLocal),this.getStackLength()>0?this._useCurrent():t.disable(t.SCISSOR_TEST)}_useCurrent(){const e=this.maskStack[this.maskStack.length-1]._scissorRect;let t;this.renderer.renderTexture.current?t=e.y:t=this.renderer.height-e.height-e.y,this.renderer.gl.scissor(e.x,t,e.width,e.height)}};Cb.extension={type:ke.RendererSystem,name:"scissor"};let NC=Cb;Xe.add(NC);class Ab extends _b{constructor(e){super(e),this.glConst=Le.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){const e=this.maskStack[this.maskStack.length-1];return e?e._stencilCounter:0}push(e){const t=e.maskObject,{gl:s}=this.renderer,n=e._stencilCounter;n===0&&(this.renderer.framebuffer.forceStencil(),s.clearStencil(0),s.clear(s.STENCIL_BUFFER_BIT),s.enable(s.STENCIL_TEST)),e._stencilCounter++;const r=e._colorMask;r!==0&&(e._colorMask=0,s.colorMask(!1,!1,!1,!1)),s.stencilFunc(s.EQUAL,n,4294967295),s.stencilOp(s.KEEP,s.KEEP,s.INCR),t.renderable=!0,t.render(this.renderer),this.renderer.batch.flush(),t.renderable=!1,r!==0&&(e._colorMask=r,s.colorMask((r&1)!==0,(r&2)!==0,(r&4)!==0,(r&8)!==0)),this._useCurrent()}pop(e){const t=this.renderer.gl;if(this.getStackLength()===0)t.disable(t.STENCIL_TEST);else{const s=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,n=s?s._colorMask:15;n!==0&&(s._colorMask=0,t.colorMask(!1,!1,!1,!1)),t.stencilOp(t.KEEP,t.KEEP,t.DECR),e.renderable=!0,e.render(this.renderer),this.renderer.batch.flush(),e.renderable=!1,n!==0&&(s._colorMask=n,t.colorMask((n&1)!==0,(n&2)!==0,(n&4)!==0,(n&8)!==0)),this._useCurrent()}}_useCurrent(){const e=this.renderer.gl;e.stencilFunc(e.EQUAL,this.getStackLength(),4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP)}}Ab.extension={type:ke.RendererSystem,name:"stencil"};Xe.add(Ab);class Eb{constructor(e){this.renderer=e,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return ht("7.0.0","renderer.plugins.extract has moved to renderer.extract"),e.extract}},prepare:{enumerable:!1,get(){return ht("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),e.prepare}},interaction:{enumerable:!1,get(){return ht("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),e.events}}})}init(){const e=this.rendererPlugins;for(const t in e)this.plugins[t]=new e[t](this.renderer)}destroy(){for(const e in this.plugins)this.plugins[e].destroy(),this.plugins[e]=null}}Eb.extension={type:[ke.RendererSystem,ke.CanvasRendererSystem],name:"_plugin"};Xe.add(Eb);class Ib{constructor(e){this.renderer=e,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new Ot,this.transform=null}update(e,t,s,n){this.destinationFrame=e||this.destinationFrame||this.defaultFrame,this.sourceFrame=t||this.sourceFrame||e,this.calculateProjection(this.destinationFrame,this.sourceFrame,s,n),this.transform&&this.projectionMatrix.append(this.transform);const r=this.renderer;r.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,r.globalUniforms.update(),r.shader.shader&&r.shader.syncUniformGroup(r.shader.shader.uniforms.globals)}calculateProjection(e,t,s,n){const r=this.projectionMatrix,o=n?-1:1;r.identity(),r.a=1/t.width*2,r.d=o*(1/t.height*2),r.tx=-1-t.x*r.a,r.ty=-o-t.y*r.d}setTransform(e){}destroy(){this.renderer=null}}Ib.extension={type:ke.RendererSystem,name:"projection"};Xe.add(Ib);const DC=new up,ov=new ot;class Rb{constructor(e){this.renderer=e,this._tempMatrix=new Ot}generateTexture(e,t){const{region:s,...n}=t||{},r=(s==null?void 0:s.copyTo(ov))||e.getLocalBounds(ov,!0),o=n.resolution||this.renderer.resolution;r.width=Math.max(r.width,1/o),r.height=Math.max(r.height,1/o),n.width=r.width,n.height=r.height,n.resolution=o,n.multisample??(n.multisample=this.renderer.multisample);const a=vo.create(n);this._tempMatrix.tx=-r.x,this._tempMatrix.ty=-r.y;const l=e.transform;return e.transform=DC,this.renderer.render(e,{renderTexture:a,transform:this._tempMatrix,skipUpdateTransform:!!e.parent,blit:!0}),e.transform=l,a}destroy(){}}Rb.extension={type:[ke.RendererSystem,ke.CanvasRendererSystem],name:"textureGenerator"};Xe.add(Rb);const Br=new ot,ka=new ot;class Pb{constructor(e){this.renderer=e,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new ot,this.destinationFrame=new ot,this.viewportFrame=new ot}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}bind(e=null,t,s){const n=this.renderer;this.current=e;let r,o,a;e?(r=e.baseTexture,a=r.resolution,t||(Br.width=e.frame.width,Br.height=e.frame.height,t=Br),s||(ka.x=e.frame.x,ka.y=e.frame.y,ka.width=t.width,ka.height=t.height,s=ka),o=r.framebuffer):(a=n.resolution,t||(Br.width=n._view.screen.width,Br.height=n._view.screen.height,t=Br),s||(s=Br,s.width=t.width,s.height=t.height));const l=this.viewportFrame;l.x=s.x*a,l.y=s.y*a,l.width=s.width*a,l.height=s.height*a,e||(l.y=n.view.height-(l.y+l.height)),l.ceil(),this.renderer.framebuffer.bind(o,l),this.renderer.projection.update(s,t,a,!o),e?this.renderer.mask.setMaskStack(r.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom(t),this.destinationFrame.copyFrom(s)}clear(e,t){const s=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,n=Et.shared.setValue(e||s);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&n.premultiply(n.alpha);const r=this.destinationFrame,o=this.current?this.current.baseTexture:this.renderer._view.screen,a=r.width!==o.width||r.height!==o.height;if(a){let{x:l,y:c,width:h,height:u}=this.viewportFrame;l=Math.round(l),c=Math.round(c),h=Math.round(h),u=Math.round(u),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(l,c,h,u)}this.renderer.framebuffer.clear(n.red,n.green,n.blue,n.alpha,t),a&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}Pb.extension={type:ke.RendererSystem,name:"renderTexture"};Xe.add(Pb);class UC{constructor(e,t){this.program=e,this.uniformData=t,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function $C(i,e){const t={},s=e.getProgramParameter(i,e.ACTIVE_ATTRIBUTES);for(let n=0;nc>h?1:-1);for(let c=0;c({data:r,offset:0,dataLen:0,dirty:0}));let t=0,s=0,n=0;for(let r=0;r1&&(t=Math.max(t,16)*o.data.size),o.dataLen=t,s%t!==0&&s<16){const a=s%t%16;s+=a,n+=a}s+t>16?(n=Math.ceil(n/16)*16,o.offset=n,n+=t,s=t):(o.offset=n,s+=t,n+=t)}return n=Math.ceil(n/16)*16,{uboElements:e,size:n}}function GC(i,e){const t=[];for(const s in i)e[s]&&t.push(e[s]);return t.sort((s,n)=>s.index-n.index),t}function jC(i,e){if(!i.autoManage)return{size:0,syncFunc:XC};const t=GC(i.uniforms,e),{uboElements:s,size:n}=YC(t),r=[` + `},kb={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:32,mat3:48,mat4:64};function jC(i){const e=i.map(r=>({data:r,offset:0,dataLen:0,dirty:0}));let t=0,s=0,n=0;for(let r=0;r1&&(t=Math.max(t,16)*o.data.size),o.dataLen=t,s%t!==0&&s<16){const a=s%t%16;s+=a,n+=a}s+t>16?(n=Math.ceil(n/16)*16,o.offset=n,n+=t,s=t):(o.offset=n,s+=t,n+=t)}return n=Math.ceil(n/16)*16,{uboElements:e,size:n}}function HC(i,e){const t=[];for(const s in i)e[s]&&t.push(e[s]);return t.sort((s,n)=>s.index-n.index),t}function WC(i,e){if(!i.autoManage)return{size:0,syncFunc:YC};const t=HC(i.uniforms,e),{uboElements:s,size:n}=jC(t),r=[` var v = null; var v2 = null; var cv = null; @@ -484,7 +484,7 @@ void main(void) var gl = renderer.gl var index = 0; var data = buffer.data; - `];for(let o=0;o1){const u=ub(a.data.type),d=Math.max(Rb[a.data.type]/16,1),f=u/d,p=(4-f%4)%4;r.push(` + `];for(let o=0;o1){const u=fb(a.data.type),d=Math.max(kb[a.data.type]/16,1),f=u/d,p=(4-f%4)%4;r.push(` cv = ud.${c}.value; v = uv.${c}; offset = ${a.offset/4}; @@ -500,7 +500,7 @@ void main(void) offset += ${p}; } - `)}else{const u=VC[a.data.type];r.push(` + `)}else{const u=GC[a.data.type];r.push(` cv = ud.${c}.value; v = uv.${c}; offset = ${a.offset/4}; @@ -508,7 +508,7 @@ void main(void) `)}}return r.push(` renderer.buffer.update(buffer); `),{size:n,syncFunc:new Function("ud","uv","renderer","syncData","buffer",r.join(` -`))}}let HC=0;const tc={textureCount:0,uboCount:0};class Pb{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=HC++}systemCheck(){if(!yC())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,t){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;const s=e.program,n=s.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==s&&(this.program=s,this.gl.useProgram(n.program)),t||(tc.textureCount=0,tc.uboCount=0,this.syncUniformGroup(e.uniformGroup,tc)),n}setUniforms(e){const t=this.shader.program,s=t.glPrograms[this.renderer.CONTEXT_UID];t.syncUniforms(s.uniformData,e,this.renderer)}syncUniformGroup(e,t){const s=this.getGlProgram();(!e.static||e.dirtyId!==s.uniformDirtyGroups[e.id])&&(s.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,s,t))}syncUniforms(e,t,s){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(t.uniformData,e.uniforms,this.renderer,s)}createSyncGroups(e){const t=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[t]||(this.cache[t]=fC(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[t],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,t){const s=this.getGlProgram();if(!e.static||e.dirtyId!==0||!s.uniformGroups[e.id]){e.dirtyId=0;const n=s.uniformGroups[e.id]||this.createSyncBufferGroup(e,s,t);e.buffer.update(),n(s.uniformData,e.uniforms,this.renderer,tc,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,s.uniformBufferBindings[t])}createSyncBufferGroup(e,t,s){const{gl:n}=this.renderer;this.renderer.buffer.bind(e.buffer);const r=this.gl.getUniformBlockIndex(t.program,s);t.uniformBufferBindings[s]=this.shader.uniformBindCount,n.uniformBlockBinding(t.program,r,this.shader.uniformBindCount),this.shader.uniformBindCount++;const o=this.getSignature(e,this.shader.program.uniformData,"ubo");let a=this._uboCache[o];if(a||(a=this._uboCache[o]=jC(e,this.shader.program.uniformData)),e.autoManage){const l=new Float32Array(a.size/4);e.buffer.update(l)}return t.uniformGroups[e.id]=a.syncFunc,t.uniformGroups[e.id]}getSignature(e,t,s){const n=e.uniforms,r=[`${s}-`];for(const o in n)r.push(o),t[o]&&r.push(t[o].type);return r.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){const t=this.gl,s=e.program,n=$C(t,s);return s.glPrograms[this.renderer.CONTEXT_UID]=n,n}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}Pb.extension={type:ke.RendererSystem,name:"shader"};Xe.add(Pb);class rh{constructor(e){this.renderer=e}run(e){const{renderer:t}=this;t.runners.init.emit(t.options),e.hello&&console.log(`PixiJS 7.4.3 - ${t.rendererLogId} - https://pixijs.com`),t.resize(t.screen.width,t.screen.height)}destroy(){}}rh.defaultOptions={hello:!1},rh.extension={type:[ke.RendererSystem,ke.CanvasRendererSystem],name:"startup"};Xe.add(rh);function WC(i,e=[]){return e[He.NORMAL]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.ADD]=[i.ONE,i.ONE],e[He.MULTIPLY]=[i.DST_COLOR,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SCREEN]=[i.ONE,i.ONE_MINUS_SRC_COLOR,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.OVERLAY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.DARKEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.LIGHTEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.COLOR_DODGE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.COLOR_BURN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.HARD_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SOFT_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.DIFFERENCE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.EXCLUSION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.HUE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SATURATION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.COLOR]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.LUMINOSITY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.NONE]=[0,0],e[He.NORMAL_NPM]=[i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.ADD_NPM]=[i.SRC_ALPHA,i.ONE,i.ONE,i.ONE],e[He.SCREEN_NPM]=[i.SRC_ALPHA,i.ONE_MINUS_SRC_COLOR,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SRC_IN]=[i.DST_ALPHA,i.ZERO],e[He.SRC_OUT]=[i.ONE_MINUS_DST_ALPHA,i.ZERO],e[He.SRC_ATOP]=[i.DST_ALPHA,i.ONE_MINUS_SRC_ALPHA],e[He.DST_OVER]=[i.ONE_MINUS_DST_ALPHA,i.ONE],e[He.DST_IN]=[i.ZERO,i.SRC_ALPHA],e[He.DST_OUT]=[i.ZERO,i.ONE_MINUS_SRC_ALPHA],e[He.DST_ATOP]=[i.ONE_MINUS_DST_ALPHA,i.SRC_ALPHA],e[He.XOR]=[i.ONE_MINUS_DST_ALPHA,i.ONE_MINUS_SRC_ALPHA],e[He.SUBTRACT]=[i.ONE,i.ONE,i.ONE,i.ONE,i.FUNC_REVERSE_SUBTRACT,i.FUNC_ADD],e}const zC=0,qC=1,KC=2,ZC=3,JC=4,QC=5,kb=class Hf{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=He.NONE,this._blendEq=!1,this.map=[],this.map[zC]=this.setBlend,this.map[qC]=this.setOffset,this.map[KC]=this.setCullFace,this.map[ZC]=this.setDepthTest,this.map[JC]=this.setFrontFace,this.map[QC]=this.setDepthMask,this.checks=[],this.defaultState=new un,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=WC(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,s=0;for(;t;)t&1&&this.map[s].call(this,!!(e.data&1<>1,s++;this.stateId=e.data}for(let t=0;te.systems[n]),s=[...t,...Object.keys(e.systems).filter(n=>!t.includes(n))];for(const n of s)this.addSystem(e.systems[n],n)}addRunners(...e){e.forEach(t=>{this.runners[t]=new Ri(t)})}addSystem(e,t){const s=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=s,this._systemsHash[t]=s;for(const n in this.runners)this.runners[n].add(s);return this}emitWithCustomOptions(e,t){const s=Object.keys(this._systemsHash);e.items.forEach(n=>{const r=s.find(o=>this._systemsHash[o]===n);n[e.name](t[r])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const Va=class Ic{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=Ic.defaultMaxIdle,this.checkCountMax=Ic.defaultCheckCountMax,this.mode=Ic.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==op.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let s=!1;for(let n=0;nthis.maxIdle&&(e.destroyTexture(r,!0),t[n]=null,s=!0)}if(s){let n=0;for(let r=0;r=0;n--)this.unload(e.children[n])}destroy(){this.renderer=null}};Va.defaultMode=op.AUTO,Va.defaultMaxIdle=3600,Va.defaultCheckCountMax=600,Va.extension={type:ke.RendererSystem,name:"textureGC"};let jr=Va;Xe.add(jr);class Gd{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=$e.UNSIGNED_BYTE,this.internalFormat=_e.RGBA,this.samplerType=0}}function sA(i){let e;return"WebGL2RenderingContext"in globalThis&&i instanceof globalThis.WebGL2RenderingContext?e={[i.RGB]:Ne.FLOAT,[i.RGBA]:Ne.FLOAT,[i.ALPHA]:Ne.FLOAT,[i.LUMINANCE]:Ne.FLOAT,[i.LUMINANCE_ALPHA]:Ne.FLOAT,[i.R8]:Ne.FLOAT,[i.R8_SNORM]:Ne.FLOAT,[i.RG8]:Ne.FLOAT,[i.RG8_SNORM]:Ne.FLOAT,[i.RGB8]:Ne.FLOAT,[i.RGB8_SNORM]:Ne.FLOAT,[i.RGB565]:Ne.FLOAT,[i.RGBA4]:Ne.FLOAT,[i.RGB5_A1]:Ne.FLOAT,[i.RGBA8]:Ne.FLOAT,[i.RGBA8_SNORM]:Ne.FLOAT,[i.RGB10_A2]:Ne.FLOAT,[i.RGB10_A2UI]:Ne.FLOAT,[i.SRGB8]:Ne.FLOAT,[i.SRGB8_ALPHA8]:Ne.FLOAT,[i.R16F]:Ne.FLOAT,[i.RG16F]:Ne.FLOAT,[i.RGB16F]:Ne.FLOAT,[i.RGBA16F]:Ne.FLOAT,[i.R32F]:Ne.FLOAT,[i.RG32F]:Ne.FLOAT,[i.RGB32F]:Ne.FLOAT,[i.RGBA32F]:Ne.FLOAT,[i.R11F_G11F_B10F]:Ne.FLOAT,[i.RGB9_E5]:Ne.FLOAT,[i.R8I]:Ne.INT,[i.R8UI]:Ne.UINT,[i.R16I]:Ne.INT,[i.R16UI]:Ne.UINT,[i.R32I]:Ne.INT,[i.R32UI]:Ne.UINT,[i.RG8I]:Ne.INT,[i.RG8UI]:Ne.UINT,[i.RG16I]:Ne.INT,[i.RG16UI]:Ne.UINT,[i.RG32I]:Ne.INT,[i.RG32UI]:Ne.UINT,[i.RGB8I]:Ne.INT,[i.RGB8UI]:Ne.UINT,[i.RGB16I]:Ne.INT,[i.RGB16UI]:Ne.UINT,[i.RGB32I]:Ne.INT,[i.RGB32UI]:Ne.UINT,[i.RGBA8I]:Ne.INT,[i.RGBA8UI]:Ne.UINT,[i.RGBA16I]:Ne.INT,[i.RGBA16UI]:Ne.UINT,[i.RGBA32I]:Ne.INT,[i.RGBA32UI]:Ne.UINT,[i.DEPTH_COMPONENT16]:Ne.FLOAT,[i.DEPTH_COMPONENT24]:Ne.FLOAT,[i.DEPTH_COMPONENT32F]:Ne.FLOAT,[i.DEPTH_STENCIL]:Ne.FLOAT,[i.DEPTH24_STENCIL8]:Ne.FLOAT,[i.DEPTH32F_STENCIL8]:Ne.FLOAT}:e={[i.RGB]:Ne.FLOAT,[i.RGBA]:Ne.FLOAT,[i.ALPHA]:Ne.FLOAT,[i.LUMINANCE]:Ne.FLOAT,[i.LUMINANCE_ALPHA]:Ne.FLOAT,[i.DEPTH_STENCIL]:Ne.FLOAT},e}function iA(i){let e;return"WebGL2RenderingContext"in globalThis&&i instanceof globalThis.WebGL2RenderingContext?e={[$e.UNSIGNED_BYTE]:{[_e.RGBA]:i.RGBA8,[_e.RGB]:i.RGB8,[_e.RG]:i.RG8,[_e.RED]:i.R8,[_e.RGBA_INTEGER]:i.RGBA8UI,[_e.RGB_INTEGER]:i.RGB8UI,[_e.RG_INTEGER]:i.RG8UI,[_e.RED_INTEGER]:i.R8UI,[_e.ALPHA]:i.ALPHA,[_e.LUMINANCE]:i.LUMINANCE,[_e.LUMINANCE_ALPHA]:i.LUMINANCE_ALPHA},[$e.BYTE]:{[_e.RGBA]:i.RGBA8_SNORM,[_e.RGB]:i.RGB8_SNORM,[_e.RG]:i.RG8_SNORM,[_e.RED]:i.R8_SNORM,[_e.RGBA_INTEGER]:i.RGBA8I,[_e.RGB_INTEGER]:i.RGB8I,[_e.RG_INTEGER]:i.RG8I,[_e.RED_INTEGER]:i.R8I},[$e.UNSIGNED_SHORT]:{[_e.RGBA_INTEGER]:i.RGBA16UI,[_e.RGB_INTEGER]:i.RGB16UI,[_e.RG_INTEGER]:i.RG16UI,[_e.RED_INTEGER]:i.R16UI,[_e.DEPTH_COMPONENT]:i.DEPTH_COMPONENT16},[$e.SHORT]:{[_e.RGBA_INTEGER]:i.RGBA16I,[_e.RGB_INTEGER]:i.RGB16I,[_e.RG_INTEGER]:i.RG16I,[_e.RED_INTEGER]:i.R16I},[$e.UNSIGNED_INT]:{[_e.RGBA_INTEGER]:i.RGBA32UI,[_e.RGB_INTEGER]:i.RGB32UI,[_e.RG_INTEGER]:i.RG32UI,[_e.RED_INTEGER]:i.R32UI,[_e.DEPTH_COMPONENT]:i.DEPTH_COMPONENT24},[$e.INT]:{[_e.RGBA_INTEGER]:i.RGBA32I,[_e.RGB_INTEGER]:i.RGB32I,[_e.RG_INTEGER]:i.RG32I,[_e.RED_INTEGER]:i.R32I},[$e.FLOAT]:{[_e.RGBA]:i.RGBA32F,[_e.RGB]:i.RGB32F,[_e.RG]:i.RG32F,[_e.RED]:i.R32F,[_e.DEPTH_COMPONENT]:i.DEPTH_COMPONENT32F},[$e.HALF_FLOAT]:{[_e.RGBA]:i.RGBA16F,[_e.RGB]:i.RGB16F,[_e.RG]:i.RG16F,[_e.RED]:i.R16F},[$e.UNSIGNED_SHORT_5_6_5]:{[_e.RGB]:i.RGB565},[$e.UNSIGNED_SHORT_4_4_4_4]:{[_e.RGBA]:i.RGBA4},[$e.UNSIGNED_SHORT_5_5_5_1]:{[_e.RGBA]:i.RGB5_A1},[$e.UNSIGNED_INT_2_10_10_10_REV]:{[_e.RGBA]:i.RGB10_A2,[_e.RGBA_INTEGER]:i.RGB10_A2UI},[$e.UNSIGNED_INT_10F_11F_11F_REV]:{[_e.RGB]:i.R11F_G11F_B10F},[$e.UNSIGNED_INT_5_9_9_9_REV]:{[_e.RGB]:i.RGB9_E5},[$e.UNSIGNED_INT_24_8]:{[_e.DEPTH_STENCIL]:i.DEPTH24_STENCIL8},[$e.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[_e.DEPTH_STENCIL]:i.DEPTH32F_STENCIL8}}:e={[$e.UNSIGNED_BYTE]:{[_e.RGBA]:i.RGBA,[_e.RGB]:i.RGB,[_e.ALPHA]:i.ALPHA,[_e.LUMINANCE]:i.LUMINANCE,[_e.LUMINANCE_ALPHA]:i.LUMINANCE_ALPHA},[$e.UNSIGNED_SHORT_5_6_5]:{[_e.RGB]:i.RGB},[$e.UNSIGNED_SHORT_4_4_4_4]:{[_e.RGBA]:i.RGBA},[$e.UNSIGNED_SHORT_5_5_5_1]:{[_e.RGBA]:i.RGBA}},e}class Fb{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new Qe,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=iA(e),this.samplerTypes=sA(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let n=0;n=0;--r){const o=t[r];o&&o._glTextures[n].samplerType!==Ne.FLOAT&&this.renderer.texture.unbind(o)}}initTexture(e){const t=new Gd(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){var s;t.internalFormat=((s=this.internalFormats[e.type])==null?void 0:s[e.format])??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??Ne.FLOAT,this.webGLVersion===2&&e.type===$e.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){var n;const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const s=this.renderer;if(this.initTextureType(e,t),(n=e.resource)==null?void 0:n.upload(s,e,t))t.samplerType!==Ne.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,o=e.realHeight,a=s.gl;(t.width!==r||t.height!==o||t.dirtyId<0)&&(t.width=r,t.height=o,a.texImage2D(e.target,0,t.internalFormat,r,o,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:s}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),s.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const n=this.managedTextures.indexOf(e);n!==-1&&Ko(this.managedTextures,n,1)}}updateTextureStyle(e){var s;const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===gi.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=Ii.CLAMP:t.wrapMode=e.wrapMode,(s=e.resource)!=null&&s.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const s=this.gl;if(t.mipmap&&e.mipmap!==gi.ON_MANUAL&&s.generateMipmap(e.target),s.texParameteri(e.target,s.TEXTURE_WRAP_S,t.wrapMode),s.texParameteri(e.target,s.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){s.texParameteri(e.target,s.TEXTURE_MIN_FILTER,e.scaleMode===Ci.LINEAR?s.LINEAR_MIPMAP_LINEAR:s.NEAREST_MIPMAP_NEAREST);const n=this.renderer.context.extensions.anisotropicFiltering;if(n&&e.anisotropicLevel>0&&e.scaleMode===Ci.LINEAR){const r=Math.min(e.anisotropicLevel,s.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));s.texParameterf(e.target,n.TEXTURE_MAX_ANISOTROPY_EXT,r)}}else s.texParameteri(e.target,s.TEXTURE_MIN_FILTER,e.scaleMode===Ci.LINEAR?s.LINEAR:s.NEAREST);s.texParameteri(e.target,s.TEXTURE_MAG_FILTER,e.scaleMode===Ci.LINEAR?s.LINEAR:s.NEAREST)}destroy(){this.renderer=null}}Fb.extension={type:ke.RendererSystem,name:"texture"};Xe.add(Fb);class Ob{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:s}=this,n=e._glTransformFeedbacks[s]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:s,renderer:n}=this;t&&n.shader.bind(t),s.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:s,CONTEXT_UID:n}=this,r=t.createTransformFeedback();e._glTransformFeedbacks[n]=r,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r);for(let o=0;o(i[i.INTERACTION=50]="INTERACTION",i[i.HIGH=25]="HIGH",i[i.NORMAL=0]="NORMAL",i[i.LOW=-25]="LOW",i[i.UTILITY=-50]="UTILITY",i))(ho||{});class jd{constructor(e,t=null,s=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=s,this.once=n}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const Lb=class Zs{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new jd(null,null,1/0),this.deltaMS=1/Zs.targetFPMS,this.elapsedMS=1/Zs.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,s=ho.NORMAL){return this._addListener(new jd(e,t,s))}addOnce(e,t,s=ho.NORMAL){return this._addListener(new jd(e,t,s,!0))}_addListener(e){let t=this._head.next,s=this._head;if(!t)e.connect(s);else{for(;t;){if(e.priority>t.priority){e.connect(s);break}s=t,t=t.next}e.previous||e.connect(s)}return this._startIfPossible(),this}remove(e,t){let s=this._head.next;for(;s;)s.match(e,t)?s=s.destroy():s=s.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const r=e-this._lastFrame|0;if(r{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?Gs.shared:new Gs,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}Bb.extension=ke.Application;Xe.add(Bb);const Nb=[];Xe.handleByList(ke.Renderer,Nb);function nA(i){for(const e of Nb)if(e.test(i))return new e(i);throw new Error("Unable to auto-detect a suitable renderer.")}var rA=`attribute vec2 aVertexPosition; +`))}}let zC=0;const tc={textureCount:0,uboCount:0};class Fb{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=zC++}systemCheck(){if(!bC())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,t){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;const s=e.program,n=s.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==s&&(this.program=s,this.gl.useProgram(n.program)),t||(tc.textureCount=0,tc.uboCount=0,this.syncUniformGroup(e.uniformGroup,tc)),n}setUniforms(e){const t=this.shader.program,s=t.glPrograms[this.renderer.CONTEXT_UID];t.syncUniforms(s.uniformData,e,this.renderer)}syncUniformGroup(e,t){const s=this.getGlProgram();(!e.static||e.dirtyId!==s.uniformDirtyGroups[e.id])&&(s.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,s,t))}syncUniforms(e,t,s){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(t.uniformData,e.uniforms,this.renderer,s)}createSyncGroups(e){const t=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[t]||(this.cache[t]=pC(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[t],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,t){const s=this.getGlProgram();if(!e.static||e.dirtyId!==0||!s.uniformGroups[e.id]){e.dirtyId=0;const n=s.uniformGroups[e.id]||this.createSyncBufferGroup(e,s,t);e.buffer.update(),n(s.uniformData,e.uniforms,this.renderer,tc,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,s.uniformBufferBindings[t])}createSyncBufferGroup(e,t,s){const{gl:n}=this.renderer;this.renderer.buffer.bind(e.buffer);const r=this.gl.getUniformBlockIndex(t.program,s);t.uniformBufferBindings[s]=this.shader.uniformBindCount,n.uniformBlockBinding(t.program,r,this.shader.uniformBindCount),this.shader.uniformBindCount++;const o=this.getSignature(e,this.shader.program.uniformData,"ubo");let a=this._uboCache[o];if(a||(a=this._uboCache[o]=WC(e,this.shader.program.uniformData)),e.autoManage){const l=new Float32Array(a.size/4);e.buffer.update(l)}return t.uniformGroups[e.id]=a.syncFunc,t.uniformGroups[e.id]}getSignature(e,t,s){const n=e.uniforms,r=[`${s}-`];for(const o in n)r.push(o),t[o]&&r.push(t[o].type);return r.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){const t=this.gl,s=e.program,n=VC(t,s);return s.glPrograms[this.renderer.CONTEXT_UID]=n,n}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}Fb.extension={type:ke.RendererSystem,name:"shader"};Xe.add(Fb);class rh{constructor(e){this.renderer=e}run(e){const{renderer:t}=this;t.runners.init.emit(t.options),e.hello&&console.log(`PixiJS 7.4.3 - ${t.rendererLogId} - https://pixijs.com`),t.resize(t.screen.width,t.screen.height)}destroy(){}}rh.defaultOptions={hello:!1},rh.extension={type:[ke.RendererSystem,ke.CanvasRendererSystem],name:"startup"};Xe.add(rh);function qC(i,e=[]){return e[He.NORMAL]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.ADD]=[i.ONE,i.ONE],e[He.MULTIPLY]=[i.DST_COLOR,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SCREEN]=[i.ONE,i.ONE_MINUS_SRC_COLOR,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.OVERLAY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.DARKEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.LIGHTEN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.COLOR_DODGE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.COLOR_BURN]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.HARD_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SOFT_LIGHT]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.DIFFERENCE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.EXCLUSION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.HUE]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SATURATION]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.COLOR]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.LUMINOSITY]=[i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.NONE]=[0,0],e[He.NORMAL_NPM]=[i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.ADD_NPM]=[i.SRC_ALPHA,i.ONE,i.ONE,i.ONE],e[He.SCREEN_NPM]=[i.SRC_ALPHA,i.ONE_MINUS_SRC_COLOR,i.ONE,i.ONE_MINUS_SRC_ALPHA],e[He.SRC_IN]=[i.DST_ALPHA,i.ZERO],e[He.SRC_OUT]=[i.ONE_MINUS_DST_ALPHA,i.ZERO],e[He.SRC_ATOP]=[i.DST_ALPHA,i.ONE_MINUS_SRC_ALPHA],e[He.DST_OVER]=[i.ONE_MINUS_DST_ALPHA,i.ONE],e[He.DST_IN]=[i.ZERO,i.SRC_ALPHA],e[He.DST_OUT]=[i.ZERO,i.ONE_MINUS_SRC_ALPHA],e[He.DST_ATOP]=[i.ONE_MINUS_DST_ALPHA,i.SRC_ALPHA],e[He.XOR]=[i.ONE_MINUS_DST_ALPHA,i.ONE_MINUS_SRC_ALPHA],e[He.SUBTRACT]=[i.ONE,i.ONE,i.ONE,i.ONE,i.FUNC_REVERSE_SUBTRACT,i.FUNC_ADD],e}const KC=0,ZC=1,JC=2,QC=3,eA=4,tA=5,Ob=class Wf{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=He.NONE,this._blendEq=!1,this.map=[],this.map[KC]=this.setBlend,this.map[ZC]=this.setOffset,this.map[JC]=this.setCullFace,this.map[QC]=this.setDepthTest,this.map[eA]=this.setFrontFace,this.map[tA]=this.setDepthMask,this.checks=[],this.defaultState=new un,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=qC(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let t=this.stateId^e.data,s=0;for(;t;)t&1&&this.map[s].call(this,!!(e.data&1<>1,s++;this.stateId=e.data}for(let t=0;te.systems[n]),s=[...t,...Object.keys(e.systems).filter(n=>!t.includes(n))];for(const n of s)this.addSystem(e.systems[n],n)}addRunners(...e){e.forEach(t=>{this.runners[t]=new Ri(t)})}addSystem(e,t){const s=new e(this);if(this[t])throw new Error(`Whoops! The name "${t}" is already in use`);this[t]=s,this._systemsHash[t]=s;for(const n in this.runners)this.runners[n].add(s);return this}emitWithCustomOptions(e,t){const s=Object.keys(this._systemsHash);e.items.forEach(n=>{const r=s.find(o=>this._systemsHash[o]===n);n[e.name](t[r])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}}const Va=class Ic{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=Ic.defaultMaxIdle,this.checkCountMax=Ic.defaultCheckCountMax,this.mode=Ic.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==ap.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const e=this.renderer.texture,t=e.managedTextures;let s=!1;for(let n=0;nthis.maxIdle&&(e.destroyTexture(r,!0),t[n]=null,s=!0)}if(s){let n=0;for(let r=0;r=0;n--)this.unload(e.children[n])}destroy(){this.renderer=null}};Va.defaultMode=ap.AUTO,Va.defaultMaxIdle=3600,Va.defaultCheckCountMax=600,Va.extension={type:ke.RendererSystem,name:"textureGC"};let jr=Va;Xe.add(jr);class Gd{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=$e.UNSIGNED_BYTE,this.internalFormat=_e.RGBA,this.samplerType=0}}function nA(i){let e;return"WebGL2RenderingContext"in globalThis&&i instanceof globalThis.WebGL2RenderingContext?e={[i.RGB]:Ne.FLOAT,[i.RGBA]:Ne.FLOAT,[i.ALPHA]:Ne.FLOAT,[i.LUMINANCE]:Ne.FLOAT,[i.LUMINANCE_ALPHA]:Ne.FLOAT,[i.R8]:Ne.FLOAT,[i.R8_SNORM]:Ne.FLOAT,[i.RG8]:Ne.FLOAT,[i.RG8_SNORM]:Ne.FLOAT,[i.RGB8]:Ne.FLOAT,[i.RGB8_SNORM]:Ne.FLOAT,[i.RGB565]:Ne.FLOAT,[i.RGBA4]:Ne.FLOAT,[i.RGB5_A1]:Ne.FLOAT,[i.RGBA8]:Ne.FLOAT,[i.RGBA8_SNORM]:Ne.FLOAT,[i.RGB10_A2]:Ne.FLOAT,[i.RGB10_A2UI]:Ne.FLOAT,[i.SRGB8]:Ne.FLOAT,[i.SRGB8_ALPHA8]:Ne.FLOAT,[i.R16F]:Ne.FLOAT,[i.RG16F]:Ne.FLOAT,[i.RGB16F]:Ne.FLOAT,[i.RGBA16F]:Ne.FLOAT,[i.R32F]:Ne.FLOAT,[i.RG32F]:Ne.FLOAT,[i.RGB32F]:Ne.FLOAT,[i.RGBA32F]:Ne.FLOAT,[i.R11F_G11F_B10F]:Ne.FLOAT,[i.RGB9_E5]:Ne.FLOAT,[i.R8I]:Ne.INT,[i.R8UI]:Ne.UINT,[i.R16I]:Ne.INT,[i.R16UI]:Ne.UINT,[i.R32I]:Ne.INT,[i.R32UI]:Ne.UINT,[i.RG8I]:Ne.INT,[i.RG8UI]:Ne.UINT,[i.RG16I]:Ne.INT,[i.RG16UI]:Ne.UINT,[i.RG32I]:Ne.INT,[i.RG32UI]:Ne.UINT,[i.RGB8I]:Ne.INT,[i.RGB8UI]:Ne.UINT,[i.RGB16I]:Ne.INT,[i.RGB16UI]:Ne.UINT,[i.RGB32I]:Ne.INT,[i.RGB32UI]:Ne.UINT,[i.RGBA8I]:Ne.INT,[i.RGBA8UI]:Ne.UINT,[i.RGBA16I]:Ne.INT,[i.RGBA16UI]:Ne.UINT,[i.RGBA32I]:Ne.INT,[i.RGBA32UI]:Ne.UINT,[i.DEPTH_COMPONENT16]:Ne.FLOAT,[i.DEPTH_COMPONENT24]:Ne.FLOAT,[i.DEPTH_COMPONENT32F]:Ne.FLOAT,[i.DEPTH_STENCIL]:Ne.FLOAT,[i.DEPTH24_STENCIL8]:Ne.FLOAT,[i.DEPTH32F_STENCIL8]:Ne.FLOAT}:e={[i.RGB]:Ne.FLOAT,[i.RGBA]:Ne.FLOAT,[i.ALPHA]:Ne.FLOAT,[i.LUMINANCE]:Ne.FLOAT,[i.LUMINANCE_ALPHA]:Ne.FLOAT,[i.DEPTH_STENCIL]:Ne.FLOAT},e}function rA(i){let e;return"WebGL2RenderingContext"in globalThis&&i instanceof globalThis.WebGL2RenderingContext?e={[$e.UNSIGNED_BYTE]:{[_e.RGBA]:i.RGBA8,[_e.RGB]:i.RGB8,[_e.RG]:i.RG8,[_e.RED]:i.R8,[_e.RGBA_INTEGER]:i.RGBA8UI,[_e.RGB_INTEGER]:i.RGB8UI,[_e.RG_INTEGER]:i.RG8UI,[_e.RED_INTEGER]:i.R8UI,[_e.ALPHA]:i.ALPHA,[_e.LUMINANCE]:i.LUMINANCE,[_e.LUMINANCE_ALPHA]:i.LUMINANCE_ALPHA},[$e.BYTE]:{[_e.RGBA]:i.RGBA8_SNORM,[_e.RGB]:i.RGB8_SNORM,[_e.RG]:i.RG8_SNORM,[_e.RED]:i.R8_SNORM,[_e.RGBA_INTEGER]:i.RGBA8I,[_e.RGB_INTEGER]:i.RGB8I,[_e.RG_INTEGER]:i.RG8I,[_e.RED_INTEGER]:i.R8I},[$e.UNSIGNED_SHORT]:{[_e.RGBA_INTEGER]:i.RGBA16UI,[_e.RGB_INTEGER]:i.RGB16UI,[_e.RG_INTEGER]:i.RG16UI,[_e.RED_INTEGER]:i.R16UI,[_e.DEPTH_COMPONENT]:i.DEPTH_COMPONENT16},[$e.SHORT]:{[_e.RGBA_INTEGER]:i.RGBA16I,[_e.RGB_INTEGER]:i.RGB16I,[_e.RG_INTEGER]:i.RG16I,[_e.RED_INTEGER]:i.R16I},[$e.UNSIGNED_INT]:{[_e.RGBA_INTEGER]:i.RGBA32UI,[_e.RGB_INTEGER]:i.RGB32UI,[_e.RG_INTEGER]:i.RG32UI,[_e.RED_INTEGER]:i.R32UI,[_e.DEPTH_COMPONENT]:i.DEPTH_COMPONENT24},[$e.INT]:{[_e.RGBA_INTEGER]:i.RGBA32I,[_e.RGB_INTEGER]:i.RGB32I,[_e.RG_INTEGER]:i.RG32I,[_e.RED_INTEGER]:i.R32I},[$e.FLOAT]:{[_e.RGBA]:i.RGBA32F,[_e.RGB]:i.RGB32F,[_e.RG]:i.RG32F,[_e.RED]:i.R32F,[_e.DEPTH_COMPONENT]:i.DEPTH_COMPONENT32F},[$e.HALF_FLOAT]:{[_e.RGBA]:i.RGBA16F,[_e.RGB]:i.RGB16F,[_e.RG]:i.RG16F,[_e.RED]:i.R16F},[$e.UNSIGNED_SHORT_5_6_5]:{[_e.RGB]:i.RGB565},[$e.UNSIGNED_SHORT_4_4_4_4]:{[_e.RGBA]:i.RGBA4},[$e.UNSIGNED_SHORT_5_5_5_1]:{[_e.RGBA]:i.RGB5_A1},[$e.UNSIGNED_INT_2_10_10_10_REV]:{[_e.RGBA]:i.RGB10_A2,[_e.RGBA_INTEGER]:i.RGB10_A2UI},[$e.UNSIGNED_INT_10F_11F_11F_REV]:{[_e.RGB]:i.R11F_G11F_B10F},[$e.UNSIGNED_INT_5_9_9_9_REV]:{[_e.RGB]:i.RGB9_E5},[$e.UNSIGNED_INT_24_8]:{[_e.DEPTH_STENCIL]:i.DEPTH24_STENCIL8},[$e.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[_e.DEPTH_STENCIL]:i.DEPTH32F_STENCIL8}}:e={[$e.UNSIGNED_BYTE]:{[_e.RGBA]:i.RGBA,[_e.RGB]:i.RGB,[_e.ALPHA]:i.ALPHA,[_e.LUMINANCE]:i.LUMINANCE,[_e.LUMINANCE_ALPHA]:i.LUMINANCE_ALPHA},[$e.UNSIGNED_SHORT_5_6_5]:{[_e.RGB]:i.RGB},[$e.UNSIGNED_SHORT_4_4_4_4]:{[_e.RGBA]:i.RGBA},[$e.UNSIGNED_SHORT_5_5_5_1]:{[_e.RGBA]:i.RGBA}},e}class Lb{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new Qe,this.hasIntegerTextures=!1}contextChange(){const e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=rA(e),this.samplerTypes=nA(e);const t=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=t;for(let n=0;n=0;--r){const o=t[r];o&&o._glTextures[n].samplerType!==Ne.FLOAT&&this.renderer.texture.unbind(o)}}initTexture(e){const t=new Gd(this.gl.createTexture());return t.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=t,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),t}initTextureType(e,t){var s;t.internalFormat=((s=this.internalFormats[e.type])==null?void 0:s[e.format])??e.format,t.samplerType=this.samplerTypes[t.internalFormat]??Ne.FLOAT,this.webGLVersion===2&&e.type===$e.HALF_FLOAT?t.type=this.gl.HALF_FLOAT:t.type=e.type}updateTexture(e){var n;const t=e._glTextures[this.CONTEXT_UID];if(!t)return;const s=this.renderer;if(this.initTextureType(e,t),(n=e.resource)==null?void 0:n.upload(s,e,t))t.samplerType!==Ne.FLOAT&&(this.hasIntegerTextures=!0);else{const r=e.realWidth,o=e.realHeight,a=s.gl;(t.width!==r||t.height!==o||t.dirtyId<0)&&(t.width=r,t.height=o,a.texImage2D(e.target,0,t.internalFormat,r,o,0,e.format,t.type,null))}e.dirtyStyleId!==t.dirtyStyleId&&this.updateTextureStyle(e),t.dirtyId=e.dirtyId}destroyTexture(e,t){const{gl:s}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),s.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!t)){const n=this.managedTextures.indexOf(e);n!==-1&&Ko(this.managedTextures,n,1)}}updateTextureStyle(e){var s;const t=e._glTextures[this.CONTEXT_UID];t&&((e.mipmap===gi.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?t.mipmap=!1:t.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?t.wrapMode=Ii.CLAMP:t.wrapMode=e.wrapMode,(s=e.resource)!=null&&s.style(this.renderer,e,t)||this.setStyle(e,t),t.dirtyStyleId=e.dirtyStyleId)}setStyle(e,t){const s=this.gl;if(t.mipmap&&e.mipmap!==gi.ON_MANUAL&&s.generateMipmap(e.target),s.texParameteri(e.target,s.TEXTURE_WRAP_S,t.wrapMode),s.texParameteri(e.target,s.TEXTURE_WRAP_T,t.wrapMode),t.mipmap){s.texParameteri(e.target,s.TEXTURE_MIN_FILTER,e.scaleMode===Ci.LINEAR?s.LINEAR_MIPMAP_LINEAR:s.NEAREST_MIPMAP_NEAREST);const n=this.renderer.context.extensions.anisotropicFiltering;if(n&&e.anisotropicLevel>0&&e.scaleMode===Ci.LINEAR){const r=Math.min(e.anisotropicLevel,s.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT));s.texParameterf(e.target,n.TEXTURE_MAX_ANISOTROPY_EXT,r)}}else s.texParameteri(e.target,s.TEXTURE_MIN_FILTER,e.scaleMode===Ci.LINEAR?s.LINEAR:s.NEAREST);s.texParameteri(e.target,s.TEXTURE_MAG_FILTER,e.scaleMode===Ci.LINEAR?s.LINEAR:s.NEAREST)}destroy(){this.renderer=null}}Lb.extension={type:ke.RendererSystem,name:"texture"};Xe.add(Lb);class Bb{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:s}=this,n=e._glTransformFeedbacks[s]||this.createGLTransformFeedback(e);t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,n)}unbind(){const{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,t){const{gl:s,renderer:n}=this;t&&n.shader.bind(t),s.beginTransformFeedback(e)}endTransformFeedback(){const{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){const{gl:t,renderer:s,CONTEXT_UID:n}=this,r=t.createTransformFeedback();e._glTransformFeedbacks[n]=r,t.bindTransformFeedback(t.TRANSFORM_FEEDBACK,r);for(let o=0;o(i[i.INTERACTION=50]="INTERACTION",i[i.HIGH=25]="HIGH",i[i.NORMAL=0]="NORMAL",i[i.LOW=-25]="LOW",i[i.UTILITY=-50]="UTILITY",i))(ho||{});class jd{constructor(e,t=null,s=0,n=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=t,this.priority=s,this.once=n}match(e,t=null){return this.fn===e&&this.context===t}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));const t=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),t}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);const t=this.next;return this.next=e?null:t,this.previous=null,t}}const Nb=class Zs{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new jd(null,null,1/0),this.deltaMS=1/Zs.targetFPMS,this.elapsedMS=1/Zs.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,t,s=ho.NORMAL){return this._addListener(new jd(e,t,s))}addOnce(e,t,s=ho.NORMAL){return this._addListener(new jd(e,t,s,!0))}_addListener(e){let t=this._head.next,s=this._head;if(!t)e.connect(s);else{for(;t;){if(e.priority>t.priority){e.connect(s);break}s=t,t=t.next}e.previous||e.connect(s)}return this._startIfPossible(),this}remove(e,t){let s=this._head.next;for(;s;)s.match(e,t)?s=s.destroy():s=s.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,t=this._head;for(;t=t.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let t;if(e>this.lastTime){if(t=this.elapsedMS=e-this.lastTime,t>this._maxElapsedMS&&(t=this._maxElapsedMS),t*=this.speed,this._minElapsedMS){const r=e-this._lastFrame|0;if(r{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?Gs.shared:new Gs,e.autoStart&&this.start()}static destroy(){if(this._ticker){const e=this._ticker;this.ticker=null,e.destroy()}}}Db.extension=ke.Application;Xe.add(Db);const Ub=[];Xe.handleByList(ke.Renderer,Ub);function oA(i){for(const e of Ub)if(e.test(i))return new e(i);throw new Error("Unable to auto-detect a suitable renderer.")}var aA=`attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; uniform mat3 projectionMatrix; @@ -519,7 +519,7 @@ void main(void) { gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0); vTextureCoord = aTextureCoord; -}`,oA=`attribute vec2 aVertexPosition; +}`,lA=`attribute vec2 aVertexPosition; uniform mat3 projectionMatrix; @@ -545,7 +545,7 @@ void main(void) gl_Position = filterVertexPosition(); vTextureCoord = filterTextureCoord(); } -`;const aA=rA,Db=oA;class Ub{constructor(e){this.renderer=e}contextChange(e){let t;if(this.renderer.context.webGLVersion===1){const s=e.getParameter(e.FRAMEBUFFER_BINDING);e.bindFramebuffer(e.FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.FRAMEBUFFER,s)}else{const s=e.getParameter(e.DRAW_FRAMEBUFFER_BINDING);e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),t=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,s)}t>=ls.HIGH?this.multisample=ls.HIGH:t>=ls.MEDIUM?this.multisample=ls.MEDIUM:t>=ls.LOW?this.multisample=ls.LOW:this.multisample=ls.NONE}destroy(){}}Ub.extension={type:ke.RendererSystem,name:"_multisample"};Xe.add(Ub);class lA{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class $b{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:s}=this,n=e._glBuffers[s]||this.createGLBuffer(e);t.bindBuffer(e.type,n.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:s,CONTEXT_UID:n}=this;if(this.boundBufferBases[t]!==e){const r=e._glBuffers[n]||this.createGLBuffer(e);this.boundBufferBases[t]=e,s.bindBufferBase(s.UNIFORM_BUFFER,t,r.buffer)}}bindBufferRange(e,t,s){const{gl:n,CONTEXT_UID:r}=this;s=s||0;const o=e._glBuffers[r]||this.createGLBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,t||0,o.buffer,s*256,256)}update(e){const{gl:t,CONTEXT_UID:s}=this,n=e._glBuffers[s]||this.createGLBuffer(e);if(e._updateID!==n.updateID)if(n.updateID=e._updateID,t.bindBuffer(e.type,n.buffer),n.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const r=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;n.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,r)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const s=e._glBuffers[this.CONTEXT_UID],n=this.gl;e.disposeRunner.remove(this),s&&(t||n.deleteBuffer(s.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let s=0;st.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:s}=this.items[0];return this.resize(t,s),this.update(),Promise.resolve(this)}),this._load}}class cA extends Vb{constructor(e,t){const{width:s,height:n}=t||{};let r,o;Array.isArray(e)?(r=e,o=e.length):o=e,super(o,{width:s,height:n}),r&&this.initFromArray(r,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=qo.TEXTURE_2D_ARRAY}upload(e,t,s){const{length:n,itemDirtyIds:r,items:o}=this,{gl:a}=e;s.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,s.internalFormat,this._width,this._height,n,0,t.format,s.type,null);for(let l=0;l0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=qo.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,s){const n=this.itemDirtyIds;for(let r=0;r{if(this.url===null){e(this);return}try{const s=await Le.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const n=await s.blob();if(this.destroyed)return;const r=await createImageBitmap(n,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===xs.UNPACK?"premultiply":"none"});if(this.destroyed){r.close();return}this.source=r,this.update(),e(this)}catch(s){if(this.destroyed)return;t(s),this.onError.emit(s)}}),this._load)}upload(e,t,s){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,s)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return $o._EMPTY=$o._EMPTY??Le.ADAPTER.createCanvas(0,0),$o._EMPTY}}const zf=class Pc extends Gn{constructor(e,t){t=t||{},super(Le.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},Pc.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;Gn.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,s=e.height;if(!t||!s)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let n=t*this.scale,r=s*this.scale;(this._overrideWidth||this._overrideHeight)&&(n=this._overrideWidth||this._overrideHeight/s*t,r=this._overrideHeight||this._overrideWidth/t*s),n=Math.round(n),r=Math.round(r);const o=this.source;o.width=n,o.height=r,o._pixiId=`canvas_${co()}`,o.getContext("2d").drawImage(e,0,0,t,s,0,0,n,r),this._resolve(),this._resolve=null}}static getSize(e){const t=Pc.SVG_SIZE.exec(e),s={};return t&&(s[t[1]]=Math.round(parseFloat(t[3])),s[t[5]]=Math.round(parseFloat(t[7]))),s}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&Pc.SVG_XML.test(e)}};zf.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let qf=zf;class dA extends Gn{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const Kf=class Zf extends Gn{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const s=document.createElement("video");t.autoLoad!==!1&&s.setAttribute("preload","auto"),t.playsinline!==!1&&(s.setAttribute("webkit-playsinline",""),s.setAttribute("playsinline","")),t.muted===!0&&(s.setAttribute("muted",""),s.muted=!0),t.loop===!0&&s.setAttribute("loop",""),t.autoPlay!==!1&&s.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const n=e[0].src||e[0];Gn.crossOrigin(s,n,t.crossorigin);for(let r=0;r{this.valid?t(this):(this._resolve=t,this._reject=s,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(Gs.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Gs.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Gs.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||Zf.TYPES.includes(t)}};Kf.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],Kf.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Gb=Kf;Nf.push($o,gb,hA,Gb,dA,qf,ru,uA,cA);class yl{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?ot.EMPTY:(e=e||new ot(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:s,b:n,c:r,d:o,tx:a,ty:l}=e,c=s*t.x+r*t.y+a,h=n*t.x+o*t.y+l;this.minX=Math.min(this.minX,c),this.maxX=Math.max(this.maxX,c),this.minY=Math.min(this.minY,h),this.maxY=Math.max(this.maxY,h)}addQuad(e){let t=this.minX,s=this.minY,n=this.maxX,r=this.maxY,o=e[0],a=e[1];t=on?o:n,r=a>r?a:r,o=e[2],a=e[3],t=on?o:n,r=a>r?a:r,o=e[4],a=e[5],t=on?o:n,r=a>r?a:r,o=e[6],a=e[7],t=on?o:n,r=a>r?a:r,this.minX=t,this.minY=s,this.maxX=n,this.maxY=r}addFrame(e,t,s,n,r){this.addFrameMatrix(e.worldTransform,t,s,n,r)}addFrameMatrix(e,t,s,n,r){const o=e.a,a=e.b,l=e.c,c=e.d,h=e.tx,u=e.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=o*t+l*s+h,y=a*t+c*s+u;d=gp?g:p,m=y>m?y:m,g=o*n+l*s+h,y=a*n+c*s+u,d=gp?g:p,m=y>m?y:m,g=o*t+l*r+h,y=a*t+c*r+u,d=gp?g:p,m=y>m?y:m,g=o*n+l*r+h,y=a*n+c*r+u,d=gp?g:p,m=y>m?y:m,this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addVertexData(e,t,s){let n=this.minX,r=this.minY,o=this.maxX,a=this.maxY;for(let l=t;lo?c:o,a=h>a?h:a}this.minX=n,this.minY=r,this.maxX=o,this.maxY=a}addVertices(e,t,s,n){this.addVerticesMatrix(e.worldTransform,t,s,n)}addVerticesMatrix(e,t,s,n,r=0,o=r){const a=e.a,l=e.b,c=e.c,h=e.d,u=e.tx,d=e.ty;let f=this.minX,p=this.minY,m=this.maxX,g=this.maxY;for(let y=s;yn?e.maxX:n,this.maxY=e.maxY>r?e.maxY:r}addBoundsMask(e,t){const s=e.minX>t.minX?e.minX:t.minX,n=e.minY>t.minY?e.minY:t.minY,r=e.maxXc?r:c,this.maxY=o>h?o:h}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const s=e.minX>t.x?e.minX:t.x,n=e.minY>t.y?e.minY:t.y,r=e.maxXc?r:c,this.maxY=o>h?o:h}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,s,n,r,o){e-=r,t-=o,s+=r,n+=o,this.minX=this.minXs?this.maxX:s,this.minY=this.minYn?this.maxY:n}}class Kt extends El{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new hp,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new yl,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let s=0;s1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const s=this.getChildIndex(e),n=this.getChildIndex(t);this.children[s]=t,this.children[n]=e,this.onChildrenChange(s=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const s=this.getChildIndex(e);Ko(this.children,s,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&r<=n){o=this.children.splice(s,r);for(let a=0;a1&&this.children.sort(pA),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let s,n;this.cullArea?(s=this.cullArea,n=this.worldTransform):this._render!==Jf.prototype._render&&(s=this.getBounds(!0));const r=e.projection.transform;if(r&&(n?(n=mA.copyFrom(n),n.prepend(r)):n=r),s&&t.intersects(s,n))this._render(e);else if(this.cullArea)return;for(let o=0,a=this.children.length;o=n&&Fa.x=r&&Fa.y=ls.HIGH?this.multisample=ls.HIGH:t>=ls.MEDIUM?this.multisample=ls.MEDIUM:t>=ls.LOW?this.multisample=ls.LOW:this.multisample=ls.NONE}destroy(){}}Xb.extension={type:ke.RendererSystem,name:"_multisample"};Xe.add(Xb);class hA{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class Vb{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){const{gl:t,CONTEXT_UID:s}=this,n=e._glBuffers[s]||this.createGLBuffer(e);t.bindBuffer(e.type,n.buffer)}unbind(e){const{gl:t}=this;t.bindBuffer(e,null)}bindBufferBase(e,t){const{gl:s,CONTEXT_UID:n}=this;if(this.boundBufferBases[t]!==e){const r=e._glBuffers[n]||this.createGLBuffer(e);this.boundBufferBases[t]=e,s.bindBufferBase(s.UNIFORM_BUFFER,t,r.buffer)}}bindBufferRange(e,t,s){const{gl:n,CONTEXT_UID:r}=this;s=s||0;const o=e._glBuffers[r]||this.createGLBuffer(e);n.bindBufferRange(n.UNIFORM_BUFFER,t||0,o.buffer,s*256,256)}update(e){const{gl:t,CONTEXT_UID:s}=this,n=e._glBuffers[s]||this.createGLBuffer(e);if(e._updateID!==n.updateID)if(n.updateID=e._updateID,t.bindBuffer(e.type,n.buffer),n.byteLength>=e.data.byteLength)t.bufferSubData(e.type,0,e.data);else{const r=e.static?t.STATIC_DRAW:t.DYNAMIC_DRAW;n.byteLength=e.data.byteLength,t.bufferData(e.type,e.data,r)}}dispose(e,t){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];const s=e._glBuffers[this.CONTEXT_UID],n=this.gl;e.disposeRunner.remove(this),s&&(t||n.deleteBuffer(s.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){const t=Object.keys(this.managedBuffers);for(let s=0;st.resource).filter(t=>t).map(t=>t.load());return this._load=Promise.all(e).then(()=>{const{realWidth:t,realHeight:s}=this.items[0];return this.resize(t,s),this.update(),Promise.resolve(this)}),this._load}}class uA extends Gb{constructor(e,t){const{width:s,height:n}=t||{};let r,o;Array.isArray(e)?(r=e,o=e.length):o=e,super(o,{width:s,height:n}),r&&this.initFromArray(r,t)}addBaseTextureAt(e,t){if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=qo.TEXTURE_2D_ARRAY}upload(e,t,s){const{length:n,itemDirtyIds:r,items:o}=this,{gl:a}=e;s.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,s.internalFormat,this._width,this._height,n,0,t.format,s.type,null);for(let l=0;l0)if(e.resource)this.addResourceAt(e.resource,t);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=qo.TEXTURE_CUBE_MAP_POSITIVE_X+t,e.parentTextureArray=this.baseTexture,this.items[t]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[t]=e,this}upload(e,t,s){const n=this.itemDirtyIds;for(let r=0;r{if(this.url===null){e(this);return}try{const s=await Le.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;const n=await s.blob();if(this.destroyed)return;const r=await createImageBitmap(n,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===bs.UNPACK?"premultiply":"none"});if(this.destroyed){r.close();return}this.source=r,this.update(),e(this)}catch(s){if(this.destroyed)return;t(s),this.onError.emit(s)}}),this._load)}upload(e,t,s){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(t.alphaMode=this.alphaMode),super.upload(e,t,s)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return $o._EMPTY=$o._EMPTY??Le.ADAPTER.createCanvas(0,0),$o._EMPTY}}const qf=class Pc extends Gn{constructor(e,t){t=t||{},super(Le.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=t.scale||1,this._overrideWidth=t.width,this._overrideHeight=t.height,this._resolve=null,this._crossorigin=t.crossorigin,this._load=null,t.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},Pc.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){const e=new Image;Gn.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=t=>{this._resolve&&(e.onerror=null,this.onError.emit(t))},e.onload=()=>{if(!this._resolve)return;const t=e.width,s=e.height;if(!t||!s)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let n=t*this.scale,r=s*this.scale;(this._overrideWidth||this._overrideHeight)&&(n=this._overrideWidth||this._overrideHeight/s*t,r=this._overrideHeight||this._overrideWidth/t*s),n=Math.round(n),r=Math.round(r);const o=this.source;o.width=n,o.height=r,o._pixiId=`canvas_${co()}`,o.getContext("2d").drawImage(e,0,0,t,s,0,0,n,r),this._resolve(),this._resolve=null}}static getSize(e){const t=Pc.SVG_SIZE.exec(e),s={};return t&&(s[t[1]]=Math.round(parseFloat(t[3])),s[t[5]]=Math.round(parseFloat(t[7]))),s}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,t){return t==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&Pc.SVG_XML.test(e)}};qf.SVG_XML=/^(<\?xml[^?]+\?>)?\s*()]*-->)?\s*\]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;let Kf=qf;class mA extends Gn{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}}const Zf=class Jf extends Gn{constructor(e,t){if(t=t||{},!(e instanceof HTMLVideoElement)){const s=document.createElement("video");t.autoLoad!==!1&&s.setAttribute("preload","auto"),t.playsinline!==!1&&(s.setAttribute("webkit-playsinline",""),s.setAttribute("playsinline","")),t.muted===!0&&(s.setAttribute("muted",""),s.muted=!0),t.loop===!0&&s.setAttribute("loop",""),t.autoPlay!==!1&&s.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);const n=e[0].src||e[0];Gn.crossOrigin(s,n,t.crossorigin);for(let r=0;r{this.valid?t(this):(this._resolve=t,this._reject=s,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){const e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){const e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);const t=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!t&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();const e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(Gs.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Gs.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Gs.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,t){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||Jf.TYPES.includes(t)}};Zf.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],Zf.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Hb=Zf;Df.push($o,yb,dA,Hb,mA,Kf,ru,fA,uA);class yl{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(e){return this.minX>this.maxX||this.minY>this.maxY?ot.EMPTY:(e=e||new ot(0,0,1,1),e.x=this.minX,e.y=this.minY,e.width=this.maxX-this.minX,e.height=this.maxY-this.minY,e)}addPoint(e){this.minX=Math.min(this.minX,e.x),this.maxX=Math.max(this.maxX,e.x),this.minY=Math.min(this.minY,e.y),this.maxY=Math.max(this.maxY,e.y)}addPointMatrix(e,t){const{a:s,b:n,c:r,d:o,tx:a,ty:l}=e,c=s*t.x+r*t.y+a,h=n*t.x+o*t.y+l;this.minX=Math.min(this.minX,c),this.maxX=Math.max(this.maxX,c),this.minY=Math.min(this.minY,h),this.maxY=Math.max(this.maxY,h)}addQuad(e){let t=this.minX,s=this.minY,n=this.maxX,r=this.maxY,o=e[0],a=e[1];t=on?o:n,r=a>r?a:r,o=e[2],a=e[3],t=on?o:n,r=a>r?a:r,o=e[4],a=e[5],t=on?o:n,r=a>r?a:r,o=e[6],a=e[7],t=on?o:n,r=a>r?a:r,this.minX=t,this.minY=s,this.maxX=n,this.maxY=r}addFrame(e,t,s,n,r){this.addFrameMatrix(e.worldTransform,t,s,n,r)}addFrameMatrix(e,t,s,n,r){const o=e.a,a=e.b,l=e.c,c=e.d,h=e.tx,u=e.ty;let d=this.minX,f=this.minY,p=this.maxX,m=this.maxY,g=o*t+l*s+h,v=a*t+c*s+u;d=gp?g:p,m=v>m?v:m,g=o*n+l*s+h,v=a*n+c*s+u,d=gp?g:p,m=v>m?v:m,g=o*t+l*r+h,v=a*t+c*r+u,d=gp?g:p,m=v>m?v:m,g=o*n+l*r+h,v=a*n+c*r+u,d=gp?g:p,m=v>m?v:m,this.minX=d,this.minY=f,this.maxX=p,this.maxY=m}addVertexData(e,t,s){let n=this.minX,r=this.minY,o=this.maxX,a=this.maxY;for(let l=t;lo?c:o,a=h>a?h:a}this.minX=n,this.minY=r,this.maxX=o,this.maxY=a}addVertices(e,t,s,n){this.addVerticesMatrix(e.worldTransform,t,s,n)}addVerticesMatrix(e,t,s,n,r=0,o=r){const a=e.a,l=e.b,c=e.c,h=e.d,u=e.tx,d=e.ty;let f=this.minX,p=this.minY,m=this.maxX,g=this.maxY;for(let v=s;vn?e.maxX:n,this.maxY=e.maxY>r?e.maxY:r}addBoundsMask(e,t){const s=e.minX>t.minX?e.minX:t.minX,n=e.minY>t.minY?e.minY:t.minY,r=e.maxXc?r:c,this.maxY=o>h?o:h}}addBoundsMatrix(e,t){this.addFrameMatrix(t,e.minX,e.minY,e.maxX,e.maxY)}addBoundsArea(e,t){const s=e.minX>t.x?e.minX:t.x,n=e.minY>t.y?e.minY:t.y,r=e.maxXc?r:c,this.maxY=o>h?o:h}}pad(e=0,t=e){this.isEmpty()||(this.minX-=e,this.maxX+=e,this.minY-=t,this.maxY+=t)}addFramePad(e,t,s,n,r,o){e-=r,t-=o,s+=r,n+=o,this.minX=this.minXs?this.maxX:s,this.minY=this.minYn?this.maxY:n}}class Kt extends El{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new up,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new yl,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(e){const t=Object.keys(e);for(let s=0;s1)for(let t=0;tthis.children.length)throw new Error(`${e}addChildAt: The index ${t} supplied is out of bounds ${this.children.length}`);return e.parent&&e.parent.removeChild(e),e.parent=this,this.sortDirty=!0,e.transform._parentID=-1,this.children.splice(t,0,e),this._boundsID++,this.onChildrenChange(t),e.emit("added",this),this.emit("childAdded",e,this,t),e}swapChildren(e,t){if(e===t)return;const s=this.getChildIndex(e),n=this.getChildIndex(t);this.children[s]=t,this.children[n]=e,this.onChildrenChange(s=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);const s=this.getChildIndex(e);Ko(this.children,s,1),this.children.splice(t,0,e),this.onChildrenChange(t)}getChildAt(e){if(e<0||e>=this.children.length)throw new Error(`getChildAt: Index (${e}) does not exist.`);return this.children[e]}removeChild(...e){if(e.length>1)for(let t=0;t0&&r<=n){o=this.children.splice(s,r);for(let a=0;a1&&this.children.sort(vA),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let e=0,t=this.children.length;e0&&t.height>0))return;let s,n;this.cullArea?(s=this.cullArea,n=this.worldTransform):this._render!==Qf.prototype._render&&(s=this.getBounds(!0));const r=e.projection.transform;if(r&&(n?(n=gA.copyFrom(n),n.prepend(r)):n=r),s&&t.intersects(s,n))this._render(e);else if(this.cullArea)return;for(let o=0,a=this.children.length;o=n&&Fa.x=r&&Fa.y=t&&(o=i-a-1),l=l.replace("%value%",e[o].toString()),n+=l,n+=` -`}return s=s.replace("%blur%",n),s=s.replace("%size%",i.toString()),s}const MA=` +`;class wA extends Ys{constructor(e=1){super(cA,bA,{uAlpha:1}),this.alpha=e}get alpha(){return this.uniforms.uAlpha}set alpha(e){this.uniforms.uAlpha=e}}const SA={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},MA=["varying vec2 vBlurTexCoords[%size%];","uniform sampler2D uSampler;","void main(void)","{"," gl_FragColor = vec4(0.0);"," %blur%","}"].join(` +`);function TA(i){const e=SA[i],t=e.length;let s=MA,n="";const r="gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;";let o;for(let a=0;a=t&&(o=i-a-1),l=l.replace("%value%",e[o].toString()),n+=l,n+=` +`}return s=s.replace("%blur%",n),s=s.replace("%size%",i.toString()),s}const _A=` attribute vec2 aVertexPosition; uniform mat3 projectionMatrix; @@ -586,8 +586,8 @@ void main(void) vec2 textureCoord = filterTextureCoord(); %blur% - }`;function TA(i,e){const t=Math.ceil(i/2);let s=MA,n="",r;e?r="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);":r="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);";for(let o=0;o{Object.defineProperty(ov,i,{get(){return ht("7.1.0",`filters.${i} has moved to ${i}`),e}})});class LA{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||(Gs.system.add(this.tickerUpdate,this,ho.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(Gs.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimes.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let s=0,n=t.length;s=0;n--)if(e.currentTarget=s[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,s=this._allInteractiveElements){if(s.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let r=s.length-1;r>=0;r--)n.forEach(o=>{e.currentTarget=s[r],this.notifyTarget(e,o)})}propagationPath(e){const t=[e];for(let s=0;s=0;u--){const d=h[u],f=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,s,n,r,o||r(e,s));if(f){if(f.length>0&&!f[f.length-1].parent)continue;const p=e.isInteractive();(f.length>0||p)&&(p&&this._allInteractiveElements.push(e),f.push(e)),this._hitElements.length===0&&(this._hitElements=f),a=!0}}}const l=this._isInteractive(t),c=e.isInteractive();return l&&c&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:a?this._hitElements:l&&!r(e,s)&&n(e,s)?c?[e]:[]:null}hitTestRecursive(e,t,s,n,r){if(this._interactivePrune(e)||r(e,s))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(lr.pauseUpdate=!1),e.interactiveChildren&&e.children){const l=e.children;for(let c=l.length-1;c>=0;c--){const h=l[c],u=this.hitTestRecursive(h,this._isInteractive(t)?t:h.eventMode,s,n,r);if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();return(u.length>0||d)&&u.push(e),u}}}const o=this._isInteractive(t),a=e.isInteractive();return o&&n(e,s)?a?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){var s;if(e.hitArea&&(e.worldTransform.applyInverse(t,Hd),!e.hitArea.contains(Hd.x,Hd.y)))return!0;if(e._mask){const n=e._mask.isMaskData?e._mask.maskObject:e._mask;if(n&&!((s=n.containsPoint)!=null&&s.call(n,t)))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){var r,o;t=t??e.type;const s=`on${t}`;(o=(r=e.currentTarget)[s])==null||o.call(r,e);const n=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,n),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const n=t.button===2;this.dispatchEvent(t,n?"rightdown":"mousedown")}const s=this.trackingData(e.pointerId);s.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){var l,c;if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const s=t.pointerType==="mouse"||t.pointerType==="pen",n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.overTargets);if(((l=n.overTargets)==null?void 0:l.length)>0&&r!==t.target){const h=e.type==="mousemove"?"mouseout":"pointerout",u=this.createPointerEvent(e,h,r);if(this.dispatchEvent(u,"pointerout"),s&&this.dispatchEvent(u,"mouseout"),!t.composedPath().includes(r)){const d=this.createPointerEvent(e,"pointerleave",r);for(d.eventPhase=d.AT_TARGET;d.target&&!t.composedPath().includes(d.target);)d.currentTarget=d.target,this.notifyTarget(d),s&&this.notifyTarget(d,"mouseleave"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(u)}if(r!==t.target){const h=e.type==="mousemove"?"mouseover":"pointerover",u=this.clonePointerEvent(t,h);this.dispatchEvent(u,"pointerover"),s&&this.dispatchEvent(u,"mouseover");let d=r==null?void 0:r.parent;for(;d&&d!==this.rootTarget.parent&&d!==t.target;)d=d.parent;if(!d||d===this.rootTarget.parent){const f=this.clonePointerEvent(t,"pointerenter");for(f.eventPhase=f.AT_TARGET;f.target&&f.target!==r&&f.target!==this.rootTarget.parent;)f.currentTarget=f.target,this.notifyTarget(f),s&&this.notifyTarget(f,"mouseenter"),f.target=f.target.parent;this.freeEvent(f)}this.freeEvent(u)}const o=[],a=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),a&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),a&&o.push("globaltouchmove")),s&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),a&&o.push("globalmousemove"),this.cursor=(c=t.target)==null?void 0:c.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var o;if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),s=this.createPointerEvent(e),n=s.pointerType==="mouse"||s.pointerType==="pen";this.dispatchEvent(s,"pointerover"),n&&this.dispatchEvent(s,"mouseover"),s.pointerType==="mouse"&&(this.cursor=(o=s.target)==null?void 0:o.cursor);const r=this.clonePointerEvent(s,"pointerenter");for(r.eventPhase=r.AT_TARGET;r.target&&r.target!==this.rootTarget.parent;)r.currentTarget=r.target,this.notifyTarget(r),n&&this.notifyTarget(r,"mouseenter"),r.target=r.target.parent;t.overTargets=s.composedPath(),this.freeEvent(s),this.freeEvent(r)}mapPointerOut(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const s=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),r=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(r),s&&this.dispatchEvent(r,"mouseout");const o=this.createPointerEvent(e,"pointerleave",n);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),s&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(r),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),s=this.createPointerEvent(e);if(this.dispatchEvent(s,"pointerup"),s.pointerType==="touch")this.dispatchEvent(s,"touchend");else if(s.pointerType==="mouse"||s.pointerType==="pen"){const a=s.button===2;this.dispatchEvent(s,a?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.pressTargetsByButton[e.button]);let o=r;if(r&&!s.composedPath().includes(r)){let a=r;for(;a&&!s.composedPath().includes(a);){if(s.currentTarget=a,this.notifyTarget(s,"pointerupoutside"),s.pointerType==="touch")this.notifyTarget(s,"touchendoutside");else if(s.pointerType==="mouse"||s.pointerType==="pen"){const l=s.button===2;this.notifyTarget(s,l?"rightupoutside":"mouseupoutside")}a=a.parent}delete n.pressTargetsByButton[e.button],o=a}if(o){const a=this.clonePointerEvent(s,"click");a.target=o,a.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:a.target,timeStamp:t});const l=n.clicksByButton[e.button];if(l.target===a.target&&t-l.timeStamp<200?++l.clickCount:l.clickCount=1,l.target=a.target,l.timeStamp=t,a.detail=l.clickCount,a.pointerType==="mouse"){const c=a.button===2;this.dispatchEvent(a,c?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(s)}mapPointerUpOutside(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),s=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(s){let r=s;for(;r;)n.currentTarget=r,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),r=r.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof Jo)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let s=1;s(s==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[s]=n,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:s}=this.renderer;this.setTargetElement(t),this.resolution=s,sm._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const s=this.cursorStyles[e];if(s)switch(typeof s){case"string":t&&(this.domElement.style.cursor=s);break;case"function":s(e);break;case"object":t&&Object.assign(this.domElement.style,s);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let s=0,n=t.length;s0&&(t=e.composedPath()[0]);const s=t!==this.domElement?"outside":"",n=this.normalizeToPointerData(e);for(let r=0,o=n.length;r"u"&&(r.button=0),typeof r.buttons>"u"&&(r.buttons=1),typeof r.isPrimary>"u"&&(r.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof r.width>"u"&&(r.width=r.radiusX||1),typeof r.height>"u"&&(r.height=r.radiusY||1),typeof r.tiltX>"u"&&(r.tiltX=0),typeof r.tiltY>"u"&&(r.tiltY=0),typeof r.pointerType>"u"&&(r.pointerType="touch"),typeof r.pointerId>"u"&&(r.pointerId=r.identifier||0),typeof r.pressure>"u"&&(r.pressure=r.force||.5),typeof r.twist>"u"&&(r.twist=0),typeof r.tangentialPressure>"u"&&(r.tangentialPressure=0),typeof r.layerX>"u"&&(r.layerX=r.offsetX=r.clientX),typeof r.layerY>"u"&&(r.layerY=r.offsetY=r.clientY),r.isNormalized=!0,r.type=e.type,t.push(r)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const s=e;typeof s.isPrimary>"u"&&(s.isPrimary=!0),typeof s.width>"u"&&(s.width=1),typeof s.height>"u"&&(s.height=1),typeof s.tiltX>"u"&&(s.tiltX=0),typeof s.tiltY>"u"&&(s.tiltY=0),typeof s.pointerType>"u"&&(s.pointerType="mouse"),typeof s.pointerId>"u"&&(s.pointerId=UA),typeof s.pressure>"u"&&(s.pressure=.5),typeof s.twist>"u"&&(s.twist=0),typeof s.tangentialPressure>"u"&&(s.tangentialPressure=0),s.isNormalized=!0,t.push(s)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=$A[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};tm.extension={name:"events",type:[ke.RendererSystem,ke.CanvasRendererSystem]},tm.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let im=tm;Xe.add(im);function av(i){return i==="dynamic"||i==="static"}const XA={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??av(im.defaultEventMode)},set interactive(i){ht("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=i,this.eventMode=i?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??im.defaultEventMode},set eventMode(i){this._internalInteractive=av(i),this._internalEventMode=i},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(i,e,t){const s=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,r=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;i=s?`${i}capture`:i;const a=typeof e=="function"?e:e.handleEvent,l=this;n&&n.addEventListener("abort",()=>{l.off(i,a,o)}),r?l.once(i,a,o):l.on(i,a,o)},removeEventListener(i,e,t){const s=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;i=s?`${i}capture`:i,e=typeof e=="function"?e:e.handleEvent,this.off(i,e,n)},dispatchEvent(i){if(!(i instanceof Il))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return i.defaultPrevented=!1,i.path=null,i.target=this,i.manager.dispatchEvent(i),!i.defaultPrevented}};Kt.mixin(XA);const VA={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};Kt.mixin(VA);const YA=9,sc=100,GA=0,jA=0,lv=2,cv=1,HA=-1e3,WA=-1e3,zA=2;class Wb{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(In.tablet||In.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${sc}px`,t.style.height=`${sc}px`,t.style.position="absolute",t.style.top=`${GA}px`,t.style.left=`${jA}px`,t.style.zIndex=lv.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${cv}px`,e.style.height=`${cv}px`,e.style.position="absolute",e.style.top=`${HA}px`,e.style.left=`${WA}px`,e.style.zIndex=zA.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),(e=this.renderer.view.parentNode)==null||e.appendChild(this.div))}deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),(e=this.div.parentNode)==null||e.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let s=0;s title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:s}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>s&&(e.height=s-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${sc}px`,t.style.height=`${sc}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=lv.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:s}=e.target,n=this.renderer.events.rootBoundary,r=Object.assign(new Il(n),{target:s});n.rootTarget=this.renderer.lastObjectRendered,t.forEach(o=>n.dispatchEvent(r,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===YA&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Wb.extension={name:"accessibility",type:[ke.RendererPlugin,ke.CanvasRendererPlugin]};Xe.add(Wb);const zb=class nm{constructor(e){this.stage=new ps,e=Object.assign({forceCanvas:!1},e),this.renderer=nA(e),nm._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){var e;return(e=this.renderer)==null?void 0:e.view}get screen(){var e;return(e=this.renderer)==null?void 0:e.screen}destroy(e,t){const s=nm._plugins.slice(0);s.reverse(),s.forEach(n=>{n.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};zb._plugins=[];let qb=zb;Xe.handleByList(ke.Application,qb._plugins);class Kb{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,s;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,s=globalThis.innerHeight;else{const{clientWidth:n,clientHeight:r}=this._resizeTo;t=n,s=r}this.renderer.resize(t,s),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Kb.extension=ke.Application;Xe.add(Kb);const hv={loader:ke.LoadParser,resolver:ke.ResolveParser,cache:ke.CacheParser,detection:ke.DetectionParser};Xe.handle(ke.Asset,i=>{const e=i.ref;Object.entries(hv).filter(([t])=>!!e[t]).forEach(([t,s])=>Xe.add(Object.assign(e[t],{extension:e[t].extension??s})))},i=>{const e=i.ref;Object.keys(hv).filter(t=>!!e[t]).forEach(t=>Xe.remove(e[t]))});class qA{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let s=0;s(Array.isArray(i)||(i=[i]),e?i.map(s=>typeof s=="string"||t?e(s):s):i),lh=(i,e)=>{const t=e.split("?")[1];return t&&(i+=`?${t}`),i};function Zb(i,e,t,s,n){const r=e[t];for(let o=0;o{const o=r.substring(1,r.length-1).split(",");n.push(o)}),Zb(i,n,0,t,s)}else s.push(i);return s}const ch=i=>!Array.isArray(i);class ZA{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const s=Ti(e);let n;for(let a=0;a{n[a]=t}));const r=Object.keys(n),o={cacheKeys:r,keys:s};if(s.forEach(a=>{this._cacheMap.set(a,o)}),r.forEach(a=>{const l=n?n[a]:t;this._cache.has(a)&&this._cache.get(a)!==l&&console.warn("[Cache] already has key:",a),this._cache.set(a,n[a])}),t instanceof ze){const a=t;s.forEach(l=>{a.baseTexture!==ze.EMPTY.baseTexture&&Qe.addToCache(a.baseTexture,l),ze.addToCache(a,l)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(s=>{this._cache.delete(s)}),t.keys.forEach(s=>{this._cacheMap.delete(s)})}get parsers(){return this._parsers}}const zr=new ZA;class JA{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,s)=>(this._parsersValidated=!1,e[t]=s,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const s={promise:null,parser:null};return s.promise=(async()=>{var o,a;let n=null,r=null;if(t.loadParser&&(r=this._parserHash[t.loadParser],r||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!r){for(let l=0;l({alias:[c],src:c})),a=o.length,l=o.map(async c=>{const h=ts.toAbsolute(c.src);if(!n[c.src])try{this.promiseCache[h]||(this.promiseCache[h]=this._getLoadPromiseAndParser(h,c)),n[c.src]=await this.promiseCache[h].promise,t&&t(++s/a)}catch(u){throw delete this.promiseCache[h],delete n[c.src],new Error(`[Loader.load] Failed to load ${h}. -${u}`)}});return await Promise.all(l),r?n[o[0].src]:n}async unload(e){const t=Ti(e,s=>({alias:[s],src:s})).map(async s=>{var o,a;const n=ts.toAbsolute(s.src),r=this.promiseCache[n];if(r){const l=await r.promise;delete this.promiseCache[n],(a=(o=r.parser)==null?void 0:o.unload)==null||a.call(o,l,s,this)}});await Promise.all(t)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name).reduce((e,t)=>(e[t.name]&&console.warn(`[Assets] loadParser name conflict "${t.name}"`),{...e,[t.name]:t}),{})}}var ii=(i=>(i[i.Low=0]="Low",i[i.Normal=1]="Normal",i[i.High=2]="High",i))(ii||{});const QA=".json",eE="application/json",tE={extension:{type:ke.LoadParser,priority:ii.Low},name:"loadJson",test(i){return ga(i,eE)||qs(i,QA)},async load(i){return await(await Le.ADAPTER.fetch(i)).json()}};Xe.add(tE);const sE=".txt",iE="text/plain",nE={name:"loadTxt",extension:{type:ke.LoadParser,priority:ii.Low},test(i){return ga(i,iE)||qs(i,sE)},async load(i){return await(await Le.ADAPTER.fetch(i)).text()}};Xe.add(nE);const rE=["normal","bold","100","200","300","400","500","600","700","800","900"],oE=[".ttf",".otf",".woff",".woff2"],aE=["font/ttf","font/otf","font/woff","font/woff2"],lE=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function cE(i){const e=ts.extname(i),t=ts.basename(i,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1));let s=t.length>0;for(const r of t)if(!r.match(lE)){s=!1;break}let n=t.join(" ");return s||(n=`"${n.replace(/[\\"]/g,"\\$&")}"`),n}const hE=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function uE(i){return hE.test(i)?i:encodeURI(i)}const dE={extension:{type:ke.LoadParser,priority:ii.Low},name:"loadWebFont",test(i){return ga(i,aE)||qs(i,oE)},async load(i,e){var s,n,r;const t=Le.ADAPTER.getFontFaceSet();if(t){const o=[],a=((s=e.data)==null?void 0:s.family)??cE(i),l=((r=(n=e.data)==null?void 0:n.weights)==null?void 0:r.filter(h=>rE.includes(h)))??["normal"],c=e.data??{};for(let h=0;hLe.ADAPTER.getFontFaceSet().delete(e))}};Xe.add(dE);const fE=`(function() { +`;class BA extends Ys{constructor(e=.5,t=Math.random()){super($b,LA,{uNoise:0,uSeed:0}),this.noise=e,this.seed=t}get noise(){return this.uniforms.uNoise}set noise(e){this.uniforms.uNoise=e}get seed(){return this.uniforms.uSeed}set seed(e){this.uniforms.uSeed=e}}const av={AlphaFilter:wA,BlurFilter:AA,BlurFilterPass:em,ColorMatrixFilter:tm,DisplacementFilter:PA,FXAAFilter:OA,NoiseFilter:BA};Object.entries(av).forEach(([i,e])=>{Object.defineProperty(av,i,{get(){return ht("7.1.0",`filters.${i} has moved to ${i}`),e}})});class NA{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(e){this.removeTickerListener(),this.events=e,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(e){this._pauseUpdate=e}addTickerListener(){this.tickerAdded||!this.domElement||(Gs.system.add(this.tickerUpdate,this,ho.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(Gs.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}const e=this.events.rootPointerEvent;this.events.supportsTouchEvents&&e.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:e.clientX,clientY:e.clientY}))}tickerUpdate(e){this._deltaTime+=e,!(this._deltaTimes.priority-n.priority)}dispatchEvent(e,t){e.propagationStopped=!1,e.propagationImmediatelyStopped=!1,this.propagate(e,t),this.dispatch.emit(t||e.type,e)}mapEvent(e){if(!this.rootTarget)return;const t=this.mappingTable[e.type];if(t)for(let s=0,n=t.length;s=0;n--)if(e.currentTarget=s[n],this.notifyTarget(e,t),e.propagationStopped||e.propagationImmediatelyStopped)return}}all(e,t,s=this._allInteractiveElements){if(s.length===0)return;e.eventPhase=e.BUBBLING_PHASE;const n=Array.isArray(t)?t:[t];for(let r=s.length-1;r>=0;r--)n.forEach(o=>{e.currentTarget=s[r],this.notifyTarget(e,o)})}propagationPath(e){const t=[e];for(let s=0;s=0;u--){const d=h[u],f=this.hitTestMoveRecursive(d,this._isInteractive(t)?t:d.eventMode,s,n,r,o||r(e,s));if(f){if(f.length>0&&!f[f.length-1].parent)continue;const p=e.isInteractive();(f.length>0||p)&&(p&&this._allInteractiveElements.push(e),f.push(e)),this._hitElements.length===0&&(this._hitElements=f),a=!0}}}const l=this._isInteractive(t),c=e.isInteractive();return l&&c&&this._allInteractiveElements.push(e),o||this._hitElements.length>0?null:a?this._hitElements:l&&!r(e,s)&&n(e,s)?c?[e]:[]:null}hitTestRecursive(e,t,s,n,r){if(this._interactivePrune(e)||r(e,s))return null;if((e.eventMode==="dynamic"||t==="dynamic")&&(lr.pauseUpdate=!1),e.interactiveChildren&&e.children){const l=e.children;for(let c=l.length-1;c>=0;c--){const h=l[c],u=this.hitTestRecursive(h,this._isInteractive(t)?t:h.eventMode,s,n,r);if(u){if(u.length>0&&!u[u.length-1].parent)continue;const d=e.isInteractive();return(u.length>0||d)&&u.push(e),u}}}const o=this._isInteractive(t),a=e.isInteractive();return o&&n(e,s)?a?[e]:[]:null}_isInteractive(e){return e==="static"||e==="dynamic"}_interactivePrune(e){return!!(!e||e.isMask||!e.visible||!e.renderable||e.eventMode==="none"||e.eventMode==="passive"&&!e.interactiveChildren||e.isMask)}hitPruneFn(e,t){var s;if(e.hitArea&&(e.worldTransform.applyInverse(t,Hd),!e.hitArea.contains(Hd.x,Hd.y)))return!0;if(e._mask){const n=e._mask.isMaskData?e._mask.maskObject:e._mask;if(n&&!((s=n.containsPoint)!=null&&s.call(n,t)))return!0}return!1}hitTestFn(e,t){return e.eventMode==="passive"?!1:e.hitArea?!0:e.containsPoint?e.containsPoint(t):!1}notifyTarget(e,t){var r,o;t=t??e.type;const s=`on${t}`;(o=(r=e.currentTarget)[s])==null||o.call(r,e);const n=e.eventPhase===e.CAPTURING_PHASE||e.eventPhase===e.AT_TARGET?`${t}capture`:t;this.notifyListeners(e,n),e.eventPhase===e.AT_TARGET&&this.notifyListeners(e,t)}mapPointerDown(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.createPointerEvent(e);if(this.dispatchEvent(t,"pointerdown"),t.pointerType==="touch")this.dispatchEvent(t,"touchstart");else if(t.pointerType==="mouse"||t.pointerType==="pen"){const n=t.button===2;this.dispatchEvent(t,n?"rightdown":"mousedown")}const s=this.trackingData(e.pointerId);s.pressTargetsByButton[e.button]=t.composedPath(),this.freeEvent(t)}mapPointerMove(e){var l,c;if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;const t=this.createPointerEvent(e);this._isPointerMoveEvent=!1;const s=t.pointerType==="mouse"||t.pointerType==="pen",n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.overTargets);if(((l=n.overTargets)==null?void 0:l.length)>0&&r!==t.target){const h=e.type==="mousemove"?"mouseout":"pointerout",u=this.createPointerEvent(e,h,r);if(this.dispatchEvent(u,"pointerout"),s&&this.dispatchEvent(u,"mouseout"),!t.composedPath().includes(r)){const d=this.createPointerEvent(e,"pointerleave",r);for(d.eventPhase=d.AT_TARGET;d.target&&!t.composedPath().includes(d.target);)d.currentTarget=d.target,this.notifyTarget(d),s&&this.notifyTarget(d,"mouseleave"),d.target=d.target.parent;this.freeEvent(d)}this.freeEvent(u)}if(r!==t.target){const h=e.type==="mousemove"?"mouseover":"pointerover",u=this.clonePointerEvent(t,h);this.dispatchEvent(u,"pointerover"),s&&this.dispatchEvent(u,"mouseover");let d=r==null?void 0:r.parent;for(;d&&d!==this.rootTarget.parent&&d!==t.target;)d=d.parent;if(!d||d===this.rootTarget.parent){const f=this.clonePointerEvent(t,"pointerenter");for(f.eventPhase=f.AT_TARGET;f.target&&f.target!==r&&f.target!==this.rootTarget.parent;)f.currentTarget=f.target,this.notifyTarget(f),s&&this.notifyTarget(f,"mouseenter"),f.target=f.target.parent;this.freeEvent(f)}this.freeEvent(u)}const o=[],a=this.enableGlobalMoveEvents??!0;this.moveOnAll?o.push("pointermove"):this.dispatchEvent(t,"pointermove"),a&&o.push("globalpointermove"),t.pointerType==="touch"&&(this.moveOnAll?o.splice(1,0,"touchmove"):this.dispatchEvent(t,"touchmove"),a&&o.push("globaltouchmove")),s&&(this.moveOnAll?o.splice(1,0,"mousemove"):this.dispatchEvent(t,"mousemove"),a&&o.push("globalmousemove"),this.cursor=(c=t.target)==null?void 0:c.cursor),o.length>0&&this.all(t,o),this._allInteractiveElements.length=0,this._hitElements.length=0,n.overTargets=t.composedPath(),this.freeEvent(t)}mapPointerOver(e){var o;if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),s=this.createPointerEvent(e),n=s.pointerType==="mouse"||s.pointerType==="pen";this.dispatchEvent(s,"pointerover"),n&&this.dispatchEvent(s,"mouseover"),s.pointerType==="mouse"&&(this.cursor=(o=s.target)==null?void 0:o.cursor);const r=this.clonePointerEvent(s,"pointerenter");for(r.eventPhase=r.AT_TARGET;r.target&&r.target!==this.rootTarget.parent;)r.currentTarget=r.target,this.notifyTarget(r),n&&this.notifyTarget(r,"mouseenter"),r.target=r.target.parent;t.overTargets=s.composedPath(),this.freeEvent(s),this.freeEvent(r)}mapPointerOut(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId);if(t.overTargets){const s=e.pointerType==="mouse"||e.pointerType==="pen",n=this.findMountedTarget(t.overTargets),r=this.createPointerEvent(e,"pointerout",n);this.dispatchEvent(r),s&&this.dispatchEvent(r,"mouseout");const o=this.createPointerEvent(e,"pointerleave",n);for(o.eventPhase=o.AT_TARGET;o.target&&o.target!==this.rootTarget.parent;)o.currentTarget=o.target,this.notifyTarget(o),s&&this.notifyTarget(o,"mouseleave"),o.target=o.target.parent;t.overTargets=null,this.freeEvent(r),this.freeEvent(o)}this.cursor=null}mapPointerUp(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=performance.now(),s=this.createPointerEvent(e);if(this.dispatchEvent(s,"pointerup"),s.pointerType==="touch")this.dispatchEvent(s,"touchend");else if(s.pointerType==="mouse"||s.pointerType==="pen"){const a=s.button===2;this.dispatchEvent(s,a?"rightup":"mouseup")}const n=this.trackingData(e.pointerId),r=this.findMountedTarget(n.pressTargetsByButton[e.button]);let o=r;if(r&&!s.composedPath().includes(r)){let a=r;for(;a&&!s.composedPath().includes(a);){if(s.currentTarget=a,this.notifyTarget(s,"pointerupoutside"),s.pointerType==="touch")this.notifyTarget(s,"touchendoutside");else if(s.pointerType==="mouse"||s.pointerType==="pen"){const l=s.button===2;this.notifyTarget(s,l?"rightupoutside":"mouseupoutside")}a=a.parent}delete n.pressTargetsByButton[e.button],o=a}if(o){const a=this.clonePointerEvent(s,"click");a.target=o,a.path=null,n.clicksByButton[e.button]||(n.clicksByButton[e.button]={clickCount:0,target:a.target,timeStamp:t});const l=n.clicksByButton[e.button];if(l.target===a.target&&t-l.timeStamp<200?++l.clickCount:l.clickCount=1,l.target=a.target,l.timeStamp=t,a.detail=l.clickCount,a.pointerType==="mouse"){const c=a.button===2;this.dispatchEvent(a,c?"rightclick":"click")}else a.pointerType==="touch"&&this.dispatchEvent(a,"tap");this.dispatchEvent(a,"pointertap"),this.freeEvent(a)}this.freeEvent(s)}mapPointerUpOutside(e){if(!(e instanceof Si)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}const t=this.trackingData(e.pointerId),s=this.findMountedTarget(t.pressTargetsByButton[e.button]),n=this.createPointerEvent(e);if(s){let r=s;for(;r;)n.currentTarget=r,this.notifyTarget(n,"pointerupoutside"),n.pointerType==="touch"?this.notifyTarget(n,"touchendoutside"):(n.pointerType==="mouse"||n.pointerType==="pen")&&this.notifyTarget(n,n.button===2?"rightupoutside":"mouseupoutside"),r=r.parent;delete t.pressTargetsByButton[e.button]}this.freeEvent(n)}mapWheel(e){if(!(e instanceof Jo)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}const t=this.createWheelEvent(e);this.dispatchEvent(t),this.freeEvent(t)}findMountedTarget(e){if(!e)return null;let t=e[0];for(let s=1;s(s==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=n),t[s]=n,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init(e){const{view:t,resolution:s}=this.renderer;this.setTargetElement(t),this.resolution=s,im._defaultEventMode=e.eventMode??"auto",Object.assign(this.features,e.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange(e){this.resolution=e}destroy(){this.setTargetElement(null),this.renderer=null}setCursor(e){e=e||"default";let t=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(t=!1),this.currentCursor===e)return;this.currentCursor=e;const s=this.cursorStyles[e];if(s)switch(typeof s){case"string":t&&(this.domElement.style.cursor=s);break;case"function":s(e);break;case"object":t&&Object.assign(this.domElement.style,s);break}else t&&typeof e=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,e)&&(this.domElement.style.cursor=e)}get pointer(){return this.rootPointerEvent}onPointerDown(e){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;const t=this.normalizeToPointerData(e);this.autoPreventDefault&&t[0].isNormalized&&(e.cancelable||!("cancelable"in e))&&e.preventDefault();for(let s=0,n=t.length;s0&&(t=e.composedPath()[0]);const s=t!==this.domElement?"outside":"",n=this.normalizeToPointerData(e);for(let r=0,o=n.length;r"u"&&(r.button=0),typeof r.buttons>"u"&&(r.buttons=1),typeof r.isPrimary>"u"&&(r.isPrimary=e.touches.length===1&&e.type==="touchstart"),typeof r.width>"u"&&(r.width=r.radiusX||1),typeof r.height>"u"&&(r.height=r.radiusY||1),typeof r.tiltX>"u"&&(r.tiltX=0),typeof r.tiltY>"u"&&(r.tiltY=0),typeof r.pointerType>"u"&&(r.pointerType="touch"),typeof r.pointerId>"u"&&(r.pointerId=r.identifier||0),typeof r.pressure>"u"&&(r.pressure=r.force||.5),typeof r.twist>"u"&&(r.twist=0),typeof r.tangentialPressure>"u"&&(r.tangentialPressure=0),typeof r.layerX>"u"&&(r.layerX=r.offsetX=r.clientX),typeof r.layerY>"u"&&(r.layerY=r.offsetY=r.clientY),r.isNormalized=!0,r.type=e.type,t.push(r)}else if(!globalThis.MouseEvent||e instanceof MouseEvent&&(!this.supportsPointerEvents||!(e instanceof globalThis.PointerEvent))){const s=e;typeof s.isPrimary>"u"&&(s.isPrimary=!0),typeof s.width>"u"&&(s.width=1),typeof s.height>"u"&&(s.height=1),typeof s.tiltX>"u"&&(s.tiltX=0),typeof s.tiltY>"u"&&(s.tiltY=0),typeof s.pointerType>"u"&&(s.pointerType="mouse"),typeof s.pointerId>"u"&&(s.pointerId=XA),typeof s.pressure>"u"&&(s.pressure=.5),typeof s.twist>"u"&&(s.twist=0),typeof s.tangentialPressure>"u"&&(s.tangentialPressure=0),s.isNormalized=!0,t.push(s)}else t.push(e);return t}normalizeWheelEvent(e){const t=this.rootWheelEvent;return this.transferMouseData(t,e),t.deltaX=e.deltaX,t.deltaY=e.deltaY,t.deltaZ=e.deltaZ,t.deltaMode=e.deltaMode,this.mapPositionToPoint(t.screen,e.clientX,e.clientY),t.global.copyFrom(t.screen),t.offset.copyFrom(t.screen),t.nativeEvent=e,t.type=e.type,t}bootstrapEvent(e,t){return e.originalEvent=null,e.nativeEvent=t,e.pointerId=t.pointerId,e.width=t.width,e.height=t.height,e.isPrimary=t.isPrimary,e.pointerType=t.pointerType,e.pressure=t.pressure,e.tangentialPressure=t.tangentialPressure,e.tiltX=t.tiltX,e.tiltY=t.tiltY,e.twist=t.twist,this.transferMouseData(e,t),this.mapPositionToPoint(e.screen,t.clientX,t.clientY),e.global.copyFrom(e.screen),e.offset.copyFrom(e.screen),e.isTrusted=t.isTrusted,e.type==="pointerleave"&&(e.type="pointerout"),e.type.startsWith("mouse")&&(e.type=e.type.replace("mouse","pointer")),e.type.startsWith("touch")&&(e.type=VA[e.type]||e.type),e}transferMouseData(e,t){e.isTrusted=t.isTrusted,e.srcElement=t.srcElement,e.timeStamp=performance.now(),e.type=t.type,e.altKey=t.altKey,e.button=t.button,e.buttons=t.buttons,e.client.x=t.clientX,e.client.y=t.clientY,e.ctrlKey=t.ctrlKey,e.metaKey=t.metaKey,e.movement.x=t.movementX,e.movement.y=t.movementY,e.page.x=t.pageX,e.page.y=t.pageY,e.relatedTarget=null,e.shiftKey=t.shiftKey}};sm.extension={name:"events",type:[ke.RendererSystem,ke.CanvasRendererSystem]},sm.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};let nm=sm;Xe.add(nm);function lv(i){return i==="dynamic"||i==="static"}const YA={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??lv(nm.defaultEventMode)},set interactive(i){ht("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=i,this.eventMode=i?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??nm.defaultEventMode},set eventMode(i){this._internalInteractive=lv(i),this._internalEventMode=i},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(i,e,t){const s=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof t=="object"?t.signal:void 0,r=typeof t=="object"?t.once===!0:!1,o=typeof e=="function"?void 0:e;i=s?`${i}capture`:i;const a=typeof e=="function"?e:e.handleEvent,l=this;n&&n.addEventListener("abort",()=>{l.off(i,a,o)}),r?l.once(i,a,o):l.on(i,a,o)},removeEventListener(i,e,t){const s=typeof t=="boolean"&&t||typeof t=="object"&&t.capture,n=typeof e=="function"?void 0:e;i=s?`${i}capture`:i,e=typeof e=="function"?e:e.handleEvent,this.off(i,e,n)},dispatchEvent(i){if(!(i instanceof Il))throw new Error("DisplayObject cannot propagate events outside of the Federated Events API");return i.defaultPrevented=!1,i.path=null,i.target=this,i.manager.dispatchEvent(i),!i.defaultPrevented}};Kt.mixin(YA);const GA={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};Kt.mixin(GA);const jA=9,sc=100,HA=0,WA=0,cv=2,hv=1,zA=-1e3,qA=-1e3,KA=2;class qb{constructor(e){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(In.tablet||In.phone)&&this.createTouchHook();const t=document.createElement("div");t.style.width=`${sc}px`,t.style.height=`${sc}px`,t.style.position="absolute",t.style.top=`${HA}px`,t.style.left=`${WA}px`,t.style.zIndex=cv.toString(),this.div=t,this.renderer=e,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){const e=document.createElement("button");e.style.width=`${hv}px`,e.style.height=`${hv}px`,e.style.position="absolute",e.style.top=`${zA}px`,e.style.left=`${qA}px`,e.style.zIndex=KA.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){var e;this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),(e=this.renderer.view.parentNode)==null||e.appendChild(this.div))}deactivate(){var e;!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),(e=this.div.parentNode)==null||e.removeChild(this.div))}updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&e.isInteractive()&&(e._accessibleActive||this.addChild(e),e.renderId=this.renderId);const t=e.children;if(t)for(let s=0;s title : ${e.title}
tabIndex: ${e.tabIndex}`}capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:s}=this.renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>s&&(e.height=s-e.y)}addChild(e){let t=this.pool.pop();t||(t=document.createElement("button"),t.style.width=`${sc}px`,t.style.height=`${sc}px`,t.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",t.style.position="absolute",t.style.zIndex=cv.toString(),t.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?t.setAttribute("aria-live","off"):t.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?t.setAttribute("aria-relevant","additions"):t.setAttribute("aria-relevant","text"),t.addEventListener("click",this._onClick.bind(this)),t.addEventListener("focus",this._onFocus.bind(this)),t.addEventListener("focusout",this._onFocusOut.bind(this))),t.style.pointerEvents=e.accessiblePointerEvents,t.type=e.accessibleType,e.accessibleTitle&&e.accessibleTitle!==null?t.title=e.accessibleTitle:(!e.accessibleHint||e.accessibleHint===null)&&(t.title=`displayObject ${e.tabIndex}`),e.accessibleHint&&e.accessibleHint!==null&&t.setAttribute("aria-label",e.accessibleHint),this.debug&&this.updateDebugHTML(t),e._accessibleActive=!0,e._accessibleDiv=t,t.displayObject=e,this.children.push(e),this.div.appendChild(e._accessibleDiv),e._accessibleDiv.tabIndex=e.tabIndex}_dispatchEvent(e,t){const{displayObject:s}=e.target,n=this.renderer.events.rootBoundary,r=Object.assign(new Il(n),{target:s});n.rootTarget=this.renderer.lastObjectRendered,t.forEach(o=>n.dispatchEvent(r,o))}_onClick(e){this._dispatchEvent(e,["click","pointertap","tap"])}_onFocus(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","assertive"),this._dispatchEvent(e,["mouseover"])}_onFocusOut(e){e.target.getAttribute("aria-live")||e.target.setAttribute("aria-live","polite"),this._dispatchEvent(e,["mouseout"])}_onKeyDown(e){e.keyCode===jA&&this.activate()}_onMouseMove(e){e.movementX===0&&e.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}qb.extension={name:"accessibility",type:[ke.RendererPlugin,ke.CanvasRendererPlugin]};Xe.add(qb);const Kb=class rm{constructor(e){this.stage=new gs,e=Object.assign({forceCanvas:!1},e),this.renderer=oA(e),rm._plugins.forEach(t=>{t.init.call(this,e)})}render(){this.renderer.render(this.stage)}get view(){var e;return(e=this.renderer)==null?void 0:e.view}get screen(){var e;return(e=this.renderer)==null?void 0:e.screen}destroy(e,t){const s=rm._plugins.slice(0);s.reverse(),s.forEach(n=>{n.destroy.call(this)}),this.stage.destroy(t),this.stage=null,this.renderer.destroy(e),this.renderer=null}};Kb._plugins=[];let Zb=Kb;Xe.handleByList(ke.Application,Zb._plugins);class Jb{static init(e){Object.defineProperty(this,"resizeTo",{set(t){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=t,t&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let t,s;if(this._resizeTo===globalThis.window)t=globalThis.innerWidth,s=globalThis.innerHeight;else{const{clientWidth:n,clientHeight:r}=this._resizeTo;t=n,s=r}this.renderer.resize(t,s),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=e.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}Jb.extension=ke.Application;Xe.add(Jb);const uv={loader:ke.LoadParser,resolver:ke.ResolveParser,cache:ke.CacheParser,detection:ke.DetectionParser};Xe.handle(ke.Asset,i=>{const e=i.ref;Object.entries(uv).filter(([t])=>!!e[t]).forEach(([t,s])=>Xe.add(Object.assign(e[t],{extension:e[t].extension??s})))},i=>{const e=i.ref;Object.keys(uv).filter(t=>!!e[t]).forEach(t=>Xe.remove(e[t]))});class ZA{constructor(e,t=!1){this._loader=e,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=t}add(e){e.forEach(t=>{this._assetList.push(t)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;const e=[],t=Math.min(this._assetList.length,this._maxConcurrent);for(let s=0;s(Array.isArray(i)||(i=[i]),e?i.map(s=>typeof s=="string"||t?e(s):s):i),lh=(i,e)=>{const t=e.split("?")[1];return t&&(i+=`?${t}`),i};function Qb(i,e,t,s,n){const r=e[t];for(let o=0;o{const o=r.substring(1,r.length-1).split(",");n.push(o)}),Qb(i,n,0,t,s)}else s.push(i);return s}const ch=i=>!Array.isArray(i);class QA{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(e){return this._cache.has(e)}get(e){const t=this._cache.get(e);return t||console.warn(`[Assets] Asset id ${e} was not found in the Cache`),t}set(e,t){const s=Ti(e);let n;for(let a=0;a{n[a]=t}));const r=Object.keys(n),o={cacheKeys:r,keys:s};if(s.forEach(a=>{this._cacheMap.set(a,o)}),r.forEach(a=>{const l=n?n[a]:t;this._cache.has(a)&&this._cache.get(a)!==l&&console.warn("[Cache] already has key:",a),this._cache.set(a,n[a])}),t instanceof ze){const a=t;s.forEach(l=>{a.baseTexture!==ze.EMPTY.baseTexture&&Qe.addToCache(a.baseTexture,l),ze.addToCache(a,l)})}}remove(e){if(!this._cacheMap.has(e)){console.warn(`[Assets] Asset id ${e} was not found in the Cache`);return}const t=this._cacheMap.get(e);t.cacheKeys.forEach(s=>{this._cache.delete(s)}),t.keys.forEach(s=>{this._cacheMap.delete(s)})}get parsers(){return this._parsers}}const zr=new QA;class eE{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(e,t,s)=>(this._parsersValidated=!1,e[t]=s,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(e,t){const s={promise:null,parser:null};return s.promise=(async()=>{var o,a;let n=null,r=null;if(t.loadParser&&(r=this._parserHash[t.loadParser],r||console.warn(`[Assets] specified load parser "${t.loadParser}" not found while loading ${e}`)),!r){for(let l=0;l({alias:[c],src:c})),a=o.length,l=o.map(async c=>{const h=ts.toAbsolute(c.src);if(!n[c.src])try{this.promiseCache[h]||(this.promiseCache[h]=this._getLoadPromiseAndParser(h,c)),n[c.src]=await this.promiseCache[h].promise,t&&t(++s/a)}catch(u){throw delete this.promiseCache[h],delete n[c.src],new Error(`[Loader.load] Failed to load ${h}. +${u}`)}});return await Promise.all(l),r?n[o[0].src]:n}async unload(e){const t=Ti(e,s=>({alias:[s],src:s})).map(async s=>{var o,a;const n=ts.toAbsolute(s.src),r=this.promiseCache[n];if(r){const l=await r.promise;delete this.promiseCache[n],(a=(o=r.parser)==null?void 0:o.unload)==null||a.call(o,l,s,this)}});await Promise.all(t)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(e=>e.name).reduce((e,t)=>(e[t.name]&&console.warn(`[Assets] loadParser name conflict "${t.name}"`),{...e,[t.name]:t}),{})}}var ii=(i=>(i[i.Low=0]="Low",i[i.Normal=1]="Normal",i[i.High=2]="High",i))(ii||{});const tE=".json",sE="application/json",iE={extension:{type:ke.LoadParser,priority:ii.Low},name:"loadJson",test(i){return ga(i,sE)||qs(i,tE)},async load(i){return await(await Le.ADAPTER.fetch(i)).json()}};Xe.add(iE);const nE=".txt",rE="text/plain",oE={name:"loadTxt",extension:{type:ke.LoadParser,priority:ii.Low},test(i){return ga(i,rE)||qs(i,nE)},async load(i){return await(await Le.ADAPTER.fetch(i)).text()}};Xe.add(oE);const aE=["normal","bold","100","200","300","400","500","600","700","800","900"],lE=[".ttf",".otf",".woff",".woff2"],cE=["font/ttf","font/otf","font/woff","font/woff2"],hE=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function uE(i){const e=ts.extname(i),t=ts.basename(i,e).replace(/(-|_)/g," ").toLowerCase().split(" ").map(r=>r.charAt(0).toUpperCase()+r.slice(1));let s=t.length>0;for(const r of t)if(!r.match(hE)){s=!1;break}let n=t.join(" ");return s||(n=`"${n.replace(/[\\"]/g,"\\$&")}"`),n}const dE=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function fE(i){return dE.test(i)?i:encodeURI(i)}const mE={extension:{type:ke.LoadParser,priority:ii.Low},name:"loadWebFont",test(i){return ga(i,cE)||qs(i,lE)},async load(i,e){var s,n,r;const t=Le.ADAPTER.getFontFaceSet();if(t){const o=[],a=((s=e.data)==null?void 0:s.family)??uE(i),l=((r=(n=e.data)==null?void 0:n.weights)==null?void 0:r.filter(h=>aE.includes(h)))??["normal"],c=e.data??{};for(let h=0;hLe.ADAPTER.getFontFaceSet().delete(e))}};Xe.add(mE);const pE=`(function() { "use strict"; const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII="; async function checkImageBitmap() { @@ -903,7 +903,7 @@ ${u}`)}});return await Promise.all(l),r?n[o[0].src]:n}async unload(e){const t=Ti self.postMessage(result); }); })(); -`;let Qo=null,rm=class{constructor(){Qo||(Qo=URL.createObjectURL(new Blob([fE],{type:"application/javascript"}))),this.worker=new Worker(Qo)}};rm.revokeObjectURL=function(){Qo&&(URL.revokeObjectURL(Qo),Qo=null)};const mE=`(function() { +`;let Qo=null,om=class{constructor(){Qo||(Qo=URL.createObjectURL(new Blob([pE],{type:"application/javascript"}))),this.worker=new Worker(Qo)}};om.revokeObjectURL=function(){Qo&&(URL.revokeObjectURL(Qo),Qo=null)};const gE=`(function() { "use strict"; async function loadImageBitmap(url) { const response = await fetch(url); @@ -929,8 +929,8 @@ ${u}`)}});return await Promise.all(l),r?n[o[0].src]:n}async unload(e){const t=Ti } }; })(); -`;let ea=null;class Jb{constructor(){ea||(ea=URL.createObjectURL(new Blob([mE],{type:"application/javascript"}))),this.worker=new Worker(ea)}}Jb.revokeObjectURL=function(){ea&&(URL.revokeObjectURL(ea),ea=null)};let uv=0,Wd;class pE{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise(e=>{const{worker:t}=new rm;t.addEventListener("message",s=>{t.terminate(),rm.revokeObjectURL(),e(s.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e){return this._run("loadImageBitmap",[e])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){Wd===void 0&&(Wd=navigator.hardwareConcurrency||4);let e=this.workerPool.pop();return!e&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()})),e}returnWorker(e){this.workerPool.push(e)}complete(e){e.error!==void 0?this.resolveHash[e.uuid].reject(e.error):this.resolveHash[e.uuid].resolve(e.data),this.resolveHash[e.uuid]=null}async _run(e,t){await this._initWorkers();const s=new Promise((n,r)=>{this.queue.push({id:e,arguments:t,resolve:n,reject:r})});return this.next(),s}next(){if(!this.queue.length)return;const e=this.getWorker();if(!e)return;const t=this.queue.pop(),s=t.id;this.resolveHash[uv]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:uv++,id:s})}}const dv=new pE;function Rl(i,e,t){i.resource.internal=!0;const s=new ze(i),n=()=>{delete e.promiseCache[t],zr.has(t)&&zr.remove(t)};return s.baseTexture.once("destroyed",()=>{t in e.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),n())}),s.once("destroyed",()=>{i.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),n())}),s}const gE=[".jpeg",".jpg",".png",".webp",".avif"],vE=["image/jpeg","image/png","image/webp","image/avif"];async function yE(i){const e=await Le.ADAPTER.fetch(i);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${i}: ${e.status} ${e.statusText}`);const t=await e.blob();return await createImageBitmap(t)}const hu={name:"loadTextures",extension:{type:ke.LoadParser,priority:ii.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(i){return ga(i,vE)||qs(i,gE)},async load(i,e,t){var a;const s=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap;let n;s?this.config.preferWorkers&&await dv.isImageBitmapSupported()?n=await dv.loadImageBitmap(i):n=await yE(i):n=await new Promise((l,c)=>{const h=new Image;h.crossOrigin=this.config.crossOrigin,h.src=i,h.complete?l(h):(h.onload=()=>l(h),h.onerror=u=>c(u))});const r={...e.data};r.resolution??(r.resolution=Yn(i)),s&&((a=r.resourceOptions)==null?void 0:a.ownsImageBitmap)===void 0&&(r.resourceOptions={...r.resourceOptions},r.resourceOptions.ownsImageBitmap=!0);const o=new Qe(n,r);return o.resource.src=i,Rl(o,t,i)},unload(i){i.destroy(!0)}};Xe.add(hu);const xE=".svg",bE="image/svg+xml",wE={extension:{type:ke.LoadParser,priority:ii.High},name:"loadSVG",test(i){return ga(i,bE)||qs(i,xE)},async testParse(i){return qf.test(i)},async parse(i,e,t){var r;const s=new qf(i,(r=e==null?void 0:e.data)==null?void 0:r.resourceOptions);await s.load();const n=new Qe(s,{resolution:Yn(i),...e==null?void 0:e.data});return n.resource.src=e.src,Rl(n,t,e.src)},async load(i,e){return(await Le.ADAPTER.fetch(i)).text()},unload:hu.unload};Xe.add(wE);const SE=[".mp4",".m4v",".webm",".ogv"],ME=["video/mp4","video/webm","video/ogg"],TE={name:"loadVideo",extension:{type:ke.LoadParser,priority:ii.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(i){return ga(i,ME)||qs(i,SE)},async load(i,e,t){var o;let s;const n=await(await Le.ADAPTER.fetch(i)).blob(),r=URL.createObjectURL(n);try{const a={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...(o=e==null?void 0:e.data)==null?void 0:o.resourceOptions,autoLoad:!0},l=new Gb(r,a);await l.load();const c=new Qe(l,{alphaMode:await P_(),resolution:Yn(i),...e==null?void 0:e.data});c.resource.src=i,s=Rl(c,t,i),s.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(r)})}catch(a){throw URL.revokeObjectURL(r),a}return s},unload(i){i.destroy(!0)}};Xe.add(TE);class _E{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(s=>`${encodeURIComponent(s)}=${encodeURIComponent(t[s])}`).join("&")}}getAlias(e){const{alias:t,name:s,src:n,srcs:r}=e;return Ti(t||s||n||r,o=>typeof o=="string"?o:Array.isArray(o)?o.map(a=>(a==null?void 0:a.src)??(a==null?void 0:a.srcs)??a):o!=null&&o.src||o!=null&&o.srcs?o.src??o.srcs:o,!0)}addManifest(e){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const s=[];Array.isArray(t)?t.forEach(n=>{const r=n.src??n.srcs,o=n.alias??n.name;let a;if(typeof o=="string"){const l=this._createBundleAssetId(e,o);s.push(l),a=[o,l]}else{const l=o.map(c=>this._createBundleAssetId(e,c));s.push(...l),a=[...o,...l]}this.add({...n,alias:a,src:r})}):Object.keys(t).forEach(n=>{const r=[n,this._createBundleAssetId(e,n)];if(typeof t[n]=="string")this.add({alias:r,src:t[n]});else if(Array.isArray(t[n]))this.add({alias:r,src:t[n]});else{const o=t[n],a=o.src??o.srcs;this.add({...o,alias:r,src:Array.isArray(a)?a:[a]})}s.push(...r)}),this._bundles[e]=s}add(e,t,s,n,r){const o=[];typeof e=="string"||Array.isArray(e)&&typeof e[0]=="string"?(ht("7.2.0",`Assets.add now uses an object instead of individual parameters. -Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),o.push({alias:e,src:t,data:s,format:n,loadParser:r})):Array.isArray(e)?o.push(...e):o.push(e);let a;a=l=>{this.hasKey(l)&&console.warn(`[Resolver] already has key: ${l} overwriting`)},Ti(o).forEach(l=>{const{src:c,srcs:h}=l;let{data:u,format:d,loadParser:f}=l;const p=Ti(c||h).map(y=>typeof y=="string"?KA(y):Array.isArray(y)?y:[y]),m=this.getAlias(l);Array.isArray(m)?m.forEach(a):a(m);const g=[];p.forEach(y=>{y.forEach(x=>{let v={};if(typeof x!="object"){v.src=x;for(let w=0;w{this._assetMap[y]=g})})}resolveBundle(e){const t=ch(e);e=Ti(e);const s={};return e.forEach(n=>{const r=this._bundles[n];if(r){const o=this.resolve(r),a={};for(const l in o){const c=o[l];a[this._extractAssetIdFromBundle(n,l)]=c}s[n]=a}}),t?s[e[0]]:s}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const s={};for(const n in t)s[n]=t[n].src;return s}return t.src}resolve(e){const t=ch(e);e=Ti(e);const s={};return e.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let r=this._assetMap[n];const o=r[0],a=this._getPreferredOrder(r);a==null||a.priority.forEach(l=>{a.params[l].forEach(c=>{const h=r.filter(u=>u[l]?u[l]===c:!1);h.length&&(r=h)})}),this._resolverHash[n]=r[0]??o}else this._resolverHash[n]=this.buildResolvedAsset({alias:[n],src:n},{});s[n]=this._resolverHash[n]}),t?s[e[0]]:s}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tr.params.format.includes(s.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:s,data:n,loadParser:r,format:o}=t;return(this._basePath||this._rootPath)&&(e.src=ts.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=s??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...n||{},...e.data},e.loadParser=r??e.loadParser,e.format=o??e.format??ts.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class CE{constructor(){this._detections=[],this._initialized=!1,this.resolver=new _E,this.loader=new JA,this.cache=zr,this._backgroundLoader=new qA(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){var r,o;if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let a=e.manifest;typeof a=="string"&&(a=await this.load(a)),this.resolver.addManifest(a)}const t=((r=e.texturePreference)==null?void 0:r.resolution)??1,s=typeof t=="number"?[t]:t,n=await this._detectFormats({preferredFormats:(o=e.texturePreference)==null?void 0:o.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:n,resolution:s}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,s,n,r){this.resolver.add(e,t,s,n,r)}async load(e,t){this._initialized||await this.init();const s=ch(e),n=Ti(e).map(a=>{if(typeof a!="string"){const l=this.resolver.getAlias(a);return l.some(c=>!this.resolver.hasKey(c))&&this.add(a),Array.isArray(l)?l[0]:l}return this.resolver.hasKey(a)||this.add({alias:a,src:a}),a}),r=this.resolver.resolve(n),o=await this._mapLoadToResolve(r,t);return s?o[n[0]]:o}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let s=!1;typeof e=="string"&&(s=!0,e=[e]);const n=this.resolver.resolveBundle(e),r={},o=Object.keys(n);let a=0,l=0;const c=()=>{t==null||t(++a/l)},h=o.map(u=>{const d=n[u];return l+=Object.keys(d).length,this._mapLoadToResolve(d,c).then(f=>{r[u]=f})});return await Promise.all(h),s?r[e[0]]:r}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(s=>{this._backgroundLoader.add(Object.values(s))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return zr.get(e);const t={};for(let s=0;s{const c=r[a.src],h=[a.src];a.alias&&h.push(...a.alias),o[n[l]]=c,zr.set(h,c)}),o}async unload(e){this._initialized||await this.init();const t=Ti(e).map(n=>typeof n!="string"?n.src:n),s=this.resolver.resolve(t);await this._unloadFromResolved(s)}async unloadBundle(e){this._initialized||await this.init(),e=Ti(e);const t=this.resolver.resolveBundle(e),s=Object.keys(t).map(n=>this._unloadFromResolved(t[n]));await Promise.all(s)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(s=>{zr.remove(s.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const s of e.detections)e.skipDetections||await s.test()?t=await s.add(t):e.skipDetections||(t=await s.remove(t));return t=t.filter((s,n)=>t.indexOf(s)===n),t}get detections(){return this._detections}get preferWorkers(){return hu.config.preferWorkers}set preferWorkers(e){ht("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(s=>s in e).forEach(s=>{t.config[s]=e[s]})})}}const rn=new CE;Xe.handleByList(ke.LoadParser,rn.loader.parsers).handleByList(ke.ResolveParser,rn.resolver.parsers).handleByList(ke.CacheParser,rn.cache.parsers).handleByList(ke.DetectionParser,rn.detections);const AE={extension:ke.CacheParser,test:i=>Array.isArray(i)&&i.every(e=>e instanceof ze),getCacheableAssets:(i,e)=>{const t={};return i.forEach(s=>{e.forEach((n,r)=>{t[s+(r===0?"":r+1)]=n})}),t}};Xe.add(AE);async function Qb(i){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=i});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(i)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const EE={extension:{type:ke.DetectionParser,priority:1},test:async()=>Qb("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async i=>[...i,"avif"],remove:async i=>i.filter(e=>e!=="avif")};Xe.add(EE);const IE={extension:{type:ke.DetectionParser,priority:0},test:async()=>Qb("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async i=>[...i,"webp"],remove:async i=>i.filter(e=>e!=="webp")};Xe.add(IE);const fv=["png","jpg","jpeg"],RE={extension:{type:ke.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async i=>[...i,...fv],remove:async i=>i.filter(e=>!fv.includes(e))};Xe.add(RE);const PE="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function mp(i){return PE?!1:document.createElement("video").canPlayType(i)!==""}const kE={extension:{type:ke.DetectionParser,priority:0},test:async()=>mp("video/webm"),add:async i=>[...i,"webm"],remove:async i=>i.filter(e=>e!=="webm")};Xe.add(kE);const FE={extension:{type:ke.DetectionParser,priority:0},test:async()=>mp("video/mp4"),add:async i=>[...i,"mp4","m4v"],remove:async i=>i.filter(e=>e!=="mp4"&&e!=="m4v")};Xe.add(FE);const OE={extension:{type:ke.DetectionParser,priority:0},test:async()=>mp("video/ogg"),add:async i=>[...i,"ogv"],remove:async i=>i.filter(e=>e!=="ogv")};Xe.add(OE);const LE={extension:ke.ResolveParser,test:hu.test,parse:i=>{var e;return{resolution:parseFloat(((e=Le.RETINA_PREFIX.exec(i))==null?void 0:e[1])??"1"),format:ts.extname(i).slice(1),src:i}}};Xe.add(LE);var bs=(i=>(i[i.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",i[i.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",i[i.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",i[i.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",i[i.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",i[i.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",i[i.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",i[i.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",i[i.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",i[i.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",i[i.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",i[i.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",i[i.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",i[i.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",i[i.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",i[i.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",i[i.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",i[i.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",i[i.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",i[i.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",i[i.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",i[i.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",i[i.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",i[i.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",i[i.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",i))(bs||{});const hh={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let Xi,No;function mv(){No={bptc:Xi.getExtension("EXT_texture_compression_bptc"),astc:Xi.getExtension("WEBGL_compressed_texture_astc"),etc:Xi.getExtension("WEBGL_compressed_texture_etc"),s3tc:Xi.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:Xi.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:Xi.getExtension("WEBGL_compressed_texture_pvrtc")||Xi.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:Xi.getExtension("WEBGL_compressed_texture_etc1"),atc:Xi.getExtension("WEBGL_compressed_texture_atc")}}const BE={extension:{type:ke.DetectionParser,priority:2},test:async()=>{const i=Le.ADAPTER.createCanvas().getContext("webgl");return i?(Xi=i,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async i=>{No||mv();const e=[];for(const t in No)No[t]&&e.push(t);return[...e,...i]},remove:async i=>(No||mv(),i.filter(e=>!(e in No)))};Xe.add(BE);class NE extends ru{constructor(e,t={width:1,height:1,autoLoad:!0}){let s,n;typeof e=="string"?(s=e,n=new Uint8Array):(s=null,n=e),super(n,t),this.origin=s,this.buffer=n?new Bf(n):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new Bf(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class ro extends NE{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=ro._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||ro._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,s){const n=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;n.pixelStorei(n.UNPACK_ALIGNMENT,4);for(let r=0,o=this.levels;r=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,s,n,r,o,a){const l=new Array(s);let c=e.byteOffset,h=o,u=a,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*hh[t];for(let m=0;m1?h:d,levelHeight:s>1?u:f,levelBuffer:new Uint8Array(e.buffer,c,p)},c+=p,h=h>>1||1,u=u>>1||1,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*hh[t];return l}}const zd=4,ic=124,DE=32,pv=20,UE=542327876,nc={HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},$E={FOURCC:2},rc={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3},XE=1,VE=2,YE=4,GE=64,jE=512,HE=131072,WE=827611204,zE=861165636,qE=894720068,KE=808540228,ZE=4,JE={[WE]:bs.COMPRESSED_RGBA_S3TC_DXT1_EXT,[zE]:bs.COMPRESSED_RGBA_S3TC_DXT3_EXT,[qE]:bs.COMPRESSED_RGBA_S3TC_DXT5_EXT},QE={70:bs.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:bs.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:bs.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:bs.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:bs.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:bs.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:bs.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:bs.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:bs.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:bs.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:bs.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:bs.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:bs.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function eI(i){const e=new Uint32Array(i);if(e[0]!==UE)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(i,0,ic/Uint32Array.BYTES_PER_ELEMENT),s=t[nc.HEIGHT],n=t[nc.WIDTH],r=t[nc.MIPMAP_COUNT],o=new Uint32Array(i,nc.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,DE/Uint32Array.BYTES_PER_ELEMENT),a=o[XE];if(a&YE){const l=o[$E.FOURCC];if(l!==KE){const x=JE[l],v=zd+ic,w=new Uint8Array(i,v);return[new ro(w,{format:x,width:n,height:s,levels:r})]}const c=zd+ic,h=new Uint32Array(e.buffer,c,pv/Uint32Array.BYTES_PER_ELEMENT),u=h[rc.DXGI_FORMAT],d=h[rc.RESOURCE_DIMENSION],f=h[rc.MISC_FLAG],p=h[rc.ARRAY_SIZE],m=QE[u];if(m===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${u}`);if(f===ZE)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,y=zd+ic+pv;if(p===1)g.push(new Uint8Array(i,y));else{const x=hh[m];let v=0,w=n,_=s;for(let b=0;b>>1,_=_>>>1}let S=y;for(let b=0;bnew ro(x,{format:m,width:n,height:s,levels:r}))}throw a&GE?new Error("DDSParser does not support uncompressed texture data."):a&jE?new Error("DDSParser does not supported YUV uncompressed texture data."):a&HE?new Error("DDSParser does not support single-channel (lumninance) texture data!"):a&VE?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const gv=[171,75,84,88,32,49,49,187,13,10,26,10],tI=67305985,xi={ENDIANNESS:12,GL_TYPE:16,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},om=64,vv={[$e.UNSIGNED_BYTE]:1,[$e.UNSIGNED_SHORT]:2,[$e.INT]:4,[$e.UNSIGNED_INT]:4,[$e.FLOAT]:4,[$e.HALF_FLOAT]:8},sI={[_e.RGBA]:4,[_e.RGB]:3,[_e.RG]:2,[_e.RED]:1,[_e.LUMINANCE]:1,[_e.LUMINANCE_ALPHA]:2,[_e.ALPHA]:1},iI={[$e.UNSIGNED_SHORT_4_4_4_4]:2,[$e.UNSIGNED_SHORT_5_5_5_1]:2,[$e.UNSIGNED_SHORT_5_6_5]:2};function nI(i,e,t=!1){const s=new DataView(e);if(!rI(i,s))return null;const n=s.getUint32(xi.ENDIANNESS,!0)===tI,r=s.getUint32(xi.GL_TYPE,n),o=s.getUint32(xi.GL_FORMAT,n),a=s.getUint32(xi.GL_INTERNAL_FORMAT,n),l=s.getUint32(xi.PIXEL_WIDTH,n),c=s.getUint32(xi.PIXEL_HEIGHT,n)||1,h=s.getUint32(xi.PIXEL_DEPTH,n)||1,u=s.getUint32(xi.NUMBER_OF_ARRAY_ELEMENTS,n)||1,d=s.getUint32(xi.NUMBER_OF_FACES,n),f=s.getUint32(xi.NUMBER_OF_MIPMAP_LEVELS,n),p=s.getUint32(xi.BYTES_OF_KEY_VALUE_DATA,n);if(c===0||h!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");const m=4,g=4,y=l+3&-4,x=c+3&-4,v=new Array(u);let w=l*c;r===0&&(w=y*x);let _;if(r!==0?vv[r]?_=vv[r]*sI[o]:_=iI[r]:_=hh[a],_===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const S=t?aI(s,p,n):null;let b=w*_,A=l,P=c,F=y,E=x,k=om+p;for(let B=0;B1||r!==0?A:F,levelHeight:f>1||r!==0?P:E,levelBuffer:new Uint8Array(e,X,b)},X+=b}k+=D+4,k=k%4!==0?k+4-k%4:k,A=A>>1||1,P=P>>1||1,F=A+m-1&-4,E=P+g-1&-4,b=F*E*_}return r!==0?{uncompressed:v.map(B=>{let D=B[0].levelBuffer,X=!1;return r===$e.FLOAT?D=new Float32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4):r===$e.UNSIGNED_INT?(X=!0,D=new Uint32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)):r===$e.INT&&(X=!0,D=new Int32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)),{resource:new ru(D,{width:B[0].levelWidth,height:B[0].levelHeight}),type:r,format:X?oI(o):o}}),kvData:S}:{compressed:v.map(B=>new ro(null,{format:a,width:l,height:c,levels:f,levelBuffers:B})),kvData:S}}function rI(i,e){for(let t=0;te-n){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let l=0;for(;l{const o=new Qe(r,{mipmap:gi.OFF,alphaMode:xs.NO_PREMULTIPLIED_ALPHA,resolution:Yn(i),...e.data});return Rl(o,t,i)});return n.length===1?n[0]:n},unload(i){Array.isArray(i)?i.forEach(e=>e.destroy(!0)):i.destroy(!0)}};Xe.add(lI);const cI={extension:{type:ke.LoadParser,priority:ii.High},name:"loadKTX",test(i){return qs(i,".ktx")},async load(i,e,t){const s=await(await Le.ADAPTER.fetch(i)).arrayBuffer(),{compressed:n,uncompressed:r,kvData:o}=nI(i,s),a=n??r,l={mipmap:gi.OFF,alphaMode:xs.NO_PREMULTIPLIED_ALPHA,resolution:Yn(i),...e.data},c=a.map(h=>{a===r&&Object.assign(l,{type:h.type,format:h.format});const u=h.resource??h,d=new Qe(u,l);return d.ktxKeyValueData=o,Rl(d,t,i)});return c.length===1?c[0]:c},unload(i){Array.isArray(i)?i.forEach(e=>e.destroy(!0)):i.destroy(!0)}};Xe.add(cI);const hI=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],uI={extension:ke.ResolveParser,test:i=>{const e=ts.extname(i).slice(1);return["basis","ktx","dds"].includes(e)},parse:i=>{var s,n;const e=i.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const r=e.pop();if(hI.includes(r))return{resolution:parseFloat(((s=Le.RETINA_PREFIX.exec(i))==null?void 0:s[1])??"1"),format:r,src:i}}return{resolution:parseFloat(((n=Le.RETINA_PREFIX.exec(i))==null?void 0:n[1])??"1"),format:t,src:i}}};Xe.add(uI);const oc=new ot,dI=4,e1=class Ga{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,s,n){const r=new Image;return r.src=await this.base64(e,t,s,n),r}async base64(e,t,s,n){const r=this.canvas(e,n);if(r.toBlob!==void 0)return new Promise((o,a)=>{r.toBlob(l=>{if(!l){a(new Error("ICanvas.toBlob failed!"));return}const c=new FileReader;c.onload=()=>o(c.result),c.onerror=a,c.readAsDataURL(l)},t,s)});if(r.toDataURL!==void 0)return r.toDataURL(t,s);if(r.convertToBlob!==void 0){const o=await r.convertToBlob({type:t,quality:s});return new Promise((a,l)=>{const c=new FileReader;c.onload=()=>a(c.result),c.onerror=l,c.readAsDataURL(o)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:s,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);o&&Ga._flipY(s,n,r),a&&Ga._unpremultiplyAlpha(s);const l=new W_(n,r,1),c=new ImageData(new Uint8ClampedArray(s.buffer),n,r);return l.context.putImageData(c,0,0),l.canvas}pixels(e,t){const{pixels:s,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);return o&&Ga._flipY(s,n,r),a&&Ga._unpremultiplyAlpha(s),s}_rawPixels(e,t){const s=this.renderer;if(!s)throw new Error("The Extract has already been destroyed");let n,r=!1,o=!1,a,l=!1;e&&(e instanceof vo?a=e:(a=s.generateTexture(e,{region:t,resolution:s.resolution,multisample:s.multisample}),l=!0,t&&(oc.width=t.width,oc.height=t.height,t=oc)));const c=s.gl;if(a){if(n=a.baseTexture.resolution,t=t??a.frame,r=!1,o=a.baseTexture.alphaMode>0&&a.baseTexture.format===_e.RGBA,!l){s.renderTexture.bind(a);const f=a.framebuffer.glFramebuffers[s.CONTEXT_UID];f.blitFramebuffer&&s.framebuffer.bind(f.blitFramebuffer)}}else n=s.resolution,t||(t=oc,t.width=s.width/n,t.height=s.height/n),r=!0,o=this._rendererPremultipliedAlpha,s.renderTexture.bind();const h=Math.max(Math.round(t.width*n),1),u=Math.max(Math.round(t.height*n),1),d=new Uint8Array(dI*h*u);return c.readPixels(Math.round(t.x*n),Math.round(t.y*n),h,u,c.RGBA,c.UNSIGNED_BYTE,d),l&&(a==null||a.destroy(!0)),{pixels:d,width:h,height:u,flipY:r,premultipliedAlpha:o}}destroy(){this.renderer=null}static _flipY(e,t,s){const n=t<<2,r=s>>1,o=new Uint8Array(n);for(let a=0;a=0&&a>=0&&n>=0&&r>=0)){e.length=0;return}const l=Math.ceil(2.3*Math.sqrt(o+a)),c=l*8+(n?4:0)+(r?4:0);if(e.length=c,c===0)return;if(l===0){e.length=8,e[0]=e[6]=t+n,e[1]=e[3]=s+r,e[2]=e[4]=t-n,e[5]=e[7]=s-r;return}let h=0,u=l*4+(n?2:0)+2,d=u,f=c;{const p=n+o,m=r,g=t+p,y=t-p,x=s+m;if(e[h++]=g,e[h++]=x,e[--u]=x,e[--u]=y,r){const v=s-m;e[d++]=y,e[d++]=v,e[--f]=v,e[--f]=g}}for(let p=1;p0||e&&s<=0){const n=t/2;for(let r=n+n%2;r=6){yv(t,!1);const o=[];for(let c=0;c=0&&r>=0&&o.push(t,s,t+n,s,t+n,s+r,t,s+r)},triangulate(i,e){const t=i.points,s=e.points;if(t.length===0)return;const n=s.length/2;s.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(n,n+1,n+2,n+1,n+2,n+3)}},pI={build(i){uh.build(i)},triangulate(i,e){uh.triangulate(i,e)}};var ci=(i=>(i.MITER="miter",i.BEVEL="bevel",i.ROUND="round",i))(ci||{}),fr=(i=>(i.BUTT="butt",i.ROUND="round",i.SQUARE="square",i))(fr||{});const aa={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(i,e=20){if(!this.adaptive||!i||isNaN(i))return e;let t=Math.ceil(i/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class xv{static curveTo(e,t,s,n,r,o){const a=o[o.length-2],l=o[o.length-1]-t,c=a-e,h=n-t,u=s-e,d=Math.abs(l*u-c*h);if(d<1e-8||r===0)return(o[o.length-2]!==e||o[o.length-1]!==t)&&o.push(e,t),null;const f=l*l+c*c,p=h*h+u*u,m=l*h+c*u,g=r*Math.sqrt(f)/d,y=r*Math.sqrt(p)/d,x=g*m/f,v=y*m/p,w=g*u+y*c,_=g*h+y*l,S=c*(y+x),b=l*(y+x),A=u*(g+v),P=h*(g+v),F=Math.atan2(b-_,S-w),E=Math.atan2(P-_,A-w);return{cx:w+e,cy:_+t,radius:r,startAngle:F,endAngle:E,anticlockwise:c*h>u*l}}static arc(e,t,s,n,r,o,a,l,c){const h=a-o,u=aa._segmentsCount(Math.abs(h)*r,Math.ceil(Math.abs(h)/sh)*40),d=h/(u*2),f=d*2,p=Math.cos(d),m=Math.sin(d),g=u-1,y=g%1/g;for(let x=0;x<=g;++x){const v=x+y*x,w=d+o+f*v,_=Math.cos(w),S=-Math.sin(w);c.push((p*_+m*S)*r+s,(p*-S+m*_)*r+n)}}}class gI{constructor(){this.reset()}begin(e,t,s){this.reset(),this.style=e,this.start=t,this.attribStart=s}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class pp{static curveLength(e,t,s,n,r,o,a,l){let c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,y=0,x=0,v=0,w=e,_=t;for(let S=1;S<=10;++S)h=S/10,u=h*h,d=u*h,f=1-h,p=f*f,m=p*f,g=m*e+3*p*h*s+3*f*u*r+d*a,y=m*t+3*p*h*n+3*f*u*o+d*l,x=w-g,v=_-y,w=g,_=y,c+=Math.sqrt(x*x+v*v);return c}static curveTo(e,t,s,n,r,o,a){const l=a[a.length-2],c=a[a.length-1];a.length-=2;const h=aa._segmentsCount(pp.curveLength(l,c,e,t,s,n,r,o));let u=0,d=0,f=0,p=0,m=0;a.push(l,c);for(let g=1,y=0;g<=h;++g)y=g/h,u=1-y,d=u*u,f=d*u,p=y*y,m=p*y,a.push(f*l+3*d*y*e+3*u*p*s+m*r,f*c+3*d*y*t+3*u*p*n+m*o)}}function bv(i,e,t,s,n,r,o,a){const l=i-t*n,c=e-s*n,h=i+t*r,u=e+s*r;let d,f;o?(d=s,f=-t):(d=-s,f=t);const p=l+d,m=c+f,g=h+d,y=u+f;return a.push(p,m,g,y),2}function Nr(i,e,t,s,n,r,o,a){const l=t-i,c=s-e;let h=Math.atan2(l,c),u=Math.atan2(n-i,r-e);a&&hu&&(u+=Math.PI*2);let d=h;const f=u-h,p=Math.abs(f),m=Math.sqrt(l*l+c*c),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,y=f/g;if(d+=y,a){o.push(i,e,t,s);for(let x=1,v=d;x=0&&(r.join===ci.ROUND?d+=Nr(v,w,v-b*B,w-A*B,v-P*B,w-F*B,h,!1)+4:d+=2,h.push(v-P*D,w-F*D,v+P*B,w+F*B));continue}const K=(-b+y)*(-A+w)-(-b+v)*(-A+x),ie=(-P+_)*(-F+w)-(-P+v)*(-F+S),re=(C*ie-O*K)/V,pe=(L*K-R*ie)/V,ge=(re-v)*(re-v)+(pe-w)*(pe-w),he=v+(re-v)*B,fe=w+(pe-w)*B,Y=v-(re-v)*D,W=w-(pe-w)*D,H=Math.min(C*C+R*R,O*O+L*L),G=j?B:D,q=H+G*G*m,se=ge<=q;let ue=r.join;if(ue===ci.MITER&&ge/m>g&&(ue=ci.BEVEL),se)switch(ue){case ci.MITER:{h.push(he,fe,Y,W);break}case ci.BEVEL:{j?h.push(he,fe,v+b*D,w+A*D,he,fe,v+P*D,w+F*D):h.push(v-b*B,w-A*B,Y,W,v-P*B,w-F*B,Y,W),d+=2;break}case ci.ROUND:{j?(h.push(he,fe,v+b*D,w+A*D),d+=Nr(v,w,v+b*D,w+A*D,v+P*D,w+F*D,h,!0)+4,h.push(he,fe,v+P*D,w+F*D)):(h.push(v-b*B,w-A*B,Y,W),d+=Nr(v,w,v-b*B,w-A*B,v-P*B,w-F*B,h,!1)+4,h.push(v-P*B,w-F*B,Y,W));break}}else{switch(h.push(v-b*B,w-A*B,v+b*D,w+A*D),ue){case ci.MITER:{j?h.push(Y,W,Y,W):h.push(he,fe,he,fe),d+=2;break}case ci.ROUND:{j?d+=Nr(v,w,v+b*D,w+A*D,v+P*D,w+F*D,h,!0)+2:d+=Nr(v,w,v-b*B,w-A*B,v-P*B,w-F*B,h,!1)+2;break}}h.push(v-P*B,w-F*B,v+P*D,w+F*D),d+=2}}y=s[(u-2)*2],x=s[(u-2)*2+1],v=s[(u-1)*2],w=s[(u-1)*2+1],b=-(x-w),A=y-v,E=Math.sqrt(b*b+A*A),b/=E,A/=E,b*=p,A*=p,h.push(v-b*B,w-A*B,v+b*D,w+A*D),l||(r.cap===fr.ROUND?d+=Nr(v-b*(B-D)*.5,w-A*(B-D)*.5,v-b*B,w-A*B,v+b*D,w+A*D,h,!1)+2:r.cap===fr.SQUARE&&(d+=bv(v,w,b,A,B,D,!1,h)));const X=e.indices,N=aa.epsilon*aa.epsilon;for(let U=f;U0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,s=null,n=null){const r=new dh(e,t,s,n);return this.graphicsData.push(r),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const s=new dh(e,null,null,t),n=this.graphicsData[this.graphicsData.length-1];return s.lineStyle=n.lineStyle,n.holes.push(s),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(s=this.batches[this.batches.length-1],n=s.style);for(let l=this.shapeIndex;l65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&a===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=a?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(n=ac.pop(),n||(n=new Uf,n.texArray=new Yf),this.drawCalls.push(n)),n.start=h,n.size=0,n.texArray.count=0,n.type=c),m.touched=1,m._batchEnabled=e,m._batchLocation=r,m.wrapMode=Ii.REPEAT,n.texArray.elements[n.texArray.count++]=m,r++)),n.size+=d.size,h+=d.size,a=m._batchLocation,this.addColors(t,p.color,p.alpha,d.attribSize,d.attribStart),this.addTextureIds(s,a,d.attribSize,d.attribStart)}Qe._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,s=this.colors,n=this.textureIds,r=new ArrayBuffer(e.length*3*4),o=new Float32Array(r),a=new Uint32Array(r);let l=0;for(let c=0;c0&&e.alpha>0;return s?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:s},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new no,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new no,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const s=this.currentPath.points,n=s[s.length-2],r=s[s.length-1];return(n!==e||r!==t)&&s.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,s,n){this._initCurve();const r=this.currentPath.points;return r.length===0&&this.moveTo(0,0),gp.curveTo(e,t,s,n,r),this}bezierCurveTo(e,t,s,n,r,o){return this._initCurve(),pp.curveTo(e,t,s,n,r,o,this.currentPath.points),this}arcTo(e,t,s,n,r){this._initCurve(e,t);const o=this.currentPath.points,a=xv.curveTo(e,t,s,n,r,o);if(a){const{cx:l,cy:c,radius:h,startAngle:u,endAngle:d,anticlockwise:f}=a;this.arc(l,c,h,u,d,f)}return this}arc(e,t,s,n,r,o=!1){if(n===r)return this;if(!o&&r<=n?r+=sh:o&&n<=r&&(n+=sh),r-n===0)return this;const a=e+Math.cos(n)*s,l=t+Math.sin(n)*s,c=this._geometry.closePointEps;let h=this.currentPath?this.currentPath.points:null;if(h){const u=Math.abs(h[h.length-2]-a),d=Math.abs(h[h.length-1]-l);u0;return s?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:s},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,s,n){return this.drawShape(new ot(e,t,s,n))}drawRoundedRect(e,t,s,n,r){return this.drawShape(new lu(e,t,s,n,r))}drawCircle(e,t,s){return this.drawShape(new ou(e,t,s))}drawEllipse(e,t,s,n){return this.drawShape(new au(e,t,s,n))}drawPolygon(...e){let t,s=!0;const n=e[0];n.points?(s=n.closeStroke,t=n.points):Array.isArray(e[0])?t=e[0]:t=e;const r=new no(t);return r.closeStroke=s,this.drawShape(r),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===_s.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,s=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=s,this.vertexData=new Float32Array(e.points);for(let n=0;n{const{worker:t}=new om;t.addEventListener("message",s=>{t.terminate(),om.revokeObjectURL(),e(s.data)})}),this._isImageBitmapSupported)}loadImageBitmap(e){return this._run("loadImageBitmap",[e])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){Wd===void 0&&(Wd=navigator.hardwareConcurrency||4);let e=this.workerPool.pop();return!e&&this._createdWorkers{this.complete(t.data),this.returnWorker(t.target),this.next()})),e}returnWorker(e){this.workerPool.push(e)}complete(e){e.error!==void 0?this.resolveHash[e.uuid].reject(e.error):this.resolveHash[e.uuid].resolve(e.data),this.resolveHash[e.uuid]=null}async _run(e,t){await this._initWorkers();const s=new Promise((n,r)=>{this.queue.push({id:e,arguments:t,resolve:n,reject:r})});return this.next(),s}next(){if(!this.queue.length)return;const e=this.getWorker();if(!e)return;const t=this.queue.pop(),s=t.id;this.resolveHash[dv]={resolve:t.resolve,reject:t.reject},e.postMessage({data:t.arguments,uuid:dv++,id:s})}}const fv=new vE;function Rl(i,e,t){i.resource.internal=!0;const s=new ze(i),n=()=>{delete e.promiseCache[t],zr.has(t)&&zr.remove(t)};return s.baseTexture.once("destroyed",()=>{t in e.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),n())}),s.once("destroyed",()=>{i.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),n())}),s}const yE=[".jpeg",".jpg",".png",".webp",".avif"],xE=["image/jpeg","image/png","image/webp","image/avif"];async function bE(i){const e=await Le.ADAPTER.fetch(i);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${i}: ${e.status} ${e.statusText}`);const t=await e.blob();return await createImageBitmap(t)}const hu={name:"loadTextures",extension:{type:ke.LoadParser,priority:ii.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(i){return ga(i,xE)||qs(i,yE)},async load(i,e,t){var a;const s=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap;let n;s?this.config.preferWorkers&&await fv.isImageBitmapSupported()?n=await fv.loadImageBitmap(i):n=await bE(i):n=await new Promise((l,c)=>{const h=new Image;h.crossOrigin=this.config.crossOrigin,h.src=i,h.complete?l(h):(h.onload=()=>l(h),h.onerror=u=>c(u))});const r={...e.data};r.resolution??(r.resolution=Yn(i)),s&&((a=r.resourceOptions)==null?void 0:a.ownsImageBitmap)===void 0&&(r.resourceOptions={...r.resourceOptions},r.resourceOptions.ownsImageBitmap=!0);const o=new Qe(n,r);return o.resource.src=i,Rl(o,t,i)},unload(i){i.destroy(!0)}};Xe.add(hu);const wE=".svg",SE="image/svg+xml",ME={extension:{type:ke.LoadParser,priority:ii.High},name:"loadSVG",test(i){return ga(i,SE)||qs(i,wE)},async testParse(i){return Kf.test(i)},async parse(i,e,t){var r;const s=new Kf(i,(r=e==null?void 0:e.data)==null?void 0:r.resourceOptions);await s.load();const n=new Qe(s,{resolution:Yn(i),...e==null?void 0:e.data});return n.resource.src=e.src,Rl(n,t,e.src)},async load(i,e){return(await Le.ADAPTER.fetch(i)).text()},unload:hu.unload};Xe.add(ME);const TE=[".mp4",".m4v",".webm",".ogv"],_E=["video/mp4","video/webm","video/ogg"],CE={name:"loadVideo",extension:{type:ke.LoadParser,priority:ii.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(i){return ga(i,_E)||qs(i,TE)},async load(i,e,t){var o;let s;const n=await(await Le.ADAPTER.fetch(i)).blob(),r=URL.createObjectURL(n);try{const a={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...(o=e==null?void 0:e.data)==null?void 0:o.resourceOptions,autoLoad:!0},l=new Hb(r,a);await l.load();const c=new Qe(l,{alphaMode:await F2(),resolution:Yn(i),...e==null?void 0:e.data});c.resource.src=i,s=Rl(c,t,i),s.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(r)})}catch(a){throw URL.revokeObjectURL(r),a}return s},unload(i){i.destroy(!0)}};Xe.add(CE);class AE{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(e,t)=>`${e}${this._bundleIdConnector}${t}`,extractAssetIdFromBundle:(e,t)=>t.replace(`${e}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(e){if(this._bundleIdConnector=e.connector??this._bundleIdConnector,this._createBundleAssetId=e.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=e.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...e){e.forEach(t=>{this._preferredOrder.push(t),t.priority||(t.priority=Object.keys(t.params))}),this._resolverHash={}}set basePath(e){this._basePath=e}get basePath(){return this._basePath}set rootPath(e){this._rootPath=e}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(e){if(typeof e=="string")this._defaultSearchParams=e;else{const t=e;this._defaultSearchParams=Object.keys(t).map(s=>`${encodeURIComponent(s)}=${encodeURIComponent(t[s])}`).join("&")}}getAlias(e){const{alias:t,name:s,src:n,srcs:r}=e;return Ti(t||s||n||r,o=>typeof o=="string"?o:Array.isArray(o)?o.map(a=>(a==null?void 0:a.src)??(a==null?void 0:a.srcs)??a):o!=null&&o.src||o!=null&&o.srcs?o.src??o.srcs:o,!0)}addManifest(e){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=e,e.bundles.forEach(t=>{this.addBundle(t.name,t.assets)})}addBundle(e,t){const s=[];Array.isArray(t)?t.forEach(n=>{const r=n.src??n.srcs,o=n.alias??n.name;let a;if(typeof o=="string"){const l=this._createBundleAssetId(e,o);s.push(l),a=[o,l]}else{const l=o.map(c=>this._createBundleAssetId(e,c));s.push(...l),a=[...o,...l]}this.add({...n,alias:a,src:r})}):Object.keys(t).forEach(n=>{const r=[n,this._createBundleAssetId(e,n)];if(typeof t[n]=="string")this.add({alias:r,src:t[n]});else if(Array.isArray(t[n]))this.add({alias:r,src:t[n]});else{const o=t[n],a=o.src??o.srcs;this.add({...o,alias:r,src:Array.isArray(a)?a:[a]})}s.push(...r)}),this._bundles[e]=s}add(e,t,s,n,r){const o=[];typeof e=="string"||Array.isArray(e)&&typeof e[0]=="string"?(ht("7.2.0",`Assets.add now uses an object instead of individual parameters. +Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),o.push({alias:e,src:t,data:s,format:n,loadParser:r})):Array.isArray(e)?o.push(...e):o.push(e);let a;a=l=>{this.hasKey(l)&&console.warn(`[Resolver] already has key: ${l} overwriting`)},Ti(o).forEach(l=>{const{src:c,srcs:h}=l;let{data:u,format:d,loadParser:f}=l;const p=Ti(c||h).map(v=>typeof v=="string"?JA(v):Array.isArray(v)?v:[v]),m=this.getAlias(l);Array.isArray(m)?m.forEach(a):a(m);const g=[];p.forEach(v=>{v.forEach(y=>{let x={};if(typeof y!="object"){x.src=y;for(let M=0;M{this._assetMap[v]=g})})}resolveBundle(e){const t=ch(e);e=Ti(e);const s={};return e.forEach(n=>{const r=this._bundles[n];if(r){const o=this.resolve(r),a={};for(const l in o){const c=o[l];a[this._extractAssetIdFromBundle(n,l)]=c}s[n]=a}}),t?s[e[0]]:s}resolveUrl(e){const t=this.resolve(e);if(typeof e!="string"){const s={};for(const n in t)s[n]=t[n].src;return s}return t.src}resolve(e){const t=ch(e);e=Ti(e);const s={};return e.forEach(n=>{if(!this._resolverHash[n])if(this._assetMap[n]){let r=this._assetMap[n];const o=r[0],a=this._getPreferredOrder(r);a==null||a.priority.forEach(l=>{a.params[l].forEach(c=>{const h=r.filter(u=>u[l]?u[l]===c:!1);h.length&&(r=h)})}),this._resolverHash[n]=r[0]??o}else this._resolverHash[n]=this.buildResolvedAsset({alias:[n],src:n},{});s[n]=this._resolverHash[n]}),t?s[e[0]]:s}hasKey(e){return!!this._assetMap[e]}hasBundle(e){return!!this._bundles[e]}_getPreferredOrder(e){for(let t=0;tr.params.format.includes(s.format));if(n)return n}return this._preferredOrder[0]}_appendDefaultSearchParams(e){if(!this._defaultSearchParams)return e;const t=/\?/.test(e)?"&":"?";return`${e}${t}${this._defaultSearchParams}`}buildResolvedAsset(e,t){const{aliases:s,data:n,loadParser:r,format:o}=t;return(this._basePath||this._rootPath)&&(e.src=ts.toAbsolute(e.src,this._basePath,this._rootPath)),e.alias=s??e.alias??[e.src],e.src=this._appendDefaultSearchParams(e.src),e.data={...n||{},...e.data},e.loadParser=r??e.loadParser,e.format=o??e.format??ts.extname(e.src).slice(1),e.srcs=e.src,e.name=e.alias,e}}class EE{constructor(){this._detections=[],this._initialized=!1,this.resolver=new AE,this.loader=new eE,this.cache=zr,this._backgroundLoader=new ZA(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(e={}){var r,o;if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,e.defaultSearchParams&&this.resolver.setDefaultSearchParams(e.defaultSearchParams),e.basePath&&(this.resolver.basePath=e.basePath),e.bundleIdentifier&&this.resolver.setBundleIdentifier(e.bundleIdentifier),e.manifest){let a=e.manifest;typeof a=="string"&&(a=await this.load(a)),this.resolver.addManifest(a)}const t=((r=e.texturePreference)==null?void 0:r.resolution)??1,s=typeof t=="number"?[t]:t,n=await this._detectFormats({preferredFormats:(o=e.texturePreference)==null?void 0:o.format,skipDetections:e.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:n,resolution:s}}),e.preferences&&this.setPreferences(e.preferences)}add(e,t,s,n,r){this.resolver.add(e,t,s,n,r)}async load(e,t){this._initialized||await this.init();const s=ch(e),n=Ti(e).map(a=>{if(typeof a!="string"){const l=this.resolver.getAlias(a);return l.some(c=>!this.resolver.hasKey(c))&&this.add(a),Array.isArray(l)?l[0]:l}return this.resolver.hasKey(a)||this.add({alias:a,src:a}),a}),r=this.resolver.resolve(n),o=await this._mapLoadToResolve(r,t);return s?o[n[0]]:o}addBundle(e,t){this.resolver.addBundle(e,t)}async loadBundle(e,t){this._initialized||await this.init();let s=!1;typeof e=="string"&&(s=!0,e=[e]);const n=this.resolver.resolveBundle(e),r={},o=Object.keys(n);let a=0,l=0;const c=()=>{t==null||t(++a/l)},h=o.map(u=>{const d=n[u];return l+=Object.keys(d).length,this._mapLoadToResolve(d,c).then(f=>{r[u]=f})});return await Promise.all(h),s?r[e[0]]:r}async backgroundLoad(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolve(e);this._backgroundLoader.add(Object.values(t))}async backgroundLoadBundle(e){this._initialized||await this.init(),typeof e=="string"&&(e=[e]);const t=this.resolver.resolveBundle(e);Object.values(t).forEach(s=>{this._backgroundLoader.add(Object.values(s))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(e){if(typeof e=="string")return zr.get(e);const t={};for(let s=0;s{const c=r[a.src],h=[a.src];a.alias&&h.push(...a.alias),o[n[l]]=c,zr.set(h,c)}),o}async unload(e){this._initialized||await this.init();const t=Ti(e).map(n=>typeof n!="string"?n.src:n),s=this.resolver.resolve(t);await this._unloadFromResolved(s)}async unloadBundle(e){this._initialized||await this.init(),e=Ti(e);const t=this.resolver.resolveBundle(e),s=Object.keys(t).map(n=>this._unloadFromResolved(t[n]));await Promise.all(s)}async _unloadFromResolved(e){const t=Object.values(e);t.forEach(s=>{zr.remove(s.src)}),await this.loader.unload(t)}async _detectFormats(e){let t=[];e.preferredFormats&&(t=Array.isArray(e.preferredFormats)?e.preferredFormats:[e.preferredFormats]);for(const s of e.detections)e.skipDetections||await s.test()?t=await s.add(t):e.skipDetections||(t=await s.remove(t));return t=t.filter((s,n)=>t.indexOf(s)===n),t}get detections(){return this._detections}get preferWorkers(){return hu.config.preferWorkers}set preferWorkers(e){ht("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:e})}setPreferences(e){this.loader.parsers.forEach(t=>{t.config&&Object.keys(t.config).filter(s=>s in e).forEach(s=>{t.config[s]=e[s]})})}}const rn=new EE;Xe.handleByList(ke.LoadParser,rn.loader.parsers).handleByList(ke.ResolveParser,rn.resolver.parsers).handleByList(ke.CacheParser,rn.cache.parsers).handleByList(ke.DetectionParser,rn.detections);const IE={extension:ke.CacheParser,test:i=>Array.isArray(i)&&i.every(e=>e instanceof ze),getCacheableAssets:(i,e)=>{const t={};return i.forEach(s=>{e.forEach((n,r)=>{t[s+(r===0?"":r+1)]=n})}),t}};Xe.add(IE);async function t1(i){if("Image"in globalThis)return new Promise(e=>{const t=new Image;t.onload=()=>{e(!0)},t.onerror=()=>{e(!1)},t.src=i});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const e=await(await fetch(i)).blob();await createImageBitmap(e)}catch{return!1}return!0}return!1}const RE={extension:{type:ke.DetectionParser,priority:1},test:async()=>t1("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async i=>[...i,"avif"],remove:async i=>i.filter(e=>e!=="avif")};Xe.add(RE);const PE={extension:{type:ke.DetectionParser,priority:0},test:async()=>t1("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async i=>[...i,"webp"],remove:async i=>i.filter(e=>e!=="webp")};Xe.add(PE);const mv=["png","jpg","jpeg"],kE={extension:{type:ke.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async i=>[...i,...mv],remove:async i=>i.filter(e=>!mv.includes(e))};Xe.add(kE);const FE="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function pp(i){return FE?!1:document.createElement("video").canPlayType(i)!==""}const OE={extension:{type:ke.DetectionParser,priority:0},test:async()=>pp("video/webm"),add:async i=>[...i,"webm"],remove:async i=>i.filter(e=>e!=="webm")};Xe.add(OE);const LE={extension:{type:ke.DetectionParser,priority:0},test:async()=>pp("video/mp4"),add:async i=>[...i,"mp4","m4v"],remove:async i=>i.filter(e=>e!=="mp4"&&e!=="m4v")};Xe.add(LE);const BE={extension:{type:ke.DetectionParser,priority:0},test:async()=>pp("video/ogg"),add:async i=>[...i,"ogv"],remove:async i=>i.filter(e=>e!=="ogv")};Xe.add(BE);const NE={extension:ke.ResolveParser,test:hu.test,parse:i=>{var e;return{resolution:parseFloat(((e=Le.RETINA_PREFIX.exec(i))==null?void 0:e[1])??"1"),format:ts.extname(i).slice(1),src:i}}};Xe.add(NE);var ws=(i=>(i[i.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",i[i.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",i[i.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",i[i.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",i[i.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",i[i.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",i[i.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",i[i.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",i[i.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",i[i.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",i[i.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",i[i.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",i[i.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",i[i.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",i[i.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",i[i.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",i[i.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",i[i.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",i[i.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",i[i.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",i[i.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",i[i.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",i[i.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",i[i.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",i[i.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",i[i.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",i[i.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",i))(ws||{});const hh={33776:.5,33777:.5,33778:1,33779:1,35916:.5,35917:.5,35918:1,35919:1,37488:.5,37489:.5,37490:1,37491:1,37492:.5,37496:1,37493:.5,37497:1,37494:.5,37495:.5,35840:.5,35842:.5,35841:.25,35843:.25,36196:.5,35986:.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};let Xi,No;function pv(){No={bptc:Xi.getExtension("EXT_texture_compression_bptc"),astc:Xi.getExtension("WEBGL_compressed_texture_astc"),etc:Xi.getExtension("WEBGL_compressed_texture_etc"),s3tc:Xi.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:Xi.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:Xi.getExtension("WEBGL_compressed_texture_pvrtc")||Xi.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:Xi.getExtension("WEBGL_compressed_texture_etc1"),atc:Xi.getExtension("WEBGL_compressed_texture_atc")}}const DE={extension:{type:ke.DetectionParser,priority:2},test:async()=>{const i=Le.ADAPTER.createCanvas().getContext("webgl");return i?(Xi=i,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async i=>{No||pv();const e=[];for(const t in No)No[t]&&e.push(t);return[...e,...i]},remove:async i=>(No||pv(),i.filter(e=>!(e in No)))};Xe.add(DE);class UE extends ru{constructor(e,t={width:1,height:1,autoLoad:!0}){let s,n;typeof e=="string"?(s=e,n=new Uint8Array):(s=null,n=e),super(n,t),this.origin=s,this.buffer=n?new Nf(n):null,this._load=null,this.loaded=!1,this.origin!==null&&t.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(e){}load(){return this._load?this._load:(this._load=fetch(this.origin).then(e=>e.blob()).then(e=>e.arrayBuffer()).then(e=>(this.data=new Uint32Array(e),this.buffer=new Nf(e),this.loaded=!0,this.onBlobLoaded(e),this.update(),this)),this._load)}}class ro extends UE{constructor(e,t){super(e,t),this.format=t.format,this.levels=t.levels||1,this._width=t.width,this._height=t.height,this._extension=ro._formatToExtension(this.format),(t.levelBuffers||this.buffer)&&(this._levelBuffers=t.levelBuffers||ro._createLevelBuffers(e instanceof Uint8Array?e:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(e,t,s){const n=e.gl;if(!e.context.extensions[this._extension])throw new Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;n.pixelStorei(n.UNPACK_ALIGNMENT,4);for(let r=0,o=this.levels;r=33776&&e<=33779)return"s3tc";if(e>=35916&&e<=35919)return"s3tc_sRGB";if(e>=37488&&e<=37497)return"etc";if(e>=35840&&e<=35843)return"pvrtc";if(e===36196)return"etc1";if(e===35986||e===35987||e===34798)return"atc";if(e>=36492&&e<=36495)return"bptc";if(e===37808)return"astc";throw new Error(`Invalid (compressed) texture format given: ${e}`)}static _createLevelBuffers(e,t,s,n,r,o,a){const l=new Array(s);let c=e.byteOffset,h=o,u=a,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*hh[t];for(let m=0;m1?h:d,levelHeight:s>1?u:f,levelBuffer:new Uint8Array(e.buffer,c,p)},c+=p,h=h>>1||1,u=u>>1||1,d=h+n-1&~(n-1),f=u+r-1&~(r-1),p=d*f*hh[t];return l}}const zd=4,ic=124,$E=32,gv=20,XE=542327876,nc={HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},VE={FOURCC:2},rc={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3},YE=1,GE=2,jE=4,HE=64,WE=512,zE=131072,qE=827611204,KE=861165636,ZE=894720068,JE=808540228,QE=4,eI={[qE]:ws.COMPRESSED_RGBA_S3TC_DXT1_EXT,[KE]:ws.COMPRESSED_RGBA_S3TC_DXT3_EXT,[ZE]:ws.COMPRESSED_RGBA_S3TC_DXT5_EXT},tI={70:ws.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:ws.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:ws.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:ws.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:ws.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:ws.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:ws.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:ws.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:ws.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:ws.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:ws.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:ws.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:ws.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function sI(i){const e=new Uint32Array(i);if(e[0]!==XE)throw new Error("Invalid DDS file magic word");const t=new Uint32Array(i,0,ic/Uint32Array.BYTES_PER_ELEMENT),s=t[nc.HEIGHT],n=t[nc.WIDTH],r=t[nc.MIPMAP_COUNT],o=new Uint32Array(i,nc.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,$E/Uint32Array.BYTES_PER_ELEMENT),a=o[YE];if(a&jE){const l=o[VE.FOURCC];if(l!==JE){const y=eI[l],x=zd+ic,M=new Uint8Array(i,x);return[new ro(M,{format:y,width:n,height:s,levels:r})]}const c=zd+ic,h=new Uint32Array(e.buffer,c,gv/Uint32Array.BYTES_PER_ELEMENT),u=h[rc.DXGI_FORMAT],d=h[rc.RESOURCE_DIMENSION],f=h[rc.MISC_FLAG],p=h[rc.ARRAY_SIZE],m=tI[u];if(m===void 0)throw new Error(`DDSParser cannot parse texture data with DXGI format ${u}`);if(f===QE)throw new Error("DDSParser does not support cubemap textures");if(d===6)throw new Error("DDSParser does not supported 3D texture data");const g=new Array,v=zd+ic+gv;if(p===1)g.push(new Uint8Array(i,v));else{const y=hh[m];let x=0,M=n,C=s;for(let b=0;b>>1,C=C>>>1}let w=v;for(let b=0;bnew ro(y,{format:m,width:n,height:s,levels:r}))}throw a&HE?new Error("DDSParser does not support uncompressed texture data."):a&WE?new Error("DDSParser does not supported YUV uncompressed texture data."):a&zE?new Error("DDSParser does not support single-channel (lumninance) texture data!"):a&GE?new Error("DDSParser does not support single-channel (alpha) texture data!"):new Error("DDSParser failed to load a texture file due to an unknown reason!")}const vv=[171,75,84,88,32,49,49,187,13,10,26,10],iI=67305985,xi={ENDIANNESS:12,GL_TYPE:16,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},am=64,yv={[$e.UNSIGNED_BYTE]:1,[$e.UNSIGNED_SHORT]:2,[$e.INT]:4,[$e.UNSIGNED_INT]:4,[$e.FLOAT]:4,[$e.HALF_FLOAT]:8},nI={[_e.RGBA]:4,[_e.RGB]:3,[_e.RG]:2,[_e.RED]:1,[_e.LUMINANCE]:1,[_e.LUMINANCE_ALPHA]:2,[_e.ALPHA]:1},rI={[$e.UNSIGNED_SHORT_4_4_4_4]:2,[$e.UNSIGNED_SHORT_5_5_5_1]:2,[$e.UNSIGNED_SHORT_5_6_5]:2};function oI(i,e,t=!1){const s=new DataView(e);if(!aI(i,s))return null;const n=s.getUint32(xi.ENDIANNESS,!0)===iI,r=s.getUint32(xi.GL_TYPE,n),o=s.getUint32(xi.GL_FORMAT,n),a=s.getUint32(xi.GL_INTERNAL_FORMAT,n),l=s.getUint32(xi.PIXEL_WIDTH,n),c=s.getUint32(xi.PIXEL_HEIGHT,n)||1,h=s.getUint32(xi.PIXEL_DEPTH,n)||1,u=s.getUint32(xi.NUMBER_OF_ARRAY_ELEMENTS,n)||1,d=s.getUint32(xi.NUMBER_OF_FACES,n),f=s.getUint32(xi.NUMBER_OF_MIPMAP_LEVELS,n),p=s.getUint32(xi.BYTES_OF_KEY_VALUE_DATA,n);if(c===0||h!==1)throw new Error("Only 2D textures are supported");if(d!==1)throw new Error("CubeTextures are not supported by KTXLoader yet!");if(u!==1)throw new Error("WebGL does not support array textures");const m=4,g=4,v=l+3&-4,y=c+3&-4,x=new Array(u);let M=l*c;r===0&&(M=v*y);let C;if(r!==0?yv[r]?C=yv[r]*nI[o]:C=rI[r]:C=hh[a],C===void 0)throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");const w=t?cI(s,p,n):null;let b=M*C,_=l,E=c,F=v,I=y,k=am+p;for(let B=0;B1||r!==0?_:F,levelHeight:f>1||r!==0?E:I,levelBuffer:new Uint8Array(e,X,b)},X+=b}k+=D+4,k=k%4!==0?k+4-k%4:k,_=_>>1||1,E=E>>1||1,F=_+m-1&-4,I=E+g-1&-4,b=F*I*C}return r!==0?{uncompressed:x.map(B=>{let D=B[0].levelBuffer,X=!1;return r===$e.FLOAT?D=new Float32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4):r===$e.UNSIGNED_INT?(X=!0,D=new Uint32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)):r===$e.INT&&(X=!0,D=new Int32Array(B[0].levelBuffer.buffer,B[0].levelBuffer.byteOffset,B[0].levelBuffer.byteLength/4)),{resource:new ru(D,{width:B[0].levelWidth,height:B[0].levelHeight}),type:r,format:X?lI(o):o}}),kvData:w}:{compressed:x.map(B=>new ro(null,{format:a,width:l,height:c,levels:f,levelBuffers:B})),kvData:w}}function aI(i,e){for(let t=0;te-n){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let l=0;for(;l{const o=new Qe(r,{mipmap:gi.OFF,alphaMode:bs.NO_PREMULTIPLIED_ALPHA,resolution:Yn(i),...e.data});return Rl(o,t,i)});return n.length===1?n[0]:n},unload(i){Array.isArray(i)?i.forEach(e=>e.destroy(!0)):i.destroy(!0)}};Xe.add(hI);const uI={extension:{type:ke.LoadParser,priority:ii.High},name:"loadKTX",test(i){return qs(i,".ktx")},async load(i,e,t){const s=await(await Le.ADAPTER.fetch(i)).arrayBuffer(),{compressed:n,uncompressed:r,kvData:o}=oI(i,s),a=n??r,l={mipmap:gi.OFF,alphaMode:bs.NO_PREMULTIPLIED_ALPHA,resolution:Yn(i),...e.data},c=a.map(h=>{a===r&&Object.assign(l,{type:h.type,format:h.format});const u=h.resource??h,d=new Qe(u,l);return d.ktxKeyValueData=o,Rl(d,t,i)});return c.length===1?c[0]:c},unload(i){Array.isArray(i)?i.forEach(e=>e.destroy(!0)):i.destroy(!0)}};Xe.add(uI);const dI=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],fI={extension:ke.ResolveParser,test:i=>{const e=ts.extname(i).slice(1);return["basis","ktx","dds"].includes(e)},parse:i=>{var s,n;const e=i.split("."),t=e.pop();if(["ktx","dds"].includes(t)){const r=e.pop();if(dI.includes(r))return{resolution:parseFloat(((s=Le.RETINA_PREFIX.exec(i))==null?void 0:s[1])??"1"),format:r,src:i}}return{resolution:parseFloat(((n=Le.RETINA_PREFIX.exec(i))==null?void 0:n[1])??"1"),format:t,src:i}}};Xe.add(fI);const oc=new ot,mI=4,s1=class Ga{constructor(e){this.renderer=e,this._rendererPremultipliedAlpha=!1}contextChange(){var t;const e=(t=this.renderer)==null?void 0:t.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(e&&e.alpha&&e.premultipliedAlpha)}async image(e,t,s,n){const r=new Image;return r.src=await this.base64(e,t,s,n),r}async base64(e,t,s,n){const r=this.canvas(e,n);if(r.toBlob!==void 0)return new Promise((o,a)=>{r.toBlob(l=>{if(!l){a(new Error("ICanvas.toBlob failed!"));return}const c=new FileReader;c.onload=()=>o(c.result),c.onerror=a,c.readAsDataURL(l)},t,s)});if(r.toDataURL!==void 0)return r.toDataURL(t,s);if(r.convertToBlob!==void 0){const o=await r.convertToBlob({type:t,quality:s});return new Promise((a,l)=>{const c=new FileReader;c.onload=()=>a(c.result),c.onerror=l,c.readAsDataURL(o)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(e,t){const{pixels:s,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);o&&Ga._flipY(s,n,r),a&&Ga._unpremultiplyAlpha(s);const l=new q2(n,r,1),c=new ImageData(new Uint8ClampedArray(s.buffer),n,r);return l.context.putImageData(c,0,0),l.canvas}pixels(e,t){const{pixels:s,width:n,height:r,flipY:o,premultipliedAlpha:a}=this._rawPixels(e,t);return o&&Ga._flipY(s,n,r),a&&Ga._unpremultiplyAlpha(s),s}_rawPixels(e,t){const s=this.renderer;if(!s)throw new Error("The Extract has already been destroyed");let n,r=!1,o=!1,a,l=!1;e&&(e instanceof vo?a=e:(a=s.generateTexture(e,{region:t,resolution:s.resolution,multisample:s.multisample}),l=!0,t&&(oc.width=t.width,oc.height=t.height,t=oc)));const c=s.gl;if(a){if(n=a.baseTexture.resolution,t=t??a.frame,r=!1,o=a.baseTexture.alphaMode>0&&a.baseTexture.format===_e.RGBA,!l){s.renderTexture.bind(a);const f=a.framebuffer.glFramebuffers[s.CONTEXT_UID];f.blitFramebuffer&&s.framebuffer.bind(f.blitFramebuffer)}}else n=s.resolution,t||(t=oc,t.width=s.width/n,t.height=s.height/n),r=!0,o=this._rendererPremultipliedAlpha,s.renderTexture.bind();const h=Math.max(Math.round(t.width*n),1),u=Math.max(Math.round(t.height*n),1),d=new Uint8Array(mI*h*u);return c.readPixels(Math.round(t.x*n),Math.round(t.y*n),h,u,c.RGBA,c.UNSIGNED_BYTE,d),l&&(a==null||a.destroy(!0)),{pixels:d,width:h,height:u,flipY:r,premultipliedAlpha:o}}destroy(){this.renderer=null}static _flipY(e,t,s){const n=t<<2,r=s>>1,o=new Uint8Array(n);for(let a=0;a=0&&a>=0&&n>=0&&r>=0)){e.length=0;return}const l=Math.ceil(2.3*Math.sqrt(o+a)),c=l*8+(n?4:0)+(r?4:0);if(e.length=c,c===0)return;if(l===0){e.length=8,e[0]=e[6]=t+n,e[1]=e[3]=s+r,e[2]=e[4]=t-n,e[5]=e[7]=s-r;return}let h=0,u=l*4+(n?2:0)+2,d=u,f=c;{const p=n+o,m=r,g=t+p,v=t-p,y=s+m;if(e[h++]=g,e[h++]=y,e[--u]=y,e[--u]=v,r){const x=s-m;e[d++]=v,e[d++]=x,e[--f]=x,e[--f]=g}}for(let p=1;p0||e&&s<=0){const n=t/2;for(let r=n+n%2;r=6){xv(t,!1);const o=[];for(let c=0;c=0&&r>=0&&o.push(t,s,t+n,s,t+n,s+r,t,s+r)},triangulate(i,e){const t=i.points,s=e.points;if(t.length===0)return;const n=s.length/2;s.push(t[0],t[1],t[2],t[3],t[6],t[7],t[4],t[5]),e.indices.push(n,n+1,n+2,n+1,n+2,n+3)}},vI={build(i){uh.build(i)},triangulate(i,e){uh.triangulate(i,e)}};var ci=(i=>(i.MITER="miter",i.BEVEL="bevel",i.ROUND="round",i))(ci||{}),fr=(i=>(i.BUTT="butt",i.ROUND="round",i.SQUARE="square",i))(fr||{});const aa={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:1e-4,_segmentsCount(i,e=20){if(!this.adaptive||!i||isNaN(i))return e;let t=Math.ceil(i/this.maxLength);return tthis.maxSegments&&(t=this.maxSegments),t}};class bv{static curveTo(e,t,s,n,r,o){const a=o[o.length-2],l=o[o.length-1]-t,c=a-e,h=n-t,u=s-e,d=Math.abs(l*u-c*h);if(d<1e-8||r===0)return(o[o.length-2]!==e||o[o.length-1]!==t)&&o.push(e,t),null;const f=l*l+c*c,p=h*h+u*u,m=l*h+c*u,g=r*Math.sqrt(f)/d,v=r*Math.sqrt(p)/d,y=g*m/f,x=v*m/p,M=g*u+v*c,C=g*h+v*l,w=c*(v+y),b=l*(v+y),_=u*(g+x),E=h*(g+x),F=Math.atan2(b-C,w-M),I=Math.atan2(E-C,_-M);return{cx:M+e,cy:C+t,radius:r,startAngle:F,endAngle:I,anticlockwise:c*h>u*l}}static arc(e,t,s,n,r,o,a,l,c){const h=a-o,u=aa._segmentsCount(Math.abs(h)*r,Math.ceil(Math.abs(h)/sh)*40),d=h/(u*2),f=d*2,p=Math.cos(d),m=Math.sin(d),g=u-1,v=g%1/g;for(let y=0;y<=g;++y){const x=y+v*y,M=d+o+f*x,C=Math.cos(M),w=-Math.sin(M);c.push((p*C+m*w)*r+s,(p*-w+m*C)*r+n)}}}class yI{constructor(){this.reset()}begin(e,t,s){this.reset(),this.style=e,this.start=t,this.attribStart=s}end(e,t){this.attribSize=t-this.attribStart,this.size=e-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class gp{static curveLength(e,t,s,n,r,o,a,l){let c=0,h=0,u=0,d=0,f=0,p=0,m=0,g=0,v=0,y=0,x=0,M=e,C=t;for(let w=1;w<=10;++w)h=w/10,u=h*h,d=u*h,f=1-h,p=f*f,m=p*f,g=m*e+3*p*h*s+3*f*u*r+d*a,v=m*t+3*p*h*n+3*f*u*o+d*l,y=M-g,x=C-v,M=g,C=v,c+=Math.sqrt(y*y+x*x);return c}static curveTo(e,t,s,n,r,o,a){const l=a[a.length-2],c=a[a.length-1];a.length-=2;const h=aa._segmentsCount(gp.curveLength(l,c,e,t,s,n,r,o));let u=0,d=0,f=0,p=0,m=0;a.push(l,c);for(let g=1,v=0;g<=h;++g)v=g/h,u=1-v,d=u*u,f=d*u,p=v*v,m=p*v,a.push(f*l+3*d*v*e+3*u*p*s+m*r,f*c+3*d*v*t+3*u*p*n+m*o)}}function wv(i,e,t,s,n,r,o,a){const l=i-t*n,c=e-s*n,h=i+t*r,u=e+s*r;let d,f;o?(d=s,f=-t):(d=-s,f=t);const p=l+d,m=c+f,g=h+d,v=u+f;return a.push(p,m,g,v),2}function Nr(i,e,t,s,n,r,o,a){const l=t-i,c=s-e;let h=Math.atan2(l,c),u=Math.atan2(n-i,r-e);a&&hu&&(u+=Math.PI*2);let d=h;const f=u-h,p=Math.abs(f),m=Math.sqrt(l*l+c*c),g=(15*p*Math.sqrt(m)/Math.PI>>0)+1,v=f/g;if(d+=v,a){o.push(i,e,t,s);for(let y=1,x=d;y=0&&(r.join===ci.ROUND?d+=Nr(x,M,x-b*B,M-_*B,x-E*B,M-F*B,h,!1)+4:d+=2,h.push(x-E*D,M-F*D,x+E*B,M+F*B));continue}const K=(-b+v)*(-_+M)-(-b+x)*(-_+y),ie=(-E+C)*(-F+M)-(-E+x)*(-F+w),re=(A*ie-O*K)/V,pe=(L*K-P*ie)/V,ge=(re-x)*(re-x)+(pe-M)*(pe-M),he=x+(re-x)*B,fe=M+(pe-M)*B,Y=x-(re-x)*D,W=M-(pe-M)*D,H=Math.min(A*A+P*P,O*O+L*L),G=j?B:D,q=H+G*G*m,se=ge<=q;let ue=r.join;if(ue===ci.MITER&&ge/m>g&&(ue=ci.BEVEL),se)switch(ue){case ci.MITER:{h.push(he,fe,Y,W);break}case ci.BEVEL:{j?h.push(he,fe,x+b*D,M+_*D,he,fe,x+E*D,M+F*D):h.push(x-b*B,M-_*B,Y,W,x-E*B,M-F*B,Y,W),d+=2;break}case ci.ROUND:{j?(h.push(he,fe,x+b*D,M+_*D),d+=Nr(x,M,x+b*D,M+_*D,x+E*D,M+F*D,h,!0)+4,h.push(he,fe,x+E*D,M+F*D)):(h.push(x-b*B,M-_*B,Y,W),d+=Nr(x,M,x-b*B,M-_*B,x-E*B,M-F*B,h,!1)+4,h.push(x-E*B,M-F*B,Y,W));break}}else{switch(h.push(x-b*B,M-_*B,x+b*D,M+_*D),ue){case ci.MITER:{j?h.push(Y,W,Y,W):h.push(he,fe,he,fe),d+=2;break}case ci.ROUND:{j?d+=Nr(x,M,x+b*D,M+_*D,x+E*D,M+F*D,h,!0)+2:d+=Nr(x,M,x-b*B,M-_*B,x-E*B,M-F*B,h,!1)+2;break}}h.push(x-E*B,M-F*B,x+E*D,M+F*D),d+=2}}v=s[(u-2)*2],y=s[(u-2)*2+1],x=s[(u-1)*2],M=s[(u-1)*2+1],b=-(y-M),_=v-x,I=Math.sqrt(b*b+_*_),b/=I,_/=I,b*=p,_*=p,h.push(x-b*B,M-_*B,x+b*D,M+_*D),l||(r.cap===fr.ROUND?d+=Nr(x-b*(B-D)*.5,M-_*(B-D)*.5,x-b*B,M-_*B,x+b*D,M+_*D,h,!1)+2:r.cap===fr.SQUARE&&(d+=wv(x,M,b,_,B,D,!1,h)));const X=e.indices,N=aa.epsilon*aa.epsilon;for(let U=f;U0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape(e,t=null,s=null,n=null){const r=new dh(e,t,s,n);return this.graphicsData.push(r),this.dirty++,this}drawHole(e,t=null){if(!this.graphicsData.length)return null;const s=new dh(e,null,null,t),n=this.graphicsData[this.graphicsData.length-1];return s.lineStyle=n.lineStyle,n.holes.push(s),this.dirty++,this}destroy(){super.destroy();for(let e=0;e0&&(s=this.batches[this.batches.length-1],n=s.style);for(let l=this.shapeIndex;l65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&a===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=a?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles(e,t){return!(!e||!t||e.texture.baseTexture!==t.texture.baseTexture||e.color+e.alpha!==t.color+t.alpha||!!e.native!=!!t.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let e=0,t=this.graphicsData.length;e65535*2)return!1;const e=this.batches;for(let t=0;t0&&(n=ac.pop(),n||(n=new $f,n.texArray=new Gf),this.drawCalls.push(n)),n.start=h,n.size=0,n.texArray.count=0,n.type=c),m.touched=1,m._batchEnabled=e,m._batchLocation=r,m.wrapMode=Ii.REPEAT,n.texArray.elements[n.texArray.count++]=m,r++)),n.size+=d.size,h+=d.size,a=m._batchLocation,this.addColors(t,p.color,p.alpha,d.attribSize,d.attribStart),this.addTextureIds(s,a,d.attribSize,d.attribStart)}Qe._globalBatch=e,this.packAttributes()}packAttributes(){const e=this.points,t=this.uvs,s=this.colors,n=this.textureIds,r=new ArrayBuffer(e.length*3*4),o=new Float32Array(r),a=new Uint32Array(r);let l=0;for(let c=0;c0&&e.alpha>0;return s?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._lineStyle,{visible:s},e)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){const e=this.currentPath.points,t=this.currentPath.points.length;t>2&&(this.drawShape(this.currentPath),this.currentPath=new no,this.currentPath.closeStroke=!1,this.currentPath.points.push(e[t-2],e[t-1]))}else this.currentPath=new no,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo(e,t){return this.startPoly(),this.currentPath.points[0]=e,this.currentPath.points[1]=t,this}lineTo(e,t){this.currentPath||this.moveTo(0,0);const s=this.currentPath.points,n=s[s.length-2],r=s[s.length-1];return(n!==e||r!==t)&&s.push(e,t),this}_initCurve(e=0,t=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[e,t]):this.moveTo(e,t)}quadraticCurveTo(e,t,s,n){this._initCurve();const r=this.currentPath.points;return r.length===0&&this.moveTo(0,0),vp.curveTo(e,t,s,n,r),this}bezierCurveTo(e,t,s,n,r,o){return this._initCurve(),gp.curveTo(e,t,s,n,r,o,this.currentPath.points),this}arcTo(e,t,s,n,r){this._initCurve(e,t);const o=this.currentPath.points,a=bv.curveTo(e,t,s,n,r,o);if(a){const{cx:l,cy:c,radius:h,startAngle:u,endAngle:d,anticlockwise:f}=a;this.arc(l,c,h,u,d,f)}return this}arc(e,t,s,n,r,o=!1){if(n===r)return this;if(!o&&r<=n?r+=sh:o&&n<=r&&(n+=sh),r-n===0)return this;const a=e+Math.cos(n)*s,l=t+Math.sin(n)*s,c=this._geometry.closePointEps;let h=this.currentPath?this.currentPath.points:null;if(h){const u=Math.abs(h[h.length-2]-a),d=Math.abs(h[h.length-1]-l);u0;return s?(e.matrix&&(e.matrix=e.matrix.clone(),e.matrix.invert()),Object.assign(this._fillStyle,{visible:s},e)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect(e,t,s,n){return this.drawShape(new ot(e,t,s,n))}drawRoundedRect(e,t,s,n,r){return this.drawShape(new lu(e,t,s,n,r))}drawCircle(e,t,s){return this.drawShape(new ou(e,t,s))}drawEllipse(e,t,s,n){return this.drawShape(new au(e,t,s,n))}drawPolygon(...e){let t,s=!0;const n=e[0];n.points?(s=n.closeStroke,t=n.points):Array.isArray(e[0])?t=e[0]:t=e;const r=new no(t);return r.closeStroke=s,this.drawShape(r),this}drawShape(e){return this._holeMode?this._geometry.drawHole(e,this._matrix):this._geometry.drawShape(e,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){const e=this._geometry.graphicsData;return e.length===1&&e[0].shape.type===Cs.RECT&&!e[0].matrix&&!e[0].holes.length&&!(e[0].lineStyle.visible&&e[0].lineStyle.width)}_render(e){this.finishPoly();const t=this._geometry;t.updateBatches(),t.batchable?(this.batchDirty!==t.batchDirty&&this._populateBatches(),this._renderBatched(e)):(e.batch.flush(),this._renderDirect(e))}_populateBatches(){const e=this._geometry,t=this.blendMode,s=e.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=e.batchDirty,this.batches.length=s,this.vertexData=new Float32Array(e.points);for(let n=0;ns&&!e.autoResize&&(o=s);let a=e._buffers;a||(a=e._buffers=this.generateBuffers(e));const l=t[0]._texture.baseTexture,c=l.alphaMode>0;this.state.blendMode=nb(e.blendMode,c),r.state.set(this.state);const h=r.gl,u=e.worldTransform.copyTo(this.tempMatrix);u.prepend(r.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=Et.shared.setValue(e.tintRgb).premultiply(e.worldAlpha,c).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=l,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;fn&&(m=n),p>=a.length&&a.push(this._generateOneMoreBuffer(e));const g=a[p];g.uploadDynamic(t,f,m);const y=e._bufferUpdateIDs[p]||0;d=d||g._updateID0);n[o]=c,n[o+r]=c,n[o+r*2]=c,n[o+r*3]=c,o+=r*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}o1.extension={name:"particle",type:ke.RendererPlugin};Xe.add(o1);var du=(i=>(i[i.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",i[i.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",i))(du||{});const lc={willReadFrequently:!0},Vi=class Ye{static get experimentalLetterSpacingSupported(){let e=Ye._experimentalLetterSpacingSupported;if(e!==void 0){const t=Le.ADAPTER.getCanvasRenderingContext2D().prototype;e=Ye._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,s,n,r,o,a,l,c){this.text=e,this.style=t,this.width=s,this.height=n,this.lines=r,this.lineWidths=o,this.lineHeight=a,this.maxLineWidth=l,this.fontProperties=c}static measureText(e,t,s,n=Ye._canvas){s=s??t.wordWrap;const r=t.toFontString(),o=Ye.measureFont(r);o.fontSize===0&&(o.fontSize=t.fontSize,o.ascent=t.fontSize);const a=n.getContext("2d",lc);a.font=r;const l=(s?Ye.wordWrap(e,t,n):e).split(/(?:\r\n|\r|\n)/),c=new Array(l.length);let h=0;for(let p=0;p0&&(n?r-=t:r+=(Ye.graphemeSegmenter(e).length-1)*t),r}static wordWrap(e,t,s=Ye._canvas){const n=s.getContext("2d",lc);let r=0,o="",a="";const l=Object.create(null),{letterSpacing:c,whiteSpace:h}=t,u=Ye.collapseSpaces(h),d=Ye.collapseNewlines(h);let f=!u;const p=t.wordWrapWidth+c,m=Ye.tokenize(e);for(let g=0;gp)if(o!==""&&(a+=Ye.addLine(o),o="",r=0),Ye.canBreakWords(y,t.breakWords)){const v=Ye.wordWrapSplit(y);for(let w=0;wp&&(a+=Ye.addLine(o),f=!1,o="",r=0),o+=_,r+=A}}else{o.length>0&&(a+=Ye.addLine(o),o="",r=0);const v=g===m.length-1;a+=Ye.addLine(y,!v),f=!1,o="",r=0}else x+r>p&&(f=!1,a+=Ye.addLine(o),o="",r=0),(o.length>0||!Ye.isBreakingSpace(y)||f)&&(o+=y,r+=x)}return a+=Ye.addLine(o,!1),a}static addLine(e,t=!0){return e=Ye.trimRight(e),e=t?`${e} -`:e,e}static getFromCache(e,t,s,n){let r=s[e];return typeof r!="number"&&(r=Ye._measureText(e,t,n)+t,s[e]=r),r}static collapseSpaces(e){return e==="normal"||e==="pre-line"}static collapseNewlines(e){return e==="normal"}static trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){const s=e[t];if(!Ye.isBreakingSpace(s))break;e=e.slice(0,-1)}return e}static isNewline(e){return typeof e!="string"?!1:Ye._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:Ye._breakingSpaces.includes(e.charCodeAt(0))}static tokenize(e){const t=[];let s="";if(typeof e!="string")return t;for(let n=0;na;--d){for(let m=0;m{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const i=new Intl.Segmenter;return e=>[...i.segment(e)].map(t=>t.segment)}return i=>[...i]})(),Vi.experimentalLetterSpacing=!1,Vi._fonts={},Vi._newlines=[10,13],Vi._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];let nr=Vi;const CI=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],a1=class ja{constructor(e){this.styleID=0,this.reset(),Qd(this,e,e)}clone(){const e={};return Qd(e,this,ja.defaultStyle),new ja(e)}reset(){Qd(this,ja.defaultStyle,ja.defaultStyle)}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(this._dropShadow=e,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(e){this._dropShadowAlpha!==e&&(this._dropShadowAlpha=e,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(e){this._dropShadowAngle!==e&&(this._dropShadowAngle=e,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(e){this._dropShadowBlur!==e&&(this._dropShadowBlur=e,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(e){const t=Jd(e);this._dropShadowColor!==t&&(this._dropShadowColor=t,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(e){this._dropShadowDistance!==e&&(this._dropShadowDistance=e,this.styleID++)}get fill(){return this._fill}set fill(e){const t=Jd(e);this._fill!==t&&(this._fill=t,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(e){this._fillGradientType!==e&&(this._fillGradientType=e,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(e){AI(this._fillGradientStops,e)||(this._fillGradientStops=e,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily(e){this.fontFamily!==e&&(this._fontFamily=e,this.styleID++)}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(this._fontSize=e,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.styleID++)}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin(e){this._lineJoin!==e&&(this._lineJoin=e,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit(e){this._miterLimit!==e&&(this._miterLimit=e,this.styleID++)}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.styleID++)}get stroke(){return this._stroke}set stroke(e){const t=Jd(e);this._stroke!==t&&(this._stroke=t,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness(e){this._strokeThickness!==e&&(this._strokeThickness=e,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.styleID++)}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.styleID++)}toFontString(){const e=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize;let t=this.fontFamily;Array.isArray(this.fontFamily)||(t=this.fontFamily.split(","));for(let s=t.length-1;s>=0;s--){let n=t[s].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&!CI.includes(n)&&(n=`"${n}"`),t[s]=n}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${e} ${t.join(",")}`}};a1.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:du.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let Sr=a1;function Jd(i){const e=Et.shared,t=s=>{const n=e.setValue(s);return n.alpha===1?n.toHex():n.toRgbaString()};return Array.isArray(i)?i.map(t):t(i)}function AI(i,e){if(!Array.isArray(i)||!Array.isArray(e)||i.length!==e.length)return!1;for(let t=0;t0&&p>m&&(g=(m+p)/2);const y=m+d,x=s.lineHeight*(f+1);let v=y;f+10}}function RI(i,e){var s;let t=!1;if((s=i==null?void 0:i._textures)!=null&&s.length){for(let n=0;n{this.queue&&this.prepareItems()},this.registerFindHook(LI),this.registerFindHook(BI),this.registerFindHook(RI),this.registerFindHook(PI),this.registerFindHook(kI),this.registerUploadHook(FI),this.registerUploadHook(OI)}upload(e){return new Promise(t=>{e&&this.add(e),this.queue.length?(this.completes.push(t),this.ticking||(this.ticking=!0,Gs.system.addOnce(this.tick,this,ho.UTILITY))):t()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const e=this.queue[0];let t=!1;if(e&&!e._destroyed){for(let s=0,n=this.uploadHooks.length;s=0;t--)this.add(e.children[t]);return this}destroy(){this.ticking&&Gs.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};c1.uploadsPerFrame=4;let cm=c1;Object.defineProperties(Le,{UPLOADS_PER_FRAME:{get(){return cm.uploadsPerFrame},set(i){ht("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),cm.uploadsPerFrame=i}}});function u1(i,e){return e instanceof Qe?(e._glTextures[i.CONTEXT_UID]||i.texture.bind(e),!0):!1}function NI(i,e){if(!(e instanceof Ds))return!1;const{geometry:t}=e;e.finishPoly(),t.updateBatches();const{batches:s}=t;for(let n=0;ns&&!e.autoResize&&(o=s);let a=e._buffers;a||(a=e._buffers=this.generateBuffers(e));const l=t[0]._texture.baseTexture,c=l.alphaMode>0;this.state.blendMode=ob(e.blendMode,c),r.state.set(this.state);const h=r.gl,u=e.worldTransform.copyTo(this.tempMatrix);u.prepend(r.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=u.toArray(!0),this.shader.uniforms.uColor=Et.shared.setValue(e.tintRgb).premultiply(e.worldAlpha,c).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=l,this.renderer.shader.bind(this.shader);let d=!1;for(let f=0,p=0;fn&&(m=n),p>=a.length&&a.push(this._generateOneMoreBuffer(e));const g=a[p];g.uploadDynamic(t,f,m);const v=e._bufferUpdateIDs[p]||0;d=d||g._updateID0);n[o]=c,n[o+r]=c,n[o+r*2]=c,n[o+r*3]=c,o+=r*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}l1.extension={name:"particle",type:ke.RendererPlugin};Xe.add(l1);var du=(i=>(i[i.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",i[i.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",i))(du||{});const lc={willReadFrequently:!0},Vi=class Ye{static get experimentalLetterSpacingSupported(){let e=Ye._experimentalLetterSpacingSupported;if(e!==void 0){const t=Le.ADAPTER.getCanvasRenderingContext2D().prototype;e=Ye._experimentalLetterSpacingSupported="letterSpacing"in t||"textLetterSpacing"in t}return e}constructor(e,t,s,n,r,o,a,l,c){this.text=e,this.style=t,this.width=s,this.height=n,this.lines=r,this.lineWidths=o,this.lineHeight=a,this.maxLineWidth=l,this.fontProperties=c}static measureText(e,t,s,n=Ye._canvas){s=s??t.wordWrap;const r=t.toFontString(),o=Ye.measureFont(r);o.fontSize===0&&(o.fontSize=t.fontSize,o.ascent=t.fontSize);const a=n.getContext("2d",lc);a.font=r;const l=(s?Ye.wordWrap(e,t,n):e).split(/(?:\r\n|\r|\n)/),c=new Array(l.length);let h=0;for(let p=0;p0&&(n?r-=t:r+=(Ye.graphemeSegmenter(e).length-1)*t),r}static wordWrap(e,t,s=Ye._canvas){const n=s.getContext("2d",lc);let r=0,o="",a="";const l=Object.create(null),{letterSpacing:c,whiteSpace:h}=t,u=Ye.collapseSpaces(h),d=Ye.collapseNewlines(h);let f=!u;const p=t.wordWrapWidth+c,m=Ye.tokenize(e);for(let g=0;gp)if(o!==""&&(a+=Ye.addLine(o),o="",r=0),Ye.canBreakWords(v,t.breakWords)){const x=Ye.wordWrapSplit(v);for(let M=0;Mp&&(a+=Ye.addLine(o),f=!1,o="",r=0),o+=C,r+=_}}else{o.length>0&&(a+=Ye.addLine(o),o="",r=0);const x=g===m.length-1;a+=Ye.addLine(v,!x),f=!1,o="",r=0}else y+r>p&&(f=!1,a+=Ye.addLine(o),o="",r=0),(o.length>0||!Ye.isBreakingSpace(v)||f)&&(o+=v,r+=y)}return a+=Ye.addLine(o,!1),a}static addLine(e,t=!0){return e=Ye.trimRight(e),e=t?`${e} +`:e,e}static getFromCache(e,t,s,n){let r=s[e];return typeof r!="number"&&(r=Ye._measureText(e,t,n)+t,s[e]=r),r}static collapseSpaces(e){return e==="normal"||e==="pre-line"}static collapseNewlines(e){return e==="normal"}static trimRight(e){if(typeof e!="string")return"";for(let t=e.length-1;t>=0;t--){const s=e[t];if(!Ye.isBreakingSpace(s))break;e=e.slice(0,-1)}return e}static isNewline(e){return typeof e!="string"?!1:Ye._newlines.includes(e.charCodeAt(0))}static isBreakingSpace(e,t){return typeof e!="string"?!1:Ye._breakingSpaces.includes(e.charCodeAt(0))}static tokenize(e){const t=[];let s="";if(typeof e!="string")return t;for(let n=0;na;--d){for(let m=0;m{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const i=new Intl.Segmenter;return e=>[...i.segment(e)].map(t=>t.segment)}return i=>[...i]})(),Vi.experimentalLetterSpacing=!1,Vi._fonts={},Vi._newlines=[10,13],Vi._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];let nr=Vi;const EI=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],c1=class ja{constructor(e){this.styleID=0,this.reset(),Qd(this,e,e)}clone(){const e={};return Qd(e,this,ja.defaultStyle),new ja(e)}reset(){Qd(this,ja.defaultStyle,ja.defaultStyle)}get align(){return this._align}set align(e){this._align!==e&&(this._align=e,this.styleID++)}get breakWords(){return this._breakWords}set breakWords(e){this._breakWords!==e&&(this._breakWords=e,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow(e){this._dropShadow!==e&&(this._dropShadow=e,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha(e){this._dropShadowAlpha!==e&&(this._dropShadowAlpha=e,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle(e){this._dropShadowAngle!==e&&(this._dropShadowAngle=e,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur(e){this._dropShadowBlur!==e&&(this._dropShadowBlur=e,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor(e){const t=Jd(e);this._dropShadowColor!==t&&(this._dropShadowColor=t,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance(e){this._dropShadowDistance!==e&&(this._dropShadowDistance=e,this.styleID++)}get fill(){return this._fill}set fill(e){const t=Jd(e);this._fill!==t&&(this._fill=t,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType(e){this._fillGradientType!==e&&(this._fillGradientType=e,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops(e){II(this._fillGradientStops,e)||(this._fillGradientStops=e,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily(e){this.fontFamily!==e&&(this._fontFamily=e,this.styleID++)}get fontSize(){return this._fontSize}set fontSize(e){this._fontSize!==e&&(this._fontSize=e,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant(e){this._fontVariant!==e&&(this._fontVariant=e,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.styleID++)}get leading(){return this._leading}set leading(e){this._leading!==e&&(this._leading=e,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin(e){this._lineJoin!==e&&(this._lineJoin=e,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit(e){this._miterLimit!==e&&(this._miterLimit=e,this.styleID++)}get padding(){return this._padding}set padding(e){this._padding!==e&&(this._padding=e,this.styleID++)}get stroke(){return this._stroke}set stroke(e){const t=Jd(e);this._stroke!==t&&(this._stroke=t,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness(e){this._strokeThickness!==e&&(this._strokeThickness=e,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline(e){this._textBaseline!==e&&(this._textBaseline=e,this.styleID++)}get trim(){return this._trim}set trim(e){this._trim!==e&&(this._trim=e,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace(e){this._whiteSpace!==e&&(this._whiteSpace=e,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap(e){this._wordWrap!==e&&(this._wordWrap=e,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(e){this._wordWrapWidth!==e&&(this._wordWrapWidth=e,this.styleID++)}toFontString(){const e=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize;let t=this.fontFamily;Array.isArray(this.fontFamily)||(t=this.fontFamily.split(","));for(let s=t.length-1;s>=0;s--){let n=t[s].trim();!/([\"\'])[^\'\"]+\1/.test(n)&&!EI.includes(n)&&(n=`"${n}"`),t[s]=n}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${e} ${t.join(",")}`}};c1.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:du.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let Sr=c1;function Jd(i){const e=Et.shared,t=s=>{const n=e.setValue(s);return n.alpha===1?n.toHex():n.toRgbaString()};return Array.isArray(i)?i.map(t):t(i)}function II(i,e){if(!Array.isArray(i)||!Array.isArray(e)||i.length!==e.length)return!1;for(let t=0;t0&&p>m&&(g=(m+p)/2);const v=m+d,y=s.lineHeight*(f+1);let x=v;f+10}}function kI(i,e){var s;let t=!1;if((s=i==null?void 0:i._textures)!=null&&s.length){for(let n=0;n{this.queue&&this.prepareItems()},this.registerFindHook(NI),this.registerFindHook(DI),this.registerFindHook(kI),this.registerFindHook(FI),this.registerFindHook(OI),this.registerUploadHook(LI),this.registerUploadHook(BI)}upload(e){return new Promise(t=>{e&&this.add(e),this.queue.length?(this.completes.push(t),this.ticking||(this.ticking=!0,Gs.system.addOnce(this.tick,this,ho.UTILITY))):t()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){const e=this.queue[0];let t=!1;if(e&&!e._destroyed){for(let s=0,n=this.uploadHooks.length;s=0;t--)this.add(e.children[t]);return this}destroy(){this.ticking&&Gs.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};u1.uploadsPerFrame=4;let hm=u1;Object.defineProperties(Le,{UPLOADS_PER_FRAME:{get(){return hm.uploadsPerFrame},set(i){ht("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),hm.uploadsPerFrame=i}}});function f1(i,e){return e instanceof Qe?(e._glTextures[i.CONTEXT_UID]||i.texture.bind(e),!0):!1}function UI(i,e){if(!(e instanceof Ds))return!1;const{geometry:t}=e;e.finishPoly(),t.updateBatches();const{batches:s}=t;for(let n=0;n1?ki.from($I,UI,t):ki.from(_v,XI,t)}render(e){const t=this.renderer,s=this.quad;let n=s.vertices;n[0]=n[6]=e._width*-e.anchor.x,n[1]=n[3]=e._height*-e.anchor.y,n[2]=n[4]=e._width*(1-e.anchor.x),n[5]=n[7]=e._height*(1-e.anchor.y);const r=e.uvRespectAnchor?e.anchor.x:0,o=e.uvRespectAnchor?e.anchor.y:0;n=s.uvs,n[0]=n[6]=-r,n[1]=n[3]=-o,n[2]=n[4]=1-r,n[5]=n[7]=1-o,s.invalidate();const a=e._texture,l=a.baseTexture,c=l.alphaMode>0,h=e.tileTransform.localTransform,u=e.uvMatrix;let d=l.isPowerOfTwo&&a.frame.width===l.width&&a.frame.height===l.height;d&&(l._glTextures[t.CONTEXT_UID]?d=l.wrapMode!==Ii.CLAMP:l.wrapMode===Ii.CLAMP&&(l.wrapMode=Ii.REPEAT));const f=d?this.simpleShader:this.shader,p=a.width,m=a.height,g=e._width,y=e._height;cc.set(h.a*p/g,h.b*p/y,h.c*m/g,h.d*m/y,h.tx/g,h.ty/y),cc.invert(),d?cc.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=cc.toArray(!0),f.uniforms.uColor=Et.shared.setValue(e.tint).premultiply(e.worldAlpha,c).toArray(f.uniforms.uColor),f.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),f.uniforms.uSampler=a,t.shader.bind(f),t.geometry.bind(s),this.state.blendMode=nb(e.blendMode,c),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}f1.extension={name:"tilingSprite",type:ke.RendererPlugin};Xe.add(f1);const m1=class Ha{constructor(e,t,s){this.linkedSheets=[],(e instanceof Qe||e instanceof ze)&&(e={texture:e,data:t,resolutionFilename:s});const{texture:n,data:r,resolutionFilename:o=null,cachePrefix:a=""}=e;this.cachePrefix=a,this._texture=n instanceof ze?n:null,this.baseTexture=n instanceof Qe?n:this._texture.baseTexture,this.textures={},this.animations={},this.data=r;const l=this.baseTexture.resource;this.resolution=this._updateResolution(o||(l?l.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let s=Yn(e,null);return s===null&&(s=typeof t=="number"?t:parseFloat(t??"1")),s!==1&&this.baseTexture.setResolution(s),s}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Ha.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const s=Ha.BATCH_SIZE;for(;t-e{this._batchIndex*Ha.BATCH_SIZE{s[n]=e}),Object.keys(e.textures).forEach(n=>{s[`${e.cachePrefix}${n}`]=e.textures[n]}),!t){const n=ts.dirname(i[0]);e.linkedSheets.forEach((r,o)=>{Object.assign(s,p1([`${n}/${e.data.meta.related_multi_packs[o]}`],r,!0))})}return s}const GI={extension:ke.Asset,cache:{test:i=>i instanceof Cv,getCacheableAssets:(i,e)=>p1(i,e,!1)},resolver:{test:i=>{const e=i.split("?")[0].split("."),t=e.pop(),s=e.pop();return t==="json"&&YI.includes(s)},parse:i=>{var t;const e=i.split(".");return{resolution:parseFloat(((t=Le.RETINA_PREFIX.exec(i))==null?void 0:t[1])??"1"),format:e[e.length-2],src:i}}},loader:{name:"spritesheetLoader",extension:{type:ke.LoadParser,priority:ii.Normal},async testParse(i,e){return ts.extname(e.src).toLowerCase()===".json"&&!!i.frames},async parse(i,e,t){var h,u;const{texture:s,imageFilename:n,cachePrefix:r}=(e==null?void 0:e.data)??{};let o=ts.dirname(e.src);o&&o.lastIndexOf("/")!==o.length-1&&(o+="/");let a;if(s&&s.baseTexture)a=s;else{const d=lh(o+(n??i.meta.image),e.src);a=(await t.load([d]))[d]}const l=new Cv({texture:a.baseTexture,data:i,resolutionFilename:e.src,cachePrefix:r});await l.parse();const c=(h=i==null?void 0:i.meta)==null?void 0:h.related_multi_packs;if(Array.isArray(c)){const d=[];for(const p of c){if(typeof p!="string")continue;let m=o+p;(u=e.data)!=null&&u.ignoreMultiPack||(m=lh(m,e.src),d.push(t.load({src:m,data:{ignoreMultiPack:!0}})))}const f=await Promise.all(d);l.linkedSheets=f,f.forEach(p=>{p.linkedSheets=[l].concat(l.linkedSheets.filter(m=>m!==p))})}return l},unload(i){i.destroy(!0)}}};Xe.add(GI);class mh{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class Fc{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),s={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const r in t){const o=t[r].match(/^[a-z]+/gm)[0],a=t[r].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),l={};for(const c in a){const h=a[c].split("="),u=h[0],d=h[1].replace(/"/gm,""),f=parseFloat(d),p=isNaN(f)?d:f;l[u]=p}s[o].push(l)}const n=new mh;return s.info.forEach(r=>n.info.push({face:r.face,size:parseInt(r.size,10)})),s.common.forEach(r=>n.common.push({lineHeight:parseInt(r.lineHeight,10)})),s.page.forEach(r=>n.page.push({id:parseInt(r.id,10),file:r.file})),s.char.forEach(r=>n.char.push({id:parseInt(r.id,10),page:parseInt(r.page,10),x:parseInt(r.x,10),y:parseInt(r.y,10),width:parseInt(r.width,10),height:parseInt(r.height,10),xoffset:parseInt(r.xoffset,10),yoffset:parseInt(r.yoffset,10),xadvance:parseInt(r.xadvance,10)})),s.kerning.forEach(r=>n.kerning.push({first:parseInt(r.first,10),second:parseInt(r.second,10),amount:parseInt(r.amount,10)})),s.distanceField.forEach(r=>n.distanceField.push({distanceRange:parseInt(r.distanceRange,10),fieldType:r.fieldType})),n}}class hm{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new mh,s=e.getElementsByTagName("info"),n=e.getElementsByTagName("common"),r=e.getElementsByTagName("page"),o=e.getElementsByTagName("char"),a=e.getElementsByTagName("kerning"),l=e.getElementsByTagName("distanceField");for(let c=0;c")?hm.test(Le.ADAPTER.parseXML(e)):!1}static parse(e){return hm.parse(Le.ADAPTER.parseXML(e))}}const ef=[Fc,hm,um];function jI(i){for(let e=0;e=l-F*o){if(m===0)throw new Error(`[BitmapFont] textureHeight ${l}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--S,g=null,y=null,x=null,m=0,p=0,v=0;continue}if(v=Math.max(F+A.fontProperties.descent,v),E*o+p>=d){if(p===0)throw new Error(`[BitmapFont] textureWidth ${a}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--S,m+=v*o,m=Math.ceil(m),p=0,v=0;continue}WI(g,y,A,p,m,o,u);const k=Oc(A.text);f.char.push({id:k,page:w.length-1,x:p/o,y:m/o,width:E,height:F,xoffset:0,yoffset:0,xadvance:P-(u.dropShadow?u.dropShadowDistance:0)-(u.stroke?u.strokeThickness:0)}),p+=(E+2*r)*o,p=Math.ceil(p)}if(!(s!=null&&s.skipKerning))for(let S=0,b=h.length;S1?ki.from(VI,XI,t):ki.from(Cv,YI,t)}render(e){const t=this.renderer,s=this.quad;let n=s.vertices;n[0]=n[6]=e._width*-e.anchor.x,n[1]=n[3]=e._height*-e.anchor.y,n[2]=n[4]=e._width*(1-e.anchor.x),n[5]=n[7]=e._height*(1-e.anchor.y);const r=e.uvRespectAnchor?e.anchor.x:0,o=e.uvRespectAnchor?e.anchor.y:0;n=s.uvs,n[0]=n[6]=-r,n[1]=n[3]=-o,n[2]=n[4]=1-r,n[5]=n[7]=1-o,s.invalidate();const a=e._texture,l=a.baseTexture,c=l.alphaMode>0,h=e.tileTransform.localTransform,u=e.uvMatrix;let d=l.isPowerOfTwo&&a.frame.width===l.width&&a.frame.height===l.height;d&&(l._glTextures[t.CONTEXT_UID]?d=l.wrapMode!==Ii.CLAMP:l.wrapMode===Ii.CLAMP&&(l.wrapMode=Ii.REPEAT));const f=d?this.simpleShader:this.shader,p=a.width,m=a.height,g=e._width,v=e._height;cc.set(h.a*p/g,h.b*p/v,h.c*m/g,h.d*m/v,h.tx/g,h.ty/v),cc.invert(),d?cc.prepend(u.mapCoord):(f.uniforms.uMapCoord=u.mapCoord.toArray(!0),f.uniforms.uClampFrame=u.uClampFrame,f.uniforms.uClampOffset=u.uClampOffset),f.uniforms.uTransform=cc.toArray(!0),f.uniforms.uColor=Et.shared.setValue(e.tint).premultiply(e.worldAlpha,c).toArray(f.uniforms.uColor),f.uniforms.translationMatrix=e.transform.worldTransform.toArray(!0),f.uniforms.uSampler=a,t.shader.bind(f),t.geometry.bind(s),this.state.blendMode=ob(e.blendMode,c),t.state.set(this.state),t.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}p1.extension={name:"tilingSprite",type:ke.RendererPlugin};Xe.add(p1);const g1=class Ha{constructor(e,t,s){this.linkedSheets=[],(e instanceof Qe||e instanceof ze)&&(e={texture:e,data:t,resolutionFilename:s});const{texture:n,data:r,resolutionFilename:o=null,cachePrefix:a=""}=e;this.cachePrefix=a,this._texture=n instanceof ze?n:null,this.baseTexture=n instanceof Qe?n:this._texture.baseTexture,this.textures={},this.animations={},this.data=r;const l=this.baseTexture.resource;this.resolution=this._updateResolution(o||(l?l.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution(e=null){const{scale:t}=this.data.meta;let s=Yn(e,null);return s===null&&(s=typeof t=="number"?t:parseFloat(t??"1")),s!==1&&this.baseTexture.setResolution(s),s}parse(){return new Promise(e=>{this._callback=e,this._batchIndex=0,this._frameKeys.length<=Ha.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(e){let t=e;const s=Ha.BATCH_SIZE;for(;t-e{this._batchIndex*Ha.BATCH_SIZE{s[n]=e}),Object.keys(e.textures).forEach(n=>{s[`${e.cachePrefix}${n}`]=e.textures[n]}),!t){const n=ts.dirname(i[0]);e.linkedSheets.forEach((r,o)=>{Object.assign(s,v1([`${n}/${e.data.meta.related_multi_packs[o]}`],r,!0))})}return s}const HI={extension:ke.Asset,cache:{test:i=>i instanceof Av,getCacheableAssets:(i,e)=>v1(i,e,!1)},resolver:{test:i=>{const e=i.split("?")[0].split("."),t=e.pop(),s=e.pop();return t==="json"&&jI.includes(s)},parse:i=>{var t;const e=i.split(".");return{resolution:parseFloat(((t=Le.RETINA_PREFIX.exec(i))==null?void 0:t[1])??"1"),format:e[e.length-2],src:i}}},loader:{name:"spritesheetLoader",extension:{type:ke.LoadParser,priority:ii.Normal},async testParse(i,e){return ts.extname(e.src).toLowerCase()===".json"&&!!i.frames},async parse(i,e,t){var h,u;const{texture:s,imageFilename:n,cachePrefix:r}=(e==null?void 0:e.data)??{};let o=ts.dirname(e.src);o&&o.lastIndexOf("/")!==o.length-1&&(o+="/");let a;if(s&&s.baseTexture)a=s;else{const d=lh(o+(n??i.meta.image),e.src);a=(await t.load([d]))[d]}const l=new Av({texture:a.baseTexture,data:i,resolutionFilename:e.src,cachePrefix:r});await l.parse();const c=(h=i==null?void 0:i.meta)==null?void 0:h.related_multi_packs;if(Array.isArray(c)){const d=[];for(const p of c){if(typeof p!="string")continue;let m=o+p;(u=e.data)!=null&&u.ignoreMultiPack||(m=lh(m,e.src),d.push(t.load({src:m,data:{ignoreMultiPack:!0}})))}const f=await Promise.all(d);l.linkedSheets=f,f.forEach(p=>{p.linkedSheets=[l].concat(l.linkedSheets.filter(m=>m!==p))})}return l},unload(i){i.destroy(!0)}}};Xe.add(HI);class mh{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class Fc{static test(e){return typeof e=="string"&&e.startsWith("info face=")}static parse(e){const t=e.match(/^[a-z]+\s+.+$/gm),s={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const r in t){const o=t[r].match(/^[a-z]+/gm)[0],a=t[r].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),l={};for(const c in a){const h=a[c].split("="),u=h[0],d=h[1].replace(/"/gm,""),f=parseFloat(d),p=isNaN(f)?d:f;l[u]=p}s[o].push(l)}const n=new mh;return s.info.forEach(r=>n.info.push({face:r.face,size:parseInt(r.size,10)})),s.common.forEach(r=>n.common.push({lineHeight:parseInt(r.lineHeight,10)})),s.page.forEach(r=>n.page.push({id:parseInt(r.id,10),file:r.file})),s.char.forEach(r=>n.char.push({id:parseInt(r.id,10),page:parseInt(r.page,10),x:parseInt(r.x,10),y:parseInt(r.y,10),width:parseInt(r.width,10),height:parseInt(r.height,10),xoffset:parseInt(r.xoffset,10),yoffset:parseInt(r.yoffset,10),xadvance:parseInt(r.xadvance,10)})),s.kerning.forEach(r=>n.kerning.push({first:parseInt(r.first,10),second:parseInt(r.second,10),amount:parseInt(r.amount,10)})),s.distanceField.forEach(r=>n.distanceField.push({distanceRange:parseInt(r.distanceRange,10),fieldType:r.fieldType})),n}}class um{static test(e){const t=e;return typeof e!="string"&&"getElementsByTagName"in e&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(e){const t=new mh,s=e.getElementsByTagName("info"),n=e.getElementsByTagName("common"),r=e.getElementsByTagName("page"),o=e.getElementsByTagName("char"),a=e.getElementsByTagName("kerning"),l=e.getElementsByTagName("distanceField");for(let c=0;c")?um.test(Le.ADAPTER.parseXML(e)):!1}static parse(e){return um.parse(Le.ADAPTER.parseXML(e))}}const ef=[Fc,um,dm];function WI(i){for(let e=0;e=l-F*o){if(m===0)throw new Error(`[BitmapFont] textureHeight ${l}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--w,g=null,v=null,y=null,m=0,p=0,x=0;continue}if(x=Math.max(F+_.fontProperties.descent,x),I*o+p>=d){if(p===0)throw new Error(`[BitmapFont] textureWidth ${a}px is too small (fontFamily: '${u.fontFamily}', fontSize: ${u.fontSize}px, char: '${b}')`);--w,m+=x*o,m=Math.ceil(m),p=0,x=0;continue}qI(g,v,_,p,m,o,u);const k=Oc(_.text);f.char.push({id:k,page:M.length-1,x:p/o,y:m/o,width:I,height:F,xoffset:0,yoffset:0,xadvance:E-(u.dropShadow?u.dropShadowDistance:0)-(u.stroke?u.strokeThickness:0)}),p+=(I+2*r)*o,p=Math.ceil(p)}if(!(s!=null&&s.skipKerning))for(let w=0,b=h.length;w{this.dirty=!0},this,0,0),this._roundPixels=Le.ROUND_PIXELS,this.dirty=!0,this._resolution=Le.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var E;const e=tr.available[this._fontName],t=this.fontSize,s=t/e.size,n=new vt,r=[],o=[],a=[],l=this._text.replace(/(?:\r\n|\r)/g,` -`)||" ",c=g1(l),h=this._maxWidth*e.size/t,u=e.distanceFieldType==="none"?Av:Ev;let d=null,f=0,p=0,m=0,g=-1,y=0,x=0,v=0,w=0;for(let k=0;k0&&n.x>h&&(++x,Ko(r,1+g-x,1+k-g),k=g,g=-1,o.push(y),a.push(r.length>0?r[r.length-1].prevSpaces:0),p=Math.max(p,y),m++,n.x=0,n.y+=e.lineHeight,d=null,w=0)}const _=c[c.length-1];_!=="\r"&&_!==` -`&&(/(?:\s)/.test(_)&&(f=y),o.push(f),p=Math.max(p,f),a.push(-1));const S=[];for(let k=0;k<=m;k++){let B=0;this._align==="right"?B=p-o[k]:this._align==="center"?B=(p-o[k])/2:this._align==="justify"&&(B=a[k]<0?0:(p-o[k])/a[k]),S.push(B)}const b=r.length,A={},P=[],F=this._activePagesMeshData;u.push(...F);for(let k=0;k6*D)||B.vertices.lengtht[n.mesh.texture.baseTexture.uid]).forEach(n=>{n.mesh.texture=ze.EMPTY});for(const n in t)t[n].destroy(),delete t[n];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy(e)}};ZI.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};const JI=[".xml",".fnt"],QI={extension:{type:ke.LoadParser,priority:ii.Normal},name:"loadBitmapFont",test(i){return JI.includes(ts.extname(i).toLowerCase())},async testParse(i){return Fc.test(i)||um.test(i)},async parse(i,e,t){const s=Fc.test(i)?Fc.parse(i):um.parse(i),{src:n}=e,{page:r}=s,o=[];for(let c=0;ca[c]);return tr.install(s,l,!0)},async load(i,e){return(await Le.ADAPTER.fetch(i)).text()},unload(i){i.destroy()}};Xe.add(QI);const dm=class Do extends Sr{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from(e){return new Do(Object.keys(Do.defaultOptions).reduce((t,s)=>({...t,[s]:e[s]}),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach(e=>{URL.revokeObjectURL(e.src),e.refs--,e.refs===0&&(e.fontFace&&document.fonts.delete(e.fontFace),delete Do.availableFonts[e.originalUrl])}),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont(e,t={}){const{availableFonts:s}=Do;if(s[e]){const n=s[e];return this._fonts.push(n),n.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return Le.ADAPTER.fetch(e).then(n=>n.blob()).then(async n=>new Promise((r,o)=>{const a=URL.createObjectURL(n),l=new FileReader;l.onload=()=>r([a,l.result]),l.onerror=o,l.readAsDataURL(n)})).then(async([n,r])=>{const o=Object.assign({family:ts.basename(e,ts.extname(e)),weight:"normal",style:"normal",display:"auto",src:n,dataSrc:r,refs:1,originalUrl:e,fontFace:null},t);s[e]=o,this._fonts.push(o),this.styleID++;const a=new FontFace(o.family,`url(${o.src})`,{weight:o.weight,style:o.style,display:o.display});o.fontFace=a,await a.load(),document.fonts.add(a),await document.fonts.ready,this.styleID++,this.fontsDirty=!0})}addOverride(...e){const t=e.filter(s=>!this._overrides.includes(s));t.length>0&&(this._overrides.push(...t),this.styleID++)}removeOverride(...e){const t=e.filter(s=>this._overrides.includes(s));t.length>0&&(this._overrides=this._overrides.filter(s=>!t.includes(s)),this.styleID++)}toCSS(e){return[`transform: scale(${e})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?[`word-wrap: ${this.breakWords?"break-all":"break-word"}`,`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce((e,t)=>`${e} +`;const Ev=[],Iv=[],Rv=[],QI=class x1 extends gs{constructor(e,t={}){super();const{align:s,tint:n,maxWidth:r,letterSpacing:o,fontName:a,fontSize:l}=Object.assign({},x1.styleDefaults,t);if(!tr.available[a])throw new Error(`Missing BitmapFont "${a}"`);this._activePagesMeshData=[],this._textWidth=0,this._textHeight=0,this._align=s,this._tintColor=new Et(n),this._font=void 0,this._fontName=a,this._fontSize=l,this.text=e,this._maxWidth=r,this._maxLineHeight=0,this._letterSpacing=o,this._anchor=new Rn(()=>{this.dirty=!0},this,0,0),this._roundPixels=Le.ROUND_PIXELS,this.dirty=!0,this._resolution=Le.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){var I;const e=tr.available[this._fontName],t=this.fontSize,s=t/e.size,n=new vt,r=[],o=[],a=[],l=this._text.replace(/(?:\r\n|\r)/g,` +`)||" ",c=y1(l),h=this._maxWidth*e.size/t,u=e.distanceFieldType==="none"?Ev:Iv;let d=null,f=0,p=0,m=0,g=-1,v=0,y=0,x=0,M=0;for(let k=0;k0&&n.x>h&&(++y,Ko(r,1+g-y,1+k-g),k=g,g=-1,o.push(v),a.push(r.length>0?r[r.length-1].prevSpaces:0),p=Math.max(p,v),m++,n.x=0,n.y+=e.lineHeight,d=null,M=0)}const C=c[c.length-1];C!=="\r"&&C!==` +`&&(/(?:\s)/.test(C)&&(f=v),o.push(f),p=Math.max(p,f),a.push(-1));const w=[];for(let k=0;k<=m;k++){let B=0;this._align==="right"?B=p-o[k]:this._align==="center"?B=(p-o[k])/2:this._align==="justify"&&(B=a[k]<0?0:(p-o[k])/a[k]),w.push(B)}const b=r.length,_={},E=[],F=this._activePagesMeshData;u.push(...F);for(let k=0;k6*D)||B.vertices.lengtht[n.mesh.texture.baseTexture.uid]).forEach(n=>{n.mesh.texture=ze.EMPTY});for(const n in t)t[n].destroy(),delete t[n];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy(e)}};QI.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};const eR=[".xml",".fnt"],tR={extension:{type:ke.LoadParser,priority:ii.Normal},name:"loadBitmapFont",test(i){return eR.includes(ts.extname(i).toLowerCase())},async testParse(i){return Fc.test(i)||dm.test(i)},async parse(i,e,t){const s=Fc.test(i)?Fc.parse(i):dm.parse(i),{src:n}=e,{page:r}=s,o=[];for(let c=0;ca[c]);return tr.install(s,l,!0)},async load(i,e){return(await Le.ADAPTER.fetch(i)).text()},unload(i){i.destroy()}};Xe.add(tR);const fm=class Do extends Sr{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from(e){return new Do(Object.keys(Do.defaultOptions).reduce((t,s)=>({...t,[s]:e[s]}),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach(e=>{URL.revokeObjectURL(e.src),e.refs--,e.refs===0&&(e.fontFace&&document.fonts.delete(e.fontFace),delete Do.availableFonts[e.originalUrl])}),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont(e,t={}){const{availableFonts:s}=Do;if(s[e]){const n=s[e];return this._fonts.push(n),n.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return Le.ADAPTER.fetch(e).then(n=>n.blob()).then(async n=>new Promise((r,o)=>{const a=URL.createObjectURL(n),l=new FileReader;l.onload=()=>r([a,l.result]),l.onerror=o,l.readAsDataURL(n)})).then(async([n,r])=>{const o=Object.assign({family:ts.basename(e,ts.extname(e)),weight:"normal",style:"normal",display:"auto",src:n,dataSrc:r,refs:1,originalUrl:e,fontFace:null},t);s[e]=o,this._fonts.push(o),this.styleID++;const a=new FontFace(o.family,`url(${o.src})`,{weight:o.weight,style:o.style,display:o.display});o.fontFace=a,await a.load(),document.fonts.add(a),await document.fonts.ready,this.styleID++,this.fontsDirty=!0})}addOverride(...e){const t=e.filter(s=>!this._overrides.includes(s));t.length>0&&(this._overrides.push(...t),this.styleID++)}removeOverride(...e){const t=e.filter(s=>this._overrides.includes(s));t.length>0&&(this._overrides=this._overrides.filter(s=>!t.includes(s)),this.styleID++)}toCSS(e){return[`transform: scale(${e})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?[`word-wrap: ${this.breakWords?"break-all":"break-word"}`,`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce((e,t)=>`${e} @font-face { font-family: "${t.family}"; src: url('${t.dataSrc}'); font-weight: ${t.weight}; font-style: ${t.style}; font-display: ${t.display}; - }`,this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet(e){this._stylesheet!==e&&(this._stylesheet=e,this.styleID++)}normalizeColor(e){return Array.isArray(e)&&(e=Y_(e)),typeof e=="number"?V_(e):e}dropShadowToCSS(){let e=this.normalizeColor(this.dropShadowColor);const t=this.dropShadowAlpha,s=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),n=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);e.startsWith("#")&&t<1&&(e+=(t*255|0).toString(16).padStart(2,"0"));const r=`${s}px ${n}px`;return this.dropShadowBlur>0?`text-shadow: ${r} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${r} ${e}`}reset(){Object.assign(this,Do.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=Le.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};dm.availableFonts={},dm.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let tf=dm;const hc=class Uo extends _r{constructor(e="",t={}){super(ze.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const s=new Image,n=ze.from(s,{scaleMode:Le.SCALE_MODE,resourceOptions:{autoLoad:!1}});n.orig=new ot,n.trim=new ot,this.texture=n;const r="http://www.w3.org/2000/svg",o="http://www.w3.org/1999/xhtml",a=document.createElementNS(r,"svg"),l=document.createElementNS(r,"foreignObject"),c=document.createElementNS(o,"div"),h=document.createElementNS(o,"style");l.setAttribute("width","10000"),l.setAttribute("height","10000"),l.style.overflow="hidden",a.appendChild(l),this.maxWidth=Uo.defaultMaxWidth,this.maxHeight=Uo.defaultMaxHeight,this._domElement=c,this._styleElement=h,this._svgRoot=a,this._foreignObject=l,this._foreignObject.appendChild(h),this._foreignObject.appendChild(c),this._image=s,this._loadImage=new Image,this._autoResolution=Uo.defaultAutoResolution,this._resolution=Uo.defaultResolution??Le.RESOLUTION,this.text=e,this.style=t}measureText(e){var h,u;const{text:t,style:s,resolution:n}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:s.toCSS(n)}),this._styleElement.textContent=s.toGlobalCSS(),document.body.appendChild(this._svgRoot);const r=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:o,height:a}=r;(o>this.maxWidth||a>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const l=Math.min(this.maxWidth,Math.ceil(o)),c=Math.min(this.maxHeight,Math.ceil(a));return this._svgRoot.setAttribute("width",l.toString()),this._svgRoot.setAttribute("height",c.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),s!==this._style&&(Object.assign(this._domElement,{style:(h=this._style)==null?void 0:h.toCSS(n)}),this._styleElement.textContent=(u=this._style)==null?void 0:u.toGlobalCSS()),{width:l+s.padding*2,height:c+s.padding*2}}async updateText(e=!0){const{style:t,_image:s,_loadImage:n}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:r,height:o}=this.measureText();s.width=n.width=Math.ceil(Math.max(1,r)),s.height=n.height=Math.ceil(Math.max(1,o)),this._updateID++;const a=this._updateID;await new Promise(l=>{n.onload=async()=>{if(a/gi,"

").replace(/
/gi,"
").replace(/ /gi," ")}};hc.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},hc.defaultMaxWidth=2024,hc.defaultMaxHeight=2024,hc.defaultAutoResolution=!0;function ph(i,e){const t=Math.max(0,Number(i)||0),s=Math.max(0,Number(e)||0);return{inner:Math.min(t,s),outer:Math.max(t,s)}}function y1(i){const e=Math.max(0,Number(i.outerRectW)||0),t=Math.max(0,Number(i.outerRectH)||0);return{innerW:Math.min(e,Math.max(0,Number(i.innerRectW)||0)),innerH:Math.min(t,Math.max(0,Number(i.innerRectH)||0)),outerW:e,outerH:t}}function eR(i,e,t,s,n){if(i==="random")return n();const r=Math.max(1,Math.round(t)),o=Math.max(0,Math.round(e))%r;return s?o/r:r<=1?.5:o/(r-1)}function Rv(i,e,t,s){const n=Math.sqrt(i*i+s()*(e*e-i*i));return{x:Math.cos(t)*n,y:-Math.sin(t)*n,radialAngle:-t*180/Math.PI}}function tR(i,e){const{innerW:t,innerH:s,outerW:n,outerH:r}=y1(i),o=Math.max(0,(n-t)/2),a=Math.max(0,(r-s)/2),l=o*r,c=t*a,h=l*2+c*2;if(h<=0){const p=n*2+r*2;if(p<=0)return{x:0,y:0,radialAngle:0};let m=e()*p,g,y;return mt?0:i==="linear"?1-e/t:i==="inverse"?Math.min(10,t/Math.max(e,t*.1)):1}function oR(i,e,t,s,n,r,o){const a=i-t,l=e-s,c=Math.hypot(a,l);if(c<=1e-4||c>r)return{x:0,y:0};const h=n*x1(o,c,r)*10;return{x:-l/c*h,y:a/c*h}}function aR(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1)),l=e-i.x,c=t-i.y,h=(n*l+r*c)/o,u=(-r*l+n*c)/a,d=(S,b,A,P)=>{const F=A/o,E=P/a,k=Math.max(1e-4,Math.hypot(F,E)),B=F/k,D=E/k,X=n*B-r*D,N=r*B+n*D;return{x:i.x+n*S*o-r*b*a+X*.05,y:i.y+r*S*o+n*b*a+N*.05,nx:X,ny:N}};if(i.shape==="circle"){const S=Math.max(.001,i.radius),b=Math.hypot(h,u);if(b>=S)return null;const A=b>1e-4?h/b:1,P=b>1e-4?u/b:0;return d(A*S,P*S,A,P)}if(i.shape==="ellipse"){const S=Math.max(.001,i.radiusX),b=Math.max(.001,i.radiusY),A=Math.hypot(h/S,u/b);if(A>=1)return null;const P=A>1e-4?1/A:1,F=A>1e-4?h*P:S,E=A>1e-4?u*P:0,k=Math.max(1e-4,Math.hypot(F/(S*S),E/(b*b)));return d(F,E,F/(S*S)/k,E/(b*b)/k)}if(i.shape==="rect"){const S=Math.max(.001,i.width*.5),b=Math.max(.001,i.height*.5);if(Math.abs(h)>=S||Math.abs(u)>=b)return null;const A=S-Math.abs(h),P=b-Math.abs(u);if(A=0?1:-1;return d(E*S,u,E,0)}const F=u>=0?1:-1;return d(h,F*b,0,F)}const f=Math.max(3,Math.min(16,Math.round(i.sides||(i.shape==="custom"?5:6)))),p=Math.max(.001,i.width*.5),m=Math.max(.001,i.height*.5),g=Array.from({length:f},(S,b)=>{const A=Math.PI*.5+b/f*Math.PI*2;return{x:Math.cos(A)*p,y:Math.sin(A)*m}});let y=!1;for(let S=0,b=g.length-1;Su!=P.y>u&&h<(P.x-A.x)*(u-A.y)/(P.y-A.y)+A.x&&(y=!y)}if(!y)return null;let x=g[0].x,v=g[0].y,w=1/0;for(let S=0;S>>0^Math.imul(e+1,2654435761)^t)>>>0;return s^=s>>>16,s=Math.imul(s,2146121005),s^=s>>>15,s=Math.imul(s,2221713035),s^=s>>>16,(s>>>0)/4294967296}function Eo(i,e,t,s,n){return i==="fixed"?e:i==="curve"?Ss(e,t,en(s,n)):Ss(e,t,n)}function sf(i,e,t,s,n,r){return i==="curve"?Ss(e,t,en(s,n)):i==="random"?r:e}function Fv(i,e,t,s,n){const r=1-n;return r*r*r*i+3*r*r*n*e+3*r*n*n*t+n*n*n*s}function en(i,e,t="线性"){if(!Array.isArray(i)||i.length===0)return 1;const s=[...i].sort((n,r)=>n.x-r.x);if(e<=s[0].x)return s[0].y;if(e>=s[s.length-1].x)return s[s.length-1].y;for(let n=0;n=s[n].x&&e<=s[n+1].x){const r=s[n],o=s[n+1],a=o.x-r.x||1;if(t!=="贝塞尔")return Ss(r.y,o.y,(e-r.x)/a);const l=r.x+(r.outX??a/3),c=r.y+(r.outY??(o.y-r.y)/3),h=o.x+(o.inX??-a/3),u=o.y+(o.inY??-(o.y-r.y)/3);let d=0,f=1;for(let p=0;p<14;p++){const m=(d+f)/2;Fv(r.x,l,h,o.x,m)>>0;return function(){e|=0,e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function ta(i){let e=i.replace("#","");return e.length===3&&(e=e.split("").map(t=>t+t).join("")),parseInt(e,16)}function cR(i,e,t){const s=Ov(i),n=Ov(e),r=Math.round(s[0]+(n[0]-s[0])*t),o=Math.round(s[1]+(n[1]-s[1])*t),a=Math.round(s[2]+(n[2]-s[2])*t);return r<<16|o<<8|a}function fm(i,e){if(!Array.isArray(i)||i.length===0)return 16777215;const t=[...i].sort((s,n)=>s.position-n.position);if(e<=t[0].position)return ta(t[0].color);if(e>=t[t.length-1].position)return ta(t[t.length-1].color);for(let s=0;sr.position)continue;const o=(e-n.position)/Math.max(1e-4,r.position-n.position);return cR(n.color,r.color,o)}return ta(t[t.length-1].color)}function Ov(i){let e=i.replace("#","");e.length===3&&(e=e.split("").map(s=>s+s).join(""));const t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255]}function hR(){return{sprite:null,boneName:"",mesh:null,meshSignature:"",history:[],bones:[],skinWeights:[],currentWidth:0,currentAlpha:0,currentColor:16777215,resourceId:1,enabled:!1,sampledLength:100,sampledWidth:100}}function Lc(i){i.history.length=0,i.bones.length=0,i.mesh&&(i.mesh.visible=!1)}class uR{constructor(e){M(this,"container");this.container=e}ensureMesh(e,t,s){const n=t.trailResources.find(g=>g.id===e.resourceId)||t.trailResources[0],r=(n==null?void 0:n.texture)||ze.EMPTY,o=Number(n==null?void 0:n.rotation)||0,a=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),l=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),c=Math.max(2,Math.min(16,Math.round((n==null?void 0:n.boneCount)??3))),h=`${a}:${l}:${c}:${(n==null?void 0:n.id)??0}:${o}`;if(e.mesh&&e.meshSignature===h)return e.mesh.texture!==r&&(e.mesh.texture=r),e.mesh;e.mesh&&(this.container.removeChild(e.mesh),e.mesh.destroy()),e.meshSignature&&e.meshSignature!==h&&(e.history.length=0,e.bones.length=0);const u=new Float32Array(a*l*2),d=new Float32Array(a*l*2),f=[],p=[];for(let g=0;g.05?e.history.unshift({x:t,y:s}):(r.x=t,r.y=s);const o=Math.max(1,n)*1.5;let a=0,l=e.history.length;for(let c=1;c=o||c>=239){l=c+1;break}e.history.length>l&&(e.history.length=l)}sampleBones(e,t,s){const n=Math.max(2,Math.min(16,Math.round(s))),r=e.history,o=[];if(!r.length)return o;let a=0;for(let c=1;c=h&&g>1e-4){const y=(h-u)/g;d={x:Ss(p.x,m.x,y),y:Ss(p.y,m.y,y)};break}u+=g}o.push({boneName:`${e.boneName}_trail_${c}`,x:d.x,y:d.y,rotation:0})}for(let c=0;c1){const c=o[0].rotation,u=(o[o.length-1].rotation-c+540)%360-180;for(let d=0;dh.id===s.resourceId)||t.trailResources[0];if(!(r!=null&&r.texture)||s.bones.length<2){n.visible=!1;return}e.resourceId=r.id,n.texture!==r.texture&&(n.texture=r.texture);const o=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),a=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),l=n.vertices,c=[];for(let h=0;h.5&&s.alpha>0}update(e,t,s,n,r,o,a){if(e.sprite=a,e.boneName=s,!t.trail||!e.enabled||e.sampledLength<=0||e.sampledWidth<=0){Lc(e);return}this.ensureMesh(e,t,a);const l=t.trailResources.find(f=>f.id===e.resourceId)||t.trailResources[0];this.appendPoint(e,n,r,e.sampledLength);const c=l!=null&&l.lifeLengthEnabled?Math.max(0,en(l.lifeLengthCurve,o)):1,h=Math.max(0,e.sampledLength)*c;e.bones=this.sampleBones(e,h,(l==null?void 0:l.boneCount)??3),e.bones[0]&&(e.bones[0].x=n,e.bones[0].y=r);const u=(l==null?void 0:l.widthMode)==="particle"?(Math.abs(a.scale.x)+Math.abs(a.scale.y))*.5:1;e.currentWidth=Math.max(0,e.sampledWidth)*u,e.currentAlpha=(l==null?void 0:l.alphaMode)==="particle"?a.alpha:(l==null?void 0:l.alphaMode)==="curve"?en(l.alphaCurve,o):(l==null?void 0:l.alpha)??1,e.currentColor=(l==null?void 0:l.colorMode)==="particle"?a.tint:(l==null?void 0:l.colorMode)==="curve"?fm(l.colorGradient,o):ta((l==null?void 0:l.color)||"#ffffff");const d={bones:e.bones.map(f=>({...f})),activeBoneCount:e.bones.length,width:e.currentWidth,alpha:Math.min(1,Math.max(0,e.currentAlpha)),colorHex:e.currentColor,resourceId:e.resourceId};return this.skinMesh(e,t,d),d}applyState(e,t,s,n){var r;e.sprite=s,e.resourceId=n.resourceId??((r=t.trailResources[0])==null?void 0:r.id)??1,e.bones=n.bones.map(o=>({...o})),e.currentWidth=n.width,e.currentAlpha=n.alpha,this.skinMesh(e,t,n)}drawDebug(e,t,s,n){if(e.clear(),!t||!s.trail)return;const r=Math.max(2,Math.min(16,Math.round(s.trailGridRows))),o=Math.max(2,Math.min(32,Math.round(s.trailGridCols)));e.lineStyle(1,3790847,.72);for(const a of n){const l=a.mesh;if(!(l!=null&&l.visible))continue;const c=l.vertices,h=(u,d)=>{const f=(u*r+d)*2;return{x:c[f],y:c[f+1]}};for(let u=0;ur.texture||r.sequenceFrames.some(o=>o.texture));if(!t.length)return dR(i.texture);const s=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(s<=0)return t[Math.floor(e()*t.length)];let n=e()*s;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function pR(i,e){const t=i.trailResources.filter(r=>r.texture);if(!t.length)return i.trailResources[0]||fR();const s=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(s<=0)return t[Math.min(t.length-1,Math.floor(e*t.length))];let n=e*s;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function Lv(i,e){if(i.imageMode!=="sequence"||i.sequenceFrames.length<=1)return{index:0,visible:!0};const t=Math.min(120,Math.max(1,Number(i.sequenceFps)||30)),s=Math.max(0,Math.floor(Math.max(0,e)*t)),n=i.sequenceFrames.length-1;return i.sequencePlayback==="once-hide"?{index:Math.min(n,s),visible:s<=n}:i.sequencePlayback==="once-hold"?{index:Math.min(n,s),visible:!0}:i.sequencePlayback==="loop-reverse"?{index:n-s%i.sequenceFrames.length,visible:!0}:{index:s%i.sequenceFrames.length,visible:!0}}function rf(i,e,t){var s;return i.imageMode==="sequence"&&i.sequenceFrames.length?((s=i.sequenceFrames[Math.max(0,Math.min(i.sequenceFrames.length-1,t))])==null?void 0:s.texture)||i.texture||e:i.texture||e}function bl(){return{texture:null,imageResources:[{id:1,texture:null,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}]}],imageWeightVersion:1,name:"ParticleSystem1",mode:"stream",rate:20,streamBehavior:"normal",loopDurationFrames:30,generateLoopStartAnimation:!1,loopStartUseCustomDuration:!1,loopStartDurationFrames:30,generateLoopEndAnimation:!1,loopEndUseCustomDuration:!1,loopEndDurationFrames:30,burstCount:50,burstLoop:!1,delay:0,duration:1,shape:"point",showShape:!0,shapeRangeVersion:1,innerRadius:0,outerRadius:30,innerRectW:0,innerRectH:0,outerRectW:60,outerRectH:40,spawnPathId:0,spawnPathDistribution:"fixed",radius:30,rectW:60,rectH:40,centerX:0,centerY:0,rootRotation:0,rootScaleX:1,rootScaleY:1,renderLayerMode:"top",renderLayerSpineId:0,renderLayerSlotName:"",renderLayerSlotPosition:"above",renderLayerFollowAttachment:!1,emissionAngleMode:"random",direction:0,spread:360,coneDirection:90,coneAngle:60,lifeMin:.6,lifeMax:1.8,lifeMode:"random",lifeCurve:[{x:0,y:0},{x:1,y:1}],speedMin:30,speedMax:140,speedMode:"random",speedCurve:[{x:0,y:0},{x:1,y:1}],scaleMin:.3,scaleMax:.8,scaleMode:"random",scaleAxisMode:"uniform",scaleYMin:.3,scaleYMax:.8,scaleCurve:[{x:0,y:0},{x:1,y:1}],scaleYCurve:[{x:0,y:0},{x:1,y:1}],scaleEndRatio:.3,initialRotationMode:"random",initialRotationMin:0,initialRotationMax:360,initialRotationCurve:[{x:0,y:0},{x:1,y:1}],alpha:.9,alphaEnd:0,rotationSpeedMin:-180,rotationSpeedMax:180,speedOverLifeEnabled:!1,speedOverLifeMode:"fixed",speedOverLifeMin:1,speedOverLifeMax:1,speedOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleOverLifeEnabled:!1,scaleOverLifeMode:"curve",scaleOverLifeAxisMode:"uniform",scaleOverLifeMin:0,scaleOverLifeMax:1,scaleYOverLifeMin:0,scaleYOverLifeMax:1,scaleOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleYOverLifeCurve:[{x:0,y:1},{x:1,y:1}],rotationOverLifeEnabled:!1,rotationOverLifeMode:"random",rotationOverLifeCurve:[{x:0,y:0},{x:1,y:1}],gravity:980,gravityMode:"fixed",gravityMin:980,gravityMax:980,gravityDirection:-90,gravityCurve:[{x:0,y:1},{x:1,y:1}],damping:0,seed:0,colorStart:"#ffffff",colorEnd:"#ff4d4d",colorOverLife:!1,blend:"add",alphaMode:"curve",curveMode:"线性",alphaCurve:[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],textureName:"star",textureFolder:"",alphaScale:1,anchorX:.5,anchorY:.5,independentAlpha:"off",offsetX:0,offsetY:0,noise:!1,noiseAmt:30,noiseRange:100,noiseSpeed:1,useGravity:!1,wind:!1,windX:0,windY:0,windMode:"fixed",windMin:100,windMax:100,windDirection:0,windCurve:[{x:0,y:1},{x:1,y:1}],forceField:!1,forceStrength:10,forceRadius:100,forceCenterX:0,forceCenterY:0,forceFalloff:"linear",showForceFieldShape:!0,vortex:!1,vortexStrength:10,vortexRadius:100,vortexCenterX:0,vortexCenterY:0,vortexFalloff:"linear",showVortexShape:!0,attraction:!1,attractionCenterX:200,attractionCenterY:0,attractionRadius:20,attractionDuration:.5,attractionDelay:.1,attractionDelayMode:"particle",attractionPath:"curve",showAttractionShape:!0,trail:!1,trailConfigVersion:3,trailResources:[{id:1,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:[{x:0,y:1},{x:1,y:1}],boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:[{x:0,y:1},{x:1,y:1}],shapeEnabled:!1,shapeCurve:[{x:0,y:1},{x:1,y:1}]}],trailResourceVersion:6,trailTexture:null,trailTextureName:"trail",trailPreviewUrl:"/images/trail.png",trailColorMode:"particle",trailColor:"#ffffff",trailColorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],trailAlphaMode:"particle",trailAlpha:1,trailAlphaCurve:[{x:0,y:1},{x:1,y:1}],trailBoneCount:3,trailLength:100,trailWidth:100,trailWidthMode:"particle",trailLifeLengthEnabled:!1,trailLifeLengthCurve:[{x:0,y:1},{x:1,y:1}],trailShapeEnabled:!1,trailShapeCurve:[{x:0,y:1},{x:1,y:1}],trailGridRows:4,trailGridCols:4,collision:!1,collisionColliderIds:[],pathFollow:!1,emitterFollow:!1,emitterFollowMode:"none",emitterFollowPathId:0,emitterFollowSpineId:0,emitterFollowBoneName:"",emitterFollowBoneOffsetX:0,emitterFollowBoneOffsetY:0,emitterFollowBoneRotation:0,emitterFollowBoneScaleX:1,emitterFollowBoneScaleY:1,emitterAngleMode:"fixed",emitterFollowCurve:[{x:0,y:0},{x:1,y:1}],emitterFollowDuration:2,emitterFollowSpace:"world",emitterFollowDirection:"forward",emitterFollowOffset:0}}function Dn(i){var F;const e=bl(),t=i,s=t.shapeRangeVersion!==1,n=Number(t.radius),r=Number(t.rectW),o=Number(t.rectH),a=Number(t.direction),l=Number(t.spread),c=t.shape,h=t.imageWeightVersion!==1,u=t.loopDurationFrames==null,d=t.gravityMode==null,f=Number(t.gravity),p=t.windMode==null,m=Number(t.windX),g=Number(t.windY),y=t.forceFalloff==null,x=Number(t.forceStrength),v=t.trailConfigVersion!==3,w=!Array.isArray(t.trailResources),_=t.trailResourceVersion!==6,S=t.trailTexture,b=String(t.trailTextureName||"trail"),A=String(t.trailPreviewUrl||"/images/trail.png").replace("/trails/trail.png","/images/trail.png");for(const[E,k]of Object.entries(e))t[E]!==void 0&&t[E]!==null||(t[E]=Array.isArray(k)?k.map(B=>typeof B=="object"&&B!==null?{...B}:B):k);s&&(i.innerRadius=0,i.outerRadius=Math.max(0,Number.isFinite(n)?n:e.outerRadius),i.innerRectW=0,i.innerRectH=0,i.outerRectW=Math.max(0,Number.isFinite(r)?r:e.outerRectW),i.outerRectH=Math.max(0,Number.isFinite(o)?o:e.outerRectH),i.coneDirection=Number.isFinite(a)?a:90,i.emissionAngleMode=Number.isFinite(l)&&l>0?"random":"fixed",c==="cone"&&(i.spread=Math.max(0,Number(i.coneAngle)||0)),i.shapeRangeVersion=1),i.shape==="orbit"&&(i.shape="path"),["fixed","random","radial","path-normal","path-tangent"].includes(i.emissionAngleMode)||(i.emissionAngleMode="fixed"),!["circle","rect","cone"].includes(i.shape)&&i.emissionAngleMode==="radial"&&(i.emissionAngleMode="fixed"),i.shape!=="path"&&(i.emissionAngleMode==="path-normal"||i.emissionAngleMode==="path-tangent")&&(i.emissionAngleMode="fixed"),i.spawnPathId=Math.max(0,Math.round(Number(i.spawnPathId)||0)),i.spawnPathDistribution!=="fixed"&&i.spawnPathDistribution!=="random"&&(i.spawnPathDistribution="fixed"),i.renderLayerMode!=="top"&&i.renderLayerMode!=="slot"&&(i.renderLayerMode="top"),i.renderLayerSpineId=Math.max(0,Math.round(Number(i.renderLayerSpineId)||0)),typeof i.renderLayerSlotName!="string"&&(i.renderLayerSlotName=""),i.renderLayerSlotPosition!=="above"&&i.renderLayerSlotPosition!=="below"&&(i.renderLayerSlotPosition="above"),typeof i.renderLayerFollowAttachment!="boolean"&&(i.renderLayerFollowAttachment=!1),i.innerRadius=Math.max(0,Number(i.innerRadius)||0),i.outerRadius=Math.max(i.innerRadius,Number(i.outerRadius)||0),i.innerRectW=Math.max(0,Number(i.innerRectW)||0),i.innerRectH=Math.max(0,Number(i.innerRectH)||0),i.outerRectW=Math.max(i.innerRectW,Number(i.outerRectW)||0),i.outerRectH=Math.max(i.innerRectH,Number(i.outerRectH)||0);const P=Array.from(new Set((Array.isArray(i.collisionColliderIds)?i.collisionColliderIds:[]).map(E=>Math.round(Number(E))).filter(E=>Number.isFinite(E)&&E>0)));(P.length!==i.collisionColliderIds.length||P.some((E,k)=>E!==i.collisionColliderIds[k]))&&(i.collisionColliderIds=P),i.streamBehavior!=="normal"&&i.streamBehavior!=="loop"&&(i.streamBehavior="normal"),(u||!Number.isFinite(i.loopDurationFrames))&&(i.loopDurationFrames=Math.ceil(Math.max(1/30,Number(i.duration)||1)*30)),i.loopDurationFrames=Math.min(1800,Math.max(1,Math.ceil(i.loopDurationFrames))),typeof i.generateLoopStartAnimation!="boolean"&&(i.generateLoopStartAnimation=!1),typeof i.generateLoopEndAnimation!="boolean"&&(i.generateLoopEndAnimation=!1),typeof i.loopStartUseCustomDuration!="boolean"&&(i.loopStartUseCustomDuration=!1),typeof i.loopEndUseCustomDuration!="boolean"&&(i.loopEndUseCustomDuration=!1),i.loopStartDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(i.loopStartDurationFrames)||30))),i.loopEndDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(i.loopEndDurationFrames)||30))),(!Array.isArray(i.imageResources)||i.imageResources.length===0)&&(i.imageResources=bl().imageResources);for(const E of i.imageResources){!E.texture&&i.texture&&(E.texture=i.texture),E.textureName||(E.textureName="star"),E.previewUrl==="/particles/star.png"&&(E.previewUrl="/images/star.png"),E.previewUrl||(E.previewUrl=E.textureName==="star"?"/images/star.png":""),E.imageMode!=="fixed"&&E.imageMode!=="sequence"&&(E.imageMode="fixed"),E.sequencePlayback==="once"?E.sequencePlayback="once-hold":E.sequencePlayback==="loop"?E.sequencePlayback="loop-forward":["once-hide","once-hold","loop-forward","loop-reverse"].includes(E.sequencePlayback)||(E.sequencePlayback="loop-forward"),Number.isFinite(E.sequenceFps)||(E.sequenceFps=30),E.sequenceFps=Math.min(120,Math.max(1,Number(E.sequenceFps)||30)),Array.isArray(E.sequenceFrames)||(E.sequenceFrames=[]);for(const k of E.sequenceFrames)typeof k.name!="string"&&(k.name=""),typeof k.previewUrl!="string"&&(k.previewUrl=""),k.texture===void 0&&(k.texture=null);Number.isFinite(E.weight)||(E.weight=100),typeof E.locked!="boolean"&&(E.locked=!1),Number.isFinite(E.scale)||(E.scale=1),Number.isFinite(E.anchorX)||(E.anchorX=.5),Number.isFinite(E.anchorY)||(E.anchorY=.5),E.colorMode!=="fixed"&&E.colorMode!=="random"&&E.colorMode!=="lifetime"&&(E.colorMode=i.colorOverLife?"lifetime":"fixed"),E.colorStart||(E.colorStart=i.colorStart||"#ffffff"),E.colorEnd||(E.colorEnd=i.colorEnd||E.colorStart),(!Array.isArray(E.colorGradient)||E.colorGradient.length<2)&&(E.colorGradient=[{position:0,color:E.colorStart},{position:1,color:E.colorEnd}]),Object.prototype.hasOwnProperty.call(mr,E.blend)||(E.blend=i.blend||"normal"),["off","fixed","curve"].includes(E.independentAlpha)||(E.independentAlpha=i.independentAlpha||"off"),Number.isFinite(E.alpha)||(E.alpha=Number.isFinite(i.alphaScale)?i.alphaScale:1),["跟随导出","线性","贝塞尔"].includes(E.alphaCurveMode)||(E.alphaCurveMode=i.curveMode||"跟随导出"),(!Array.isArray(E.alphaCurve)||E.alphaCurve.length<2)&&(E.alphaCurve=(i.alphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})))}if(i.imageResources.length===1)i.imageResources[0].weight=100,i.imageResources[0].locked=!1;else if(h){const E=100/i.imageResources.length;i.imageResources.forEach((k,B)=>{k.weight=B===i.imageResources.length-1?100-E*(i.imageResources.length-1):E,k.locked=!1})}if(i.imageWeightVersion=1,d){const E=Number.isFinite(f)&&f!==0?f:980;i.gravity=E,i.gravityMin=E,i.gravityMax=E}if(p){const E=Number.isFinite(m)&&Number.isFinite(g)&&(m!==0||g!==0);i.windMin=E?Math.hypot(m,g):100,i.windMax=i.windMin,i.windDirection=E?Math.atan2(-g,m)*180/Math.PI:0}y&&(i.forceStrength=Number.isFinite(x)&&x!==0?x:10),v&&(i.trailConfigVersion=3,i.trailAlphaCurve=[{x:0,y:1},{x:1,y:1}],i.trailLifeLengthCurve=[{x:0,y:1},{x:1,y:1}],i.trailShapeCurve=[{x:0,y:1},{x:1,y:1}],i.trailGridRows=4,i.trailGridCols=4),(w||!i.trailResources.length)&&(i.trailResources=[{id:1,texture:S||null,textureName:b,previewUrl:A,weight:100,locked:!1,rotation:0,colorMode:i.trailColorMode,color:i.trailColor,colorGradient:i.trailColorGradient.map(E=>({...E})),blend:"normal",alphaMode:i.trailAlphaMode,alpha:i.trailAlpha,alphaCurve:i.trailAlphaCurve.map(E=>({...E})),boneCount:i.trailBoneCount,trailRatio:100,lengthMode:"fixed",length:i.trailLength,lengthMin:i.trailLength,lengthMax:i.trailLength,widthSizeMode:"fixed",width:i.trailWidth,widthMin:i.trailWidth,widthMax:i.trailWidth,widthMode:i.trailWidthMode,lifeLengthEnabled:i.trailLifeLengthEnabled,lifeLengthCurve:i.trailLifeLengthCurve.map(E=>({...E})),shapeEnabled:i.trailShapeEnabled,shapeCurve:i.trailShapeCurve.map(E=>({...E}))}]);for(const E of i.trailResources)E.textureName||(E.textureName="trail"),E.previewUrl==="/trails/trail.png"&&(E.previewUrl="/images/trail.png"),E.previewUrl||(E.previewUrl="/images/trail.png"),Number.isFinite(E.weight)||(E.weight=100),typeof E.locked!="boolean"&&(E.locked=!1),Number.isFinite(E.rotation)||(E.rotation=0),["particle","fixed","curve"].includes(E.colorMode)||(E.colorMode=i.trailColorMode||"particle"),E.color||(E.color=i.trailColor||"#ffffff"),(!Array.isArray(E.colorGradient)||E.colorGradient.length<2)&&(E.colorGradient=(i.trailColorGradient||[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}]).map(k=>({...k}))),Object.prototype.hasOwnProperty.call(mr,E.blend)||(E.blend="normal"),["particle","fixed","curve"].includes(E.alphaMode)||(E.alphaMode=i.trailAlphaMode||"particle"),Number.isFinite(E.alpha)||(E.alpha=Number.isFinite(i.trailAlpha)?i.trailAlpha:1),(!Array.isArray(E.alphaCurve)||E.alphaCurve.length<2)&&(E.alphaCurve=(i.trailAlphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),Number.isFinite(E.boneCount)||(E.boneCount=Number.isFinite(i.trailBoneCount)?i.trailBoneCount:3),Number.isFinite(E.trailRatio)||(E.trailRatio=100),E.trailRatio=Math.min(100,Math.max(0,E.trailRatio)),["fixed","random"].includes(E.lengthMode)||(E.lengthMode="fixed"),Number.isFinite(E.length)||(E.length=Number.isFinite(i.trailLength)?i.trailLength:100),Number.isFinite(E.lengthMin)||(E.lengthMin=E.length),Number.isFinite(E.lengthMax)||(E.lengthMax=E.length),["fixed","random"].includes(E.widthSizeMode)||(E.widthSizeMode="fixed"),Number.isFinite(E.width)||(E.width=Number.isFinite(i.trailWidth)?i.trailWidth:100),Number.isFinite(E.widthMin)||(E.widthMin=E.width),Number.isFinite(E.widthMax)||(E.widthMax=E.width),["particle","fixed"].includes(E.widthMode)||(E.widthMode=i.trailWidthMode||"particle"),typeof E.lifeLengthEnabled!="boolean"&&(E.lifeLengthEnabled=!!i.trailLifeLengthEnabled),(!Array.isArray(E.lifeLengthCurve)||E.lifeLengthCurve.length<2)&&(E.lifeLengthCurve=(i.trailLifeLengthCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),typeof E.shapeEnabled!="boolean"&&(E.shapeEnabled=!!i.trailShapeEnabled),(!Array.isArray(E.shapeCurve)||E.shapeCurve.length<2)&&(E.shapeCurve=(i.trailShapeCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})));if(i.trailResources.length===1&&(i.trailResources[0].weight=100,i.trailResources[0].locked=!1),_)for(const E of i.trailResources)E.alphaCurve=((F=E.alphaCurve)==null?void 0:F.length)>=2?E.alphaCurve:[{x:0,y:1},{x:1,y:1}];return i.trailResourceVersion=6,i}class Bv extends ps{constructor(t,s=nR){super();M(this,"pool",[]);M(this,"cfg");M(this,"accumulator",0);M(this,"burstTimer",0);M(this,"_spawnSerial",0);M(this,"_elapsed",0);M(this,"_attractionEnabledAt",0);M(this,"_attractionWasEnabled",!1);M(this,"states",[]);M(this,"rng",Math.random);M(this,"_lastSeed",-1);M(this,"trailDebugGfx",new Ds);M(this,"trail");M(this,"colliders",[]);M(this,"followSpawnX",0);M(this,"followSpawnY",0);M(this,"followSpawnAngle",0);M(this,"spawnPathSampler",null);M(this,"spawnPathClosed",!1);M(this,"followExportCurveMode","线性");M(this,"simulationTransform",null);this.cfg=Dn(t),this.trail=new uR(this),this._ensurePool(s),this.addChild(this.trailDebugGfx)}setFollowExportCurveMode(t){this.followExportCurveMode=t}resolveCurveMode(t){return t==="跟随导出"?this.followExportCurveMode:t}reseed(){const t=this.cfg.seed;t!==this._lastSeed&&(this._lastSeed=t,this.rng=nf(t>>>0))}_ensurePool(t){for(;this.pool.length=n.delay),o=s==="force"||s==="normal"&&(n.mode==="burst"||this._elapsed=1;)this.accumulator-=1,this.spawnOne();else this.burstTimer+=t,n.burstLoop?this.burstTimer>=1&&(this.burstTimer=0,this.emitBurst()):t>0&&this.burstTimer<=t&&this.emitBurst();const a=[];for(let p=0;p0){const C=Math.max(1e-4,Math.abs(n.rootScaleX)),R=Math.max(1e-4,Math.abs(n.rootScaleY)),O=-(((l=this.simulationTransform)==null?void 0:l.rotation)??n.rootRotation)*Math.PI/180,L=Math.cos(O),$=Math.sin(O),V=((c=this.simulationTransform)==null?void 0:c.centerX)??n.centerX,j=((h=this.simulationTransform)==null?void 0:h.centerY)??n.centerY,K=V+L*C*m.x-$*R*m.y,ie=-j+$*C*m.x+L*R*m.y,re=K,pe=-ie,ge=n.forceCenterX-re,he=n.forceCenterY-pe,fe=Math.hypot(ge,he);if(fe>1e-4&&fe<=n.forceRadius){const Y=x1(n.forceFalloff,fe,n.forceRadius),W=n.forceStrength*Y*10,H=ge/fe*W,G=he/fe*W,q=H,se=-G;m.vx+=(L*q+$*se)/C*t,m.vy+=(-$*q+L*se)/R*t}}if(!m.collisionPaused&&n.vortex&&n.vortexStrength!==0&&n.vortexRadius>0){const C=Dr(n,m.x,m.y,this.simulationTransform),R=oR(C.x,C.y,n.vortexCenterX,n.vortexCenterY,n.vortexStrength,n.vortexRadius,n.vortexFalloff),O=kv(n,R.x,R.y,this.simulationTransform);m.vx+=O.x*t,m.vy+=O.y*t}if(!m.collisionPaused&&n.damping>0){const C=Math.max(0,1-n.damping*t);m.vx*=C,m.vy*=C}if(m.collisionPaused)m.vx=0,m.vy=0;else if(m.x+=m.vx*t,m.y+=m.vy*t,this.applyColliders(m,p))continue;if(n.attraction&&!m.collisionPaused){const C=m.maxLife-m.life;if(n.attractionDelayMode==="particle"?C>=Math.max(0,n.attractionDelay):this._elapsed-this._attractionEnabledAt>=Math.max(0,n.attractionDelay)){const O=Dr(n,m.x,m.y,this.simulationTransform),L=n.attractionCenterX,$=n.attractionCenterY,V=Math.max(0,n.attractionRadius);if(!m.attractionActive){if(Math.hypot(L-O.x,$-O.y)<=V){this.kill(p);continue}m.attractionActive=!0,m.attractionElapsed=0,m.attractionStartWorldX=O.x,m.attractionStartWorldY=O.y}m.attractionElapsed+=t;const j=Math.max(1e-4,n.attractionDuration),K=Math.min(1,m.attractionElapsed/j);let ie=Ss(m.attractionStartWorldX,L,K),re=Ss(m.attractionStartWorldY,$,K);if(n.attractionPath==="curve"){const he=L-m.attractionStartWorldX,fe=$-m.attractionStartWorldY,Y=Math.hypot(he,fe);if(Y>1e-4){const W=Y*.25*m.attractionCurveSide,H=(m.attractionStartWorldX+L)*.5-fe/Y*W,G=(m.attractionStartWorldY+$)*.5+he/Y*W,q=1-K;ie=q*q*m.attractionStartWorldX+2*q*K*H+K*K*L,re=q*q*m.attractionStartWorldY+2*q*K*G+K*K*$}}const pe=Math.hypot(L-ie,$-re);if(K>=1||pe<=V){this.kill(p);continue}const ge=Pv(n,ie,re,this.simulationTransform);m.x=ge.x,m.y=ge.y,m.vx=0,m.vy=0}}const y=g,x=m.sprite,v=n.imageResources.find(C=>C.id===m.resourceId);if(v){const C=Lv(v,m.maxLife-m.life);m.imageFrameIndex=C.index,x.texture=rf(v,n.texture,m.imageFrameIndex),x.visible=C.visible}if(n.speedOverLifeEnabled){const C=uc(sf(n.speedOverLifeMode,n.speedOverLifeMin,n.speedOverLifeMax,n.speedOverLifeCurve,y,m.speedScaleTarget),1),R=m.speedScale===0?C:C/m.speedScale;m.vx*=R,m.vy*=R,m.speedScale=C}let w=m.rotationSpeed;n.rotationOverLifeEnabled&&n.rotationOverLifeMode==="curve"&&(w=Ss(n.rotationSpeedMin,n.rotationSpeedMax,en(n.rotationOverLifeCurve,y))),m.rotation+=w*t;let _=m.x,S=m.y;if(n.noise&&n.noiseAmt>0&&n.noiseRange>0&&n.noiseSpeed>0){const C=m.maxLife-m.life,R=Math.max(0,n.noiseRange)*Math.min(1,Math.max(0,n.noiseAmt)/100)*.5,O=C*Math.max(0,n.noiseSpeed)*Math.PI*2;_+=(Math.sin(m.noisePhaseX+O)-Math.sin(m.noisePhaseX))*R,S+=(Math.sin(m.noisePhaseY+O*.83)-Math.sin(m.noisePhaseY))*R}x.x=_,x.y=S,x.rotation=-m.rotation*Math.PI/180;let b=1,A=1;n.scaleOverLifeEnabled&&(b=sf(n.scaleOverLifeMode,n.scaleOverLifeMin,n.scaleOverLifeMax,n.scaleOverLifeCurve,y,m.scaleOverLifeX),A=n.scaleOverLifeAxisMode==="separate"?sf(n.scaleOverLifeMode,n.scaleYOverLifeMin,n.scaleYOverLifeMax,n.scaleYOverLifeCurve,y,m.scaleOverLifeY):b),x.scale.set(uc(m.scaleStartX*b,1),uc(m.scaleStartY*A,1));const P=n.alphaMode==="curve"?en(n.alphaCurve,y,this.resolveCurveMode(n.curveMode))*n.alphaScale:n.alpha*n.alphaScale;x.alpha=uc((v==null?void 0:v.independentAlpha)==="fixed"?v.alpha:(v==null?void 0:v.independentAlpha)==="curve"?en(v.alphaCurve,y,this.resolveCurveMode(v.alphaCurveMode)):P,1);const F=(v==null?void 0:v.colorStart)||"#ffffff",E=(v==null?void 0:v.colorMode)==="lifetime"?fm(v.colorGradient,y):(v==null?void 0:v.colorMode)==="random"?m.colorSample:ta(F);x.tint=E,x.blendMode=mr[(v==null?void 0:v.blend)||"normal"];const k=this.trail.update(m.trail,n,m.boneName,_,S,y,x),B=Dr(n,_,S,this.simulationTransform),D=((u=this.simulationTransform)==null?void 0:u.rotation)??n.rootRotation,X=Math.abs(((d=this.simulationTransform)==null?void 0:d.scaleX)??n.rootScaleX),N=Math.abs(((f=this.simulationTransform)==null?void 0:f.scaleY)??n.rootScaleY),U=k?{...k,bones:k.bones.map(C=>{const R=Dr(n,C.x,C.y,this.simulationTransform);return{...C,worldX:R.x,worldY:R.y,worldRotation:D-C.rotation}})}:void 0;a.push({boneName:m.boneName,spawnId:m.spawnId,x:_,y:S,rotation:m.rotation,scaleX:x.scale.x,scaleY:x.scale.y,worldX:B.x,worldY:B.y,worldRotation:D+m.rotation,worldScaleX:x.scale.x*X,worldScaleY:x.scale.y*N,alpha:x.alpha,colorHex:E,resourceId:m.resourceId,imageFrameIndex:m.imageFrameIndex,imageVisible:x.visible,trailState:U,active:!0})}return this.states=a,a}drawTrailMeshDebug(t){this.trail.drawDebug(this.trailDebugGfx,t,this.cfg,this.pool.map(s=>s.trail))}emitBurst(){for(let t=0;t0&&this.spawnPathSampler){const a=this.estimatedEmissionCount(),l=eR(t.spawnPathDistribution,this._spawnSerial,a,this.spawnPathClosed,this.rng),c=this.spawnPathSampler(l);if(c)return{...this.applyFollowToOrigin(c.x+s,c.y+n),radialAngle:0,pathAngle:c.angle}}const r=sR(t,this.rng);return{...this.applyFollowToOrigin(s+r.x,n+r.y),radialAngle:r.radialAngle}}estimatedEmissionCount(){const t=this.cfg;return t.mode==="burst"?Math.max(1,Math.round(t.burstCount)):Math.max(1,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration))))}applyFollowToOrigin(t,s){const n=this.followSpawnAngle*Math.PI/180,r=Math.cos(n),o=Math.sin(n);return{x:this.followSpawnX+r*t-o*s,y:this.followSpawnY+o*t+r*s}}spawnOne(){const t=this.cfg;let s=this.pool.findIndex(w=>!w.active);if(s===-1)return;const n=this.spawnOrigin(),{x:r,y:o}=n,a=Eo(t.lifeMode,t.lifeMin,t.lifeMax,t.lifeCurve,this.rng()),l=Eo(t.speedMode,t.speedMin,t.speedMax,t.speedCurve,this.rng()),c=iR(t,n,this.followSpawnAngle,this.rng),h=this.pool[s],u=mR(t,this.rng),d=this._spawnSerial++;h.spawnId=d;const f=pR(t,Ur(t.seed,d,1540483477));h.noisePhaseX=Ur(t.seed,d,1757159915)*Math.PI*2,h.noisePhaseY=Ur(t.seed,d,48610963)*Math.PI*2,h.gravityStrength=t.useGravity&&t.gravityMode==="random"?Ss(t.gravityMin,t.gravityMax,this.rng()):t.gravityMin,h.windStrength=t.wind&&t.windMode==="random"?Ss(t.windMin,t.windMax,this.rng()):t.windMin,h.attractionActive=!1,h.attractionElapsed=0,h.collisionPaused=!1,h.attractionCurveSide=Ur(t.seed,d,2738958700)<.5?-1:1,h.trail.history.length=0,h.trail.bones.length=0,h.trail.currentWidth=0,h.trail.currentAlpha=0,h.trail.currentColor=16777215,h.trail.resourceId=f.id;const p=Math.min(100,Math.max(0,Number(f.trailRatio)||0)),m=t.mode==="burst"?Math.max(0,Math.round(t.burstCount)):Math.max(0,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration)))),g=p>0&&m===1&&d===0,y=Ur(t.seed,d,668265261)*100,x=(w,_,S,b,A)=>{if(w!=="random")return Math.max(0,Number(_)||0);const P=Math.max(0,Math.min(Number(S)||0,Number(b)||0)),F=Math.max(0,Math.max(Number(S)||0,Number(b)||0));return Ss(P,F,Ur(t.seed,d,A))};h.trail.sampledLength=x(f.lengthMode,f.length,f.lengthMin,f.lengthMax,374761393),h.trail.sampledWidth=x(f.widthSizeMode,f.width,f.widthMin,f.widthMax,3550635116),h.trail.enabled=t.trail&&(g||y0&&h.trail.sampledWidth>0,h.trail.mesh&&(h.trail.mesh.visible=!1),h.active=!0,h.life=a,h.maxLife=a,h.x=r,h.y=o,h.trail.enabled&&h.trail.history.push({x:r,y:o}),h.vx=Math.cos(c)*l,h.vy=Math.sin(c)*l,h.scaleStartX=Eo(t.scaleMode,t.scaleMin,t.scaleMax,t.scaleCurve,this.rng())*u.scale,h.scaleStartY=t.scaleAxisMode==="separate"?Eo(t.scaleMode,t.scaleYMin,t.scaleYMax,t.scaleYCurve,this.rng())*u.scale:h.scaleStartX,h.alphaStart=t.alpha,h.alphaEnd=t.alphaEnd,h.rotation=t.initialRotationMode==="direction"?-Math.atan2(h.vy,h.vx)*180/Math.PI+t.initialRotationMin:Eo(t.initialRotationMode,t.initialRotationMin,t.initialRotationMax,t.initialRotationCurve,this.rng()),h.rotationSpeed=t.rotationOverLifeEnabled?Eo(t.rotationOverLifeMode,t.rotationSpeedMin,t.rotationSpeedMax,t.rotationOverLifeCurve,this.rng()):0,h.speedScale=1,h.speedScaleTarget=t.speedOverLifeMode==="random"?Ss(t.speedOverLifeMin,t.speedOverLifeMax,this.rng()):t.speedOverLifeMin,h.scaleOverLifeX=t.scaleOverLifeMode==="random"?Ss(t.scaleOverLifeMin,t.scaleOverLifeMax,this.rng()):t.scaleOverLifeMin,h.scaleOverLifeY=t.scaleOverLifeMode==="random"?Ss(t.scaleYOverLifeMin,t.scaleYOverLifeMax,this.rng()):t.scaleYOverLifeMin,h.resourceId=u.id,h.colorSample=u.colorMode==="random"?fm(u.colorGradient,Ur(t.seed,d,2654435769)):ta(u.colorStart);const v=Lv(u,0);h.imageFrameIndex=v.index,h.sprite.texture=rf(u,t.texture,v.index),h.sprite.anchor.set(u.anchorX,u.anchorY),h.sprite.blendMode=mr[u.blend],h.sprite.tint=h.colorSample,h.sprite.visible=!0}kill(t){const s=this.pool[t];s.active=!1,s.sprite.visible=!1,Lc(s.trail)}clear(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Lc(t.trail)}get activeCount(){let t=0;for(const s of this.pool)s.active&&t++;return t}capture(){const t=[];for(const s of this.pool)s.active&&t.push({boneName:s.boneName,spawnId:s.spawnId,x:s.sprite.x,y:s.sprite.y,rotation:s.rotation,scaleX:s.sprite.scale.x,scaleY:s.sprite.scale.y,...this.captureWorldTransform(s),alpha:s.sprite.alpha,colorHex:s.sprite.tint,resourceId:s.resourceId,imageFrameIndex:s.imageFrameIndex,imageVisible:s.sprite.visible,active:!0,trailState:this.cfg.trail&&s.trail.bones.length?{bones:s.trail.bones.map(n=>{var o;const r=Dr(this.cfg,n.x,n.y,this.simulationTransform);return{...n,worldX:r.x,worldY:r.y,worldRotation:(((o=this.simulationTransform)==null?void 0:o.rotation)??this.cfg.rootRotation)-n.rotation}}),activeBoneCount:s.trail.bones.length,width:s.trail.currentWidth,alpha:s.trail.currentAlpha,colorHex:s.trail.currentColor,resourceId:s.trail.resourceId}:void 0});return t}captureWorldTransform(t){var r,o,a;const s=Dr(this.cfg,t.sprite.x,t.sprite.y,this.simulationTransform),n=((r=this.simulationTransform)==null?void 0:r.rotation)??this.cfg.rootRotation;return{worldX:s.x,worldY:s.y,worldRotation:n+t.rotation,worldScaleX:t.sprite.scale.x*Math.abs(((o=this.simulationTransform)==null?void 0:o.scaleX)??this.cfg.rootScaleX),worldScaleY:t.sprite.scale.y*Math.abs(((a=this.simulationTransform)==null?void 0:a.scaleY)??this.cfg.rootScaleY)}}apply(t){const s=new Map;for(const n of t)s.set(n.boneName,n);for(const n of this.pool){const r=s.get(n.boneName);if(!r){n.active=!1,n.sprite.visible=!1,n.trail.mesh&&(n.trail.mesh.visible=!1);continue}n.active=r.active;const o=n.sprite;if(o.visible=r.active&&r.imageVisible!==!1,o.x=r.x,o.y=r.y,o.rotation=-r.rotation*Math.PI/180,o.scale.set(r.scaleX,r.scaleY),o.alpha=r.alpha,o.tint=r.colorHex,r.resourceId!=null){const a=this.cfg.imageResources.find(l=>l.id===r.resourceId);a&&(n.imageFrameIndex=r.imageFrameIndex??0,o.texture=rf(a,this.cfg.texture,n.imageFrameIndex),o.anchor.set(a.anchorX,a.anchorY),o.blendMode=mr[a.blend])}this.cfg.trail&&r.trailState?this.trail.applyState(n.trail,this.cfg,n.sprite,r.trailState):n.trail.mesh&&(n.trail.mesh.visible=!1)}}reset(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Lc(t.trail);this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=!1,this._lastSeed=this.cfg.seed,this.rng=nf(this.cfg.seed>>>0)}restartEmissionCycle(){this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=this.cfg.attraction,this._lastSeed=this.cfg.seed,this.rng=nf(this.cfg.seed>>>0)}}const uo=new Map,oo=new Map;function gR(i){return[...uo.values()].some(e=>e===i)}function b1(i){if(!(gR(i)||(oo.get(i)||0)>0)){oo.delete(i);for(const e of i.textures)e.destroy(!0)}}function vR(i){const e=oo.get(i)||0;e>1?oo.set(i,e-1):oo.delete(i),b1(i)}function yR(i){return uo.get(i)||null}function fu(i,e){Pl(i),uo.set(i,e)}function xR(i){const e=uo.get(i);return e?(oo.set(e,(oo.get(e)||0)+1),e):null}function bR(i,e){const t=uo.get(i);return t?(fu(e,t),!0):!1}function Pl(i){const e=uo.get(i);e&&(uo.delete(i),b1(e))}function $t(i){if(Array.isArray(i))return i.map(e=>$t(e));if(i&&typeof i=="object"){const e=Object.getPrototypeOf(i);if(e===Object.prototype||e===null){const t={};for(const[s,n]of Object.entries(i))t[s]=$t(n);return t}}return i}const w1=["3.8","4.0","4.1","4.2","4.3"];function gh(i){const e=String(i||"").trim();return w1.find(t=>e===t||e.startsWith(`${t}.`))||null}function mm(){return w1.join(" / ")}function wR(i){return i==="4.3"?"4.3":"4.2"}function bp(){return{imagesPath:"./images/",spineVersion:"4.2",keyframeCurve:"bezier",fps:30,omitFps:!1,integerFrameAlignment:!0,bonePool:!0,excludeEmptyAnimations:!1,fileName:"SpineParticle.json"}}function S1(i){const e=Object.assign(bp(),i||{});return e.imagesPath=String(e.imagesPath||"./images/"),e.spineVersion=gh(e.spineVersion)||"4.2",e.keyframeCurve=e.keyframeCurve==="bezier"?"bezier":"linear",e.fps=Math.min(240,Math.max(1,Math.round(Number(e.fps)||30))),e.omitFps=e.omitFps===!0,e.integerFrameAlignment=e.integerFrameAlignment!==!1,e.bonePool=e.bonePool!==!1,e.excludeEmptyAnimations=e.excludeEmptyAnimations===!0,e.fileName=String(e.fileName||"SpineParticle.json"),e}const pm=30;function Bc(i,e=1){return Math.min(1800,Math.max(1,Math.ceil(Number(i)||e)))}function M1(i,e=30){const t=Math.max(0,Number(i.lifeMin)||0),s=Math.max(0,Number(i.lifeMax)||0),n=i.lifeMode==="fixed"?t:Math.max(t,s);return Bc(Math.ceil(n*Math.max(1,e)),pm)}function pr(i,e=30){const t=Bc(i.loopDurationFrames),s=M1(i,e),n=i.generateLoopStartAnimation?i.loopStartUseCustomDuration?Bc(i.loopStartDurationFrames,pm):s:0,r=i.generateLoopEndAnimation?i.loopEndUseCustomDuration?Bc(i.loopEndDurationFrames,pm):s:0;return{start:n,loop:t,end:r,total:n+t+r}}function wp(i,e){const t=pr(i,e),n=Math.max(0,Math.ceil(Math.max(0,Number(i.delay)||0)*Math.max(1,e)))+t.start;return{start:n,end:n+t.loop}}const SR=.001;function MR(i,e){const t=Math.max(1,Number(e)||30),n=Math.max(0,Number(i)||0)*t+SR*t;return Math.max(0,Math.floor(n))}function Nc(i,e,t){const s=Math.max(1,Math.floor(t)-1),n=Math.min(s-1,Math.max(0,Math.floor(Number(i)||0))),r=Math.min(s,Math.max(n+1,Math.floor(Number(e)||s)));return{start:n,end:r}}function TR(i,e,t){const s=Math.max(1,e-1),n=Math.max(1,t-1),r=i.end>=s?n:i.end;return Nc(i.start,r,t)}let dc=1,fc=1,mc=1,pc=1;function gc(i,e){const t=new Set(e),s=`${i} Copy`;if(!t.has(s))return s;let n=2;for(;t.has(`${s} ${n}`);)n++;return`${s} ${n}`}const yo=D2("particle",{state:()=>({editor:{viewScale:1,viewX:0,viewY:0},systems:[],colliders:[],paths:[],spines:[],activeId:0,activeObjectType:"particle",activeObjectId:0,timeline:{playing:!0,loop:!0,frame:0,totalFrames:60,playbackStart:0,playbackEnd:59,fps:30,recorded:!1,animation:"animation",animations:["animation"]},settings:{parameterPanelOnRight:!0,tickEnabled:!1,axisFontSize:12,tickWidth:1,showAxisLabels:!0,axisColor:"#7a86ad",undoLimit:20,backgroundX:0,backgroundY:0,backgroundOpacity:1,backgroundImageName:"",backgroundImageData:"",showEmitter:!0,showBones:!1,bonePointDrawSize:1,boneAxisDrawSize:2,showSkinMesh:!1,showGrid:!0,exportSettings:bp()}}),getters:{activeSystemCount:i=>i.systems.length},actions:{syncSceneSequences(){dc=Math.max(dc,...this.systems.map(i=>i.id+1),1),fc=Math.max(fc,...this.colliders.map(i=>i.id+1),1),mc=Math.max(mc,...this.paths.map(i=>i.id+1),1),pc=Math.max(pc,...this.spines.map(i=>i.id+1),1)},addSystem(i){const e=bl();i!=null&&i.config&&Object.assign(e,i.config);const t=new Set(this.systems.map(r=>r.config.name));if(t.has(e.name)){let r=0;for(const a of this.systems){const l=/^ParticleSystem(\d+)$/.exec(a.config.name);l&&(r=Math.max(r,parseInt(l[1],10)))}e.name=`ParticleSystem${r+1}`;let o=2;for(;t.has(e.name);)e.name=`ParticleSystem${r+o}`,o++}const s=this.timeline.animations.includes(this.timeline.animation)?this.timeline.animation:this.timeline.animations[0]||"animation",n={id:dc++,visible:!0,animation:s,config:e};return this.systems.push(n),this.activeId=n.id,this.activeObjectType="particle",this.activeObjectId=n.id,n},removeSystem(i){var s;const e=this.systems.findIndex(n=>n.id===i);e>=0&&this.systems.splice(e,1),this.activeId===i&&(this.activeId=((s=this.systems[0])==null?void 0:s.id)??0);const t=this.systems.find(n=>n.id===this.activeId);if(t&&(this.timeline.animation=t.animation),this.activeObjectType==="particle"&&this.activeObjectId===i){const n=this.systems[0];this.activeObjectId=(n==null?void 0:n.id)??0}},selectSystem(i){this.activeId=i,this.activeObjectType="particle",this.activeObjectId=i;const e=this.systems.find(t=>t.id===i);e&&(this.timeline.animation=e.animation)},setSystemAnimation(i,e){if(!this.timeline.animations.includes(e))return;const t=this.systems.find(s=>s.id===i);t&&(t.animation=e,this.timeline.animation=e)},addAnimation(){const i=new Set(this.timeline.animations);let e=2,t=`animation${e}`;for(;i.has(t);)t=`animation${++e}`;this.timeline.animations.push(t),this.timeline.animation=t;const s=this.systems.find(n=>n.id===this.activeId);return s&&(s.animation=t),t},renameAnimation(i,e){const t=e.trim(),s=this.timeline.animations.indexOf(i);if(s<0||!t||t!==i&&this.timeline.animations.includes(t))return!1;this.timeline.animations[s]=t;for(const n of this.systems)n.animation===i&&(n.animation=t);return this.timeline.animation===i&&(this.timeline.animation=t),!0},removeAnimation(i){if(this.timeline.animations.length<=1)return!1;const e=this.timeline.animations.indexOf(i);if(e<0)return!1;this.timeline.animations.splice(e,1);const t=this.timeline.animations[Math.min(e,this.timeline.animations.length-1)];for(const s of this.systems)s.animation===i&&(s.animation=t);return this.timeline.animation===i&&(this.timeline.animation=t),!0},addCollider(){const i=fc++,e={id:i,name:`Collider${i}`,visible:!0,shape:"circle",enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,radius:50,radiusX:70,radiusY:45,width:120,height:80,sides:6,response:"physics",elasticity:.8,friction:.3,followPath:!1,followPathId:0,followDuration:2,followPathRotation:!1,followCurveMode:"跟随导出",followCurve:[{x:0,y:0},{x:1,y:1}]};return this.colliders.push(e),this.activeObjectType="collision",this.activeObjectId=e.id,e},addPath(){const i=mc++,e={id:i,name:`Path${i}`,visible:!0,enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,closed:!1,color:"#ff933e",preset:"",points:[]};return this.paths.push(e),this.activeObjectType="path",this.activeObjectId=e.id,e},addSpine(){const i=pc++,e={id:i,name:`SpineSkeleton${i}`,enabled:!0,visible:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,timeOffset:0,skeletonFileName:"",atlasFileName:"",textureFileNames:[],dataVersion:"",sourceBundle:null,selectedAnimation:"",selectedBone:"",selectedSlot:"",animations:[],bones:[],slots:[],assetVersion:0,status:"empty",error:""};return this.spines.push(e),this.activeObjectType="spine",this.activeObjectId=e.id,e},duplicateSelectedObject(){const i=this.activeObjectId;if(!i)return null;if(this.activeObjectType==="particle"){const s=this.systems.find(r=>r.id===i);if(!s)return null;const n=$t(s);return n.id=dc++,n.config.name=gc(s.config.name,this.systems.map(r=>r.config.name)),n.frames=void 0,this.systems.push(n),this.activeId=n.id,this.activeObjectId=n.id,this.timeline.animation=n.animation,n}if(this.activeObjectType==="collision"){const s=this.colliders.find(r=>r.id===i);if(!s)return null;const n=$t(s);return n.id=fc++,n.name=gc(s.name,this.colliders.map(r=>r.name)),this.colliders.push(n),this.activeObjectId=n.id,n}if(this.activeObjectType==="path"){const s=this.paths.find(r=>r.id===i);if(!s)return null;const n=$t(s);return n.id=mc++,n.name=gc(s.name,this.paths.map(r=>r.name)),this.paths.push(n),this.activeObjectId=n.id,n}const e=this.spines.find(s=>s.id===i);if(!e)return null;const t=$t(e);return t.id=pc++,t.name=gc(e.name,this.spines.map(s=>s.name)),t.selectedBone="",t.selectedSlot="",bR(e.id,t.id),this.spines.push(t),this.activeObjectId=t.id,t},selectSceneObject(i,e){if(this.activeObjectType=i,this.activeObjectId=e,i==="particle"){this.activeId=e;const t=this.systems.find(s=>s.id===e);t&&(this.timeline.animation=t.animation)}},removeCollider(i){var t;const e=this.colliders.findIndex(s=>s.id===i);e>=0&&this.colliders.splice(e,1);for(const s of this.systems){const n=Dn(s.config);n.collisionColliderIds=n.collisionColliderIds.filter(r=>r!==i)}if(this.activeObjectType==="collision"&&this.activeObjectId===i){const s=this.systems[0];this.activeObjectType=s?"particle":"collision",this.activeObjectId=(s==null?void 0:s.id)??((t=this.colliders[0])==null?void 0:t.id)??0}},removePath(i){var t;const e=this.paths.findIndex(s=>s.id===i);if(e>=0&&this.paths.splice(e,1),this.activeObjectType==="path"&&this.activeObjectId===i){const s=this.systems[0];this.activeObjectType=s?"particle":"path",this.activeObjectId=(s==null?void 0:s.id)??((t=this.paths[0])==null?void 0:t.id)??0}},removeSpine(i){Pl(i);const e=this.spines.findIndex(t=>t.id===i);if(e>=0&&this.spines.splice(e,1),this.activeObjectType==="spine"&&this.activeObjectId===i){const t=this.systems[0],s=this.colliders[0],n=this.paths[0],r=this.spines[0];t?(this.activeObjectType="particle",this.activeObjectId=t.id,this.activeId=t.id):s?(this.activeObjectType="collision",this.activeObjectId=s.id):n?(this.activeObjectType="path",this.activeObjectId=n.id):(this.activeObjectType="spine",this.activeObjectId=(r==null?void 0:r.id)??0)}this.recalcTotalFrames()},play(){const i=Nc(this.timeline.playbackStart,this.timeline.playbackEnd,this.timeline.totalFrames);(this.timeline.frame=i.end)&&(this.timeline.frame=i.start),this.timeline.playing=!0},pause(){this.timeline.playing=!1},togglePlay(){this.timeline.playing?this.pause():this.play()},toStart(){this.timeline.frame=this.timeline.playbackStart},previousFrame(){this.timeline.playing=!1,this.timeline.frame=Math.max(this.timeline.playbackStart,this.timeline.frame-1)},nextFrame(){this.timeline.playing=!1,this.timeline.frame=Math.min(this.timeline.playbackEnd,this.timeline.frame+1)},toEnd(){this.timeline.playing=!1,this.timeline.frame=this.timeline.playbackEnd},toggleLoop(){this.timeline.loop=!this.timeline.loop},setFrame(i){this.timeline.frame=Math.max(0,Math.min(i,this.timeline.totalFrames-1))},setPlaybackStart(i){const e=Nc(i,this.timeline.playbackEnd,this.timeline.totalFrames);this.timeline.playbackStart=e.start,this.timeline.playbackEnd=e.end,this.timeline.framee.end&&(this.timeline.frame=e.end)},recalcTotalFrames(){const i=this.timeline.fps||30;let e=0;for(const r of this.systems){const o=r.config,a=Math.max(0,Number(o.lifeMin)||0),l=Math.max(0,Number(o.lifeMax)||0),c=o.lifeMode==="fixed"?a:Math.max(a,l),h=o.mode==="stream"?o.streamBehavior==="loop"?Math.max(1/i,Math.ceil(Math.max(1,Number(o.loopDurationFrames)||1))/i):Math.max(1/i,Number(o.duration)||0):0;let u=Math.max(0,Number(o.delay)||0)+h+c;o.mode==="stream"&&o.streamBehavior==="loop"&&(u=Math.max(0,Number(o.delay)||0)+pr(o,i).total/i),u>e&&(e=u)}for(const r of this.spines){const o=r.animations.find(l=>l.name===r.selectedAnimation);if(!o)continue;const a=Math.max(0,Number(r.timeOffset)||0)+Math.max(0,o.duration||0);a>e&&(e=a)}for(const r of this.colliders){if(!r.followPath||!r.followPathId)continue;const o=Math.max(0,Number(r.followDuration)||0);o>e&&(e=o)}const t=this.timeline.totalFrames,s=Math.max(2,MR(e,i)+1);this.timeline.totalFrames=s;const n=TR({start:this.timeline.playbackStart,end:this.timeline.playbackEnd},t,s);return this.timeline.playbackStart=n.start,this.timeline.playbackEnd=n.end,this.timeline.frame>=s&&(this.timeline.frame=s-1),s}}}),T1="SpineParticle.SystemSettings",_1=1,of="SpineParticle.SystemSettings.v1";function Oa(i,e,t,s){const n=Number(i);return Math.min(t,Math.max(e,Number.isFinite(n)?n:s))}function _R(i){return{parameterPanelOnRight:i.parameterPanelOnRight,undoLimit:i.undoLimit,showEmitter:i.showEmitter,showBones:i.showBones,bonePointDrawSize:i.bonePointDrawSize,boneAxisDrawSize:i.boneAxisDrawSize,showSkinMesh:i.showSkinMesh,tickEnabled:i.tickEnabled,axisFontSize:i.axisFontSize,tickWidth:i.tickWidth,showAxisLabels:i.showAxisLabels,axisColor:i.axisColor}}function CR(i,e){const t=n=>i[n]==null?!!e[n]:i[n]===!0,s=typeof i.axisColor=="string"&&/^#[0-9a-f]{6}$/i.test(i.axisColor)?i.axisColor:e.axisColor;return{parameterPanelOnRight:t("parameterPanelOnRight"),undoLimit:Math.round(Oa(i.undoLimit,1,200,e.undoLimit)),showEmitter:t("showEmitter"),showBones:t("showBones"),bonePointDrawSize:Oa(i.bonePointDrawSize,.1,10,e.bonePointDrawSize),boneAxisDrawSize:Oa(i.boneAxisDrawSize,.1,10,e.boneAxisDrawSize),showSkinMesh:t("showSkinMesh"),tickEnabled:t("tickEnabled"),axisFontSize:Math.round(Oa(i.axisFontSize,8,40,e.axisFontSize)),tickWidth:Oa(i.tickWidth,1,5,e.tickWidth),showAxisLabels:t("showAxisLabels"),axisColor:s}}function AR(i){let e;try{e=JSON.parse(i)}catch{throw new Error("系统设置缓存不是有效的 JSON")}const t=e;if(t.format!==T1)throw new Error("不是 Spine粒子编辑器系统设置缓存");if(t.version!==_1)throw new Error(`暂不支持系统配置版本:${t.version??"未知"}`);if(!t.settings||typeof t.settings!="object")throw new Error("系统设置缓存缺少 settings");return t}function ER(i,e){Object.assign(i.settings,CR(e,i.settings))}let vc=null;function IR(i){vc==null||vc();try{const e=localStorage.getItem(of);e&&ER(i,AR(e).settings)}catch{try{localStorage.removeItem(of)}catch{}}vc=Cs(()=>_R(i.settings),e=>{const t={format:T1,version:_1,savedAt:new Date().toISOString(),settings:e};try{localStorage.setItem(of,JSON.stringify(t))}catch{}},{deep:!0})}function RR(i,e=0){if(i<=0)return 1;const t=Math.pow(10,Math.floor(Math.log10(i))),s=[1,2,5,10,20,50,100];let n=1;for(const r of s)if(r*t>=i){n=r*t;break}return Math.max(n,e)}function PR(i,e,t,s,n){if(!t)return;const r=t;r.clear();const o=i.settings;if(!o.tickEnabled){for(const b of n)b.visible=!1;return}const a=0,l=0,c=e.screen.width/i.editor.viewScale,h=e.screen.height/i.editor.viewScale,u=+("0x"+o.axisColor.replace("#",""));r.lineStyle(1.5,u,.35),r.moveTo(-c,l),r.lineTo(c,l),r.moveTo(a,-h),r.lineTo(a,h);const d=i.editor.viewScale,f=RR(50/d),p=c,m=h,g=Math.max(1,o.tickWidth);if(o.tickEnabled){for(let b=0;b<=c;b+=f){const A=Math.round(b/f)*f;A!==0&&(r.lineStyle(g,u,.25),r.moveTo(A,l-4),r.lineTo(A,l+4),r.moveTo(-A,l-4),r.lineTo(-A,l+4))}for(let b=0;b<=h;b+=f)Math.round(b/f)*f!==0&&(r.lineStyle(g,u,.25),r.moveTo(a-4,b),r.lineTo(a+4,b),r.moveTo(a-4,-b),r.lineTo(a+4,-b))}const y=e.screen.width/2+i.editor.viewX,x=e.screen.height*.5+i.editor.viewY,v=o.axisFontSize,w=+("0x"+o.axisColor.replace("#",""));for(;n.length<64;){const b=new xp("",{fontFamily:"monospace",fontSize:v,fill:w});b.anchor.set(.5,.5),s.addChild(b),n.push(b)}let _=0;const S=o.showAxisLabels&&o.tickEnabled;for(let b=0;b<=c;b+=f){const A=Math.round(b/f)*f;if(A===0||!S||A>p)continue;const P=n[_++];if(!P)break;P.style.fontSize=v,P.text=String(A),P.position.set(y+A*d,x+9),P.visible=!0;const F=n[_++];if(!F)break;F.style.fontSize=v,F.text=String(-A),F.position.set(y-A*d,x+9),F.visible=!0}for(let b=0;b<=h;b+=f){const A=Math.round(b/f)*f;if(A===0||!S||A>m)continue;const P=n[_++];if(!P)break;P.style.fontSize=v,P.text=String(A),P.position.set(y+8,x-b*d),P.visible=!0;const F=n[_++];if(!F)break;F.style.fontSize=v,F.text=String(-A),F.position.set(y+8,x+b*d),F.visible=!0}for(;_x.id===i.activeId);if(!n||n.visible===!1)return;const r=n.config;if(!r.showShape)return;const o=e.get(n.id),a=(o==null?void 0:o.x)??r.centerX??0,l=-((o==null?void 0:o.y)??r.centerY??0),c=r.shape;if(c==="point"||c==="path")return;const h=r.rootScaleX??1,u=r.rootScaleY??1,d=-((o==null?void 0:o.rotation)??r.rootRotation??0)*Math.PI/180,f=Math.cos(d),p=Math.sin(d),m=r.offsetX??0,g=r.offsetY??0,y=(x,v)=>{const w=x+m,_=-v-g,S=w*h,b=_*u;return[a+S*f-b*p,l+(S*p+b*f)]};if(c==="circle"){const x=ph(r.innerRadius,r.outerRadius);s.lineStyle(2,3991658,.7);const v=48;for(const w of[x.outer,x.inner])if(!(w<=0))for(let _=0;_<=v;_++){const S=_/v*Math.PI*2,[b,A]=y(Math.cos(S)*w,Math.sin(S)*w);_===0?s.moveTo(b,A):s.lineTo(b,A)}}else if(c==="rect"){const x=y1(r);s.lineStyle(2,4885759,.7);for(const[v,w]of[[x.outerW,x.outerH],[x.innerW,x.innerH]]){if(v<=0||w<=0)continue;const _=v/2,S=w/2,b=y(-_,-S),A=y(_,-S),P=y(_,S),F=y(-_,S);s.moveTo(b[0],b[1]),s.lineTo(A[0],A[1]),s.lineTo(P[0],P[1]),s.lineTo(F[0],F[1]),s.lineTo(b[0],b[1])}}else if(c==="cone"){const x=ph(r.innerRadius,r.outerRadius),v=r.coneAngle/2*Math.PI/180,w=r.coneDirection*Math.PI/180,_=y(Math.cos(w-v)*x.inner,Math.sin(w-v)*x.inner),S=y(Math.cos(w+v)*x.inner,Math.sin(w+v)*x.inner),b=y(Math.cos(w-v)*x.outer,Math.sin(w-v)*x.outer),A=y(Math.cos(w+v)*x.outer,Math.sin(w+v)*x.outer);s.lineStyle(2,3991658,.7),s.moveTo(_[0],_[1]),s.lineTo(b[0],b[1]),s.moveTo(S[0],S[1]),s.lineTo(A[0],A[1]),s.lineStyle(1,3991658,.5);const P=24;for(const F of[x.outer,x.inner])if(!(F<=0))for(let E=0;E<=P;E++){const k=w-v+2*v*E/P,[B,D]=y(Math.cos(k)*F,Math.sin(k)*F);E===0?s.moveTo(B,D):s.lineTo(B,D)}}}function OR(i,e){if(!e)return;const t=e;t.clear();const s=i.systems.find(l=>l.id===i.activeId);if((s==null?void 0:s.visible)===!1)return;const n=s==null?void 0:s.config;if(!(n!=null&&n.forceField)||!n.showForceFieldShape||n.forceRadius<=0)return;const r=n.forceCenterX,o=-n.forceCenterY,a=n.forceStrength>=0?5818367:16739194;t.lineStyle(2,a,.85),t.beginFill(a,.08),t.drawCircle(r,o,n.forceRadius),t.endFill(),t.lineStyle(1,a,.7),t.moveTo(r-9,o),t.lineTo(r+9,o),t.moveTo(r,o-9),t.lineTo(r,o+9),t.beginFill(a,.95),t.drawCircle(r,o,4),t.endFill()}function LR(i,e){if(!e)return;const t=e;t.clear();const s=i.systems.find(u=>u.id===i.activeId);if((s==null?void 0:s.visible)===!1)return;const n=s==null?void 0:s.config;if(!(n!=null&&n.vortex)||!n.showVortexShape||n.vortexRadius<=0)return;const r=n.vortexCenterX,o=-n.vortexCenterY,a=n.vortexStrength>=0?12156159:16753228;t.lineStyle(2,a,.9),t.beginFill(a,.07),t.drawCircle(r,o,n.vortexRadius),t.endFill(),t.beginFill(a,.95),t.drawCircle(r,o,4),t.endFill();const l=r+Math.min(n.vortexRadius*.65,50),c=n.vortexStrength>=0?-1:1,h=o+c*14;t.lineStyle(2,a,.9),t.moveTo(l,o+c*-8),t.lineTo(l,h),t.moveTo(l,h),t.lineTo(l-4,h-c*5),t.moveTo(l,h),t.lineTo(l+4,h-c*5)}function BR(i,e){if(!e)return;const t=e;t.clear();const s=i.systems.find(c=>c.id===i.activeId);if((s==null?void 0:s.visible)===!1)return;const n=s==null?void 0:s.config;if(!(n!=null&&n.attraction)||!n.showAttractionShape)return;const r=n.attractionCenterX,o=-n.attractionCenterY,a=Math.max(0,n.attractionRadius),l=16731487;a>0&&(t.lineStyle(2,l,.95),t.beginFill(l,.09),t.drawCircle(r,o,a),t.endFill()),t.lineStyle(1,l,.85),t.moveTo(r-10,o),t.lineTo(r+10,o),t.moveTo(r,o-10),t.lineTo(r,o+10),t.beginFill(l,1),t.drawCircle(r,o,a>0?4:6),t.endFill()}function NR(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1));return{x:i.x+n*e*o-r*t*a,y:i.y+r*e*o+n*t*a}}function Io(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1)),l=e-i.x,c=t-i.y;return{x:(n*l+r*c)/o,y:(-r*l+n*c)/a}}function C1(i,e,t="linear"){if(!i.length)return e;const s=[...i].sort((n,r)=>n.x-r.x);if(e<=s[0].x)return s[0].y;for(let n=1;nc.id===a.emitterFollowSpineId);!l||l.visible===!1||n.set(`${a.emitterFollowSpineId}:${a.emitterFollowBoneName}`,{spineId:a.emitterFollowSpineId,boneName:a.emitterFollowBoneName})}for(const o of n.values()){const a=e==null?void 0:e.getBoneWorldTransform(o.spineId,o.boneName);if(!a)continue;const l=a.x,c=-a.y;s.lineStyle(2,12881151,.95),s.beginFill(12881151,.2),s.drawCircle(l,c,8),s.endFill(),s.beginFill(15919103,1),s.drawCircle(l,c,3.5),s.endFill()}}function UR(i,e,t){if(!t)return;const s=t;if(s.clear(),!i.value)return;const n=e();if(!n)return;const r=n.x,o=-n.y,a=n.scaleX,l=n.scaleY,c=-n.rotation*Math.PI/180,h=Math.cos(c),u=Math.sin(c),d=(m,g)=>{const y=m*a,x=-g*l;return[r+y*h-x*u,o+(y*u+x*h)]},f=(m,g,y,x)=>{const v=d(m,g),w=d(y,x);s.moveTo(v[0],v[1]),s.lineTo(w[0],w[1])},p=26;if(s.lineStyle(2,3526911,.9),s.beginFill(3526911,.25),s.drawCircle(r,o,6),s.endFill(),i.value==="translate")s.lineStyle(2,3526911,.9),f(-p,0,p,0),f(0,-p,0,p),f(p-6,-4,p,0),f(p,0,p-6,4),f(-20,-4,-p,0),f(-p,0,-20,4),f(-4,p-6,0,p),f(0,p,4,p-6),f(-4,-20,0,-p),f(0,-p,4,-20);else if(i.value==="rotate"){s.lineStyle(2,3526911,.8);const m=48;for(let x=0;x<=m;x++){const v=x/m*Math.PI*2,[w,_]=d(Math.cos(v)*p,Math.sin(v)*p);x===0?s.moveTo(w,_):s.lineTo(w,_)}const[g,y]=d(0,p);s.beginFill(3526911,.95),s.drawCircle(g,y,4),s.endFill()}else if(i.value==="scale"){s.lineStyle(2,3526911,.9);const g=[[-p,-p],[p,-p],[p,p],[-p,p]].map(([y,x])=>d(y,x));s.moveTo(g[0][0],g[0][1]),s.lineTo(g[1][0],g[1][1]),s.lineTo(g[2][0],g[2][1]),s.lineTo(g[3][0],g[3][1]),s.lineTo(g[0][0],g[0][1]),s.beginFill(3526911,.9);for(const y of g)s.drawRect(y[0]-3,y[1]-3,6,6);s.endFill()}}function $R(i,e=16777215){const t=Number.parseInt(i.replace("#",""),16);return Number.isFinite(t)?t:e}function XR(i,e,t){if(!t)return;const s=t;s.clear();for(const n of e){if(n.visible===!1)continue;const r=i.activeObjectType==="collision"&&i.activeObjectId===n.id,o=n.enabled?r?16735858:13911899:5792116,a=n.rotation*Math.PI/180,l=Math.cos(a),c=Math.sin(a),h=Math.max(1e-4,Math.abs(n.scaleX??1)),u=Math.max(1e-4,Math.abs(n.scaleY??1)),d=(m,g)=>({x:n.x+l*m*h-c*g*u,y:-(n.y+c*m*h+l*g*u)});let f=[];if(n.shape==="circle"||n.shape==="ellipse"){const m=n.shape==="circle"?n.radius:n.radiusX,g=n.shape==="circle"?n.radius:n.radiusY;f=Array.from({length:49},(y,x)=>{const v=x/48*Math.PI*2;return d(Math.cos(v)*m,Math.sin(v)*g)})}else if(n.shape==="rect"){const m=n.width*.5,g=n.height*.5;f=[d(-m,-g),d(m,-g),d(m,g),d(-m,g),d(-m,-g)]}else{const m=Math.max(3,Math.min(16,Math.round(n.sides)));f=Array.from({length:m+1},(g,y)=>{const x=Math.PI*.5+y%m/m*Math.PI*2;return d(Math.cos(x)*n.width*.5,Math.sin(x)*n.height*.5)})}if(!f.length)continue;s.lineStyle(r?2.5:1.5,o,n.enabled?.95:.45),s.beginFill(o,r?.12:.055),s.moveTo(f[0].x,f[0].y);for(let m=1;mo.id===i.activeObjectId):null,r=(n==null?void 0:n.config.shape)==="path"&&!n.config.showShape?n.config.spawnPathId:0;for(const o of i.paths){if(o.id===r||o.visible===!1||!o.enabled||!o.points.length)continue;const a=i.activeObjectType==="path"&&i.activeObjectId===o.id,l=$R(o.color,16749374),c=(f,p)=>{const m=NR(o,f,p);return{x:m.x,y:-m.y}},h=o.points[0],u=c(h.x,h.y);s.lineStyle(a?2.5:1.8,l,a?1:.75),s.moveTo(u.x,u.y);const d=o.closed?o.points.length:o.points.length-1;for(let f=0;f{const m=c(f.x,f.y),g=c(f.x+f.inX,f.y+f.inY),y=c(f.x+f.outX,f.y+f.outY),x=Math.hypot(f.inX,f.inY)>.01,v=Math.hypot(f.outX,f.outY)>.01;s.lineStyle(1,11121867,.65),x&&(s.moveTo(m.x,m.y),s.lineTo(g.x,g.y)),v&&(s.moveTo(m.x,m.y),s.lineTo(y.x,y.y)),x&&(s.beginFill(14015724,.95),s.drawCircle(g.x,g.y,3),s.endFill()),v&&(s.beginFill(14015724,.95),s.drawCircle(y.x,y.y,3),s.endFill()),s.beginFill(e.has(p)?16777215:l,1),s.lineStyle(1.5,e.has(p)?6126847:16777215,.95),s.drawCircle(m.x,m.y,e.has(p)?5:4),s.endFill()})}}function YR(i,e,t,s){var o;const n=Number.isFinite(e.worldX)&&Number.isFinite(e.worldY),r=Number.isFinite(e.worldRotation);i.push({boneName:e.boneName,x:n?e.worldX:e.x,y:n?-e.worldY:e.y,rotation:r?-e.worldRotation:-e.rotation,parentX:t,parentY:s}),(o=e.trailState)!=null&&o.bones.length&&e.trailState.bones.forEach(a=>{const l=Number.isFinite(a.worldX)&&Number.isFinite(a.worldY),c=Number.isFinite(a.worldRotation);i.push({boneName:a.boneName,x:l?a.worldX:a.x,y:l?-a.worldY:a.y,rotation:c?-a.worldRotation:a.rotation,parentX:t,parentY:s,trail:!0})})}function Dv(i,e,t,s,n,r,o,a){const l=r*.62,c=e+s*r,h=t+n*r,u=Math.max(2.5,r*.32),d=Math.max(1.7,r*.22),f=c-s*u,p=h-n*u,m=-n,g=s;i.lineStyle(o,a,.95),i.moveTo(e-s*l,t-n*l),i.lineTo(f,p),i.lineStyle(0),i.beginFill(a,.95),i.drawPolygon([c,h,f+m*d,p+g*d,f-m*d,p-g*d]),i.endFill()}function GR(i,e,t){if(!t)return;const s=t;if(s.clear(),!e.settings.showBones)return;const n=0,r=0,o=Math.max(.25,Math.abs(e.editor.viewScale)||1),a=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),l=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2)),c=2.5*a/o,h=4.5*l/o,u=Math.max(.65,l*.625)/o;for(const d of i){const f=d.trail?16731533:16747610;s.lineStyle(1,f,d.trail?.65:.35),s.moveTo(d.parentX??n,d.parentY??r),s.lineTo(d.x,d.y);const p=d.rotation*Math.PI/180,m=Math.cos(p),g=Math.sin(p);Dv(s,d.x,d.y,m,g,h,u,15684432),Dv(s,d.x,d.y,g,-m,h,u,5622123),s.beginFill(f,.9),s.drawCircle(d.x,d.y,c),s.endFill()}}function Rs(i){return i.map(e=>({...e,trailState:e.trailState?{...e.trailState,bones:e.trailState.bones.map(t=>({...t}))}:void 0}))}function jR(i){const e=new Map;for(const s of i)for(const n of s)e.has(n.boneName)||e.set(n.boneName,Rs([n])[0]);const t=[...e.keys()].sort((s,n)=>{const r=Number(s.replace(/^p_/,"")),o=Number(n.replace(/^p_/,""));return Number.isFinite(r)&&Number.isFinite(o)?r-o:s.localeCompare(n)});for(let s=0;s[r.boneName,r]));i[s]=t.map(r=>{const o=n.get(r);return o||{...Rs([e.get(r)])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}})}}function HR(i){i.length<2||(i[i.length-1]=Rs(i[0]))}function WR(i,e){const t=Math.max(0,i.length-1),s=[];for(let n=0;n<=e;n++){const r=Math.min(t,Math.round(n/e*t));s.push(Rs(i[r]||[]))}return s}function af(i){return`${i.boneName}:${i.spawnId??"legacy"}`}function Uv(i){return{...Rs([i])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}}function zR(i,e,t,s){const n=Math.min(i.length,s+1),r=i.slice(Math.max(0,i.length-n)),o=new Map;for(const c of e){if(c.imageVisible===!1||c.alpha<=0)continue;const h=af(c),u=new Map;let d=!1;for(let f=r.length-1;f>=0;f--){const p=r[f].find(m=>af(m)===h);if(p)d=!0,u.set(f,p);else if(d)break}o.set(h,u)}const a=Math.max(0,r.length-1),l=[];for(let c=0;c<=t;c++){const h=Math.min(a,Math.round(c/t*a));l.push(e.map(u=>{var f;if(u.imageVisible===!1||u.alpha<=0)return Rs([u])[0];const d=(f=o.get(af(u)))==null?void 0:f.get(h);return d?Rs([d])[0]:Uv(u)}))}return l[0]=l[0].map(Uv),l[l.length-1]=Rs(e),l}function $v(i,e){const t=i.length?1:0;for(let s=t;s{const v=x?[[]]:[];e.reset();for(let w=0;w0&&e.restartEmissionCycle();for(let _=0;_0;w++)e.update(r,"off"),x.push(e.capture());(y=x[x.length-1])!=null&&y.length&&x.push([]),$v(u,WR(x,a.end))}const g=Rs(u[u.length-1]||[]);for(u.length>s&&(u.length=s);u.length{var a;return String(((a=o==null?void 0:o.data)==null?void 0:a.name)||"")}):null}catch{return null}}getSlotLocalMatrix(e,t){var o,a,l;const s=(o=this.entries.get(e))==null?void 0:o.spine,n=(l=(a=s==null?void 0:s.skeleton)==null?void 0:a.findSlot)==null?void 0:l.call(a,t),r=n==null?void 0:n.bone;return r!=null&&r.active?new Ot(r.a,r.c,-r.b,-r.d,r.worldX,r.worldY):null}getSlotParentMatrix(e,t,s){const n=this.getSlotLocalMatrix(e,t);if(!n)return null;const r=-s.rotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r);return new Ot(o*s.scaleX,a*s.scaleX,-a*s.scaleY,o*s.scaleY,s.x,-s.y).append(n)}attachSlotObject(e,t,s,n){var o;const r=(o=this.entries.get(e))==null?void 0:o.spine;if(!(r!=null&&r.addSlotObject))return!1;try{return r.addSlotObject(t,s,{followAttachmentTimeline:n}),!0}catch{return!1}}detachSlotObject(e,t,s){var r,o;const n=(r=this.entries.get(e))==null?void 0:r.spine;try{(o=n==null?void 0:n.removeSlotObject)==null||o.call(n,t,s)}catch{}}destroyEntry(e){var t,s;try{(s=(t=e.spine)==null?void 0:t.removeSlotObjects)==null||s.call(t)}catch{}this.container.removeChild(e.root),e.root.destroy({children:!0})}sync(e,t,s){var n;for(const[r,o]of this.entries)e.some(a=>a.id===r)||(this.destroyEntry(o),this.entries.delete(r));for(const r of e){const o=yR(r.id);let a=this.entries.get(r.id);if(a&&a.assetVersion!==r.assetVersion&&!o&&(this.destroyEntry(a),this.entries.delete(r.id),a=void 0),(!a||a.assetVersion!==r.assetVersion)&&o){a&&this.destroyEntry(a);const d=new ps,f=new o.SpineClass({skeletonData:o.skeletonData,autoUpdate:!1,darkTint:!1});o.skeletonData.defaultSkin&&f.skeleton.setSkin(o.skeletonData.defaultSkin),o.runtimeVersion==="4.3"?f.skeleton.setupPoseSlots():f.skeleton.setSlotsToSetupPose(),d.addChild(f),this.container.addChild(d),a={root:d,spine:f,runtimeVersion:o.runtimeVersion,assetVersion:r.assetVersion,animation:""},this.entries.set(r.id,a)}if(!a)continue;const l=a.root,c=a.spine,h=r.visible!==!1&&r.enabled;l.visible=h,l.renderable=h,l.position.set(r.x,-r.y),l.rotation=-r.rotation*Math.PI/180,l.scale.set(r.scaleX,r.scaleY),a.animation!==r.selectedAnimation&&(a.animation=r.selectedAnimation,a.runtimeVersion==="4.3"?c.skeleton.setupPose():c.skeleton.setToSetupPose(),c.state.clearTracks(),a.animation&&c.state.setAnimation(0,a.animation,!1));const u=a.runtimeVersion==="4.3"?c.state.getTrack(0):c.state.getCurrent(0);if(u){const d=((n=r.animations.find(p=>p.name===r.selectedAnimation))==null?void 0:n.duration)||0,f=Math.max(0,t/Math.max(1,s)-r.timeOffset);u.trackTime=d>0?Math.min(f,d):f}c.update(0)}}getBoneWorldTransform(e,t){const s=this.entries.get(e),n=s==null?void 0:s.spine.skeleton.findBone(t);if(!s||!n||!n.active)return null;const r=s.runtimeVersion==="4.3"?n.appliedPose:n,o=s.root,a=Math.cos(o.rotation),l=Math.sin(o.rotation),c=a*o.scale.x,h=-l*o.scale.y,u=l*o.scale.x,d=a*o.scale.y,f=c*r.a+h*r.c,p=c*r.b+h*r.d,m=u*r.a+d*r.c,g=u*r.b+d*r.d,y=o.position.x+c*r.worldX+h*r.worldY,x=o.position.y+u*r.worldX+d*r.worldY;return{x:y,y:-x,rotation:-Math.atan2(m,f)*180/Math.PI,scaleX:Math.max(1e-4,Math.hypot(f,m)),scaleY:Math.max(1e-4,Math.hypot(p,g))}}destroy(){for(const e of this.entries.values())this.destroyEntry(e);this.entries.clear(),this.container.removeFromParent(),this.container.destroy({children:!0})}}let A1=class{constructor(){M(this,"entries",{});M(this,"size",0)}add(e){let t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){let t=this.size;for(var s=0,n=e.length;s1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>("0"+(t*255).toString(16)).slice(-2);return+("0x"+e(this.r)+e(this.g)+e(this.b))}static fromString(e,t=new Is){return t.setFromString(e)}},M(Is,"WHITE",new Is(1,1,1,1)),M(Is,"RED",new Is(1,0,0,1)),M(Is,"GREEN",new Is(0,1,0,1)),M(Is,"BLUE",new Is(0,0,1,1)),M(Is,"MAGENTA",new Is(1,0,1,1)),Is);var es;let Ie=(es=class{static clamp(e,t,s){return es?s:e}static cosDeg(e){return Math.cos(e*es.degRad)}static sinDeg(e){return Math.sin(e*es.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*es.degRad}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){let t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return es.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,s){let n=Math.random(),r=t-e;return n<=(s-e)/r?e+Math.sqrt(n*r*(s-e)):t-Math.sqrt((1-n)*r*(t-s))}static isPowerOfTwo(e){return e&&(e&e-1)===0}},M(es,"PI",3.1415927),M(es,"PI2",es.PI*2),M(es,"invPI2",1/es.PI2),M(es,"radiansToDegrees",180/es.PI),M(es,"radDeg",es.radiansToDegrees),M(es,"degreesToRadians",es.PI/180),M(es,"degRad",es.degreesToRadians),es);var _i;let Pe=(_i=class{static arrayCopy(e,t,s,n,r){for(let o=t,a=n;o=t?e:_i.setArraySize(e,t,s)}static newArray(e,t){let s=new Array(e);for(let n=0;n0?this.items.pop():this.instantiator()}free(e){e.reset&&e.reset(),this.items.push(e)}freeAll(e){for(let t=0;t>1)*a;let l=t.bone.skeleton,c=t.deform,h=this.vertices,u=this.bones;if(!u){c.length>0&&(h=c);let m=t.bone,g=m.worldX,y=m.worldY,x=m.a,v=m.b,w=m.c,_=m.d;for(let S=s,b=o;b=this.regions.length&&(s=this.regions.length-1);let n=this.regions[s];t.region!=n&&(t.region=n,t.updateRegion())}getPath(e,t){let s=e,n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)s+="0";return s+=n,s}static nextID(){return On._nextID++}},M(On,"_nextID",0),On);var Ms;(function(i){i[i.hold=0]="hold",i[i.once=1]="once",i[i.loop=2]="loop",i[i.pingpong=3]="pingpong",i[i.onceReverse=4]="onceReverse",i[i.loopReverse=5]="loopReverse",i[i.pingpongReverse=6]="pingpongReverse"})(Ms||(Ms={}));const R1=[Ms.hold,Ms.once,Ms.loop,Ms.pingpong,Ms.onceReverse,Ms.loopReverse,Ms.pingpongReverse];let Sp=class{constructor(e,t,s){M(this,"name");M(this,"timelines",[]);M(this,"timelineIds",new A1);M(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.setTimelines(t),this.duration=s}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e,this.timelineIds.clear();for(var t=0;t0&&(t%=this.duration));let c=this.timelines;for(let h=0,u=c.length;ht)return n-1;return s-1}static search(e,t,s){let n=e.length;for(let r=s;rt)return r-s;return n-s}},dn=class extends Xt{constructor(t,s,n){super(t,n);M(this,"curves");this.curves=Pe.newFloatArray(t+s*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){let s=this.getFrameCount()+t*18;if(this.curves.length>s){let n=Pe.newFloatArray(s);Pe.arrayCopy(this.curves,0,n,0,s),this.curves=n}}setBezier(t,s,n,r,o,a,l,c,h,u,d){let f=this.curves,p=this.getFrameCount()+t*18;n==0&&(f[s]=2+p);let m=(r-a*2+c)*.03,g=(o-l*2+h)*.03,y=((a-c)*3-r+u)*.006,x=((l-h)*3-o+d)*.006,v=m*2+y,w=g*2+x,_=(a-r)*.3+m+y*.16666667,S=(l-o)*.3+g+x*.16666667,b=r+_,A=o+S;for(let P=p+18;pt){let h=this.frames[s],u=this.frames[s+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}let a=r+18;for(r+=2;r=t){let h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}s+=this.getFrameEntries();let l=o[a-2],c=o[a-1];return c+(t-l)/(this.frames[s]-l)*(this.frames[s+n]-c)}},Li=class extends dn{constructor(e,t,s){super(e,t,[s])}getFrameEntries(){return 2}setFrame(e,t,s){e<<=1,this.frames[e]=t,this.frames[e+1]=s}getCurveValue(e){let t=this.frames,s=t.length-2;for(let r=2;r<=s;r+=2)if(t[r]>e){s=r-2;break}let n=this.curves[s>>1];switch(n){case 0:let r=t[s],o=t[s+1];return o+(e-r)/(t[s+2]-r)*(t[s+2+1]-o);case 1:return t[s+1]}return this.getBezierValue(e,s,1,n-2)}getRelativeValue(e,t,s,n,r){if(e>2];switch(g){case 0:let y=h[m];d=h[m+1],f=h[m+2],p=h[m+3];let x=(n-y)/(h[m+4]-y);d+=(h[m+4+1]-d)*x,f+=(h[m+4+2]-f)*x,p+=(h[m+4+3]-p)*x;break;case 1:d=h[m+1],f=h[m+2],p=h[m+3];break;default:d=this.getBezierValue(n,m,1,g-2),f=this.getBezierValue(n,m,2,g+18-2),p=this.getBezierValue(n,m,3,g+36-2)}if(o==1)u.r=d,u.g=f,u.b=p;else{if(a==ve.setup){let y=c.data.color;u.r=y.r,u.g=y.g,u.b=y.b}u.r+=(d-u.r)*o,u.g+=(f-u.g)*o,u.b+=(p-u.b)*o}}},Y1=class extends Li{constructor(t,s,n){super(t,s,at.alpha+"|"+n);M(this,"slotIndex",0);this.slotIndex=n}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=c.color;if(n>3];switch(_){case 0:let S=h[w];f=h[w+1],p=h[w+2],m=h[w+3],g=h[w+4],y=h[w+5],x=h[w+6],v=h[w+7];let b=(n-S)/(h[w+8]-S);f+=(h[w+8+1]-f)*b,p+=(h[w+8+2]-p)*b,m+=(h[w+8+3]-m)*b,g+=(h[w+8+4]-g)*b,y+=(h[w+8+5]-y)*b,x+=(h[w+8+6]-x)*b,v+=(h[w+8+7]-v)*b;break;case 1:f=h[w+1],p=h[w+2],m=h[w+3],g=h[w+4],y=h[w+5],x=h[w+6],v=h[w+7];break;default:f=this.getBezierValue(n,w,1,_-2),p=this.getBezierValue(n,w,2,_+18-2),m=this.getBezierValue(n,w,3,_+36-2),g=this.getBezierValue(n,w,4,_+54-2),y=this.getBezierValue(n,w,5,_+72-2),x=this.getBezierValue(n,w,6,_+90-2),v=this.getBezierValue(n,w,7,_+108-2)}if(o==1)u.set(f,p,m,g),d.r=y,d.g=x,d.b=v;else{if(a==ve.setup){u.setFromColor(c.data.color);let S=c.data.darkColor;d.r=S.r,d.g=S.g,d.b=S.b}u.add((f-u.r)*o,(p-u.g)*o,(m-u.b)*o,(g-u.a)*o),d.r+=(y-d.r)*o,d.g+=(x-d.g)*o,d.b+=(v-d.b)*o}}},j1=class extends dn{constructor(t,s,n){super(t,s,[at.rgb+"|"+n,at.rgb2+"|"+n]);M(this,"slotIndex",0);this.slotIndex=n}getFrameEntries(){return 7}setFrame(t,s,n,r,o,a,l,c){t*=7,this.frames[t]=s,this.frames[t+1]=n,this.frames[t+2]=r,this.frames[t+3]=o,this.frames[t+4]=a,this.frames[t+5]=l,this.frames[t+6]=c}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=this.frames,u=c.color,d=c.darkColor;if(nt){let c=this.frames[s];return n[r+1]*(t-c)/(n[r]-c)}let o=r+18;for(r+=2;r=t){let c=n[r-2],h=n[r-1];return h+(t-c)/(n[r]-c)*(n[r+1]-h)}let a=n[o-2],l=n[o-1];return l+(1-l)*(t-a)/(this.frames[s+this.getFrameEntries()]-a)}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=c.getAttachment();if(!h||!(h instanceof jn)||h.timelineAttachment!=this.attachment)return;let u=c.deform;u.length==0&&(a=ve.setup);let d=this.vertices,f=d[0].length,p=this.frames;if(n=p[p.length-1]){let w=d[p.length-1];if(o==1)if(a==ve.add){let _=h;if(_.bones)for(let S=0;Sn)this.apply(t,s,Number.MAX_VALUE,r,o,a,l),s=-1;else if(s>=c[h-1])return;if(n0&&c[u-1]==d;)u--}for(;u=c[u];u++)r.push(this.events[u])}},M(Qr,"propertyIds",[""+at.event]),Qr);var eo;let Qa=(eo=class extends Xt{constructor(t){super(t,eo.propertyIds);M(this,"drawOrders");this.drawOrders=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,s,n){this.frames[t]=s,this.drawOrders[t]=n}apply(t,s,n,r,o,a,l){if(l==Fs.mixOut){a==ve.setup&&Pe.arrayCopy(t.slots,0,t.drawOrder,0,t.slots.length);return}if(n>2];switch(m){case 0:let g=h[p];u=h[p+1],d=h[p+2],f=h[p+3];let y=(n-g)/(h[p+4]-g);u+=(h[p+4+1]-u)*y,d+=(h[p+4+2]-d)*y,f+=(h[p+4+3]-f)*y;break;case 1:u=h[p+1],d=h[p+2],f=h[p+3];break;default:u=this.getBezierValue(n,p,1,m-2),d=this.getBezierValue(n,p,2,m+18-2),f=this.getBezierValue(n,p,3,m+36-2)}if(a==ve.setup){let g=c.data;c.mixRotate=g.mixRotate+(u-g.mixRotate)*o,c.mixX=g.mixX+(d-g.mixX)*o,c.mixY=g.mixY+(f-g.mixY)*o}else c.mixRotate+=(u-c.mixRotate)*o,c.mixX+=(d-c.mixX)*o,c.mixY+=(f-c.mixY)*o}},xo=class extends Li{constructor(t,s,n,r){super(t,s,r+"|"+n);M(this,"constraintIndex",0);this.constraintIndex=n}apply(t,s,n,r,o,a,l){let c;if(this.constraintIndex==-1){const h=n>=this.frames[0]?this.getCurveValue(n):0;for(const u of t.physicsConstraints)u.active&&this.global(u.data)&&this.set(u,this.getAbsoluteValue2(n,o,a,this.get(u),this.setup(u),h))}else c=t.physicsConstraints[this.constraintIndex],c.active&&this.set(c,this.getAbsoluteValue(n,o,a,this.get(c),this.setup(c)))}},J1=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintInertia)}setup(e){return e.data.inertia}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}},Q1=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintStrength)}setup(e){return e.data.strength}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}},ew=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintDamping)}setup(e){return e.data.damping}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}},tw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintMass)}setup(e){return 1/e.data.massInverse}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}},sw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintWind)}setup(e){return e.data.wind}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}},iw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintGravity)}setup(e){return e.data.gravity}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}},nw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintMix)}setup(e){return e.data.mix}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}};var to;let rw=(to=class extends Xt{constructor(t,s){super(t,to.propertyIds);M(this,"constraintIndex");this.constraintIndex=s}getFrameCount(){return this.frames.length}setFrame(t,s){this.frames[t]=s}apply(t,s,n,r,o,a,l){let c;if(this.constraintIndex!=-1&&(c=t.physicsConstraints[this.constraintIndex],!c.active))return;const h=this.frames;if(s>n)this.apply(t,s,Number.MAX_VALUE,[],o,a,l),s=-1;else if(s>=h[h.length-1])return;if(!(n=h[Xt.search1(h,s)+1]))if(c!=null)c.reset();else for(const u of t.physicsConstraints)u.active&&u.reset()}},M(to,"propertyIds",[at.physicsConstraintReset.toString()]),to);var Us;let ow=(Us=class extends Xt{constructor(t,s,n){super(t,[at.sequence+"|"+s+"|"+n.sequence.id]);M(this,"slotIndex");M(this,"attachment");this.slotIndex=s,this.attachment=n}getFrameEntries(){return Us.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(t,s,n,r,o){let a=this.frames;t*=Us.ENTRIES,a[t]=s,a[t+Us.MODE]=n|r<<4,a[t+Us.DELAY]=o}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=c.attachment,u=this.attachment;if(h!=u&&(!(h instanceof jn)||h.timelineAttachment!=u))return;if(l==Fs.mixOut){a==ve.setup&&(c.sequenceIndex=-1);return}let d=this.frames;if(n>4,x=this.attachment.sequence.regions.length,v=R1[m&15];if(v!=Ms.hold)switch(y+=(n-p)/g+1e-5|0,v){case Ms.once:y=Math.min(x-1,y);break;case Ms.loop:y%=x;break;case Ms.pingpong:{let w=(x<<1)-2;y=w==0?0:y%w,y>=x&&(y=w-y);break}case Ms.onceReverse:y=Math.max(x-1-y,0);break;case Ms.loopReverse:y=x-1-y%x;break;case Ms.pingpongReverse:{let w=(x<<1)-2;y=w==0?0:(y+x-1)%w,y>=x&&(y=w-y)}}c.sequenceIndex=y}},M(Us,"ENTRIES",3),M(Us,"MODE",1),M(Us,"DELAY",2),Us);var Ln;let KR=(Ln=class{constructor(e){M(this,"data");M(this,"tracks",new Array);M(this,"timeScale",1);M(this,"unkeyedState",0);M(this,"events",new Array);M(this,"listeners",new Array);M(this,"queue",new JR(this));M(this,"propertyIDs",new A1);M(this,"animationsChanged",!1);M(this,"trackEntryPool",new vh(()=>new ZR));this.data=e}static emptyAnimation(){return Ln._emptyAnimation}update(e){e*=this.timeScale;let t=this.tracks;for(let s=0,n=t.length;s0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){let l=r.trackLast-a.delay;if(l>=0){for(a.delay=0,a.trackTime+=r.timeScale==0?0:(l/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setCurrent(s,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[s]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let l=r.mixingFrom;for(r.mixingFrom=null,l&&(l.mixingTo=null);l;)this.queue.end(l),l=l.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){let s=e.mixingFrom;if(!s)return!0;let n=this.updateMixingFrom(s,t);return s.animationLast=s.nextAnimationLast,s.trackLast=s.nextTrackLast,e.nextTrackLast!=-1&&e.mixTime>=e.mixDuration?((s.totalAlpha==0||e.mixDuration==0)&&(e.mixingFrom=s.mixingFrom,s.mixingFrom!=null&&(s.mixingFrom.mixingTo=e),e.interruptAlpha=s.interruptAlpha,this.queue.end(s)),n):(s.trackTime+=t*s.timeScale,e.mixTime+=t,!1)}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();let t=this.events,s=this.tracks,n=!1;for(let d=0,f=s.length;d0)continue;n=!0;let m=d==0?ve.first:p.mixBlend,g=p.alpha;p.mixingFrom?g*=this.applyMixingFrom(p,e,m):p.trackTime>=p.trackEnd&&!p.next&&(g=0);let y=g>=p.alphaAttachmentThreshold,x=p.animationLast,v=p.getAnimationTime(),w=v,_=t;p.reverse&&(w=p.animation.duration-w,_=null);let S=p.animation.timelines,b=S.length;if(d==0&&g==1||m==ve.add){d==0&&(y=!0);for(let A=0;A1&&(r=1),s!=ve.first&&(s=n.mixBlend));let o=r=n.alphaAttachmentThreshold):(a&&_ instanceof Qa&&b==ve.setup&&(S=Fs.mixIn),_.apply(t,d,p,m,A,b,S))}}return e.mixDuration>0&&this.queueEvents(n,f),this.events.length=0,n.nextAnimationLast=f,n.nextTrackLast=n.trackTime,r}applyAttachmentTimeline(e,t,s,n,r){var o=t.slots[e.slotIndex];o.bone.active&&(s=0,v=m>=0;Math.abs(g)<=90&&Ie.signum(g)!=Ie.signum(p)&&(Math.abs(m-y)>180?(f+=360*Ie.signum(m),v=x):y!=0?f-=360*Ie.signum(m):v=x),v!=x&&(f+=360*Ie.signum(m)),o[a]=f}o[a+1]=p,c.rotation=u+f*n}queueEvents(e,t){let s=e.animationStart,n=e.animationEnd,r=n-s,o=e.trackLast%r,a=this.events,l=0,c=a.length;for(;ln||this.queue.event(e,u)}let h=!1;if(e.loop)if(r==0)h=!0;else{const u=Math.floor(e.trackTime/r);h=u>0&&u>Math.floor(e.trackLast/r)}else h=t>=n&&e.animationLast=this.tracks.length)return;let t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let s=t;for(;;){let n=s.mixingFrom;if(!n)break;this.queue.end(n),s.mixingFrom=null,s.mixingTo=null,s=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setCurrent(e,t,s){let n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(s&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.mixingFrom&&n.mixDuration>0&&(t.interruptAlpha*=Math.min(1,n.mixTime/n.mixDuration)),n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,s=!1){let n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error("Animation not found: "+t);return this.setAnimationWith(e,n,s)}setAnimationWith(e,t,s=!1){if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast==-1?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));let o=this.trackEntry(e,t,s,r);return this.setCurrent(e,o,n),this.queue.drain(),o}addAnimation(e,t,s=!1,n=0){let r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error("Animation not found: "+t);return this.addAnimationWith(e,r,s,n)}addAnimationWith(e,t,s=!1,n=0){if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;let o=this.trackEntry(e,t,s,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setCurrent(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){let s=this.setAnimationWith(e,Ln.emptyAnimation(),!1);return s.mixDuration=t,s.trackEnd=t,s}addEmptyAnimation(e,t=0,s=0){let n=this.addAnimationWith(e,Ln.emptyAnimation(),!1,s);return s<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){let t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let s=0,n=this.tracks.length;s0){r[l]=QR,o[l]=u;continue e}break}r[l]=cf}}}getCurrent(e){return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}},M(Ln,"_emptyAnimation",new Sp("",[],0)),Ln),ZR=class{constructor(){M(this,"animation",null);M(this,"previous",null);M(this,"next",null);M(this,"mixingFrom",null);M(this,"mixingTo",null);M(this,"listener",null);M(this,"trackIndex",0);M(this,"loop",!1);M(this,"holdPrevious",!1);M(this,"reverse",!1);M(this,"shortestRotation",!1);M(this,"eventThreshold",0);M(this,"mixAttachmentThreshold",0);M(this,"alphaAttachmentThreshold",0);M(this,"mixDrawOrderThreshold",0);M(this,"animationStart",0);M(this,"animationEnd",0);M(this,"animationLast",0);M(this,"nextAnimationLast",0);M(this,"delay",0);M(this,"trackTime",0);M(this,"trackLast",0);M(this,"nextTrackLast",0);M(this,"trackEnd",0);M(this,"timeScale",0);M(this,"alpha",0);M(this,"mixTime",0);M(this,"_mixDuration",0);M(this,"interruptAlpha",0);M(this,"totalAlpha",0);M(this,"mixBlend",ve.replace);M(this,"timelineMode",new Array);M(this,"timelineHoldMix",new Array);M(this,"timelinesRotation",new Array)}get mixDuration(){return this._mixDuration}set mixDuration(e){this._mixDuration=e}setMixDurationWithDelay(e,t){this._mixDuration=e,t<=0&&(this.previous!=null?t=Math.max(t+this.previous.getTrackComplete()-e,0):t=0),this.delay=t}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(this.loop){let e=this.animationEnd-this.animationStart;return e==0?this.animationStart:this.trackTime%e+this.animationStart}return Math.min(this.trackTime+this.animationStart,this.animationEnd)}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){let e=this.animationEnd-this.animationStart;if(e!=0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}},JR=class{constructor(e){M(this,"objects",[]);M(this,"drainDisabled",!1);M(this,"animState");this.animState=e}start(e){this.objects.push(js.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(js.interrupt),this.objects.push(e)}end(e){this.objects.push(js.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(js.dispose),this.objects.push(e)}complete(e){this.objects.push(js.complete),this.objects.push(e)}event(e,t){this.objects.push(js.event),this.objects.push(e),this.objects.push(t)}drain(){if(this.drainDisabled)return;this.drainDisabled=!0;let e=this.objects;for(let t=0;t{h.width=parseInt(s[1]),h.height=parseInt(s[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Pe.enumValue(vs,s[1]),h.magFilter=Pe.enumValue(vs,s[2])},n.repeat=h=>{s[1].indexOf("x")!=-1&&(h.uWrap=Un.Repeat),s[1].indexOf("y")!=-1&&(h.vWrap=Un.Repeat)},n.pma=h=>{h.pma=s[1]=="true"};var r={};r.xy=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2])},r.size=h=>{h.width=parseInt(s[1]),h.height=parseInt(s[2])},r.bounds=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2]),h.width=parseInt(s[3]),h.height=parseInt(s[4])},r.offset=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2])},r.orig=h=>{h.originalWidth=parseInt(s[1]),h.originalHeight=parseInt(s[2])},r.offsets=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2]),h.originalWidth=parseInt(s[3]),h.originalHeight=parseInt(s[4])},r.rotate=h=>{let u=s[1];u=="true"?h.degrees=90:u!="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(s[1])};let o=t.readLine();for(;o&&o.trim().length==0;)o=t.readLine();for(;!(!o||o.trim().length==0||t.readEntry(s,o)==0);)o=t.readLine();let a=null,l=null,c=null;for(;o!==null;)if(o.trim().length==0)a=null,o=t.readLine();else if(a){let h=new uw(a,o);for(;;){let u=t.readEntry(s,o=t.readLine());if(u==0)break;let d=r[s[0]];if(d)d(h);else{l||(l=[]),c||(c=[]),l.push(s[0]);let f=[];for(let p=0;p0&&c&&c.length>0&&(h.names=l,h.values=c,l=null,c=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees==90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new rP(o.trim());t.readEntry(s,o=t.readLine())!=0;){let h=n[s[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length==0))return 0;let s=t.indexOf(":");if(s==-1)return 0;e[0]=t.substr(0,s).trim();for(let n=1,r=s+1;;n++){let o=t.indexOf(",",r);if(o==-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n==4)return 4}}},rP=class{constructor(e){M(this,"name");M(this,"minFilter",vs.Nearest);M(this,"magFilter",vs.Nearest);M(this,"uWrap",Un.ClampToEdge);M(this,"vWrap",Un.ClampToEdge);M(this,"texture",null);M(this,"width",0);M(this,"height",0);M(this,"pma",!1);M(this,"regions",new Array);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(let t of this.regions)t.texture=e}},uw=class extends iP{constructor(t,s){super();M(this,"page");M(this,"name");M(this,"x",0);M(this,"y",0);M(this,"offsetX",0);M(this,"offsetY",0);M(this,"originalWidth",0);M(this,"originalHeight",0);M(this,"index",0);M(this,"degrees",0);M(this,"names",null);M(this,"values",null);this.page=t,this.name=s,t.regions.push(this)}},kl=class gm extends jn{constructor(t,s){super(t);M(this,"region",null);M(this,"path");M(this,"regionUVs",[]);M(this,"uvs",[]);M(this,"triangles",[]);M(this,"color",new rt(1,1,1,1));M(this,"width",0);M(this,"height",0);M(this,"hullLength",0);M(this,"edges",[]);M(this,"parentMesh",null);M(this,"sequence",null);M(this,"tempColor",new rt(0,0,0,0));this.path=s}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.regionUVs;(!this.uvs||this.uvs.length!=t.length)&&(this.uvs=Pe.newFloatArray(t.length));let s=this.uvs,n=this.uvs.length,r=this.region.u,o=this.region.v,a=0,l=0;if(this.region instanceof uw){let c=this.region,h=c.page,u=h.width,d=h.height;switch(c.degrees){case 90:r-=(c.originalHeight-c.offsetY-c.height)/u,o-=(c.originalWidth-c.offsetX-c.width)/d,a=c.originalHeight/u,l=c.originalWidth/d;for(let f=0;f= 0.");if(!t)throw new Error("name cannot be null.");this.index=e,this.name=t,this.parent=s}};var qt;(function(i){i[i.Normal=0]="Normal",i[i.OnlyTranslation=1]="OnlyTranslation",i[i.NoRotationOrReflection=2]="NoRotationOrReflection",i[i.NoScale=3]="NoScale",i[i.NoScaleOrReflection=4]="NoScaleOrReflection"})(qt||(qt={}));let jv=class{constructor(e,t,s){M(this,"data");M(this,"skeleton");M(this,"parent",null);M(this,"children",new Array);M(this,"x",0);M(this,"y",0);M(this,"rotation",0);M(this,"scaleX",0);M(this,"scaleY",0);M(this,"shearX",0);M(this,"shearY",0);M(this,"ax",0);M(this,"ay",0);M(this,"arotation",0);M(this,"ascaleX",0);M(this,"ascaleY",0);M(this,"ashearX",0);M(this,"ashearY",0);M(this,"a",0);M(this,"b",0);M(this,"c",0);M(this,"d",0);M(this,"worldY",0);M(this,"worldX",0);M(this,"inherit",qt.Normal);M(this,"sorted",!1);M(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.skeleton=t,this.parent=s,this.setToSetupPose()}isActive(){return this.active}update(e){this.updateWorldTransformWith(this.ax,this.ay,this.arotation,this.ascaleX,this.ascaleY,this.ashearX,this.ashearY)}updateWorldTransform(){this.updateWorldTransformWith(this.x,this.y,this.rotation,this.scaleX,this.scaleY,this.shearX,this.shearY)}updateWorldTransformWith(e,t,s,n,r,o,a){this.ax=e,this.ay=t,this.arotation=s,this.ascaleX=n,this.ascaleY=r,this.ashearX=o,this.ashearY=a;let l=this.parent;if(!l){let f=this.skeleton;const p=f.scaleX,m=f.scaleY,g=(s+o)*Ie.degRad,y=(s+90+a)*Ie.degRad;this.a=Math.cos(g)*n*p,this.b=Math.cos(y)*r*p,this.c=Math.sin(g)*n*m,this.d=Math.sin(y)*r*m,this.worldX=e*p+f.x,this.worldY=t*m+f.y;return}let c=l.a,h=l.b,u=l.c,d=l.d;switch(this.worldX=c*e+h*t+l.worldX,this.worldY=u*e+d*t+l.worldY,this.inherit){case qt.Normal:{const f=(s+o)*Ie.degRad,p=(s+90+a)*Ie.degRad,m=Math.cos(f)*n,g=Math.cos(p)*r,y=Math.sin(f)*n,x=Math.sin(p)*r;this.a=c*m+h*y,this.b=c*g+h*x,this.c=u*m+d*y,this.d=u*g+d*x;return}case qt.OnlyTranslation:{const f=(s+o)*Ie.degRad,p=(s+90+a)*Ie.degRad;this.a=Math.cos(f)*n,this.b=Math.cos(p)*r,this.c=Math.sin(f)*n,this.d=Math.sin(p)*r;break}case qt.NoRotationOrReflection:{let f=1/this.skeleton.scaleX,p=1/this.skeleton.scaleY;c*=f,u*=p;let m=c*c+u*u,g=0;m>1e-4?(m=Math.abs(c*d*p-h*f*u)/m,h=u*m,d=c*m,g=Math.atan2(u,c)*Ie.radDeg):(c=0,u=0,g=90-Math.atan2(d,h)*Ie.radDeg);const y=(s+o-g)*Ie.degRad,x=(s+a-g+90)*Ie.degRad,v=Math.cos(y)*n,w=Math.cos(x)*r,_=Math.sin(y)*n,S=Math.sin(x)*r;this.a=c*v-h*_,this.b=c*w-h*S,this.c=u*v+d*_,this.d=u*w+d*S;break}case qt.NoScale:case qt.NoScaleOrReflection:{s*=Ie.degRad;const f=Math.cos(s),p=Math.sin(s);let m=(c*f+h*p)/this.skeleton.scaleX,g=(u*f+d*p)/this.skeleton.scaleY,y=Math.sqrt(m*m+g*g);y>1e-5&&(y=1/y),m*=y,g*=y,y=Math.sqrt(m*m+g*g),this.inherit==qt.NoScale&&c*d-h*u<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(y=-y),s=Math.PI/2+Math.atan2(g,m);const x=Math.cos(s)*y,v=Math.sin(s)*y;o*=Ie.degRad,a=(90+a)*Ie.degRad;const w=Math.cos(o)*n,_=Math.cos(a)*r,S=Math.sin(o)*n,b=Math.sin(a)*r;this.a=m*w+x*S,this.b=m*_+x*b,this.c=g*w+v*S,this.d=g*_+v*b;break}}this.a*=this.skeleton.scaleX,this.b*=this.skeleton.scaleX,this.c*=this.skeleton.scaleY,this.d*=this.skeleton.scaleY}setToSetupPose(){let e=this.data;this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}updateAppliedTransform(){let e=this.parent;if(!e){this.ax=this.worldX-this.skeleton.x,this.ay=this.worldY-this.skeleton.y,this.arotation=Math.atan2(this.c,this.a)*Ie.radDeg,this.ascaleX=Math.sqrt(this.a*this.a+this.c*this.c),this.ascaleY=Math.sqrt(this.b*this.b+this.d*this.d),this.ashearX=0,this.ashearY=Math.atan2(this.a*this.b+this.c*this.d,this.a*this.d-this.b*this.c)*Ie.radDeg;return}let t=e.a,s=e.b,n=e.c,r=e.d,o=1/(t*r-s*n),a=r*o,l=s*o,c=n*o,h=t*o,u=this.worldX-e.worldX,d=this.worldY-e.worldY;this.ax=u*a-d*l,this.ay=d*h-u*c;let f,p,m,g;if(this.inherit==qt.OnlyTranslation)f=this.a,p=this.b,m=this.c,g=this.d;else{switch(this.inherit){case qt.NoRotationOrReflection:{let _=Math.abs(t*r-s*n)/(t*t+n*n);s=-n*this.skeleton.scaleX*_/this.skeleton.scaleY,r=t*this.skeleton.scaleY*_/this.skeleton.scaleX,o=1/(t*r-s*n),a=r*o,l=s*o;break}case qt.NoScale:case qt.NoScaleOrReflection:let y=Ie.cosDeg(this.rotation),x=Ie.sinDeg(this.rotation);t=(t*y+s*x)/this.skeleton.scaleX,n=(n*y+r*x)/this.skeleton.scaleY;let v=Math.sqrt(t*t+n*n);v>1e-5&&(v=1/v),t*=v,n*=v,v=Math.sqrt(t*t+n*n),this.inherit==qt.NoScale&&o<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(v=-v);let w=Ie.PI/2+Math.atan2(n,t);s=Math.cos(w)*v,r=Math.sin(w)*v,o=1/(t*r-s*n),a=r*o,l=s*o,c=n*o,h=t*o}f=a*this.a-l*this.c,p=a*this.b-l*this.d,m=h*this.c-c*this.a,g=h*this.d-c*this.b}if(this.ashearX=0,this.ascaleX=Math.sqrt(f*f+m*m),this.ascaleX>1e-4){let y=f*g-p*m;this.ascaleY=y/this.ascaleX,this.ashearY=-Math.atan2(f*p+m*g,y)*Ie.radDeg,this.arotation=Math.atan2(m,f)*Ie.radDeg}else this.ascaleX=0,this.ascaleY=Math.sqrt(p*p+g*g),this.ashearY=0,this.arotation=90-Math.atan2(g,p)*Ie.radDeg}getWorldRotationX(){return Math.atan2(this.c,this.a)*Ie.radDeg}getWorldRotationY(){return Math.atan2(this.d,this.b)*Ie.radDeg}getWorldScaleX(){return Math.sqrt(this.a*this.a+this.c*this.c)}getWorldScaleY(){return Math.sqrt(this.b*this.b+this.d*this.d)}worldToLocal(e){let t=1/(this.a*this.d-this.b*this.c),s=e.x-this.worldX,n=e.y-this.worldY;return e.x=s*this.d*t-n*this.b*t,e.y=n*this.a*t-s*this.c*t,e}localToWorld(e){let t=e.x,s=e.y;return e.x=t*this.a+s*this.b+this.worldX,e.y=t*this.c+s*this.d+this.worldY,e}worldToParent(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.worldToLocal(e)}parentToWorld(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.localToWorld(e)}worldToLocalRotation(e){let t=Ie.sinDeg(e),s=Ie.cosDeg(e);return Math.atan2(this.a*t-this.c*s,this.d*s-this.b*t)*Ie.radDeg+this.rotation-this.shearX}localToWorldRotation(e){e-=this.rotation-this.shearX;let t=Ie.sinDeg(e),s=Ie.cosDeg(e);return Math.atan2(s*this.c+t*this.d,s*this.a+t*this.b)*Ie.radDeg}rotateWorld(e){e*=Ie.degRad;const t=Math.sin(e),s=Math.cos(e),n=this.a,r=this.b;this.a=s*n-t*this.c,this.b=s*r-t*this.d,this.c=t*n+s*this.c,this.d=t*r+s*this.d}},pu=class{constructor(e,t,s){M(this,"name");M(this,"order");M(this,"skinRequired");this.name=e,this.order=t,this.skinRequired=s}},gw=class{constructor(e,t){M(this,"data");M(this,"intValue",0);M(this,"floatValue",0);M(this,"stringValue",null);M(this,"time",0);M(this,"volume",0);M(this,"balance",0);if(!t)throw new Error("data cannot be null.");this.time=e,this.data=t}},vw=class{constructor(e){M(this,"name");M(this,"intValue",0);M(this,"floatValue",0);M(this,"stringValue",null);M(this,"audioPath",null);M(this,"volume",0);M(this,"balance",0);this.name=e}},oP=class{constructor(e,t){M(this,"data");M(this,"bones");M(this,"target");M(this,"bendDirection",0);M(this,"compress",!1);M(this,"stretch",!1);M(this,"mix",1);M(this,"softness",0);M(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n180?f-=360:f<-180&&(f+=360);let g=e.ascaleX,y=e.ascaleY;if(n||r){switch(e.inherit){case qt.NoScale:case qt.NoScaleOrReflection:p=t-e.worldX,m=s-e.worldY}const x=e.data.length*g;if(x>1e-4){const v=p*p+m*m;if(n&&vx*x){const w=(Math.sqrt(v)/x-1)*a+1;g*=w,o&&(y*=w)}}}e.updateWorldTransformWith(e.ax,e.ay,e.arotation+f*a,g,y,e.ashearX,e.ashearY)}apply2(e,t,s,n,r,o,a,l,c){if(e.inherit!=qt.Normal||t.inherit!=qt.Normal)return;let h=e.ax,u=e.ay,d=e.ascaleX,f=e.ascaleY,p=d,m=f,g=t.ascaleX,y=0,x=0,v=0;d<0?(d=-d,y=180,v=-1):(y=0,v=1),f<0&&(f=-f,v=-v),g<0?(g=-g,x=180):x=0;let w=t.ax,_=0,S=0,b=0,A=e.a,P=e.b,F=e.c,E=e.d,k=Math.abs(d-f)<=1e-4;!k||o?(_=0,S=A*w+e.worldX,b=F*w+e.worldY):(_=t.ay,S=A*w+P*_+e.worldX,b=F*w+E*_+e.worldY);let B=e.parent;if(!B)throw new Error("IK parent must itself have a parent.");A=B.a,P=B.b,F=B.c,E=B.d;let D=A*E-P*F,X=S-B.worldX,N=b-B.worldY;D=Math.abs(D)<=1e-4?0:1/D;let U=(X*E-N*P)*D-h,C=(N*A-X*F)*D-u,R=Math.sqrt(U*U+C*C),O=t.data.length*g,L,$;if(R<1e-4){this.apply1(e,s,n,!1,o,!1,c),t.updateWorldTransformWith(w,_,0,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY);return}X=s-B.worldX,N=n-B.worldY;let V=(X*E-N*P)*D-h,j=(N*A-X*F)*D-u,K=V*V+j*j;if(l!=0){l*=d*(g+1)*.5;let pe=Math.sqrt(K),ge=pe-R-O*d+l;if(ge>0){let he=Math.min(1,ge/(l*2))-1;he=(ge-l*(1-he*he))/pe,V-=he*V,j-=he*j,K=V*V+j*j}}e:if(k){O*=d;let pe=(K-R*R-O*O)/(2*R*O);pe<-1?(pe=-1,$=Math.PI*r):pe>1?(pe=1,$=0,o&&(A=(Math.sqrt(K)/(R+O)-1)*c+1,p*=A,a&&(m*=A))):$=Math.acos(pe)*r,A=R+O*pe,P=O*Math.sin($),L=Math.atan2(j*A-V*P,V*A+j*P)}else{A=d*O,P=f*O;let pe=A*A,ge=P*P,he=Math.atan2(j,V);F=ge*R*R+pe*K-pe*ge;let fe=-2*ge*R,Y=ge-pe;if(E=fe*fe-4*Y*F,E>=0){let le=Math.sqrt(E);fe<0&&(le=-le),le=-(fe+le)*.5;let Re=le/Y,we=F/le,me=Math.abs(Re)=0){N=Math.sqrt(Re)*r,L=he-Math.atan2(N,me),$=Math.atan2(N/f,(me-R)/d);break e}}let W=Ie.PI,H=R-A,G=H*H,q=0,se=0,ue=R+A,ne=ue*ue,de=0;F=-A*R/(pe-ge),F>=-1&&F<=1&&(F=Math.acos(F),X=A*Math.cos(F)+R,N=P*Math.sin(F),E=X*X+N*N,Ene&&(se=F,ne=E,ue=X,de=N)),K<=(G+ne)*.5?(L=he-Math.atan2(q*r,H),$=W*r):(L=he-Math.atan2(de*r,ue),$=se*r)}let ie=Math.atan2(_,w)*v,re=e.arotation;L=(L-ie)*Ie.radDeg+y-re,L>180?L-=360:L<-180&&(L+=360),e.updateWorldTransformWith(h,u,re+L*c,p,m,0,0),re=t.arotation,$=(($+ie)*Ie.radDeg-t.ashearX)*v+x-re,$>180?$-=360:$<-180&&($+=360),t.updateWorldTransformWith(w,_,re+$*c,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY)}},yw=class extends pu{constructor(t){super(t,0,!1);M(this,"bones",new Array);M(this,"_target",null);M(this,"bendDirection",0);M(this,"compress",!1);M(this,"stretch",!1);M(this,"uniform",!1);M(this,"mix",0);M(this,"softness",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},xw=class extends pu{constructor(t){super(t,0,!1);M(this,"bones",new Array);M(this,"_target",null);M(this,"positionMode",ln.Fixed);M(this,"spacingMode",ds.Fixed);M(this,"rotateMode",ao.Chain);M(this,"offsetRotation",0);M(this,"position",0);M(this,"spacing",0);M(this,"mixRotate",0);M(this,"mixX",0);M(this,"mixY",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("SlotData not set.")}};var ln;(function(i){i[i.Fixed=0]="Fixed",i[i.Percent=1]="Percent"})(ln||(ln={}));var ds;(function(i){i[i.Length=0]="Length",i[i.Fixed=1]="Fixed",i[i.Percent=2]="Percent",i[i.Proportional=3]="Proportional"})(ds||(ds={}));var ao;(function(i){i[i.Tangent=0]="Tangent",i[i.Chain=1]="Chain",i[i.ChainScale=2]="ChainScale"})(ao||(ao={}));var Ps;let aP=(Ps=class{constructor(e,t){M(this,"data");M(this,"bones");M(this,"target");M(this,"position",0);M(this,"spacing",0);M(this,"mixRotate",0);M(this,"mixX",0);M(this,"mixY",0);M(this,"spaces",new Array);M(this,"positions",new Array);M(this,"world",new Array);M(this,"curves",new Array);M(this,"lengths",new Array);M(this,"segments",new Array);M(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0,r=e.bones.length;n0){w=u/w*p;for(let S=1;S0?Ie.degRad:-.01745329277777778}for(let w=0,_=3;w0){let E=S.a,k=S.b,B=S.c,D=S.d,X=0,N=0,U=0;if(a?X=m[_-1]:d[w+1]==0?X=m[_+2]:X=Math.atan2(F,P),X-=Math.atan2(B,E),v){N=Math.cos(X),U=Math.sin(X);let C=S.data.length;g+=(C*(N*E-U*B)-P)*s,y+=(C*(U*E+N*B)-F)*s}else X+=x;X>Ie.PI?X-=Ie.PI2:X<-3.1415927&&(X+=Ie.PI2),X*=s,N=Math.cos(X),U=Math.sin(X),S.a=N*E-U*B,S.b=N*k-U*D,S.c=U*E+N*B,S.d=U*k+N*D}S.updateAppliedTransform()}}computeWorldPositions(e,t,s){let n=this.target,r=this.position,o=this.spaces,a=Pe.setArraySize(this.positions,t*3+2),l=this.world,c=e.closed,h=e.worldVerticesLength,u=h/6,d=Ps.NONE;if(!e.constantSpeed){let C=e.lengths;u-=c?1:2;let R=C[u];this.data.positionMode==ln.Percent&&(r*=R);let O;switch(this.data.spacingMode){case ds.Percent:O=R;break;case ds.Proportional:O=R/t;break;default:O=1}l=Pe.setArraySize(this.world,8);for(let L=0,$=0,V=0;LR){d!=Ps.AFTER&&(d=Ps.AFTER,e.computeWorldVertices(n,h-6,4,l,0,2)),this.addAfterPosition(K-R,l,0,a,$);continue}for(;;V++){let ie=C[V];if(!(K>ie)){if(V==0)K/=ie;else{let re=C[V-1];K=(K-re)/(ie-re)}break}}V!=d&&(d=V,c&&V==u?(e.computeWorldVertices(n,h-4,4,l,0,2),e.computeWorldVertices(n,0,4,l,4,2)):e.computeWorldVertices(n,V*6+2,8,l,0,2)),this.addCurvePosition(K,l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7],a,$,s||L>0&&j==0)}return a}c?(h+=2,l=Pe.setArraySize(this.world,h),e.computeWorldVertices(n,2,h-4,l,0,2),e.computeWorldVertices(n,0,2,l,h-4,2),l[h-2]=l[0],l[h-1]=l[1]):(u--,h-=4,l=Pe.setArraySize(this.world,h),e.computeWorldVertices(n,2,h,l,0,2));let f=Pe.setArraySize(this.curves,u),p=0,m=l[0],g=l[1],y=0,x=0,v=0,w=0,_=0,S=0,b=0,A=0,P=0,F=0,E=0,k=0,B=0,D=0;for(let C=0,R=2;Cp){this.addAfterPosition(V-p,l,h-4,a,R);continue}for(;;O++){let j=f[O];if(!(V>j)){if(O==0)V/=j;else{let K=f[O-1];V=(V-K)/(j-K)}break}}if(O!=d){d=O;let j=O*6;for(m=l[j],g=l[j+1],y=l[j+2],x=l[j+3],v=l[j+4],w=l[j+5],_=l[j+6],S=l[j+7],b=(m-y*2+v)*.03,A=(g-x*2+w)*.03,P=((y-v)*3-m+_)*.006,F=((x-w)*3-g+S)*.006,E=b*2+P,k=A*2+F,B=(y-m)*.3+b+P*.16666667,D=(x-g)*.3+A+F*.16666667,U=Math.sqrt(B*B+D*D),N[0]=U,j=1;j<8;j++)B+=E,D+=k,E+=P,k+=F,U+=Math.sqrt(B*B+D*D),N[j]=U;B+=E,D+=k,U+=Math.sqrt(B*B+D*D),N[8]=U,B+=E+P,D+=k+F,U+=Math.sqrt(B*B+D*D),N[9]=U,L=0}for(V*=U;;L++){let j=N[L];if(!(V>j)){if(L==0)V/=j;else{let K=N[L-1];V=L+(V-K)/(j-K)}break}}this.addCurvePosition(V*.1,m,g,y,x,v,w,_,S,a,R,s||C>0&&$==0)}return a}addBeforePosition(e,t,s,n,r){let o=t[s],a=t[s+1],l=t[s+2]-o,c=t[s+3]-a,h=Math.atan2(c,l);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addAfterPosition(e,t,s,n,r){let o=t[s+2],a=t[s+3],l=o-t[s],c=a-t[s+1],h=Math.atan2(c,l);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addCurvePosition(e,t,s,n,r,o,a,l,c,h,u,d){if(e==0||isNaN(e)){h[u]=t,h[u+1]=s,h[u+2]=Math.atan2(r-s,n-t);return}let f=e*e,p=f*e,m=1-e,g=m*m,y=g*m,x=m*e,v=x*3,w=m*v,_=v*e,S=t*y+n*w+o*_+l*p,b=s*y+r*w+a*_+c*p;h[u]=S,h[u+1]=b,d&&(e<.001?h[u+2]=Math.atan2(r-s,n-t):h[u+2]=Math.atan2(b-(s*g+r*x*2+a*f),S-(t*g+n*x*2+o*f)))}},M(Ps,"NONE",-1),M(Ps,"BEFORE",-2),M(Ps,"AFTER",-3),M(Ps,"epsilon",1e-5),Ps),lP=class{constructor(e,t){M(this,"data");M(this,"_bone",null);M(this,"inertia",0);M(this,"strength",0);M(this,"damping",0);M(this,"massInverse",0);M(this,"wind",0);M(this,"gravity",0);M(this,"mix",0);M(this,"_reset",!0);M(this,"ux",0);M(this,"uy",0);M(this,"cx",0);M(this,"cy",0);M(this,"tx",0);M(this,"ty",0);M(this,"xOffset",0);M(this,"xVelocity",0);M(this,"yOffset",0);M(this,"yVelocity",0);M(this,"rotateOffset",0);M(this,"rotateVelocity",0);M(this,"scaleOffset",0);M(this,"scaleVelocity",0);M(this,"active",!1);M(this,"skeleton");M(this,"remaining",0);M(this,"lastTime",0);this.data=e,this.skeleton=t,this.bone=t.bones[e.bone.index],this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}set bone(e){this._bone=e}get bone(){if(this._bone)return this._bone;throw new Error("Bone not set.")}reset(){this.remaining=0,this.lastTime=this.skeleton.time,this._reset=!0,this.xOffset=0,this.xVelocity=0,this.yOffset=0,this.yVelocity=0,this.rotateOffset=0,this.rotateVelocity=0,this.scaleOffset=0,this.scaleVelocity=0}setToSetupPose(){const e=this.data;this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}isActive(){return this.active}update(e){const t=this.mix;if(t==0)return;const s=this.data.x>0,n=this.data.y>0,r=this.data.rotate>0||this.data.shearX>0,o=this.data.scaleX>0,a=this.bone,l=a.data.length;switch(e){case cr.none:return;case cr.reset:this.reset();case cr.update:const c=this.skeleton,h=Math.max(this.skeleton.time-this.lastTime,0);this.remaining+=h,this.lastTime=c.time;const u=a.worldX,d=a.worldY;if(this._reset)this._reset=!1,this.ux=u,this.uy=d;else{let f=this.remaining,p=this.inertia,m=this.data.step,g=this.skeleton.data.referenceScale,y=-1,x=this.data.limit*h,v=x*Math.abs(c.scaleY);if(x*=Math.abs(c.scaleX),s||n){if(s){const w=(this.ux-u)*p;this.xOffset+=w>x?x:w<-x?-x:w,this.ux=u}if(n){const w=(this.uy-d)*p;this.yOffset+=w>v?v:w<-v?-v:w,this.uy=d}if(f>=m){y=Math.pow(this.damping,60*m);const w=this.massInverse*m,_=this.strength,S=this.wind*g*c.scaleX,b=this.gravity*g*c.scaleY;do s&&(this.xVelocity+=(S-this.xOffset*_)*w,this.xOffset+=this.xVelocity*m,this.xVelocity*=y),n&&(this.yVelocity-=(b+this.yOffset*_)*w,this.yOffset+=this.yVelocity*m,this.yVelocity*=y),f-=m;while(f>=m)}s&&(a.worldX+=this.xOffset*t*this.data.x),n&&(a.worldY+=this.yOffset*t*this.data.y)}if(r||o){let w=Math.atan2(a.c,a.a),_=0,S=0,b=0,A=this.cx-a.worldX,P=this.cy-a.worldY;if(A>x?A=x:A<-x&&(A=-x),P>v?P=v:P<-v&&(P=-v),r){b=(this.data.rotate+this.data.shearX)*t;let F=Math.atan2(P+this.ty,A+this.tx)-w-this.rotateOffset*b;this.rotateOffset+=(F-Math.ceil(F*Ie.invPI2-.5)*Ie.PI2)*p,F=this.rotateOffset*b+w,_=Math.cos(F),S=Math.sin(F),o&&(F=l*a.getWorldScaleX(),F>0&&(this.scaleOffset+=(A*_+P*S)*p/F))}else{_=Math.cos(w),S=Math.sin(w);const F=l*a.getWorldScaleX();F>0&&(this.scaleOffset+=(A*_+P*S)*p/F)}if(f=this.remaining,f>=m){y==-1&&(y=Math.pow(this.damping,60*m));const F=this.massInverse*m,E=this.strength,k=this.wind,B=_p.yDown?-this.gravity:this.gravity,D=l/g;for(;;)if(f-=m,o&&(this.scaleVelocity+=(k*_-B*S-this.scaleOffset*E)*F,this.scaleOffset+=this.scaleVelocity*m,this.scaleVelocity*=y),r){if(this.rotateVelocity-=((k*S+B*_)*D+this.rotateOffset*E)*F,this.rotateOffset+=this.rotateVelocity*m,this.rotateVelocity*=y,f0){let f=0;this.data.rotate>0&&(f=c*this.data.rotate,h=Math.sin(f),u=Math.cos(f),d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d),f+=c*this.data.shearX,h=Math.sin(f),u=Math.cos(f),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c}else c*=this.data.rotate,h=Math.sin(c),u=Math.cos(c),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c,d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d}if(o){const c=1+this.scaleOffset*t*this.data.scaleX;a.a*=c,a.c*=c}e!=cr.pose&&(this.tx=l*a.a,this.ty=l*a.c),a.updateAppliedTransform()}translate(e,t){this.ux-=e,this.uy-=t,this.cx-=e,this.cy-=t}rotate(e,t,s){const n=s*Ie.degRad,r=Math.cos(n),o=Math.sin(n),a=this.cx-e,l=this.cy-t;this.translate(a*r-l*o-a,a*o+l*r-l)}},cP=class{constructor(e,t){M(this,"data");M(this,"bone");M(this,"color");M(this,"darkColor",null);M(this,"attachment",null);M(this,"attachmentState",0);M(this,"sequenceIndex",-1);M(this,"deform",new Array);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("bone cannot be null.");this.data=e,this.bone=t,this.color=new rt,this.darkColor=e.darkColor?new rt:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(e){this.attachment!=e&&((!(e instanceof jn)||!(this.attachment instanceof jn)||e.timelineAttachment!=this.attachment.timelineAttachment)&&(this.deform.length=0),this.attachment=e,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}},hP=class{constructor(e,t){M(this,"data");M(this,"bones");M(this,"target");M(this,"mixRotate",0);M(this,"mixX",0);M(this,"mixY",0);M(this,"mixScaleX",0);M(this,"mixScaleY",0);M(this,"mixShearY",0);M(this,"temp",new yh);M(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let y=0,x=g.length;yIe.PI?A-=Ie.PI2:A<-3.1415927&&(A+=Ie.PI2),A*=e;let P=Math.cos(A),F=Math.sin(A);v.a=P*w-F*S,v.b=P*_-F*b,v.c=F*w+P*S,v.d=F*_+P*b}if(a){let w=this.temp;l.localToWorld(w.set(this.data.offsetX,this.data.offsetY)),v.worldX+=(w.x-v.worldX)*t,v.worldY+=(w.y-v.worldY)*s}if(n!=0){let w=Math.sqrt(v.a*v.a+v.c*v.c);w!=0&&(w=(w+(Math.sqrt(c*c+u*u)-w+this.data.offsetScaleX)*n)/w),v.a*=w,v.c*=w}if(r!=0){let w=Math.sqrt(v.b*v.b+v.d*v.d);w!=0&&(w=(w+(Math.sqrt(h*h+d*d)-w+this.data.offsetScaleY)*r)/w),v.b*=w,v.d*=w}if(o>0){let w=v.b,_=v.d,S=Math.atan2(_,w),b=Math.atan2(d,h)-Math.atan2(u,c)-(S-Math.atan2(v.c,v.a));b>Ie.PI?b-=Ie.PI2:b<-3.1415927&&(b+=Ie.PI2),b=S+(b+m)*o;let A=Math.sqrt(w*w+_*_);v.b=Math.cos(b)*A,v.d=Math.sin(b)*A}v.updateAppliedTransform()}}applyRelativeWorld(){let e=this.mixRotate,t=this.mixX,s=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=t!=0||s!=0,l=this.target,c=l.a,h=l.b,u=l.c,d=l.d,f=c*d-h*u>0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let y=0,x=g.length;yIe.PI?A-=Ie.PI2:A<-3.1415927&&(A+=Ie.PI2),A*=e;let P=Math.cos(A),F=Math.sin(A);v.a=P*w-F*S,v.b=P*_-F*b,v.c=F*w+P*S,v.d=F*_+P*b}if(a){let w=this.temp;l.localToWorld(w.set(this.data.offsetX,this.data.offsetY)),v.worldX+=w.x*t,v.worldY+=w.y*s}if(n!=0){let w=(Math.sqrt(c*c+u*u)-1+this.data.offsetScaleX)*n+1;v.a*=w,v.c*=w}if(r!=0){let w=(Math.sqrt(h*h+d*d)-1+this.data.offsetScaleY)*r+1;v.b*=w,v.d*=w}if(o>0){let w=Math.atan2(d,h)-Math.atan2(u,c);w>Ie.PI?w-=Ie.PI2:w<-3.1415927&&(w+=Ie.PI2);let _=v.b,S=v.d;w=Math.atan2(S,_)+(w-Ie.PI/2+m)*o;let b=Math.sqrt(_*_+S*S);v.b=Math.cos(w)*b,v.d=Math.sin(w)*b}v.updateAppliedTransform()}}applyAbsoluteLocal(){let e=this.mixRotate,t=this.mixX,s=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=this.target,l=this.bones;for(let c=0,h=l.length;ct.data.name==e)??null}findTransformConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.transformConstraints.find(t=>t.data.name==e)??null}findPathConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.pathConstraints.find(t=>t.data.name==e)??null}findPhysicsConstraint(e){if(e==null)throw new Error("constraintName cannot be null.");return this.physicsConstraints.find(t=>t.data.name==e)??null}getBoundsRect(e){let t=new yh,s=new yh;return this.getBounds(t,s,void 0,e),{x:t.x,y:t.y,width:s.x,height:s.y}}getBounds(e,t,s=new Array(2),n=null){if(!e)throw new Error("offset cannot be null.");if(!t)throw new Error("size cannot be null.");let r=this.drawOrder,o=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let h=0,u=r.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=s}addSkin(e){for(let n=0;n= 0.");if(!t)throw new Error("name cannot be null.");if(!s)throw new Error("boneData cannot be null.");this.index=e,this.name=t,this.boneData=s}};var gr;(function(i){i[i.Normal=0]="Normal",i[i.Additive=1]="Additive",i[i.Multiply=2]="Multiply",i[i.Screen=3]="Screen"})(gr||(gr={}));let Sw=class extends pu{constructor(t){super(t,0,!1);M(this,"bones",new Array);M(this,"_target",null);M(this,"mixRotate",0);M(this,"mixX",0);M(this,"mixY",0);M(this,"mixScaleX",0);M(this,"mixScaleY",0);M(this,"mixShearY",0);M(this,"offsetRotation",0);M(this,"offsetX",0);M(this,"offsetY",0);M(this,"offsetScaleX",0);M(this,"offsetScaleY",0);M(this,"offsetShearY",0);M(this,"relative",!1);M(this,"local",!1)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},xm=class{constructor(e){M(this,"scale",1);M(this,"attachmentLoader");M(this,"linkedMeshes",new Array);this.attachmentLoader=e}readSkeletonData(e){let t=this.scale,s=new bh;s.name="";let n=new uP(e),r=n.readInt32(),o=n.readInt32();s.hash=o==0&&r==0?null:o.toString(16)+r.toString(16),s.version=n.readString(),s.x=n.readFloat(),s.y=n.readFloat(),s.width=n.readFloat(),s.height=n.readFloat(),s.referenceScale=n.readFloat()*t;let a=n.readBoolean();a&&(s.fps=n.readFloat(),s.imagesPath=n.readString(),s.audioPath=n.readString());let l=0;l=n.readInt(!0);for(let h=0;h>1&3,f.rotateMode=p>>3&3,(p&128)!=0&&(f.offsetRotation=n.readFloat()),f.position=n.readFloat(),f.positionMode==ln.Fixed&&(f.position*=t),f.spacing=n.readFloat(),(f.spacingMode==ds.Length||f.spacingMode==ds.Fixed)&&(f.spacing*=t),f.mixRotate=n.readFloat(),f.mixX=n.readFloat(),f.mixY=n.readFloat(),s.pathConstraints.push(f)}l=n.readInt(!0);for(let h=0,u;h>4,e.readFloat())}n.push(S);break}}}}}let o=e.readInt(!0);if(o>0){let c=new Qa(o),h=s.slots.length;for(let u=0;u=0;x--)p[x]=-1;let m=Pe.newArray(h-f,0),g=0,y=0;for(let x=0;x=0;x--)p[x]==-1&&(p[x]=m[--y]);c.setFrame(u,d,p)}n.push(c)}let a=e.readInt(!0);if(a>0){let c=new Tp(a);for(let h=0;h>>1^-(s&1)}readStringRef(){let e=this.readInt(!0);return e==0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let s=0;s>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),s+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),s+=3;break;default:t+=String.fromCharCode(n),s++}}return t}readFloat(){let e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!=0}},dP=class{constructor(e,t,s,n,r){M(this,"parent");M(this,"skinIndex");M(this,"slotIndex");M(this,"mesh");M(this,"inheritTimeline");this.mesh=e,this.skinIndex=t,this.slotIndex=s,this.parent=n,this.inheritTimeline=r}},fP=class{constructor(e=null,t=null,s=0){M(this,"bones");M(this,"vertices");M(this,"length");this.bones=e,this.vertices=t,this.length=s}};var wn;(function(i){i[i.Region=0]="Region",i[i.BoundingBox=1]="BoundingBox",i[i.Mesh=2]="Mesh",i[i.LinkedMesh=3]="LinkedMesh",i[i.Path=4]="Path",i[i.Point=5]="Point",i[i.Clipping=6]="Clipping"})(wn||(wn={}));function Es(i,e,t){let s=i.readFloat(),n=i.readFloat()*t;for(let r=0,o=0,a=e.getFrameCount()-1;e.setFrame(r,s,n),r!=a;r++){let l=i.readFloat(),c=i.readFloat()*t;switch(i.readByte()){case ji:e.setStepped(r);break;case Hi:ut(i,e,o++,r,0,s,l,n,c,t)}s=l,n=c}return e}function hf(i,e,t){let s=i.readFloat(),n=i.readFloat()*t,r=i.readFloat()*t;for(let o=0,a=0,l=e.getFrameCount()-1;e.setFrame(o,s,n,r),o!=l;o++){let c=i.readFloat(),h=i.readFloat()*t,u=i.readFloat()*t;switch(i.readByte()){case ji:e.setStepped(o);break;case Hi:ut(i,e,a++,o,0,s,c,n,h,t),ut(i,e,a++,o,1,s,c,r,u,t)}s=c,n=h,r=u}return e}function ut(i,e,t,s,n,r,o,a,l,c){e.setBezier(t,s,n,r,a,i.readFloat(),i.readFloat()*c,i.readFloat(),i.readFloat()*c,o,l)}const mP=0,pP=1,gP=2,vP=3,yP=4,xP=5,bP=6,wP=7,SP=8,MP=9,TP=10,_P=0,CP=1,AP=2,EP=3,IP=4,RP=5,PP=0,kP=1,FP=0,OP=1,LP=2,BP=0,NP=1,DP=2,UP=4,$P=5,XP=6,VP=7,YP=8,ji=1,Hi=2;class Hs{constructor(){M(this,"convexPolygons",new Array);M(this,"convexPolygonsIndices",new Array);M(this,"indicesArray",new Array);M(this,"isConcaveArray",new Array);M(this,"triangles",new Array);M(this,"polygonPool",new vh(()=>new Array));M(this,"polygonIndicesPool",new vh(()=>new Array))}triangulate(e){let t=e,s=e.length>>1,n=this.indicesArray;n.length=0;for(let a=0;a3;){let a=s-1,l=0,c=1;for(;;){e:if(!r[l]){let d=n[a]<<1,f=n[l]<<1,p=n[c]<<1,m=t[d],g=t[d+1],y=t[f],x=t[f+1],v=t[p],w=t[p+1];for(let _=(c+1)%s;_!=a;_=(_+1)%s){if(!r[_])continue;let S=n[_]<<1,b=t[S],A=t[S+1];if(Hs.positiveArea(v,w,m,g,b,A)&&Hs.positiveArea(m,g,y,x,b,A)&&Hs.positiveArea(y,x,v,w,b,A))break e}break}if(c==0){do{if(!r[l])break;l--}while(l>0);break}a=l,l=c,c=(c+1)%s}o.push(n[(s+l-1)%s]),o.push(n[l]),o.push(n[(l+1)%s]),n.splice(l,1),r.splice(l,1),s--;let h=(s+l-1)%s,u=l==s?0:l;r[h]=Hs.isConcave(h,s,t,n),r[u]=Hs.isConcave(u,s,t,n)}return s==3&&(o.push(n[2]),o.push(n[0]),o.push(n[1])),o}decompose(e,t){let s=e,n=this.convexPolygons;this.polygonPool.freeAll(n),n.length=0;let r=this.convexPolygonsIndices;this.polygonIndicesPool.freeAll(r),r.length=0;let o=this.polygonIndicesPool.obtain();o.length=0;let a=this.polygonPool.obtain();a.length=0;let l=-1,c=0;for(let h=0,u=t.length;h0?(n.push(a),r.push(o)):(this.polygonPool.free(a),this.polygonIndicesPool.free(o)),a=this.polygonPool.obtain(),a.length=0,a.push(m),a.push(g),a.push(y),a.push(x),a.push(v),a.push(w),o=this.polygonIndicesPool.obtain(),o.length=0,o.push(d),o.push(f),o.push(p),c=Hs.winding(m,g,y,x,v,w),l=d)}a.length>0&&(n.push(a),r.push(o));for(let h=0,u=n.length;h=0;h--)a=n[h],a.length==0&&(n.splice(h,1),this.polygonPool.free(a),o=r[h],r.splice(h,1),this.polygonIndicesPool.free(o));return n}static isConcave(e,t,s,n){let r=n[(t+e-1)%t]<<1,o=n[e]<<1,a=n[(e+1)%t]<<1;return!this.positiveArea(s[r],s[r+1],s[o],s[o+1],s[a],s[a+1])}static positiveArea(e,t,s,n,r,o){return e*(o-n)+s*(t-o)+r*(n-t)>=0}static winding(e,t,s,n,r,o){let a=s-e,l=n-t;return r*l-o*a+a*t-e*l>=0?1:-1}}class wh{constructor(){M(this,"triangulator",new Hs);M(this,"clippingPolygon",new Array);M(this,"clipOutput",new Array);M(this,"clippedVertices",new Array);M(this,"clippedUVs",new Array);M(this,"clippedTriangles",new Array);M(this,"scratch",new Array);M(this,"clipAttachment",null);M(this,"clippingPolygons",null)}clipStart(e,t){if(this.clipAttachment)return 0;this.clipAttachment=t;let s=t.worldVerticesLength,n=Pe.setArraySize(this.clippingPolygon,s);t.computeWorldVertices(e,0,s,n,0,2);let r=this.clippingPolygon;wh.makeClockwise(r);let o=this.clippingPolygons=this.triangulator.decompose(r,this.triangulator.triangulate(r));for(let a=0,l=o.length;a>1,S=this.clipOutput,b=Pe.setArraySize(r,v+_*2);for(let P=0;P>1,$=this.clipOutput,V=Pe.setArraySize(c,D+L*f);for(let K=0;K>1,R=this.clipOutput,O=Pe.setArraySize(o,E+C*2),L=Pe.setArraySize(a,E+C*2);for(let V=0;V=2?(u=l,l=this.scratch):u=this.scratch,u.length=0,u.push(e),u.push(t),u.push(s),u.push(n),u.push(r),u.push(o),u.push(e),u.push(t),l.length=0;let d=a.length-4,f=a;for(let p=0;;p+=2){let m=f[p],g=f[p+1],y=m-f[p+2],x=g-f[p+3],v=l.length,w=u;for(let S=0,b=u.length-2;Sy*(g-E),B=x*(m-A)-y*(g-P);if(B>0){if(k){l.push(F),l.push(E);continue}let D=F-A,X=E-P,N=B/(D*x-X*y);if(N>=0&&N<=1)l.push(A+D*N),l.push(P+X*N);else{l.push(F),l.push(E);continue}}else if(k){let D=F-A,X=E-P,N=B/(D*x-X*y);if(N>=0&&N<=1)l.push(A+D*N),l.push(P+X*N),l.push(F),l.push(E);else{l.push(F),l.push(E);continue}}h=!0}if(v==l.length)return c.length=0,!0;if(l.push(l[0]),l.push(l[1]),p==d)break;let _=l;l=u,l.length=0,u=_}if(c!=l){c.length=0;for(let p=0,m=l.length-2;p>1;c0){let h=s.findPhysicsConstraint(a);if(!h)throw new Error("Physics constraint not found: "+a);c=s.physicsConstraints.indexOf(h)}for(let h in l){let u=l[h],d=u[0];if(!d)continue;let f=u.length;if(h=="reset"){const m=new rw(f,c);for(let g=0;d!=null;d=u[g+1],g++)m.setFrame(g,ee(d,"time",0));r.push(m);continue}let p;if(h=="inertia")p=new J1(f,f,c);else if(h=="strength")p=new Q1(f,f,c);else if(h=="damping")p=new ew(f,f,c);else if(h=="mass")p=new tw(f,f,c);else if(h=="wind")p=new sw(f,f,c);else if(h=="gravity")p=new iw(f,f,c);else if(h=="mix")p=new nw(f,f,c);else continue;r.push(bi(u,p,0,1))}}if(e.attachments)for(let a in e.attachments){let l=e.attachments[a],c=s.findSkin(a);if(!c)throw new Error("Skin not found: "+a);for(let h in l){let u=l[h],d=s.findSlot(h);if(!d)throw new Error("Slot not found: "+h);let f=d.index;for(let p in u){let m=u[p],g=c.getAttachment(f,p);for(let y in m){let x=m[y],v=x[0];if(v){if(y=="deform"){let w=g.bones,_=g.vertices,S=w?_.length/3*2:_.length,b=new H1(x.length,x.length,f,g),A=ee(v,"time",0);for(let P=0,F=0;;P++){let E,k=ee(v,"vertices",null);if(!k)E=w?Pe.newFloatArray(S):_;else{E=Pe.newFloatArray(S);let N=ee(v,"offset",0);if(Pe.arrayCopy(k,0,E,N,k.length),n!=1)for(let U=N,C=U+k.length;U=0;y--)d[y]==-1&&(d[y]=p[--g])}a.setFrame(c,ee(u,"time",0),d)}r.push(a)}if(e.events){let a=new Tp(e.events.length),l=0;for(let c=0;c"u"&&(Math.fround=(function(i){return function(e){return i[0]=e,i[0]}})(new Float32Array(1)));if(typeof window<"u"&&window.PIXI){let i=window.require;window.require=e=>{if(i)return i(e);if(e.startsWith("@pixi/"))return window.PIXI}}const Mn=class Mn extends sP{constructor(t){super(t.resource.source);M(this,"texture");this.texture=ze.from(t)}static from(t){return Mn.textureMap.has(t)?Mn.textureMap.get(t):new Mn(t)}setFilters(t,s){this.texture.baseTexture.scaleMode=Mn.toPixiTextureFilter(t),this.texture.baseTexture.mipmap=Mn.toPixiMipMap(t)}setWraps(t,s){this.texture.baseTexture.wrapMode=Mn.toPixiTextureWrap(t)}dispose(){this.texture.destroy()}static toPixiTextureFilter(t){switch(t){case vs.Nearest:case vs.MipMapNearestLinear:case vs.MipMapNearestNearest:return Ci.NEAREST;case vs.Linear:case vs.MipMapLinearLinear:case vs.MipMapLinearNearest:return Ci.LINEAR;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiMipMap(t){switch(t){case vs.Nearest:case vs.Linear:return gi.OFF;case vs.MipMapNearestLinear:case vs.MipMapNearestNearest:case vs.MipMapLinearLinear:case vs.MipMapLinearNearest:return gi.ON;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiTextureWrap(t){switch(t){case Un.ClampToEdge:return Ii.CLAMP;case Un.MirroredRepeat:return Ii.MIRRORED_REPEAT;case Un.Repeat:return Ii.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(t)}`)}}static toPixiBlending(t){switch(t){case gr.Normal:return He.NORMAL;case gr.Additive:return He.ADD;case gr.Multiply:return He.MULTIPLY;case gr.Screen:return He.SCREEN;default:throw new Error(`Unknown blendMode: ${String(t)}`)}}};M(Mn,"textureMap",new Map);let fo=Mn;const Tn=class Tn extends xl{constructor(){const t=new yp;t.getBuffer("aVertexPosition").static=!1,t.getBuffer("aTextureCoord").static=!1;const s=new fh(ze.EMPTY);super(t,s);M(this,"name","");M(this,"warnedTwoTint",!1)}updateFromSpineData(t,s,n,r,o,a,l,c){var y,x;this.texture=t.texture;const h=o/(c?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((y=u.data)==null?void 0:y.length)!==h&&(u.data=new Float32Array(h));const d=this.geometry.getBuffer("aVertexPosition");((x=d.data)==null?void 0:x.length)!==h&&(d.data=new Float32Array(h));let f=0,p=u.data,m=d.data;for(let v=0;v0?`text-shadow: ${r} ${this.dropShadowBlur}px ${e}`:`text-shadow: ${r} ${e}`}reset(){Object.assign(this,Do.defaultOptions)}onBeforeDraw(){const{fontsDirty:e}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&e?new Promise(t=>setTimeout(t,100)):Promise.resolve()}get isSafari(){const{userAgent:e}=Le.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test(e)}set fillGradientStops(e){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType(e){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit(e){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim(e){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline(e){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading(e){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin(e){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};fm.availableFonts={},fm.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};let tf=fm;const hc=class Uo extends _r{constructor(e="",t={}){super(ze.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;const s=new Image,n=ze.from(s,{scaleMode:Le.SCALE_MODE,resourceOptions:{autoLoad:!1}});n.orig=new ot,n.trim=new ot,this.texture=n;const r="http://www.w3.org/2000/svg",o="http://www.w3.org/1999/xhtml",a=document.createElementNS(r,"svg"),l=document.createElementNS(r,"foreignObject"),c=document.createElementNS(o,"div"),h=document.createElementNS(o,"style");l.setAttribute("width","10000"),l.setAttribute("height","10000"),l.style.overflow="hidden",a.appendChild(l),this.maxWidth=Uo.defaultMaxWidth,this.maxHeight=Uo.defaultMaxHeight,this._domElement=c,this._styleElement=h,this._svgRoot=a,this._foreignObject=l,this._foreignObject.appendChild(h),this._foreignObject.appendChild(c),this._image=s,this._loadImage=new Image,this._autoResolution=Uo.defaultAutoResolution,this._resolution=Uo.defaultResolution??Le.RESOLUTION,this.text=e,this.style=t}measureText(e){var h,u;const{text:t,style:s,resolution:n}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},e);Object.assign(this._domElement,{innerHTML:t,style:s.toCSS(n)}),this._styleElement.textContent=s.toGlobalCSS(),document.body.appendChild(this._svgRoot);const r=this._domElement.getBoundingClientRect();this._svgRoot.remove();const{width:o,height:a}=r;(o>this.maxWidth||a>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");const l=Math.min(this.maxWidth,Math.ceil(o)),c=Math.min(this.maxHeight,Math.ceil(a));return this._svgRoot.setAttribute("width",l.toString()),this._svgRoot.setAttribute("height",c.toString()),t!==this._text&&(this._domElement.innerHTML=this._text),s!==this._style&&(Object.assign(this._domElement,{style:(h=this._style)==null?void 0:h.toCSS(n)}),this._styleElement.textContent=(u=this._style)==null?void 0:u.toGlobalCSS()),{width:l+s.padding*2,height:c+s.padding*2}}async updateText(e=!0){const{style:t,_image:s,_loadImage:n}=this;if(this.localStyleID!==t.styleID&&(this.dirty=!0,this.localStyleID=t.styleID),!this.dirty&&e)return;const{width:r,height:o}=this.measureText();s.width=n.width=Math.ceil(Math.max(1,r)),s.height=n.height=Math.ceil(Math.max(1,o)),this._updateID++;const a=this._updateID;await new Promise(l=>{n.onload=async()=>{if(a/gi,"
").replace(/
/gi,"
").replace(/ /gi," ")}};hc.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},hc.defaultMaxWidth=2024,hc.defaultMaxHeight=2024,hc.defaultAutoResolution=!0;function ph(i,e){const t=Math.max(0,Number(i)||0),s=Math.max(0,Number(e)||0);return{inner:Math.min(t,s),outer:Math.max(t,s)}}function b1(i){const e=Math.max(0,Number(i.outerRectW)||0),t=Math.max(0,Number(i.outerRectH)||0);return{innerW:Math.min(e,Math.max(0,Number(i.innerRectW)||0)),innerH:Math.min(t,Math.max(0,Number(i.innerRectH)||0)),outerW:e,outerH:t}}function sR(i,e,t,s,n){if(i==="random")return n();const r=Math.max(1,Math.round(t)),o=Math.max(0,Math.round(e))%r;return s?o/r:r<=1?.5:o/(r-1)}function Pv(i,e,t,s){const n=Math.sqrt(i*i+s()*(e*e-i*i));return{x:Math.cos(t)*n,y:-Math.sin(t)*n,radialAngle:-t*180/Math.PI}}function iR(i,e){const{innerW:t,innerH:s,outerW:n,outerH:r}=b1(i),o=Math.max(0,(n-t)/2),a=Math.max(0,(r-s)/2),l=o*r,c=t*a,h=l*2+c*2;if(h<=0){const p=n*2+r*2;if(p<=0)return{x:0,y:0,radialAngle:0};let m=e()*p,g,v;return mt?0:i==="linear"?1-e/t:i==="inverse"?Math.min(10,t/Math.max(e,t*.1)):1}function lR(i,e,t,s,n,r,o){const a=i-t,l=e-s,c=Math.hypot(a,l);if(c<=1e-4||c>r)return{x:0,y:0};const h=n*w1(o,c,r)*10;return{x:-l/c*h,y:a/c*h}}function cR(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1)),l=e-i.x,c=t-i.y,h=(n*l+r*c)/o,u=(-r*l+n*c)/a,d=(w,b,_,E)=>{const F=_/o,I=E/a,k=Math.max(1e-4,Math.hypot(F,I)),B=F/k,D=I/k,X=n*B-r*D,N=r*B+n*D;return{x:i.x+n*w*o-r*b*a+X*.05,y:i.y+r*w*o+n*b*a+N*.05,nx:X,ny:N}};if(i.shape==="circle"){const w=Math.max(.001,i.radius),b=Math.hypot(h,u);if(b>=w)return null;const _=b>1e-4?h/b:1,E=b>1e-4?u/b:0;return d(_*w,E*w,_,E)}if(i.shape==="ellipse"){const w=Math.max(.001,i.radiusX),b=Math.max(.001,i.radiusY),_=Math.hypot(h/w,u/b);if(_>=1)return null;const E=_>1e-4?1/_:1,F=_>1e-4?h*E:w,I=_>1e-4?u*E:0,k=Math.max(1e-4,Math.hypot(F/(w*w),I/(b*b)));return d(F,I,F/(w*w)/k,I/(b*b)/k)}if(i.shape==="rect"){const w=Math.max(.001,i.width*.5),b=Math.max(.001,i.height*.5);if(Math.abs(h)>=w||Math.abs(u)>=b)return null;const _=w-Math.abs(h),E=b-Math.abs(u);if(_=0?1:-1;return d(I*w,u,I,0)}const F=u>=0?1:-1;return d(h,F*b,0,F)}const f=Math.max(3,Math.min(16,Math.round(i.sides||(i.shape==="custom"?5:6)))),p=Math.max(.001,i.width*.5),m=Math.max(.001,i.height*.5),g=Array.from({length:f},(w,b)=>{const _=Math.PI*.5+b/f*Math.PI*2;return{x:Math.cos(_)*p,y:Math.sin(_)*m}});let v=!1;for(let w=0,b=g.length-1;wu!=E.y>u&&h<(E.x-_.x)*(u-_.y)/(E.y-_.y)+_.x&&(v=!v)}if(!v)return null;let y=g[0].x,x=g[0].y,M=1/0;for(let w=0;w>>0^Math.imul(e+1,2654435761)^t)>>>0;return s^=s>>>16,s=Math.imul(s,2146121005),s^=s>>>15,s=Math.imul(s,2221713035),s^=s>>>16,(s>>>0)/4294967296}function Eo(i,e,t,s,n){return i==="fixed"?e:i==="curve"?Ms(e,t,en(s,n)):Ms(e,t,n)}function sf(i,e,t,s,n,r){return i==="curve"?Ms(e,t,en(s,n)):i==="random"?r:e}function Ov(i,e,t,s,n){const r=1-n;return r*r*r*i+3*r*r*n*e+3*r*n*n*t+n*n*n*s}function en(i,e,t="线性"){if(!Array.isArray(i)||i.length===0)return 1;const s=[...i].sort((n,r)=>n.x-r.x);if(e<=s[0].x)return s[0].y;if(e>=s[s.length-1].x)return s[s.length-1].y;for(let n=0;n=s[n].x&&e<=s[n+1].x){const r=s[n],o=s[n+1],a=o.x-r.x||1;if(t!=="贝塞尔")return Ms(r.y,o.y,(e-r.x)/a);const l=r.x+(r.outX??a/3),c=r.y+(r.outY??(o.y-r.y)/3),h=o.x+(o.inX??-a/3),u=o.y+(o.inY??-(o.y-r.y)/3);let d=0,f=1;for(let p=0;p<14;p++){const m=(d+f)/2;Ov(r.x,l,h,o.x,m)>>0;return function(){e|=0,e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function ta(i){let e=i.replace("#","");return e.length===3&&(e=e.split("").map(t=>t+t).join("")),parseInt(e,16)}function uR(i,e,t){const s=Lv(i),n=Lv(e),r=Math.round(s[0]+(n[0]-s[0])*t),o=Math.round(s[1]+(n[1]-s[1])*t),a=Math.round(s[2]+(n[2]-s[2])*t);return r<<16|o<<8|a}function mm(i,e){if(!Array.isArray(i)||i.length===0)return 16777215;const t=[...i].sort((s,n)=>s.position-n.position);if(e<=t[0].position)return ta(t[0].color);if(e>=t[t.length-1].position)return ta(t[t.length-1].color);for(let s=0;sr.position)continue;const o=(e-n.position)/Math.max(1e-4,r.position-n.position);return uR(n.color,r.color,o)}return ta(t[t.length-1].color)}function Lv(i){let e=i.replace("#","");e.length===3&&(e=e.split("").map(s=>s+s).join(""));const t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255]}function dR(){return{sprite:null,boneName:"",mesh:null,meshSignature:"",history:[],bones:[],skinWeights:[],currentWidth:0,currentAlpha:0,currentColor:16777215,resourceId:1,enabled:!1,sampledLength:100,sampledWidth:100}}function Lc(i){i.history.length=0,i.bones.length=0,i.mesh&&(i.mesh.visible=!1)}class fR{constructor(e){S(this,"container");this.container=e}ensureMesh(e,t,s){const n=t.trailResources.find(g=>g.id===e.resourceId)||t.trailResources[0],r=(n==null?void 0:n.texture)||ze.EMPTY,o=Number(n==null?void 0:n.rotation)||0,a=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),l=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),c=Math.max(2,Math.min(16,Math.round((n==null?void 0:n.boneCount)??3))),h=`${a}:${l}:${c}:${(n==null?void 0:n.id)??0}:${o}`;if(e.mesh&&e.meshSignature===h)return e.mesh.texture!==r&&(e.mesh.texture=r),e.mesh;e.mesh&&(this.container.removeChild(e.mesh),e.mesh.destroy()),e.meshSignature&&e.meshSignature!==h&&(e.history.length=0,e.bones.length=0);const u=new Float32Array(a*l*2),d=new Float32Array(a*l*2),f=[],p=[];for(let g=0;g.05?e.history.unshift({x:t,y:s}):(r.x=t,r.y=s);const o=Math.max(1,n)*1.5;let a=0,l=e.history.length;for(let c=1;c=o||c>=239){l=c+1;break}e.history.length>l&&(e.history.length=l)}sampleBones(e,t,s){const n=Math.max(2,Math.min(16,Math.round(s))),r=e.history,o=[];if(!r.length)return o;let a=0;for(let c=1;c=h&&g>1e-4){const v=(h-u)/g;d={x:Ms(p.x,m.x,v),y:Ms(p.y,m.y,v)};break}u+=g}o.push({boneName:`${e.boneName}_trail_${c}`,x:d.x,y:d.y,rotation:0})}for(let c=0;c1){const c=o[0].rotation,u=(o[o.length-1].rotation-c+540)%360-180;for(let d=0;dh.id===s.resourceId)||t.trailResources[0];if(!(r!=null&&r.texture)||s.bones.length<2){n.visible=!1;return}e.resourceId=r.id,n.texture!==r.texture&&(n.texture=r.texture);const o=Math.max(2,Math.min(16,Math.round(t.trailGridRows))),a=Math.max(2,Math.min(32,Math.round(t.trailGridCols))),l=n.vertices,c=[];for(let h=0;h.5&&s.alpha>0}update(e,t,s,n,r,o,a){if(e.sprite=a,e.boneName=s,!t.trail||!e.enabled||e.sampledLength<=0||e.sampledWidth<=0){Lc(e);return}this.ensureMesh(e,t,a);const l=t.trailResources.find(f=>f.id===e.resourceId)||t.trailResources[0];this.appendPoint(e,n,r,e.sampledLength);const c=l!=null&&l.lifeLengthEnabled?Math.max(0,en(l.lifeLengthCurve,o)):1,h=Math.max(0,e.sampledLength)*c;e.bones=this.sampleBones(e,h,(l==null?void 0:l.boneCount)??3),e.bones[0]&&(e.bones[0].x=n,e.bones[0].y=r);const u=(l==null?void 0:l.widthMode)==="particle"?(Math.abs(a.scale.x)+Math.abs(a.scale.y))*.5:1;e.currentWidth=Math.max(0,e.sampledWidth)*u,e.currentAlpha=(l==null?void 0:l.alphaMode)==="particle"?a.alpha:(l==null?void 0:l.alphaMode)==="curve"?en(l.alphaCurve,o):(l==null?void 0:l.alpha)??1,e.currentColor=(l==null?void 0:l.colorMode)==="particle"?a.tint:(l==null?void 0:l.colorMode)==="curve"?mm(l.colorGradient,o):ta((l==null?void 0:l.color)||"#ffffff");const d={bones:e.bones.map(f=>({...f})),activeBoneCount:e.bones.length,width:e.currentWidth,alpha:Math.min(1,Math.max(0,e.currentAlpha)),colorHex:e.currentColor,resourceId:e.resourceId};return this.skinMesh(e,t,d),d}applyState(e,t,s,n){var r;e.sprite=s,e.resourceId=n.resourceId??((r=t.trailResources[0])==null?void 0:r.id)??1,e.bones=n.bones.map(o=>({...o})),e.currentWidth=n.width,e.currentAlpha=n.alpha,this.skinMesh(e,t,n)}drawDebug(e,t,s,n){if(e.clear(),!t||!s.trail)return;const r=Math.max(2,Math.min(16,Math.round(s.trailGridRows))),o=Math.max(2,Math.min(32,Math.round(s.trailGridCols)));e.lineStyle(1,3790847,.72);for(const a of n){const l=a.mesh;if(!(l!=null&&l.visible))continue;const c=l.vertices,h=(u,d)=>{const f=(u*r+d)*2;return{x:c[f],y:c[f+1]}};for(let u=0;ur.texture||r.sequenceFrames.some(o=>o.texture));if(!t.length)return mR(i.texture);const s=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(s<=0)return t[Math.floor(e()*t.length)];let n=e()*s;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function vR(i,e){const t=i.trailResources.filter(r=>r.texture);if(!t.length)return i.trailResources[0]||pR();const s=t.reduce((r,o)=>r+Math.max(0,o.weight),0);if(s<=0)return t[Math.min(t.length-1,Math.floor(e*t.length))];let n=e*s;for(const r of t)if(n-=Math.max(0,r.weight),n<=0)return r;return t[t.length-1]}function Bv(i,e){if(i.imageMode!=="sequence"||i.sequenceFrames.length<=1)return{index:0,visible:!0};const t=Math.min(120,Math.max(1,Number(i.sequenceFps)||30)),s=Math.max(0,Math.floor(Math.max(0,e)*t)),n=i.sequenceFrames.length-1;return i.sequencePlayback==="once-hide"?{index:Math.min(n,s),visible:s<=n}:i.sequencePlayback==="once-hold"?{index:Math.min(n,s),visible:!0}:i.sequencePlayback==="loop-reverse"?{index:n-s%i.sequenceFrames.length,visible:!0}:{index:s%i.sequenceFrames.length,visible:!0}}function rf(i,e,t){var s;return i.imageMode==="sequence"&&i.sequenceFrames.length?((s=i.sequenceFrames[Math.max(0,Math.min(i.sequenceFrames.length-1,t))])==null?void 0:s.texture)||i.texture||e:i.texture||e}function bl(){return{texture:null,imageResources:[{id:1,texture:null,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}]}],imageWeightVersion:1,name:"ParticleSystem1",mode:"stream",rate:20,streamBehavior:"normal",loopDurationFrames:30,generateLoopStartAnimation:!1,loopStartUseCustomDuration:!1,loopStartDurationFrames:30,generateLoopEndAnimation:!1,loopEndUseCustomDuration:!1,loopEndDurationFrames:30,burstCount:50,burstLoop:!1,delay:0,duration:1,shape:"point",showShape:!0,shapeRangeVersion:1,innerRadius:0,outerRadius:30,innerRectW:0,innerRectH:0,outerRectW:60,outerRectH:40,spawnPathId:0,spawnPathDistribution:"fixed",radius:30,rectW:60,rectH:40,centerX:0,centerY:0,rootRotation:0,rootScaleX:1,rootScaleY:1,renderLayerMode:"top",renderLayerSpineId:0,renderLayerSlotName:"",renderLayerSlotPosition:"above",renderLayerFollowAttachment:!1,emissionAngleMode:"random",direction:0,spread:360,coneDirection:90,coneAngle:60,lifeMin:.6,lifeMax:1.8,lifeMode:"random",lifeCurve:[{x:0,y:0},{x:1,y:1}],speedMin:30,speedMax:140,speedMode:"random",speedCurve:[{x:0,y:0},{x:1,y:1}],scaleMin:.3,scaleMax:.8,scaleMode:"random",scaleAxisMode:"uniform",scaleYMin:.3,scaleYMax:.8,scaleCurve:[{x:0,y:0},{x:1,y:1}],scaleYCurve:[{x:0,y:0},{x:1,y:1}],scaleEndRatio:.3,initialRotationMode:"random",initialRotationMin:0,initialRotationMax:360,initialRotationCurve:[{x:0,y:0},{x:1,y:1}],alpha:.9,alphaEnd:0,rotationSpeedMin:-180,rotationSpeedMax:180,speedOverLifeEnabled:!1,speedOverLifeMode:"fixed",speedOverLifeMin:1,speedOverLifeMax:1,speedOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleOverLifeEnabled:!1,scaleOverLifeMode:"curve",scaleOverLifeAxisMode:"uniform",scaleOverLifeMin:0,scaleOverLifeMax:1,scaleYOverLifeMin:0,scaleYOverLifeMax:1,scaleOverLifeCurve:[{x:0,y:1},{x:1,y:1}],scaleYOverLifeCurve:[{x:0,y:1},{x:1,y:1}],rotationOverLifeEnabled:!1,rotationOverLifeMode:"random",rotationOverLifeCurve:[{x:0,y:0},{x:1,y:1}],gravity:980,gravityMode:"fixed",gravityMin:980,gravityMax:980,gravityDirection:-90,gravityCurve:[{x:0,y:1},{x:1,y:1}],damping:0,seed:0,colorStart:"#ffffff",colorEnd:"#ff4d4d",colorOverLife:!1,blend:"add",alphaMode:"curve",curveMode:"线性",alphaCurve:[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],textureName:"star",textureFolder:"",alphaScale:1,anchorX:.5,anchorY:.5,independentAlpha:"off",offsetX:0,offsetY:0,noise:!1,noiseAmt:30,noiseRange:100,noiseSpeed:1,useGravity:!1,wind:!1,windX:0,windY:0,windMode:"fixed",windMin:100,windMax:100,windDirection:0,windCurve:[{x:0,y:1},{x:1,y:1}],forceField:!1,forceStrength:10,forceRadius:100,forceCenterX:0,forceCenterY:0,forceFalloff:"linear",showForceFieldShape:!0,vortex:!1,vortexStrength:10,vortexRadius:100,vortexCenterX:0,vortexCenterY:0,vortexFalloff:"linear",showVortexShape:!0,attraction:!1,attractionCenterX:200,attractionCenterY:0,attractionRadius:20,attractionDuration:.5,attractionDelay:.1,attractionDelayMode:"particle",attractionPath:"curve",showAttractionShape:!0,trail:!1,trailConfigVersion:3,trailResources:[{id:1,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:[{x:0,y:1},{x:1,y:1}],boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:[{x:0,y:1},{x:1,y:1}],shapeEnabled:!1,shapeCurve:[{x:0,y:1},{x:1,y:1}]}],trailResourceVersion:6,trailTexture:null,trailTextureName:"trail",trailPreviewUrl:"/images/trail.png",trailColorMode:"particle",trailColor:"#ffffff",trailColorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],trailAlphaMode:"particle",trailAlpha:1,trailAlphaCurve:[{x:0,y:1},{x:1,y:1}],trailBoneCount:3,trailLength:100,trailWidth:100,trailWidthMode:"particle",trailLifeLengthEnabled:!1,trailLifeLengthCurve:[{x:0,y:1},{x:1,y:1}],trailShapeEnabled:!1,trailShapeCurve:[{x:0,y:1},{x:1,y:1}],trailGridRows:4,trailGridCols:4,collision:!1,collisionColliderIds:[],pathFollow:!1,emitterFollow:!1,emitterFollowMode:"none",emitterFollowPathId:0,emitterFollowSpineId:0,emitterFollowBoneName:"",emitterFollowBoneOffsetX:0,emitterFollowBoneOffsetY:0,emitterFollowBoneRotation:0,emitterFollowBoneScaleX:1,emitterFollowBoneScaleY:1,emitterAngleMode:"fixed",emitterFollowCurve:[{x:0,y:0},{x:1,y:1}],emitterFollowDuration:2,emitterFollowSpace:"world",emitterFollowDirection:"forward",emitterFollowOffset:0}}function Dn(i){var F;const e=bl(),t=i,s=t.shapeRangeVersion!==1,n=Number(t.radius),r=Number(t.rectW),o=Number(t.rectH),a=Number(t.direction),l=Number(t.spread),c=t.shape,h=t.imageWeightVersion!==1,u=t.loopDurationFrames==null,d=t.gravityMode==null,f=Number(t.gravity),p=t.windMode==null,m=Number(t.windX),g=Number(t.windY),v=t.forceFalloff==null,y=Number(t.forceStrength),x=t.trailConfigVersion!==3,M=!Array.isArray(t.trailResources),C=t.trailResourceVersion!==6,w=t.trailTexture,b=String(t.trailTextureName||"trail"),_=String(t.trailPreviewUrl||"/images/trail.png").replace("/trails/trail.png","/images/trail.png");for(const[I,k]of Object.entries(e))t[I]!==void 0&&t[I]!==null||(t[I]=Array.isArray(k)?k.map(B=>typeof B=="object"&&B!==null?{...B}:B):k);s&&(i.innerRadius=0,i.outerRadius=Math.max(0,Number.isFinite(n)?n:e.outerRadius),i.innerRectW=0,i.innerRectH=0,i.outerRectW=Math.max(0,Number.isFinite(r)?r:e.outerRectW),i.outerRectH=Math.max(0,Number.isFinite(o)?o:e.outerRectH),i.coneDirection=Number.isFinite(a)?a:90,i.emissionAngleMode=Number.isFinite(l)&&l>0?"random":"fixed",c==="cone"&&(i.spread=Math.max(0,Number(i.coneAngle)||0)),i.shapeRangeVersion=1),i.shape==="orbit"&&(i.shape="path"),["fixed","random","radial","path-normal","path-tangent"].includes(i.emissionAngleMode)||(i.emissionAngleMode="fixed"),!["circle","rect","cone"].includes(i.shape)&&i.emissionAngleMode==="radial"&&(i.emissionAngleMode="fixed"),i.shape!=="path"&&(i.emissionAngleMode==="path-normal"||i.emissionAngleMode==="path-tangent")&&(i.emissionAngleMode="fixed"),i.spawnPathId=Math.max(0,Math.round(Number(i.spawnPathId)||0)),i.spawnPathDistribution!=="fixed"&&i.spawnPathDistribution!=="random"&&(i.spawnPathDistribution="fixed"),i.renderLayerMode!=="top"&&i.renderLayerMode!=="slot"&&(i.renderLayerMode="top"),i.renderLayerSpineId=Math.max(0,Math.round(Number(i.renderLayerSpineId)||0)),typeof i.renderLayerSlotName!="string"&&(i.renderLayerSlotName=""),i.renderLayerSlotPosition!=="above"&&i.renderLayerSlotPosition!=="below"&&(i.renderLayerSlotPosition="above"),typeof i.renderLayerFollowAttachment!="boolean"&&(i.renderLayerFollowAttachment=!1),i.innerRadius=Math.max(0,Number(i.innerRadius)||0),i.outerRadius=Math.max(i.innerRadius,Number(i.outerRadius)||0),i.innerRectW=Math.max(0,Number(i.innerRectW)||0),i.innerRectH=Math.max(0,Number(i.innerRectH)||0),i.outerRectW=Math.max(i.innerRectW,Number(i.outerRectW)||0),i.outerRectH=Math.max(i.innerRectH,Number(i.outerRectH)||0);const E=Array.from(new Set((Array.isArray(i.collisionColliderIds)?i.collisionColliderIds:[]).map(I=>Math.round(Number(I))).filter(I=>Number.isFinite(I)&&I>0)));(E.length!==i.collisionColliderIds.length||E.some((I,k)=>I!==i.collisionColliderIds[k]))&&(i.collisionColliderIds=E),i.streamBehavior!=="normal"&&i.streamBehavior!=="loop"&&(i.streamBehavior="normal"),(u||!Number.isFinite(i.loopDurationFrames))&&(i.loopDurationFrames=Math.ceil(Math.max(1/30,Number(i.duration)||1)*30)),i.loopDurationFrames=Math.min(1800,Math.max(1,Math.ceil(i.loopDurationFrames))),typeof i.generateLoopStartAnimation!="boolean"&&(i.generateLoopStartAnimation=!1),typeof i.generateLoopEndAnimation!="boolean"&&(i.generateLoopEndAnimation=!1),typeof i.loopStartUseCustomDuration!="boolean"&&(i.loopStartUseCustomDuration=!1),typeof i.loopEndUseCustomDuration!="boolean"&&(i.loopEndUseCustomDuration=!1),i.loopStartDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(i.loopStartDurationFrames)||30))),i.loopEndDurationFrames=Math.min(1800,Math.max(1,Math.ceil(Number(i.loopEndDurationFrames)||30))),(!Array.isArray(i.imageResources)||i.imageResources.length===0)&&(i.imageResources=bl().imageResources);for(const I of i.imageResources){!I.texture&&i.texture&&(I.texture=i.texture),I.textureName||(I.textureName="star"),I.previewUrl==="/particles/star.png"&&(I.previewUrl="/images/star.png"),I.previewUrl||(I.previewUrl=I.textureName==="star"?"/images/star.png":""),I.imageMode!=="fixed"&&I.imageMode!=="sequence"&&(I.imageMode="fixed"),I.sequencePlayback==="once"?I.sequencePlayback="once-hold":I.sequencePlayback==="loop"?I.sequencePlayback="loop-forward":["once-hide","once-hold","loop-forward","loop-reverse"].includes(I.sequencePlayback)||(I.sequencePlayback="loop-forward"),Number.isFinite(I.sequenceFps)||(I.sequenceFps=30),I.sequenceFps=Math.min(120,Math.max(1,Number(I.sequenceFps)||30)),Array.isArray(I.sequenceFrames)||(I.sequenceFrames=[]);for(const k of I.sequenceFrames)typeof k.name!="string"&&(k.name=""),typeof k.previewUrl!="string"&&(k.previewUrl=""),k.texture===void 0&&(k.texture=null);Number.isFinite(I.weight)||(I.weight=100),typeof I.locked!="boolean"&&(I.locked=!1),Number.isFinite(I.scale)||(I.scale=1),Number.isFinite(I.anchorX)||(I.anchorX=.5),Number.isFinite(I.anchorY)||(I.anchorY=.5),I.colorMode!=="fixed"&&I.colorMode!=="random"&&I.colorMode!=="lifetime"&&(I.colorMode=i.colorOverLife?"lifetime":"fixed"),I.colorStart||(I.colorStart=i.colorStart||"#ffffff"),I.colorEnd||(I.colorEnd=i.colorEnd||I.colorStart),(!Array.isArray(I.colorGradient)||I.colorGradient.length<2)&&(I.colorGradient=[{position:0,color:I.colorStart},{position:1,color:I.colorEnd}]),Object.prototype.hasOwnProperty.call(mr,I.blend)||(I.blend=i.blend||"normal"),["off","fixed","curve"].includes(I.independentAlpha)||(I.independentAlpha=i.independentAlpha||"off"),Number.isFinite(I.alpha)||(I.alpha=Number.isFinite(i.alphaScale)?i.alphaScale:1),["跟随导出","线性","贝塞尔"].includes(I.alphaCurveMode)||(I.alphaCurveMode=i.curveMode||"跟随导出"),(!Array.isArray(I.alphaCurve)||I.alphaCurve.length<2)&&(I.alphaCurve=(i.alphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})))}if(i.imageResources.length===1)i.imageResources[0].weight=100,i.imageResources[0].locked=!1;else if(h){const I=100/i.imageResources.length;i.imageResources.forEach((k,B)=>{k.weight=B===i.imageResources.length-1?100-I*(i.imageResources.length-1):I,k.locked=!1})}if(i.imageWeightVersion=1,d){const I=Number.isFinite(f)&&f!==0?f:980;i.gravity=I,i.gravityMin=I,i.gravityMax=I}if(p){const I=Number.isFinite(m)&&Number.isFinite(g)&&(m!==0||g!==0);i.windMin=I?Math.hypot(m,g):100,i.windMax=i.windMin,i.windDirection=I?Math.atan2(-g,m)*180/Math.PI:0}v&&(i.forceStrength=Number.isFinite(y)&&y!==0?y:10),x&&(i.trailConfigVersion=3,i.trailAlphaCurve=[{x:0,y:1},{x:1,y:1}],i.trailLifeLengthCurve=[{x:0,y:1},{x:1,y:1}],i.trailShapeCurve=[{x:0,y:1},{x:1,y:1}],i.trailGridRows=4,i.trailGridCols=4),(M||!i.trailResources.length)&&(i.trailResources=[{id:1,texture:w||null,textureName:b,previewUrl:_,weight:100,locked:!1,rotation:0,colorMode:i.trailColorMode,color:i.trailColor,colorGradient:i.trailColorGradient.map(I=>({...I})),blend:"normal",alphaMode:i.trailAlphaMode,alpha:i.trailAlpha,alphaCurve:i.trailAlphaCurve.map(I=>({...I})),boneCount:i.trailBoneCount,trailRatio:100,lengthMode:"fixed",length:i.trailLength,lengthMin:i.trailLength,lengthMax:i.trailLength,widthSizeMode:"fixed",width:i.trailWidth,widthMin:i.trailWidth,widthMax:i.trailWidth,widthMode:i.trailWidthMode,lifeLengthEnabled:i.trailLifeLengthEnabled,lifeLengthCurve:i.trailLifeLengthCurve.map(I=>({...I})),shapeEnabled:i.trailShapeEnabled,shapeCurve:i.trailShapeCurve.map(I=>({...I}))}]);for(const I of i.trailResources)I.textureName||(I.textureName="trail"),I.previewUrl==="/trails/trail.png"&&(I.previewUrl="/images/trail.png"),I.previewUrl||(I.previewUrl="/images/trail.png"),Number.isFinite(I.weight)||(I.weight=100),typeof I.locked!="boolean"&&(I.locked=!1),Number.isFinite(I.rotation)||(I.rotation=0),["particle","fixed","curve"].includes(I.colorMode)||(I.colorMode=i.trailColorMode||"particle"),I.color||(I.color=i.trailColor||"#ffffff"),(!Array.isArray(I.colorGradient)||I.colorGradient.length<2)&&(I.colorGradient=(i.trailColorGradient||[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}]).map(k=>({...k}))),Object.prototype.hasOwnProperty.call(mr,I.blend)||(I.blend="normal"),["particle","fixed","curve"].includes(I.alphaMode)||(I.alphaMode=i.trailAlphaMode||"particle"),Number.isFinite(I.alpha)||(I.alpha=Number.isFinite(i.trailAlpha)?i.trailAlpha:1),(!Array.isArray(I.alphaCurve)||I.alphaCurve.length<2)&&(I.alphaCurve=(i.trailAlphaCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),Number.isFinite(I.boneCount)||(I.boneCount=Number.isFinite(i.trailBoneCount)?i.trailBoneCount:3),Number.isFinite(I.trailRatio)||(I.trailRatio=100),I.trailRatio=Math.min(100,Math.max(0,I.trailRatio)),["fixed","random"].includes(I.lengthMode)||(I.lengthMode="fixed"),Number.isFinite(I.length)||(I.length=Number.isFinite(i.trailLength)?i.trailLength:100),Number.isFinite(I.lengthMin)||(I.lengthMin=I.length),Number.isFinite(I.lengthMax)||(I.lengthMax=I.length),["fixed","random"].includes(I.widthSizeMode)||(I.widthSizeMode="fixed"),Number.isFinite(I.width)||(I.width=Number.isFinite(i.trailWidth)?i.trailWidth:100),Number.isFinite(I.widthMin)||(I.widthMin=I.width),Number.isFinite(I.widthMax)||(I.widthMax=I.width),["particle","fixed"].includes(I.widthMode)||(I.widthMode=i.trailWidthMode||"particle"),typeof I.lifeLengthEnabled!="boolean"&&(I.lifeLengthEnabled=!!i.trailLifeLengthEnabled),(!Array.isArray(I.lifeLengthCurve)||I.lifeLengthCurve.length<2)&&(I.lifeLengthCurve=(i.trailLifeLengthCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k}))),typeof I.shapeEnabled!="boolean"&&(I.shapeEnabled=!!i.trailShapeEnabled),(!Array.isArray(I.shapeCurve)||I.shapeCurve.length<2)&&(I.shapeCurve=(i.trailShapeCurve||[{x:0,y:1},{x:1,y:1}]).map(k=>({...k})));if(i.trailResources.length===1&&(i.trailResources[0].weight=100,i.trailResources[0].locked=!1),C)for(const I of i.trailResources)I.alphaCurve=((F=I.alphaCurve)==null?void 0:F.length)>=2?I.alphaCurve:[{x:0,y:1},{x:1,y:1}];return i.trailResourceVersion=6,i}class Nv extends gs{constructor(t,s=oR){super();S(this,"pool",[]);S(this,"cfg");S(this,"accumulator",0);S(this,"burstTimer",0);S(this,"_spawnSerial",0);S(this,"_elapsed",0);S(this,"_attractionEnabledAt",0);S(this,"_attractionWasEnabled",!1);S(this,"states",[]);S(this,"rng",Math.random);S(this,"_lastSeed",-1);S(this,"trailDebugGfx",new Ds);S(this,"trail");S(this,"colliders",[]);S(this,"followSpawnX",0);S(this,"followSpawnY",0);S(this,"followSpawnAngle",0);S(this,"spawnPathSampler",null);S(this,"spawnPathClosed",!1);S(this,"followExportCurveMode","线性");S(this,"simulationTransform",null);this.cfg=Dn(t),this.trail=new fR(this),this._ensurePool(s),this.addChild(this.trailDebugGfx)}setFollowExportCurveMode(t){this.followExportCurveMode=t}resolveCurveMode(t){return t==="跟随导出"?this.followExportCurveMode:t}reseed(){const t=this.cfg.seed;t!==this._lastSeed&&(this._lastSeed=t,this.rng=nf(t>>>0))}_ensurePool(t){for(;this.pool.length=n.delay),o=s==="force"||s==="normal"&&(n.mode==="burst"||this._elapsed=1;)this.accumulator-=1,this.spawnOne();else this.burstTimer+=t,n.burstLoop?this.burstTimer>=1&&(this.burstTimer=0,this.emitBurst()):t>0&&this.burstTimer<=t&&this.emitBurst();const a=[];for(let p=0;p0){const A=Math.max(1e-4,Math.abs(n.rootScaleX)),P=Math.max(1e-4,Math.abs(n.rootScaleY)),O=-(((l=this.simulationTransform)==null?void 0:l.rotation)??n.rootRotation)*Math.PI/180,L=Math.cos(O),$=Math.sin(O),V=((c=this.simulationTransform)==null?void 0:c.centerX)??n.centerX,j=((h=this.simulationTransform)==null?void 0:h.centerY)??n.centerY,K=V+L*A*m.x-$*P*m.y,ie=-j+$*A*m.x+L*P*m.y,re=K,pe=-ie,ge=n.forceCenterX-re,he=n.forceCenterY-pe,fe=Math.hypot(ge,he);if(fe>1e-4&&fe<=n.forceRadius){const Y=w1(n.forceFalloff,fe,n.forceRadius),W=n.forceStrength*Y*10,H=ge/fe*W,G=he/fe*W,q=H,se=-G;m.vx+=(L*q+$*se)/A*t,m.vy+=(-$*q+L*se)/P*t}}if(!m.collisionPaused&&n.vortex&&n.vortexStrength!==0&&n.vortexRadius>0){const A=Dr(n,m.x,m.y,this.simulationTransform),P=lR(A.x,A.y,n.vortexCenterX,n.vortexCenterY,n.vortexStrength,n.vortexRadius,n.vortexFalloff),O=Fv(n,P.x,P.y,this.simulationTransform);m.vx+=O.x*t,m.vy+=O.y*t}if(!m.collisionPaused&&n.damping>0){const A=Math.max(0,1-n.damping*t);m.vx*=A,m.vy*=A}if(m.collisionPaused)m.vx=0,m.vy=0;else if(m.x+=m.vx*t,m.y+=m.vy*t,this.applyColliders(m,p))continue;if(n.attraction&&!m.collisionPaused){const A=m.maxLife-m.life;if(n.attractionDelayMode==="particle"?A>=Math.max(0,n.attractionDelay):this._elapsed-this._attractionEnabledAt>=Math.max(0,n.attractionDelay)){const O=Dr(n,m.x,m.y,this.simulationTransform),L=n.attractionCenterX,$=n.attractionCenterY,V=Math.max(0,n.attractionRadius);if(!m.attractionActive){if(Math.hypot(L-O.x,$-O.y)<=V){this.kill(p);continue}m.attractionActive=!0,m.attractionElapsed=0,m.attractionStartWorldX=O.x,m.attractionStartWorldY=O.y}m.attractionElapsed+=t;const j=Math.max(1e-4,n.attractionDuration),K=Math.min(1,m.attractionElapsed/j);let ie=Ms(m.attractionStartWorldX,L,K),re=Ms(m.attractionStartWorldY,$,K);if(n.attractionPath==="curve"){const he=L-m.attractionStartWorldX,fe=$-m.attractionStartWorldY,Y=Math.hypot(he,fe);if(Y>1e-4){const W=Y*.25*m.attractionCurveSide,H=(m.attractionStartWorldX+L)*.5-fe/Y*W,G=(m.attractionStartWorldY+$)*.5+he/Y*W,q=1-K;ie=q*q*m.attractionStartWorldX+2*q*K*H+K*K*L,re=q*q*m.attractionStartWorldY+2*q*K*G+K*K*$}}const pe=Math.hypot(L-ie,$-re);if(K>=1||pe<=V){this.kill(p);continue}const ge=kv(n,ie,re,this.simulationTransform);m.x=ge.x,m.y=ge.y,m.vx=0,m.vy=0}}const v=g,y=m.sprite,x=n.imageResources.find(A=>A.id===m.resourceId);if(x){const A=Bv(x,m.maxLife-m.life);m.imageFrameIndex=A.index,y.texture=rf(x,n.texture,m.imageFrameIndex),y.visible=A.visible}if(n.speedOverLifeEnabled){const A=uc(sf(n.speedOverLifeMode,n.speedOverLifeMin,n.speedOverLifeMax,n.speedOverLifeCurve,v,m.speedScaleTarget),1),P=m.speedScale===0?A:A/m.speedScale;m.vx*=P,m.vy*=P,m.speedScale=A}let M=m.rotationSpeed;n.rotationOverLifeEnabled&&n.rotationOverLifeMode==="curve"&&(M=Ms(n.rotationSpeedMin,n.rotationSpeedMax,en(n.rotationOverLifeCurve,v))),m.rotation+=M*t;let C=m.x,w=m.y;if(n.noise&&n.noiseAmt>0&&n.noiseRange>0&&n.noiseSpeed>0){const A=m.maxLife-m.life,P=Math.max(0,n.noiseRange)*Math.min(1,Math.max(0,n.noiseAmt)/100)*.5,O=A*Math.max(0,n.noiseSpeed)*Math.PI*2;C+=(Math.sin(m.noisePhaseX+O)-Math.sin(m.noisePhaseX))*P,w+=(Math.sin(m.noisePhaseY+O*.83)-Math.sin(m.noisePhaseY))*P}y.x=C,y.y=w,y.rotation=-m.rotation*Math.PI/180;let b=1,_=1;n.scaleOverLifeEnabled&&(b=sf(n.scaleOverLifeMode,n.scaleOverLifeMin,n.scaleOverLifeMax,n.scaleOverLifeCurve,v,m.scaleOverLifeX),_=n.scaleOverLifeAxisMode==="separate"?sf(n.scaleOverLifeMode,n.scaleYOverLifeMin,n.scaleYOverLifeMax,n.scaleYOverLifeCurve,v,m.scaleOverLifeY):b),y.scale.set(uc(m.scaleStartX*b,1),uc(m.scaleStartY*_,1));const E=n.alphaMode==="curve"?en(n.alphaCurve,v,this.resolveCurveMode(n.curveMode))*n.alphaScale:n.alpha*n.alphaScale;y.alpha=uc((x==null?void 0:x.independentAlpha)==="fixed"?x.alpha:(x==null?void 0:x.independentAlpha)==="curve"?en(x.alphaCurve,v,this.resolveCurveMode(x.alphaCurveMode)):E,1);const F=(x==null?void 0:x.colorStart)||"#ffffff",I=(x==null?void 0:x.colorMode)==="lifetime"?mm(x.colorGradient,v):(x==null?void 0:x.colorMode)==="random"?m.colorSample:ta(F);y.tint=I,y.blendMode=mr[(x==null?void 0:x.blend)||"normal"];const k=this.trail.update(m.trail,n,m.boneName,C,w,v,y),B=Dr(n,C,w,this.simulationTransform),D=((u=this.simulationTransform)==null?void 0:u.rotation)??n.rootRotation,X=Math.abs(((d=this.simulationTransform)==null?void 0:d.scaleX)??n.rootScaleX),N=Math.abs(((f=this.simulationTransform)==null?void 0:f.scaleY)??n.rootScaleY),U=k?{...k,bones:k.bones.map(A=>{const P=Dr(n,A.x,A.y,this.simulationTransform);return{...A,worldX:P.x,worldY:P.y,worldRotation:D-A.rotation}})}:void 0;a.push({boneName:m.boneName,spawnId:m.spawnId,x:C,y:w,rotation:m.rotation,scaleX:y.scale.x,scaleY:y.scale.y,worldX:B.x,worldY:B.y,worldRotation:D+m.rotation,worldScaleX:y.scale.x*X,worldScaleY:y.scale.y*N,alpha:y.alpha,colorHex:I,resourceId:m.resourceId,imageFrameIndex:m.imageFrameIndex,imageVisible:y.visible,trailState:U,active:!0})}return this.states=a,a}drawTrailMeshDebug(t){this.trail.drawDebug(this.trailDebugGfx,t,this.cfg,this.pool.map(s=>s.trail))}emitBurst(){for(let t=0;t0&&this.spawnPathSampler){const a=this.estimatedEmissionCount(),l=sR(t.spawnPathDistribution,this._spawnSerial,a,this.spawnPathClosed,this.rng),c=this.spawnPathSampler(l);if(c)return{...this.applyFollowToOrigin(c.x+s,c.y+n),radialAngle:0,pathAngle:c.angle}}const r=nR(t,this.rng);return{...this.applyFollowToOrigin(s+r.x,n+r.y),radialAngle:r.radialAngle}}estimatedEmissionCount(){const t=this.cfg;return t.mode==="burst"?Math.max(1,Math.round(t.burstCount)):Math.max(1,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration))))}applyFollowToOrigin(t,s){const n=this.followSpawnAngle*Math.PI/180,r=Math.cos(n),o=Math.sin(n);return{x:this.followSpawnX+r*t-o*s,y:this.followSpawnY+o*t+r*s}}spawnOne(){const t=this.cfg;let s=this.pool.findIndex(M=>!M.active);if(s===-1)return;const n=this.spawnOrigin(),{x:r,y:o}=n,a=Eo(t.lifeMode,t.lifeMin,t.lifeMax,t.lifeCurve,this.rng()),l=Eo(t.speedMode,t.speedMin,t.speedMax,t.speedCurve,this.rng()),c=rR(t,n,this.followSpawnAngle,this.rng),h=this.pool[s],u=gR(t,this.rng),d=this._spawnSerial++;h.spawnId=d;const f=vR(t,Ur(t.seed,d,1540483477));h.noisePhaseX=Ur(t.seed,d,1757159915)*Math.PI*2,h.noisePhaseY=Ur(t.seed,d,48610963)*Math.PI*2,h.gravityStrength=t.useGravity&&t.gravityMode==="random"?Ms(t.gravityMin,t.gravityMax,this.rng()):t.gravityMin,h.windStrength=t.wind&&t.windMode==="random"?Ms(t.windMin,t.windMax,this.rng()):t.windMin,h.attractionActive=!1,h.attractionElapsed=0,h.collisionPaused=!1,h.attractionCurveSide=Ur(t.seed,d,2738958700)<.5?-1:1,h.trail.history.length=0,h.trail.bones.length=0,h.trail.currentWidth=0,h.trail.currentAlpha=0,h.trail.currentColor=16777215,h.trail.resourceId=f.id;const p=Math.min(100,Math.max(0,Number(f.trailRatio)||0)),m=t.mode==="burst"?Math.max(0,Math.round(t.burstCount)):Math.max(0,Math.floor(t.rate*(t.streamBehavior==="loop"?Math.max(1,t.loopDurationFrames)/30:Math.max(0,t.duration)))),g=p>0&&m===1&&d===0,v=Ur(t.seed,d,668265261)*100,y=(M,C,w,b,_)=>{if(M!=="random")return Math.max(0,Number(C)||0);const E=Math.max(0,Math.min(Number(w)||0,Number(b)||0)),F=Math.max(0,Math.max(Number(w)||0,Number(b)||0));return Ms(E,F,Ur(t.seed,d,_))};h.trail.sampledLength=y(f.lengthMode,f.length,f.lengthMin,f.lengthMax,374761393),h.trail.sampledWidth=y(f.widthSizeMode,f.width,f.widthMin,f.widthMax,3550635116),h.trail.enabled=t.trail&&(g||v0&&h.trail.sampledWidth>0,h.trail.mesh&&(h.trail.mesh.visible=!1),h.active=!0,h.life=a,h.maxLife=a,h.x=r,h.y=o,h.trail.enabled&&h.trail.history.push({x:r,y:o}),h.vx=Math.cos(c)*l,h.vy=Math.sin(c)*l,h.scaleStartX=Eo(t.scaleMode,t.scaleMin,t.scaleMax,t.scaleCurve,this.rng())*u.scale,h.scaleStartY=t.scaleAxisMode==="separate"?Eo(t.scaleMode,t.scaleYMin,t.scaleYMax,t.scaleYCurve,this.rng())*u.scale:h.scaleStartX,h.alphaStart=t.alpha,h.alphaEnd=t.alphaEnd,h.rotation=t.initialRotationMode==="direction"?-Math.atan2(h.vy,h.vx)*180/Math.PI+t.initialRotationMin:Eo(t.initialRotationMode,t.initialRotationMin,t.initialRotationMax,t.initialRotationCurve,this.rng()),h.rotationSpeed=t.rotationOverLifeEnabled?Eo(t.rotationOverLifeMode,t.rotationSpeedMin,t.rotationSpeedMax,t.rotationOverLifeCurve,this.rng()):0,h.speedScale=1,h.speedScaleTarget=t.speedOverLifeMode==="random"?Ms(t.speedOverLifeMin,t.speedOverLifeMax,this.rng()):t.speedOverLifeMin,h.scaleOverLifeX=t.scaleOverLifeMode==="random"?Ms(t.scaleOverLifeMin,t.scaleOverLifeMax,this.rng()):t.scaleOverLifeMin,h.scaleOverLifeY=t.scaleOverLifeMode==="random"?Ms(t.scaleYOverLifeMin,t.scaleYOverLifeMax,this.rng()):t.scaleYOverLifeMin,h.resourceId=u.id,h.colorSample=u.colorMode==="random"?mm(u.colorGradient,Ur(t.seed,d,2654435769)):ta(u.colorStart);const x=Bv(u,0);h.imageFrameIndex=x.index,h.sprite.texture=rf(u,t.texture,x.index),h.sprite.anchor.set(u.anchorX,u.anchorY),h.sprite.blendMode=mr[u.blend],h.sprite.tint=h.colorSample,h.sprite.visible=!0}kill(t){const s=this.pool[t];s.active=!1,s.sprite.visible=!1,Lc(s.trail)}clear(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Lc(t.trail)}get activeCount(){let t=0;for(const s of this.pool)s.active&&t++;return t}capture(){const t=[];for(const s of this.pool)s.active&&t.push({boneName:s.boneName,spawnId:s.spawnId,x:s.sprite.x,y:s.sprite.y,rotation:s.rotation,scaleX:s.sprite.scale.x,scaleY:s.sprite.scale.y,...this.captureWorldTransform(s),alpha:s.sprite.alpha,colorHex:s.sprite.tint,resourceId:s.resourceId,imageFrameIndex:s.imageFrameIndex,imageVisible:s.sprite.visible,active:!0,trailState:this.cfg.trail&&s.trail.bones.length?{bones:s.trail.bones.map(n=>{var o;const r=Dr(this.cfg,n.x,n.y,this.simulationTransform);return{...n,worldX:r.x,worldY:r.y,worldRotation:(((o=this.simulationTransform)==null?void 0:o.rotation)??this.cfg.rootRotation)-n.rotation}}),activeBoneCount:s.trail.bones.length,width:s.trail.currentWidth,alpha:s.trail.currentAlpha,colorHex:s.trail.currentColor,resourceId:s.trail.resourceId}:void 0});return t}captureWorldTransform(t){var r,o,a;const s=Dr(this.cfg,t.sprite.x,t.sprite.y,this.simulationTransform),n=((r=this.simulationTransform)==null?void 0:r.rotation)??this.cfg.rootRotation;return{worldX:s.x,worldY:s.y,worldRotation:n+t.rotation,worldScaleX:t.sprite.scale.x*Math.abs(((o=this.simulationTransform)==null?void 0:o.scaleX)??this.cfg.rootScaleX),worldScaleY:t.sprite.scale.y*Math.abs(((a=this.simulationTransform)==null?void 0:a.scaleY)??this.cfg.rootScaleY)}}apply(t){const s=new Map;for(const n of t)s.set(n.boneName,n);for(const n of this.pool){const r=s.get(n.boneName);if(!r){n.active=!1,n.sprite.visible=!1,n.trail.mesh&&(n.trail.mesh.visible=!1);continue}n.active=r.active;const o=n.sprite;if(o.visible=r.active&&r.imageVisible!==!1,o.x=r.x,o.y=r.y,o.rotation=-r.rotation*Math.PI/180,o.scale.set(r.scaleX,r.scaleY),o.alpha=r.alpha,o.tint=r.colorHex,r.resourceId!=null){const a=this.cfg.imageResources.find(l=>l.id===r.resourceId);a&&(n.imageFrameIndex=r.imageFrameIndex??0,o.texture=rf(a,this.cfg.texture,n.imageFrameIndex),o.anchor.set(a.anchorX,a.anchorY),o.blendMode=mr[a.blend])}this.cfg.trail&&r.trailState?this.trail.applyState(n.trail,this.cfg,n.sprite,r.trailState):n.trail.mesh&&(n.trail.mesh.visible=!1)}}reset(){for(const t of this.pool)t.active=!1,t.sprite.visible=!1,Lc(t.trail);this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=!1,this._lastSeed=this.cfg.seed,this.rng=nf(this.cfg.seed>>>0)}restartEmissionCycle(){this.accumulator=0,this.burstTimer=0,this._spawnSerial=0,this._elapsed=0,this._attractionEnabledAt=0,this._attractionWasEnabled=this.cfg.attraction,this._lastSeed=this.cfg.seed,this.rng=nf(this.cfg.seed>>>0)}}const uo=new Map,oo=new Map;function yR(i){return[...uo.values()].some(e=>e===i)}function S1(i){if(!(yR(i)||(oo.get(i)||0)>0)){oo.delete(i);for(const e of i.textures)e.destroy(!0)}}function xR(i){const e=oo.get(i)||0;e>1?oo.set(i,e-1):oo.delete(i),S1(i)}function bR(i){return uo.get(i)||null}function fu(i,e){Pl(i),uo.set(i,e)}function wR(i){const e=uo.get(i);return e?(oo.set(e,(oo.get(e)||0)+1),e):null}function SR(i,e){const t=uo.get(i);return t?(fu(e,t),!0):!1}function Pl(i){const e=uo.get(i);e&&(uo.delete(i),S1(e))}function $t(i){if(Array.isArray(i))return i.map(e=>$t(e));if(i&&typeof i=="object"){const e=Object.getPrototypeOf(i);if(e===Object.prototype||e===null){const t={};for(const[s,n]of Object.entries(i))t[s]=$t(n);return t}}return i}const M1=["3.8","4.0","4.1","4.2","4.3"];function gh(i){const e=String(i||"").trim();return M1.find(t=>e===t||e.startsWith(`${t}.`))||null}function pm(){return M1.join(" / ")}function MR(i){return i==="4.3"?"4.3":"4.2"}function wp(){return{imagesPath:"./images/",spineVersion:"4.2",keyframeCurve:"bezier",fps:30,omitFps:!1,integerFrameAlignment:!0,bonePool:!0,excludeEmptyAnimations:!1,fileName:"SpineParticle.json"}}function T1(i){const e=Object.assign(wp(),i||{});return e.imagesPath=String(e.imagesPath||"./images/"),e.spineVersion=gh(e.spineVersion)||"4.2",e.keyframeCurve=e.keyframeCurve==="bezier"?"bezier":"linear",e.fps=Math.min(240,Math.max(1,Math.round(Number(e.fps)||30))),e.omitFps=e.omitFps===!0,e.integerFrameAlignment=e.integerFrameAlignment!==!1,e.bonePool=e.bonePool!==!1,e.excludeEmptyAnimations=e.excludeEmptyAnimations===!0,e.fileName=String(e.fileName||"SpineParticle.json"),e}const gm=30;function Bc(i,e=1){return Math.min(1800,Math.max(1,Math.ceil(Number(i)||e)))}function _1(i,e=30){const t=Math.max(0,Number(i.lifeMin)||0),s=Math.max(0,Number(i.lifeMax)||0),n=i.lifeMode==="fixed"?t:Math.max(t,s);return Bc(Math.ceil(n*Math.max(1,e)),gm)}function pr(i,e=30){const t=Bc(i.loopDurationFrames),s=_1(i,e),n=i.generateLoopStartAnimation?i.loopStartUseCustomDuration?Bc(i.loopStartDurationFrames,gm):s:0,r=i.generateLoopEndAnimation?i.loopEndUseCustomDuration?Bc(i.loopEndDurationFrames,gm):s:0;return{start:n,loop:t,end:r,total:n+t+r}}function Sp(i,e){const t=pr(i,e),n=Math.max(0,Math.ceil(Math.max(0,Number(i.delay)||0)*Math.max(1,e)))+t.start;return{start:n,end:n+t.loop}}const TR=.001;function _R(i,e){const t=Math.max(1,Number(e)||30),n=Math.max(0,Number(i)||0)*t+TR*t;return Math.max(0,Math.floor(n))}function Nc(i,e,t){const s=Math.max(1,Math.floor(t)-1),n=Math.min(s-1,Math.max(0,Math.floor(Number(i)||0))),r=Math.min(s,Math.max(n+1,Math.floor(Number(e)||s)));return{start:n,end:r}}function CR(i,e,t){const s=Math.max(1,e-1),n=Math.max(1,t-1),r=i.end>=s?n:i.end;return Nc(i.start,r,t)}let dc=1,fc=1,mc=1,pc=1;function gc(i,e){const t=new Set(e),s=`${i} Copy`;if(!t.has(s))return s;let n=2;for(;t.has(`${s} ${n}`);)n++;return`${s} ${n}`}const yo=$_("particle",{state:()=>({editor:{viewScale:1,viewX:0,viewY:0},systems:[],colliders:[],paths:[],spines:[],activeId:0,activeObjectType:"particle",activeObjectId:0,timeline:{playing:!0,loop:!0,frame:0,totalFrames:60,playbackStart:0,playbackEnd:59,fps:30,recorded:!1,animation:"animation",animations:["animation"]},settings:{parameterPanelOnRight:!0,tickEnabled:!1,axisFontSize:12,tickWidth:1,showAxisLabels:!0,axisColor:"#7a86ad",undoLimit:20,backgroundX:0,backgroundY:0,backgroundOpacity:1,backgroundImageName:"",backgroundImageData:"",showEmitter:!0,showBones:!1,bonePointDrawSize:1,boneAxisDrawSize:2,showSkinMesh:!1,showGrid:!0,exportSettings:wp()}}),getters:{activeSystemCount:i=>i.systems.length},actions:{syncSceneSequences(){dc=Math.max(dc,...this.systems.map(i=>i.id+1),1),fc=Math.max(fc,...this.colliders.map(i=>i.id+1),1),mc=Math.max(mc,...this.paths.map(i=>i.id+1),1),pc=Math.max(pc,...this.spines.map(i=>i.id+1),1)},addSystem(i){const e=bl();i!=null&&i.config&&Object.assign(e,i.config);const t=new Set(this.systems.map(r=>r.config.name));if(t.has(e.name)){let r=0;for(const a of this.systems){const l=/^ParticleSystem(\d+)$/.exec(a.config.name);l&&(r=Math.max(r,parseInt(l[1],10)))}e.name=`ParticleSystem${r+1}`;let o=2;for(;t.has(e.name);)e.name=`ParticleSystem${r+o}`,o++}const s=this.timeline.animations.includes(this.timeline.animation)?this.timeline.animation:this.timeline.animations[0]||"animation",n={id:dc++,visible:!0,animation:s,config:e};return this.systems.push(n),this.activeId=n.id,this.activeObjectType="particle",this.activeObjectId=n.id,n},removeSystem(i){var s;const e=this.systems.findIndex(n=>n.id===i);e>=0&&this.systems.splice(e,1),this.activeId===i&&(this.activeId=((s=this.systems[0])==null?void 0:s.id)??0);const t=this.systems.find(n=>n.id===this.activeId);if(t&&(this.timeline.animation=t.animation),this.activeObjectType==="particle"&&this.activeObjectId===i){const n=this.systems[0];this.activeObjectId=(n==null?void 0:n.id)??0}},selectSystem(i){this.activeId=i,this.activeObjectType="particle",this.activeObjectId=i;const e=this.systems.find(t=>t.id===i);e&&(this.timeline.animation=e.animation)},setSystemAnimation(i,e){if(!this.timeline.animations.includes(e))return;const t=this.systems.find(s=>s.id===i);t&&(t.animation=e,this.timeline.animation=e)},addAnimation(){const i=new Set(this.timeline.animations);let e=2,t=`animation${e}`;for(;i.has(t);)t=`animation${++e}`;this.timeline.animations.push(t),this.timeline.animation=t;const s=this.systems.find(n=>n.id===this.activeId);return s&&(s.animation=t),t},renameAnimation(i,e){const t=e.trim(),s=this.timeline.animations.indexOf(i);if(s<0||!t||t!==i&&this.timeline.animations.includes(t))return!1;this.timeline.animations[s]=t;for(const n of this.systems)n.animation===i&&(n.animation=t);return this.timeline.animation===i&&(this.timeline.animation=t),!0},removeAnimation(i){if(this.timeline.animations.length<=1)return!1;const e=this.timeline.animations.indexOf(i);if(e<0)return!1;this.timeline.animations.splice(e,1);const t=this.timeline.animations[Math.min(e,this.timeline.animations.length-1)];for(const s of this.systems)s.animation===i&&(s.animation=t);return this.timeline.animation===i&&(this.timeline.animation=t),!0},addCollider(){const i=fc++,e={id:i,name:`Collider${i}`,visible:!0,shape:"circle",enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,radius:50,radiusX:70,radiusY:45,width:120,height:80,sides:6,response:"physics",elasticity:.8,friction:.3,followPath:!1,followPathId:0,followDuration:2,followPathRotation:!1,followCurveMode:"跟随导出",followCurve:[{x:0,y:0},{x:1,y:1}]};return this.colliders.push(e),this.activeObjectType="collision",this.activeObjectId=e.id,e},addPath(){const i=mc++,e={id:i,name:`Path${i}`,visible:!0,enabled:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,closed:!1,color:"#ff933e",preset:"",points:[]};return this.paths.push(e),this.activeObjectType="path",this.activeObjectId=e.id,e},addSpine(){const i=pc++,e={id:i,name:`SpineSkeleton${i}`,enabled:!0,visible:!0,x:0,y:0,rotation:0,scaleX:1,scaleY:1,timeOffset:0,skeletonFileName:"",atlasFileName:"",textureFileNames:[],dataVersion:"",sourceBundle:null,selectedAnimation:"",selectedBone:"",selectedSlot:"",animations:[],bones:[],slots:[],assetVersion:0,status:"empty",error:""};return this.spines.push(e),this.activeObjectType="spine",this.activeObjectId=e.id,e},duplicateSelectedObject(){const i=this.activeObjectId;if(!i)return null;if(this.activeObjectType==="particle"){const s=this.systems.find(r=>r.id===i);if(!s)return null;const n=$t(s);return n.id=dc++,n.config.name=gc(s.config.name,this.systems.map(r=>r.config.name)),n.frames=void 0,this.systems.push(n),this.activeId=n.id,this.activeObjectId=n.id,this.timeline.animation=n.animation,n}if(this.activeObjectType==="collision"){const s=this.colliders.find(r=>r.id===i);if(!s)return null;const n=$t(s);return n.id=fc++,n.name=gc(s.name,this.colliders.map(r=>r.name)),this.colliders.push(n),this.activeObjectId=n.id,n}if(this.activeObjectType==="path"){const s=this.paths.find(r=>r.id===i);if(!s)return null;const n=$t(s);return n.id=mc++,n.name=gc(s.name,this.paths.map(r=>r.name)),this.paths.push(n),this.activeObjectId=n.id,n}const e=this.spines.find(s=>s.id===i);if(!e)return null;const t=$t(e);return t.id=pc++,t.name=gc(e.name,this.spines.map(s=>s.name)),t.selectedBone="",t.selectedSlot="",SR(e.id,t.id),this.spines.push(t),this.activeObjectId=t.id,t},selectSceneObject(i,e){if(this.activeObjectType=i,this.activeObjectId=e,i==="particle"){this.activeId=e;const t=this.systems.find(s=>s.id===e);t&&(this.timeline.animation=t.animation)}},removeCollider(i){var t;const e=this.colliders.findIndex(s=>s.id===i);e>=0&&this.colliders.splice(e,1);for(const s of this.systems){const n=Dn(s.config);n.collisionColliderIds=n.collisionColliderIds.filter(r=>r!==i)}if(this.activeObjectType==="collision"&&this.activeObjectId===i){const s=this.systems[0];this.activeObjectType=s?"particle":"collision",this.activeObjectId=(s==null?void 0:s.id)??((t=this.colliders[0])==null?void 0:t.id)??0}},removePath(i){var t;const e=this.paths.findIndex(s=>s.id===i);if(e>=0&&this.paths.splice(e,1),this.activeObjectType==="path"&&this.activeObjectId===i){const s=this.systems[0];this.activeObjectType=s?"particle":"path",this.activeObjectId=(s==null?void 0:s.id)??((t=this.paths[0])==null?void 0:t.id)??0}},removeSpine(i){Pl(i);const e=this.spines.findIndex(t=>t.id===i);if(e>=0&&this.spines.splice(e,1),this.activeObjectType==="spine"&&this.activeObjectId===i){const t=this.systems[0],s=this.colliders[0],n=this.paths[0],r=this.spines[0];t?(this.activeObjectType="particle",this.activeObjectId=t.id,this.activeId=t.id):s?(this.activeObjectType="collision",this.activeObjectId=s.id):n?(this.activeObjectType="path",this.activeObjectId=n.id):(this.activeObjectType="spine",this.activeObjectId=(r==null?void 0:r.id)??0)}this.recalcTotalFrames()},play(){const i=Nc(this.timeline.playbackStart,this.timeline.playbackEnd,this.timeline.totalFrames);(this.timeline.frame=i.end)&&(this.timeline.frame=i.start),this.timeline.playing=!0},pause(){this.timeline.playing=!1},togglePlay(){this.timeline.playing?this.pause():this.play()},toStart(){this.timeline.frame=this.timeline.playbackStart},previousFrame(){this.timeline.playing=!1,this.timeline.frame=Math.max(this.timeline.playbackStart,this.timeline.frame-1)},nextFrame(){this.timeline.playing=!1,this.timeline.frame=Math.min(this.timeline.playbackEnd,this.timeline.frame+1)},toEnd(){this.timeline.playing=!1,this.timeline.frame=this.timeline.playbackEnd},toggleLoop(){this.timeline.loop=!this.timeline.loop},setFrame(i){this.timeline.frame=Math.max(0,Math.min(i,this.timeline.totalFrames-1))},setPlaybackStart(i){const e=Nc(i,this.timeline.playbackEnd,this.timeline.totalFrames);this.timeline.playbackStart=e.start,this.timeline.playbackEnd=e.end,this.timeline.framee.end&&(this.timeline.frame=e.end)},recalcTotalFrames(){const i=this.timeline.fps||30;let e=0;for(const r of this.systems){const o=r.config,a=Math.max(0,Number(o.lifeMin)||0),l=Math.max(0,Number(o.lifeMax)||0),c=o.lifeMode==="fixed"?a:Math.max(a,l),h=o.mode==="stream"?o.streamBehavior==="loop"?Math.max(1/i,Math.ceil(Math.max(1,Number(o.loopDurationFrames)||1))/i):Math.max(1/i,Number(o.duration)||0):0;let u=Math.max(0,Number(o.delay)||0)+h+c;o.mode==="stream"&&o.streamBehavior==="loop"&&(u=Math.max(0,Number(o.delay)||0)+pr(o,i).total/i),u>e&&(e=u)}for(const r of this.spines){const o=r.animations.find(l=>l.name===r.selectedAnimation);if(!o)continue;const a=Math.max(0,Number(r.timeOffset)||0)+Math.max(0,o.duration||0);a>e&&(e=a)}for(const r of this.colliders){if(!r.followPath||!r.followPathId)continue;const o=Math.max(0,Number(r.followDuration)||0);o>e&&(e=o)}const t=this.timeline.totalFrames,s=Math.max(2,_R(e,i)+1);this.timeline.totalFrames=s;const n=CR({start:this.timeline.playbackStart,end:this.timeline.playbackEnd},t,s);return this.timeline.playbackStart=n.start,this.timeline.playbackEnd=n.end,this.timeline.frame>=s&&(this.timeline.frame=s-1),s}}}),C1="SpineParticle.SystemSettings",A1=1,of="SpineParticle.SystemSettings.v1";function Oa(i,e,t,s){const n=Number(i);return Math.min(t,Math.max(e,Number.isFinite(n)?n:s))}function AR(i){return{parameterPanelOnRight:i.parameterPanelOnRight,undoLimit:i.undoLimit,showEmitter:i.showEmitter,showBones:i.showBones,bonePointDrawSize:i.bonePointDrawSize,boneAxisDrawSize:i.boneAxisDrawSize,showSkinMesh:i.showSkinMesh,tickEnabled:i.tickEnabled,axisFontSize:i.axisFontSize,tickWidth:i.tickWidth,showAxisLabels:i.showAxisLabels,axisColor:i.axisColor}}function ER(i,e){const t=n=>i[n]==null?!!e[n]:i[n]===!0,s=typeof i.axisColor=="string"&&/^#[0-9a-f]{6}$/i.test(i.axisColor)?i.axisColor:e.axisColor;return{parameterPanelOnRight:t("parameterPanelOnRight"),undoLimit:Math.round(Oa(i.undoLimit,1,200,e.undoLimit)),showEmitter:t("showEmitter"),showBones:t("showBones"),bonePointDrawSize:Oa(i.bonePointDrawSize,.1,10,e.bonePointDrawSize),boneAxisDrawSize:Oa(i.boneAxisDrawSize,.1,10,e.boneAxisDrawSize),showSkinMesh:t("showSkinMesh"),tickEnabled:t("tickEnabled"),axisFontSize:Math.round(Oa(i.axisFontSize,8,40,e.axisFontSize)),tickWidth:Oa(i.tickWidth,1,5,e.tickWidth),showAxisLabels:t("showAxisLabels"),axisColor:s}}function IR(i){let e;try{e=JSON.parse(i)}catch{throw new Error("系统设置缓存不是有效的 JSON")}const t=e;if(t.format!==C1)throw new Error("不是 Spine粒子编辑器系统设置缓存");if(t.version!==A1)throw new Error(`暂不支持系统配置版本:${t.version??"未知"}`);if(!t.settings||typeof t.settings!="object")throw new Error("系统设置缓存缺少 settings");return t}function RR(i,e){Object.assign(i.settings,ER(e,i.settings))}let vc=null;function PR(i){vc==null||vc();try{const e=localStorage.getItem(of);e&&RR(i,IR(e).settings)}catch{try{localStorage.removeItem(of)}catch{}}vc=cs(()=>AR(i.settings),e=>{const t={format:C1,version:A1,savedAt:new Date().toISOString(),settings:e};try{localStorage.setItem(of,JSON.stringify(t))}catch{}},{deep:!0})}function kR(i,e=0){if(i<=0)return 1;const t=Math.pow(10,Math.floor(Math.log10(i))),s=[1,2,5,10,20,50,100];let n=1;for(const r of s)if(r*t>=i){n=r*t;break}return Math.max(n,e)}function FR(i,e,t,s,n){if(!t)return;const r=t;r.clear();const o=i.settings;if(!o.tickEnabled){for(const b of n)b.visible=!1;return}const a=0,l=0,c=e.screen.width/i.editor.viewScale,h=e.screen.height/i.editor.viewScale,u=+("0x"+o.axisColor.replace("#",""));r.lineStyle(1.5,u,.35),r.moveTo(-c,l),r.lineTo(c,l),r.moveTo(a,-h),r.lineTo(a,h);const d=i.editor.viewScale,f=kR(50/d),p=c,m=h,g=Math.max(1,o.tickWidth);if(o.tickEnabled){for(let b=0;b<=c;b+=f){const _=Math.round(b/f)*f;_!==0&&(r.lineStyle(g,u,.25),r.moveTo(_,l-4),r.lineTo(_,l+4),r.moveTo(-_,l-4),r.lineTo(-_,l+4))}for(let b=0;b<=h;b+=f)Math.round(b/f)*f!==0&&(r.lineStyle(g,u,.25),r.moveTo(a-4,b),r.lineTo(a+4,b),r.moveTo(a-4,-b),r.lineTo(a+4,-b))}const v=e.screen.width/2+i.editor.viewX,y=e.screen.height*.5+i.editor.viewY,x=o.axisFontSize,M=+("0x"+o.axisColor.replace("#",""));for(;n.length<64;){const b=new bp("",{fontFamily:"monospace",fontSize:x,fill:M});b.anchor.set(.5,.5),s.addChild(b),n.push(b)}let C=0;const w=o.showAxisLabels&&o.tickEnabled;for(let b=0;b<=c;b+=f){const _=Math.round(b/f)*f;if(_===0||!w||_>p)continue;const E=n[C++];if(!E)break;E.style.fontSize=x,E.text=String(_),E.position.set(v+_*d,y+9),E.visible=!0;const F=n[C++];if(!F)break;F.style.fontSize=x,F.text=String(-_),F.position.set(v-_*d,y+9),F.visible=!0}for(let b=0;b<=h;b+=f){const _=Math.round(b/f)*f;if(_===0||!w||_>m)continue;const E=n[C++];if(!E)break;E.style.fontSize=x,E.text=String(_),E.position.set(v+8,y-b*d),E.visible=!0;const F=n[C++];if(!F)break;F.style.fontSize=x,F.text=String(-_),F.position.set(v+8,y+b*d),F.visible=!0}for(;Cy.id===i.activeId);if(!n||n.visible===!1)return;const r=n.config;if(!r.showShape)return;const o=e.get(n.id),a=(o==null?void 0:o.x)??r.centerX??0,l=-((o==null?void 0:o.y)??r.centerY??0),c=r.shape;if(c==="point"||c==="path")return;const h=r.rootScaleX??1,u=r.rootScaleY??1,d=-((o==null?void 0:o.rotation)??r.rootRotation??0)*Math.PI/180,f=Math.cos(d),p=Math.sin(d),m=r.offsetX??0,g=r.offsetY??0,v=(y,x)=>{const M=y+m,C=-x-g,w=M*h,b=C*u;return[a+w*f-b*p,l+(w*p+b*f)]};if(c==="circle"){const y=ph(r.innerRadius,r.outerRadius);s.lineStyle(2,3991658,.7);const x=48;for(const M of[y.outer,y.inner])if(!(M<=0))for(let C=0;C<=x;C++){const w=C/x*Math.PI*2,[b,_]=v(Math.cos(w)*M,Math.sin(w)*M);C===0?s.moveTo(b,_):s.lineTo(b,_)}}else if(c==="rect"){const y=b1(r);s.lineStyle(2,4885759,.7);for(const[x,M]of[[y.outerW,y.outerH],[y.innerW,y.innerH]]){if(x<=0||M<=0)continue;const C=x/2,w=M/2,b=v(-C,-w),_=v(C,-w),E=v(C,w),F=v(-C,w);s.moveTo(b[0],b[1]),s.lineTo(_[0],_[1]),s.lineTo(E[0],E[1]),s.lineTo(F[0],F[1]),s.lineTo(b[0],b[1])}}else if(c==="cone"){const y=ph(r.innerRadius,r.outerRadius),x=r.coneAngle/2*Math.PI/180,M=r.coneDirection*Math.PI/180,C=v(Math.cos(M-x)*y.inner,Math.sin(M-x)*y.inner),w=v(Math.cos(M+x)*y.inner,Math.sin(M+x)*y.inner),b=v(Math.cos(M-x)*y.outer,Math.sin(M-x)*y.outer),_=v(Math.cos(M+x)*y.outer,Math.sin(M+x)*y.outer);s.lineStyle(2,3991658,.7),s.moveTo(C[0],C[1]),s.lineTo(b[0],b[1]),s.moveTo(w[0],w[1]),s.lineTo(_[0],_[1]),s.lineStyle(1,3991658,.5);const E=24;for(const F of[y.outer,y.inner])if(!(F<=0))for(let I=0;I<=E;I++){const k=M-x+2*x*I/E,[B,D]=v(Math.cos(k)*F,Math.sin(k)*F);I===0?s.moveTo(B,D):s.lineTo(B,D)}}}function BR(i,e){if(!e)return;const t=e;t.clear();const s=i.systems.find(l=>l.id===i.activeId);if((s==null?void 0:s.visible)===!1)return;const n=s==null?void 0:s.config;if(!(n!=null&&n.forceField)||!n.showForceFieldShape||n.forceRadius<=0)return;const r=n.forceCenterX,o=-n.forceCenterY,a=n.forceStrength>=0?5818367:16739194;t.lineStyle(2,a,.85),t.beginFill(a,.08),t.drawCircle(r,o,n.forceRadius),t.endFill(),t.lineStyle(1,a,.7),t.moveTo(r-9,o),t.lineTo(r+9,o),t.moveTo(r,o-9),t.lineTo(r,o+9),t.beginFill(a,.95),t.drawCircle(r,o,4),t.endFill()}function NR(i,e){if(!e)return;const t=e;t.clear();const s=i.systems.find(u=>u.id===i.activeId);if((s==null?void 0:s.visible)===!1)return;const n=s==null?void 0:s.config;if(!(n!=null&&n.vortex)||!n.showVortexShape||n.vortexRadius<=0)return;const r=n.vortexCenterX,o=-n.vortexCenterY,a=n.vortexStrength>=0?12156159:16753228;t.lineStyle(2,a,.9),t.beginFill(a,.07),t.drawCircle(r,o,n.vortexRadius),t.endFill(),t.beginFill(a,.95),t.drawCircle(r,o,4),t.endFill();const l=r+Math.min(n.vortexRadius*.65,50),c=n.vortexStrength>=0?-1:1,h=o+c*14;t.lineStyle(2,a,.9),t.moveTo(l,o+c*-8),t.lineTo(l,h),t.moveTo(l,h),t.lineTo(l-4,h-c*5),t.moveTo(l,h),t.lineTo(l+4,h-c*5)}function DR(i,e){if(!e)return;const t=e;t.clear();const s=i.systems.find(c=>c.id===i.activeId);if((s==null?void 0:s.visible)===!1)return;const n=s==null?void 0:s.config;if(!(n!=null&&n.attraction)||!n.showAttractionShape)return;const r=n.attractionCenterX,o=-n.attractionCenterY,a=Math.max(0,n.attractionRadius),l=16731487;a>0&&(t.lineStyle(2,l,.95),t.beginFill(l,.09),t.drawCircle(r,o,a),t.endFill()),t.lineStyle(1,l,.85),t.moveTo(r-10,o),t.lineTo(r+10,o),t.moveTo(r,o-10),t.lineTo(r,o+10),t.beginFill(l,1),t.drawCircle(r,o,a>0?4:6),t.endFill()}function UR(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1));return{x:i.x+n*e*o-r*t*a,y:i.y+r*e*o+n*t*a}}function Io(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1)),l=e-i.x,c=t-i.y;return{x:(n*l+r*c)/o,y:(-r*l+n*c)/a}}function E1(i,e,t="linear"){if(!i.length)return e;const s=[...i].sort((n,r)=>n.x-r.x);if(e<=s[0].x)return s[0].y;for(let n=1;nc.id===a.emitterFollowSpineId);!l||l.visible===!1||n.set(`${a.emitterFollowSpineId}:${a.emitterFollowBoneName}`,{spineId:a.emitterFollowSpineId,boneName:a.emitterFollowBoneName})}for(const o of n.values()){const a=e==null?void 0:e.getBoneWorldTransform(o.spineId,o.boneName);if(!a)continue;const l=a.x,c=-a.y;s.lineStyle(2,12881151,.95),s.beginFill(12881151,.2),s.drawCircle(l,c,8),s.endFill(),s.beginFill(15919103,1),s.drawCircle(l,c,3.5),s.endFill()}}function XR(i,e,t){if(!t)return;const s=t;if(s.clear(),!i.value)return;const n=e();if(!n)return;const r=n.x,o=-n.y,a=n.scaleX,l=n.scaleY,c=-n.rotation*Math.PI/180,h=Math.cos(c),u=Math.sin(c),d=(m,g)=>{const v=m*a,y=-g*l;return[r+v*h-y*u,o+(v*u+y*h)]},f=(m,g,v,y)=>{const x=d(m,g),M=d(v,y);s.moveTo(x[0],x[1]),s.lineTo(M[0],M[1])},p=26;if(s.lineStyle(2,3526911,.9),s.beginFill(3526911,.25),s.drawCircle(r,o,6),s.endFill(),i.value==="translate")s.lineStyle(2,3526911,.9),f(-p,0,p,0),f(0,-p,0,p),f(p-6,-4,p,0),f(p,0,p-6,4),f(-20,-4,-p,0),f(-p,0,-20,4),f(-4,p-6,0,p),f(0,p,4,p-6),f(-4,-20,0,-p),f(0,-p,4,-20);else if(i.value==="rotate"){s.lineStyle(2,3526911,.8);const m=48;for(let y=0;y<=m;y++){const x=y/m*Math.PI*2,[M,C]=d(Math.cos(x)*p,Math.sin(x)*p);y===0?s.moveTo(M,C):s.lineTo(M,C)}const[g,v]=d(0,p);s.beginFill(3526911,.95),s.drawCircle(g,v,4),s.endFill()}else if(i.value==="scale"){s.lineStyle(2,3526911,.9);const g=[[-p,-p],[p,-p],[p,p],[-p,p]].map(([v,y])=>d(v,y));s.moveTo(g[0][0],g[0][1]),s.lineTo(g[1][0],g[1][1]),s.lineTo(g[2][0],g[2][1]),s.lineTo(g[3][0],g[3][1]),s.lineTo(g[0][0],g[0][1]),s.beginFill(3526911,.9);for(const v of g)s.drawRect(v[0]-3,v[1]-3,6,6);s.endFill()}}function VR(i,e=16777215){const t=Number.parseInt(i.replace("#",""),16);return Number.isFinite(t)?t:e}function YR(i,e,t){if(!t)return;const s=t;s.clear();for(const n of e){if(n.visible===!1)continue;const r=i.activeObjectType==="collision"&&i.activeObjectId===n.id,o=n.enabled?r?16735858:13911899:5792116,a=n.rotation*Math.PI/180,l=Math.cos(a),c=Math.sin(a),h=Math.max(1e-4,Math.abs(n.scaleX??1)),u=Math.max(1e-4,Math.abs(n.scaleY??1)),d=(m,g)=>({x:n.x+l*m*h-c*g*u,y:-(n.y+c*m*h+l*g*u)});let f=[];if(n.shape==="circle"||n.shape==="ellipse"){const m=n.shape==="circle"?n.radius:n.radiusX,g=n.shape==="circle"?n.radius:n.radiusY;f=Array.from({length:49},(v,y)=>{const x=y/48*Math.PI*2;return d(Math.cos(x)*m,Math.sin(x)*g)})}else if(n.shape==="rect"){const m=n.width*.5,g=n.height*.5;f=[d(-m,-g),d(m,-g),d(m,g),d(-m,g),d(-m,-g)]}else{const m=Math.max(3,Math.min(16,Math.round(n.sides)));f=Array.from({length:m+1},(g,v)=>{const y=Math.PI*.5+v%m/m*Math.PI*2;return d(Math.cos(y)*n.width*.5,Math.sin(y)*n.height*.5)})}if(!f.length)continue;s.lineStyle(r?2.5:1.5,o,n.enabled?.95:.45),s.beginFill(o,r?.12:.055),s.moveTo(f[0].x,f[0].y);for(let m=1;mo.id===i.activeObjectId):null,r=(n==null?void 0:n.config.shape)==="path"&&!n.config.showShape?n.config.spawnPathId:0;for(const o of i.paths){if(o.id===r||o.visible===!1||!o.enabled||!o.points.length)continue;const a=i.activeObjectType==="path"&&i.activeObjectId===o.id,l=VR(o.color,16749374),c=(f,p)=>{const m=UR(o,f,p);return{x:m.x,y:-m.y}},h=o.points[0],u=c(h.x,h.y);s.lineStyle(a?2.5:1.8,l,a?1:.75),s.moveTo(u.x,u.y);const d=o.closed?o.points.length:o.points.length-1;for(let f=0;f{const m=c(f.x,f.y),g=c(f.x+f.inX,f.y+f.inY),v=c(f.x+f.outX,f.y+f.outY),y=Math.hypot(f.inX,f.inY)>.01,x=Math.hypot(f.outX,f.outY)>.01;s.lineStyle(1,11121867,.65),y&&(s.moveTo(m.x,m.y),s.lineTo(g.x,g.y)),x&&(s.moveTo(m.x,m.y),s.lineTo(v.x,v.y)),y&&(s.beginFill(14015724,.95),s.drawCircle(g.x,g.y,3),s.endFill()),x&&(s.beginFill(14015724,.95),s.drawCircle(v.x,v.y,3),s.endFill()),s.beginFill(e.has(p)?16777215:l,1),s.lineStyle(1.5,e.has(p)?6126847:16777215,.95),s.drawCircle(m.x,m.y,e.has(p)?5:4),s.endFill()})}}function jR(i,e,t,s){var o;const n=Number.isFinite(e.worldX)&&Number.isFinite(e.worldY),r=Number.isFinite(e.worldRotation);i.push({boneName:e.boneName,x:n?e.worldX:e.x,y:n?-e.worldY:e.y,rotation:r?-e.worldRotation:-e.rotation,parentX:t,parentY:s}),(o=e.trailState)!=null&&o.bones.length&&e.trailState.bones.forEach(a=>{const l=Number.isFinite(a.worldX)&&Number.isFinite(a.worldY),c=Number.isFinite(a.worldRotation);i.push({boneName:a.boneName,x:l?a.worldX:a.x,y:l?-a.worldY:a.y,rotation:c?-a.worldRotation:a.rotation,parentX:t,parentY:s,trail:!0})})}function Uv(i,e,t,s,n,r,o,a){const l=r*.62,c=e+s*r,h=t+n*r,u=Math.max(2.5,r*.32),d=Math.max(1.7,r*.22),f=c-s*u,p=h-n*u,m=-n,g=s;i.lineStyle(o,a,.95),i.moveTo(e-s*l,t-n*l),i.lineTo(f,p),i.lineStyle(0),i.beginFill(a,.95),i.drawPolygon([c,h,f+m*d,p+g*d,f-m*d,p-g*d]),i.endFill()}function HR(i,e,t){if(!t)return;const s=t;if(s.clear(),!e.settings.showBones)return;const n=0,r=0,o=Math.max(.25,Math.abs(e.editor.viewScale)||1),a=Math.min(10,Math.max(.1,Number(e.settings.bonePointDrawSize)||1)),l=Math.min(10,Math.max(.1,Number(e.settings.boneAxisDrawSize)||2)),c=2.5*a/o,h=4.5*l/o,u=Math.max(.65,l*.625)/o;for(const d of i){const f=d.trail?16731533:16747610;s.lineStyle(1,f,d.trail?.65:.35),s.moveTo(d.parentX??n,d.parentY??r),s.lineTo(d.x,d.y);const p=d.rotation*Math.PI/180,m=Math.cos(p),g=Math.sin(p);Uv(s,d.x,d.y,m,g,h,u,15684432),Uv(s,d.x,d.y,g,-m,h,u,5622123),s.beginFill(f,.9),s.drawCircle(d.x,d.y,c),s.endFill()}}function Rs(i){return i.map(e=>({...e,trailState:e.trailState?{...e.trailState,bones:e.trailState.bones.map(t=>({...t}))}:void 0}))}function WR(i){const e=new Map;for(const s of i)for(const n of s)e.has(n.boneName)||e.set(n.boneName,Rs([n])[0]);const t=[...e.keys()].sort((s,n)=>{const r=Number(s.replace(/^p_/,"")),o=Number(n.replace(/^p_/,""));return Number.isFinite(r)&&Number.isFinite(o)?r-o:s.localeCompare(n)});for(let s=0;s[r.boneName,r]));i[s]=t.map(r=>{const o=n.get(r);return o||{...Rs([e.get(r)])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}})}}function zR(i){i.length<2||(i[i.length-1]=Rs(i[0]))}function qR(i,e){const t=Math.max(0,i.length-1),s=[];for(let n=0;n<=e;n++){const r=Math.min(t,Math.round(n/e*t));s.push(Rs(i[r]||[]))}return s}function af(i){return`${i.boneName}:${i.spawnId??"legacy"}`}function $v(i){return{...Rs([i])[0],alpha:0,imageVisible:!1,trailState:void 0,active:!0}}function KR(i,e,t,s){const n=Math.min(i.length,s+1),r=i.slice(Math.max(0,i.length-n)),o=new Map;for(const c of e){if(c.imageVisible===!1||c.alpha<=0)continue;const h=af(c),u=new Map;let d=!1;for(let f=r.length-1;f>=0;f--){const p=r[f].find(m=>af(m)===h);if(p)d=!0,u.set(f,p);else if(d)break}o.set(h,u)}const a=Math.max(0,r.length-1),l=[];for(let c=0;c<=t;c++){const h=Math.min(a,Math.round(c/t*a));l.push(e.map(u=>{var f;if(u.imageVisible===!1||u.alpha<=0)return Rs([u])[0];const d=(f=o.get(af(u)))==null?void 0:f.get(h);return d?Rs([d])[0]:$v(u)}))}return l[0]=l[0].map($v),l[l.length-1]=Rs(e),l}function Xv(i,e){const t=i.length?1:0;for(let s=t;s{const x=y?[[]]:[];e.reset();for(let M=0;M0&&e.restartEmissionCycle();for(let C=0;C0;M++)e.update(r,"off"),y.push(e.capture());(v=y[y.length-1])!=null&&v.length&&y.push([]),Xv(u,qR(y,a.end))}const g=Rs(u[u.length-1]||[]);for(u.length>s&&(u.length=s);u.length{var a;return String(((a=o==null?void 0:o.data)==null?void 0:a.name)||"")}):null}catch{return null}}getSlotLocalMatrix(e,t){var o,a,l;const s=(o=this.entries.get(e))==null?void 0:o.spine,n=(l=(a=s==null?void 0:s.skeleton)==null?void 0:a.findSlot)==null?void 0:l.call(a,t),r=n==null?void 0:n.bone;return r!=null&&r.active?new Ot(r.a,r.c,-r.b,-r.d,r.worldX,r.worldY):null}getSlotParentMatrix(e,t,s){const n=this.getSlotLocalMatrix(e,t);if(!n)return null;const r=-s.rotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r);return new Ot(o*s.scaleX,a*s.scaleX,-a*s.scaleY,o*s.scaleY,s.x,-s.y).append(n)}attachSlotObject(e,t,s,n){var o;const r=(o=this.entries.get(e))==null?void 0:o.spine;if(!(r!=null&&r.addSlotObject))return!1;try{return r.addSlotObject(t,s,{followAttachmentTimeline:n}),!0}catch{return!1}}detachSlotObject(e,t,s){var r,o;const n=(r=this.entries.get(e))==null?void 0:r.spine;try{(o=n==null?void 0:n.removeSlotObject)==null||o.call(n,t,s)}catch{}}destroyEntry(e){var t,s;try{(s=(t=e.spine)==null?void 0:t.removeSlotObjects)==null||s.call(t)}catch{}this.container.removeChild(e.root),e.root.destroy({children:!0})}sync(e,t,s){var n;for(const[r,o]of this.entries)e.some(a=>a.id===r)||(this.destroyEntry(o),this.entries.delete(r));for(const r of e){const o=bR(r.id);let a=this.entries.get(r.id);if(a&&a.assetVersion!==r.assetVersion&&!o&&(this.destroyEntry(a),this.entries.delete(r.id),a=void 0),(!a||a.assetVersion!==r.assetVersion)&&o){a&&this.destroyEntry(a);const d=new gs,f=new o.SpineClass({skeletonData:o.skeletonData,autoUpdate:!1,darkTint:!1});o.skeletonData.defaultSkin&&f.skeleton.setSkin(o.skeletonData.defaultSkin),o.runtimeVersion==="4.3"?f.skeleton.setupPoseSlots():f.skeleton.setSlotsToSetupPose(),d.addChild(f),this.container.addChild(d),a={root:d,spine:f,runtimeVersion:o.runtimeVersion,assetVersion:r.assetVersion,animation:""},this.entries.set(r.id,a)}if(!a)continue;const l=a.root,c=a.spine,h=r.visible!==!1&&r.enabled;l.visible=h,l.renderable=h,l.position.set(r.x,-r.y),l.rotation=-r.rotation*Math.PI/180,l.scale.set(r.scaleX,r.scaleY),a.animation!==r.selectedAnimation&&(a.animation=r.selectedAnimation,a.runtimeVersion==="4.3"?c.skeleton.setupPose():c.skeleton.setToSetupPose(),c.state.clearTracks(),a.animation&&c.state.setAnimation(0,a.animation,!1));const u=a.runtimeVersion==="4.3"?c.state.getTrack(0):c.state.getCurrent(0);if(u){const d=((n=r.animations.find(p=>p.name===r.selectedAnimation))==null?void 0:n.duration)||0,f=Math.max(0,t/Math.max(1,s)-r.timeOffset);u.trackTime=d>0?Math.min(f,d):f}c.update(0)}}getBoneWorldTransform(e,t){const s=this.entries.get(e),n=s==null?void 0:s.spine.skeleton.findBone(t);if(!s||!n||!n.active)return null;const r=s.runtimeVersion==="4.3"?n.appliedPose:n,o=s.root,a=Math.cos(o.rotation),l=Math.sin(o.rotation),c=a*o.scale.x,h=-l*o.scale.y,u=l*o.scale.x,d=a*o.scale.y,f=c*r.a+h*r.c,p=c*r.b+h*r.d,m=u*r.a+d*r.c,g=u*r.b+d*r.d,v=o.position.x+c*r.worldX+h*r.worldY,y=o.position.y+u*r.worldX+d*r.worldY;return{x:v,y:-y,rotation:-Math.atan2(m,f)*180/Math.PI,scaleX:Math.max(1e-4,Math.hypot(f,m)),scaleY:Math.max(1e-4,Math.hypot(p,g))}}destroy(){for(const e of this.entries.values())this.destroyEntry(e);this.entries.clear(),this.container.removeFromParent(),this.container.destroy({children:!0})}}let I1=class{constructor(){S(this,"entries",{});S(this,"size",0)}add(e){let t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){let t=this.size;for(var s=0,n=e.length;s1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>("0"+(t*255).toString(16)).slice(-2);return+("0x"+e(this.r)+e(this.g)+e(this.b))}static fromString(e,t=new Is){return t.setFromString(e)}},S(Is,"WHITE",new Is(1,1,1,1)),S(Is,"RED",new Is(1,0,0,1)),S(Is,"GREEN",new Is(0,1,0,1)),S(Is,"BLUE",new Is(0,0,1,1)),S(Is,"MAGENTA",new Is(1,0,1,1)),Is);var es;let Ie=(es=class{static clamp(e,t,s){return es?s:e}static cosDeg(e){return Math.cos(e*es.degRad)}static sinDeg(e){return Math.sin(e*es.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*es.degRad}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){let t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return es.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,s){let n=Math.random(),r=t-e;return n<=(s-e)/r?e+Math.sqrt(n*r*(s-e)):t-Math.sqrt((1-n)*r*(t-s))}static isPowerOfTwo(e){return e&&(e&e-1)===0}},S(es,"PI",3.1415927),S(es,"PI2",es.PI*2),S(es,"invPI2",1/es.PI2),S(es,"radiansToDegrees",180/es.PI),S(es,"radDeg",es.radiansToDegrees),S(es,"degreesToRadians",es.PI/180),S(es,"degRad",es.degreesToRadians),es);var _i;let Pe=(_i=class{static arrayCopy(e,t,s,n,r){for(let o=t,a=n;o=t?e:_i.setArraySize(e,t,s)}static newArray(e,t){let s=new Array(e);for(let n=0;n0?this.items.pop():this.instantiator()}free(e){e.reset&&e.reset(),this.items.push(e)}freeAll(e){for(let t=0;t>1)*a;let l=t.bone.skeleton,c=t.deform,h=this.vertices,u=this.bones;if(!u){c.length>0&&(h=c);let m=t.bone,g=m.worldX,v=m.worldY,y=m.a,x=m.b,M=m.c,C=m.d;for(let w=s,b=o;b=this.regions.length&&(s=this.regions.length-1);let n=this.regions[s];t.region!=n&&(t.region=n,t.updateRegion())}getPath(e,t){let s=e,n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)s+="0";return s+=n,s}static nextID(){return On._nextID++}},S(On,"_nextID",0),On);var Ts;(function(i){i[i.hold=0]="hold",i[i.once=1]="once",i[i.loop=2]="loop",i[i.pingpong=3]="pingpong",i[i.onceReverse=4]="onceReverse",i[i.loopReverse=5]="loopReverse",i[i.pingpongReverse=6]="pingpongReverse"})(Ts||(Ts={}));const k1=[Ts.hold,Ts.once,Ts.loop,Ts.pingpong,Ts.onceReverse,Ts.loopReverse,Ts.pingpongReverse];let Mp=class{constructor(e,t,s){S(this,"name");S(this,"timelines",[]);S(this,"timelineIds",new I1);S(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.setTimelines(t),this.duration=s}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e,this.timelineIds.clear();for(var t=0;t0&&(t%=this.duration));let c=this.timelines;for(let h=0,u=c.length;ht)return n-1;return s-1}static search(e,t,s){let n=e.length;for(let r=s;rt)return r-s;return n-s}},dn=class extends Xt{constructor(t,s,n){super(t,n);S(this,"curves");this.curves=Pe.newFloatArray(t+s*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){let s=this.getFrameCount()+t*18;if(this.curves.length>s){let n=Pe.newFloatArray(s);Pe.arrayCopy(this.curves,0,n,0,s),this.curves=n}}setBezier(t,s,n,r,o,a,l,c,h,u,d){let f=this.curves,p=this.getFrameCount()+t*18;n==0&&(f[s]=2+p);let m=(r-a*2+c)*.03,g=(o-l*2+h)*.03,v=((a-c)*3-r+u)*.006,y=((l-h)*3-o+d)*.006,x=m*2+v,M=g*2+y,C=(a-r)*.3+m+v*.16666667,w=(l-o)*.3+g+y*.16666667,b=r+C,_=o+w;for(let E=p+18;pt){let h=this.frames[s],u=this.frames[s+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}let a=r+18;for(r+=2;r=t){let h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}s+=this.getFrameEntries();let l=o[a-2],c=o[a-1];return c+(t-l)/(this.frames[s]-l)*(this.frames[s+n]-c)}},Li=class extends dn{constructor(e,t,s){super(e,t,[s])}getFrameEntries(){return 2}setFrame(e,t,s){e<<=1,this.frames[e]=t,this.frames[e+1]=s}getCurveValue(e){let t=this.frames,s=t.length-2;for(let r=2;r<=s;r+=2)if(t[r]>e){s=r-2;break}let n=this.curves[s>>1];switch(n){case 0:let r=t[s],o=t[s+1];return o+(e-r)/(t[s+2]-r)*(t[s+2+1]-o);case 1:return t[s+1]}return this.getBezierValue(e,s,1,n-2)}getRelativeValue(e,t,s,n,r){if(e>2];switch(g){case 0:let v=h[m];d=h[m+1],f=h[m+2],p=h[m+3];let y=(n-v)/(h[m+4]-v);d+=(h[m+4+1]-d)*y,f+=(h[m+4+2]-f)*y,p+=(h[m+4+3]-p)*y;break;case 1:d=h[m+1],f=h[m+2],p=h[m+3];break;default:d=this.getBezierValue(n,m,1,g-2),f=this.getBezierValue(n,m,2,g+18-2),p=this.getBezierValue(n,m,3,g+36-2)}if(o==1)u.r=d,u.g=f,u.b=p;else{if(a==ve.setup){let v=c.data.color;u.r=v.r,u.g=v.g,u.b=v.b}u.r+=(d-u.r)*o,u.g+=(f-u.g)*o,u.b+=(p-u.b)*o}}},j1=class extends Li{constructor(t,s,n){super(t,s,at.alpha+"|"+n);S(this,"slotIndex",0);this.slotIndex=n}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=c.color;if(n>3];switch(C){case 0:let w=h[M];f=h[M+1],p=h[M+2],m=h[M+3],g=h[M+4],v=h[M+5],y=h[M+6],x=h[M+7];let b=(n-w)/(h[M+8]-w);f+=(h[M+8+1]-f)*b,p+=(h[M+8+2]-p)*b,m+=(h[M+8+3]-m)*b,g+=(h[M+8+4]-g)*b,v+=(h[M+8+5]-v)*b,y+=(h[M+8+6]-y)*b,x+=(h[M+8+7]-x)*b;break;case 1:f=h[M+1],p=h[M+2],m=h[M+3],g=h[M+4],v=h[M+5],y=h[M+6],x=h[M+7];break;default:f=this.getBezierValue(n,M,1,C-2),p=this.getBezierValue(n,M,2,C+18-2),m=this.getBezierValue(n,M,3,C+36-2),g=this.getBezierValue(n,M,4,C+54-2),v=this.getBezierValue(n,M,5,C+72-2),y=this.getBezierValue(n,M,6,C+90-2),x=this.getBezierValue(n,M,7,C+108-2)}if(o==1)u.set(f,p,m,g),d.r=v,d.g=y,d.b=x;else{if(a==ve.setup){u.setFromColor(c.data.color);let w=c.data.darkColor;d.r=w.r,d.g=w.g,d.b=w.b}u.add((f-u.r)*o,(p-u.g)*o,(m-u.b)*o,(g-u.a)*o),d.r+=(v-d.r)*o,d.g+=(y-d.g)*o,d.b+=(x-d.b)*o}}},W1=class extends dn{constructor(t,s,n){super(t,s,[at.rgb+"|"+n,at.rgb2+"|"+n]);S(this,"slotIndex",0);this.slotIndex=n}getFrameEntries(){return 7}setFrame(t,s,n,r,o,a,l,c){t*=7,this.frames[t]=s,this.frames[t+1]=n,this.frames[t+2]=r,this.frames[t+3]=o,this.frames[t+4]=a,this.frames[t+5]=l,this.frames[t+6]=c}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=this.frames,u=c.color,d=c.darkColor;if(nt){let c=this.frames[s];return n[r+1]*(t-c)/(n[r]-c)}let o=r+18;for(r+=2;r=t){let c=n[r-2],h=n[r-1];return h+(t-c)/(n[r]-c)*(n[r+1]-h)}let a=n[o-2],l=n[o-1];return l+(1-l)*(t-a)/(this.frames[s+this.getFrameEntries()]-a)}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=c.getAttachment();if(!h||!(h instanceof jn)||h.timelineAttachment!=this.attachment)return;let u=c.deform;u.length==0&&(a=ve.setup);let d=this.vertices,f=d[0].length,p=this.frames;if(n=p[p.length-1]){let M=d[p.length-1];if(o==1)if(a==ve.add){let C=h;if(C.bones)for(let w=0;wn)this.apply(t,s,Number.MAX_VALUE,r,o,a,l),s=-1;else if(s>=c[h-1])return;if(n0&&c[u-1]==d;)u--}for(;u=c[u];u++)r.push(this.events[u])}},S(Qr,"propertyIds",[""+at.event]),Qr);var eo;let Qa=(eo=class extends Xt{constructor(t){super(t,eo.propertyIds);S(this,"drawOrders");this.drawOrders=new Array(t)}getFrameCount(){return this.frames.length}setFrame(t,s,n){this.frames[t]=s,this.drawOrders[t]=n}apply(t,s,n,r,o,a,l){if(l==Fs.mixOut){a==ve.setup&&Pe.arrayCopy(t.slots,0,t.drawOrder,0,t.slots.length);return}if(n>2];switch(m){case 0:let g=h[p];u=h[p+1],d=h[p+2],f=h[p+3];let v=(n-g)/(h[p+4]-g);u+=(h[p+4+1]-u)*v,d+=(h[p+4+2]-d)*v,f+=(h[p+4+3]-f)*v;break;case 1:u=h[p+1],d=h[p+2],f=h[p+3];break;default:u=this.getBezierValue(n,p,1,m-2),d=this.getBezierValue(n,p,2,m+18-2),f=this.getBezierValue(n,p,3,m+36-2)}if(a==ve.setup){let g=c.data;c.mixRotate=g.mixRotate+(u-g.mixRotate)*o,c.mixX=g.mixX+(d-g.mixX)*o,c.mixY=g.mixY+(f-g.mixY)*o}else c.mixRotate+=(u-c.mixRotate)*o,c.mixX+=(d-c.mixX)*o,c.mixY+=(f-c.mixY)*o}},xo=class extends Li{constructor(t,s,n,r){super(t,s,r+"|"+n);S(this,"constraintIndex",0);this.constraintIndex=n}apply(t,s,n,r,o,a,l){let c;if(this.constraintIndex==-1){const h=n>=this.frames[0]?this.getCurveValue(n):0;for(const u of t.physicsConstraints)u.active&&this.global(u.data)&&this.set(u,this.getAbsoluteValue2(n,o,a,this.get(u),this.setup(u),h))}else c=t.physicsConstraints[this.constraintIndex],c.active&&this.set(c,this.getAbsoluteValue(n,o,a,this.get(c),this.setup(c)))}},ew=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintInertia)}setup(e){return e.data.inertia}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}},tw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintStrength)}setup(e){return e.data.strength}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}},sw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintDamping)}setup(e){return e.data.damping}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}},iw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintMass)}setup(e){return 1/e.data.massInverse}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}},nw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintWind)}setup(e){return e.data.wind}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}},rw=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintGravity)}setup(e){return e.data.gravity}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}},ow=class extends xo{constructor(e,t,s){super(e,t,s,at.physicsConstraintMix)}setup(e){return e.data.mix}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}};var to;let aw=(to=class extends Xt{constructor(t,s){super(t,to.propertyIds);S(this,"constraintIndex");this.constraintIndex=s}getFrameCount(){return this.frames.length}setFrame(t,s){this.frames[t]=s}apply(t,s,n,r,o,a,l){let c;if(this.constraintIndex!=-1&&(c=t.physicsConstraints[this.constraintIndex],!c.active))return;const h=this.frames;if(s>n)this.apply(t,s,Number.MAX_VALUE,[],o,a,l),s=-1;else if(s>=h[h.length-1])return;if(!(n=h[Xt.search1(h,s)+1]))if(c!=null)c.reset();else for(const u of t.physicsConstraints)u.active&&u.reset()}},S(to,"propertyIds",[at.physicsConstraintReset.toString()]),to);var Us;let lw=(Us=class extends Xt{constructor(t,s,n){super(t,[at.sequence+"|"+s+"|"+n.sequence.id]);S(this,"slotIndex");S(this,"attachment");this.slotIndex=s,this.attachment=n}getFrameEntries(){return Us.ENTRIES}getSlotIndex(){return this.slotIndex}getAttachment(){return this.attachment}setFrame(t,s,n,r,o){let a=this.frames;t*=Us.ENTRIES,a[t]=s,a[t+Us.MODE]=n|r<<4,a[t+Us.DELAY]=o}apply(t,s,n,r,o,a,l){let c=t.slots[this.slotIndex];if(!c.bone.active)return;let h=c.attachment,u=this.attachment;if(h!=u&&(!(h instanceof jn)||h.timelineAttachment!=u))return;if(l==Fs.mixOut){a==ve.setup&&(c.sequenceIndex=-1);return}let d=this.frames;if(n>4,y=this.attachment.sequence.regions.length,x=k1[m&15];if(x!=Ts.hold)switch(v+=(n-p)/g+1e-5|0,x){case Ts.once:v=Math.min(y-1,v);break;case Ts.loop:v%=y;break;case Ts.pingpong:{let M=(y<<1)-2;v=M==0?0:v%M,v>=y&&(v=M-v);break}case Ts.onceReverse:v=Math.max(y-1-v,0);break;case Ts.loopReverse:v=y-1-v%y;break;case Ts.pingpongReverse:{let M=(y<<1)-2;v=M==0?0:(v+y-1)%M,v>=y&&(v=M-v)}}c.sequenceIndex=v}},S(Us,"ENTRIES",3),S(Us,"MODE",1),S(Us,"DELAY",2),Us);var Ln;let JR=(Ln=class{constructor(e){S(this,"data");S(this,"tracks",new Array);S(this,"timeScale",1);S(this,"unkeyedState",0);S(this,"events",new Array);S(this,"listeners",new Array);S(this,"queue",new eP(this));S(this,"propertyIDs",new I1);S(this,"animationsChanged",!1);S(this,"trackEntryPool",new vh(()=>new QR));this.data=e}static emptyAnimation(){return Ln._emptyAnimation}update(e){e*=this.timeScale;let t=this.tracks;for(let s=0,n=t.length;s0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){let l=r.trackLast-a.delay;if(l>=0){for(a.delay=0,a.trackTime+=r.timeScale==0?0:(l/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setCurrent(s,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[s]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let l=r.mixingFrom;for(r.mixingFrom=null,l&&(l.mixingTo=null);l;)this.queue.end(l),l=l.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){let s=e.mixingFrom;if(!s)return!0;let n=this.updateMixingFrom(s,t);return s.animationLast=s.nextAnimationLast,s.trackLast=s.nextTrackLast,e.nextTrackLast!=-1&&e.mixTime>=e.mixDuration?((s.totalAlpha==0||e.mixDuration==0)&&(e.mixingFrom=s.mixingFrom,s.mixingFrom!=null&&(s.mixingFrom.mixingTo=e),e.interruptAlpha=s.interruptAlpha,this.queue.end(s)),n):(s.trackTime+=t*s.timeScale,e.mixTime+=t,!1)}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();let t=this.events,s=this.tracks,n=!1;for(let d=0,f=s.length;d0)continue;n=!0;let m=d==0?ve.first:p.mixBlend,g=p.alpha;p.mixingFrom?g*=this.applyMixingFrom(p,e,m):p.trackTime>=p.trackEnd&&!p.next&&(g=0);let v=g>=p.alphaAttachmentThreshold,y=p.animationLast,x=p.getAnimationTime(),M=x,C=t;p.reverse&&(M=p.animation.duration-M,C=null);let w=p.animation.timelines,b=w.length;if(d==0&&g==1||m==ve.add){d==0&&(v=!0);for(let _=0;_1&&(r=1),s!=ve.first&&(s=n.mixBlend));let o=r=n.alphaAttachmentThreshold):(a&&C instanceof Qa&&b==ve.setup&&(w=Fs.mixIn),C.apply(t,d,p,m,_,b,w))}}return e.mixDuration>0&&this.queueEvents(n,f),this.events.length=0,n.nextAnimationLast=f,n.nextTrackLast=n.trackTime,r}applyAttachmentTimeline(e,t,s,n,r){var o=t.slots[e.slotIndex];o.bone.active&&(s=0,x=m>=0;Math.abs(g)<=90&&Ie.signum(g)!=Ie.signum(p)&&(Math.abs(m-v)>180?(f+=360*Ie.signum(m),x=y):v!=0?f-=360*Ie.signum(m):x=y),x!=y&&(f+=360*Ie.signum(m)),o[a]=f}o[a+1]=p,c.rotation=u+f*n}queueEvents(e,t){let s=e.animationStart,n=e.animationEnd,r=n-s,o=e.trackLast%r,a=this.events,l=0,c=a.length;for(;ln||this.queue.event(e,u)}let h=!1;if(e.loop)if(r==0)h=!0;else{const u=Math.floor(e.trackTime/r);h=u>0&&u>Math.floor(e.trackLast/r)}else h=t>=n&&e.animationLast=this.tracks.length)return;let t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let s=t;for(;;){let n=s.mixingFrom;if(!n)break;this.queue.end(n),s.mixingFrom=null,s.mixingTo=null,s=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setCurrent(e,t,s){let n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(s&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.mixingFrom&&n.mixDuration>0&&(t.interruptAlpha*=Math.min(1,n.mixTime/n.mixDuration)),n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,s=!1){let n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error("Animation not found: "+t);return this.setAnimationWith(e,n,s)}setAnimationWith(e,t,s=!1){if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast==-1?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));let o=this.trackEntry(e,t,s,r);return this.setCurrent(e,o,n),this.queue.drain(),o}addAnimation(e,t,s=!1,n=0){let r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error("Animation not found: "+t);return this.addAnimationWith(e,r,s,n)}addAnimationWith(e,t,s=!1,n=0){if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;let o=this.trackEntry(e,t,s,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setCurrent(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){let s=this.setAnimationWith(e,Ln.emptyAnimation(),!1);return s.mixDuration=t,s.trackEnd=t,s}addEmptyAnimation(e,t=0,s=0){let n=this.addAnimationWith(e,Ln.emptyAnimation(),!1,s);return s<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){let t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let s=0,n=this.tracks.length;s0){r[l]=tP,o[l]=u;continue e}break}r[l]=cf}}}getCurrent(e){return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}},S(Ln,"_emptyAnimation",new Mp("",[],0)),Ln),QR=class{constructor(){S(this,"animation",null);S(this,"previous",null);S(this,"next",null);S(this,"mixingFrom",null);S(this,"mixingTo",null);S(this,"listener",null);S(this,"trackIndex",0);S(this,"loop",!1);S(this,"holdPrevious",!1);S(this,"reverse",!1);S(this,"shortestRotation",!1);S(this,"eventThreshold",0);S(this,"mixAttachmentThreshold",0);S(this,"alphaAttachmentThreshold",0);S(this,"mixDrawOrderThreshold",0);S(this,"animationStart",0);S(this,"animationEnd",0);S(this,"animationLast",0);S(this,"nextAnimationLast",0);S(this,"delay",0);S(this,"trackTime",0);S(this,"trackLast",0);S(this,"nextTrackLast",0);S(this,"trackEnd",0);S(this,"timeScale",0);S(this,"alpha",0);S(this,"mixTime",0);S(this,"_mixDuration",0);S(this,"interruptAlpha",0);S(this,"totalAlpha",0);S(this,"mixBlend",ve.replace);S(this,"timelineMode",new Array);S(this,"timelineHoldMix",new Array);S(this,"timelinesRotation",new Array)}get mixDuration(){return this._mixDuration}set mixDuration(e){this._mixDuration=e}setMixDurationWithDelay(e,t){this._mixDuration=e,t<=0&&(this.previous!=null?t=Math.max(t+this.previous.getTrackComplete()-e,0):t=0),this.delay=t}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(this.loop){let e=this.animationEnd-this.animationStart;return e==0?this.animationStart:this.trackTime%e+this.animationStart}return Math.min(this.trackTime+this.animationStart,this.animationEnd)}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){let e=this.animationEnd-this.animationStart;if(e!=0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}},eP=class{constructor(e){S(this,"objects",[]);S(this,"drainDisabled",!1);S(this,"animState");this.animState=e}start(e){this.objects.push(js.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(js.interrupt),this.objects.push(e)}end(e){this.objects.push(js.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(js.dispose),this.objects.push(e)}complete(e){this.objects.push(js.complete),this.objects.push(e)}event(e,t){this.objects.push(js.event),this.objects.push(e),this.objects.push(t)}drain(){if(this.drainDisabled)return;this.drainDisabled=!0;let e=this.objects;for(let t=0;t{h.width=parseInt(s[1]),h.height=parseInt(s[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Pe.enumValue(ys,s[1]),h.magFilter=Pe.enumValue(ys,s[2])},n.repeat=h=>{s[1].indexOf("x")!=-1&&(h.uWrap=Un.Repeat),s[1].indexOf("y")!=-1&&(h.vWrap=Un.Repeat)},n.pma=h=>{h.pma=s[1]=="true"};var r={};r.xy=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2])},r.size=h=>{h.width=parseInt(s[1]),h.height=parseInt(s[2])},r.bounds=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2]),h.width=parseInt(s[3]),h.height=parseInt(s[4])},r.offset=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2])},r.orig=h=>{h.originalWidth=parseInt(s[1]),h.originalHeight=parseInt(s[2])},r.offsets=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2]),h.originalWidth=parseInt(s[3]),h.originalHeight=parseInt(s[4])},r.rotate=h=>{let u=s[1];u=="true"?h.degrees=90:u!="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(s[1])};let o=t.readLine();for(;o&&o.trim().length==0;)o=t.readLine();for(;!(!o||o.trim().length==0||t.readEntry(s,o)==0);)o=t.readLine();let a=null,l=null,c=null;for(;o!==null;)if(o.trim().length==0)a=null,o=t.readLine();else if(a){let h=new fw(a,o);for(;;){let u=t.readEntry(s,o=t.readLine());if(u==0)break;let d=r[s[0]];if(d)d(h);else{l||(l=[]),c||(c=[]),l.push(s[0]);let f=[];for(let p=0;p0&&c&&c.length>0&&(h.names=l,h.values=c,l=null,c=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees==90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new aP(o.trim());t.readEntry(s,o=t.readLine())!=0;){let h=n[s[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length==0))return 0;let s=t.indexOf(":");if(s==-1)return 0;e[0]=t.substr(0,s).trim();for(let n=1,r=s+1;;n++){let o=t.indexOf(",",r);if(o==-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n==4)return 4}}},aP=class{constructor(e){S(this,"name");S(this,"minFilter",ys.Nearest);S(this,"magFilter",ys.Nearest);S(this,"uWrap",Un.ClampToEdge);S(this,"vWrap",Un.ClampToEdge);S(this,"texture",null);S(this,"width",0);S(this,"height",0);S(this,"pma",!1);S(this,"regions",new Array);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(let t of this.regions)t.texture=e}},fw=class extends rP{constructor(t,s){super();S(this,"page");S(this,"name");S(this,"x",0);S(this,"y",0);S(this,"offsetX",0);S(this,"offsetY",0);S(this,"originalWidth",0);S(this,"originalHeight",0);S(this,"index",0);S(this,"degrees",0);S(this,"names",null);S(this,"values",null);this.page=t,this.name=s,t.regions.push(this)}},kl=class vm extends jn{constructor(t,s){super(t);S(this,"region",null);S(this,"path");S(this,"regionUVs",[]);S(this,"uvs",[]);S(this,"triangles",[]);S(this,"color",new rt(1,1,1,1));S(this,"width",0);S(this,"height",0);S(this,"hullLength",0);S(this,"edges",[]);S(this,"parentMesh",null);S(this,"sequence",null);S(this,"tempColor",new rt(0,0,0,0));this.path=s}updateRegion(){if(!this.region)throw new Error("Region not set.");let t=this.regionUVs;(!this.uvs||this.uvs.length!=t.length)&&(this.uvs=Pe.newFloatArray(t.length));let s=this.uvs,n=this.uvs.length,r=this.region.u,o=this.region.v,a=0,l=0;if(this.region instanceof fw){let c=this.region,h=c.page,u=h.width,d=h.height;switch(c.degrees){case 90:r-=(c.originalHeight-c.offsetY-c.height)/u,o-=(c.originalWidth-c.offsetX-c.width)/d,a=c.originalHeight/u,l=c.originalWidth/d;for(let f=0;f= 0.");if(!t)throw new Error("name cannot be null.");this.index=e,this.name=t,this.parent=s}};var qt;(function(i){i[i.Normal=0]="Normal",i[i.OnlyTranslation=1]="OnlyTranslation",i[i.NoRotationOrReflection=2]="NoRotationOrReflection",i[i.NoScale=3]="NoScale",i[i.NoScaleOrReflection=4]="NoScaleOrReflection"})(qt||(qt={}));let Hv=class{constructor(e,t,s){S(this,"data");S(this,"skeleton");S(this,"parent",null);S(this,"children",new Array);S(this,"x",0);S(this,"y",0);S(this,"rotation",0);S(this,"scaleX",0);S(this,"scaleY",0);S(this,"shearX",0);S(this,"shearY",0);S(this,"ax",0);S(this,"ay",0);S(this,"arotation",0);S(this,"ascaleX",0);S(this,"ascaleY",0);S(this,"ashearX",0);S(this,"ashearY",0);S(this,"a",0);S(this,"b",0);S(this,"c",0);S(this,"d",0);S(this,"worldY",0);S(this,"worldX",0);S(this,"inherit",qt.Normal);S(this,"sorted",!1);S(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.skeleton=t,this.parent=s,this.setToSetupPose()}isActive(){return this.active}update(e){this.updateWorldTransformWith(this.ax,this.ay,this.arotation,this.ascaleX,this.ascaleY,this.ashearX,this.ashearY)}updateWorldTransform(){this.updateWorldTransformWith(this.x,this.y,this.rotation,this.scaleX,this.scaleY,this.shearX,this.shearY)}updateWorldTransformWith(e,t,s,n,r,o,a){this.ax=e,this.ay=t,this.arotation=s,this.ascaleX=n,this.ascaleY=r,this.ashearX=o,this.ashearY=a;let l=this.parent;if(!l){let f=this.skeleton;const p=f.scaleX,m=f.scaleY,g=(s+o)*Ie.degRad,v=(s+90+a)*Ie.degRad;this.a=Math.cos(g)*n*p,this.b=Math.cos(v)*r*p,this.c=Math.sin(g)*n*m,this.d=Math.sin(v)*r*m,this.worldX=e*p+f.x,this.worldY=t*m+f.y;return}let c=l.a,h=l.b,u=l.c,d=l.d;switch(this.worldX=c*e+h*t+l.worldX,this.worldY=u*e+d*t+l.worldY,this.inherit){case qt.Normal:{const f=(s+o)*Ie.degRad,p=(s+90+a)*Ie.degRad,m=Math.cos(f)*n,g=Math.cos(p)*r,v=Math.sin(f)*n,y=Math.sin(p)*r;this.a=c*m+h*v,this.b=c*g+h*y,this.c=u*m+d*v,this.d=u*g+d*y;return}case qt.OnlyTranslation:{const f=(s+o)*Ie.degRad,p=(s+90+a)*Ie.degRad;this.a=Math.cos(f)*n,this.b=Math.cos(p)*r,this.c=Math.sin(f)*n,this.d=Math.sin(p)*r;break}case qt.NoRotationOrReflection:{let f=1/this.skeleton.scaleX,p=1/this.skeleton.scaleY;c*=f,u*=p;let m=c*c+u*u,g=0;m>1e-4?(m=Math.abs(c*d*p-h*f*u)/m,h=u*m,d=c*m,g=Math.atan2(u,c)*Ie.radDeg):(c=0,u=0,g=90-Math.atan2(d,h)*Ie.radDeg);const v=(s+o-g)*Ie.degRad,y=(s+a-g+90)*Ie.degRad,x=Math.cos(v)*n,M=Math.cos(y)*r,C=Math.sin(v)*n,w=Math.sin(y)*r;this.a=c*x-h*C,this.b=c*M-h*w,this.c=u*x+d*C,this.d=u*M+d*w;break}case qt.NoScale:case qt.NoScaleOrReflection:{s*=Ie.degRad;const f=Math.cos(s),p=Math.sin(s);let m=(c*f+h*p)/this.skeleton.scaleX,g=(u*f+d*p)/this.skeleton.scaleY,v=Math.sqrt(m*m+g*g);v>1e-5&&(v=1/v),m*=v,g*=v,v=Math.sqrt(m*m+g*g),this.inherit==qt.NoScale&&c*d-h*u<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(v=-v),s=Math.PI/2+Math.atan2(g,m);const y=Math.cos(s)*v,x=Math.sin(s)*v;o*=Ie.degRad,a=(90+a)*Ie.degRad;const M=Math.cos(o)*n,C=Math.cos(a)*r,w=Math.sin(o)*n,b=Math.sin(a)*r;this.a=m*M+y*w,this.b=m*C+y*b,this.c=g*M+x*w,this.d=g*C+x*b;break}}this.a*=this.skeleton.scaleX,this.b*=this.skeleton.scaleX,this.c*=this.skeleton.scaleY,this.d*=this.skeleton.scaleY}setToSetupPose(){let e=this.data;this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}updateAppliedTransform(){let e=this.parent;if(!e){this.ax=this.worldX-this.skeleton.x,this.ay=this.worldY-this.skeleton.y,this.arotation=Math.atan2(this.c,this.a)*Ie.radDeg,this.ascaleX=Math.sqrt(this.a*this.a+this.c*this.c),this.ascaleY=Math.sqrt(this.b*this.b+this.d*this.d),this.ashearX=0,this.ashearY=Math.atan2(this.a*this.b+this.c*this.d,this.a*this.d-this.b*this.c)*Ie.radDeg;return}let t=e.a,s=e.b,n=e.c,r=e.d,o=1/(t*r-s*n),a=r*o,l=s*o,c=n*o,h=t*o,u=this.worldX-e.worldX,d=this.worldY-e.worldY;this.ax=u*a-d*l,this.ay=d*h-u*c;let f,p,m,g;if(this.inherit==qt.OnlyTranslation)f=this.a,p=this.b,m=this.c,g=this.d;else{switch(this.inherit){case qt.NoRotationOrReflection:{let C=Math.abs(t*r-s*n)/(t*t+n*n);s=-n*this.skeleton.scaleX*C/this.skeleton.scaleY,r=t*this.skeleton.scaleY*C/this.skeleton.scaleX,o=1/(t*r-s*n),a=r*o,l=s*o;break}case qt.NoScale:case qt.NoScaleOrReflection:let v=Ie.cosDeg(this.rotation),y=Ie.sinDeg(this.rotation);t=(t*v+s*y)/this.skeleton.scaleX,n=(n*v+r*y)/this.skeleton.scaleY;let x=Math.sqrt(t*t+n*n);x>1e-5&&(x=1/x),t*=x,n*=x,x=Math.sqrt(t*t+n*n),this.inherit==qt.NoScale&&o<0!=(this.skeleton.scaleX<0!=this.skeleton.scaleY<0)&&(x=-x);let M=Ie.PI/2+Math.atan2(n,t);s=Math.cos(M)*x,r=Math.sin(M)*x,o=1/(t*r-s*n),a=r*o,l=s*o,c=n*o,h=t*o}f=a*this.a-l*this.c,p=a*this.b-l*this.d,m=h*this.c-c*this.a,g=h*this.d-c*this.b}if(this.ashearX=0,this.ascaleX=Math.sqrt(f*f+m*m),this.ascaleX>1e-4){let v=f*g-p*m;this.ascaleY=v/this.ascaleX,this.ashearY=-Math.atan2(f*p+m*g,v)*Ie.radDeg,this.arotation=Math.atan2(m,f)*Ie.radDeg}else this.ascaleX=0,this.ascaleY=Math.sqrt(p*p+g*g),this.ashearY=0,this.arotation=90-Math.atan2(g,p)*Ie.radDeg}getWorldRotationX(){return Math.atan2(this.c,this.a)*Ie.radDeg}getWorldRotationY(){return Math.atan2(this.d,this.b)*Ie.radDeg}getWorldScaleX(){return Math.sqrt(this.a*this.a+this.c*this.c)}getWorldScaleY(){return Math.sqrt(this.b*this.b+this.d*this.d)}worldToLocal(e){let t=1/(this.a*this.d-this.b*this.c),s=e.x-this.worldX,n=e.y-this.worldY;return e.x=s*this.d*t-n*this.b*t,e.y=n*this.a*t-s*this.c*t,e}localToWorld(e){let t=e.x,s=e.y;return e.x=t*this.a+s*this.b+this.worldX,e.y=t*this.c+s*this.d+this.worldY,e}worldToParent(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.worldToLocal(e)}parentToWorld(e){if(e==null)throw new Error("world cannot be null.");return this.parent==null?e:this.parent.localToWorld(e)}worldToLocalRotation(e){let t=Ie.sinDeg(e),s=Ie.cosDeg(e);return Math.atan2(this.a*t-this.c*s,this.d*s-this.b*t)*Ie.radDeg+this.rotation-this.shearX}localToWorldRotation(e){e-=this.rotation-this.shearX;let t=Ie.sinDeg(e),s=Ie.cosDeg(e);return Math.atan2(s*this.c+t*this.d,s*this.a+t*this.b)*Ie.radDeg}rotateWorld(e){e*=Ie.degRad;const t=Math.sin(e),s=Math.cos(e),n=this.a,r=this.b;this.a=s*n-t*this.c,this.b=s*r-t*this.d,this.c=t*n+s*this.c,this.d=t*r+s*this.d}},pu=class{constructor(e,t,s){S(this,"name");S(this,"order");S(this,"skinRequired");this.name=e,this.order=t,this.skinRequired=s}},yw=class{constructor(e,t){S(this,"data");S(this,"intValue",0);S(this,"floatValue",0);S(this,"stringValue",null);S(this,"time",0);S(this,"volume",0);S(this,"balance",0);if(!t)throw new Error("data cannot be null.");this.time=e,this.data=t}},xw=class{constructor(e){S(this,"name");S(this,"intValue",0);S(this,"floatValue",0);S(this,"stringValue",null);S(this,"audioPath",null);S(this,"volume",0);S(this,"balance",0);this.name=e}},lP=class{constructor(e,t){S(this,"data");S(this,"bones");S(this,"target");S(this,"bendDirection",0);S(this,"compress",!1);S(this,"stretch",!1);S(this,"mix",1);S(this,"softness",0);S(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n180?f-=360:f<-180&&(f+=360);let g=e.ascaleX,v=e.ascaleY;if(n||r){switch(e.inherit){case qt.NoScale:case qt.NoScaleOrReflection:p=t-e.worldX,m=s-e.worldY}const y=e.data.length*g;if(y>1e-4){const x=p*p+m*m;if(n&&xy*y){const M=(Math.sqrt(x)/y-1)*a+1;g*=M,o&&(v*=M)}}}e.updateWorldTransformWith(e.ax,e.ay,e.arotation+f*a,g,v,e.ashearX,e.ashearY)}apply2(e,t,s,n,r,o,a,l,c){if(e.inherit!=qt.Normal||t.inherit!=qt.Normal)return;let h=e.ax,u=e.ay,d=e.ascaleX,f=e.ascaleY,p=d,m=f,g=t.ascaleX,v=0,y=0,x=0;d<0?(d=-d,v=180,x=-1):(v=0,x=1),f<0&&(f=-f,x=-x),g<0?(g=-g,y=180):y=0;let M=t.ax,C=0,w=0,b=0,_=e.a,E=e.b,F=e.c,I=e.d,k=Math.abs(d-f)<=1e-4;!k||o?(C=0,w=_*M+e.worldX,b=F*M+e.worldY):(C=t.ay,w=_*M+E*C+e.worldX,b=F*M+I*C+e.worldY);let B=e.parent;if(!B)throw new Error("IK parent must itself have a parent.");_=B.a,E=B.b,F=B.c,I=B.d;let D=_*I-E*F,X=w-B.worldX,N=b-B.worldY;D=Math.abs(D)<=1e-4?0:1/D;let U=(X*I-N*E)*D-h,A=(N*_-X*F)*D-u,P=Math.sqrt(U*U+A*A),O=t.data.length*g,L,$;if(P<1e-4){this.apply1(e,s,n,!1,o,!1,c),t.updateWorldTransformWith(M,C,0,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY);return}X=s-B.worldX,N=n-B.worldY;let V=(X*I-N*E)*D-h,j=(N*_-X*F)*D-u,K=V*V+j*j;if(l!=0){l*=d*(g+1)*.5;let pe=Math.sqrt(K),ge=pe-P-O*d+l;if(ge>0){let he=Math.min(1,ge/(l*2))-1;he=(ge-l*(1-he*he))/pe,V-=he*V,j-=he*j,K=V*V+j*j}}e:if(k){O*=d;let pe=(K-P*P-O*O)/(2*P*O);pe<-1?(pe=-1,$=Math.PI*r):pe>1?(pe=1,$=0,o&&(_=(Math.sqrt(K)/(P+O)-1)*c+1,p*=_,a&&(m*=_))):$=Math.acos(pe)*r,_=P+O*pe,E=O*Math.sin($),L=Math.atan2(j*_-V*E,V*_+j*E)}else{_=d*O,E=f*O;let pe=_*_,ge=E*E,he=Math.atan2(j,V);F=ge*P*P+pe*K-pe*ge;let fe=-2*ge*P,Y=ge-pe;if(I=fe*fe-4*Y*F,I>=0){let le=Math.sqrt(I);fe<0&&(le=-le),le=-(fe+le)*.5;let Re=le/Y,we=F/le,me=Math.abs(Re)=0){N=Math.sqrt(Re)*r,L=he-Math.atan2(N,me),$=Math.atan2(N/f,(me-P)/d);break e}}let W=Ie.PI,H=P-_,G=H*H,q=0,se=0,ue=P+_,ne=ue*ue,de=0;F=-_*P/(pe-ge),F>=-1&&F<=1&&(F=Math.acos(F),X=_*Math.cos(F)+P,N=E*Math.sin(F),I=X*X+N*N,Ine&&(se=F,ne=I,ue=X,de=N)),K<=(G+ne)*.5?(L=he-Math.atan2(q*r,H),$=W*r):(L=he-Math.atan2(de*r,ue),$=se*r)}let ie=Math.atan2(C,M)*x,re=e.arotation;L=(L-ie)*Ie.radDeg+v-re,L>180?L-=360:L<-180&&(L+=360),e.updateWorldTransformWith(h,u,re+L*c,p,m,0,0),re=t.arotation,$=(($+ie)*Ie.radDeg-t.ashearX)*x+y-re,$>180?$-=360:$<-180&&($+=360),t.updateWorldTransformWith(M,C,re+$*c,t.ascaleX,t.ascaleY,t.ashearX,t.ashearY)}},bw=class extends pu{constructor(t){super(t,0,!1);S(this,"bones",new Array);S(this,"_target",null);S(this,"bendDirection",0);S(this,"compress",!1);S(this,"stretch",!1);S(this,"uniform",!1);S(this,"mix",0);S(this,"softness",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},ww=class extends pu{constructor(t){super(t,0,!1);S(this,"bones",new Array);S(this,"_target",null);S(this,"positionMode",ln.Fixed);S(this,"spacingMode",fs.Fixed);S(this,"rotateMode",ao.Chain);S(this,"offsetRotation",0);S(this,"position",0);S(this,"spacing",0);S(this,"mixRotate",0);S(this,"mixX",0);S(this,"mixY",0)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("SlotData not set.")}};var ln;(function(i){i[i.Fixed=0]="Fixed",i[i.Percent=1]="Percent"})(ln||(ln={}));var fs;(function(i){i[i.Length=0]="Length",i[i.Fixed=1]="Fixed",i[i.Percent=2]="Percent",i[i.Proportional=3]="Proportional"})(fs||(fs={}));var ao;(function(i){i[i.Tangent=0]="Tangent",i[i.Chain=1]="Chain",i[i.ChainScale=2]="ChainScale"})(ao||(ao={}));var Ps;let cP=(Ps=class{constructor(e,t){S(this,"data");S(this,"bones");S(this,"target");S(this,"position",0);S(this,"spacing",0);S(this,"mixRotate",0);S(this,"mixX",0);S(this,"mixY",0);S(this,"spaces",new Array);S(this,"positions",new Array);S(this,"world",new Array);S(this,"curves",new Array);S(this,"lengths",new Array);S(this,"segments",new Array);S(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0,r=e.bones.length;n0){M=u/M*p;for(let w=1;w0?Ie.degRad:-.01745329277777778}for(let M=0,C=3;M0){let I=w.a,k=w.b,B=w.c,D=w.d,X=0,N=0,U=0;if(a?X=m[C-1]:d[M+1]==0?X=m[C+2]:X=Math.atan2(F,E),X-=Math.atan2(B,I),x){N=Math.cos(X),U=Math.sin(X);let A=w.data.length;g+=(A*(N*I-U*B)-E)*s,v+=(A*(U*I+N*B)-F)*s}else X+=y;X>Ie.PI?X-=Ie.PI2:X<-3.1415927&&(X+=Ie.PI2),X*=s,N=Math.cos(X),U=Math.sin(X),w.a=N*I-U*B,w.b=N*k-U*D,w.c=U*I+N*B,w.d=U*k+N*D}w.updateAppliedTransform()}}computeWorldPositions(e,t,s){let n=this.target,r=this.position,o=this.spaces,a=Pe.setArraySize(this.positions,t*3+2),l=this.world,c=e.closed,h=e.worldVerticesLength,u=h/6,d=Ps.NONE;if(!e.constantSpeed){let A=e.lengths;u-=c?1:2;let P=A[u];this.data.positionMode==ln.Percent&&(r*=P);let O;switch(this.data.spacingMode){case fs.Percent:O=P;break;case fs.Proportional:O=P/t;break;default:O=1}l=Pe.setArraySize(this.world,8);for(let L=0,$=0,V=0;LP){d!=Ps.AFTER&&(d=Ps.AFTER,e.computeWorldVertices(n,h-6,4,l,0,2)),this.addAfterPosition(K-P,l,0,a,$);continue}for(;;V++){let ie=A[V];if(!(K>ie)){if(V==0)K/=ie;else{let re=A[V-1];K=(K-re)/(ie-re)}break}}V!=d&&(d=V,c&&V==u?(e.computeWorldVertices(n,h-4,4,l,0,2),e.computeWorldVertices(n,0,4,l,4,2)):e.computeWorldVertices(n,V*6+2,8,l,0,2)),this.addCurvePosition(K,l[0],l[1],l[2],l[3],l[4],l[5],l[6],l[7],a,$,s||L>0&&j==0)}return a}c?(h+=2,l=Pe.setArraySize(this.world,h),e.computeWorldVertices(n,2,h-4,l,0,2),e.computeWorldVertices(n,0,2,l,h-4,2),l[h-2]=l[0],l[h-1]=l[1]):(u--,h-=4,l=Pe.setArraySize(this.world,h),e.computeWorldVertices(n,2,h,l,0,2));let f=Pe.setArraySize(this.curves,u),p=0,m=l[0],g=l[1],v=0,y=0,x=0,M=0,C=0,w=0,b=0,_=0,E=0,F=0,I=0,k=0,B=0,D=0;for(let A=0,P=2;Ap){this.addAfterPosition(V-p,l,h-4,a,P);continue}for(;;O++){let j=f[O];if(!(V>j)){if(O==0)V/=j;else{let K=f[O-1];V=(V-K)/(j-K)}break}}if(O!=d){d=O;let j=O*6;for(m=l[j],g=l[j+1],v=l[j+2],y=l[j+3],x=l[j+4],M=l[j+5],C=l[j+6],w=l[j+7],b=(m-v*2+x)*.03,_=(g-y*2+M)*.03,E=((v-x)*3-m+C)*.006,F=((y-M)*3-g+w)*.006,I=b*2+E,k=_*2+F,B=(v-m)*.3+b+E*.16666667,D=(y-g)*.3+_+F*.16666667,U=Math.sqrt(B*B+D*D),N[0]=U,j=1;j<8;j++)B+=I,D+=k,I+=E,k+=F,U+=Math.sqrt(B*B+D*D),N[j]=U;B+=I,D+=k,U+=Math.sqrt(B*B+D*D),N[8]=U,B+=I+E,D+=k+F,U+=Math.sqrt(B*B+D*D),N[9]=U,L=0}for(V*=U;;L++){let j=N[L];if(!(V>j)){if(L==0)V/=j;else{let K=N[L-1];V=L+(V-K)/(j-K)}break}}this.addCurvePosition(V*.1,m,g,v,y,x,M,C,w,a,P,s||A>0&&$==0)}return a}addBeforePosition(e,t,s,n,r){let o=t[s],a=t[s+1],l=t[s+2]-o,c=t[s+3]-a,h=Math.atan2(c,l);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addAfterPosition(e,t,s,n,r){let o=t[s+2],a=t[s+3],l=o-t[s],c=a-t[s+1],h=Math.atan2(c,l);n[r]=o+e*Math.cos(h),n[r+1]=a+e*Math.sin(h),n[r+2]=h}addCurvePosition(e,t,s,n,r,o,a,l,c,h,u,d){if(e==0||isNaN(e)){h[u]=t,h[u+1]=s,h[u+2]=Math.atan2(r-s,n-t);return}let f=e*e,p=f*e,m=1-e,g=m*m,v=g*m,y=m*e,x=y*3,M=m*x,C=x*e,w=t*v+n*M+o*C+l*p,b=s*v+r*M+a*C+c*p;h[u]=w,h[u+1]=b,d&&(e<.001?h[u+2]=Math.atan2(r-s,n-t):h[u+2]=Math.atan2(b-(s*g+r*y*2+a*f),w-(t*g+n*y*2+o*f)))}},S(Ps,"NONE",-1),S(Ps,"BEFORE",-2),S(Ps,"AFTER",-3),S(Ps,"epsilon",1e-5),Ps),hP=class{constructor(e,t){S(this,"data");S(this,"_bone",null);S(this,"inertia",0);S(this,"strength",0);S(this,"damping",0);S(this,"massInverse",0);S(this,"wind",0);S(this,"gravity",0);S(this,"mix",0);S(this,"_reset",!0);S(this,"ux",0);S(this,"uy",0);S(this,"cx",0);S(this,"cy",0);S(this,"tx",0);S(this,"ty",0);S(this,"xOffset",0);S(this,"xVelocity",0);S(this,"yOffset",0);S(this,"yVelocity",0);S(this,"rotateOffset",0);S(this,"rotateVelocity",0);S(this,"scaleOffset",0);S(this,"scaleVelocity",0);S(this,"active",!1);S(this,"skeleton");S(this,"remaining",0);S(this,"lastTime",0);this.data=e,this.skeleton=t,this.bone=t.bones[e.bone.index],this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}set bone(e){this._bone=e}get bone(){if(this._bone)return this._bone;throw new Error("Bone not set.")}reset(){this.remaining=0,this.lastTime=this.skeleton.time,this._reset=!0,this.xOffset=0,this.xVelocity=0,this.yOffset=0,this.yVelocity=0,this.rotateOffset=0,this.rotateVelocity=0,this.scaleOffset=0,this.scaleVelocity=0}setToSetupPose(){const e=this.data;this.inertia=e.inertia,this.strength=e.strength,this.damping=e.damping,this.massInverse=e.massInverse,this.wind=e.wind,this.gravity=e.gravity,this.mix=e.mix}isActive(){return this.active}update(e){const t=this.mix;if(t==0)return;const s=this.data.x>0,n=this.data.y>0,r=this.data.rotate>0||this.data.shearX>0,o=this.data.scaleX>0,a=this.bone,l=a.data.length;switch(e){case cr.none:return;case cr.reset:this.reset();case cr.update:const c=this.skeleton,h=Math.max(this.skeleton.time-this.lastTime,0);this.remaining+=h,this.lastTime=c.time;const u=a.worldX,d=a.worldY;if(this._reset)this._reset=!1,this.ux=u,this.uy=d;else{let f=this.remaining,p=this.inertia,m=this.data.step,g=this.skeleton.data.referenceScale,v=-1,y=this.data.limit*h,x=y*Math.abs(c.scaleY);if(y*=Math.abs(c.scaleX),s||n){if(s){const M=(this.ux-u)*p;this.xOffset+=M>y?y:M<-y?-y:M,this.ux=u}if(n){const M=(this.uy-d)*p;this.yOffset+=M>x?x:M<-x?-x:M,this.uy=d}if(f>=m){v=Math.pow(this.damping,60*m);const M=this.massInverse*m,C=this.strength,w=this.wind*g*c.scaleX,b=this.gravity*g*c.scaleY;do s&&(this.xVelocity+=(w-this.xOffset*C)*M,this.xOffset+=this.xVelocity*m,this.xVelocity*=v),n&&(this.yVelocity-=(b+this.yOffset*C)*M,this.yOffset+=this.yVelocity*m,this.yVelocity*=v),f-=m;while(f>=m)}s&&(a.worldX+=this.xOffset*t*this.data.x),n&&(a.worldY+=this.yOffset*t*this.data.y)}if(r||o){let M=Math.atan2(a.c,a.a),C=0,w=0,b=0,_=this.cx-a.worldX,E=this.cy-a.worldY;if(_>y?_=y:_<-y&&(_=-y),E>x?E=x:E<-x&&(E=-x),r){b=(this.data.rotate+this.data.shearX)*t;let F=Math.atan2(E+this.ty,_+this.tx)-M-this.rotateOffset*b;this.rotateOffset+=(F-Math.ceil(F*Ie.invPI2-.5)*Ie.PI2)*p,F=this.rotateOffset*b+M,C=Math.cos(F),w=Math.sin(F),o&&(F=l*a.getWorldScaleX(),F>0&&(this.scaleOffset+=(_*C+E*w)*p/F))}else{C=Math.cos(M),w=Math.sin(M);const F=l*a.getWorldScaleX();F>0&&(this.scaleOffset+=(_*C+E*w)*p/F)}if(f=this.remaining,f>=m){v==-1&&(v=Math.pow(this.damping,60*m));const F=this.massInverse*m,I=this.strength,k=this.wind,B=Cp.yDown?-this.gravity:this.gravity,D=l/g;for(;;)if(f-=m,o&&(this.scaleVelocity+=(k*C-B*w-this.scaleOffset*I)*F,this.scaleOffset+=this.scaleVelocity*m,this.scaleVelocity*=v),r){if(this.rotateVelocity-=((k*w+B*C)*D+this.rotateOffset*I)*F,this.rotateOffset+=this.rotateVelocity*m,this.rotateVelocity*=v,f0){let f=0;this.data.rotate>0&&(f=c*this.data.rotate,h=Math.sin(f),u=Math.cos(f),d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d),f+=c*this.data.shearX,h=Math.sin(f),u=Math.cos(f),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c}else c*=this.data.rotate,h=Math.sin(c),u=Math.cos(c),d=a.a,a.a=u*d-h*a.c,a.c=h*d+u*a.c,d=a.b,a.b=u*d-h*a.d,a.d=h*d+u*a.d}if(o){const c=1+this.scaleOffset*t*this.data.scaleX;a.a*=c,a.c*=c}e!=cr.pose&&(this.tx=l*a.a,this.ty=l*a.c),a.updateAppliedTransform()}translate(e,t){this.ux-=e,this.uy-=t,this.cx-=e,this.cy-=t}rotate(e,t,s){const n=s*Ie.degRad,r=Math.cos(n),o=Math.sin(n),a=this.cx-e,l=this.cy-t;this.translate(a*r-l*o-a,a*o+l*r-l)}},uP=class{constructor(e,t){S(this,"data");S(this,"bone");S(this,"color");S(this,"darkColor",null);S(this,"attachment",null);S(this,"attachmentState",0);S(this,"sequenceIndex",-1);S(this,"deform",new Array);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("bone cannot be null.");this.data=e,this.bone=t,this.color=new rt,this.darkColor=e.darkColor?new rt:null,this.setToSetupPose()}getSkeleton(){return this.bone.skeleton}getAttachment(){return this.attachment}setAttachment(e){this.attachment!=e&&((!(e instanceof jn)||!(this.attachment instanceof jn)||e.timelineAttachment!=this.attachment.timelineAttachment)&&(this.deform.length=0),this.attachment=e,this.sequenceIndex=-1)}setToSetupPose(){this.color.setFromColor(this.data.color),this.darkColor&&this.darkColor.setFromColor(this.data.darkColor),this.data.attachmentName?(this.attachment=null,this.setAttachment(this.bone.skeleton.getAttachment(this.data.index,this.data.attachmentName))):this.attachment=null}},dP=class{constructor(e,t){S(this,"data");S(this,"bones");S(this,"target");S(this,"mixRotate",0);S(this,"mixX",0);S(this,"mixY",0);S(this,"mixScaleX",0);S(this,"mixScaleY",0);S(this,"mixShearY",0);S(this,"temp",new yh);S(this,"active",!1);if(!e)throw new Error("data cannot be null.");if(!t)throw new Error("skeleton cannot be null.");this.data=e,this.bones=new Array;for(let n=0;n0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,y=g.length;vIe.PI?_-=Ie.PI2:_<-3.1415927&&(_+=Ie.PI2),_*=e;let E=Math.cos(_),F=Math.sin(_);x.a=E*M-F*w,x.b=E*C-F*b,x.c=F*M+E*w,x.d=F*C+E*b}if(a){let M=this.temp;l.localToWorld(M.set(this.data.offsetX,this.data.offsetY)),x.worldX+=(M.x-x.worldX)*t,x.worldY+=(M.y-x.worldY)*s}if(n!=0){let M=Math.sqrt(x.a*x.a+x.c*x.c);M!=0&&(M=(M+(Math.sqrt(c*c+u*u)-M+this.data.offsetScaleX)*n)/M),x.a*=M,x.c*=M}if(r!=0){let M=Math.sqrt(x.b*x.b+x.d*x.d);M!=0&&(M=(M+(Math.sqrt(h*h+d*d)-M+this.data.offsetScaleY)*r)/M),x.b*=M,x.d*=M}if(o>0){let M=x.b,C=x.d,w=Math.atan2(C,M),b=Math.atan2(d,h)-Math.atan2(u,c)-(w-Math.atan2(x.c,x.a));b>Ie.PI?b-=Ie.PI2:b<-3.1415927&&(b+=Ie.PI2),b=w+(b+m)*o;let _=Math.sqrt(M*M+C*C);x.b=Math.cos(b)*_,x.d=Math.sin(b)*_}x.updateAppliedTransform()}}applyRelativeWorld(){let e=this.mixRotate,t=this.mixX,s=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=t!=0||s!=0,l=this.target,c=l.a,h=l.b,u=l.c,d=l.d,f=c*d-h*u>0?Ie.degRad:-.01745329277777778,p=this.data.offsetRotation*f,m=this.data.offsetShearY*f,g=this.bones;for(let v=0,y=g.length;vIe.PI?_-=Ie.PI2:_<-3.1415927&&(_+=Ie.PI2),_*=e;let E=Math.cos(_),F=Math.sin(_);x.a=E*M-F*w,x.b=E*C-F*b,x.c=F*M+E*w,x.d=F*C+E*b}if(a){let M=this.temp;l.localToWorld(M.set(this.data.offsetX,this.data.offsetY)),x.worldX+=M.x*t,x.worldY+=M.y*s}if(n!=0){let M=(Math.sqrt(c*c+u*u)-1+this.data.offsetScaleX)*n+1;x.a*=M,x.c*=M}if(r!=0){let M=(Math.sqrt(h*h+d*d)-1+this.data.offsetScaleY)*r+1;x.b*=M,x.d*=M}if(o>0){let M=Math.atan2(d,h)-Math.atan2(u,c);M>Ie.PI?M-=Ie.PI2:M<-3.1415927&&(M+=Ie.PI2);let C=x.b,w=x.d;M=Math.atan2(w,C)+(M-Ie.PI/2+m)*o;let b=Math.sqrt(C*C+w*w);x.b=Math.cos(M)*b,x.d=Math.sin(M)*b}x.updateAppliedTransform()}}applyAbsoluteLocal(){let e=this.mixRotate,t=this.mixX,s=this.mixY,n=this.mixScaleX,r=this.mixScaleY,o=this.mixShearY,a=this.target,l=this.bones;for(let c=0,h=l.length;ct.data.name==e)??null}findTransformConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.transformConstraints.find(t=>t.data.name==e)??null}findPathConstraint(e){if(!e)throw new Error("constraintName cannot be null.");return this.pathConstraints.find(t=>t.data.name==e)??null}findPhysicsConstraint(e){if(e==null)throw new Error("constraintName cannot be null.");return this.physicsConstraints.find(t=>t.data.name==e)??null}getBoundsRect(e){let t=new yh,s=new yh;return this.getBounds(t,s,void 0,e),{x:t.x,y:t.y,width:s.x,height:s.y}}getBounds(e,t,s=new Array(2),n=null){if(!e)throw new Error("offset cannot be null.");if(!t)throw new Error("size cannot be null.");let r=this.drawOrder,o=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,c=Number.NEGATIVE_INFINITY;for(let h=0,u=r.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=s}addSkin(e){for(let n=0;n= 0.");if(!t)throw new Error("name cannot be null.");if(!s)throw new Error("boneData cannot be null.");this.index=e,this.name=t,this.boneData=s}};var gr;(function(i){i[i.Normal=0]="Normal",i[i.Additive=1]="Additive",i[i.Multiply=2]="Multiply",i[i.Screen=3]="Screen"})(gr||(gr={}));let Tw=class extends pu{constructor(t){super(t,0,!1);S(this,"bones",new Array);S(this,"_target",null);S(this,"mixRotate",0);S(this,"mixX",0);S(this,"mixY",0);S(this,"mixScaleX",0);S(this,"mixScaleY",0);S(this,"mixShearY",0);S(this,"offsetRotation",0);S(this,"offsetX",0);S(this,"offsetY",0);S(this,"offsetScaleX",0);S(this,"offsetScaleY",0);S(this,"offsetShearY",0);S(this,"relative",!1);S(this,"local",!1)}set target(t){this._target=t}get target(){if(this._target)return this._target;throw new Error("BoneData not set.")}},bm=class{constructor(e){S(this,"scale",1);S(this,"attachmentLoader");S(this,"linkedMeshes",new Array);this.attachmentLoader=e}readSkeletonData(e){let t=this.scale,s=new bh;s.name="";let n=new fP(e),r=n.readInt32(),o=n.readInt32();s.hash=o==0&&r==0?null:o.toString(16)+r.toString(16),s.version=n.readString(),s.x=n.readFloat(),s.y=n.readFloat(),s.width=n.readFloat(),s.height=n.readFloat(),s.referenceScale=n.readFloat()*t;let a=n.readBoolean();a&&(s.fps=n.readFloat(),s.imagesPath=n.readString(),s.audioPath=n.readString());let l=0;l=n.readInt(!0);for(let h=0;h>1&3,f.rotateMode=p>>3&3,(p&128)!=0&&(f.offsetRotation=n.readFloat()),f.position=n.readFloat(),f.positionMode==ln.Fixed&&(f.position*=t),f.spacing=n.readFloat(),(f.spacingMode==fs.Length||f.spacingMode==fs.Fixed)&&(f.spacing*=t),f.mixRotate=n.readFloat(),f.mixX=n.readFloat(),f.mixY=n.readFloat(),s.pathConstraints.push(f)}l=n.readInt(!0);for(let h=0,u;h>4,e.readFloat())}n.push(w);break}}}}}let o=e.readInt(!0);if(o>0){let c=new Qa(o),h=s.slots.length;for(let u=0;u=0;y--)p[y]=-1;let m=Pe.newArray(h-f,0),g=0,v=0;for(let y=0;y=0;y--)p[y]==-1&&(p[y]=m[--v]);c.setFrame(u,d,p)}n.push(c)}let a=e.readInt(!0);if(a>0){let c=new _p(a);for(let h=0;h>>1^-(s&1)}readStringRef(){let e=this.readInt(!0);return e==0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let s=0;s>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),s+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),s+=3;break;default:t+=String.fromCharCode(n),s++}}return t}readFloat(){let e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!=0}},mP=class{constructor(e,t,s,n,r){S(this,"parent");S(this,"skinIndex");S(this,"slotIndex");S(this,"mesh");S(this,"inheritTimeline");this.mesh=e,this.skinIndex=t,this.slotIndex=s,this.parent=n,this.inheritTimeline=r}},pP=class{constructor(e=null,t=null,s=0){S(this,"bones");S(this,"vertices");S(this,"length");this.bones=e,this.vertices=t,this.length=s}};var wn;(function(i){i[i.Region=0]="Region",i[i.BoundingBox=1]="BoundingBox",i[i.Mesh=2]="Mesh",i[i.LinkedMesh=3]="LinkedMesh",i[i.Path=4]="Path",i[i.Point=5]="Point",i[i.Clipping=6]="Clipping"})(wn||(wn={}));function Es(i,e,t){let s=i.readFloat(),n=i.readFloat()*t;for(let r=0,o=0,a=e.getFrameCount()-1;e.setFrame(r,s,n),r!=a;r++){let l=i.readFloat(),c=i.readFloat()*t;switch(i.readByte()){case ji:e.setStepped(r);break;case Hi:ut(i,e,o++,r,0,s,l,n,c,t)}s=l,n=c}return e}function hf(i,e,t){let s=i.readFloat(),n=i.readFloat()*t,r=i.readFloat()*t;for(let o=0,a=0,l=e.getFrameCount()-1;e.setFrame(o,s,n,r),o!=l;o++){let c=i.readFloat(),h=i.readFloat()*t,u=i.readFloat()*t;switch(i.readByte()){case ji:e.setStepped(o);break;case Hi:ut(i,e,a++,o,0,s,c,n,h,t),ut(i,e,a++,o,1,s,c,r,u,t)}s=c,n=h,r=u}return e}function ut(i,e,t,s,n,r,o,a,l,c){e.setBezier(t,s,n,r,a,i.readFloat(),i.readFloat()*c,i.readFloat(),i.readFloat()*c,o,l)}const gP=0,vP=1,yP=2,xP=3,bP=4,wP=5,SP=6,MP=7,TP=8,_P=9,CP=10,AP=0,EP=1,IP=2,RP=3,PP=4,kP=5,FP=0,OP=1,LP=0,BP=1,NP=2,DP=0,UP=1,$P=2,XP=4,VP=5,YP=6,GP=7,jP=8,ji=1,Hi=2;class Hs{constructor(){S(this,"convexPolygons",new Array);S(this,"convexPolygonsIndices",new Array);S(this,"indicesArray",new Array);S(this,"isConcaveArray",new Array);S(this,"triangles",new Array);S(this,"polygonPool",new vh(()=>new Array));S(this,"polygonIndicesPool",new vh(()=>new Array))}triangulate(e){let t=e,s=e.length>>1,n=this.indicesArray;n.length=0;for(let a=0;a3;){let a=s-1,l=0,c=1;for(;;){e:if(!r[l]){let d=n[a]<<1,f=n[l]<<1,p=n[c]<<1,m=t[d],g=t[d+1],v=t[f],y=t[f+1],x=t[p],M=t[p+1];for(let C=(c+1)%s;C!=a;C=(C+1)%s){if(!r[C])continue;let w=n[C]<<1,b=t[w],_=t[w+1];if(Hs.positiveArea(x,M,m,g,b,_)&&Hs.positiveArea(m,g,v,y,b,_)&&Hs.positiveArea(v,y,x,M,b,_))break e}break}if(c==0){do{if(!r[l])break;l--}while(l>0);break}a=l,l=c,c=(c+1)%s}o.push(n[(s+l-1)%s]),o.push(n[l]),o.push(n[(l+1)%s]),n.splice(l,1),r.splice(l,1),s--;let h=(s+l-1)%s,u=l==s?0:l;r[h]=Hs.isConcave(h,s,t,n),r[u]=Hs.isConcave(u,s,t,n)}return s==3&&(o.push(n[2]),o.push(n[0]),o.push(n[1])),o}decompose(e,t){let s=e,n=this.convexPolygons;this.polygonPool.freeAll(n),n.length=0;let r=this.convexPolygonsIndices;this.polygonIndicesPool.freeAll(r),r.length=0;let o=this.polygonIndicesPool.obtain();o.length=0;let a=this.polygonPool.obtain();a.length=0;let l=-1,c=0;for(let h=0,u=t.length;h0?(n.push(a),r.push(o)):(this.polygonPool.free(a),this.polygonIndicesPool.free(o)),a=this.polygonPool.obtain(),a.length=0,a.push(m),a.push(g),a.push(v),a.push(y),a.push(x),a.push(M),o=this.polygonIndicesPool.obtain(),o.length=0,o.push(d),o.push(f),o.push(p),c=Hs.winding(m,g,v,y,x,M),l=d)}a.length>0&&(n.push(a),r.push(o));for(let h=0,u=n.length;h=0;h--)a=n[h],a.length==0&&(n.splice(h,1),this.polygonPool.free(a),o=r[h],r.splice(h,1),this.polygonIndicesPool.free(o));return n}static isConcave(e,t,s,n){let r=n[(t+e-1)%t]<<1,o=n[e]<<1,a=n[(e+1)%t]<<1;return!this.positiveArea(s[r],s[r+1],s[o],s[o+1],s[a],s[a+1])}static positiveArea(e,t,s,n,r,o){return e*(o-n)+s*(t-o)+r*(n-t)>=0}static winding(e,t,s,n,r,o){let a=s-e,l=n-t;return r*l-o*a+a*t-e*l>=0?1:-1}}class wh{constructor(){S(this,"triangulator",new Hs);S(this,"clippingPolygon",new Array);S(this,"clipOutput",new Array);S(this,"clippedVertices",new Array);S(this,"clippedUVs",new Array);S(this,"clippedTriangles",new Array);S(this,"scratch",new Array);S(this,"clipAttachment",null);S(this,"clippingPolygons",null)}clipStart(e,t){if(this.clipAttachment)return 0;this.clipAttachment=t;let s=t.worldVerticesLength,n=Pe.setArraySize(this.clippingPolygon,s);t.computeWorldVertices(e,0,s,n,0,2);let r=this.clippingPolygon;wh.makeClockwise(r);let o=this.clippingPolygons=this.triangulator.decompose(r,this.triangulator.triangulate(r));for(let a=0,l=o.length;a>1,w=this.clipOutput,b=Pe.setArraySize(r,x+C*2);for(let E=0;E>1,$=this.clipOutput,V=Pe.setArraySize(c,D+L*f);for(let K=0;K>1,P=this.clipOutput,O=Pe.setArraySize(o,I+A*2),L=Pe.setArraySize(a,I+A*2);for(let V=0;V=2?(u=l,l=this.scratch):u=this.scratch,u.length=0,u.push(e),u.push(t),u.push(s),u.push(n),u.push(r),u.push(o),u.push(e),u.push(t),l.length=0;let d=a.length-4,f=a;for(let p=0;;p+=2){let m=f[p],g=f[p+1],v=m-f[p+2],y=g-f[p+3],x=l.length,M=u;for(let w=0,b=u.length-2;wv*(g-I),B=y*(m-_)-v*(g-E);if(B>0){if(k){l.push(F),l.push(I);continue}let D=F-_,X=I-E,N=B/(D*y-X*v);if(N>=0&&N<=1)l.push(_+D*N),l.push(E+X*N);else{l.push(F),l.push(I);continue}}else if(k){let D=F-_,X=I-E,N=B/(D*y-X*v);if(N>=0&&N<=1)l.push(_+D*N),l.push(E+X*N),l.push(F),l.push(I);else{l.push(F),l.push(I);continue}}h=!0}if(x==l.length)return c.length=0,!0;if(l.push(l[0]),l.push(l[1]),p==d)break;let C=l;l=u,l.length=0,u=C}if(c!=l){c.length=0;for(let p=0,m=l.length-2;p>1;c0){let h=s.findPhysicsConstraint(a);if(!h)throw new Error("Physics constraint not found: "+a);c=s.physicsConstraints.indexOf(h)}for(let h in l){let u=l[h],d=u[0];if(!d)continue;let f=u.length;if(h=="reset"){const m=new aw(f,c);for(let g=0;d!=null;d=u[g+1],g++)m.setFrame(g,ee(d,"time",0));r.push(m);continue}let p;if(h=="inertia")p=new ew(f,f,c);else if(h=="strength")p=new tw(f,f,c);else if(h=="damping")p=new sw(f,f,c);else if(h=="mass")p=new iw(f,f,c);else if(h=="wind")p=new nw(f,f,c);else if(h=="gravity")p=new rw(f,f,c);else if(h=="mix")p=new ow(f,f,c);else continue;r.push(bi(u,p,0,1))}}if(e.attachments)for(let a in e.attachments){let l=e.attachments[a],c=s.findSkin(a);if(!c)throw new Error("Skin not found: "+a);for(let h in l){let u=l[h],d=s.findSlot(h);if(!d)throw new Error("Slot not found: "+h);let f=d.index;for(let p in u){let m=u[p],g=c.getAttachment(f,p);for(let v in m){let y=m[v],x=y[0];if(x){if(v=="deform"){let M=g.bones,C=g.vertices,w=M?C.length/3*2:C.length,b=new z1(y.length,y.length,f,g),_=ee(x,"time",0);for(let E=0,F=0;;E++){let I,k=ee(x,"vertices",null);if(!k)I=M?Pe.newFloatArray(w):C;else{I=Pe.newFloatArray(w);let N=ee(x,"offset",0);if(Pe.arrayCopy(k,0,I,N,k.length),n!=1)for(let U=N,A=U+k.length;U=0;v--)d[v]==-1&&(d[v]=p[--g])}a.setFrame(c,ee(u,"time",0),d)}r.push(a)}if(e.events){let a=new _p(e.events.length),l=0;for(let c=0;c"u"&&(Math.fround=(function(i){return function(e){return i[0]=e,i[0]}})(new Float32Array(1)));if(typeof window<"u"&&window.PIXI){let i=window.require;window.require=e=>{if(i)return i(e);if(e.startsWith("@pixi/"))return window.PIXI}}const Mn=class Mn extends nP{constructor(t){super(t.resource.source);S(this,"texture");this.texture=ze.from(t)}static from(t){return Mn.textureMap.has(t)?Mn.textureMap.get(t):new Mn(t)}setFilters(t,s){this.texture.baseTexture.scaleMode=Mn.toPixiTextureFilter(t),this.texture.baseTexture.mipmap=Mn.toPixiMipMap(t)}setWraps(t,s){this.texture.baseTexture.wrapMode=Mn.toPixiTextureWrap(t)}dispose(){this.texture.destroy()}static toPixiTextureFilter(t){switch(t){case ys.Nearest:case ys.MipMapNearestLinear:case ys.MipMapNearestNearest:return Ci.NEAREST;case ys.Linear:case ys.MipMapLinearLinear:case ys.MipMapLinearNearest:return Ci.LINEAR;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiMipMap(t){switch(t){case ys.Nearest:case ys.Linear:return gi.OFF;case ys.MipMapNearestLinear:case ys.MipMapNearestNearest:case ys.MipMapLinearLinear:case ys.MipMapLinearNearest:return gi.ON;default:throw new Error(`Unknown texture filter: ${String(t)}`)}}static toPixiTextureWrap(t){switch(t){case Un.ClampToEdge:return Ii.CLAMP;case Un.MirroredRepeat:return Ii.MIRRORED_REPEAT;case Un.Repeat:return Ii.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(t)}`)}}static toPixiBlending(t){switch(t){case gr.Normal:return He.NORMAL;case gr.Additive:return He.ADD;case gr.Multiply:return He.MULTIPLY;case gr.Screen:return He.SCREEN;default:throw new Error(`Unknown blendMode: ${String(t)}`)}}};S(Mn,"textureMap",new Map);let fo=Mn;const Tn=class Tn extends xl{constructor(){const t=new xp;t.getBuffer("aVertexPosition").static=!1,t.getBuffer("aTextureCoord").static=!1;const s=new fh(ze.EMPTY);super(t,s);S(this,"name","");S(this,"warnedTwoTint",!1)}updateFromSpineData(t,s,n,r,o,a,l,c){var v,y;this.texture=t.texture;const h=o/(c?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==h&&(u.data=new Float32Array(h));const d=this.geometry.getBuffer("aVertexPosition");((y=d.data)==null?void 0:y.length)!==h&&(d.data=new Float32Array(h));let f=0,p=u.data,m=d.data;for(let x=0;xnew bm);M(this,"beforeUpdateWorldTransforms",()=>{});M(this,"afterUpdateWorldTransforms",()=>{});M(this,"_autoUpdate",!1);M(this,"_ticker",Gs.shared);M(this,"meshesCache",new Map);M(this,"lightColor",new rt);M(this,"darkColor",new rt);M(this,"_boundsProvider");M(this,"_boundsPoint",new vt);M(this,"_boundsSpineID",-1);M(this,"_boundsSpineDirty",!0);M(this,"slotsObject",new Map);M(this,"verticesCache",Pe.newFloatArray(1024));M(this,"clippingSlotToPixiMasks",{});M(this,"currentClippingSlot");const n=t instanceof bh?t:t.skeletonData;this.skeleton=new _p(n);const r=new tP(n);this.state=new KR(r),(t==null?void 0:t.darkTint)!==void 0||(s==null?void 0:s.slotMeshFactory)===void 0?(this.darkTint=(t==null?void 0:t.darkTint)===void 0?this.skeleton.slots.some(o=>!!o.data.darkColor):t==null?void 0:t.darkTint,this.darkTint&&(this.slotMeshFactory=()=>new el)):this.initializeMeshFactory(s==null?void 0:s.slotMeshFactory),t!=null&&t.ticker&&(this._ticker=t.ticker),this.autoUpdate=(t==null?void 0:t.autoUpdate)??!0,this.boundsProvider=t.boundsProvider}get debug(){return this._debug}set debug(t){this._debug&&this._debug.unregisterSpine(this),t&&t.registerSpine(this),this._debug=t}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t&&!this._autoUpdate?this._ticker.add(this.internalUpdate,this):!t&&this._autoUpdate&&this._ticker.remove(this.internalUpdate,this),this._autoUpdate=t}get ticker(){return this._ticker}set ticker(t){t=t??Gs.shared,this._ticker!==t&&(this._autoUpdate&&(this._ticker.remove(this.internalUpdate,this),t.add(this.internalUpdate,this)),this._ticker=t)}get boundsProvider(){return this._boundsProvider}set boundsProvider(t){this._boundsProvider=t,t?(this._boundsSpineID=-1,this._boundsSpineDirty=!0,this.interactiveChildren=!1):(this.interactiveChildren=!0,this.hitArea=null),this.hasNeverUpdated||this.calculateBounds()}initializeMeshFactory(t){if(t){this.slotMeshFactory=t;const s=this.slotMeshFactory();s instanceof el&&(this.darkTint=!0),s.destroy()}else for(let s=0;snew el,this.darkTint=!0;break}}update(t){this.internalUpdate(0,t)}internalUpdate(t,s){this.hasNeverUpdated=!1;const n=s??this._ticker.deltaMS/1e3;this.state.update(n),this.state.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(n),this.skeleton.updateWorldTransform(cr.update),this.afterUpdateWorldTransforms(this)}updateTransform(){var t;this.renderMeshes(),this.sortChildren(),(t=this.debug)==null||t.renderDebug(this),super.updateTransform()}destroy(t){var s;this.autoUpdate&&(this.autoUpdate=!1),this._ticker=null;for(const[,n]of this.meshesCache)n==null||n.destroy();this.state.clearListeners(),this.debug=void 0,this.meshesCache.clear(),this.slotsObject.clear();for(let n in this.clippingSlotToPixiMasks)(s=this.clippingSlotToPixiMasks[n].mask)==null||s.destroy(),delete this.clippingSlotToPixiMasks[n];super.destroy(t)}resetMeshes(){for(const[,t]of this.meshesCache)t.zIndex=-1,t.visible=!1}_calculateBounds(){this.hasNeverUpdated&&(this.internalUpdate(0,0),this.renderMeshes())}hasMeshForSlot(t){return this.meshesCache.has(t)}getMeshForSlot(t){if(this.hasMeshForSlot(t)){let s=this.meshesCache.get(t);return s.visible=!0,s}else{let s=this.slotMeshFactory();return this.addChild(s),this.meshesCache.set(t,s),s}}getSlotFromRef(t){let s;if(typeof t=="number"?s=this.skeleton.slots[t]:typeof t=="string"?s=this.skeleton.findSlot(t):s=t,!s)throw new Error(`No slot found with the given slot reference: ${t}`);return s}addSlotObject(t,s,n){var a;let r=this.getSlotFromRef(t);const o=(a=this.slotsObject.get(r))==null?void 0:a.container;if(!(o&&o===s)){for(const[l,{container:c}]of this.slotsObject)if(l!==r&&c===s){this.removeSlotObject(l,s);break}o&&this.removeChild(o),this.slotsObject.set(r,{container:s,followAttachmentTimeline:(n==null?void 0:n.followAttachmentTimeline)||!1,followSlotColor:(n==null?void 0:n.followSlotColor)||!1}),this.addChild(s)}}getSlotObject(t){const s=this.slotsObject.get(this.getSlotFromRef(t));return s?s.container:void 0}removeSlotObject(t,s){var o;let n=this.getSlotFromRef(t),r=(o=this.slotsObject.get(n))==null?void 0:o.container;r&&(s&&s!==r||(this.removeChild(r),this.slotsObject.delete(n)))}removeSlotObjects(){for(const[,t]of this.slotsObject)t.container.removeFromParent();this.slotsObject.clear()}updateSlotObject(t,s,n){const{container:r,followAttachmentTimeline:o}=t,a=o?!!s.attachment:!0;if(r.visible=this.skeleton.drawOrder.includes(s)&&a,r.visible){let l=s.bone;const c=r.localTransform;c.a=l.a,c.b=l.c,c.c=-l.b,c.d=-l.d,c.tx=l.worldX,c.ty=l.worldY,r.transform.setFromMatrix(c),r.zIndex=n,r.alpha=this.skeleton.color.a*s.color.a,t.followSlotColor&&this.setSlotObjectTint(r,255*this.skeleton.color.r*s.color.r<<16|255*this.skeleton.color.g*s.color.g<<8|255*this.skeleton.color.b*s.color.b)}}setSlotObjectTint(t,s){const n=t;"tint"in n&&(n.tint=s);for(const r of n.children??[])this.setSlotObjectTint(r,s)}updateAndSetPixiMask(t,s){var a,l;const n=t.attachment;if(n&&n instanceof sa){const c=(a=this.clippingSlotToPixiMasks)[l=t.data.name]||(a[l]={slot:t,vertices:new Array});c.maskComputed=!1,this.currentClippingSlot=c;return}let r=this.currentClippingSlot;const o=this.slotsObject.get(t);if(r&&o){let c=r.mask;if(c||(c=Wv.obtain(),r.mask=c,this.addChild(c)),!r.maskComputed){let h=r.slot,u=h.attachment;r.maskComputed=!0;const d=u.worldVerticesLength,f=r.vertices;u.computeWorldVertices(h,0,d,f,0,2),c.clear().lineStyle(0).beginFill(0).drawPolygon(f).endFill()}o.container.mask=c}else o!=null&&o.container.mask&&(o.container.mask=null);if(r&&r.slot.attachment.endSlot==t.data&&(this.currentClippingSlot=void 0),s){for(const c in this.clippingSlotToPixiMasks){const h=this.clippingSlotToPixiMasks[c];(!(h.slot.attachment instanceof sa)||!h.maskComputed)&&h.mask&&(this.removeChild(h.mask),Wv.free(h.mask),h.mask=void 0)}this.currentClippingSlot=void 0}}renderMeshes(){var r,o;this.resetMeshes();let t=null,s=null;const n=this.skeleton.drawOrder;for(let a=0,l=n.length,c=0;a>1)*p,x>this.verticesCache.length&&(this.verticesCache=Pe.newFloatArray(x)),v.computeWorldVertices(h,0,v.worldVerticesLength,this.verticesCache,0,p),t=v.triangles,s=v.uvs,y=(o=v.region)==null?void 0:o.texture}else if(m instanceof sa){wt.clipper.clipStart(h,m);continue}else{this.hasMeshForSlot(h)&&(this.getMeshForSlot(h).visible=!1),wt.clipper.clipEndWithSlot(h);continue}if(y!=null){const w=h.bone.skeleton.color,_=h.color,S=w.a*_.a*g.a;this.lightColor.set(w.r*_.r*g.r,w.g*_.g*g.g,w.b*_.b*g.b,S),h.darkColor!=null?this.darkColor.set(h.darkColor.r,h.darkColor.g,h.darkColor.b,1):this.darkColor.set(0,0,0,1);let b,A,P,F;if(wt.clipper.isClipping())wt.clipper.clipTriangles(this.verticesCache,t,t.length,s,this.lightColor,this.darkColor,f),b=wt.clipper.clippedVertices,A=b.length,P=wt.clipper.clippedTriangles,F=P.length;else{const k=this.verticesCache;for(let B=2,D=0,X=x;Bnew Ds);_p.yDown=!0;const yc="spineTextureAtlasLoader",KP={extension:ke.Asset,resolver:{test:i=>qs(i,".atlas"),parse:i=>{var t,s;const e=i.split(".");return{resolution:parseFloat(((s=(t=Le.RETINA_PREFIX)==null?void 0:t.exec(i))==null?void 0:s[1])??"1"),format:e[e.length-2],src:i}}},loader:{name:yc,extension:{type:ke.LoadParser,priority:ii.Normal,name:yc},test(i){return qs(i,".atlas")},async load(i){const e=await Le.ADAPTER.fetch(i);if(!e.ok)throw new Error(`[${yc}] Failed to fetch ${i}: ${e.status} ${e.statusText}`);return await e.text()},testParse(i,e){const t=qs(e.src,".atlas"),s=typeof i=="string",n=e.loadParser===yc;return Promise.resolve((t||n)&&s)},unload(i){i.dispose()},async parse(i,e,t){var l;const s=e.data||{};let n=ts.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");const r=new hw(i);if(s.images instanceof Qe||typeof s.images=="string"){const c=s.images;s.images={},s.images[r.pages[0].name]=c}const o=[];let a=!0;for(const c of t.parsers)if(c.name=="loadTextures"){a=(l=c.config)==null?void 0:l.preferCreateImageBitmap;break}rn.setPreferences({preferCreateImageBitmap:!1});for(const c of r.pages){const h=c.name,u=s!=null&&s.images?s.images[h]:void 0;if(u instanceof Qe)c.setTexture(fo.from(u));else{const d=u??ts.normalize([...n.split(ts.sep),h].join(ts.sep)),f={src:lh(d,e.src),data:{...s.imageMetadata,alphaMode:c.pma?xs.PMA:xs.UNPACK}},p=t.load(f).then(m=>{c.setTexture(fo.from(m.baseTexture))});o.push(p)}}return await Promise.all(o),rn.setPreferences({preferCreateImageBitmap:a}),r}}};Xe.add(KP);const xc="spineSkeletonLoader";function ZP(i){return i.hasOwnProperty("bones")}function JP(i){return i instanceof Uint8Array}const QP={extension:ke.Asset,loader:{name:xc,extension:{type:ke.LoadParser,priority:ii.Normal,name:xc},test(i){return qs(i,".skel")},async load(i){const e=await Le.ADAPTER.fetch(i);if(!e.ok)throw new Error(`[${xc}] Failed to fetch ${i}: ${e.status} ${e.statusText}`);return new Uint8Array(await e.arrayBuffer())},testParse(i,e){const t=qs(e.src,".json")&&ZP(i),s=qs(e.src,".skel")&&JP(i),n=e.loadParser===xc;return Promise.resolve(t||s||n)}}};Xe.add(QP);class ek extends hn{constructor(t=!1){super();M(this,"_buffer");M(this,"_indexBuffer");this._buffer=new Ut(void 0,t,!1),this._indexBuffer=new Ut(void 0,t,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,$e.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,$e.FLOAT).addAttribute("aColor",this._buffer,4,!0,$e.UNSIGNED_BYTE).addAttribute("aDarkColor",this._buffer,4,!0,$e.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,$e.FLOAT).addIndex(this._indexBuffer)}}const tk=` +`;class KP extends ki{constructor(t){const s={uSampler:t??ze.EMPTY,alpha:1,uTextureMatrix:Ot.IDENTITY,uColor:new Float32Array([1,1,1,1]),uDarkColor:new Float32Array([0,0,0,0])},n={tint:16777215,darkTint:0,alpha:1,pluginName:"darkTintBatch"};super(nn.from(zP,qP),s);S(this,"uvMatrix");S(this,"batchable");S(this,"pluginName");S(this,"_tintRGB");S(this,"_darkTintRGB");S(this,"_colorDirty");S(this,"_alpha");S(this,"_tintColor");S(this,"_darkTintColor");this._colorDirty=!1,this.uvMatrix=new fp(s.uSampler),this.batchable=!0,this.pluginName=n.pluginName,this._tintColor=new Et(n.tint),this._darkTintColor=new Et(n.darkTint),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._darkTintRGB=this._darkTintColor.toLittleEndianNumber(),this._alpha=n.alpha,this._colorDirty=!0}get texture(){return this.uniforms.uSampler}set texture(t){this.uniforms.uSampler!==t&&(!this.uniforms.uSampler.baseTexture.alphaMode!=!t.baseTexture.alphaMode&&(this._colorDirty=!0),this.uniforms.uSampler=t,this.uvMatrix.texture=t)}set alpha(t){t!==this._alpha&&(this._alpha=t,this._colorDirty=!0)}get alpha(){return this._alpha}set tint(t){t!==this.tint&&(this._tintColor.setValue(t),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0)}get tint(){return this._tintColor.value}set darkTint(t){t!==this.darkTint&&(this._darkTintColor.setValue(t),this._darkTintRGB=this._darkTintColor.toLittleEndianNumber(),this._colorDirty=!0)}get darkTint(){return this._darkTintColor.value}get tintValue(){return this._tintColor.toNumber()}get darkTintValue(){return this._darkTintColor.toNumber()}update(){this._colorDirty&&(this._colorDirty=!1,Et.shared.setValue(this._tintColor).premultiply(this._alpha,!0).toArray(this.uniforms.uColor),Et.shared.setValue(this._darkTintColor).premultiply(this._alpha,!0).premultiply(1,!1).toArray(this.uniforms.uDarkColor)),this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)}}class ZP extends xl{constructor(t){super(new WP,new KP(t),void 0,void 0);S(this,"_darkTintRGB",0)}get darkTint(){return"darkTint"in this.shader?this.shader.darkTint:null}set darkTint(t){this.shader.darkTint=t}get darkTintValue(){return this.shader.darkTintValue}_renderToBatch(t){const s=this.geometry,n=this.shader;n.uvMatrix&&(n.uvMatrix.update(),this.calculateUvs()),this.calculateVertices(),this.indices=s.indexBuffer.data,this._tintRGB=n._tintRGB,this._darkTintRGB=n._darkTintRGB,this._texture=n.texture;const r=this.material.pluginName;t.batch.setObjectRenderer(t.plugins[r]),t.plugins[r].render(this)}}const hs=class hs extends ZP{constructor(){super();S(this,"name","")}updateFromSpineData(t,s,n,r,o,a,l,c){var v,y;this.texture=t.texture;const h=o/(c?12:8)*2,u=this.geometry.getBuffer("aTextureCoord");((v=u.data)==null?void 0:v.length)!==h&&(u.data=new Float32Array(h));const d=this.geometry.getBuffer("aVertexPosition");((y=d.data)==null?void 0:y.length)!==h&&(d.data=new Float32Array(h));let f=0,p=u.data,m=d.data;for(let x=0;xnew wm);S(this,"beforeUpdateWorldTransforms",()=>{});S(this,"afterUpdateWorldTransforms",()=>{});S(this,"_autoUpdate",!1);S(this,"_ticker",Gs.shared);S(this,"meshesCache",new Map);S(this,"lightColor",new rt);S(this,"darkColor",new rt);S(this,"_boundsProvider");S(this,"_boundsPoint",new vt);S(this,"_boundsSpineID",-1);S(this,"_boundsSpineDirty",!0);S(this,"slotsObject",new Map);S(this,"verticesCache",Pe.newFloatArray(1024));S(this,"clippingSlotToPixiMasks",{});S(this,"currentClippingSlot");const n=t instanceof bh?t:t.skeletonData;this.skeleton=new Cp(n);const r=new iP(n);this.state=new JR(r),(t==null?void 0:t.darkTint)!==void 0||(s==null?void 0:s.slotMeshFactory)===void 0?(this.darkTint=(t==null?void 0:t.darkTint)===void 0?this.skeleton.slots.some(o=>!!o.data.darkColor):t==null?void 0:t.darkTint,this.darkTint&&(this.slotMeshFactory=()=>new el)):this.initializeMeshFactory(s==null?void 0:s.slotMeshFactory),t!=null&&t.ticker&&(this._ticker=t.ticker),this.autoUpdate=(t==null?void 0:t.autoUpdate)??!0,this.boundsProvider=t.boundsProvider}get debug(){return this._debug}set debug(t){this._debug&&this._debug.unregisterSpine(this),t&&t.registerSpine(this),this._debug=t}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t&&!this._autoUpdate?this._ticker.add(this.internalUpdate,this):!t&&this._autoUpdate&&this._ticker.remove(this.internalUpdate,this),this._autoUpdate=t}get ticker(){return this._ticker}set ticker(t){t=t??Gs.shared,this._ticker!==t&&(this._autoUpdate&&(this._ticker.remove(this.internalUpdate,this),t.add(this.internalUpdate,this)),this._ticker=t)}get boundsProvider(){return this._boundsProvider}set boundsProvider(t){this._boundsProvider=t,t?(this._boundsSpineID=-1,this._boundsSpineDirty=!0,this.interactiveChildren=!1):(this.interactiveChildren=!0,this.hitArea=null),this.hasNeverUpdated||this.calculateBounds()}initializeMeshFactory(t){if(t){this.slotMeshFactory=t;const s=this.slotMeshFactory();s instanceof el&&(this.darkTint=!0),s.destroy()}else for(let s=0;snew el,this.darkTint=!0;break}}update(t){this.internalUpdate(0,t)}internalUpdate(t,s){this.hasNeverUpdated=!1;const n=s??this._ticker.deltaMS/1e3;this.state.update(n),this.state.apply(this.skeleton),this.beforeUpdateWorldTransforms(this),this.skeleton.update(n),this.skeleton.updateWorldTransform(cr.update),this.afterUpdateWorldTransforms(this)}updateTransform(){var t;this.renderMeshes(),this.sortChildren(),(t=this.debug)==null||t.renderDebug(this),super.updateTransform()}destroy(t){var s;this.autoUpdate&&(this.autoUpdate=!1),this._ticker=null;for(const[,n]of this.meshesCache)n==null||n.destroy();this.state.clearListeners(),this.debug=void 0,this.meshesCache.clear(),this.slotsObject.clear();for(let n in this.clippingSlotToPixiMasks)(s=this.clippingSlotToPixiMasks[n].mask)==null||s.destroy(),delete this.clippingSlotToPixiMasks[n];super.destroy(t)}resetMeshes(){for(const[,t]of this.meshesCache)t.zIndex=-1,t.visible=!1}_calculateBounds(){this.hasNeverUpdated&&(this.internalUpdate(0,0),this.renderMeshes())}hasMeshForSlot(t){return this.meshesCache.has(t)}getMeshForSlot(t){if(this.hasMeshForSlot(t)){let s=this.meshesCache.get(t);return s.visible=!0,s}else{let s=this.slotMeshFactory();return this.addChild(s),this.meshesCache.set(t,s),s}}getSlotFromRef(t){let s;if(typeof t=="number"?s=this.skeleton.slots[t]:typeof t=="string"?s=this.skeleton.findSlot(t):s=t,!s)throw new Error(`No slot found with the given slot reference: ${t}`);return s}addSlotObject(t,s,n){var a;let r=this.getSlotFromRef(t);const o=(a=this.slotsObject.get(r))==null?void 0:a.container;if(!(o&&o===s)){for(const[l,{container:c}]of this.slotsObject)if(l!==r&&c===s){this.removeSlotObject(l,s);break}o&&this.removeChild(o),this.slotsObject.set(r,{container:s,followAttachmentTimeline:(n==null?void 0:n.followAttachmentTimeline)||!1,followSlotColor:(n==null?void 0:n.followSlotColor)||!1}),this.addChild(s)}}getSlotObject(t){const s=this.slotsObject.get(this.getSlotFromRef(t));return s?s.container:void 0}removeSlotObject(t,s){var o;let n=this.getSlotFromRef(t),r=(o=this.slotsObject.get(n))==null?void 0:o.container;r&&(s&&s!==r||(this.removeChild(r),this.slotsObject.delete(n)))}removeSlotObjects(){for(const[,t]of this.slotsObject)t.container.removeFromParent();this.slotsObject.clear()}updateSlotObject(t,s,n){const{container:r,followAttachmentTimeline:o}=t,a=o?!!s.attachment:!0;if(r.visible=this.skeleton.drawOrder.includes(s)&&a,r.visible){let l=s.bone;const c=r.localTransform;c.a=l.a,c.b=l.c,c.c=-l.b,c.d=-l.d,c.tx=l.worldX,c.ty=l.worldY,r.transform.setFromMatrix(c),r.zIndex=n,r.alpha=this.skeleton.color.a*s.color.a,t.followSlotColor&&this.setSlotObjectTint(r,255*this.skeleton.color.r*s.color.r<<16|255*this.skeleton.color.g*s.color.g<<8|255*this.skeleton.color.b*s.color.b)}}setSlotObjectTint(t,s){const n=t;"tint"in n&&(n.tint=s);for(const r of n.children??[])this.setSlotObjectTint(r,s)}updateAndSetPixiMask(t,s){var a,l;const n=t.attachment;if(n&&n instanceof sa){const c=(a=this.clippingSlotToPixiMasks)[l=t.data.name]||(a[l]={slot:t,vertices:new Array});c.maskComputed=!1,this.currentClippingSlot=c;return}let r=this.currentClippingSlot;const o=this.slotsObject.get(t);if(r&&o){let c=r.mask;if(c||(c=zv.obtain(),r.mask=c,this.addChild(c)),!r.maskComputed){let h=r.slot,u=h.attachment;r.maskComputed=!0;const d=u.worldVerticesLength,f=r.vertices;u.computeWorldVertices(h,0,d,f,0,2),c.clear().lineStyle(0).beginFill(0).drawPolygon(f).endFill()}o.container.mask=c}else o!=null&&o.container.mask&&(o.container.mask=null);if(r&&r.slot.attachment.endSlot==t.data&&(this.currentClippingSlot=void 0),s){for(const c in this.clippingSlotToPixiMasks){const h=this.clippingSlotToPixiMasks[c];(!(h.slot.attachment instanceof sa)||!h.maskComputed)&&h.mask&&(this.removeChild(h.mask),zv.free(h.mask),h.mask=void 0)}this.currentClippingSlot=void 0}}renderMeshes(){var r,o;this.resetMeshes();let t=null,s=null;const n=this.skeleton.drawOrder;for(let a=0,l=n.length,c=0;a>1)*p,y>this.verticesCache.length&&(this.verticesCache=Pe.newFloatArray(y)),x.computeWorldVertices(h,0,x.worldVerticesLength,this.verticesCache,0,p),t=x.triangles,s=x.uvs,v=(o=x.region)==null?void 0:o.texture}else if(m instanceof sa){wt.clipper.clipStart(h,m);continue}else{this.hasMeshForSlot(h)&&(this.getMeshForSlot(h).visible=!1),wt.clipper.clipEndWithSlot(h);continue}if(v!=null){const M=h.bone.skeleton.color,C=h.color,w=M.a*C.a*g.a;this.lightColor.set(M.r*C.r*g.r,M.g*C.g*g.g,M.b*C.b*g.b,w),h.darkColor!=null?this.darkColor.set(h.darkColor.r,h.darkColor.g,h.darkColor.b,1):this.darkColor.set(0,0,0,1);let b,_,E,F;if(wt.clipper.isClipping())wt.clipper.clipTriangles(this.verticesCache,t,t.length,s,this.lightColor,this.darkColor,f),b=wt.clipper.clippedVertices,_=b.length,E=wt.clipper.clippedTriangles,F=E.length;else{const k=this.verticesCache;for(let B=2,D=0,X=y;Bnew Ds);Cp.yDown=!0;const yc="spineTextureAtlasLoader",JP={extension:ke.Asset,resolver:{test:i=>qs(i,".atlas"),parse:i=>{var t,s;const e=i.split(".");return{resolution:parseFloat(((s=(t=Le.RETINA_PREFIX)==null?void 0:t.exec(i))==null?void 0:s[1])??"1"),format:e[e.length-2],src:i}}},loader:{name:yc,extension:{type:ke.LoadParser,priority:ii.Normal,name:yc},test(i){return qs(i,".atlas")},async load(i){const e=await Le.ADAPTER.fetch(i);if(!e.ok)throw new Error(`[${yc}] Failed to fetch ${i}: ${e.status} ${e.statusText}`);return await e.text()},testParse(i,e){const t=qs(e.src,".atlas"),s=typeof i=="string",n=e.loadParser===yc;return Promise.resolve((t||n)&&s)},unload(i){i.dispose()},async parse(i,e,t){var l;const s=e.data||{};let n=ts.dirname(e.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");const r=new dw(i);if(s.images instanceof Qe||typeof s.images=="string"){const c=s.images;s.images={},s.images[r.pages[0].name]=c}const o=[];let a=!0;for(const c of t.parsers)if(c.name=="loadTextures"){a=(l=c.config)==null?void 0:l.preferCreateImageBitmap;break}rn.setPreferences({preferCreateImageBitmap:!1});for(const c of r.pages){const h=c.name,u=s!=null&&s.images?s.images[h]:void 0;if(u instanceof Qe)c.setTexture(fo.from(u));else{const d=u??ts.normalize([...n.split(ts.sep),h].join(ts.sep)),f={src:lh(d,e.src),data:{...s.imageMetadata,alphaMode:c.pma?bs.PMA:bs.UNPACK}},p=t.load(f).then(m=>{c.setTexture(fo.from(m.baseTexture))});o.push(p)}}return await Promise.all(o),rn.setPreferences({preferCreateImageBitmap:a}),r}}};Xe.add(JP);const xc="spineSkeletonLoader";function QP(i){return i.hasOwnProperty("bones")}function ek(i){return i instanceof Uint8Array}const tk={extension:ke.Asset,loader:{name:xc,extension:{type:ke.LoadParser,priority:ii.Normal,name:xc},test(i){return qs(i,".skel")},async load(i){const e=await Le.ADAPTER.fetch(i);if(!e.ok)throw new Error(`[${xc}] Failed to fetch ${i}: ${e.status} ${e.statusText}`);return new Uint8Array(await e.arrayBuffer())},testParse(i,e){const t=qs(e.src,".json")&&QP(i),s=qs(e.src,".skel")&&ek(i),n=e.loadParser===xc;return Promise.resolve(t||s||n)}}};Xe.add(tk);class sk extends hn{constructor(t=!1){super();S(this,"_buffer");S(this,"_indexBuffer");this._buffer=new Ut(void 0,t,!1),this._indexBuffer=new Ut(void 0,t,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,$e.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,$e.FLOAT).addAttribute("aColor",this._buffer,4,!0,$e.UNSIGNED_BYTE).addAttribute("aDarkColor",this._buffer,4,!0,$e.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,$e.FLOAT).addIndex(this._indexBuffer)}}const ik=` precision highp float; attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; @@ -1221,7 +1221,7 @@ void main(void){ vDarkColor = aDarkColor * tint; } -`,sk=` +`,nk=` varying vec2 vTextureCoord; varying vec4 vColor; varying vec4 vDarkColor; @@ -1236,4 +1236,4 @@ void main(void){ gl_FragColor.a = color.a * vColor.a; gl_FragColor.rgb = ((color.a - 1.0) * vDarkColor.a + 1.0 - color.rgb) * vDarkColor.rgb + color.rgb * vColor.rgb; } -`;class Mw extends ir{constructor(e){super(e),this.shaderGenerator=new fb(tk,sk),this.geometryClass=ek,this.vertexSize=7}packInterleavedGeometry(e,t,s,n,r){const{uint32View:o,float32View:a}=t,l=n/this.vertexSize,c=e.uvs,h=e.indices,u=e.vertexData,d=e._texture.baseTexture._batchLocation,f=Math.min(e.worldAlpha,1),p=Et.shared.setValue(e._tintRGB).toPremultiplied(f,!0),m=Et.shared.setValue(e._darkTintRGB).premultiply(f,!0).toPremultiplied(1,!1);for(let g=0;g0){let o=function(c){return Promise.all(c.map(h=>Promise.resolve(h).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));n=o(t.map(c=>{if(c=ak(c),c in zv)return;zv[c]=!0;const h=c.endsWith(".css"),u=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const d=document.createElement("link");if(d.rel=h?"stylesheet":ok,h||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),h)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${c}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return n.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return e().catch(r)})};async function _w(){const[i,e]=await Promise.all([qv(()=>import("./index-yF8mmEQU.js"),[]),qv(()=>import("./index-BtGWLkYx.js"),__vite__mapDeps([0,1]))]);return{core:i,pixi:e}}async function lk(i,e,t){const{core:s,pixi:n}=await _w(),r=new s.TextureAtlas(e);return Cp(r,t,n.SpineTexture),{skeletonData:new s.SkeletonJson(new s.AtlasAttachmentLoader(r)).readSkeletonData(i),SpineClass:n.Spine}}async function ck(i,e,t){const{core:s,pixi:n}=await _w(),r=new s.TextureAtlas(e);return Cp(r,t,n.SpineTexture),{skeletonData:new s.SkeletonBinary(new s.AtlasAttachmentLoader(r)).readSkeletonData(i),SpineClass:n.Spine}}function hr(i,e,t){const s=Number(i[e]);return Number.isFinite(s)?s:t}function zs(i,e,t,s){i[e]==null&&(i[e]=hr(i,t,s))}function Ap(i,e,t){if(typeof i.curve!="number")return;const s=hr(i,"time",0),r=hr(e,"time",0)-s,o=i.curve,a=hr(i,"c2",0),l=hr(i,"c3",1),c=hr(i,"c4",1);i.curve=t.flatMap(([h,u])=>[s+r*o,h+(u-h)*a,s+r*l,h+(u-h)*c]),delete i.c2,delete i.c3,delete i.c4}function vr(i,e){if(Array.isArray(i))for(let t=0;t[hr(s,r,o),hr(n,r,o)]))}}function hk(i){if(Array.isArray(i))for(let e=0;eNumber.parseInt(s.slice(r,r+2),16)/255);return e?n:n.slice(0,3)}function Kv(i,e){if(Array.isArray(i))for(let t=0;t[a,o[l]]))}}function uk(i){for(const e of i.bones||[])e.inherit==null&&e.transform!=null&&(e.inherit=e.transform);for(const e of i.transform||[])zs(e,"mixRotate","rotateMix",1),zs(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX),zs(e,"mixScaleX","scaleMix",1),e.mixScaleY==null&&(e.mixScaleY=e.mixScaleX),zs(e,"mixShearY","shearMix",1);for(const e of i.path||[])zs(e,"mixRotate","rotateMix",1),zs(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX)}function dk(i){for(const e of i.skins||[])for(const t of Object.values(e.attachments||{}))for(const s of Object.values(t||{}))s.parent!=null&&s.timelines==null&&s.deform!=null&&(s.timelines=s.deform)}function fk(i){for(const e of Object.values(i.slots||{}))e.color&&!e.rgba&&(e.rgba=e.color,delete e.color),e.twoColor&&!e.rgba2&&(e.rgba2=e.twoColor,delete e.twoColor),Kv(e.rgba,!1),Kv(e.rgba2,!0)}function mk(i){for(const e of Object.values(i.bones||{})){for(const t of e.rotate||[])zs(t,"value","angle",0);vr(e.rotate,[{key:"value",fallback:0}]),vr(e.translate,[{key:"x",fallback:0},{key:"y",fallback:0}]),vr(e.scale,[{key:"x",fallback:1},{key:"y",fallback:1}]),vr(e.shear,[{key:"x",fallback:0},{key:"y",fallback:0}])}}function pk(i){for(const e of Object.values(i.ik||{}))vr(e,[{key:"mix",fallback:1},{key:"softness",fallback:0}])}function gk(i){for(const e of Object.values(i.transform||{})){for(const t of e)zs(t,"mixRotate","rotateMix",1),zs(t,"mixX","translateMix",1),t.mixY==null&&(t.mixY=t.mixX),zs(t,"mixScaleX","scaleMix",1),t.mixScaleY==null&&(t.mixScaleY=t.mixScaleX),zs(t,"mixShearY","shearMix",1);vr(e,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1},{key:"mixScaleX",fallback:1},{key:"mixScaleY",fallback:1},{key:"mixShearY",fallback:1}])}}function vk(i){for(const e of Object.values(i.path||{})){for(const s of["position","spacing"]){const n=e[s];for(const r of n||[])zs(r,"value",s,0);vr(n,[{key:"value",fallback:0}])}const t=e.mix;for(const s of t||[])zs(s,"mixRotate","rotateMix",1),zs(s,"mixX","translateMix",1),s.mixY==null&&(s.mixY=s.mixX);vr(t,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1}])}}function yk(i){if(!i.deform)return;const e=i.attachments||(i.attachments={});for(const[t,s]of Object.entries(i.deform)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(s)){const a=n[r]||(n[r]={});for(const[l,c]of Object.entries(o)){const h=a[l]||(a[l]={});h.deform=c,hk(c)}}}delete i.deform}function Cw(i){uk(i),dk(i);for(const e of Object.values(i.animations||{}))fk(e),mk(e),pk(e),gk(e),vk(e),yk(e),!e.drawOrder&&e.draworder&&(e.drawOrder=e.draworder);return i}function xk(i){return i.replace(/\\/g,"/").split("/").pop()||i}async function bk(i){const e=await Promise.all(i.map(async t=>{const s=URL.createObjectURL(t);try{return[xk(t.name).toLowerCase(),await ze.fromURL(s)]}finally{URL.revokeObjectURL(s)}}));return new Map(e)}function wk(i){const e=new Map;return i.bones.map(t=>{var r;const s=((r=t.parent)==null?void 0:r.name)||null,n=s?(e.get(s)||0)+1:0;return e.set(t.name,n),{name:t.name,parent:s,depth:n}})}function Sk(i){return i.slots.map(e=>{var t;return{name:e.name,order:Number(e.index)||0,bone:((t=e.boneData)==null?void 0:t.name)||"",attachment:e.attachmentName||""}})}async function Aw(i,e,t){var o;if(!/\.(json|skel)$/i.test(i.name))throw new Error("Spine 数据仅支持 .json 或 .skel");if(!/\.atlas$/i.test(e.name))throw new Error("图集文件仅支持 .atlas");if(!t.length)throw new Error("请至少选择一张纹理图片");const s=await e.text(),n=await bk(t),r=[...n.values()];try{let a,l,c=null,h;if(/\.skel$/i.test(i.name)){const u=await i.arrayBuffer();try{({skeletonData:a,SpineClass:l}=await ck(u,s,n)),h="4.3"}catch(d){try{({skeletonData:a,SpineClass:l}=rk(u,s,n)),h="4.2"}catch(f){const p=d instanceof Error?d.message:String(d),m=f instanceof Error?f.message:String(f);throw new Error(`Spine 二进制解析失败(4.3:${p};旧版:${m})`)}}c=gh(a.version)}else{let u;try{u=JSON.parse(await i.text())}catch{throw new Error("Spine JSON 文件格式无效")}if(c=gh((o=u==null?void 0:u.skeleton)==null?void 0:o.spine),!c)throw new Error(`Spine JSON 版本不受支持,仅支持 ${mm()}`);h=wR(c),c==="3.8"&&Cw(u);const d=h==="4.3"?await lk(u,s,n):nk(u,s,n);a=d.skeletonData,l=d.SpineClass}if(!c)throw new Error(`Spine 数据版本不受支持,仅支持 ${mm()}`);return{skeletonData:a,textures:r,runtimeVersion:h,SpineClass:l,dataVersion:c,animations:a.animations.map(u=>({name:u.name,duration:u.duration})),bones:wk(a),slots:Sk(a)}}catch(a){for(const l of r)l.destroy(!0);throw a}}function Dc(i){return new Promise((e,t)=>{const s=new FileReader;s.onload=()=>e(String(s.result||"")),s.onerror=()=>t(s.error),s.readAsDataURL(i)})}async function Mk(i,e,t){return{skeleton:{name:i.name,dataUrl:await Dc(i)},atlas:{name:e.name,dataUrl:await Dc(e)},textures:await Promise.all(t.map(async s=>({name:s.name,dataUrl:await Dc(s)})))}}async function df(i){const e=await fetch(i.dataUrl);if(!e.ok)throw new Error(`无法读取内嵌 Spine 文件:${i.name}`);return new File([await e.blob()],i.name)}async function Tk(i){return{skeleton:await df(i.skeleton),atlas:await df(i.atlas),textures:await Promise.all(i.textures.map(df))}}const Ew="SpineParticle.EditorConfig",Iw=1;function Rw(i){return{backgroundX:i.backgroundX,backgroundY:i.backgroundY,backgroundOpacity:i.backgroundOpacity,backgroundImageName:i.backgroundImageName,backgroundImageData:i.backgroundImageData,showGrid:i.showGrid,exportSettings:$t(i.exportSettings)}}function _k(i){return JSON.parse(JSON.stringify(i,(e,t)=>{if(!(e==="texture"||e==="trailTexture"||e==="frames"))return t}))}function Pw(i){const e=$t(i);return delete e.tags,delete e.selectedTag,e}function Ck(i){const e=Rw(i.settings);return _k({format:Ew,version:Iw,savedAt:new Date().toISOString(),editor:$t(i.editor),settings:e,timeline:{fps:i.timeline.fps,loop:i.timeline.loop,playbackStart:i.timeline.playbackStart,playbackEnd:i.timeline.playbackEnd,animations:[...i.timeline.animations]},selection:{type:i.activeObjectType,id:i.activeObjectId},scene:{systems:i.systems.map(t=>({...$t(t),frames:void 0})),colliders:i.colliders.map(Pw),paths:$t(i.paths),spines:$t(i.spines)}})}function Ak(){return`SpineParticle-${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","-")}.json`}function kw(i){const e=Ck(i),t=new Blob([JSON.stringify(e,null,2)],{type:"application/json;charset=utf-8"}),s=URL.createObjectURL(t),n=document.createElement("a");return n.href=s,n.download=Ak(),document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(s),0),e}function Fw(i){let e;try{e=JSON.parse(i)}catch{throw new Error("配置文件不是有效的 JSON")}const t=e;if(t.format!==Ew)throw new Error("不是 SpineParticle 编辑器配置文件");if(t.version!==Iw)throw new Error(`暂不支持配置版本:${t.version??"未知"}`);if(!t.scene||!Array.isArray(t.scene.systems)||!Array.isArray(t.scene.colliders)||!Array.isArray(t.scene.paths)||!Array.isArray(t.scene.spines))throw new Error("配置文件缺少完整场景数据");return t}async function Ek(i){const e=new Map,t=n=>{const r=n==="/particles/star.png"?"/images/star.png":n==="/trails/trail.png"?"/images/trail.png":n||"/images/star.png";let o=e.get(r);return o||(o=ze.fromURL(r).then(a=>ur(a)),e.set(r,o)),o},s=await t("/images/star.png");await Promise.all(i.map(async n=>{var o;const r=Dn(n.config);r.texture=s,await Promise.all(r.imageResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/star.png"),await Promise.all(a.sequenceFrames.map(async l=>{l.texture=await t(l.previewUrl||a.previewUrl||"/images/star.png")}))})),await Promise.all(r.trailResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/trail.png")})),r.trailTexture=((o=r.trailResources[0])==null?void 0:o.texture)||null,n.frames=[]}))}async function Ik(i){const e=new Map;try{for(const t of i){if(!t.sourceBundle)continue;const s=await Tk(t.sourceBundle);e.set(t.id,await Aw(s.skeleton,s.atlas,s.textures))}return e}catch(t){for(const s of e.values())for(const n of s.textures)n.destroy(!0);throw t}}function Rk(i,e){const t=(e==null?void 0:e.type)||"particle",s=Number(e==null?void 0:e.id)||0;(t==="particle"?i.systems.some(r=>r.id===s):t==="collision"?i.colliders.some(r=>r.id===s):t==="path"?i.paths.some(r=>r.id===s):i.spines.some(r=>r.id===s))?i.selectSceneObject(t,s):i.systems[0]?i.selectSceneObject("particle",i.systems[0].id):i.colliders[0]?i.selectSceneObject("collision",i.colliders[0].id):i.paths[0]?i.selectSceneObject("path",i.paths[0].id):i.spines[0]?i.selectSceneObject("spine",i.spines[0].id):(i.activeObjectType="particle",i.activeObjectId=0,i.activeId=0)}async function Pk(i,e){var h,u,d,f,p,m,g;const t=Fw(JSON.stringify(e)),s=$t(t.scene.systems),n=t.scene.colliders.map(Pw),r=$t(t.scene.paths),o=$t(t.scene.spines);for(const y of o)y.sourceBundle==null&&(y.sourceBundle=null),y.dataVersion==null&&(y.dataVersion=""),Array.isArray(y.slots)||(y.slots=[]),typeof y.selectedBone!="string"&&(y.selectedBone=""),typeof y.selectedSlot!="string"&&(y.selectedSlot="");await Ek(s);const a=await Ik(o),l=new Map(i.spines.map(y=>[y.id,y.assetVersion]));for(const y of i.spines)Pl(y.id);i.systems=s,i.colliders=n,i.paths=r,i.spines=o,Object.assign(i.editor,$t(t.editor||{}));const c=t.settings;if(c)for(const y of["backgroundX","backgroundY","backgroundOpacity","backgroundImageName","backgroundImageData","showGrid"])Object.prototype.hasOwnProperty.call(c,y)&&(i.settings[y]=c[y]);i.settings.exportSettings=S1((h=t.settings)==null?void 0:h.exportSettings),i.settings.undoLimit=Math.min(200,Math.max(1,Math.round(Number(i.settings.undoLimit)||20))),i.timeline.fps=Math.max(1,Math.round(Number((u=t.timeline)==null?void 0:u.fps)||30)),i.timeline.loop=((d=t.timeline)==null?void 0:d.loop)!==!1,i.timeline.animations=Array.isArray((f=t.timeline)==null?void 0:f.animations)&&t.timeline.animations.length?[...new Set(t.timeline.animations.filter(y=>typeof y=="string"&&y.trim()).map(y=>y.trim()))]:["animation"];for(const y of i.spines){const x=a.get(y.id);if(y.assetVersion=Math.max(Number(y.assetVersion)||0,l.get(y.id)||0)+1,!x){y.status="empty",y.error=y.skeletonFileName?"配置未包含可复用的 Spine 原始资源":"",y.animations=[],y.bones=[],y.slots=[],y.selectedAnimation="";continue}fu(y.id,x),y.dataVersion=x.dataVersion,y.animations=x.animations,y.bones=x.bones,y.slots=x.slots,x.animations.some(v=>v.name===y.selectedAnimation)||(y.selectedAnimation=((p=x.animations[0])==null?void 0:p.name)||""),y.status="ready",y.error=""}i.syncSceneSequences(),Rk(i,t.selection),i.timeline.playbackStart=Math.max(0,Math.floor(Number((m=t.timeline)==null?void 0:m.playbackStart)||0)),i.timeline.playbackEnd=Math.max(1,Math.floor(Number((g=t.timeline)==null?void 0:g.playbackEnd)||Number.MAX_SAFE_INTEGER)),i.timeline.frame=0,i.timeline.recorded=!1,i.timeline.playing=!0;for(const y of i.systems)i.timeline.animations.includes(y.animation)||(y.animation=i.timeline.animations[0]);return i.recalcTotalFrames(),i.timeline.frame=i.timeline.playbackStart,t}async function Ow(i,e){return Pk(i,Fw(e))}async function kk(i,e){if(!/\.json$/i.test(e.name))throw new Error("请选择 .json 配置文件");return Ow(i,await e.text())}const gu=mo({undoCount:0});let Th=null,Pn=null,xr=[],La=null,kn=null,_h=!1;function Ep(i){return{systems:i.systems.map(t=>{const s=$t(t);return s.frames=void 0,s}),colliders:$t(i.colliders),paths:$t(i.paths),spines:$t(i.spines),animations:[...i.timeline.animations],settings:Rw(i.settings)}}function Ip(i){return JSON.stringify(i,(e,t)=>e==="texture"||e==="trailTexture"?null:typeof t=="string"&&t.startsWith("data:")&&t.length>256?`${t.length}:${t.slice(0,96)}:${t.slice(-48)}`:t)}function Lw(i,e=Ep(i),t=Ip(e)){const s=new Map;for(const n of e.spines){const r=xR(n.id);r&&s.set(n.id,r)}return{data:e,signature:t,spineAssets:s}}function Ch(i){if(i){for(const e of i.spineAssets.values())vR(e);i.spineAssets.clear()}}function Bw(i){for(;xr.length>i;)Ch(xr.shift()||null);gu.undoCount=xr.length}function Nw(){const i=Th;if(!i||!Pn||_h)return;const e=Ep(i),t=Ip(e);t!==Pn.signature&&(xr.push(Pn),Pn=Lw(i,e,t),Bw(i.settings.undoLimit))}function Fk(){_h||(kn&&clearTimeout(kn),kn=setTimeout(()=>{kn=null,Nw()},250))}function Ok(i){const e=i.activeObjectId;return i.activeObjectType==="particle"?i.systems.some(t=>t.id===e):i.activeObjectType==="collision"?i.colliders.some(t=>t.id===e):i.activeObjectType==="path"?i.paths.some(t=>t.id===e):i.spines.some(t=>t.id===e)}function Lk(i){var t,s;if(!Ok(i)){const n=i.systems[0],r=i.colliders[0],o=i.paths[0],a=i.spines[0];n?(i.activeObjectType="particle",i.activeObjectId=n.id):r?(i.activeObjectType="collision",i.activeObjectId=r.id):o?(i.activeObjectType="path",i.activeObjectId=o.id):(i.activeObjectType="spine",i.activeObjectId=(a==null?void 0:a.id)||0)}const e=i.activeObjectType==="particle"?i.systems.find(n=>n.id===i.activeObjectId):i.systems.find(n=>n.id===i.activeId);i.activeId=(e==null?void 0:e.id)||((t=i.systems[0])==null?void 0:t.id)||0,i.timeline.animation=(e==null?void 0:e.animation)||((s=i.systems[0])==null?void 0:s.animation)||i.timeline.animations[0]||"animation"}function Bk(i,e){const t=Pn;_h=!0;try{for(const s of i.spines)Pl(s.id);i.systems=$t(e.data.systems),i.colliders=$t(e.data.colliders),i.paths=$t(e.data.paths),i.spines=$t(e.data.spines),i.timeline.animations=[...e.data.animations],Object.assign(i.settings,$t(e.data.settings));for(const[s,n]of e.spineAssets)fu(s,n);for(const s of i.systems)s.frames=[];i.timeline.recorded=!1,i.timeline.playing=!1,Lk(i),i.recalcTotalFrames(),Pn=e}finally{_h=!1,Ch(t)}}function Nk(i){if(!(Th===i&&La)){La==null||La(),kn&&clearTimeout(kn),Ch(Pn);for(const e of xr)Ch(e);xr=[],Th=i,Pn=Lw(i),gu.undoCount=0,La=Cs(()=>Ip(Ep(i)),Fk,{flush:"post"})}}function Dk(i,e){const t=Math.min(200,Math.max(1,Math.round(Number(e)||20)));i.settings.undoLimit=t,Bw(t)}function Dw(){const i=Th;if(!i||!Pn)return!1;kn&&(clearTimeout(kn),kn=null),Nw();const e=xr.pop();return e?(Bk(i,e),gu.undoCount=xr.length,!0):!1}function Uk(i){const e=i instanceof HTMLElement?i:null;return!!(e!=null&&e.closest('input, textarea, select, [contenteditable="true"]'))}function $k(i){function e(s){var r;const n=s.target instanceof Node?s.target:null;i.canvasFocused.value=!!n&&!!((r=i.canvasElement.value)!=null&&r.contains(n))}function t(s){const n=s.key.toLowerCase();if((s.ctrlKey||s.metaKey)&&!s.altKey&&n==="s"){s.preventDefault(),s.stopPropagation(),i.save();return}if((s.ctrlKey||s.metaKey)&&!s.altKey&&n==="z"){s.preventDefault(),s.stopPropagation(),i.undo();return}if(s.ctrlKey||s.metaKey||s.altKey||Uk(s.target))return;if(n==="d"){s.preventDefault(),i.togglePlay();return}if(n==="s"){s.preventDefault(),i.toStart();return}if(!i.canvasFocused.value)return;const r={q:"",w:"translate",e:"rotate",r:"scale"};n in r&&(s.preventDefault(),i.setTool(r[n]))}Oi(()=>{document.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",t,!0)}),Cl(()=>{document.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t,!0)})}const Xk={class:"help-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"help-title"},Vk={class:"help-body"},Yk=["aria-expanded"],Gk={class:"caret"},jk={class:"help-module-body"},Hk=["aria-expanded"],Wk={class:"caret"},zk={class:"help-module-body"},qk=["aria-expanded"],Kk={class:"caret"},Zk={class:"help-module-body"},Jk=["aria-expanded"],Qk={class:"caret"},eF={class:"help-module-body"},tF=["aria-expanded"],sF={class:"caret"},iF={class:"help-module-body"},nF=["aria-expanded"],rF={class:"caret"},oF={class:"help-module-body"},aF=["aria-expanded"],lF={class:"caret"},cF={class:"help-module-body"},hF=["aria-expanded"],uF={class:"caret"},dF={class:"help-module-body"},fF=["aria-expanded"],mF={class:"caret"},pF={class:"help-module-body"},gF=Zt({__name:"HelpDialog",props:{show:{type:Boolean}},emits:["close"],setup(i,{emit:e}){const t=e,s=Fe(Array.from({length:9},()=>!1));function n(){t("close")}function r(o){o.key==="Escape"&&n()}return Oi(()=>window.addEventListener("keydown",r)),po(()=>window.removeEventListener("keydown",r)),(o,a)=>i.show?(z(),J("div",{key:0,class:"help-overlay",role:"presentation",onClick:Ke(n,["self"])},[T("section",Xk,[T("header",{class:"help-head"},[a[9]||(a[9]=T("div",null,[T("h2",{id:"help-title"},"使用说明"),T("p",null,"从创建粒子到保存、导出的快速入门")],-1)),T("button",{class:"help-close","aria-label":"关闭使用说明",title:"关闭 (Esc)",onClick:n},"✕")]),T("div",Vk,[a[37]||(a[37]=Qs('

快速开始

  1. 创建对象:在左侧“场景对象”中用 +粒子 / +碰撞 / +路径 / +Spine 添加场景对象。
  2. 编辑粒子:选中某个粒子系统,依次调整“发射模式 → 发射器形状 → 粒子属性 → 外观与资源 → 修改器”。
  3. 查看效果:底部时间轴可播放、暂停、逐帧或拖动;修改任意参数后会自动重新计算。
  4. 保存与导出:用“保存配置”保留工程;“导出 Spine Json / images 包 / .spine 包”输出成品。

每个模块组标题右侧的“重置”可把该组参数恢复默认;系统设置会自动保存在当前浏览器。

常用操作

小眼睛
单独显示/隐藏对象;隐藏的粒子系统不会被导出。
+Copy
完整复制当前选中对象,方便对比不同参数。
背景图
上传参考图并调整位置和透明度,只用于画布预览。
系统设置
管理界面布局、辅助显示、刻度等,自动存入浏览器。
撤销/重做
Ctrl+Z 撤回一步;可达成的步数在系统设置中调整。
Spine 骨骼
在层级树搜索并选择骨骼,可用于粒子发射器跟随。

快捷键

Ctrl/⌘+Z撤回上一步
Ctrl/⌘+S保存配置
Q拖动画布
W位移工具
E旋转工具
R缩放工具
D播放 / 暂停
S回到第一帧

Q / W / E / R 需先点击画布;光标位于输入框时,单键快捷键不会触发。

功能模块详解
',3)),T("section",{class:Ae(["help-section help-module",{open:s.value[0]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[0]?"true":"false",onClick:a[0]||(a[0]=l=>s.value[0]=!s.value[0])},[a[10]||(a[10]=T("span",{class:"mnum"},"1",-1)),a[11]||(a[11]=T("span",{class:"mtitle"},"配置管理",-1)),T("span",Gk,ye(s.value[0]?"▾":"▸"),1)],8,Yk),ce(T("div",jk,[...a[12]||(a[12]=[Qs('
保存配置
把当前全部场景对象和参数保存为工程 JSON 文件(也支持 Ctrl+S)。
加载配置
选择本地配置文件,恢复完整工程。
预设
从下拉中选择已保存的预设快速套用;点击下拉即可刷新列表。
范围
配置只含对象与参数,不含“系统设置”;系统设置单独存于浏览器。
',1)])],512),[[ws,s.value[0]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[1]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[1]?"true":"false",onClick:a[1]||(a[1]=l=>s.value[1]=!s.value[1])},[a[13]||(a[13]=T("span",{class:"mnum"},"2",-1)),a[14]||(a[14]=T("span",{class:"mtitle"},"场景对象",-1)),T("span",Wk,ye(s.value[1]?"▾":"▸"),1)],8,Hk),ce(T("div",zk,[...a[15]||(a[15]=[Qs('
粒子
核心对象。可设名称、位置 X/Y、偏移、旋转、缩放 X/Y,以及“随机种子”——相同种子可精确复现同一次效果。
碰撞
圆形/椭圆/矩形/多边形/自定义;启用开关、碰撞响应(物理弹跳/暂停/销毁)、弹性与摩擦,还可沿某条路径移动并带进度曲线。
路径
贝塞尔路径,可双击新建/删除锚点、拖手柄调曲线;内置圆/方/多边形/星形预设,支持闭合与颜色。
Spine
加载 .json+.atlas+.png 预览骨骼动画,可查看/搜索骨骼层级树,用于粒子“发射器跟随”。
通用
每个对象都有小眼睛显隐;“+Copy”可以复制当前对象;隐藏的粒子系统不会进入导出。
',1)])],512),[[ws,s.value[1]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[2]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[2]?"true":"false",onClick:a[2]||(a[2]=l=>s.value[2]=!s.value[2])},[a[16]||(a[16]=T("span",{class:"mnum"},"3",-1)),a[17]||(a[17]=T("span",{class:"mtitle"},"发射模式",-1)),T("span",Kk,ye(s.value[2]?"▾":"▸"),1)],8,qk),ce(T("div",Zk,[...a[18]||(a[18]=[Qs('
持续
按“每秒发射数量”持续喷射;再分“常规持续”(发射时长)与“循环持续”(三段式:开始循环 / 纯循环 / 结束循环,可自动或自定义帧长,做到无缝衔接)。
爆发
一次性发射“单次数量”颗粒子。
延迟时间
粒子条左端位置,表示发射开始前的等待时间。
注意
循环持续模式不支持骨骼跟随和路径跟随;开关时会把跟随设置恢复默认。
',1)])],512),[[ws,s.value[2]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[3]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[3]?"true":"false",onClick:a[3]||(a[3]=l=>s.value[3]=!s.value[3])},[a[19]||(a[19]=T("span",{class:"mnum"},"4",-1)),a[20]||(a[20]=T("span",{class:"mtitle"},"发射器形状",-1)),T("span",Qk,ye(s.value[3]?"▾":"▸"),1)],8,Jk),ce(T("div",eF,[...a[21]||(a[21]=[Qs('
形状
点 / 圆形 / 矩形 / 锥形 / 路径。
圆·锥
内半径与外半径,形成环形或锥形发射区;锥形额外有“锥形朝向”和“开口角度”。
矩形
“外框 − 内框”形成环带,可分别设置内外宽高。
路径
选一条场景路径作为出生线;出生分布可选等距固定或随机。
发射角度
固定 / 随机(基准角度 + 随机范围)/ 径向(圆、矩、锥中心向外)/ 垂直于路径 / 沿路径方向。
',1)])],512),[[ws,s.value[3]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[4]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[4]?"true":"false",onClick:a[4]||(a[4]=l=>s.value[4]=!s.value[4])},[a[22]||(a[22]=T("span",{class:"mnum"},"5",-1)),a[23]||(a[23]=T("span",{class:"mtitle"},"粒子属性",-1)),T("span",sF,ye(s.value[4]?"▾":"▸"),1)],8,tF),ce(T("div",iF,[...a[24]||(a[24]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"初始参数"),T("dd",null,"生命周期、速度、缩放(统一或 X/Y 分离)、初始旋转(可跟随发射方向)。每个属性支持固定 / 随机 / 曲线三种取值。")]),T("div",null,[T("dt",null,"生命周期变化"),T("dd",null,"速度倍率、缩放倍率(统一/分离)、旋转速度,均可用“生命周期 → 倍率”曲线控制。")]),T("div",null,[T("dt",null,"曲线含义"),T("dd",null,"横轴为粒子生命周期 0→1,纵轴为倍率或对应数值。")])],-1)])],512),[[ws,s.value[4]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[5]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[5]?"true":"false",onClick:a[5]||(a[5]=l=>s.value[5]=!s.value[5])},[a[25]||(a[25]=T("span",{class:"mnum"},"6",-1)),a[26]||(a[26]=T("span",{class:"mtitle"},"外观与资源",-1)),T("span",rF,ye(s.value[5]?"▾":"▸"),1)],8,nF),ce(T("div",oF,[...a[27]||(a[27]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"透明度"),T("dd",null,"曲线或固定;曲线模式可选“跟随导出 / 线性 / 贝塞尔”。")]),T("div",null,[T("dt",null,"图片资源"),T("dd",null,"“+”新增,可上传单图或序列帧;多张图片按权重随机。每张可调缩放、轴心、颜色(固定/随机/生命周期渐变)、混合模式(正常/相加/相乘/滤色)、独立透明度(关/固定/曲线)。")]),T("div",null,[T("dt",null,"序列帧"),T("dd",null,"播放方式:单次隐藏 / 单次定格 / 正向循环 / 反向循环,可设每秒帧数。")])],-1)])],512),[[ws,s.value[5]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[6]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[6]?"true":"false",onClick:a[6]||(a[6]=l=>s.value[6]=!s.value[6])},[a[28]||(a[28]=T("span",{class:"mnum"},"7",-1)),a[29]||(a[29]=T("span",{class:"mtitle"},"修改器",-1)),T("span",lF,ye(s.value[6]?"▾":"▸"),1)],8,aF),ce(T("div",cF,[...a[30]||(a[30]=[Qs('
移动噪声
强度、波动范围、时间流速,让粒子轨迹产生抖动。
重力 / 风力
固定或随机强度、方向,以及生命周期内强度曲线。
力场
中心 X/Y、强度(正吸负斥)、半径、衰减(恒定/线性/反比)。
吸附
延迟后把粒子吸到指定点,到达范围即死亡;可直线或曲线。
拖尾
独立拖尾图片(多资源按权重)、旋转、拖尾骨骼数、拖尾比例;长度/宽度可固定或随机并支持放大;可加生命周期长度曲线与形状曲线;颜色/透明度可跟随粒子、固定或曲线。
发射器跟随
跟随某条路径(局部/世界、正/反向、进度曲线),或跟随 Spine 骨骼(选中的骨骼 + 偏移)。
碰撞 + 阻尼
选择场景中已启用的碰撞对象参与,并设置速度阻尼。
',1)])],512),[[ws,s.value[6]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[7]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[7]?"true":"false",onClick:a[7]||(a[7]=l=>s.value[7]=!s.value[7])},[a[31]||(a[31]=T("span",{class:"mnum"},"8",-1)),a[32]||(a[32]=T("span",{class:"mtitle"},"导出设置",-1)),T("span",uF,ye(s.value[7]?"▾":"▸"),1)],8,hF),ce(T("div",dF,[...a[33]||(a[33]=[Qs('
图片路径
写入 Spine 的 images 路径,例如 ./images/。
Spine 版本
3.8 / 4.0 / 4.1 / 4.2 / 4.3。
关键帧曲线
线性或平滑贝塞尔;出生、死亡、突变仍使用阶跃关键帧。
导出 FPS
修改 FPS 会保持动画实际秒数不变;“不写 fps”只省略元数据。
其它
整数帧对齐、骨骼对象池、排除无内容动画。
导出按钮
“导出 Spine Json”生成骨骼动画文件;“导出 images 包”单独下载图片 ZIP;“导出 .spine 包”需要连接器。
',1)])],512),[[ws,s.value[7]]])],2),T("section",{class:Ae(["help-section help-module help-connector",{open:s.value[8]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[8]?"true":"false",onClick:a[8]||(a[8]=l=>s.value[8]=!s.value[8])},[a[34]||(a[34]=T("span",{class:"mnum"},"9",-1)),a[35]||(a[35]=T("span",{class:"mtitle"},"连接器(Spine 连接器)使用说明",-1)),T("span",mF,ye(s.value[8]?"▾":"▸"),1)],8,fF),ce(T("div",pF,[...a[36]||(a[36]=[Qs('

连接器用于把网页生成的 JSON 和图片,调用你电脑上已安装并激活的 Spine,转换成可编辑的 .spine 工程。

前置
电脑已安装并激活 Spine;并已启动桌面版连接器APP。
网页端
导出区状态显示“连接器可用 · Spine 已就绪”后,点击“导出 .spine 包”。
首次授权
生产网站首次连接会显示“授权当前网站”;点击后在本机确认页核对完整来源(协议 + 域名 + 端口),再点“允许此网站”。授权一次后本机会保存白名单。本地 127.0.0.1:5173 默认允许。
路径设置
连接器自动检测 Spine 安装位置;检测不到时可在桌面窗口手动指定:Windows 选 Spine.com,macOS 选 Spine.app/Contents/MacOS/Spine。
下载结果
得到 ZIP 包,内含 .spine 工程和图片目录(如 images/star.png)。
版本
连接器按请求与 JSON 内的版本自动匹配 3.8~4.3,使用最新可用补丁。
安全
仅监听本机 127.0.0.1:27843;授权与白名单保存在连接器里;文件在临时目录转换后清理,并有大小限制。
',2)])],512),[[ws,s.value[8]]])],2),a[38]||(a[38]=T("section",{class:"help-section help-export"},[T("h3",null,"配置与导出有什么区别?"),T("p",null,[T("b",null,"保存配置"),gt("会保存编辑器中的全部对象和参数,之后可以继续修改;"),T("b",null,"导出 Spine Json"),gt("只导出显示中的粒子系统,并把跟随、碰撞和拖尾结果烘焙为独立动画数据。")])],-1))])])])):xe("",!0)}}),Jt=(i,e)=>{const t=i.__vccOpts||i;for(const[s,n]of e)t[s]=n;return t},vF=Jt(gF,[["__scopeId","data-v-78204b9d"]]);function ia(i){const e=()=>{window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",e),window.removeEventListener("pointercancel",e)};window.addEventListener("pointermove",i),window.addEventListener("pointerup",e),window.addEventListener("pointercancel",e)}function ui(i,e,t){const s=i.holder.value,n=i.app(),r=s.getBoundingClientRect(),o=Math.max(1e-4,i.store.editor.viewScale),a=e-r.left,l=t-r.top;return{x:(a-n.screen.width/2-i.store.editor.viewX)/o,y:-(l-n.screen.height*.5-i.store.editor.viewY)/o}}function yF(i,e){const t=i.holder.value,s=i.app(),n=i.store,r=t.getBoundingClientRect(),o=e.clientX-r.left,a=e.clientY-r.top,l=e.deltaY<0?1.12:1/1.12,c=n.editor.viewScale,h=Math.max(.01,c*l),u=s.screen.width/2,d=s.screen.height*.5,f=n.editor.viewX,p=n.editor.viewY,m=(o-u-f)/c,g=(a-d-p)/c;n.editor.viewX=o-u-m*h,n.editor.viewY=a-d-g*h,n.editor.viewScale=h}function xF(i,e,t){const s=i.store,n=s.editor.viewX,r=s.editor.viewY;ia(o=>{s.editor.viewX=n+(o.clientX-e),s.editor.viewY=r+(o.clientY-t)})}function Uw(i,e){const t=Math.max(.01,i.store.editor.viewScale*e);i.store.editor.viewScale=t}function bF(i){Uw(i,1.2)}function wF(i){Uw(i,1/1.2)}function SF(i){i.store.editor.viewScale=1,i.store.editor.viewX=0,i.store.editor.viewY=0}function MF(i){i.store.editor.viewScale=1,i.store.editor.viewX=0,i.store.editor.viewY=0}function TF(i){i.store.settings.showGrid=!i.store.settings.showGrid}const _F={class:"topbar"},CF=["disabled"],AF={class:"tool-group"},EF={class:"tool-group"},IF={key:0,class:"background-panel"},RF=["disabled"],PF=["title"],kF={class:"background-position-row"},FF={class:"background-opacity-row"},OF={class:"zoom-pct"},LF=Zt({__name:"StageToolbar",props:{ctx:{},activeTool:{},showSettings:{type:Boolean},showHelp:{type:Boolean}},emits:["update:activeTool","update:showSettings","update:showHelp","clear-background","background-file"],setup(i,{emit:e}){const t=i,s=e,n=yo(),r=Fe(!1),o=Fe(null),a=De(()=>n.settings.backgroundImageName);function l(m){s("update:activeTool",t.activeTool===m?"":m)}function c(){r.value=!r.value,r.value&&s("update:showSettings",!1)}function h(){const m=!t.showSettings;s("update:showSettings",m),m&&(r.value=!1)}function u(){s("update:showHelp",!0),r.value=!1,s("update:showSettings",!1)}function d(m){s("background-file",m)}function f(m=!0){o.value&&(o.value.value=""),s("clear-background",m)}function p(){Dw()}return(m,g)=>(z(),J("div",_F,[T("button",{class:"settings-btn",onClick:h,title:"系统设置"},"系统设置"),T("button",{class:"undo-btn",disabled:I(gu).undoCount===0,onClick:p,title:"撤回上一步 (Ctrl+Z)"},"↶",8,CF),T("div",AF,[T("button",{class:Ae(["tool-btn",{on:i.activeTool===""}]),onClick:g[0]||(g[0]=y=>l("")),title:"拖动画布 (Q)"},"✋",2),T("button",{class:Ae(["tool-btn",{on:i.activeTool==="translate"}]),onClick:g[1]||(g[1]=y=>l("translate")),title:"位移 (W)"},"✥",2),T("button",{class:Ae(["tool-btn",{on:i.activeTool==="rotate"}]),onClick:g[2]||(g[2]=y=>l("rotate")),title:"旋转 (E)"},"⟳",2),T("button",{class:Ae(["tool-btn",{on:i.activeTool==="scale"}]),onClick:g[3]||(g[3]=y=>l("scale")),title:"缩放 (R)"},"⤢",2)]),T("div",EF,[T("button",{class:"tool-btn",onClick:g[4]||(g[4]=y=>I(bF)(i.ctx)),title:"放大"},"+"),T("button",{class:"tool-btn",onClick:g[5]||(g[5]=y=>I(wF)(i.ctx)),title:"缩小"},"-"),T("button",{class:"tool-btn",onClick:g[6]||(g[6]=y=>I(SF)(i.ctx)),title:"适配画布"},"⤢"),T("button",{class:Ae(["tool-btn",{on:I(n).settings.showGrid}]),onClick:g[7]||(g[7]=y=>I(TF)(i.ctx)),title:"切换网格"},"▦",2),T("button",{class:"tool-btn",onClick:g[8]||(g[8]=y=>I(MF)(i.ctx)),title:"重置视图"},"⟳")]),T("div",{class:"background-menu",onClick:g[14]||(g[14]=Ke(()=>{},["stop"]))},[T("button",{class:Ae(["background-btn",{on:r.value}]),title:"背景图显示设置",onClick:c},"背景图",2),r.value?(z(),J("div",IF,[T("button",{class:"background-upload",onClick:g[9]||(g[9]=y=>{var x;return(x=o.value)==null?void 0:x.click()})},ye(a.value?"更换图像":"上传图像"),1),T("button",{class:"background-clear",disabled:!a.value,onClick:g[10]||(g[10]=y=>f())},"清除背景",8,RF),T("input",{ref_key:"backgroundFileInput",ref:o,class:"background-file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:d},null,544),T("div",{class:"background-file-name",title:a.value},ye(a.value||"未上传图像"),9,PF),T("div",kF,[T("label",null,[g[15]||(g[15]=T("span",null,"X",-1)),ce(T("input",{"onUpdate:modelValue":g[11]||(g[11]=y=>I(n).settings.backgroundX=y),type:"number",step:"1","aria-label":"背景图 X 偏移"},null,512),[[je,I(n).settings.backgroundX,void 0,{number:!0}]])]),T("label",null,[g[16]||(g[16]=T("span",null,"Y",-1)),ce(T("input",{"onUpdate:modelValue":g[12]||(g[12]=y=>I(n).settings.backgroundY=y),type:"number",step:"1","aria-label":"背景图 Y 偏移"},null,512),[[je,I(n).settings.backgroundY,void 0,{number:!0}]])])]),T("label",FF,[g[17]||(g[17]=T("span",null,"透明度",-1)),ce(T("input",{"onUpdate:modelValue":g[13]||(g[13]=y=>I(n).settings.backgroundOpacity=y),type:"range",min:"0",max:"1",step:"0.01","aria-label":"背景图透明度"},null,512),[[je,I(n).settings.backgroundOpacity,void 0,{number:!0}]]),T("b",null,ye(Math.round(I(n).settings.backgroundOpacity*100))+"%",1)])])):xe("",!0)]),T("button",{class:Ae(["help-btn",{on:i.showHelp}]),title:"查看使用说明",onClick:u},"使用说明",2),T("span",OF,ye(Math.round(I(n).editor.viewScale*100))+"%",1)]))}}),BF=Jt(LF,[["__scopeId","data-v-4749834a"]]),NF={key:0,class:"settings-panel"},DF={class:"sp-head"},UF={class:"sp-switch-row"},$F={class:"sp-switch-control"},XF={class:"sp-row"},VF={class:"sp-chk"},YF={class:"sp-chk"},GF={class:"sp-row"},jF={class:"sp-row"},HF={class:"sp-chk"},WF={class:"sp-chk"},zF={class:"sp-row"},qF={class:"sp-row"},KF={class:"sp-row"},ZF={class:"sp-hex"},JF={class:"sp-chk"},QF=Zt({__name:"StageSettingsPanel",props:{show:{type:Boolean}},emits:["close"],setup(i,{emit:e}){const t=e,s=yo();function n(o){Dk(s,Number(o.target.value))}function r(){s.settings.bonePointDrawSize=Math.min(10,Math.max(.1,Number(s.settings.bonePointDrawSize)||1)),s.settings.boneAxisDrawSize=Math.min(10,Math.max(.1,Number(s.settings.boneAxisDrawSize)||2))}return(o,a)=>i.show?(z(),J("div",NF,[T("div",DF,[a[15]||(a[15]=gt("系统设置 ",-1)),T("button",{class:"sp-close",onClick:a[0]||(a[0]=l=>t("close"))},"✕")]),a[29]||(a[29]=T("div",{class:"sp-section-title"},"界面布局",-1)),T("label",UF,[a[17]||(a[17]=T("span",null,"参数面板位置",-1)),T("span",$F,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[1]||(a[1]=l=>I(s).settings.parameterPanelOnRight=l),"aria-label":"参数面板显示在右侧"},null,512),[[yt,I(s).settings.parameterPanelOnRight]]),a[16]||(a[16]=T("span",{class:"sp-switch-ui","aria-hidden":"true"},null,-1)),T("b",null,ye(I(s).settings.parameterPanelOnRight?"右侧":"左侧"),1)])]),a[30]||(a[30]=T("div",{class:"sp-divider"},null,-1)),a[31]||(a[31]=T("div",{class:"sp-section-title"},"操作历史",-1)),T("label",XF,[a[18]||(a[18]=T("span",null,"最大撤回步数",-1)),ce(T("input",{class:"sp-num sp-undo-limit",type:"number",min:"1",max:"200","onUpdate:modelValue":a[2]||(a[2]=l=>I(s).settings.undoLimit=l),"aria-label":"最大撤回步数",onChange:n},null,544),[[je,I(s).settings.undoLimit,void 0,{number:!0}]])]),a[32]||(a[32]=T("div",{class:"sp-divider"},null,-1)),a[33]||(a[33]=T("div",{class:"sp-section-title"},"画布辅助显示",-1)),T("label",VF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[3]||(a[3]=l=>I(s).settings.showEmitter=l)},null,512),[[yt,I(s).settings.showEmitter]]),a[19]||(a[19]=gt("发射点",-1))]),T("label",YF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[4]||(a[4]=l=>I(s).settings.showBones=l)},null,512),[[yt,I(s).settings.showBones]]),a[20]||(a[20]=gt("骨骼连线",-1))]),I(s).settings.showBones?(z(),J(Ce,{key:0},[T("label",GF,[a[21]||(a[21]=T("span",null,"骨骼点绘制大小",-1)),ce(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[5]||(a[5]=l=>I(s).settings.bonePointDrawSize=l),"aria-label":"骨骼点绘制大小",onChange:r},null,544),[[je,I(s).settings.bonePointDrawSize,void 0,{number:!0}]])]),T("label",jF,[a[22]||(a[22]=T("span",null,"坐标轴绘制大小",-1)),ce(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[6]||(a[6]=l=>I(s).settings.boneAxisDrawSize=l),"aria-label":"坐标轴绘制大小",onChange:r},null,544),[[je,I(s).settings.boneAxisDrawSize,void 0,{number:!0}]])])],64)):xe("",!0),T("label",HF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[7]||(a[7]=l=>I(s).settings.showSkinMesh=l)},null,512),[[yt,I(s).settings.showSkinMesh]]),a[23]||(a[23]=gt("蒙皮网格",-1))]),a[34]||(a[34]=T("div",{class:"sp-divider"},null,-1)),T("label",WF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[8]||(a[8]=l=>I(s).settings.tickEnabled=l)},null,512),[[yt,I(s).settings.tickEnabled]]),a[24]||(a[24]=gt("启用刻度",-1))]),I(s).settings.tickEnabled?(z(),J(Ce,{key:1},[T("label",zF,[a[25]||(a[25]=T("span",null,"刻度文字大小",-1)),ce(T("input",{type:"range",min:"8",max:"40",step:"1","onUpdate:modelValue":a[9]||(a[9]=l=>I(s).settings.axisFontSize=l)},null,512),[[je,I(s).settings.axisFontSize,void 0,{number:!0}]]),ce(T("input",{type:"number",min:"8",max:"40","onUpdate:modelValue":a[10]||(a[10]=l=>I(s).settings.axisFontSize=l),class:"sp-num"},null,512),[[je,I(s).settings.axisFontSize,void 0,{number:!0}]])]),T("label",qF,[a[26]||(a[26]=T("span",null,"刻度线粗细",-1)),ce(T("input",{type:"range",min:"1",max:"5",step:"0.5","onUpdate:modelValue":a[11]||(a[11]=l=>I(s).settings.tickWidth=l)},null,512),[[je,I(s).settings.tickWidth,void 0,{number:!0}]]),ce(T("input",{type:"number",min:"1",max:"5","onUpdate:modelValue":a[12]||(a[12]=l=>I(s).settings.tickWidth=l),class:"sp-num"},null,512),[[je,I(s).settings.tickWidth,void 0,{number:!0}]])]),T("label",KF,[a[27]||(a[27]=T("span",null,"坐标轴颜色",-1)),ce(T("input",{type:"color","onUpdate:modelValue":a[13]||(a[13]=l=>I(s).settings.axisColor=l),class:"sp-colr"},null,512),[[je,I(s).settings.axisColor]]),T("span",ZF,ye(I(s).settings.axisColor),1)]),T("label",JF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[14]||(a[14]=l=>I(s).settings.showAxisLabels=l)},null,512),[[yt,I(s).settings.showAxisLabels]]),a[28]||(a[28]=gt("显示刻度数值",-1))])],64)):xe("",!0),a[35]||(a[35]=T("div",{class:"sp-cache-note"},"整个系统设置会自动保存到当前浏览器",-1))])):xe("",!0)}}),e3=Jt(QF,[["__scopeId","data-v-1bba85d9"]]);class ff{constructor(){M(this,"sprite",null);M(this,"texture",null);M(this,"loadVersion",0)}createSprite(e){const t=new _r(ze.EMPTY);return t.anchor.set(.5),t.visible=!1,e.addChild(t),this.sprite=t,t}applyTransform(e,t,s){this.sprite&&(this.sprite.position.set(Number(e)||0,-(Number(t)||0)),this.sprite.alpha=Math.min(1,Math.max(0,Number(s)||0)))}async syncTexture(e){const t=++this.loadVersion;if(!e){this.sprite&&(this.sprite.texture=ze.EMPTY,this.sprite.visible=!1),this.texture&&this.texture.destroy(!0),this.texture=null;return}try{const s=await ze.fromURL(e);if(t!==this.loadVersion||!this.sprite){s.destroy(!0);return}const n=this.texture;this.texture=s,this.sprite.texture=s,this.sprite.visible=!0,n&&n.destroy(!0)}catch(s){console.error("背景图恢复失败",s)}}static clearStoreBackground(e,t){e.settings.backgroundImageData="",e.settings.backgroundImageName="",t&&(e.settings.backgroundX=0,e.settings.backgroundY=0,e.settings.backgroundOpacity=1)}static async handleFileChange(e,t){var r;const s=t.target,n=(r=s.files)==null?void 0:r[0];if(n)try{e.settings.backgroundImageData=await Dc(n),e.settings.backgroundImageName=n.name}catch(o){console.error("背景图加载失败",o)}finally{s.value=""}}destroy(){this.loadVersion++,this.texture&&this.texture.destroy(!0),this.texture=null,this.sprite=null}}class t3{constructor(e){M(this,"selectedNodes",new Set);M(this,"suppressNextDoubleClick",!1);this.ctx=e}resetSelection(){this.selectedNodes.clear()}activePath(){const e=this.ctx.store;if(e.activeObjectType!=="path")return null;const t=e.paths.find(s=>s.id===e.activeObjectId)||null;return(t==null?void 0:t.visible)===!1?null:t}pathInsertIndex(e,t,s){if(e.points.length<2)return e.points.length;const n=e.closed?e.points.length:e.points.length-1;let r=e.points.length,o=1/0;for(let a=0;aMath.hypot(l.x-n.x,l.y-n.y)<=r);if(o>=0){t.points.splice(o,1),this.selectedNodes.clear();return}const a=this.pathInsertIndex(t,n.x,n.y);t.points.splice(a,0,{x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0}),this.selectedNodes.clear(),this.selectedNodes.add(a)}onPointerDown(e){const t=this.activePath();if(!t||!t.enabled)return!1;const s=ui(this.ctx,e.clientX,e.clientY),n=Io(t,s.x,s.y),r=9/Math.max(.01,this.ctx.store.editor.viewScale);if(e.detail>=2){if(t.points.findIndex(u=>Math.hypot(u.x-n.x,u.y-n.y)<=r)>=0)return!0;const c={x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0},h=this.pathInsertIndex(t,n.x,n.y);return t.points.splice(h,0,c),this.selectedNodes.clear(),this.selectedNodes.add(h),this.suppressNextDoubleClick=!0,ia(u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y);c.outX=f.x-c.x,c.outY=f.y-c.y,c.inX=-c.outX,c.inY=-c.outY}),!0}let o=null;for(const l of this.selectedNodes){const c=t.points[l];c&&(Math.hypot(c.x+c.inX-n.x,c.y+c.inY-n.y)<=r&&(o={index:l,side:"in"}),Math.hypot(c.x+c.outX-n.x,c.y+c.outY-n.y)<=r&&(o={index:l,side:"out"}))}if(o){const l=t.points[o.index],c=o.side==="in"?Math.hypot(l.outX,l.outY):Math.hypot(l.inX,l.inY);return ia(u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y),p=f.x-l.x,m=f.y-l.y;if(o.side==="in"?(l.inX=p,l.inY=m):(l.outX=p,l.outY=m),!u.altKey){const g=Math.max(1e-4,Math.hypot(p,m)),y=u.shiftKey?g:c;o.side==="in"?(l.outX=-p/g*y,l.outY=-m/g*y):(l.inX=-p/g*y,l.inY=-m/g*y)}}),!0}const a=t.points.findIndex(l=>Math.hypot(l.x-n.x,l.y-n.y)<=r);if(a>=0){if(e.altKey)return this.selectedNodes.delete(a),!0;e.ctrlKey||e.metaKey?this.selectedNodes.add(a):this.selectedNodes.has(a)||(this.selectedNodes.clear(),this.selectedNodes.add(a));const l=n,c=[...this.selectedNodes].map(u=>({index:u,x:t.points[u].x,y:t.points[u].y}));return ia(u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y);for(const p of c)t.points[p.index].x=p.x+f.x-l.x,t.points[p.index].y=p.y+f.y-l.y}),!0}if(e.altKey&&!e.ctrlKey&&!e.metaKey)return this.selectedNodes.clear(),!0;if(e.ctrlKey||e.metaKey||e.altKey){const l=n,c=e.altKey,h=u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y),p=Math.min(l.x,f.x),m=Math.max(l.x,f.x),g=Math.min(l.y,f.y),y=Math.max(l.y,f.y);t.points.forEach((x,v)=>{x.x>=p&&x.x<=m&&x.y>=g&&x.y<=y&&(c?this.selectedNodes.delete(v):this.selectedNodes.add(v))}),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),!0}return!1}}class s3{constructor(e,t){this.ctx=e,this.getTool=t}onColliderPointerDown(e){const t=this.ctx.store;if(t.activeObjectType!=="collision")return!1;const s=t.colliders.find(x=>x.id===t.activeObjectId);if(!(s!=null&&s.enabled)||s.visible===!1)return!1;const n=ui(this.ctx,e.clientX,e.clientY),r=s.rotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),l=Math.max(1e-4,Math.abs(s.scaleX??1)),c=Math.max(1e-4,Math.abs(s.scaleY??1)),h=n.x-s.x,u=n.y-s.y,d=(o*h+a*u)/l,f=(-a*h+o*u)/c;if(!(s.shape==="circle"?Math.hypot(d,f)<=s.radius:s.shape==="ellipse"?Math.hypot(d/Math.max(1,s.radiusX),f/Math.max(1,s.radiusY))<=1:Math.abs(d)<=s.width*.5&&Math.abs(f)<=s.height*.5))return!1;const m=s.x,g=s.y,y=n;return ia(x=>{const v=ui(this.ctx,x.clientX,x.clientY);s.x=m+v.x-y.x,s.y=g+v.y-y.y}),!0}onForceFieldDown(e){const t=this.ctx.store.systems.find(h=>h.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const s=t==null?void 0:t.config;if(!(s!=null&&s.forceField)||!s.showForceFieldShape||s.forceRadius<=0)return!1;const n=ui(this.ctx,e.clientX,e.clientY);if(Math.hypot(n.x-s.forceCenterX,n.y-s.forceCenterY)>s.forceRadius)return!1;const o=s.forceCenterX,a=s.forceCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const l=h=>{const u=ui(this.ctx,h.clientX,h.clientY);s.forceCenterX=o+u.x-n.x,s.forceCenterY=a+u.y-n.y},c=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",c),window.removeEventListener("pointercancel",c)};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",c),window.addEventListener("pointercancel",c),e.preventDefault(),!0}onAttractionDown(e){const t=this.ctx.store.systems.find(u=>u.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const s=t==null?void 0:t.config;if(!(s!=null&&s.attraction)||!s.showAttractionShape)return!1;const n=ui(this.ctx,e.clientX,e.clientY),r=Math.max(s.attractionRadius,12/Math.max(1e-4,this.ctx.store.editor.viewScale));if(Math.hypot(n.x-s.attractionCenterX,n.y-s.attractionCenterY)>r)return!1;const a=s.attractionCenterX,l=s.attractionCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const c=u=>{const d=ui(this.ctx,u.clientX,u.clientY);s.attractionCenterX=a+d.x-n.x,s.attractionCenterY=l+d.y-n.y},h=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointermove",c),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),e.preventDefault(),!0}selectedTransformTarget(){const e=this.ctx.store,t=e.activeObjectId;if(e.activeObjectType==="particle"){const r=e.systems.find(a=>a.id===t);if(!r||r.visible===!1)return null;const o=r.config;return{x:o.centerX,y:o.centerY,rotation:o.rootRotation,scaleX:o.rootScaleX??1,scaleY:o.rootScaleY??1,setPosition:(a,l)=>{o.centerX=a,o.centerY=l},setRotation:a=>{o.rootRotation=a},setScale:(a,l)=>{o.rootScaleX=a,o.rootScaleY=l}}}const n=(e.activeObjectType==="collision"?e.colliders:e.activeObjectType==="path"?e.paths:e.spines).find(r=>r.id===t);return!n||n.visible===!1?null:{x:Number(n.x)||0,y:Number(n.y)||0,rotation:Number(n.rotation)||0,scaleX:Math.max(.05,Number(n.scaleX)||1),scaleY:Math.max(.05,Number(n.scaleY)||1),setPosition:(r,o)=>{n.x=r,n.y=o},setRotation:r=>{n.rotation=r},setScale:(r,o)=>{n.scaleX=r,n.scaleY=o}}}onGizmoDown(e){const t=this.selectedTransformTarget();if(!t)return;const s=this.ctx.app(),n=this.ctx.store,r=n.editor.viewScale,o=this.ctx.holder.value.getBoundingClientRect(),a=o.left+s.screen.width/2+n.editor.viewX+t.x*r,l=o.top+s.screen.height*.5+n.editor.viewY+-t.y*r,c=e.clientX,h=e.clientY,u=this.getTool(),d=t.x,f=t.y,p=t.rotation,m=t.scaleX,g=t.scaleY,y=Math.hypot(c-a,h-l)||1,x=Math.atan2(h-l,c-a);ia(w=>{const _=(w.clientX-c)/r,S=(w.clientY-h)/r;if(u==="translate")t.setPosition(d+_,f-S);else if(u==="rotate"){const b=Math.atan2(w.clientY-l,w.clientX-a);t.setRotation(p-(b-x)*180/Math.PI)}else if(u==="scale"){const A=Math.hypot(w.clientX-a,w.clientY-l)/y;t.setScale(Math.max(.05,m*A),Math.max(.05,g*A))}})}}function Zv(i,e,t,s,n){const r=1-n;return r*r*r*i+3*r*r*n*e+3*r*n*n*t+n*n*n*s}function Jv(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1));return{x:i.x+n*e*o-r*t*a,y:i.y+r*e*o+n*t*a}}function Rp(i,e){if(!i.points.length)return null;if(i.points.length===1)return{...Jv(i,i.points[0].x,i.points[0].y),angle:i.rotation};const t=i.closed?i.points.length:i.points.length-1,s=[];let n=0;for(let p=0;p0&&y===0)continue;const x=y/20,v=Zv(m.x,m.x+m.outX,g.x+g.inX,g.x,x),w=Zv(m.y,m.y+m.outY,g.y+g.inY,g.y,x),_=Jv(i,v,w),S=s[s.length-1];S&&(n+=Math.hypot(_.x-S.x,_.y-S.y)),s.push({..._,distance:n})}}const r=Math.min(1,Math.max(0,e))*n;let o=s.findIndex(p=>p.distance>=r);o<0&&(o=s.length-1);const a=s[o],l=s[Math.max(0,o-1)],c=s[Math.min(s.length-1,o+1)],h=l.distance,u=o>0?(r-h)/Math.max(1e-4,a.distance-h):0,d=l.x+(a.x-l.x)*Math.min(1,Math.max(0,u)),f=l.y+(a.y-l.y)*Math.min(1,Math.max(0,u));return{x:d,y:f,angle:Math.atan2(c.y-l.y,c.x-l.x)*180/Math.PI}}function i3(i,e,t){if(e.renderLayerMode!=="slot")return null;const s=i.find(o=>o.id===e.renderLayerSpineId&&o.enabled&&o.status==="ready");if(!s)return null;const n=s.slots||[],r=n.find(o=>o.name===e.renderLayerSlotName);if(!r)return null;if(e.renderLayerSlotPosition==="below"){let o="";if(t!=null&&t.length){const a=t.indexOf(r.name);if(a===0)return null;a>0&&(o=t[a-1])}if(!o){const a=n.filter(l=>l.orderc.order-l.order)[0];if(!a)return null;o=a.name}return{spineId:s.id,slotName:o,targetSlotName:r.name,followAttachment:!1}}return{spineId:s.id,slotName:r.name,targetSlotName:r.name,followAttachment:e.renderLayerFollowAttachment}}function Ah(i,e,t,s=Math.max(1e-4,Math.abs(i.rootScaleX)),n=Math.max(1e-4,Math.abs(i.rootScaleY))){const r=-i.rootRotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),l=e-i.centerX,c=-t+i.centerY;return{x:(o*l+a*c)/s,y:(-a*l+o*c)/n}}function n3(i,e,t){const s=Rp(e,t);if(!s)return null;const n=Ah(i,s.x,s.y),r=s.angle*Math.PI/180,o=Ah(i,s.x+Math.cos(r),s.y+Math.sin(r)),a=Math.atan2(o.y-n.y,o.x-n.x)*180/Math.PI;return{...n,angle:a}}function r3(i,e){return i.colliders.map(t=>{if(!t.followPath||!t.followPathId)return t;const s=i.paths.find(h=>h.id===t.followPathId&&h.enabled);if(!(s!=null&&s.points.length))return t;const n=Math.max(.05,Number(t.followDuration)||2),r=Math.min(1,Math.max(0,e/n)),o=Array.isArray(t.followCurve)?t.followCurve:[{x:0,y:0},{x:1,y:1}],a=t.followCurveMode==="跟随导出"?i.settings.exportSettings.keyframeCurve==="bezier"?"bezier":"linear":t.followCurveMode==="贝塞尔"?"bezier":"linear",l=Math.min(1,Math.max(0,C1(o,r,a))),c=Rp(s,l);return c?{...t,x:c.x,y:c.y,rotation:t.rotation+(t.followPathRotation?c.angle:0)}:t})}class o3{constructor(){M(this,"emitters",new Map);M(this,"configs",new Map);M(this,"slotGroups",new Map)}sync(e,t,s,n,r=null){for(const[a,l]of this.emitters){const c=e.systems.find(h=>h.id===a);(!c||this.configs.get(a)!==c.config)&&(l.removeFromParent(),l.destroy({children:!0}),this.emitters.delete(a),this.configs.delete(a))}for(const a of e.systems){s&&!a.config.texture&&(a.config.texture=s);const l=Dn(a.config);if(n)for(const h of l.trailResources)!h.texture&&(h.previewUrl==="/images/trail.png"||h.previewUrl==="/trails/trail.png")&&(h.texture=n);if(s)for(const h of l.imageResources)!h.texture&&h.textureName==="star"&&(h.texture=s);if(this.emitters.has(a.id))continue;const c=new Bv(a.config);t.addChild(c),this.emitters.set(a.id,c),this.configs.set(a.id,a.config)}const o=new Set;for(const a of e.systems){const l=this.emitters.get(a.id);if(!l)continue;const c=r&&a.config.renderLayerMode==="slot"?r.getDrawOrder(a.config.renderLayerSpineId):null,h=i3(e.spines,a.config,c),u=h&&r?this.ensureSlotGroup(h,r,a.config):null;u?(o.add(u.key),l.parent!==u.compensator&&u.compensator.addChild(l)):l.parent!==t&&t.addChild(l)}for(const[a,l]of[...this.slotGroups])if(!o.has(a)){for(const c of[...l.compensator.children])c instanceof Bv&&c.parent===l.compensator&&t.addChild(c);r==null||r.detachSlotObject(l.spineId,l.slotName,l.wrapper),l.wrapper.removeFromParent(),l.wrapper.removeChild(l.compensator),l.compensator.destroy(),l.wrapper.destroy(),this.slotGroups.delete(a)}}ensureSlotGroup(e,t,s){const n=`${e.spineId}:${e.targetSlotName}:${s.renderLayerSlotPosition}`;let r=this.slotGroups.get(n);if(!r){const o=new ps,a=new ps;o.addChild(a),r={key:n,spineId:e.spineId,slotName:e.slotName,wrapper:o,compensator:a,followAttachment:s.renderLayerFollowAttachment,attached:!1},this.slotGroups.set(n,r)}return(!r.attached||!r.wrapper.parent||r.slotName!==e.slotName)&&(r.wrapper.parent&&t.detachSlotObject(r.spineId,r.slotName,r.wrapper),r.slotName=e.slotName,r.attached=t.attachSlotObject(r.spineId,r.slotName,r.wrapper,e.followAttachment)),r.attached?r:null}updateRenderCompensation(e,t){if(t)for(const s of this.slotGroups.values()){if(!s.attached||!s.wrapper.parent)continue;const n=e.spines.find(o=>o.id===s.spineId);if(!n)continue;const r=t.getSlotParentMatrix(s.spineId,s.slotName,n);r&&(r.invert(),s.compensator.transform.setFromMatrix(r))}}destroy(e){for(const t of this.slotGroups.values()){for(const s of[...t.compensator.children])t.compensator.removeChild(s);t.wrapper.removeFromParent(),t.compensator.destroy(),t.wrapper.destroy()}this.slotGroups.clear();for(const[t,s]of this.emitters)s.removeFromParent(),s.destroy({children:!0}),this.emitters.delete(t),this.configs.delete(t)}}async function a3(){const[i,e]=await Promise.all([ze.fromURL("/images/star.png"),ze.fromURL("/images/trail.png")]);return{dotTex:i,trailTex:e}}function l3(i,e,t){for(const s of i.systems){s.config.texture=e;const n=Dn(s.config);if(t)for(const r of n.trailResources)!r.texture&&(r.previewUrl==="/images/trail.png"||r.previewUrl==="/trails/trail.png")&&(r.texture=t);for(const r of n.imageResources)!r.texture&&r.textureName==="star"&&(r.texture=e)}}const c3={class:"stage-wrap"},h3={key:0,class:"hud"},u3={class:"hud-number hud-system-count"},d3={class:"hud-number hud-particle-count"},f3=Zt({__name:"Stage",setup(i){const e=yo(),t=Fe(null),s=Fe(null),n=Fe(!1),r=Fe(!1),o=Fe(""),a=Fe(!1);e.settings.undoLimit>0||(e.settings.undoLimit=20),e.settings.parameterPanelOnRight==null&&(e.settings.parameterPanelOnRight=!0),Number.isFinite(e.settings.backgroundX)||(e.settings.backgroundX=0),Number.isFinite(e.settings.backgroundY)||(e.settings.backgroundY=0),Number.isFinite(e.settings.backgroundOpacity)||(e.settings.backgroundOpacity=1),e.settings.backgroundImageName==null&&(e.settings.backgroundImageName=""),e.settings.backgroundImageData==null&&(e.settings.backgroundImageData=""),e.settings.showEmitter==null&&(e.settings.showEmitter=!0),e.settings.showBones==null&&(e.settings.showBones=!1),e.settings.bonePointDrawSize>0||(e.settings.bonePointDrawSize=1),e.settings.boneAxisDrawSize>0||(e.settings.boneAxisDrawSize=2),e.settings.showSkinMesh==null&&(e.settings.showSkinMesh=!1),e.settings.showGrid==null&&(e.settings.showGrid=!0);let l=null,c=null,h=null,u=null,d=null,f=null,p=null,m=null,g=null,y=null,x=null,v=null,w=null,_=null,S=null,b=[],A=0,P=0,F=0,E=0,k=null,B=null;const D=new ff,X=new o3,N={store:e,holder:t,app:()=>l},U=new t3(N),C=new s3(N,()=>o.value);let R=[];const O=new Map;function L(){c=new ps,l.stage.addChild(c),_=new ps,l.stage.addChild(_),D.createSprite(c),w=new Ds,c.addChild(w),S=new qR,c.addChild(S.container),u=new Ds,c.addChild(u),h=new Ds,c.addChild(h),f=new Ds,c.addChild(f),p=new Ds,c.addChild(p),m=new Ds,c.addChild(m),g=new Ds,c.addChild(g),y=new Ds,c.addChild(y),x=new Ds,c.addChild(x),v=new Ds,c.addChild(v),d=new Ds,c.addChild(d)}function $(fe){if(fe.button===0){if(o.value&&C.selectedTransformTarget()){C.onGizmoDown(fe);return}U.onPointerDown(fe)||C.onColliderPointerDown(fe)||C.onAttractionDown(fe)||C.onForceFieldDown(fe)||xF(N,fe.clientX,fe.clientY)}}function V(fe){U.onStageDoubleClick(fe)}function j(fe){yF(N,fe)}function K(fe=!0){ff.clearStoreBackground(e,fe)}async function ie(fe){await ff.handleFileChange(e,fe)}$k({canvasElement:t,canvasFocused:a,undo:Dw,save:()=>kw(e),togglePlay:()=>e.togglePlay(),toStart:()=>e.toStart(),setTool:fe=>{o.value=fe}});function re(){c&&X.sync(e,c,k,B,S)}function pe(fe,Y,W,H){const G=Math.max(2,Math.floor(H)||2);if(fe.config.mode==="stream"&&fe.config.streamBehavior==="loop"){Xv(fe,Y,W,G);return}Y.reset();const q=1/Math.max(1,W),se=[];for(let ue=0;ue=Y)continue;const q=X.emitters.get(G.id);if(!q){W=!1;continue}pe(G,q,fe,Y)}W&&(e.timeline.recorded=!0)}function he(){var W,H,G,q;E=requestAnimationFrame(he);const fe=performance.now()/1e3;let Y=fe-A;if(A=fe,Y>.1&&(Y=.1),l&&c){c.scale.set(e.editor.viewScale),c.position.set(l.screen.width/2+e.editor.viewX,l.screen.height*.5+e.editor.viewY),D.applyTransform(e.settings.backgroundX,e.settings.backgroundY,e.settings.backgroundOpacity),PR(e,l,w,_,b);const se=Math.max(1,e.timeline.fps),ue=e.timeline.frame,ne=ue/se;S==null||S.sync(e.spines,ue,se),re(),X.updateRenderCompensation(e,S),R=r3(e,ne);for(const Be of e.systems){const Me=X.emitters.get(Be.id);if(!Me)continue;Me.setFollowExportCurveMode(e.settings.exportSettings.keyframeCurve==="bezier"?"贝塞尔":"线性");const nt=Be.visible!==!1;Me.visible=nt,Me.renderable=nt;const Te=Be.config;Me.scale.set(Te.rootScaleX,Te.rootScaleY);const gs=new Set(Te.collisionColliderIds);Me.setColliders(Te.collision?R.filter(Tt=>gs.has(Tt.id)):[]),Me.setEmitterFollowSpawn(0,0,0);let Ct={x:Te.centerX,y:Te.centerY,rotation:Te.rootRotation};const xt=Te.emitterFollow&&Te.emitterFollowMode==="bone"?e.spines.find(Tt=>Tt.id===Te.emitterFollowSpineId&&Tt.enabled&&Tt.status==="ready"):null,te=xt&&(S==null?void 0:S.getBoneWorldTransform(xt.id,Te.emitterFollowBoneName))||null,oe=Te.emitterFollow&&Te.emitterFollowMode==="path"?e.paths.find(Tt=>Tt.id===Te.emitterFollowPathId&&Tt.enabled):null,lt=Math.max(.05,Te.emitterFollowDuration),It=Math.min(1,Math.max(0,ne/lt)),Rt=Math.min(1,Math.max(0,C1(Te.emitterFollowCurve,It))),tt=Math.min(1,Math.max(0,Te.emitterFollowOffset)),ni=Te.emitterFollowDirection==="reverse"?(1-tt)*(1-Rt):tt+(1-tt)*Rt,rs=oe?Rp(oe,ni):null;if(te){const Tt=Te.emitterFollowBoneOffsetX,vi=Te.emitterFollowBoneOffsetY,As=te.x+Tt,os=te.y+vi,fn=Te.rootRotation+Te.emitterFollowBoneRotation,ri=Math.max(1e-4,Math.abs(Te.rootScaleX*Te.emitterFollowBoneScaleX)),Bi=Math.max(1e-4,Math.abs(Te.rootScaleY*Te.emitterFollowBoneScaleY));if(Ct={x:As,y:os,rotation:fn},Te.emitterFollowSpace==="local")Me.position.set(As,-os),Me.rotation=-fn*Math.PI/180,Me.scale.set(ri,Bi),Me.setSimulationTransform(As,os,fn,ri,Bi);else{Me.position.set(Te.centerX,-Te.centerY),Me.rotation=-Te.rootRotation*Math.PI/180,Me.scale.set(ri,Bi),Me.setSimulationTransform(Te.centerX,Te.centerY,Te.rootRotation,ri,Bi);const Ni=Ah(Te,As,os,ri,Bi),Er=-(fn-Te.rootRotation);Me.setEmitterFollowSpawn(Ni.x,Ni.y,Er)}}else if(rs){const Tt=rs.angle+(Te.emitterFollowDirection==="reverse"?180:0),vi=Te.emitterAngleMode==="direction"?Tt:Te.rootRotation;if(Ct={x:rs.x,y:rs.y,rotation:vi},Te.emitterFollowSpace==="local")Me.position.set(rs.x,-rs.y),Me.rotation=-vi*Math.PI/180,Me.setSimulationTransform(rs.x,rs.y,vi);else{Me.position.set(Te.centerX,-Te.centerY),Me.rotation=-Te.rootRotation*Math.PI/180,Me.setSimulationTransform(Te.centerX,Te.centerY,Te.rootRotation);const As=Ah(Te,rs.x,rs.y),os=Te.emitterAngleMode==="direction"?-(Tt-Te.rootRotation):0;Me.setEmitterFollowSpawn(As.x,As.y,os)}}else Me.position.set(Te.centerX,-Te.centerY),Me.rotation=-Te.rootRotation*Math.PI/180,Me.setSimulationTransform(Te.centerX,Te.centerY,Te.rootRotation);const ss=Te.shape==="path"&&Te.spawnPathId>0&&e.paths.find(Tt=>Tt.id===Te.spawnPathId&&Tt.enabled&&Tt.points.length>0)||null;Me.setSpawnPathSampler(ss?Tt=>n3(Te,ss,Tt):null,(ss==null?void 0:ss.closed)===!0),O.set(Be.id,Ct)}let de=0;const le=[],Re=e.settings.showBones&&e.activeObjectType==="particle"?e.activeObjectId:0,we=(Be,Me,nt)=>{!Be||Be.id!==Re||Be.visible===!1||YR(le,nt,Me.position.x,Me.position.y)},me=e.timeline,Ue=me.fps,Je=1/Math.max(1,Ue);let qe=F,Ze=0;if(me.playing?(P+=Y,Ze=Math.floor(P/Je),Ze>0&&(P-=Ze*Je)):(P=0,ge(Ue)),me.playing&&Ze>0)for(let Be=0;BeCt.id===e.activeId),nt=(Me==null?void 0:Me.config.mode)==="stream"&&Me.config.streamBehavior==="loop"?wp(Me.config,Ue):null,gs=me.loop&&(nt==null?void 0:nt.start)===me.playbackStart&&nt.end===me.playbackEnd?me.playbackEnd-1:me.playbackEnd;if(me.frame>gs)if(me.loop)me.frame=me.playbackStart;else{me.frame=me.playbackEnd,me.playing=!1;break}}else{for(const Me of e.systems){const nt=X.emitters.get(Me.id);if(!nt)continue;Me.config.mode==="stream"&&Me.config.streamBehavior==="loop"?(W=Me.frames)!=null&&W.length||Xv(Me,nt,Ue,me.totalFrames):me.frame===0&&nt.reset()}for(const[Me,nt]of X.emitters){const Te=e.systems.find(oe=>oe.id===Me),gs=(Te==null?void 0:Te.config.mode)==="stream"&&Te.config.streamBehavior==="loop",Ct=gs?(H=Te.frames)==null?void 0:H[me.frame]:void 0,xt=me.frame===0&&!gs,te=xt?[]:Ct||nt.update(Je);if(xt?nt.apply([]):Ct&&nt.apply(Ct),(Te==null?void 0:Te.visible)!==!1)for(const oe of te)oe.active&&we(Te,nt,oe);de+=te.length}for(const Me of e.systems){if(!Me.config.texture)continue;Me.frames=Me.frames||[];const nt=X.emitters.get(Me.id);nt&&!(Me.config.mode==="stream"&&Me.config.streamBehavior==="loop")&&(Me.frames[me.frame]=nt.capture())}me.frame++,me.frame>=me.totalFrames&&(me.frame=me.playbackStart,me.recorded=!0)}else{me.playing||(qe=me.frame);for(const Be of e.systems){const Me=X.emitters.get(Be.id),nt=me.playing?F:me.frame,Te=(q=Be.frames)==null?void 0:q[nt],gs=Be.config.mode==="stream"&&Be.config.streamBehavior==="loop"&&!!Te;if((me.recorded||gs)&&Me&&Te){Me.apply(Te);for(const Ct of Te)Ct.active&&(we(Be,Me,Ct),de++)}else if(Me){const Ct=me.frame===0?[]:Me.update(0);if(me.frame===0&&Me.apply([]),Be.visible!==!1)for(const xt of Ct)xt.active&&we(Be,Me,xt);de+=Me.activeCount}}}F=qe,S==null||S.sync(e.spines,qe,Ue);for(const[,Be]of X.emitters)Be.drawTrailMeshDebug(e.settings.showSkinMesh);XR(e,R,y),VR(e,U.selectedNodes,x),DR(e,S,u),kR(e,O,h),FR(e,O,f),OR(e,p),LR(e,m),BR(e,g),UR(o,C.selectedTransformTarget.bind(C),v),GR(le,e,d),s.value&&(s.value.systems=e.systems.length,s.value.particles=de)}}return Oi(async()=>{const fe=t.value;l=new qb({width:fe.clientWidth||800,height:fe.clientHeight||600,backgroundAlpha:0,antialias:!0}),fe.appendChild(l.view),L(),Cs(()=>e.settings.backgroundImageData,W=>D.syncTexture(W),{immediate:!0});const Y=await a3();k=Y.dotTex,B=Y.trailTex,l3(e,k,B),s.value={systems:e.systems.length,particles:0},e.timeline.recorded=!1,e.timeline.frame=0,P=0,F=0,e.timeline.playing=!0,e.timeline.loop=!0;for(const W of e.systems)W.frames=[];e.recalcTotalFrames(),A=performance.now()/1e3,he(),Cs(()=>e.systems.map(W=>JSON.stringify(W.config,(H,G)=>H==="texture"||H==="trailTexture"||H==="previewUrl"?void 0:G)).join("|")+`|colliders:${JSON.stringify(e.colliders)}|paths:${JSON.stringify(e.paths)}`,()=>{e.recalcTotalFrames(),e.timeline.recorded=!1,e.timeline.frame=0;for(const W of e.systems)W.frames=[];e.timeline.playing=!0,e.timeline.loop=!0}),Nk(e)}),Cl(()=>{cancelAnimationFrame(E),S==null||S.destroy(),S=null,D.destroy(),c&&l&&X.destroy(c),l&&(l.destroy(!0,{children:!0}),l=null)}),Cs(()=>[e.activeObjectType,e.activeObjectId],()=>U.resetSelection()),(fe,Y)=>(z(),J("div",c3,[T("div",{ref_key:"holder",ref:t,class:Ae(["stage-holder",{grid:I(e).settings.showGrid}]),tabindex:"0",onWheel:Ke(j,["prevent"]),onPointerdown:$,onDblclick:Ke(V,["prevent"])},null,34),be(BF,{ctx:N,"active-tool":o.value,"show-settings":n.value,"show-help":r.value,"onUpdate:activeTool":Y[0]||(Y[0]=W=>o.value=W),"onUpdate:showSettings":Y[1]||(Y[1]=W=>n.value=W),"onUpdate:showHelp":Y[2]||(Y[2]=W=>r.value=W),onClearBackground:K,onBackgroundFile:ie},null,8,["active-tool","show-settings","show-help"]),be(e3,{show:n.value,onClose:Y[3]||(Y[3]=W=>n.value=!1)},null,8,["show"]),be(vF,{show:r.value,onClose:Y[4]||(Y[4]=W=>r.value=!1)},null,8,["show"]),s.value?(z(),J("div",h3,[Y[5]||(Y[5]=gt(" 系统: ",-1)),T("b",u3,ye(s.value.systems),1),Y[6]||(Y[6]=gt(" · 粒子(骨骼): ",-1)),T("b",d3,ye(s.value.particles),1),Y[7]||(Y[7]=gt(" · 根骨骼: ",-1)),Y[8]||(Y[8]=T("b",null,"root",-1)),Y[9]||(Y[9]=T("span",{class:"hud-tip"},"滚轮缩放 · 左键拖动画布",-1))])):xe("",!0)]))}}),m3=Jt(f3,[["__scopeId","data-v-38dbe6fc"]]),p3=[{x:0,y:0},{x:1,y:1}],wm=[{x:0,y:1},{x:1,y:1}],g3=[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],Sm=[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}],Mm=[{x:0,y:1},{x:1,y:1}],Tm=[{x:0,y:1},{x:1,y:1}],Qt=mo({visible:!1,title:"",detail:"",progress:0,indeterminate:!1,failed:!1});let bc=0;function v3(i){return new Promise(e=>window.setTimeout(e,i))}function $w(i,e){const t=++bc,s=performance.now();Object.assign(Qt,{visible:!0,title:i,detail:e,progress:0,indeterminate:!1,failed:!1});const n=(o,a)=>{t===bc&&(Qt.indeterminate=o==null,o!=null&&(Qt.progress=Math.min(100,Math.max(0,o))),a&&(Qt.detail=a))},r=async(o,a)=>{if(t!==bc)return;Qt.failed=o,Qt.indeterminate=!1,Qt.progress=o?Qt.progress:100,Qt.detail=a,await v3(Math.max(180,(o?850:450)-(performance.now()-s))),t===bc&&(Qt.visible=!1)};return{update:n,paint:()=>new Promise(o=>requestAnimationFrame(()=>o())),finish:(o="已完成")=>r(!1,o),fail:(o="操作失败")=>r(!0,o)}}async function y3(i,e){if(!i.body)return e(null),i.text();const t=Number(i.headers.get("content-length")),s=Number.isFinite(t)&&t>0,n=i.body.getReader(),r=new TextDecoder;let o=0,a="";for(e(s?0:null);;){const{done:l,value:c}=await n.read();if(l)break;o+=c.byteLength,a+=r.decode(c,{stream:!0}),e(s?Math.min(1,o/t):null)}return a+=r.decode(),s&&e(1),a}const x3="3.8";function di(i,e,t){i[e]==null&&i[t]!=null&&(i[e]=i[t]),delete i[t]}function _m(i){if(!i||typeof i!="object")return;if(Array.isArray(i)){for(const t of i)_m(t);return}const e=i;Array.isArray(e.curve)&&delete e.curve;for(const t of Object.values(e))_m(t)}function b3(i){for(const e of i.bones)di(e,"transform","inherit");for(const e of i.transform||[])di(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),e.scaleMix==null&&(e.scaleMix=e.mixScaleX??e.mixScaleY),di(e,"shearMix","mixShearY"),delete e.mixX,delete e.mixY,delete e.mixScaleX,delete e.mixScaleY;for(const e of i.path||[])di(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),delete e.mixX,delete e.mixY;for(const e of i.skins)for(const t of Object.values(e.attachments||{}))for(const s of Object.values(t||{}))s.parent!=null&&di(s,"deform","timelines")}function w3(i){for(const e of Object.values(i.slots||{}))di(e,"color","rgba"),di(e,"twoColor","rgba2")}function S3(i){for(const e of Object.values(i.bones||{}))for(const t of e.rotate||[])di(t,"angle","value")}function M3(i){for(const e of Object.values(i.transform||{}))for(const t of e)di(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),t.scaleMix==null&&(t.scaleMix=t.mixScaleX??t.mixScaleY),di(t,"shearMix","mixShearY"),delete t.mixX,delete t.mixY,delete t.mixScaleX,delete t.mixScaleY}function T3(i){for(const e of Object.values(i.path||{})){for(const t of["position","spacing"])for(const s of e[t]||[])di(s,t,"value");for(const t of e.mix||[])di(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),delete t.mixX,delete t.mixY}}function _3(i){if(!i.attachments)return;const e=i.deform||(i.deform={});for(const[t,s]of Object.entries(i.attachments)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(s)){const a=n[r]||(n[r]={});for(const[l,c]of Object.entries(o))c.deform&&(a[l]=c.deform)}}delete i.attachments}function C3(i){i.skeleton.spine=x3,b3(i);for(const e of Object.values(i.animations))w3(e),S3(e),M3(e),T3(e),_3(e);return _m(i.animations),i}function A3(i,e,t,s,n=!1){if(n){let l=0;for(let c=0;c[...n].sort((a,l)=>a-l);let o=!0;for(;o;){o=!1;const a=r();for(let l=0;lf&&(f=m,d=p)}d>=0&&(n.add(d),o=!0)}}return r().map(a=>i[a])}function Qv(i,e,t,s,n){const r=t-e+1;if(r<2)return 0;const o=n?e:t,a=n?e+1:t-1,l=n?e+2:t-2,c=Math.abs(i[a].frame-i[o].frame);if(r>=3&&c>0&&Math.abs(Math.abs(i[l].frame-i[a].frame)-c)<1e-6){const u=i[o].values[s],d=i[a].values[s],f=i[l].values[s];return n?(-3*u+4*d-f)/(2*c):(3*u-4*d+f)/(2*c)}const h=i[a].frame-i[o].frame;return h?(i[a].values[s]-i[o].values[s])/h:0}function ey(i,e,t){const s=i[t].frame-i[e].frame,n=[];for(let r=0;rd.values[r])),c=Math.max(...i.slice(e,t+1).map(d=>d.values[r])),h=o+Qv(i,e,t,r,!0)*s/3,u=a-Qv(i,e,t,r,!1)*s/3;n.push([Math.max(l,Math.min(c,h)),Math.max(l,Math.min(c,u))])}return{values:n}}function E3(i,e,t,s,n){const r=1-n;return r*r*r*i+3*r*r*n*e+3*r*n*n*t+n*n*n*s}function I3(i,e,t,s,n,r=!1){if(r){let c=0;for(let h=0;h[...n].sort((l,c)=>l-c);let o=!0;for(;o;){o=!1;const l=r();for(let c=0;cm&&(m=y,p=g)}p>=0&&(n.add(p),o=!0)}}const a=r();return{samples:a.map(l=>i[l]),controls:a.slice(0,-1).map((l,c)=>ey(i,l,a[c+1]))}}function R3(i){if(!i.length)return[];const e=[i[0]];for(let t=1;t180;)s-=360;for(;s-e[t-1]<-180;)s+=360;e.push(s)}return e}function ns(i){if(!Number.isFinite(i))return 0;const e=Math.round(i*1e5)/1e5;return Object.is(e,-0)?0:e}function P3(i,e,t,s){const n=Math.max(2,Math.min(16,Math.round(Number(i.trailGridRows)||2))),r=Math.max(2,Math.min(32,Math.round(Number(i.trailGridCols)||2))),o=Math.max(2,t.length),a=e.lengthMode==="random"?Math.max(1,Number(e.lengthMin)||0,Number(e.lengthMax)||0):Math.max(.001,Number(e.length)||100),l=e.widthSizeMode==="random"?Math.max(1,Number(e.widthMin)||0,Number(e.widthMax)||0):Math.max(.001,Number(e.width)||100),c=(Number(e.rotation)||0)*Math.PI/180,h=Math.cos(c),u=Math.sin(c),d=[],f=[],p=[],m=[],g=[];for(let v=0;v=0;v--)g.push({col:v,row:n-1});for(let v=n-2;v>=1;v--)g.push({col:0,row:v});const y=g.length;for(let v=1;v|\s]+/g,"_").replace(/^_+|_+$/g,"")||e}function Yw(i,e){let t=i,s=2;for(;e.has(t);)t=`${i}_${s++}`;return e.add(t),t}function F3(i){return i.replace(/\.[^./\\]+$/,"")}function Gw(i,e){return F3([i,e].filter(Boolean).join("/").replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/^\.\//,""))}function O3(i){var s,n;const e=Number(((s=i==null?void 0:i.orig)==null?void 0:s.width)??(i==null?void 0:i.width))||0,t=Number(((n=i==null?void 0:i.orig)==null?void 0:n.height)??(i==null?void 0:i.height))||0;return{width:e,height:t}}function Sc(i){return Math.round(Math.max(0,Math.min(1,i))*255).toString(16).padStart(2,"0")}function ry(i,e){return[(i>>16&255)/255,(i>>8&255)/255,(i&255)/255,Math.max(0,Math.min(1,e))]}function tl(i,e){return ns(i/e)}function L3(i,e){const t=i.config,s=t.lifeMode==="fixed"?Math.max(0,Number(t.lifeMin)||0):Math.max(0,Number(t.lifeMin)||0,Number(t.lifeMax)||0),n=Math.max(0,Number(t.delay)||0);let r;return t.mode!=="stream"?r=n+s:t.streamBehavior!=="loop"?r=n+Math.max(1/e,Number(t.duration)||0)+s:r=n+pr(t,e).total/e,Math.max(1,Math.ceil(r*e)+1)}function B3(i,e,t){const s=i.config;if(s.mode!=="stream"||s.streamBehavior!=="loop")return new Set;const n=wp(s,e),r=Math.max(1,t)/Math.max(1,e);return new Set([Math.round(n.start*r),Math.round(n.end*r)])}function Eh(i,e){return e?i.boneName:`${i.spawnId??"legacy"}_${i.boneName}`}function N3(i,e,t,s){const n=new Set;for(const r of i)for(const o of r)n.add(Eh(o,e));return[...n].sort().map((r,o)=>({key:r,name:Yw(`${s}_${o}`,t),states:i.map(a=>a.find(l=>Eh(l,e)===r)||null)}))}function oy(i,e){const t=new Set(e.states.map(s=>s==null?void 0:s.resourceId).filter(s=>typeof s=="number"));return i.config.imageResources.filter(s=>t.has(s.id))}function D3(i,e,t,s){const n=e*t/s,r=Math.min(i.states.length-1,Math.max(0,Math.floor(n))),o=Math.min(i.states.length-1,r+1),a=i.states[r],l=i.states[o];if(!a||!l||Eh(a,!0)!==Eh(l,!0)||a.spawnId!==l.spawnId)return a;const c=n-r;if(c<=1e-6)return a;const h=(d,f)=>(d??0)+((f??d??0)-(d??0))*c,u=a.trailState&&l.trailState&&a.trailState.resourceId===l.trailState.resourceId?{...a.trailState,width:h(a.trailState.width,l.trailState.width),alpha:h(a.trailState.alpha,l.trailState.alpha),bones:a.trailState.bones.map((d,f)=>{const p=l.trailState.bones[f]||d;return{...d,worldX:h(d.worldX??d.x,p.worldX??p.x),worldY:h(d.worldY??d.y,p.worldY??p.y),worldRotation:h(d.worldRotation??-d.rotation,p.worldRotation??-p.rotation)}})}:a.trailState;return{...a,worldX:h(a.worldX,l.worldX),worldY:h(a.worldY,l.worldY),worldRotation:h(a.worldRotation,l.worldRotation),worldScaleX:h(a.worldScaleX,l.worldScaleX),worldScaleY:h(a.worldScaleY,l.worldScaleY),alpha:h(a.alpha,l.alpha),trailState:u}}function ay(i,e){return!i||i==="跟随导出"?e.keyframeCurve:i==="贝塞尔"?"bezier":"linear"}function Po(i,e,t,s,n,r=new Set,o=new Set,a=n.keyframeCurve){if(!i.length)return[];const l=new Set(r);for(const u of o)l.add(u);const c=a==="bezier"&&n.spineVersion!=="3.8"?Vw(i,s,l,o):{samples:Xw(i,s,l,o),controls:[]},h=c.samples.map(u=>{const d={time:tl(u.frame,e)};return t.forEach((f,p)=>{d[f]=ns(u.values[p])}),o.has(u.frame)&&(d.curve="stepped"),d});for(let u=0;u0&&n&&e.add(t-1),s&&e.add(t))}return e}function $3(i){const e=new Set;for(let t=0;t0&&n&&e.add(t-1),s&&e.add(t))}return e}function Y3(i,e){var s;if(!i.shapeEnabled||!((s=i.shapeCurve)!=null&&s.length))return 1;const t=[...i.shapeCurve].sort((n,r)=>n.x-r.x);if(e<=t[0].x)return Math.max(0,t[0].y);for(let n=1;n{(o!==r||s.has(a))&&(n.push(t(o,a)),r=o)}),n}function j3(i,e,t){const s=i.imageMode==="sequence"?i.sequenceFrames[e]:void 0,n=(s==null?void 0:s.name)||i.textureName||`image_${i.id}`,r=(s==null?void 0:s.texture)||i.texture,o=O3(r);(!o.width||!o.height)&&t.push({code:"missing-image",message:`图片“${n}”缺失或尺寸不可读,已保留路径。`});const a=o.width||1,l=o.height||1;return{path:Gw(i.textureFolder,n),x:ns((.5-i.anchorX)*a),y:ns((i.anchorY-.5)*l),width:ns(a),height:ns(l)}}function ly(i,e){const t=[];for(const n of e){const r=n.imageMode==="sequence"?Math.max(1,n.sequenceFrames.length):1;for(let o=0;o1;return new Map(t.map((n,r)=>[n,s?`${i}_${r}`:i]))}function H3(i,e,t,s,n=s.keyframeCurve,r=new Set,o=new Set){if(!i.length)return[];const a=new Set;for(let d=1;d({frame:f,values:d})),c=1/255,h=n==="bezier"&&s.spineVersion!=="3.8"?Vw(l,[c,c,c,.01],a,r):{samples:Xw(l,[c,c,c,.01],a,r),controls:[]},u=h.samples.map(d=>{const f={time:tl(d.frame,t),color:`${Sc(d.values[0])}${Sc(d.values[1])}${Sc(d.values[2])}${Sc(d.values[3])}`};return r.has(d.frame)&&(f.curve="stepped"),f});if(h.controls.length)for(let d=0;d({time:tl(p,n),name:f??null}),l);h.length&&(c.attachment=h);const u=H3(s,t,n,r,o,a,l);u.length&&(c.rgba=u)}function hy(i){var p;const e=i.settings,t=Math.max(1,Number(i.timeline.fps)||30),s=Math.max(1,Math.round(e.fps||30)),n=e.integerFrameAlignment?s:t,r=[],o=i.systems.filter(m=>m.visible!==!1),a={skeleton:{hash:"",spine:e.spineVersion,x:0,y:0,width:0,height:0,images:e.imagesPath||"./images/"},bones:[{name:"root"}],slots:[],skins:[{name:"default",attachments:{}}],animations:{}};e.omitFps||(a.skeleton.fps=s);const l=a.skins[0].attachments,c=new Set(["root"]),h=[...new Set([...i.timeline.animations.length?i.timeline.animations:["animation"],...o.map(m=>m.animation||"animation")])],u=new Map;for(const m of o){const g=Math.min(((p=m.frames)==null?void 0:p.length)||0,L3(m,t)),y=(m.frames||[]).slice(0,g);y.length||r.push({code:"empty-cache",message:`“${m.config.name}”没有可用帧缓存。`});const x=Yw(k3(m.config.name,`system_${m.id}`),c);a.bones.push({name:x,parent:"root"});const v=N3(y,e.bonePool,c,x),w=Math.max(0,(g-1)/t),_=Math.max(1,Math.ceil(w*n)+1),S=B3(m,t,n),b=u.get(m.animation)||[];b.push({system:m,tracks:v,targetFrames:_,boundaryFrames:S,attachmentPrefix:x}),u.set(m.animation,b);for(const A of v){a.bones.push({name:A.name,parent:x});const P=oy(m,A),F=new Set(P.map(X=>X.blend)),E=[],k=[];for(const X of F){const N=`${A.name}_${X}`;E.push(N),a.slots.push({name:N,bone:A.name,color:"ffffff00",blend:ty[X]});const U=l[N]||(l[N]={}),C=P.filter(O=>O.blend===X),R=ly(x,C);for(const O of C){const L=O.imageMode==="sequence"?Math.max(1,O.sequenceFrames.length):1;for(let $=0;${var $;return(($=L==null?void 0:L.trailState)==null?void 0:$.resourceId)===X.id}))continue;const N=Math.max(2,Math.min(16,Math.round(X.boneCount||3))),U=[];for(let L=0;La.bones.findIndex($=>$.name===L)),O=Gw("",X.textureName||`trail_${X.id}`);(l[C]||(l[C]={}))[`trail_${X.id}`]=P3(m.config,X,R,O),X.texture||r.push({code:"missing-image",message:`拖尾图片“${X.textureName||X.id}”缺失,已保留路径。`})}const B=new Set([...E,...k]),D=a.slots.filter(X=>B.has(String(X.name)));D.length&&(a.slots=a.slots.filter(X=>!D.includes(X)),a.slots.push(...D.filter(X=>k.includes(String(X.name))),...D.filter(X=>E.includes(String(X.name)))))}}for(const m of h){const g=u.get(m)||[],y={bones:{},slots:{}};let x=!1;for(const{system:v,tracks:w,targetFrames:_,boundaryFrames:S,attachmentPrefix:b}of g)for(const A of w){const P=Array.from({length:_},(j,K)=>D3(A,K,t,n)),F=P.map(j=>!!(j!=null&&j.active)),E=[],k=[],B=[];P.forEach((j,K)=>{j!=null&&j.active&&(E.push({frame:K,values:[j.worldX??j.x,j.worldY??j.y]}),k.push(j.worldRotation??j.rotation),B.push({frame:K,values:[j.worldScaleX??j.scaleX,j.worldScaleY??j.scaleY]}))});const D=R3(k),X=E.map((j,K)=>({frame:j.frame,values:[D[K]??0]})),N=U3(P);for(const j of S)N.add(j);const U=$3(P),C={},R=Po(E,n,["x","y"],[sy,sy],e,N,U),O=Po(X,n,["value"],[ny],e,N,U),L=Po(B,n,["x","y"],[wc,wc],e,N,U);R.length&&(C.translate=R),O.length&&(C.rotate=O),L.length&&(C.scale=L),Object.keys(C).length&&(y.bones[A.name]=C,x=!0);const $=oy(v,A),V=new Set($.map(j=>j.blend));for(const j of V){const K=$.filter(Y=>Y.blend===j),ie=ly(b,K),re=[],pe=[];let ge=16777215;for(let Y=0;Y<_;Y++){const W=P[Y],H=W?v.config.imageResources.find(se=>se.id===W.resourceId):void 0,G=!!W&&F[Y]&&W.imageVisible!==!1&&(H==null?void 0:H.blend)===j;W&&(H==null?void 0:H.blend)===j&&(ge=W.colorHex);const q=G?ie.get(`${H.id}_${W.imageFrameIndex??0}`):void 0;re.push(q??null),pe.push(ry(ge,G?W.alpha:0))}const he=K.filter(Y=>Y.independentAlpha==="curve").map(Y=>ay(Y.alphaCurveMode,e)),fe=he.length?he.includes("bezier")?"bezier":"linear":ay(v.config.alphaMode==="curve"?v.config.curveMode:void 0,e);cy(y,`${A.name}_${j}`,re,pe,n,e,fe,U,S),re.some(Boolean)&&(x=!0)}if(v.config.trail)for(const j of v.config.trailResources){const K=Math.max(2,Math.min(16,Math.round(j.boneCount||3))),ie=P.map(q=>{var se;return((se=q==null?void 0:q.trailState)==null?void 0:se.resourceId)===j.id?q.trailState:void 0}),re=ie.find(q=>!!q);if(!re)continue;const pe=V3(ie),ge=X3(ie),he=j.widthSizeMode==="random"?Math.max(1,Number(j.widthMin)||0,Number(j.widthMax)||0):Math.max(.001,Number(j.width)||100);let fe=re;const Y=ie.map(q=>(q&&(fe=q),fe));for(let q=0;q{const Be=qe==null?void 0:qe.bones[Math.min(qe.bones.length-1,q)];if(!Be)return;const Me={x:Be.worldX??Be.x,y:Be.worldY??Be.y,rotation:Be.worldRotation??-Be.rotation};se.push({frame:Ze,values:[Me.x,Me.y]}),ue.push({frame:Ze,values:[Me.rotation]}),ne.push({frame:Ze,values:[1,Math.max(0,qe.width/he)*le]})});const Re=`${A.name}_trail_${j.id}_${q}`,we={},me=Po(se,n,["x","y"],[iy,iy],e,de,ge),Ue=Po(ue,n,["value"],[ny],e,de,ge),Je=Po(ne,n,["x","y"],[wc,wc],e,de,ge);me.length&&(we.translate=me),Ue.length&&(we.rotate=Ue),Je.length&&(we.scale=Je),Object.keys(we).length&&(y.bones[Re]=we)}const W=ie.map(()=>`trail_${j.id}`);let H=re.colorHex;const G=ie.map(q=>(q&&(H=q.colorHex),ry(H,q?q.alpha:0)));cy(y,`${A.name}_trail_${j.id}`,W,G,n,e,e.keyframeCurve,ge,S),x=!0}}(x||!e.excludeEmptyAnimations)&&(a.animations[m]=y)}!Object.keys(a.animations).length&&!e.excludeEmptyAnimations&&(a.animations.animation={bones:{},slots:{}});const d=e.spineVersion==="3.8"?C3(a):a,f=JSON.stringify(d,null,2);return{json:d,text:f,warnings:r,particleSystemCount:o.length,animationCount:Object.keys(d.animations).length,boneCount:d.bones.length}}function W3(i,e){const t=new Blob([i.text],{type:"application/json;charset=utf-8"}),s=URL.createObjectURL(t),n=document.createElement("a");n.href=s,n.download=/\.json$/i.test(e)?e:`${e||"SpineParticle"}.json`,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(s),1e3)}class j6{constructor(){M(this,"array",[])}add(e){const t=this.contains(e);return this.array[e|0]=e|0,!t}contains(e){return this.array[e|0]!==void 0}remove(e){this.array[e|0]=void 0}clear(){this.array.length=0}}class z3{constructor(){M(this,"entries",{});M(this,"size",0)}add(e){const t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){const t=this.size;for(let s=0,n=e.length;s1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>`0${(t*255).toString(16)}`.slice(-2);return+`0x${e(this.r)}${e(this.g)}${e(this.b)}`}static fromString(e,t=new Js){return t.setFromString(e)}};M(Js,"WHITE",new Js(1,1,1,1)),M(Js,"RED",new Js(1,0,0,1)),M(Js,"GREEN",new Js(0,1,0,1)),M(Js,"BLUE",new Js(0,0,1,1)),M(Js,"MAGENTA",new Js(1,0,1,1));let st=Js;const Ht=class Ht{static clamp(e,t,s){return es?s:e}static cosDeg(e){return Math.cos(e*Ht.degRad)}static sinDeg(e){return Math.sin(e*Ht.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*Ht.radDeg}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){const t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return Ht.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,s){const n=Math.random(),r=t-e;return n<=(s-e)/r?e+Math.sqrt(n*r*(s-e)):t-Math.sqrt((1-n)*r*(t-s))}static isPowerOfTwo(e){return e&&(e&e-1)===0}};M(Ht,"epsilon",1e-5),M(Ht,"epsilon2",Ht.epsilon*Ht.epsilon),M(Ht,"PI",3.1415927),M(Ht,"PI2",Ht.PI*2),M(Ht,"invPI2",1/Ht.PI2),M(Ht,"radiansToDegrees",180/Ht.PI),M(Ht,"radDeg",Ht.radiansToDegrees),M(Ht,"degreesToRadians",Ht.PI/180),M(Ht,"degRad",Ht.degreesToRadians);let Ee=Ht;const ai=class ai{apply(e,t,s){return t===void 0||s===void 0?this.applyInternal(e):e+(t-e)*this.applyInternal(s)}};M(ai,"linear",new class extends ai{applyInternal(e){return e}}),M(ai,"smooth",new class extends ai{applyInternal(e){return e*e*(3-2*e)}}),M(ai,"slowFast",new class extends ai{applyInternal(e){return e*e}}),M(ai,"fastSlow",new class extends ai{applyInternal(e){return(e-1)*(e-1)*-1+1}}),M(ai,"circle",new class extends ai{applyInternal(e){return e<=.5?(e*=2,(1-Math.sqrt(1-e*e))/2):(e--,e*=2,(Math.sqrt(1-e*e)+1)/2)}});let na=ai;class q3 extends na{constructor(t){super();M(this,"power",2);this.power=t}applyInternal(t){return t<=.5?Math.pow(t*2,this.power)/2:Math.pow((t-1)*2,this.power)/(this.power%2===0?-2:2)+1}}class H6 extends q3{constructor(e){super(e)}applyInternal(e){return Math.pow(e-1,this.power)*(this.power%2===0?-1:1)+1}}const or=class or{static arrayCopy(e,t,s,n,r){for(let o=t,a=n;o=t?e:or.setArraySize(e,t,s)}static newArray(e,t){const s=[];for(let n=0;n0?this.items.pop():this.instantiator()}free(e){var t;(t=e.reset)==null||t.call(e),this.items.push(e)}freeAll(e){for(let t=0;tthis.maxDelta&&(this.delta=this.maxDelta),this.lastTime=e,this.frameCount++,this.frameTime>1&&(this.framesPerSecond=this.frameCount/this.frameTime,this.frameTime=0,this.frameCount=0)}}class q6{constructor(e=32){M(this,"values");M(this,"addedValues",0);M(this,"lastValue",0);M(this,"mean",0);M(this,"dirty",!0);this.values=new Array(e)}hasEnoughData(){return this.addedValues>=this.values.length}addValue(e){this.addedValuesthis.values.length-1&&(this.lastValue=0),this.dirty=!0}getMean(){if(this.hasEnoughData()){if(this.dirty){let e=0;for(let t=0;t{h.width=parseInt(s[1]),h.height=parseInt(s[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Ge.enumValue(la,s[1]),h.magFilter=Ge.enumValue(la,s[2])},n.repeat=h=>{s[1].indexOf("x")!==-1&&(h.uWrap=ca.Repeat),s[1].indexOf("y")!==-1&&(h.vWrap=ca.Repeat)},n.pma=h=>{h.pma=s[1]==="true"};var r={};r.xy=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2])},r.size=h=>{h.width=parseInt(s[1]),h.height=parseInt(s[2])},r.bounds=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2]),h.width=parseInt(s[3]),h.height=parseInt(s[4])},r.offset=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2])},r.orig=h=>{h.originalWidth=parseInt(s[1]),h.originalHeight=parseInt(s[2])},r.offsets=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2]),h.originalWidth=parseInt(s[3]),h.originalHeight=parseInt(s[4])},r.rotate=h=>{const u=s[1];u==="true"?h.degrees=90:u!=="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(s[1])};let o=t.readLine();for(;o&&o.trim().length===0;)o=t.readLine();for(;!(!o||o.trim().length===0||t.readEntry(s,o)===0);)o=t.readLine();let a=null,l=null,c=null;for(;o!==null;)if(o.trim().length===0)a=null,o=t.readLine();else if(a){const h=new Hw(a,o);for(;;){const u=t.readEntry(s,o=t.readLine());if(u===0)break;const d=r[s[0]];if(d)d(h);else{l||(l=[]),c||(c=[]),l.push(s[0]);const f=[];for(let p=0;p0&&c&&c.length>0&&(h.names=l,h.values=c,l=null,c=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees===90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new Q3(o.trim());t.readEntry(s,o=t.readLine())!==0;){const h=n[s[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length===0))return 0;const s=t.indexOf(":");if(s===-1)return 0;e[0]=t.substr(0,s).trim();for(let n=1,r=s+1;;n++){const o=t.indexOf(",",r);if(o===-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n===4)return 4}}}class Q3{constructor(e){M(this,"name");M(this,"minFilter",la.Nearest);M(this,"magFilter",la.Nearest);M(this,"uWrap",ca.ClampToEdge);M(this,"vWrap",ca.ClampToEdge);M(this,"texture",null);M(this,"width",0);M(this,"height",0);M(this,"pma",!1);M(this,"regions",[]);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(const t of this.regions)t.texture=e}}class Hw extends jw{constructor(t,s){super();M(this,"page");M(this,"name");M(this,"x",0);M(this,"y",0);M(this,"offsetX",0);M(this,"offsetY",0);M(this,"originalWidth",0);M(this,"originalHeight",0);M(this,"index",0);M(this,"degrees",0);M(this,"names",null);M(this,"values",null);this.page=t,this.name=s,t.regions.push(this)}}const Lh=class Lh{constructor(e){M(this,"name");M(this,"timelineAttachment");M(this,"timelineSlots",Lh.empty);if(!e)throw new Error("name cannot be null.");this.name=e,this.timelineAttachment=this}isTimelineActive(e,t,s){let n=e[t];if(n.bone.isActive()){const r=(s?n.getAppliedPose():n.getPose()).getAttachment();if(r!=null&&r.timelineAttachment===this)return!0}for(let r=0,o=this.timelineSlots.length;r>1)*l;const c=s.appliedPose.deform;let h=this.vertices;const u=this.bones;if(!u){c.length>0&&(h=c);const m=s.bone.appliedPose,g=m.worldX,y=m.worldY,x=m.a,v=m.b,w=m.c,_=m.d;for(let S=n,b=a;b=this.regions.length&&(t=this.regions.length-1),t}getUVs(e){return this.uvs[e]}hasPathSuffix(){return this.pathSuffix}getPath(e,t){if(!this.pathSuffix)return e;let s=e;const n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)s+="0";return s+=n,s}static nextID(){return Vo._nextID++}};M(Vo,"_nextID",0);let ua=Vo;var Ts;(function(i){i[i.hold=0]="hold",i[i.once=1]="once",i[i.loop=2]="loop",i[i.pingpong=3]="pingpong",i[i.onceReverse=4]="onceReverse",i[i.loopReverse=5]="loopReverse",i[i.pingpongReverse=6]="pingpongReverse"})(Ts||(Ts={}));const Ww=[Ts.hold,Ts.once,Ts.loop,Ts.pingpong,Ts.onceReverse,Ts.loopReverse,Ts.pingpongReverse];class Pp{constructor(e,t,s){M(this,"name");M(this,"timelines",[]);M(this,"timelineIds");M(this,"bones");M(this,"color",new st(1,1,1,1));M(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.duration=s,this.timelineIds=new z3,this.bones=[],this.setTimelines(t)}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e;const t=e.length;this.timelineIds.clear(),this.bones.length=0;const s=new Set,n=e;for(let r=0;r0&&(t%=this.duration));const u=this.timelines;for(let d=0,f=u.length;dt)return r-s;return n-s}};function eO(i){return typeof i=="object"&&i!==null&&typeof i.slotIndex=="number"}class bo extends Bt{constructor(t,s,...n){super(t,...n);M(this,"curves");this.curves=Ge.newFloatArray(t+s*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){const s=this.getFrameCount()+t*18;if(this.curves.length>s){const n=Ge.newFloatArray(s);Ge.arrayCopy(this.curves,0,n,0,s),this.curves=n}}setBezier(t,s,n,r,o,a,l,c,h,u,d){const f=this.curves;let p=this.getFrameCount()+t*18;n===0&&(f[s]=2+p);const m=(r-a*2+c)*.03,g=(o-l*2+h)*.03,y=((a-c)*3-r+u)*.006,x=((l-h)*3-o+d)*.006;let v=m*2+y,w=g*2+x,_=(a-r)*.3+m+y*.16666667,S=(l-o)*.3+g+x*.16666667,b=r+_,A=o+S;for(let P=p+18;pt){const h=this.frames[s],u=this.frames[s+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}const a=r+18;for(r+=2;r=t){const h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}s+=this.getFrameEntries();const l=o[a-2],c=o[a-1];return c+(t-l)/(this.frames[s]-l)*(this.frames[s+n]-c)}}class Fn extends bo{constructor(e,t,s){super(e,t,s)}getFrameEntries(){return 2}setFrame(e,t,s){e<<=1,this.frames[e]=t,this.frames[e+1]=s}getCurveValue(e){const t=this.frames;let s=t.length-2;for(let r=2;r<=s;r+=2)if(t[r]>e){s=r-2;break}const n=this.curves[s>>1];switch(n){case 0:{const r=t[s],o=t[s+1];return o+(e-r)/(t[s+2]-r)*(t[s+2+1]-o)}case 1:return t[s+1]}return this.getBezierValue(e,s,1,n-2)}getRelativeValue(e,t,s,n,r,o){if(e>2];switch(f){case 0:{const p=u[d];l=u[d+1],c=u[d+2],h=u[d+3];const m=(s-p)/(u[d+4]-p);l+=(u[d+4+1]-l)*m,c+=(u[d+4+2]-c)*m,h+=(u[d+4+3]-h)*m;break}case 1:l=u[d+1],c=u[d+2],h=u[d+3];break;default:l=this.getBezierValue(s,d,1,f-2),c=this.getBezierValue(s,d,2,f+18-2),h=this.getBezierValue(s,d,3,f+36-2)}if(n!==1)if(r===Ve.setup){const p=e.data.setupPose.color;l=p.r+(l-p.r)*n,c=p.g+(c-p.g)*n,h=p.b+(h-p.b)*n}else l=a.r+(l-a.r)*n,c=a.g+(c-a.g)*n,h=a.b+(h-a.b)*n;a.r=l<0?0:l>1?1:l,a.g=c<0?0:c>1?1:c,a.b=h<0?0:h>1?1:h}}class oS extends Fn{constructor(t,s,n){super(t,s,`${et.alpha}|${n}`);M(this,"slotIndex",0);this.slotIndex=n}apply(t,s,n,r,o,a,l,c,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=(h?u.appliedPose:u.pose).color;let f=0;const p=this.frames;if(n1?1:f}}class aS extends vu{constructor(e,t,s){super(e,t,s,`${et.rgb}|${s}`,`${et.alpha}|${s}`,`${et.rgb2}|${s}`)}getFrameEntries(){return 8}setFrame(e,t,s,n,r,o,a,l,c){e<<=3,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=l,this.frames[e+7]=c}apply1(e,t,s,n,r,o){const a=t.color,l=t.darkColor;let c=0,h=0,u=0;const d=this.frames;if(s>3];switch(x){case 0:{const v=d[y];f=d[y+1],p=d[y+2],m=d[y+3],g=d[y+4],c=d[y+5],h=d[y+6],u=d[y+7];const w=(s-v)/(d[y+8]-v);f+=(d[y+8+1]-f)*w,p+=(d[y+8+2]-p)*w,m+=(d[y+8+3]-m)*w,g+=(d[y+8+4]-g)*w,c+=(d[y+8+5]-c)*w,h+=(d[y+8+6]-h)*w,u+=(d[y+8+7]-u)*w;break}case 1:f=d[y+1],p=d[y+2],m=d[y+3],g=d[y+4],c=d[y+5],h=d[y+6],u=d[y+7];break;default:f=this.getBezierValue(s,y,1,x-2),p=this.getBezierValue(s,y,2,x+18-2),m=this.getBezierValue(s,y,3,x+36-2),g=this.getBezierValue(s,y,4,x+54-2),c=this.getBezierValue(s,y,5,x+72-2),h=this.getBezierValue(s,y,6,x+90-2),u=this.getBezierValue(s,y,7,x+108-2)}if(n===1)a.set(f,p,m,g);else if(r===Ve.setup){const v=e.data.setupPose;let w=v.color;a.set(w.r+(f-w.r)*n,w.g+(p-w.g)*n,w.b+(m-w.b)*n,w.a+(g-w.a)*n),w=v.darkColor,c=w.r+(c-w.r)*n,h=w.g+(h-w.g)*n,u=w.b+(u-w.b)*n}else a.add((f-a.r)*n,(p-a.g)*n,(m-a.b)*n,(g-a.a)*n),c=l.r+(c-l.r)*n,h=l.g+(h-l.g)*n,u=l.b+(u-l.b)*n;l.r=c<0?0:c>1?1:c,l.g=h<0?0:h>1?1:h,l.b=u<0?0:u>1?1:u}}class lS extends vu{constructor(e,t,s){super(e,t,s,`${et.rgb}|${s}`,`${et.rgb2}|${s}`)}getFrameEntries(){return 7}setFrame(e,t,s,n,r,o,a,l){e*=7,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=l}apply1(e,t,s,n,r,o){const a=t.color,l=t.darkColor;let c=0,h=0,u=0,d=0,f=0,p=0;const m=this.frames;if(s1?1:c,a.g=h<0?0:h>1?1:h,a.b=u<0?0:u>1?1:u,l.r=d<0?0:d>1?1:d,l.g=f<0?0:f>1?1:f,l.b=p<0?0:p>1?1:p}}class sl extends Bt{constructor(t,s){super(t,`${et.attachment}|${s}`);M(this,"slotIndex",0);M(this,"attachmentNames");this.slotIndex=s,this.attachmentNames=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s,n){this.frames[t]=s,this.attachmentNames[t]=n}apply(t,s,n,r,o,a,l,c,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=h?u.appliedPose:u.pose;c||nt){const c=this.frames[s];return n[r+1]*(t-c)/(n[r]-c)}const o=r+18;for(r+=2;r=t){const c=n[r-2],h=n[r-1];return h+(t-c)/(n[r]-c)*(n[r+1]-h)}const a=n[o-2],l=n[o-1];return l+(1-l)*(t-a)/(this.frames[s+this.getFrameEntries()]-a)}apply(t,s,n,r,o,a,l,c,h){const u=t.slots;if(!this.attachment.isTimelineActive(u,this.slotIndex,h))return;const d=this.attachment.timelineSlots,f=this.frames;if(n=f[f.length-1])g=0,p=this.vertices[f.length-1],m=null;else{const x=Bt.search(f,n);g=this.getCurvePercent(n,x),p=this.vertices[x],m=this.vertices[x+1]}const y=this.vertices[0].length;this.applyToSlot(u[this.slotIndex],h,p,m,g,y,o,a,l);for(const x of d)this.applyToSlot(u[x],h,p,m,g,y,o,a,l)}applyBeforeFirst(t,s,n,r){if(!t.bone.active)return;const o=s?t.appliedPose:t.pose;if(o.attachment==null||o.attachment.timelineAttachment!==this.attachment)return;const a=o.deform;switch(a.length===0&&(r=Ve.setup),r){case Ve.setup:a.length=0;break;case Ve.first:{if(n===1){a.length=0;return}const l=this.vertices[0].length;a.length=l;const c=a,h=o.attachment;if(h.bones===null){const u=h.vertices;for(let d=0;d>4,h=l.attachment.sequence.regions.length;const u=Ww[o&15];if(u!==Ts.hold)switch(c+=(n-r)/a+1e-5|0,u){case Ts.once:c=Math.min(h-1,c);break;case Ts.loop:c%=h;break;case Ts.pingpong:{const d=(h<<1)-2;c=d===0?0:c%d,c>=h&&(c=d-c);break}case Ts.onceReverse:c=Math.max(h-1-c,0);break;case Ts.loopReverse:c=h-1-c%h;break;case Ts.pingpongReverse:{const d=(h<<1)-2;c=d===0?0:(c+h-1)%d,c>=h&&(c=d-c)}}l.sequenceIndex=c}};M(li,"ENTRIES",3),M(li,"MODE",1),M(li,"DELAY",2);let Ph=li;const Nh=class Nh extends Bt{constructor(t){super(t,...Nh.propertyIds);M(this,"events");this.events=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s){this.frames[t]=s.time,this.events[t]=s}apply(t,s,n,r,o,a,l,c,h){if(!r)return;const u=this.frames,d=this.frames.length;if(s>n)this.apply(null,s,Number.MAX_VALUE,r,0,a,!1,!1,!1),s=-1;else if(s>=u[d-1])return;if(n0&&u[f-1]===p;)f--}for(;f=u[f];f++)r.push(this.events[f])}};M(Nh,"propertyIds",[`${et.event}`]);let Sl=Nh;const Yo=class Yo extends Bt{constructor(t){super(t,...Yo.propertyIds);M(this,"drawOrders");this.drawOrders=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s,n){this.frames[t]=s,this.drawOrders[t]=n}apply(t,s,n,r,o,a,l,c,h){const u=h?t.drawOrder.appliedPose:t.drawOrder.pose,d=t.slots;if(c||n>2];switch(x){case 0:{const w=f[y];p=f[y+1],m=f[y+2],g=f[y+3];const _=(n-w)/(f[y+4]-w);p+=(f[y+4+1]-p)*_,m+=(f[y+4+2]-m)*_,g+=(f[y+4+3]-g)*_;break}case 1:p=f[y+1],m=f[y+2],g=f[y+3];break;default:p=this.getBezierValue(n,y,1,x-2),m=this.getBezierValue(n,y,2,x+18-2),g=this.getBezierValue(n,y,3,x+36-2)}const v=a===Ve.setup?u.data.setupPose:d;l?(d.mixRotate=v.mixRotate+p*o,d.mixX=v.mixX+m*o,d.mixY=v.mixY+g*o):(d.mixRotate=v.mixRotate+(p-v.mixRotate)*o,d.mixX=v.mixX+(m-v.mixX)*o,d.mixY=v.mixY+(g-v.mixY)*o)}}class Cr extends Fl{constructor(e,t,s,n){super(e,t,s,n)}apply(e,t,s,n,r,o,a,l,c){if(a&&!this.additive&&(a=!1),this.constraintIndex===-1){const h=s>=this.frames[0]?this.getCurveValue(s):0,u=e.physics;for(const d of u)if(d.active&&this.global(d.data)){const f=c?d.appliedPose:d.pose;this.set(f,this.getAbsoluteValue(s,r,o,a,this.get(f),this.get(d.data.setupPose),h))}}else{const h=e.constraints[this.constraintIndex];if(h.active){const u=c?h.appliedPose:h.pose;this.set(u,this.getAbsoluteValue(s,r,o,a,this.get(u),this.get(h.data.setupPose)))}}}}class pS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintInertia)}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}}class gS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintStrength)}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}}class vS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintDamping)}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}}class yS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintMass)}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}}class xS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintWind),this.additive=!0}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}}class bS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintGravity),this.additive=!0}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}}class wS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintMix)}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}}const Dh=class Dh extends Bt{constructor(t,s){super(t,...Dh.propertyIds);M(this,"constraintIndex");this.constraintIndex=s,this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s){this.frames[t]=s}apply(t,s,n,r,o,a,l,c,h){let u;if(this.constraintIndex!==-1&&(u=t.constraints[this.constraintIndex],!u.active))return;const d=this.frames;if(s>n)this.apply(t,s,Number.MAX_VALUE,[],o,a,!1,!1,!1),s=-1;else if(s>=d[d.length-1])return;if(!(n=d[Bt.search(d,s)+1]))if(u!=null)u.reset(t);else for(const f of t.physics)f.active&&f.reset(t)}};M(Dh,"propertyIds",[et.physicsConstraintReset.toString()]);let kh=Dh;class SS extends Fl{constructor(e,t,s){super(e,t,s,et.sliderTime)}apply(e,t,s,n,r,o,a,l,c){const h=e.constraints[this.constraintIndex];if(h.active){const u=c?h.appliedPose:h.pose;u.time=this.getAbsoluteValue(s,r,o,a,u.time,h.data.setupPose.time)}}}class MS extends Fl{constructor(e,t,s){super(e,t,s,et.sliderMix),this.additive=!0}apply(e,t,s,n,r,o,a,l,c){const h=e.constraints[this.constraintIndex];if(h.active){const u=c?h.appliedPose:h.pose;u.mix=this.getAbsoluteValue(s,r,o,a,u.mix,h.data.setupPose.mix)}}}const rl=class rl{constructor(e){M(this,"data");M(this,"tracks",[]);M(this,"timeScale",1);M(this,"unkeyedState",0);M(this,"events",[]);M(this,"listeners",[]);M(this,"queue",new nO(this));M(this,"propertyIds",new Map);M(this,"animationsChanged",!1);M(this,"trackEntryPool",new K3(()=>new iO));this.data=e}update(e){e*=this.timeScale;const t=this.tracks;for(let s=0,n=t.length;s0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){const l=r.trackLast-a.delay;if(l>=0){for(a.delay=0,a.trackTime+=r.timeScale===0?0:(l/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setTrack(s,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[s]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let l=r.mixingFrom;for(r.mixingFrom=null,l&&(l.mixingTo=null);l;)this.queue.end(l),l=l.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){const s=e.mixingFrom;if(!s)return!0;const n=this.updateMixingFrom(s,t);if(s.animationLast=s.nextAnimationLast,s.trackLast=s.nextTrackLast,e.nextTrackLast!==-1&&e.mixTime>=e.mixDuration){if(s.totalAlpha===0||e.mixDuration===0){if(e.mixingFrom=s.mixingFrom,s.mixingFrom!=null&&(s.mixingFrom.mixingTo=e),s.totalAlpha===0)for(let r=e;r.mixingTo!=null;r=r.mixingTo)r.keepHold=!0;this.queue.end(s)}return n}return s.trackTime+=t*s.timeScale,e.mixTime+=t,!1}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();const t=this.events,s=this.tracks;let n=!1;for(let a=0,l=s.length;a0)continue;n=!0;let h=c.alpha;c.mixingFrom?h*=this.applyMixingFrom(c,e):c.trackTime>=c.trackEnd&&!c.next&&(h=0);let u=c.animationLast,d=c.getAnimationTime(),f=d,p=t;c.reverse&&(f=c.animation.duration-f,p=null);const m=c.animation.timelines,g=m.length;if(a===0&&h===1)for(let y=0;y=c.alphaAttachmentThreshold,v=c.additive,w=v||c.shortestRotation,_=!w&&c.timelinesRotation.length!==g<<1;_&&(c.timelinesRotation.length=g<<1);for(let S=0;S0?l/a:o,h=s.animation.timelines,u=h.length,d=s.timelineMode,f=s.timelineHoldMix,p=r=s.alphaAttachmentThreshold);else{const B=!m||!(P instanceof br)||E===Ve.current;P.apply(t,w,S,b,k,E,g,B,!1)}}return s.reverse&&r0&&this.queueEvents(s,_),this.events.length=0,s.nextAnimationLast=_,s.nextTrackLast=s.trackTime,r}applyAttachmentTimeline(e,t,s,n,r){const o=t.slots[e.slotIndex];if(!o.bone.active||!r&&o.attachmentState===this.unkeyedState+vy)return;let a=s=0,_=y>=0;Math.abs(x)<=90&&Ee.signum(x)!==Ee.signum(g)&&(Math.abs(y-v)>180?(m+=360*Ee.signum(y),_=w):v!==0?m-=360*Ee.signum(y):_=w),_!==w&&(m+=360*Ee.signum(y)),o[a]=m}o[a+1]=g,h.rotation=f+m*n}queueEvents(e,t){const s=e.animationStart,n=e.animationEnd,r=n-s,o=e.reverse;let a=e.trackLast%r;o&&(a=r-a);const l=this.events;let c=0,h=l.length;for(;c=s&&d.time<=n&&this.queue.event(e,d)}let u=!1;if(e.loop)if(r===0)u=!0;else{const d=Math.floor(e.trackTime/r);u=d>0&&d>Math.floor(e.trackLast/r)}else u=t>=n&&e.animationLast=s&&d.time<=n&&this.queue.event(e,d)}}eventsReverse(e,t,s){const n=e.animation.duration,r=n-t,o=n-s,a=e.animation.timelines;for(let l=0,c=e.animation.timelines.length;l=o){for(let p=0;p=r)break;this.events.push(u[p])}}else{for(let m=0;m=r);m++)this.events.push(u[m]);let p=0;for(;p=o);p++);for(;p= 0.");if(e>=this.tracks.length)return;const t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let s=t;for(;;){const n=s.mixingFrom;if(!n)break;this.queue.end(n),s.mixingFrom=null,s.mixingTo=null,s=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setTrack(e,t,s){const n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(n.next=null,s&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,s=!1){return typeof t=="string"?this.setAnimation1(e,t,s):this.setAnimation2(e,t,s)}setAnimation1(e,t,s=!1){const n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error(`Animation not found: ${t}`);return this.setAnimation2(e,n,s)}setAnimation2(e,t,s=!1){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast===-1&&r.animation===t?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));const o=this.trackEntry(e,t,s,r);return this.setTrack(e,o,n),this.queue.drain(),o}addAnimation(e,t,s=!1,n=0){return typeof t=="string"?this.addAnimation1(e,t,s,n):this.addAnimation2(e,t,s,n)}addAnimation1(e,t,s=!1,n=0){const r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error(`Animation not found: ${t}`);return this.addAnimation2(e,r,s,n)}addAnimation2(e,t,s=!1,n=0){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;const o=this.trackEntry(e,t,s,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setTrack(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){const s=this.setAnimation(e,rl.emptyAnimation,!1);return s.mixDuration=t,s.trackEnd=t,s}addEmptyAnimation(e,t=0,s=0){const n=this.addAnimation(e,rl.emptyAnimation,!1,s);return s<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){const t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let s=0,n=this.tracks.length;s0&&(o[d]=y);break}}l&&(g=g&~Mc|r[d]&Mc),r[d]=g}}from(e,t,s){const n=this.propertyIds;let r=rO;for(let o=0,a=s.length;o= 0.");return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}};M(rl,"emptyAnimation",new Pp("",[],0));let dy=rl;class iO{constructor(){M(this,"animation",null);M(this,"previous",null);M(this,"next",null);M(this,"mixingFrom",null);M(this,"mixingTo",null);M(this,"listener",null);M(this,"trackIndex",0);M(this,"loop",!1);M(this,"additive",!1);M(this,"reverse",!1);M(this,"shortestRotation",!1);M(this,"keepHold",!1);M(this,"eventThreshold",0);M(this,"mixAttachmentThreshold",0);M(this,"alphaAttachmentThreshold",0);M(this,"mixDrawOrderThreshold",0);M(this,"animationStart",0);M(this,"animationEnd",0);M(this,"animationLast",0);M(this,"nextAnimationLast",0);M(this,"delay",0);M(this,"trackTime",0);M(this,"trackLast",0);M(this,"nextTrackLast",0);M(this,"trackEnd",0);M(this,"timeScale",0);M(this,"alpha",0);M(this,"mixTime",0);M(this,"mixDuration",0);M(this,"totalAlpha",0);M(this,"mixInterpolation",na.linear);M(this,"timelineMode",[]);M(this,"timelineHoldMix",[]);M(this,"timelinesRotation",[])}setMixDuration(e,t){this.mixDuration=e,t!==void 0&&(t<=0&&(t=this.previous==null?0:Math.max(t+this.previous.getTrackComplete()-e,0)),this.delay=t)}setMixInterpolation(e){if(!e)throw new Error("mixInterpolation cannot be null.");this.mixInterpolation=e}mix(){if(this.mixDuration===0)return 1;let e=this.mixTime/this.mixDuration;return e>=1?1:this.mixInterpolation===na.linear?e:(e=this.mixInterpolation.apply(e),e<0?0:e>1?1:e)}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.mixInterpolation=na.linear,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(!this.loop)return Math.min(this.trackTime+this.animationStart,this.animationEnd);const e=this.animationEnd-this.animationStart;return e===0?this.animationStart:this.trackTime%e+this.animationStart}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){const e=this.animationEnd-this.animationStart;if(e!==0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}}class nO{constructor(e){M(this,"objects",[]);M(this,"drainDisabled",!1);M(this,"animState");this.animState=e}start(e){this.objects.push(Ws.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(Ws.interrupt),this.objects.push(e)}end(e){this.objects.push(Ws.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(Ws.dispose),this.objects.push(e)}complete(e){this.objects.push(Ws.complete),this.objects.push(e)}event(e,t){this.objects.push(Ws.event),this.objects.push(e),this.objects.push(t)}drain(){var e,t,s,n,r,o;if(!this.drainDisabled){this.drainDisabled=!0;for(let a=0;a= 0.");if(!s)throw new Error("name cannot be null.");this.index=t,this.parent=n}copy(t){const s=new xu(this.index,this.name,t);return s.length=this.length,s.setupPose.set(this.setupPose),s}}var zt;(function(i){i[i.Normal=0]="Normal",i[i.OnlyTranslation=1]="OnlyTranslation",i[i.NoRotationOrReflection=2]="NoRotationOrReflection",i[i.NoScale=3]="NoScale",i[i.NoScaleOrReflection=4]="NoScaleOrReflection"})(zt||(zt={}));class Cm{constructor(){M(this,"bone");M(this,"x",0);M(this,"y",0);M(this,"rotation",0);M(this,"scaleX",0);M(this,"scaleY",0);M(this,"shearX",0);M(this,"shearY",0);M(this,"inherit",zt.Normal);M(this,"a",0);M(this,"b",0);M(this,"c",0);M(this,"d",0);M(this,"worldY",0);M(this,"worldX",0);M(this,"world",0);M(this,"local",0)}set(e){if(e==null)throw new Error("pose cannot be null.");this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}setPosition(e,t){this.x=e,this.y=t}setScale(e,t){this.scaleX=e,this.scaleY=t===void 0?e:t}getInherit(){return this.inherit}setInherit(e){if(e==null)throw new Error("inherit cannot be null.");this.inherit=e}update(e,t){this.world!==e._update&&this.updateWorldTransform(e)}updateWorldTransform(e){this.local===e._update?this.updateLocalTransform(e):this.world=e._update;const t=this.rotation,s=this.scaleX,n=this.scaleY,r=this.shearX,o=this.shearY;if(!this.bone.parent){const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*s*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*s*f,this.d=Math.sin(m)*n*f,this.worldX=this.x*d+e.x,this.worldY=this.y*f+e.y;return}const a=this.bone.parent.appliedPose;let l=a.a,c=a.b,h=a.c,u=a.d;switch(this.worldX=l*this.x+c*this.y+a.worldX,this.worldY=h*this.x+u*this.y+a.worldY,this.inherit){case zt.Normal:{const d=(t+r)*Ee.degRad,f=(t+90+o)*Ee.degRad,p=Math.cos(d)*s,m=Math.cos(f)*n,g=Math.sin(d)*s,y=Math.sin(f)*n;this.a=l*p+c*g,this.b=l*m+c*y,this.c=h*p+u*g,this.d=h*m+u*y;return}case zt.OnlyTranslation:{const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*s*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*s*f,this.d=Math.sin(m)*n*f;break}case zt.NoRotationOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f;l*=p,h*=m;let g=l*l+h*h,y=0;g>Ee.epsilon2?(g=Math.abs(l*u*m-c*p*h)/g,c=h*g,u=l*g,y=t-Ee.atan2Deg(h,l)):(l=0,h=0,y=t-90+Ee.atan2Deg(u,c));const x=(y+r)*Ee.degRad,v=(y+o+90)*Ee.degRad,w=Math.cos(x)*s,_=Math.cos(v)*n,S=Math.sin(x)*s,b=Math.sin(v)*n;this.a=(l*w-c*S)*d,this.b=(l*_-c*b)*d,this.c=(h*w+u*S)*f,this.d=(h*_+u*b)*f;break}case zt.NoScale:case zt.NoScaleOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f,g=t*Ee.degRad,y=Math.cos(g),x=Math.sin(g);let v=(l*y+c*x)*p,w=(h*y+u*x)*m;const _=1/Math.sqrt(v*v+w*w);v*=_,w*=_;let S=-w,b=v;this.inherit===zt.NoScale&&l*u-c*h<0!=(d<0!=f<0)&&(S=-S,b=-b);const A=r*Ee.degRad,P=(90+o)*Ee.degRad,F=Math.cos(A)*s,E=Math.cos(P)*n,k=Math.sin(A)*s,B=Math.sin(P)*n;this.a=(v*F+S*k)*d,this.b=(v*E+S*B)*d,this.c=(w*F+b*k)*f,this.d=(w*E+b*B)*f;break}}}updateLocalTransform(e){this.local=0,this.world=e._update;const t=e.scaleX,s=e.scaleY;if(!this.bone.parent){const y=1/t,x=1/s;this.x=(this.worldX-e.x)*y,this.y=(this.worldY-e.y)*x,this.set5(this.a*y,this.b*y,this.c*x,this.d*x,0);return}const n=this.bone.parent.appliedPose;let r=n.a,o=n.b,a=n.c,l=n.d;const c=r*l-o*a,h=1/(r*l-o*a),u=l*h,d=o*h,f=a*h,p=r*h,m=this.worldX-n.worldX,g=this.worldY-n.worldY;switch(this.x=m*u-g*d,this.y=g*p-m*f,this.inherit){case zt.Normal:this.set5(u*this.a-d*this.c,u*this.b-d*this.d,p*this.c-f*this.a,p*this.d-f*this.b,0);break;case zt.OnlyTranslation:{const y=1/t,x=1/s;this.set5(this.a*y,this.b*y,this.c*x,this.d*x,0);break}case zt.NoRotationOrReflection:{const y=1/t,x=1/s;r*=y,a*=x;const v=this.a*y,w=this.b*y,_=this.c*x,S=this.d*x,b=1/(r*r+a*a),A=1/Math.abs(c*y*x);this.set5((r*v+a*_)*b,(r*w+a*S)*b,(r*_-a*v)*A,(r*S-a*w)*A,Ee.atan2Deg(a,r));break}case zt.NoScale:case zt.NoScaleOrReflection:{const y=1/t,x=1/s,v=this.a*y,w=this.b*y,_=this.c*x,S=this.d*x;let b=l*this.a-o*this.c,A=r*this.c-a*this.a;c<0&&(b=-b,A=-A);let P=Ee.atan2Deg(A,b);this.rotation=P,P*=Ee.degRad;const F=Math.cos(P),E=Math.sin(P);let k=(r*F+o*E)*y,B=(a*F+l*E)*x;const D=1/Math.sqrt(k*k+B*B);k*=D,B*=D;const X=this.inherit===zt.NoScale&&c<0!=(t<0!=s<0)?-1:1;this.set4(k*v+B*_,k*w+B*S,(k*_-B*v)*X,(k*S-B*w)*X)}}}set4(e,t,s,n){const r=e*e+s*s,o=t*t+n*n;r>Ee.epsilon2?(this.shearX=Ee.atan2Deg(s,e),this.scaleX=Math.sqrt(r)):(this.shearX=0,this.scaleX=0),this.scaleY=Math.sqrt(o),o>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*s<0?(this.scaleY=-this.scaleY,this.shearY+=90):this.shearY-=90,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}set5(e,t,s,n,r){this.shearX=0;const o=e*e+s*s,a=t*t+n*n;if(o>Ee.epsilon2){const l=Ee.atan2Deg(s,e);this.rotation=l+r,this.scaleX=Math.sqrt(o),this.scaleY=Math.sqrt(a),a>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*s<0?(this.scaleY=-this.scaleY,this.shearY+=90-l):this.shearY-=90+l,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}else this.scaleX=0,this.scaleY=Math.sqrt(a),this.shearY=0,this.rotation=a>Ee.epsilon2?Ee.atan2Deg(n,t)-90+r:r}validateLocalTransform(e){this.local===e._update&&this.updateLocalTransform(e)}modifyLocal(e){this.local===e._update&&this.updateLocalTransform(e),this.world=0,this.resetWorld(e,e._update)}modifyWorld(e){const t=e._update;this.local=t,this.world=t,this.resetWorld(e,t)}resetWorld(e,t){const s=this.bone.children;for(let n=0,r=s.length;n1&&t.constrained(this.bones[1].bone)}isSourceActive(){return this.target.active}static apply(t,s,n,r,o,a,l,c,h,u){typeof n=="number"?rr.apply1(t,s,n,r,o,a,l,c):rr.apply2(t,s,n,r,o,a,l,c,h,u)}static apply1(t,s,n,r,o,a,l,c){s.modifyLocal(t);const h=s.bone.parent.appliedPose;let u=h.a,d=h.b,f=h.c,p=h.d,m=-s.shearX-s.rotation,g=0,y=0;switch(s.inherit){case zt.OnlyTranslation:g=(n-s.worldX)*Ee.signum(t.scaleX),y=(r-s.worldY)*Ee.signum(t.scaleY);break;case zt.NoRotationOrReflection:{const x=Math.abs(u*p-d*f)/Math.max(Ee.epsilon,u*u+f*f),v=u/t.scaleX,w=f/t.scaleY;d=-w*x*t.scaleX,p=v*x*t.scaleY,m+=Ee.atan2Deg(w,v)}default:{const x=n-h.worldX,v=r-h.worldY,w=u*p-d*f;Math.abs(w)<=Ee.epsilon?(g=0,y=0):(g=(x*p-v*d)/w-s.x,y=(v*u-x*f)/w-s.y)}}if(m+=Ee.atan2Deg(y,g),s.scaleX<0&&(m+=180),m>180?m-=360:m<=-180&&(m+=360),s.rotation+=m*c,o||a){switch(s.inherit){case zt.NoScale:case zt.NoScaleOrReflection:g=n-s.worldX,y=r-s.worldY}const x=s.bone.data.length*s.scaleX;if(x>Ee.epsilon){const v=g*g+y*y;if(o&&vx*x){const w=(Math.sqrt(v)/x-1)*c+1;switch(s.scaleX*=w,l){case Vs.Uniform:s.scaleY*=w;break;case Vs.Volume:s.scaleY/=w<.7?.25+.642857*w:w}}}}}static apply2(t,s,n,r,o,a,l,c,h,u){if(s.inherit!==zt.Normal||n.inherit!==zt.Normal)return;s.modifyLocal(t),n.modifyLocal(t);let d=s.x,f=s.y,p=s.scaleX,m=s.scaleY,g=n.scaleX,y=0,x=0,v=0;p<0?(p=-p,y=180,v=-1):(y=0,v=1),m<0&&(m=-m,v=-v),g<0?(g=-g,x=180):x=0;let w=0,_=0,S=s.a,b=s.b,A=s.c,P=s.d;const F=Math.abs(p-m)<=Ee.epsilon;!F||l?(n.y=0,w=S*n.x+s.worldX,_=A*n.x+s.worldY):(w=S*n.x+b*n.y+s.worldX,_=A*n.x+P*n.y+s.worldY);const E=s.bone.parent.appliedPose;S=E.a,b=E.b,A=E.c,P=E.d;let k=S*P-b*A,B=w-E.worldX,D=_-E.worldY;k=Math.abs(k)<=Ee.epsilon?0:1/k;const X=(B*P-D*b)*k-d,N=(D*S-B*A)*k-f;let U=Math.sqrt(X*X+N*N),C=n.bone.data.length*g,R,O;if(U0){let re=Math.min(1,ie/(h*2))-1;re=(ie-h*(1-re*re))/K,L-=re*L,$-=re*$,V=L*L+$*$}}e:if(F){C*=p;let K=(V-U*U-C*C)/(2*U*C);if(K<-1)K=-1,O=Math.PI*a;else if(K>1){if(K=1,O=0,l)switch(S=(Math.sqrt(V)/(U+C)-1)*u+1,s.scaleX*=S,c){case Vs.Uniform:s.scaleY*=S;break;case Vs.Volume:s.scaleY/=S<.7?.25+.642857*S:S}}else O=Math.acos(K)*a;S=U+C*K,b=C*Math.sin(O),R=Math.atan2($*S-L*b,L*S+$*b)}else{S=p*C,b=m*C;const K=S*S,ie=b*b,re=Math.atan2($,L);A=ie*U*U+K*V-K*ie;const pe=-2*ie*U,ge=ie-K;if(P=pe*pe-4*ge*A,P>=0){let ue=Math.sqrt(P);pe<0&&(ue=-ue),ue=-(pe+ue)*.5;let ne=ue/ge,de=A/ue;const le=Math.abs(ne)=0){D=Math.sqrt(ne)*a,R=re-Math.atan2(D,le),O=Math.atan2(D/m,(le-U)/p);break e}}let he=Ee.PI,fe=U-S,Y=fe*fe,W=0,H=0,G=U+S,q=G*G,se=0;A=-S*U/(K-ie),A>=-1&&A<=1&&(A=Math.acos(A),B=S*Math.cos(A)+U,D=b*Math.sin(A),P=B*B+D*D,Pq&&(H=A,q=P,G=B,se=D)),V<=(Y+q)*.5?(R=re-Math.atan2(W*a,fe),O=he*a):(R=re-Math.atan2(se*a,G),O=H*a)}const j=Math.atan2(n.y,n.x)*v;R=(R-j)*Ee.radDeg+y-s.rotation,R>180?R-=360:R<=-180&&(R+=360),s.rotation+=R*u,O=((O+j)*Ee.radDeg-n.shearX)*v+x-n.rotation,O>180?O-=360:O<=-180&&(O+=360),n.rotation+=O*u}}class Uc extends Ll{constructor(t){super(t,new Am);M(this,"bones",[]);M(this,"_target",null);M(this,"_scaleYMode",Vs.None)}set target(t){this._target=t}get target(){if(!this._target)throw new Error("target cannot be null.");return this._target}set scaleYMode(t){this._scaleYMode=t}get scaleYMode(){if(this._scaleYMode==null)throw new Error("scaleYMode cannot be null.");return this._scaleYMode}create(t){return new rr(this,t)}}class Em{constructor(){M(this,"position",0);M(this,"spacing",0);M(this,"mixRotate",0);M(this,"mixX",0);M(this,"mixY",0)}set(e){this.position=e.position,this.spacing=e.spacing,this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY}}class $c extends Ll{constructor(t){super(t,new Em);M(this,"bones",[]);M(this,"_slot",null);M(this,"positionMode",cn.Fixed);M(this,"spacingMode",fs.Fixed);M(this,"rotateMode",lo.Chain);M(this,"offsetRotation",0)}set slot(t){this._slot=t}get slot(){if(this._slot)return this._slot;throw new Error("SlotData not set.")}create(t){return new Im(this,t)}}var cn;(function(i){i[i.Fixed=0]="Fixed",i[i.Percent=1]="Percent"})(cn||(cn={}));var fs;(function(i){i[i.Length=0]="Length",i[i.Fixed=1]="Fixed",i[i.Percent=2]="Percent",i[i.Proportional=3]="Proportional"})(fs||(fs={}));var lo;(function(i){i[i.Tangent=0]="Tangent",i[i.Chain=1]="Chain",i[i.ChainScale=2]="ChainScale"})(lo||(lo={}));const Mi=class Mi extends Ol{constructor(t,s){super(t,new Em,new Em);M(this,"data");M(this,"bones");M(this,"slot");M(this,"spaces",[]);M(this,"positions",[]);M(this,"world",[]);M(this,"curves",[]);M(this,"lengths",[]);M(this,"segments",[]);if(!s)throw new Error("skeleton cannot be null.");this.data=t,this.bones=[];for(const n of this.data.bones)this.bones.push(s.bones[n.index].constrainedPose);this.slot=s.slots[t.slot.index]}copy(t){var s=new Mi(this.data,t);return s.pose.set(this.pose),s}update(t,s){const n=this.slot.appliedPose.attachment;if(!(n instanceof Ml))return;const r=this.appliedPose,o=r.mixRotate,a=r.mixX,l=r.mixY;if(o===0&&a===0&&l===0)return;const c=this.data,h=c.rotateMode===lo.Tangent,u=c.rotateMode===lo.ChainScale,d=this.bones,f=d.length,p=h?f:f+1,m=Ge.setArraySize(this.spaces,p),g=u?this.lengths=Ge.setArraySize(this.lengths,f):[],y=r.spacing;switch(c.spacingMode){case fs.Percent:if(u)for(let b=0,A=p-1;b0){b=p/b*y;for(let A=1;A0?Ee.degRad:-Ee.degRad}for(let b=0,A=3;b0){let D=P.a,X=P.b,N=P.c,U=P.d,C=0,R=0,O=0;if(h?C=x[A-1]:m[b+1]===0?C=x[A+2]:C=Math.atan2(B,k),C-=Math.atan2(N,D),S){R=Math.cos(C),O=Math.sin(C);const L=P.bone.data.length;v+=(L*(R*D-O*N)-k)*o,w+=(L*(O*D+R*N)-B)*o}else C+=_;C>Ee.PI?C-=Ee.PI2:C<-Ee.PI&&(C+=Ee.PI2),C*=o,R=Math.cos(C),O=Math.sin(C),P.a=R*D-O*N,P.b=R*X-O*U,P.c=O*D+R*N,P.d=O*X+R*U}}}computeWorldPositions(t,s,n,r){const o=this.slot;let a=this.appliedPose.position,l=this.spaces,c=Ge.setArraySize(this.positions,n*3+2),h=this.world;const u=s.closed;let d=s.worldVerticesLength,f=d/6,p=Mi.NONE;if(!s.constantSpeed){const O=s.lengths;f-=u?1:2;const L=O[f];this.data.positionMode===cn.Percent&&(a*=L);let $;switch(this.data.spacingMode){case fs.Percent:$=L;break;case fs.Proportional:$=L/n;break;default:$=1}h=Ge.setArraySize(this.world,8);for(let V=0,j=0,K=0;VL){p!==Mi.AFTER&&(p=Mi.AFTER,s.computeWorldVertices(t,o,d-6,4,h,0,2)),this.addAfterPosition(re-L,h,0,c,j);continue}for(;;K++){const pe=O[K];if(!(re>pe)){if(K===0)re/=pe;else{const ge=O[K-1];re=(re-ge)/(pe-ge)}break}}K!==p&&(p=K,u&&K===f?(s.computeWorldVertices(t,o,d-4,4,h,0,2),s.computeWorldVertices(t,o,0,4,h,4,2)):s.computeWorldVertices(t,o,K*6+2,8,h,0,2)),this.addCurvePosition(re,h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],c,j,r||V>0&&ie===0)}return c}u?(d+=2,h=Ge.setArraySize(this.world,d),s.computeWorldVertices(t,o,2,d-4,h,0,2),s.computeWorldVertices(t,o,0,2,h,d-4,2),h[d-2]=h[0],h[d-1]=h[1]):(f--,d-=4,h=Ge.setArraySize(this.world,d),s.computeWorldVertices(t,o,2,d,h,0,2));const m=Ge.setArraySize(this.curves,f);let g=0,y=h[0],x=h[1],v=0,w=0,_=0,S=0,b=0,A=0,P=0,F=0,E=0,k=0,B=0,D=0,X=0,N=0;for(let O=0,L=2;Og){this.addAfterPosition(K-g,h,d-4,c,L);continue}for(;;$++){const ie=m[$];if(!(K>ie)){if($===0)K/=ie;else{const re=m[$-1];K=(K-re)/(ie-re)}break}}if($!==p){p=$;let ie=$*6;for(y=h[ie],x=h[ie+1],v=h[ie+2],w=h[ie+3],_=h[ie+4],S=h[ie+5],b=h[ie+6],A=h[ie+7],P=(y-v*2+_)*.03,F=(x-w*2+S)*.03,E=((v-_)*3-y+b)*.006,k=((w-S)*3-x+A)*.006,B=P*2+E,D=F*2+k,X=(v-y)*.3+P+E*.16666667,N=(w-x)*.3+F+k*.16666667,R=Math.sqrt(X*X+N*N),C[0]=R,ie=1;ie<8;ie++)X+=B,N+=D,B+=E,D+=k,R+=Math.sqrt(X*X+N*N),C[ie]=R;X+=B,N+=D,R+=Math.sqrt(X*X+N*N),C[8]=R,X+=B+E,N+=D+k,R+=Math.sqrt(X*X+N*N),C[9]=R,V=0}for(K*=R;;V++){const ie=C[V];if(!(K>ie)){if(V===0)K/=ie;else{const re=C[V-1];K=V+(K-re)/(ie-re)}break}}this.addCurvePosition(K*.1,y,x,v,w,_,S,b,A,c,L,r||O>0&&j===0)}return c}addBeforePosition(t,s,n,r,o){const a=s[n],l=s[n+1],c=s[n+2]-a,h=s[n+3]-l,u=Math.atan2(h,c);r[o]=a+t*Math.cos(u),r[o+1]=l+t*Math.sin(u),r[o+2]=u}addAfterPosition(t,s,n,r,o){const a=s[n+2],l=s[n+3],c=a-s[n],h=l-s[n+1],u=Math.atan2(h,c);r[o]=a+t*Math.cos(u),r[o+1]=l+t*Math.sin(u),r[o+2]=u}addCurvePosition(t,s,n,r,o,a,l,c,h,u,d,f){if(t===0||Number.isNaN(t)){u[d]=s,u[d+1]=n,u[d+2]=Math.atan2(o-n,r-s);return}const p=t*t,m=p*t,g=1-t,y=g*g,x=y*g,v=g*t,w=v*3,_=g*w,S=w*t,b=s*x+r*_+a*S+c*m,A=n*x+o*_+l*S+h*m;u[d]=b,u[d+1]=A,f&&(t<.001?u[d+2]=Math.atan2(o-n,r-s):u[d+2]=Math.atan2(A-(n*y+o*v*2+l*p),b-(s*y+r*v*2+a*p)))}sort(t){const s=this.slot.data.index,n=this.slot.bone;t.skin!=null&&this.sortPathSlot(t,t.skin,s,n),t.data.defaultSkin!=null&&t.data.defaultSkin!==t.skin&&this.sortPathSlot(t,t.data.defaultSkin,s,n),this.sortPath(t,this.slot.pose.attachment,n);const r=this.bones,o=this.bones.length;for(let a=0;a0,a=this.data.y>0,l=this.data.rotate>0||this.data.shearX>0,c=this.data.scaleX>0,h=this.bone;let u=h.bone.data.length,d=this.data.step,f=0;if(s!==qr.none){switch(h.modifyWorld(t),s){case qr.reset:this.reset(t);case qr.update:{const p=Math.max(t.time-this.lastTime,0),m=this.remaining;this.remaining+=p,this.lastTime=t.time;const g=h.worldX,y=h.worldY;if(this._reset)this._reset=!1,this.ux=g,this.uy=y;else{let x=this.remaining,v=n.inertia,w=t.data.referenceScale,_=-1,S=0,b=0,A=this.data.limit*p,P=A*Math.abs(t.scaleY);if(A*=Math.abs(t.scaleX),o||a){if(o){const F=(this.ux-g)*v;this.xOffset+=F>A?A:F<-A?-A:F,this.ux=g}if(a){const F=(this.uy-y)*v;this.yOffset+=F>P?P:F<-P?-P:F,this.uy=y}if(x>=d){const F=this.xOffset,E=this.yOffset;_=n.damping**(60*d),S=d*n.massInverse,b=n.strength;const k=w*n.wind,B=w*n.gravity,D=(k*t.windX+B*t.gravityX)*t.scaleX,X=(k*t.windY+B*t.gravityY)*t.scaleY;do o&&(this.xVelocity+=(D-this.xOffset*b)*S,this.xOffset+=this.xVelocity*d,this.xVelocity*=_),a&&(this.yVelocity-=(X+this.yOffset*b)*S,this.yOffset+=this.yVelocity*d,this.yVelocity*=_),x-=d;while(x>=d);this.xLag=this.xOffset-F,this.yLag=this.yOffset-E}f=Math.max(0,1-x/d),o&&(h.worldX+=(this.xOffset-this.xLag*f)*r*this.data.x),a&&(h.worldY+=(this.yOffset-this.yLag*f)*r*this.data.y)}if(l||c){let F=Math.atan2(h.c,h.a),E=0,k=0,B=0,D=this.cx-h.worldX,X=this.cy-h.worldY;if(D>A?D=A:D<-A&&(D=-A),X>P?X=P:X<-P&&(X=-P),x=this.remaining,l){B=(this.data.rotate+this.data.shearX)*r,f=this.rotateLag*Math.max(0,1-m/d);let N=Math.atan2(X+this.ty,D+this.tx)-F-(this.rotateOffset-f)*B;this.rotateOffset+=(N-Math.ceil(N*Ee.invPI2-.5)*Ee.PI2)*v,N=(this.rotateOffset-f)*B+F,E=Math.cos(N),k=Math.sin(N),c&&(N=u*h.getWorldScaleX(),N>0&&(this.scaleOffset+=(D*E+X*k)*v/N))}else{E=Math.cos(F),k=Math.sin(F);const N=u*h.getWorldScaleX()-this.scaleLag*Math.max(0,1-m/d);N>0&&(this.scaleOffset+=(D*E+X*k)*v/N)}if(x>=d){_===-1&&(_=n.damping**(60*d),S=d*n.massInverse,b=n.strength);const N=n.wind*t.windX+n.gravity*t.gravityX,U=(n.wind*t.windY+n.gravity*t.gravityY)*km.yDir,C=this.rotateOffset,R=this.scaleOffset,O=u/w;for(;;)if(x-=d,c&&(this.scaleVelocity+=(N*E-U*k-this.scaleOffset*b)*S,this.scaleOffset+=this.scaleVelocity*d,this.scaleVelocity*=_),l){if(this.rotateVelocity-=((N*k+U*E)*O+this.rotateOffset*b)*S,this.rotateOffset+=this.rotateVelocity*d,this.rotateVelocity*=_,x0){let x=0;this.data.rotate>0&&(x=p*this.data.rotate,m=Math.sin(x),g=Math.cos(x),y=h.b,h.b=g*y-m*h.d,h.d=m*y+g*h.d),x+=p*this.data.shearX,m=Math.sin(x),g=Math.cos(x),y=h.a,h.a=g*y-m*h.c,h.c=m*y+g*h.c}else p*=this.data.rotate,m=Math.sin(p),g=Math.cos(p),y=h.a,h.a=g*y-m*h.c,h.c=m*y+g*h.c,y=h.b,h.b=g*y-m*h.d,h.d=m*y+g*h.d}if(c){let p=1+(this.scaleOffset-this.scaleLag*f)*r*this.data.scaleX;switch(h.a*=p,h.c*=p,this.data.scaleYMode){case Vs.Uniform:h.b*=p,h.d*=p;break;case Vs.Volume:p=Math.abs(p),p=p>=.7?1/p:4-3.67347*p,h.b*=p,h.d*=p}}s!==qr.pose&&(this.tx=u*h.a,this.ty=u*h.c)}}sort(t){const s=this.bone.bone;t.sortBone(s),t._updateCache.push(this),t.sortReset(s.children),t.constrained(s)}isSourceActive(){return this.bone.bone.active}}class Xc extends Ll{constructor(t){super(t,new Rm);M(this,"_bone",null);M(this,"x",0);M(this,"y",0);M(this,"rotate",0);M(this,"scaleX",0);M(this,"shearX",0);M(this,"limit",0);M(this,"step",0);M(this,"inertiaGlobal",!1);M(this,"strengthGlobal",!1);M(this,"dampingGlobal",!1);M(this,"massGlobal",!1);M(this,"windGlobal",!1);M(this,"gravityGlobal",!1);M(this,"mixGlobal",!1);M(this,"_scaleYMode",Vs.None)}set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("BoneData not set.")}get scaleYMode(){return this._scaleYMode}set scaleYMode(t){if(t==null)throw new Error("scaleYMode cannot be null.");this._scaleYMode=t}create(t){return new bu(this,t)}}typeof Math.fround>"u"&&(Math.fround=(i=>e=>(i[0]=e,i[0]))(new Float32Array(1)));class Fm{constructor(){M(this,"time",0);M(this,"mix",0)}set(e){this.time=e.time,this.mix=e.mix}}const ol=class ol extends Ol{constructor(t,s){super(t,new Fm,new Fm);M(this,"bone",null);if(!s)throw new Error("skeleton cannot be null.");t.bone!=null&&(this.bone=s.bones[t.bone.index])}copy(t){var s=new ol(this.data,t);return s.pose.set(this.pose),s}update(t,s){const n=this.appliedPose;if(n.mix===0)return;const r=this.data,o=r.animation,a=this.bone;if(a!==null){if(!a.active)return;r.local&&a.appliedPose.validateLocalTransform(t),n.time=r.offset+(r.property.value(t,a.appliedPose,r.local,ol.offsets)-r.property.offset)*r.scale,r.loop?n.time=o.duration+n.time%o.duration:n.time=Math.max(0,n.time)}const l=t.bones,c=o.bones;for(let h=0,u=o.bones.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=s}addSkin(e){for(let s=0;s= 0.");if(!n)throw new Error("boneData cannot be null.");this.index=t,this.boneData=n}}var Fh;(function(i){i[i.Normal=0]="Normal",i[i.Additive=1]="Additive",i[i.Multiply=2]="Multiply",i[i.Screen=3]="Screen"})(Fh||(Fh={}));class Bm{constructor(){M(this,"mixRotate",0);M(this,"mixX",0);M(this,"mixY",0);M(this,"mixScaleX",0);M(this,"mixScaleY",0);M(this,"mixShearY",0)}set(e){this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY,this.mixScaleX=e.mixScaleX,this.mixScaleY=e.mixScaleY,this.mixShearY=e.mixShearY}}class Dp extends Ol{constructor(t,s){super(t,new Bm,new Bm);M(this,"bones");M(this,"source");if(!s)throw new Error("skeleton cannot be null.");this.bones=[];for(const r of t.bones)this.bones.push(s.bones[r.index].constrainedPose);const n=s.bones[t.source.index];if(n==null)throw new Error("source cannot be null.");this.source=n}copy(t){var s=new Dp(this.data,t);return s.pose.set(this.pose),s}update(t,s){const n=this.appliedPose;if(n.mixRotate===0&&n.mixX===0&&n.mixY===0&&n.mixScaleX===0&&n.mixScaleY===0&&n.mixShearY===0)return;const r=this.data,o=r.localSource,a=r.localTarget,l=r.additive,c=r.clamp,h=r.offsets,u=this.source.appliedPose;o&&u.validateLocalTransform(t);const d=r.properties,f=r.properties.length,p=this.bones;for(let m=0,g=this.bones.length;m0?n[Mt.ROTATION]:-n[Mt.ROTATION]);return a<0&&(a+=360),a}}class IS extends ya{mix(e){return e.mixRotate}apply(e,t,s,n,r,o){if(r)s.rotation+=(o?n:n-s.rotation)*t.mixRotate;else{const a=e.scaleX,l=e.scaleY,c=1/a,h=1/l,u=s.a*c,d=s.b*c,f=s.c*h,p=s.d*h;n*=Ee.degRad,o||(n-=Math.atan2(f,u)),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2),n*=t.mixRotate;const m=Math.cos(n),g=Math.sin(n);s.a=(m*u-g*f)*a,s.b=(m*d-g*p)*a,s.c=(g*u+m*f)*l,s.d=(g*d+m*p)*l}}}class Dm extends va{value(e,t,s,n){return s?t.x+n[Mt.X]:(n[Mt.X]*t.a+n[Mt.Y]*t.b+t.worldX)/e.scaleX}}class RS extends ya{mix(e){return e.mixX}apply(e,t,s,n,r,o){r?s.x+=(o?n:n-s.x)*t.mixX:(o||(n-=s.worldX/e.scaleX),s.worldX+=n*t.mixX*e.scaleX)}}class Um extends va{value(e,t,s,n){return s?t.y+n[Mt.Y]:(n[Mt.X]*t.c+n[Mt.Y]*t.d+t.worldY)/e.scaleY}}class PS extends ya{mix(e){return e.mixY}apply(e,t,s,n,r,o){r?s.y+=(o?n:n-s.y)*t.mixY:(o||(n-=s.worldY/e.scaleY),s.worldY+=n*t.mixY*e.scaleY)}}class $m extends va{value(e,t,s,n){if(s)return t.scaleX+n[Mt.SCALEX];const r=t.a/e.scaleX,o=t.c/e.scaleY;return Math.sqrt(r*r+o*o)+n[Mt.SCALEX]}}class kS extends ya{mix(e){return e.mixScaleX}apply(e,t,s,n,r,o){if(r)o?s.scaleX*=1+(n-1)*t.mixScaleX:s.scaleX!==0&&(s.scaleX+=(n-s.scaleX)*t.mixScaleX);else if(o){const a=1+(n-1)*t.mixScaleX;s.a*=a,s.c*=a}else{let a=s.a/e.scaleX,l=s.c/e.scaleY,c=Math.sqrt(a*a+l*l);c!==0&&(c=1+(n-c)*t.mixScaleX/c,s.a*=c,s.c*=c)}}}class Xm extends va{value(e,t,s,n){if(s)return t.scaleY+n[Mt.SCALEY];const r=t.b/e.scaleX,o=t.d/e.scaleY;return Math.sqrt(r*r+o*o)+n[Mt.SCALEY]}}class FS extends ya{mix(e){return e.mixScaleY}apply(e,t,s,n,r,o){if(r)o?s.scaleY*=1+(n-1)*t.mixScaleY:s.scaleY!==0&&(s.scaleY+=(n-s.scaleY)*t.mixScaleY);else if(o){const a=1+(n-1)*t.mixScaleY;s.b*=a,s.d*=a}else{let a=s.b/e.scaleX,l=s.d/e.scaleY,c=Math.sqrt(a*a+l*l);c!==0&&(c=1+(n-c)*t.mixScaleY/c,s.b*=c,s.d*=c)}}}class Vm extends va{value(e,t,s,n){if(s)return t.shearY+n[Mt.SHEARY];const r=1/e.scaleX,o=1/e.scaleY;return(Math.atan2(t.d*o,t.b*r)-Math.atan2(t.c*o,t.a*r))*Ee.radDeg-90+n[Mt.SHEARY]}}class OS extends ya{mix(e){return e.mixShearY}apply(e,t,s,n,r,o){if(r)o||(n-=s.shearY),s.shearY+=n*t.mixShearY;else{const a=e.scaleX,l=e.scaleY,c=s.b/a,h=s.d/l,u=Math.atan2(h,c);n=(n+90)*Ee.degRad,o?n-=Ee.PI/2:(n-=u-Math.atan2(s.c/l,s.a/a),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2)),n=u+n*t.mixShearY;const d=Math.sqrt(c*c+h*h);s.b=Math.cos(n)*d*a,s.d=Math.sin(n)*d*l}}}class tV{constructor(e){M(this,"scale",1);M(this,"attachmentLoader");M(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,s=new AS;s.name="";const n=new aO(e),r=n.readInt32(),o=n.readInt32();s.hash=o===0&&r===0?null:o.toString(16)+r.toString(16),s.version=n.readString(),s.x=n.readFloat(),s.y=n.readFloat(),s.width=n.readFloat(),s.height=n.readFloat(),s.referenceScale=n.readFloat()*t;const a=n.readBoolean();a&&(s.fps=n.readFloat(),s.imagesPath=n.readString(),s.audioPath=n.readString());let l=0;l=n.readInt(!0);for(let p=0;p>5;for(let w=0,_;w>1&1,y.spacingMode=x>>2&3,y.rotateMode=x>>4&3,(x&128)!==0&&(y.offsetRotation=n.readFloat());const v=y.setupPose;v.position=n.readFloat(),y.positionMode===cn.Fixed&&(v.position*=t),v.spacing=n.readFloat(),(y.spacingMode===fs.Length||y.spacingMode===fs.Fixed)&&(v.spacing*=t),v.mixRotate=n.readFloat(),v.mixX=n.readFloat(),v.mixY=n.readFloat(),h.push(y);break}case PO:{const y=new Xc(m);y.bone=c[n.readInt(!0)];let x=n.readByte();if(y.skinRequired=(x&1)!==0,(x&2)!==0&&(y.x=n.readFloat()),(x&4)!==0&&(y.y=n.readFloat()),(x&8)!==0&&(y.rotate=n.readFloat()),(x&16)!==0){let w=n.readFloat();w<-2?(y.scaleYMode=Vs.Volume,w=-2-w):w<0&&(y.scaleYMode=Vs.Uniform,w=-1-w),y.scaleX=w}(x&32)!==0&&(y.shearX=n.readFloat()),y.limit=((x&64)!==0?n.readFloat():5e3)*t,y.step=1/n.readUnsignedByte();const v=y.setupPose;v.inertia=n.readFloat(),v.strength=n.readFloat(),v.damping=n.readFloat(),v.massInverse=(x&128)!==0?n.readFloat():1,v.wind=n.readFloat(),v.gravity=n.readFloat(),x=n.readByte(),(x&1)!==0&&(y.inertiaGlobal=!0),(x&2)!==0&&(y.strengthGlobal=!0),(x&4)!==0&&(y.dampingGlobal=!0),(x&8)!==0&&(y.massGlobal=!0),(x&16)!==0&&(y.windGlobal=!0),(x&32)!==0&&(y.gravityGlobal=!0),(x&64)!==0&&(y.mixGlobal=!0),v.mix=(x&128)!==0?n.readFloat():1,h.push(y);break}case kO:{const y=new Zr(m),x=n.readByte();if(y.skinRequired=(x&1)!==0,y.loop=(x&2)!==0,y.additive=(x&4)!==0,(x&8)!==0){const v=n.readFloat();a&&(x&64)!==0?y.max=v:y.setupPose.time=v}if((x&16)!==0&&(y.setupPose.mix=(x&32)!==0?n.readFloat():1),(x&64)!==0){y.local=(x&128)!==0,y.bone=c[n.readInt(!0)];const v=n.readFloat();let w=1;switch(n.readByte()){case 0:y.property=new Nm;break;case 1:{w=t,y.property=new Dm;break}case 2:{w=t,y.property=new Um;break}case 3:y.property=new $m;break;case 4:y.property=new Xm;break;case 5:y.property=new Vm;break;default:continue}y.property.offset=v*w,y.offset=n.readFloat(),y.scale=n.readFloat()/w}h.push(y);break}}}const d=this.readSkin(n,s,!0,a);d&&(s.defaultSkin=d,s.skins.push(d));{let p=s.skins.length;for(Ge.setArraySize(s.skins,l=p+n.readInt(!0));p0){x=[];for(let b=0;b>4,e.readFloat())}r.push(F);break}}}}}const a=s.slots.length,l=e.readInt(!0);if(l>0){const f=new br(l);for(let p=0;p0){const f=new Sl(h);for(let p=0;p>>1^-(s&1)}readStringRef(){const e=this.readInt(!0);return e===0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let s=0;s>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),s+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),s+=3;break;default:t+=String.fromCharCode(n),s++}}return t}readFloat(){const e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!==0}}let lO=class{constructor(e,t,s,n,r,o){M(this,"source");M(this,"skinIndex");M(this,"slotIndex");M(this,"sourceIndex");M(this,"mesh");M(this,"inheritTimelines");this.mesh=e,this.skinIndex=t,this.slotIndex=s,this.sourceIndex=n,this.source=r,this.inheritTimelines=o}};class xy{constructor(e=null,t,s=0){M(this,"bones");M(this,"vertices");M(this,"length");this.bones=e,this.vertices=t,this.length=s}}var Sn;(function(i){i[i.Region=0]="Region",i[i.BoundingBox=1]="BoundingBox",i[i.Mesh=2]="Mesh",i[i.LinkedMesh=3]="LinkedMesh",i[i.Path=4]="Path",i[i.Point=5]="Point",i[i.Clipping=6]="Clipping"})(Sn||(Sn={}));function is(i,e,t,s){t instanceof Fn?cO(i,e,t,s):hO(i,e,t,s)}function cO(i,e,t,s){let n=i.readFloat(),r=i.readFloat()*s;for(let o=0,a=0,l=t.getFrameCount()-1;t.setFrame(o,n,r),o!==l;o++){const c=i.readFloat(),h=i.readFloat()*s;switch(i.readByte()){case Wi:t.setStepped(o);break;case zi:dt(i,t,a++,o,0,n,c,r,h,s)}n=c,r=h}e.push(t)}function hO(i,e,t,s){let n=i.readFloat(),r=i.readFloat()*s,o=i.readFloat()*s;for(let a=0,l=0,c=t.getFrameCount()-1;t.setFrame(a,n,r,o),a!==c;a++){const h=i.readFloat(),u=i.readFloat()*s,d=i.readFloat()*s;switch(i.readByte()){case Wi:t.setStepped(a);break;case zi:dt(i,t,l++,a,0,n,h,r,u,s),dt(i,t,l++,a,1,n,h,o,d,s)}n=h,r=u,o=d}e.push(t)}function by(i,e){const t=i.readInt(!0);if(t===0)return null;const s=new Array(e).fill(-1),n=new Array(e-t);let r=0,o=0;for(let a=0;a=0;a--)s[a]===-1&&(s[a]=n[--o]);return s}function dt(i,e,t,s,n,r,o,a,l,c){e.setBezier(t,s,n,r,a,i.readFloat(),i.readFloat()*c,i.readFloat(),i.readFloat()*c,o,l)}const uO=0,dO=1,fO=2,mO=3,pO=4,gO=5,vO=6,yO=7,xO=8,bO=9,wO=10,SO=0,MO=1,TO=2,_O=3,CO=4,AO=5,EO=0,IO=1,RO=2,PO=3,kO=4,FO=0,OO=1,LO=0,BO=1,NO=2,DO=0,UO=1,$O=2,XO=4,VO=5,YO=6,GO=7,jO=8,HO=0,WO=1,Wi=1,zi=2;class zO{constructor(e){M(this,"attachmentLoader");M(this,"scale",1);M(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,s=new AS,n=typeof e=="string"?JSON.parse(e):e,r=n.skeleton;if(r&&(s.hash=r.hash,s.version=r.spine,s.x=r.x,s.y=r.y,s.width=r.width,s.height=r.height,s.referenceScale=Q(r,"referenceScale",100)*t,s.fps=r.fps,s.imagesPath=r.images??null,s.audioPath=r.audio??null),n.bones)for(let o=0;o0&&c.properties.push(S)}c.offsets[Mt.ROTATION]=Q(o,"rotation",0),c.offsets[Mt.X]=Q(o,"x",0)*t,c.offsets[Mt.Y]=Q(o,"y",0)*t,c.offsets[Mt.SCALEX]=Q(o,"scaleX",0),c.offsets[Mt.SCALEY]=Q(o,"scaleY",0),c.offsets[Mt.SHEARY]=Q(o,"shearY",0);const v=c.setupPose;d&&(v.mixRotate=Q(o,"mixRotate",1)),f&&(v.mixX=Q(o,"mixX",1)),p&&(v.mixY=Q(o,"mixY",v.mixX)),m&&(v.mixScaleX=Q(o,"mixScaleX",1)),g&&(v.mixScaleY=Q(o,"mixScaleY",v.mixScaleX)),y&&(v.mixShearY=Q(o,"mixShearY",1)),s.constraints.push(c);break}case"path":{const c=new $c(a);c.skinRequired=l;for(let f=0;f0){const d=s.findConstraint(c,Xc);if(!d)throw new Error(`Physics constraint not found: ${c}`);u=s.constraints.indexOf(d)}for(const d in h){const f=h[d];let p=f[0];if(!p)continue;const m=f.length;let g,y=0;if(d==="reset"){const x=new kh(m,u);for(let v=0;p!=null;p=f[v+1],v++)x.setFrame(v,Q(p,"time",0));r.push(x);continue}switch(d){case"inertia":g=new pS(m,m,u);break;case"strength":g=new gS(m,m,u);break;case"damping":g=new vS(m,m,u);break;case"mass":g=new yS(m,m,u);break;case"wind":g=new xS(m,m,u);break;case"gravity":g=new bS(m,m,u);break;case"mix":{y=1,g=new wS(m,m,u);break}default:continue}Ks(r,f,g,y,1)}}if(e.slider)for(const c in e.slider){const h=e.slider[c],u=s.findConstraint(c,Zr);if(!u)throw new Error(`Slider not found: ${c}`);const d=s.constraints.indexOf(u);for(const f in h){const p=h[f];if(!p[0])continue;const g=p.length;switch(f){case"time":Ks(r,p,new SS(g,g,d),1,1);break;case"mix":Ks(r,p,new MS(g,g,d),1,1);break}}}if(e.attachments)for(const c in e.attachments){const h=e.attachments[c],u=s.findSkin(c);if(!u)throw new Error(`Skin not found: ${c}`);for(const d in h){const f=h[d],p=s.findSlot(d);if(!p)throw new Error(`Attachment slot not found: ${d}`);const m=p.index;for(const g in f){const y=f[g],x=u.getAttachment(m,g);if(!x)throw new Error(`Timeline attachment not found: ${g}`);for(const v in y){const w=y[v];let _=w[0];if(_){if(v==="deform"){const S=x.bones,b=x.vertices,A=S?b.length/3*2:b.length,P=new cS(w.length,w.length,m,x);let F=Q(_,"time",0);for(let E=0,k=0;;E++){let B;const D=Q(_,"vertices",null);if(!D)B=S?Ge.newFloatArray(A):b;else{B=Ge.newFloatArray(A);const C=Q(_,"offset",0);if(Ge.arrayCopy(D,0,B,C,D.length),n!==1)for(let R=C,O=R+D.length;R=0;c--)r[c]===-1&&(r[c]=o[--l]);return r}function pt(i,e,t,s,n,r,o,a,l,c){if(i==="stepped")return e.setStepped(s),t;const h=n<<2,u=i[h],d=i[h+1]*c,f=i[h+2],p=i[h+3]*c;return e.setBezier(t,s,n,r,a,u,d,f,p,o,l),t+1}function Q(i,e,t){return i[e]!==void 0?i[e]:t}class KO{newRegionAttachment(e,t,s,n){return new mu(t,s)}newMeshAttachment(e,t,s,n){return new kl(t,s)}newBoundingBoxAttachment(e,t){return new aw(t)}newPathAttachment(e,t){return new wl(t)}newPointAttachment(e,t){return new fw(t)}newClippingAttachment(e,t){return new sa(t)}}class ZO{sequence(e){for(let t=0;t!Number.isInteger(h)||h<0||h>=o))throw new Error(`拖尾网格“${e}”的三角形索引越界`);const a=Number(i.hull)||0;if(!Number.isInteger(a)||a<0||a>o)throw new Error(`拖尾网格“${e}”的外轮廓数量无效`);if(Array.isArray(i.edges)&&i.edges.some(h=>!Number.isInteger(h)||h<0||h>=o*2||h%2))throw new Error(`拖尾网格“${e}”的外轮廓边索引越界`);if(n.length===s.length)return;let l=0,c=0;for(;l=t)throw new Error(`拖尾网格“${e}”引用了不存在的骨骼`);if(![p,m,g].every(Number.isFinite)||g<0)throw new Error(`拖尾网格“${e}”包含无效权重数据`);u+=g}if(Math.abs(u-1)>.001)throw new Error(`拖尾网格“${e}”的顶点权重之和不为 1`);c++}if(l!==n.length||c!==o)throw new Error(`拖尾网格“${e}”的顶点数量与 UV 不一致`)}function eL(i,e){var r,o,a,l;const t=Array.isArray(i.bones)?i.bones:[],s=new Map(t.map(c=>[String(c.name||""),c])),n=new Set;for(const c of t){if(c.inherit!=null&&!JO.has(c.inherit))throw new Error(`骨骼“${c.name||""}”的 inherit 值“${c.inherit}”不符合 Spine ${e} JSON 格式`);if(/_trail_\d+_\d+$/.test(String(c.name||""))){const h=s.get(String(c.parent||""));if(!h||/_trail_\d+_\d+$/.test(String(h.name||"")))throw new Error(`拖尾骨骼“${c.name||""}”必须直接挂在粒子系统骨骼下,不能组成骨骼链`)}}for(const c of Array.isArray(i.skins)?i.skins:[]){const h=(c==null?void 0:c.attachments)||{};for(const u of Object.keys(h))for(const d of Object.keys(h[u]||{})){const f=h[u][d];(f==null?void 0:f.type)==="mesh"&&(QO(f,d,t.length),((r=f.vertices)==null?void 0:r.length)!==((o=f.uvs)==null?void 0:o.length)&&n.add(u))}}for(const c of Object.values(i.animations||{}))for(const h of n){const u=(l=(a=c==null?void 0:c.slots)==null?void 0:a[h])==null?void 0:l.attachment;if(Array.isArray(u)&&u.some(d=>!(d!=null&&d.name)))throw new Error(`加权拖尾插槽“${h}”不能使用空附件,未出现或死亡阶段应将对应骨骼缩放设为 0`)}}function tL(i){var e;if(String(((e=i==null?void 0:i.skeleton)==null?void 0:e.spine)||"")!=="3.8")throw new Error("Spine 3.8 导出的版本标识必须为 3.8");for(const t of i.bones||[])if(t.inherit!=null)throw new Error(`Spine 3.8 骨骼“${t.name||""}”应使用 transform,不能使用 inherit`);for(const t of Object.values(i.animations||{})){for(const n of Object.values(t.slots||{})){if(n.rgba||n.rgba2)throw new Error("Spine 3.8 插槽颜色时间轴必须使用 color / twoColor");for(const r of n.attachment||[])if(!Object.prototype.hasOwnProperty.call(r,"name"))throw new Error("Spine 3.8 附件时间轴的隐藏帧必须显式写入 name: null")}for(const n of Object.values(t.bones||{}))for(const r of n.rotate||[])if(r.value!=null||r.angle==null)throw new Error("Spine 3.8 旋转时间轴必须使用 angle");const s=[t];for(;s.length;){const n=s.pop();if(!(!n||typeof n!="object")){if(!Array.isArray(n)&&Array.isArray(n.curve))throw new Error("Spine 3.8 不支持 4.x 数组曲线格式");s.push(...Object.values(n))}}}}function Sy(i,e){var o;const t=JSON.parse(i),s=gh((o=t==null?void 0:t.skeleton)==null?void 0:o.spine);if(!s)throw new Error(`导出版本不受支持,仅支持 Spine ${mm()}`);if(e&&s!==e)throw new Error(`导出版本不一致:设置为 Spine ${e},JSON 标记为 Spine ${s}`);eL(t,s),s==="3.8"&&tL(t);const n=s==="3.8"?Cw(JSON.parse(JSON.stringify(t))):t,r=s==="4.3"?new zO(new ZO).readSkeletonData(n):new Sh(new KO).readSkeletonData(n);if(!r.bones.length)throw new Error("导出结果缺少骨骼");return{version:s,bones:r.bones.length,slots:r.slots.length,animations:r.animations.length}}const LS="http://127.0.0.1:27843";class Oh extends Error{constructor(t,s="CONNECTOR_ERROR",n){super(t);M(this,"code");M(this,"pairUrl");this.name="SpineConnectorError",this.code=s,this.pairUrl=n}}function Ym(i,e){return String(i||"").trim().replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||e}function sL(i,e){const t=/\.([a-z0-9]{2,5})$/i.exec(i);return t?`.${t[1].toLowerCase()}`:e.includes("jpeg")?".jpg":e.includes("webp")?".webp":e.includes("gif")?".gif":".png"}function iL(i,e,t){const s=String(i||"").replace(/\\/g,"/").split("/").filter(Boolean).map(r=>Ym(r,"images")),n=Ym(e.replace(/\.[^./\\]+$/,""),"image");return[...s,`${n}${sL(e,t)}`].join("/")}async function pf(i,e,t){if(!i)return null;const s=await fetch(i);if(!s.ok)throw new Error(`无法读取导出图片:${t}`);const n=await s.blob(),r=new Uint8Array(await n.arrayBuffer());let o="";const a=32768;for(let l=0;lo.finally(()=>{s++,e==null||e(s,t.length)});for(const o of i.filter(a=>a.visible!==!1)){for(const a of o.config.imageResources)if(a.imageMode==="sequence"&&a.sequenceFrames.length)for(const l of a.sequenceFrames)t.push(n(pf(l.previewUrl,a.textureFolder,l.name||a.textureName)));else t.push(n(pf(a.previewUrl,a.textureFolder,a.textureName)));if(o.config.trail)for(const a of o.config.trailResources)t.push(n(pf(a.previewUrl,"",a.textureName)))}const r=new Map;for(const o of await Promise.all(t))o&&!r.has(o.path)&&r.set(o.path,o);return[...r.values()]}async function nL(){try{const i=await fetch(`${LS}/v1/health`,{cache:"no-store"});if(!i.ok)throw new Error(`HTTP ${i.status}`);return{available:!0,...await i.json()}}catch(i){return{available:!1,authorized:!1,error:i instanceof Error?i.message:String(i)}}}async function rL(i,e){const t=await BS(i.systems,(n,r)=>{e==null||e({phase:"images",progress:r?n/r:1})}),s=JSON.stringify({schemaVersion:1,projectName:i.projectName,spineVersion:i.spineVersion,skeletonJson:i.skeletonJson,images:t});return new Promise((n,r)=>{const o=new XMLHttpRequest;o.open("POST",`${LS}/v1/convert`),o.responseType="blob",o.setRequestHeader("Content-Type","application/json"),o.upload.onprogress=a=>{e==null||e({phase:"upload",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.upload.onloadend=()=>e==null?void 0:e({phase:"processing",progress:null}),o.onprogress=a=>{e==null||e({phase:"download",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.onerror=()=>r(new Oh("未检测到本地 Spine 连接器,请先启动连接器","CONNECTOR_OFFLINE")),o.onload=async()=>{const a=o.response;if(o.status<200||o.status>=300){let h={};try{h=JSON.parse(await a.text())}catch{}r(new Oh(h.message||`Spine 连接器返回错误:HTTP ${o.status}`,h.code,h.pairUrl));return}const l=o.getResponseHeader("X-Spine-File-Name");let c=`${Ym(i.projectName,"SpineParticle")}.zip`;if(l)try{c=decodeURIComponent(l)}catch{}n({blob:a,fileName:c,spineEditorVersion:o.getResponseHeader("X-Spine-Editor-Version")||i.spineVersion,imageCount:t.length})},o.send(s)})}function oL(i,e){const t=URL.createObjectURL(i),s=document.createElement("a");s.href=t,s.download=/\.zip$/i.test(e)?e:`${e}.zip`,s.style.display="none",document.body.appendChild(s),s.click(),s.remove(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}const aL=Array.from({length:256},(i,e)=>{let t=e;for(let s=0;s<8;s++)t=t&1?3988292384^t>>>1:t>>>1;return t>>>0});function lL(i){let e=4294967295;for(const t of i)e=aL[(e^t)&255]^e>>>8;return(e^4294967295)>>>0}function cL(i){const e=String(i||"").replace(/\\/g,"/").split("/").filter(t=>t&&t!==".");if(!e.length||e.some(t=>t===".."))throw new Error("ZIP 文件路径无效");return e.join("/")}function hL(i=new Date){const e=Math.max(1980,i.getFullYear());return{time:i.getHours()<<11|i.getMinutes()<<5|Math.floor(i.getSeconds()/2),date:e-1980<<9|i.getMonth()+1<<5|i.getDate()}}function gf(i){const e=new Uint8Array(i);return{bytes:e,view:new DataView(e.buffer)}}function My(i){const e=new Uint8Array(i.reduce((s,n)=>s+n.length,0));let t=0;for(const s of i)e.set(s,t),t+=s.length;return e}function uL(i){const e=new TextEncoder,t=[],s=[],n=hL();let r=0;for(const l of i){const c=e.encode(cL(l.name)),h=lL(l.data),u=gf(30);u.view.setUint32(0,67324752,!0),u.view.setUint16(4,20,!0),u.view.setUint16(6,2048,!0),u.view.setUint16(10,n.time,!0),u.view.setUint16(12,n.date,!0),u.view.setUint32(14,h,!0),u.view.setUint32(18,l.data.length,!0),u.view.setUint32(22,l.data.length,!0),u.view.setUint16(26,c.length,!0),t.push(u.bytes,c,l.data);const d=gf(46);d.view.setUint32(0,33639248,!0),d.view.setUint16(4,20,!0),d.view.setUint16(6,20,!0),d.view.setUint16(8,2048,!0),d.view.setUint16(12,n.time,!0),d.view.setUint16(14,n.date,!0),d.view.setUint32(16,h,!0),d.view.setUint32(20,l.data.length,!0),d.view.setUint32(24,l.data.length,!0),d.view.setUint16(28,c.length,!0),d.view.setUint32(42,r,!0),s.push(d.bytes,c),r+=u.bytes.length+c.length+l.data.length}const o=My(s),a=gf(22);return a.view.setUint32(0,101010256,!0),a.view.setUint16(8,i.length,!0),a.view.setUint16(10,i.length,!0),a.view.setUint32(12,o.length,!0),a.view.setUint32(16,r,!0),new Blob([My([...t,o,a.bytes])],{type:"application/zip"})}function dL(i){const e=atob(i),t=new Uint8Array(e.length);for(let s=0;ss===".."||/^[a-z]+:/i.test(s))?"images":t.join("/")}function mL(i){return String(i||"SpineParticle").replace(/\.json$/i,"").replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||"SpineParticle"}async function pL(i){const e=await BS(i.systems);if(!e.length)throw new Error("当前可见粒子系统没有可导出的图片");const t=fL(i.imagesPath);return{blob:uL(e.map(n=>({name:`${t}/${n.path}`,data:dL(n.dataBase64)}))),imageCount:e.length,folder:t}}function gL(i,e){const t=`${mL(e)}-images.zip`,s=URL.createObjectURL(i),n=document.createElement("a");return n.href=s,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(s),1e3),t}function vL(i){i.settings.exportSettings=S1(i.settings.exportSettings);const e=De(()=>i.settings.exportSettings),t=Fe(!1),s=Fe(null),n=Fe(""),r=Fe(!1),o=Fe(null),a=Fe(""),l=Fe(""),c=De(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"连接器可用 · Spine 已就绪":"连接器已启动,当前网站尚未授权":"连接器已启动,但未找到 Spine":"本地 Spine 连接器未启动":"正在检测本地 Spine 连接器…"}),h=De(()=>{var b,A,P,F,E,k;return{ready:!!((b=o.value)!=null&&b.available)&&!!((A=o.value)!=null&&A.spineFound)&&!!((P=o.value)!=null&&P.authorized),warning:!!((F=o.value)!=null&&F.available)&&(!((E=o.value)!=null&&E.spineFound)||!((k=o.value)!=null&&k.authorized))}}),u=De(()=>{var b,A,P;return!!((b=o.value)!=null&&b.available)&&!!((A=o.value)!=null&&A.spineFound)&&!!((P=o.value)!=null&&P.authorized)}),d=De(()=>{const b=o.value;return!(b!=null&&b.available)||!b.spineFound||b.authorized||typeof window>"u"?"":`http://127.0.0.1:27843/pair?origin=${encodeURIComponent(window.location.origin)}`}),f=De(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"":"未授权":"未找到 Spine":"未启动":"检测中"}),p=De(()=>t.value?"正在重新计算并生成 Spine 工程":f.value?`暂不可用:${f.value}`:`调用本机 Spine 自动生成 ${e.value.spineVersion} 工程`);Oi(()=>{y(),m=window.setInterval(y,3e3)});let m,g=0;po(()=>{m!==void 0&&window.clearInterval(m)});async function y(){const b=++g,A=await nL();if(b!==g)return;o.value=A;const P=l.value;(P==="CONNECTOR_OFFLINE"?A.available:P==="SPINE_NOT_FOUND"?A.available&&A.spineFound:P==="ORIGIN_NOT_ALLOWED"?A.available&&A.spineFound&&A.authorized:!!P&&A.available&&A.spineFound&&A.authorized)&&(l.value="",a.value="",r.value&&(r.value=!1,n.value=""))}function x(){return new Promise(b=>requestAnimationFrame(()=>b()))}async function v(b){i.timeline.playing=!1,i.timeline.frame=0,i.timeline.recorded=!1;for(const F of i.systems)F.frames=void 0;i.recalcTotalFrames(),await x(),i.timeline.playing=!0;const A=i.timeline.totalFrames/Math.max(1,i.timeline.fps)*1e3,P=performance.now()+Math.max(8e3,A*2.5+3e3);for(;!i.timeline.recorded;){if(performance.now()>P)throw new Error("重新计算动画超时,请确认页面仍在运行后重试");b==null||b(Math.min(.98,i.timeline.frame/Math.max(1,i.timeline.totalFrames-1))),await new Promise(F=>setTimeout(F,50))}b==null||b(1)}async function w(){if(!t.value){t.value=!0,s.value="json",r.value=!1,l.value="",a.value="",n.value="正在重新计算粒子动画…";try{await v();const b=hy({systems:i.systems,timeline:i.timeline,settings:e.value});Sy(b.text,e.value.spineVersion),W3(b,e.value.fileName);const A=b.warnings.length?`;${b.warnings.length} 条资源提示(缺图仍已导出)`:"";n.value=`已导出 Spine ${e.value.spineVersion}:${b.particleSystemCount} 个粒子系统、${b.animationCount} 个动画、${b.boneCount} 根骨骼${A}`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,s.value=null}}}async function _(){if(t.value)return;t.value=!0,s.value="spine",r.value=!1,l.value="",a.value="",n.value="正在重新计算粒子动画…";const b=$w("导出 Spine 包","正在重新计算粒子动画…");try{await b.paint(),await v(E=>b.update(E*18,"正在重新计算粒子动画…")),b.update(20,"正在生成 Spine JSON…");const A=hy({systems:i.systems,timeline:i.timeline,settings:e.value});Sy(A.text,e.value.spineVersion),n.value="正在整理图片并调用本机 Spine…";const P=e.value.fileName.replace(/\.json$/i,"")||"SpineParticle",F=await rL({projectName:P,spineVersion:e.value.spineVersion,skeletonJson:A.text,systems:i.systems},({phase:E,progress:k})=>{E==="images"?b.update(k==null?null:22+k*18,"正在整理工程图片…"):E==="upload"?b.update(k==null?null:40+k*30,"正在上传数据到 Spine 连接器…"):E==="processing"?b.update(null,"Spine 正在转换工程,请稍候…"):b.update(k==null?null:82+k*16,"正在下载生成的 Spine 工程包…")});b.update(99,"正在交给浏览器下载…"),oL(F.blob,F.fileName),n.value=`已生成 ${F.fileName}:包含 .spine 工程和 ${F.imageCount} 张图片,Spine ${F.spineEditorVersion}`,await y(),await b.finish("Spine 工程包已开始下载")}catch(A){const P=A instanceof Error?A.message:String(A);r.value=!0,l.value=A instanceof Oh?A.code:"",A instanceof Oh&&A.pairUrl&&(a.value=A.pairUrl),n.value=P,await y(),await b.fail(P)}finally{t.value=!1,s.value=null}}async function S(){if(!t.value){t.value=!0,s.value="images",r.value=!1,l.value="",a.value="",n.value="正在整理当前粒子系统使用的图片…";try{const b=await pL({systems:i.systems,imagesPath:e.value.imagesPath}),A=gL(b.blob,e.value.fileName);n.value=`已生成 ${A}:${b.folder}/ 内包含 ${b.imageCount} 张图片`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,s.value=null}}}return{exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorHealth:o,connectorPairUrl:a,connectorExportErrorCode:l,connectorStatusText:c,connectorStatusClass:h,connectorReady:u,connectorAuthorizationUrl:d,connectorDisabledReason:f,connectorButtonTitle:p,connectorHealthTimer:m,connectorHealthRequestId:g,refreshConnectorHealth:y,nextPaint:x,prepareExportFrames:v,exportSpineJson:w,exportSpineProject:_,exportSpineImages:S}}function yL(i){const e=Fe(null),t=Fe(""),s=Fe([]),n=Fe(!1),r=Fe(""),o=Fe(!1);function a(){kw(i),o.value=!1,r.value="配置已保存到本地"}async function l(u){var p;const d=u.target,f=(p=d.files)==null?void 0:p[0];if(f){r.value="正在加载配置…",o.value=!1;try{await kk(i,f),r.value=`已加载:${f.name}`}catch(m){o.value=!0,r.value=m instanceof Error?m.message:String(m)}finally{d.value=""}}}async function c(){try{const u=await fetch(`/Preset/index.json?t=${Date.now()}`,{cache:"no-store"});if(!u.ok)throw new Error("无法读取预设列表");const d=await u.json();s.value=Array.isArray(d)?d.filter(f=>!!f&&typeof f.name=="string"&&typeof f.file=="string"):[]}catch{s.value=[]}}async function h(){const u=t.value;if(!u)return;n.value=!0,o.value=!1,r.value="正在加载预设…";const d=$w("加载预设",`正在下载 ${u}…`);try{await d.paint();const f=await fetch(`/Preset/${encodeURIComponent(u)}`,{cache:"no-store"});if(!f.ok)throw new Error(`无法读取预设:${u}`);const p=await y3(f,m=>{d.update(m==null?null:m*55,`正在下载 ${u}…`)});d.update(58,"正在解析预设配置…"),d.update(70,"正在解析并恢复预设资源…"),await Ow(i,p),r.value=`已加载预设:${u.replace(/\.json$/i,"")}`,await d.finish("预设加载完成")}catch(f){o.value=!0;const p=f instanceof Error?f.message:String(f);r.value=`${p},请检查预设文件命名`,await d.fail(p)}finally{n.value=!1,t.value=""}}return Oi(c),{configFileInput:e,selectedPreset:t,presetOptions:s,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:l,refreshPresets:c,loadSelectedPreset:h}}function xL(i){const e=Fe(null),t=Fe(null),s=Fe(null),n=Fe(null),r=Fe(null);function o(){var L;const R=(L=i.value)==null?void 0:L.config;if(!R)return;const O=Math.max(0,...R.trailResources.map($=>$.id))+1;R.trailResources.push({id:O,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:Mm.map($=>({...$})),boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:wm.map($=>({...$})),shapeEnabled:!1,shapeCurve:Tm.map($=>({...$}))}),p()}function a(R){var O;r.value=R,(O=n.value)==null||O.click()}function l(R,O){var V;const L=(V=i.value)==null?void 0:V.config;if(!L)return;const $=R==="trailGridCols"?32:16;L[R]=Math.min($,Math.max(2,Math.round(Number(O)||2)))}function c(R,O){var $;const L=($=i.value)==null?void 0:$.config.trailResources.find(V=>V.id===R);L&&(L.boneCount=Math.min(16,Math.max(2,Math.round(Number(O)||2))))}function h(R,O){var $;const L=($=i.value)==null?void 0:$.config.trailResources.find(V=>V.id===R);L&&(L.rotation=Math.max(-360,Math.min(360,Number(O)||0)))}async function u(R){var K,ie;const O=R.target,L=(K=O.files)==null?void 0:K[0],$=(ie=i.value)==null?void 0:ie.config,V=$==null?void 0:$.trailResources.find(re=>re.id===r.value);if(!L||!V){O.value="";return}const j=await A(L);V.texture=ur(await ze.fromURL(j)),V.previewUrl=j,V.textureName=L.name.replace(/\.[^.]+$/,"")||"trail",O.value="",r.value=null}async function d(R){var $;const O=($=i.value)==null?void 0:$.config,L=O==null?void 0:O.trailResources.find(V=>V.id===R);L&&(L.texture=ur(await ze.fromURL("/images/trail.png")),L.previewUrl="/images/trail.png",L.textureName="trail",L.weight=100,L.locked=!1,L.rotation=0,L.boneCount=3,L.trailRatio=100,L.lengthMode="fixed",L.length=100,L.lengthMin=100,L.lengthMax=100,L.widthSizeMode="fixed",L.width=100,L.widthMin=100,L.widthMax=100,L.widthMode="particle",L.lifeLengthEnabled=!1,L.lifeLengthCurve=wm.map(V=>({...V})),L.shapeEnabled=!1,L.shapeCurve=Tm.map(V=>({...V})),L.colorMode="particle",L.color="#ffffff",L.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],L.blend="normal",L.alphaMode="particle",L.alpha=1,L.alphaCurve=Mm.map(V=>({...V})),p())}function f(R){var $;const O=($=i.value)==null?void 0:$.config.trailResources;if(!O||O.length<=1)return;const L=O.findIndex(V=>V.id===R);L>=0&&O.splice(L,1),p()}function p(){var V;const R=(V=i.value)==null?void 0:V.config.trailResources;if(!(R!=null&&R.length))return;if(R.length===1){R[0].weight=100,R[0].locked=!1;return}const O=R.filter(j=>j.locked),L=R.filter(j=>!j.locked);let $=O.reduce((j,K)=>j+Math.max(0,Number(K.weight)||0),0);$>100&&(X(O,100,!0),$=100),X(L,100-$)}function m(R,O){var ie;const L=(ie=i.value)==null?void 0:ie.config.trailResources;if(!(L!=null&&L.length))return;if(L.length===1){L[0].weight=100,L[0].locked=!1;return}const $=L.find(re=>re.id===R);if(!$||$.locked)return;const V=L.filter(re=>re.id!==R&&re.locked).reduce((re,pe)=>re+Math.max(0,Number(pe.weight)||0),0),j=Math.max(0,100-V),K=L.filter(re=>re.id!==R&&!re.locked);$.weight=D(Math.min(j,Math.max(0,Number(O)||0))),K.length?X(K,j-$.weight,!0):$.weight=D(j)}function g(R){var $;const O=($=i.value)==null?void 0:$.config.trailResources;if(!O||O.length===1)return;const L=O.find(V=>V.id===R);L&&(L.locked=!L.locked)}function y(R,O){const L=O.target;R.color=F(L.value,R.color),L.value=R.color}function x(R,O){y(R,O),O.target.blur()}function v(){var L;const R=(L=i.value)==null?void 0:L.config;if(!R)return;const O=Math.max(0,...R.imageResources.map($=>$.id))+1;R.imageResources.push({id:O,texture:R.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:Sm.map($=>({...$}))}),N()}function w(R){var O;s.value=R,(O=e.value)==null||O.click()}function _(R){var O;s.value=R,(O=t.value)==null||O.click()}async function S(R){var ie,re;const O=R.target,L=(ie=O.files)==null?void 0:ie[0],$=(re=i.value)==null?void 0:re.config,V=$==null?void 0:$.imageResources.find(pe=>pe.id===s.value);if(!L||!V){O.value="";return}const j=await A(L),K=ur(await ze.fromURL(j));V.texture=K,V.previewUrl=j,V.textureFolder="",V.textureName=L.name.replace(/\.[^.]+$/,"")||"particle",O.value="",s.value=null}async function b(R){var j;const O=R.target,L=Array.from(O.files||[]).sort((K,ie)=>K.name.localeCompare(ie.name,void 0,{numeric:!0,sensitivity:"base"})),$=(j=i.value)==null?void 0:j.config,V=$==null?void 0:$.imageResources.find(K=>K.id===s.value);if(!L.length||!V){O.value="";return}V.sequenceFrames=await Promise.all(L.map(async K=>{const ie=await A(K);return{name:K.name,previewUrl:ie,texture:ur(await ze.fromURL(ie))}})),V.imageMode="sequence",O.value="",s.value=null}function A(R){return new Promise((O,L)=>{const $=new FileReader;$.onload=()=>O(String($.result||"")),$.onerror=()=>L($.error),$.readAsDataURL(R)})}function P(R){var $;const O=($=i.value)==null?void 0:$.config,L=O==null?void 0:O.imageResources.find(V=>V.id===R);!O||!L||(L.texture=O.texture,L.textureName="star",L.textureFolder="",L.previewUrl="/images/star.png",L.imageMode="fixed",L.sequencePlayback="loop-forward",L.sequenceFps=30,L.sequenceFrames=[],L.scale=1,L.anchorX=.5,L.anchorY=.5,L.colorMode="fixed",L.colorStart="#ffffff",L.colorEnd="#ff4d4d",L.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],L.blend="normal",L.independentAlpha="off",L.alpha=1,L.alphaCurveMode="跟随导出",L.alphaCurve=Sm.map(V=>({...V})),L.locked=!1,N())}function F(R,O){let L=R.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(L)&&(L=L.split("").map($=>$+$).join("")),/^[0-9a-f]{6}$/i.test(L)?`#${L.toLowerCase()}`:O}function E(R,O){const L=O.target;R.colorStart=F(L.value,R.colorStart),L.value=R.colorStart}function k(R,O){E(R,O),O.target.blur()}function B(R){var $;const O=($=i.value)==null?void 0:$.config.imageResources;if(!O||O.length<=1)return;const L=O.findIndex(V=>V.id===R);L>=0&&O.splice(L,1),N()}function D(R){return Math.round(R)}function X(R,O,L=!1){if(!R.length)return;const $=Math.max(0,D(O)),V=L?R.reduce((K,ie)=>K+Math.max(0,Number(ie.weight)||0),0):0;let j=0;R.forEach((K,ie)=>{const re=ie===R.length-1,pe=D(re?$-j:V>0?$*Math.max(0,Number(K.weight)||0)/V:$/R.length);K.weight=pe,j+=pe})}function N(){var V;const R=(V=i.value)==null?void 0:V.config.imageResources;if(!(R!=null&&R.length))return;if(R.length===1){R[0].weight=100,R[0].locked=!1;return}const O=R.filter(j=>j.locked),L=R.filter(j=>!j.locked);let $=O.reduce((j,K)=>j+Math.max(0,Number(K.weight)||0),0);$>100&&(X(O,100,!0),$=100),X(L,100-$)}function U(R,O){var ie;const L=(ie=i.value)==null?void 0:ie.config.imageResources;if(!(L!=null&&L.length))return;if(L.length===1){L[0].weight=100,L[0].locked=!1;return}const $=L.find(re=>re.id===R);if(!$||$.locked)return;const V=L.filter(re=>re.id!==R&&re.locked).reduce((re,pe)=>re+Math.max(0,Number(pe.weight)||0),0),j=Math.max(0,100-V),K=L.filter(re=>re.id!==R&&!re.locked);if($.weight=D(Math.min(j,Math.max(0,Number(O)||0))),!K.length){$.weight=D(j);return}X(K,j-$.weight,!0)}function C(R){var $;const O=($=i.value)==null?void 0:$.config.imageResources;if(!O||O.length===1)return;const L=O.find(V=>V.id===R);L&&(L.locked=!L.locked)}return{textureFileInput:e,sequenceFileInput:t,pendingResourceId:s,trailTextureFileInput:n,pendingTrailResourceId:r,addTrailResource:o,openTrailTexturePicker:a,onTrailRigChange:l,onTrailResourceBoneCountChange:c,onTrailResourceRotationChange:h,onTrailTextureFile:u,resetTrailTexture:d,removeTrailResource:f,rebalanceTrailWeights:p,setTrailResourceWeight:m,toggleTrailResourceLock:g,setTrailColor:y,commitTrailColor:x,addImageResource:v,openTexturePicker:w,openSequencePicker:_,onTextureFile:S,onSequenceFiles:b,readFileAsDataUrl:A,resetTexture:P,normalizeHex:F,setResourceFixedColor:E,commitResourceFixedColor:k,removeImageResource:B,roundWeight:D,distributeImageWeights:X,rebalanceImageWeights:N,setResourceWeight:U,toggleResourceLock:C}}function bL(){const i=yo(),{exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:l,connectorReady:c,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=vL(i),{configFileInput:y,selectedPreset:x,presetOptions:v,presetLoading:w,configMessage:_,configError:S,saveConfig:b,onConfigFileChange:A,refreshPresets:P,loadSelectedPreset:F}=yL(i);function E(Z){return Z==="跟随导出"?e.value.keyframeCurve==="bezier"?"bezier":"linear":Z==="贝塞尔"?"bezier":"linear"}i.systems.length||i.addSystem();const k=De(()=>{const Z=i.systems.findIndex(ae=>ae.id===i.activeId);return Z>=0?Z:0}),B=De(()=>i.systems[k.value]||null),{textureFileInput:D,sequenceFileInput:X,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:C,onTrailRigChange:R,onTrailResourceBoneCountChange:O,onTrailResourceRotationChange:L,onTrailTextureFile:$,resetTrailTexture:V,removeTrailResource:j,setTrailResourceWeight:K,toggleTrailResourceLock:ie,setTrailColor:re,commitTrailColor:pe,addImageResource:ge,openTexturePicker:he,openSequencePicker:fe,onTextureFile:Y,onSequenceFiles:W,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:q,removeImageResource:se,setResourceWeight:ue,toggleResourceLock:ne}=xL(B),de=De(()=>B.value?M1(B.value.config,i.timeline.fps):30),le=De(()=>{var ae;const Z=(ae=B.value)==null?void 0:ae.config;return Z?Math.max(1,Math.ceil(Number(Z.loopDurationFrames)||1)):1}),Re=De(()=>i.activeObjectType),we=De(()=>i.activeObjectType==="collision"&&i.colliders.find(Z=>Z.id===i.activeObjectId)||null),me=De(()=>i.activeObjectType==="path"&&i.paths.find(Z=>Z.id===i.activeObjectId)||null),Ue=De(()=>i.activeObjectType==="spine"&&i.spines.find(Z=>Z.id===i.activeObjectId)||null),Je=De(()=>i.activeObjectType==="particle"?i.systems.some(Z=>Z.id===i.activeObjectId):i.activeObjectType==="collision"?i.colliders.some(Z=>Z.id===i.activeObjectId):i.activeObjectType==="path"?i.paths.some(Z=>Z.id===i.activeObjectId):i.spines.some(Z=>Z.id===i.activeObjectId)),qe=De(()=>{const Z=i.spines.find(ae=>ae.selectedBone&&ae.bones.some(Se=>Se.name===ae.selectedBone));return Z?{spine:Z,boneName:Z.selectedBone}:null}),Ze=De(()=>{var Se;const Z=(Se=B.value)==null?void 0:Se.config;if(!Z||Z.emitterFollowMode!=="bone")return null;const ae=i.spines.find(bt=>bt.id===Z.emitterFollowSpineId);return!ae||!ae.bones.some(bt=>bt.name===Z.emitterFollowBoneName)?null:{spine:ae,boneName:Z.emitterFollowBoneName}}),Be=Fe(!1),Me=Fe(""),nt=De(()=>i.spines.filter(Z=>Z.enabled&&Z.visible!==!1&&Z.status==="ready")),Te=De(()=>i.spines.find(Z=>{var ae;return Z.id===((ae=B.value)==null?void 0:ae.config.renderLayerSpineId)})||null),gs=De(()=>{const Z=Te.value;return!!Z&&Z.enabled&&Z.visible!==!1&&Z.status==="ready"}),Ct=De(()=>{var Z;return[...((Z=Te.value)==null?void 0:Z.slots)||[]].sort((ae,Se)=>ae.order-Se.order)}),xt=De(()=>{const Z=Me.value.trim().toLocaleLowerCase();return Z?Ct.value.filter(ae=>ae.name.toLocaleLowerCase().includes(Z)||ae.attachment.toLocaleLowerCase().includes(Z)):Ct.value}),te=De(()=>Ct.value.find(Z=>{var ae;return Z.name===((ae=B.value)==null?void 0:ae.config.renderLayerSlotName)})||null),oe=De(()=>{const Z=te.value;return Z&&Ct.value.filter(ae=>ae.orderSe.order-ae.order)[0]||null}),lt=De(()=>{var bt;const Z=(bt=B.value)==null?void 0:bt.config,ae=Te.value,Se=te.value;return!Z||!ae||!Se?"":`${ae.name} / ${Se.name} · 图片${Z.renderLayerSlotPosition==="below"?"之下":"之上"}`}),It=De(()=>{var Se;const Z=(Se=B.value)==null?void 0:Se.config,ae=te.value;return!Z||!ae?"":Z.renderLayerSlotPosition==="above"?`渲染在 ${ae.name} 图片之上、其后插槽之下`:oe.value?`渲染在 ${oe.value.name} 与 ${ae.name} 之间`:""}),Rt=De(()=>{var Se;const Z=(Se=B.value)==null?void 0:Se.config;if(!Z||Z.renderLayerMode!=="slot")return"";if(!nt.value.length)return"没有已加载的 Spine,粒子临时显示在最上层。";if(!Z.renderLayerSpineId)return"尚未选择 Spine,粒子临时显示在最上层。";const ae=Te.value;return ae?!ae.enabled||ae.status!=="ready"?"目标 Spine 未就绪,粒子临时显示在最上层。":Z.renderLayerSlotName?te.value?Z.renderLayerSlotPosition==="below"&&!oe.value?"这是第一个插槽,无法显示在其下方,粒子临时显示在最上层。":"":"目标插槽不存在(资源可能已更换),粒子临时显示在最上层。":"":"目标 Spine 不存在,粒子临时显示在最上层。"});function tt(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;Z&&(Z.renderLayerMode="slot",!Z.renderLayerSpineId&&nt.value.length&&(Z.renderLayerSpineId=nt.value[0].id),Be.value=!Z.renderLayerSlotName)}function ni(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.renderLayerSpineId=Math.max(0,Math.round(Number(Z.target.value)||0)),ae.renderLayerSlotName="",Be.value=!0)}function rs(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.renderLayerSlotName=Z.name,Be.value=!1,Me.value="")}function ss(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;Z&&(Z.renderLayerSlotName="",Z.renderLayerSlotPosition="above")}const Tt=Fe(!1),vi=De(()=>{var ae;const Z=new Set(((ae=B.value)==null?void 0:ae.config.collisionColliderIds)||[]);return i.colliders.filter(Se=>Z.has(Se.id))}),As=De(()=>{var ae;const Z=new Set(((ae=B.value)==null?void 0:ae.config.collisionColliderIds)||[]);return i.colliders.filter(Se=>!Z.has(Se.id))});Cs(()=>{var Z,ae;return[(Z=B.value)==null?void 0:Z.id,(ae=B.value)==null?void 0:ae.config.collision]},()=>{Tt.value=!1}),Cs(()=>{var Z;return(Z=B.value)==null?void 0:Z.id},()=>{Be.value=!1,Me.value=""});function os(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;!ae||ae.collisionColliderIds.includes(Z)||(ae.collisionColliderIds.push(Z),Tt.value=!1)}function fn(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.collisionColliderIds=ae.collisionColliderIds.filter(bt=>bt!==Z))}Fo(()=>{for(const Z of i.systems)Z.visible==null&&(Z.visible=!0);for(const Z of i.colliders)Z.visible==null&&(Z.visible=!0);for(const Z of i.paths)Z.visible==null&&(Z.visible=!0);for(const Z of i.spines)Z.visible==null&&(Z.visible=!0)}),Fo(()=>{if(!B.value)return;const Z=Dn(B.value.config);Z.lifeMode==="curve"&&(Z.lifeMode="random"),Z.speedMode==="curve"&&(Z.speedMode="random"),Z.scaleMode==="curve"&&(Z.scaleMode="random"),Z.initialRotationMode==="curve"&&(Z.initialRotationMode="random"),Z.mode==="stream"&&!(Z.duration>0)&&(Z.duration=1),Z.streamBehavior==="loop"&&(Z.emitterFollow||Z.emitterFollowMode!=="none")&&Ir(Z)}),Fo(()=>{const Z=new Set(i.colliders.map(ae=>ae.id));for(const ae of i.systems){const Se=Dn(ae.config),bt=Se.collisionColliderIds.filter(Rr=>Z.has(Rr));if(bt.length!==Se.collisionColliderIds.length&&(Se.collisionColliderIds=bt),Se.spawnPathId>0&&!i.paths.some(Rr=>Rr.id===Se.spawnPathId)&&(Se.spawnPathId=0,(Se.emissionAngleMode==="path-normal"||Se.emissionAngleMode==="path-tangent")&&(Se.emissionAngleMode="fixed")),Se.emitterFollowMode!=="bone")continue;const jt=i.spines.find(Rr=>Rr.id===Se.emitterFollowSpineId);!!(jt!=null&&jt.bones.some(Rr=>Rr.name===Se.emitterFollowBoneName))||(Se.emitterFollowMode="none",Se.emitterFollowSpineId=0,Se.emitterFollowBoneName="")}}),Fo(()=>{for(const Z of i.systems){const ae=Dn(Z.config);ae.renderLayerMode!=="slot"||!ae.renderLayerSpineId||i.spines.some(Se=>Se.id===ae.renderLayerSpineId)||(ae.renderLayerSpineId=0,ae.renderLayerSlotName="")}}),Fo(()=>{for(const Z of i.colliders)Z.followPathId==null&&(Z.followPathId=0),Z.followDuration>0||(Z.followDuration=2),Z.followPathRotation==null&&(Z.followPathRotation=!1),["跟随导出","线性","贝塞尔"].includes(Z.followCurveMode)||(Z.followCurveMode="跟随导出"),(!Array.isArray(Z.followCurve)||Z.followCurve.length<2)&&(Z.followCurve=[{x:0,y:0},{x:1,y:1}])});const ri=mo({config:!0,scene:!1,emitMode:!0,shape:!0,attr:!0,look:!0,mods:!0,export:!1});function Bi(Z){ri[Z]=!ri[Z]}function Ni(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.mode=Z,Z==="stream"&&!(ae.duration>0)&&(ae.duration=1))}function Er(Z){var bt;const ae=(bt=B.value)==null?void 0:bt.config;if(!ae)return;const Se=Math.min(1800,Math.max(1,Math.ceil(Number(Z)||1)));ae.loopDurationFrames=Se}function Ir(Z){const ae=bl();Z.emitterFollow=!1,Z.emitterFollowMode="none",Z.emitterFollowPathId=ae.emitterFollowPathId,Z.emitterFollowSpineId=ae.emitterFollowSpineId,Z.emitterFollowBoneName=ae.emitterFollowBoneName,Z.emitterFollowBoneOffsetX=ae.emitterFollowBoneOffsetX,Z.emitterFollowBoneOffsetY=ae.emitterFollowBoneOffsetY,Z.emitterFollowBoneRotation=ae.emitterFollowBoneRotation,Z.emitterFollowBoneScaleX=ae.emitterFollowBoneScaleX,Z.emitterFollowBoneScaleY=ae.emitterFollowBoneScaleY,Z.emitterAngleMode=ae.emitterAngleMode,Z.emitterFollowCurve=ae.emitterFollowCurve.map(Se=>({...Se})),Z.emitterFollowDuration=ae.emitterFollowDuration,Z.emitterFollowSpace=ae.emitterFollowSpace,Z.emitterFollowDirection=ae.emitterFollowDirection,Z.emitterFollowOffset=ae.emitterFollowOffset}function xa(Z){var jt;const ae=(jt=B.value)==null?void 0:jt.config;if(!ae||ae.streamBehavior===Z)return;const Se=Z==="loop",bt=Se?"进入循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?":"退出循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?";window.confirm(bt)&&(Ir(ae),ae.streamBehavior=Z,Se||(ae.generateLoopStartAnimation=!1,ae.generateLoopEndAnimation=!1))}function ba(Z,ae){var jt;const Se=(jt=B.value)==null?void 0:jt.config;if(!Se)return;const bt=ae.target.checked;Z==="start"?Se.generateLoopStartAnimation=bt:Se.generateLoopEndAnimation=bt}function Bl(Z,ae){var jt;const Se=(jt=B.value)==null?void 0:jt.config;if(!Se)return;const bt=Math.min(1800,Math.max(1,Math.ceil(Number(ae.target.value)||30)));Z==="start"?Se.loopStartDurationFrames=bt:Se.loopEndDurationFrames=bt}function Nl(Z,ae){var jt;const Se=(jt=B.value)==null?void 0:jt.config;if(!Se)return;const bt=ae.target.checked;Z==="start"?Se.loopStartUseCustomDuration=bt:Se.loopEndUseCustomDuration=bt}function wa(Z,ae){const Se=Z.target.value;if(ae.emitterFollowMode=Se,Se!=="bone"){ae.emitterFollowSpineId=0,ae.emitterFollowBoneName="";return}Sa(ae)}function Sa(Z){const ae=qe.value;if(!ae){Z.emitterFollowMode="none",Z.emitterFollowSpineId=0,Z.emitterFollowBoneName="";return}Z.emitterFollowMode="bone",Z.emitterFollowSpineId=ae.spine.id,Z.emitterFollowBoneName=ae.boneName}const Ma={emitMode:["mode","rate","streamBehavior","loopDurationFrames","generateLoopStartAnimation","loopStartUseCustomDuration","loopStartDurationFrames","generateLoopEndAnimation","loopEndUseCustomDuration","loopEndDurationFrames","burstCount","burstLoop","delay","duration"],shape:["shape","showShape","shapeRangeVersion","innerRadius","outerRadius","innerRectW","innerRectH","outerRectW","outerRectH","spawnPathId","spawnPathDistribution","radius","rectW","rectH","emissionAngleMode","direction","spread","coneDirection","coneAngle"],attr:["lifeMin","lifeMax","lifeMode","lifeCurve","speedMin","speedMax","speedMode","speedCurve","scaleMin","scaleMax","scaleMode","scaleAxisMode","scaleYMin","scaleYMax","scaleCurve","scaleYCurve","scaleEndRatio","initialRotationMode","initialRotationMin","initialRotationMax","initialRotationCurve","rotationSpeedMin","rotationSpeedMax","speedOverLifeEnabled","speedOverLifeMode","speedOverLifeMin","speedOverLifeMax","speedOverLifeCurve","scaleOverLifeEnabled","scaleOverLifeMode","scaleOverLifeAxisMode","scaleOverLifeMin","scaleOverLifeMax","scaleYOverLifeMin","scaleYOverLifeMax","scaleOverLifeCurve","scaleYOverLifeCurve","rotationOverLifeEnabled","rotationOverLifeMode","rotationOverLifeCurve"],look:["texture","imageResources","imageWeightVersion","alpha","alphaEnd","colorStart","colorEnd","colorOverLife","blend","alphaMode","curveMode","alphaCurve","textureName","textureFolder","alphaScale","anchorX","anchorY","independentAlpha","renderLayerMode","renderLayerSpineId","renderLayerSlotName","renderLayerSlotPosition","renderLayerFollowAttachment"],mods:["noise","noiseAmt","noiseRange","noiseSpeed","useGravity","gravity","gravityMode","gravityMin","gravityMax","gravityDirection","gravityCurve","wind","windX","windY","windMode","windMin","windMax","windDirection","windCurve","forceField","forceStrength","forceRadius","forceCenterX","forceCenterY","forceFalloff","showForceFieldShape","vortex","vortexStrength","vortexRadius","vortexCenterX","vortexCenterY","vortexFalloff","showVortexShape","attraction","attractionCenterX","attractionCenterY","attractionRadius","attractionDuration","attractionDelay","attractionDelayMode","attractionPath","showAttractionShape","trail","trailConfigVersion","trailResources","trailResourceVersion","trailTexture","trailTextureName","trailPreviewUrl","trailColorMode","trailColor","trailColorGradient","trailAlphaMode","trailAlpha","trailAlphaCurve","trailBoneCount","trailLength","trailWidth","trailWidthMode","trailLifeLengthEnabled","trailLifeLengthCurve","trailShapeEnabled","trailShapeCurve","trailGridRows","trailGridCols","collision","collisionColliderIds","pathFollow","emitterFollow","emitterFollowMode","emitterFollowPathId","emitterFollowSpineId","emitterFollowBoneName","emitterFollowBoneOffsetX","emitterFollowBoneOffsetY","emitterFollowBoneRotation","emitterFollowBoneScaleX","emitterFollowBoneScaleY","emitterAngleMode","emitterFollowCurve","emitterFollowDuration","emitterFollowSpace","emitterFollowDirection","emitterFollowOffset","damping"]};function Dl(Z){var bt;const ae=(bt=B.value)==null?void 0:bt.config;if(Z==="export"){i.settings.exportSettings=bp();return}if(!ae)return;const Se=bl();for(const jt of Ma[Z])ae[jt]=Se[jt]}function wu(){e.value.fps=Math.min(240,Math.max(1,Math.round(Number(e.value.fps)||30)))}function Ta(Z){var ae;i.selectSystem(((ae=i.systems[Z])==null?void 0:ae.id)??0)}function zn(){i.addSystem()}function So(){i.addCollider()}function Su(){i.addPath()}function Ul(){i.addSpine()}function $S(){i.duplicateSelectedObject()}function mn(Z,ae,Se=0,bt=0,jt=0,_a=0){return{x:Z,y:ae,inX:Se,inY:bt,outX:jt,outY:_a}}function XS(){const Z=me.value;if(!(!Z||!Z.preset))if(Z.preset==="circle"){const Se=60.751328;Z.points=[mn(110,0,0,-Se,0,Se),mn(0,110,Se,0,-Se,0),mn(-110,0,0,Se,0,-Se),mn(0,-110,-Se,0,Se,0)],Z.closed=!0}else if(Z.preset==="square")Z.points=[mn(-100,-100),mn(100,-100),mn(100,100),mn(-100,100)],Z.closed=!0;else{const ae=Z.preset==="star"?10:6;Z.points=Array.from({length:ae},(Se,bt)=>{const jt=Z.preset==="star"&&bt%2?50:110,_a=-Math.PI*.5+bt/ae*Math.PI*2;return mn(Math.cos(_a)*jt,Math.sin(_a)*jt)}),Z.closed=!0}}function VS(){me.value&&(me.value.points=[])}function YS(){B.value&&(B.value.config.seed=Math.floor(Math.random()*999999)+1)}function GS(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;!ae||Z==="direction"||(ae.speedOverLifeMode=Z,Z==="curve"&&ae.speedOverLifeMin===ae.speedOverLifeMax&&(ae.speedOverLifeMin=0,ae.speedOverLifeMax=1))}function Up(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;!Z||Z.scaleOverLifeMode!=="curve"||(Z.scaleOverLifeMin===Z.scaleOverLifeMax&&(Z.scaleOverLifeMin=0,Z.scaleOverLifeMax=1),Z.scaleYOverLifeMin===Z.scaleYOverLifeMax&&(Z.scaleYOverLifeMin=0,Z.scaleYOverLifeMax=1))}function jS(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;!ae||Z==="direction"||(ae.scaleOverLifeMode=Z,Up())}const HS={point:{emissionAngleMode:"random",direction:0,spread:360},circle:{innerRadius:0,outerRadius:100,emissionAngleMode:"fixed",direction:-90,spread:0},rect:{innerRectW:0,innerRectH:0,outerRectW:200,outerRectH:100,emissionAngleMode:"fixed",direction:-90,spread:0},cone:{innerRadius:0,outerRadius:100,coneAngle:90,coneDirection:90,emissionAngleMode:"random",direction:90,spread:90},path:{spawnPathId:0,spawnPathDistribution:"fixed",emissionAngleMode:"fixed",direction:0,spread:0}};function WS(){var Se;const Z=(Se=B.value)==null?void 0:Se.config;if(!Z)return;const ae=HS[Z.shape];ae&&Object.assign(Z,ae)}function zS(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;!Z||Z.spawnPathId>0||(Z.emissionAngleMode==="path-normal"||Z.emissionAngleMode==="path-tangent")&&(Z.emissionAngleMode="fixed")}return{store:i,exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:l,connectorReady:c,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g,configFileInput:y,selectedPreset:x,presetOptions:v,presetLoading:w,configMessage:_,configError:S,saveConfig:b,onConfigFileChange:A,refreshPresets:P,loadSelectedPreset:F,resolvedCurveEditorMode:E,sys:B,textureFileInput:D,sequenceFileInput:X,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:C,onTrailRigChange:R,onTrailResourceBoneCountChange:O,onTrailResourceRotationChange:L,onTrailTextureFile:$,resetTrailTexture:V,removeTrailResource:j,setTrailResourceWeight:K,toggleTrailResourceLock:ie,setTrailColor:re,commitTrailColor:pe,addImageResource:ge,openTexturePicker:he,openSequencePicker:fe,onTextureFile:Y,onSequenceFiles:W,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:q,removeImageResource:se,setResourceWeight:ue,toggleResourceLock:ne,automaticLoopDuration:de,loopDurationFrames:le,activeObjectType:Re,activeCollider:we,activePath:me,activeSpine:Ue,canCopyObject:Je,selectedSpineBone:qe,boundSpineBone:Ze,renderLayerSlotPickerOpen:Be,renderLayerSlotSearch:Me,renderLayerReadySpines:nt,renderLayerSpineReady:gs,renderLayerSlots:Ct,renderLayerFilteredSlots:xt,renderLayerSlotLabel:lt,renderLayerResolvedLabel:It,renderLayerWarning:Rt,setRenderLayerSlotMode:tt,selectRenderLayerSpine:ni,pickRenderLayerSlot:rs,clearRenderLayerSlot:ss,collisionPickerOpen:Tt,selectedCollisionBodies:vi,availableCollisionBodies:As,addCollisionBody:os,removeCollisionBody:fn,collapsed:ri,toggle:Bi,setEmitMode:Ni,setLoopDurationFrames:Er,setStreamBehavior:xa,setLoopSection:ba,setLoopSectionDuration:Bl,setLoopCustomDuration:Nl,onEmitterFollowModeChange:wa,bindSelectedBone:Sa,resetModule:Dl,normalizeExportFps:wu,select:Ta,addSys:zn,addCollider:So,addPath:Su,addSpine:Ul,copySelectedObject:$S,applyPathPreset:XS,clearPathAnchors:VS,randomizeSeed:YS,setSpeedOverLifeMode:GS,prepareScaleOverLifeCurve:Up,setScaleOverLifeMode:jS,onShapeChange:WS,onSpawnPathChange:zS,LINEAR_CURVE:p3,FLAT_CURVE:wm,ALPHA_CURVE:g3,RESOURCE_ALPHA_CURVE:Sm,TRAIL_ALPHA_CURVE:Mm,TRAIL_SHAPE_CURVE:Tm}}const NS=Symbol("particle-panel");function wL(){const i=bL();return ix(NS,i),i}function Ar(){const i=Wo(NS);if(!i)throw new Error("Particle panel sections require a ParticlePanel parent");return i}const SL={class:"group config-management"},ML={class:"caret"},TL={class:"group-body config-management-body"},_L={class:"config-toolbar"},CL=["disabled"],AL={value:""},EL=["value"],IL=Zt({__name:"ProjectConfigSection",setup(i){const{configFileInput:e,selectedPreset:t,presetOptions:s,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:l,refreshPresets:c,loadSelectedPreset:h,collapsed:u,toggle:d,select:f}=Ar();return(p,m)=>(z(),J("div",SL,[T("div",{class:"group-head",onClick:m[0]||(m[0]=g=>I(d)("config"))},[T("span",ML,ye(I(u).config?"▸":"▾"),1),m[8]||(m[8]=T("span",null,"配置管理",-1))]),ce(T("div",TL,[T("div",_L,[T("button",{title:"保存全部编辑器配置 (Ctrl+S)",onClick:m[1]||(m[1]=(...g)=>I(a)&&I(a)(...g))},"保存配置"),T("button",{title:"加载本地编辑器配置",onClick:m[2]||(m[2]=g=>{var y;return(y=I(e))==null?void 0:y.click()})},"加载配置"),ce(T("select",{"onUpdate:modelValue":m[3]||(m[3]=g=>Gt(t)?t.value=g:null),"aria-label":"预设列表",disabled:!I(s).length||I(n),onPointerdown:m[4]||(m[4]=(...g)=>I(c)&&I(c)(...g)),onFocus:m[5]||(m[5]=(...g)=>I(c)&&I(c)(...g)),onChange:m[6]||(m[6]=(...g)=>I(h)&&I(h)(...g))},[T("option",AL,ye(I(s).length?"选择预设":"无预设文件"),1),(z(!0),J(Ce,null,Ft(I(s),g=>(z(),J("option",{key:g.file,value:g.file},ye(g.name),9,EL))),128))],40,CL),[[_t,I(t)]]),T("input",{ref_key:"configFileInput",ref:e,hidden:"",type:"file",accept:".json,application/json",onChange:m[7]||(m[7]=(...g)=>I(l)&&I(l)(...g))},null,544)]),I(r)?(z(),J("div",{key:0,class:Ae(["config-message",{error:I(o)}])},ye(I(r)),3)):xe("",!0)],512),[[ws,!I(u).config]])]))}}),RL=Jt(IL,[["__scopeId","data-v-cb52d3e0"]]),PL={class:"ns-label"},kL=["min","max","step","value","disabled"],FL=["min","max","step","value","disabled"],OL=Zt({__name:"NumSlider",props:{label:{},modelValue:{},min:{},max:{},step:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(i,{emit:e}){const t=i,s=e,n=Fe(String(t.modelValue));Cs(()=>t.modelValue,l=>{n.value=String(l)});function r(l){const c=parseFloat(l.target.value);Number.isNaN(c)||s("update:modelValue",c)}function o(l){n.value=l.target.value;const c=parseFloat(n.value);Number.isNaN(c)||s("update:modelValue",c)}function a(){const l=parseFloat(n.value);Number.isNaN(l)&&(n.value=String(t.modelValue))}return(l,c)=>(z(),J("div",{class:Ae(["ns",{disabled:i.disabled}])},[T("span",PL,ye(i.label),1),T("input",{type:"range",class:"ns-range",min:i.min,max:i.max,step:i.step,value:i.modelValue,disabled:i.disabled,onInput:r},null,40,kL),T("input",{type:"number",class:"ns-num",min:i.min,max:i.max,step:i.step,value:n.value,disabled:i.disabled,onInput:o,onBlur:a},null,40,FL)],2))}}),Oe=Jt(OL,[["__scopeId","data-v-7c2fbed0"]]),LL={class:"ce"},BL={class:"ce-editor"},NL={class:"ce-grid"},DL=["x1","x2","y2"],UL=["y1","x2","y2"],$L=["x","y","width","height"],XL=["d"],VL={key:0,class:"ce-handles"},YL=["x1","y1","x2","y2"],GL=["cx","cy","onPointerdown"],jL=["x1","y1","x2","y2"],HL=["cx","cy","onPointerdown"],WL=["cx","cy"],zL=["cx","cy","onPointerdown","onDblclick"],qL={class:"ce-nav"},KL={class:"ce-tip"},Zn=8,ZL=Zt({__name:"CurveEditor",props:{modelValue:{},defaultValue:{default:()=>[{x:0,y:0},{x:1,y:1}]},mode:{default:"linear"}},emits:["update:modelValue"],setup(i,{emit:e}){const t=i,s=e,n=Fe(null),r=Fe(300),o=Fe(110);let a=null;function l(){if(!n.value)return;const E=n.value.getBoundingClientRect();r.value=E.width,o.value=E.height}function c(E){return Zn+E*(r.value-Zn*2)}function h(E){return Zn+(1-E)*(o.value-Zn*2)}function u(){return[...t.modelValue].sort((E,k)=>E.x-k.x)}function d(E){s("update:modelValue",[...E].sort((k,B)=>k.x-B.x))}function f(){d(t.defaultValue.map(E=>({...E})))}const p=De(()=>u());function m(E){const k=p.value[E],B=p.value[Math.max(0,E-1)];return{x:k.x-(k.x-B.x)/3,y:k.y-(k.y-B.y)/3}}function g(E){const k=p.value[E],B=p.value[Math.min(p.value.length-1,E+1)];return{x:k.x+(B.x-k.x)/3,y:k.y+(B.y-k.y)/3}}function y(E){const k=p.value[E],B=m(E);return{x:k.x+(k.inX??B.x-k.x),y:k.y+(k.inY??B.y-k.y)}}function x(E){const k=p.value[E],B=g(E);return{x:k.x+(k.outX??B.x-k.x),y:k.y+(k.outY??B.y-k.y)}}const v=De(()=>{if(!p.value.length)return"";let E=`M ${c(p.value[0].x)} ${h(p.value[0].y)}`;for(let k=1;kMath.abs(X.x-k)>.02);D.push({x:k,y:B}),d(D)}let b={t:0,i:-1,x:0,y:0};function A(E,k){E.stopPropagation();const B=u().findIndex(U=>Math.abs(U.x-p.value[k].x)<1e-6&&Math.abs(U.y-p.value[k].y)<1e-6);if(B<0)return;const D=Date.now();if(D-b.t<300&&b.i===k&&Math.abs(E.clientX-b.x)<8&&Math.abs(E.clientY-b.y)<8){b={t:0,i:-1,x:0,y:0},F(k);return}b={t:D,i:k,x:E.clientX,y:E.clientY};const X=U=>{(Math.abs(U.clientX-E.clientX)>8||Math.abs(U.clientY-E.clientY)>8)&&(b={t:0,i:-1,x:0,y:0});const{x:C,y:R}=w(U.clientX,U.clientY),O=u();O[B]={x:C,y:R},d(O)},N=()=>{window.removeEventListener("pointermove",X),window.removeEventListener("pointerup",N)};window.addEventListener("pointermove",X),window.addEventListener("pointerup",N)}function P(E,k,B){E.stopPropagation();const D=N=>{const U=w(N.clientX,N.clientY),C=u(),R=C[k],O=B==="in"?C[Math.max(0,k-1)].x:R.x,L=B==="in"?R.x:C[Math.min(C.length-1,k+1)].x,$=Math.min(L,Math.max(O,U.x)),V=Math.round(($-R.x)*100)/100,j=Math.round((U.y-R.y)*100)/100;C[k]=B==="in"?{...R,inX:V,inY:j}:{...R,outX:V,outY:j},d(C)},X=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",X)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",X)}function F(E,k){k==null||k.stopPropagation();const B=u();B.length<=2||(_=Date.now(),d(B.filter((D,X)=>X!==E)))}return Oi(()=>{l(),a=new ResizeObserver(l),n.value&&a.observe(n.value)}),Cl(()=>{a==null||a.disconnect()}),(E,k)=>(z(),J("div",LL,[T("div",BL,[(z(),J("svg",{ref_key:"svg",ref:n,class:"ce-svg",onDblclick:S},[T("g",NL,[(z(),J(Ce,null,Ft([.25,.5,.75],B=>T("line",{key:"v"+B,x1:c(B),y1:"0",x2:c(B),y2:h(0)},null,8,DL)),64)),(z(),J(Ce,null,Ft([.25,.5,.75],B=>T("line",{key:"h"+B,x1:"0",y1:h(B),x2:c(1),y2:h(B)},null,8,UL)),64))]),T("rect",{x:c(0),y:h(1),width:c(1)-c(0),height:h(0)-h(1),class:"ce-frame",fill:"none"},null,8,$L),T("path",{d:v.value,class:"ce-line",fill:"none"},null,8,XL),i.mode==="bezier"?(z(),J("g",VL,[(z(!0),J(Ce,null,Ft(p.value,(B,D)=>(z(),J(Ce,{key:"handles-"+D},[D>0?(z(),J("line",{key:0,x1:c(B.x),y1:h(B.y),x2:c(y(D).x),y2:h(y(D).y)},null,8,YL)):xe("",!0),D>0?(z(),J("circle",{key:1,cx:c(y(D).x),cy:h(y(D).y),r:"4",onPointerdown:X=>P(X,D,"in")},null,40,GL)):xe("",!0),DP(X,D,"out")},null,40,HL)):xe("",!0)],64))),128))])):xe("",!0),(z(!0),J(Ce,null,Ft(p.value,(B,D)=>(z(),J("g",{key:D},[T("circle",{cx:c(B.x),cy:h(B.y),r:"5",class:"ce-node"},null,8,WL),T("circle",{cx:c(B.x),cy:h(B.y),r:"9",class:"ce-hit",onPointerdown:X=>A(X,D),onDblclick:X=>F(D,X)},null,40,zL)]))),128))],544)),T("div",qL,[T("span",KL,ye(i.mode==="bezier"?"拖动方形手柄调整弧度·双击空白新建·双击节点删除":"双击空白新建·双击节点删除·拖动节点调整"),1)])]),T("button",{class:"ce-reset",type:"button",title:"恢复默认曲线",onClick:f},"重置")]))}}),Ji=Jt(ZL,[["__scopeId","data-v-9bfb7b31"]]),JL={class:"spine-editor"},QL={class:"field wide"},eB={class:"grid three"},tB={class:"field"},sB={class:"field"},iB={class:"field"},nB={class:"grid three"},rB={class:"field"},oB={class:"field"},aB={class:"field"},lB=["disabled"],cB={class:"asset-row"},hB=["title"],uB={class:"asset-row"},dB=["title"],fB={class:"asset-row"},mB=["title"],pB={class:"asset-actions"},gB=["disabled"],vB={class:"runtime-note"},yB={key:0},xB={key:0,class:"error"},bB={class:"section-box"},wB={key:0,class:"empty"},SB={key:1,class:"field wide"},MB=["value"],TB={class:"section-box"},_B={class:"tree-title-row"},CB=["disabled","title"],AB=["disabled","title"],EB={class:"tree-tabs"},IB={key:0,class:"empty"},RB={key:1,class:"bone-search"},PB={key:2,class:"empty"},kB={key:3,class:"bone-tree"},FB=["onClick","onKeydown"],OB=["title","onClick"],LB={key:1,class:"bone-leaf"},BB={class:"bone-name"},NB={key:0,class:"empty"},DB={key:1,class:"bone-search"},UB={key:2,class:"empty"},$B={key:3,class:"bone-tree slot-tree"},XB=["title","onClick","onKeydown"],VB={class:"slot-order"},YB={class:"bone-name"},GB={class:"slot-attachment"},jB=Zt({__name:"SpineObjectPanel",props:{spineObject:{}},setup(i){const e=i,t=yo(),s=Fe(null),n=Fe(null),r=Fe(null),o=Fe(null),a=Fe(new Set),l=Fe(""),c=Fe("bone"),h=Fe(""),u=Fe(null),d=Fe(null),f=Fe([]);e.spineObject.selectedBone==null&&(e.spineObject.selectedBone=""),e.spineObject.selectedSlot==null&&(e.spineObject.selectedSlot=""),Array.isArray(e.spineObject.slots)||(e.spineObject.slots=[]),e.spineObject.sourceBundle==null&&(e.spineObject.sourceBundle=null),e.spineObject.dataVersion==null&&(e.spineObject.dataVersion="");const p=De(()=>{var L;return((L=u.value)==null?void 0:L.name)||e.spineObject.skeletonFileName}),m=De(()=>{var L;return((L=d.value)==null?void 0:L.name)||e.spineObject.atlasFileName}),g=De(()=>f.value.length?f.value.map(L=>L.name):e.spineObject.textureFileNames),y=De(()=>g.value.length?`${g.value.length} 张:${g.value.join(", ")}`:"PNG / JPEG / WebP..."),x=De(()=>new Set(e.spineObject.bones.map(L=>L.parent).filter(L=>!!L))),v=De(()=>new Map(e.spineObject.bones.map(L=>[L.name,L]))),w=De(()=>e.spineObject.bones.filter(L=>{var j;const $=l.value.trim().toLocaleLowerCase();if($)return L.name.toLocaleLowerCase().includes($);let V=L.parent;for(;V;){if(a.value.has(V))return!1;V=((j=v.value.get(V))==null?void 0:j.parent)||null}return!0})),_=De(()=>x.value.size>0&&[...x.value].every(L=>a.value.has(L))),S=De(()=>{const L=h.value.trim().toLocaleLowerCase(),$=[...e.spineObject.slots].sort((V,j)=>V.order-j.order);return L?$.filter(V=>V.name.toLocaleLowerCase().includes(L)||V.attachment.toLocaleLowerCase().includes(L)):$});function b(L){const $=e.spineObject.selectedBone===L;for(const V of t.spines)V.selectedBone="";$||(e.spineObject.selectedBone=L)}function A(L){const $=e.spineObject.selectedSlot===L;for(const V of t.spines)V.selectedSlot="";$||(e.spineObject.selectedSlot=L)}function P(L){a.value.has(L)?a.value.delete(L):a.value.add(L)}function F(){a.value=_.value?new Set:new Set(x.value)}function E(L){var $;return(($=L.target.files)==null?void 0:$[0])||null}function k(L){u.value=E(L)}function B(L){d.value=E(L)}function D(L){f.value=Array.from(L.target.files||[])}function X(L){return L.name.replace(/\.[^.]+$/,"").toLocaleLowerCase()}async function N(L){const $=Array.from(L.target.files||[]);if(!$.length)return;const V=$.filter(ge=>/\.(json|skel)$/i.test(ge.name)),j=$.filter(ge=>/\.atlas$/i.test(ge.name)),K=$.filter(ge=>/\.(png|jpe?g|webp|wepb)$/i.test(ge.name)),ie=j.map(ge=>({atlas:ge,skeleton:V.find(he=>X(he)===X(ge))})).find(ge=>ge.skeleton),re=(ie==null?void 0:ie.skeleton)||V[0]||null,pe=(ie==null?void 0:ie.atlas)||j[0]||null;if(u.value=re,d.value=pe,f.value=K,!re||!pe||!K.length){const ge=[!re&&"JSON / SKEL",!pe&&"Atlas",!K.length&&"纹理图片"].filter(Boolean).join("、");e.spineObject.status="error",e.spineObject.error=`所选文件夹缺少:${ge}`;return}await R()}function U(){t.recalcTotalFrames()}function C(){U(),t.timeline.frame=0}async function R(){var V;const L=u.value,$=d.value;if(!L||!$||!f.value.length){e.spineObject.status="error",e.spineObject.error="请依次选择 Spine 数据、Atlas 和全部纹理图片";return}e.spineObject.status="loading",e.spineObject.error="";try{const j=await Aw(L,$,f.value);fu(e.spineObject.id,j),e.spineObject.skeletonFileName=L.name,e.spineObject.atlasFileName=$.name,e.spineObject.textureFileNames=f.value.map(K=>K.name),e.spineObject.dataVersion=j.dataVersion,e.spineObject.animations=j.animations,e.spineObject.bones=j.bones,e.spineObject.slots=j.slots,e.spineObject.selectedBone="",e.spineObject.selectedSlot="",l.value="",h.value="",a.value=new Set,e.spineObject.selectedAnimation=((V=j.animations[0])==null?void 0:V.name)||"",e.spineObject.assetVersion++,e.spineObject.status="ready",U(),t.timeline.frame=0;try{e.spineObject.sourceBundle=await Mk(L,$,f.value)}catch(K){e.spineObject.sourceBundle=null,console.warn("Spine 配置资源嵌入失败",K)}}catch(j){e.spineObject.status="error",e.spineObject.error=j instanceof Error?j.message:String(j)}}function O(){Pl(e.spineObject.id),u.value=null,d.value=null,f.value=[],s.value&&(s.value.value=""),n.value&&(n.value.value=""),r.value&&(r.value.value=""),o.value&&(o.value.value=""),e.spineObject.skeletonFileName="",e.spineObject.atlasFileName="",e.spineObject.textureFileNames=[],e.spineObject.dataVersion="",e.spineObject.sourceBundle=null,e.spineObject.animations=[],e.spineObject.bones=[],e.spineObject.slots=[],e.spineObject.selectedBone="",e.spineObject.selectedSlot="",l.value="",h.value="",a.value=new Set,e.spineObject.selectedAnimation="",e.spineObject.assetVersion++,e.spineObject.status="empty",e.spineObject.error="",U()}return(L,$)=>(z(),J("div",JL,[$[38]||($[38]=T("div",{class:"editor-title"},"Spine 属性",-1)),T("label",QL,[$[20]||($[20]=T("span",null,"Spine 名称",-1)),ce(T("input",{"onUpdate:modelValue":$[0]||($[0]=V=>i.spineObject.name=V)},null,512),[[je,i.spineObject.name]])]),T("div",eB,[T("label",tB,[$[21]||($[21]=T("span",null,"X 位置",-1)),ce(T("input",{"onUpdate:modelValue":$[1]||($[1]=V=>i.spineObject.x=V),type:"number"},null,512),[[je,i.spineObject.x,void 0,{number:!0}]])]),T("label",sB,[$[22]||($[22]=T("span",null,"Y 位置",-1)),ce(T("input",{"onUpdate:modelValue":$[2]||($[2]=V=>i.spineObject.y=V),type:"number"},null,512),[[je,i.spineObject.y,void 0,{number:!0}]])]),T("label",iB,[$[23]||($[23]=T("span",null,"旋转",-1)),ce(T("input",{"onUpdate:modelValue":$[3]||($[3]=V=>i.spineObject.rotation=V),type:"number"},null,512),[[je,i.spineObject.rotation,void 0,{number:!0}]])])]),T("div",nB,[T("label",rB,[$[24]||($[24]=T("span",null,"Scale X",-1)),ce(T("input",{"onUpdate:modelValue":$[4]||($[4]=V=>i.spineObject.scaleX=V),type:"number",step:"0.05"},null,512),[[je,i.spineObject.scaleX,void 0,{number:!0}]])]),T("label",oB,[$[25]||($[25]=T("span",null,"Scale Y",-1)),ce(T("input",{"onUpdate:modelValue":$[5]||($[5]=V=>i.spineObject.scaleY=V),type:"number",step:"0.05"},null,512),[[je,i.spineObject.scaleY,void 0,{number:!0}]])]),T("label",aB,[$[26]||($[26]=T("span",null,"开始时间",-1)),ce(T("input",{"onUpdate:modelValue":$[6]||($[6]=V=>i.spineObject.timeOffset=V),type:"number",min:"0",step:"0.033333",onChange:U},null,544),[[je,i.spineObject.timeOffset,void 0,{number:!0}]])])]),$[39]||($[39]=T("div",{class:"divider"},null,-1)),$[40]||($[40]=T("div",{class:"section-title"},"Spine 资源",-1)),T("input",{ref_key:"skeletonInput",ref:s,hidden:"",type:"file",accept:".json,.skel,application/json,application/octet-stream",onChange:k},null,544),T("input",{ref_key:"atlasInput",ref:n,hidden:"",type:"file",accept:".atlas,text/plain",onChange:B},null,544),T("input",{ref_key:"textureInput",ref:r,hidden:"",type:"file",multiple:"",accept:".png,.jpg,.jpeg,.webp,.wepb,image/png,image/jpeg,image/webp",onChange:D},null,544),T("input",{ref_key:"folderInput",ref:o,hidden:"",type:"file",multiple:"",webkitdirectory:"",directory:"",onChange:N},null,544),T("button",{class:"folder-select",disabled:i.spineObject.status==="loading",onClick:$[7]||($[7]=V=>{var j;return(j=o.value)==null?void 0:j.click()})},"选择文件夹并加载",8,lB),$[41]||($[41]=T("div",{class:"folder-hint"},"一次读取文件夹中的 JSON / SKEL、Atlas 和全部纹理;仍可在下方单独替换资源。",-1)),T("div",cB,[T("div",{class:"asset-name",title:p.value},ye(p.value||"JSON / SKEL..."),9,hB),T("button",{onClick:$[8]||($[8]=V=>{var j;return(j=s.value)==null?void 0:j.click()})},"选择")]),T("div",uB,[T("div",{class:"asset-name",title:m.value},ye(m.value||"Atlas..."),9,dB),T("button",{onClick:$[9]||($[9]=V=>{var j;return(j=n.value)==null?void 0:j.click()})},"选择")]),T("div",fB,[T("div",{class:"asset-name",title:g.value.join(", ")},ye(y.value),9,mB),T("button",{onClick:$[10]||($[10]=V=>{var j;return(j=r.value)==null?void 0:j.click()})},"选择(多选)")]),T("div",pB,[T("button",{class:"load",disabled:i.spineObject.status==="loading",onClick:R},ye(i.spineObject.status==="loading"?"加载中…":"↧ 加载"),9,gB),T("button",{class:"clear",onClick:O},"清除")]),T("div",vB,[$[27]||($[27]=gt(" 支持 Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · 对应版本运行时按需加载 · 本地离线 ",-1)),i.spineObject.dataVersion?(z(),J("span",yB," · 当前资源 "+ye(i.spineObject.dataVersion),1)):xe("",!0)]),i.spineObject.error?(z(),J("div",xB,ye(i.spineObject.error),1)):xe("",!0),T("div",bB,[$[30]||($[30]=T("div",{class:"section-title"},"Spine 动画",-1)),i.spineObject.animations.length?(z(),J("label",SB,[$[29]||($[29]=T("span",null,"时间轴播放动画",-1)),ce(T("select",{"onUpdate:modelValue":$[11]||($[11]=V=>i.spineObject.selectedAnimation=V),onChange:C},[$[28]||($[28]=T("option",{value:""},"无",-1)),(z(!0),J(Ce,null,Ft(i.spineObject.animations,V=>(z(),J("option",{key:V.name,value:V.name},ye(V.name)+"("+ye(V.duration.toFixed(2))+"s) ",9,MB))),128))],544),[[_t,i.spineObject.selectedAnimation]])])):(z(),J("div",wB,"无可用动画"))]),T("div",TB,[T("div",_B,[$[37]||($[37]=T("div",{class:"section-title"},"层级树",-1)),c.value==="bone"?(z(),J("button",{key:0,class:Ae(["selected-bone",{active:i.spineObject.selectedBone}]),disabled:!i.spineObject.selectedBone,title:i.spineObject.selectedBone?"点击清除骨骼选择":"当前未选择骨骼",onClick:$[12]||($[12]=V=>i.spineObject.selectedBone="")},[i.spineObject.selectedBone?(z(),J(Ce,{key:0},[$[31]||($[31]=gt("清除选中骨骼:",-1)),T("strong",null,ye(i.spineObject.selectedBone),1)],64)):(z(),J(Ce,{key:1},[$[32]||($[32]=gt("当前骨骼:",-1)),$[33]||($[33]=T("strong",null,"未选择",-1))],64))],10,CB)):(z(),J("button",{key:1,class:Ae(["selected-bone",{active:i.spineObject.selectedSlot}]),disabled:!i.spineObject.selectedSlot,title:i.spineObject.selectedSlot?"点击清除插槽选择":"当前未选择插槽",onClick:$[13]||($[13]=V=>i.spineObject.selectedSlot="")},[i.spineObject.selectedSlot?(z(),J(Ce,{key:0},[$[34]||($[34]=gt("清除选中插槽:",-1)),T("strong",null,ye(i.spineObject.selectedSlot),1)],64)):(z(),J(Ce,{key:1},[$[35]||($[35]=gt("当前插槽:",-1)),$[36]||($[36]=T("strong",null,"未选择",-1))],64))],10,AB)),c.value==="bone"&&i.spineObject.bones.length?(z(),J("button",{key:2,class:"tree-action",onClick:F},ye(_.value?"全部展开":"全部折叠"),1)):xe("",!0)]),T("div",EB,[T("button",{class:Ae({on:c.value==="bone"}),onClick:$[14]||($[14]=V=>c.value="bone")},"骨骼",2),T("button",{class:Ae({on:c.value==="slot"}),onClick:$[15]||($[15]=V=>c.value="slot")},"插槽",2)]),c.value==="bone"?(z(),J(Ce,{key:0},[i.spineObject.bones.length?(z(),J("div",RB,[ce(T("input",{"onUpdate:modelValue":$[16]||($[16]=V=>l.value=V),type:"search","aria-label":"搜索骨骼",placeholder:"搜索骨骼名称…"},null,512),[[je,l.value,void 0,{trim:!0}]]),l.value?(z(),J("button",{key:0,title:"清空搜索","aria-label":"清空骨骼搜索",onClick:$[17]||($[17]=V=>l.value="")},"✕")):xe("",!0)])):(z(),J("div",IB,"未加载 Spine")),i.spineObject.bones.length&&!w.value.length?(z(),J("div",PB,"未找到匹配的骨骼")):i.spineObject.bones.length?(z(),J("div",kB,[(z(!0),J(Ce,null,Ft(w.value,V=>(z(),J("div",{key:V.name,class:Ae(["bone",{selected:i.spineObject.selectedBone===V.name}]),style:Vt({paddingLeft:`${6+V.depth*16}px`}),role:"button",tabindex:"0",onClick:j=>b(V.name),onKeydown:yr(Ke(j=>b(V.name),["prevent"]),["enter"])},[x.value.has(V.name)?(z(),J("button",{key:0,class:"bone-toggle",title:a.value.has(V.name)?"展开子骨骼":"折叠子骨骼",onClick:Ke(j=>P(V.name),["stop"])},ye(a.value.has(V.name)?"▸":"▾"),9,OB)):(z(),J("span",LB,"•")),T("span",BB,ye(V.name),1)],46,FB))),128))])):xe("",!0)],64)):(z(),J(Ce,{key:1},[i.spineObject.slots.length?(z(),J("div",DB,[ce(T("input",{"onUpdate:modelValue":$[18]||($[18]=V=>h.value=V),type:"search","aria-label":"搜索插槽",placeholder:"搜索插槽或附件名称…"},null,512),[[je,h.value,void 0,{trim:!0}]]),h.value?(z(),J("button",{key:0,title:"清空搜索","aria-label":"清空插槽搜索",onClick:$[19]||($[19]=V=>h.value="")},"✕")):xe("",!0)])):(z(),J("div",NB,"未加载 Spine 插槽")),i.spineObject.slots.length&&!S.value.length?(z(),J("div",UB,"未找到匹配的插槽")):i.spineObject.slots.length?(z(),J("div",$B,[(z(!0),J(Ce,null,Ft(S.value,V=>(z(),J("div",{key:V.name,class:Ae(["bone slot-row",{selected:i.spineObject.selectedSlot===V.name}]),role:"button",tabindex:"0",title:`${V.name}(骨骼:${V.bone||"-"},附件:${V.attachment||"空"})`,onClick:j=>A(V.name),onKeydown:yr(Ke(j=>A(V.name),["prevent"]),["enter"])},[T("span",VB,ye(V.order+1),1),T("span",YB,ye(V.name),1),T("span",GB,ye(V.attachment||"空"),1)],42,XB))),128))])):xe("",!0)],64))])]))}}),HB=Jt(jB,[["__scopeId","data-v-3545b078"]]),WB={class:"group"},zB={class:"caret"},qB={class:"scene-actions"},KB=["disabled"],ZB={class:"group-body"},JB={class:"tree scene-tree"},QB=["onClick"],eN={class:"tlabel"},tN=["title","aria-label","onClick"],sN={viewBox:"0 0 24 24","aria-hidden":"true"},iN={key:0,class:"eye-slash",d:"M4 4l16 16"},nN=["onClick"],rN=["onClick"],oN={class:"tlabel"},aN=["title","aria-label","onClick"],lN={viewBox:"0 0 24 24","aria-hidden":"true"},cN={key:0,class:"eye-slash",d:"M4 4l16 16"},hN=["onClick"],uN=["onClick"],dN={class:"tlabel"},fN=["title","aria-label","onClick"],mN={viewBox:"0 0 24 24","aria-hidden":"true"},pN={key:0,class:"eye-slash",d:"M4 4l16 16"},gN=["onClick"],vN=["onClick"],yN={class:"tlabel"},xN=["title","aria-label","onClick"],bN={viewBox:"0 0 24 24","aria-hidden":"true"},wN={key:0,class:"eye-slash",d:"M4 4l16 16"},SN=["onClick"],MN={key:0,class:"empty"},TN={class:"row"},_N={class:"seed-row scene-seed"},CN={class:"field-block"},AN={class:"field-grid"},EN={class:"field-block"},IN={class:"field-block check-field"},RN={class:"field-grid"},PN={class:"compact-field"},kN={class:"compact-field"},FN={class:"field-grid"},ON={class:"compact-field"},LN={class:"compact-field"},BN={key:1,class:"field-grid"},NN={class:"compact-field"},DN={class:"compact-field"},UN={key:2,class:"field-grid"},$N={class:"compact-field"},XN={class:"compact-field"},VN={class:"field-block"},YN={key:4,class:"field-grid"},GN={class:"compact-field"},jN={class:"compact-field"},HN={class:"collider-follow-section"},WN={class:"follow-path"},zN={class:"field-block"},qN=["value"],KN={class:"field-grid"},ZN={class:"compact-field"},JN={class:"compact-field"},QN={class:"follow-path"},eD={class:"field-block"},tD={class:"field-grid"},sD={class:"compact-field"},iD={class:"compact-field"},nD={class:"field-grid"},rD={class:"compact-field"},oD={class:"compact-field"},aD={class:"setting-line"},lD={class:"setting-line"},cD={class:"field-block"},hD={key:4,class:"panel-hint"},uD=Zt({__name:"SceneObjectsSection",setup(i){const{store:e,resolvedCurveEditorMode:t,sys:s,activeObjectType:n,activeCollider:r,activePath:o,activeSpine:a,canCopyObject:l,collapsed:c,toggle:h,select:u,addSys:d,addCollider:f,addPath:p,addSpine:m,copySelectedObject:g,applyPathPreset:y,clearPathAnchors:x,randomizeSeed:v,LINEAR_CURVE:w}=Ar();return(_,S)=>(z(),J("div",WB,[T("div",{class:"group-head scene-head",onClick:S[5]||(S[5]=b=>I(h)("scene"))},[T("span",zB,ye(I(c).scene?"▸":"▾"),1),S[50]||(S[50]=T("span",null,"场景对象",-1)),T("div",qB,[T("button",{class:"scene-add",title:"添加粒子系统",onClick:S[0]||(S[0]=Ke((...b)=>I(d)&&I(d)(...b),["stop"]))},"+粒子"),T("button",{class:"scene-add",title:"添加碰撞体",onClick:S[1]||(S[1]=Ke((...b)=>I(f)&&I(f)(...b),["stop"]))},"+碰撞"),T("button",{class:"scene-add",title:"添加路径",onClick:S[2]||(S[2]=Ke((...b)=>I(p)&&I(p)(...b),["stop"]))},"+路径"),T("button",{class:"scene-add",title:"添加 Spine",onClick:S[3]||(S[3]=Ke((...b)=>I(m)&&I(m)(...b),["stop"]))},"+Spine"),T("button",{class:"scene-add",disabled:!I(l),title:"复制当前选中的场景对象",onClick:S[4]||(S[4]=Ke((...b)=>I(g)&&I(g)(...b),["stop"]))},"+Copy",8,KB)])]),ce(T("div",ZB,[T("div",JB,[(z(!0),J(Ce,null,Ft(I(e).systems,(b,A)=>(z(),J("div",{key:`particle-${b.id}`,class:Ae(["tree-item scene-object-item",{on:I(n)==="particle"&&b.id===I(e).activeObjectId}]),onClick:P=>I(u)(A)},[S[53]||(S[53]=T("span",{class:"tdot"},"●",-1)),T("span",eN,ye(b.config.name||"ParticleSystem"+(A+1)),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示粒子系统":"隐藏粒子系统","aria-label":b.visible===!1?"显示粒子系统":"隐藏粒子系统",onClick:Ke(P=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",sN,[S[51]||(S[51]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[52]||(S[52]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",iN)):xe("",!0)]))],10,tN),S[54]||(S[54]=T("span",{class:"scene-object-kind"},"粒子",-1)),T("button",{class:"scene-object-delete",title:"删除粒子系统",onClick:Ke(P=>I(e).removeSystem(b.id),["stop"])},"✕",8,nN)],10,QB))),128)),(z(!0),J(Ce,null,Ft(I(e).colliders,b=>(z(),J("div",{key:`collision-${b.id}`,class:Ae(["tree-item scene-object-item",{on:I(n)==="collision"&&b.id===I(e).activeObjectId}]),onClick:A=>I(e).selectSceneObject("collision",b.id)},[S[57]||(S[57]=T("span",{class:"tdot collision-dot"},"■",-1)),T("span",oN,ye(b.name),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示碰撞体":"隐藏碰撞体","aria-label":b.visible===!1?"显示碰撞体":"隐藏碰撞体",onClick:Ke(A=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",lN,[S[55]||(S[55]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[56]||(S[56]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",cN)):xe("",!0)]))],10,aN),S[58]||(S[58]=T("span",{class:"scene-object-kind"},"碰撞",-1)),T("button",{class:"scene-object-delete",title:"删除碰撞体",onClick:Ke(A=>I(e).removeCollider(b.id),["stop"])},"✕",8,hN)],10,rN))),128)),(z(!0),J(Ce,null,Ft(I(e).paths,b=>(z(),J("div",{key:`path-${b.id}`,class:Ae(["tree-item scene-object-item",{on:I(n)==="path"&&b.id===I(e).activeObjectId}]),onClick:A=>I(e).selectSceneObject("path",b.id)},[S[61]||(S[61]=T("span",{class:"tdot path-dot"},"◇",-1)),T("span",dN,ye(b.name),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示路径":"隐藏路径","aria-label":b.visible===!1?"显示路径":"隐藏路径",onClick:Ke(A=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",mN,[S[59]||(S[59]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[60]||(S[60]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",pN)):xe("",!0)]))],10,fN),S[62]||(S[62]=T("span",{class:"scene-object-kind"},"路径",-1)),T("button",{class:"scene-object-delete",title:"删除路径",onClick:Ke(A=>I(e).removePath(b.id),["stop"])},"✕",8,gN)],10,uN))),128)),(z(!0),J(Ce,null,Ft(I(e).spines,b=>(z(),J("div",{key:`spine-${b.id}`,class:Ae(["tree-item scene-object-item",{on:I(n)==="spine"&&b.id===I(e).activeObjectId}]),onClick:A=>I(e).selectSceneObject("spine",b.id)},[S[65]||(S[65]=T("span",{class:"tdot spine-dot"},"◆",-1)),T("span",yN,ye(b.name),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示 Spine":"隐藏 Spine","aria-label":b.visible===!1?"显示 Spine":"隐藏 Spine",onClick:Ke(A=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",bN,[S[63]||(S[63]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),S[64]||(S[64]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",wN)):xe("",!0)]))],10,xN),S[66]||(S[66]=T("span",{class:"scene-object-kind"},"Spine",-1)),T("button",{class:"scene-object-delete",title:"删除 Spine",onClick:Ke(A=>I(e).removeSpine(b.id),["stop"])},"✕",8,SN)],10,vN))),128)),!I(e).systems.length&&!I(e).colliders.length&&!I(e).paths.length&&!I(e).spines.length?(z(),J("div",MN,"场景中暂无对象")):xe("",!0)]),I(n)==="particle"&&I(s)?(z(),J(Ce,{key:0},[T("label",TN,[S[67]||(S[67]=T("span",null,"名称",-1)),ce(T("input",{"onUpdate:modelValue":S[6]||(S[6]=b=>I(s).config.name=b),class:"inp"},null,512),[[je,I(s).config.name]])]),be(Oe,{label:"位置X",min:-2e3,max:2e3,step:1,modelValue:I(s).config.centerX,"onUpdate:modelValue":S[7]||(S[7]=b=>I(s).config.centerX=b)},null,8,["modelValue"]),be(Oe,{label:"位置Y",min:-2e3,max:2e3,step:1,modelValue:I(s).config.centerY,"onUpdate:modelValue":S[8]||(S[8]=b=>I(s).config.centerY=b)},null,8,["modelValue"]),be(Oe,{label:"偏移X",min:-2e3,max:2e3,step:1,modelValue:I(s).config.offsetX,"onUpdate:modelValue":S[9]||(S[9]=b=>I(s).config.offsetX=b)},null,8,["modelValue"]),be(Oe,{label:"偏移Y",min:-2e3,max:2e3,step:1,modelValue:I(s).config.offsetY,"onUpdate:modelValue":S[10]||(S[10]=b=>I(s).config.offsetY=b)},null,8,["modelValue"]),be(Oe,{label:"旋转",min:-360,max:360,step:1,modelValue:I(s).config.rootRotation,"onUpdate:modelValue":S[11]||(S[11]=b=>I(s).config.rootRotation=b)},null,8,["modelValue"]),be(Oe,{label:"缩放X",min:.05,max:10,step:.05,modelValue:I(s).config.rootScaleX,"onUpdate:modelValue":S[12]||(S[12]=b=>I(s).config.rootScaleX=b)},null,8,["modelValue"]),be(Oe,{label:"缩放Y",min:.05,max:10,step:.05,modelValue:I(s).config.rootScaleY,"onUpdate:modelValue":S[13]||(S[13]=b=>I(s).config.rootScaleY=b)},null,8,["modelValue"]),T("div",_N,[S[68]||(S[68]=T("label",{for:"system-seed"},"随机种子",-1)),ce(T("input",{id:"system-seed",class:"seed-input",type:"number",min:"0",step:"1","onUpdate:modelValue":S[14]||(S[14]=b=>I(s).config.seed=b),title:"控制粒子系统内全部随机属性、资源选择与修改器随机采样"},null,512),[[je,I(s).config.seed,void 0,{number:!0}]]),T("button",{class:"seed-random",title:"生成新的全局随机种子",onClick:S[15]||(S[15]=(...b)=>I(v)&&I(v)(...b))},"⚄")]),S[69]||(S[69]=T("div",{class:"seed-hint"},"控制初始随机参数、资源选择和修改器随机采样;相同种子可复现相同效果",-1))],64)):I(r)?(z(),J(Ce,{key:1},[S[94]||(S[94]=T("div",{class:"object-editor-title"},"碰撞体属性",-1)),T("label",CN,[S[70]||(S[70]=T("span",null,"碰撞体名称",-1)),ce(T("input",{"onUpdate:modelValue":S[16]||(S[16]=b=>I(r).name=b),class:"inp"},null,512),[[je,I(r).name]])]),T("div",AN,[T("label",EN,[S[72]||(S[72]=T("span",null,"类型",-1)),ce(T("select",{"onUpdate:modelValue":S[17]||(S[17]=b=>I(r).shape=b),class:"inp"},[...S[71]||(S[71]=[Qs('',5)])],512),[[_t,I(r).shape]])]),T("label",IN,[S[73]||(S[73]=T("span",null,"启用",-1)),ce(T("input",{"onUpdate:modelValue":S[18]||(S[18]=b=>I(r).enabled=b),type:"checkbox"},null,512),[[yt,I(r).enabled]])])]),T("div",RN,[T("label",PN,[S[74]||(S[74]=T("span",null,"X 位置",-1)),ce(T("input",{"onUpdate:modelValue":S[19]||(S[19]=b=>I(r).x=b),type:"number",class:"inp"},null,512),[[je,I(r).x,void 0,{number:!0}]])]),T("label",kN,[S[75]||(S[75]=T("span",null,"Y 位置",-1)),ce(T("input",{"onUpdate:modelValue":S[20]||(S[20]=b=>I(r).y=b),type:"number",class:"inp"},null,512),[[je,I(r).y,void 0,{number:!0}]])])]),be(Oe,{label:"旋转",min:-360,max:360,step:1,modelValue:I(r).rotation,"onUpdate:modelValue":S[21]||(S[21]=b=>I(r).rotation=b)},null,8,["modelValue"]),T("div",FN,[T("label",ON,[S[76]||(S[76]=T("span",null,"缩放 X",-1)),ce(T("input",{"onUpdate:modelValue":S[22]||(S[22]=b=>I(r).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,I(r).scaleX,void 0,{number:!0}]])]),T("label",LN,[S[77]||(S[77]=T("span",null,"缩放 Y",-1)),ce(T("input",{"onUpdate:modelValue":S[23]||(S[23]=b=>I(r).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,I(r).scaleY,void 0,{number:!0}]])])]),I(r).shape==="circle"?(z(),At(Oe,{key:0,label:"半径",min:1,max:1e3,step:1,modelValue:I(r).radius,"onUpdate:modelValue":S[24]||(S[24]=b=>I(r).radius=b)},null,8,["modelValue"])):I(r).shape==="ellipse"?(z(),J("div",BN,[T("label",NN,[S[78]||(S[78]=T("span",null,"X 半径",-1)),ce(T("input",{"onUpdate:modelValue":S[25]||(S[25]=b=>I(r).radiusX=b),type:"number",min:"1",class:"inp"},null,512),[[je,I(r).radiusX,void 0,{number:!0}]])]),T("label",DN,[S[79]||(S[79]=T("span",null,"Y 半径",-1)),ce(T("input",{"onUpdate:modelValue":S[26]||(S[26]=b=>I(r).radiusY=b),type:"number",min:"1",class:"inp"},null,512),[[je,I(r).radiusY,void 0,{number:!0}]])])])):(z(),J("div",UN,[T("label",$N,[S[80]||(S[80]=T("span",null,"宽度",-1)),ce(T("input",{"onUpdate:modelValue":S[27]||(S[27]=b=>I(r).width=b),type:"number",min:"1",class:"inp"},null,512),[[je,I(r).width,void 0,{number:!0}]])]),T("label",XN,[S[81]||(S[81]=T("span",null,"高度",-1)),ce(T("input",{"onUpdate:modelValue":S[28]||(S[28]=b=>I(r).height=b),type:"number",min:"1",class:"inp"},null,512),[[je,I(r).height,void 0,{number:!0}]])])])),I(r).shape==="polygon"||I(r).shape==="custom"?(z(),At(Oe,{key:3,label:"边数",min:3,max:16,step:1,modelValue:I(r).sides,"onUpdate:modelValue":S[29]||(S[29]=b=>I(r).sides=b)},null,8,["modelValue"])):xe("",!0),T("label",VN,[S[83]||(S[83]=T("span",null,"碰撞响应",-1)),ce(T("select",{"onUpdate:modelValue":S[30]||(S[30]=b=>I(r).response=b),class:"inp"},[...S[82]||(S[82]=[T("option",{value:"physics"},"物理(弹跳/摩擦)",-1),T("option",{value:"pause"},"暂停(停止不动)",-1),T("option",{value:"destroy"},"消失(立即销毁)",-1)])],512),[[_t,I(r).response]])]),I(r).response==="physics"?(z(),J("div",YN,[T("label",GN,[S[84]||(S[84]=T("span",null,"弹性 (0-1)",-1)),ce(T("input",{"onUpdate:modelValue":S[31]||(S[31]=b=>I(r).elasticity=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[je,I(r).elasticity,void 0,{number:!0}]])]),T("label",jN,[S[85]||(S[85]=T("span",null,"摩擦 (0-1)",-1)),ce(T("input",{"onUpdate:modelValue":S[32]||(S[32]=b=>I(r).friction=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[je,I(r).friction,void 0,{number:!0}]])])])):xe("",!0),T("div",HN,[T("label",WN,[ce(T("input",{"onUpdate:modelValue":S[33]||(S[33]=b=>I(r).followPath=b),type:"checkbox"},null,512),[[yt,I(r).followPath]]),S[86]||(S[86]=gt("跟随路径移动",-1))]),I(r).followPath?(z(),J(Ce,{key:0},[T("label",zN,[S[88]||(S[88]=T("span",null,"目标路径",-1)),ce(T("select",{"onUpdate:modelValue":S[34]||(S[34]=b=>I(r).followPathId=b),class:"inp"},[S[87]||(S[87]=T("option",{value:0},"(未选择)",-1)),(z(!0),J(Ce,null,Ft(I(e).paths,b=>(z(),J("option",{key:b.id,value:b.id},ye(b.name),9,qN))),128))],512),[[_t,I(r).followPathId,void 0,{number:!0}]])]),T("div",KN,[T("label",ZN,[S[89]||(S[89]=T("span",null,"移动时长(秒)",-1)),ce(T("input",{"onUpdate:modelValue":S[35]||(S[35]=b=>I(r).followDuration=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,I(r).followDuration,void 0,{number:!0}]])]),T("label",JN,[S[91]||(S[91]=T("span",null,"曲线模式",-1)),ce(T("select",{"onUpdate:modelValue":S[36]||(S[36]=b=>I(r).followCurveMode=b),class:"inp"},[...S[90]||(S[90]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[_t,I(r).followCurveMode]])])]),T("label",QN,[ce(T("input",{"onUpdate:modelValue":S[37]||(S[37]=b=>I(r).followPathRotation=b),type:"checkbox"},null,512),[[yt,I(r).followPathRotation]]),S[92]||(S[92]=gt("方向沿路径",-1))]),S[93]||(S[93]=T("div",{class:"collider-curve-title"},[gt("移动进度曲线 "),T("small",null,"横轴:实时/移动时长 纵轴:路径进度(0=起点 → 1=终点)")],-1)),be(Ji,{"model-value":I(r).followCurve||I(w),"default-value":I(w),mode:I(t)(I(r).followCurveMode),"onUpdate:modelValue":S[38]||(S[38]=b=>I(r).followCurve=b)},null,8,["model-value","default-value","mode"])],64)):xe("",!0)])],64)):I(o)?(z(),J(Ce,{key:2},[S[104]||(S[104]=T("div",{class:"object-editor-title"},"路径属性",-1)),T("label",eD,[S[95]||(S[95]=T("span",null,"路径名称",-1)),ce(T("input",{"onUpdate:modelValue":S[39]||(S[39]=b=>I(o).name=b),class:"inp"},null,512),[[je,I(o).name]])]),T("div",tD,[T("label",sD,[S[96]||(S[96]=T("span",null,"X 位置",-1)),ce(T("input",{"onUpdate:modelValue":S[40]||(S[40]=b=>I(o).x=b),type:"number",class:"inp"},null,512),[[je,I(o).x,void 0,{number:!0}]])]),T("label",iD,[S[97]||(S[97]=T("span",null,"Y 位置",-1)),ce(T("input",{"onUpdate:modelValue":S[41]||(S[41]=b=>I(o).y=b),type:"number",class:"inp"},null,512),[[je,I(o).y,void 0,{number:!0}]])])]),be(Oe,{label:"旋转",min:-360,max:360,step:1,modelValue:I(o).rotation,"onUpdate:modelValue":S[42]||(S[42]=b=>I(o).rotation=b)},null,8,["modelValue"]),T("div",nD,[T("label",rD,[S[98]||(S[98]=T("span",null,"缩放 X",-1)),ce(T("input",{"onUpdate:modelValue":S[43]||(S[43]=b=>I(o).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,I(o).scaleX,void 0,{number:!0}]])]),T("label",oD,[S[99]||(S[99]=T("span",null,"缩放 Y",-1)),ce(T("input",{"onUpdate:modelValue":S[44]||(S[44]=b=>I(o).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,I(o).scaleY,void 0,{number:!0}]])])]),T("label",aD,[S[100]||(S[100]=T("span",null,"闭合路径",-1)),ce(T("input",{"onUpdate:modelValue":S[45]||(S[45]=b=>I(o).closed=b),type:"checkbox"},null,512),[[yt,I(o).closed]])]),T("label",lD,[S[101]||(S[101]=T("span",null,"路径颜色",-1)),ce(T("input",{"onUpdate:modelValue":S[46]||(S[46]=b=>I(o).color=b),type:"color",class:"path-color"},null,512),[[je,I(o).color]])]),S[105]||(S[105]=Qs('
操作说明:
  • 双击空白处/曲线:新建锚点
  • 双击锚点:删除节点
  • 双击第二下按住拖动:新建并拉出手柄
  • 拖动锚点移动位置,拖动手柄调整曲线
  • Shift+拖动手柄:两侧完全对称
  • Alt+拖动手柄:独立控制单侧
  • Ctrl+点击/框选:加选节点
  • Alt+点击/框选:减选节点
  • Alt+单击空白处:清除全部选中
  • 选中多个节点后可整体拖动
',1)),T("label",cD,[S[103]||(S[103]=T("span",null,"应用预设形状",-1)),ce(T("select",{"onUpdate:modelValue":S[47]||(S[47]=b=>I(o).preset=b),class:"inp"},[...S[102]||(S[102]=[Qs('',5)])],512),[[_t,I(o).preset]])]),T("button",{class:"path-action primary",onClick:S[48]||(S[48]=(...b)=>I(y)&&I(y)(...b))},"应用预设"),T("button",{class:"path-action",onClick:S[49]||(S[49]=(...b)=>I(x)&&I(x)(...b))},"清空锚点")],64)):I(a)?(z(),At(HB,{key:3,"spine-object":I(a)},null,8,["spine-object"])):(z(),J("div",hD,"使用右上角按钮创建场景对象"))],512),[[ws,!I(c).scene]])]))}}),dD=Jt(uD,[["__scopeId","data-v-3873124f"]]),fD={class:"group"},mD={class:"caret"},pD={class:"group-body"},gD={class:"segs"},vD={class:"segs stream-behavior-segs"},yD={key:2,class:"stream-loop-options"},xD={class:"loop-section-row"},bD={class:"switch-row"},wD=["checked"],SD={key:0,class:"loop-duration-control"},MD={class:"switch-row loop-duration-toggle"},TD=["checked"],_D={class:"loop-section-duration"},CD=["value"],AD={key:1},ED={key:2,class:"loop-auto-duration"},ID={class:"loop-section-row"},RD={class:"switch-row"},PD=["checked"],kD={key:0,class:"loop-duration-control"},FD={class:"switch-row loop-duration-toggle"},OD=["checked"],LD={class:"loop-section-duration"},BD=["value"],ND={key:1},DD={key:2,class:"loop-auto-duration"},UD={key:3,class:"modifier-hint stream-loop-hint"},$D={class:"group"},XD={class:"caret"},VD={class:"group-body"},YD={class:"row"},GD={class:"row"},jD=["value","disabled"],HD={key:0,class:"row"},WD={class:"row"},zD={key:0,value:"radial"},qD={key:1,value:"path-normal"},KD={key:2,value:"path-tangent"},ZD={key:6,class:"switch-row"},JD=Zt({__name:"EmissionSection",setup(i){const{store:e,sys:t,automaticLoopDuration:s,loopDurationFrames:n,collapsed:r,toggle:o,setEmitMode:a,setLoopDurationFrames:l,setStreamBehavior:c,setLoopSection:h,setLoopSectionDuration:u,setLoopCustomDuration:d,resetModule:f,select:p,onShapeChange:m,onSpawnPathChange:g}=Ar();return(y,x)=>(z(),J(Ce,null,[T("div",fD,[T("div",{class:"group-head",onClick:x[1]||(x[1]=v=>I(o)("emitMode"))},[T("span",mD,ye(I(r).emitMode?"▸":"▾"),1),x[36]||(x[36]=T("span",null,"发射模式",-1)),T("button",{class:"group-reset",title:"重置发射模式参数",onClick:x[0]||(x[0]=Ke(v=>I(f)("emitMode"),["stop"]))},"重置")]),ce(T("div",pD,[T("div",gD,[T("button",{class:Ae(["seg",{on:I(t).config.mode==="stream"}]),onClick:x[2]||(x[2]=v=>I(a)("stream"))},"持续",2),T("button",{class:Ae(["seg",{on:I(t).config.mode==="burst"}]),onClick:x[3]||(x[3]=v=>I(a)("burst"))},"爆发",2)]),I(t).config.mode==="stream"?(z(),J(Ce,{key:0},[T("div",vD,[T("button",{class:Ae(["seg",{on:I(t).config.streamBehavior==="normal"}]),onClick:x[4]||(x[4]=v=>I(c)("normal"))},"常规持续",2),T("button",{class:Ae(["seg",{on:I(t).config.streamBehavior==="loop"}]),onClick:x[5]||(x[5]=v=>I(c)("loop"))},"循环持续",2)]),be(Oe,{label:"发射速率",min:1,max:300,step:1,modelValue:I(t).config.rate,"onUpdate:modelValue":x[6]||(x[6]=v=>I(t).config.rate=v)},null,8,["modelValue"]),I(t).config.streamBehavior==="normal"?(z(),At(Oe,{key:0,label:"发射时长",min:1/30,max:60,step:1/30,modelValue:I(t).config.duration,"onUpdate:modelValue":x[7]||(x[7]=v=>I(t).config.duration=v)},null,8,["modelValue"])):(z(),At(Oe,{key:1,label:"发射时长 (f)",min:1,max:1800,step:1,"model-value":I(n),"onUpdate:modelValue":I(l)},null,8,["model-value","onUpdate:modelValue"])),I(t).config.streamBehavior==="loop"?(z(),J("div",yD,[T("div",xD,[T("label",bD,[T("input",{type:"checkbox",checked:I(t).config.generateLoopStartAnimation,onChange:x[8]||(x[8]=v=>I(h)("start",v))},null,40,wD),x[37]||(x[37]=T("span",{class:"switch-ui"},null,-1)),x[38]||(x[38]=T("span",null,"生成开始循环动画",-1))]),I(t).config.generateLoopStartAnimation?(z(),J("div",SD,[T("label",MD,[T("input",{type:"checkbox",checked:I(t).config.loopStartUseCustomDuration,onChange:x[9]||(x[9]=v=>I(d)("start",v))},null,40,TD),x[39]||(x[39]=T("span",{class:"switch-ui"},null,-1)),x[40]||(x[40]=T("span",null,"指定时长",-1))]),T("label",_D,[I(t).config.loopStartUseCustomDuration?(z(),J("input",{key:0,value:I(t).config.loopStartDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"开始循环段时长",onChange:x[10]||(x[10]=v=>I(u)("start",v))},null,40,CD)):xe("",!0),I(t).config.loopStartUseCustomDuration?(z(),J("span",AD,"f")):(z(),J("span",ED,"自动 "+ye(I(s))+"f",1))])])):xe("",!0)]),T("div",ID,[T("label",RD,[T("input",{type:"checkbox",checked:I(t).config.generateLoopEndAnimation,onChange:x[11]||(x[11]=v=>I(h)("end",v))},null,40,PD),x[41]||(x[41]=T("span",{class:"switch-ui"},null,-1)),x[42]||(x[42]=T("span",null,"生成结束循环动画",-1))]),I(t).config.generateLoopEndAnimation?(z(),J("div",kD,[T("label",FD,[T("input",{type:"checkbox",checked:I(t).config.loopEndUseCustomDuration,onChange:x[12]||(x[12]=v=>I(d)("end",v))},null,40,OD),x[43]||(x[43]=T("span",{class:"switch-ui"},null,-1)),x[44]||(x[44]=T("span",null,"指定时长",-1))]),T("label",LD,[I(t).config.loopEndUseCustomDuration?(z(),J("input",{key:0,value:I(t).config.loopEndDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"结束循环段时长",onChange:x[13]||(x[13]=v=>I(u)("end",v))},null,40,BD)):xe("",!0),I(t).config.loopEndUseCustomDuration?(z(),J("span",ND,"f")):(z(),J("span",DD,"自动 "+ye(I(s))+"f",1))])])):xe("",!0)])])):xe("",!0),I(t).config.streamBehavior==="loop"?(z(),J("div",UD,"循环持续模式不支持骨骼跟随和路径跟随;进入或退出时会将粒子跟随设置恢复默认值。")):xe("",!0)],64)):(z(),At(Oe,{key:1,label:"单次数量",min:1,max:1e3,step:1,modelValue:I(t).config.burstCount,"onUpdate:modelValue":x[14]||(x[14]=v=>I(t).config.burstCount=v)},null,8,["modelValue"])),be(Oe,{label:"延迟时间",min:0,max:5,step:.1,modelValue:I(t).config.delay,"onUpdate:modelValue":x[15]||(x[15]=v=>I(t).config.delay=v)},null,8,["modelValue"])],512),[[ws,!I(r).emitMode]])]),T("div",$D,[T("div",{class:"group-head",onClick:x[17]||(x[17]=v=>I(o)("shape"))},[T("span",XD,ye(I(r).shape?"▸":"▾"),1),x[45]||(x[45]=T("span",null,"发射器形状",-1)),T("button",{class:"group-reset",title:"重置发射器形状参数",onClick:x[16]||(x[16]=Ke(v=>I(f)("shape"),["stop"]))},"重置")]),ce(T("div",VD,[T("label",YD,[x[47]||(x[47]=T("span",null,"形状",-1)),ce(T("select",{"onUpdate:modelValue":x[18]||(x[18]=v=>I(t).config.shape=v),class:"inp",onChange:x[19]||(x[19]=(...v)=>I(m)&&I(m)(...v))},[...x[46]||(x[46]=[Qs('',5)])],544),[[_t,I(t).config.shape]])]),I(t).config.shape==="circle"||I(t).config.shape==="cone"?(z(),J(Ce,{key:0},[be(Oe,{label:I(t).config.shape==="cone"?"内径":"内半径",min:0,max:I(t).config.outerRadius,step:1,modelValue:I(t).config.innerRadius,"onUpdate:modelValue":x[20]||(x[20]=v=>I(t).config.innerRadius=v)},null,8,["label","max","modelValue"]),be(Oe,{label:I(t).config.shape==="cone"?"外径":"外半径",min:I(t).config.innerRadius,max:300,step:1,modelValue:I(t).config.outerRadius,"onUpdate:modelValue":x[21]||(x[21]=v=>I(t).config.outerRadius=v)},null,8,["label","min","modelValue"])],64)):xe("",!0),I(t).config.shape==="cone"?(z(),J(Ce,{key:1},[be(Oe,{label:"锥形朝向",min:-360,max:360,step:1,modelValue:I(t).config.coneDirection,"onUpdate:modelValue":x[22]||(x[22]=v=>I(t).config.coneDirection=v)},null,8,["modelValue"]),be(Oe,{label:"锥形开口角度",min:1,max:360,step:1,modelValue:I(t).config.coneAngle,"onUpdate:modelValue":x[23]||(x[23]=v=>I(t).config.coneAngle=v)},null,8,["modelValue"])],64)):I(t).config.shape==="rect"?(z(),J(Ce,{key:2},[be(Oe,{label:"内宽",min:0,max:I(t).config.outerRectW,step:1,modelValue:I(t).config.innerRectW,"onUpdate:modelValue":x[24]||(x[24]=v=>I(t).config.innerRectW=v)},null,8,["max","modelValue"]),be(Oe,{label:"内高",min:0,max:I(t).config.outerRectH,step:1,modelValue:I(t).config.innerRectH,"onUpdate:modelValue":x[25]||(x[25]=v=>I(t).config.innerRectH=v)},null,8,["max","modelValue"]),be(Oe,{label:"外宽",min:I(t).config.innerRectW,max:400,step:1,modelValue:I(t).config.outerRectW,"onUpdate:modelValue":x[26]||(x[26]=v=>I(t).config.outerRectW=v)},null,8,["min","modelValue"]),be(Oe,{label:"外高",min:I(t).config.innerRectH,max:400,step:1,modelValue:I(t).config.outerRectH,"onUpdate:modelValue":x[27]||(x[27]=v=>I(t).config.outerRectH=v)},null,8,["min","modelValue"])],64)):I(t).config.shape==="path"?(z(),J(Ce,{key:3},[T("label",GD,[x[49]||(x[49]=T("span",null,"选择路径",-1)),ce(T("select",{"onUpdate:modelValue":x[28]||(x[28]=v=>I(t).config.spawnPathId=v),class:"inp",onChange:x[29]||(x[29]=(...v)=>I(g)&&I(g)(...v))},[x[48]||(x[48]=T("option",{value:0},"无路径(点发射)",-1)),(z(!0),J(Ce,null,Ft(I(e).paths,v=>(z(),J("option",{key:v.id,value:v.id,disabled:!v.enabled},ye(v.name),9,jD))),128))],544),[[_t,I(t).config.spawnPathId,void 0,{number:!0}]])]),I(t).config.spawnPathId>0?(z(),J("label",HD,[x[51]||(x[51]=T("span",null,"出生分布",-1)),ce(T("select",{"onUpdate:modelValue":x[30]||(x[30]=v=>I(t).config.spawnPathDistribution=v),class:"inp"},[...x[50]||(x[50]=[T("option",{value:"fixed"},"等间距固定分布",-1),T("option",{value:"random"},"随机分布",-1)])],512),[[_t,I(t).config.spawnPathDistribution]])])):xe("",!0)],64)):xe("",!0),x[57]||(x[57]=T("div",{class:"divider"},null,-1)),T("label",WD,[x[54]||(x[54]=T("span",null,"发射角度",-1)),ce(T("select",{"onUpdate:modelValue":x[31]||(x[31]=v=>I(t).config.emissionAngleMode=v),class:"inp"},[x[52]||(x[52]=T("option",{value:"fixed"},"固定",-1)),x[53]||(x[53]=T("option",{value:"random"},"随机",-1)),I(t).config.shape==="circle"||I(t).config.shape==="rect"||I(t).config.shape==="cone"?(z(),J("option",zD,"径向(中心向外)")):xe("",!0),I(t).config.shape==="path"&&I(t).config.spawnPathId>0?(z(),J("option",qD,"垂直于路径")):xe("",!0),I(t).config.shape==="path"&&I(t).config.spawnPathId>0?(z(),J("option",KD,"沿路径方向")):xe("",!0)],512),[[_t,I(t).config.emissionAngleMode]])]),I(t).config.emissionAngleMode==="fixed"?(z(),At(Oe,{key:4,label:"固定角度",min:-360,max:360,step:1,modelValue:I(t).config.direction,"onUpdate:modelValue":x[32]||(x[32]=v=>I(t).config.direction=v)},null,8,["modelValue"])):I(t).config.emissionAngleMode==="random"?(z(),J(Ce,{key:5},[be(Oe,{label:"基准角度",min:-360,max:360,step:1,modelValue:I(t).config.direction,"onUpdate:modelValue":x[33]||(x[33]=v=>I(t).config.direction=v)},null,8,["modelValue"]),be(Oe,{label:"随机范围",min:0,max:360,step:1,modelValue:I(t).config.spread,"onUpdate:modelValue":x[34]||(x[34]=v=>I(t).config.spread=v)},null,8,["modelValue"])],64)):xe("",!0),I(t).config.shape!=="point"?(z(),J("label",ZD,[ce(T("input",{type:"checkbox","onUpdate:modelValue":x[35]||(x[35]=v=>I(t).config.showShape=v)},null,512),[[yt,I(t).config.showShape]]),x[55]||(x[55]=T("span",{class:"switch-ui"},null,-1)),x[56]||(x[56]=T("span",null,"显示形状",-1))])):xe("",!0)],512),[[ws,!I(r).shape]])])],64))}}),QD=Jt(JD,[["__scopeId","data-v-f9eac627"]]),e4={class:"pac"},t4={class:"pac-head"},s4={class:"pac-label"},i4={key:0,class:"pac-modes"},n4=["onClick"],r4={class:"pac-range"},o4={class:"pac-curve"},a4={class:"pac-axis"},l4=Zt({__name:"ParticleAttributeControl",props:{label:{},mode:{},valueMin:{},valueMax:{},curve:{},defaultCurve:{default:()=>[{x:0,y:0},{x:1,y:1}]},min:{},max:{},step:{default:1},allowDirection:{type:Boolean,default:!1},allowCurve:{type:Boolean,default:!0},showModes:{type:Boolean,default:!0},curveLabel:{default:"曲线输入 →"}},emits:["update:mode","update:valueMin","update:valueMax","update:curve"],setup(i){const e=i,t=De(()=>{const s=[{label:"固定",value:"fixed"},{label:"随机",value:"random"}];return e.allowCurve&&s.push({label:"曲线",value:"curve"}),e.allowDirection&&s.push({label:"发射方向",value:"direction"}),s});return(s,n)=>(z(),J("div",e4,[T("div",t4,[T("span",s4,ye(i.label),1),i.showModes?(z(),J("div",i4,[(z(!0),J(Ce,null,Ft(t.value,r=>(z(),J("button",{key:r.value,class:Ae(["pac-mode",{on:i.mode===r.value}]),onClick:o=>s.$emit("update:mode",r.value)},ye(r.label),11,n4))),128))])):xe("",!0)]),i.mode==="fixed"||i.mode==="direction"?(z(),At(Oe,{key:0,label:i.mode==="direction"?"角度偏移":"数值",min:i.min,max:i.max,step:i.step,"model-value":i.valueMin,"onUpdate:modelValue":n[0]||(n[0]=r=>s.$emit("update:valueMin",r))},null,8,["label","min","max","step","model-value"])):i.mode==="random"?(z(),J(Ce,{key:1},[be(Oe,{label:"下限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMin,"onUpdate:modelValue":n[1]||(n[1]=r=>s.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Oe,{label:"上限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMax,"onUpdate:modelValue":n[2]||(n[2]=r=>s.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])],64)):(z(),J(Ce,{key:2},[T("div",r4,[be(Oe,{label:"范围下限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMin,"onUpdate:modelValue":n[3]||(n[3]=r=>s.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Oe,{label:"范围上限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMax,"onUpdate:modelValue":n[4]||(n[4]=r=>s.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])]),T("div",o4,[be(Ji,{"model-value":i.curve,"default-value":i.defaultCurve,"onUpdate:modelValue":n[5]||(n[5]=r=>s.$emit("update:curve",r))},null,8,["model-value","default-value"]),T("div",a4,[n[6]||(n[6]=T("span",null,"0",-1)),T("span",null,ye(i.curveLabel),1),n[7]||(n[7]=T("span",null,"1",-1))])])],64))]))}}),xn=Jt(l4,[["__scopeId","data-v-238f838c"]]),c4={class:"group"},h4={class:"caret"},u4={class:"group-body attr-body"},d4={class:"attr-axis-head"},f4={class:"axis-modes"},m4={class:"life-item"},p4={class:"switch-row"},g4={class:"life-item"},v4={class:"switch-row"},y4={class:"axis-modes life-axis"},x4={class:"life-item"},b4={class:"switch-row"},w4=Zt({__name:"ParticleAttributesSection",setup(i){const{sys:e,collapsed:t,toggle:s,resetModule:n,setSpeedOverLifeMode:r,prepareScaleOverLifeCurve:o,setScaleOverLifeMode:a,LINEAR_CURVE:l,FLAT_CURVE:c}=Ar();return(h,u)=>(z(),J("div",c4,[T("div",{class:"group-head",onClick:u[1]||(u[1]=d=>I(s)("attr"))},[T("span",h4,ye(I(t).attr?"▸":"▾"),1),u[44]||(u[44]=T("span",null,"粒子属性",-1)),T("button",{class:"group-reset",title:"重置粒子属性参数",onClick:u[0]||(u[0]=Ke(d=>I(n)("attr"),["stop"]))},"重置")]),ce(T("div",u4,[u[52]||(u[52]=T("div",{class:"attr-section-title"},"粒子初始参数",-1)),be(xn,{label:"初始生命周期","allow-curve":!1,mode:I(e).config.lifeMode,"onUpdate:mode":u[2]||(u[2]=d=>I(e).config.lifeMode=d),"value-min":I(e).config.lifeMin,"onUpdate:valueMin":u[3]||(u[3]=d=>I(e).config.lifeMin=d),"value-max":I(e).config.lifeMax,"onUpdate:valueMax":u[4]||(u[4]=d=>I(e).config.lifeMax=d),curve:I(e).config.lifeCurve,"onUpdate:curve":u[5]||(u[5]=d=>I(e).config.lifeCurve=d),min:.1,max:10,step:.1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),be(xn,{label:"初始速度","allow-curve":!1,mode:I(e).config.speedMode,"onUpdate:mode":u[6]||(u[6]=d=>I(e).config.speedMode=d),"value-min":I(e).config.speedMin,"onUpdate:valueMin":u[7]||(u[7]=d=>I(e).config.speedMin=d),"value-max":I(e).config.speedMax,"onUpdate:valueMax":u[8]||(u[8]=d=>I(e).config.speedMax=d),curve:I(e).config.speedCurve,"onUpdate:curve":u[9]||(u[9]=d=>I(e).config.speedCurve=d),min:0,max:1e3,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),T("div",d4,[u[45]||(u[45]=T("span",null,"初始缩放",-1)),T("div",f4,[T("button",{class:Ae(["axis-mode",{on:I(e).config.scaleAxisMode==="uniform"}]),onClick:u[10]||(u[10]=d=>I(e).config.scaleAxisMode="uniform")},"统一",2),T("button",{class:Ae(["axis-mode",{on:I(e).config.scaleAxisMode==="separate"}]),onClick:u[11]||(u[11]=d=>I(e).config.scaleAxisMode="separate")},"XY分离",2)])]),be(xn,{label:I(e).config.scaleAxisMode==="uniform"?"初始缩放":"缩放 X","allow-curve":!1,mode:I(e).config.scaleMode,"onUpdate:mode":u[12]||(u[12]=d=>I(e).config.scaleMode=d),"value-min":I(e).config.scaleMin,"onUpdate:valueMin":u[13]||(u[13]=d=>I(e).config.scaleMin=d),"value-max":I(e).config.scaleMax,"onUpdate:valueMax":u[14]||(u[14]=d=>I(e).config.scaleMax=d),curve:I(e).config.scaleCurve,"onUpdate:curve":u[15]||(u[15]=d=>I(e).config.scaleCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["label","mode","value-min","value-max","curve"]),I(e).config.scaleAxisMode==="separate"?(z(),At(xn,{key:0,label:"缩放 Y","show-modes":!1,"allow-curve":!1,mode:I(e).config.scaleMode,"onUpdate:mode":u[16]||(u[16]=d=>I(e).config.scaleMode=d),"value-min":I(e).config.scaleYMin,"onUpdate:valueMin":u[17]||(u[17]=d=>I(e).config.scaleYMin=d),"value-max":I(e).config.scaleYMax,"onUpdate:valueMax":u[18]||(u[18]=d=>I(e).config.scaleYMax=d),curve:I(e).config.scaleYCurve,"onUpdate:curve":u[19]||(u[19]=d=>I(e).config.scaleYCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"])):xe("",!0),be(xn,{label:"初始旋转","allow-direction":"","allow-curve":!1,mode:I(e).config.initialRotationMode,"onUpdate:mode":u[20]||(u[20]=d=>I(e).config.initialRotationMode=d),"value-min":I(e).config.initialRotationMin,"onUpdate:valueMin":u[21]||(u[21]=d=>I(e).config.initialRotationMin=d),"value-max":I(e).config.initialRotationMax,"onUpdate:valueMax":u[22]||(u[22]=d=>I(e).config.initialRotationMax=d),curve:I(e).config.initialRotationCurve,"onUpdate:curve":u[23]||(u[23]=d=>I(e).config.initialRotationCurve=d),min:-360,max:360,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),u[53]||(u[53]=T("div",{class:"attr-section-title life-title"},"粒子生命周期变化参数",-1)),T("div",m4,[T("label",p4,[ce(T("input",{type:"checkbox","onUpdate:modelValue":u[24]||(u[24]=d=>I(e).config.speedOverLifeEnabled=d)},null,512),[[yt,I(e).config.speedOverLifeEnabled]]),u[46]||(u[46]=T("span",{class:"switch-ui"},null,-1)),u[47]||(u[47]=T("span",null,"生命周期内速度",-1))]),I(e).config.speedOverLifeEnabled?(z(),At(xn,{key:0,label:"速度倍率",mode:I(e).config.speedOverLifeMode,"onUpdate:mode":I(r),"value-min":I(e).config.speedOverLifeMin,"onUpdate:valueMin":u[25]||(u[25]=d=>I(e).config.speedOverLifeMin=d),"value-max":I(e).config.speedOverLifeMax,"onUpdate:valueMax":u[26]||(u[26]=d=>I(e).config.speedOverLifeMax=d),curve:I(e).config.speedOverLifeCurve,"onUpdate:curve":u[27]||(u[27]=d=>I(e).config.speedOverLifeCurve=d),"default-curve":I(c),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","onUpdate:mode","value-min","value-max","curve","default-curve"])):xe("",!0)]),T("div",g4,[T("label",v4,[ce(T("input",{type:"checkbox","onUpdate:modelValue":u[28]||(u[28]=d=>I(e).config.scaleOverLifeEnabled=d),onChange:u[29]||(u[29]=(...d)=>I(o)&&I(o)(...d))},null,544),[[yt,I(e).config.scaleOverLifeEnabled]]),u[48]||(u[48]=T("span",{class:"switch-ui"},null,-1)),u[49]||(u[49]=T("span",null,"生命周期内缩放",-1))]),I(e).config.scaleOverLifeEnabled?(z(),J(Ce,{key:0},[T("div",y4,[T("button",{class:Ae(["axis-mode",{on:I(e).config.scaleOverLifeAxisMode==="uniform"}]),onClick:u[30]||(u[30]=d=>I(e).config.scaleOverLifeAxisMode="uniform")},"统一",2),T("button",{class:Ae(["axis-mode",{on:I(e).config.scaleOverLifeAxisMode==="separate"}]),onClick:u[31]||(u[31]=d=>I(e).config.scaleOverLifeAxisMode="separate")},"XY分离",2)]),be(xn,{label:I(e).config.scaleOverLifeAxisMode==="uniform"?"缩放倍率":"倍率 X",mode:I(e).config.scaleOverLifeMode,"onUpdate:mode":I(a),"value-min":I(e).config.scaleOverLifeMin,"onUpdate:valueMin":u[32]||(u[32]=d=>I(e).config.scaleOverLifeMin=d),"value-max":I(e).config.scaleOverLifeMax,"onUpdate:valueMax":u[33]||(u[33]=d=>I(e).config.scaleOverLifeMax=d),curve:I(e).config.scaleOverLifeCurve,"onUpdate:curve":u[34]||(u[34]=d=>I(e).config.scaleOverLifeCurve=d),"default-curve":I(c),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["label","mode","onUpdate:mode","value-min","value-max","curve","default-curve"]),I(e).config.scaleOverLifeAxisMode==="separate"?(z(),At(xn,{key:0,label:"倍率 Y","show-modes":!1,mode:I(e).config.scaleOverLifeMode,"onUpdate:mode":u[35]||(u[35]=d=>I(e).config.scaleOverLifeMode=d),"value-min":I(e).config.scaleYOverLifeMin,"onUpdate:valueMin":u[36]||(u[36]=d=>I(e).config.scaleYOverLifeMin=d),"value-max":I(e).config.scaleYOverLifeMax,"onUpdate:valueMax":u[37]||(u[37]=d=>I(e).config.scaleYOverLifeMax=d),curve:I(e).config.scaleYOverLifeCurve,"onUpdate:curve":u[38]||(u[38]=d=>I(e).config.scaleYOverLifeCurve=d),"default-curve":I(c),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):xe("",!0)],64)):xe("",!0)]),T("div",x4,[T("label",b4,[ce(T("input",{type:"checkbox","onUpdate:modelValue":u[39]||(u[39]=d=>I(e).config.rotationOverLifeEnabled=d)},null,512),[[yt,I(e).config.rotationOverLifeEnabled]]),u[50]||(u[50]=T("span",{class:"switch-ui"},null,-1)),u[51]||(u[51]=T("span",null,"生命周期内旋转",-1))]),I(e).config.rotationOverLifeEnabled?(z(),At(xn,{key:0,label:"旋转速度",mode:I(e).config.rotationOverLifeMode,"onUpdate:mode":u[40]||(u[40]=d=>I(e).config.rotationOverLifeMode=d),"value-min":I(e).config.rotationSpeedMin,"onUpdate:valueMin":u[41]||(u[41]=d=>I(e).config.rotationSpeedMin=d),"value-max":I(e).config.rotationSpeedMax,"onUpdate:valueMax":u[42]||(u[42]=d=>I(e).config.rotationSpeedMax=d),curve:I(e).config.rotationOverLifeCurve,"onUpdate:curve":u[43]||(u[43]=d=>I(e).config.rotationOverLifeCurve=d),"default-curve":I(l),min:-720,max:720,step:10,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):xe("",!0)])],512),[[ws,!I(t).attr]])]))}}),S4=Jt(w4,[["__scopeId","data-v-cf6b86a5"]]),M4={class:"gradient-editor"},T4=["title","onClick","onDblclick","onPointerdown"],_4={key:0,class:"gradient-controls"},C4=["value"],A4=["value"],E4={class:"gradient-position"},I4=["value"],R4=["disabled"],P4=Zt({__name:"ColorGradientEditor",props:{modelValue:{}},emits:["update:modelValue"],setup(i,{emit:e}){const t=i,s=e,n=Fe(null),r=Fe(0),o=De(()=>t.modelValue[r.value]||null),a=De(()=>[...t.modelValue].sort((A,P)=>A.position-P.position)),l=De(()=>{const A=a.value;return A.length?`linear-gradient(90deg, ${A.map(P=>`${P.color} ${c(P.position)*100}%`).join(", ")})`:"#ffffff"});Cs(()=>t.modelValue.length,A=>{r.value>=A&&(r.value=Math.max(0,A-1))});function c(A){return Math.min(1,Math.max(0,Number(A)||0))}function h(){return t.modelValue.map(A=>({position:c(A.position),color:A.color}))}function u(A,P){const F=h();F[A]&&(F[A]={...F[A],...P},s("update:modelValue",F))}function d(A){u(r.value,{color:A.target.value})}function f(A){var E;const P=A.target,F=b(P.value,((E=o.value)==null?void 0:E.color)||"#ffffff");P.value=F,u(r.value,{color:F})}function p(A){const P=A.target;f(A),P.blur()}function m(A){const P=Number(A.target.value);Number.isFinite(P)&&u(r.value,{position:c(P/100)})}function g(A){const P=h();P.push({position:c(A),color:_(P,A)}),r.value=P.length-1,s("update:modelValue",P)}function y(A){if(!n.value)return;const P=n.value.getBoundingClientRect();g((A.clientX-P.left)/Math.max(1,P.width))}function x(){const A=a.value;let P=.5;if(A.length>1){let F=-1;for(let E=0;EF&&(F=k,P=(A[E].position+A[E+1].position)/2)}}g(P)}function v(A){if(t.modelValue.length<=2||A<0)return;const P=h().filter((F,E)=>E!==A);r.value=Math.min(A,P.length-1),s("update:modelValue",P)}function w(A,P){if(!n.value)return;r.value=P;const F=k=>{const B=n.value.getBoundingClientRect();u(P,{position:c((k.clientX-B.left)/Math.max(1,B.width))})},E=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",E),window.removeEventListener("pointercancel",E)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",E),window.addEventListener("pointercancel",E),A.preventDefault()}function _(A,P){const F=[...A].sort((E,k)=>E.position-k.position);if(!F.length)return"#ffffff";if(P<=F[0].position)return F[0].color;if(P>=F[F.length-1].position)return F[F.length-1].color;for(let E=0;EB.position)continue;const D=(P-k.position)/Math.max(1e-4,B.position-k.position);return S(k.color,B.color,D)}return F[F.length-1].color}function S(A,P,F){const E=X=>{const N=parseInt(X.replace("#","").padEnd(6,"0").slice(0,6),16);return[N>>16&255,N>>8&255,N&255]},k=E(A),B=E(P),D=X=>Math.round(k[X]+(B[X]-k[X])*F);return`#${[D(0),D(1),D(2)].map(X=>X.toString(16).padStart(2,"0")).join("")}`}function b(A,P){let F=A.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(F)&&(F=F.split("").map(E=>E+E).join("")),/^[0-9a-f]{6}$/i.test(F)?`#${F.toLowerCase()}`:P}return(A,P)=>(z(),J("div",M4,[T("div",{ref_key:"bar",ref:n,class:"gradient-bar",style:Vt({background:l.value}),title:"双击色带添加色标",onDblclick:y},[(z(!0),J(Ce,null,Ft(i.modelValue,(F,E)=>(z(),J("button",{key:E,type:"button",class:Ae(["gradient-stop",{selected:E===r.value}]),style:Vt({left:`${c(F.position)*100}%`,"--stop-color":F.color}),title:`${Math.round(c(F.position)*100)}% · ${F.color}`,onClick:Ke(k=>r.value=E,["stop"]),onDblclick:Ke(k=>v(E),["stop"]),onPointerdown:Ke(k=>w(k,E),["stop"])},null,46,T4))),128))],36),o.value?(z(),J("div",_4,[T("input",{type:"color",class:"gradient-color",value:o.value.color,"aria-label":"色标颜色",onInput:d},null,40,C4),T("input",{type:"text",class:"gradient-hex-input",value:o.value.color,"aria-label":"色标颜色值",spellcheck:"false",onChange:f,onKeydown:yr(p,["enter"])},null,40,A4),T("label",E4,[T("input",{type:"number",min:"0",max:"100",step:"1",value:Math.round(c(o.value.position)*100),"aria-label":"色标位置",onInput:m},null,40,I4),P[1]||(P[1]=T("span",null,"%",-1))]),T("button",{type:"button",class:"gradient-action",title:"在中间新增颜色",onClick:x},"+"),T("button",{type:"button",class:"gradient-action danger",title:"删除当前色标",disabled:i.modelValue.length<=2,onClick:P[0]||(P[0]=F=>v(r.value))},"×",8,R4)])):xe("",!0),P[2]||(P[2]=T("div",{class:"gradient-hint"},"双击色带新增 · 拖动色标调整位置 · 双击色标删除",-1))]))}}),DS=Jt(P4,[["__scopeId","data-v-f6ab10bf"]]),k4={class:"pivot-toolbar"},F4={class:"pivot-zoom"},O4=["disabled"],L4=["disabled"],B4=["src"],N4={key:2,class:"pivot-empty"},D4={class:"pivot-bottom"},U4={class:"pivot-card"},$4={class:"pivot-presets"},X4=["title","aria-label","onClick"],V4={class:"pivot-card"},Y4={class:"pivot-coords"},G4=["value"],j4=["value"],H4={class:"pivot-card-head pivot-rotate-head"},W4={class:"pivot-rotate-state"},z4={class:"pivot-rotate-body"},q4={class:"pivot-rotate-modes"},K4={class:"pivot-rotate-preview"},Z4=["src"],J4=Zt({__name:"PivotEditor",props:{previewUrl:{},anchorX:{},anchorY:{},large:{type:Boolean,default:!1}},emits:["update:anchorX","update:anchorY","fullscreen"],setup(i,{emit:e}){const t=i,s=e,n=[{icon:"↖",label:"左上",x:0,y:0},{icon:"↑",label:"正上",x:50,y:0},{icon:"↗",label:"右上",x:100,y:0},{icon:"←",label:"正左",x:0,y:50},{icon:"◯",label:"正中",x:50,y:50},{icon:"→",label:"正右",x:100,y:50},{icon:"↙",label:"左下",x:0,y:100},{icon:"↓",label:"正下·底部",x:50,y:100},{icon:"↘",label:"右下",x:100,y:100}],r=Fe(null),o=Fe(null),a=Fe({w:0,h:0}),l=Fe({w:1,h:1}),c=Fe(100),h=Fe({x:0,y:0}),u=Fe(!1),d=Fe("static");let f=null;const p=U=>Math.min(100,Math.max(0,Number.isFinite(U)?U:0)),m=De(()=>p(t.anchorX*100).toFixed(1)),g=De(()=>p(t.anchorY*100).toFixed(1));function y(U,C){const R=l.value.w/Math.max(1,l.value.h);let O=U,L=O/R;return L>C&&(L=C,O=L*R),{w:Math.max(1,O),h:Math.max(1,L)}}const x=De(()=>{const U=t.large?26:12,C=Math.max(1,a.value.w-U*2),R=Math.max(1,a.value.h-U*2);return y(C,R)}),v=De(()=>({width:`${x.value.w}px`,height:`${x.value.h}px`,transform:`translate(${h.value.x}px, ${h.value.y}px) scale(${c.value/100})`})),w=De(()=>{const U=c.value/100;return{x:a.value.w/2+h.value.x+(p(t.anchorX*100)/100-.5)*x.value.w*U,y:a.value.h/2+h.value.y+(p(t.anchorY*100)/100-.5)*x.value.h*U}}),_=De(()=>{const U=t.large?128:72,C=y(U,U);return{width:`${C.w}px`,height:`${C.h}px`,transformOrigin:`${p(t.anchorX*100)}% ${p(t.anchorY*100)}%`}});function S(U,C){s("update:anchorX",Math.min(1,Math.max(0,Number.isFinite(U)?U:0))),s("update:anchorY",Math.min(1,Math.max(0,Number.isFinite(C)?C:0)))}function b(U){const C=o.value;if(!C)return;const R=C.getBoundingClientRect();R.width<=0||R.height<=0||S((U.clientX-R.left)/R.width,(U.clientY-R.top)/R.height)}function A(U){if(!t.previewUrl)return;if(U.button===2){P(U);return}if(U.button!==0)return;U.preventDefault(),b(U);const C=O=>b(O),R=()=>{window.removeEventListener("pointermove",C),window.removeEventListener("pointerup",R),window.removeEventListener("pointercancel",R)};window.addEventListener("pointermove",C),window.addEventListener("pointerup",R),window.addEventListener("pointercancel",R)}function P(U){U.preventDefault(),u.value=!0;const C=U.clientX,R=U.clientY,O=h.value.x,L=h.value.y,$=j=>{h.value={x:O+j.clientX-C,y:L+j.clientY-R}},V=()=>{u.value=!1,window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",V),window.removeEventListener("pointercancel",V)};window.addEventListener("pointermove",$),window.addEventListener("pointerup",V),window.addEventListener("pointercancel",V)}function F(U){const C=U.deltaY<0?1.12:.8928571428571428,R=Math.min(400,Math.max(100,Math.round(c.value*C)));if(R===c.value)return;const O=r.value;if(!O){c.value=R;return}const L=O.getBoundingClientRect(),$=U.clientX-L.left,V=U.clientY-L.top,j=R/c.value;h.value={x:h.value.x+($-L.width/2-h.value.x)*(1-j),y:h.value.y+(V-L.height/2-h.value.y)*(1-j)},c.value=R}function E(U){const C=U.target;l.value={w:C.naturalWidth||1,h:C.naturalHeight||1}}function k(U){c.value=Math.min(400,Math.max(100,c.value+U))}function B(){S(.5,.5)}function D(U){S(U.x/100,U.y/100)}function X(U){return Math.abs(p(t.anchorX*100)-U.x)<.05&&Math.abs(p(t.anchorY*100)-U.y)<.05}function N(U,C){const R=p(Number(C.target.value));s(U==="x"?"update:anchorX":"update:anchorY",R/100)}return Cs(()=>t.previewUrl,()=>{l.value={w:1,h:1},h.value={x:0,y:0},c.value=100}),Oi(()=>{r.value&&(f=new ResizeObserver(U=>{var R;const C=(R=U[0])==null?void 0:R.contentRect;C&&(a.value={w:C.width,h:C.height})}),f.observe(r.value))}),po(()=>{f==null||f.disconnect(),f=null}),(U,C)=>(z(),J("div",{class:Ae(["pivot-editor",{"pivot-large":i.large}])},[T("div",k4,[C[9]||(C[9]=T("div",{class:"pivot-hint"},[T("span",{class:"pivot-hint-icon"},"⊕"),T("span",null,"贴图轴点")],-1)),T("div",F4,[T("button",{type:"button",disabled:c.value<=100,title:"缩小",onClick:C[0]||(C[0]=R=>k(-25))},"−",8,O4),T("span",null,ye(c.value)+"%",1),T("button",{type:"button",disabled:c.value>=400,title:"放大",onClick:C[1]||(C[1]=R=>k(25))},"+",8,L4)]),i.large?xe("",!0):(z(),J("button",{key:0,type:"button",class:"pivot-expand",title:"放大到全屏操作",onClick:C[2]||(C[2]=R=>U.$emit("fullscreen"))},"⤢"))]),T("div",{ref_key:"stageRef",ref:r,class:Ae(["pivot-stage",{panning:u.value}]),title:"左键点击/拖动设置轴点 · 右键拖动画布 · 滚轮缩放",onPointerdown:A,onWheel:Ke(F,["prevent"]),onContextmenu:C[3]||(C[3]=Ke(()=>{},["prevent"]))},[i.previewUrl?(z(),J("div",{key:0,ref_key:"boxRef",ref:o,class:"pivot-box",style:Vt(v.value)},[T("img",{src:i.previewUrl,alt:"轴点预览",draggable:"false",onLoad:E},null,40,B4)],4)):xe("",!0),i.previewUrl?(z(),J(Ce,{key:1},[T("div",{class:"pivot-cross vertical",style:Vt({left:`${w.value.x}px`})},null,4),T("div",{class:"pivot-cross horizontal",style:Vt({top:`${w.value.y}px`})},null,4),T("div",{class:"pivot-marker",style:Vt({left:`${w.value.x}px`,top:`${w.value.y}px`})},null,4),T("div",{class:"pivot-badge",style:Vt({left:`${w.value.x}px`,top:`${w.value.y}px`})},"X: "+ye(m.value)+"% | Y: "+ye(g.value)+"%",5)],64)):(z(),J("div",N4,"未选择图片"))],34),T("div",D4,[T("div",U4,[T("div",$4,[(z(),J(Ce,null,Ft(n,R=>T("button",{key:R.label,type:"button",class:Ae(["pivot-preset",{on:X(R)}]),title:`${R.label}(${R.x}%, ${R.y}%)`,"aria-label":R.label,onClick:O=>D(R)},ye(R.icon),11,X4)),64))]),T("button",{type:"button",class:"pivot-reset",onClick:B},"↺ 复位居中 (50%, 50%)")]),T("div",V4,[C[15]||(C[15]=T("div",{class:"pivot-card-head"},[T("span",null,[T("span",{class:"pivot-card-icon"},"◎"),gt(" 轴点坐标(%)")])],-1)),T("div",Y4,[T("label",null,[C[10]||(C[10]=gt("X: ",-1)),T("input",{type:"number",min:"0",max:"100",step:"0.1",value:m.value,onInput:C[4]||(C[4]=R=>N("x",R))},null,40,G4),C[11]||(C[11]=T("span",null,"%",-1))]),T("label",null,[C[12]||(C[12]=gt("Y: ",-1)),T("input",{type:"number",min:"0",max:"100",step:"0.1",value:g.value,onInput:C[5]||(C[5]=R=>N("y",R))},null,40,j4),C[13]||(C[13]=T("span",null,"%",-1))])]),i.large?(z(),J(Ce,{key:0},[T("div",H4,[C[14]||(C[14]=T("span",null,[T("span",{class:"pivot-card-icon"},"✥"),gt(" 轴心旋转测试")],-1)),T("span",W4,ye(d.value==="static"?"静止":d.value==="spin"?"自转":"摆动"),1)]),T("div",z4,[T("div",q4,[T("button",{type:"button",class:Ae({on:d.value==="static"}),onClick:C[6]||(C[6]=R=>d.value="static")},"静止",2),T("button",{type:"button",class:Ae({on:d.value==="spin"}),onClick:C[7]||(C[7]=R=>d.value="spin")},"↻ 自转",2),T("button",{type:"button",class:Ae({on:d.value==="swing"}),onClick:C[8]||(C[8]=R=>d.value="swing")},"⇄ 摆动",2)]),T("div",K4,[i.previewUrl?(z(),J("img",{key:0,src:i.previewUrl,alt:"旋转测试",draggable:"false",class:Ae(d.value),style:Vt(_.value)},null,14,Z4)):xe("",!0)])])],64)):xe("",!0)])])],2))}}),Ty=Jt(J4,[["__scopeId","data-v-18659d8e"]]),Q4={class:"image-card"},e5={class:"imgrow"},t5=["title"],s5=["src","alt"],i5={key:1,viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#8a93bb","stroke-width":"1.6"},n5={class:"img-fields"},r5={key:0,class:"row"},o5={class:"row"},a5=["placeholder"],l5={class:"img-actions"},c5=["title"],h5=["disabled"],u5={class:"thumb-note"},d5={key:0,class:"row"},f5={class:"row"},m5={class:"row"},p5={class:"sequence-note"},g5={class:"resource-weight-row"},v5=["disabled","title"],y5={key:0,viewBox:"0 0 24 24","aria-hidden":"true"},x5={key:1,viewBox:"0 0 24 24","aria-hidden":"true"},b5={key:2,class:"pivot-toggle-row"},w5={class:"pivot-toggle-text"},S5=["title"],M5=["title"],T5={class:"pivot-modal",role:"dialog","aria-modal":"true","aria-label":"贴图旋转轴点大图精修"},_5={class:"pivot-modal-head"},C5={class:"pivot-modal-info"},A5={class:"pivot-modal-title"},E5={class:"pivot-modal-badge"},I5={class:"pivot-modal-actions"},R5=Zt({__name:"ImageResourceCard",props:{resource:{},resourceCount:{},defaultFile:{},namePlaceholder:{default:"particle"},showFolder:{type:Boolean,default:!0},supportsSequence:{type:Boolean,default:!1}},emits:["pick","pickSequence","reset","remove","updateWeight","toggleLock"],setup(i,{emit:e}){const t=i,s=e,n=De(()=>{var v,w;if(t.resource.imageMode==="sequence"){const _=t.resource.sequenceFrames||[];if(!_.length)return"未选择序列帧";const S=((v=_[0])==null?void 0:v.name)||"第 1 帧",b=((w=_[_.length-1])==null?void 0:w.name)||S;return _.length===1?`1 帧 · ${S}`:`${_.length} 帧 · ${S} → ${b}`}const x=t.resource.textureName||t.defaultFile.replace(/\.[^.]+$/,"");return x.includes(".")?x:`${x}.png`}),r=De(()=>{var x,v;return t.resource.imageMode==="sequence"?((v=(x=t.resource.sequenceFrames)==null?void 0:x[0])==null?void 0:v.previewUrl)||"":t.resource.previewUrl}),o=Fe(!1),a=Fe(!1),l=Fe(.5),c=Fe(.5),h=De(()=>typeof t.resource.anchorX=="number"&&typeof t.resource.anchorY=="number"),u=De(()=>Math.abs((t.resource.anchorX??.5)-.5)<1e-4&&Math.abs((t.resource.anchorY??.5)-.5)<1e-4),d=De(()=>{const x=(Math.min(1,Math.max(0,t.resource.anchorX??.5))*100).toFixed(1),v=(Math.min(1,Math.max(0,t.resource.anchorY??.5))*100).toFixed(1);return o.value?`已开启:X ${x}% | Y ${v}%`:u.value?"未开启,默认围绕图片正中心 (50%, 50%)":`轴点已自定义:X ${x}% | Y ${v}%`});function f(){l.value=t.resource.anchorX??.5,c.value=t.resource.anchorY??.5,a.value=!0}function p(x){x&&(t.resource.anchorX=l.value,t.resource.anchorY=c.value),a.value=!1}function m(x){x.key==="Escape"&&a.value&&p(!1)}Oi(()=>window.addEventListener("keydown",m)),po(()=>window.removeEventListener("keydown",m));const g=De(()=>{var _,S;const x=t.resource.sequenceFrames||[];if(!x.length)return"未选择序列帧";const v=((_=x[0])==null?void 0:_.name)||"第一张图片",w=((S=x[x.length-1])==null?void 0:S.name)||"最后一张图片";return`已选择 ${x.length} 帧,按 ${v}-${w} 顺序播放`});function y(){t.supportsSequence&&t.resource.imageMode==="sequence"?s("pickSequence",t.resource.id):s("pick",t.resource.id)}return(x,v)=>(z(),J(Ce,null,[T("div",Q4,[T("div",e5,[T("button",{class:"img-thumb",title:i.supportsSequence&&i.resource.imageMode==="sequence"?"选择序列帧图片":"选择本地图片",onClick:y},[r.value?(z(),J("img",{key:0,src:r.value,alt:i.resource.textureName},null,8,s5)):(z(),J("svg",i5,[...v[19]||(v[19]=[T("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"},null,-1),T("circle",{cx:"8.5",cy:"8.5",r:"1.6"},null,-1),T("path",{d:"M21 15l-5-5-9 9"},null,-1)])]))],8,t5),T("div",n5,[i.showFolder?(z(),J("label",r5,[v[20]||(v[20]=T("span",null,"子文件夹",-1)),ce(T("input",{"onUpdate:modelValue":v[0]||(v[0]=w=>i.resource.textureFolder=w),type:"text",class:"inp",placeholder:"subfolder/"},null,512),[[je,i.resource.textureFolder]])])):xe("",!0),T("label",o5,[v[21]||(v[21]=T("span",null,"名称",-1)),ce(T("input",{"onUpdate:modelValue":v[1]||(v[1]=w=>i.resource.textureName=w),type:"text",class:"inp",placeholder:i.namePlaceholder},null,8,a5),[[je,i.resource.textureName]])])]),T("div",l5,[T("button",{class:"mini-btn2",title:`恢复 ${i.defaultFile}`,onClick:v[2]||(v[2]=w=>x.$emit("reset",i.resource.id))},"⟳",8,c5),T("button",{class:"mini-btn2",title:"删除图片资源",disabled:i.resourceCount===1,onClick:v[3]||(v[3]=w=>x.$emit("remove",i.resource.id))},"🗑",8,h5)])]),T("div",u5,ye(n.value),1),i.supportsSequence?(z(),J("label",d5,[v[23]||(v[23]=T("span",null,"图片模式",-1)),ce(T("select",{"onUpdate:modelValue":v[4]||(v[4]=w=>i.resource.imageMode=w),class:"inp"},[...v[22]||(v[22]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"sequence"},"序列帧",-1)])],512),[[_t,i.resource.imageMode]])])):xe("",!0),i.supportsSequence&&i.resource.imageMode==="sequence"?(z(),J(Ce,{key:1},[T("label",f5,[v[25]||(v[25]=T("span",null,"播放模式",-1)),ce(T("select",{"onUpdate:modelValue":v[5]||(v[5]=w=>i.resource.sequencePlayback=w),class:"inp"},[...v[24]||(v[24]=[T("option",{value:"once-hide"},"单次-尾帧消失",-1),T("option",{value:"once-hold"},"单次-尾帧固定",-1),T("option",{value:"loop-forward"},"正向循环",-1),T("option",{value:"loop-reverse"},"反向循环",-1)])],512),[[_t,i.resource.sequencePlayback]])]),T("label",m5,[v[26]||(v[26]=T("span",null,"播放帧率",-1)),ce(T("input",{"onUpdate:modelValue":v[6]||(v[6]=w=>i.resource.sequenceFps=w),type:"number",min:"1",max:"120",step:"1",class:"inp"},null,512),[[je,i.resource.sequenceFps,void 0,{number:!0}]])]),T("button",{class:"sequence-pick",onClick:v[7]||(v[7]=w=>x.$emit("pickSequence",i.resource.id))},"选择序列帧(多选)"),T("div",p5,ye(g.value),1)],64)):xe("",!0),T("div",g5,[be(Oe,{class:"resource-weight-control",label:"占比%",min:0,max:100,step:1,"model-value":i.resource.weight,disabled:i.resource.locked||i.resourceCount===1,"onUpdate:modelValue":v[8]||(v[8]=w=>x.$emit("updateWeight",i.resource.id,w))},null,8,["model-value","disabled"]),T("button",{class:Ae(["weight-lock",{on:i.resource.locked}]),disabled:i.resourceCount===1,title:i.resource.locked?"解除占比锁定":"锁定当前占比",onClick:v[9]||(v[9]=w=>x.$emit("toggleLock",i.resource.id))},[i.resource.locked?(z(),J("svg",y5,[...v[27]||(v[27]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"},null,-1)])])):(z(),J("svg",x5,[...v[28]||(v[28]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M16 10V7a4 4 0 0 0-7.5-2"},null,-1)])]))],10,v5)]),hT(x.$slots,"default",{},void 0),h.value?(z(),J("div",b5,[v[31]||(v[31]=T("div",{class:"pivot-toggle-icon"},"◎",-1)),T("div",w5,[v[29]||(v[29]=T("div",{class:"pivot-toggle-title"},"贴图轴点",-1)),T("div",{class:"pivot-toggle-sub",title:d.value},ye(d.value),9,S5)]),T("label",{class:"pivot-switch",title:o.value?"收起轴点调整":"展开轴点调整"},[ce(T("input",{"onUpdate:modelValue":v[10]||(v[10]=w=>o.value=w),type:"checkbox"},null,512),[[yt,o.value]]),v[30]||(v[30]=T("span",{class:"pivot-switch-ui"},null,-1))],8,M5)])):xe("",!0),h.value&&o.value?(z(),At(Ty,{key:3,"preview-url":r.value,"anchor-x":i.resource.anchorX??.5,"anchor-y":i.resource.anchorY??.5,"onUpdate:anchorX":v[11]||(v[11]=w=>i.resource.anchorX=w),"onUpdate:anchorY":v[12]||(v[12]=w=>i.resource.anchorY=w),onFullscreen:f},null,8,["preview-url","anchor-x","anchor-y"])):xe("",!0)]),(z(),At(qM,{to:"body"},[a.value?(z(),J("div",{key:0,class:"pivot-modal-backdrop",onPointerdown:v[18]||(v[18]=Ke(w=>p(!1),["self"]))},[T("div",T5,[T("div",_5,[v[34]||(v[34]=T("div",{class:"pivot-modal-icon"},"◎",-1)),T("div",C5,[T("div",A5,[v[32]||(v[32]=gt(" 贴图旋转轴点大图精修 ",-1)),T("span",E5,ye(i.resource.textureName||i.defaultFile),1)]),v[33]||(v[33]=T("div",{class:"pivot-modal-desc"},"在下方贴图上任意点击或拖拽,精确设置粒子的旋转/摆动中心",-1))]),T("button",{type:"button",class:"pivot-modal-close",title:"关闭",onClick:v[13]||(v[13]=w=>p(!1))},"✕")]),v[35]||(v[35]=T("div",{class:"pivot-modal-hint"},"支持 100% ~ 400% 放大,精确对准尖端或根部:",-1)),be(Ty,{large:"","preview-url":r.value,"anchor-x":l.value,"anchor-y":c.value,"onUpdate:anchorX":v[14]||(v[14]=w=>l.value=w),"onUpdate:anchorY":v[15]||(v[15]=w=>c.value=w)},null,8,["preview-url","anchor-x","anchor-y"]),T("div",I5,[T("button",{type:"button",class:"pivot-modal-cancel",onClick:v[16]||(v[16]=w=>p(!1))},"取消"),T("button",{type:"button",class:"pivot-modal-confirm",onClick:v[17]||(v[17]=w=>p(!0))},"确定并保存轴点")])])],32)):xe("",!0)]))],64))}}),US=Jt(R5,[["__scopeId","data-v-1622bd56"]]),P5={class:"group"},k5={class:"caret"},F5={class:"group-body"},O5={class:"seg"},L5={class:"row"},B5={class:"curve-wrap"},N5={class:"seg"},D5={class:"row"},U5=["value"],$5={value:0},X5=["value"],V5={class:"render-layer-current"},Y5=["title"],G5={key:0,class:"slot-picker"},j5={class:"slot-list"},H5=["onClick"],W5={class:"slot-order"},z5={class:"slot-name"},q5={class:"slot-attachment"},K5={key:0,class:"modifier-hint"},Z5={class:"seg"},J5={class:"switch-row render-layer-switch"},Q5=["disabled"],e8={key:0,class:"modifier-hint"},t8={key:2,class:"modifier-hint render-layer-warning"},s8={class:"look-title image-title"},i8={class:"row resource-color-row"},n8=["onUpdate:modelValue"],r8=["onUpdate:modelValue"],o8={key:0,class:"row resource-color-picker"},a8=["onUpdate:modelValue"],l8=["value","onChange","onKeydown"],c8={key:0,class:"random-color-hint"},h8={class:"resource-alpha-head"},u8={class:"alpha-modes"},d8=["onClick"],f8=["onClick"],m8=["onClick"],p8={class:"row"},g8=["onUpdate:modelValue"],v8={class:"resource-alpha-curve"},y8=Zt({__name:"ParticleAppearanceSection",setup(i){const{resolvedCurveEditorMode:e,sys:t,textureFileInput:s,sequenceFileInput:n,addImageResource:r,openTexturePicker:o,openSequencePicker:a,onTextureFile:l,onSequenceFiles:c,resetTexture:h,setResourceFixedColor:u,commitResourceFixedColor:d,removeImageResource:f,setResourceWeight:p,toggleResourceLock:m,collapsed:g,toggle:y,resetModule:x,select:v,renderLayerSlotPickerOpen:w,renderLayerSlotSearch:_,renderLayerReadySpines:S,renderLayerSpineReady:b,renderLayerFilteredSlots:A,renderLayerSlotLabel:P,renderLayerResolvedLabel:F,renderLayerWarning:E,setRenderLayerSlotMode:k,selectRenderLayerSpine:B,pickRenderLayerSlot:D,clearRenderLayerSlot:X,ALPHA_CURVE:N,RESOURCE_ALPHA_CURVE:U}=Ar();return(C,R)=>(z(),J("div",P5,[T("div",{class:"group-head",onClick:R[1]||(R[1]=O=>I(y)("look"))},[T("span",k5,ye(I(g).look?"▸":"▾"),1),R[19]||(R[19]=T("span",null,"外观与资源",-1)),T("button",{class:"group-reset",title:"重置外观与资源参数",onClick:R[0]||(R[0]=Ke(O=>I(x)("look"),["stop"]))},"重置")]),ce(T("div",F5,[R[36]||(R[36]=T("div",{class:"look-title"},"透明度",-1)),T("div",O5,[T("button",{class:Ae(["seg-btn",{active:I(t).config.alphaMode==="curve"}]),onClick:R[2]||(R[2]=O=>I(t).config.alphaMode="curve")},"曲线",2),T("button",{class:Ae(["seg-btn",{active:I(t).config.alphaMode==="fixed"}]),onClick:R[3]||(R[3]=O=>I(t).config.alphaMode="fixed")},"固定",2)]),I(t).config.alphaMode==="fixed"?(z(),At(Oe,{key:0,label:"透明度",min:0,max:1,step:.01,modelValue:I(t).config.alpha,"onUpdate:modelValue":R[4]||(R[4]=O=>I(t).config.alpha=O)},null,8,["modelValue"])):(z(),J(Ce,{key:1},[T("label",L5,[R[21]||(R[21]=T("span",null,"曲线模式",-1)),ce(T("select",{"onUpdate:modelValue":R[5]||(R[5]=O=>I(t).config.curveMode=O),class:"inp"},[...R[20]||(R[20]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[_t,I(t).config.curveMode]])]),T("div",B5,[be(Ji,{modelValue:I(t).config.alphaCurve,"onUpdate:modelValue":R[6]||(R[6]=O=>I(t).config.alphaCurve=O),"default-value":I(N),mode:I(e)(I(t).config.curveMode)},null,8,["modelValue","default-value","mode"]),R[22]||(R[22]=T("div",{class:"curve-labels"},[T("span",null,"0(透明)"),T("span",null,"生命周期 →"),T("span",null,"1(不透明)")],-1))])],64)),R[37]||(R[37]=T("div",{class:"look-title"},"渲染层级(Spine 插槽)",-1)),T("div",N5,[T("button",{class:Ae(["seg-btn",{active:I(t).config.renderLayerMode==="top"}]),onClick:R[7]||(R[7]=O=>I(t).config.renderLayerMode="top")},"最上层",2),T("button",{class:Ae(["seg-btn",{active:I(t).config.renderLayerMode==="slot"}]),onClick:R[8]||(R[8]=(...O)=>I(k)&&I(k)(...O))},"Spine 插槽",2)]),I(t).config.renderLayerMode==="slot"?(z(),J(Ce,{key:2},[T("label",D5,[R[23]||(R[23]=T("span",null,"Spine",-1)),T("select",{class:"inp",value:I(t).config.renderLayerSpineId,onChange:R[9]||(R[9]=(...O)=>I(B)&&I(B)(...O))},[T("option",$5,ye(I(S).length?"请选择 Spine":"无可用 Spine"),1),(z(!0),J(Ce,null,Ft(I(S),O=>(z(),J("option",{key:O.id,value:O.id},ye(O.name),9,X5))),128))],40,U5)]),I(b)?(z(),J(Ce,{key:0},[T("div",V5,[T("span",{class:"render-layer-text",title:I(P)},ye(I(P)||"尚未选择插槽"),9,Y5),T("button",{class:"mini-btn",onClick:R[10]||(R[10]=O=>w.value=!I(w))},ye(I(P)?"重新选择":"选择插槽"),1),I(t).config.renderLayerSlotName?(z(),J("button",{key:0,class:"mini-btn ghost",onClick:R[11]||(R[11]=(...O)=>I(X)&&I(X)(...O))},"清除")):xe("",!0)]),I(w)?(z(),J("div",G5,[ce(T("input",{"onUpdate:modelValue":R[12]||(R[12]=O=>Gt(_)?_.value=O:null),class:"inp",type:"search",placeholder:"搜索插槽或附件名称…","aria-label":"搜索插槽"},null,512),[[je,I(_),void 0,{trim:!0}]]),T("div",j5,[(z(!0),J(Ce,null,Ft(I(A),O=>(z(),J("button",{key:O.name,class:Ae(["slot-item",{on:I(t).config.renderLayerSlotName===O.name}]),onClick:L=>I(D)(O)},[T("span",W5,ye(O.order+1),1),T("span",z5,ye(O.name),1),T("span",q5,ye(O.attachment||"空插槽"),1)],10,H5))),128)),I(A).length?xe("",!0):(z(),J("div",K5,"没有匹配的插槽"))])])):xe("",!0),I(t).config.renderLayerSlotName?(z(),J(Ce,{key:1},[T("div",Z5,[T("button",{class:Ae(["seg-btn",{active:I(t).config.renderLayerSlotPosition==="above"}]),onClick:R[13]||(R[13]=O=>I(t).config.renderLayerSlotPosition="above")},"在此插槽图片之上",2),T("button",{class:Ae(["seg-btn",{active:I(t).config.renderLayerSlotPosition==="below"}]),onClick:R[14]||(R[14]=O=>I(t).config.renderLayerSlotPosition="below")},"在此插槽图片之下",2)]),T("label",J5,[ce(T("input",{"onUpdate:modelValue":R[15]||(R[15]=O=>I(t).config.renderLayerFollowAttachment=O),type:"checkbox",disabled:I(t).config.renderLayerSlotPosition==="below"},null,8,Q5),[[yt,I(t).config.renderLayerFollowAttachment]]),R[24]||(R[24]=T("span",{class:"switch-ui"},null,-1)),R[25]||(R[25]=T("span",null,"随插槽附件显隐",-1))]),I(F)?(z(),J("div",e8,ye(I(F)),1)):xe("",!0)],64)):xe("",!0),I(E)?(z(),J("div",t8,ye(I(E)),1)):xe("",!0),R[26]||(R[26]=T("div",{class:"modifier-hint"},"调整显示层级只影响编辑器预览,不影响导出数据。",-1))],64)):xe("",!0)],64)):xe("",!0),T("div",s8,[R[27]||(R[27]=T("span",null,"图片资源",-1)),T("button",{class:"image-add",title:"新增图片资源",onClick:R[16]||(R[16]=(...O)=>I(r)&&I(r)(...O))},"+")]),(z(!0),J(Ce,null,Ft(I(t).config.imageResources,O=>(z(),At(US,{key:O.id,resource:O,"resource-count":I(t).config.imageResources.length,"supports-sequence":"","default-file":"star.png",onPick:I(o),onPickSequence:I(a),onReset:I(h),onRemove:I(f),onUpdateWeight:I(p),onToggleLock:I(m)},{default:qh(()=>[be(Oe,{label:"缩放",min:.1,max:3,step:.05,modelValue:O.scale,"onUpdate:modelValue":L=>O.scale=L},null,8,["modelValue","onUpdate:modelValue"]),R[35]||(R[35]=T("div",{class:"resource-divider"},null,-1)),T("label",i8,[R[30]||(R[30]=T("span",null,"颜色",-1)),ce(T("select",{"onUpdate:modelValue":L=>O.colorMode=L,class:"inp"},[...R[28]||(R[28]=[T("option",{value:"fixed"},"固定色",-1),T("option",{value:"random"},"随机颜色",-1),T("option",{value:"lifetime"},"生命周期",-1)])],8,n8),[[_t,O.colorMode]]),ce(T("select",{"onUpdate:modelValue":L=>O.blend=L,class:"inp blend-select"},[...R[29]||(R[29]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,r8),[[_t,O.blend]])]),O.colorMode==="fixed"?(z(),J("label",o8,[R[31]||(R[31]=T("span",null,"固定色",-1)),ce(T("input",{type:"color","onUpdate:modelValue":L=>O.colorStart=L,class:"colr"},null,8,a8),[[je,O.colorStart]]),T("input",{type:"text",class:"hex-input",value:O.colorStart,spellcheck:"false","aria-label":"固定颜色值",onChange:L=>I(u)(O,L),onKeydown:yr(L=>I(d)(O,L),["enter"])},null,40,l8)])):(z(),J(Ce,{key:1},[be(DS,{modelValue:O.colorGradient,"onUpdate:modelValue":L=>O.colorGradient=L},null,8,["modelValue","onUpdate:modelValue"]),O.colorMode==="random"?(z(),J("div",c8,"每个粒子出生时从色带随机取色,生命周期内保持不变")):xe("",!0)],64)),T("div",h8,[R[32]||(R[32]=T("span",null,"独立透明度",-1)),T("div",u8,[T("button",{class:Ae({on:O.independentAlpha==="off"}),onClick:L=>O.independentAlpha="off"},"关闭",10,d8),T("button",{class:Ae({on:O.independentAlpha==="fixed"}),onClick:L=>O.independentAlpha="fixed"},"固定",10,f8),T("button",{class:Ae({on:O.independentAlpha==="curve"}),onClick:L=>O.independentAlpha="curve"},"曲线",10,m8)])]),O.independentAlpha==="fixed"?(z(),At(Oe,{key:2,label:"透明度",min:0,max:1,step:.01,modelValue:O.alpha,"onUpdate:modelValue":L=>O.alpha=L},null,8,["modelValue","onUpdate:modelValue"])):O.independentAlpha==="curve"?(z(),J(Ce,{key:3},[T("label",p8,[R[34]||(R[34]=T("span",null,"曲线模式",-1)),ce(T("select",{"onUpdate:modelValue":L=>O.alphaCurveMode=L,class:"inp"},[...R[33]||(R[33]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],8,g8),[[_t,O.alphaCurveMode]])]),T("div",v8,[be(Ji,{modelValue:O.alphaCurve,"onUpdate:modelValue":L=>O.alphaCurve=L,"default-value":I(U),mode:I(e)(O.alphaCurveMode)},null,8,["modelValue","onUpdate:modelValue","default-value","mode"])])],64)):xe("",!0)]),_:2},1032,["resource","resource-count","onPick","onPickSequence","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"textureFileInput",ref:s,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:R[17]||(R[17]=(...O)=>I(l)&&I(l)(...O))},null,544),T("input",{ref_key:"sequenceFileInput",ref:n,class:"file-input",type:"file",multiple:"",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:R[18]||(R[18]=(...O)=>I(c)&&I(c)(...O))},null,544)],512),[[ws,!I(g).look]])]))}}),x8=Jt(y8,[["__scopeId","data-v-26210049"]]),b8={class:"group"},w8={class:"caret"},S8={class:"group-body"},M8={class:"modifier-item"},T8={class:"switch-row modifier-switch"},_8={key:0,class:"modifier-params"},C8={class:"modifier-item"},A8={class:"switch-row modifier-switch"},E8={key:0,class:"modifier-params gravity-params"},I8={class:"modifier-mode-row"},R8={class:"modifier-item"},P8={class:"switch-row modifier-switch"},k8={key:0,class:"modifier-params gravity-params"},F8={class:"modifier-mode-row"},O8={class:"modifier-item"},L8={class:"switch-row modifier-switch"},B8={key:0,class:"modifier-params"},N8={class:"row"},D8={class:"switch-row"},U8={class:"modifier-item"},$8={class:"switch-row modifier-switch"},X8={key:0,class:"modifier-params"},V8={class:"row"},Y8={class:"switch-row"},G8={class:"modifier-item"},j8={class:"switch-row modifier-switch"},H8={key:0,class:"modifier-params"},W8={class:"row"},z8={class:"row"},q8={class:"switch-row"},K8={class:"modifier-item"},Z8={class:"switch-row modifier-switch"},J8={key:0,class:"modifier-params trail-params"},Q8={class:"trail-section-head"},eU={class:"row"},tU=["onUpdate:modelValue"],sU={class:"row"},iU=["onUpdate:modelValue"],nU={class:"row"},rU=["onUpdate:modelValue"],oU={class:"switch-row trail-sub-switch"},aU=["onUpdate:modelValue"],lU={class:"switch-row trail-sub-switch"},cU=["onUpdate:modelValue"],hU={class:"trail-mode-head"},uU={class:"alpha-modes"},dU=["onClick"],fU=["onClick"],mU=["onClick"],pU={class:"row"},gU=["onUpdate:modelValue"],vU={key:6,class:"row trail-fixed-color"},yU=["onUpdate:modelValue"],xU=["value","onChange","onKeydown"],bU={class:"trail-mode-head"},wU={class:"alpha-modes"},SU=["onClick"],MU=["onClick"],TU=["onClick"],_U={class:"trail-grid-row"},CU={class:"modifier-item"},AU={class:"switch-row modifier-switch"},EU=["disabled"],IU={key:0,class:"modifier-params emitter-follow-params"},RU={class:"field-block"},PU=["value"],kU={key:0,value:"bone"},FU={class:"field-block"},OU=["value"],LU={class:"field-block"},BU={class:"field-grid follow-grid"},NU={class:"compact-field"},DU={class:"compact-field"},UU={class:"field-block"},$U={key:0,class:"bone-follow-target"},XU={key:1,class:"bone-follow-missing"},VU={class:"field-block"},YU={class:"field-grid follow-grid"},GU={class:"compact-field"},jU={class:"compact-field"},HU={class:"bone-follow-transform-grid"},WU={class:"compact-field"},zU={class:"compact-field"},qU={class:"compact-field"},KU={class:"modifier-item"},ZU={class:"switch-row modifier-switch"},JU={key:0,class:"modifier-params collision-filter-params"},QU={class:"collision-filter-tags"},e$=["title"],t$=["aria-label","onClick"],s$=["disabled","title"],i$={key:0,class:"collision-filter-empty"},n$={key:1,class:"collision-filter-picker"},r$=["onClick"],o$=Zt({__name:"ParticleModifiersSection",setup(i){const{store:e,sys:t,trailTextureFileInput:s,addTrailResource:n,openTrailTexturePicker:r,onTrailRigChange:o,onTrailResourceBoneCountChange:a,onTrailResourceRotationChange:l,onTrailTextureFile:c,resetTrailTexture:h,removeTrailResource:u,setTrailResourceWeight:d,toggleTrailResourceLock:f,setTrailColor:p,commitTrailColor:m,selectedSpineBone:g,boundSpineBone:y,collisionPickerOpen:x,selectedCollisionBodies:v,availableCollisionBodies:w,addCollisionBody:_,removeCollisionBody:S,collapsed:b,toggle:A,onEmitterFollowModeChange:P,bindSelectedBone:F,resetModule:E,select:k,LINEAR_CURVE:B,FLAT_CURVE:D,TRAIL_ALPHA_CURVE:X,TRAIL_SHAPE_CURVE:N}=Ar();return(U,C)=>(z(),J("div",b8,[T("div",{class:"group-head",onClick:C[1]||(C[1]=R=>I(A)("mods"))},[T("span",w8,ye(I(b).mods?"▸":"▾"),1),C[69]||(C[69]=T("span",null,"修改器",-1)),T("button",{class:"group-reset",title:"重置修改器参数",onClick:C[0]||(C[0]=Ke(R=>I(E)("mods"),["stop"]))},"重置")]),ce(T("div",S8,[T("div",M8,[T("label",T8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[2]||(C[2]=R=>I(t).config.noise=R)},null,512),[[yt,I(t).config.noise]]),C[70]||(C[70]=T("span",{class:"switch-ui"},null,-1)),C[71]||(C[71]=T("span",null,"开启移动噪声",-1))]),I(t).config.noise?(z(),J("div",_8,[be(Oe,{label:"强度",min:0,max:100,step:1,modelValue:I(t).config.noiseAmt,"onUpdate:modelValue":C[3]||(C[3]=R=>I(t).config.noiseAmt=R)},null,8,["modelValue"]),be(Oe,{label:"波动范围",min:0,max:500,step:1,modelValue:I(t).config.noiseRange,"onUpdate:modelValue":C[4]||(C[4]=R=>I(t).config.noiseRange=R)},null,8,["modelValue"]),be(Oe,{label:"时间流速",min:0,max:10,step:.1,modelValue:I(t).config.noiseSpeed,"onUpdate:modelValue":C[5]||(C[5]=R=>I(t).config.noiseSpeed=R)},null,8,["modelValue"]),C[72]||(C[72]=T("div",{class:"modifier-hint"},"强度控制影响比例 · 波动范围控制最大偏移 · 时间流速控制变化速度",-1))])):xe("",!0)]),T("div",C8,[T("label",A8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[6]||(C[6]=R=>I(t).config.useGravity=R)},null,512),[[yt,I(t).config.useGravity]]),C[73]||(C[73]=T("span",{class:"switch-ui"},null,-1)),C[74]||(C[74]=T("span",null,"开启重力",-1))]),I(t).config.useGravity?(z(),J("div",E8,[T("div",I8,[T("button",{class:Ae(["axis-mode",{on:I(t).config.gravityMode==="fixed"}]),onClick:C[7]||(C[7]=R=>I(t).config.gravityMode="fixed")},"固定",2),T("button",{class:Ae(["axis-mode",{on:I(t).config.gravityMode==="random"}]),onClick:C[8]||(C[8]=R=>I(t).config.gravityMode="random")},"随机",2)]),I(t).config.gravityMode==="fixed"?(z(),At(Oe,{key:0,label:"重力强度",min:-3e3,max:3e3,step:10,modelValue:I(t).config.gravityMin,"onUpdate:modelValue":C[9]||(C[9]=R=>I(t).config.gravityMin=R)},null,8,["modelValue"])):(z(),J(Ce,{key:1},[be(Oe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:I(t).config.gravityMin,"onUpdate:modelValue":C[10]||(C[10]=R=>I(t).config.gravityMin=R)},null,8,["modelValue"]),be(Oe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:I(t).config.gravityMax,"onUpdate:modelValue":C[11]||(C[11]=R=>I(t).config.gravityMax=R)},null,8,["modelValue"])],64)),be(Oe,{label:"方向",min:-360,max:360,step:1,modelValue:I(t).config.gravityDirection,"onUpdate:modelValue":C[12]||(C[12]=R=>I(t).config.gravityDirection=R)},null,8,["modelValue"]),C[75]||(C[75]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内重力"),T("span",null,"纵轴:强度 0~1")],-1)),be(Ji,{modelValue:I(t).config.gravityCurve,"onUpdate:modelValue":C[13]||(C[13]=R=>I(t).config.gravityCurve=R),"default-value":I(D)},null,8,["modelValue","default-value"]),C[76]||(C[76]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),C[77]||(C[77]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):xe("",!0)]),T("div",R8,[T("label",P8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[14]||(C[14]=R=>I(t).config.wind=R)},null,512),[[yt,I(t).config.wind]]),C[78]||(C[78]=T("span",{class:"switch-ui"},null,-1)),C[79]||(C[79]=T("span",null,"开启风力",-1))]),I(t).config.wind?(z(),J("div",k8,[T("div",F8,[T("button",{class:Ae(["axis-mode",{on:I(t).config.windMode==="fixed"}]),onClick:C[15]||(C[15]=R=>I(t).config.windMode="fixed")},"固定",2),T("button",{class:Ae(["axis-mode",{on:I(t).config.windMode==="random"}]),onClick:C[16]||(C[16]=R=>I(t).config.windMode="random")},"随机",2)]),I(t).config.windMode==="fixed"?(z(),At(Oe,{key:0,label:"风力强度",min:-3e3,max:3e3,step:10,modelValue:I(t).config.windMin,"onUpdate:modelValue":C[17]||(C[17]=R=>I(t).config.windMin=R)},null,8,["modelValue"])):(z(),J(Ce,{key:1},[be(Oe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:I(t).config.windMin,"onUpdate:modelValue":C[18]||(C[18]=R=>I(t).config.windMin=R)},null,8,["modelValue"]),be(Oe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:I(t).config.windMax,"onUpdate:modelValue":C[19]||(C[19]=R=>I(t).config.windMax=R)},null,8,["modelValue"])],64)),be(Oe,{label:"方向",min:-360,max:360,step:1,modelValue:I(t).config.windDirection,"onUpdate:modelValue":C[20]||(C[20]=R=>I(t).config.windDirection=R)},null,8,["modelValue"]),C[80]||(C[80]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内风力"),T("span",null,"纵轴:强度 0~1")],-1)),be(Ji,{modelValue:I(t).config.windCurve,"onUpdate:modelValue":C[21]||(C[21]=R=>I(t).config.windCurve=R),"default-value":I(D)},null,8,["modelValue","default-value"]),C[81]||(C[81]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),C[82]||(C[82]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):xe("",!0)]),T("div",O8,[T("label",L8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[22]||(C[22]=R=>I(t).config.forceField=R)},null,512),[[yt,I(t).config.forceField]]),C[83]||(C[83]=T("span",{class:"switch-ui"},null,-1)),C[84]||(C[84]=T("span",null,"开启力场",-1))]),I(t).config.forceField?(z(),J("div",B8,[be(Oe,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:I(t).config.forceCenterX,"onUpdate:modelValue":C[23]||(C[23]=R=>I(t).config.forceCenterX=R)},null,8,["modelValue"]),be(Oe,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:I(t).config.forceCenterY,"onUpdate:modelValue":C[24]||(C[24]=R=>I(t).config.forceCenterY=R)},null,8,["modelValue"]),be(Oe,{label:"力场强度",min:-300,max:300,step:1,modelValue:I(t).config.forceStrength,"onUpdate:modelValue":C[25]||(C[25]=R=>I(t).config.forceStrength=R)},null,8,["modelValue"]),be(Oe,{label:"力场半径",min:1,max:2e3,step:1,modelValue:I(t).config.forceRadius,"onUpdate:modelValue":C[26]||(C[26]=R=>I(t).config.forceRadius=R)},null,8,["modelValue"]),T("label",N8,[C[86]||(C[86]=T("span",null,"衰减模式",-1)),ce(T("select",{"onUpdate:modelValue":C[27]||(C[27]=R=>I(t).config.forceFalloff=R),class:"inp"},[...C[85]||(C[85]=[T("option",{value:"constant"},"恒定(范围内力度不变)",-1),T("option",{value:"linear"},"线性衰减(边缘为 0)",-1),T("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[_t,I(t).config.forceFalloff]])]),C[89]||(C[89]=T("div",{class:"modifier-hint"},"正数吸向中心 · 负数向外排斥 · 可在画布内拖动力场圆",-1)),T("label",D8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[28]||(C[28]=R=>I(t).config.showForceFieldShape=R)},null,512),[[yt,I(t).config.showForceFieldShape]]),C[87]||(C[87]=T("span",{class:"switch-ui"},null,-1)),C[88]||(C[88]=T("span",null,"显示形状",-1))])])):xe("",!0)]),T("div",U8,[T("label",$8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[29]||(C[29]=R=>I(t).config.vortex=R)},null,512),[[yt,I(t).config.vortex]]),C[90]||(C[90]=T("span",{class:"switch-ui"},null,-1)),C[91]||(C[91]=T("span",null,"开启漩涡",-1))]),I(t).config.vortex?(z(),J("div",X8,[be(Oe,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:I(t).config.vortexCenterX,"onUpdate:modelValue":C[30]||(C[30]=R=>I(t).config.vortexCenterX=R)},null,8,["modelValue"]),be(Oe,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:I(t).config.vortexCenterY,"onUpdate:modelValue":C[31]||(C[31]=R=>I(t).config.vortexCenterY=R)},null,8,["modelValue"]),be(Oe,{label:"力场强度",min:-300,max:300,step:1,modelValue:I(t).config.vortexStrength,"onUpdate:modelValue":C[32]||(C[32]=R=>I(t).config.vortexStrength=R)},null,8,["modelValue"]),be(Oe,{label:"力场半径",min:1,max:2e3,step:1,modelValue:I(t).config.vortexRadius,"onUpdate:modelValue":C[33]||(C[33]=R=>I(t).config.vortexRadius=R)},null,8,["modelValue"]),T("label",V8,[C[93]||(C[93]=T("span",null,"衰减模式",-1)),ce(T("select",{"onUpdate:modelValue":C[34]||(C[34]=R=>I(t).config.vortexFalloff=R),class:"inp"},[...C[92]||(C[92]=[T("option",{value:"constant"},"恒定(范围内力度不变)",-1),T("option",{value:"linear"},"线性衰减(边缘为 0)",-1),T("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[_t,I(t).config.vortexFalloff]])]),C[96]||(C[96]=T("div",{class:"modifier-hint"},"正数逆时针 · 负数顺时针",-1)),T("label",Y8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[35]||(C[35]=R=>I(t).config.showVortexShape=R)},null,512),[[yt,I(t).config.showVortexShape]]),C[94]||(C[94]=T("span",{class:"switch-ui"},null,-1)),C[95]||(C[95]=T("span",null,"显示形状",-1))])])):xe("",!0)]),T("div",G8,[T("label",j8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[36]||(C[36]=R=>I(t).config.attraction=R)},null,512),[[yt,I(t).config.attraction]]),C[97]||(C[97]=T("span",{class:"switch-ui"},null,-1)),C[98]||(C[98]=T("span",null,"开启吸附",-1))]),I(t).config.attraction?(z(),J("div",H8,[be(Oe,{label:"吸附点 X",min:-5e3,max:5e3,step:1,modelValue:I(t).config.attractionCenterX,"onUpdate:modelValue":C[37]||(C[37]=R=>I(t).config.attractionCenterX=R)},null,8,["modelValue"]),be(Oe,{label:"吸附点 Y",min:-5e3,max:5e3,step:1,modelValue:I(t).config.attractionCenterY,"onUpdate:modelValue":C[38]||(C[38]=R=>I(t).config.attractionCenterY=R)},null,8,["modelValue"]),be(Oe,{label:"吸附半径",min:0,max:2e3,step:1,modelValue:I(t).config.attractionRadius,"onUpdate:modelValue":C[39]||(C[39]=R=>I(t).config.attractionRadius=R)},null,8,["modelValue"]),be(Oe,{label:"吸附时长",min:.05,max:30,step:.05,modelValue:I(t).config.attractionDuration,"onUpdate:modelValue":C[40]||(C[40]=R=>I(t).config.attractionDuration=R)},null,8,["modelValue"]),be(Oe,{label:"延迟时间",min:0,max:30,step:.05,modelValue:I(t).config.attractionDelay,"onUpdate:modelValue":C[41]||(C[41]=R=>I(t).config.attractionDelay=R)},null,8,["modelValue"]),T("label",W8,[C[100]||(C[100]=T("span",null,"延迟方式",-1)),ce(T("select",{"onUpdate:modelValue":C[42]||(C[42]=R=>I(t).config.attractionDelayMode=R),class:"inp"},[...C[99]||(C[99]=[T("option",{value:"global"},"统一时间",-1),T("option",{value:"particle"},"单粒子生命",-1)])],512),[[_t,I(t).config.attractionDelayMode]])]),T("label",z8,[C[102]||(C[102]=T("span",null,"吸附方式",-1)),ce(T("select",{"onUpdate:modelValue":C[43]||(C[43]=R=>I(t).config.attractionPath=R),class:"inp"},[...C[101]||(C[101]=[T("option",{value:"linear"},"直线",-1),T("option",{value:"curve"},"曲线",-1)])],512),[[_t,I(t).config.attractionPath]])]),C[105]||(C[105]=T("div",{class:"modifier-hint"},"延迟后从当前位置开始吸附 · 到达红色范围即死亡 · 可在画布内拖动吸附圆",-1)),T("label",q8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[44]||(C[44]=R=>I(t).config.showAttractionShape=R)},null,512),[[yt,I(t).config.showAttractionShape]]),C[103]||(C[103]=T("span",{class:"switch-ui"},null,-1)),C[104]||(C[104]=T("span",null,"显示形状",-1))])])):xe("",!0)]),T("div",K8,[T("label",Z8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[45]||(C[45]=R=>I(t).config.trail=R)},null,512),[[yt,I(t).config.trail]]),C[106]||(C[106]=T("span",{class:"switch-ui"},null,-1)),C[107]||(C[107]=T("span",null,"开启拖尾",-1))]),I(t).config.trail?(z(),J("div",J8,[T("div",Q8,[C[108]||(C[108]=T("div",{class:"trail-section-title"},"拖尾独立图片",-1)),T("button",{class:"image-add",title:"增加拖尾图片资源",onClick:C[46]||(C[46]=(...R)=>I(n)&&I(n)(...R))},"+")]),(z(!0),J(Ce,null,Ft(I(t).config.trailResources,R=>(z(),At(US,{key:R.id,resource:R,"resource-count":I(t).config.trailResources.length,"default-file":"trail.png","name-placeholder":"trail","show-folder":!1,onPick:I(r),onReset:I(h),onRemove:I(u),onUpdateWeight:I(d),onToggleLock:I(f)},{default:qh(()=>[C[124]||(C[124]=T("div",{class:"resource-divider"},null,-1)),be(Oe,{label:"旋转",min:-360,max:360,step:1,"model-value":R.rotation,"onUpdate:modelValue":O=>I(l)(R.id,O)},null,8,["model-value","onUpdate:modelValue"]),be(Oe,{label:"拖尾骨骼数",min:2,max:16,step:1,"model-value":R.boneCount,"onUpdate:modelValue":O=>I(a)(R.id,O)},null,8,["model-value","onUpdate:modelValue"]),be(Oe,{label:"拖尾比例 (%)",min:0,max:100,step:1,modelValue:R.trailRatio,"onUpdate:modelValue":O=>R.trailRatio=O},null,8,["modelValue","onUpdate:modelValue"]),T("label",eU,[C[110]||(C[110]=T("span",null,"拖尾长度",-1)),ce(T("select",{"onUpdate:modelValue":O=>R.lengthMode=O,class:"inp"},[...C[109]||(C[109]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,tU),[[_t,R.lengthMode]])]),R.lengthMode==="fixed"?(z(),At(Oe,{key:0,label:"长度比例 (%)",min:0,max:500,step:1,modelValue:R.length,"onUpdate:modelValue":O=>R.length=O},null,8,["modelValue","onUpdate:modelValue"])):(z(),J(Ce,{key:1},[be(Oe,{label:"长度最小 (%)",min:0,max:500,step:1,modelValue:R.lengthMin,"onUpdate:modelValue":O=>R.lengthMin=O},null,8,["modelValue","onUpdate:modelValue"]),be(Oe,{label:"长度最大 (%)",min:0,max:500,step:1,modelValue:R.lengthMax,"onUpdate:modelValue":O=>R.lengthMax=O},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",sU,[C[112]||(C[112]=T("span",null,"拖尾宽度",-1)),ce(T("select",{"onUpdate:modelValue":O=>R.widthSizeMode=O,class:"inp"},[...C[111]||(C[111]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,iU),[[_t,R.widthSizeMode]])]),R.widthSizeMode==="fixed"?(z(),At(Oe,{key:2,label:"宽度比例 (%)",min:0,max:500,step:1,modelValue:R.width,"onUpdate:modelValue":O=>R.width=O},null,8,["modelValue","onUpdate:modelValue"])):(z(),J(Ce,{key:3},[be(Oe,{label:"宽度最小 (%)",min:0,max:500,step:1,modelValue:R.widthMin,"onUpdate:modelValue":O=>R.widthMin=O},null,8,["modelValue","onUpdate:modelValue"]),be(Oe,{label:"宽度最大 (%)",min:0,max:500,step:1,modelValue:R.widthMax,"onUpdate:modelValue":O=>R.widthMax=O},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",nU,[C[114]||(C[114]=T("span",null,"宽度缩放",-1)),ce(T("select",{"onUpdate:modelValue":O=>R.widthMode=O,class:"inp"},[...C[113]||(C[113]=[T("option",{value:"particle"},"跟随粒子",-1),T("option",{value:"fixed"},"固定",-1)])],8,rU),[[_t,R.widthMode]])]),T("label",oU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":O=>R.lifeLengthEnabled=O},null,8,aU),[[yt,R.lifeLengthEnabled]]),C[115]||(C[115]=T("span",{class:"switch-ui"},null,-1)),C[116]||(C[116]=T("span",null,"生命周期长度曲线",-1))]),R.lifeLengthEnabled?(z(),At(Ji,{key:4,modelValue:R.lifeLengthCurve,"onUpdate:modelValue":O=>R.lifeLengthCurve=O,"default-value":I(D)},null,8,["modelValue","onUpdate:modelValue","default-value"])):xe("",!0),T("label",lU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":O=>R.shapeEnabled=O},null,8,cU),[[yt,R.shapeEnabled]]),C[117]||(C[117]=T("span",{class:"switch-ui"},null,-1)),C[118]||(C[118]=T("span",null,"形状曲线(首端 → 尾端宽度)",-1))]),R.shapeEnabled?(z(),At(Ji,{key:5,modelValue:R.shapeCurve,"onUpdate:modelValue":O=>R.shapeCurve=O,"default-value":I(N)},null,8,["modelValue","onUpdate:modelValue","default-value"])):xe("",!0),T("div",hU,[C[119]||(C[119]=T("span",null,"颜色模式",-1)),T("div",uU,[T("button",{class:Ae(["axis-mode",{on:R.colorMode==="particle"}]),onClick:O=>R.colorMode="particle"},"跟随粒子",10,dU),T("button",{class:Ae(["axis-mode",{on:R.colorMode==="fixed"}]),onClick:O=>R.colorMode="fixed"},"固定",10,fU),T("button",{class:Ae(["axis-mode",{on:R.colorMode==="curve"}]),onClick:O=>R.colorMode="curve"},"曲线",10,mU)])]),T("label",pU,[C[121]||(C[121]=T("span",null,"混合模式",-1)),ce(T("select",{"onUpdate:modelValue":O=>R.blend=O,class:"inp"},[...C[120]||(C[120]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,gU),[[_t,R.blend]])]),R.colorMode==="fixed"?(z(),J("label",vU,[C[122]||(C[122]=T("span",null,"固定颜色",-1)),ce(T("input",{class:"colr",type:"color","onUpdate:modelValue":O=>R.color=O},null,8,yU),[[je,R.color]]),T("input",{class:"hex-input",value:R.color,onChange:O=>I(p)(R,O),onKeydown:yr(Ke(O=>I(m)(R,O),["prevent"]),["enter"])},null,40,xU)])):R.colorMode==="curve"?(z(),At(DS,{key:7,modelValue:R.colorGradient,"onUpdate:modelValue":O=>R.colorGradient=O},null,8,["modelValue","onUpdate:modelValue"])):xe("",!0),T("div",bU,[C[123]||(C[123]=T("span",null,"透明度模式",-1)),T("div",wU,[T("button",{class:Ae(["axis-mode",{on:R.alphaMode==="particle"}]),onClick:O=>R.alphaMode="particle"},"跟随粒子",10,SU),T("button",{class:Ae(["axis-mode",{on:R.alphaMode==="fixed"}]),onClick:O=>R.alphaMode="fixed"},"固定",10,MU),T("button",{class:Ae(["axis-mode",{on:R.alphaMode==="curve"}]),onClick:O=>R.alphaMode="curve"},"曲线",10,TU)])]),R.alphaMode==="fixed"?(z(),At(Oe,{key:8,label:"透明度",min:0,max:1,step:.01,modelValue:R.alpha,"onUpdate:modelValue":O=>R.alpha=O},null,8,["modelValue","onUpdate:modelValue"])):xe("",!0),R.alphaMode==="curve"?(z(),At(Ji,{key:9,modelValue:R.alphaCurve,"onUpdate:modelValue":O=>R.alphaCurve=O,"default-value":I(X)},null,8,["modelValue","onUpdate:modelValue","default-value"])):xe("",!0)]),_:2},1032,["resource","resource-count","onPick","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"trailTextureFileInput",ref:s,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:C[47]||(C[47]=(...R)=>I(c)&&I(c)(...R))},null,544),T("div",_U,[be(Oe,{label:"网格行数",min:2,max:16,step:1,"model-value":I(t).config.trailGridRows,"onUpdate:modelValue":C[48]||(C[48]=R=>I(o)("trailGridRows",R))},null,8,["model-value"]),be(Oe,{label:"网格列数",min:2,max:32,step:1,"model-value":I(t).config.trailGridCols,"onUpdate:modelValue":C[49]||(C[49]=R=>I(o)("trailGridCols",R))},null,8,["model-value"])]),C[125]||(C[125]=T("div",{class:"modifier-hint"},"每个粒子按资源比例生成一组同级拖尾骨骼;随机长度与宽度在粒子出生时确定,相同种子可稳定复现",-1))])):xe("",!0)]),T("div",CU,[T("label",AU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[50]||(C[50]=R=>I(t).config.emitterFollow=R),disabled:I(t).config.streamBehavior==="loop"},null,8,EU),[[yt,I(t).config.emitterFollow]]),C[126]||(C[126]=T("span",{class:"switch-ui"},null,-1)),C[127]||(C[127]=T("span",null,"开启发射器跟随",-1))]),I(t).config.emitterFollow&&I(t).config.streamBehavior!=="loop"?(z(),J("div",IU,[T("label",RU,[C[130]||(C[130]=T("span",null,"跟随模式",-1)),T("select",{value:I(t).config.emitterFollowMode,class:"inp",onChange:C[51]||(C[51]=R=>I(P)(R,I(t).config))},[C[128]||(C[128]=T("option",{value:"none"},"无",-1)),C[129]||(C[129]=T("option",{value:"path"},"跟随路径",-1)),I(g)||I(t).config.emitterFollowMode==="bone"?(z(),J("option",kU,"选中的骨骼")):xe("",!0)],40,PU)]),I(t).config.emitterFollowMode==="path"?(z(),J(Ce,{key:0},[T("label",FU,[C[132]||(C[132]=T("span",null,"跟随路径",-1)),ce(T("select",{"onUpdate:modelValue":C[52]||(C[52]=R=>I(t).config.emitterFollowPathId=R),class:"inp"},[C[131]||(C[131]=T("option",{value:0},"无",-1)),(z(!0),J(Ce,null,Ft(I(e).paths,R=>(z(),J("option",{key:R.id,value:R.id},ye(R.name),9,OU))),128))],512),[[_t,I(t).config.emitterFollowPathId,void 0,{number:!0}]])]),T("label",LU,[C[134]||(C[134]=T("span",null,"发射器角度模式",-1)),ce(T("select",{"onUpdate:modelValue":C[53]||(C[53]=R=>I(t).config.emitterAngleMode=R),class:"inp"},[...C[133]||(C[133]=[T("option",{value:"fixed"},"固定角度",-1),T("option",{value:"direction"},"跟随移动方向",-1)])],512),[[_t,I(t).config.emitterAngleMode]])]),C[140]||(C[140]=T("div",{class:"gravity-curve-title"},[T("span",null,"移动进度曲线 (0→1)")],-1)),be(Ji,{modelValue:I(t).config.emitterFollowCurve,"onUpdate:modelValue":C[54]||(C[54]=R=>I(t).config.emitterFollowCurve=R),"default-value":I(B)},null,8,["modelValue","default-value"]),T("div",BU,[T("label",NU,[C[135]||(C[135]=T("span",null,"移动时长 (s)",-1)),ce(T("input",{"onUpdate:modelValue":C[55]||(C[55]=R=>I(t).config.emitterFollowDuration=R),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,I(t).config.emitterFollowDuration,void 0,{number:!0}]])]),T("label",DU,[C[137]||(C[137]=T("span",null,"跟随空间",-1)),ce(T("select",{"onUpdate:modelValue":C[56]||(C[56]=R=>I(t).config.emitterFollowSpace=R),class:"inp"},[...C[136]||(C[136]=[T("option",{value:"local"},"局部空间(GEN 移动)",-1),T("option",{value:"world"},"世界空间(粒子生成点移动)",-1)])],512),[[_t,I(t).config.emitterFollowSpace]])])]),T("label",UU,[C[139]||(C[139]=T("span",null,"移动方向",-1)),ce(T("select",{"onUpdate:modelValue":C[57]||(C[57]=R=>I(t).config.emitterFollowDirection=R),class:"inp"},[...C[138]||(C[138]=[T("option",{value:"forward"},"正向(起点 → 终点)",-1),T("option",{value:"reverse"},"反向(终点 → 起点)",-1)])],512),[[_t,I(t).config.emitterFollowDirection]])]),be(Oe,{label:"偏移起始点 (0-1)",min:0,max:1,step:.01,modelValue:I(t).config.emitterFollowOffset,"onUpdate:modelValue":C[58]||(C[58]=R=>I(t).config.emitterFollowOffset=R)},null,8,["modelValue"]),C[141]||(C[141]=T("div",{class:"modifier-hint"},"局部空间会移动整个发射器;世界空间只移动新粒子的生成点,已出生粒子留在世界位置。",-1))],64)):I(t).config.emitterFollowMode==="bone"?(z(),J(Ce,{key:1},[I(y)?(z(),J("div",$U,[C[142]||(C[142]=gt("跟随目标:",-1)),T("strong",null,ye(I(y).spine.name)+" / "+ye(I(y).boneName),1)])):(z(),J("div",XU,"尚未绑定有效骨骼,请先在 Spine 层级树中选择骨骼。")),I(g)&&(!I(y)||I(g).spine.id!==I(y).spine.id||I(g).boneName!==I(y).boneName)?(z(),J("button",{key:2,class:"bone-follow-rebind",onClick:C[59]||(C[59]=R=>I(F)(I(t).config))},ye(I(y)?"重新绑定":"绑定")+"当前选中骨骼:"+ye(I(g).spine.name)+" / "+ye(I(g).boneName),1)):xe("",!0),I(y)?(z(),J(Ce,{key:3},[T("label",VU,[C[144]||(C[144]=T("span",null,"跟随空间",-1)),ce(T("select",{"onUpdate:modelValue":C[60]||(C[60]=R=>I(t).config.emitterFollowSpace=R),class:"inp"},[...C[143]||(C[143]=[T("option",{value:"local"},"本地空间(随骨骼移动)",-1),T("option",{value:"world"},"世界空间(粒子生成后保持位置)",-1)])],512),[[_t,I(t).config.emitterFollowSpace]])]),T("div",YU,[T("label",GU,[C[145]||(C[145]=T("span",null,"位移偏移 X",-1)),ce(T("input",{"onUpdate:modelValue":C[61]||(C[61]=R=>I(t).config.emitterFollowBoneOffsetX=R),type:"number",step:"1",class:"inp"},null,512),[[je,I(t).config.emitterFollowBoneOffsetX,void 0,{number:!0}]])]),T("label",jU,[C[146]||(C[146]=T("span",null,"位移偏移 Y",-1)),ce(T("input",{"onUpdate:modelValue":C[62]||(C[62]=R=>I(t).config.emitterFollowBoneOffsetY=R),type:"number",step:"1",class:"inp"},null,512),[[je,I(t).config.emitterFollowBoneOffsetY,void 0,{number:!0}]])])]),T("div",HU,[T("label",WU,[C[147]||(C[147]=T("span",null,"旋转偏移",-1)),ce(T("input",{"onUpdate:modelValue":C[63]||(C[63]=R=>I(t).config.emitterFollowBoneRotation=R),type:"number",step:"1",class:"inp"},null,512),[[je,I(t).config.emitterFollowBoneRotation,void 0,{number:!0}]])]),T("label",zU,[C[148]||(C[148]=T("span",null,"缩放偏移 X",-1)),ce(T("input",{"onUpdate:modelValue":C[64]||(C[64]=R=>I(t).config.emitterFollowBoneScaleX=R),type:"number",step:"0.05",class:"inp"},null,512),[[je,I(t).config.emitterFollowBoneScaleX,void 0,{number:!0}]])]),T("label",qU,[C[149]||(C[149]=T("span",null,"缩放偏移 Y",-1)),ce(T("input",{"onUpdate:modelValue":C[65]||(C[65]=R=>I(t).config.emitterFollowBoneScaleY=R),type:"number",step:"0.05",class:"inp"},null,512),[[je,I(t).config.emitterFollowBoneScaleY,void 0,{number:!0}]])])]),C[150]||(C[150]=T("div",{class:"modifier-hint"},"发射器只跟随所选 Spine 骨骼的位置,不继承 Spine 的旋转或缩放;粒子变换使用粒子系统自身参数和上方偏移。",-1))],64)):xe("",!0)],64)):xe("",!0)])):xe("",!0)]),T("div",KU,[T("label",ZU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":C[66]||(C[66]=R=>I(t).config.collision=R)},null,512),[[yt,I(t).config.collision]]),C[151]||(C[151]=T("span",{class:"switch-ui"},null,-1)),C[152]||(C[152]=T("span",null,"开启碰撞",-1))]),I(t).config.collision?(z(),J("div",JU,[C[153]||(C[153]=T("div",{class:"collision-filter-title"},"参与的碰撞对象",-1)),T("div",QU,[(z(!0),J(Ce,null,Ft(I(v),R=>(z(),J("span",{key:R.id,class:Ae(["collision-filter-tag",{disabled:!R.enabled}]),title:R.enabled?R.name:`${R.name}(碰撞体已禁用)`},[T("span",null,ye(R.name),1),T("button",{type:"button","aria-label":`清除碰撞对象 ${R.name}`,onClick:O=>I(S)(R.id)},"×",8,t$)],10,e$))),128)),T("button",{type:"button",class:Ae(["collision-filter-add",{active:I(x)}]),disabled:I(w).length===0,title:I(w).length?"加入场景碰撞对象":"没有可加入的碰撞对象",onClick:C[67]||(C[67]=R=>x.value=!I(x))},"+",10,s$)]),I(v).length===0?(z(),J("div",i$,"未选择碰撞对象,当前粒子不会发生碰撞")):xe("",!0),I(x)&&I(w).length?(z(),J("div",n$,[(z(!0),J(Ce,null,Ft(I(w),R=>(z(),J("button",{key:R.id,type:"button",onClick:O=>I(_)(R.id)},[T("span",null,ye(R.name),1),T("small",null,ye(R.enabled?"可用":"已禁用"),1)],8,r$))),128))])):xe("",!0),C[154]||(C[154]=T("div",{class:"modifier-hint"},"只有已加入且启用的场景碰撞对象会参与当前粒子系统的碰撞",-1))])):xe("",!0)]),be(Oe,{label:"阻尼",min:0,max:2,step:.05,modelValue:I(t).config.damping,"onUpdate:modelValue":C[68]||(C[68]=R=>I(t).config.damping=R)},null,8,["modelValue"])],512),[[ws,!I(b).mods]])]))}}),a$=Jt(o$,[["__scopeId","data-v-96ef634f"]]),l$={class:"group"},c$={class:"caret"},h$={class:"group-body export-settings"},u$={class:"export-field"},d$={class:"export-field"},f$={class:"export-field"},m$={key:0,class:"export-help"},p$={class:"export-fps-row"},g$={class:"export-field export-fps-field"},v$={class:"export-checkbox"},y$={class:"export-switches"},x$={class:"switch-row export-switch"},b$={class:"switch-row export-switch"},w$={class:"switch-row export-switch export-switch-last"},S$=Zt({__name:"ExportSettingsSection",setup(i){const{exportSettings:e,collapsed:t,toggle:s,resetModule:n,normalizeExportFps:r,select:o}=Ar();return(a,l)=>(z(),J("div",l$,[T("div",{class:"group-head",onClick:l[1]||(l[1]=c=>I(s)("export"))},[T("span",c$,ye(I(t).export?"▸":"▾"),1),l[11]||(l[11]=T("span",null,"导出设置",-1)),T("button",{class:"group-reset",title:"重置导出设置",onClick:l[0]||(l[0]=Ke(c=>I(n)("export"),["stop"]))},"重置")]),ce(T("div",h$,[T("label",u$,[l[12]||(l[12]=T("span",null,"图片路径 (Spine Images Path)",-1)),ce(T("input",{"onUpdate:modelValue":l[2]||(l[2]=c=>I(e).imagesPath=c),class:"inp export-input",type:"text",placeholder:"./images/"},null,512),[[je,I(e).imagesPath,void 0,{trim:!0}]])]),T("label",d$,[l[14]||(l[14]=T("span",null,"Spine 版本",-1)),ce(T("select",{"onUpdate:modelValue":l[3]||(l[3]=c=>I(e).spineVersion=c),class:"inp export-input"},[...l[13]||(l[13]=[Qs('',5)])],512),[[_t,I(e).spineVersion]])]),T("label",f$,[l[16]||(l[16]=T("span",null,"关键帧插值曲线",-1)),ce(T("select",{"onUpdate:modelValue":l[4]||(l[4]=c=>I(e).keyframeCurve=c),class:"inp export-input"},[...l[15]||(l[15]=[T("option",{value:"linear"},"线性 (Linear)",-1),T("option",{value:"bezier"},"平滑贝塞尔 (Smooth Bézier)",-1)])],512),[[_t,I(e).keyframeCurve]])]),l[25]||(l[25]=T("div",{class:"export-help"},"平滑贝塞尔会在误差允许范围内拟合连续运动;出生、死亡、附件切换和突变仍使用阶跃关键帧。",-1)),I(e).spineVersion==="3.8"?(z(),J("div",m$,"Spine 3.8 不支持 4.x 的逐通道数组贝塞尔,导出时会转换为经过容差精简的分段线性关键帧。")):xe("",!0),T("div",p$,[T("label",g$,[l[17]||(l[17]=T("span",null,"导出 FPS",-1)),ce(T("input",{"onUpdate:modelValue":l[5]||(l[5]=c=>I(e).fps=c),class:"inp export-input",type:"number",min:"1",max:"240",step:"1",onChange:l[6]||(l[6]=(...c)=>I(r)&&I(r)(...c))},null,544),[[je,I(e).fps,void 0,{number:!0}]])]),T("label",v$,[ce(T("input",{"onUpdate:modelValue":l[7]||(l[7]=c=>I(e).omitFps=c),type:"checkbox"},null,512),[[yt,I(e).omitFps]]),l[18]||(l[18]=gt("不写 fps",-1))])]),l[26]||(l[26]=T("div",{class:"export-help"},"修改 FPS 时保持动画实际秒数不变;“不写 fps”只省略 Spine 的 fps 元数据。",-1)),T("div",y$,[T("label",x$,[ce(T("input",{"onUpdate:modelValue":l[8]||(l[8]=c=>I(e).integerFrameAlignment=c),type:"checkbox"},null,512),[[yt,I(e).integerFrameAlignment]]),l[19]||(l[19]=T("span",{class:"switch-ui"},null,-1)),l[20]||(l[20]=T("span",null,"整数帧对齐",-1))]),T("label",b$,[ce(T("input",{"onUpdate:modelValue":l[9]||(l[9]=c=>I(e).bonePool=c),type:"checkbox"},null,512),[[yt,I(e).bonePool]]),l[21]||(l[21]=T("span",{class:"switch-ui"},null,-1)),l[22]||(l[22]=T("span",null,"骨骼对象池",-1))]),T("label",w$,[ce(T("input",{"onUpdate:modelValue":l[10]||(l[10]=c=>I(e).excludeEmptyAnimations=c),type:"checkbox"},null,512),[[yt,I(e).excludeEmptyAnimations]]),l[23]||(l[23]=T("span",{class:"switch-ui"},null,-1)),l[24]||(l[24]=T("span",null,"排除无内容动画",-1))])])],512),[[ws,!I(t).export]])]))}}),M$=Jt(S$,[["__scopeId","data-v-04462c7a"]]),T$={class:"spine-export-actions"},_$=["disabled","title"],C$=["disabled"],A$=["disabled","title"],E$={key:0},I$=["href"],R$=["href"],P$=Zt({__name:"ParticleExportFooter",setup(i){const{exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:l,connectorReady:c,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=Ar();return(y,x)=>(z(),J(Ce,null,[T("div",T$,[T("button",{type:"button",class:"export-spine-json",disabled:I(t),title:I(t)?"正在重新计算并烘焙动画":`导出 Spine ${I(e).spineVersion} JSON`,onClick:x[0]||(x[0]=(...v)=>I(p)&&I(p)(...v))},ye(I(t)&&I(s)==="json"?"正在准备导出…":"导出Spine Json"),9,_$),T("button",{type:"button",class:"export-spine-images",disabled:I(t),title:"单独下载当前粒子系统使用的图片 ZIP",onClick:x[1]||(x[1]=(...v)=>I(g)&&I(g)(...v))},ye(I(t)&&I(s)==="images"?"正在整理图片…":"导出 images 包"),9,C$),T("button",{type:"button",class:"export-spine-project",disabled:I(t)||!I(c),title:I(d),onClick:x[2]||(x[2]=(...v)=>I(m)&&I(m)(...v))},[T("span",null,ye(I(t)&&I(s)==="spine"?"正在生成工程…":"导出 .spine 包"),1),!I(t)&&I(u)?(z(),J("small",E$,ye(I(u)),1)):xe("",!0)],8,A$)]),T("div",{class:Ae(["connector-status",I(l)])},[x[5]||(x[5]=T("span",{class:"connector-dot"},null,-1)),gt(ye(I(a))+" ",1),I(h)?(z(),J("a",{key:0,href:I(h),target:"_blank",rel:"noopener",title:"在本机连接器中授权当前网站"},"授权当前网站",8,I$)):xe("",!0),T("button",{type:"button",title:"重新检测连接器",onClick:x[3]||(x[3]=(...v)=>I(f)&&I(f)(...v))},"刷新")],2),I(n)?(z(),J("div",{key:0,class:Ae(["export-message",{error:I(r)}])},[gt(ye(I(n))+" ",1),I(o)?(z(),J("a",{key:0,href:I(o),target:"_blank",rel:"noopener",onClick:x[4]||(x[4]=v=>o.value="")},"授权当前网站",8,R$)):xe("",!0)],2)):xe("",!0)],64))}}),k$=Jt(P$,[["__scopeId","data-v-7ff40afe"]]),F$={class:"panel"},O$={class:"panel-scroll"},L$=Zt({__name:"ParticlePanel",setup(i){const{activeObjectType:e,sys:t}=wL();return(s,n)=>(z(),J("div",F$,[n[0]||(n[0]=T("div",{class:"panel-header"},[T("span",null,"Spine粒子编辑器-Yeomai")],-1)),T("div",O$,[be(RL),be(dD),I(e)==="particle"&&I(t)?(z(),J(Ce,{key:0},[be(QD),be(S4),be(x8),be(a$),be(M$)],64)):xe("",!0)]),be(k$)]))}}),B$=Jt(L$,[["__scopeId","data-v-283ef8eb"]]),N$={class:"timeline"},D$={class:"tl-controls"},U$=["title"],$$={class:"tl-range",title:"自定义播放起始帧"},X$=["max","onKeydown"],V$={class:"tl-range",title:"自定义播放结束帧"},Y$=["min","max","onKeydown"],G$=["title"],j$={class:"tl-frame"},H$=["disabled"],W$=["onClick"],z$={key:0},q$={class:"tl-animation-editor"},K$={key:0,class:"tl-animation-error"},Z$={class:"tl-animation-actions"},J$=["disabled"],Q$={key:1,class:"tl-animation-hint"},eX={class:"tl-anim tl-spine-preview"},tX=["value","disabled"],sX={value:""},iX=["value"],nX={class:"tl-zoom"},rX={class:"tl-ticks"},oX={class:"tl-ticklabel"},aX={class:"tl-lanes"},lX=["onPointerdown"],cX={class:"lane-name"},hX=["onPointerdown"],uX=["onPointerdown"],dX=["onPointerdown"],fX={class:"lane-name"},mX={key:0,class:"tl-empty"},pX=Zt({__name:"Timeline",setup(i){const e=yo(),t=Fe(null),s=Fe(null),n=Fe(!1),r=Fe("animation"),o=Fe("");Fo(()=>{(!Array.isArray(e.timeline.animations)||!e.timeline.animations.length)&&(e.timeline.animations=["animation"]),e.timeline.animations.includes(e.timeline.animation)||(e.timeline.animation=e.timeline.animations[0]);for(const H of e.systems)(!H.animation||!e.timeline.animations.includes(H.animation))&&(H.animation=e.timeline.animations[0])});const a=De(()=>e.systems.find(H=>H.id===e.activeId)||null),l=De(()=>{const H=a.value;return!H||!V(H)?null:wp(H.config,m.value)});function c(){a.value&&(n.value=!n.value,r.value=a.value.animation,o.value="")}function h(H){const G=a.value;G&&(e.setSystemAnimation(G.id,H),r.value=H,o.value="")}function u(){const H=e.addAnimation();r.value=H,o.value=""}function d(){var q;const H=((q=a.value)==null?void 0:q.animation)||e.timeline.animation,G=r.value.trim();if(!G){o.value="动画名称不能为空";return}if(G!==H&&e.timeline.animations.includes(G)){o.value="动画名称不能重复";return}if(!e.renameAnimation(H,G)){o.value="无法修改动画名称";return}r.value=G,o.value=""}function f(){var q,se;const H=((q=a.value)==null?void 0:q.animation)||e.timeline.animation;if(!e.removeAnimation(H)){o.value="至少需要保留一个动画";return}const G=((se=a.value)==null?void 0:se.animation)||e.timeline.animation;r.value=G,o.value=""}function p(H){var G;(G=s.value)!=null&&G.contains(H.target)||(n.value=!1)}Oi(()=>document.addEventListener("pointerdown",p)),po(()=>document.removeEventListener("pointerdown",p));const m=De(()=>Math.max(1,e.timeline.fps||30)),g=Fe(120),y=Fe({}),x=Fe({}),v=Fe({}),w=Fe({}),_=Fe(String(e.timeline.playbackStart)),S=Fe(String(e.timeline.playbackEnd));Cs(()=>e.timeline.playbackStart,H=>{_.value=String(H)}),Cs(()=>e.timeline.playbackEnd,H=>{S.value=String(H)});const b=De(()=>e.timeline.totalFrames),A=De(()=>g.value<=30?"放大":g.value>=300?"缩小":"适中"),P=De(()=>e.spines.filter(H=>H.selectedAnimation&&H.animations.some(G=>G.name===H.selectedAnimation&&G.duration>0))),F=De(()=>(e.activeObjectType==="spine"?e.spines.find(G=>G.id===e.activeObjectId&&G.animations.length):null)||e.spines.find(G=>G.animations.length)||null);function E(H){const G=F.value;G&&(G.selectedAnimation=H.target.value,e.recalcTotalFrames(),e.timeline.frame=0)}function k(){e.setPlaybackStart(Number(_.value)),_.value=String(e.timeline.playbackStart)}function B(){e.setPlaybackEnd(Number(S.value)),S.value=String(e.timeline.playbackEnd)}function D(){const H=l.value;H&&(e.setPlaybackEnd(H.end),e.setPlaybackStart(H.start))}function X(){var G;const H=((G=t.value)==null?void 0:G.clientWidth)||600;return g.value/H}const N=De(()=>{const H=[],G=g.value;let q=1;g.value<=10?q=1:g.value<=50?q=5:g.value<=200?q=10:g.value<=500?q=50:q=100;for(let se=0;se<=G;se+=q)H.push({f:se,px:se/X()});return H}),U=De(()=>e.timeline.frame/X());function C(H){const G=H.config;return(y.value[H.id]??Math.max(0,Number(G.delay)||0))*m.value/X()}function R(H){const G=H.config,q=Math.max(0,Number(G.lifeMin)||0),se=Math.max(0,Number(G.lifeMax)||0);return G.lifeMode==="fixed"?q:Math.max(q,se)}function O(H){return $(H)}function L(H){if(H.config.mode!=="stream")return 0;if(H.config.streamBehavior==="loop"){const q=H.config;return(v.value[H.id]??pr(q,m.value).loop)/X()}return(x.value[H.id]??Math.max(1/m.value,Number(H.config.duration)||1))*m.value/X()}function $(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"?j(H)+L(H)+K(H):L(H)+R(H)*m.value/X()}function V(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"}function j(H){return V(H)?pr(H.config,m.value).start/X():0}function K(H){return V(H)?pr(H.config,m.value).end/X():0}function ie(H){var G;return((G=H.animations.find(q=>q.name===H.selectedAnimation))==null?void 0:G.duration)||0}function re(H){return(w.value[H.id]??Math.max(0,Number(H.timeOffset)||0))*m.value/X()}function pe(H){return ie(H)*m.value/X()}function ge(H){const G=H.deltaY<0?.8:1.25;let q=g.value*G;q=Math.min(2e3,Math.max(10,q)),g.value=Math.round(q)}function he(H){const G=t.value;e.pause();const q=ue=>{const ne=G.getBoundingClientRect(),de=Math.floor((ue.clientX-ne.left)/ne.width*g.value);e.timeline.frame=Math.max(0,Math.min(de,b.value-1))};q(H);const se=()=>{window.removeEventListener("pointermove",q),window.removeEventListener("pointerup",se)};window.addEventListener("pointermove",q),window.addEventListener("pointerup",se)}function fe(H,G){H.stopPropagation();const q=H.clientX,se=Math.max(0,Number(G.config.delay)||0),ue=X()/m.value,ne=we=>{const me=(we.clientX-q)*ue,Ue=Math.max(0,Math.min(se+me,600));y.value[G.id]=Math.round(Ue*m.value)/m.value},de=we=>{window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",le),window.removeEventListener("pointercancel",Re);const me=y.value[G.id];delete y.value[G.id],we&&me!=null&&me!==se&&(G.config.delay=me)},le=()=>de(!0),Re=()=>de(!1);window.addEventListener("pointermove",ne),window.addEventListener("pointerup",le),window.addEventListener("pointercancel",Re)}function Y(H,G){var qe;H.stopPropagation();const q=V(G),se=Math.max(0,Number(G.config.duration)||0),ue=pr(G.config,m.value).loop,ne=X()/m.value,de=((qe=H.currentTarget.closest(".lane-bar"))==null?void 0:qe.getBoundingClientRect().left)??H.clientX,le=j(G);let Re=!1;const we=Ze=>{if(Re=!0,q){const Be=Math.min(1800,Math.max(1,Math.round((Ze.clientX-de-le)/X())));v.value[G.id]=Be}else{const Be=Math.max(1/m.value,Math.min((Ze.clientX-de)*ne,600));x.value[G.id]=Math.round(Be*m.value)/m.value}},me=Ze=>{window.removeEventListener("pointermove",we),window.removeEventListener("pointerup",Ue),window.removeEventListener("pointercancel",Je);const Be=x.value[G.id],Me=v.value[G.id];delete x.value[G.id],delete v.value[G.id],Ze&&Re&&q&&Me!=null&&Me!==ue?G.config.loopDurationFrames=Me:Ze&&Re&&!q&&Be!=null&&Be!==se&&(G.config.duration=Be)},Ue=()=>me(!0),Je=()=>me(!1);window.addEventListener("pointermove",we),window.addEventListener("pointerup",Ue),window.addEventListener("pointercancel",Je)}function W(H,G){H.stopPropagation();const q=H.clientX,se=Math.max(0,Number(G.timeOffset)||0),ue=X()/m.value,ne=we=>{const me=Math.max(0,Math.min(se+(we.clientX-q)*ue,600));w.value[G.id]=Math.round(me*m.value)/m.value},de=we=>{window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",le),window.removeEventListener("pointercancel",Re);const me=w.value[G.id];delete w.value[G.id],we&&me!=null&&me!==se&&(G.timeOffset=me,e.recalcTotalFrames())},le=()=>de(!0),Re=()=>de(!1);window.addEventListener("pointermove",ne),window.addEventListener("pointerup",le),window.addEventListener("pointercancel",Re)}return(H,G)=>{var q,se,ue;return z(),J("div",N$,[T("div",D$,[T("button",{class:Ae(["tl-btn",{on:I(e).timeline.playing}]),onClick:G[0]||(G[0]=ne=>I(e).togglePlay()),title:I(e).timeline.playing?"暂停 (D)":"播放 (D)"},ye(I(e).timeline.playing?"❚❚":"▶"),11,U$),T("button",{class:"tl-btn",onClick:G[1]||(G[1]=ne=>I(e).toStart()),title:"回到第一帧 (S)"},"⏮"),T("button",{class:"tl-btn",onClick:G[2]||(G[2]=ne=>I(e).previousFrame()),title:"前一帧"},"◀"),T("button",{class:"tl-btn",onClick:G[3]||(G[3]=ne=>I(e).nextFrame()),title:"后一帧"},"▶"),T("button",{class:"tl-btn",onClick:G[4]||(G[4]=ne=>I(e).toEnd()),title:"移动到最后一帧"},"⏭"),T("button",{class:Ae(["tl-btn",{on:I(e).timeline.loop}]),onClick:G[5]||(G[5]=ne=>I(e).toggleLoop()),title:"循环"},"⟳",2),T("label",$$,[G[10]||(G[10]=T("span",null,"A",-1)),ce(T("input",{"onUpdate:modelValue":G[6]||(G[6]=ne=>_.value=ne),type:"number",min:"0",max:Math.max(0,I(e).timeline.playbackEnd-1),"aria-label":"播放起始帧",onChange:k,onKeydown:yr(Ke(k,["prevent"]),["enter"])},null,40,X$),[[je,_.value]])]),T("label",V$,[G[11]||(G[11]=T("span",null,"B",-1)),ce(T("input",{"onUpdate:modelValue":G[7]||(G[7]=ne=>S.value=ne),type:"number",min:I(e).timeline.playbackStart+1,max:Math.max(1,I(e).timeline.totalFrames-1),"aria-label":"播放结束帧",onChange:B,onKeydown:yr(Ke(B,["prevent"]),["enter"])},null,40,Y$),[[je,S.value]])]),l.value?(z(),J("button",{key:0,class:"tl-loop-range",title:`设为闭合自循环范围 ${l.value.start}–${l.value.end}f`,onClick:D},"循环段",8,G$)):xe("",!0),T("span",j$,[G[12]||(G[12]=gt("帧 ",-1)),T("b",null,ye(I(e).timeline.frame),1),G[13]||(G[13]=gt(" / ",-1)),T("b",null,ye(Math.max(0,I(e).timeline.totalFrames-1)),1)]),G[18]||(G[18]=T("span",{class:"tl-legend"},[T("i",{class:"legend-emission"}),gt("持续发射 "),T("i",{class:"legend-life"}),gt("粒子存在 "),T("i",{class:"legend-spine"}),gt("Spine 动画")],-1)),T("div",{ref_key:"animationMenuRef",ref:s,class:"tl-anim tl-owner-animation"},[G[16]||(G[16]=T("span",null,"所属动画",-1)),T("button",{class:"tl-animation-trigger",disabled:!a.value,title:"设置当前粒子系统所属的动画",onClick:Ke(c,["stop"])},[T("span",null,ye(((q=a.value)==null?void 0:q.animation)||I(e).timeline.animation),1),G[14]||(G[14]=T("i",null,"⌄",-1))],8,H$),n.value?(z(),J("div",{key:0,class:"tl-animation-menu",onPointerdown:G[9]||(G[9]=Ke(()=>{},["stop"]))},[G[15]||(G[15]=T("div",{class:"tl-animation-menu-title"},"选择所属动画",-1)),(z(!0),J(Ce,null,Ft(I(e).timeline.animations,ne=>{var de,le;return z(),J("button",{key:ne,class:Ae(["tl-animation-option",{on:((de=a.value)==null?void 0:de.animation)===ne}]),onClick:Re=>h(ne)},[T("span",null,ye(ne),1),((le=a.value)==null?void 0:le.animation)===ne?(z(),J("i",z$,"✓")):xe("",!0)],10,W$)}),128)),T("div",q$,[ce(T("input",{"onUpdate:modelValue":G[8]||(G[8]=ne=>r.value=ne),class:"tl-animation-name",maxlength:"64","aria-label":"动画名称",onKeydown:yr(d,["enter"])},null,544),[[je,r.value]]),T("button",{title:"重命名当前动画",onClick:d},"重命名")]),o.value?(z(),J("div",K$,ye(o.value),1)):xe("",!0),T("div",Z$,[T("button",{onClick:u},"+ 新增"),T("button",{disabled:I(e).timeline.animations.length<=1,onClick:f},"删除",8,J$)]),I(e).timeline.animations.length<=1?(z(),J("div",Q$,"至少需要保留一个动画")):xe("",!0)],32)):xe("",!0)],512),T("label",eX,[G[17]||(G[17]=gt("Spine 预览动画 ",-1)),T("select",{class:"tl-sel",value:((se=F.value)==null?void 0:se.selectedAnimation)||"",disabled:!F.value,onChange:E},[T("option",sX,ye(F.value?"无":"无可用 Spine 动画"),1),(z(!0),J(Ce,null,Ft(((ue=F.value)==null?void 0:ue.animations)||[],ne=>(z(),J("option",{key:ne.name,value:ne.name},ye(ne.name)+"("+ye(ne.duration.toFixed(2))+"s) ",9,iX))),128))],40,tX)]),T("span",nX,ye(A.value),1)]),T("div",{class:"tl-viewport",ref_key:"vpRef",ref:t,onWheel:Ke(ge,["prevent"]),onPointerdown:he},[T("div",rX,[(z(!0),J(Ce,null,Ft(N.value,ne=>(z(),J("div",{key:ne.f,class:"tl-tickline",style:Vt({left:ne.px+"px"})},[T("span",oX,ye(ne.f)+"f",1)],4))),128))]),T("div",{class:"tl-playhead",style:Vt({left:U.value+"px"})},null,4),T("div",aX,[(z(!0),J(Ce,null,Ft(I(e).systems,(ne,de)=>(z(),J("div",{key:ne.id,class:"tl-lane"},[G[19]||(G[19]=T("span",{class:"lane-ico"},"●",-1)),T("div",{class:"lane-bar",style:Vt({left:C(ne)+"px",width:O(ne)+"px"}),onPointerdown:Ke(le=>fe(le,ne),["stop"])},[T("span",cX,ye(ne.config.name||"系统 "+(de+1)),1),T("span",{class:Ae(["bar-life",{"loop-life":V(ne)}]),style:Vt({width:$(ne)+"px"})},null,6),V(ne)?(z(),J(Ce,{key:0},[j(ne)?(z(),J("span",{key:0,class:"bar-loop-transition bar-loop-start",style:Vt({width:j(ne)+"px"})},null,4)):xe("",!0),T("span",{class:"bar-emission bar-loop",style:Vt({left:j(ne)+"px",width:L(ne)+"px"})},[T("span",{class:"bar-handle",title:"拖动循环段时长",onPointerdown:Ke(le=>Y(le,ne),["stop"])},null,40,hX)],4),K(ne)?(z(),J("span",{key:1,class:"bar-loop-transition bar-loop-end",style:Vt({left:j(ne)+L(ne)+"px",width:K(ne)+"px"})},null,4)):xe("",!0)],64)):ne.config.mode==="stream"?(z(),J("span",{key:1,class:"bar-emission",style:Vt({width:L(ne)+"px"})},[T("span",{class:"bar-handle",title:"拖动持续发射时长",onPointerdown:Ke(le=>Y(le,ne),["stop"])},null,40,uX)],4)):xe("",!0)],44,lX)]))),128)),(z(!0),J(Ce,null,Ft(P.value,ne=>(z(),J("div",{key:`spine-${ne.id}`,class:"tl-lane spine-lane"},[G[20]||(G[20]=T("span",{class:"lane-ico spine-ico"},"◆",-1)),T("div",{class:"spine-bar",style:Vt({left:re(ne)+"px",width:pe(ne)+"px"}),title:"拖动调整动画开始时间",onPointerdown:Ke(de=>W(de,ne),["stop"])},[T("span",fX,ye(ne.name)+" · "+ye(ne.selectedAnimation),1)],44,dX)]))),128)),!I(e).systems.length&&!P.value.length?(z(),J("div",mX,"暂无可显示的动画数据")):xe("",!0)])],544)])}}}),gX=Jt(pX,[["__scopeId","data-v-1e581e89"]]),vX={class:"transfer-heading"},yX={key:0},xX={class:"transfer-detail"},bX=Zt({__name:"TransferProgressOverlay",setup(i){const e=Fe(null);return Cs(()=>Qt.visible,async t=>{var s;t&&(await zh(),(s=e.value)==null||s.focus({preventScroll:!0}))},{flush:"post"}),(t,s)=>(z(),At(t2,{name:"transfer-fade"},{default:qh(()=>[I(Qt).visible?(z(),J("div",{key:0,ref_key:"overlayElement",ref:e,class:"transfer-overlay",role:"dialog","aria-modal":"true","aria-live":"polite",tabindex:"-1",onPointerdown:s[0]||(s[0]=Ke(()=>{},["stop","prevent"])),onPointerup:s[1]||(s[1]=Ke(()=>{},["stop","prevent"])),onClick:s[2]||(s[2]=Ke(()=>{},["stop","prevent"])),onDblclick:s[3]||(s[3]=Ke(()=>{},["stop","prevent"])),onContextmenu:s[4]||(s[4]=Ke(()=>{},["stop","prevent"])),onWheel:s[5]||(s[5]=Ke(()=>{},["stop","prevent"])),onKeydown:s[6]||(s[6]=Ke(()=>{},["stop","prevent"]))},[T("div",{class:Ae(["transfer-dialog",{failed:I(Qt).failed}])},[T("div",vX,[T("span",null,ye(I(Qt).title),1),I(Qt).indeterminate?xe("",!0):(z(),J("strong",yX,ye(Math.round(I(Qt).progress))+"%",1))]),T("div",{class:Ae(["transfer-track",{indeterminate:I(Qt).indeterminate}])},[T("div",{class:"transfer-bar",style:Vt(I(Qt).indeterminate?void 0:{width:`${I(Qt).progress}%`})},null,4)],2),T("div",xX,ye(I(Qt).detail),1)],2)],544)):xe("",!0)]),_:1}))}}),wX=Jt(bX,[["__scopeId","data-v-592b922e"]]),SX=["inert","aria-hidden"],MX={class:"right"},TX={class:"stage-area"},_X=Zt({__name:"App",setup(i){const e=yo();IR(e);const t=Fe(360),s=Fe(180);function n(o){o.preventDefault();const a=c=>{const h=e.settings.parameterPanelOnRight?window.innerWidth-c.clientX:c.clientX,u=Math.max(240,Math.min(h,window.innerWidth-200));t.value=u},l=()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",l)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",l)}function r(o){o.preventDefault();const a=o.clientY,l=s.value,c=u=>{const d=Math.max(80,Math.min(l+(a-u.clientY),window.innerHeight-200));s.value=d},h=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",h)};window.addEventListener("pointermove",c),window.addEventListener("pointerup",h)}return(o,a)=>(z(),J(Ce,null,[T("div",{class:Ae(["layout",{"panel-right":I(e).settings.parameterPanelOnRight}]),inert:I(Qt).visible?!0:void 0,"aria-hidden":I(Qt).visible?"true":void 0},[T("div",{class:"parameter-panel",style:Vt({width:t.value+"px"})},[be(B$)],4),T("div",{class:"resizer-col",onPointerdown:n},null,32),T("div",MX,[T("div",TX,[be(m3)]),T("div",{class:"resizer-row",onPointerdown:r,title:"拖动调整时间轴高度"},null,32),T("div",{class:"timeline-area",style:Vt({height:s.value+"px"})},[be(gX)],4)])],10,SX),be(wX)],64))}}),CX=Jt(_X,[["__scopeId","data-v-42c4fa00"]]);I2(CX).use(k2()).mount("#app");export{vy as $,rn as A,Fh as B,Et as C,ps as D,ke as E,Gs as F,hn as G,st as H,vt as I,AS as J,Ds as K,ii as L,gi as M,Mr as N,yu as O,nn as P,yl as Q,ha as R,Ci as S,Z3 as T,Ge as U,uy as V,Ii as W,tV as X,zO as Y,Ml as Z,xp as _,ze as a,Rm as a$,gy as a0,oS as a1,Pp as a2,Q6 as a3,Ih as a4,sl as a5,aO as a6,il as a7,xu as a8,Cm as a9,Dm as aA,Um as aB,Mc as aC,rr as aD,Uc as aE,Am as aF,hS as aG,zt as aH,iS as aI,j6 as aJ,na as aK,py as aL,Ee as aM,Ve as aN,Im as aO,$c as aP,mS as aQ,Em as aR,dS as aS,fS as aT,bu as aU,vS as aV,Xc as aW,bS as aX,pS as aY,yS as aZ,wS as a_,wo as aa,kp as ab,Fp as ac,fy as ad,Ol as ae,Ll as af,Fl as ag,bo as ah,Fn as ai,W6 as aj,cS as ak,oO as al,da as am,br as an,Bp as ao,CS as ap,nO as aq,Sl as ar,Ws as as,my as at,K6 as au,va as av,Nm as aw,$m as ax,Xm as ay,Vm as az,la as b,Hn as b$,kh as b0,gS as b1,Cr as b2,xS as b3,Op as b4,K3 as b5,TS as b6,_S as b7,Lp as b8,cn as b9,SS as bA,Np as bB,vu as bC,ES as bD,Pm as bE,fs as bF,z3 as bG,Q3 as bH,Hw as bI,jw as bJ,z6 as bK,Bt as bL,ya as bM,IS as bN,kS as bO,FS as bP,OS as bQ,RS as bR,PS as bS,iO as bT,Dp as bU,Mt as bV,Bm as bW,uS as bX,zw as bY,qw as bZ,Kw as b_,q3 as ba,H6 as bb,et as bc,lS as bd,aS as be,nS as bf,rS as bg,lo as bh,Rh as bi,rO as bj,Zw as bk,Jw as bl,Vs as bm,Qw as bn,ua as bo,Ts as bp,Ww as bq,Ph as br,eS as bs,tS as bt,sS as bu,yy as bv,Om as bw,Zr as bx,MS as by,Fm as bz,ca as c,q6 as c0,tO as c1,sO as c2,eO as c3,He as d,Xe as e,Z6 as f,Qe as g,xs as h,lh as i,qs as j,Ut as k,$e as l,ki as m,Ot as n,dp as o,ts as p,xl as q,ir as r,Le as s,fb as t,yp as u,fh as v,km as w,qr as x,dy as y,Lm as z}; +`;class _w extends ir{constructor(e){super(e),this.shaderGenerator=new pb(ik,nk),this.geometryClass=sk,this.vertexSize=7}packInterleavedGeometry(e,t,s,n,r){const{uint32View:o,float32View:a}=t,l=n/this.vertexSize,c=e.uvs,h=e.indices,u=e.vertexData,d=e._texture.baseTexture._batchLocation,f=Math.min(e.worldAlpha,1),p=Et.shared.setValue(e._tintRGB).toPremultiplied(f,!0),m=Et.shared.setValue(e._darkTintRGB).premultiply(f,!0).toPremultiplied(1,!1);for(let g=0;g0){let o=function(c){return Promise.all(c.map(h=>Promise.resolve(h).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));n=o(t.map(c=>{if(c=ck(c),c in qv)return;qv[c]=!0;const h=c.endsWith(".css"),u=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const d=document.createElement("link");if(d.rel=h?"stylesheet":lk,h||(d.as="script"),d.crossOrigin="",d.href=c,l&&d.setAttribute("nonce",l),document.head.appendChild(d),h)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${c}`)))})}))}function r(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return n.then(o=>{for(const a of o||[])a.status==="rejected"&&r(a.reason);return e().catch(r)})};async function Aw(){const[i,e]=await Promise.all([Kv(()=>import("./index-BS4GpQRH.js"),[]),Kv(()=>import("./index-CUwqGGwd.js"),__vite__mapDeps([0,1]))]);return{core:i,pixi:e}}async function hk(i,e,t){const{core:s,pixi:n}=await Aw(),r=new s.TextureAtlas(e);return Ap(r,t,n.SpineTexture),{skeletonData:new s.SkeletonJson(new s.AtlasAttachmentLoader(r)).readSkeletonData(i),SpineClass:n.Spine}}async function uk(i,e,t){const{core:s,pixi:n}=await Aw(),r=new s.TextureAtlas(e);return Ap(r,t,n.SpineTexture),{skeletonData:new s.SkeletonBinary(new s.AtlasAttachmentLoader(r)).readSkeletonData(i),SpineClass:n.Spine}}function hr(i,e,t){const s=Number(i[e]);return Number.isFinite(s)?s:t}function zs(i,e,t,s){i[e]==null&&(i[e]=hr(i,t,s))}function Ep(i,e,t){if(typeof i.curve!="number")return;const s=hr(i,"time",0),r=hr(e,"time",0)-s,o=i.curve,a=hr(i,"c2",0),l=hr(i,"c3",1),c=hr(i,"c4",1);i.curve=t.flatMap(([h,u])=>[s+r*o,h+(u-h)*a,s+r*l,h+(u-h)*c]),delete i.c2,delete i.c3,delete i.c4}function vr(i,e){if(Array.isArray(i))for(let t=0;t[hr(s,r,o),hr(n,r,o)]))}}function dk(i){if(Array.isArray(i))for(let e=0;eNumber.parseInt(s.slice(r,r+2),16)/255);return e?n:n.slice(0,3)}function Zv(i,e){if(Array.isArray(i))for(let t=0;t[a,o[l]]))}}function fk(i){for(const e of i.bones||[])e.inherit==null&&e.transform!=null&&(e.inherit=e.transform);for(const e of i.transform||[])zs(e,"mixRotate","rotateMix",1),zs(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX),zs(e,"mixScaleX","scaleMix",1),e.mixScaleY==null&&(e.mixScaleY=e.mixScaleX),zs(e,"mixShearY","shearMix",1);for(const e of i.path||[])zs(e,"mixRotate","rotateMix",1),zs(e,"mixX","translateMix",1),e.mixY==null&&(e.mixY=e.mixX)}function mk(i){for(const e of i.skins||[])for(const t of Object.values(e.attachments||{}))for(const s of Object.values(t||{}))s.parent!=null&&s.timelines==null&&s.deform!=null&&(s.timelines=s.deform)}function pk(i){for(const e of Object.values(i.slots||{}))e.color&&!e.rgba&&(e.rgba=e.color,delete e.color),e.twoColor&&!e.rgba2&&(e.rgba2=e.twoColor,delete e.twoColor),Zv(e.rgba,!1),Zv(e.rgba2,!0)}function gk(i){for(const e of Object.values(i.bones||{})){for(const t of e.rotate||[])zs(t,"value","angle",0);vr(e.rotate,[{key:"value",fallback:0}]),vr(e.translate,[{key:"x",fallback:0},{key:"y",fallback:0}]),vr(e.scale,[{key:"x",fallback:1},{key:"y",fallback:1}]),vr(e.shear,[{key:"x",fallback:0},{key:"y",fallback:0}])}}function vk(i){for(const e of Object.values(i.ik||{}))vr(e,[{key:"mix",fallback:1},{key:"softness",fallback:0}])}function yk(i){for(const e of Object.values(i.transform||{})){for(const t of e)zs(t,"mixRotate","rotateMix",1),zs(t,"mixX","translateMix",1),t.mixY==null&&(t.mixY=t.mixX),zs(t,"mixScaleX","scaleMix",1),t.mixScaleY==null&&(t.mixScaleY=t.mixScaleX),zs(t,"mixShearY","shearMix",1);vr(e,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1},{key:"mixScaleX",fallback:1},{key:"mixScaleY",fallback:1},{key:"mixShearY",fallback:1}])}}function xk(i){for(const e of Object.values(i.path||{})){for(const s of["position","spacing"]){const n=e[s];for(const r of n||[])zs(r,"value",s,0);vr(n,[{key:"value",fallback:0}])}const t=e.mix;for(const s of t||[])zs(s,"mixRotate","rotateMix",1),zs(s,"mixX","translateMix",1),s.mixY==null&&(s.mixY=s.mixX);vr(t,[{key:"mixRotate",fallback:1},{key:"mixX",fallback:1},{key:"mixY",fallback:1}])}}function bk(i){if(!i.deform)return;const e=i.attachments||(i.attachments={});for(const[t,s]of Object.entries(i.deform)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(s)){const a=n[r]||(n[r]={});for(const[l,c]of Object.entries(o)){const h=a[l]||(a[l]={});h.deform=c,dk(c)}}}delete i.deform}function Ew(i){fk(i),mk(i);for(const e of Object.values(i.animations||{}))pk(e),gk(e),vk(e),yk(e),xk(e),bk(e),!e.drawOrder&&e.draworder&&(e.drawOrder=e.draworder);return i}function wk(i){return i.replace(/\\/g,"/").split("/").pop()||i}async function Sk(i){const e=await Promise.all(i.map(async t=>{const s=URL.createObjectURL(t);try{return[wk(t.name).toLowerCase(),await ze.fromURL(s)]}finally{URL.revokeObjectURL(s)}}));return new Map(e)}function Mk(i){const e=new Map;return i.bones.map(t=>{var r;const s=((r=t.parent)==null?void 0:r.name)||null,n=s?(e.get(s)||0)+1:0;return e.set(t.name,n),{name:t.name,parent:s,depth:n}})}function Tk(i){return i.slots.map(e=>{var t;return{name:e.name,order:Number(e.index)||0,bone:((t=e.boneData)==null?void 0:t.name)||"",attachment:e.attachmentName||""}})}async function Iw(i,e,t){var o;if(!/\.(json|skel)$/i.test(i.name))throw new Error("Spine 数据仅支持 .json 或 .skel");if(!/\.atlas$/i.test(e.name))throw new Error("图集文件仅支持 .atlas");if(!t.length)throw new Error("请至少选择一张纹理图片");const s=await e.text(),n=await Sk(t),r=[...n.values()];try{let a,l,c=null,h;if(/\.skel$/i.test(i.name)){const u=await i.arrayBuffer();try{({skeletonData:a,SpineClass:l}=await uk(u,s,n)),h="4.3"}catch(d){try{({skeletonData:a,SpineClass:l}=ak(u,s,n)),h="4.2"}catch(f){const p=d instanceof Error?d.message:String(d),m=f instanceof Error?f.message:String(f);throw new Error(`Spine 二进制解析失败(4.3:${p};旧版:${m})`)}}c=gh(a.version)}else{let u;try{u=JSON.parse(await i.text())}catch{throw new Error("Spine JSON 文件格式无效")}if(c=gh((o=u==null?void 0:u.skeleton)==null?void 0:o.spine),!c)throw new Error(`Spine JSON 版本不受支持,仅支持 ${pm()}`);h=MR(c),c==="3.8"&&Ew(u);const d=h==="4.3"?await hk(u,s,n):ok(u,s,n);a=d.skeletonData,l=d.SpineClass}if(!c)throw new Error(`Spine 数据版本不受支持,仅支持 ${pm()}`);return{skeletonData:a,textures:r,runtimeVersion:h,SpineClass:l,dataVersion:c,animations:a.animations.map(u=>({name:u.name,duration:u.duration})),bones:Mk(a),slots:Tk(a)}}catch(a){for(const l of r)l.destroy(!0);throw a}}function Dc(i){return new Promise((e,t)=>{const s=new FileReader;s.onload=()=>e(String(s.result||"")),s.onerror=()=>t(s.error),s.readAsDataURL(i)})}async function _k(i,e,t){return{skeleton:{name:i.name,dataUrl:await Dc(i)},atlas:{name:e.name,dataUrl:await Dc(e)},textures:await Promise.all(t.map(async s=>({name:s.name,dataUrl:await Dc(s)})))}}async function df(i){const e=await fetch(i.dataUrl);if(!e.ok)throw new Error(`无法读取内嵌 Spine 文件:${i.name}`);return new File([await e.blob()],i.name)}async function Ck(i){return{skeleton:await df(i.skeleton),atlas:await df(i.atlas),textures:await Promise.all(i.textures.map(df))}}const Rw="SpineParticle.EditorConfig",Pw=1;function kw(i){return{backgroundX:i.backgroundX,backgroundY:i.backgroundY,backgroundOpacity:i.backgroundOpacity,backgroundImageName:i.backgroundImageName,backgroundImageData:i.backgroundImageData,showGrid:i.showGrid,exportSettings:$t(i.exportSettings)}}function Ak(i){return JSON.parse(JSON.stringify(i,(e,t)=>{if(!(e==="texture"||e==="trailTexture"||e==="frames"))return t}))}function Fw(i){const e=$t(i);return delete e.tags,delete e.selectedTag,e}function Ek(i){const e=kw(i.settings);return Ak({format:Rw,version:Pw,savedAt:new Date().toISOString(),editor:$t(i.editor),settings:e,timeline:{fps:i.timeline.fps,loop:i.timeline.loop,playbackStart:i.timeline.playbackStart,playbackEnd:i.timeline.playbackEnd,animations:[...i.timeline.animations]},selection:{type:i.activeObjectType,id:i.activeObjectId},scene:{systems:i.systems.map(t=>({...$t(t),frames:void 0})),colliders:i.colliders.map(Fw),paths:$t(i.paths),spines:$t(i.spines)}})}function Ik(){return`SpineParticle-${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","-")}.json`}function Ow(i){const e=Ek(i),t=new Blob([JSON.stringify(e,null,2)],{type:"application/json;charset=utf-8"}),s=URL.createObjectURL(t),n=document.createElement("a");return n.href=s,n.download=Ik(),document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(s),0),e}function Lw(i){let e;try{e=JSON.parse(i)}catch{throw new Error("配置文件不是有效的 JSON")}const t=e;if(t.format!==Rw)throw new Error("不是 SpineParticle 编辑器配置文件");if(t.version!==Pw)throw new Error(`暂不支持配置版本:${t.version??"未知"}`);if(!t.scene||!Array.isArray(t.scene.systems)||!Array.isArray(t.scene.colliders)||!Array.isArray(t.scene.paths)||!Array.isArray(t.scene.spines))throw new Error("配置文件缺少完整场景数据");return t}async function Rk(i){const e=new Map,t=n=>{const r=n==="/particles/star.png"?"/images/star.png":n==="/trails/trail.png"?"/images/trail.png":n||"/images/star.png";let o=e.get(r);return o||(o=ze.fromURL(r).then(a=>ur(a)),e.set(r,o)),o},s=await t("/images/star.png");await Promise.all(i.map(async n=>{var o;const r=Dn(n.config);r.texture=s,await Promise.all(r.imageResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/star.png"),await Promise.all(a.sequenceFrames.map(async l=>{l.texture=await t(l.previewUrl||a.previewUrl||"/images/star.png")}))})),await Promise.all(r.trailResources.map(async a=>{a.texture=await t(a.previewUrl||"/images/trail.png")})),r.trailTexture=((o=r.trailResources[0])==null?void 0:o.texture)||null,n.frames=[]}))}async function Pk(i){const e=new Map;try{for(const t of i){if(!t.sourceBundle)continue;const s=await Ck(t.sourceBundle);e.set(t.id,await Iw(s.skeleton,s.atlas,s.textures))}return e}catch(t){for(const s of e.values())for(const n of s.textures)n.destroy(!0);throw t}}function kk(i,e){const t=(e==null?void 0:e.type)||"particle",s=Number(e==null?void 0:e.id)||0;(t==="particle"?i.systems.some(r=>r.id===s):t==="collision"?i.colliders.some(r=>r.id===s):t==="path"?i.paths.some(r=>r.id===s):i.spines.some(r=>r.id===s))?i.selectSceneObject(t,s):i.systems[0]?i.selectSceneObject("particle",i.systems[0].id):i.colliders[0]?i.selectSceneObject("collision",i.colliders[0].id):i.paths[0]?i.selectSceneObject("path",i.paths[0].id):i.spines[0]?i.selectSceneObject("spine",i.spines[0].id):(i.activeObjectType="particle",i.activeObjectId=0,i.activeId=0)}async function Fk(i,e){var h,u,d,f,p,m,g;const t=Lw(JSON.stringify(e)),s=$t(t.scene.systems),n=t.scene.colliders.map(Fw),r=$t(t.scene.paths),o=$t(t.scene.spines);for(const v of o)v.sourceBundle==null&&(v.sourceBundle=null),v.dataVersion==null&&(v.dataVersion=""),Array.isArray(v.slots)||(v.slots=[]),typeof v.selectedBone!="string"&&(v.selectedBone=""),typeof v.selectedSlot!="string"&&(v.selectedSlot="");await Rk(s);const a=await Pk(o),l=new Map(i.spines.map(v=>[v.id,v.assetVersion]));for(const v of i.spines)Pl(v.id);i.systems=s,i.colliders=n,i.paths=r,i.spines=o,Object.assign(i.editor,$t(t.editor||{}));const c=t.settings;if(c)for(const v of["backgroundX","backgroundY","backgroundOpacity","backgroundImageName","backgroundImageData","showGrid"])Object.prototype.hasOwnProperty.call(c,v)&&(i.settings[v]=c[v]);i.settings.exportSettings=T1((h=t.settings)==null?void 0:h.exportSettings),i.settings.undoLimit=Math.min(200,Math.max(1,Math.round(Number(i.settings.undoLimit)||20))),i.timeline.fps=Math.max(1,Math.round(Number((u=t.timeline)==null?void 0:u.fps)||30)),i.timeline.loop=((d=t.timeline)==null?void 0:d.loop)!==!1,i.timeline.animations=Array.isArray((f=t.timeline)==null?void 0:f.animations)&&t.timeline.animations.length?[...new Set(t.timeline.animations.filter(v=>typeof v=="string"&&v.trim()).map(v=>v.trim()))]:["animation"];for(const v of i.spines){const y=a.get(v.id);if(v.assetVersion=Math.max(Number(v.assetVersion)||0,l.get(v.id)||0)+1,!y){v.status="empty",v.error=v.skeletonFileName?"配置未包含可复用的 Spine 原始资源":"",v.animations=[],v.bones=[],v.slots=[],v.selectedAnimation="";continue}fu(v.id,y),v.dataVersion=y.dataVersion,v.animations=y.animations,v.bones=y.bones,v.slots=y.slots,y.animations.some(x=>x.name===v.selectedAnimation)||(v.selectedAnimation=((p=y.animations[0])==null?void 0:p.name)||""),v.status="ready",v.error=""}i.syncSceneSequences(),kk(i,t.selection),i.timeline.playbackStart=Math.max(0,Math.floor(Number((m=t.timeline)==null?void 0:m.playbackStart)||0)),i.timeline.playbackEnd=Math.max(1,Math.floor(Number((g=t.timeline)==null?void 0:g.playbackEnd)||Number.MAX_SAFE_INTEGER)),i.timeline.frame=0,i.timeline.recorded=!1,i.timeline.playing=!0;for(const v of i.systems)i.timeline.animations.includes(v.animation)||(v.animation=i.timeline.animations[0]);return i.recalcTotalFrames(),i.timeline.frame=i.timeline.playbackStart,t}async function Bw(i,e){return Fk(i,Lw(e))}async function Ok(i,e){if(!/\.json$/i.test(e.name))throw new Error("请选择 .json 配置文件");return Bw(i,await e.text())}const gu=mo({undoCount:0});let Th=null,Pn=null,xr=[],La=null,kn=null,_h=!1;function Ip(i){return{systems:i.systems.map(t=>{const s=$t(t);return s.frames=void 0,s}),colliders:$t(i.colliders),paths:$t(i.paths),spines:$t(i.spines),animations:[...i.timeline.animations],settings:kw(i.settings)}}function Rp(i){return JSON.stringify(i,(e,t)=>e==="texture"||e==="trailTexture"?null:typeof t=="string"&&t.startsWith("data:")&&t.length>256?`${t.length}:${t.slice(0,96)}:${t.slice(-48)}`:t)}function Nw(i,e=Ip(i),t=Rp(e)){const s=new Map;for(const n of e.spines){const r=wR(n.id);r&&s.set(n.id,r)}return{data:e,signature:t,spineAssets:s}}function Ch(i){if(i){for(const e of i.spineAssets.values())xR(e);i.spineAssets.clear()}}function Dw(i){for(;xr.length>i;)Ch(xr.shift()||null);gu.undoCount=xr.length}function Uw(){const i=Th;if(!i||!Pn||_h)return;const e=Ip(i),t=Rp(e);t!==Pn.signature&&(xr.push(Pn),Pn=Nw(i,e,t),Dw(i.settings.undoLimit))}function Lk(){_h||(kn&&clearTimeout(kn),kn=setTimeout(()=>{kn=null,Uw()},250))}function Bk(i){const e=i.activeObjectId;return i.activeObjectType==="particle"?i.systems.some(t=>t.id===e):i.activeObjectType==="collision"?i.colliders.some(t=>t.id===e):i.activeObjectType==="path"?i.paths.some(t=>t.id===e):i.spines.some(t=>t.id===e)}function Nk(i){var t,s;if(!Bk(i)){const n=i.systems[0],r=i.colliders[0],o=i.paths[0],a=i.spines[0];n?(i.activeObjectType="particle",i.activeObjectId=n.id):r?(i.activeObjectType="collision",i.activeObjectId=r.id):o?(i.activeObjectType="path",i.activeObjectId=o.id):(i.activeObjectType="spine",i.activeObjectId=(a==null?void 0:a.id)||0)}const e=i.activeObjectType==="particle"?i.systems.find(n=>n.id===i.activeObjectId):i.systems.find(n=>n.id===i.activeId);i.activeId=(e==null?void 0:e.id)||((t=i.systems[0])==null?void 0:t.id)||0,i.timeline.animation=(e==null?void 0:e.animation)||((s=i.systems[0])==null?void 0:s.animation)||i.timeline.animations[0]||"animation"}function Dk(i,e){const t=Pn;_h=!0;try{for(const s of i.spines)Pl(s.id);i.systems=$t(e.data.systems),i.colliders=$t(e.data.colliders),i.paths=$t(e.data.paths),i.spines=$t(e.data.spines),i.timeline.animations=[...e.data.animations],Object.assign(i.settings,$t(e.data.settings));for(const[s,n]of e.spineAssets)fu(s,n);for(const s of i.systems)s.frames=[];i.timeline.recorded=!1,i.timeline.playing=!1,Nk(i),i.recalcTotalFrames(),Pn=e}finally{_h=!1,Ch(t)}}function Uk(i){if(!(Th===i&&La)){La==null||La(),kn&&clearTimeout(kn),Ch(Pn);for(const e of xr)Ch(e);xr=[],Th=i,Pn=Nw(i),gu.undoCount=0,La=cs(()=>Rp(Ip(i)),Lk,{flush:"post"})}}function $k(i,e){const t=Math.min(200,Math.max(1,Math.round(Number(e)||20)));i.settings.undoLimit=t,Dw(t)}function $w(){const i=Th;if(!i||!Pn)return!1;kn&&(clearTimeout(kn),kn=null),Uw();const e=xr.pop();return e?(Dk(i,e),gu.undoCount=xr.length,!0):!1}function Xk(i){const e=i instanceof HTMLElement?i:null;return!!(e!=null&&e.closest('input, textarea, select, [contenteditable="true"]'))}function Vk(i){function e(s){var r;const n=s.target instanceof Node?s.target:null;i.canvasFocused.value=!!n&&!!((r=i.canvasElement.value)!=null&&r.contains(n))}function t(s){const n=s.key.toLowerCase();if((s.ctrlKey||s.metaKey)&&!s.altKey&&n==="s"){s.preventDefault(),s.stopPropagation(),i.save();return}if((s.ctrlKey||s.metaKey)&&!s.altKey&&n==="z"){s.preventDefault(),s.stopPropagation(),i.undo();return}if(s.ctrlKey||s.metaKey||s.altKey||Xk(s.target))return;if(n==="d"){s.preventDefault(),i.togglePlay();return}if(n==="s"){s.preventDefault(),i.toStart();return}if(!i.canvasFocused.value)return;const r={q:"",w:"translate",e:"rotate",r:"scale"};n in r&&(s.preventDefault(),i.setTool(r[n]))}Oi(()=>{document.addEventListener("pointerdown",e,!0),window.addEventListener("keydown",t,!0)}),Cl(()=>{document.removeEventListener("pointerdown",e,!0),window.removeEventListener("keydown",t,!0)})}const Yk={class:"help-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"help-title"},Gk={class:"help-body"},jk=["aria-expanded"],Hk={class:"caret"},Wk={class:"help-module-body"},zk=["aria-expanded"],qk={class:"caret"},Kk={class:"help-module-body"},Zk=["aria-expanded"],Jk={class:"caret"},Qk={class:"help-module-body"},eF=["aria-expanded"],tF={class:"caret"},sF={class:"help-module-body"},iF=["aria-expanded"],nF={class:"caret"},rF={class:"help-module-body"},oF=["aria-expanded"],aF={class:"caret"},lF={class:"help-module-body"},cF=["aria-expanded"],hF={class:"caret"},uF={class:"help-module-body"},dF=["aria-expanded"],fF={class:"caret"},mF={class:"help-module-body"},pF=["aria-expanded"],gF={class:"caret"},vF={class:"help-module-body"},yF=Zt({__name:"HelpDialog",props:{show:{type:Boolean}},emits:["close"],setup(i,{emit:e}){const t=e,s=Fe(Array.from({length:9},()=>!1));function n(){t("close")}function r(o){o.key==="Escape"&&n()}return Oi(()=>window.addEventListener("keydown",r)),po(()=>window.removeEventListener("keydown",r)),(o,a)=>i.show?(z(),J("div",{key:0,class:"help-overlay",role:"presentation",onClick:Ke(n,["self"])},[T("section",Yk,[T("header",{class:"help-head"},[a[9]||(a[9]=T("div",null,[T("h2",{id:"help-title"},"使用说明"),T("p",null,"从创建粒子到保存、导出的快速入门")],-1)),T("button",{class:"help-close","aria-label":"关闭使用说明",title:"关闭 (Esc)",onClick:n},"✕")]),T("div",Gk,[a[37]||(a[37]=Qs('

快速开始

  1. 创建对象:在左侧“场景对象”中用 +粒子 / +碰撞 / +路径 / +Spine 添加场景对象。
  2. 编辑粒子:选中某个粒子系统,依次调整“发射模式 → 发射器形状 → 粒子属性 → 外观与资源 → 修改器”。
  3. 查看效果:底部时间轴可播放、暂停、逐帧或拖动;修改任意参数后会自动重新计算。
  4. 保存与导出:用“保存配置”保留工程;“导出 Spine Json / images 包 / .spine 包”输出成品。

每个模块组标题右侧的“重置”可把该组参数恢复默认;系统设置会自动保存在当前浏览器。

常用操作

小眼睛
单独显示/隐藏对象;隐藏的粒子系统不会被导出。
+Copy
完整复制当前选中对象,方便对比不同参数。
背景图
上传参考图并调整位置和透明度,只用于画布预览。
系统设置
管理界面布局、辅助显示、刻度等,自动存入浏览器。
撤销/重做
Ctrl+Z 撤回一步;可达成的步数在系统设置中调整。
Spine 骨骼
在层级树搜索并选择骨骼,可用于粒子发射器跟随。

快捷键

Ctrl/⌘+Z撤回上一步
Ctrl/⌘+S保存配置
Q拖动画布
W位移工具
E旋转工具
R缩放工具
D播放 / 暂停
S回到第一帧

Q / W / E / R 需先点击画布;光标位于输入框时,单键快捷键不会触发。

功能模块详解
',3)),T("section",{class:Ae(["help-section help-module",{open:s.value[0]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[0]?"true":"false",onClick:a[0]||(a[0]=l=>s.value[0]=!s.value[0])},[a[10]||(a[10]=T("span",{class:"mnum"},"1",-1)),a[11]||(a[11]=T("span",{class:"mtitle"},"配置管理",-1)),T("span",Hk,ye(s.value[0]?"▾":"▸"),1)],8,jk),ce(T("div",Wk,[...a[12]||(a[12]=[Qs('
保存配置
把当前全部场景对象和参数保存为工程 JSON 文件(也支持 Ctrl+S)。
加载配置
选择本地配置文件,恢复完整工程。
预设
从下拉中选择已保存的预设快速套用;点击下拉即可刷新列表。
范围
配置只含对象与参数,不含“系统设置”;系统设置单独存于浏览器。
',1)])],512),[[Ss,s.value[0]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[1]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[1]?"true":"false",onClick:a[1]||(a[1]=l=>s.value[1]=!s.value[1])},[a[13]||(a[13]=T("span",{class:"mnum"},"2",-1)),a[14]||(a[14]=T("span",{class:"mtitle"},"场景对象",-1)),T("span",qk,ye(s.value[1]?"▾":"▸"),1)],8,zk),ce(T("div",Kk,[...a[15]||(a[15]=[Qs('
粒子
核心对象。可设名称、位置 X/Y、偏移、旋转、缩放 X/Y,以及“随机种子”——相同种子可精确复现同一次效果。
碰撞
圆形/椭圆/矩形/多边形/自定义;启用开关、碰撞响应(物理弹跳/暂停/销毁)、弹性与摩擦,还可沿某条路径移动并带进度曲线。
路径
贝塞尔路径,可双击新建/删除锚点、拖手柄调曲线;内置圆/方/多边形/星形预设,支持闭合与颜色。
Spine
加载 .json+.atlas+.png 预览骨骼动画,可查看/搜索骨骼层级树,用于粒子“发射器跟随”。
通用
每个对象都有小眼睛显隐;“+Copy”可以复制当前对象;隐藏的粒子系统不会进入导出。
',1)])],512),[[Ss,s.value[1]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[2]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[2]?"true":"false",onClick:a[2]||(a[2]=l=>s.value[2]=!s.value[2])},[a[16]||(a[16]=T("span",{class:"mnum"},"3",-1)),a[17]||(a[17]=T("span",{class:"mtitle"},"发射模式",-1)),T("span",Jk,ye(s.value[2]?"▾":"▸"),1)],8,Zk),ce(T("div",Qk,[...a[18]||(a[18]=[Qs('
持续
按“每秒发射数量”持续喷射;再分“常规持续”(发射时长)与“循环持续”(三段式:开始循环 / 纯循环 / 结束循环,可自动或自定义帧长,做到无缝衔接)。
爆发
一次性发射“单次数量”颗粒子。
延迟时间
粒子条左端位置,表示发射开始前的等待时间。
注意
循环持续模式不支持骨骼跟随和路径跟随;开关时会把跟随设置恢复默认。
',1)])],512),[[Ss,s.value[2]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[3]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[3]?"true":"false",onClick:a[3]||(a[3]=l=>s.value[3]=!s.value[3])},[a[19]||(a[19]=T("span",{class:"mnum"},"4",-1)),a[20]||(a[20]=T("span",{class:"mtitle"},"发射器形状",-1)),T("span",tF,ye(s.value[3]?"▾":"▸"),1)],8,eF),ce(T("div",sF,[...a[21]||(a[21]=[Qs('
形状
点 / 圆形 / 矩形 / 锥形 / 路径。
圆·锥
内半径与外半径,形成环形或锥形发射区;锥形额外有“锥形朝向”和“开口角度”。
矩形
“外框 − 内框”形成环带,可分别设置内外宽高。
路径
选一条场景路径作为出生线;出生分布可选等距固定或随机。
发射角度
固定 / 随机(基准角度 + 随机范围)/ 径向(圆、矩、锥中心向外)/ 垂直于路径 / 沿路径方向。
',1)])],512),[[Ss,s.value[3]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[4]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[4]?"true":"false",onClick:a[4]||(a[4]=l=>s.value[4]=!s.value[4])},[a[22]||(a[22]=T("span",{class:"mnum"},"5",-1)),a[23]||(a[23]=T("span",{class:"mtitle"},"粒子属性",-1)),T("span",nF,ye(s.value[4]?"▾":"▸"),1)],8,iF),ce(T("div",rF,[...a[24]||(a[24]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"初始参数"),T("dd",null,"生命周期、速度、缩放(统一或 X/Y 分离)、初始旋转(可跟随发射方向)。每个属性支持固定 / 随机 / 曲线三种取值。")]),T("div",null,[T("dt",null,"生命周期变化"),T("dd",null,"速度倍率、缩放倍率(统一/分离)、旋转速度,均可用“生命周期 → 倍率”曲线控制。")]),T("div",null,[T("dt",null,"曲线含义"),T("dd",null,"横轴为粒子生命周期 0→1,纵轴为倍率或对应数值。")])],-1)])],512),[[Ss,s.value[4]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[5]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[5]?"true":"false",onClick:a[5]||(a[5]=l=>s.value[5]=!s.value[5])},[a[25]||(a[25]=T("span",{class:"mnum"},"6",-1)),a[26]||(a[26]=T("span",{class:"mtitle"},"外观与资源",-1)),T("span",aF,ye(s.value[5]?"▾":"▸"),1)],8,oF),ce(T("div",lF,[...a[27]||(a[27]=[T("dl",{class:"help-list"},[T("div",null,[T("dt",null,"透明度"),T("dd",null,"曲线或固定;曲线模式可选“跟随导出 / 线性 / 贝塞尔”。")]),T("div",null,[T("dt",null,"图片资源"),T("dd",null,"“+”新增,可上传单图或序列帧;多张图片按权重随机。每张可调缩放、轴心、颜色(固定/随机/生命周期渐变)、混合模式(正常/相加/相乘/滤色)、独立透明度(关/固定/曲线)。")]),T("div",null,[T("dt",null,"序列帧"),T("dd",null,"播放方式:单次隐藏 / 单次定格 / 正向循环 / 反向循环,可设每秒帧数。")])],-1)])],512),[[Ss,s.value[5]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[6]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[6]?"true":"false",onClick:a[6]||(a[6]=l=>s.value[6]=!s.value[6])},[a[28]||(a[28]=T("span",{class:"mnum"},"7",-1)),a[29]||(a[29]=T("span",{class:"mtitle"},"修改器",-1)),T("span",hF,ye(s.value[6]?"▾":"▸"),1)],8,cF),ce(T("div",uF,[...a[30]||(a[30]=[Qs('
移动噪声
强度、波动范围、时间流速,让粒子轨迹产生抖动。
重力 / 风力
固定或随机强度、方向,以及生命周期内强度曲线。
力场
中心 X/Y、强度(正吸负斥)、半径、衰减(恒定/线性/反比)。
吸附
延迟后把粒子吸到指定点,到达范围即死亡;可直线或曲线。
拖尾
独立拖尾图片(多资源按权重)、旋转、拖尾骨骼数、拖尾比例;长度/宽度可固定或随机并支持放大;可加生命周期长度曲线与形状曲线;颜色/透明度可跟随粒子、固定或曲线。
发射器跟随
跟随某条路径(局部/世界、正/反向、进度曲线),或跟随 Spine 骨骼(选中的骨骼 + 偏移)。
碰撞 + 阻尼
选择场景中已启用的碰撞对象参与,并设置速度阻尼。
',1)])],512),[[Ss,s.value[6]]])],2),T("section",{class:Ae(["help-section help-module",{open:s.value[7]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[7]?"true":"false",onClick:a[7]||(a[7]=l=>s.value[7]=!s.value[7])},[a[31]||(a[31]=T("span",{class:"mnum"},"8",-1)),a[32]||(a[32]=T("span",{class:"mtitle"},"导出设置",-1)),T("span",fF,ye(s.value[7]?"▾":"▸"),1)],8,dF),ce(T("div",mF,[...a[33]||(a[33]=[Qs('
图片路径
写入 Spine 的 images 路径,例如 ./images/。
Spine 版本
3.8 / 4.0 / 4.1 / 4.2 / 4.3。
关键帧曲线
线性或平滑贝塞尔;出生、死亡、突变仍使用阶跃关键帧。
导出 FPS
修改 FPS 会保持动画实际秒数不变;“不写 fps”只省略元数据。
其它
整数帧对齐、骨骼对象池、排除无内容动画。
导出按钮
“导出 Spine Json”生成骨骼动画文件;“导出 images 包”单独下载图片 ZIP;“导出 .spine 包”需要连接器。
',1)])],512),[[Ss,s.value[7]]])],2),T("section",{class:Ae(["help-section help-module help-connector",{open:s.value[8]}])},[T("button",{type:"button",class:"help-module-head","aria-expanded":s.value[8]?"true":"false",onClick:a[8]||(a[8]=l=>s.value[8]=!s.value[8])},[a[34]||(a[34]=T("span",{class:"mnum"},"9",-1)),a[35]||(a[35]=T("span",{class:"mtitle"},"连接器(Spine 连接器)使用说明",-1)),T("span",gF,ye(s.value[8]?"▾":"▸"),1)],8,pF),ce(T("div",vF,[...a[36]||(a[36]=[Qs('

连接器用于把网页生成的 JSON 和图片,调用你电脑上已安装并激活的 Spine,转换成可编辑的 .spine 工程。

前置
电脑已安装并激活 Spine;并已启动桌面版连接器APP。
网页端
导出区状态显示“连接器可用 · Spine 已就绪”后,点击“导出 .spine 包”。
首次授权
生产网站首次连接会显示“授权当前网站”;点击后在本机确认页核对完整来源(协议 + 域名 + 端口),再点“允许此网站”。授权一次后本机会保存白名单。本地 127.0.0.1:5173 默认允许。
路径设置
连接器自动检测 Spine 安装位置;检测不到时可在桌面窗口手动指定:Windows 选 Spine.com,macOS 选 Spine.app/Contents/MacOS/Spine。
下载结果
得到 ZIP 包,内含 .spine 工程和图片目录(如 images/star.png)。
版本
连接器按请求与 JSON 内的版本自动匹配 3.8~4.3,使用最新可用补丁。
安全
仅监听本机 127.0.0.1:27843;授权与白名单保存在连接器里;文件在临时目录转换后清理,并有大小限制。
',2)])],512),[[Ss,s.value[8]]])],2),a[38]||(a[38]=T("section",{class:"help-section help-export"},[T("h3",null,"配置与导出有什么区别?"),T("p",null,[T("b",null,"保存配置"),gt("会保存编辑器中的全部对象和参数,之后可以继续修改;"),T("b",null,"导出 Spine Json"),gt("只导出显示中的粒子系统,并把跟随、碰撞和拖尾结果烘焙为独立动画数据。")])],-1))])])])):xe("",!0)}}),Jt=(i,e)=>{const t=i.__vccOpts||i;for(const[s,n]of e)t[s]=n;return t},xF=Jt(yF,[["__scopeId","data-v-78204b9d"]]);function ia(i){const e=()=>{window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",e),window.removeEventListener("pointercancel",e)};window.addEventListener("pointermove",i),window.addEventListener("pointerup",e),window.addEventListener("pointercancel",e)}function ui(i,e,t){const s=i.holder.value,n=i.app(),r=s.getBoundingClientRect(),o=Math.max(1e-4,i.store.editor.viewScale),a=e-r.left,l=t-r.top;return{x:(a-n.screen.width/2-i.store.editor.viewX)/o,y:-(l-n.screen.height*.5-i.store.editor.viewY)/o}}function bF(i,e){const t=i.holder.value,s=i.app(),n=i.store,r=t.getBoundingClientRect(),o=e.clientX-r.left,a=e.clientY-r.top,l=e.deltaY<0?1.12:1/1.12,c=n.editor.viewScale,h=Math.max(.01,c*l),u=s.screen.width/2,d=s.screen.height*.5,f=n.editor.viewX,p=n.editor.viewY,m=(o-u-f)/c,g=(a-d-p)/c;n.editor.viewX=o-u-m*h,n.editor.viewY=a-d-g*h,n.editor.viewScale=h}function wF(i,e,t){const s=i.store,n=s.editor.viewX,r=s.editor.viewY;ia(o=>{s.editor.viewX=n+(o.clientX-e),s.editor.viewY=r+(o.clientY-t)})}function Xw(i,e){const t=Math.max(.01,i.store.editor.viewScale*e);i.store.editor.viewScale=t}function SF(i){Xw(i,1.2)}function MF(i){Xw(i,1/1.2)}function TF(i){i.store.editor.viewScale=1,i.store.editor.viewX=0,i.store.editor.viewY=0}function _F(i){i.store.editor.viewScale=1,i.store.editor.viewX=0,i.store.editor.viewY=0}function CF(i){i.store.settings.showGrid=!i.store.settings.showGrid}const AF={class:"topbar"},EF=["disabled"],IF={class:"tool-group"},RF={class:"tool-group"},PF={key:0,class:"background-panel"},kF=["disabled"],FF=["title"],OF={class:"background-position-row"},LF={class:"background-opacity-row"},BF={class:"zoom-pct"},NF=Zt({__name:"StageToolbar",props:{ctx:{},activeTool:{},showSettings:{type:Boolean},showHelp:{type:Boolean}},emits:["update:activeTool","update:showSettings","update:showHelp","clear-background","background-file"],setup(i,{emit:e}){const t=i,s=e,n=yo(),r=Fe(!1),o=Fe(null),a=De(()=>n.settings.backgroundImageName);function l(m){s("update:activeTool",t.activeTool===m?"":m)}function c(){r.value=!r.value,r.value&&s("update:showSettings",!1)}function h(){const m=!t.showSettings;s("update:showSettings",m),m&&(r.value=!1)}function u(){s("update:showHelp",!0),r.value=!1,s("update:showSettings",!1)}function d(m){s("background-file",m)}function f(m=!0){o.value&&(o.value.value=""),s("clear-background",m)}function p(){$w()}return(m,g)=>(z(),J("div",AF,[T("button",{class:"settings-btn",onClick:h,title:"系统设置"},"系统设置"),T("button",{class:"undo-btn",disabled:R(gu).undoCount===0,onClick:p,title:"撤回上一步 (Ctrl+Z)"},"↶",8,EF),T("div",IF,[T("button",{class:Ae(["tool-btn",{on:i.activeTool===""}]),onClick:g[0]||(g[0]=v=>l("")),title:"拖动画布 (Q)"},"✋",2),T("button",{class:Ae(["tool-btn",{on:i.activeTool==="translate"}]),onClick:g[1]||(g[1]=v=>l("translate")),title:"位移 (W)"},"✥",2),T("button",{class:Ae(["tool-btn",{on:i.activeTool==="rotate"}]),onClick:g[2]||(g[2]=v=>l("rotate")),title:"旋转 (E)"},"⟳",2),T("button",{class:Ae(["tool-btn",{on:i.activeTool==="scale"}]),onClick:g[3]||(g[3]=v=>l("scale")),title:"缩放 (R)"},"⤢",2)]),T("div",RF,[T("button",{class:"tool-btn",onClick:g[4]||(g[4]=v=>R(SF)(i.ctx)),title:"放大"},"+"),T("button",{class:"tool-btn",onClick:g[5]||(g[5]=v=>R(MF)(i.ctx)),title:"缩小"},"-"),T("button",{class:"tool-btn",onClick:g[6]||(g[6]=v=>R(TF)(i.ctx)),title:"适配画布"},"⤢"),T("button",{class:Ae(["tool-btn",{on:R(n).settings.showGrid}]),onClick:g[7]||(g[7]=v=>R(CF)(i.ctx)),title:"切换网格"},"▦",2),T("button",{class:"tool-btn",onClick:g[8]||(g[8]=v=>R(_F)(i.ctx)),title:"重置视图"},"⟳")]),T("div",{class:"background-menu",onClick:g[14]||(g[14]=Ke(()=>{},["stop"]))},[T("button",{class:Ae(["background-btn",{on:r.value}]),title:"背景图显示设置",onClick:c},"背景图",2),r.value?(z(),J("div",PF,[T("button",{class:"background-upload",onClick:g[9]||(g[9]=v=>{var y;return(y=o.value)==null?void 0:y.click()})},ye(a.value?"更换图像":"上传图像"),1),T("button",{class:"background-clear",disabled:!a.value,onClick:g[10]||(g[10]=v=>f())},"清除背景",8,kF),T("input",{ref_key:"backgroundFileInput",ref:o,class:"background-file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:d},null,544),T("div",{class:"background-file-name",title:a.value},ye(a.value||"未上传图像"),9,FF),T("div",OF,[T("label",null,[g[15]||(g[15]=T("span",null,"X",-1)),ce(T("input",{"onUpdate:modelValue":g[11]||(g[11]=v=>R(n).settings.backgroundX=v),type:"number",step:"1","aria-label":"背景图 X 偏移"},null,512),[[je,R(n).settings.backgroundX,void 0,{number:!0}]])]),T("label",null,[g[16]||(g[16]=T("span",null,"Y",-1)),ce(T("input",{"onUpdate:modelValue":g[12]||(g[12]=v=>R(n).settings.backgroundY=v),type:"number",step:"1","aria-label":"背景图 Y 偏移"},null,512),[[je,R(n).settings.backgroundY,void 0,{number:!0}]])])]),T("label",LF,[g[17]||(g[17]=T("span",null,"透明度",-1)),ce(T("input",{"onUpdate:modelValue":g[13]||(g[13]=v=>R(n).settings.backgroundOpacity=v),type:"range",min:"0",max:"1",step:"0.01","aria-label":"背景图透明度"},null,512),[[je,R(n).settings.backgroundOpacity,void 0,{number:!0}]]),T("b",null,ye(Math.round(R(n).settings.backgroundOpacity*100))+"%",1)])])):xe("",!0)]),T("button",{class:Ae(["help-btn",{on:i.showHelp}]),title:"查看使用说明",onClick:u},"使用说明",2),T("span",BF,ye(Math.round(R(n).editor.viewScale*100))+"%",1)]))}}),DF=Jt(NF,[["__scopeId","data-v-4749834a"]]),UF={key:0,class:"settings-panel"},$F={class:"sp-head"},XF={class:"sp-switch-row"},VF={class:"sp-switch-control"},YF={class:"sp-row"},GF={class:"sp-chk"},jF={class:"sp-chk"},HF={class:"sp-row"},WF={class:"sp-row"},zF={class:"sp-chk"},qF={class:"sp-chk"},KF={class:"sp-row"},ZF={class:"sp-row"},JF={class:"sp-row"},QF={class:"sp-hex"},e3={class:"sp-chk"},t3=Zt({__name:"StageSettingsPanel",props:{show:{type:Boolean}},emits:["close"],setup(i,{emit:e}){const t=e,s=yo();function n(o){$k(s,Number(o.target.value))}function r(){s.settings.bonePointDrawSize=Math.min(10,Math.max(.1,Number(s.settings.bonePointDrawSize)||1)),s.settings.boneAxisDrawSize=Math.min(10,Math.max(.1,Number(s.settings.boneAxisDrawSize)||2))}return(o,a)=>i.show?(z(),J("div",UF,[T("div",$F,[a[15]||(a[15]=gt("系统设置 ",-1)),T("button",{class:"sp-close",onClick:a[0]||(a[0]=l=>t("close"))},"✕")]),a[29]||(a[29]=T("div",{class:"sp-section-title"},"界面布局",-1)),T("label",XF,[a[17]||(a[17]=T("span",null,"参数面板位置",-1)),T("span",VF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[1]||(a[1]=l=>R(s).settings.parameterPanelOnRight=l),"aria-label":"参数面板显示在右侧"},null,512),[[yt,R(s).settings.parameterPanelOnRight]]),a[16]||(a[16]=T("span",{class:"sp-switch-ui","aria-hidden":"true"},null,-1)),T("b",null,ye(R(s).settings.parameterPanelOnRight?"右侧":"左侧"),1)])]),a[30]||(a[30]=T("div",{class:"sp-divider"},null,-1)),a[31]||(a[31]=T("div",{class:"sp-section-title"},"操作历史",-1)),T("label",YF,[a[18]||(a[18]=T("span",null,"最大撤回步数",-1)),ce(T("input",{class:"sp-num sp-undo-limit",type:"number",min:"1",max:"200","onUpdate:modelValue":a[2]||(a[2]=l=>R(s).settings.undoLimit=l),"aria-label":"最大撤回步数",onChange:n},null,544),[[je,R(s).settings.undoLimit,void 0,{number:!0}]])]),a[32]||(a[32]=T("div",{class:"sp-divider"},null,-1)),a[33]||(a[33]=T("div",{class:"sp-section-title"},"画布辅助显示",-1)),T("label",GF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[3]||(a[3]=l=>R(s).settings.showEmitter=l)},null,512),[[yt,R(s).settings.showEmitter]]),a[19]||(a[19]=gt("发射点",-1))]),T("label",jF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[4]||(a[4]=l=>R(s).settings.showBones=l)},null,512),[[yt,R(s).settings.showBones]]),a[20]||(a[20]=gt("骨骼连线",-1))]),R(s).settings.showBones?(z(),J(Ce,{key:0},[T("label",HF,[a[21]||(a[21]=T("span",null,"骨骼点绘制大小",-1)),ce(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[5]||(a[5]=l=>R(s).settings.bonePointDrawSize=l),"aria-label":"骨骼点绘制大小",onChange:r},null,544),[[je,R(s).settings.bonePointDrawSize,void 0,{number:!0}]])]),T("label",WF,[a[22]||(a[22]=T("span",null,"坐标轴绘制大小",-1)),ce(T("input",{class:"sp-num",type:"number",min:"0.1",max:"10",step:"0.1","onUpdate:modelValue":a[6]||(a[6]=l=>R(s).settings.boneAxisDrawSize=l),"aria-label":"坐标轴绘制大小",onChange:r},null,544),[[je,R(s).settings.boneAxisDrawSize,void 0,{number:!0}]])])],64)):xe("",!0),T("label",zF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[7]||(a[7]=l=>R(s).settings.showSkinMesh=l)},null,512),[[yt,R(s).settings.showSkinMesh]]),a[23]||(a[23]=gt("蒙皮网格",-1))]),a[34]||(a[34]=T("div",{class:"sp-divider"},null,-1)),T("label",qF,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[8]||(a[8]=l=>R(s).settings.tickEnabled=l)},null,512),[[yt,R(s).settings.tickEnabled]]),a[24]||(a[24]=gt("启用刻度",-1))]),R(s).settings.tickEnabled?(z(),J(Ce,{key:1},[T("label",KF,[a[25]||(a[25]=T("span",null,"刻度文字大小",-1)),ce(T("input",{type:"range",min:"8",max:"40",step:"1","onUpdate:modelValue":a[9]||(a[9]=l=>R(s).settings.axisFontSize=l)},null,512),[[je,R(s).settings.axisFontSize,void 0,{number:!0}]]),ce(T("input",{type:"number",min:"8",max:"40","onUpdate:modelValue":a[10]||(a[10]=l=>R(s).settings.axisFontSize=l),class:"sp-num"},null,512),[[je,R(s).settings.axisFontSize,void 0,{number:!0}]])]),T("label",ZF,[a[26]||(a[26]=T("span",null,"刻度线粗细",-1)),ce(T("input",{type:"range",min:"1",max:"5",step:"0.5","onUpdate:modelValue":a[11]||(a[11]=l=>R(s).settings.tickWidth=l)},null,512),[[je,R(s).settings.tickWidth,void 0,{number:!0}]]),ce(T("input",{type:"number",min:"1",max:"5","onUpdate:modelValue":a[12]||(a[12]=l=>R(s).settings.tickWidth=l),class:"sp-num"},null,512),[[je,R(s).settings.tickWidth,void 0,{number:!0}]])]),T("label",JF,[a[27]||(a[27]=T("span",null,"坐标轴颜色",-1)),ce(T("input",{type:"color","onUpdate:modelValue":a[13]||(a[13]=l=>R(s).settings.axisColor=l),class:"sp-colr"},null,512),[[je,R(s).settings.axisColor]]),T("span",QF,ye(R(s).settings.axisColor),1)]),T("label",e3,[ce(T("input",{type:"checkbox","onUpdate:modelValue":a[14]||(a[14]=l=>R(s).settings.showAxisLabels=l)},null,512),[[yt,R(s).settings.showAxisLabels]]),a[28]||(a[28]=gt("显示刻度数值",-1))])],64)):xe("",!0),a[35]||(a[35]=T("div",{class:"sp-cache-note"},"整个系统设置会自动保存到当前浏览器",-1))])):xe("",!0)}}),s3=Jt(t3,[["__scopeId","data-v-1bba85d9"]]);class ff{constructor(){S(this,"sprite",null);S(this,"texture",null);S(this,"loadVersion",0)}createSprite(e){const t=new _r(ze.EMPTY);return t.anchor.set(.5),t.visible=!1,e.addChild(t),this.sprite=t,t}applyTransform(e,t,s){this.sprite&&(this.sprite.position.set(Number(e)||0,-(Number(t)||0)),this.sprite.alpha=Math.min(1,Math.max(0,Number(s)||0)))}async syncTexture(e){const t=++this.loadVersion;if(!e){this.sprite&&(this.sprite.texture=ze.EMPTY,this.sprite.visible=!1),this.texture&&this.texture.destroy(!0),this.texture=null;return}try{const s=await ze.fromURL(e);if(t!==this.loadVersion||!this.sprite){s.destroy(!0);return}const n=this.texture;this.texture=s,this.sprite.texture=s,this.sprite.visible=!0,n&&n.destroy(!0)}catch(s){console.error("背景图恢复失败",s)}}static clearStoreBackground(e,t){e.settings.backgroundImageData="",e.settings.backgroundImageName="",t&&(e.settings.backgroundX=0,e.settings.backgroundY=0,e.settings.backgroundOpacity=1)}static async handleFileChange(e,t){var r;const s=t.target,n=(r=s.files)==null?void 0:r[0];if(n)try{e.settings.backgroundImageData=await Dc(n),e.settings.backgroundImageName=n.name}catch(o){console.error("背景图加载失败",o)}finally{s.value=""}}destroy(){this.loadVersion++,this.texture&&this.texture.destroy(!0),this.texture=null,this.sprite=null}}class i3{constructor(e){S(this,"selectedNodes",new Set);S(this,"suppressNextDoubleClick",!1);this.ctx=e}resetSelection(){this.selectedNodes.clear()}activePath(){const e=this.ctx.store;if(e.activeObjectType!=="path")return null;const t=e.paths.find(s=>s.id===e.activeObjectId)||null;return(t==null?void 0:t.visible)===!1?null:t}pathInsertIndex(e,t,s){if(e.points.length<2)return e.points.length;const n=e.closed?e.points.length:e.points.length-1;let r=e.points.length,o=1/0;for(let a=0;aMath.hypot(l.x-n.x,l.y-n.y)<=r);if(o>=0){t.points.splice(o,1),this.selectedNodes.clear();return}const a=this.pathInsertIndex(t,n.x,n.y);t.points.splice(a,0,{x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0}),this.selectedNodes.clear(),this.selectedNodes.add(a)}onPointerDown(e){const t=this.activePath();if(!t||!t.enabled)return!1;const s=ui(this.ctx,e.clientX,e.clientY),n=Io(t,s.x,s.y),r=9/Math.max(.01,this.ctx.store.editor.viewScale);if(e.detail>=2){if(t.points.findIndex(u=>Math.hypot(u.x-n.x,u.y-n.y)<=r)>=0)return!0;const c={x:n.x,y:n.y,inX:0,inY:0,outX:0,outY:0},h=this.pathInsertIndex(t,n.x,n.y);return t.points.splice(h,0,c),this.selectedNodes.clear(),this.selectedNodes.add(h),this.suppressNextDoubleClick=!0,ia(u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y);c.outX=f.x-c.x,c.outY=f.y-c.y,c.inX=-c.outX,c.inY=-c.outY}),!0}let o=null;for(const l of this.selectedNodes){const c=t.points[l];c&&(Math.hypot(c.x+c.inX-n.x,c.y+c.inY-n.y)<=r&&(o={index:l,side:"in"}),Math.hypot(c.x+c.outX-n.x,c.y+c.outY-n.y)<=r&&(o={index:l,side:"out"}))}if(o){const l=t.points[o.index],c=o.side==="in"?Math.hypot(l.outX,l.outY):Math.hypot(l.inX,l.inY);return ia(u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y),p=f.x-l.x,m=f.y-l.y;if(o.side==="in"?(l.inX=p,l.inY=m):(l.outX=p,l.outY=m),!u.altKey){const g=Math.max(1e-4,Math.hypot(p,m)),v=u.shiftKey?g:c;o.side==="in"?(l.outX=-p/g*v,l.outY=-m/g*v):(l.inX=-p/g*v,l.inY=-m/g*v)}}),!0}const a=t.points.findIndex(l=>Math.hypot(l.x-n.x,l.y-n.y)<=r);if(a>=0){if(e.altKey)return this.selectedNodes.delete(a),!0;e.ctrlKey||e.metaKey?this.selectedNodes.add(a):this.selectedNodes.has(a)||(this.selectedNodes.clear(),this.selectedNodes.add(a));const l=n,c=[...this.selectedNodes].map(u=>({index:u,x:t.points[u].x,y:t.points[u].y}));return ia(u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y);for(const p of c)t.points[p.index].x=p.x+f.x-l.x,t.points[p.index].y=p.y+f.y-l.y}),!0}if(e.altKey&&!e.ctrlKey&&!e.metaKey)return this.selectedNodes.clear(),!0;if(e.ctrlKey||e.metaKey||e.altKey){const l=n,c=e.altKey,h=u=>{const d=ui(this.ctx,u.clientX,u.clientY),f=Io(t,d.x,d.y),p=Math.min(l.x,f.x),m=Math.max(l.x,f.x),g=Math.min(l.y,f.y),v=Math.max(l.y,f.y);t.points.forEach((y,x)=>{y.x>=p&&y.x<=m&&y.y>=g&&y.y<=v&&(c?this.selectedNodes.delete(x):this.selectedNodes.add(x))}),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),!0}return!1}}class n3{constructor(e,t){this.ctx=e,this.getTool=t}onColliderPointerDown(e){const t=this.ctx.store;if(t.activeObjectType!=="collision")return!1;const s=t.colliders.find(y=>y.id===t.activeObjectId);if(!(s!=null&&s.enabled)||s.visible===!1)return!1;const n=ui(this.ctx,e.clientX,e.clientY),r=s.rotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),l=Math.max(1e-4,Math.abs(s.scaleX??1)),c=Math.max(1e-4,Math.abs(s.scaleY??1)),h=n.x-s.x,u=n.y-s.y,d=(o*h+a*u)/l,f=(-a*h+o*u)/c;if(!(s.shape==="circle"?Math.hypot(d,f)<=s.radius:s.shape==="ellipse"?Math.hypot(d/Math.max(1,s.radiusX),f/Math.max(1,s.radiusY))<=1:Math.abs(d)<=s.width*.5&&Math.abs(f)<=s.height*.5))return!1;const m=s.x,g=s.y,v=n;return ia(y=>{const x=ui(this.ctx,y.clientX,y.clientY);s.x=m+x.x-v.x,s.y=g+x.y-v.y}),!0}onForceFieldDown(e){const t=this.ctx.store.systems.find(h=>h.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const s=t==null?void 0:t.config;if(!(s!=null&&s.forceField)||!s.showForceFieldShape||s.forceRadius<=0)return!1;const n=ui(this.ctx,e.clientX,e.clientY);if(Math.hypot(n.x-s.forceCenterX,n.y-s.forceCenterY)>s.forceRadius)return!1;const o=s.forceCenterX,a=s.forceCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const l=h=>{const u=ui(this.ctx,h.clientX,h.clientY);s.forceCenterX=o+u.x-n.x,s.forceCenterY=a+u.y-n.y},c=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",c),window.removeEventListener("pointercancel",c)};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",c),window.addEventListener("pointercancel",c),e.preventDefault(),!0}onAttractionDown(e){const t=this.ctx.store.systems.find(u=>u.id===this.ctx.store.activeId);if((t==null?void 0:t.visible)===!1)return!1;const s=t==null?void 0:t.config;if(!(s!=null&&s.attraction)||!s.showAttractionShape)return!1;const n=ui(this.ctx,e.clientX,e.clientY),r=Math.max(s.attractionRadius,12/Math.max(1e-4,this.ctx.store.editor.viewScale));if(Math.hypot(n.x-s.attractionCenterX,n.y-s.attractionCenterY)>r)return!1;const a=s.attractionCenterX,l=s.attractionCenterY;this.ctx.holder.value&&(this.ctx.holder.value.style.cursor="grabbing");const c=u=>{const d=ui(this.ctx,u.clientX,u.clientY);s.attractionCenterX=a+d.x-n.x,s.attractionCenterY=l+d.y-n.y},h=()=>{this.ctx.holder.value&&(this.ctx.holder.value.style.cursor=""),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",h)};return window.addEventListener("pointermove",c),window.addEventListener("pointerup",h),window.addEventListener("pointercancel",h),e.preventDefault(),!0}selectedTransformTarget(){const e=this.ctx.store,t=e.activeObjectId;if(e.activeObjectType==="particle"){const r=e.systems.find(a=>a.id===t);if(!r||r.visible===!1)return null;const o=r.config;return{x:o.centerX,y:o.centerY,rotation:o.rootRotation,scaleX:o.rootScaleX??1,scaleY:o.rootScaleY??1,setPosition:(a,l)=>{o.centerX=a,o.centerY=l},setRotation:a=>{o.rootRotation=a},setScale:(a,l)=>{o.rootScaleX=a,o.rootScaleY=l}}}const n=(e.activeObjectType==="collision"?e.colliders:e.activeObjectType==="path"?e.paths:e.spines).find(r=>r.id===t);return!n||n.visible===!1?null:{x:Number(n.x)||0,y:Number(n.y)||0,rotation:Number(n.rotation)||0,scaleX:Math.max(.05,Number(n.scaleX)||1),scaleY:Math.max(.05,Number(n.scaleY)||1),setPosition:(r,o)=>{n.x=r,n.y=o},setRotation:r=>{n.rotation=r},setScale:(r,o)=>{n.scaleX=r,n.scaleY=o}}}onGizmoDown(e){const t=this.selectedTransformTarget();if(!t)return;const s=this.ctx.app(),n=this.ctx.store,r=n.editor.viewScale,o=this.ctx.holder.value.getBoundingClientRect(),a=o.left+s.screen.width/2+n.editor.viewX+t.x*r,l=o.top+s.screen.height*.5+n.editor.viewY+-t.y*r,c=e.clientX,h=e.clientY,u=this.getTool(),d=t.x,f=t.y,p=t.rotation,m=t.scaleX,g=t.scaleY,v=Math.hypot(c-a,h-l)||1,y=Math.atan2(h-l,c-a);ia(M=>{const C=(M.clientX-c)/r,w=(M.clientY-h)/r;if(u==="translate")t.setPosition(d+C,f-w);else if(u==="rotate"){const b=Math.atan2(M.clientY-l,M.clientX-a);t.setRotation(p-(b-y)*180/Math.PI)}else if(u==="scale"){const _=Math.hypot(M.clientX-a,M.clientY-l)/v;t.setScale(Math.max(.05,m*_),Math.max(.05,g*_))}})}}function Jv(i,e,t,s,n){const r=1-n;return r*r*r*i+3*r*r*n*e+3*r*n*n*t+n*n*n*s}function Qv(i,e,t){const s=i.rotation*Math.PI/180,n=Math.cos(s),r=Math.sin(s),o=Math.max(1e-4,Math.abs(i.scaleX??1)),a=Math.max(1e-4,Math.abs(i.scaleY??1));return{x:i.x+n*e*o-r*t*a,y:i.y+r*e*o+n*t*a}}function Pp(i,e){if(!i.points.length)return null;if(i.points.length===1)return{...Qv(i,i.points[0].x,i.points[0].y),angle:i.rotation};const t=i.closed?i.points.length:i.points.length-1,s=[];let n=0;for(let p=0;p0&&v===0)continue;const y=v/20,x=Jv(m.x,m.x+m.outX,g.x+g.inX,g.x,y),M=Jv(m.y,m.y+m.outY,g.y+g.inY,g.y,y),C=Qv(i,x,M),w=s[s.length-1];w&&(n+=Math.hypot(C.x-w.x,C.y-w.y)),s.push({...C,distance:n})}}const r=Math.min(1,Math.max(0,e))*n;let o=s.findIndex(p=>p.distance>=r);o<0&&(o=s.length-1);const a=s[o],l=s[Math.max(0,o-1)],c=s[Math.min(s.length-1,o+1)],h=l.distance,u=o>0?(r-h)/Math.max(1e-4,a.distance-h):0,d=l.x+(a.x-l.x)*Math.min(1,Math.max(0,u)),f=l.y+(a.y-l.y)*Math.min(1,Math.max(0,u));return{x:d,y:f,angle:Math.atan2(c.y-l.y,c.x-l.x)*180/Math.PI}}function r3(i,e,t){if(e.renderLayerMode!=="slot")return null;const s=i.find(o=>o.id===e.renderLayerSpineId&&o.enabled&&o.status==="ready");if(!s)return null;const n=s.slots||[],r=n.find(o=>o.name===e.renderLayerSlotName);if(!r)return null;if(e.renderLayerSlotPosition==="below"){let o="";if(t!=null&&t.length){const a=t.indexOf(r.name);if(a===0)return null;a>0&&(o=t[a-1])}if(!o){const a=n.filter(l=>l.orderc.order-l.order)[0];if(!a)return null;o=a.name}return{spineId:s.id,slotName:o,targetSlotName:r.name,followAttachment:!1}}return{spineId:s.id,slotName:r.name,targetSlotName:r.name,followAttachment:e.renderLayerFollowAttachment}}function Ah(i,e,t,s=Math.max(1e-4,Math.abs(i.rootScaleX)),n=Math.max(1e-4,Math.abs(i.rootScaleY))){const r=-i.rootRotation*Math.PI/180,o=Math.cos(r),a=Math.sin(r),l=e-i.centerX,c=-t+i.centerY;return{x:(o*l+a*c)/s,y:(-a*l+o*c)/n}}function o3(i,e,t){const s=Pp(e,t);if(!s)return null;const n=Ah(i,s.x,s.y),r=s.angle*Math.PI/180,o=Ah(i,s.x+Math.cos(r),s.y+Math.sin(r)),a=Math.atan2(o.y-n.y,o.x-n.x)*180/Math.PI;return{...n,angle:a}}function a3(i,e){return i.colliders.map(t=>{if(!t.followPath||!t.followPathId)return t;const s=i.paths.find(h=>h.id===t.followPathId&&h.enabled);if(!(s!=null&&s.points.length))return t;const n=Math.max(.05,Number(t.followDuration)||2),r=Math.min(1,Math.max(0,e/n)),o=Array.isArray(t.followCurve)?t.followCurve:[{x:0,y:0},{x:1,y:1}],a=t.followCurveMode==="跟随导出"?i.settings.exportSettings.keyframeCurve==="bezier"?"bezier":"linear":t.followCurveMode==="贝塞尔"?"bezier":"linear",l=Math.min(1,Math.max(0,E1(o,r,a))),c=Pp(s,l);return c?{...t,x:c.x,y:c.y,rotation:t.rotation+(t.followPathRotation?c.angle:0)}:t})}class l3{constructor(){S(this,"emitters",new Map);S(this,"configs",new Map);S(this,"slotGroups",new Map)}sync(e,t,s,n,r=null){for(const[a,l]of this.emitters){const c=e.systems.find(h=>h.id===a);(!c||this.configs.get(a)!==c.config)&&(l.removeFromParent(),l.destroy({children:!0}),this.emitters.delete(a),this.configs.delete(a))}for(const a of e.systems){s&&!a.config.texture&&(a.config.texture=s);const l=Dn(a.config);if(n)for(const h of l.trailResources)!h.texture&&(h.previewUrl==="/images/trail.png"||h.previewUrl==="/trails/trail.png")&&(h.texture=n);if(s)for(const h of l.imageResources)!h.texture&&h.textureName==="star"&&(h.texture=s);if(this.emitters.has(a.id))continue;const c=new Nv(a.config);t.addChild(c),this.emitters.set(a.id,c),this.configs.set(a.id,a.config)}const o=new Set;for(const a of e.systems){const l=this.emitters.get(a.id);if(!l)continue;const c=r&&a.config.renderLayerMode==="slot"?r.getDrawOrder(a.config.renderLayerSpineId):null,h=r3(e.spines,a.config,c),u=h&&r?this.ensureSlotGroup(h,r,a.config):null;u?(o.add(u.key),l.parent!==u.compensator&&u.compensator.addChild(l)):l.parent!==t&&t.addChild(l)}for(const[a,l]of[...this.slotGroups])if(!o.has(a)){for(const c of[...l.compensator.children])c instanceof Nv&&c.parent===l.compensator&&t.addChild(c);r==null||r.detachSlotObject(l.spineId,l.slotName,l.wrapper),l.wrapper.removeFromParent(),l.wrapper.removeChild(l.compensator),l.compensator.destroy(),l.wrapper.destroy(),this.slotGroups.delete(a)}}ensureSlotGroup(e,t,s){const n=`${e.spineId}:${e.targetSlotName}:${s.renderLayerSlotPosition}`;let r=this.slotGroups.get(n);if(!r){const o=new gs,a=new gs;o.addChild(a),r={key:n,spineId:e.spineId,slotName:e.slotName,wrapper:o,compensator:a,followAttachment:s.renderLayerFollowAttachment,attached:!1},this.slotGroups.set(n,r)}return(!r.attached||!r.wrapper.parent||r.slotName!==e.slotName)&&(r.wrapper.parent&&t.detachSlotObject(r.spineId,r.slotName,r.wrapper),r.slotName=e.slotName,r.attached=t.attachSlotObject(r.spineId,r.slotName,r.wrapper,e.followAttachment)),r.attached?r:null}updateRenderCompensation(e,t){if(t)for(const s of this.slotGroups.values()){if(!s.attached||!s.wrapper.parent)continue;const n=e.spines.find(o=>o.id===s.spineId);if(!n)continue;const r=t.getSlotParentMatrix(s.spineId,s.slotName,n);r&&(r.invert(),s.compensator.transform.setFromMatrix(r))}}destroy(e){for(const t of this.slotGroups.values()){for(const s of[...t.compensator.children])t.compensator.removeChild(s);t.wrapper.removeFromParent(),t.compensator.destroy(),t.wrapper.destroy()}this.slotGroups.clear();for(const[t,s]of this.emitters)s.removeFromParent(),s.destroy({children:!0}),this.emitters.delete(t),this.configs.delete(t)}}async function c3(){const[i,e]=await Promise.all([ze.fromURL("/images/star.png"),ze.fromURL("/images/trail.png")]);return{dotTex:i,trailTex:e}}function h3(i,e,t){for(const s of i.systems){s.config.texture=e;const n=Dn(s.config);if(t)for(const r of n.trailResources)!r.texture&&(r.previewUrl==="/images/trail.png"||r.previewUrl==="/trails/trail.png")&&(r.texture=t);for(const r of n.imageResources)!r.texture&&r.textureName==="star"&&(r.texture=e)}}const u3={class:"stage-wrap"},d3={key:0,class:"hud"},f3={class:"hud-number hud-system-count"},m3={class:"hud-number hud-particle-count"},p3=Zt({__name:"Stage",setup(i){const e=yo(),t=Fe(null),s=Fe(null),n=Fe(!1),r=Fe(!1),o=Fe(""),a=Fe(!1);e.settings.undoLimit>0||(e.settings.undoLimit=20),e.settings.parameterPanelOnRight==null&&(e.settings.parameterPanelOnRight=!0),Number.isFinite(e.settings.backgroundX)||(e.settings.backgroundX=0),Number.isFinite(e.settings.backgroundY)||(e.settings.backgroundY=0),Number.isFinite(e.settings.backgroundOpacity)||(e.settings.backgroundOpacity=1),e.settings.backgroundImageName==null&&(e.settings.backgroundImageName=""),e.settings.backgroundImageData==null&&(e.settings.backgroundImageData=""),e.settings.showEmitter==null&&(e.settings.showEmitter=!0),e.settings.showBones==null&&(e.settings.showBones=!1),e.settings.bonePointDrawSize>0||(e.settings.bonePointDrawSize=1),e.settings.boneAxisDrawSize>0||(e.settings.boneAxisDrawSize=2),e.settings.showSkinMesh==null&&(e.settings.showSkinMesh=!1),e.settings.showGrid==null&&(e.settings.showGrid=!0);let l=null,c=null,h=null,u=null,d=null,f=null,p=null,m=null,g=null,v=null,y=null,x=null,M=null,C=null,w=null,b=[],_=0,E=0,F=0,I=0,k=null,B=null;const D=new ff,X=new l3,N={store:e,holder:t,app:()=>l},U=new i3(N),A=new n3(N,()=>o.value);let P=[];const O=new Map;function L(){c=new gs,l.stage.addChild(c),C=new gs,l.stage.addChild(C),D.createSprite(c),M=new Ds,c.addChild(M),w=new ZR,c.addChild(w.container),u=new Ds,c.addChild(u),h=new Ds,c.addChild(h),f=new Ds,c.addChild(f),p=new Ds,c.addChild(p),m=new Ds,c.addChild(m),g=new Ds,c.addChild(g),v=new Ds,c.addChild(v),y=new Ds,c.addChild(y),x=new Ds,c.addChild(x),d=new Ds,c.addChild(d)}function $(fe){if(fe.button===0){if(o.value&&A.selectedTransformTarget()){A.onGizmoDown(fe);return}U.onPointerDown(fe)||A.onColliderPointerDown(fe)||A.onAttractionDown(fe)||A.onForceFieldDown(fe)||wF(N,fe.clientX,fe.clientY)}}function V(fe){U.onStageDoubleClick(fe)}function j(fe){bF(N,fe)}function K(fe=!0){ff.clearStoreBackground(e,fe)}async function ie(fe){await ff.handleFileChange(e,fe)}Vk({canvasElement:t,canvasFocused:a,undo:$w,save:()=>Ow(e),togglePlay:()=>e.togglePlay(),toStart:()=>e.toStart(),setTool:fe=>{o.value=fe}});function re(){c&&X.sync(e,c,k,B,w)}function pe(fe,Y,W,H){const G=Math.max(2,Math.floor(H)||2);if(fe.config.mode==="stream"&&fe.config.streamBehavior==="loop"){Vv(fe,Y,W,G);return}Y.reset();const q=1/Math.max(1,W),se=[];for(let ue=0;ue=Y)continue;const q=X.emitters.get(G.id);if(!q){W=!1;continue}pe(G,q,fe,Y)}W&&(e.timeline.recorded=!0)}function he(){var W,H,G,q;I=requestAnimationFrame(he);const fe=performance.now()/1e3;let Y=fe-_;if(_=fe,Y>.1&&(Y=.1),l&&c){c.scale.set(e.editor.viewScale),c.position.set(l.screen.width/2+e.editor.viewX,l.screen.height*.5+e.editor.viewY),D.applyTransform(e.settings.backgroundX,e.settings.backgroundY,e.settings.backgroundOpacity),FR(e,l,M,C,b);const se=Math.max(1,e.timeline.fps),ue=e.timeline.frame,ne=ue/se;w==null||w.sync(e.spines,ue,se),re(),X.updateRenderCompensation(e,w),P=a3(e,ne);for(const Be of e.systems){const Me=X.emitters.get(Be.id);if(!Me)continue;Me.setFollowExportCurveMode(e.settings.exportSettings.keyframeCurve==="bezier"?"贝塞尔":"线性");const nt=Be.visible!==!1;Me.visible=nt,Me.renderable=nt;const Te=Be.config;Me.scale.set(Te.rootScaleX,Te.rootScaleY);const vs=new Set(Te.collisionColliderIds);Me.setColliders(Te.collision?P.filter(Tt=>vs.has(Tt.id)):[]),Me.setEmitterFollowSpawn(0,0,0);let Ct={x:Te.centerX,y:Te.centerY,rotation:Te.rootRotation};const xt=Te.emitterFollow&&Te.emitterFollowMode==="bone"?e.spines.find(Tt=>Tt.id===Te.emitterFollowSpineId&&Tt.enabled&&Tt.status==="ready"):null,te=xt&&(w==null?void 0:w.getBoneWorldTransform(xt.id,Te.emitterFollowBoneName))||null,oe=Te.emitterFollow&&Te.emitterFollowMode==="path"?e.paths.find(Tt=>Tt.id===Te.emitterFollowPathId&&Tt.enabled):null,lt=Math.max(.05,Te.emitterFollowDuration),It=Math.min(1,Math.max(0,ne/lt)),Rt=Math.min(1,Math.max(0,E1(Te.emitterFollowCurve,It))),tt=Math.min(1,Math.max(0,Te.emitterFollowOffset)),ni=Te.emitterFollowDirection==="reverse"?(1-tt)*(1-Rt):tt+(1-tt)*Rt,rs=oe?Pp(oe,ni):null;if(te){const Tt=Te.emitterFollowBoneOffsetX,vi=Te.emitterFollowBoneOffsetY,As=te.x+Tt,os=te.y+vi,fn=Te.rootRotation+Te.emitterFollowBoneRotation,ri=Math.max(1e-4,Math.abs(Te.rootScaleX*Te.emitterFollowBoneScaleX)),Bi=Math.max(1e-4,Math.abs(Te.rootScaleY*Te.emitterFollowBoneScaleY));if(Ct={x:As,y:os,rotation:fn},Te.emitterFollowSpace==="local")Me.position.set(As,-os),Me.rotation=-fn*Math.PI/180,Me.scale.set(ri,Bi),Me.setSimulationTransform(As,os,fn,ri,Bi);else{Me.position.set(Te.centerX,-Te.centerY),Me.rotation=-Te.rootRotation*Math.PI/180,Me.scale.set(ri,Bi),Me.setSimulationTransform(Te.centerX,Te.centerY,Te.rootRotation,ri,Bi);const Ni=Ah(Te,As,os,ri,Bi),Er=-(fn-Te.rootRotation);Me.setEmitterFollowSpawn(Ni.x,Ni.y,Er)}}else if(rs){const Tt=rs.angle+(Te.emitterFollowDirection==="reverse"?180:0),vi=Te.emitterAngleMode==="direction"?Tt:Te.rootRotation;if(Ct={x:rs.x,y:rs.y,rotation:vi},Te.emitterFollowSpace==="local")Me.position.set(rs.x,-rs.y),Me.rotation=-vi*Math.PI/180,Me.setSimulationTransform(rs.x,rs.y,vi);else{Me.position.set(Te.centerX,-Te.centerY),Me.rotation=-Te.rootRotation*Math.PI/180,Me.setSimulationTransform(Te.centerX,Te.centerY,Te.rootRotation);const As=Ah(Te,rs.x,rs.y),os=Te.emitterAngleMode==="direction"?-(Tt-Te.rootRotation):0;Me.setEmitterFollowSpawn(As.x,As.y,os)}}else Me.position.set(Te.centerX,-Te.centerY),Me.rotation=-Te.rootRotation*Math.PI/180,Me.setSimulationTransform(Te.centerX,Te.centerY,Te.rootRotation);const ss=Te.shape==="path"&&Te.spawnPathId>0&&e.paths.find(Tt=>Tt.id===Te.spawnPathId&&Tt.enabled&&Tt.points.length>0)||null;Me.setSpawnPathSampler(ss?Tt=>o3(Te,ss,Tt):null,(ss==null?void 0:ss.closed)===!0),O.set(Be.id,Ct)}let de=0;const le=[],Re=e.settings.showBones&&e.activeObjectType==="particle"?e.activeObjectId:0,we=(Be,Me,nt)=>{!Be||Be.id!==Re||Be.visible===!1||jR(le,nt,Me.position.x,Me.position.y)},me=e.timeline,Ue=me.fps,Je=1/Math.max(1,Ue);let qe=F,Ze=0;if(me.playing?(E+=Y,Ze=Math.floor(E/Je),Ze>0&&(E-=Ze*Je)):(E=0,ge(Ue)),me.playing&&Ze>0)for(let Be=0;BeCt.id===e.activeId),nt=(Me==null?void 0:Me.config.mode)==="stream"&&Me.config.streamBehavior==="loop"?Sp(Me.config,Ue):null,vs=me.loop&&(nt==null?void 0:nt.start)===me.playbackStart&&nt.end===me.playbackEnd?me.playbackEnd-1:me.playbackEnd;if(me.frame>vs)if(me.loop)me.frame=me.playbackStart;else{me.frame=me.playbackEnd,me.playing=!1;break}}else{for(const Me of e.systems){const nt=X.emitters.get(Me.id);if(!nt)continue;Me.config.mode==="stream"&&Me.config.streamBehavior==="loop"?(W=Me.frames)!=null&&W.length||Vv(Me,nt,Ue,me.totalFrames):me.frame===0&&nt.reset()}for(const[Me,nt]of X.emitters){const Te=e.systems.find(oe=>oe.id===Me),vs=(Te==null?void 0:Te.config.mode)==="stream"&&Te.config.streamBehavior==="loop",Ct=vs?(H=Te.frames)==null?void 0:H[me.frame]:void 0,xt=me.frame===0&&!vs,te=xt?[]:Ct||nt.update(Je);if(xt?nt.apply([]):Ct&&nt.apply(Ct),(Te==null?void 0:Te.visible)!==!1)for(const oe of te)oe.active&&we(Te,nt,oe);de+=te.length}for(const Me of e.systems){if(!Me.config.texture)continue;Me.frames=Me.frames||[];const nt=X.emitters.get(Me.id);nt&&!(Me.config.mode==="stream"&&Me.config.streamBehavior==="loop")&&(Me.frames[me.frame]=nt.capture())}me.frame++,me.frame>=me.totalFrames&&(me.frame=me.playbackStart,me.recorded=!0)}else{me.playing||(qe=me.frame);for(const Be of e.systems){const Me=X.emitters.get(Be.id),nt=me.playing?F:me.frame,Te=(q=Be.frames)==null?void 0:q[nt],vs=Be.config.mode==="stream"&&Be.config.streamBehavior==="loop"&&!!Te;if((me.recorded||vs)&&Me&&Te){Me.apply(Te);for(const Ct of Te)Ct.active&&(we(Be,Me,Ct),de++)}else if(Me){const Ct=me.frame===0?[]:Me.update(0);if(me.frame===0&&Me.apply([]),Be.visible!==!1)for(const xt of Ct)xt.active&&we(Be,Me,xt);de+=Me.activeCount}}}F=qe,w==null||w.sync(e.spines,qe,Ue);for(const[,Be]of X.emitters)Be.drawTrailMeshDebug(e.settings.showSkinMesh);YR(e,P,v),GR(e,U.selectedNodes,y),$R(e,w,u),OR(e,O,h),LR(e,O,f),BR(e,p),NR(e,m),DR(e,g),XR(o,A.selectedTransformTarget.bind(A),x),HR(le,e,d),s.value&&(s.value.systems=e.systems.length,s.value.particles=de)}}return Oi(async()=>{const fe=t.value;l=new Zb({width:fe.clientWidth||800,height:fe.clientHeight||600,backgroundAlpha:0,antialias:!0}),fe.appendChild(l.view),L(),cs(()=>e.settings.backgroundImageData,W=>D.syncTexture(W),{immediate:!0});const Y=await c3();k=Y.dotTex,B=Y.trailTex,h3(e,k,B),s.value={systems:e.systems.length,particles:0},e.timeline.recorded=!1,e.timeline.frame=0,E=0,F=0,e.timeline.playing=!0,e.timeline.loop=!0;for(const W of e.systems)W.frames=[];e.recalcTotalFrames(),_=performance.now()/1e3,he(),cs(()=>e.systems.map(W=>JSON.stringify(W.config,(H,G)=>H==="texture"||H==="trailTexture"||H==="previewUrl"?void 0:G)).join("|")+`|colliders:${JSON.stringify(e.colliders)}|paths:${JSON.stringify(e.paths)}`,()=>{e.recalcTotalFrames(),e.timeline.recorded=!1,e.timeline.frame=0;for(const W of e.systems)W.frames=[];e.timeline.playing=!0,e.timeline.loop=!0}),Uk(e)}),Cl(()=>{cancelAnimationFrame(I),w==null||w.destroy(),w=null,D.destroy(),c&&l&&X.destroy(c),l&&(l.destroy(!0,{children:!0}),l=null)}),cs(()=>[e.activeObjectType,e.activeObjectId],()=>U.resetSelection()),(fe,Y)=>(z(),J("div",u3,[T("div",{ref_key:"holder",ref:t,class:Ae(["stage-holder",{grid:R(e).settings.showGrid}]),tabindex:"0",onWheel:Ke(j,["prevent"]),onPointerdown:$,onDblclick:Ke(V,["prevent"])},null,34),be(DF,{ctx:N,"active-tool":o.value,"show-settings":n.value,"show-help":r.value,"onUpdate:activeTool":Y[0]||(Y[0]=W=>o.value=W),"onUpdate:showSettings":Y[1]||(Y[1]=W=>n.value=W),"onUpdate:showHelp":Y[2]||(Y[2]=W=>r.value=W),onClearBackground:K,onBackgroundFile:ie},null,8,["active-tool","show-settings","show-help"]),be(s3,{show:n.value,onClose:Y[3]||(Y[3]=W=>n.value=!1)},null,8,["show"]),be(xF,{show:r.value,onClose:Y[4]||(Y[4]=W=>r.value=!1)},null,8,["show"]),s.value?(z(),J("div",d3,[Y[5]||(Y[5]=gt(" 系统: ",-1)),T("b",f3,ye(s.value.systems),1),Y[6]||(Y[6]=gt(" · 粒子(骨骼): ",-1)),T("b",m3,ye(s.value.particles),1),Y[7]||(Y[7]=gt(" · 根骨骼: ",-1)),Y[8]||(Y[8]=T("b",null,"root",-1)),Y[9]||(Y[9]=T("span",{class:"hud-tip"},"滚轮缩放 · 左键拖动画布",-1))])):xe("",!0)]))}}),g3=Jt(p3,[["__scopeId","data-v-38dbe6fc"]]),v3=[{x:0,y:0},{x:1,y:1}],Sm=[{x:0,y:1},{x:1,y:1}],y3=[{x:0,y:0},{x:.2,y:1},{x:.8,y:1},{x:1,y:0}],Mm=[{x:0,y:0},{x:.1,y:1},{x:.9,y:1},{x:1,y:0}],Tm=[{x:0,y:1},{x:1,y:1}],_m=[{x:0,y:1},{x:1,y:1}],Qt=mo({visible:!1,title:"",detail:"",progress:0,indeterminate:!1,failed:!1});let bc=0;function x3(i){return new Promise(e=>window.setTimeout(e,i))}function Vw(i,e){const t=++bc,s=performance.now();Object.assign(Qt,{visible:!0,title:i,detail:e,progress:0,indeterminate:!1,failed:!1});const n=(o,a)=>{t===bc&&(Qt.indeterminate=o==null,o!=null&&(Qt.progress=Math.min(100,Math.max(0,o))),a&&(Qt.detail=a))},r=async(o,a)=>{if(t!==bc)return;Qt.failed=o,Qt.indeterminate=!1,Qt.progress=o?Qt.progress:100,Qt.detail=a,await x3(Math.max(180,(o?850:450)-(performance.now()-s))),t===bc&&(Qt.visible=!1)};return{update:n,paint:()=>new Promise(o=>requestAnimationFrame(()=>o())),finish:(o="已完成")=>r(!1,o),fail:(o="操作失败")=>r(!0,o)}}async function b3(i,e){if(!i.body)return e(null),i.text();const t=Number(i.headers.get("content-length")),s=Number.isFinite(t)&&t>0,n=i.body.getReader(),r=new TextDecoder;let o=0,a="";for(e(s?0:null);;){const{done:l,value:c}=await n.read();if(l)break;o+=c.byteLength,a+=r.decode(c,{stream:!0}),e(s?Math.min(1,o/t):null)}return a+=r.decode(),s&&e(1),a}const w3="3.8";function di(i,e,t){i[e]==null&&i[t]!=null&&(i[e]=i[t]),delete i[t]}function Cm(i){if(!i||typeof i!="object")return;if(Array.isArray(i)){for(const t of i)Cm(t);return}const e=i;Array.isArray(e.curve)&&delete e.curve;for(const t of Object.values(e))Cm(t)}function S3(i){for(const e of i.bones)di(e,"transform","inherit");for(const e of i.transform||[])di(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),e.scaleMix==null&&(e.scaleMix=e.mixScaleX??e.mixScaleY),di(e,"shearMix","mixShearY"),delete e.mixX,delete e.mixY,delete e.mixScaleX,delete e.mixScaleY;for(const e of i.path||[])di(e,"rotateMix","mixRotate"),e.translateMix==null&&(e.translateMix=e.mixX??e.mixY),delete e.mixX,delete e.mixY;for(const e of i.skins)for(const t of Object.values(e.attachments||{}))for(const s of Object.values(t||{}))s.parent!=null&&di(s,"deform","timelines")}function M3(i){for(const e of Object.values(i.slots||{}))di(e,"color","rgba"),di(e,"twoColor","rgba2")}function T3(i){for(const e of Object.values(i.bones||{}))for(const t of e.rotate||[])di(t,"angle","value")}function _3(i){for(const e of Object.values(i.transform||{}))for(const t of e)di(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),t.scaleMix==null&&(t.scaleMix=t.mixScaleX??t.mixScaleY),di(t,"shearMix","mixShearY"),delete t.mixX,delete t.mixY,delete t.mixScaleX,delete t.mixScaleY}function C3(i){for(const e of Object.values(i.path||{})){for(const t of["position","spacing"])for(const s of e[t]||[])di(s,t,"value");for(const t of e.mix||[])di(t,"rotateMix","mixRotate"),t.translateMix==null&&(t.translateMix=t.mixX??t.mixY),delete t.mixX,delete t.mixY}}function A3(i){if(!i.attachments)return;const e=i.deform||(i.deform={});for(const[t,s]of Object.entries(i.attachments)){const n=e[t]||(e[t]={});for(const[r,o]of Object.entries(s)){const a=n[r]||(n[r]={});for(const[l,c]of Object.entries(o))c.deform&&(a[l]=c.deform)}}delete i.attachments}function E3(i){i.skeleton.spine=w3,S3(i);for(const e of Object.values(i.animations))M3(e),T3(e),_3(e),C3(e),A3(e);return Cm(i.animations),i}function I3(i,e,t,s,n=!1){if(n){let l=0;for(let c=0;c[...n].sort((a,l)=>a-l);let o=!0;for(;o;){o=!1;const a=r();for(let l=0;lf&&(f=m,d=p)}d>=0&&(n.add(d),o=!0)}}return r().map(a=>i[a])}function ey(i,e,t,s,n){const r=t-e+1;if(r<2)return 0;const o=n?e:t,a=n?e+1:t-1,l=n?e+2:t-2,c=Math.abs(i[a].frame-i[o].frame);if(r>=3&&c>0&&Math.abs(Math.abs(i[l].frame-i[a].frame)-c)<1e-6){const u=i[o].values[s],d=i[a].values[s],f=i[l].values[s];return n?(-3*u+4*d-f)/(2*c):(3*u-4*d+f)/(2*c)}const h=i[a].frame-i[o].frame;return h?(i[a].values[s]-i[o].values[s])/h:0}function ty(i,e,t){const s=i[t].frame-i[e].frame,n=[];for(let r=0;rd.values[r])),c=Math.max(...i.slice(e,t+1).map(d=>d.values[r])),h=o+ey(i,e,t,r,!0)*s/3,u=a-ey(i,e,t,r,!1)*s/3;n.push([Math.max(l,Math.min(c,h)),Math.max(l,Math.min(c,u))])}return{values:n}}function R3(i,e,t,s,n){const r=1-n;return r*r*r*i+3*r*r*n*e+3*r*n*n*t+n*n*n*s}function P3(i,e,t,s,n,r=!1){if(r){let c=0;for(let h=0;h[...n].sort((l,c)=>l-c);let o=!0;for(;o;){o=!1;const l=r();for(let c=0;cm&&(m=v,p=g)}p>=0&&(n.add(p),o=!0)}}const a=r();return{samples:a.map(l=>i[l]),controls:a.slice(0,-1).map((l,c)=>ty(i,l,a[c+1]))}}function k3(i){if(!i.length)return[];const e=[i[0]];for(let t=1;t180;)s-=360;for(;s-e[t-1]<-180;)s+=360;e.push(s)}return e}function ns(i){if(!Number.isFinite(i))return 0;const e=Math.round(i*1e5)/1e5;return Object.is(e,-0)?0:e}function F3(i,e,t,s){const n=Math.max(2,Math.min(16,Math.round(Number(i.trailGridRows)||2))),r=Math.max(2,Math.min(32,Math.round(Number(i.trailGridCols)||2))),o=Math.max(2,t.length),a=e.lengthMode==="random"?Math.max(1,Number(e.lengthMin)||0,Number(e.lengthMax)||0):Math.max(.001,Number(e.length)||100),l=e.widthSizeMode==="random"?Math.max(1,Number(e.widthMin)||0,Number(e.widthMax)||0):Math.max(.001,Number(e.width)||100),c=(Number(e.rotation)||0)*Math.PI/180,h=Math.cos(c),u=Math.sin(c),d=[],f=[],p=[],m=[],g=[];for(let x=0;x=0;x--)g.push({col:x,row:n-1});for(let x=n-2;x>=1;x--)g.push({col:0,row:x});const v=g.length;for(let x=1;x|\s]+/g,"_").replace(/^_+|_+$/g,"")||e}function jw(i,e){let t=i,s=2;for(;e.has(t);)t=`${i}_${s++}`;return e.add(t),t}function L3(i){return i.replace(/\.[^./\\]+$/,"")}function Hw(i,e){return L3([i,e].filter(Boolean).join("/").replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/^\.\//,""))}function B3(i){var s,n;const e=Number(((s=i==null?void 0:i.orig)==null?void 0:s.width)??(i==null?void 0:i.width))||0,t=Number(((n=i==null?void 0:i.orig)==null?void 0:n.height)??(i==null?void 0:i.height))||0;return{width:e,height:t}}function Sc(i){return Math.round(Math.max(0,Math.min(1,i))*255).toString(16).padStart(2,"0")}function oy(i,e){return[(i>>16&255)/255,(i>>8&255)/255,(i&255)/255,Math.max(0,Math.min(1,e))]}function tl(i,e){return ns(i/e)}function N3(i,e){const t=i.config,s=t.lifeMode==="fixed"?Math.max(0,Number(t.lifeMin)||0):Math.max(0,Number(t.lifeMin)||0,Number(t.lifeMax)||0),n=Math.max(0,Number(t.delay)||0);let r;return t.mode!=="stream"?r=n+s:t.streamBehavior!=="loop"?r=n+Math.max(1/e,Number(t.duration)||0)+s:r=n+pr(t,e).total/e,Math.max(1,Math.ceil(r*e)+1)}function D3(i,e,t){const s=i.config;if(s.mode!=="stream"||s.streamBehavior!=="loop")return new Set;const n=Sp(s,e),r=Math.max(1,t)/Math.max(1,e);return new Set([Math.round(n.start*r),Math.round(n.end*r)])}function Eh(i,e){return e?i.boneName:`${i.spawnId??"legacy"}_${i.boneName}`}function U3(i,e,t,s){const n=new Set;for(const r of i)for(const o of r)n.add(Eh(o,e));return[...n].sort().map((r,o)=>({key:r,name:jw(`${s}_${o}`,t),states:i.map(a=>a.find(l=>Eh(l,e)===r)||null)}))}function ay(i,e){const t=new Set(e.states.map(s=>s==null?void 0:s.resourceId).filter(s=>typeof s=="number"));return i.config.imageResources.filter(s=>t.has(s.id))}function $3(i,e,t,s){const n=e*t/s,r=Math.min(i.states.length-1,Math.max(0,Math.floor(n))),o=Math.min(i.states.length-1,r+1),a=i.states[r],l=i.states[o];if(!a||!l||Eh(a,!0)!==Eh(l,!0)||a.spawnId!==l.spawnId)return a;const c=n-r;if(c<=1e-6)return a;const h=(d,f)=>(d??0)+((f??d??0)-(d??0))*c,u=a.trailState&&l.trailState&&a.trailState.resourceId===l.trailState.resourceId?{...a.trailState,width:h(a.trailState.width,l.trailState.width),alpha:h(a.trailState.alpha,l.trailState.alpha),bones:a.trailState.bones.map((d,f)=>{const p=l.trailState.bones[f]||d;return{...d,worldX:h(d.worldX??d.x,p.worldX??p.x),worldY:h(d.worldY??d.y,p.worldY??p.y),worldRotation:h(d.worldRotation??-d.rotation,p.worldRotation??-p.rotation)}})}:a.trailState;return{...a,worldX:h(a.worldX,l.worldX),worldY:h(a.worldY,l.worldY),worldRotation:h(a.worldRotation,l.worldRotation),worldScaleX:h(a.worldScaleX,l.worldScaleX),worldScaleY:h(a.worldScaleY,l.worldScaleY),alpha:h(a.alpha,l.alpha),trailState:u}}function ly(i,e){return!i||i==="跟随导出"?e.keyframeCurve:i==="贝塞尔"?"bezier":"linear"}function Po(i,e,t,s,n,r=new Set,o=new Set,a=n.keyframeCurve){if(!i.length)return[];const l=new Set(r);for(const u of o)l.add(u);const c=a==="bezier"&&n.spineVersion!=="3.8"?Gw(i,s,l,o):{samples:Yw(i,s,l,o),controls:[]},h=c.samples.map(u=>{const d={time:tl(u.frame,e)};return t.forEach((f,p)=>{d[f]=ns(u.values[p])}),o.has(u.frame)&&(d.curve="stepped"),d});for(let u=0;u0&&n&&e.add(t-1),s&&e.add(t))}return e}function V3(i){const e=new Set;for(let t=0;t0&&n&&e.add(t-1),s&&e.add(t))}return e}function j3(i,e){var s;if(!i.shapeEnabled||!((s=i.shapeCurve)!=null&&s.length))return 1;const t=[...i.shapeCurve].sort((n,r)=>n.x-r.x);if(e<=t[0].x)return Math.max(0,t[0].y);for(let n=1;n{(o!==r||s.has(a))&&(n.push(t(o,a)),r=o)}),n}function W3(i,e,t){const s=i.imageMode==="sequence"?i.sequenceFrames[e]:void 0,n=(s==null?void 0:s.name)||i.textureName||`image_${i.id}`,r=(s==null?void 0:s.texture)||i.texture,o=B3(r);(!o.width||!o.height)&&t.push({code:"missing-image",message:`图片“${n}”缺失或尺寸不可读,已保留路径。`});const a=o.width||1,l=o.height||1;return{path:Hw(i.textureFolder,n),x:ns((.5-i.anchorX)*a),y:ns((i.anchorY-.5)*l),width:ns(a),height:ns(l)}}function cy(i,e){const t=[];for(const n of e){const r=n.imageMode==="sequence"?Math.max(1,n.sequenceFrames.length):1;for(let o=0;o1;return new Map(t.map((n,r)=>[n,s?`${i}_${r}`:i]))}function z3(i,e,t,s,n=s.keyframeCurve,r=new Set,o=new Set){if(!i.length)return[];const a=new Set;for(let d=1;d({frame:f,values:d})),c=1/255,h=n==="bezier"&&s.spineVersion!=="3.8"?Gw(l,[c,c,c,.01],a,r):{samples:Yw(l,[c,c,c,.01],a,r),controls:[]},u=h.samples.map(d=>{const f={time:tl(d.frame,t),color:`${Sc(d.values[0])}${Sc(d.values[1])}${Sc(d.values[2])}${Sc(d.values[3])}`};return r.has(d.frame)&&(f.curve="stepped"),f});if(h.controls.length)for(let d=0;d({time:tl(p,n),name:f??null}),l);h.length&&(c.attachment=h);const u=z3(s,t,n,r,o,a,l);u.length&&(c.rgba=u)}function uy(i){var p;const e=i.settings,t=Math.max(1,Number(i.timeline.fps)||30),s=Math.max(1,Math.round(e.fps||30)),n=e.integerFrameAlignment?s:t,r=[],o=i.systems.filter(m=>m.visible!==!1),a={skeleton:{hash:"",spine:e.spineVersion,x:0,y:0,width:0,height:0,images:e.imagesPath||"./images/"},bones:[{name:"root"}],slots:[],skins:[{name:"default",attachments:{}}],animations:{}};e.omitFps||(a.skeleton.fps=s);const l=a.skins[0].attachments,c=new Set(["root"]),h=[...new Set([...i.timeline.animations.length?i.timeline.animations:["animation"],...o.map(m=>m.animation||"animation")])],u=new Map;for(const m of o){const g=Math.min(((p=m.frames)==null?void 0:p.length)||0,N3(m,t)),v=(m.frames||[]).slice(0,g);v.length||r.push({code:"empty-cache",message:`“${m.config.name}”没有可用帧缓存。`});const y=jw(O3(m.config.name,`system_${m.id}`),c);a.bones.push({name:y,parent:"root"});const x=U3(v,e.bonePool,c,y),M=Math.max(0,(g-1)/t),C=Math.max(1,Math.ceil(M*n)+1),w=D3(m,t,n),b=u.get(m.animation)||[];b.push({system:m,tracks:x,targetFrames:C,boundaryFrames:w,attachmentPrefix:y}),u.set(m.animation,b);for(const _ of x){a.bones.push({name:_.name,parent:y});const E=ay(m,_),F=new Set(E.map(X=>X.blend)),I=[],k=[];for(const X of F){const N=`${_.name}_${X}`;I.push(N),a.slots.push({name:N,bone:_.name,color:"ffffff00",blend:sy[X]});const U=l[N]||(l[N]={}),A=E.filter(O=>O.blend===X),P=cy(y,A);for(const O of A){const L=O.imageMode==="sequence"?Math.max(1,O.sequenceFrames.length):1;for(let $=0;${var $;return(($=L==null?void 0:L.trailState)==null?void 0:$.resourceId)===X.id}))continue;const N=Math.max(2,Math.min(16,Math.round(X.boneCount||3))),U=[];for(let L=0;La.bones.findIndex($=>$.name===L)),O=Hw("",X.textureName||`trail_${X.id}`);(l[A]||(l[A]={}))[`trail_${X.id}`]=F3(m.config,X,P,O),X.texture||r.push({code:"missing-image",message:`拖尾图片“${X.textureName||X.id}”缺失,已保留路径。`})}const B=new Set([...I,...k]),D=a.slots.filter(X=>B.has(String(X.name)));D.length&&(a.slots=a.slots.filter(X=>!D.includes(X)),a.slots.push(...D.filter(X=>k.includes(String(X.name))),...D.filter(X=>I.includes(String(X.name)))))}}for(const m of h){const g=u.get(m)||[],v={bones:{},slots:{}};let y=!1;for(const{system:x,tracks:M,targetFrames:C,boundaryFrames:w,attachmentPrefix:b}of g)for(const _ of M){const E=Array.from({length:C},(j,K)=>$3(_,K,t,n)),F=E.map(j=>!!(j!=null&&j.active)),I=[],k=[],B=[];E.forEach((j,K)=>{j!=null&&j.active&&(I.push({frame:K,values:[j.worldX??j.x,j.worldY??j.y]}),k.push(j.worldRotation??j.rotation),B.push({frame:K,values:[j.worldScaleX??j.scaleX,j.worldScaleY??j.scaleY]}))});const D=k3(k),X=I.map((j,K)=>({frame:j.frame,values:[D[K]??0]})),N=X3(E);for(const j of w)N.add(j);const U=V3(E),A={},P=Po(I,n,["x","y"],[iy,iy],e,N,U),O=Po(X,n,["value"],[ry],e,N,U),L=Po(B,n,["x","y"],[wc,wc],e,N,U);P.length&&(A.translate=P),O.length&&(A.rotate=O),L.length&&(A.scale=L),Object.keys(A).length&&(v.bones[_.name]=A,y=!0);const $=ay(x,_),V=new Set($.map(j=>j.blend));for(const j of V){const K=$.filter(Y=>Y.blend===j),ie=cy(b,K),re=[],pe=[];let ge=16777215;for(let Y=0;Yse.id===W.resourceId):void 0,G=!!W&&F[Y]&&W.imageVisible!==!1&&(H==null?void 0:H.blend)===j;W&&(H==null?void 0:H.blend)===j&&(ge=W.colorHex);const q=G?ie.get(`${H.id}_${W.imageFrameIndex??0}`):void 0;re.push(q??null),pe.push(oy(ge,G?W.alpha:0))}const he=K.filter(Y=>Y.independentAlpha==="curve").map(Y=>ly(Y.alphaCurveMode,e)),fe=he.length?he.includes("bezier")?"bezier":"linear":ly(x.config.alphaMode==="curve"?x.config.curveMode:void 0,e);hy(v,`${_.name}_${j}`,re,pe,n,e,fe,U,w),re.some(Boolean)&&(y=!0)}if(x.config.trail)for(const j of x.config.trailResources){const K=Math.max(2,Math.min(16,Math.round(j.boneCount||3))),ie=E.map(q=>{var se;return((se=q==null?void 0:q.trailState)==null?void 0:se.resourceId)===j.id?q.trailState:void 0}),re=ie.find(q=>!!q);if(!re)continue;const pe=G3(ie),ge=Y3(ie),he=j.widthSizeMode==="random"?Math.max(1,Number(j.widthMin)||0,Number(j.widthMax)||0):Math.max(.001,Number(j.width)||100);let fe=re;const Y=ie.map(q=>(q&&(fe=q),fe));for(let q=0;q{const Be=qe==null?void 0:qe.bones[Math.min(qe.bones.length-1,q)];if(!Be)return;const Me={x:Be.worldX??Be.x,y:Be.worldY??Be.y,rotation:Be.worldRotation??-Be.rotation};se.push({frame:Ze,values:[Me.x,Me.y]}),ue.push({frame:Ze,values:[Me.rotation]}),ne.push({frame:Ze,values:[1,Math.max(0,qe.width/he)*le]})});const Re=`${_.name}_trail_${j.id}_${q}`,we={},me=Po(se,n,["x","y"],[ny,ny],e,de,ge),Ue=Po(ue,n,["value"],[ry],e,de,ge),Je=Po(ne,n,["x","y"],[wc,wc],e,de,ge);me.length&&(we.translate=me),Ue.length&&(we.rotate=Ue),Je.length&&(we.scale=Je),Object.keys(we).length&&(v.bones[Re]=we)}const W=ie.map(()=>`trail_${j.id}`);let H=re.colorHex;const G=ie.map(q=>(q&&(H=q.colorHex),oy(H,q?q.alpha:0)));hy(v,`${_.name}_trail_${j.id}`,W,G,n,e,e.keyframeCurve,ge,w),y=!0}}(y||!e.excludeEmptyAnimations)&&(a.animations[m]=v)}!Object.keys(a.animations).length&&!e.excludeEmptyAnimations&&(a.animations.animation={bones:{},slots:{}});const d=e.spineVersion==="3.8"?E3(a):a,f=JSON.stringify(d,null,2);return{json:d,text:f,warnings:r,particleSystemCount:o.length,animationCount:Object.keys(d.animations).length,boneCount:d.bones.length}}function q3(i,e){const t=new Blob([i.text],{type:"application/json;charset=utf-8"}),s=URL.createObjectURL(t),n=document.createElement("a");n.href=s,n.download=/\.json$/i.test(e)?e:`${e||"SpineParticle"}.json`,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(s),1e3)}class W6{constructor(){S(this,"array",[])}add(e){const t=this.contains(e);return this.array[e|0]=e|0,!t}contains(e){return this.array[e|0]!==void 0}remove(e){this.array[e|0]=void 0}clear(){this.array.length=0}}class K3{constructor(){S(this,"entries",{});S(this,"size",0)}add(e){const t=this.entries[e];return this.entries[e]=!0,t?!1:(this.size++,!0)}addAll(e){const t=this.size;for(let s=0,n=e.length;s1&&(this.r=1),this.g<0?this.g=0:this.g>1&&(this.g=1),this.b<0?this.b=0:this.b>1&&(this.b=1),this.a<0?this.a=0:this.a>1&&(this.a=1),this}static rgba8888ToColor(e,t){e.r=((t&4278190080)>>>24)/255,e.g=((t&16711680)>>>16)/255,e.b=((t&65280)>>>8)/255,e.a=(t&255)/255}static rgb888ToColor(e,t){e.r=((t&16711680)>>>16)/255,e.g=((t&65280)>>>8)/255,e.b=(t&255)/255}toRgb888(){const e=t=>`0${(t*255).toString(16)}`.slice(-2);return+`0x${e(this.r)}${e(this.g)}${e(this.b)}`}static fromString(e,t=new Js){return t.setFromString(e)}};S(Js,"WHITE",new Js(1,1,1,1)),S(Js,"RED",new Js(1,0,0,1)),S(Js,"GREEN",new Js(0,1,0,1)),S(Js,"BLUE",new Js(0,0,1,1)),S(Js,"MAGENTA",new Js(1,0,1,1));let st=Js;const Ht=class Ht{static clamp(e,t,s){return es?s:e}static cosDeg(e){return Math.cos(e*Ht.degRad)}static sinDeg(e){return Math.sin(e*Ht.degRad)}static atan2Deg(e,t){return Math.atan2(e,t)*Ht.radDeg}static signum(e){return e>0?1:e<0?-1:0}static toInt(e){return e>0?Math.floor(e):Math.ceil(e)}static cbrt(e){const t=Math.pow(Math.abs(e),.3333333333333333);return e<0?-t:t}static randomTriangular(e,t){return Ht.randomTriangularWith(e,t,(e+t)*.5)}static randomTriangularWith(e,t,s){const n=Math.random(),r=t-e;return n<=(s-e)/r?e+Math.sqrt(n*r*(s-e)):t-Math.sqrt((1-n)*r*(t-s))}static isPowerOfTwo(e){return e&&(e&e-1)===0}};S(Ht,"epsilon",1e-5),S(Ht,"epsilon2",Ht.epsilon*Ht.epsilon),S(Ht,"PI",3.1415927),S(Ht,"PI2",Ht.PI*2),S(Ht,"invPI2",1/Ht.PI2),S(Ht,"radiansToDegrees",180/Ht.PI),S(Ht,"radDeg",Ht.radiansToDegrees),S(Ht,"degreesToRadians",Ht.PI/180),S(Ht,"degRad",Ht.degreesToRadians);let Ee=Ht;const ai=class ai{apply(e,t,s){return t===void 0||s===void 0?this.applyInternal(e):e+(t-e)*this.applyInternal(s)}};S(ai,"linear",new class extends ai{applyInternal(e){return e}}),S(ai,"smooth",new class extends ai{applyInternal(e){return e*e*(3-2*e)}}),S(ai,"slowFast",new class extends ai{applyInternal(e){return e*e}}),S(ai,"fastSlow",new class extends ai{applyInternal(e){return(e-1)*(e-1)*-1+1}}),S(ai,"circle",new class extends ai{applyInternal(e){return e<=.5?(e*=2,(1-Math.sqrt(1-e*e))/2):(e--,e*=2,(Math.sqrt(1-e*e)+1)/2)}});let na=ai;class Z3 extends na{constructor(t){super();S(this,"power",2);this.power=t}applyInternal(t){return t<=.5?Math.pow(t*2,this.power)/2:Math.pow((t-1)*2,this.power)/(this.power%2===0?-2:2)+1}}class z6 extends Z3{constructor(e){super(e)}applyInternal(e){return Math.pow(e-1,this.power)*(this.power%2===0?-1:1)+1}}const or=class or{static arrayCopy(e,t,s,n,r){for(let o=t,a=n;o=t?e:or.setArraySize(e,t,s)}static newArray(e,t){const s=[];for(let n=0;n0?this.items.pop():this.instantiator()}free(e){var t;(t=e.reset)==null||t.call(e),this.items.push(e)}freeAll(e){for(let t=0;tthis.maxDelta&&(this.delta=this.maxDelta),this.lastTime=e,this.frameCount++,this.frameTime>1&&(this.framesPerSecond=this.frameCount/this.frameTime,this.frameTime=0,this.frameCount=0)}}class Z6{constructor(e=32){S(this,"values");S(this,"addedValues",0);S(this,"lastValue",0);S(this,"mean",0);S(this,"dirty",!0);this.values=new Array(e)}hasEnoughData(){return this.addedValues>=this.values.length}addValue(e){this.addedValuesthis.values.length-1&&(this.lastValue=0),this.dirty=!0}getMean(){if(this.hasEnoughData()){if(this.dirty){let e=0;for(let t=0;t{h.width=parseInt(s[1]),h.height=parseInt(s[2])},n.format=()=>{},n.filter=h=>{h.minFilter=Ge.enumValue(la,s[1]),h.magFilter=Ge.enumValue(la,s[2])},n.repeat=h=>{s[1].indexOf("x")!==-1&&(h.uWrap=ca.Repeat),s[1].indexOf("y")!==-1&&(h.vWrap=ca.Repeat)},n.pma=h=>{h.pma=s[1]==="true"};var r={};r.xy=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2])},r.size=h=>{h.width=parseInt(s[1]),h.height=parseInt(s[2])},r.bounds=h=>{h.x=parseInt(s[1]),h.y=parseInt(s[2]),h.width=parseInt(s[3]),h.height=parseInt(s[4])},r.offset=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2])},r.orig=h=>{h.originalWidth=parseInt(s[1]),h.originalHeight=parseInt(s[2])},r.offsets=h=>{h.offsetX=parseInt(s[1]),h.offsetY=parseInt(s[2]),h.originalWidth=parseInt(s[3]),h.originalHeight=parseInt(s[4])},r.rotate=h=>{const u=s[1];u==="true"?h.degrees=90:u!=="false"&&(h.degrees=parseInt(u))},r.index=h=>{h.index=parseInt(s[1])};let o=t.readLine();for(;o&&o.trim().length===0;)o=t.readLine();for(;!(!o||o.trim().length===0||t.readEntry(s,o)===0);)o=t.readLine();let a=null,l=null,c=null;for(;o!==null;)if(o.trim().length===0)a=null,o=t.readLine();else if(a){const h=new zw(a,o);for(;;){const u=t.readEntry(s,o=t.readLine());if(u===0)break;const d=r[s[0]];if(d)d(h);else{l||(l=[]),c||(c=[]),l.push(s[0]);const f=[];for(let p=0;p0&&c&&c.length>0&&(h.names=l,h.values=c,l=null,c=null),h.u=h.x/a.width,h.v=h.y/a.height,h.degrees===90?(h.u2=(h.x+h.height)/a.width,h.v2=(h.y+h.width)/a.height):(h.u2=(h.x+h.width)/a.width,h.v2=(h.y+h.height)/a.height),this.regions.push(h)}else{for(a=new tO(o.trim());t.readEntry(s,o=t.readLine())!==0;){const h=n[s[0]];h&&h(a)}this.pages.push(a)}}findRegion(e){for(let t=0;t=this.lines.length?null:this.lines[this.index++]}readEntry(e,t){if(!t||(t=t.trim(),t.length===0))return 0;const s=t.indexOf(":");if(s===-1)return 0;e[0]=t.substr(0,s).trim();for(let n=1,r=s+1;;n++){const o=t.indexOf(",",r);if(o===-1)return e[n]=t.substr(r).trim(),n;if(e[n]=t.substr(r,o-r).trim(),r=o+1,n===4)return 4}}}class tO{constructor(e){S(this,"name");S(this,"minFilter",la.Nearest);S(this,"magFilter",la.Nearest);S(this,"uWrap",ca.ClampToEdge);S(this,"vWrap",ca.ClampToEdge);S(this,"texture",null);S(this,"width",0);S(this,"height",0);S(this,"pma",!1);S(this,"regions",[]);this.name=e}setTexture(e){this.texture=e,e.setFilters(this.minFilter,this.magFilter),e.setWraps(this.uWrap,this.vWrap);for(const t of this.regions)t.texture=e}}class zw extends Ww{constructor(t,s){super();S(this,"page");S(this,"name");S(this,"x",0);S(this,"y",0);S(this,"offsetX",0);S(this,"offsetY",0);S(this,"originalWidth",0);S(this,"originalHeight",0);S(this,"index",0);S(this,"degrees",0);S(this,"names",null);S(this,"values",null);this.page=t,this.name=s,t.regions.push(this)}}const Lh=class Lh{constructor(e){S(this,"name");S(this,"timelineAttachment");S(this,"timelineSlots",Lh.empty);if(!e)throw new Error("name cannot be null.");this.name=e,this.timelineAttachment=this}isTimelineActive(e,t,s){let n=e[t];if(n.bone.isActive()){const r=(s?n.getAppliedPose():n.getPose()).getAttachment();if(r!=null&&r.timelineAttachment===this)return!0}for(let r=0,o=this.timelineSlots.length;r>1)*l;const c=s.appliedPose.deform;let h=this.vertices;const u=this.bones;if(!u){c.length>0&&(h=c);const m=s.bone.appliedPose,g=m.worldX,v=m.worldY,y=m.a,x=m.b,M=m.c,C=m.d;for(let w=n,b=a;b=this.regions.length&&(t=this.regions.length-1),t}getUVs(e){return this.uvs[e]}hasPathSuffix(){return this.pathSuffix}getPath(e,t){if(!this.pathSuffix)return e;let s=e;const n=(this.start+t).toString();for(let r=this.digits-n.length;r>0;r--)s+="0";return s+=n,s}static nextID(){return Vo._nextID++}};S(Vo,"_nextID",0);let ua=Vo;var _s;(function(i){i[i.hold=0]="hold",i[i.once=1]="once",i[i.loop=2]="loop",i[i.pingpong=3]="pingpong",i[i.onceReverse=4]="onceReverse",i[i.loopReverse=5]="loopReverse",i[i.pingpongReverse=6]="pingpongReverse"})(_s||(_s={}));const qw=[_s.hold,_s.once,_s.loop,_s.pingpong,_s.onceReverse,_s.loopReverse,_s.pingpongReverse];class kp{constructor(e,t,s){S(this,"name");S(this,"timelines",[]);S(this,"timelineIds");S(this,"bones");S(this,"color",new st(1,1,1,1));S(this,"duration");if(!e)throw new Error("name cannot be null.");this.name=e,this.duration=s,this.timelineIds=new K3,this.bones=[],this.setTimelines(t)}setTimelines(e){if(!e)throw new Error("timelines cannot be null.");this.timelines=e;const t=e.length;this.timelineIds.clear(),this.bones.length=0;const s=new Set,n=e;for(let r=0;r0&&(t%=this.duration));const u=this.timelines;for(let d=0,f=u.length;dt)return r-s;return n-s}};function sO(i){return typeof i=="object"&&i!==null&&typeof i.slotIndex=="number"}class bo extends Bt{constructor(t,s,...n){super(t,...n);S(this,"curves");this.curves=Ge.newFloatArray(t+s*18),this.curves[t-1]=1}setLinear(t){this.curves[t]=0}setStepped(t){this.curves[t]=1}shrink(t){const s=this.getFrameCount()+t*18;if(this.curves.length>s){const n=Ge.newFloatArray(s);Ge.arrayCopy(this.curves,0,n,0,s),this.curves=n}}setBezier(t,s,n,r,o,a,l,c,h,u,d){const f=this.curves;let p=this.getFrameCount()+t*18;n===0&&(f[s]=2+p);const m=(r-a*2+c)*.03,g=(o-l*2+h)*.03,v=((a-c)*3-r+u)*.006,y=((l-h)*3-o+d)*.006;let x=m*2+v,M=g*2+y,C=(a-r)*.3+m+v*.16666667,w=(l-o)*.3+g+y*.16666667,b=r+C,_=o+w;for(let E=p+18;pt){const h=this.frames[s],u=this.frames[s+n];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}const a=r+18;for(r+=2;r=t){const h=o[r-2],u=o[r-1];return u+(t-h)/(o[r]-h)*(o[r+1]-u)}s+=this.getFrameEntries();const l=o[a-2],c=o[a-1];return c+(t-l)/(this.frames[s]-l)*(this.frames[s+n]-c)}}class Fn extends bo{constructor(e,t,s){super(e,t,s)}getFrameEntries(){return 2}setFrame(e,t,s){e<<=1,this.frames[e]=t,this.frames[e+1]=s}getCurveValue(e){const t=this.frames;let s=t.length-2;for(let r=2;r<=s;r+=2)if(t[r]>e){s=r-2;break}const n=this.curves[s>>1];switch(n){case 0:{const r=t[s],o=t[s+1];return o+(e-r)/(t[s+2]-r)*(t[s+2+1]-o)}case 1:return t[s+1]}return this.getBezierValue(e,s,1,n-2)}getRelativeValue(e,t,s,n,r,o){if(e>2];switch(f){case 0:{const p=u[d];l=u[d+1],c=u[d+2],h=u[d+3];const m=(s-p)/(u[d+4]-p);l+=(u[d+4+1]-l)*m,c+=(u[d+4+2]-c)*m,h+=(u[d+4+3]-h)*m;break}case 1:l=u[d+1],c=u[d+2],h=u[d+3];break;default:l=this.getBezierValue(s,d,1,f-2),c=this.getBezierValue(s,d,2,f+18-2),h=this.getBezierValue(s,d,3,f+36-2)}if(n!==1)if(r===Ve.setup){const p=e.data.setupPose.color;l=p.r+(l-p.r)*n,c=p.g+(c-p.g)*n,h=p.b+(h-p.b)*n}else l=a.r+(l-a.r)*n,c=a.g+(c-a.g)*n,h=a.b+(h-a.b)*n;a.r=l<0?0:l>1?1:l,a.g=c<0?0:c>1?1:c,a.b=h<0?0:h>1?1:h}}class lS extends Fn{constructor(t,s,n){super(t,s,`${et.alpha}|${n}`);S(this,"slotIndex",0);this.slotIndex=n}apply(t,s,n,r,o,a,l,c,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=(h?u.appliedPose:u.pose).color;let f=0;const p=this.frames;if(n1?1:f}}class cS extends vu{constructor(e,t,s){super(e,t,s,`${et.rgb}|${s}`,`${et.alpha}|${s}`,`${et.rgb2}|${s}`)}getFrameEntries(){return 8}setFrame(e,t,s,n,r,o,a,l,c){e<<=3,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=l,this.frames[e+7]=c}apply1(e,t,s,n,r,o){const a=t.color,l=t.darkColor;let c=0,h=0,u=0;const d=this.frames;if(s>3];switch(y){case 0:{const x=d[v];f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],c=d[v+5],h=d[v+6],u=d[v+7];const M=(s-x)/(d[v+8]-x);f+=(d[v+8+1]-f)*M,p+=(d[v+8+2]-p)*M,m+=(d[v+8+3]-m)*M,g+=(d[v+8+4]-g)*M,c+=(d[v+8+5]-c)*M,h+=(d[v+8+6]-h)*M,u+=(d[v+8+7]-u)*M;break}case 1:f=d[v+1],p=d[v+2],m=d[v+3],g=d[v+4],c=d[v+5],h=d[v+6],u=d[v+7];break;default:f=this.getBezierValue(s,v,1,y-2),p=this.getBezierValue(s,v,2,y+18-2),m=this.getBezierValue(s,v,3,y+36-2),g=this.getBezierValue(s,v,4,y+54-2),c=this.getBezierValue(s,v,5,y+72-2),h=this.getBezierValue(s,v,6,y+90-2),u=this.getBezierValue(s,v,7,y+108-2)}if(n===1)a.set(f,p,m,g);else if(r===Ve.setup){const x=e.data.setupPose;let M=x.color;a.set(M.r+(f-M.r)*n,M.g+(p-M.g)*n,M.b+(m-M.b)*n,M.a+(g-M.a)*n),M=x.darkColor,c=M.r+(c-M.r)*n,h=M.g+(h-M.g)*n,u=M.b+(u-M.b)*n}else a.add((f-a.r)*n,(p-a.g)*n,(m-a.b)*n,(g-a.a)*n),c=l.r+(c-l.r)*n,h=l.g+(h-l.g)*n,u=l.b+(u-l.b)*n;l.r=c<0?0:c>1?1:c,l.g=h<0?0:h>1?1:h,l.b=u<0?0:u>1?1:u}}class hS extends vu{constructor(e,t,s){super(e,t,s,`${et.rgb}|${s}`,`${et.rgb2}|${s}`)}getFrameEntries(){return 7}setFrame(e,t,s,n,r,o,a,l){e*=7,this.frames[e]=t,this.frames[e+1]=s,this.frames[e+2]=n,this.frames[e+3]=r,this.frames[e+4]=o,this.frames[e+5]=a,this.frames[e+6]=l}apply1(e,t,s,n,r,o){const a=t.color,l=t.darkColor;let c=0,h=0,u=0,d=0,f=0,p=0;const m=this.frames;if(s1?1:c,a.g=h<0?0:h>1?1:h,a.b=u<0?0:u>1?1:u,l.r=d<0?0:d>1?1:d,l.g=f<0?0:f>1?1:f,l.b=p<0?0:p>1?1:p}}class sl extends Bt{constructor(t,s){super(t,`${et.attachment}|${s}`);S(this,"slotIndex",0);S(this,"attachmentNames");this.slotIndex=s,this.attachmentNames=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s,n){this.frames[t]=s,this.attachmentNames[t]=n}apply(t,s,n,r,o,a,l,c,h){const u=t.slots[this.slotIndex];if(!u.bone.active)return;const d=h?u.appliedPose:u.pose;c||nt){const c=this.frames[s];return n[r+1]*(t-c)/(n[r]-c)}const o=r+18;for(r+=2;r=t){const c=n[r-2],h=n[r-1];return h+(t-c)/(n[r]-c)*(n[r+1]-h)}const a=n[o-2],l=n[o-1];return l+(1-l)*(t-a)/(this.frames[s+this.getFrameEntries()]-a)}apply(t,s,n,r,o,a,l,c,h){const u=t.slots;if(!this.attachment.isTimelineActive(u,this.slotIndex,h))return;const d=this.attachment.timelineSlots,f=this.frames;if(n=f[f.length-1])g=0,p=this.vertices[f.length-1],m=null;else{const y=Bt.search(f,n);g=this.getCurvePercent(n,y),p=this.vertices[y],m=this.vertices[y+1]}const v=this.vertices[0].length;this.applyToSlot(u[this.slotIndex],h,p,m,g,v,o,a,l);for(const y of d)this.applyToSlot(u[y],h,p,m,g,v,o,a,l)}applyBeforeFirst(t,s,n,r){if(!t.bone.active)return;const o=s?t.appliedPose:t.pose;if(o.attachment==null||o.attachment.timelineAttachment!==this.attachment)return;const a=o.deform;switch(a.length===0&&(r=Ve.setup),r){case Ve.setup:a.length=0;break;case Ve.first:{if(n===1){a.length=0;return}const l=this.vertices[0].length;a.length=l;const c=a,h=o.attachment;if(h.bones===null){const u=h.vertices;for(let d=0;d>4,h=l.attachment.sequence.regions.length;const u=qw[o&15];if(u!==_s.hold)switch(c+=(n-r)/a+1e-5|0,u){case _s.once:c=Math.min(h-1,c);break;case _s.loop:c%=h;break;case _s.pingpong:{const d=(h<<1)-2;c=d===0?0:c%d,c>=h&&(c=d-c);break}case _s.onceReverse:c=Math.max(h-1-c,0);break;case _s.loopReverse:c=h-1-c%h;break;case _s.pingpongReverse:{const d=(h<<1)-2;c=d===0?0:(c+h-1)%d,c>=h&&(c=d-c)}}l.sequenceIndex=c}};S(li,"ENTRIES",3),S(li,"MODE",1),S(li,"DELAY",2);let Ph=li;const Nh=class Nh extends Bt{constructor(t){super(t,...Nh.propertyIds);S(this,"events");this.events=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s){this.frames[t]=s.time,this.events[t]=s}apply(t,s,n,r,o,a,l,c,h){if(!r)return;const u=this.frames,d=this.frames.length;if(s>n)this.apply(null,s,Number.MAX_VALUE,r,0,a,!1,!1,!1),s=-1;else if(s>=u[d-1])return;if(n0&&u[f-1]===p;)f--}for(;f=u[f];f++)r.push(this.events[f])}};S(Nh,"propertyIds",[`${et.event}`]);let Sl=Nh;const Yo=class Yo extends Bt{constructor(t){super(t,...Yo.propertyIds);S(this,"drawOrders");this.drawOrders=new Array(t),this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s,n){this.frames[t]=s,this.drawOrders[t]=n}apply(t,s,n,r,o,a,l,c,h){const u=h?t.drawOrder.appliedPose:t.drawOrder.pose,d=t.slots;if(c||n>2];switch(y){case 0:{const M=f[v];p=f[v+1],m=f[v+2],g=f[v+3];const C=(n-M)/(f[v+4]-M);p+=(f[v+4+1]-p)*C,m+=(f[v+4+2]-m)*C,g+=(f[v+4+3]-g)*C;break}case 1:p=f[v+1],m=f[v+2],g=f[v+3];break;default:p=this.getBezierValue(n,v,1,y-2),m=this.getBezierValue(n,v,2,y+18-2),g=this.getBezierValue(n,v,3,y+36-2)}const x=a===Ve.setup?u.data.setupPose:d;l?(d.mixRotate=x.mixRotate+p*o,d.mixX=x.mixX+m*o,d.mixY=x.mixY+g*o):(d.mixRotate=x.mixRotate+(p-x.mixRotate)*o,d.mixX=x.mixX+(m-x.mixX)*o,d.mixY=x.mixY+(g-x.mixY)*o)}}class Cr extends Fl{constructor(e,t,s,n){super(e,t,s,n)}apply(e,t,s,n,r,o,a,l,c){if(a&&!this.additive&&(a=!1),this.constraintIndex===-1){const h=s>=this.frames[0]?this.getCurveValue(s):0,u=e.physics;for(const d of u)if(d.active&&this.global(d.data)){const f=c?d.appliedPose:d.pose;this.set(f,this.getAbsoluteValue(s,r,o,a,this.get(f),this.get(d.data.setupPose),h))}}else{const h=e.constraints[this.constraintIndex];if(h.active){const u=c?h.appliedPose:h.pose;this.set(u,this.getAbsoluteValue(s,r,o,a,this.get(u),this.get(h.data.setupPose)))}}}}class vS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintInertia)}get(e){return e.inertia}set(e,t){e.inertia=t}global(e){return e.inertiaGlobal}}class yS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintStrength)}get(e){return e.strength}set(e,t){e.strength=t}global(e){return e.strengthGlobal}}class xS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintDamping)}get(e){return e.damping}set(e,t){e.damping=t}global(e){return e.dampingGlobal}}class bS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintMass)}get(e){return 1/e.massInverse}set(e,t){e.massInverse=1/t}global(e){return e.massGlobal}}class wS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintWind),this.additive=!0}get(e){return e.wind}set(e,t){e.wind=t}global(e){return e.windGlobal}}class SS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintGravity),this.additive=!0}get(e){return e.gravity}set(e,t){e.gravity=t}global(e){return e.gravityGlobal}}class MS extends Cr{constructor(e,t,s){super(e,t,s,et.physicsConstraintMix)}get(e){return e.mix}set(e,t){e.mix=t}global(e){return e.mixGlobal}}const Dh=class Dh extends Bt{constructor(t,s){super(t,...Dh.propertyIds);S(this,"constraintIndex");this.constraintIndex=s,this.instant=!0}getFrameCount(){return this.frames.length}setFrame(t,s){this.frames[t]=s}apply(t,s,n,r,o,a,l,c,h){let u;if(this.constraintIndex!==-1&&(u=t.constraints[this.constraintIndex],!u.active))return;const d=this.frames;if(s>n)this.apply(t,s,Number.MAX_VALUE,[],o,a,!1,!1,!1),s=-1;else if(s>=d[d.length-1])return;if(!(n=d[Bt.search(d,s)+1]))if(u!=null)u.reset(t);else for(const f of t.physics)f.active&&f.reset(t)}};S(Dh,"propertyIds",[et.physicsConstraintReset.toString()]);let kh=Dh;class TS extends Fl{constructor(e,t,s){super(e,t,s,et.sliderTime)}apply(e,t,s,n,r,o,a,l,c){const h=e.constraints[this.constraintIndex];if(h.active){const u=c?h.appliedPose:h.pose;u.time=this.getAbsoluteValue(s,r,o,a,u.time,h.data.setupPose.time)}}}class _S extends Fl{constructor(e,t,s){super(e,t,s,et.sliderMix),this.additive=!0}apply(e,t,s,n,r,o,a,l,c){const h=e.constraints[this.constraintIndex];if(h.active){const u=c?h.appliedPose:h.pose;u.mix=this.getAbsoluteValue(s,r,o,a,u.mix,h.data.setupPose.mix)}}}const rl=class rl{constructor(e){S(this,"data");S(this,"tracks",[]);S(this,"timeScale",1);S(this,"unkeyedState",0);S(this,"events",[]);S(this,"listeners",[]);S(this,"queue",new oO(this));S(this,"propertyIds",new Map);S(this,"animationsChanged",!1);S(this,"trackEntryPool",new J3(()=>new rO));this.data=e}update(e){e*=this.timeScale;const t=this.tracks;for(let s=0,n=t.length;s0){if(r.delay-=o,r.delay>0)continue;o=-r.delay,r.delay=0}let a=r.next;if(a){const l=r.trackLast-a.delay;if(l>=0){for(a.delay=0,a.trackTime+=r.timeScale===0?0:(l/r.timeScale+e)*a.timeScale,r.trackTime+=o,this.setTrack(s,a,!0);a.mixingFrom;)a.mixTime+=e,a=a.mixingFrom;continue}}else if(r.trackLast>=r.trackEnd&&!r.mixingFrom){t[s]=null,this.queue.end(r),this.clearNext(r);continue}if(r.mixingFrom&&this.updateMixingFrom(r,e)){let l=r.mixingFrom;for(r.mixingFrom=null,l&&(l.mixingTo=null);l;)this.queue.end(l),l=l.mixingFrom}r.trackTime+=o}this.queue.drain()}updateMixingFrom(e,t){const s=e.mixingFrom;if(!s)return!0;const n=this.updateMixingFrom(s,t);if(s.animationLast=s.nextAnimationLast,s.trackLast=s.nextTrackLast,e.nextTrackLast!==-1&&e.mixTime>=e.mixDuration){if(s.totalAlpha===0||e.mixDuration===0){if(e.mixingFrom=s.mixingFrom,s.mixingFrom!=null&&(s.mixingFrom.mixingTo=e),s.totalAlpha===0)for(let r=e;r.mixingTo!=null;r=r.mixingTo)r.keepHold=!0;this.queue.end(s)}return n}return s.trackTime+=t*s.timeScale,e.mixTime+=t,!1}apply(e){if(!e)throw new Error("skeleton cannot be null.");this.animationsChanged&&this._animationsChanged();const t=this.events,s=this.tracks;let n=!1;for(let a=0,l=s.length;a0)continue;n=!0;let h=c.alpha;c.mixingFrom?h*=this.applyMixingFrom(c,e):c.trackTime>=c.trackEnd&&!c.next&&(h=0);let u=c.animationLast,d=c.getAnimationTime(),f=d,p=t;c.reverse&&(f=c.animation.duration-f,p=null);const m=c.animation.timelines,g=m.length;if(a===0&&h===1)for(let v=0;v=c.alphaAttachmentThreshold,x=c.additive,M=x||c.shortestRotation,C=!M&&c.timelinesRotation.length!==g<<1;C&&(c.timelinesRotation.length=g<<1);for(let w=0;w0?l/a:o,h=s.animation.timelines,u=h.length,d=s.timelineMode,f=s.timelineHoldMix,p=r=s.alphaAttachmentThreshold);else{const B=!m||!(E instanceof br)||I===Ve.current;E.apply(t,M,w,b,k,I,g,B,!1)}}return s.reverse&&r0&&this.queueEvents(s,C),this.events.length=0,s.nextAnimationLast=C,s.nextTrackLast=s.trackTime,r}applyAttachmentTimeline(e,t,s,n,r){const o=t.slots[e.slotIndex];if(!o.bone.active||!r&&o.attachmentState===this.unkeyedState+yy)return;let a=s=0,C=v>=0;Math.abs(y)<=90&&Ee.signum(y)!==Ee.signum(g)&&(Math.abs(v-x)>180?(m+=360*Ee.signum(v),C=M):x!==0?m-=360*Ee.signum(v):C=M),C!==M&&(m+=360*Ee.signum(v)),o[a]=m}o[a+1]=g,h.rotation=f+m*n}queueEvents(e,t){const s=e.animationStart,n=e.animationEnd,r=n-s,o=e.reverse;let a=e.trackLast%r;o&&(a=r-a);const l=this.events;let c=0,h=l.length;for(;c=s&&d.time<=n&&this.queue.event(e,d)}let u=!1;if(e.loop)if(r===0)u=!0;else{const d=Math.floor(e.trackTime/r);u=d>0&&d>Math.floor(e.trackLast/r)}else u=t>=n&&e.animationLast=s&&d.time<=n&&this.queue.event(e,d)}}eventsReverse(e,t,s){const n=e.animation.duration,r=n-t,o=n-s,a=e.animation.timelines;for(let l=0,c=e.animation.timelines.length;l=o){for(let p=0;p=r)break;this.events.push(u[p])}}else{for(let m=0;m=r);m++)this.events.push(u[m]);let p=0;for(;p=o);p++);for(;p= 0.");if(e>=this.tracks.length)return;const t=this.tracks[e];if(!t)return;this.queue.end(t),this.clearNext(t);let s=t;for(;;){const n=s.mixingFrom;if(!n)break;this.queue.end(n),s.mixingFrom=null,s.mixingTo=null,s=n}this.tracks[t.trackIndex]=null,this.queue.drain()}setTrack(e,t,s){const n=this.expandToIndex(e);this.tracks[e]=t,t.previous=null,n&&(n.next=null,s&&this.queue.interrupt(n),t.mixingFrom=n,n.mixingTo=t,t.mixTime=0,n.timelinesRotation.length=0),this.queue.start(t)}setAnimation(e,t,s=!1){return typeof t=="string"?this.setAnimation1(e,t,s):this.setAnimation2(e,t,s)}setAnimation1(e,t,s=!1){const n=this.data.skeletonData.findAnimation(t);if(!n)throw new Error(`Animation not found: ${t}`);return this.setAnimation2(e,n,s)}setAnimation2(e,t,s=!1){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let n=!0,r=this.expandToIndex(e);r&&(r.nextTrackLast===-1&&r.animation===t?(this.tracks[e]=r.mixingFrom,this.queue.interrupt(r),this.queue.end(r),this.clearNext(r),r=r.mixingFrom,n=!1):this.clearNext(r));const o=this.trackEntry(e,t,s,r);return this.setTrack(e,o,n),this.queue.drain(),o}addAnimation(e,t,s=!1,n=0){return typeof t=="string"?this.addAnimation1(e,t,s,n):this.addAnimation2(e,t,s,n)}addAnimation1(e,t,s=!1,n=0){const r=this.data.skeletonData.findAnimation(t);if(!r)throw new Error(`Animation not found: ${t}`);return this.addAnimation2(e,r,s,n)}addAnimation2(e,t,s=!1,n=0){if(e<0)throw new Error("trackIndex must be >= 0.");if(!t)throw new Error("animation cannot be null.");let r=this.expandToIndex(e);if(r)for(;r.next;)r=r.next;const o=this.trackEntry(e,t,s,r);return r?(r.next=o,o.previous=r,n<=0&&(n=Math.max(n+r.getTrackComplete()-o.mixDuration,0))):(this.setTrack(e,o,!0),this.queue.drain(),n<0&&(n=0)),o.delay=n,o}setEmptyAnimation(e,t=0){const s=this.setAnimation(e,rl.emptyAnimation,!1);return s.mixDuration=t,s.trackEnd=t,s}addEmptyAnimation(e,t=0,s=0){const n=this.addAnimation(e,rl.emptyAnimation,!1,s);return s<=0&&(n.delay=Math.max(n.delay+n.mixDuration-t,0)),n.mixDuration=t,n.trackEnd=t,n}setEmptyAnimations(e=0){const t=this.queue.drainDisabled;this.queue.drainDisabled=!0;for(let s=0,n=this.tracks.length;s0&&(o[d]=v);break}}l&&(g=g&~Mc|r[d]&Mc),r[d]=g}}from(e,t,s){const n=this.propertyIds;let r=aO;for(let o=0,a=s.length;o= 0.");return e>=this.tracks.length?null:this.tracks[e]}addListener(e){if(!e)throw new Error("listener cannot be null.");this.listeners.push(e)}removeListener(e){const t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}clearListeners(){this.listeners.length=0}clearListenerNotifications(){this.queue.clear()}};S(rl,"emptyAnimation",new kp("",[],0));let fy=rl;class rO{constructor(){S(this,"animation",null);S(this,"previous",null);S(this,"next",null);S(this,"mixingFrom",null);S(this,"mixingTo",null);S(this,"listener",null);S(this,"trackIndex",0);S(this,"loop",!1);S(this,"additive",!1);S(this,"reverse",!1);S(this,"shortestRotation",!1);S(this,"keepHold",!1);S(this,"eventThreshold",0);S(this,"mixAttachmentThreshold",0);S(this,"alphaAttachmentThreshold",0);S(this,"mixDrawOrderThreshold",0);S(this,"animationStart",0);S(this,"animationEnd",0);S(this,"animationLast",0);S(this,"nextAnimationLast",0);S(this,"delay",0);S(this,"trackTime",0);S(this,"trackLast",0);S(this,"nextTrackLast",0);S(this,"trackEnd",0);S(this,"timeScale",0);S(this,"alpha",0);S(this,"mixTime",0);S(this,"mixDuration",0);S(this,"totalAlpha",0);S(this,"mixInterpolation",na.linear);S(this,"timelineMode",[]);S(this,"timelineHoldMix",[]);S(this,"timelinesRotation",[])}setMixDuration(e,t){this.mixDuration=e,t!==void 0&&(t<=0&&(t=this.previous==null?0:Math.max(t+this.previous.getTrackComplete()-e,0)),this.delay=t)}setMixInterpolation(e){if(!e)throw new Error("mixInterpolation cannot be null.");this.mixInterpolation=e}mix(){if(this.mixDuration===0)return 1;let e=this.mixTime/this.mixDuration;return e>=1?1:this.mixInterpolation===na.linear?e:(e=this.mixInterpolation.apply(e),e<0?0:e>1?1:e)}reset(){this.next=null,this.previous=null,this.mixingFrom=null,this.mixingTo=null,this.mixInterpolation=na.linear,this.animation=null,this.listener=null,this.timelineMode.length=0,this.timelineHoldMix.length=0,this.timelinesRotation.length=0}getAnimationTime(){if(!this.loop)return Math.min(this.trackTime+this.animationStart,this.animationEnd);const e=this.animationEnd-this.animationStart;return e===0?this.animationStart:this.trackTime%e+this.animationStart}setAnimationLast(e){this.animationLast=e,this.nextAnimationLast=e}isComplete(){return this.trackTime>=this.animationEnd-this.animationStart}resetRotationDirections(){this.timelinesRotation.length=0}getTrackComplete(){const e=this.animationEnd-this.animationStart;if(e!==0){if(this.loop)return e*(1+(this.trackTime/e|0));if(this.trackTime=0}}class oO{constructor(e){S(this,"objects",[]);S(this,"drainDisabled",!1);S(this,"animState");this.animState=e}start(e){this.objects.push(Ws.start),this.objects.push(e),this.animState.animationsChanged=!0}interrupt(e){this.objects.push(Ws.interrupt),this.objects.push(e)}end(e){this.objects.push(Ws.end),this.objects.push(e),this.animState.animationsChanged=!0}dispose(e){this.objects.push(Ws.dispose),this.objects.push(e)}complete(e){this.objects.push(Ws.complete),this.objects.push(e)}event(e,t){this.objects.push(Ws.event),this.objects.push(e),this.objects.push(t)}drain(){var e,t,s,n,r,o;if(!this.drainDisabled){this.drainDisabled=!0;for(let a=0;a= 0.");if(!s)throw new Error("name cannot be null.");this.index=t,this.parent=n}copy(t){const s=new xu(this.index,this.name,t);return s.length=this.length,s.setupPose.set(this.setupPose),s}}var zt;(function(i){i[i.Normal=0]="Normal",i[i.OnlyTranslation=1]="OnlyTranslation",i[i.NoRotationOrReflection=2]="NoRotationOrReflection",i[i.NoScale=3]="NoScale",i[i.NoScaleOrReflection=4]="NoScaleOrReflection"})(zt||(zt={}));class Am{constructor(){S(this,"bone");S(this,"x",0);S(this,"y",0);S(this,"rotation",0);S(this,"scaleX",0);S(this,"scaleY",0);S(this,"shearX",0);S(this,"shearY",0);S(this,"inherit",zt.Normal);S(this,"a",0);S(this,"b",0);S(this,"c",0);S(this,"d",0);S(this,"worldY",0);S(this,"worldX",0);S(this,"world",0);S(this,"local",0)}set(e){if(e==null)throw new Error("pose cannot be null.");this.x=e.x,this.y=e.y,this.rotation=e.rotation,this.scaleX=e.scaleX,this.scaleY=e.scaleY,this.shearX=e.shearX,this.shearY=e.shearY,this.inherit=e.inherit}setPosition(e,t){this.x=e,this.y=t}setScale(e,t){this.scaleX=e,this.scaleY=t===void 0?e:t}getInherit(){return this.inherit}setInherit(e){if(e==null)throw new Error("inherit cannot be null.");this.inherit=e}update(e,t){this.world!==e._update&&this.updateWorldTransform(e)}updateWorldTransform(e){this.local===e._update?this.updateLocalTransform(e):this.world=e._update;const t=this.rotation,s=this.scaleX,n=this.scaleY,r=this.shearX,o=this.shearY;if(!this.bone.parent){const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*s*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*s*f,this.d=Math.sin(m)*n*f,this.worldX=this.x*d+e.x,this.worldY=this.y*f+e.y;return}const a=this.bone.parent.appliedPose;let l=a.a,c=a.b,h=a.c,u=a.d;switch(this.worldX=l*this.x+c*this.y+a.worldX,this.worldY=h*this.x+u*this.y+a.worldY,this.inherit){case zt.Normal:{const d=(t+r)*Ee.degRad,f=(t+90+o)*Ee.degRad,p=Math.cos(d)*s,m=Math.cos(f)*n,g=Math.sin(d)*s,v=Math.sin(f)*n;this.a=l*p+c*g,this.b=l*m+c*v,this.c=h*p+u*g,this.d=h*m+u*v;return}case zt.OnlyTranslation:{const d=e.scaleX,f=e.scaleY,p=(t+r)*Ee.degRad,m=(t+90+o)*Ee.degRad;this.a=Math.cos(p)*s*d,this.b=Math.cos(m)*n*d,this.c=Math.sin(p)*s*f,this.d=Math.sin(m)*n*f;break}case zt.NoRotationOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f;l*=p,h*=m;let g=l*l+h*h,v=0;g>Ee.epsilon2?(g=Math.abs(l*u*m-c*p*h)/g,c=h*g,u=l*g,v=t-Ee.atan2Deg(h,l)):(l=0,h=0,v=t-90+Ee.atan2Deg(u,c));const y=(v+r)*Ee.degRad,x=(v+o+90)*Ee.degRad,M=Math.cos(y)*s,C=Math.cos(x)*n,w=Math.sin(y)*s,b=Math.sin(x)*n;this.a=(l*M-c*w)*d,this.b=(l*C-c*b)*d,this.c=(h*M+u*w)*f,this.d=(h*C+u*b)*f;break}case zt.NoScale:case zt.NoScaleOrReflection:{const d=e.scaleX,f=e.scaleY,p=1/d,m=1/f,g=t*Ee.degRad,v=Math.cos(g),y=Math.sin(g);let x=(l*v+c*y)*p,M=(h*v+u*y)*m;const C=1/Math.sqrt(x*x+M*M);x*=C,M*=C;let w=-M,b=x;this.inherit===zt.NoScale&&l*u-c*h<0!=(d<0!=f<0)&&(w=-w,b=-b);const _=r*Ee.degRad,E=(90+o)*Ee.degRad,F=Math.cos(_)*s,I=Math.cos(E)*n,k=Math.sin(_)*s,B=Math.sin(E)*n;this.a=(x*F+w*k)*d,this.b=(x*I+w*B)*d,this.c=(M*F+b*k)*f,this.d=(M*I+b*B)*f;break}}}updateLocalTransform(e){this.local=0,this.world=e._update;const t=e.scaleX,s=e.scaleY;if(!this.bone.parent){const v=1/t,y=1/s;this.x=(this.worldX-e.x)*v,this.y=(this.worldY-e.y)*y,this.set5(this.a*v,this.b*v,this.c*y,this.d*y,0);return}const n=this.bone.parent.appliedPose;let r=n.a,o=n.b,a=n.c,l=n.d;const c=r*l-o*a,h=1/(r*l-o*a),u=l*h,d=o*h,f=a*h,p=r*h,m=this.worldX-n.worldX,g=this.worldY-n.worldY;switch(this.x=m*u-g*d,this.y=g*p-m*f,this.inherit){case zt.Normal:this.set5(u*this.a-d*this.c,u*this.b-d*this.d,p*this.c-f*this.a,p*this.d-f*this.b,0);break;case zt.OnlyTranslation:{const v=1/t,y=1/s;this.set5(this.a*v,this.b*v,this.c*y,this.d*y,0);break}case zt.NoRotationOrReflection:{const v=1/t,y=1/s;r*=v,a*=y;const x=this.a*v,M=this.b*v,C=this.c*y,w=this.d*y,b=1/(r*r+a*a),_=1/Math.abs(c*v*y);this.set5((r*x+a*C)*b,(r*M+a*w)*b,(r*C-a*x)*_,(r*w-a*M)*_,Ee.atan2Deg(a,r));break}case zt.NoScale:case zt.NoScaleOrReflection:{const v=1/t,y=1/s,x=this.a*v,M=this.b*v,C=this.c*y,w=this.d*y;let b=l*this.a-o*this.c,_=r*this.c-a*this.a;c<0&&(b=-b,_=-_);let E=Ee.atan2Deg(_,b);this.rotation=E,E*=Ee.degRad;const F=Math.cos(E),I=Math.sin(E);let k=(r*F+o*I)*v,B=(a*F+l*I)*y;const D=1/Math.sqrt(k*k+B*B);k*=D,B*=D;const X=this.inherit===zt.NoScale&&c<0!=(t<0!=s<0)?-1:1;this.set4(k*x+B*C,k*M+B*w,(k*C-B*x)*X,(k*w-B*M)*X)}}}set4(e,t,s,n){const r=e*e+s*s,o=t*t+n*n;r>Ee.epsilon2?(this.shearX=Ee.atan2Deg(s,e),this.scaleX=Math.sqrt(r)):(this.shearX=0,this.scaleX=0),this.scaleY=Math.sqrt(o),o>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*s<0?(this.scaleY=-this.scaleY,this.shearY+=90):this.shearY-=90,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}set5(e,t,s,n,r){this.shearX=0;const o=e*e+s*s,a=t*t+n*n;if(o>Ee.epsilon2){const l=Ee.atan2Deg(s,e);this.rotation=l+r,this.scaleX=Math.sqrt(o),this.scaleY=Math.sqrt(a),a>Ee.epsilon2?(this.shearY=Ee.atan2Deg(n,t),e*n-t*s<0?(this.scaleY=-this.scaleY,this.shearY+=90-l):this.shearY-=90+l,this.shearY>180?this.shearY-=360:this.shearY<=-180&&(this.shearY+=360)):this.shearY=0}else this.scaleX=0,this.scaleY=Math.sqrt(a),this.shearY=0,this.rotation=a>Ee.epsilon2?Ee.atan2Deg(n,t)-90+r:r}validateLocalTransform(e){this.local===e._update&&this.updateLocalTransform(e)}modifyLocal(e){this.local===e._update&&this.updateLocalTransform(e),this.world=0,this.resetWorld(e,e._update)}modifyWorld(e){const t=e._update;this.local=t,this.world=t,this.resetWorld(e,t)}resetWorld(e,t){const s=this.bone.children;for(let n=0,r=s.length;n1&&t.constrained(this.bones[1].bone)}isSourceActive(){return this.target.active}static apply(t,s,n,r,o,a,l,c,h,u){typeof n=="number"?rr.apply1(t,s,n,r,o,a,l,c):rr.apply2(t,s,n,r,o,a,l,c,h,u)}static apply1(t,s,n,r,o,a,l,c){s.modifyLocal(t);const h=s.bone.parent.appliedPose;let u=h.a,d=h.b,f=h.c,p=h.d,m=-s.shearX-s.rotation,g=0,v=0;switch(s.inherit){case zt.OnlyTranslation:g=(n-s.worldX)*Ee.signum(t.scaleX),v=(r-s.worldY)*Ee.signum(t.scaleY);break;case zt.NoRotationOrReflection:{const y=Math.abs(u*p-d*f)/Math.max(Ee.epsilon,u*u+f*f),x=u/t.scaleX,M=f/t.scaleY;d=-M*y*t.scaleX,p=x*y*t.scaleY,m+=Ee.atan2Deg(M,x)}default:{const y=n-h.worldX,x=r-h.worldY,M=u*p-d*f;Math.abs(M)<=Ee.epsilon?(g=0,v=0):(g=(y*p-x*d)/M-s.x,v=(x*u-y*f)/M-s.y)}}if(m+=Ee.atan2Deg(v,g),s.scaleX<0&&(m+=180),m>180?m-=360:m<=-180&&(m+=360),s.rotation+=m*c,o||a){switch(s.inherit){case zt.NoScale:case zt.NoScaleOrReflection:g=n-s.worldX,v=r-s.worldY}const y=s.bone.data.length*s.scaleX;if(y>Ee.epsilon){const x=g*g+v*v;if(o&&xy*y){const M=(Math.sqrt(x)/y-1)*c+1;switch(s.scaleX*=M,l){case Vs.Uniform:s.scaleY*=M;break;case Vs.Volume:s.scaleY/=M<.7?.25+.642857*M:M}}}}}static apply2(t,s,n,r,o,a,l,c,h,u){if(s.inherit!==zt.Normal||n.inherit!==zt.Normal)return;s.modifyLocal(t),n.modifyLocal(t);let d=s.x,f=s.y,p=s.scaleX,m=s.scaleY,g=n.scaleX,v=0,y=0,x=0;p<0?(p=-p,v=180,x=-1):(v=0,x=1),m<0&&(m=-m,x=-x),g<0?(g=-g,y=180):y=0;let M=0,C=0,w=s.a,b=s.b,_=s.c,E=s.d;const F=Math.abs(p-m)<=Ee.epsilon;!F||l?(n.y=0,M=w*n.x+s.worldX,C=_*n.x+s.worldY):(M=w*n.x+b*n.y+s.worldX,C=_*n.x+E*n.y+s.worldY);const I=s.bone.parent.appliedPose;w=I.a,b=I.b,_=I.c,E=I.d;let k=w*E-b*_,B=M-I.worldX,D=C-I.worldY;k=Math.abs(k)<=Ee.epsilon?0:1/k;const X=(B*E-D*b)*k-d,N=(D*w-B*_)*k-f;let U=Math.sqrt(X*X+N*N),A=n.bone.data.length*g,P,O;if(U0){let re=Math.min(1,ie/(h*2))-1;re=(ie-h*(1-re*re))/K,L-=re*L,$-=re*$,V=L*L+$*$}}e:if(F){A*=p;let K=(V-U*U-A*A)/(2*U*A);if(K<-1)K=-1,O=Math.PI*a;else if(K>1){if(K=1,O=0,l)switch(w=(Math.sqrt(V)/(U+A)-1)*u+1,s.scaleX*=w,c){case Vs.Uniform:s.scaleY*=w;break;case Vs.Volume:s.scaleY/=w<.7?.25+.642857*w:w}}else O=Math.acos(K)*a;w=U+A*K,b=A*Math.sin(O),P=Math.atan2($*w-L*b,L*w+$*b)}else{w=p*A,b=m*A;const K=w*w,ie=b*b,re=Math.atan2($,L);_=ie*U*U+K*V-K*ie;const pe=-2*ie*U,ge=ie-K;if(E=pe*pe-4*ge*_,E>=0){let ue=Math.sqrt(E);pe<0&&(ue=-ue),ue=-(pe+ue)*.5;let ne=ue/ge,de=_/ue;const le=Math.abs(ne)=0){D=Math.sqrt(ne)*a,P=re-Math.atan2(D,le),O=Math.atan2(D/m,(le-U)/p);break e}}let he=Ee.PI,fe=U-w,Y=fe*fe,W=0,H=0,G=U+w,q=G*G,se=0;_=-w*U/(K-ie),_>=-1&&_<=1&&(_=Math.acos(_),B=w*Math.cos(_)+U,D=b*Math.sin(_),E=B*B+D*D,Eq&&(H=_,q=E,G=B,se=D)),V<=(Y+q)*.5?(P=re-Math.atan2(W*a,fe),O=he*a):(P=re-Math.atan2(se*a,G),O=H*a)}const j=Math.atan2(n.y,n.x)*x;P=(P-j)*Ee.radDeg+v-s.rotation,P>180?P-=360:P<=-180&&(P+=360),s.rotation+=P*u,O=((O+j)*Ee.radDeg-n.shearX)*x+y-n.rotation,O>180?O-=360:O<=-180&&(O+=360),n.rotation+=O*u}}class Uc extends Ll{constructor(t){super(t,new Em);S(this,"bones",[]);S(this,"_target",null);S(this,"_scaleYMode",Vs.None)}set target(t){this._target=t}get target(){if(!this._target)throw new Error("target cannot be null.");return this._target}set scaleYMode(t){this._scaleYMode=t}get scaleYMode(){if(this._scaleYMode==null)throw new Error("scaleYMode cannot be null.");return this._scaleYMode}create(t){return new rr(this,t)}}class Im{constructor(){S(this,"position",0);S(this,"spacing",0);S(this,"mixRotate",0);S(this,"mixX",0);S(this,"mixY",0)}set(e){this.position=e.position,this.spacing=e.spacing,this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY}}class $c extends Ll{constructor(t){super(t,new Im);S(this,"bones",[]);S(this,"_slot",null);S(this,"positionMode",cn.Fixed);S(this,"spacingMode",ms.Fixed);S(this,"rotateMode",lo.Chain);S(this,"offsetRotation",0)}set slot(t){this._slot=t}get slot(){if(this._slot)return this._slot;throw new Error("SlotData not set.")}create(t){return new Rm(this,t)}}var cn;(function(i){i[i.Fixed=0]="Fixed",i[i.Percent=1]="Percent"})(cn||(cn={}));var ms;(function(i){i[i.Length=0]="Length",i[i.Fixed=1]="Fixed",i[i.Percent=2]="Percent",i[i.Proportional=3]="Proportional"})(ms||(ms={}));var lo;(function(i){i[i.Tangent=0]="Tangent",i[i.Chain=1]="Chain",i[i.ChainScale=2]="ChainScale"})(lo||(lo={}));const Mi=class Mi extends Ol{constructor(t,s){super(t,new Im,new Im);S(this,"data");S(this,"bones");S(this,"slot");S(this,"spaces",[]);S(this,"positions",[]);S(this,"world",[]);S(this,"curves",[]);S(this,"lengths",[]);S(this,"segments",[]);if(!s)throw new Error("skeleton cannot be null.");this.data=t,this.bones=[];for(const n of this.data.bones)this.bones.push(s.bones[n.index].constrainedPose);this.slot=s.slots[t.slot.index]}copy(t){var s=new Mi(this.data,t);return s.pose.set(this.pose),s}update(t,s){const n=this.slot.appliedPose.attachment;if(!(n instanceof Ml))return;const r=this.appliedPose,o=r.mixRotate,a=r.mixX,l=r.mixY;if(o===0&&a===0&&l===0)return;const c=this.data,h=c.rotateMode===lo.Tangent,u=c.rotateMode===lo.ChainScale,d=this.bones,f=d.length,p=h?f:f+1,m=Ge.setArraySize(this.spaces,p),g=u?this.lengths=Ge.setArraySize(this.lengths,f):[],v=r.spacing;switch(c.spacingMode){case ms.Percent:if(u)for(let b=0,_=p-1;b<_;b++){const E=d[b],F=E.bone.data.length,I=F*E.a,k=F*E.c;g[b]=Math.sqrt(I*I+k*k)}Ge.arrayFill(m,1,p,v);break;case ms.Proportional:{let b=0;for(let _=0,E=p-1;_0){b=p/b*v;for(let _=1;_0?Ee.degRad:-Ee.degRad}for(let b=0,_=3;b0){let D=E.a,X=E.b,N=E.c,U=E.d,A=0,P=0,O=0;if(h?A=y[_-1]:m[b+1]===0?A=y[_+2]:A=Math.atan2(B,k),A-=Math.atan2(N,D),w){P=Math.cos(A),O=Math.sin(A);const L=E.bone.data.length;x+=(L*(P*D-O*N)-k)*o,M+=(L*(O*D+P*N)-B)*o}else A+=C;A>Ee.PI?A-=Ee.PI2:A<-Ee.PI&&(A+=Ee.PI2),A*=o,P=Math.cos(A),O=Math.sin(A),E.a=P*D-O*N,E.b=P*X-O*U,E.c=O*D+P*N,E.d=O*X+P*U}}}computeWorldPositions(t,s,n,r){const o=this.slot;let a=this.appliedPose.position,l=this.spaces,c=Ge.setArraySize(this.positions,n*3+2),h=this.world;const u=s.closed;let d=s.worldVerticesLength,f=d/6,p=Mi.NONE;if(!s.constantSpeed){const O=s.lengths;f-=u?1:2;const L=O[f];this.data.positionMode===cn.Percent&&(a*=L);let $;switch(this.data.spacingMode){case ms.Percent:$=L;break;case ms.Proportional:$=L/n;break;default:$=1}h=Ge.setArraySize(this.world,8);for(let V=0,j=0,K=0;VL){p!==Mi.AFTER&&(p=Mi.AFTER,s.computeWorldVertices(t,o,d-6,4,h,0,2)),this.addAfterPosition(re-L,h,0,c,j);continue}for(;;K++){const pe=O[K];if(!(re>pe)){if(K===0)re/=pe;else{const ge=O[K-1];re=(re-ge)/(pe-ge)}break}}K!==p&&(p=K,u&&K===f?(s.computeWorldVertices(t,o,d-4,4,h,0,2),s.computeWorldVertices(t,o,0,4,h,4,2)):s.computeWorldVertices(t,o,K*6+2,8,h,0,2)),this.addCurvePosition(re,h[0],h[1],h[2],h[3],h[4],h[5],h[6],h[7],c,j,r||V>0&&ie===0)}return c}u?(d+=2,h=Ge.setArraySize(this.world,d),s.computeWorldVertices(t,o,2,d-4,h,0,2),s.computeWorldVertices(t,o,0,2,h,d-4,2),h[d-2]=h[0],h[d-1]=h[1]):(f--,d-=4,h=Ge.setArraySize(this.world,d),s.computeWorldVertices(t,o,2,d,h,0,2));const m=Ge.setArraySize(this.curves,f);let g=0,v=h[0],y=h[1],x=0,M=0,C=0,w=0,b=0,_=0,E=0,F=0,I=0,k=0,B=0,D=0,X=0,N=0;for(let O=0,L=2;Og){this.addAfterPosition(K-g,h,d-4,c,L);continue}for(;;$++){const ie=m[$];if(!(K>ie)){if($===0)K/=ie;else{const re=m[$-1];K=(K-re)/(ie-re)}break}}if($!==p){p=$;let ie=$*6;for(v=h[ie],y=h[ie+1],x=h[ie+2],M=h[ie+3],C=h[ie+4],w=h[ie+5],b=h[ie+6],_=h[ie+7],E=(v-x*2+C)*.03,F=(y-M*2+w)*.03,I=((x-C)*3-v+b)*.006,k=((M-w)*3-y+_)*.006,B=E*2+I,D=F*2+k,X=(x-v)*.3+E+I*.16666667,N=(M-y)*.3+F+k*.16666667,P=Math.sqrt(X*X+N*N),A[0]=P,ie=1;ie<8;ie++)X+=B,N+=D,B+=I,D+=k,P+=Math.sqrt(X*X+N*N),A[ie]=P;X+=B,N+=D,P+=Math.sqrt(X*X+N*N),A[8]=P,X+=B+I,N+=D+k,P+=Math.sqrt(X*X+N*N),A[9]=P,V=0}for(K*=P;;V++){const ie=A[V];if(!(K>ie)){if(V===0)K/=ie;else{const re=A[V-1];K=V+(K-re)/(ie-re)}break}}this.addCurvePosition(K*.1,v,y,x,M,C,w,b,_,c,L,r||O>0&&j===0)}return c}addBeforePosition(t,s,n,r,o){const a=s[n],l=s[n+1],c=s[n+2]-a,h=s[n+3]-l,u=Math.atan2(h,c);r[o]=a+t*Math.cos(u),r[o+1]=l+t*Math.sin(u),r[o+2]=u}addAfterPosition(t,s,n,r,o){const a=s[n+2],l=s[n+3],c=a-s[n],h=l-s[n+1],u=Math.atan2(h,c);r[o]=a+t*Math.cos(u),r[o+1]=l+t*Math.sin(u),r[o+2]=u}addCurvePosition(t,s,n,r,o,a,l,c,h,u,d,f){if(t===0||Number.isNaN(t)){u[d]=s,u[d+1]=n,u[d+2]=Math.atan2(o-n,r-s);return}const p=t*t,m=p*t,g=1-t,v=g*g,y=v*g,x=g*t,M=x*3,C=g*M,w=M*t,b=s*y+r*C+a*w+c*m,_=n*y+o*C+l*w+h*m;u[d]=b,u[d+1]=_,f&&(t<.001?u[d+2]=Math.atan2(o-n,r-s):u[d+2]=Math.atan2(_-(n*v+o*x*2+l*p),b-(s*v+r*x*2+a*p)))}sort(t){const s=this.slot.data.index,n=this.slot.bone;t.skin!=null&&this.sortPathSlot(t,t.skin,s,n),t.data.defaultSkin!=null&&t.data.defaultSkin!==t.skin&&this.sortPathSlot(t,t.data.defaultSkin,s,n),this.sortPath(t,this.slot.pose.attachment,n);const r=this.bones,o=this.bones.length;for(let a=0;a0,a=this.data.y>0,l=this.data.rotate>0||this.data.shearX>0,c=this.data.scaleX>0,h=this.bone;let u=h.bone.data.length,d=this.data.step,f=0;if(s!==qr.none){switch(h.modifyWorld(t),s){case qr.reset:this.reset(t);case qr.update:{const p=Math.max(t.time-this.lastTime,0),m=this.remaining;this.remaining+=p,this.lastTime=t.time;const g=h.worldX,v=h.worldY;if(this._reset)this._reset=!1,this.ux=g,this.uy=v;else{let y=this.remaining,x=n.inertia,M=t.data.referenceScale,C=-1,w=0,b=0,_=this.data.limit*p,E=_*Math.abs(t.scaleY);if(_*=Math.abs(t.scaleX),o||a){if(o){const F=(this.ux-g)*x;this.xOffset+=F>_?_:F<-_?-_:F,this.ux=g}if(a){const F=(this.uy-v)*x;this.yOffset+=F>E?E:F<-E?-E:F,this.uy=v}if(y>=d){const F=this.xOffset,I=this.yOffset;C=n.damping**(60*d),w=d*n.massInverse,b=n.strength;const k=M*n.wind,B=M*n.gravity,D=(k*t.windX+B*t.gravityX)*t.scaleX,X=(k*t.windY+B*t.gravityY)*t.scaleY;do o&&(this.xVelocity+=(D-this.xOffset*b)*w,this.xOffset+=this.xVelocity*d,this.xVelocity*=C),a&&(this.yVelocity-=(X+this.yOffset*b)*w,this.yOffset+=this.yVelocity*d,this.yVelocity*=C),y-=d;while(y>=d);this.xLag=this.xOffset-F,this.yLag=this.yOffset-I}f=Math.max(0,1-y/d),o&&(h.worldX+=(this.xOffset-this.xLag*f)*r*this.data.x),a&&(h.worldY+=(this.yOffset-this.yLag*f)*r*this.data.y)}if(l||c){let F=Math.atan2(h.c,h.a),I=0,k=0,B=0,D=this.cx-h.worldX,X=this.cy-h.worldY;if(D>_?D=_:D<-_&&(D=-_),X>E?X=E:X<-E&&(X=-E),y=this.remaining,l){B=(this.data.rotate+this.data.shearX)*r,f=this.rotateLag*Math.max(0,1-m/d);let N=Math.atan2(X+this.ty,D+this.tx)-F-(this.rotateOffset-f)*B;this.rotateOffset+=(N-Math.ceil(N*Ee.invPI2-.5)*Ee.PI2)*x,N=(this.rotateOffset-f)*B+F,I=Math.cos(N),k=Math.sin(N),c&&(N=u*h.getWorldScaleX(),N>0&&(this.scaleOffset+=(D*I+X*k)*x/N))}else{I=Math.cos(F),k=Math.sin(F);const N=u*h.getWorldScaleX()-this.scaleLag*Math.max(0,1-m/d);N>0&&(this.scaleOffset+=(D*I+X*k)*x/N)}if(y>=d){C===-1&&(C=n.damping**(60*d),w=d*n.massInverse,b=n.strength);const N=n.wind*t.windX+n.gravity*t.gravityX,U=(n.wind*t.windY+n.gravity*t.gravityY)*Fm.yDir,A=this.rotateOffset,P=this.scaleOffset,O=u/M;for(;;)if(y-=d,c&&(this.scaleVelocity+=(N*I-U*k-this.scaleOffset*b)*w,this.scaleOffset+=this.scaleVelocity*d,this.scaleVelocity*=C),l){if(this.rotateVelocity-=((N*k+U*I)*O+this.rotateOffset*b)*w,this.rotateOffset+=this.rotateVelocity*d,this.rotateVelocity*=C,y0){let y=0;this.data.rotate>0&&(y=p*this.data.rotate,m=Math.sin(y),g=Math.cos(y),v=h.b,h.b=g*v-m*h.d,h.d=m*v+g*h.d),y+=p*this.data.shearX,m=Math.sin(y),g=Math.cos(y),v=h.a,h.a=g*v-m*h.c,h.c=m*v+g*h.c}else p*=this.data.rotate,m=Math.sin(p),g=Math.cos(p),v=h.a,h.a=g*v-m*h.c,h.c=m*v+g*h.c,v=h.b,h.b=g*v-m*h.d,h.d=m*v+g*h.d}if(c){let p=1+(this.scaleOffset-this.scaleLag*f)*r*this.data.scaleX;switch(h.a*=p,h.c*=p,this.data.scaleYMode){case Vs.Uniform:h.b*=p,h.d*=p;break;case Vs.Volume:p=Math.abs(p),p=p>=.7?1/p:4-3.67347*p,h.b*=p,h.d*=p}}s!==qr.pose&&(this.tx=u*h.a,this.ty=u*h.c)}}sort(t){const s=this.bone.bone;t.sortBone(s),t._updateCache.push(this),t.sortReset(s.children),t.constrained(s)}isSourceActive(){return this.bone.bone.active}}class Xc extends Ll{constructor(t){super(t,new Pm);S(this,"_bone",null);S(this,"x",0);S(this,"y",0);S(this,"rotate",0);S(this,"scaleX",0);S(this,"shearX",0);S(this,"limit",0);S(this,"step",0);S(this,"inertiaGlobal",!1);S(this,"strengthGlobal",!1);S(this,"dampingGlobal",!1);S(this,"massGlobal",!1);S(this,"windGlobal",!1);S(this,"gravityGlobal",!1);S(this,"mixGlobal",!1);S(this,"_scaleYMode",Vs.None)}set bone(t){this._bone=t}get bone(){if(this._bone)return this._bone;throw new Error("BoneData not set.")}get scaleYMode(){return this._scaleYMode}set scaleYMode(t){if(t==null)throw new Error("scaleYMode cannot be null.");this._scaleYMode=t}create(t){return new bu(this,t)}}typeof Math.fround>"u"&&(Math.fround=(i=>e=>(i[0]=e,i[0]))(new Float32Array(1)));class Om{constructor(){S(this,"time",0);S(this,"mix",0)}set(e){this.time=e.time,this.mix=e.mix}}const ol=class ol extends Ol{constructor(t,s){super(t,new Om,new Om);S(this,"bone",null);if(!s)throw new Error("skeleton cannot be null.");t.bone!=null&&(this.bone=s.bones[t.bone.index])}copy(t){var s=new ol(this.data,t);return s.pose.set(this.pose),s}update(t,s){const n=this.appliedPose;if(n.mix===0)return;const r=this.data,o=r.animation,a=this.bone;if(a!==null){if(!a.active)return;r.local&&a.appliedPose.validateLocalTransform(t),n.time=r.offset+(r.property.value(t,a.appliedPose,r.local,ol.offsets)-r.property.offset)*r.scale,r.loop?n.time=o.duration+n.time%o.duration:n.time=Math.max(0,n.time)}const l=t.bones,c=o.bones;for(let h=0,u=o.bones.length;h=n.length&&(n.length=e+1),n[e]||(n[e]={}),n[e][t]=s}addSkin(e){for(let s=0;s= 0.");if(!n)throw new Error("boneData cannot be null.");this.index=t,this.boneData=n}}var Fh;(function(i){i[i.Normal=0]="Normal",i[i.Additive=1]="Additive",i[i.Multiply=2]="Multiply",i[i.Screen=3]="Screen"})(Fh||(Fh={}));class Nm{constructor(){S(this,"mixRotate",0);S(this,"mixX",0);S(this,"mixY",0);S(this,"mixScaleX",0);S(this,"mixScaleY",0);S(this,"mixShearY",0)}set(e){this.mixRotate=e.mixRotate,this.mixX=e.mixX,this.mixY=e.mixY,this.mixScaleX=e.mixScaleX,this.mixScaleY=e.mixScaleY,this.mixShearY=e.mixShearY}}class Up extends Ol{constructor(t,s){super(t,new Nm,new Nm);S(this,"bones");S(this,"source");if(!s)throw new Error("skeleton cannot be null.");this.bones=[];for(const r of t.bones)this.bones.push(s.bones[r.index].constrainedPose);const n=s.bones[t.source.index];if(n==null)throw new Error("source cannot be null.");this.source=n}copy(t){var s=new Up(this.data,t);return s.pose.set(this.pose),s}update(t,s){const n=this.appliedPose;if(n.mixRotate===0&&n.mixX===0&&n.mixY===0&&n.mixScaleX===0&&n.mixScaleY===0&&n.mixShearY===0)return;const r=this.data,o=r.localSource,a=r.localTarget,l=r.additive,c=r.clamp,h=r.offsets,u=this.source.appliedPose;o&&u.validateLocalTransform(t);const d=r.properties,f=r.properties.length,p=this.bones;for(let m=0,g=this.bones.length;m0?n[Mt.ROTATION]:-n[Mt.ROTATION]);return a<0&&(a+=360),a}}class PS extends ya{mix(e){return e.mixRotate}apply(e,t,s,n,r,o){if(r)s.rotation+=(o?n:n-s.rotation)*t.mixRotate;else{const a=e.scaleX,l=e.scaleY,c=1/a,h=1/l,u=s.a*c,d=s.b*c,f=s.c*h,p=s.d*h;n*=Ee.degRad,o||(n-=Math.atan2(f,u)),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2),n*=t.mixRotate;const m=Math.cos(n),g=Math.sin(n);s.a=(m*u-g*f)*a,s.b=(m*d-g*p)*a,s.c=(g*u+m*f)*l,s.d=(g*d+m*p)*l}}}class Um extends va{value(e,t,s,n){return s?t.x+n[Mt.X]:(n[Mt.X]*t.a+n[Mt.Y]*t.b+t.worldX)/e.scaleX}}class kS extends ya{mix(e){return e.mixX}apply(e,t,s,n,r,o){r?s.x+=(o?n:n-s.x)*t.mixX:(o||(n-=s.worldX/e.scaleX),s.worldX+=n*t.mixX*e.scaleX)}}class $m extends va{value(e,t,s,n){return s?t.y+n[Mt.Y]:(n[Mt.X]*t.c+n[Mt.Y]*t.d+t.worldY)/e.scaleY}}class FS extends ya{mix(e){return e.mixY}apply(e,t,s,n,r,o){r?s.y+=(o?n:n-s.y)*t.mixY:(o||(n-=s.worldY/e.scaleY),s.worldY+=n*t.mixY*e.scaleY)}}class Xm extends va{value(e,t,s,n){if(s)return t.scaleX+n[Mt.SCALEX];const r=t.a/e.scaleX,o=t.c/e.scaleY;return Math.sqrt(r*r+o*o)+n[Mt.SCALEX]}}class OS extends ya{mix(e){return e.mixScaleX}apply(e,t,s,n,r,o){if(r)o?s.scaleX*=1+(n-1)*t.mixScaleX:s.scaleX!==0&&(s.scaleX+=(n-s.scaleX)*t.mixScaleX);else if(o){const a=1+(n-1)*t.mixScaleX;s.a*=a,s.c*=a}else{let a=s.a/e.scaleX,l=s.c/e.scaleY,c=Math.sqrt(a*a+l*l);c!==0&&(c=1+(n-c)*t.mixScaleX/c,s.a*=c,s.c*=c)}}}class Vm extends va{value(e,t,s,n){if(s)return t.scaleY+n[Mt.SCALEY];const r=t.b/e.scaleX,o=t.d/e.scaleY;return Math.sqrt(r*r+o*o)+n[Mt.SCALEY]}}class LS extends ya{mix(e){return e.mixScaleY}apply(e,t,s,n,r,o){if(r)o?s.scaleY*=1+(n-1)*t.mixScaleY:s.scaleY!==0&&(s.scaleY+=(n-s.scaleY)*t.mixScaleY);else if(o){const a=1+(n-1)*t.mixScaleY;s.b*=a,s.d*=a}else{let a=s.b/e.scaleX,l=s.d/e.scaleY,c=Math.sqrt(a*a+l*l);c!==0&&(c=1+(n-c)*t.mixScaleY/c,s.b*=c,s.d*=c)}}}class Ym extends va{value(e,t,s,n){if(s)return t.shearY+n[Mt.SHEARY];const r=1/e.scaleX,o=1/e.scaleY;return(Math.atan2(t.d*o,t.b*r)-Math.atan2(t.c*o,t.a*r))*Ee.radDeg-90+n[Mt.SHEARY]}}class BS extends ya{mix(e){return e.mixShearY}apply(e,t,s,n,r,o){if(r)o||(n-=s.shearY),s.shearY+=n*t.mixShearY;else{const a=e.scaleX,l=e.scaleY,c=s.b/a,h=s.d/l,u=Math.atan2(h,c);n=(n+90)*Ee.degRad,o?n-=Ee.PI/2:(n-=u-Math.atan2(s.c/l,s.a/a),n>Ee.PI?n-=Ee.PI2:n<-Ee.PI&&(n+=Ee.PI2)),n=u+n*t.mixShearY;const d=Math.sqrt(c*c+h*h);s.b=Math.cos(n)*d*a,s.d=Math.sin(n)*d*l}}}class iV{constructor(e){S(this,"scale",1);S(this,"attachmentLoader");S(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,s=new IS;s.name="";const n=new cO(e),r=n.readInt32(),o=n.readInt32();s.hash=o===0&&r===0?null:o.toString(16)+r.toString(16),s.version=n.readString(),s.x=n.readFloat(),s.y=n.readFloat(),s.width=n.readFloat(),s.height=n.readFloat(),s.referenceScale=n.readFloat()*t;const a=n.readBoolean();a&&(s.fps=n.readFloat(),s.imagesPath=n.readString(),s.audioPath=n.readString());let l=0;l=n.readInt(!0);for(let p=0;p>5;for(let M=0,C;M>1&1,v.spacingMode=y>>2&3,v.rotateMode=y>>4&3,(y&128)!==0&&(v.offsetRotation=n.readFloat());const x=v.setupPose;x.position=n.readFloat(),v.positionMode===cn.Fixed&&(x.position*=t),x.spacing=n.readFloat(),(v.spacingMode===ms.Length||v.spacingMode===ms.Fixed)&&(x.spacing*=t),x.mixRotate=n.readFloat(),x.mixX=n.readFloat(),x.mixY=n.readFloat(),h.push(v);break}case FO:{const v=new Xc(m);v.bone=c[n.readInt(!0)];let y=n.readByte();if(v.skinRequired=(y&1)!==0,(y&2)!==0&&(v.x=n.readFloat()),(y&4)!==0&&(v.y=n.readFloat()),(y&8)!==0&&(v.rotate=n.readFloat()),(y&16)!==0){let M=n.readFloat();M<-2?(v.scaleYMode=Vs.Volume,M=-2-M):M<0&&(v.scaleYMode=Vs.Uniform,M=-1-M),v.scaleX=M}(y&32)!==0&&(v.shearX=n.readFloat()),v.limit=((y&64)!==0?n.readFloat():5e3)*t,v.step=1/n.readUnsignedByte();const x=v.setupPose;x.inertia=n.readFloat(),x.strength=n.readFloat(),x.damping=n.readFloat(),x.massInverse=(y&128)!==0?n.readFloat():1,x.wind=n.readFloat(),x.gravity=n.readFloat(),y=n.readByte(),(y&1)!==0&&(v.inertiaGlobal=!0),(y&2)!==0&&(v.strengthGlobal=!0),(y&4)!==0&&(v.dampingGlobal=!0),(y&8)!==0&&(v.massGlobal=!0),(y&16)!==0&&(v.windGlobal=!0),(y&32)!==0&&(v.gravityGlobal=!0),(y&64)!==0&&(v.mixGlobal=!0),x.mix=(y&128)!==0?n.readFloat():1,h.push(v);break}case OO:{const v=new Zr(m),y=n.readByte();if(v.skinRequired=(y&1)!==0,v.loop=(y&2)!==0,v.additive=(y&4)!==0,(y&8)!==0){const x=n.readFloat();a&&(y&64)!==0?v.max=x:v.setupPose.time=x}if((y&16)!==0&&(v.setupPose.mix=(y&32)!==0?n.readFloat():1),(y&64)!==0){v.local=(y&128)!==0,v.bone=c[n.readInt(!0)];const x=n.readFloat();let M=1;switch(n.readByte()){case 0:v.property=new Dm;break;case 1:{M=t,v.property=new Um;break}case 2:{M=t,v.property=new $m;break}case 3:v.property=new Xm;break;case 4:v.property=new Vm;break;case 5:v.property=new Ym;break;default:continue}v.property.offset=x*M,v.offset=n.readFloat(),v.scale=n.readFloat()/M}h.push(v);break}}}const d=this.readSkin(n,s,!0,a);d&&(s.defaultSkin=d,s.skins.push(d));{let p=s.skins.length;for(Ge.setArraySize(s.skins,l=p+n.readInt(!0));p0){y=[];for(let b=0;b>4,e.readFloat())}r.push(F);break}}}}}const a=s.slots.length,l=e.readInt(!0);if(l>0){const f=new br(l);for(let p=0;p0){const f=new Sl(h);for(let p=0;p>>1^-(s&1)}readStringRef(){const e=this.readInt(!0);return e===0?null:this.strings[e-1]}readString(){let e=this.readInt(!0);switch(e){case 0:return null;case 1:return""}e--;let t="";for(let s=0;s>4){case 12:case 13:t+=String.fromCharCode((n&31)<<6|this.readByte()&63),s+=2;break;case 14:t+=String.fromCharCode((n&15)<<12|(this.readByte()&63)<<6|this.readByte()&63),s+=3;break;default:t+=String.fromCharCode(n),s++}}return t}readFloat(){const e=this.buffer.getFloat32(this.index);return this.index+=4,e}readBoolean(){return this.readByte()!==0}}let hO=class{constructor(e,t,s,n,r,o){S(this,"source");S(this,"skinIndex");S(this,"slotIndex");S(this,"sourceIndex");S(this,"mesh");S(this,"inheritTimelines");this.mesh=e,this.skinIndex=t,this.slotIndex=s,this.sourceIndex=n,this.source=r,this.inheritTimelines=o}};class by{constructor(e=null,t,s=0){S(this,"bones");S(this,"vertices");S(this,"length");this.bones=e,this.vertices=t,this.length=s}}var Sn;(function(i){i[i.Region=0]="Region",i[i.BoundingBox=1]="BoundingBox",i[i.Mesh=2]="Mesh",i[i.LinkedMesh=3]="LinkedMesh",i[i.Path=4]="Path",i[i.Point=5]="Point",i[i.Clipping=6]="Clipping"})(Sn||(Sn={}));function is(i,e,t,s){t instanceof Fn?uO(i,e,t,s):dO(i,e,t,s)}function uO(i,e,t,s){let n=i.readFloat(),r=i.readFloat()*s;for(let o=0,a=0,l=t.getFrameCount()-1;t.setFrame(o,n,r),o!==l;o++){const c=i.readFloat(),h=i.readFloat()*s;switch(i.readByte()){case Wi:t.setStepped(o);break;case zi:dt(i,t,a++,o,0,n,c,r,h,s)}n=c,r=h}e.push(t)}function dO(i,e,t,s){let n=i.readFloat(),r=i.readFloat()*s,o=i.readFloat()*s;for(let a=0,l=0,c=t.getFrameCount()-1;t.setFrame(a,n,r,o),a!==c;a++){const h=i.readFloat(),u=i.readFloat()*s,d=i.readFloat()*s;switch(i.readByte()){case Wi:t.setStepped(a);break;case zi:dt(i,t,l++,a,0,n,h,r,u,s),dt(i,t,l++,a,1,n,h,o,d,s)}n=h,r=u,o=d}e.push(t)}function wy(i,e){const t=i.readInt(!0);if(t===0)return null;const s=new Array(e).fill(-1),n=new Array(e-t);let r=0,o=0;for(let a=0;a=0;a--)s[a]===-1&&(s[a]=n[--o]);return s}function dt(i,e,t,s,n,r,o,a,l,c){e.setBezier(t,s,n,r,a,i.readFloat(),i.readFloat()*c,i.readFloat(),i.readFloat()*c,o,l)}const fO=0,mO=1,pO=2,gO=3,vO=4,yO=5,xO=6,bO=7,wO=8,SO=9,MO=10,TO=0,_O=1,CO=2,AO=3,EO=4,IO=5,RO=0,PO=1,kO=2,FO=3,OO=4,LO=0,BO=1,NO=0,DO=1,UO=2,$O=0,XO=1,VO=2,YO=4,GO=5,jO=6,HO=7,WO=8,zO=0,qO=1,Wi=1,zi=2;class KO{constructor(e){S(this,"attachmentLoader");S(this,"scale",1);S(this,"linkedMeshes",[]);this.attachmentLoader=e}readSkeletonData(e){const t=this.scale,s=new IS,n=typeof e=="string"?JSON.parse(e):e,r=n.skeleton;if(r&&(s.hash=r.hash,s.version=r.spine,s.x=r.x,s.y=r.y,s.width=r.width,s.height=r.height,s.referenceScale=Q(r,"referenceScale",100)*t,s.fps=r.fps,s.imagesPath=r.images??null,s.audioPath=r.audio??null),n.bones)for(let o=0;o0&&c.properties.push(w)}c.offsets[Mt.ROTATION]=Q(o,"rotation",0),c.offsets[Mt.X]=Q(o,"x",0)*t,c.offsets[Mt.Y]=Q(o,"y",0)*t,c.offsets[Mt.SCALEX]=Q(o,"scaleX",0),c.offsets[Mt.SCALEY]=Q(o,"scaleY",0),c.offsets[Mt.SHEARY]=Q(o,"shearY",0);const x=c.setupPose;d&&(x.mixRotate=Q(o,"mixRotate",1)),f&&(x.mixX=Q(o,"mixX",1)),p&&(x.mixY=Q(o,"mixY",x.mixX)),m&&(x.mixScaleX=Q(o,"mixScaleX",1)),g&&(x.mixScaleY=Q(o,"mixScaleY",x.mixScaleX)),v&&(x.mixShearY=Q(o,"mixShearY",1)),s.constraints.push(c);break}case"path":{const c=new $c(a);c.skinRequired=l;for(let f=0;f0){const d=s.findConstraint(c,Xc);if(!d)throw new Error(`Physics constraint not found: ${c}`);u=s.constraints.indexOf(d)}for(const d in h){const f=h[d];let p=f[0];if(!p)continue;const m=f.length;let g,v=0;if(d==="reset"){const y=new kh(m,u);for(let x=0;p!=null;p=f[x+1],x++)y.setFrame(x,Q(p,"time",0));r.push(y);continue}switch(d){case"inertia":g=new vS(m,m,u);break;case"strength":g=new yS(m,m,u);break;case"damping":g=new xS(m,m,u);break;case"mass":g=new bS(m,m,u);break;case"wind":g=new wS(m,m,u);break;case"gravity":g=new SS(m,m,u);break;case"mix":{v=1,g=new MS(m,m,u);break}default:continue}Ks(r,f,g,v,1)}}if(e.slider)for(const c in e.slider){const h=e.slider[c],u=s.findConstraint(c,Zr);if(!u)throw new Error(`Slider not found: ${c}`);const d=s.constraints.indexOf(u);for(const f in h){const p=h[f];if(!p[0])continue;const g=p.length;switch(f){case"time":Ks(r,p,new TS(g,g,d),1,1);break;case"mix":Ks(r,p,new _S(g,g,d),1,1);break}}}if(e.attachments)for(const c in e.attachments){const h=e.attachments[c],u=s.findSkin(c);if(!u)throw new Error(`Skin not found: ${c}`);for(const d in h){const f=h[d],p=s.findSlot(d);if(!p)throw new Error(`Attachment slot not found: ${d}`);const m=p.index;for(const g in f){const v=f[g],y=u.getAttachment(m,g);if(!y)throw new Error(`Timeline attachment not found: ${g}`);for(const x in v){const M=v[x];let C=M[0];if(C){if(x==="deform"){const w=y.bones,b=y.vertices,_=w?b.length/3*2:b.length,E=new uS(M.length,M.length,m,y);let F=Q(C,"time",0);for(let I=0,k=0;;I++){let B;const D=Q(C,"vertices",null);if(!D)B=w?Ge.newFloatArray(_):b;else{B=Ge.newFloatArray(_);const A=Q(C,"offset",0);if(Ge.arrayCopy(D,0,B,A,D.length),n!==1)for(let P=A,O=P+D.length;P=0;c--)r[c]===-1&&(r[c]=o[--l]);return r}function pt(i,e,t,s,n,r,o,a,l,c){if(i==="stepped")return e.setStepped(s),t;const h=n<<2,u=i[h],d=i[h+1]*c,f=i[h+2],p=i[h+3]*c;return e.setBezier(t,s,n,r,a,u,d,f,p,o,l),t+1}function Q(i,e,t){return i[e]!==void 0?i[e]:t}class JO{newRegionAttachment(e,t,s,n){return new mu(t,s)}newMeshAttachment(e,t,s,n){return new kl(t,s)}newBoundingBoxAttachment(e,t){return new cw(t)}newPathAttachment(e,t){return new wl(t)}newPointAttachment(e,t){return new pw(t)}newClippingAttachment(e,t){return new sa(t)}}class QO{sequence(e){for(let t=0;t!Number.isInteger(h)||h<0||h>=o))throw new Error(`拖尾网格“${e}”的三角形索引越界`);const a=Number(i.hull)||0;if(!Number.isInteger(a)||a<0||a>o)throw new Error(`拖尾网格“${e}”的外轮廓数量无效`);if(Array.isArray(i.edges)&&i.edges.some(h=>!Number.isInteger(h)||h<0||h>=o*2||h%2))throw new Error(`拖尾网格“${e}”的外轮廓边索引越界`);if(n.length===s.length)return;let l=0,c=0;for(;l=t)throw new Error(`拖尾网格“${e}”引用了不存在的骨骼`);if(![p,m,g].every(Number.isFinite)||g<0)throw new Error(`拖尾网格“${e}”包含无效权重数据`);u+=g}if(Math.abs(u-1)>.001)throw new Error(`拖尾网格“${e}”的顶点权重之和不为 1`);c++}if(l!==n.length||c!==o)throw new Error(`拖尾网格“${e}”的顶点数量与 UV 不一致`)}function sL(i,e){var r,o,a,l;const t=Array.isArray(i.bones)?i.bones:[],s=new Map(t.map(c=>[String(c.name||""),c])),n=new Set;for(const c of t){if(c.inherit!=null&&!eL.has(c.inherit))throw new Error(`骨骼“${c.name||""}”的 inherit 值“${c.inherit}”不符合 Spine ${e} JSON 格式`);if(/_trail_\d+_\d+$/.test(String(c.name||""))){const h=s.get(String(c.parent||""));if(!h||/_trail_\d+_\d+$/.test(String(h.name||"")))throw new Error(`拖尾骨骼“${c.name||""}”必须直接挂在粒子系统骨骼下,不能组成骨骼链`)}}for(const c of Array.isArray(i.skins)?i.skins:[]){const h=(c==null?void 0:c.attachments)||{};for(const u of Object.keys(h))for(const d of Object.keys(h[u]||{})){const f=h[u][d];(f==null?void 0:f.type)==="mesh"&&(tL(f,d,t.length),((r=f.vertices)==null?void 0:r.length)!==((o=f.uvs)==null?void 0:o.length)&&n.add(u))}}for(const c of Object.values(i.animations||{}))for(const h of n){const u=(l=(a=c==null?void 0:c.slots)==null?void 0:a[h])==null?void 0:l.attachment;if(Array.isArray(u)&&u.some(d=>!(d!=null&&d.name)))throw new Error(`加权拖尾插槽“${h}”不能使用空附件,未出现或死亡阶段应将对应骨骼缩放设为 0`)}}function iL(i){var e;if(String(((e=i==null?void 0:i.skeleton)==null?void 0:e.spine)||"")!=="3.8")throw new Error("Spine 3.8 导出的版本标识必须为 3.8");for(const t of i.bones||[])if(t.inherit!=null)throw new Error(`Spine 3.8 骨骼“${t.name||""}”应使用 transform,不能使用 inherit`);for(const t of Object.values(i.animations||{})){for(const n of Object.values(t.slots||{})){if(n.rgba||n.rgba2)throw new Error("Spine 3.8 插槽颜色时间轴必须使用 color / twoColor");for(const r of n.attachment||[])if(!Object.prototype.hasOwnProperty.call(r,"name"))throw new Error("Spine 3.8 附件时间轴的隐藏帧必须显式写入 name: null")}for(const n of Object.values(t.bones||{}))for(const r of n.rotate||[])if(r.value!=null||r.angle==null)throw new Error("Spine 3.8 旋转时间轴必须使用 angle");const s=[t];for(;s.length;){const n=s.pop();if(!(!n||typeof n!="object")){if(!Array.isArray(n)&&Array.isArray(n.curve))throw new Error("Spine 3.8 不支持 4.x 数组曲线格式");s.push(...Object.values(n))}}}}function My(i,e){var o;const t=JSON.parse(i),s=gh((o=t==null?void 0:t.skeleton)==null?void 0:o.spine);if(!s)throw new Error(`导出版本不受支持,仅支持 Spine ${pm()}`);if(e&&s!==e)throw new Error(`导出版本不一致:设置为 Spine ${e},JSON 标记为 Spine ${s}`);sL(t,s),s==="3.8"&&iL(t);const n=s==="3.8"?Ew(JSON.parse(JSON.stringify(t))):t,r=s==="4.3"?new KO(new QO).readSkeletonData(n):new Sh(new JO).readSkeletonData(n);if(!r.bones.length)throw new Error("导出结果缺少骨骼");return{version:s,bones:r.bones.length,slots:r.slots.length,animations:r.animations.length}}const NS="http://127.0.0.1:27843";class Oh extends Error{constructor(t,s="CONNECTOR_ERROR",n){super(t);S(this,"code");S(this,"pairUrl");this.name="SpineConnectorError",this.code=s,this.pairUrl=n}}function Gm(i,e){return String(i||"").trim().replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||e}function nL(i,e){const t=/\.([a-z0-9]{2,5})$/i.exec(i);return t?`.${t[1].toLowerCase()}`:e.includes("jpeg")?".jpg":e.includes("webp")?".webp":e.includes("gif")?".gif":".png"}function rL(i,e,t){const s=String(i||"").replace(/\\/g,"/").split("/").filter(Boolean).map(r=>Gm(r,"images")),n=Gm(e.replace(/\.[^./\\]+$/,""),"image");return[...s,`${n}${nL(e,t)}`].join("/")}async function pf(i,e,t){if(!i)return null;const s=await fetch(i);if(!s.ok)throw new Error(`无法读取导出图片:${t}`);const n=await s.blob(),r=new Uint8Array(await n.arrayBuffer());let o="";const a=32768;for(let l=0;lo.finally(()=>{s++,e==null||e(s,t.length)});for(const o of i.filter(a=>a.visible!==!1)){for(const a of o.config.imageResources)if(a.imageMode==="sequence"&&a.sequenceFrames.length)for(const l of a.sequenceFrames)t.push(n(pf(l.previewUrl,a.textureFolder,l.name||a.textureName)));else t.push(n(pf(a.previewUrl,a.textureFolder,a.textureName)));if(o.config.trail)for(const a of o.config.trailResources)t.push(n(pf(a.previewUrl,"",a.textureName)))}const r=new Map;for(const o of await Promise.all(t))o&&!r.has(o.path)&&r.set(o.path,o);return[...r.values()]}async function oL(){try{const i=await fetch(`${NS}/v1/health`,{cache:"no-store"});if(!i.ok)throw new Error(`HTTP ${i.status}`);return{available:!0,...await i.json()}}catch(i){return{available:!1,authorized:!1,error:i instanceof Error?i.message:String(i)}}}async function aL(i,e){const t=await DS(i.systems,(n,r)=>{e==null||e({phase:"images",progress:r?n/r:1})}),s=JSON.stringify({schemaVersion:1,projectName:i.projectName,spineVersion:i.spineVersion,skeletonJson:i.skeletonJson,images:t});return new Promise((n,r)=>{const o=new XMLHttpRequest;o.open("POST",`${NS}/v1/convert`),o.responseType="blob",o.setRequestHeader("Content-Type","application/json"),o.upload.onprogress=a=>{e==null||e({phase:"upload",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.upload.onloadend=()=>e==null?void 0:e({phase:"processing",progress:null}),o.onprogress=a=>{e==null||e({phase:"download",progress:a.lengthComputable&&a.total>0?a.loaded/a.total:null})},o.onerror=()=>r(new Oh("未检测到本地 Spine 连接器,请先启动连接器","CONNECTOR_OFFLINE")),o.onload=async()=>{const a=o.response;if(o.status<200||o.status>=300){let h={};try{h=JSON.parse(await a.text())}catch{}r(new Oh(h.message||`Spine 连接器返回错误:HTTP ${o.status}`,h.code,h.pairUrl));return}const l=o.getResponseHeader("X-Spine-File-Name");let c=`${Gm(i.projectName,"SpineParticle")}.zip`;if(l)try{c=decodeURIComponent(l)}catch{}n({blob:a,fileName:c,spineEditorVersion:o.getResponseHeader("X-Spine-Editor-Version")||i.spineVersion,imageCount:t.length})},o.send(s)})}function lL(i,e){const t=URL.createObjectURL(i),s=document.createElement("a");s.href=t,s.download=/\.zip$/i.test(e)?e:`${e}.zip`,s.style.display="none",document.body.appendChild(s),s.click(),s.remove(),setTimeout(()=>URL.revokeObjectURL(t),1e3)}const cL=Array.from({length:256},(i,e)=>{let t=e;for(let s=0;s<8;s++)t=t&1?3988292384^t>>>1:t>>>1;return t>>>0});function hL(i){let e=4294967295;for(const t of i)e=cL[(e^t)&255]^e>>>8;return(e^4294967295)>>>0}function uL(i){const e=String(i||"").replace(/\\/g,"/").split("/").filter(t=>t&&t!==".");if(!e.length||e.some(t=>t===".."))throw new Error("ZIP 文件路径无效");return e.join("/")}function dL(i=new Date){const e=Math.max(1980,i.getFullYear());return{time:i.getHours()<<11|i.getMinutes()<<5|Math.floor(i.getSeconds()/2),date:e-1980<<9|i.getMonth()+1<<5|i.getDate()}}function gf(i){const e=new Uint8Array(i);return{bytes:e,view:new DataView(e.buffer)}}function Ty(i){const e=new Uint8Array(i.reduce((s,n)=>s+n.length,0));let t=0;for(const s of i)e.set(s,t),t+=s.length;return e}function fL(i){const e=new TextEncoder,t=[],s=[],n=dL();let r=0;for(const l of i){const c=e.encode(uL(l.name)),h=hL(l.data),u=gf(30);u.view.setUint32(0,67324752,!0),u.view.setUint16(4,20,!0),u.view.setUint16(6,2048,!0),u.view.setUint16(10,n.time,!0),u.view.setUint16(12,n.date,!0),u.view.setUint32(14,h,!0),u.view.setUint32(18,l.data.length,!0),u.view.setUint32(22,l.data.length,!0),u.view.setUint16(26,c.length,!0),t.push(u.bytes,c,l.data);const d=gf(46);d.view.setUint32(0,33639248,!0),d.view.setUint16(4,20,!0),d.view.setUint16(6,20,!0),d.view.setUint16(8,2048,!0),d.view.setUint16(12,n.time,!0),d.view.setUint16(14,n.date,!0),d.view.setUint32(16,h,!0),d.view.setUint32(20,l.data.length,!0),d.view.setUint32(24,l.data.length,!0),d.view.setUint16(28,c.length,!0),d.view.setUint32(42,r,!0),s.push(d.bytes,c),r+=u.bytes.length+c.length+l.data.length}const o=Ty(s),a=gf(22);return a.view.setUint32(0,101010256,!0),a.view.setUint16(8,i.length,!0),a.view.setUint16(10,i.length,!0),a.view.setUint32(12,o.length,!0),a.view.setUint32(16,r,!0),new Blob([Ty([...t,o,a.bytes])],{type:"application/zip"})}function mL(i){const e=atob(i),t=new Uint8Array(e.length);for(let s=0;ss===".."||/^[a-z]+:/i.test(s))?"images":t.join("/")}function gL(i){return String(i||"SpineParticle").replace(/\.json$/i,"").replace(/[\\/:*?"<>|]+/g,"_").replace(/^\.+/,"")||"SpineParticle"}async function vL(i){const e=await DS(i.systems);if(!e.length)throw new Error("当前可见粒子系统没有可导出的图片");const t=pL(i.imagesPath);return{blob:fL(e.map(n=>({name:`${t}/${n.path}`,data:mL(n.dataBase64)}))),imageCount:e.length,folder:t}}function yL(i,e){const t=`${gL(e)}-images.zip`,s=URL.createObjectURL(i),n=document.createElement("a");return n.href=s,n.download=t,n.style.display="none",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(s),1e3),t}function xL(i){i.settings.exportSettings=T1(i.settings.exportSettings);const e=De(()=>i.settings.exportSettings),t=Fe(!1),s=Fe(null),n=Fe(""),r=Fe(!1),o=Fe(null),a=Fe(""),l=Fe(""),c=De(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"连接器可用 · Spine 已就绪":"连接器已启动,当前网站尚未授权":"连接器已启动,但未找到 Spine":"本地 Spine 连接器未启动":"正在检测本地 Spine 连接器…"}),h=De(()=>{var b,_,E,F,I,k;return{ready:!!((b=o.value)!=null&&b.available)&&!!((_=o.value)!=null&&_.spineFound)&&!!((E=o.value)!=null&&E.authorized),warning:!!((F=o.value)!=null&&F.available)&&(!((I=o.value)!=null&&I.spineFound)||!((k=o.value)!=null&&k.authorized))}}),u=De(()=>{var b,_,E;return!!((b=o.value)!=null&&b.available)&&!!((_=o.value)!=null&&_.spineFound)&&!!((E=o.value)!=null&&E.authorized)}),d=De(()=>{const b=o.value;return!(b!=null&&b.available)||!b.spineFound||b.authorized||typeof window>"u"?"":`http://127.0.0.1:27843/pair?origin=${encodeURIComponent(window.location.origin)}`}),f=De(()=>{const b=o.value;return b?b.available?b.spineFound?b.authorized?"":"未授权":"未找到 Spine":"未启动":"检测中"}),p=De(()=>t.value?"正在重新计算并生成 Spine 工程":f.value?`暂不可用:${f.value}`:`调用本机 Spine 自动生成 ${e.value.spineVersion} 工程`);Oi(()=>{v(),m=window.setInterval(v,3e3)});let m,g=0;po(()=>{m!==void 0&&window.clearInterval(m)});async function v(){const b=++g,_=await oL();if(b!==g)return;o.value=_;const E=l.value;(E==="CONNECTOR_OFFLINE"?_.available:E==="SPINE_NOT_FOUND"?_.available&&_.spineFound:E==="ORIGIN_NOT_ALLOWED"?_.available&&_.spineFound&&_.authorized:!!E&&_.available&&_.spineFound&&_.authorized)&&(l.value="",a.value="",r.value&&(r.value=!1,n.value=""))}function y(){return new Promise(b=>requestAnimationFrame(()=>b()))}async function x(b){i.timeline.playing=!1,i.timeline.frame=0,i.timeline.recorded=!1;for(const F of i.systems)F.frames=void 0;i.recalcTotalFrames(),await y(),i.timeline.playing=!0;const _=i.timeline.totalFrames/Math.max(1,i.timeline.fps)*1e3,E=performance.now()+Math.max(8e3,_*2.5+3e3);for(;!i.timeline.recorded;){if(performance.now()>E)throw new Error("重新计算动画超时,请确认页面仍在运行后重试");b==null||b(Math.min(.98,i.timeline.frame/Math.max(1,i.timeline.totalFrames-1))),await new Promise(F=>setTimeout(F,50))}b==null||b(1)}async function M(){if(!t.value){t.value=!0,s.value="json",r.value=!1,l.value="",a.value="",n.value="正在重新计算粒子动画…";try{await x();const b=uy({systems:i.systems,timeline:i.timeline,settings:e.value});My(b.text,e.value.spineVersion),q3(b,e.value.fileName);const _=b.warnings.length?`;${b.warnings.length} 条资源提示(缺图仍已导出)`:"";n.value=`已导出 Spine ${e.value.spineVersion}:${b.particleSystemCount} 个粒子系统、${b.animationCount} 个动画、${b.boneCount} 根骨骼${_}`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,s.value=null}}}async function C(){if(t.value)return;t.value=!0,s.value="spine",r.value=!1,l.value="",a.value="",n.value="正在重新计算粒子动画…";const b=Vw("导出 Spine 包","正在重新计算粒子动画…");try{await b.paint(),await x(I=>b.update(I*18,"正在重新计算粒子动画…")),b.update(20,"正在生成 Spine JSON…");const _=uy({systems:i.systems,timeline:i.timeline,settings:e.value});My(_.text,e.value.spineVersion),n.value="正在整理图片并调用本机 Spine…";const E=e.value.fileName.replace(/\.json$/i,"")||"SpineParticle",F=await aL({projectName:E,spineVersion:e.value.spineVersion,skeletonJson:_.text,systems:i.systems},({phase:I,progress:k})=>{I==="images"?b.update(k==null?null:22+k*18,"正在整理工程图片…"):I==="upload"?b.update(k==null?null:40+k*30,"正在上传数据到 Spine 连接器…"):I==="processing"?b.update(null,"Spine 正在转换工程,请稍候…"):b.update(k==null?null:82+k*16,"正在下载生成的 Spine 工程包…")});b.update(99,"正在交给浏览器下载…"),lL(F.blob,F.fileName),n.value=`已生成 ${F.fileName}:包含 .spine 工程和 ${F.imageCount} 张图片,Spine ${F.spineEditorVersion}`,await v(),await b.finish("Spine 工程包已开始下载")}catch(_){const E=_ instanceof Error?_.message:String(_);r.value=!0,l.value=_ instanceof Oh?_.code:"",_ instanceof Oh&&_.pairUrl&&(a.value=_.pairUrl),n.value=E,await v(),await b.fail(E)}finally{t.value=!1,s.value=null}}async function w(){if(!t.value){t.value=!0,s.value="images",r.value=!1,l.value="",a.value="",n.value="正在整理当前粒子系统使用的图片…";try{const b=await vL({systems:i.systems,imagesPath:e.value.imagesPath}),_=yL(b.blob,e.value.fileName);n.value=`已生成 ${_}:${b.folder}/ 内包含 ${b.imageCount} 张图片`}catch(b){r.value=!0,n.value=b instanceof Error?b.message:String(b)}finally{t.value=!1,s.value=null}}}return{exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorHealth:o,connectorPairUrl:a,connectorExportErrorCode:l,connectorStatusText:c,connectorStatusClass:h,connectorReady:u,connectorAuthorizationUrl:d,connectorDisabledReason:f,connectorButtonTitle:p,connectorHealthTimer:m,connectorHealthRequestId:g,refreshConnectorHealth:v,nextPaint:y,prepareExportFrames:x,exportSpineJson:M,exportSpineProject:C,exportSpineImages:w}}function bL(i){const e=Fe(null),t=Fe(""),s=Fe([]),n=Fe(!1),r=Fe(""),o=Fe(!1);function a(){Ow(i),o.value=!1,r.value="配置已保存到本地"}async function l(u){var p;const d=u.target,f=(p=d.files)==null?void 0:p[0];if(f){r.value="正在加载配置…",o.value=!1;try{await Ok(i,f),r.value=`已加载:${f.name}`}catch(m){o.value=!0,r.value=m instanceof Error?m.message:String(m)}finally{d.value=""}}}async function c(){try{const u=await fetch(`/Preset/index.json?t=${Date.now()}`,{cache:"no-store"});if(!u.ok)throw new Error("无法读取预设列表");const d=await u.json();s.value=Array.isArray(d)?d.filter(f=>!!f&&typeof f.name=="string"&&typeof f.file=="string"):[]}catch{s.value=[]}}async function h(){const u=t.value;if(!u)return;n.value=!0,o.value=!1,r.value="正在加载预设…";const d=Vw("加载预设",`正在下载 ${u}…`);try{await d.paint();const f=await fetch(`/Preset/${encodeURIComponent(u)}`,{cache:"no-store"});if(!f.ok)throw new Error(`无法读取预设:${u}`);const p=await b3(f,m=>{d.update(m==null?null:m*55,`正在下载 ${u}…`)});d.update(58,"正在解析预设配置…"),d.update(70,"正在解析并恢复预设资源…"),await Bw(i,p),r.value=`已加载预设:${u.replace(/\.json$/i,"")}`,await d.finish("预设加载完成")}catch(f){o.value=!0;const p=f instanceof Error?f.message:String(f);r.value=`${p},请检查预设文件命名`,await d.fail(p)}finally{n.value=!1,t.value=""}}return Oi(c),{configFileInput:e,selectedPreset:t,presetOptions:s,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:l,refreshPresets:c,loadSelectedPreset:h}}function wL(i){const e=Fe(null),t=Fe(null),s=Fe(null),n=Fe(null),r=Fe(null);function o(){var L;const P=(L=i.value)==null?void 0:L.config;if(!P)return;const O=Math.max(0,...P.trailResources.map($=>$.id))+1;P.trailResources.push({id:O,texture:null,textureName:"trail",previewUrl:"/images/trail.png",weight:100,locked:!1,rotation:0,colorMode:"particle",color:"#ffffff",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],blend:"normal",alphaMode:"particle",alpha:1,alphaCurve:Tm.map($=>({...$})),boneCount:3,trailRatio:100,lengthMode:"fixed",length:100,lengthMin:100,lengthMax:100,widthSizeMode:"fixed",width:100,widthMin:100,widthMax:100,widthMode:"particle",lifeLengthEnabled:!1,lifeLengthCurve:Sm.map($=>({...$})),shapeEnabled:!1,shapeCurve:_m.map($=>({...$}))}),p()}function a(P){var O;r.value=P,(O=n.value)==null||O.click()}function l(P,O){var V;const L=(V=i.value)==null?void 0:V.config;if(!L)return;const $=P==="trailGridCols"?32:16;L[P]=Math.min($,Math.max(2,Math.round(Number(O)||2)))}function c(P,O){var $;const L=($=i.value)==null?void 0:$.config.trailResources.find(V=>V.id===P);L&&(L.boneCount=Math.min(16,Math.max(2,Math.round(Number(O)||2))))}function h(P,O){var $;const L=($=i.value)==null?void 0:$.config.trailResources.find(V=>V.id===P);L&&(L.rotation=Math.max(-360,Math.min(360,Number(O)||0)))}async function u(P){var K,ie;const O=P.target,L=(K=O.files)==null?void 0:K[0],$=(ie=i.value)==null?void 0:ie.config,V=$==null?void 0:$.trailResources.find(re=>re.id===r.value);if(!L||!V){O.value="";return}const j=await _(L);V.texture=ur(await ze.fromURL(j)),V.previewUrl=j,V.textureName=L.name.replace(/\.[^.]+$/,"")||"trail",O.value="",r.value=null}async function d(P){var $;const O=($=i.value)==null?void 0:$.config,L=O==null?void 0:O.trailResources.find(V=>V.id===P);L&&(L.texture=ur(await ze.fromURL("/images/trail.png")),L.previewUrl="/images/trail.png",L.textureName="trail",L.weight=100,L.locked=!1,L.rotation=0,L.boneCount=3,L.trailRatio=100,L.lengthMode="fixed",L.length=100,L.lengthMin=100,L.lengthMax=100,L.widthSizeMode="fixed",L.width=100,L.widthMin=100,L.widthMax=100,L.widthMode="particle",L.lifeLengthEnabled=!1,L.lifeLengthCurve=Sm.map(V=>({...V})),L.shapeEnabled=!1,L.shapeCurve=_m.map(V=>({...V})),L.colorMode="particle",L.color="#ffffff",L.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ffffff"}],L.blend="normal",L.alphaMode="particle",L.alpha=1,L.alphaCurve=Tm.map(V=>({...V})),p())}function f(P){var $;const O=($=i.value)==null?void 0:$.config.trailResources;if(!O||O.length<=1)return;const L=O.findIndex(V=>V.id===P);L>=0&&O.splice(L,1),p()}function p(){var V;const P=(V=i.value)==null?void 0:V.config.trailResources;if(!(P!=null&&P.length))return;if(P.length===1){P[0].weight=100,P[0].locked=!1;return}const O=P.filter(j=>j.locked),L=P.filter(j=>!j.locked);let $=O.reduce((j,K)=>j+Math.max(0,Number(K.weight)||0),0);$>100&&(X(O,100,!0),$=100),X(L,100-$)}function m(P,O){var ie;const L=(ie=i.value)==null?void 0:ie.config.trailResources;if(!(L!=null&&L.length))return;if(L.length===1){L[0].weight=100,L[0].locked=!1;return}const $=L.find(re=>re.id===P);if(!$||$.locked)return;const V=L.filter(re=>re.id!==P&&re.locked).reduce((re,pe)=>re+Math.max(0,Number(pe.weight)||0),0),j=Math.max(0,100-V),K=L.filter(re=>re.id!==P&&!re.locked);$.weight=D(Math.min(j,Math.max(0,Number(O)||0))),K.length?X(K,j-$.weight,!0):$.weight=D(j)}function g(P){var $;const O=($=i.value)==null?void 0:$.config.trailResources;if(!O||O.length===1)return;const L=O.find(V=>V.id===P);L&&(L.locked=!L.locked)}function v(P,O){const L=O.target;P.color=F(L.value,P.color),L.value=P.color}function y(P,O){v(P,O),O.target.blur()}function x(){var L;const P=(L=i.value)==null?void 0:L.config;if(!P)return;const O=Math.max(0,...P.imageResources.map($=>$.id))+1;P.imageResources.push({id:O,texture:P.texture,textureName:"star",textureFolder:"",previewUrl:"/images/star.png",imageMode:"fixed",sequencePlayback:"loop-forward",sequenceFps:30,sequenceFrames:[],weight:100,locked:!1,scale:1,anchorX:.5,anchorY:.5,colorMode:"fixed",colorStart:"#ffffff",colorEnd:"#ff4d4d",colorGradient:[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],blend:"normal",independentAlpha:"off",alpha:1,alphaCurveMode:"跟随导出",alphaCurve:Mm.map($=>({...$}))}),N()}function M(P){var O;s.value=P,(O=e.value)==null||O.click()}function C(P){var O;s.value=P,(O=t.value)==null||O.click()}async function w(P){var ie,re;const O=P.target,L=(ie=O.files)==null?void 0:ie[0],$=(re=i.value)==null?void 0:re.config,V=$==null?void 0:$.imageResources.find(pe=>pe.id===s.value);if(!L||!V){O.value="";return}const j=await _(L),K=ur(await ze.fromURL(j));V.texture=K,V.previewUrl=j,V.textureFolder="",V.textureName=L.name.replace(/\.[^.]+$/,"")||"particle",O.value="",s.value=null}async function b(P){var j;const O=P.target,L=Array.from(O.files||[]).sort((K,ie)=>K.name.localeCompare(ie.name,void 0,{numeric:!0,sensitivity:"base"})),$=(j=i.value)==null?void 0:j.config,V=$==null?void 0:$.imageResources.find(K=>K.id===s.value);if(!L.length||!V){O.value="";return}V.sequenceFrames=await Promise.all(L.map(async K=>{const ie=await _(K);return{name:K.name,previewUrl:ie,texture:ur(await ze.fromURL(ie))}})),V.imageMode="sequence",O.value="",s.value=null}function _(P){return new Promise((O,L)=>{const $=new FileReader;$.onload=()=>O(String($.result||"")),$.onerror=()=>L($.error),$.readAsDataURL(P)})}function E(P){var $;const O=($=i.value)==null?void 0:$.config,L=O==null?void 0:O.imageResources.find(V=>V.id===P);!O||!L||(L.texture=O.texture,L.textureName="star",L.textureFolder="",L.previewUrl="/images/star.png",L.imageMode="fixed",L.sequencePlayback="loop-forward",L.sequenceFps=30,L.sequenceFrames=[],L.scale=1,L.anchorX=.5,L.anchorY=.5,L.colorMode="fixed",L.colorStart="#ffffff",L.colorEnd="#ff4d4d",L.colorGradient=[{position:0,color:"#ffffff"},{position:1,color:"#ff4d4d"}],L.blend="normal",L.independentAlpha="off",L.alpha=1,L.alphaCurveMode="跟随导出",L.alphaCurve=Mm.map(V=>({...V})),L.locked=!1,N())}function F(P,O){let L=P.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(L)&&(L=L.split("").map($=>$+$).join("")),/^[0-9a-f]{6}$/i.test(L)?`#${L.toLowerCase()}`:O}function I(P,O){const L=O.target;P.colorStart=F(L.value,P.colorStart),L.value=P.colorStart}function k(P,O){I(P,O),O.target.blur()}function B(P){var $;const O=($=i.value)==null?void 0:$.config.imageResources;if(!O||O.length<=1)return;const L=O.findIndex(V=>V.id===P);L>=0&&O.splice(L,1),N()}function D(P){return Math.round(P)}function X(P,O,L=!1){if(!P.length)return;const $=Math.max(0,D(O)),V=L?P.reduce((K,ie)=>K+Math.max(0,Number(ie.weight)||0),0):0;let j=0;P.forEach((K,ie)=>{const re=ie===P.length-1,pe=D(re?$-j:V>0?$*Math.max(0,Number(K.weight)||0)/V:$/P.length);K.weight=pe,j+=pe})}function N(){var V;const P=(V=i.value)==null?void 0:V.config.imageResources;if(!(P!=null&&P.length))return;if(P.length===1){P[0].weight=100,P[0].locked=!1;return}const O=P.filter(j=>j.locked),L=P.filter(j=>!j.locked);let $=O.reduce((j,K)=>j+Math.max(0,Number(K.weight)||0),0);$>100&&(X(O,100,!0),$=100),X(L,100-$)}function U(P,O){var ie;const L=(ie=i.value)==null?void 0:ie.config.imageResources;if(!(L!=null&&L.length))return;if(L.length===1){L[0].weight=100,L[0].locked=!1;return}const $=L.find(re=>re.id===P);if(!$||$.locked)return;const V=L.filter(re=>re.id!==P&&re.locked).reduce((re,pe)=>re+Math.max(0,Number(pe.weight)||0),0),j=Math.max(0,100-V),K=L.filter(re=>re.id!==P&&!re.locked);if($.weight=D(Math.min(j,Math.max(0,Number(O)||0))),!K.length){$.weight=D(j);return}X(K,j-$.weight,!0)}function A(P){var $;const O=($=i.value)==null?void 0:$.config.imageResources;if(!O||O.length===1)return;const L=O.find(V=>V.id===P);L&&(L.locked=!L.locked)}return{textureFileInput:e,sequenceFileInput:t,pendingResourceId:s,trailTextureFileInput:n,pendingTrailResourceId:r,addTrailResource:o,openTrailTexturePicker:a,onTrailRigChange:l,onTrailResourceBoneCountChange:c,onTrailResourceRotationChange:h,onTrailTextureFile:u,resetTrailTexture:d,removeTrailResource:f,rebalanceTrailWeights:p,setTrailResourceWeight:m,toggleTrailResourceLock:g,setTrailColor:v,commitTrailColor:y,addImageResource:x,openTexturePicker:M,openSequencePicker:C,onTextureFile:w,onSequenceFiles:b,readFileAsDataUrl:_,resetTexture:E,normalizeHex:F,setResourceFixedColor:I,commitResourceFixedColor:k,removeImageResource:B,roundWeight:D,distributeImageWeights:X,rebalanceImageWeights:N,setResourceWeight:U,toggleResourceLock:A}}function SL(){const i=yo(),{exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:l,connectorReady:c,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=xL(i),{configFileInput:v,selectedPreset:y,presetOptions:x,presetLoading:M,configMessage:C,configError:w,saveConfig:b,onConfigFileChange:_,refreshPresets:E,loadSelectedPreset:F}=bL(i);function I(Z){return Z==="跟随导出"?e.value.keyframeCurve==="bezier"?"bezier":"linear":Z==="贝塞尔"?"bezier":"linear"}i.systems.length||i.addSystem();const k=De(()=>{const Z=i.systems.findIndex(ae=>ae.id===i.activeId);return Z>=0?Z:0}),B=De(()=>i.systems[k.value]||null),{textureFileInput:D,sequenceFileInput:X,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:A,onTrailRigChange:P,onTrailResourceBoneCountChange:O,onTrailResourceRotationChange:L,onTrailTextureFile:$,resetTrailTexture:V,removeTrailResource:j,setTrailResourceWeight:K,toggleTrailResourceLock:ie,setTrailColor:re,commitTrailColor:pe,addImageResource:ge,openTexturePicker:he,openSequencePicker:fe,onTextureFile:Y,onSequenceFiles:W,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:q,removeImageResource:se,setResourceWeight:ue,toggleResourceLock:ne}=wL(B),de=De(()=>B.value?_1(B.value.config,i.timeline.fps):30),le=De(()=>{var ae;const Z=(ae=B.value)==null?void 0:ae.config;return Z?Math.max(1,Math.ceil(Number(Z.loopDurationFrames)||1)):1}),Re=De(()=>i.activeObjectType),we=De(()=>i.activeObjectType==="collision"&&i.colliders.find(Z=>Z.id===i.activeObjectId)||null),me=De(()=>i.activeObjectType==="path"&&i.paths.find(Z=>Z.id===i.activeObjectId)||null),Ue=De(()=>i.activeObjectType==="spine"&&i.spines.find(Z=>Z.id===i.activeObjectId)||null),Je=De(()=>i.activeObjectType==="particle"?i.systems.some(Z=>Z.id===i.activeObjectId):i.activeObjectType==="collision"?i.colliders.some(Z=>Z.id===i.activeObjectId):i.activeObjectType==="path"?i.paths.some(Z=>Z.id===i.activeObjectId):i.spines.some(Z=>Z.id===i.activeObjectId)),qe=De(()=>{const Z=i.spines.find(ae=>ae.selectedBone&&ae.bones.some(Se=>Se.name===ae.selectedBone));return Z?{spine:Z,boneName:Z.selectedBone}:null}),Ze=De(()=>{var Se;const Z=(Se=B.value)==null?void 0:Se.config;if(!Z||Z.emitterFollowMode!=="bone")return null;const ae=i.spines.find(bt=>bt.id===Z.emitterFollowSpineId);return!ae||!ae.bones.some(bt=>bt.name===Z.emitterFollowBoneName)?null:{spine:ae,boneName:Z.emitterFollowBoneName}}),Be=Fe(!1),Me=Fe(""),nt=De(()=>i.spines.filter(Z=>Z.enabled&&Z.visible!==!1&&Z.status==="ready")),Te=De(()=>i.spines.find(Z=>{var ae;return Z.id===((ae=B.value)==null?void 0:ae.config.renderLayerSpineId)})||null),vs=De(()=>{const Z=Te.value;return!!Z&&Z.enabled&&Z.visible!==!1&&Z.status==="ready"}),Ct=De(()=>{var Z;return[...((Z=Te.value)==null?void 0:Z.slots)||[]].sort((ae,Se)=>ae.order-Se.order)}),xt=De(()=>{const Z=Me.value.trim().toLocaleLowerCase();return Z?Ct.value.filter(ae=>ae.name.toLocaleLowerCase().includes(Z)||ae.attachment.toLocaleLowerCase().includes(Z)):Ct.value}),te=De(()=>Ct.value.find(Z=>{var ae;return Z.name===((ae=B.value)==null?void 0:ae.config.renderLayerSlotName)})||null),oe=De(()=>{const Z=te.value;return Z&&Ct.value.filter(ae=>ae.orderSe.order-ae.order)[0]||null}),lt=De(()=>{var bt;const Z=(bt=B.value)==null?void 0:bt.config,ae=Te.value,Se=te.value;return!Z||!ae||!Se?"":`${ae.name} / ${Se.name} · 图片${Z.renderLayerSlotPosition==="below"?"之下":"之上"}`}),It=De(()=>{var Se;const Z=(Se=B.value)==null?void 0:Se.config,ae=te.value;return!Z||!ae?"":Z.renderLayerSlotPosition==="above"?`渲染在 ${ae.name} 图片之上、其后插槽之下`:oe.value?`渲染在 ${oe.value.name} 与 ${ae.name} 之间`:""}),Rt=De(()=>{var Se;const Z=(Se=B.value)==null?void 0:Se.config;if(!Z||Z.renderLayerMode!=="slot")return"";if(!nt.value.length)return"没有已加载的 Spine,粒子临时显示在最上层。";if(!Z.renderLayerSpineId)return"尚未选择 Spine,粒子临时显示在最上层。";const ae=Te.value;return ae?!ae.enabled||ae.status!=="ready"?"目标 Spine 未就绪,粒子临时显示在最上层。":Z.renderLayerSlotName?te.value?Z.renderLayerSlotPosition==="below"&&!oe.value?"这是第一个插槽,无法显示在其下方,粒子临时显示在最上层。":"":"目标插槽不存在(资源可能已更换),粒子临时显示在最上层。":"":"目标 Spine 不存在,粒子临时显示在最上层。"});function tt(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;Z&&(Z.renderLayerMode="slot",!Z.renderLayerSpineId&&nt.value.length&&(Z.renderLayerSpineId=nt.value[0].id),Be.value=!Z.renderLayerSlotName)}function ni(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.renderLayerSpineId=Math.max(0,Math.round(Number(Z.target.value)||0)),ae.renderLayerSlotName="",Be.value=!0)}function rs(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.renderLayerSlotName=Z.name,Be.value=!1,Me.value="")}function ss(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;Z&&(Z.renderLayerSlotName="",Z.renderLayerSlotPosition="above")}const Tt=Fe(!1),vi=De(()=>{var ae;const Z=new Set(((ae=B.value)==null?void 0:ae.config.collisionColliderIds)||[]);return i.colliders.filter(Se=>Z.has(Se.id))}),As=De(()=>{var ae;const Z=new Set(((ae=B.value)==null?void 0:ae.config.collisionColliderIds)||[]);return i.colliders.filter(Se=>!Z.has(Se.id))});cs(()=>{var Z,ae;return[(Z=B.value)==null?void 0:Z.id,(ae=B.value)==null?void 0:ae.config.collision]},()=>{Tt.value=!1}),cs(()=>{var Z;return(Z=B.value)==null?void 0:Z.id},()=>{Be.value=!1,Me.value=""});function os(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;!ae||ae.collisionColliderIds.includes(Z)||(ae.collisionColliderIds.push(Z),Tt.value=!1)}function fn(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.collisionColliderIds=ae.collisionColliderIds.filter(bt=>bt!==Z))}Fo(()=>{for(const Z of i.systems)Z.visible==null&&(Z.visible=!0);for(const Z of i.colliders)Z.visible==null&&(Z.visible=!0);for(const Z of i.paths)Z.visible==null&&(Z.visible=!0);for(const Z of i.spines)Z.visible==null&&(Z.visible=!0)}),Fo(()=>{if(!B.value)return;const Z=Dn(B.value.config);Z.lifeMode==="curve"&&(Z.lifeMode="random"),Z.speedMode==="curve"&&(Z.speedMode="random"),Z.scaleMode==="curve"&&(Z.scaleMode="random"),Z.initialRotationMode==="curve"&&(Z.initialRotationMode="random"),Z.mode==="stream"&&!(Z.duration>0)&&(Z.duration=1),Z.streamBehavior==="loop"&&(Z.emitterFollow||Z.emitterFollowMode!=="none")&&Ir(Z)}),Fo(()=>{const Z=new Set(i.colliders.map(ae=>ae.id));for(const ae of i.systems){const Se=Dn(ae.config),bt=Se.collisionColliderIds.filter(Rr=>Z.has(Rr));if(bt.length!==Se.collisionColliderIds.length&&(Se.collisionColliderIds=bt),Se.spawnPathId>0&&!i.paths.some(Rr=>Rr.id===Se.spawnPathId)&&(Se.spawnPathId=0,(Se.emissionAngleMode==="path-normal"||Se.emissionAngleMode==="path-tangent")&&(Se.emissionAngleMode="fixed")),Se.emitterFollowMode!=="bone")continue;const jt=i.spines.find(Rr=>Rr.id===Se.emitterFollowSpineId);!!(jt!=null&&jt.bones.some(Rr=>Rr.name===Se.emitterFollowBoneName))||(Se.emitterFollowMode="none",Se.emitterFollowSpineId=0,Se.emitterFollowBoneName="")}}),Fo(()=>{for(const Z of i.systems){const ae=Dn(Z.config);ae.renderLayerMode!=="slot"||!ae.renderLayerSpineId||i.spines.some(Se=>Se.id===ae.renderLayerSpineId)||(ae.renderLayerSpineId=0,ae.renderLayerSlotName="")}}),Fo(()=>{for(const Z of i.colliders)Z.followPathId==null&&(Z.followPathId=0),Z.followDuration>0||(Z.followDuration=2),Z.followPathRotation==null&&(Z.followPathRotation=!1),["跟随导出","线性","贝塞尔"].includes(Z.followCurveMode)||(Z.followCurveMode="跟随导出"),(!Array.isArray(Z.followCurve)||Z.followCurve.length<2)&&(Z.followCurve=[{x:0,y:0},{x:1,y:1}])});const ri=mo({config:!0,scene:!1,emitMode:!0,shape:!0,attr:!0,look:!0,mods:!0,export:!1});function Bi(Z){ri[Z]=!ri[Z]}function Ni(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;ae&&(ae.mode=Z,Z==="stream"&&!(ae.duration>0)&&(ae.duration=1))}function Er(Z){var bt;const ae=(bt=B.value)==null?void 0:bt.config;if(!ae)return;const Se=Math.min(1800,Math.max(1,Math.ceil(Number(Z)||1)));ae.loopDurationFrames=Se}function Ir(Z){const ae=bl();Z.emitterFollow=!1,Z.emitterFollowMode="none",Z.emitterFollowPathId=ae.emitterFollowPathId,Z.emitterFollowSpineId=ae.emitterFollowSpineId,Z.emitterFollowBoneName=ae.emitterFollowBoneName,Z.emitterFollowBoneOffsetX=ae.emitterFollowBoneOffsetX,Z.emitterFollowBoneOffsetY=ae.emitterFollowBoneOffsetY,Z.emitterFollowBoneRotation=ae.emitterFollowBoneRotation,Z.emitterFollowBoneScaleX=ae.emitterFollowBoneScaleX,Z.emitterFollowBoneScaleY=ae.emitterFollowBoneScaleY,Z.emitterAngleMode=ae.emitterAngleMode,Z.emitterFollowCurve=ae.emitterFollowCurve.map(Se=>({...Se})),Z.emitterFollowDuration=ae.emitterFollowDuration,Z.emitterFollowSpace=ae.emitterFollowSpace,Z.emitterFollowDirection=ae.emitterFollowDirection,Z.emitterFollowOffset=ae.emitterFollowOffset}function xa(Z){var jt;const ae=(jt=B.value)==null?void 0:jt.config;if(!ae||ae.streamBehavior===Z)return;const Se=Z==="loop",bt=Se?"进入循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?":"退出循环持续模式后,粒子跟随设置会失效并恢复默认值。是否继续?";window.confirm(bt)&&(Ir(ae),ae.streamBehavior=Z,Se||(ae.generateLoopStartAnimation=!1,ae.generateLoopEndAnimation=!1))}function ba(Z,ae){var jt;const Se=(jt=B.value)==null?void 0:jt.config;if(!Se)return;const bt=ae.target.checked;Z==="start"?Se.generateLoopStartAnimation=bt:Se.generateLoopEndAnimation=bt}function Bl(Z,ae){var jt;const Se=(jt=B.value)==null?void 0:jt.config;if(!Se)return;const bt=Math.min(1800,Math.max(1,Math.ceil(Number(ae.target.value)||30)));Z==="start"?Se.loopStartDurationFrames=bt:Se.loopEndDurationFrames=bt}function Nl(Z,ae){var jt;const Se=(jt=B.value)==null?void 0:jt.config;if(!Se)return;const bt=ae.target.checked;Z==="start"?Se.loopStartUseCustomDuration=bt:Se.loopEndUseCustomDuration=bt}function wa(Z,ae){const Se=Z.target.value;if(ae.emitterFollowMode=Se,Se!=="bone"){ae.emitterFollowSpineId=0,ae.emitterFollowBoneName="";return}Sa(ae)}function Sa(Z){const ae=qe.value;if(!ae){Z.emitterFollowMode="none",Z.emitterFollowSpineId=0,Z.emitterFollowBoneName="";return}Z.emitterFollowMode="bone",Z.emitterFollowSpineId=ae.spine.id,Z.emitterFollowBoneName=ae.boneName}const Ma={emitMode:["mode","rate","streamBehavior","loopDurationFrames","generateLoopStartAnimation","loopStartUseCustomDuration","loopStartDurationFrames","generateLoopEndAnimation","loopEndUseCustomDuration","loopEndDurationFrames","burstCount","burstLoop","delay","duration"],shape:["shape","showShape","shapeRangeVersion","innerRadius","outerRadius","innerRectW","innerRectH","outerRectW","outerRectH","spawnPathId","spawnPathDistribution","radius","rectW","rectH","emissionAngleMode","direction","spread","coneDirection","coneAngle"],attr:["lifeMin","lifeMax","lifeMode","lifeCurve","speedMin","speedMax","speedMode","speedCurve","scaleMin","scaleMax","scaleMode","scaleAxisMode","scaleYMin","scaleYMax","scaleCurve","scaleYCurve","scaleEndRatio","initialRotationMode","initialRotationMin","initialRotationMax","initialRotationCurve","rotationSpeedMin","rotationSpeedMax","speedOverLifeEnabled","speedOverLifeMode","speedOverLifeMin","speedOverLifeMax","speedOverLifeCurve","scaleOverLifeEnabled","scaleOverLifeMode","scaleOverLifeAxisMode","scaleOverLifeMin","scaleOverLifeMax","scaleYOverLifeMin","scaleYOverLifeMax","scaleOverLifeCurve","scaleYOverLifeCurve","rotationOverLifeEnabled","rotationOverLifeMode","rotationOverLifeCurve"],look:["texture","imageResources","imageWeightVersion","alpha","alphaEnd","colorStart","colorEnd","colorOverLife","blend","alphaMode","curveMode","alphaCurve","textureName","textureFolder","alphaScale","anchorX","anchorY","independentAlpha","renderLayerMode","renderLayerSpineId","renderLayerSlotName","renderLayerSlotPosition","renderLayerFollowAttachment"],mods:["noise","noiseAmt","noiseRange","noiseSpeed","useGravity","gravity","gravityMode","gravityMin","gravityMax","gravityDirection","gravityCurve","wind","windX","windY","windMode","windMin","windMax","windDirection","windCurve","forceField","forceStrength","forceRadius","forceCenterX","forceCenterY","forceFalloff","showForceFieldShape","vortex","vortexStrength","vortexRadius","vortexCenterX","vortexCenterY","vortexFalloff","showVortexShape","attraction","attractionCenterX","attractionCenterY","attractionRadius","attractionDuration","attractionDelay","attractionDelayMode","attractionPath","showAttractionShape","trail","trailConfigVersion","trailResources","trailResourceVersion","trailTexture","trailTextureName","trailPreviewUrl","trailColorMode","trailColor","trailColorGradient","trailAlphaMode","trailAlpha","trailAlphaCurve","trailBoneCount","trailLength","trailWidth","trailWidthMode","trailLifeLengthEnabled","trailLifeLengthCurve","trailShapeEnabled","trailShapeCurve","trailGridRows","trailGridCols","collision","collisionColliderIds","pathFollow","emitterFollow","emitterFollowMode","emitterFollowPathId","emitterFollowSpineId","emitterFollowBoneName","emitterFollowBoneOffsetX","emitterFollowBoneOffsetY","emitterFollowBoneRotation","emitterFollowBoneScaleX","emitterFollowBoneScaleY","emitterAngleMode","emitterFollowCurve","emitterFollowDuration","emitterFollowSpace","emitterFollowDirection","emitterFollowOffset","damping"]};function Dl(Z){var bt;const ae=(bt=B.value)==null?void 0:bt.config;if(Z==="export"){i.settings.exportSettings=wp();return}if(!ae)return;const Se=bl();for(const jt of Ma[Z])ae[jt]=Se[jt]}function wu(){e.value.fps=Math.min(240,Math.max(1,Math.round(Number(e.value.fps)||30)))}function Ta(Z){var ae;i.selectSystem(((ae=i.systems[Z])==null?void 0:ae.id)??0)}function zn(){i.addSystem()}function So(){i.addCollider()}function Su(){i.addPath()}function Ul(){i.addSpine()}function VS(){i.duplicateSelectedObject()}function mn(Z,ae,Se=0,bt=0,jt=0,_a=0){return{x:Z,y:ae,inX:Se,inY:bt,outX:jt,outY:_a}}function YS(){const Z=me.value;if(!(!Z||!Z.preset))if(Z.preset==="circle"){const Se=60.751328;Z.points=[mn(110,0,0,-Se,0,Se),mn(0,110,Se,0,-Se,0),mn(-110,0,0,Se,0,-Se),mn(0,-110,-Se,0,Se,0)],Z.closed=!0}else if(Z.preset==="square")Z.points=[mn(-100,-100),mn(100,-100),mn(100,100),mn(-100,100)],Z.closed=!0;else{const ae=Z.preset==="star"?10:6;Z.points=Array.from({length:ae},(Se,bt)=>{const jt=Z.preset==="star"&&bt%2?50:110,_a=-Math.PI*.5+bt/ae*Math.PI*2;return mn(Math.cos(_a)*jt,Math.sin(_a)*jt)}),Z.closed=!0}}function GS(){me.value&&(me.value.points=[])}function jS(){B.value&&(B.value.config.seed=Math.floor(Math.random()*999999)+1)}function HS(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;!ae||Z==="direction"||(ae.speedOverLifeMode=Z,Z==="curve"&&ae.speedOverLifeMin===ae.speedOverLifeMax&&(ae.speedOverLifeMin=0,ae.speedOverLifeMax=1))}function $p(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;!Z||Z.scaleOverLifeMode!=="curve"||(Z.scaleOverLifeMin===Z.scaleOverLifeMax&&(Z.scaleOverLifeMin=0,Z.scaleOverLifeMax=1),Z.scaleYOverLifeMin===Z.scaleYOverLifeMax&&(Z.scaleYOverLifeMin=0,Z.scaleYOverLifeMax=1))}function WS(Z){var Se;const ae=(Se=B.value)==null?void 0:Se.config;!ae||Z==="direction"||(ae.scaleOverLifeMode=Z,$p())}const zS={point:{emissionAngleMode:"random",direction:0,spread:360},circle:{innerRadius:0,outerRadius:100,emissionAngleMode:"fixed",direction:-90,spread:0},rect:{innerRectW:0,innerRectH:0,outerRectW:200,outerRectH:100,emissionAngleMode:"fixed",direction:-90,spread:0},cone:{innerRadius:0,outerRadius:100,coneAngle:90,coneDirection:90,emissionAngleMode:"random",direction:90,spread:90},path:{spawnPathId:0,spawnPathDistribution:"fixed",emissionAngleMode:"fixed",direction:0,spread:0}};function qS(){var Se;const Z=(Se=B.value)==null?void 0:Se.config;if(!Z)return;const ae=zS[Z.shape];ae&&Object.assign(Z,ae)}function KS(){var ae;const Z=(ae=B.value)==null?void 0:ae.config;!Z||Z.spawnPathId>0||(Z.emissionAngleMode==="path-normal"||Z.emissionAngleMode==="path-tangent")&&(Z.emissionAngleMode="fixed")}return{store:i,exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:l,connectorReady:c,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g,configFileInput:v,selectedPreset:y,presetOptions:x,presetLoading:M,configMessage:C,configError:w,saveConfig:b,onConfigFileChange:_,refreshPresets:E,loadSelectedPreset:F,resolvedCurveEditorMode:I,sys:B,textureFileInput:D,sequenceFileInput:X,trailTextureFileInput:N,addTrailResource:U,openTrailTexturePicker:A,onTrailRigChange:P,onTrailResourceBoneCountChange:O,onTrailResourceRotationChange:L,onTrailTextureFile:$,resetTrailTexture:V,removeTrailResource:j,setTrailResourceWeight:K,toggleTrailResourceLock:ie,setTrailColor:re,commitTrailColor:pe,addImageResource:ge,openTexturePicker:he,openSequencePicker:fe,onTextureFile:Y,onSequenceFiles:W,resetTexture:H,setResourceFixedColor:G,commitResourceFixedColor:q,removeImageResource:se,setResourceWeight:ue,toggleResourceLock:ne,automaticLoopDuration:de,loopDurationFrames:le,activeObjectType:Re,activeCollider:we,activePath:me,activeSpine:Ue,canCopyObject:Je,selectedSpineBone:qe,boundSpineBone:Ze,renderLayerSlotPickerOpen:Be,renderLayerSlotSearch:Me,renderLayerReadySpines:nt,renderLayerSpineReady:vs,renderLayerSlots:Ct,renderLayerFilteredSlots:xt,renderLayerSlotLabel:lt,renderLayerResolvedLabel:It,renderLayerWarning:Rt,setRenderLayerSlotMode:tt,selectRenderLayerSpine:ni,pickRenderLayerSlot:rs,clearRenderLayerSlot:ss,collisionPickerOpen:Tt,selectedCollisionBodies:vi,availableCollisionBodies:As,addCollisionBody:os,removeCollisionBody:fn,collapsed:ri,toggle:Bi,setEmitMode:Ni,setLoopDurationFrames:Er,setStreamBehavior:xa,setLoopSection:ba,setLoopSectionDuration:Bl,setLoopCustomDuration:Nl,onEmitterFollowModeChange:wa,bindSelectedBone:Sa,resetModule:Dl,normalizeExportFps:wu,select:Ta,addSys:zn,addCollider:So,addPath:Su,addSpine:Ul,copySelectedObject:VS,applyPathPreset:YS,clearPathAnchors:GS,randomizeSeed:jS,setSpeedOverLifeMode:HS,prepareScaleOverLifeCurve:$p,setScaleOverLifeMode:WS,onShapeChange:qS,onSpawnPathChange:KS,LINEAR_CURVE:v3,FLAT_CURVE:Sm,ALPHA_CURVE:y3,RESOURCE_ALPHA_CURVE:Mm,TRAIL_ALPHA_CURVE:Tm,TRAIL_SHAPE_CURVE:_m}}const US=Symbol("particle-panel");function ML(){const i=SL();return rx(US,i),i}function Ar(){const i=Wo(US);if(!i)throw new Error("Particle panel sections require a ParticlePanel parent");return i}const TL={class:"group config-management"},_L={class:"caret"},CL={class:"group-body config-management-body"},AL={class:"config-toolbar"},EL=["disabled"],IL={value:""},RL=["value"],PL=Zt({__name:"ProjectConfigSection",setup(i){const{configFileInput:e,selectedPreset:t,presetOptions:s,presetLoading:n,configMessage:r,configError:o,saveConfig:a,onConfigFileChange:l,refreshPresets:c,loadSelectedPreset:h,collapsed:u,toggle:d,select:f}=Ar();return(p,m)=>(z(),J("div",TL,[T("div",{class:"group-head",onClick:m[0]||(m[0]=g=>R(d)("config"))},[T("span",_L,ye(R(u).config?"▸":"▾"),1),m[8]||(m[8]=T("span",null,"配置管理",-1))]),ce(T("div",CL,[T("div",AL,[T("button",{title:"保存全部编辑器配置 (Ctrl+S)",onClick:m[1]||(m[1]=(...g)=>R(a)&&R(a)(...g))},"保存配置"),T("button",{title:"加载本地编辑器配置",onClick:m[2]||(m[2]=g=>{var v;return(v=R(e))==null?void 0:v.click()})},"加载配置"),ce(T("select",{"onUpdate:modelValue":m[3]||(m[3]=g=>Gt(t)?t.value=g:null),"aria-label":"预设列表",disabled:!R(s).length||R(n),onPointerdown:m[4]||(m[4]=(...g)=>R(c)&&R(c)(...g)),onFocus:m[5]||(m[5]=(...g)=>R(c)&&R(c)(...g)),onChange:m[6]||(m[6]=(...g)=>R(h)&&R(h)(...g))},[T("option",IL,ye(R(s).length?"选择预设":"无预设文件"),1),(z(!0),J(Ce,null,Ft(R(s),g=>(z(),J("option",{key:g.file,value:g.file},ye(g.name),9,RL))),128))],40,EL),[[_t,R(t)]]),T("input",{ref_key:"configFileInput",ref:e,hidden:"",type:"file",accept:".json,application/json",onChange:m[7]||(m[7]=(...g)=>R(l)&&R(l)(...g))},null,544)]),R(r)?(z(),J("div",{key:0,class:Ae(["config-message",{error:R(o)}])},ye(R(r)),3)):xe("",!0)],512),[[Ss,!R(u).config]])]))}}),kL=Jt(PL,[["__scopeId","data-v-cb52d3e0"]]),FL={class:"ns-label"},OL=["min","max","step","value","disabled"],LL=["min","max","step","value","disabled"],BL=Zt({__name:"NumSlider",props:{label:{},modelValue:{},min:{},max:{},step:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(i,{emit:e}){const t=i,s=e,n=Fe(String(t.modelValue));cs(()=>t.modelValue,l=>{n.value=String(l)});function r(l){const c=parseFloat(l.target.value);Number.isNaN(c)||s("update:modelValue",c)}function o(l){n.value=l.target.value;const c=parseFloat(n.value);Number.isNaN(c)||s("update:modelValue",c)}function a(){const l=parseFloat(n.value);Number.isNaN(l)&&(n.value=String(t.modelValue))}return(l,c)=>(z(),J("div",{class:Ae(["ns",{disabled:i.disabled}])},[T("span",FL,ye(i.label),1),T("input",{type:"range",class:"ns-range",min:i.min,max:i.max,step:i.step,value:i.modelValue,disabled:i.disabled,onInput:r},null,40,OL),T("input",{type:"number",class:"ns-num",min:i.min,max:i.max,step:i.step,value:n.value,disabled:i.disabled,onInput:o,onBlur:a},null,40,LL)],2))}}),Oe=Jt(BL,[["__scopeId","data-v-7c2fbed0"]]),NL={class:"ce"},DL={class:"ce-editor"},UL={class:"ce-grid"},$L=["x1","x2","y2"],XL=["y1","x2","y2"],VL=["x","y","width","height"],YL=["d"],GL={key:0,class:"ce-handles"},jL=["x1","y1","x2","y2"],HL=["cx","cy","onPointerdown"],WL=["x1","y1","x2","y2"],zL=["cx","cy","onPointerdown"],qL=["cx","cy"],KL=["cx","cy","onPointerdown","onDblclick"],ZL={class:"ce-nav"},JL={class:"ce-tip"},Zn=8,QL=Zt({__name:"CurveEditor",props:{modelValue:{},defaultValue:{default:()=>[{x:0,y:0},{x:1,y:1}]},mode:{default:"linear"}},emits:["update:modelValue"],setup(i,{emit:e}){const t=i,s=e,n=Fe(null),r=Fe(300),o=Fe(110);let a=null;function l(){if(!n.value)return;const I=n.value.getBoundingClientRect();r.value=I.width,o.value=I.height}function c(I){return Zn+I*(r.value-Zn*2)}function h(I){return Zn+(1-I)*(o.value-Zn*2)}function u(){return[...t.modelValue].sort((I,k)=>I.x-k.x)}function d(I){s("update:modelValue",[...I].sort((k,B)=>k.x-B.x))}function f(){d(t.defaultValue.map(I=>({...I})))}const p=De(()=>u());function m(I){const k=p.value[I],B=p.value[Math.max(0,I-1)];return{x:k.x-(k.x-B.x)/3,y:k.y-(k.y-B.y)/3}}function g(I){const k=p.value[I],B=p.value[Math.min(p.value.length-1,I+1)];return{x:k.x+(B.x-k.x)/3,y:k.y+(B.y-k.y)/3}}function v(I){const k=p.value[I],B=m(I);return{x:k.x+(k.inX??B.x-k.x),y:k.y+(k.inY??B.y-k.y)}}function y(I){const k=p.value[I],B=g(I);return{x:k.x+(k.outX??B.x-k.x),y:k.y+(k.outY??B.y-k.y)}}const x=De(()=>{if(!p.value.length)return"";let I=`M ${c(p.value[0].x)} ${h(p.value[0].y)}`;for(let k=1;kMath.abs(X.x-k)>.02);D.push({x:k,y:B}),d(D)}let b={t:0,i:-1,x:0,y:0};function _(I,k){I.stopPropagation();const B=u().findIndex(U=>Math.abs(U.x-p.value[k].x)<1e-6&&Math.abs(U.y-p.value[k].y)<1e-6);if(B<0)return;const D=Date.now();if(D-b.t<300&&b.i===k&&Math.abs(I.clientX-b.x)<8&&Math.abs(I.clientY-b.y)<8){b={t:0,i:-1,x:0,y:0},F(k);return}b={t:D,i:k,x:I.clientX,y:I.clientY};const X=U=>{(Math.abs(U.clientX-I.clientX)>8||Math.abs(U.clientY-I.clientY)>8)&&(b={t:0,i:-1,x:0,y:0});const{x:A,y:P}=M(U.clientX,U.clientY),O=u();O[B]={x:A,y:P},d(O)},N=()=>{window.removeEventListener("pointermove",X),window.removeEventListener("pointerup",N)};window.addEventListener("pointermove",X),window.addEventListener("pointerup",N)}function E(I,k,B){I.stopPropagation();const D=N=>{const U=M(N.clientX,N.clientY),A=u(),P=A[k],O=B==="in"?A[Math.max(0,k-1)].x:P.x,L=B==="in"?P.x:A[Math.min(A.length-1,k+1)].x,$=Math.min(L,Math.max(O,U.x)),V=Math.round(($-P.x)*100)/100,j=Math.round((U.y-P.y)*100)/100;A[k]=B==="in"?{...P,inX:V,inY:j}:{...P,outX:V,outY:j},d(A)},X=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",X)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",X)}function F(I,k){k==null||k.stopPropagation();const B=u();B.length<=2||(C=Date.now(),d(B.filter((D,X)=>X!==I)))}return Oi(()=>{l(),a=new ResizeObserver(l),n.value&&a.observe(n.value)}),Cl(()=>{a==null||a.disconnect()}),(I,k)=>(z(),J("div",NL,[T("div",DL,[(z(),J("svg",{ref_key:"svg",ref:n,class:"ce-svg",onDblclick:w},[T("g",UL,[(z(),J(Ce,null,Ft([.25,.5,.75],B=>T("line",{key:"v"+B,x1:c(B),y1:"0",x2:c(B),y2:h(0)},null,8,$L)),64)),(z(),J(Ce,null,Ft([.25,.5,.75],B=>T("line",{key:"h"+B,x1:"0",y1:h(B),x2:c(1),y2:h(B)},null,8,XL)),64))]),T("rect",{x:c(0),y:h(1),width:c(1)-c(0),height:h(0)-h(1),class:"ce-frame",fill:"none"},null,8,VL),T("path",{d:x.value,class:"ce-line",fill:"none"},null,8,YL),i.mode==="bezier"?(z(),J("g",GL,[(z(!0),J(Ce,null,Ft(p.value,(B,D)=>(z(),J(Ce,{key:"handles-"+D},[D>0?(z(),J("line",{key:0,x1:c(B.x),y1:h(B.y),x2:c(v(D).x),y2:h(v(D).y)},null,8,jL)):xe("",!0),D>0?(z(),J("circle",{key:1,cx:c(v(D).x),cy:h(v(D).y),r:"4",onPointerdown:X=>E(X,D,"in")},null,40,HL)):xe("",!0),DE(X,D,"out")},null,40,zL)):xe("",!0)],64))),128))])):xe("",!0),(z(!0),J(Ce,null,Ft(p.value,(B,D)=>(z(),J("g",{key:D},[T("circle",{cx:c(B.x),cy:h(B.y),r:"5",class:"ce-node"},null,8,qL),T("circle",{cx:c(B.x),cy:h(B.y),r:"9",class:"ce-hit",onPointerdown:X=>_(X,D),onDblclick:X=>F(D,X)},null,40,KL)]))),128))],544)),T("div",ZL,[T("span",JL,ye(i.mode==="bezier"?"拖动方形手柄调整弧度·双击空白新建·双击节点删除":"双击空白新建·双击节点删除·拖动节点调整"),1)])]),T("button",{class:"ce-reset",type:"button",title:"恢复默认曲线",onClick:f},"重置")]))}}),Ji=Jt(QL,[["__scopeId","data-v-9bfb7b31"]]),eB={class:"spine-editor"},tB={class:"field wide"},sB={class:"grid three"},iB={class:"field"},nB={class:"field"},rB={class:"field"},oB={class:"grid three"},aB={class:"field"},lB={class:"field"},cB={class:"field"},hB=["disabled"],uB={class:"asset-row"},dB=["title"],fB={class:"asset-row"},mB=["title"],pB={class:"asset-row"},gB=["title"],vB={class:"asset-actions"},yB=["disabled"],xB={class:"runtime-note"},bB={key:0},wB={key:0,class:"error"},SB={class:"section-box"},MB={key:0,class:"empty"},TB={key:1,class:"field wide"},_B=["value"],CB={class:"section-box"},AB={class:"tree-title-row"},EB=["disabled","title"],IB=["disabled","title"],RB={class:"tree-tabs"},PB={key:0,class:"empty"},kB={key:1,class:"bone-search"},FB={key:2,class:"empty"},OB={key:3,class:"bone-tree"},LB=["onClick","onKeydown"],BB=["title","onClick"],NB={key:1,class:"bone-leaf"},DB={class:"bone-name"},UB={key:0,class:"empty"},$B={key:1,class:"bone-search"},XB={key:2,class:"empty"},VB={key:3,class:"bone-tree slot-tree"},YB=["title","onClick","onKeydown"],GB={class:"slot-order"},jB={class:"bone-name"},HB={class:"slot-attachment"},WB=Zt({__name:"SpineObjectPanel",props:{spineObject:{}},setup(i){const e=i,t=yo(),s=Fe(null),n=Fe(null),r=Fe(null),o=Fe(null),a=Fe(new Set),l=Fe(""),c=Fe("bone"),h=Fe(""),u=Fe(null),d=Fe(null),f=Fe([]);e.spineObject.selectedBone==null&&(e.spineObject.selectedBone=""),e.spineObject.selectedSlot==null&&(e.spineObject.selectedSlot=""),Array.isArray(e.spineObject.slots)||(e.spineObject.slots=[]),e.spineObject.sourceBundle==null&&(e.spineObject.sourceBundle=null),e.spineObject.dataVersion==null&&(e.spineObject.dataVersion="");const p=De(()=>{var L;return((L=u.value)==null?void 0:L.name)||e.spineObject.skeletonFileName}),m=De(()=>{var L;return((L=d.value)==null?void 0:L.name)||e.spineObject.atlasFileName}),g=De(()=>f.value.length?f.value.map(L=>L.name):e.spineObject.textureFileNames),v=De(()=>g.value.length?`${g.value.length} 张:${g.value.join(", ")}`:"PNG / JPEG / WebP..."),y=De(()=>new Set(e.spineObject.bones.map(L=>L.parent).filter(L=>!!L))),x=De(()=>new Map(e.spineObject.bones.map(L=>[L.name,L]))),M=De(()=>e.spineObject.bones.filter(L=>{var j;const $=l.value.trim().toLocaleLowerCase();if($)return L.name.toLocaleLowerCase().includes($);let V=L.parent;for(;V;){if(a.value.has(V))return!1;V=((j=x.value.get(V))==null?void 0:j.parent)||null}return!0})),C=De(()=>y.value.size>0&&[...y.value].every(L=>a.value.has(L))),w=De(()=>{const L=h.value.trim().toLocaleLowerCase(),$=[...e.spineObject.slots].sort((V,j)=>V.order-j.order);return L?$.filter(V=>V.name.toLocaleLowerCase().includes(L)||V.attachment.toLocaleLowerCase().includes(L)):$});function b(L){const $=e.spineObject.selectedBone===L;for(const V of t.spines)V.selectedBone="";$||(e.spineObject.selectedBone=L)}function _(L){const $=e.spineObject.selectedSlot===L;for(const V of t.spines)V.selectedSlot="";$||(e.spineObject.selectedSlot=L)}function E(L){a.value.has(L)?a.value.delete(L):a.value.add(L)}function F(){a.value=C.value?new Set:new Set(y.value)}function I(L){var $;return(($=L.target.files)==null?void 0:$[0])||null}function k(L){u.value=I(L)}function B(L){d.value=I(L)}function D(L){f.value=Array.from(L.target.files||[])}function X(L){return L.name.replace(/\.[^.]+$/,"").toLocaleLowerCase()}async function N(L){const $=Array.from(L.target.files||[]);if(!$.length)return;const V=$.filter(ge=>/\.(json|skel)$/i.test(ge.name)),j=$.filter(ge=>/\.atlas$/i.test(ge.name)),K=$.filter(ge=>/\.(png|jpe?g|webp|wepb)$/i.test(ge.name)),ie=j.map(ge=>({atlas:ge,skeleton:V.find(he=>X(he)===X(ge))})).find(ge=>ge.skeleton),re=(ie==null?void 0:ie.skeleton)||V[0]||null,pe=(ie==null?void 0:ie.atlas)||j[0]||null;if(u.value=re,d.value=pe,f.value=K,!re||!pe||!K.length){const ge=[!re&&"JSON / SKEL",!pe&&"Atlas",!K.length&&"纹理图片"].filter(Boolean).join("、");e.spineObject.status="error",e.spineObject.error=`所选文件夹缺少:${ge}`;return}await P()}function U(){t.recalcTotalFrames()}function A(){U(),t.timeline.frame=0}async function P(){var V;const L=u.value,$=d.value;if(!L||!$||!f.value.length){e.spineObject.status="error",e.spineObject.error="请依次选择 Spine 数据、Atlas 和全部纹理图片";return}e.spineObject.status="loading",e.spineObject.error="";try{const j=await Iw(L,$,f.value);fu(e.spineObject.id,j),e.spineObject.skeletonFileName=L.name,e.spineObject.atlasFileName=$.name,e.spineObject.textureFileNames=f.value.map(K=>K.name),e.spineObject.dataVersion=j.dataVersion,e.spineObject.animations=j.animations,e.spineObject.bones=j.bones,e.spineObject.slots=j.slots,e.spineObject.selectedBone="",e.spineObject.selectedSlot="",l.value="",h.value="",a.value=new Set,e.spineObject.selectedAnimation=((V=j.animations[0])==null?void 0:V.name)||"",e.spineObject.assetVersion++,e.spineObject.status="ready",U(),t.timeline.frame=0;try{e.spineObject.sourceBundle=await _k(L,$,f.value)}catch(K){e.spineObject.sourceBundle=null,console.warn("Spine 配置资源嵌入失败",K)}}catch(j){e.spineObject.status="error",e.spineObject.error=j instanceof Error?j.message:String(j)}}function O(){Pl(e.spineObject.id),u.value=null,d.value=null,f.value=[],s.value&&(s.value.value=""),n.value&&(n.value.value=""),r.value&&(r.value.value=""),o.value&&(o.value.value=""),e.spineObject.skeletonFileName="",e.spineObject.atlasFileName="",e.spineObject.textureFileNames=[],e.spineObject.dataVersion="",e.spineObject.sourceBundle=null,e.spineObject.animations=[],e.spineObject.bones=[],e.spineObject.slots=[],e.spineObject.selectedBone="",e.spineObject.selectedSlot="",l.value="",h.value="",a.value=new Set,e.spineObject.selectedAnimation="",e.spineObject.assetVersion++,e.spineObject.status="empty",e.spineObject.error="",U()}return(L,$)=>(z(),J("div",eB,[$[38]||($[38]=T("div",{class:"editor-title"},"Spine 属性",-1)),T("label",tB,[$[20]||($[20]=T("span",null,"Spine 名称",-1)),ce(T("input",{"onUpdate:modelValue":$[0]||($[0]=V=>i.spineObject.name=V)},null,512),[[je,i.spineObject.name]])]),T("div",sB,[T("label",iB,[$[21]||($[21]=T("span",null,"X 位置",-1)),ce(T("input",{"onUpdate:modelValue":$[1]||($[1]=V=>i.spineObject.x=V),type:"number"},null,512),[[je,i.spineObject.x,void 0,{number:!0}]])]),T("label",nB,[$[22]||($[22]=T("span",null,"Y 位置",-1)),ce(T("input",{"onUpdate:modelValue":$[2]||($[2]=V=>i.spineObject.y=V),type:"number"},null,512),[[je,i.spineObject.y,void 0,{number:!0}]])]),T("label",rB,[$[23]||($[23]=T("span",null,"旋转",-1)),ce(T("input",{"onUpdate:modelValue":$[3]||($[3]=V=>i.spineObject.rotation=V),type:"number"},null,512),[[je,i.spineObject.rotation,void 0,{number:!0}]])])]),T("div",oB,[T("label",aB,[$[24]||($[24]=T("span",null,"Scale X",-1)),ce(T("input",{"onUpdate:modelValue":$[4]||($[4]=V=>i.spineObject.scaleX=V),type:"number",step:"0.05"},null,512),[[je,i.spineObject.scaleX,void 0,{number:!0}]])]),T("label",lB,[$[25]||($[25]=T("span",null,"Scale Y",-1)),ce(T("input",{"onUpdate:modelValue":$[5]||($[5]=V=>i.spineObject.scaleY=V),type:"number",step:"0.05"},null,512),[[je,i.spineObject.scaleY,void 0,{number:!0}]])]),T("label",cB,[$[26]||($[26]=T("span",null,"开始时间",-1)),ce(T("input",{"onUpdate:modelValue":$[6]||($[6]=V=>i.spineObject.timeOffset=V),type:"number",min:"0",step:"0.033333",onChange:U},null,544),[[je,i.spineObject.timeOffset,void 0,{number:!0}]])])]),$[39]||($[39]=T("div",{class:"divider"},null,-1)),$[40]||($[40]=T("div",{class:"section-title"},"Spine 资源",-1)),T("input",{ref_key:"skeletonInput",ref:s,hidden:"",type:"file",accept:".json,.skel,application/json,application/octet-stream",onChange:k},null,544),T("input",{ref_key:"atlasInput",ref:n,hidden:"",type:"file",accept:".atlas,text/plain",onChange:B},null,544),T("input",{ref_key:"textureInput",ref:r,hidden:"",type:"file",multiple:"",accept:".png,.jpg,.jpeg,.webp,.wepb,image/png,image/jpeg,image/webp",onChange:D},null,544),T("input",{ref_key:"folderInput",ref:o,hidden:"",type:"file",multiple:"",webkitdirectory:"",directory:"",onChange:N},null,544),T("button",{class:"folder-select",disabled:i.spineObject.status==="loading",onClick:$[7]||($[7]=V=>{var j;return(j=o.value)==null?void 0:j.click()})},"选择文件夹并加载",8,hB),$[41]||($[41]=T("div",{class:"folder-hint"},"一次读取文件夹中的 JSON / SKEL、Atlas 和全部纹理;仍可在下方单独替换资源。",-1)),T("div",uB,[T("div",{class:"asset-name",title:p.value},ye(p.value||"JSON / SKEL..."),9,dB),T("button",{onClick:$[8]||($[8]=V=>{var j;return(j=s.value)==null?void 0:j.click()})},"选择")]),T("div",fB,[T("div",{class:"asset-name",title:m.value},ye(m.value||"Atlas..."),9,mB),T("button",{onClick:$[9]||($[9]=V=>{var j;return(j=n.value)==null?void 0:j.click()})},"选择")]),T("div",pB,[T("div",{class:"asset-name",title:g.value.join(", ")},ye(v.value),9,gB),T("button",{onClick:$[10]||($[10]=V=>{var j;return(j=r.value)==null?void 0:j.click()})},"选择(多选)")]),T("div",vB,[T("button",{class:"load",disabled:i.spineObject.status==="loading",onClick:P},ye(i.spineObject.status==="loading"?"加载中…":"↧ 加载"),9,yB),T("button",{class:"clear",onClick:O},"清除")]),T("div",xB,[$[27]||($[27]=gt(" 支持 Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · 对应版本运行时按需加载 · 本地离线 ",-1)),i.spineObject.dataVersion?(z(),J("span",bB," · 当前资源 "+ye(i.spineObject.dataVersion),1)):xe("",!0)]),i.spineObject.error?(z(),J("div",wB,ye(i.spineObject.error),1)):xe("",!0),T("div",SB,[$[30]||($[30]=T("div",{class:"section-title"},"Spine 动画",-1)),i.spineObject.animations.length?(z(),J("label",TB,[$[29]||($[29]=T("span",null,"时间轴播放动画",-1)),ce(T("select",{"onUpdate:modelValue":$[11]||($[11]=V=>i.spineObject.selectedAnimation=V),onChange:A},[$[28]||($[28]=T("option",{value:""},"无",-1)),(z(!0),J(Ce,null,Ft(i.spineObject.animations,V=>(z(),J("option",{key:V.name,value:V.name},ye(V.name)+"("+ye(V.duration.toFixed(2))+"s) ",9,_B))),128))],544),[[_t,i.spineObject.selectedAnimation]])])):(z(),J("div",MB,"无可用动画"))]),T("div",CB,[T("div",AB,[$[37]||($[37]=T("div",{class:"section-title"},"层级树",-1)),c.value==="bone"?(z(),J("button",{key:0,class:Ae(["selected-bone",{active:i.spineObject.selectedBone}]),disabled:!i.spineObject.selectedBone,title:i.spineObject.selectedBone?"点击清除骨骼选择":"当前未选择骨骼",onClick:$[12]||($[12]=V=>i.spineObject.selectedBone="")},[i.spineObject.selectedBone?(z(),J(Ce,{key:0},[$[31]||($[31]=gt("清除选中骨骼:",-1)),T("strong",null,ye(i.spineObject.selectedBone),1)],64)):(z(),J(Ce,{key:1},[$[32]||($[32]=gt("当前骨骼:",-1)),$[33]||($[33]=T("strong",null,"未选择",-1))],64))],10,EB)):(z(),J("button",{key:1,class:Ae(["selected-bone",{active:i.spineObject.selectedSlot}]),disabled:!i.spineObject.selectedSlot,title:i.spineObject.selectedSlot?"点击清除插槽选择":"当前未选择插槽",onClick:$[13]||($[13]=V=>i.spineObject.selectedSlot="")},[i.spineObject.selectedSlot?(z(),J(Ce,{key:0},[$[34]||($[34]=gt("清除选中插槽:",-1)),T("strong",null,ye(i.spineObject.selectedSlot),1)],64)):(z(),J(Ce,{key:1},[$[35]||($[35]=gt("当前插槽:",-1)),$[36]||($[36]=T("strong",null,"未选择",-1))],64))],10,IB)),c.value==="bone"&&i.spineObject.bones.length?(z(),J("button",{key:2,class:"tree-action",onClick:F},ye(C.value?"全部展开":"全部折叠"),1)):xe("",!0)]),T("div",RB,[T("button",{class:Ae({on:c.value==="bone"}),onClick:$[14]||($[14]=V=>c.value="bone")},"骨骼",2),T("button",{class:Ae({on:c.value==="slot"}),onClick:$[15]||($[15]=V=>c.value="slot")},"插槽",2)]),c.value==="bone"?(z(),J(Ce,{key:0},[i.spineObject.bones.length?(z(),J("div",kB,[ce(T("input",{"onUpdate:modelValue":$[16]||($[16]=V=>l.value=V),type:"search","aria-label":"搜索骨骼",placeholder:"搜索骨骼名称…"},null,512),[[je,l.value,void 0,{trim:!0}]]),l.value?(z(),J("button",{key:0,title:"清空搜索","aria-label":"清空骨骼搜索",onClick:$[17]||($[17]=V=>l.value="")},"✕")):xe("",!0)])):(z(),J("div",PB,"未加载 Spine")),i.spineObject.bones.length&&!M.value.length?(z(),J("div",FB,"未找到匹配的骨骼")):i.spineObject.bones.length?(z(),J("div",OB,[(z(!0),J(Ce,null,Ft(M.value,V=>(z(),J("div",{key:V.name,class:Ae(["bone",{selected:i.spineObject.selectedBone===V.name}]),style:Vt({paddingLeft:`${6+V.depth*16}px`}),role:"button",tabindex:"0",onClick:j=>b(V.name),onKeydown:yr(Ke(j=>b(V.name),["prevent"]),["enter"])},[y.value.has(V.name)?(z(),J("button",{key:0,class:"bone-toggle",title:a.value.has(V.name)?"展开子骨骼":"折叠子骨骼",onClick:Ke(j=>E(V.name),["stop"])},ye(a.value.has(V.name)?"▸":"▾"),9,BB)):(z(),J("span",NB,"•")),T("span",DB,ye(V.name),1)],46,LB))),128))])):xe("",!0)],64)):(z(),J(Ce,{key:1},[i.spineObject.slots.length?(z(),J("div",$B,[ce(T("input",{"onUpdate:modelValue":$[18]||($[18]=V=>h.value=V),type:"search","aria-label":"搜索插槽",placeholder:"搜索插槽或附件名称…"},null,512),[[je,h.value,void 0,{trim:!0}]]),h.value?(z(),J("button",{key:0,title:"清空搜索","aria-label":"清空插槽搜索",onClick:$[19]||($[19]=V=>h.value="")},"✕")):xe("",!0)])):(z(),J("div",UB,"未加载 Spine 插槽")),i.spineObject.slots.length&&!w.value.length?(z(),J("div",XB,"未找到匹配的插槽")):i.spineObject.slots.length?(z(),J("div",VB,[(z(!0),J(Ce,null,Ft(w.value,V=>(z(),J("div",{key:V.name,class:Ae(["bone slot-row",{selected:i.spineObject.selectedSlot===V.name}]),role:"button",tabindex:"0",title:`${V.name}(骨骼:${V.bone||"-"},附件:${V.attachment||"空"})`,onClick:j=>_(V.name),onKeydown:yr(Ke(j=>_(V.name),["prevent"]),["enter"])},[T("span",GB,ye(V.order+1),1),T("span",jB,ye(V.name),1),T("span",HB,ye(V.attachment||"空"),1)],42,YB))),128))])):xe("",!0)],64))])]))}}),zB=Jt(WB,[["__scopeId","data-v-3545b078"]]),qB={class:"group"},KB={class:"caret"},ZB={class:"scene-actions"},JB=["disabled"],QB={class:"group-body"},eN={class:"tree scene-tree"},tN=["onClick"],sN={class:"tlabel"},iN=["title","aria-label","onClick"],nN={viewBox:"0 0 24 24","aria-hidden":"true"},rN={key:0,class:"eye-slash",d:"M4 4l16 16"},oN=["onClick"],aN=["onClick"],lN={class:"tlabel"},cN=["title","aria-label","onClick"],hN={viewBox:"0 0 24 24","aria-hidden":"true"},uN={key:0,class:"eye-slash",d:"M4 4l16 16"},dN=["onClick"],fN=["onClick"],mN={class:"tlabel"},pN=["title","aria-label","onClick"],gN={viewBox:"0 0 24 24","aria-hidden":"true"},vN={key:0,class:"eye-slash",d:"M4 4l16 16"},yN=["onClick"],xN=["onClick"],bN={class:"tlabel"},wN=["title","aria-label","onClick"],SN={viewBox:"0 0 24 24","aria-hidden":"true"},MN={key:0,class:"eye-slash",d:"M4 4l16 16"},TN=["onClick"],_N={key:0,class:"empty"},CN={class:"row"},AN={class:"seed-row scene-seed"},EN={class:"field-block"},IN={class:"field-grid"},RN={class:"field-block"},PN={class:"field-block check-field"},kN={class:"field-grid"},FN={class:"compact-field"},ON={class:"compact-field"},LN={class:"field-grid"},BN={class:"compact-field"},NN={class:"compact-field"},DN={key:1,class:"field-grid"},UN={class:"compact-field"},$N={class:"compact-field"},XN={key:2,class:"field-grid"},VN={class:"compact-field"},YN={class:"compact-field"},GN={class:"field-block"},jN={key:4,class:"field-grid"},HN={class:"compact-field"},WN={class:"compact-field"},zN={class:"collider-follow-section"},qN={class:"follow-path"},KN={class:"field-block"},ZN=["value"],JN={class:"field-grid"},QN={class:"compact-field"},eD={class:"compact-field"},tD={class:"follow-path"},sD={class:"field-block"},iD={class:"field-grid"},nD={class:"compact-field"},rD={class:"compact-field"},oD={class:"field-grid"},aD={class:"compact-field"},lD={class:"compact-field"},cD={class:"setting-line"},hD={class:"setting-line"},uD={class:"field-block"},dD={key:4,class:"panel-hint"},fD=Zt({__name:"SceneObjectsSection",setup(i){const{store:e,resolvedCurveEditorMode:t,sys:s,activeObjectType:n,activeCollider:r,activePath:o,activeSpine:a,canCopyObject:l,collapsed:c,toggle:h,select:u,addSys:d,addCollider:f,addPath:p,addSpine:m,copySelectedObject:g,applyPathPreset:v,clearPathAnchors:y,randomizeSeed:x,LINEAR_CURVE:M}=Ar();return(C,w)=>(z(),J("div",qB,[T("div",{class:"group-head scene-head",onClick:w[5]||(w[5]=b=>R(h)("scene"))},[T("span",KB,ye(R(c).scene?"▸":"▾"),1),w[50]||(w[50]=T("span",null,"场景对象",-1)),T("div",ZB,[T("button",{class:"scene-add",title:"添加粒子系统",onClick:w[0]||(w[0]=Ke((...b)=>R(d)&&R(d)(...b),["stop"]))},"+粒子"),T("button",{class:"scene-add",title:"添加碰撞体",onClick:w[1]||(w[1]=Ke((...b)=>R(f)&&R(f)(...b),["stop"]))},"+碰撞"),T("button",{class:"scene-add",title:"添加路径",onClick:w[2]||(w[2]=Ke((...b)=>R(p)&&R(p)(...b),["stop"]))},"+路径"),T("button",{class:"scene-add",title:"添加 Spine",onClick:w[3]||(w[3]=Ke((...b)=>R(m)&&R(m)(...b),["stop"]))},"+Spine"),T("button",{class:"scene-add",disabled:!R(l),title:"复制当前选中的场景对象",onClick:w[4]||(w[4]=Ke((...b)=>R(g)&&R(g)(...b),["stop"]))},"+Copy",8,JB)])]),ce(T("div",QB,[T("div",eN,[(z(!0),J(Ce,null,Ft(R(e).systems,(b,_)=>(z(),J("div",{key:`particle-${b.id}`,class:Ae(["tree-item scene-object-item",{on:R(n)==="particle"&&b.id===R(e).activeObjectId}]),onClick:E=>R(u)(_)},[w[53]||(w[53]=T("span",{class:"tdot"},"●",-1)),T("span",sN,ye(b.config.name||"ParticleSystem"+(_+1)),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示粒子系统":"隐藏粒子系统","aria-label":b.visible===!1?"显示粒子系统":"隐藏粒子系统",onClick:Ke(E=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",nN,[w[51]||(w[51]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),w[52]||(w[52]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",rN)):xe("",!0)]))],10,iN),w[54]||(w[54]=T("span",{class:"scene-object-kind"},"粒子",-1)),T("button",{class:"scene-object-delete",title:"删除粒子系统",onClick:Ke(E=>R(e).removeSystem(b.id),["stop"])},"✕",8,oN)],10,tN))),128)),(z(!0),J(Ce,null,Ft(R(e).colliders,b=>(z(),J("div",{key:`collision-${b.id}`,class:Ae(["tree-item scene-object-item",{on:R(n)==="collision"&&b.id===R(e).activeObjectId}]),onClick:_=>R(e).selectSceneObject("collision",b.id)},[w[57]||(w[57]=T("span",{class:"tdot collision-dot"},"■",-1)),T("span",lN,ye(b.name),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示碰撞体":"隐藏碰撞体","aria-label":b.visible===!1?"显示碰撞体":"隐藏碰撞体",onClick:Ke(_=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",hN,[w[55]||(w[55]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),w[56]||(w[56]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",uN)):xe("",!0)]))],10,cN),w[58]||(w[58]=T("span",{class:"scene-object-kind"},"碰撞",-1)),T("button",{class:"scene-object-delete",title:"删除碰撞体",onClick:Ke(_=>R(e).removeCollider(b.id),["stop"])},"✕",8,dN)],10,aN))),128)),(z(!0),J(Ce,null,Ft(R(e).paths,b=>(z(),J("div",{key:`path-${b.id}`,class:Ae(["tree-item scene-object-item",{on:R(n)==="path"&&b.id===R(e).activeObjectId}]),onClick:_=>R(e).selectSceneObject("path",b.id)},[w[61]||(w[61]=T("span",{class:"tdot path-dot"},"◇",-1)),T("span",mN,ye(b.name),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示路径":"隐藏路径","aria-label":b.visible===!1?"显示路径":"隐藏路径",onClick:Ke(_=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",gN,[w[59]||(w[59]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),w[60]||(w[60]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",vN)):xe("",!0)]))],10,pN),w[62]||(w[62]=T("span",{class:"scene-object-kind"},"路径",-1)),T("button",{class:"scene-object-delete",title:"删除路径",onClick:Ke(_=>R(e).removePath(b.id),["stop"])},"✕",8,yN)],10,fN))),128)),(z(!0),J(Ce,null,Ft(R(e).spines,b=>(z(),J("div",{key:`spine-${b.id}`,class:Ae(["tree-item scene-object-item",{on:R(n)==="spine"&&b.id===R(e).activeObjectId}]),onClick:_=>R(e).selectSceneObject("spine",b.id)},[w[65]||(w[65]=T("span",{class:"tdot spine-dot"},"◆",-1)),T("span",bN,ye(b.name),1),T("button",{class:Ae(["scene-object-eye",{off:b.visible===!1}]),title:b.visible===!1?"显示 Spine":"隐藏 Spine","aria-label":b.visible===!1?"显示 Spine":"隐藏 Spine",onClick:Ke(_=>b.visible=b.visible===!1,["stop"])},[(z(),J("svg",SN,[w[63]||(w[63]=T("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"},null,-1)),w[64]||(w[64]=T("circle",{cx:"12",cy:"12",r:"2.8"},null,-1)),b.visible===!1?(z(),J("path",MN)):xe("",!0)]))],10,wN),w[66]||(w[66]=T("span",{class:"scene-object-kind"},"Spine",-1)),T("button",{class:"scene-object-delete",title:"删除 Spine",onClick:Ke(_=>R(e).removeSpine(b.id),["stop"])},"✕",8,TN)],10,xN))),128)),!R(e).systems.length&&!R(e).colliders.length&&!R(e).paths.length&&!R(e).spines.length?(z(),J("div",_N,"场景中暂无对象")):xe("",!0)]),R(n)==="particle"&&R(s)?(z(),J(Ce,{key:0},[T("label",CN,[w[67]||(w[67]=T("span",null,"名称",-1)),ce(T("input",{"onUpdate:modelValue":w[6]||(w[6]=b=>R(s).config.name=b),class:"inp"},null,512),[[je,R(s).config.name]])]),be(Oe,{label:"位置X",min:-2e3,max:2e3,step:1,modelValue:R(s).config.centerX,"onUpdate:modelValue":w[7]||(w[7]=b=>R(s).config.centerX=b)},null,8,["modelValue"]),be(Oe,{label:"位置Y",min:-2e3,max:2e3,step:1,modelValue:R(s).config.centerY,"onUpdate:modelValue":w[8]||(w[8]=b=>R(s).config.centerY=b)},null,8,["modelValue"]),be(Oe,{label:"偏移X",min:-2e3,max:2e3,step:1,modelValue:R(s).config.offsetX,"onUpdate:modelValue":w[9]||(w[9]=b=>R(s).config.offsetX=b)},null,8,["modelValue"]),be(Oe,{label:"偏移Y",min:-2e3,max:2e3,step:1,modelValue:R(s).config.offsetY,"onUpdate:modelValue":w[10]||(w[10]=b=>R(s).config.offsetY=b)},null,8,["modelValue"]),be(Oe,{label:"旋转",min:-360,max:360,step:1,modelValue:R(s).config.rootRotation,"onUpdate:modelValue":w[11]||(w[11]=b=>R(s).config.rootRotation=b)},null,8,["modelValue"]),be(Oe,{label:"缩放X",min:.05,max:10,step:.05,modelValue:R(s).config.rootScaleX,"onUpdate:modelValue":w[12]||(w[12]=b=>R(s).config.rootScaleX=b)},null,8,["modelValue"]),be(Oe,{label:"缩放Y",min:.05,max:10,step:.05,modelValue:R(s).config.rootScaleY,"onUpdate:modelValue":w[13]||(w[13]=b=>R(s).config.rootScaleY=b)},null,8,["modelValue"]),T("div",AN,[w[68]||(w[68]=T("label",{for:"system-seed"},"随机种子",-1)),ce(T("input",{id:"system-seed",class:"seed-input",type:"number",min:"0",step:"1","onUpdate:modelValue":w[14]||(w[14]=b=>R(s).config.seed=b),title:"控制粒子系统内全部随机属性、资源选择与修改器随机采样"},null,512),[[je,R(s).config.seed,void 0,{number:!0}]]),T("button",{class:"seed-random",title:"生成新的全局随机种子",onClick:w[15]||(w[15]=(...b)=>R(x)&&R(x)(...b))},"⚄")]),w[69]||(w[69]=T("div",{class:"seed-hint"},"控制初始随机参数、资源选择和修改器随机采样;相同种子可复现相同效果",-1))],64)):R(r)?(z(),J(Ce,{key:1},[w[94]||(w[94]=T("div",{class:"object-editor-title"},"碰撞体属性",-1)),T("label",EN,[w[70]||(w[70]=T("span",null,"碰撞体名称",-1)),ce(T("input",{"onUpdate:modelValue":w[16]||(w[16]=b=>R(r).name=b),class:"inp"},null,512),[[je,R(r).name]])]),T("div",IN,[T("label",RN,[w[72]||(w[72]=T("span",null,"类型",-1)),ce(T("select",{"onUpdate:modelValue":w[17]||(w[17]=b=>R(r).shape=b),class:"inp"},[...w[71]||(w[71]=[Qs('',5)])],512),[[_t,R(r).shape]])]),T("label",PN,[w[73]||(w[73]=T("span",null,"启用",-1)),ce(T("input",{"onUpdate:modelValue":w[18]||(w[18]=b=>R(r).enabled=b),type:"checkbox"},null,512),[[yt,R(r).enabled]])])]),T("div",kN,[T("label",FN,[w[74]||(w[74]=T("span",null,"X 位置",-1)),ce(T("input",{"onUpdate:modelValue":w[19]||(w[19]=b=>R(r).x=b),type:"number",class:"inp"},null,512),[[je,R(r).x,void 0,{number:!0}]])]),T("label",ON,[w[75]||(w[75]=T("span",null,"Y 位置",-1)),ce(T("input",{"onUpdate:modelValue":w[20]||(w[20]=b=>R(r).y=b),type:"number",class:"inp"},null,512),[[je,R(r).y,void 0,{number:!0}]])])]),be(Oe,{label:"旋转",min:-360,max:360,step:1,modelValue:R(r).rotation,"onUpdate:modelValue":w[21]||(w[21]=b=>R(r).rotation=b)},null,8,["modelValue"]),T("div",LN,[T("label",BN,[w[76]||(w[76]=T("span",null,"缩放 X",-1)),ce(T("input",{"onUpdate:modelValue":w[22]||(w[22]=b=>R(r).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,R(r).scaleX,void 0,{number:!0}]])]),T("label",NN,[w[77]||(w[77]=T("span",null,"缩放 Y",-1)),ce(T("input",{"onUpdate:modelValue":w[23]||(w[23]=b=>R(r).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,R(r).scaleY,void 0,{number:!0}]])])]),R(r).shape==="circle"?(z(),At(Oe,{key:0,label:"半径",min:1,max:1e3,step:1,modelValue:R(r).radius,"onUpdate:modelValue":w[24]||(w[24]=b=>R(r).radius=b)},null,8,["modelValue"])):R(r).shape==="ellipse"?(z(),J("div",DN,[T("label",UN,[w[78]||(w[78]=T("span",null,"X 半径",-1)),ce(T("input",{"onUpdate:modelValue":w[25]||(w[25]=b=>R(r).radiusX=b),type:"number",min:"1",class:"inp"},null,512),[[je,R(r).radiusX,void 0,{number:!0}]])]),T("label",$N,[w[79]||(w[79]=T("span",null,"Y 半径",-1)),ce(T("input",{"onUpdate:modelValue":w[26]||(w[26]=b=>R(r).radiusY=b),type:"number",min:"1",class:"inp"},null,512),[[je,R(r).radiusY,void 0,{number:!0}]])])])):(z(),J("div",XN,[T("label",VN,[w[80]||(w[80]=T("span",null,"宽度",-1)),ce(T("input",{"onUpdate:modelValue":w[27]||(w[27]=b=>R(r).width=b),type:"number",min:"1",class:"inp"},null,512),[[je,R(r).width,void 0,{number:!0}]])]),T("label",YN,[w[81]||(w[81]=T("span",null,"高度",-1)),ce(T("input",{"onUpdate:modelValue":w[28]||(w[28]=b=>R(r).height=b),type:"number",min:"1",class:"inp"},null,512),[[je,R(r).height,void 0,{number:!0}]])])])),R(r).shape==="polygon"||R(r).shape==="custom"?(z(),At(Oe,{key:3,label:"边数",min:3,max:16,step:1,modelValue:R(r).sides,"onUpdate:modelValue":w[29]||(w[29]=b=>R(r).sides=b)},null,8,["modelValue"])):xe("",!0),T("label",GN,[w[83]||(w[83]=T("span",null,"碰撞响应",-1)),ce(T("select",{"onUpdate:modelValue":w[30]||(w[30]=b=>R(r).response=b),class:"inp"},[...w[82]||(w[82]=[T("option",{value:"physics"},"物理(弹跳/摩擦)",-1),T("option",{value:"pause"},"暂停(停止不动)",-1),T("option",{value:"destroy"},"消失(立即销毁)",-1)])],512),[[_t,R(r).response]])]),R(r).response==="physics"?(z(),J("div",jN,[T("label",HN,[w[84]||(w[84]=T("span",null,"弹性 (0-1)",-1)),ce(T("input",{"onUpdate:modelValue":w[31]||(w[31]=b=>R(r).elasticity=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[je,R(r).elasticity,void 0,{number:!0}]])]),T("label",WN,[w[85]||(w[85]=T("span",null,"摩擦 (0-1)",-1)),ce(T("input",{"onUpdate:modelValue":w[32]||(w[32]=b=>R(r).friction=b),type:"number",min:"0",max:"1",step:"0.01",class:"inp"},null,512),[[je,R(r).friction,void 0,{number:!0}]])])])):xe("",!0),T("div",zN,[T("label",qN,[ce(T("input",{"onUpdate:modelValue":w[33]||(w[33]=b=>R(r).followPath=b),type:"checkbox"},null,512),[[yt,R(r).followPath]]),w[86]||(w[86]=gt("跟随路径移动",-1))]),R(r).followPath?(z(),J(Ce,{key:0},[T("label",KN,[w[88]||(w[88]=T("span",null,"目标路径",-1)),ce(T("select",{"onUpdate:modelValue":w[34]||(w[34]=b=>R(r).followPathId=b),class:"inp"},[w[87]||(w[87]=T("option",{value:0},"(未选择)",-1)),(z(!0),J(Ce,null,Ft(R(e).paths,b=>(z(),J("option",{key:b.id,value:b.id},ye(b.name),9,ZN))),128))],512),[[_t,R(r).followPathId,void 0,{number:!0}]])]),T("div",JN,[T("label",QN,[w[89]||(w[89]=T("span",null,"移动时长(秒)",-1)),ce(T("input",{"onUpdate:modelValue":w[35]||(w[35]=b=>R(r).followDuration=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,R(r).followDuration,void 0,{number:!0}]])]),T("label",eD,[w[91]||(w[91]=T("span",null,"曲线模式",-1)),ce(T("select",{"onUpdate:modelValue":w[36]||(w[36]=b=>R(r).followCurveMode=b),class:"inp"},[...w[90]||(w[90]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[_t,R(r).followCurveMode]])])]),T("label",tD,[ce(T("input",{"onUpdate:modelValue":w[37]||(w[37]=b=>R(r).followPathRotation=b),type:"checkbox"},null,512),[[yt,R(r).followPathRotation]]),w[92]||(w[92]=gt("方向沿路径",-1))]),w[93]||(w[93]=T("div",{class:"collider-curve-title"},[gt("移动进度曲线 "),T("small",null,"横轴:实时/移动时长 纵轴:路径进度(0=起点 → 1=终点)")],-1)),be(Ji,{"model-value":R(r).followCurve||R(M),"default-value":R(M),mode:R(t)(R(r).followCurveMode),"onUpdate:modelValue":w[38]||(w[38]=b=>R(r).followCurve=b)},null,8,["model-value","default-value","mode"])],64)):xe("",!0)])],64)):R(o)?(z(),J(Ce,{key:2},[w[104]||(w[104]=T("div",{class:"object-editor-title"},"路径属性",-1)),T("label",sD,[w[95]||(w[95]=T("span",null,"路径名称",-1)),ce(T("input",{"onUpdate:modelValue":w[39]||(w[39]=b=>R(o).name=b),class:"inp"},null,512),[[je,R(o).name]])]),T("div",iD,[T("label",nD,[w[96]||(w[96]=T("span",null,"X 位置",-1)),ce(T("input",{"onUpdate:modelValue":w[40]||(w[40]=b=>R(o).x=b),type:"number",class:"inp"},null,512),[[je,R(o).x,void 0,{number:!0}]])]),T("label",rD,[w[97]||(w[97]=T("span",null,"Y 位置",-1)),ce(T("input",{"onUpdate:modelValue":w[41]||(w[41]=b=>R(o).y=b),type:"number",class:"inp"},null,512),[[je,R(o).y,void 0,{number:!0}]])])]),be(Oe,{label:"旋转",min:-360,max:360,step:1,modelValue:R(o).rotation,"onUpdate:modelValue":w[42]||(w[42]=b=>R(o).rotation=b)},null,8,["modelValue"]),T("div",oD,[T("label",aD,[w[98]||(w[98]=T("span",null,"缩放 X",-1)),ce(T("input",{"onUpdate:modelValue":w[43]||(w[43]=b=>R(o).scaleX=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,R(o).scaleX,void 0,{number:!0}]])]),T("label",lD,[w[99]||(w[99]=T("span",null,"缩放 Y",-1)),ce(T("input",{"onUpdate:modelValue":w[44]||(w[44]=b=>R(o).scaleY=b),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,R(o).scaleY,void 0,{number:!0}]])])]),T("label",cD,[w[100]||(w[100]=T("span",null,"闭合路径",-1)),ce(T("input",{"onUpdate:modelValue":w[45]||(w[45]=b=>R(o).closed=b),type:"checkbox"},null,512),[[yt,R(o).closed]])]),T("label",hD,[w[101]||(w[101]=T("span",null,"路径颜色",-1)),ce(T("input",{"onUpdate:modelValue":w[46]||(w[46]=b=>R(o).color=b),type:"color",class:"path-color"},null,512),[[je,R(o).color]])]),w[105]||(w[105]=Qs('
操作说明:
  • 双击空白处/曲线:新建锚点
  • 双击锚点:删除节点
  • 双击第二下按住拖动:新建并拉出手柄
  • 拖动锚点移动位置,拖动手柄调整曲线
  • Shift+拖动手柄:两侧完全对称
  • Alt+拖动手柄:独立控制单侧
  • Ctrl+点击/框选:加选节点
  • Alt+点击/框选:减选节点
  • Alt+单击空白处:清除全部选中
  • 选中多个节点后可整体拖动
',1)),T("label",uD,[w[103]||(w[103]=T("span",null,"应用预设形状",-1)),ce(T("select",{"onUpdate:modelValue":w[47]||(w[47]=b=>R(o).preset=b),class:"inp"},[...w[102]||(w[102]=[Qs('',5)])],512),[[_t,R(o).preset]])]),T("button",{class:"path-action primary",onClick:w[48]||(w[48]=(...b)=>R(v)&&R(v)(...b))},"应用预设"),T("button",{class:"path-action",onClick:w[49]||(w[49]=(...b)=>R(y)&&R(y)(...b))},"清空锚点")],64)):R(a)?(z(),At(zB,{key:3,"spine-object":R(a)},null,8,["spine-object"])):(z(),J("div",dD,"使用右上角按钮创建场景对象"))],512),[[Ss,!R(c).scene]])]))}}),mD=Jt(fD,[["__scopeId","data-v-3873124f"]]),pD={class:"group"},gD={class:"caret"},vD={class:"group-body"},yD={class:"segs"},xD={class:"segs stream-behavior-segs"},bD={key:2,class:"stream-loop-options"},wD={class:"loop-section-row"},SD={class:"switch-row"},MD=["checked"],TD={key:0,class:"loop-duration-control"},_D={class:"switch-row loop-duration-toggle"},CD=["checked"],AD={class:"loop-section-duration"},ED=["value"],ID={key:1},RD={key:2,class:"loop-auto-duration"},PD={class:"loop-section-row"},kD={class:"switch-row"},FD=["checked"],OD={key:0,class:"loop-duration-control"},LD={class:"switch-row loop-duration-toggle"},BD=["checked"],ND={class:"loop-section-duration"},DD=["value"],UD={key:1},$D={key:2,class:"loop-auto-duration"},XD={key:3,class:"modifier-hint stream-loop-hint"},VD={class:"group"},YD={class:"caret"},GD={class:"group-body"},jD={class:"row"},HD={class:"row"},WD=["value","disabled"],zD={key:0,class:"row"},qD={class:"row"},KD={key:0,value:"radial"},ZD={key:1,value:"path-normal"},JD={key:2,value:"path-tangent"},QD={key:6,class:"switch-row"},e4=Zt({__name:"EmissionSection",setup(i){const{store:e,sys:t,automaticLoopDuration:s,loopDurationFrames:n,collapsed:r,toggle:o,setEmitMode:a,setLoopDurationFrames:l,setStreamBehavior:c,setLoopSection:h,setLoopSectionDuration:u,setLoopCustomDuration:d,resetModule:f,select:p,onShapeChange:m,onSpawnPathChange:g}=Ar();return(v,y)=>(z(),J(Ce,null,[T("div",pD,[T("div",{class:"group-head",onClick:y[1]||(y[1]=x=>R(o)("emitMode"))},[T("span",gD,ye(R(r).emitMode?"▸":"▾"),1),y[36]||(y[36]=T("span",null,"发射模式",-1)),T("button",{class:"group-reset",title:"重置发射模式参数",onClick:y[0]||(y[0]=Ke(x=>R(f)("emitMode"),["stop"]))},"重置")]),ce(T("div",vD,[T("div",yD,[T("button",{class:Ae(["seg",{on:R(t).config.mode==="stream"}]),onClick:y[2]||(y[2]=x=>R(a)("stream"))},"持续",2),T("button",{class:Ae(["seg",{on:R(t).config.mode==="burst"}]),onClick:y[3]||(y[3]=x=>R(a)("burst"))},"爆发",2)]),R(t).config.mode==="stream"?(z(),J(Ce,{key:0},[T("div",xD,[T("button",{class:Ae(["seg",{on:R(t).config.streamBehavior==="normal"}]),onClick:y[4]||(y[4]=x=>R(c)("normal"))},"常规持续",2),T("button",{class:Ae(["seg",{on:R(t).config.streamBehavior==="loop"}]),onClick:y[5]||(y[5]=x=>R(c)("loop"))},"循环持续",2)]),be(Oe,{label:"发射速率",min:1,max:300,step:1,modelValue:R(t).config.rate,"onUpdate:modelValue":y[6]||(y[6]=x=>R(t).config.rate=x)},null,8,["modelValue"]),R(t).config.streamBehavior==="normal"?(z(),At(Oe,{key:0,label:"发射时长",min:1/30,max:60,step:1/30,modelValue:R(t).config.duration,"onUpdate:modelValue":y[7]||(y[7]=x=>R(t).config.duration=x)},null,8,["modelValue"])):(z(),At(Oe,{key:1,label:"发射时长 (f)",min:1,max:1800,step:1,"model-value":R(n),"onUpdate:modelValue":R(l)},null,8,["model-value","onUpdate:modelValue"])),R(t).config.streamBehavior==="loop"?(z(),J("div",bD,[T("div",wD,[T("label",SD,[T("input",{type:"checkbox",checked:R(t).config.generateLoopStartAnimation,onChange:y[8]||(y[8]=x=>R(h)("start",x))},null,40,MD),y[37]||(y[37]=T("span",{class:"switch-ui"},null,-1)),y[38]||(y[38]=T("span",null,"生成开始循环动画",-1))]),R(t).config.generateLoopStartAnimation?(z(),J("div",TD,[T("label",_D,[T("input",{type:"checkbox",checked:R(t).config.loopStartUseCustomDuration,onChange:y[9]||(y[9]=x=>R(d)("start",x))},null,40,CD),y[39]||(y[39]=T("span",{class:"switch-ui"},null,-1)),y[40]||(y[40]=T("span",null,"指定时长",-1))]),T("label",AD,[R(t).config.loopStartUseCustomDuration?(z(),J("input",{key:0,value:R(t).config.loopStartDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"开始循环段时长",onChange:y[10]||(y[10]=x=>R(u)("start",x))},null,40,ED)):xe("",!0),R(t).config.loopStartUseCustomDuration?(z(),J("span",ID,"f")):(z(),J("span",RD,"自动 "+ye(R(s))+"f",1))])])):xe("",!0)]),T("div",PD,[T("label",kD,[T("input",{type:"checkbox",checked:R(t).config.generateLoopEndAnimation,onChange:y[11]||(y[11]=x=>R(h)("end",x))},null,40,FD),y[41]||(y[41]=T("span",{class:"switch-ui"},null,-1)),y[42]||(y[42]=T("span",null,"生成结束循环动画",-1))]),R(t).config.generateLoopEndAnimation?(z(),J("div",OD,[T("label",LD,[T("input",{type:"checkbox",checked:R(t).config.loopEndUseCustomDuration,onChange:y[12]||(y[12]=x=>R(d)("end",x))},null,40,BD),y[43]||(y[43]=T("span",{class:"switch-ui"},null,-1)),y[44]||(y[44]=T("span",null,"指定时长",-1))]),T("label",ND,[R(t).config.loopEndUseCustomDuration?(z(),J("input",{key:0,value:R(t).config.loopEndDurationFrames,type:"number",min:"1",max:"1800",step:"1","aria-label":"结束循环段时长",onChange:y[13]||(y[13]=x=>R(u)("end",x))},null,40,DD)):xe("",!0),R(t).config.loopEndUseCustomDuration?(z(),J("span",UD,"f")):(z(),J("span",$D,"自动 "+ye(R(s))+"f",1))])])):xe("",!0)])])):xe("",!0),R(t).config.streamBehavior==="loop"?(z(),J("div",XD,"循环持续模式不支持骨骼跟随和路径跟随;进入或退出时会将粒子跟随设置恢复默认值。")):xe("",!0)],64)):(z(),At(Oe,{key:1,label:"单次数量",min:1,max:1e3,step:1,modelValue:R(t).config.burstCount,"onUpdate:modelValue":y[14]||(y[14]=x=>R(t).config.burstCount=x)},null,8,["modelValue"])),be(Oe,{label:"延迟时间",min:0,max:5,step:.1,modelValue:R(t).config.delay,"onUpdate:modelValue":y[15]||(y[15]=x=>R(t).config.delay=x)},null,8,["modelValue"])],512),[[Ss,!R(r).emitMode]])]),T("div",VD,[T("div",{class:"group-head",onClick:y[17]||(y[17]=x=>R(o)("shape"))},[T("span",YD,ye(R(r).shape?"▸":"▾"),1),y[45]||(y[45]=T("span",null,"发射器形状",-1)),T("button",{class:"group-reset",title:"重置发射器形状参数",onClick:y[16]||(y[16]=Ke(x=>R(f)("shape"),["stop"]))},"重置")]),ce(T("div",GD,[T("label",jD,[y[47]||(y[47]=T("span",null,"形状",-1)),ce(T("select",{"onUpdate:modelValue":y[18]||(y[18]=x=>R(t).config.shape=x),class:"inp",onChange:y[19]||(y[19]=(...x)=>R(m)&&R(m)(...x))},[...y[46]||(y[46]=[Qs('',5)])],544),[[_t,R(t).config.shape]])]),R(t).config.shape==="circle"||R(t).config.shape==="cone"?(z(),J(Ce,{key:0},[be(Oe,{label:R(t).config.shape==="cone"?"内径":"内半径",min:0,max:R(t).config.outerRadius,step:1,modelValue:R(t).config.innerRadius,"onUpdate:modelValue":y[20]||(y[20]=x=>R(t).config.innerRadius=x)},null,8,["label","max","modelValue"]),be(Oe,{label:R(t).config.shape==="cone"?"外径":"外半径",min:R(t).config.innerRadius,max:300,step:1,modelValue:R(t).config.outerRadius,"onUpdate:modelValue":y[21]||(y[21]=x=>R(t).config.outerRadius=x)},null,8,["label","min","modelValue"])],64)):xe("",!0),R(t).config.shape==="cone"?(z(),J(Ce,{key:1},[be(Oe,{label:"锥形朝向",min:-360,max:360,step:1,modelValue:R(t).config.coneDirection,"onUpdate:modelValue":y[22]||(y[22]=x=>R(t).config.coneDirection=x)},null,8,["modelValue"]),be(Oe,{label:"锥形开口角度",min:1,max:360,step:1,modelValue:R(t).config.coneAngle,"onUpdate:modelValue":y[23]||(y[23]=x=>R(t).config.coneAngle=x)},null,8,["modelValue"])],64)):R(t).config.shape==="rect"?(z(),J(Ce,{key:2},[be(Oe,{label:"内宽",min:0,max:R(t).config.outerRectW,step:1,modelValue:R(t).config.innerRectW,"onUpdate:modelValue":y[24]||(y[24]=x=>R(t).config.innerRectW=x)},null,8,["max","modelValue"]),be(Oe,{label:"内高",min:0,max:R(t).config.outerRectH,step:1,modelValue:R(t).config.innerRectH,"onUpdate:modelValue":y[25]||(y[25]=x=>R(t).config.innerRectH=x)},null,8,["max","modelValue"]),be(Oe,{label:"外宽",min:R(t).config.innerRectW,max:400,step:1,modelValue:R(t).config.outerRectW,"onUpdate:modelValue":y[26]||(y[26]=x=>R(t).config.outerRectW=x)},null,8,["min","modelValue"]),be(Oe,{label:"外高",min:R(t).config.innerRectH,max:400,step:1,modelValue:R(t).config.outerRectH,"onUpdate:modelValue":y[27]||(y[27]=x=>R(t).config.outerRectH=x)},null,8,["min","modelValue"])],64)):R(t).config.shape==="path"?(z(),J(Ce,{key:3},[T("label",HD,[y[49]||(y[49]=T("span",null,"选择路径",-1)),ce(T("select",{"onUpdate:modelValue":y[28]||(y[28]=x=>R(t).config.spawnPathId=x),class:"inp",onChange:y[29]||(y[29]=(...x)=>R(g)&&R(g)(...x))},[y[48]||(y[48]=T("option",{value:0},"无路径(点发射)",-1)),(z(!0),J(Ce,null,Ft(R(e).paths,x=>(z(),J("option",{key:x.id,value:x.id,disabled:!x.enabled},ye(x.name),9,WD))),128))],544),[[_t,R(t).config.spawnPathId,void 0,{number:!0}]])]),R(t).config.spawnPathId>0?(z(),J("label",zD,[y[51]||(y[51]=T("span",null,"出生分布",-1)),ce(T("select",{"onUpdate:modelValue":y[30]||(y[30]=x=>R(t).config.spawnPathDistribution=x),class:"inp"},[...y[50]||(y[50]=[T("option",{value:"fixed"},"等间距固定分布",-1),T("option",{value:"random"},"随机分布",-1)])],512),[[_t,R(t).config.spawnPathDistribution]])])):xe("",!0)],64)):xe("",!0),y[57]||(y[57]=T("div",{class:"divider"},null,-1)),T("label",qD,[y[54]||(y[54]=T("span",null,"发射角度",-1)),ce(T("select",{"onUpdate:modelValue":y[31]||(y[31]=x=>R(t).config.emissionAngleMode=x),class:"inp"},[y[52]||(y[52]=T("option",{value:"fixed"},"固定",-1)),y[53]||(y[53]=T("option",{value:"random"},"随机",-1)),R(t).config.shape==="circle"||R(t).config.shape==="rect"||R(t).config.shape==="cone"?(z(),J("option",KD,"径向(中心向外)")):xe("",!0),R(t).config.shape==="path"&&R(t).config.spawnPathId>0?(z(),J("option",ZD,"垂直于路径")):xe("",!0),R(t).config.shape==="path"&&R(t).config.spawnPathId>0?(z(),J("option",JD,"沿路径方向")):xe("",!0)],512),[[_t,R(t).config.emissionAngleMode]])]),R(t).config.emissionAngleMode==="fixed"?(z(),At(Oe,{key:4,label:"固定角度",min:-360,max:360,step:1,modelValue:R(t).config.direction,"onUpdate:modelValue":y[32]||(y[32]=x=>R(t).config.direction=x)},null,8,["modelValue"])):R(t).config.emissionAngleMode==="random"?(z(),J(Ce,{key:5},[be(Oe,{label:"基准角度",min:-360,max:360,step:1,modelValue:R(t).config.direction,"onUpdate:modelValue":y[33]||(y[33]=x=>R(t).config.direction=x)},null,8,["modelValue"]),be(Oe,{label:"随机范围",min:0,max:360,step:1,modelValue:R(t).config.spread,"onUpdate:modelValue":y[34]||(y[34]=x=>R(t).config.spread=x)},null,8,["modelValue"])],64)):xe("",!0),R(t).config.shape!=="point"?(z(),J("label",QD,[ce(T("input",{type:"checkbox","onUpdate:modelValue":y[35]||(y[35]=x=>R(t).config.showShape=x)},null,512),[[yt,R(t).config.showShape]]),y[55]||(y[55]=T("span",{class:"switch-ui"},null,-1)),y[56]||(y[56]=T("span",null,"显示形状",-1))])):xe("",!0)],512),[[Ss,!R(r).shape]])])],64))}}),t4=Jt(e4,[["__scopeId","data-v-f9eac627"]]),s4={class:"pac"},i4={class:"pac-head"},n4={class:"pac-label"},r4={key:0,class:"pac-modes"},o4=["onClick"],a4={class:"pac-range"},l4={class:"pac-curve"},c4={class:"pac-axis"},h4=Zt({__name:"ParticleAttributeControl",props:{label:{},mode:{},valueMin:{},valueMax:{},curve:{},defaultCurve:{default:()=>[{x:0,y:0},{x:1,y:1}]},min:{},max:{},step:{default:1},allowDirection:{type:Boolean,default:!1},allowCurve:{type:Boolean,default:!0},showModes:{type:Boolean,default:!0},curveLabel:{default:"曲线输入 →"}},emits:["update:mode","update:valueMin","update:valueMax","update:curve"],setup(i){const e=i,t=De(()=>{const s=[{label:"固定",value:"fixed"},{label:"随机",value:"random"}];return e.allowCurve&&s.push({label:"曲线",value:"curve"}),e.allowDirection&&s.push({label:"发射方向",value:"direction"}),s});return(s,n)=>(z(),J("div",s4,[T("div",i4,[T("span",n4,ye(i.label),1),i.showModes?(z(),J("div",r4,[(z(!0),J(Ce,null,Ft(t.value,r=>(z(),J("button",{key:r.value,class:Ae(["pac-mode",{on:i.mode===r.value}]),onClick:o=>s.$emit("update:mode",r.value)},ye(r.label),11,o4))),128))])):xe("",!0)]),i.mode==="fixed"||i.mode==="direction"?(z(),At(Oe,{key:0,label:i.mode==="direction"?"角度偏移":"数值",min:i.min,max:i.max,step:i.step,"model-value":i.valueMin,"onUpdate:modelValue":n[0]||(n[0]=r=>s.$emit("update:valueMin",r))},null,8,["label","min","max","step","model-value"])):i.mode==="random"?(z(),J(Ce,{key:1},[be(Oe,{label:"下限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMin,"onUpdate:modelValue":n[1]||(n[1]=r=>s.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Oe,{label:"上限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMax,"onUpdate:modelValue":n[2]||(n[2]=r=>s.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])],64)):(z(),J(Ce,{key:2},[T("div",a4,[be(Oe,{label:"范围下限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMin,"onUpdate:modelValue":n[3]||(n[3]=r=>s.$emit("update:valueMin",r))},null,8,["min","max","step","model-value"]),be(Oe,{label:"范围上限",min:i.min,max:i.max,step:i.step,"model-value":i.valueMax,"onUpdate:modelValue":n[4]||(n[4]=r=>s.$emit("update:valueMax",r))},null,8,["min","max","step","model-value"])]),T("div",l4,[be(Ji,{"model-value":i.curve,"default-value":i.defaultCurve,"onUpdate:modelValue":n[5]||(n[5]=r=>s.$emit("update:curve",r))},null,8,["model-value","default-value"]),T("div",c4,[n[6]||(n[6]=T("span",null,"0",-1)),T("span",null,ye(i.curveLabel),1),n[7]||(n[7]=T("span",null,"1",-1))])])],64))]))}}),xn=Jt(h4,[["__scopeId","data-v-238f838c"]]),u4={class:"group"},d4={class:"caret"},f4={class:"group-body attr-body"},m4={class:"attr-axis-head"},p4={class:"axis-modes"},g4={class:"life-item"},v4={class:"switch-row"},y4={class:"life-item"},x4={class:"switch-row"},b4={class:"axis-modes life-axis"},w4={class:"life-item"},S4={class:"switch-row"},M4=Zt({__name:"ParticleAttributesSection",setup(i){const{sys:e,collapsed:t,toggle:s,resetModule:n,setSpeedOverLifeMode:r,prepareScaleOverLifeCurve:o,setScaleOverLifeMode:a,LINEAR_CURVE:l,FLAT_CURVE:c}=Ar();return(h,u)=>(z(),J("div",u4,[T("div",{class:"group-head",onClick:u[1]||(u[1]=d=>R(s)("attr"))},[T("span",d4,ye(R(t).attr?"▸":"▾"),1),u[44]||(u[44]=T("span",null,"粒子属性",-1)),T("button",{class:"group-reset",title:"重置粒子属性参数",onClick:u[0]||(u[0]=Ke(d=>R(n)("attr"),["stop"]))},"重置")]),ce(T("div",f4,[u[52]||(u[52]=T("div",{class:"attr-section-title"},"粒子初始参数",-1)),be(xn,{label:"初始生命周期","allow-curve":!1,mode:R(e).config.lifeMode,"onUpdate:mode":u[2]||(u[2]=d=>R(e).config.lifeMode=d),"value-min":R(e).config.lifeMin,"onUpdate:valueMin":u[3]||(u[3]=d=>R(e).config.lifeMin=d),"value-max":R(e).config.lifeMax,"onUpdate:valueMax":u[4]||(u[4]=d=>R(e).config.lifeMax=d),curve:R(e).config.lifeCurve,"onUpdate:curve":u[5]||(u[5]=d=>R(e).config.lifeCurve=d),min:.1,max:10,step:.1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),be(xn,{label:"初始速度","allow-curve":!1,mode:R(e).config.speedMode,"onUpdate:mode":u[6]||(u[6]=d=>R(e).config.speedMode=d),"value-min":R(e).config.speedMin,"onUpdate:valueMin":u[7]||(u[7]=d=>R(e).config.speedMin=d),"value-max":R(e).config.speedMax,"onUpdate:valueMax":u[8]||(u[8]=d=>R(e).config.speedMax=d),curve:R(e).config.speedCurve,"onUpdate:curve":u[9]||(u[9]=d=>R(e).config.speedCurve=d),min:0,max:1e3,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),T("div",m4,[u[45]||(u[45]=T("span",null,"初始缩放",-1)),T("div",p4,[T("button",{class:Ae(["axis-mode",{on:R(e).config.scaleAxisMode==="uniform"}]),onClick:u[10]||(u[10]=d=>R(e).config.scaleAxisMode="uniform")},"统一",2),T("button",{class:Ae(["axis-mode",{on:R(e).config.scaleAxisMode==="separate"}]),onClick:u[11]||(u[11]=d=>R(e).config.scaleAxisMode="separate")},"XY分离",2)])]),be(xn,{label:R(e).config.scaleAxisMode==="uniform"?"初始缩放":"缩放 X","allow-curve":!1,mode:R(e).config.scaleMode,"onUpdate:mode":u[12]||(u[12]=d=>R(e).config.scaleMode=d),"value-min":R(e).config.scaleMin,"onUpdate:valueMin":u[13]||(u[13]=d=>R(e).config.scaleMin=d),"value-max":R(e).config.scaleMax,"onUpdate:valueMax":u[14]||(u[14]=d=>R(e).config.scaleMax=d),curve:R(e).config.scaleCurve,"onUpdate:curve":u[15]||(u[15]=d=>R(e).config.scaleCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["label","mode","value-min","value-max","curve"]),R(e).config.scaleAxisMode==="separate"?(z(),At(xn,{key:0,label:"缩放 Y","show-modes":!1,"allow-curve":!1,mode:R(e).config.scaleMode,"onUpdate:mode":u[16]||(u[16]=d=>R(e).config.scaleMode=d),"value-min":R(e).config.scaleYMin,"onUpdate:valueMin":u[17]||(u[17]=d=>R(e).config.scaleYMin=d),"value-max":R(e).config.scaleYMax,"onUpdate:valueMax":u[18]||(u[18]=d=>R(e).config.scaleYMax=d),curve:R(e).config.scaleYCurve,"onUpdate:curve":u[19]||(u[19]=d=>R(e).config.scaleYCurve=d),min:0,max:5,step:.05,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"])):xe("",!0),be(xn,{label:"初始旋转","allow-direction":"","allow-curve":!1,mode:R(e).config.initialRotationMode,"onUpdate:mode":u[20]||(u[20]=d=>R(e).config.initialRotationMode=d),"value-min":R(e).config.initialRotationMin,"onUpdate:valueMin":u[21]||(u[21]=d=>R(e).config.initialRotationMin=d),"value-max":R(e).config.initialRotationMax,"onUpdate:valueMax":u[22]||(u[22]=d=>R(e).config.initialRotationMax=d),curve:R(e).config.initialRotationCurve,"onUpdate:curve":u[23]||(u[23]=d=>R(e).config.initialRotationCurve=d),min:-360,max:360,step:1,"curve-label":"随机采样 →"},null,8,["mode","value-min","value-max","curve"]),u[53]||(u[53]=T("div",{class:"attr-section-title life-title"},"粒子生命周期变化参数",-1)),T("div",g4,[T("label",v4,[ce(T("input",{type:"checkbox","onUpdate:modelValue":u[24]||(u[24]=d=>R(e).config.speedOverLifeEnabled=d)},null,512),[[yt,R(e).config.speedOverLifeEnabled]]),u[46]||(u[46]=T("span",{class:"switch-ui"},null,-1)),u[47]||(u[47]=T("span",null,"生命周期内速度",-1))]),R(e).config.speedOverLifeEnabled?(z(),At(xn,{key:0,label:"速度倍率",mode:R(e).config.speedOverLifeMode,"onUpdate:mode":R(r),"value-min":R(e).config.speedOverLifeMin,"onUpdate:valueMin":u[25]||(u[25]=d=>R(e).config.speedOverLifeMin=d),"value-max":R(e).config.speedOverLifeMax,"onUpdate:valueMax":u[26]||(u[26]=d=>R(e).config.speedOverLifeMax=d),curve:R(e).config.speedOverLifeCurve,"onUpdate:curve":u[27]||(u[27]=d=>R(e).config.speedOverLifeCurve=d),"default-curve":R(c),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","onUpdate:mode","value-min","value-max","curve","default-curve"])):xe("",!0)]),T("div",y4,[T("label",x4,[ce(T("input",{type:"checkbox","onUpdate:modelValue":u[28]||(u[28]=d=>R(e).config.scaleOverLifeEnabled=d),onChange:u[29]||(u[29]=(...d)=>R(o)&&R(o)(...d))},null,544),[[yt,R(e).config.scaleOverLifeEnabled]]),u[48]||(u[48]=T("span",{class:"switch-ui"},null,-1)),u[49]||(u[49]=T("span",null,"生命周期内缩放",-1))]),R(e).config.scaleOverLifeEnabled?(z(),J(Ce,{key:0},[T("div",b4,[T("button",{class:Ae(["axis-mode",{on:R(e).config.scaleOverLifeAxisMode==="uniform"}]),onClick:u[30]||(u[30]=d=>R(e).config.scaleOverLifeAxisMode="uniform")},"统一",2),T("button",{class:Ae(["axis-mode",{on:R(e).config.scaleOverLifeAxisMode==="separate"}]),onClick:u[31]||(u[31]=d=>R(e).config.scaleOverLifeAxisMode="separate")},"XY分离",2)]),be(xn,{label:R(e).config.scaleOverLifeAxisMode==="uniform"?"缩放倍率":"倍率 X",mode:R(e).config.scaleOverLifeMode,"onUpdate:mode":R(a),"value-min":R(e).config.scaleOverLifeMin,"onUpdate:valueMin":u[32]||(u[32]=d=>R(e).config.scaleOverLifeMin=d),"value-max":R(e).config.scaleOverLifeMax,"onUpdate:valueMax":u[33]||(u[33]=d=>R(e).config.scaleOverLifeMax=d),curve:R(e).config.scaleOverLifeCurve,"onUpdate:curve":u[34]||(u[34]=d=>R(e).config.scaleOverLifeCurve=d),"default-curve":R(c),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["label","mode","onUpdate:mode","value-min","value-max","curve","default-curve"]),R(e).config.scaleOverLifeAxisMode==="separate"?(z(),At(xn,{key:0,label:"倍率 Y","show-modes":!1,mode:R(e).config.scaleOverLifeMode,"onUpdate:mode":u[35]||(u[35]=d=>R(e).config.scaleOverLifeMode=d),"value-min":R(e).config.scaleYOverLifeMin,"onUpdate:valueMin":u[36]||(u[36]=d=>R(e).config.scaleYOverLifeMin=d),"value-max":R(e).config.scaleYOverLifeMax,"onUpdate:valueMax":u[37]||(u[37]=d=>R(e).config.scaleYOverLifeMax=d),curve:R(e).config.scaleYOverLifeCurve,"onUpdate:curve":u[38]||(u[38]=d=>R(e).config.scaleYOverLifeCurve=d),"default-curve":R(c),min:0,max:3,step:.05,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):xe("",!0)],64)):xe("",!0)]),T("div",w4,[T("label",S4,[ce(T("input",{type:"checkbox","onUpdate:modelValue":u[39]||(u[39]=d=>R(e).config.rotationOverLifeEnabled=d)},null,512),[[yt,R(e).config.rotationOverLifeEnabled]]),u[50]||(u[50]=T("span",{class:"switch-ui"},null,-1)),u[51]||(u[51]=T("span",null,"生命周期内旋转",-1))]),R(e).config.rotationOverLifeEnabled?(z(),At(xn,{key:0,label:"旋转速度",mode:R(e).config.rotationOverLifeMode,"onUpdate:mode":u[40]||(u[40]=d=>R(e).config.rotationOverLifeMode=d),"value-min":R(e).config.rotationSpeedMin,"onUpdate:valueMin":u[41]||(u[41]=d=>R(e).config.rotationSpeedMin=d),"value-max":R(e).config.rotationSpeedMax,"onUpdate:valueMax":u[42]||(u[42]=d=>R(e).config.rotationSpeedMax=d),curve:R(e).config.rotationOverLifeCurve,"onUpdate:curve":u[43]||(u[43]=d=>R(e).config.rotationOverLifeCurve=d),"default-curve":R(l),min:-720,max:720,step:10,"curve-label":"生命周期 →"},null,8,["mode","value-min","value-max","curve","default-curve"])):xe("",!0)])],512),[[Ss,!R(t).attr]])]))}}),T4=Jt(M4,[["__scopeId","data-v-cf6b86a5"]]),_4={class:"gradient-editor"},C4=["title","onClick","onDblclick","onPointerdown"],A4={key:0,class:"gradient-controls"},E4=["value"],I4=["value"],R4={class:"gradient-position"},P4=["value"],k4=["disabled"],F4=Zt({__name:"ColorGradientEditor",props:{modelValue:{}},emits:["update:modelValue"],setup(i,{emit:e}){const t=i,s=e,n=Fe(null),r=Fe(0),o=De(()=>t.modelValue[r.value]||null),a=De(()=>[...t.modelValue].sort((_,E)=>_.position-E.position)),l=De(()=>{const _=a.value;return _.length?`linear-gradient(90deg, ${_.map(E=>`${E.color} ${c(E.position)*100}%`).join(", ")})`:"#ffffff"});cs(()=>t.modelValue.length,_=>{r.value>=_&&(r.value=Math.max(0,_-1))});function c(_){return Math.min(1,Math.max(0,Number(_)||0))}function h(){return t.modelValue.map(_=>({position:c(_.position),color:_.color}))}function u(_,E){const F=h();F[_]&&(F[_]={...F[_],...E},s("update:modelValue",F))}function d(_){u(r.value,{color:_.target.value})}function f(_){var I;const E=_.target,F=b(E.value,((I=o.value)==null?void 0:I.color)||"#ffffff");E.value=F,u(r.value,{color:F})}function p(_){const E=_.target;f(_),E.blur()}function m(_){const E=Number(_.target.value);Number.isFinite(E)&&u(r.value,{position:c(E/100)})}function g(_){const E=h();E.push({position:c(_),color:C(E,_)}),r.value=E.length-1,s("update:modelValue",E)}function v(_){if(!n.value)return;const E=n.value.getBoundingClientRect();g((_.clientX-E.left)/Math.max(1,E.width))}function y(){const _=a.value;let E=.5;if(_.length>1){let F=-1;for(let I=0;I<_.length-1;I++){const k=_[I+1].position-_[I].position;k>F&&(F=k,E=(_[I].position+_[I+1].position)/2)}}g(E)}function x(_){if(t.modelValue.length<=2||_<0)return;const E=h().filter((F,I)=>I!==_);r.value=Math.min(_,E.length-1),s("update:modelValue",E)}function M(_,E){if(!n.value)return;r.value=E;const F=k=>{const B=n.value.getBoundingClientRect();u(E,{position:c((k.clientX-B.left)/Math.max(1,B.width))})},I=()=>{window.removeEventListener("pointermove",F),window.removeEventListener("pointerup",I),window.removeEventListener("pointercancel",I)};window.addEventListener("pointermove",F),window.addEventListener("pointerup",I),window.addEventListener("pointercancel",I),_.preventDefault()}function C(_,E){const F=[..._].sort((I,k)=>I.position-k.position);if(!F.length)return"#ffffff";if(E<=F[0].position)return F[0].color;if(E>=F[F.length-1].position)return F[F.length-1].color;for(let I=0;IB.position)continue;const D=(E-k.position)/Math.max(1e-4,B.position-k.position);return w(k.color,B.color,D)}return F[F.length-1].color}function w(_,E,F){const I=X=>{const N=parseInt(X.replace("#","").padEnd(6,"0").slice(0,6),16);return[N>>16&255,N>>8&255,N&255]},k=I(_),B=I(E),D=X=>Math.round(k[X]+(B[X]-k[X])*F);return`#${[D(0),D(1),D(2)].map(X=>X.toString(16).padStart(2,"0")).join("")}`}function b(_,E){let F=_.trim().replace(/^#/,"");return/^[0-9a-f]{3}$/i.test(F)&&(F=F.split("").map(I=>I+I).join("")),/^[0-9a-f]{6}$/i.test(F)?`#${F.toLowerCase()}`:E}return(_,E)=>(z(),J("div",_4,[T("div",{ref_key:"bar",ref:n,class:"gradient-bar",style:Vt({background:l.value}),title:"双击色带添加色标",onDblclick:v},[(z(!0),J(Ce,null,Ft(i.modelValue,(F,I)=>(z(),J("button",{key:I,type:"button",class:Ae(["gradient-stop",{selected:I===r.value}]),style:Vt({left:`${c(F.position)*100}%`,"--stop-color":F.color}),title:`${Math.round(c(F.position)*100)}% · ${F.color}`,onClick:Ke(k=>r.value=I,["stop"]),onDblclick:Ke(k=>x(I),["stop"]),onPointerdown:Ke(k=>M(k,I),["stop"])},null,46,C4))),128))],36),o.value?(z(),J("div",A4,[T("input",{type:"color",class:"gradient-color",value:o.value.color,"aria-label":"色标颜色",onInput:d},null,40,E4),T("input",{type:"text",class:"gradient-hex-input",value:o.value.color,"aria-label":"色标颜色值",spellcheck:"false",onChange:f,onKeydown:yr(p,["enter"])},null,40,I4),T("label",R4,[T("input",{type:"number",min:"0",max:"100",step:"1",value:Math.round(c(o.value.position)*100),"aria-label":"色标位置",onInput:m},null,40,P4),E[1]||(E[1]=T("span",null,"%",-1))]),T("button",{type:"button",class:"gradient-action",title:"在中间新增颜色",onClick:y},"+"),T("button",{type:"button",class:"gradient-action danger",title:"删除当前色标",disabled:i.modelValue.length<=2,onClick:E[0]||(E[0]=F=>x(r.value))},"×",8,k4)])):xe("",!0),E[2]||(E[2]=T("div",{class:"gradient-hint"},"双击色带新增 · 拖动色标调整位置 · 双击色标删除",-1))]))}}),$S=Jt(F4,[["__scopeId","data-v-f6ab10bf"]]),O4={class:"pivot-toolbar"},L4={class:"pivot-zoom"},B4=["disabled"],N4=["disabled"],D4=["src"],U4={key:2,class:"pivot-empty"},$4={class:"pivot-bottom"},X4={class:"pivot-card"},V4={class:"pivot-presets"},Y4=["title","aria-label","onClick"],G4={class:"pivot-card"},j4={class:"pivot-coords"},H4=["value"],W4=["value"],z4={class:"pivot-card-head pivot-rotate-head"},q4={class:"pivot-rotate-state"},K4={class:"pivot-rotate-body"},Z4={class:"pivot-rotate-modes"},J4={class:"pivot-rotate-preview"},Q4=["src"],vf=1e3,e5=Zt({__name:"PivotEditor",props:{previewUrl:{},anchorX:{},anchorY:{},large:{type:Boolean,default:!1}},emits:["update:anchorX","update:anchorY","fullscreen"],setup(i,{emit:e}){const t=i,s=e,n=[{icon:"↖",label:"左上",x:0,y:0},{icon:"↑",label:"正上",x:50,y:0},{icon:"↗",label:"右上",x:100,y:0},{icon:"←",label:"正左",x:0,y:50},{icon:"◯",label:"正中",x:50,y:50},{icon:"→",label:"正右",x:100,y:50},{icon:"↙",label:"左下",x:0,y:100},{icon:"↓",label:"正下·底部",x:50,y:100},{icon:"↘",label:"右下",x:100,y:100}],r=Fe(null),o=Fe(null),a=Fe({w:0,h:0}),l=Fe({w:1,h:1}),c=Fe(100),h=Fe({x:0,y:0}),u=Fe(!1),d=Fe("static");let f=null;const p=U=>Math.min(vf,Math.max(-vf,Number.isFinite(U)?U:0)),m=De(()=>p(t.anchorX*100).toFixed(1)),g=De(()=>p(t.anchorY*100).toFixed(1));function v(U,A){const P=l.value.w/Math.max(1,l.value.h);let O=U,L=O/P;return L>A&&(L=A,O=L*P),{w:Math.max(1,O),h:Math.max(1,L)}}const y=De(()=>{const U=t.large?26:12,A=Math.max(1,a.value.w-U*2),P=Math.max(1,a.value.h-U*2);return v(A,P)}),x=De(()=>({width:`${y.value.w}px`,height:`${y.value.h}px`,transform:`translate(${h.value.x}px, ${h.value.y}px) scale(${c.value/100})`})),M=De(()=>{const U=c.value/100;return{x:a.value.w/2+h.value.x+(p(t.anchorX*100)/100-.5)*y.value.w*U,y:a.value.h/2+h.value.y+(p(t.anchorY*100)/100-.5)*y.value.h*U}}),C=De(()=>{const U=t.large?128:72,A=v(U,U);return{width:`${A.w}px`,height:`${A.h}px`,transformOrigin:`${p(t.anchorX*100)}% ${p(t.anchorY*100)}%`}});function w(U,A){const P=vf/100;s("update:anchorX",Math.min(P,Math.max(-P,Number.isFinite(U)?U:0))),s("update:anchorY",Math.min(P,Math.max(-P,Number.isFinite(A)?A:0)))}function b(U){const A=o.value;if(!A)return;const P=A.getBoundingClientRect();P.width<=0||P.height<=0||w((U.clientX-P.left)/P.width,(U.clientY-P.top)/P.height)}function _(U){if(!t.previewUrl)return;if(U.button===2){E(U);return}if(U.button!==0)return;U.preventDefault(),b(U);const A=O=>b(O),P=()=>{window.removeEventListener("pointermove",A),window.removeEventListener("pointerup",P),window.removeEventListener("pointercancel",P)};window.addEventListener("pointermove",A),window.addEventListener("pointerup",P),window.addEventListener("pointercancel",P)}function E(U){U.preventDefault(),u.value=!0;const A=U.clientX,P=U.clientY,O=h.value.x,L=h.value.y,$=j=>{h.value={x:O+j.clientX-A,y:L+j.clientY-P}},V=()=>{u.value=!1,window.removeEventListener("pointermove",$),window.removeEventListener("pointerup",V),window.removeEventListener("pointercancel",V)};window.addEventListener("pointermove",$),window.addEventListener("pointerup",V),window.addEventListener("pointercancel",V)}function F(U){const A=U.deltaY<0?1.12:.8928571428571428,P=Math.min(400,Math.max(100,Math.round(c.value*A)));if(P===c.value)return;const O=r.value;if(!O){c.value=P;return}const L=O.getBoundingClientRect(),$=U.clientX-L.left,V=U.clientY-L.top,j=P/c.value;h.value={x:h.value.x+($-L.width/2-h.value.x)*(1-j),y:h.value.y+(V-L.height/2-h.value.y)*(1-j)},c.value=P}function I(U){const A=U.target;l.value={w:A.naturalWidth||1,h:A.naturalHeight||1}}function k(U){c.value=Math.min(400,Math.max(100,c.value+U))}function B(){w(.5,.5)}function D(U){w(U.x/100,U.y/100)}function X(U){return Math.abs(p(t.anchorX*100)-U.x)<.05&&Math.abs(p(t.anchorY*100)-U.y)<.05}function N(U,A){const P=p(Number(A.target.value));s(U==="x"?"update:anchorX":"update:anchorY",P/100)}return cs(()=>t.previewUrl,()=>{l.value={w:1,h:1},h.value={x:0,y:0},c.value=100}),Oi(()=>{r.value&&(f=new ResizeObserver(U=>{var P;const A=(P=U[0])==null?void 0:P.contentRect;A&&(a.value={w:A.width,h:A.height})}),f.observe(r.value))}),po(()=>{f==null||f.disconnect(),f=null}),(U,A)=>(z(),J("div",{class:Ae(["pivot-editor",{"pivot-large":i.large}])},[T("div",O4,[A[9]||(A[9]=T("div",{class:"pivot-hint"},[T("span",{class:"pivot-hint-icon"},"⊕"),T("span",null,"贴图轴点")],-1)),T("div",L4,[T("button",{type:"button",disabled:c.value<=100,title:"缩小",onClick:A[0]||(A[0]=P=>k(-25))},"−",8,B4),T("span",null,ye(c.value)+"%",1),T("button",{type:"button",disabled:c.value>=400,title:"放大",onClick:A[1]||(A[1]=P=>k(25))},"+",8,N4)]),i.large?xe("",!0):(z(),J("button",{key:0,type:"button",class:"pivot-expand",title:"放大到全屏操作",onClick:A[2]||(A[2]=P=>U.$emit("fullscreen"))},"⤢"))]),T("div",{ref_key:"stageRef",ref:r,class:Ae(["pivot-stage",{panning:u.value}]),title:"左键点击/拖动设置轴点 · 右键拖动画布 · 滚轮缩放",onPointerdown:_,onWheel:Ke(F,["prevent"]),onContextmenu:A[3]||(A[3]=Ke(()=>{},["prevent"]))},[i.previewUrl?(z(),J("div",{key:0,ref_key:"boxRef",ref:o,class:"pivot-box",style:Vt(x.value)},[T("img",{src:i.previewUrl,alt:"轴点预览",draggable:"false",onLoad:I},null,40,D4)],4)):xe("",!0),i.previewUrl?(z(),J(Ce,{key:1},[T("div",{class:"pivot-cross vertical",style:Vt({left:`${M.value.x}px`})},null,4),T("div",{class:"pivot-cross horizontal",style:Vt({top:`${M.value.y}px`})},null,4),T("div",{class:"pivot-marker",style:Vt({left:`${M.value.x}px`,top:`${M.value.y}px`})},null,4),T("div",{class:"pivot-badge",style:Vt({left:`${M.value.x}px`,top:`${M.value.y}px`})},"X: "+ye(m.value)+"% | Y: "+ye(g.value)+"%",5)],64)):(z(),J("div",U4,"未选择图片"))],34),T("div",$4,[T("div",X4,[T("div",V4,[(z(),J(Ce,null,Ft(n,P=>T("button",{key:P.label,type:"button",class:Ae(["pivot-preset",{on:X(P)}]),title:`${P.label}(${P.x}%, ${P.y}%)`,"aria-label":P.label,onClick:O=>D(P)},ye(P.icon),11,Y4)),64))]),T("button",{type:"button",class:"pivot-reset",onClick:B},"↺ 复位居中 (50%, 50%)")]),T("div",G4,[A[15]||(A[15]=T("div",{class:"pivot-card-head"},[T("span",null,[T("span",{class:"pivot-card-icon"},"◎"),gt(" 轴点坐标(%)")])],-1)),T("div",j4,[T("label",null,[A[10]||(A[10]=gt("X: ",-1)),T("input",{type:"number",min:"-1000",max:"1000",step:"0.1",value:m.value,onInput:A[4]||(A[4]=P=>N("x",P))},null,40,H4),A[11]||(A[11]=T("span",null,"%",-1))]),T("label",null,[A[12]||(A[12]=gt("Y: ",-1)),T("input",{type:"number",min:"-1000",max:"1000",step:"0.1",value:g.value,onInput:A[5]||(A[5]=P=>N("y",P))},null,40,W4),A[13]||(A[13]=T("span",null,"%",-1))])]),i.large?(z(),J(Ce,{key:0},[T("div",z4,[A[14]||(A[14]=T("span",null,[T("span",{class:"pivot-card-icon"},"✥"),gt(" 轴心旋转测试")],-1)),T("span",q4,ye(d.value==="static"?"静止":d.value==="spin"?"自转":"摆动"),1)]),T("div",K4,[T("div",Z4,[T("button",{type:"button",class:Ae({on:d.value==="static"}),onClick:A[6]||(A[6]=P=>d.value="static")},"静止",2),T("button",{type:"button",class:Ae({on:d.value==="spin"}),onClick:A[7]||(A[7]=P=>d.value="spin")},"↻ 自转",2),T("button",{type:"button",class:Ae({on:d.value==="swing"}),onClick:A[8]||(A[8]=P=>d.value="swing")},"⇄ 摆动",2)]),T("div",J4,[i.previewUrl?(z(),J("img",{key:0,src:i.previewUrl,alt:"旋转测试",draggable:"false",class:Ae(d.value),style:Vt(C.value)},null,14,Q4)):xe("",!0)])])],64)):xe("",!0)])])],2))}}),_y=Jt(e5,[["__scopeId","data-v-1261b03a"]]),t5={class:"image-card"},s5={class:"imgrow"},i5=["title"],n5=["src","alt"],r5={key:1,viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"#8a93bb","stroke-width":"1.6"},o5={class:"img-fields"},a5={key:0,class:"row"},l5={class:"row"},c5=["placeholder"],h5={class:"img-actions"},u5=["title"],d5=["disabled"],f5={class:"thumb-note"},m5={key:0,class:"row"},p5={class:"row"},g5={class:"row"},v5={class:"sequence-note"},y5={class:"resource-weight-row"},x5=["disabled","title"],b5={key:0,viewBox:"0 0 24 24","aria-hidden":"true"},w5={key:1,viewBox:"0 0 24 24","aria-hidden":"true"},S5={key:2,class:"pivot-toggle-row"},M5={class:"pivot-toggle-text"},T5=["title"],_5=["title"],C5={class:"pivot-modal",role:"dialog","aria-modal":"true","aria-label":"贴图旋转轴点大图精修"},A5={class:"pivot-modal-head"},E5={class:"pivot-modal-info"},I5={class:"pivot-modal-title"},R5={class:"pivot-modal-badge"},P5={class:"pivot-modal-actions"},Cy="SpineParticle.PivotPanels.v1",k5=Zt({__name:"ImageResourceCard",props:{resource:{},resourceCount:{},defaultFile:{},namePlaceholder:{default:"particle"},showFolder:{type:Boolean,default:!0},supportsSequence:{type:Boolean,default:!1},pivotKey:{}},emits:["pick","pickSequence","reset","remove","updateWeight","toggleLock"],setup(i,{emit:e}){const t=i,s=e,n=De(()=>{var _,E;if(t.resource.imageMode==="sequence"){const F=t.resource.sequenceFrames||[];if(!F.length)return"未选择序列帧";const I=((_=F[0])==null?void 0:_.name)||"第 1 帧",k=((E=F[F.length-1])==null?void 0:E.name)||I;return F.length===1?`1 帧 · ${I}`:`${F.length} 帧 · ${I} → ${k}`}const b=t.resource.textureName||t.defaultFile.replace(/\.[^.]+$/,"");return b.includes(".")?b:`${b}.png`}),r=De(()=>{var b,_;return t.resource.imageMode==="sequence"?((_=(b=t.resource.sequenceFrames)==null?void 0:b[0])==null?void 0:_.previewUrl)||"":t.resource.previewUrl});function o(){try{const b=JSON.parse(sessionStorage.getItem(Cy)||"{}");return b&&typeof b=="object"?b:{}}catch{return{}}}const a=o(),l=De(()=>t.pivotKey||`particle-image:${t.resource.id}`),c=De(()=>typeof t.resource.anchorX=="number"&&typeof t.resource.anchorY=="number"),h=De(()=>Math.abs((t.resource.anchorX??.5)-.5)<1e-4&&Math.abs((t.resource.anchorY??.5)-.5)<1e-4),u=typeof a[l.value]=="boolean",d=Fe(u?a[l.value]:!h.value);cs(d,b=>{a[l.value]=b;try{sessionStorage.setItem(Cy,JSON.stringify(a))}catch{}}),cs(l,b=>{d.value=typeof a[b]=="boolean"?a[b]:!h.value}),cs(()=>h.value,b=>{b||(d.value=!0)},{immediate:!0});const f=Fe(!1),p=Fe(.5),m=Fe(.5),g=De(()=>{const b=((t.resource.anchorX??.5)*100).toFixed(1),_=((t.resource.anchorY??.5)*100).toFixed(1);return d.value?`已开启:X ${b}% | Y ${_}%`:h.value?"未开启,默认围绕图片正中心 (50%, 50%)":`轴点已自定义:X ${b}% | Y ${_}%`});function v(){p.value=t.resource.anchorX??.5,m.value=t.resource.anchorY??.5,f.value=!0}function y(){d.value||(t.resource.anchorX=.5,t.resource.anchorY=.5,f.value=!1)}function x(b){b&&(t.resource.anchorX=p.value,t.resource.anchorY=m.value),f.value=!1}function M(b){b.key==="Escape"&&f.value&&x(!1)}Oi(()=>window.addEventListener("keydown",M)),po(()=>window.removeEventListener("keydown",M));const C=De(()=>{var F,I;const b=t.resource.sequenceFrames||[];if(!b.length)return"未选择序列帧";const _=((F=b[0])==null?void 0:F.name)||"第一张图片",E=((I=b[b.length-1])==null?void 0:I.name)||"最后一张图片";return`已选择 ${b.length} 帧,按 ${_}-${E} 顺序播放`});function w(){t.supportsSequence&&t.resource.imageMode==="sequence"?s("pickSequence",t.resource.id):s("pick",t.resource.id)}return(b,_)=>(z(),J(Ce,null,[T("div",t5,[T("div",s5,[T("button",{class:"img-thumb",title:i.supportsSequence&&i.resource.imageMode==="sequence"?"选择序列帧图片":"选择本地图片",onClick:w},[r.value?(z(),J("img",{key:0,src:r.value,alt:i.resource.textureName},null,8,n5)):(z(),J("svg",r5,[..._[19]||(_[19]=[T("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"},null,-1),T("circle",{cx:"8.5",cy:"8.5",r:"1.6"},null,-1),T("path",{d:"M21 15l-5-5-9 9"},null,-1)])]))],8,i5),T("div",o5,[i.showFolder?(z(),J("label",a5,[_[20]||(_[20]=T("span",null,"子文件夹",-1)),ce(T("input",{"onUpdate:modelValue":_[0]||(_[0]=E=>i.resource.textureFolder=E),type:"text",class:"inp",placeholder:"subfolder/"},null,512),[[je,i.resource.textureFolder]])])):xe("",!0),T("label",l5,[_[21]||(_[21]=T("span",null,"名称",-1)),ce(T("input",{"onUpdate:modelValue":_[1]||(_[1]=E=>i.resource.textureName=E),type:"text",class:"inp",placeholder:i.namePlaceholder},null,8,c5),[[je,i.resource.textureName]])])]),T("div",h5,[T("button",{class:"mini-btn2",title:`恢复 ${i.defaultFile}`,onClick:_[2]||(_[2]=E=>b.$emit("reset",i.resource.id))},"⟳",8,u5),T("button",{class:"mini-btn2",title:"删除图片资源",disabled:i.resourceCount===1,onClick:_[3]||(_[3]=E=>b.$emit("remove",i.resource.id))},"🗑",8,d5)])]),T("div",f5,ye(n.value),1),i.supportsSequence?(z(),J("label",m5,[_[23]||(_[23]=T("span",null,"图片模式",-1)),ce(T("select",{"onUpdate:modelValue":_[4]||(_[4]=E=>i.resource.imageMode=E),class:"inp"},[..._[22]||(_[22]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"sequence"},"序列帧",-1)])],512),[[_t,i.resource.imageMode]])])):xe("",!0),i.supportsSequence&&i.resource.imageMode==="sequence"?(z(),J(Ce,{key:1},[T("label",p5,[_[25]||(_[25]=T("span",null,"播放模式",-1)),ce(T("select",{"onUpdate:modelValue":_[5]||(_[5]=E=>i.resource.sequencePlayback=E),class:"inp"},[..._[24]||(_[24]=[T("option",{value:"once-hide"},"单次-尾帧消失",-1),T("option",{value:"once-hold"},"单次-尾帧固定",-1),T("option",{value:"loop-forward"},"正向循环",-1),T("option",{value:"loop-reverse"},"反向循环",-1)])],512),[[_t,i.resource.sequencePlayback]])]),T("label",g5,[_[26]||(_[26]=T("span",null,"播放帧率",-1)),ce(T("input",{"onUpdate:modelValue":_[6]||(_[6]=E=>i.resource.sequenceFps=E),type:"number",min:"1",max:"120",step:"1",class:"inp"},null,512),[[je,i.resource.sequenceFps,void 0,{number:!0}]])]),T("button",{class:"sequence-pick",onClick:_[7]||(_[7]=E=>b.$emit("pickSequence",i.resource.id))},"选择序列帧(多选)"),T("div",v5,ye(C.value),1)],64)):xe("",!0),T("div",y5,[be(Oe,{class:"resource-weight-control",label:"占比%",min:0,max:100,step:1,"model-value":i.resource.weight,disabled:i.resource.locked||i.resourceCount===1,"onUpdate:modelValue":_[8]||(_[8]=E=>b.$emit("updateWeight",i.resource.id,E))},null,8,["model-value","disabled"]),T("button",{class:Ae(["weight-lock",{on:i.resource.locked}]),disabled:i.resourceCount===1,title:i.resource.locked?"解除占比锁定":"锁定当前占比",onClick:_[9]||(_[9]=E=>b.$emit("toggleLock",i.resource.id))},[i.resource.locked?(z(),J("svg",b5,[..._[27]||(_[27]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"},null,-1)])])):(z(),J("svg",w5,[..._[28]||(_[28]=[T("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"},null,-1),T("path",{d:"M16 10V7a4 4 0 0 0-7.5-2"},null,-1)])]))],10,x5)]),dT(b.$slots,"default",{},void 0),c.value?(z(),J("div",S5,[_[31]||(_[31]=T("div",{class:"pivot-toggle-icon"},"◎",-1)),T("div",M5,[_[29]||(_[29]=T("div",{class:"pivot-toggle-title"},"贴图轴点",-1)),T("div",{class:"pivot-toggle-sub",title:g.value},ye(g.value),9,T5)]),T("label",{class:"pivot-switch",title:d.value?"收起轴点调整":"展开轴点调整"},[ce(T("input",{"onUpdate:modelValue":_[10]||(_[10]=E=>d.value=E),type:"checkbox",onChange:y},null,544),[[yt,d.value]]),_[30]||(_[30]=T("span",{class:"pivot-switch-ui"},null,-1))],8,_5)])):xe("",!0),c.value&&d.value?(z(),At(_y,{key:3,"preview-url":r.value,"anchor-x":i.resource.anchorX??.5,"anchor-y":i.resource.anchorY??.5,"onUpdate:anchorX":_[11]||(_[11]=E=>i.resource.anchorX=E),"onUpdate:anchorY":_[12]||(_[12]=E=>i.resource.anchorY=E),onFullscreen:v},null,8,["preview-url","anchor-x","anchor-y"])):xe("",!0)]),(z(),At(ZM,{to:"body"},[f.value?(z(),J("div",{key:0,class:"pivot-modal-backdrop",onPointerdown:_[18]||(_[18]=Ke(E=>x(!1),["self"]))},[T("div",C5,[T("div",A5,[_[34]||(_[34]=T("div",{class:"pivot-modal-icon"},"◎",-1)),T("div",E5,[T("div",I5,[_[32]||(_[32]=gt(" 贴图旋转轴点大图精修 ",-1)),T("span",R5,ye(i.resource.textureName||i.defaultFile),1)]),_[33]||(_[33]=T("div",{class:"pivot-modal-desc"},"在下方贴图上任意点击或拖拽,精确设置粒子的旋转/摆动中心",-1))]),T("button",{type:"button",class:"pivot-modal-close",title:"关闭",onClick:_[13]||(_[13]=E=>x(!1))},"✕")]),_[35]||(_[35]=T("div",{class:"pivot-modal-hint"},"支持 100% ~ 400% 放大,精确对准尖端或根部:",-1)),be(_y,{large:"","preview-url":r.value,"anchor-x":p.value,"anchor-y":m.value,"onUpdate:anchorX":_[14]||(_[14]=E=>p.value=E),"onUpdate:anchorY":_[15]||(_[15]=E=>m.value=E)},null,8,["preview-url","anchor-x","anchor-y"]),T("div",P5,[T("button",{type:"button",class:"pivot-modal-cancel",onClick:_[16]||(_[16]=E=>x(!1))},"取消"),T("button",{type:"button",class:"pivot-modal-confirm",onClick:_[17]||(_[17]=E=>x(!0))},"确定并保存轴点")])])],32)):xe("",!0)]))],64))}}),XS=Jt(k5,[["__scopeId","data-v-cb3a8e2c"]]),F5={class:"group"},O5={class:"caret"},L5={class:"group-body"},B5={class:"seg"},N5={class:"row"},D5={class:"curve-wrap"},U5={class:"seg"},$5={class:"row"},X5=["value"],V5={value:0},Y5=["value"],G5={class:"render-layer-current"},j5=["title"],H5={key:0,class:"slot-picker"},W5={class:"slot-list"},z5=["onClick"],q5={class:"slot-order"},K5={class:"slot-name"},Z5={class:"slot-attachment"},J5={key:0,class:"modifier-hint"},Q5={class:"seg"},e8={class:"switch-row render-layer-switch"},t8=["disabled"],s8={key:0,class:"modifier-hint"},i8={key:2,class:"modifier-hint render-layer-warning"},n8={class:"look-title image-title"},r8={class:"row resource-color-row"},o8=["onUpdate:modelValue"],a8=["onUpdate:modelValue"],l8={key:0,class:"row resource-color-picker"},c8=["onUpdate:modelValue"],h8=["value","onChange","onKeydown"],u8={key:0,class:"random-color-hint"},d8={class:"resource-alpha-head"},f8={class:"alpha-modes"},m8=["onClick"],p8=["onClick"],g8=["onClick"],v8={class:"row"},y8=["onUpdate:modelValue"],x8={class:"resource-alpha-curve"},b8=Zt({__name:"ParticleAppearanceSection",setup(i){const{resolvedCurveEditorMode:e,sys:t,textureFileInput:s,sequenceFileInput:n,addImageResource:r,openTexturePicker:o,openSequencePicker:a,onTextureFile:l,onSequenceFiles:c,resetTexture:h,setResourceFixedColor:u,commitResourceFixedColor:d,removeImageResource:f,setResourceWeight:p,toggleResourceLock:m,collapsed:g,toggle:v,resetModule:y,select:x,renderLayerSlotPickerOpen:M,renderLayerSlotSearch:C,renderLayerReadySpines:w,renderLayerSpineReady:b,renderLayerFilteredSlots:_,renderLayerSlotLabel:E,renderLayerResolvedLabel:F,renderLayerWarning:I,setRenderLayerSlotMode:k,selectRenderLayerSpine:B,pickRenderLayerSlot:D,clearRenderLayerSlot:X,ALPHA_CURVE:N,RESOURCE_ALPHA_CURVE:U}=Ar();return(A,P)=>(z(),J("div",F5,[T("div",{class:"group-head",onClick:P[1]||(P[1]=O=>R(v)("look"))},[T("span",O5,ye(R(g).look?"▸":"▾"),1),P[19]||(P[19]=T("span",null,"外观与资源",-1)),T("button",{class:"group-reset",title:"重置外观与资源参数",onClick:P[0]||(P[0]=Ke(O=>R(y)("look"),["stop"]))},"重置")]),ce(T("div",L5,[P[36]||(P[36]=T("div",{class:"look-title"},"透明度",-1)),T("div",B5,[T("button",{class:Ae(["seg-btn",{active:R(t).config.alphaMode==="curve"}]),onClick:P[2]||(P[2]=O=>R(t).config.alphaMode="curve")},"曲线",2),T("button",{class:Ae(["seg-btn",{active:R(t).config.alphaMode==="fixed"}]),onClick:P[3]||(P[3]=O=>R(t).config.alphaMode="fixed")},"固定",2)]),R(t).config.alphaMode==="fixed"?(z(),At(Oe,{key:0,label:"透明度",min:0,max:1,step:.01,modelValue:R(t).config.alpha,"onUpdate:modelValue":P[4]||(P[4]=O=>R(t).config.alpha=O)},null,8,["modelValue"])):(z(),J(Ce,{key:1},[T("label",N5,[P[21]||(P[21]=T("span",null,"曲线模式",-1)),ce(T("select",{"onUpdate:modelValue":P[5]||(P[5]=O=>R(t).config.curveMode=O),class:"inp"},[...P[20]||(P[20]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],512),[[_t,R(t).config.curveMode]])]),T("div",D5,[be(Ji,{modelValue:R(t).config.alphaCurve,"onUpdate:modelValue":P[6]||(P[6]=O=>R(t).config.alphaCurve=O),"default-value":R(N),mode:R(e)(R(t).config.curveMode)},null,8,["modelValue","default-value","mode"]),P[22]||(P[22]=T("div",{class:"curve-labels"},[T("span",null,"0(透明)"),T("span",null,"生命周期 →"),T("span",null,"1(不透明)")],-1))])],64)),P[37]||(P[37]=T("div",{class:"look-title"},"渲染层级(Spine 插槽)",-1)),T("div",U5,[T("button",{class:Ae(["seg-btn",{active:R(t).config.renderLayerMode==="top"}]),onClick:P[7]||(P[7]=O=>R(t).config.renderLayerMode="top")},"最上层",2),T("button",{class:Ae(["seg-btn",{active:R(t).config.renderLayerMode==="slot"}]),onClick:P[8]||(P[8]=(...O)=>R(k)&&R(k)(...O))},"Spine 插槽",2)]),R(t).config.renderLayerMode==="slot"?(z(),J(Ce,{key:2},[T("label",$5,[P[23]||(P[23]=T("span",null,"Spine",-1)),T("select",{class:"inp",value:R(t).config.renderLayerSpineId,onChange:P[9]||(P[9]=(...O)=>R(B)&&R(B)(...O))},[T("option",V5,ye(R(w).length?"请选择 Spine":"无可用 Spine"),1),(z(!0),J(Ce,null,Ft(R(w),O=>(z(),J("option",{key:O.id,value:O.id},ye(O.name),9,Y5))),128))],40,X5)]),R(b)?(z(),J(Ce,{key:0},[T("div",G5,[T("span",{class:"render-layer-text",title:R(E)},ye(R(E)||"尚未选择插槽"),9,j5),T("button",{class:"mini-btn",onClick:P[10]||(P[10]=O=>M.value=!R(M))},ye(R(E)?"重新选择":"选择插槽"),1),R(t).config.renderLayerSlotName?(z(),J("button",{key:0,class:"mini-btn ghost",onClick:P[11]||(P[11]=(...O)=>R(X)&&R(X)(...O))},"清除")):xe("",!0)]),R(M)?(z(),J("div",H5,[ce(T("input",{"onUpdate:modelValue":P[12]||(P[12]=O=>Gt(C)?C.value=O:null),class:"inp",type:"search",placeholder:"搜索插槽或附件名称…","aria-label":"搜索插槽"},null,512),[[je,R(C),void 0,{trim:!0}]]),T("div",W5,[(z(!0),J(Ce,null,Ft(R(_),O=>(z(),J("button",{key:O.name,class:Ae(["slot-item",{on:R(t).config.renderLayerSlotName===O.name}]),onClick:L=>R(D)(O)},[T("span",q5,ye(O.order+1),1),T("span",K5,ye(O.name),1),T("span",Z5,ye(O.attachment||"空插槽"),1)],10,z5))),128)),R(_).length?xe("",!0):(z(),J("div",J5,"没有匹配的插槽"))])])):xe("",!0),R(t).config.renderLayerSlotName?(z(),J(Ce,{key:1},[T("div",Q5,[T("button",{class:Ae(["seg-btn",{active:R(t).config.renderLayerSlotPosition==="above"}]),onClick:P[13]||(P[13]=O=>R(t).config.renderLayerSlotPosition="above")},"在此插槽图片之上",2),T("button",{class:Ae(["seg-btn",{active:R(t).config.renderLayerSlotPosition==="below"}]),onClick:P[14]||(P[14]=O=>R(t).config.renderLayerSlotPosition="below")},"在此插槽图片之下",2)]),T("label",e8,[ce(T("input",{"onUpdate:modelValue":P[15]||(P[15]=O=>R(t).config.renderLayerFollowAttachment=O),type:"checkbox",disabled:R(t).config.renderLayerSlotPosition==="below"},null,8,t8),[[yt,R(t).config.renderLayerFollowAttachment]]),P[24]||(P[24]=T("span",{class:"switch-ui"},null,-1)),P[25]||(P[25]=T("span",null,"随插槽附件显隐",-1))]),R(F)?(z(),J("div",s8,ye(R(F)),1)):xe("",!0)],64)):xe("",!0),R(I)?(z(),J("div",i8,ye(R(I)),1)):xe("",!0),P[26]||(P[26]=T("div",{class:"modifier-hint"},"调整显示层级只影响编辑器预览,不影响导出数据。",-1))],64)):xe("",!0)],64)):xe("",!0),T("div",n8,[P[27]||(P[27]=T("span",null,"图片资源",-1)),T("button",{class:"image-add",title:"新增图片资源",onClick:P[16]||(P[16]=(...O)=>R(r)&&R(r)(...O))},"+")]),(z(!0),J(Ce,null,Ft(R(t).config.imageResources,O=>(z(),At(XS,{key:`${R(t).id}:${O.id}`,resource:O,"resource-count":R(t).config.imageResources.length,"pivot-key":`${R(t).id}:${O.id}`,"supports-sequence":"","default-file":"star.png",onPick:R(o),onPickSequence:R(a),onReset:R(h),onRemove:R(f),onUpdateWeight:R(p),onToggleLock:R(m)},{default:qh(()=>[be(Oe,{label:"缩放",min:.1,max:3,step:.05,modelValue:O.scale,"onUpdate:modelValue":L=>O.scale=L},null,8,["modelValue","onUpdate:modelValue"]),P[35]||(P[35]=T("div",{class:"resource-divider"},null,-1)),T("label",r8,[P[30]||(P[30]=T("span",null,"颜色",-1)),ce(T("select",{"onUpdate:modelValue":L=>O.colorMode=L,class:"inp"},[...P[28]||(P[28]=[T("option",{value:"fixed"},"固定色",-1),T("option",{value:"random"},"随机颜色",-1),T("option",{value:"lifetime"},"生命周期",-1)])],8,o8),[[_t,O.colorMode]]),ce(T("select",{"onUpdate:modelValue":L=>O.blend=L,class:"inp blend-select"},[...P[29]||(P[29]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,a8),[[_t,O.blend]])]),O.colorMode==="fixed"?(z(),J("label",l8,[P[31]||(P[31]=T("span",null,"固定色",-1)),ce(T("input",{type:"color","onUpdate:modelValue":L=>O.colorStart=L,class:"colr"},null,8,c8),[[je,O.colorStart]]),T("input",{type:"text",class:"hex-input",value:O.colorStart,spellcheck:"false","aria-label":"固定颜色值",onChange:L=>R(u)(O,L),onKeydown:yr(L=>R(d)(O,L),["enter"])},null,40,h8)])):(z(),J(Ce,{key:1},[be($S,{modelValue:O.colorGradient,"onUpdate:modelValue":L=>O.colorGradient=L},null,8,["modelValue","onUpdate:modelValue"]),O.colorMode==="random"?(z(),J("div",u8,"每个粒子出生时从色带随机取色,生命周期内保持不变")):xe("",!0)],64)),T("div",d8,[P[32]||(P[32]=T("span",null,"独立透明度",-1)),T("div",f8,[T("button",{class:Ae({on:O.independentAlpha==="off"}),onClick:L=>O.independentAlpha="off"},"关闭",10,m8),T("button",{class:Ae({on:O.independentAlpha==="fixed"}),onClick:L=>O.independentAlpha="fixed"},"固定",10,p8),T("button",{class:Ae({on:O.independentAlpha==="curve"}),onClick:L=>O.independentAlpha="curve"},"曲线",10,g8)])]),O.independentAlpha==="fixed"?(z(),At(Oe,{key:2,label:"透明度",min:0,max:1,step:.01,modelValue:O.alpha,"onUpdate:modelValue":L=>O.alpha=L},null,8,["modelValue","onUpdate:modelValue"])):O.independentAlpha==="curve"?(z(),J(Ce,{key:3},[T("label",v8,[P[34]||(P[34]=T("span",null,"曲线模式",-1)),ce(T("select",{"onUpdate:modelValue":L=>O.alphaCurveMode=L,class:"inp"},[...P[33]||(P[33]=[T("option",null,"跟随导出",-1),T("option",null,"线性",-1),T("option",null,"贝塞尔",-1)])],8,y8),[[_t,O.alphaCurveMode]])]),T("div",x8,[be(Ji,{modelValue:O.alphaCurve,"onUpdate:modelValue":L=>O.alphaCurve=L,"default-value":R(U),mode:R(e)(O.alphaCurveMode)},null,8,["modelValue","onUpdate:modelValue","default-value","mode"])])],64)):xe("",!0)]),_:2},1032,["resource","resource-count","pivot-key","onPick","onPickSequence","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"textureFileInput",ref:s,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:P[17]||(P[17]=(...O)=>R(l)&&R(l)(...O))},null,544),T("input",{ref_key:"sequenceFileInput",ref:n,class:"file-input",type:"file",multiple:"",accept:"image/png,image/jpeg,image/webp,image/gif",onChange:P[18]||(P[18]=(...O)=>R(c)&&R(c)(...O))},null,544)],512),[[Ss,!R(g).look]])]))}}),w8=Jt(b8,[["__scopeId","data-v-5709815f"]]),S8={class:"group"},M8={class:"caret"},T8={class:"group-body"},_8={class:"modifier-item"},C8={class:"switch-row modifier-switch"},A8={key:0,class:"modifier-params"},E8={class:"modifier-item"},I8={class:"switch-row modifier-switch"},R8={key:0,class:"modifier-params gravity-params"},P8={class:"modifier-mode-row"},k8={class:"modifier-item"},F8={class:"switch-row modifier-switch"},O8={key:0,class:"modifier-params gravity-params"},L8={class:"modifier-mode-row"},B8={class:"modifier-item"},N8={class:"switch-row modifier-switch"},D8={key:0,class:"modifier-params"},U8={class:"row"},$8={class:"switch-row"},X8={class:"modifier-item"},V8={class:"switch-row modifier-switch"},Y8={key:0,class:"modifier-params"},G8={class:"row"},j8={class:"switch-row"},H8={class:"modifier-item"},W8={class:"switch-row modifier-switch"},z8={key:0,class:"modifier-params"},q8={class:"row"},K8={class:"row"},Z8={class:"switch-row"},J8={class:"modifier-item"},Q8={class:"switch-row modifier-switch"},eU={key:0,class:"modifier-params trail-params"},tU={class:"trail-section-head"},sU={class:"row"},iU=["onUpdate:modelValue"],nU={class:"row"},rU=["onUpdate:modelValue"],oU={class:"row"},aU=["onUpdate:modelValue"],lU={class:"switch-row trail-sub-switch"},cU=["onUpdate:modelValue"],hU={class:"switch-row trail-sub-switch"},uU=["onUpdate:modelValue"],dU={class:"trail-mode-head"},fU={class:"alpha-modes"},mU=["onClick"],pU=["onClick"],gU=["onClick"],vU={class:"row"},yU=["onUpdate:modelValue"],xU={key:6,class:"row trail-fixed-color"},bU=["onUpdate:modelValue"],wU=["value","onChange","onKeydown"],SU={class:"trail-mode-head"},MU={class:"alpha-modes"},TU=["onClick"],_U=["onClick"],CU=["onClick"],AU={class:"trail-grid-row"},EU={class:"modifier-item"},IU={class:"switch-row modifier-switch"},RU=["disabled"],PU={key:0,class:"modifier-params emitter-follow-params"},kU={class:"field-block"},FU=["value"],OU={key:0,value:"bone"},LU={class:"field-block"},BU=["value"],NU={class:"field-block"},DU={class:"field-grid follow-grid"},UU={class:"compact-field"},$U={class:"compact-field"},XU={class:"field-block"},VU={key:0,class:"bone-follow-target"},YU={key:1,class:"bone-follow-missing"},GU={class:"field-block"},jU={class:"field-grid follow-grid"},HU={class:"compact-field"},WU={class:"compact-field"},zU={class:"bone-follow-transform-grid"},qU={class:"compact-field"},KU={class:"compact-field"},ZU={class:"compact-field"},JU={class:"modifier-item"},QU={class:"switch-row modifier-switch"},e$={key:0,class:"modifier-params collision-filter-params"},t$={class:"collision-filter-tags"},s$=["title"],i$=["aria-label","onClick"],n$=["disabled","title"],r$={key:0,class:"collision-filter-empty"},o$={key:1,class:"collision-filter-picker"},a$=["onClick"],l$=Zt({__name:"ParticleModifiersSection",setup(i){const{store:e,sys:t,trailTextureFileInput:s,addTrailResource:n,openTrailTexturePicker:r,onTrailRigChange:o,onTrailResourceBoneCountChange:a,onTrailResourceRotationChange:l,onTrailTextureFile:c,resetTrailTexture:h,removeTrailResource:u,setTrailResourceWeight:d,toggleTrailResourceLock:f,setTrailColor:p,commitTrailColor:m,selectedSpineBone:g,boundSpineBone:v,collisionPickerOpen:y,selectedCollisionBodies:x,availableCollisionBodies:M,addCollisionBody:C,removeCollisionBody:w,collapsed:b,toggle:_,onEmitterFollowModeChange:E,bindSelectedBone:F,resetModule:I,select:k,LINEAR_CURVE:B,FLAT_CURVE:D,TRAIL_ALPHA_CURVE:X,TRAIL_SHAPE_CURVE:N}=Ar();return(U,A)=>(z(),J("div",S8,[T("div",{class:"group-head",onClick:A[1]||(A[1]=P=>R(_)("mods"))},[T("span",M8,ye(R(b).mods?"▸":"▾"),1),A[69]||(A[69]=T("span",null,"修改器",-1)),T("button",{class:"group-reset",title:"重置修改器参数",onClick:A[0]||(A[0]=Ke(P=>R(I)("mods"),["stop"]))},"重置")]),ce(T("div",T8,[T("div",_8,[T("label",C8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[2]||(A[2]=P=>R(t).config.noise=P)},null,512),[[yt,R(t).config.noise]]),A[70]||(A[70]=T("span",{class:"switch-ui"},null,-1)),A[71]||(A[71]=T("span",null,"开启移动噪声",-1))]),R(t).config.noise?(z(),J("div",A8,[be(Oe,{label:"强度",min:0,max:100,step:1,modelValue:R(t).config.noiseAmt,"onUpdate:modelValue":A[3]||(A[3]=P=>R(t).config.noiseAmt=P)},null,8,["modelValue"]),be(Oe,{label:"波动范围",min:0,max:500,step:1,modelValue:R(t).config.noiseRange,"onUpdate:modelValue":A[4]||(A[4]=P=>R(t).config.noiseRange=P)},null,8,["modelValue"]),be(Oe,{label:"时间流速",min:0,max:10,step:.1,modelValue:R(t).config.noiseSpeed,"onUpdate:modelValue":A[5]||(A[5]=P=>R(t).config.noiseSpeed=P)},null,8,["modelValue"]),A[72]||(A[72]=T("div",{class:"modifier-hint"},"强度控制影响比例 · 波动范围控制最大偏移 · 时间流速控制变化速度",-1))])):xe("",!0)]),T("div",E8,[T("label",I8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[6]||(A[6]=P=>R(t).config.useGravity=P)},null,512),[[yt,R(t).config.useGravity]]),A[73]||(A[73]=T("span",{class:"switch-ui"},null,-1)),A[74]||(A[74]=T("span",null,"开启重力",-1))]),R(t).config.useGravity?(z(),J("div",R8,[T("div",P8,[T("button",{class:Ae(["axis-mode",{on:R(t).config.gravityMode==="fixed"}]),onClick:A[7]||(A[7]=P=>R(t).config.gravityMode="fixed")},"固定",2),T("button",{class:Ae(["axis-mode",{on:R(t).config.gravityMode==="random"}]),onClick:A[8]||(A[8]=P=>R(t).config.gravityMode="random")},"随机",2)]),R(t).config.gravityMode==="fixed"?(z(),At(Oe,{key:0,label:"重力强度",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMin,"onUpdate:modelValue":A[9]||(A[9]=P=>R(t).config.gravityMin=P)},null,8,["modelValue"])):(z(),J(Ce,{key:1},[be(Oe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMin,"onUpdate:modelValue":A[10]||(A[10]=P=>R(t).config.gravityMin=P)},null,8,["modelValue"]),be(Oe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:R(t).config.gravityMax,"onUpdate:modelValue":A[11]||(A[11]=P=>R(t).config.gravityMax=P)},null,8,["modelValue"])],64)),be(Oe,{label:"方向",min:-360,max:360,step:1,modelValue:R(t).config.gravityDirection,"onUpdate:modelValue":A[12]||(A[12]=P=>R(t).config.gravityDirection=P)},null,8,["modelValue"]),A[75]||(A[75]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内重力"),T("span",null,"纵轴:强度 0~1")],-1)),be(Ji,{modelValue:R(t).config.gravityCurve,"onUpdate:modelValue":A[13]||(A[13]=P=>R(t).config.gravityCurve=P),"default-value":R(D)},null,8,["modelValue","default-value"]),A[76]||(A[76]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),A[77]||(A[77]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):xe("",!0)]),T("div",k8,[T("label",F8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[14]||(A[14]=P=>R(t).config.wind=P)},null,512),[[yt,R(t).config.wind]]),A[78]||(A[78]=T("span",{class:"switch-ui"},null,-1)),A[79]||(A[79]=T("span",null,"开启风力",-1))]),R(t).config.wind?(z(),J("div",O8,[T("div",L8,[T("button",{class:Ae(["axis-mode",{on:R(t).config.windMode==="fixed"}]),onClick:A[15]||(A[15]=P=>R(t).config.windMode="fixed")},"固定",2),T("button",{class:Ae(["axis-mode",{on:R(t).config.windMode==="random"}]),onClick:A[16]||(A[16]=P=>R(t).config.windMode="random")},"随机",2)]),R(t).config.windMode==="fixed"?(z(),At(Oe,{key:0,label:"风力强度",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMin,"onUpdate:modelValue":A[17]||(A[17]=P=>R(t).config.windMin=P)},null,8,["modelValue"])):(z(),J(Ce,{key:1},[be(Oe,{label:"强度 min",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMin,"onUpdate:modelValue":A[18]||(A[18]=P=>R(t).config.windMin=P)},null,8,["modelValue"]),be(Oe,{label:"强度 max",min:-3e3,max:3e3,step:10,modelValue:R(t).config.windMax,"onUpdate:modelValue":A[19]||(A[19]=P=>R(t).config.windMax=P)},null,8,["modelValue"])],64)),be(Oe,{label:"方向",min:-360,max:360,step:1,modelValue:R(t).config.windDirection,"onUpdate:modelValue":A[20]||(A[20]=P=>R(t).config.windDirection=P)},null,8,["modelValue"]),A[80]||(A[80]=T("div",{class:"gravity-curve-title"},[T("span",null,"生命周期内风力"),T("span",null,"纵轴:强度 0~1")],-1)),be(Ji,{modelValue:R(t).config.windCurve,"onUpdate:modelValue":A[21]||(A[21]=P=>R(t).config.windCurve=P),"default-value":R(D)},null,8,["modelValue","default-value"]),A[81]||(A[81]=T("div",{class:"gravity-curve-axis"},[T("span",null,"0"),T("span",null,"生命周期 →"),T("span",null,"1")],-1)),A[82]||(A[82]=T("div",{class:"modifier-hint"},"0° 向右 · -90° 向下 · 负强度会反转方向",-1))])):xe("",!0)]),T("div",B8,[T("label",N8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[22]||(A[22]=P=>R(t).config.forceField=P)},null,512),[[yt,R(t).config.forceField]]),A[83]||(A[83]=T("span",{class:"switch-ui"},null,-1)),A[84]||(A[84]=T("span",null,"开启力场",-1))]),R(t).config.forceField?(z(),J("div",D8,[be(Oe,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:R(t).config.forceCenterX,"onUpdate:modelValue":A[23]||(A[23]=P=>R(t).config.forceCenterX=P)},null,8,["modelValue"]),be(Oe,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:R(t).config.forceCenterY,"onUpdate:modelValue":A[24]||(A[24]=P=>R(t).config.forceCenterY=P)},null,8,["modelValue"]),be(Oe,{label:"力场强度",min:-300,max:300,step:1,modelValue:R(t).config.forceStrength,"onUpdate:modelValue":A[25]||(A[25]=P=>R(t).config.forceStrength=P)},null,8,["modelValue"]),be(Oe,{label:"力场半径",min:1,max:2e3,step:1,modelValue:R(t).config.forceRadius,"onUpdate:modelValue":A[26]||(A[26]=P=>R(t).config.forceRadius=P)},null,8,["modelValue"]),T("label",U8,[A[86]||(A[86]=T("span",null,"衰减模式",-1)),ce(T("select",{"onUpdate:modelValue":A[27]||(A[27]=P=>R(t).config.forceFalloff=P),class:"inp"},[...A[85]||(A[85]=[T("option",{value:"constant"},"恒定(范围内力度不变)",-1),T("option",{value:"linear"},"线性衰减(边缘为 0)",-1),T("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[_t,R(t).config.forceFalloff]])]),A[89]||(A[89]=T("div",{class:"modifier-hint"},"正数吸向中心 · 负数向外排斥 · 可在画布内拖动力场圆",-1)),T("label",$8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[28]||(A[28]=P=>R(t).config.showForceFieldShape=P)},null,512),[[yt,R(t).config.showForceFieldShape]]),A[87]||(A[87]=T("span",{class:"switch-ui"},null,-1)),A[88]||(A[88]=T("span",null,"显示形状",-1))])])):xe("",!0)]),T("div",X8,[T("label",V8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[29]||(A[29]=P=>R(t).config.vortex=P)},null,512),[[yt,R(t).config.vortex]]),A[90]||(A[90]=T("span",{class:"switch-ui"},null,-1)),A[91]||(A[91]=T("span",null,"开启漩涡",-1))]),R(t).config.vortex?(z(),J("div",Y8,[be(Oe,{label:"中心 X",min:-5e3,max:5e3,step:1,modelValue:R(t).config.vortexCenterX,"onUpdate:modelValue":A[30]||(A[30]=P=>R(t).config.vortexCenterX=P)},null,8,["modelValue"]),be(Oe,{label:"中心 Y",min:-5e3,max:5e3,step:1,modelValue:R(t).config.vortexCenterY,"onUpdate:modelValue":A[31]||(A[31]=P=>R(t).config.vortexCenterY=P)},null,8,["modelValue"]),be(Oe,{label:"力场强度",min:-300,max:300,step:1,modelValue:R(t).config.vortexStrength,"onUpdate:modelValue":A[32]||(A[32]=P=>R(t).config.vortexStrength=P)},null,8,["modelValue"]),be(Oe,{label:"力场半径",min:1,max:2e3,step:1,modelValue:R(t).config.vortexRadius,"onUpdate:modelValue":A[33]||(A[33]=P=>R(t).config.vortexRadius=P)},null,8,["modelValue"]),T("label",G8,[A[93]||(A[93]=T("span",null,"衰减模式",-1)),ce(T("select",{"onUpdate:modelValue":A[34]||(A[34]=P=>R(t).config.vortexFalloff=P),class:"inp"},[...A[92]||(A[92]=[T("option",{value:"constant"},"恒定(范围内力度不变)",-1),T("option",{value:"linear"},"线性衰减(边缘为 0)",-1),T("option",{value:"inverse"},"距离反比(中心最强)",-1)])],512),[[_t,R(t).config.vortexFalloff]])]),A[96]||(A[96]=T("div",{class:"modifier-hint"},"正数逆时针 · 负数顺时针",-1)),T("label",j8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[35]||(A[35]=P=>R(t).config.showVortexShape=P)},null,512),[[yt,R(t).config.showVortexShape]]),A[94]||(A[94]=T("span",{class:"switch-ui"},null,-1)),A[95]||(A[95]=T("span",null,"显示形状",-1))])])):xe("",!0)]),T("div",H8,[T("label",W8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[36]||(A[36]=P=>R(t).config.attraction=P)},null,512),[[yt,R(t).config.attraction]]),A[97]||(A[97]=T("span",{class:"switch-ui"},null,-1)),A[98]||(A[98]=T("span",null,"开启吸附",-1))]),R(t).config.attraction?(z(),J("div",z8,[be(Oe,{label:"吸附点 X",min:-5e3,max:5e3,step:1,modelValue:R(t).config.attractionCenterX,"onUpdate:modelValue":A[37]||(A[37]=P=>R(t).config.attractionCenterX=P)},null,8,["modelValue"]),be(Oe,{label:"吸附点 Y",min:-5e3,max:5e3,step:1,modelValue:R(t).config.attractionCenterY,"onUpdate:modelValue":A[38]||(A[38]=P=>R(t).config.attractionCenterY=P)},null,8,["modelValue"]),be(Oe,{label:"吸附半径",min:0,max:2e3,step:1,modelValue:R(t).config.attractionRadius,"onUpdate:modelValue":A[39]||(A[39]=P=>R(t).config.attractionRadius=P)},null,8,["modelValue"]),be(Oe,{label:"吸附时长",min:.05,max:30,step:.05,modelValue:R(t).config.attractionDuration,"onUpdate:modelValue":A[40]||(A[40]=P=>R(t).config.attractionDuration=P)},null,8,["modelValue"]),be(Oe,{label:"延迟时间",min:0,max:30,step:.05,modelValue:R(t).config.attractionDelay,"onUpdate:modelValue":A[41]||(A[41]=P=>R(t).config.attractionDelay=P)},null,8,["modelValue"]),T("label",q8,[A[100]||(A[100]=T("span",null,"延迟方式",-1)),ce(T("select",{"onUpdate:modelValue":A[42]||(A[42]=P=>R(t).config.attractionDelayMode=P),class:"inp"},[...A[99]||(A[99]=[T("option",{value:"global"},"统一时间",-1),T("option",{value:"particle"},"单粒子生命",-1)])],512),[[_t,R(t).config.attractionDelayMode]])]),T("label",K8,[A[102]||(A[102]=T("span",null,"吸附方式",-1)),ce(T("select",{"onUpdate:modelValue":A[43]||(A[43]=P=>R(t).config.attractionPath=P),class:"inp"},[...A[101]||(A[101]=[T("option",{value:"linear"},"直线",-1),T("option",{value:"curve"},"曲线",-1)])],512),[[_t,R(t).config.attractionPath]])]),A[105]||(A[105]=T("div",{class:"modifier-hint"},"延迟后从当前位置开始吸附 · 到达红色范围即死亡 · 可在画布内拖动吸附圆",-1)),T("label",Z8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[44]||(A[44]=P=>R(t).config.showAttractionShape=P)},null,512),[[yt,R(t).config.showAttractionShape]]),A[103]||(A[103]=T("span",{class:"switch-ui"},null,-1)),A[104]||(A[104]=T("span",null,"显示形状",-1))])])):xe("",!0)]),T("div",J8,[T("label",Q8,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[45]||(A[45]=P=>R(t).config.trail=P)},null,512),[[yt,R(t).config.trail]]),A[106]||(A[106]=T("span",{class:"switch-ui"},null,-1)),A[107]||(A[107]=T("span",null,"开启拖尾",-1))]),R(t).config.trail?(z(),J("div",eU,[T("div",tU,[A[108]||(A[108]=T("div",{class:"trail-section-title"},"拖尾独立图片",-1)),T("button",{class:"image-add",title:"增加拖尾图片资源",onClick:A[46]||(A[46]=(...P)=>R(n)&&R(n)(...P))},"+")]),(z(!0),J(Ce,null,Ft(R(t).config.trailResources,P=>(z(),At(XS,{key:P.id,resource:P,"resource-count":R(t).config.trailResources.length,"default-file":"trail.png","name-placeholder":"trail","show-folder":!1,onPick:R(r),onReset:R(h),onRemove:R(u),onUpdateWeight:R(d),onToggleLock:R(f)},{default:qh(()=>[A[124]||(A[124]=T("div",{class:"resource-divider"},null,-1)),be(Oe,{label:"旋转",min:-360,max:360,step:1,"model-value":P.rotation,"onUpdate:modelValue":O=>R(l)(P.id,O)},null,8,["model-value","onUpdate:modelValue"]),be(Oe,{label:"拖尾骨骼数",min:2,max:16,step:1,"model-value":P.boneCount,"onUpdate:modelValue":O=>R(a)(P.id,O)},null,8,["model-value","onUpdate:modelValue"]),be(Oe,{label:"拖尾比例 (%)",min:0,max:100,step:1,modelValue:P.trailRatio,"onUpdate:modelValue":O=>P.trailRatio=O},null,8,["modelValue","onUpdate:modelValue"]),T("label",sU,[A[110]||(A[110]=T("span",null,"拖尾长度",-1)),ce(T("select",{"onUpdate:modelValue":O=>P.lengthMode=O,class:"inp"},[...A[109]||(A[109]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,iU),[[_t,P.lengthMode]])]),P.lengthMode==="fixed"?(z(),At(Oe,{key:0,label:"长度比例 (%)",min:0,max:500,step:1,modelValue:P.length,"onUpdate:modelValue":O=>P.length=O},null,8,["modelValue","onUpdate:modelValue"])):(z(),J(Ce,{key:1},[be(Oe,{label:"长度最小 (%)",min:0,max:500,step:1,modelValue:P.lengthMin,"onUpdate:modelValue":O=>P.lengthMin=O},null,8,["modelValue","onUpdate:modelValue"]),be(Oe,{label:"长度最大 (%)",min:0,max:500,step:1,modelValue:P.lengthMax,"onUpdate:modelValue":O=>P.lengthMax=O},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",nU,[A[112]||(A[112]=T("span",null,"拖尾宽度",-1)),ce(T("select",{"onUpdate:modelValue":O=>P.widthSizeMode=O,class:"inp"},[...A[111]||(A[111]=[T("option",{value:"fixed"},"固定",-1),T("option",{value:"random"},"随机范围",-1)])],8,rU),[[_t,P.widthSizeMode]])]),P.widthSizeMode==="fixed"?(z(),At(Oe,{key:2,label:"宽度比例 (%)",min:0,max:500,step:1,modelValue:P.width,"onUpdate:modelValue":O=>P.width=O},null,8,["modelValue","onUpdate:modelValue"])):(z(),J(Ce,{key:3},[be(Oe,{label:"宽度最小 (%)",min:0,max:500,step:1,modelValue:P.widthMin,"onUpdate:modelValue":O=>P.widthMin=O},null,8,["modelValue","onUpdate:modelValue"]),be(Oe,{label:"宽度最大 (%)",min:0,max:500,step:1,modelValue:P.widthMax,"onUpdate:modelValue":O=>P.widthMax=O},null,8,["modelValue","onUpdate:modelValue"])],64)),T("label",oU,[A[114]||(A[114]=T("span",null,"宽度缩放",-1)),ce(T("select",{"onUpdate:modelValue":O=>P.widthMode=O,class:"inp"},[...A[113]||(A[113]=[T("option",{value:"particle"},"跟随粒子",-1),T("option",{value:"fixed"},"固定",-1)])],8,aU),[[_t,P.widthMode]])]),T("label",lU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":O=>P.lifeLengthEnabled=O},null,8,cU),[[yt,P.lifeLengthEnabled]]),A[115]||(A[115]=T("span",{class:"switch-ui"},null,-1)),A[116]||(A[116]=T("span",null,"生命周期长度曲线",-1))]),P.lifeLengthEnabled?(z(),At(Ji,{key:4,modelValue:P.lifeLengthCurve,"onUpdate:modelValue":O=>P.lifeLengthCurve=O,"default-value":R(D)},null,8,["modelValue","onUpdate:modelValue","default-value"])):xe("",!0),T("label",hU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":O=>P.shapeEnabled=O},null,8,uU),[[yt,P.shapeEnabled]]),A[117]||(A[117]=T("span",{class:"switch-ui"},null,-1)),A[118]||(A[118]=T("span",null,"形状曲线(首端 → 尾端宽度)",-1))]),P.shapeEnabled?(z(),At(Ji,{key:5,modelValue:P.shapeCurve,"onUpdate:modelValue":O=>P.shapeCurve=O,"default-value":R(N)},null,8,["modelValue","onUpdate:modelValue","default-value"])):xe("",!0),T("div",dU,[A[119]||(A[119]=T("span",null,"颜色模式",-1)),T("div",fU,[T("button",{class:Ae(["axis-mode",{on:P.colorMode==="particle"}]),onClick:O=>P.colorMode="particle"},"跟随粒子",10,mU),T("button",{class:Ae(["axis-mode",{on:P.colorMode==="fixed"}]),onClick:O=>P.colorMode="fixed"},"固定",10,pU),T("button",{class:Ae(["axis-mode",{on:P.colorMode==="curve"}]),onClick:O=>P.colorMode="curve"},"曲线",10,gU)])]),T("label",vU,[A[121]||(A[121]=T("span",null,"混合模式",-1)),ce(T("select",{"onUpdate:modelValue":O=>P.blend=O,class:"inp"},[...A[120]||(A[120]=[T("option",{value:"normal"},"正常",-1),T("option",{value:"add"},"相加",-1),T("option",{value:"multiply"},"相乘",-1),T("option",{value:"screen"},"滤色",-1)])],8,yU),[[_t,P.blend]])]),P.colorMode==="fixed"?(z(),J("label",xU,[A[122]||(A[122]=T("span",null,"固定颜色",-1)),ce(T("input",{class:"colr",type:"color","onUpdate:modelValue":O=>P.color=O},null,8,bU),[[je,P.color]]),T("input",{class:"hex-input",value:P.color,onChange:O=>R(p)(P,O),onKeydown:yr(Ke(O=>R(m)(P,O),["prevent"]),["enter"])},null,40,wU)])):P.colorMode==="curve"?(z(),At($S,{key:7,modelValue:P.colorGradient,"onUpdate:modelValue":O=>P.colorGradient=O},null,8,["modelValue","onUpdate:modelValue"])):xe("",!0),T("div",SU,[A[123]||(A[123]=T("span",null,"透明度模式",-1)),T("div",MU,[T("button",{class:Ae(["axis-mode",{on:P.alphaMode==="particle"}]),onClick:O=>P.alphaMode="particle"},"跟随粒子",10,TU),T("button",{class:Ae(["axis-mode",{on:P.alphaMode==="fixed"}]),onClick:O=>P.alphaMode="fixed"},"固定",10,_U),T("button",{class:Ae(["axis-mode",{on:P.alphaMode==="curve"}]),onClick:O=>P.alphaMode="curve"},"曲线",10,CU)])]),P.alphaMode==="fixed"?(z(),At(Oe,{key:8,label:"透明度",min:0,max:1,step:.01,modelValue:P.alpha,"onUpdate:modelValue":O=>P.alpha=O},null,8,["modelValue","onUpdate:modelValue"])):xe("",!0),P.alphaMode==="curve"?(z(),At(Ji,{key:9,modelValue:P.alphaCurve,"onUpdate:modelValue":O=>P.alphaCurve=O,"default-value":R(X)},null,8,["modelValue","onUpdate:modelValue","default-value"])):xe("",!0)]),_:2},1032,["resource","resource-count","onPick","onReset","onRemove","onUpdateWeight","onToggleLock"]))),128)),T("input",{ref_key:"trailTextureFileInput",ref:s,class:"file-input",type:"file",accept:"image/png,image/jpeg,image/webp",onChange:A[47]||(A[47]=(...P)=>R(c)&&R(c)(...P))},null,544),T("div",AU,[be(Oe,{label:"网格行数",min:2,max:16,step:1,"model-value":R(t).config.trailGridRows,"onUpdate:modelValue":A[48]||(A[48]=P=>R(o)("trailGridRows",P))},null,8,["model-value"]),be(Oe,{label:"网格列数",min:2,max:32,step:1,"model-value":R(t).config.trailGridCols,"onUpdate:modelValue":A[49]||(A[49]=P=>R(o)("trailGridCols",P))},null,8,["model-value"])]),A[125]||(A[125]=T("div",{class:"modifier-hint"},"每个粒子按资源比例生成一组同级拖尾骨骼;随机长度与宽度在粒子出生时确定,相同种子可稳定复现",-1))])):xe("",!0)]),T("div",EU,[T("label",IU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[50]||(A[50]=P=>R(t).config.emitterFollow=P),disabled:R(t).config.streamBehavior==="loop"},null,8,RU),[[yt,R(t).config.emitterFollow]]),A[126]||(A[126]=T("span",{class:"switch-ui"},null,-1)),A[127]||(A[127]=T("span",null,"开启发射器跟随",-1))]),R(t).config.emitterFollow&&R(t).config.streamBehavior!=="loop"?(z(),J("div",PU,[T("label",kU,[A[130]||(A[130]=T("span",null,"跟随模式",-1)),T("select",{value:R(t).config.emitterFollowMode,class:"inp",onChange:A[51]||(A[51]=P=>R(E)(P,R(t).config))},[A[128]||(A[128]=T("option",{value:"none"},"无",-1)),A[129]||(A[129]=T("option",{value:"path"},"跟随路径",-1)),R(g)||R(t).config.emitterFollowMode==="bone"?(z(),J("option",OU,"选中的骨骼")):xe("",!0)],40,FU)]),R(t).config.emitterFollowMode==="path"?(z(),J(Ce,{key:0},[T("label",LU,[A[132]||(A[132]=T("span",null,"跟随路径",-1)),ce(T("select",{"onUpdate:modelValue":A[52]||(A[52]=P=>R(t).config.emitterFollowPathId=P),class:"inp"},[A[131]||(A[131]=T("option",{value:0},"无",-1)),(z(!0),J(Ce,null,Ft(R(e).paths,P=>(z(),J("option",{key:P.id,value:P.id},ye(P.name),9,BU))),128))],512),[[_t,R(t).config.emitterFollowPathId,void 0,{number:!0}]])]),T("label",NU,[A[134]||(A[134]=T("span",null,"发射器角度模式",-1)),ce(T("select",{"onUpdate:modelValue":A[53]||(A[53]=P=>R(t).config.emitterAngleMode=P),class:"inp"},[...A[133]||(A[133]=[T("option",{value:"fixed"},"固定角度",-1),T("option",{value:"direction"},"跟随移动方向",-1)])],512),[[_t,R(t).config.emitterAngleMode]])]),A[140]||(A[140]=T("div",{class:"gravity-curve-title"},[T("span",null,"移动进度曲线 (0→1)")],-1)),be(Ji,{modelValue:R(t).config.emitterFollowCurve,"onUpdate:modelValue":A[54]||(A[54]=P=>R(t).config.emitterFollowCurve=P),"default-value":R(B)},null,8,["modelValue","default-value"]),T("div",DU,[T("label",UU,[A[135]||(A[135]=T("span",null,"移动时长 (s)",-1)),ce(T("input",{"onUpdate:modelValue":A[55]||(A[55]=P=>R(t).config.emitterFollowDuration=P),type:"number",min:"0.05",step:"0.05",class:"inp"},null,512),[[je,R(t).config.emitterFollowDuration,void 0,{number:!0}]])]),T("label",$U,[A[137]||(A[137]=T("span",null,"跟随空间",-1)),ce(T("select",{"onUpdate:modelValue":A[56]||(A[56]=P=>R(t).config.emitterFollowSpace=P),class:"inp"},[...A[136]||(A[136]=[T("option",{value:"local"},"局部空间(GEN 移动)",-1),T("option",{value:"world"},"世界空间(粒子生成点移动)",-1)])],512),[[_t,R(t).config.emitterFollowSpace]])])]),T("label",XU,[A[139]||(A[139]=T("span",null,"移动方向",-1)),ce(T("select",{"onUpdate:modelValue":A[57]||(A[57]=P=>R(t).config.emitterFollowDirection=P),class:"inp"},[...A[138]||(A[138]=[T("option",{value:"forward"},"正向(起点 → 终点)",-1),T("option",{value:"reverse"},"反向(终点 → 起点)",-1)])],512),[[_t,R(t).config.emitterFollowDirection]])]),be(Oe,{label:"偏移起始点 (0-1)",min:0,max:1,step:.01,modelValue:R(t).config.emitterFollowOffset,"onUpdate:modelValue":A[58]||(A[58]=P=>R(t).config.emitterFollowOffset=P)},null,8,["modelValue"]),A[141]||(A[141]=T("div",{class:"modifier-hint"},"局部空间会移动整个发射器;世界空间只移动新粒子的生成点,已出生粒子留在世界位置。",-1))],64)):R(t).config.emitterFollowMode==="bone"?(z(),J(Ce,{key:1},[R(v)?(z(),J("div",VU,[A[142]||(A[142]=gt("跟随目标:",-1)),T("strong",null,ye(R(v).spine.name)+" / "+ye(R(v).boneName),1)])):(z(),J("div",YU,"尚未绑定有效骨骼,请先在 Spine 层级树中选择骨骼。")),R(g)&&(!R(v)||R(g).spine.id!==R(v).spine.id||R(g).boneName!==R(v).boneName)?(z(),J("button",{key:2,class:"bone-follow-rebind",onClick:A[59]||(A[59]=P=>R(F)(R(t).config))},ye(R(v)?"重新绑定":"绑定")+"当前选中骨骼:"+ye(R(g).spine.name)+" / "+ye(R(g).boneName),1)):xe("",!0),R(v)?(z(),J(Ce,{key:3},[T("label",GU,[A[144]||(A[144]=T("span",null,"跟随空间",-1)),ce(T("select",{"onUpdate:modelValue":A[60]||(A[60]=P=>R(t).config.emitterFollowSpace=P),class:"inp"},[...A[143]||(A[143]=[T("option",{value:"local"},"本地空间(随骨骼移动)",-1),T("option",{value:"world"},"世界空间(粒子生成后保持位置)",-1)])],512),[[_t,R(t).config.emitterFollowSpace]])]),T("div",jU,[T("label",HU,[A[145]||(A[145]=T("span",null,"位移偏移 X",-1)),ce(T("input",{"onUpdate:modelValue":A[61]||(A[61]=P=>R(t).config.emitterFollowBoneOffsetX=P),type:"number",step:"1",class:"inp"},null,512),[[je,R(t).config.emitterFollowBoneOffsetX,void 0,{number:!0}]])]),T("label",WU,[A[146]||(A[146]=T("span",null,"位移偏移 Y",-1)),ce(T("input",{"onUpdate:modelValue":A[62]||(A[62]=P=>R(t).config.emitterFollowBoneOffsetY=P),type:"number",step:"1",class:"inp"},null,512),[[je,R(t).config.emitterFollowBoneOffsetY,void 0,{number:!0}]])])]),T("div",zU,[T("label",qU,[A[147]||(A[147]=T("span",null,"旋转偏移",-1)),ce(T("input",{"onUpdate:modelValue":A[63]||(A[63]=P=>R(t).config.emitterFollowBoneRotation=P),type:"number",step:"1",class:"inp"},null,512),[[je,R(t).config.emitterFollowBoneRotation,void 0,{number:!0}]])]),T("label",KU,[A[148]||(A[148]=T("span",null,"缩放偏移 X",-1)),ce(T("input",{"onUpdate:modelValue":A[64]||(A[64]=P=>R(t).config.emitterFollowBoneScaleX=P),type:"number",step:"0.05",class:"inp"},null,512),[[je,R(t).config.emitterFollowBoneScaleX,void 0,{number:!0}]])]),T("label",ZU,[A[149]||(A[149]=T("span",null,"缩放偏移 Y",-1)),ce(T("input",{"onUpdate:modelValue":A[65]||(A[65]=P=>R(t).config.emitterFollowBoneScaleY=P),type:"number",step:"0.05",class:"inp"},null,512),[[je,R(t).config.emitterFollowBoneScaleY,void 0,{number:!0}]])])]),A[150]||(A[150]=T("div",{class:"modifier-hint"},"发射器只跟随所选 Spine 骨骼的位置,不继承 Spine 的旋转或缩放;粒子变换使用粒子系统自身参数和上方偏移。",-1))],64)):xe("",!0)],64)):xe("",!0)])):xe("",!0)]),T("div",JU,[T("label",QU,[ce(T("input",{type:"checkbox","onUpdate:modelValue":A[66]||(A[66]=P=>R(t).config.collision=P)},null,512),[[yt,R(t).config.collision]]),A[151]||(A[151]=T("span",{class:"switch-ui"},null,-1)),A[152]||(A[152]=T("span",null,"开启碰撞",-1))]),R(t).config.collision?(z(),J("div",e$,[A[153]||(A[153]=T("div",{class:"collision-filter-title"},"参与的碰撞对象",-1)),T("div",t$,[(z(!0),J(Ce,null,Ft(R(x),P=>(z(),J("span",{key:P.id,class:Ae(["collision-filter-tag",{disabled:!P.enabled}]),title:P.enabled?P.name:`${P.name}(碰撞体已禁用)`},[T("span",null,ye(P.name),1),T("button",{type:"button","aria-label":`清除碰撞对象 ${P.name}`,onClick:O=>R(w)(P.id)},"×",8,i$)],10,s$))),128)),T("button",{type:"button",class:Ae(["collision-filter-add",{active:R(y)}]),disabled:R(M).length===0,title:R(M).length?"加入场景碰撞对象":"没有可加入的碰撞对象",onClick:A[67]||(A[67]=P=>y.value=!R(y))},"+",10,n$)]),R(x).length===0?(z(),J("div",r$,"未选择碰撞对象,当前粒子不会发生碰撞")):xe("",!0),R(y)&&R(M).length?(z(),J("div",o$,[(z(!0),J(Ce,null,Ft(R(M),P=>(z(),J("button",{key:P.id,type:"button",onClick:O=>R(C)(P.id)},[T("span",null,ye(P.name),1),T("small",null,ye(P.enabled?"可用":"已禁用"),1)],8,a$))),128))])):xe("",!0),A[154]||(A[154]=T("div",{class:"modifier-hint"},"只有已加入且启用的场景碰撞对象会参与当前粒子系统的碰撞",-1))])):xe("",!0)]),be(Oe,{label:"阻尼",min:0,max:2,step:.05,modelValue:R(t).config.damping,"onUpdate:modelValue":A[68]||(A[68]=P=>R(t).config.damping=P)},null,8,["modelValue"])],512),[[Ss,!R(b).mods]])]))}}),c$=Jt(l$,[["__scopeId","data-v-96ef634f"]]),h$={class:"group"},u$={class:"caret"},d$={class:"group-body export-settings"},f$={class:"export-field"},m$={class:"export-field"},p$={class:"export-field"},g$={key:0,class:"export-help"},v$={class:"export-fps-row"},y$={class:"export-field export-fps-field"},x$={class:"export-checkbox"},b$={class:"export-switches"},w$={class:"switch-row export-switch"},S$={class:"switch-row export-switch"},M$={class:"switch-row export-switch export-switch-last"},T$=Zt({__name:"ExportSettingsSection",setup(i){const{exportSettings:e,collapsed:t,toggle:s,resetModule:n,normalizeExportFps:r,select:o}=Ar();return(a,l)=>(z(),J("div",h$,[T("div",{class:"group-head",onClick:l[1]||(l[1]=c=>R(s)("export"))},[T("span",u$,ye(R(t).export?"▸":"▾"),1),l[11]||(l[11]=T("span",null,"导出设置",-1)),T("button",{class:"group-reset",title:"重置导出设置",onClick:l[0]||(l[0]=Ke(c=>R(n)("export"),["stop"]))},"重置")]),ce(T("div",d$,[T("label",f$,[l[12]||(l[12]=T("span",null,"图片路径 (Spine Images Path)",-1)),ce(T("input",{"onUpdate:modelValue":l[2]||(l[2]=c=>R(e).imagesPath=c),class:"inp export-input",type:"text",placeholder:"./images/"},null,512),[[je,R(e).imagesPath,void 0,{trim:!0}]])]),T("label",m$,[l[14]||(l[14]=T("span",null,"Spine 版本",-1)),ce(T("select",{"onUpdate:modelValue":l[3]||(l[3]=c=>R(e).spineVersion=c),class:"inp export-input"},[...l[13]||(l[13]=[Qs('',5)])],512),[[_t,R(e).spineVersion]])]),T("label",p$,[l[16]||(l[16]=T("span",null,"关键帧插值曲线",-1)),ce(T("select",{"onUpdate:modelValue":l[4]||(l[4]=c=>R(e).keyframeCurve=c),class:"inp export-input"},[...l[15]||(l[15]=[T("option",{value:"linear"},"线性 (Linear)",-1),T("option",{value:"bezier"},"平滑贝塞尔 (Smooth Bézier)",-1)])],512),[[_t,R(e).keyframeCurve]])]),l[25]||(l[25]=T("div",{class:"export-help"},"平滑贝塞尔会在误差允许范围内拟合连续运动;出生、死亡、附件切换和突变仍使用阶跃关键帧。",-1)),R(e).spineVersion==="3.8"?(z(),J("div",g$,"Spine 3.8 不支持 4.x 的逐通道数组贝塞尔,导出时会转换为经过容差精简的分段线性关键帧。")):xe("",!0),T("div",v$,[T("label",y$,[l[17]||(l[17]=T("span",null,"导出 FPS",-1)),ce(T("input",{"onUpdate:modelValue":l[5]||(l[5]=c=>R(e).fps=c),class:"inp export-input",type:"number",min:"1",max:"240",step:"1",onChange:l[6]||(l[6]=(...c)=>R(r)&&R(r)(...c))},null,544),[[je,R(e).fps,void 0,{number:!0}]])]),T("label",x$,[ce(T("input",{"onUpdate:modelValue":l[7]||(l[7]=c=>R(e).omitFps=c),type:"checkbox"},null,512),[[yt,R(e).omitFps]]),l[18]||(l[18]=gt("不写 fps",-1))])]),l[26]||(l[26]=T("div",{class:"export-help"},"修改 FPS 时保持动画实际秒数不变;“不写 fps”只省略 Spine 的 fps 元数据。",-1)),T("div",b$,[T("label",w$,[ce(T("input",{"onUpdate:modelValue":l[8]||(l[8]=c=>R(e).integerFrameAlignment=c),type:"checkbox"},null,512),[[yt,R(e).integerFrameAlignment]]),l[19]||(l[19]=T("span",{class:"switch-ui"},null,-1)),l[20]||(l[20]=T("span",null,"整数帧对齐",-1))]),T("label",S$,[ce(T("input",{"onUpdate:modelValue":l[9]||(l[9]=c=>R(e).bonePool=c),type:"checkbox"},null,512),[[yt,R(e).bonePool]]),l[21]||(l[21]=T("span",{class:"switch-ui"},null,-1)),l[22]||(l[22]=T("span",null,"骨骼对象池",-1))]),T("label",M$,[ce(T("input",{"onUpdate:modelValue":l[10]||(l[10]=c=>R(e).excludeEmptyAnimations=c),type:"checkbox"},null,512),[[yt,R(e).excludeEmptyAnimations]]),l[23]||(l[23]=T("span",{class:"switch-ui"},null,-1)),l[24]||(l[24]=T("span",null,"排除无内容动画",-1))])])],512),[[Ss,!R(t).export]])]))}}),_$=Jt(T$,[["__scopeId","data-v-04462c7a"]]),C$={class:"spine-export-actions"},A$=["disabled","title"],E$=["disabled"],I$=["disabled","title"],R$={key:0},P$=["href"],k$=["href"],F$=Zt({__name:"ParticleExportFooter",setup(i){const{exportSettings:e,exportBusy:t,exportTarget:s,exportMessage:n,exportError:r,connectorPairUrl:o,connectorStatusText:a,connectorStatusClass:l,connectorReady:c,connectorAuthorizationUrl:h,connectorDisabledReason:u,connectorButtonTitle:d,refreshConnectorHealth:f,exportSpineJson:p,exportSpineProject:m,exportSpineImages:g}=Ar();return(v,y)=>(z(),J(Ce,null,[T("div",C$,[T("button",{type:"button",class:"export-spine-json",disabled:R(t),title:R(t)?"正在重新计算并烘焙动画":`导出 Spine ${R(e).spineVersion} JSON`,onClick:y[0]||(y[0]=(...x)=>R(p)&&R(p)(...x))},ye(R(t)&&R(s)==="json"?"正在准备导出…":"导出Spine Json"),9,A$),T("button",{type:"button",class:"export-spine-images",disabled:R(t),title:"单独下载当前粒子系统使用的图片 ZIP",onClick:y[1]||(y[1]=(...x)=>R(g)&&R(g)(...x))},ye(R(t)&&R(s)==="images"?"正在整理图片…":"导出 images 包"),9,E$),T("button",{type:"button",class:"export-spine-project",disabled:R(t)||!R(c),title:R(d),onClick:y[2]||(y[2]=(...x)=>R(m)&&R(m)(...x))},[T("span",null,ye(R(t)&&R(s)==="spine"?"正在生成工程…":"导出 .spine 包"),1),!R(t)&&R(u)?(z(),J("small",R$,ye(R(u)),1)):xe("",!0)],8,I$)]),T("div",{class:Ae(["connector-status",R(l)])},[y[5]||(y[5]=T("span",{class:"connector-dot"},null,-1)),gt(ye(R(a))+" ",1),R(h)?(z(),J("a",{key:0,href:R(h),target:"_blank",rel:"noopener",title:"在本机连接器中授权当前网站"},"授权当前网站",8,P$)):xe("",!0),T("button",{type:"button",title:"重新检测连接器",onClick:y[3]||(y[3]=(...x)=>R(f)&&R(f)(...x))},"刷新")],2),R(n)?(z(),J("div",{key:0,class:Ae(["export-message",{error:R(r)}])},[gt(ye(R(n))+" ",1),R(o)?(z(),J("a",{key:0,href:R(o),target:"_blank",rel:"noopener",onClick:y[4]||(y[4]=x=>o.value="")},"授权当前网站",8,k$)):xe("",!0)],2)):xe("",!0)],64))}}),O$=Jt(F$,[["__scopeId","data-v-7ff40afe"]]),L$={class:"panel"},B$={class:"panel-scroll"},N$=Zt({__name:"ParticlePanel",setup(i){const{activeObjectType:e,sys:t}=ML();return(s,n)=>(z(),J("div",L$,[n[0]||(n[0]=T("div",{class:"panel-header"},[T("span",null,"Spine粒子编辑器-Yeomai")],-1)),T("div",B$,[be(kL),be(mD),R(e)==="particle"&&R(t)?(z(),J(Ce,{key:0},[be(t4),be(T4),be(w8),be(c$),be(_$)],64)):xe("",!0)]),be(O$)]))}}),D$=Jt(N$,[["__scopeId","data-v-283ef8eb"]]),U$={class:"timeline"},$$={class:"tl-controls"},X$=["title"],V$={class:"tl-range",title:"自定义播放起始帧"},Y$=["max","onKeydown"],G$={class:"tl-range",title:"自定义播放结束帧"},j$=["min","max","onKeydown"],H$=["title"],W$={class:"tl-frame"},z$=["disabled"],q$=["onClick"],K$={key:0},Z$={class:"tl-animation-editor"},J$={key:0,class:"tl-animation-error"},Q$={class:"tl-animation-actions"},eX=["disabled"],tX={key:1,class:"tl-animation-hint"},sX={class:"tl-anim tl-spine-preview"},iX=["value","disabled"],nX={value:""},rX=["value"],oX={class:"tl-zoom"},aX={class:"tl-ticks"},lX={class:"tl-ticklabel"},cX={class:"tl-lanes"},hX=["onPointerdown"],uX={class:"lane-name"},dX=["onPointerdown"],fX=["onPointerdown"],mX=["onPointerdown"],pX={class:"lane-name"},gX={key:0,class:"tl-empty"},vX=Zt({__name:"Timeline",setup(i){const e=yo(),t=Fe(null),s=Fe(null),n=Fe(!1),r=Fe("animation"),o=Fe("");Fo(()=>{(!Array.isArray(e.timeline.animations)||!e.timeline.animations.length)&&(e.timeline.animations=["animation"]),e.timeline.animations.includes(e.timeline.animation)||(e.timeline.animation=e.timeline.animations[0]);for(const H of e.systems)(!H.animation||!e.timeline.animations.includes(H.animation))&&(H.animation=e.timeline.animations[0])});const a=De(()=>e.systems.find(H=>H.id===e.activeId)||null),l=De(()=>{const H=a.value;return!H||!V(H)?null:Sp(H.config,m.value)});function c(){a.value&&(n.value=!n.value,r.value=a.value.animation,o.value="")}function h(H){const G=a.value;G&&(e.setSystemAnimation(G.id,H),r.value=H,o.value="")}function u(){const H=e.addAnimation();r.value=H,o.value=""}function d(){var q;const H=((q=a.value)==null?void 0:q.animation)||e.timeline.animation,G=r.value.trim();if(!G){o.value="动画名称不能为空";return}if(G!==H&&e.timeline.animations.includes(G)){o.value="动画名称不能重复";return}if(!e.renameAnimation(H,G)){o.value="无法修改动画名称";return}r.value=G,o.value=""}function f(){var q,se;const H=((q=a.value)==null?void 0:q.animation)||e.timeline.animation;if(!e.removeAnimation(H)){o.value="至少需要保留一个动画";return}const G=((se=a.value)==null?void 0:se.animation)||e.timeline.animation;r.value=G,o.value=""}function p(H){var G;(G=s.value)!=null&&G.contains(H.target)||(n.value=!1)}Oi(()=>document.addEventListener("pointerdown",p)),po(()=>document.removeEventListener("pointerdown",p));const m=De(()=>Math.max(1,e.timeline.fps||30)),g=Fe(120),v=Fe({}),y=Fe({}),x=Fe({}),M=Fe({}),C=Fe(String(e.timeline.playbackStart)),w=Fe(String(e.timeline.playbackEnd));cs(()=>e.timeline.playbackStart,H=>{C.value=String(H)}),cs(()=>e.timeline.playbackEnd,H=>{w.value=String(H)});const b=De(()=>e.timeline.totalFrames),_=De(()=>g.value<=30?"放大":g.value>=300?"缩小":"适中"),E=De(()=>e.spines.filter(H=>H.selectedAnimation&&H.animations.some(G=>G.name===H.selectedAnimation&&G.duration>0))),F=De(()=>(e.activeObjectType==="spine"?e.spines.find(G=>G.id===e.activeObjectId&&G.animations.length):null)||e.spines.find(G=>G.animations.length)||null);function I(H){const G=F.value;G&&(G.selectedAnimation=H.target.value,e.recalcTotalFrames(),e.timeline.frame=0)}function k(){e.setPlaybackStart(Number(C.value)),C.value=String(e.timeline.playbackStart)}function B(){e.setPlaybackEnd(Number(w.value)),w.value=String(e.timeline.playbackEnd)}function D(){const H=l.value;H&&(e.setPlaybackEnd(H.end),e.setPlaybackStart(H.start))}function X(){var G;const H=((G=t.value)==null?void 0:G.clientWidth)||600;return g.value/H}const N=De(()=>{const H=[],G=g.value;let q=1;g.value<=10?q=1:g.value<=50?q=5:g.value<=200?q=10:g.value<=500?q=50:q=100;for(let se=0;se<=G;se+=q)H.push({f:se,px:se/X()});return H}),U=De(()=>e.timeline.frame/X());function A(H){const G=H.config;return(v.value[H.id]??Math.max(0,Number(G.delay)||0))*m.value/X()}function P(H){const G=H.config,q=Math.max(0,Number(G.lifeMin)||0),se=Math.max(0,Number(G.lifeMax)||0);return G.lifeMode==="fixed"?q:Math.max(q,se)}function O(H){return $(H)}function L(H){if(H.config.mode!=="stream")return 0;if(H.config.streamBehavior==="loop"){const q=H.config;return(x.value[H.id]??pr(q,m.value).loop)/X()}return(y.value[H.id]??Math.max(1/m.value,Number(H.config.duration)||1))*m.value/X()}function $(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"?j(H)+L(H)+K(H):L(H)+P(H)*m.value/X()}function V(H){const G=H.config;return G.mode==="stream"&&G.streamBehavior==="loop"}function j(H){return V(H)?pr(H.config,m.value).start/X():0}function K(H){return V(H)?pr(H.config,m.value).end/X():0}function ie(H){var G;return((G=H.animations.find(q=>q.name===H.selectedAnimation))==null?void 0:G.duration)||0}function re(H){return(M.value[H.id]??Math.max(0,Number(H.timeOffset)||0))*m.value/X()}function pe(H){return ie(H)*m.value/X()}function ge(H){const G=H.deltaY<0?.8:1.25;let q=g.value*G;q=Math.min(2e3,Math.max(10,q)),g.value=Math.round(q)}function he(H){const G=t.value;e.pause();const q=ue=>{const ne=G.getBoundingClientRect(),de=Math.floor((ue.clientX-ne.left)/ne.width*g.value);e.timeline.frame=Math.max(0,Math.min(de,b.value-1))};q(H);const se=()=>{window.removeEventListener("pointermove",q),window.removeEventListener("pointerup",se)};window.addEventListener("pointermove",q),window.addEventListener("pointerup",se)}function fe(H,G){H.stopPropagation();const q=H.clientX,se=Math.max(0,Number(G.config.delay)||0),ue=X()/m.value,ne=we=>{const me=(we.clientX-q)*ue,Ue=Math.max(0,Math.min(se+me,600));v.value[G.id]=Math.round(Ue*m.value)/m.value},de=we=>{window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",le),window.removeEventListener("pointercancel",Re);const me=v.value[G.id];delete v.value[G.id],we&&me!=null&&me!==se&&(G.config.delay=me)},le=()=>de(!0),Re=()=>de(!1);window.addEventListener("pointermove",ne),window.addEventListener("pointerup",le),window.addEventListener("pointercancel",Re)}function Y(H,G){var qe;H.stopPropagation();const q=V(G),se=Math.max(0,Number(G.config.duration)||0),ue=pr(G.config,m.value).loop,ne=X()/m.value,de=((qe=H.currentTarget.closest(".lane-bar"))==null?void 0:qe.getBoundingClientRect().left)??H.clientX,le=j(G);let Re=!1;const we=Ze=>{if(Re=!0,q){const Be=Math.min(1800,Math.max(1,Math.round((Ze.clientX-de-le)/X())));x.value[G.id]=Be}else{const Be=Math.max(1/m.value,Math.min((Ze.clientX-de)*ne,600));y.value[G.id]=Math.round(Be*m.value)/m.value}},me=Ze=>{window.removeEventListener("pointermove",we),window.removeEventListener("pointerup",Ue),window.removeEventListener("pointercancel",Je);const Be=y.value[G.id],Me=x.value[G.id];delete y.value[G.id],delete x.value[G.id],Ze&&Re&&q&&Me!=null&&Me!==ue?G.config.loopDurationFrames=Me:Ze&&Re&&!q&&Be!=null&&Be!==se&&(G.config.duration=Be)},Ue=()=>me(!0),Je=()=>me(!1);window.addEventListener("pointermove",we),window.addEventListener("pointerup",Ue),window.addEventListener("pointercancel",Je)}function W(H,G){H.stopPropagation();const q=H.clientX,se=Math.max(0,Number(G.timeOffset)||0),ue=X()/m.value,ne=we=>{const me=Math.max(0,Math.min(se+(we.clientX-q)*ue,600));M.value[G.id]=Math.round(me*m.value)/m.value},de=we=>{window.removeEventListener("pointermove",ne),window.removeEventListener("pointerup",le),window.removeEventListener("pointercancel",Re);const me=M.value[G.id];delete M.value[G.id],we&&me!=null&&me!==se&&(G.timeOffset=me,e.recalcTotalFrames())},le=()=>de(!0),Re=()=>de(!1);window.addEventListener("pointermove",ne),window.addEventListener("pointerup",le),window.addEventListener("pointercancel",Re)}return(H,G)=>{var q,se,ue;return z(),J("div",U$,[T("div",$$,[T("button",{class:Ae(["tl-btn",{on:R(e).timeline.playing}]),onClick:G[0]||(G[0]=ne=>R(e).togglePlay()),title:R(e).timeline.playing?"暂停 (D)":"播放 (D)"},ye(R(e).timeline.playing?"❚❚":"▶"),11,X$),T("button",{class:"tl-btn",onClick:G[1]||(G[1]=ne=>R(e).toStart()),title:"回到第一帧 (S)"},"⏮"),T("button",{class:"tl-btn",onClick:G[2]||(G[2]=ne=>R(e).previousFrame()),title:"前一帧"},"◀"),T("button",{class:"tl-btn",onClick:G[3]||(G[3]=ne=>R(e).nextFrame()),title:"后一帧"},"▶"),T("button",{class:"tl-btn",onClick:G[4]||(G[4]=ne=>R(e).toEnd()),title:"移动到最后一帧"},"⏭"),T("button",{class:Ae(["tl-btn",{on:R(e).timeline.loop}]),onClick:G[5]||(G[5]=ne=>R(e).toggleLoop()),title:"循环"},"⟳",2),T("label",V$,[G[10]||(G[10]=T("span",null,"A",-1)),ce(T("input",{"onUpdate:modelValue":G[6]||(G[6]=ne=>C.value=ne),type:"number",min:"0",max:Math.max(0,R(e).timeline.playbackEnd-1),"aria-label":"播放起始帧",onChange:k,onKeydown:yr(Ke(k,["prevent"]),["enter"])},null,40,Y$),[[je,C.value]])]),T("label",G$,[G[11]||(G[11]=T("span",null,"B",-1)),ce(T("input",{"onUpdate:modelValue":G[7]||(G[7]=ne=>w.value=ne),type:"number",min:R(e).timeline.playbackStart+1,max:Math.max(1,R(e).timeline.totalFrames-1),"aria-label":"播放结束帧",onChange:B,onKeydown:yr(Ke(B,["prevent"]),["enter"])},null,40,j$),[[je,w.value]])]),l.value?(z(),J("button",{key:0,class:"tl-loop-range",title:`设为闭合自循环范围 ${l.value.start}–${l.value.end}f`,onClick:D},"循环段",8,H$)):xe("",!0),T("span",W$,[G[12]||(G[12]=gt("帧 ",-1)),T("b",null,ye(R(e).timeline.frame),1),G[13]||(G[13]=gt(" / ",-1)),T("b",null,ye(Math.max(0,R(e).timeline.totalFrames-1)),1)]),G[18]||(G[18]=T("span",{class:"tl-legend"},[T("i",{class:"legend-emission"}),gt("持续发射 "),T("i",{class:"legend-life"}),gt("粒子存在 "),T("i",{class:"legend-spine"}),gt("Spine 动画")],-1)),T("div",{ref_key:"animationMenuRef",ref:s,class:"tl-anim tl-owner-animation"},[G[16]||(G[16]=T("span",null,"所属动画",-1)),T("button",{class:"tl-animation-trigger",disabled:!a.value,title:"设置当前粒子系统所属的动画",onClick:Ke(c,["stop"])},[T("span",null,ye(((q=a.value)==null?void 0:q.animation)||R(e).timeline.animation),1),G[14]||(G[14]=T("i",null,"⌄",-1))],8,z$),n.value?(z(),J("div",{key:0,class:"tl-animation-menu",onPointerdown:G[9]||(G[9]=Ke(()=>{},["stop"]))},[G[15]||(G[15]=T("div",{class:"tl-animation-menu-title"},"选择所属动画",-1)),(z(!0),J(Ce,null,Ft(R(e).timeline.animations,ne=>{var de,le;return z(),J("button",{key:ne,class:Ae(["tl-animation-option",{on:((de=a.value)==null?void 0:de.animation)===ne}]),onClick:Re=>h(ne)},[T("span",null,ye(ne),1),((le=a.value)==null?void 0:le.animation)===ne?(z(),J("i",K$,"✓")):xe("",!0)],10,q$)}),128)),T("div",Z$,[ce(T("input",{"onUpdate:modelValue":G[8]||(G[8]=ne=>r.value=ne),class:"tl-animation-name",maxlength:"64","aria-label":"动画名称",onKeydown:yr(d,["enter"])},null,544),[[je,r.value]]),T("button",{title:"重命名当前动画",onClick:d},"重命名")]),o.value?(z(),J("div",J$,ye(o.value),1)):xe("",!0),T("div",Q$,[T("button",{onClick:u},"+ 新增"),T("button",{disabled:R(e).timeline.animations.length<=1,onClick:f},"删除",8,eX)]),R(e).timeline.animations.length<=1?(z(),J("div",tX,"至少需要保留一个动画")):xe("",!0)],32)):xe("",!0)],512),T("label",sX,[G[17]||(G[17]=gt("Spine 预览动画 ",-1)),T("select",{class:"tl-sel",value:((se=F.value)==null?void 0:se.selectedAnimation)||"",disabled:!F.value,onChange:I},[T("option",nX,ye(F.value?"无":"无可用 Spine 动画"),1),(z(!0),J(Ce,null,Ft(((ue=F.value)==null?void 0:ue.animations)||[],ne=>(z(),J("option",{key:ne.name,value:ne.name},ye(ne.name)+"("+ye(ne.duration.toFixed(2))+"s) ",9,rX))),128))],40,iX)]),T("span",oX,ye(_.value),1)]),T("div",{class:"tl-viewport",ref_key:"vpRef",ref:t,onWheel:Ke(ge,["prevent"]),onPointerdown:he},[T("div",aX,[(z(!0),J(Ce,null,Ft(N.value,ne=>(z(),J("div",{key:ne.f,class:"tl-tickline",style:Vt({left:ne.px+"px"})},[T("span",lX,ye(ne.f)+"f",1)],4))),128))]),T("div",{class:"tl-playhead",style:Vt({left:U.value+"px"})},null,4),T("div",cX,[(z(!0),J(Ce,null,Ft(R(e).systems,(ne,de)=>(z(),J("div",{key:ne.id,class:"tl-lane"},[G[19]||(G[19]=T("span",{class:"lane-ico"},"●",-1)),T("div",{class:"lane-bar",style:Vt({left:A(ne)+"px",width:O(ne)+"px"}),onPointerdown:Ke(le=>fe(le,ne),["stop"])},[T("span",uX,ye(ne.config.name||"系统 "+(de+1)),1),T("span",{class:Ae(["bar-life",{"loop-life":V(ne)}]),style:Vt({width:$(ne)+"px"})},null,6),V(ne)?(z(),J(Ce,{key:0},[j(ne)?(z(),J("span",{key:0,class:"bar-loop-transition bar-loop-start",style:Vt({width:j(ne)+"px"})},null,4)):xe("",!0),T("span",{class:"bar-emission bar-loop",style:Vt({left:j(ne)+"px",width:L(ne)+"px"})},[T("span",{class:"bar-handle",title:"拖动循环段时长",onPointerdown:Ke(le=>Y(le,ne),["stop"])},null,40,dX)],4),K(ne)?(z(),J("span",{key:1,class:"bar-loop-transition bar-loop-end",style:Vt({left:j(ne)+L(ne)+"px",width:K(ne)+"px"})},null,4)):xe("",!0)],64)):ne.config.mode==="stream"?(z(),J("span",{key:1,class:"bar-emission",style:Vt({width:L(ne)+"px"})},[T("span",{class:"bar-handle",title:"拖动持续发射时长",onPointerdown:Ke(le=>Y(le,ne),["stop"])},null,40,fX)],4)):xe("",!0)],44,hX)]))),128)),(z(!0),J(Ce,null,Ft(E.value,ne=>(z(),J("div",{key:`spine-${ne.id}`,class:"tl-lane spine-lane"},[G[20]||(G[20]=T("span",{class:"lane-ico spine-ico"},"◆",-1)),T("div",{class:"spine-bar",style:Vt({left:re(ne)+"px",width:pe(ne)+"px"}),title:"拖动调整动画开始时间",onPointerdown:Ke(de=>W(de,ne),["stop"])},[T("span",pX,ye(ne.name)+" · "+ye(ne.selectedAnimation),1)],44,mX)]))),128)),!R(e).systems.length&&!E.value.length?(z(),J("div",gX,"暂无可显示的动画数据")):xe("",!0)])],544)])}}}),yX=Jt(vX,[["__scopeId","data-v-1e581e89"]]),xX={class:"transfer-heading"},bX={key:0},wX={class:"transfer-detail"},SX=Zt({__name:"TransferProgressOverlay",setup(i){const e=Fe(null);return cs(()=>Qt.visible,async t=>{var s;t&&(await zh(),(s=e.value)==null||s.focus({preventScroll:!0}))},{flush:"post"}),(t,s)=>(z(),At(i_,{name:"transfer-fade"},{default:qh(()=>[R(Qt).visible?(z(),J("div",{key:0,ref_key:"overlayElement",ref:e,class:"transfer-overlay",role:"dialog","aria-modal":"true","aria-live":"polite",tabindex:"-1",onPointerdown:s[0]||(s[0]=Ke(()=>{},["stop","prevent"])),onPointerup:s[1]||(s[1]=Ke(()=>{},["stop","prevent"])),onClick:s[2]||(s[2]=Ke(()=>{},["stop","prevent"])),onDblclick:s[3]||(s[3]=Ke(()=>{},["stop","prevent"])),onContextmenu:s[4]||(s[4]=Ke(()=>{},["stop","prevent"])),onWheel:s[5]||(s[5]=Ke(()=>{},["stop","prevent"])),onKeydown:s[6]||(s[6]=Ke(()=>{},["stop","prevent"]))},[T("div",{class:Ae(["transfer-dialog",{failed:R(Qt).failed}])},[T("div",xX,[T("span",null,ye(R(Qt).title),1),R(Qt).indeterminate?xe("",!0):(z(),J("strong",bX,ye(Math.round(R(Qt).progress))+"%",1))]),T("div",{class:Ae(["transfer-track",{indeterminate:R(Qt).indeterminate}])},[T("div",{class:"transfer-bar",style:Vt(R(Qt).indeterminate?void 0:{width:`${R(Qt).progress}%`})},null,4)],2),T("div",wX,ye(R(Qt).detail),1)],2)],544)):xe("",!0)]),_:1}))}}),MX=Jt(SX,[["__scopeId","data-v-592b922e"]]),TX=["inert","aria-hidden"],_X={class:"right"},CX={class:"stage-area"},AX=Zt({__name:"App",setup(i){const e=yo();PR(e);const t=Fe(360),s=Fe(180);function n(o){o.preventDefault();const a=c=>{const h=e.settings.parameterPanelOnRight?window.innerWidth-c.clientX:c.clientX,u=Math.max(240,Math.min(h,window.innerWidth-200));t.value=u},l=()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",l)};window.addEventListener("pointermove",a),window.addEventListener("pointerup",l)}function r(o){o.preventDefault();const a=o.clientY,l=s.value,c=u=>{const d=Math.max(80,Math.min(l+(a-u.clientY),window.innerHeight-200));s.value=d},h=()=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",h)};window.addEventListener("pointermove",c),window.addEventListener("pointerup",h)}return(o,a)=>(z(),J(Ce,null,[T("div",{class:Ae(["layout",{"panel-right":R(e).settings.parameterPanelOnRight}]),inert:R(Qt).visible?!0:void 0,"aria-hidden":R(Qt).visible?"true":void 0},[T("div",{class:"parameter-panel",style:Vt({width:t.value+"px"})},[be(D$)],4),T("div",{class:"resizer-col",onPointerdown:n},null,32),T("div",_X,[T("div",CX,[be(g3)]),T("div",{class:"resizer-row",onPointerdown:r,title:"拖动调整时间轴高度"},null,32),T("div",{class:"timeline-area",style:Vt({height:s.value+"px"})},[be(yX)],4)])],10,TX),be(MX)],64))}}),EX=Jt(AX,[["__scopeId","data-v-42c4fa00"]]);P_(EX).use(O_()).mount("#app");export{yy as $,rn as A,Fh as B,Et as C,gs as D,ke as E,Gs as F,hn as G,st as H,vt as I,IS as J,Ds as K,ii as L,gi as M,Mr as N,yu as O,nn as P,yl as Q,ha as R,Ci as S,Q3 as T,Ge as U,dy as V,Ii as W,iV as X,KO as Y,Ml as Z,bp as _,ze as a,Pm as a$,vy as a0,lS as a1,kp as a2,tV as a3,Ih as a4,sl as a5,cO as a6,il as a7,xu as a8,Am as a9,Um as aA,$m as aB,Mc as aC,rr as aD,Uc as aE,Em as aF,dS as aG,zt as aH,rS as aI,W6 as aJ,na as aK,gy as aL,Ee as aM,Ve as aN,Rm as aO,$c as aP,gS as aQ,Im as aR,mS as aS,pS as aT,bu as aU,xS as aV,Xc as aW,SS as aX,vS as aY,bS as aZ,MS as a_,wo as aa,Fp as ab,Op as ac,my as ad,Ol as ae,Ll as af,Fl as ag,bo as ah,Fn as ai,q6 as aj,uS as ak,lO as al,da as am,br as an,Np as ao,ES as ap,oO as aq,Sl as ar,Ws as as,py as at,J6 as au,va as av,Dm as aw,Xm as ax,Vm as ay,Ym as az,la as b,Hn as b$,kh as b0,yS as b1,Cr as b2,wS as b3,Lp as b4,J3 as b5,CS as b6,AS as b7,Bp as b8,cn as b9,TS as bA,Dp as bB,vu as bC,RS as bD,km as bE,ms as bF,K3 as bG,tO as bH,zw as bI,Ww as bJ,K6 as bK,Bt as bL,ya as bM,PS as bN,OS as bO,LS as bP,BS as bQ,kS as bR,FS as bS,rO as bT,Up as bU,Mt as bV,Nm as bW,fS as bX,Kw as bY,Zw as bZ,Jw as b_,Z3 as ba,z6 as bb,et as bc,hS as bd,cS as be,oS as bf,aS as bg,lo as bh,Rh as bi,aO as bj,Qw as bk,eS as bl,Vs as bm,tS as bn,ua as bo,_s as bp,qw as bq,Ph as br,sS as bs,iS as bt,nS as bu,xy as bv,Lm as bw,Zr as bx,_S as by,Om as bz,ca as c,Z6 as c0,iO as c1,nO as c2,sO as c3,He as d,Xe as e,Q6 as f,Qe as g,bs as h,lh as i,qs as j,Ut as k,$e as l,ki as m,Ot as n,fp as o,ts as p,xl as q,ir as r,Le as s,pb as t,xp as u,fh as v,Fm as w,qr as x,fy as y,Bm as z}; diff --git a/dist/assets/index-yF8mmEQU.js b/dist/assets/index-BS4GpQRH.js similarity index 99% rename from dist/assets/index-yF8mmEQU.js rename to dist/assets/index-BS4GpQRH.js index 114fbd3..b19e2ef 100644 --- a/dist/assets/index-yF8mmEQU.js +++ b/dist/assets/index-BS4GpQRH.js @@ -1,2 +1,2 @@ -var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-CkcQpCi2.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-CkcQpCi2.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((r,l)=>{this.downloader.downloadText(t,c=>{try{const a=this.createTextureAtlas(c,o,t,s);let h=a.pages.length,m=!1;if(h===0){this.success(e,t,a),r(a);return}for(const y of a.pages)this.loadTexture(this.texturePath(o,y.name,s),(A,u)=>{m||(y.setTexture(u),--h===0&&(this.success(e,t,a),r(a)))},(A,u)=>{if(!m){const g=`Couldn't load texture ${t} page image: ${A}`;this.error(n,t,g),l(g)}m=!0})}catch(a){const h=`Couldn't parse texture atlas ${t}: ${a.message}`;this.error(n,t,h),l(h)}},(c,a)=>{const h=`Couldn't load texture atlas ${t}: status ${c}, ${a}`;this.error(n,t,h),l(h)})}))}loadTextureAtlasButNoTextures(t,e=()=>{},n=()=>{}){const s=t.lastIndexOf("/"),i=s>=0?t.substring(0,s+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((o,r)=>{this.downloader.downloadText(t,l=>{try{const c=this.createTextureAtlas(l,i,t);this.success(e,t,c),o(c)}catch(c){const a=`Couldn't parse texture atlas ${t}: ${c.message}`;this.error(n,t,a),r(a)}},(l,c)=>{const a=`Couldn't load texture atlas ${t}: status ${l}, ${c}`;this.error(n,t,a),r(a)})}))}async loadBinaryAsync(t){return new Promise((e,n)=>{this.loadBinary(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadJsonAsync(t){return new Promise((e,n)=>{this.loadJson(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAsync(t){return new Promise((e,n)=>{this.loadTexture(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasAsync(t){return new Promise((e,n)=>{this.loadTextureAtlas(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasButNoTexturesAsync(t){return new Promise((e,n)=>{this.loadTextureAtlasButNoTextures(t,(s,i)=>e(i),(s,i)=>n(i))})}setCache(t){this.cache=t}get(t){return this.cache.assets[this.pathPrefix+t]}require(t){t=this.pathPrefix+t;const e=this.cache.assets[t];if(e)return e;const n=this.errors[t];throw Error(`Asset not found: ${t}${n?` +var ft=Object.defineProperty;var gt=(W,t,e)=>t in W?ft(W,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):W[t]=e;var T=(W,t,e)=>gt(W,typeof t!="symbol"?t+"":t,e);import{f as ht,R as pt,N as dt,ac as ut,Z as mt,b4 as yt,O as rt,b5 as at,U as D,B as Tt}from"./index-BDM5NpkZ.js";import{$ as Rt,a0 as Yt,a1 as Ft,a2 as Et,y as _t,a3 as Ot,a4 as kt,a5 as Xt,a6 as Bt,a7 as Nt,a8 as Dt,a9 as $t,aa as zt,ab as Wt,ad as qt,H as Gt,ae as Jt,af as Ht,ag as Zt,ah as Kt,ai as Qt,aj as jt,ak as te,al as ee,am as se,an as ne,ao as ie,ap as oe,aq as re,ar as ae,as as le,at as ce,au as he,av as pe,aw as de,ax as ue,ay as fe,az as ge,aA as me,aB as ye,aC as Te,aD as be,aE as we,aF as xe,aG as Ae,aH as Pe,aI as Ie,aJ as Ce,aK as Ve,aL as Le,aM as Se,aN as Me,aO as ve,aP as Ue,aQ as Re,aR as Ye,aS as Fe,aT as Ee,x as _e,aU as Oe,aV as ke,aW as Xe,aX as Be,aY as Ne,aZ as De,a_ as $e,a$ as ze,b0 as We,b1 as qe,b2 as Ge,b3 as Je,b6 as He,b7 as Ze,b8 as Ke,b9 as Qe,ba as je,bb as ts,bc as es,bd as ss,be as ns,bf as is,bg as os,bh as rs,bi as as,bj as ls,bk as cs,bl as hs,bm as ps,bn as ds,bo as us,bp as fs,bq as gs,br as ms,bs as ys,bt as Ts,bu as bs,w as ws,X as xs,J as As,Y as Ps,z as Is,bv as Cs,bw as Vs,bx as Ls,by as Ss,bz as Ms,bA as vs,bB as Us,bC as Rs,bD as Ys,bE as Fs,bF as Es,bG as _s,T as Os,bH as ks,bI as Xs,b as Bs,bJ as Ns,c as Ds,bK as $s,bL as zs,bM as Ws,bN as qs,bO as Gs,bP as Js,bQ as Hs,bR as Zs,bS as Ks,bT as Qs,bU as js,bV as tn,bW as en,bX as sn,bY as nn,bZ as on,b_ as rn,V as an,b$ as ln,c0 as cn,c1 as hn,c2 as pn,c3 as dn}from"./index-BDM5NpkZ.js";class It{constructor(t){T(this,"skeletonData");T(this,"animationToMixTime",{});T(this,"defaultMix",0);if(!t)throw new Error("skeletonData cannot be null.");this.skeletonData=t}setMix(t,e,n){return typeof t=="string"?this.setMix1(t,e,n):this.setMix2(t,e,n)}setMix1(t,e,n){const s=this.skeletonData.findAnimation(t);if(!s)throw new Error(`Animation not found: ${t}`);const i=this.skeletonData.findAnimation(e);if(!i)throw new Error(`Animation not found: ${e}`);this.setMix2(s,i,n)}setMix2(t,e,n){if(!t)throw new Error("from cannot be null.");if(!e)throw new Error("to cannot be null.");const s=`${t.name}.${e.name}`;this.animationToMixTime[s]=n}getMix(t,e){const n=`${t.name}.${e.name}`,s=this.animationToMixTime[n];return s===void 0?this.defaultMix:s}}class Ct{constructor(t,e="",n=new bt,s=new lt){T(this,"textureLoader");T(this,"pathPrefix");T(this,"downloader");T(this,"cache");T(this,"errors",{});T(this,"toLoad",0);T(this,"loaded",0);T(this,"texturePmaInfo",{});this.textureLoader=t,this.pathPrefix=e,this.downloader=n,this.cache=s}start(t){return this.toLoad++,this.pathPrefix+t}success(t,e,n){this.toLoad--,this.loaded++,this.cache.assets[e]=n,this.cache.assetsRefCount[e]=(this.cache.assetsRefCount[e]||0)+1,t&&t(e,n)}error(t,e,n){this.toLoad--,this.loaded++,this.errors[e]=n,t&&t(e,n)}loadAll(){return new Promise((e,n)=>{const s=()=>{if(this.isLoadingComplete()){this.hasErrors()?n(this.errors):e(this);return}requestAnimationFrame(s)};requestAnimationFrame(s)})}setRawDataURI(t,e){this.downloader.rawDataUris[this.pathPrefix+t]=e}loadBinary(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadBinary(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load binary ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}loadText(t,e=()=>{},n=()=>{}){t=this.start(t),this.downloader.downloadText(t,s=>{this.success(e,t,s)},(s,i)=>{this.error(n,t,`Couldn't load text ${t}: status ${s}, ${i}`)})}loadJson(t,e=()=>{},n=()=>{}){t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((s,i)=>{this.downloader.downloadJson(t,o=>{this.success(e,t,o),s(o)},(o,r)=>{const l=`Couldn't load JSON ${t}: status ${o}, ${r}`;this.error(n,t,l),i(l)})}))}reuseAssets(t,e=()=>{},n=()=>{}){const s=this.cache.getAsset(t),i=s!==void 0;return i&&(this.cache.assetsLoaded[t]=s.then(o=>(o=o instanceof Image||o instanceof ImageBitmap?this.textureLoader(o):o,this.success(e,t,o),o)).catch(o=>{this.error(n,t,o)})),i}loadTexture(t,e=()=>{},n=()=>{}){if(t=this.start(t),this.reuseAssets(t,e,n))return;const s=this.texturePmaInfo[t];this.cache.assetsLoaded[t]=new Promise((i,o)=>{if(!!!(typeof window<"u"&&typeof navigator<"u"&&window.document))fetch(t,{mode:"cors"}).then(c=>{if(c.ok)return c.blob();const a=`Couldn't load image: ${t}`;this.error(n,t,`Couldn't load image: ${t}`),o(a)}).then(c=>c?createImageBitmap(c,{premultiplyAlpha:"none",colorSpaceConversion:"none"}):null).then(c=>{if(c){const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)}});else{const c=new Image;c.crossOrigin="anonymous",c.onload=()=>{const a=this.createTexture(t,s,c);this.success(e,t,a),i(a)},c.onerror=()=>{const a=`Couldn't load image: ${t}`;this.error(n,t,a),o(a)},this.downloader.rawDataUris[t]&&(t=this.downloader.rawDataUris[t]),c.src=t}})}loadTextureAtlas(t,e=()=>{},n=()=>{},s){const i=t.lastIndexOf("/"),o=i>=0?t.substring(0,i+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((r,l)=>{this.downloader.downloadText(t,c=>{try{const a=this.createTextureAtlas(c,o,t,s);let h=a.pages.length,m=!1;if(h===0){this.success(e,t,a),r(a);return}for(const y of a.pages)this.loadTexture(this.texturePath(o,y.name,s),(A,u)=>{m||(y.setTexture(u),--h===0&&(this.success(e,t,a),r(a)))},(A,u)=>{if(!m){const g=`Couldn't load texture ${t} page image: ${A}`;this.error(n,t,g),l(g)}m=!0})}catch(a){const h=`Couldn't parse texture atlas ${t}: ${a.message}`;this.error(n,t,h),l(h)}},(c,a)=>{const h=`Couldn't load texture atlas ${t}: status ${c}, ${a}`;this.error(n,t,h),l(h)})}))}loadTextureAtlasButNoTextures(t,e=()=>{},n=()=>{}){const s=t.lastIndexOf("/"),i=s>=0?t.substring(0,s+1):"";t=this.start(t),!this.reuseAssets(t,e,n)&&(this.cache.assetsLoaded[t]=new Promise((o,r)=>{this.downloader.downloadText(t,l=>{try{const c=this.createTextureAtlas(l,i,t);this.success(e,t,c),o(c)}catch(c){const a=`Couldn't parse texture atlas ${t}: ${c.message}`;this.error(n,t,a),r(a)}},(l,c)=>{const a=`Couldn't load texture atlas ${t}: status ${l}, ${c}`;this.error(n,t,a),r(a)})}))}async loadBinaryAsync(t){return new Promise((e,n)=>{this.loadBinary(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadJsonAsync(t){return new Promise((e,n)=>{this.loadJson(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAsync(t){return new Promise((e,n)=>{this.loadTexture(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasAsync(t){return new Promise((e,n)=>{this.loadTextureAtlas(t,(s,i)=>e(i),(s,i)=>n(i))})}async loadTextureAtlasButNoTexturesAsync(t){return new Promise((e,n)=>{this.loadTextureAtlasButNoTextures(t,(s,i)=>e(i),(s,i)=>n(i))})}setCache(t){this.cache=t}get(t){return this.cache.assets[this.pathPrefix+t]}require(t){t=this.pathPrefix+t;const e=this.cache.assets[t];if(e)return e;const n=this.errors[t];throw Error(`Asset not found: ${t}${n?` ${n}`:""}`)}remove(t){t=this.pathPrefix+t;const e=this.cache.assets[t];return e.dispose&&e.dispose(),delete this.cache.assets[t],delete this.cache.assetsRefCount[t],delete this.cache.assetsLoaded[t],e}removeAll(){for(const t in this.cache.assets){const e=this.cache.assets[t];e.dispose&&e.dispose()}this.cache.assets={},this.cache.assetsLoaded={},this.cache.assetsRefCount={}}isLoadingComplete(){return this.toLoad===0}getToLoad(){return this.toLoad}getLoaded(){return this.loaded}dispose(){this.removeAll()}disposeAsset(t){const e=this.cache.assets[t];if(e instanceof ht){e.dispose();return}this.disposeAssetInternal(t)}hasErrors(){return Object.keys(this.errors).length>0}getErrors(){return this.errors}disposeAssetInternal(t){if(this.cache.assetsRefCount[t]>0&&--this.cache.assetsRefCount[t]===0)return this.remove(t)}createTextureAtlas(t,e,n,s){const i=new ht(t);i.dispose=()=>{var o;if(!(this.cache.assetsRefCount[n]<=0)){this.disposeAssetInternal(n);for(const r of i.pages)(o=r.texture)==null||o.dispose()}};for(const o of i.pages){const r=this.texturePath(e,o.name,s);this.texturePmaInfo[this.pathPrefix+r]=o.pma}return i}createTexture(t,e,n){const s=this.textureLoader(n,e),i=s.dispose.bind(s);return s.dispose=()=>{this.disposeAssetInternal(t)&&i()},s}texturePath(t,e,n){return n?n[e]:t+e}}const nt=class nt{constructor(){T(this,"assets",{});T(this,"assetsRefCount",{});T(this,"assetsLoaded",{})}static getCache(t){const e=nt.AVAILABLE_CACHES.get(t);if(e)return e;const n=new nt;return nt.AVAILABLE_CACHES.set(t,n),n}async addAsset(t,e){return this.assetsLoaded[t]=Promise.resolve(e),this.assets[t]=e,e}getAsset(t){return this.assetsLoaded[t]}};T(nt,"AVAILABLE_CACHES",new Map);let lt=nt;class bt{constructor(){T(this,"callbacks",{});T(this,"rawDataUris",{})}dataUriToString(t){if(!t.startsWith("data:"))throw new Error("Not a data URI.");let e=t.indexOf("base64,");return e!==-1?(e+=7,atob(t.substr(e))):t.substr(t.indexOf(",")+1)}base64ToUint8Array(t){var e=window.atob(t),n=e.length,s=new Uint8Array(n);for(let i=0;i{this.finish(t,i.status,i.responseText)};i.onload=o,i.onerror=o,i.send()}downloadJson(t,e,n){this.downloadText(t,s=>{e(JSON.parse(s))},n)}downloadBinary(t,e,n){if(this.start(t,e,n))return;const s=this.rawDataUris[t];if(s&&!s.includes(".")){try{this.finish(t,200,this.dataUriToUint8Array(s))}catch(r){this.finish(t,400,JSON.stringify(r))}return}const i=new XMLHttpRequest;i.open("GET",s||t,!0),i.responseType="arraybuffer";const o=()=>{this.finish(t,i.status,i.response)};i.onload=()=>{i.status===200||i.status===0?this.finish(t,200,new Uint8Array(i.response)):o()},i.onerror=o,i.send()}start(t,e,n){let s=this.callbacks[t];try{if(s)return!0;this.callbacks[t]=s=[]}finally{s.push(e,n)}}finish(t,e,n){const s=this.callbacks[t];if(delete this.callbacks[t],e===200||e===0)for(let i=0,o=s.length;iD.newFloatArray(16)))}update(t,e){if(!t)throw new Error("skeleton cannot be null.");const n=this.boundingBoxes,s=this.polygons,i=this.polygonPool,o=t.slots,r=o.length;n.length=0,i.freeAll(s),s.length=0;for(let l=0;l=this.minX&&t<=this.maxX&&e>=this.minY&&e<=this.maxY}aabbIntersectsSegment(t,e,n,s){const i=this.minX,o=this.minY,r=this.maxX,l=this.maxY;if(t<=i&&n<=i||e<=o&&s<=o||t>=r&&n>=r||e>=l&&s>=l)return!1;const c=(s-e)/(n-t);let a=c*(i-t)+e;if(a>o&&ao&&ai&&hi&&ht.minX&&this.minYt.minY}containsPoint(t,e){const n=this.polygons;for(let s=0,i=n.length;s=n||a=n){const h=s[l];h+(n-c)/(a-c)*(s[o]-h)=h&&f<=A||f>=A&&f<=h)&&(f>=e&&f<=s||f>=s&&f<=e)){const x=(a*L-c*g)/C;if((x>=m&&x<=u||x>=u&&x<=m)&&(x>=n&&x<=i||x>=i&&x<=n))return!0}h=A,m=u}return!1}getPolygon(t){if(!t)throw new Error("boundingBox cannot be null.");const e=this.boundingBoxes.indexOf(t);return e===-1?null:this.polygons[e]}getWidth(){return this.maxX-this.minX}getHeight(){return this.maxY-this.minY}}class z{constructor(){T(this,"convexPolygons",[]);T(this,"convexPolygonsIndices",[]);T(this,"indicesArray",[]);T(this,"isConcaveArray",[]);T(this,"triangles",[]);T(this,"polygonPool",new at(()=>[]));T(this,"polygonIndicesPool",new at(()=>[]))}triangulate(t){const e=t;let n=t.length>>1;const s=this.indicesArray;s.length=0;for(let r=0;r3;){let r=n-1,l=0,c=1;for(;;){t:if(!i[l]){const m=s[r]<<1,y=s[l]<<1,A=s[c]<<1,u=e[m],g=e[m+1],b=e[y],L=e[y+1],C=e[A],f=e[A+1];for(let x=c+10);r=l>0?l-1:n-1,c=l+10?l-1:n-1,h=l0&&(s.push(r),i.push(o),r=this.polygonPool.obtain(),o=this.polygonIndicesPool.obtain()),r.length=0,r.push(u,g,b,L),r.push(C,f),o.length=0,o.push(m,y,A),c=z.winding(u,g,b,L,C,f),l=m}r.length>0&&(s.push(r),i.push(o));for(let a=0,h=s.length;a=0;a--)r=s[a],r.length===0?(s.splice(a,1),this.polygonPool.free(r),o=i[a],i.splice(a,1),this.polygonIndicesPool.free(o)):r.push(r[0],r[1]);return s}static isConcave(t,e,n,s){const i=s[t>0?t-1:e-1]<<1,o=s[t]<<1,r=s[t+1=0}static winding(t,e,n,s,i,o){return t*(o-s)+n*(e-o)+i*(s-e)>=0?1:-1}}class wt{constructor(){T(this,"triangulator",null);T(this,"clippingPolygon",[]);T(this,"clippingPolygons",[]);T(this,"clipOutput",[]);T(this,"clippedVertices",[]);T(this,"clippedUVs",[]);T(this,"clippedTriangles",[]);T(this,"inverseVertices",[]);T(this,"_clippedVerticesTyped",new Float32Array(1024));T(this,"_clippedUVsTyped",new Float32Array(1024));T(this,"_clippedTrianglesTyped",new Uint16Array(1024));T(this,"clippedVerticesTyped",new Float32Array(0));T(this,"clippedUVsTyped",new Float32Array(0));T(this,"clippedTrianglesTyped",new Uint16Array(0));T(this,"clippedVerticesLength",0);T(this,"clippedUVsLength",0);T(this,"clippedTrianglesLength",0);T(this,"scratch",[]);T(this,"inverse",!1);T(this,"clipAttachment",null)}clipStart(t,e,n){if(this.clipAttachment)return;const s=n.worldVerticesLength;this.clipAttachment=n,this.inverse=n.inverse;const i=D.setArraySize(this.clippingPolygon,s);n.computeWorldVertices(t,e,0,s,i,0,2);const o=this.clippingPolygon,r=this.makeClockwise(o);r||this.inverse||n.convex?(r||this.makeConvex(o),this.clippingPolygon.push(o[0],o[1]),this.clippingPolygons.push(o)):(this.triangulator===null&&(this.triangulator=new z),this.clippingPolygons.push(...this.triangulator.decompose(o,this.triangulator.triangulate(o))))}clipEnd(t){this.clipAttachment&&(t&&this.clipAttachment.endSlot!==t.data||(this.clipAttachment=null,this.clippingPolygons.length=0))}isClipping(){return this.clipAttachment!=null}clipTriangles(t,e,n,s,i,o,r,l){return s&&i&&o&&typeof r=="boolean"&&typeof l=="number"?this.clipTrianglesRender(t,e,n,s,i,o,r,l):this.clipTrianglesNoRender(t,e,n)}clipTrianglesNoRender(t,e,n){const s=this.clippedVertices;s.length=0;const i=this.clippedTriangles;i.length=0;let o=0;if(this.inverse){const h=this.clippingPolygons[0];for(let m=0;m>1,I=s.length;const R=D.setArraySize(s,I+P);D.arrayCopy(f,x,R,I,P),I=i.length;const v=D.setArraySize(i,I+3*(M-2));for(let V=1;V>1;const P=D.setArraySize(s,f+x);D.arrayCopy(a,0,P,f,x),f=i.length;const M=D.setArraySize(i,f+3*(S-2));S--;for(let I=1;I>1;let F=c.length;const N=D.setArraySize(c,F+G*l);for(let X=0;X>1;q===0&&(U=P-v,O=R-S,B=L-R,K=v-C,q=1/(U*B-O*K));const E=D.setArraySize(c,d+_*l);for(let Y=0;Y>1;let Y=this.clippedVerticesLength;const G=Y+k*o,F=this.clippedUVsLength+k*2;r.length>1;J===0&&(O=M-V,B=v-P,K=L-v,q=V-C,J=1/(O*K-B*q));const k=p+E*o;r.length=2?(a=this.clipOutput,h=this.scratch):(a=this.scratch,h=this.clipOutput);const m=r;a.length=8;const y=a;y[0]=t,y[1]=e,y[2]=n,y[3]=s,y[4]=i,y[5]=o,y[6]=t,y[7]=e,h.length=0;const A=r.length-4;for(let u=0;;u+=2){const g=m[u],b=m[u+1],L=g-m[u+2],C=b-m[u+3],f=h.length,x=a;t=x[0],e=x[1];let S=C*(g-t)-L*(b-e);for(let M=2,I=a.length-2;M<=I;M+=2){n=x[M],s=x[M+1];const R=C*(g-n)-L*(b-s);if(S>0)if(R>0)h.push(n,s);else{const v=n-t,V=s-e,w=S/(v*C-V*L);w>=0&&w<=1?(h.push(t+v*w,e+V*w),c=!0):h.push(n,s)}else if(R>0){const v=n-t,V=s-e,w=S/(v*C-V*L);w>=0&&w<=1?(h.push(t+v*w,e+V*w,n,s),c=!0):h.push(n,s)}else c=!0;t=n,e=s,S=R}if(f===h.length)return l.length=0,!0;if(h.push(h[0],h[1]),u===A)break;const P=h;h=a,h.length=0,a=P}if(l!==h){l.length=0;for(let u=0,g=h.length-2;u=2?(c=this.clipOutput,a=this.scratch):(c=this.scratch,a=this.clipOutput),c.length=8;let h=r,m=c;m[0]=t,m[1]=e,m[2]=n,m[3]=s,m[4]=i,m[5]=o,m[6]=t,m[7]=e,a.length=0;for(let y=0;;y+=2){const A=h[y],u=h[y+1],g=A-h[y+2],b=u-h[y+3],L=a.length,C=this.inverseVertices.length;this.inverseVertices.push(0),m=c,t=m[0],e=m[1];let f=b*(A-t)-g*(u-e);for(let P=2,M=c.length-2;P<=M;P+=2){n=m[P],s=m[P+1];const I=b*(A-n)-g*(u-s);if(f>0)if(I>0)a.push(n,s);else{const R=n-t,v=s-e,V=f/(R*b-v*g);if(V>=0&&V<=1){const w=t+R*V,U=e+v*V;a.push(w,U),this.inverseVertices.push(w,U,n,s)}else a.push(n,s)}else if(I>0){const R=n-t,v=s-e,V=f/(R*b-v*g);if(V>=0&&V<=1){const w=t+R*V,U=e+v*V;this.inverseVertices.push(w,U),a.push(w,U,n,s)}else a.push(n,s)}else this.inverseVertices.push(n,s);t=n,e=s,f=I}const x=this.inverseVertices.length-C-1;if(x>=6?this.inverseVertices[C]=x:this.inverseVertices.length=C,L===a.length||(a.push(a[0],a[1]),y===l))break;const S=a;a=c,a.length=0,c=S}}makeClockwise(t){const e=t,n=t.length;let s=!0,i=!0,o=0,r=e[n-2],l=e[n-1],c=e[0],a=e[1];for(let m=2;m=0,r=c,l=a,c=y,a=A}o+=c*e[1]-e[0]*a;const h=(c-r)*(e[1]-a)-(a-l)*(e[0]-c);if(i=i&&h<=0,s=s&&h>=0,o>=0){for(let m=0,y=n-2,A=n>>1;m=0&&(s[a]>l||s[a]===l&&s[a+1]>c);a-=2)s[a+2]=s[a],s[a+3]=s[a+1];s[a+2]=l,s[a+3]=c}n[0]=s[0],n[1]=s[1],n[2]=s[2],n[3]=s[3];let i=4;for(let r=4;r=0&&(i-=2,i!==2););n[i]=l,n[i+1]=c}n[i]=s[e-4],n[i+1]=s[e-3];const o=i;i+=2;for(let r=e-6;r>=0;r-=2,i+=2){const l=s[r],c=s[r+1];for(;(n[i-2]-n[i-4])*(c-n[i-3])-(n[i-1]-n[i-3])*(l-n[i-4])>=0&&(i-=2,i!==o););n[i]=l,n[i+1]=c}t.length=i-2}}class St{constructor(t,e,n={}){T(this,"skeleton");T(this,"adapter");T(this,"positionInheritanceFactorX",0);T(this,"positionInheritanceFactorY",0);T(this,"rotationInheritanceFactor",0);T(this,"hasLastTransform",!1);T(this,"lastX",0);T(this,"lastY",0);T(this,"lastZ",0);T(this,"lastRotation",0);T(this,"currentTransform",{x:0,y:0,z:0,rotation:0});T(this,"currentPosition",{x:0,y:0,z:0});T(this,"lastPosition",{x:0,y:0,z:0});this.skeleton=t,this.adapter=e,this.positionInheritanceFactorX=n.positionInheritanceX??0,this.positionInheritanceFactorY=n.positionInheritanceY??0,this.rotationInheritanceFactor=n.rotationInheritance??0}get positionInheritanceX(){return this.positionInheritanceFactorX}get positionInheritanceY(){return this.positionInheritanceFactorY}setPositionInheritance(t,e){const n=this.positionInheritanceFactorX===0&&this.positionInheritanceFactorY===0,s=t!==0||e!==0;this.positionInheritanceFactorX=t,this.positionInheritanceFactorY=e,n&&s&&this.resetPosition()}get rotationInheritance(){return this.rotationInheritanceFactor}set rotationInheritance(t){const e=this.rotationInheritanceFactor===0;this.rotationInheritanceFactor=t,e&&t!==0&&this.resetRotation()}resetPosition(){const t=this.currentTransform,e=!this.hasLastTransform&&this.rotationInheritanceFactor!==0;this.adapter.readTransform(t,e),this.lastX=t.x,this.lastY=t.y,this.lastZ=t.z,e&&(this.lastRotation=t.rotation),this.hasLastTransform=!0}resetRotation(){const t=this.currentTransform;this.adapter.readTransform(t,!0),this.lastRotation=t.rotation,this.hasLastTransform||(this.lastX=t.x,this.lastY=t.y,this.lastZ=t.z),this.hasLastTransform=!0}resetTransform(){const t=this.currentTransform;this.adapter.readTransform(t,!0),this.setLastTransform(t.x,t.y,t.z,t.rotation)}applyTransformMovement(){const t=this.positionInheritanceFactorX!==0||this.positionInheritanceFactorY!==0,e=this.rotationInheritanceFactor!==0;if(!t&&!e)return;const n=this.currentTransform;this.adapter.readTransform(n,e);const{x:s,y:i,z:o}=n,r=e?n.rotation:this.lastRotation,l=s!==this.lastX||i!==this.lastY||o!==this.lastZ;if(this.hasLastTransform){if(!l&&r===this.lastRotation)return;t&&l&&this.applyPositionMovement(s,i,o),e&&r!==this.lastRotation&&this.applyRotationMovement(r)}this.setLastTransform(s,i,o,r)}applyPositionMovement(t,e,n){const s=this.currentPosition;s.x=t,s.y=e,s.z=n,this.adapter.worldToSkeleton(s);const i=this.lastPosition;i.x=this.lastX,i.y=this.lastY,i.z=this.lastZ,this.adapter.worldToSkeleton(i),this.skeleton.physicsTranslate((s.x-i.x)*this.positionInheritanceFactorX,(s.y-i.y)*this.positionInheritanceFactorY)}applyRotationMovement(t){const e=this.rotationInheritanceFactor;e!==0&&this.skeleton.physicsRotate(0,0,this.getRotationDelta(t,this.lastRotation)*e)}setLastTransform(t,e,n,s){this.lastX=t,this.lastY=e,this.lastZ=n,this.lastRotation=s,this.hasLastTransform=!0}getRotationDelta(t,e){let n=t-e;return n=(n+180)%360-180,n<-180?n+360:n}}class Mt{constructor(){T(this,"commandPool",new xt);T(this,"worldVertices",new Float32Array(12*1024));T(this,"quadIndices",new Uint16Array([0,1,2,2,3,0]));T(this,"clipping",new wt);T(this,"renderCommands",[])}render(t,e=!1,n,s=2,i=0){var c,a;this.commandPool.reset(),this.renderCommands.length=0;const o=this.clipping;let r=0;const l=t.drawOrder.appliedPose;for(let h=0,m=l.length;h>1;const w=u.sequence,U=w.resolveIndex(A);f=w.getUVs(U),x=u.triangles,S=x.length,M=(a=w.regions[U])==null?void 0:a.texture}else if(u instanceof rt){o.clipEnd(y),o.clipStart(t,y,u);continue}else{o.clipEnd(y);continue}if(!M){o.clipEnd(y);continue}const I=t.color;let R,v;if(e){let w;if(n){w=Math.floor(n[3]*I.a*g.a*P.a*255);const U=Math.floor(w*n[0]*I.r*g.r*P.r),O=Math.floor(w*n[1]*I.g*g.g*P.g),B=Math.floor(w*n[2]*I.b*g.b*P.b);R=w<<24|U<<16|O<<8|B}else{w=Math.floor(I.a*g.a*P.a*255);const U=Math.floor(w*I.r*g.r*P.r),O=Math.floor(w*I.g*g.g*P.g),B=Math.floor(w*I.b*g.b*P.b);R=w<<24|U<<16|O<<8|B}if(v=4278190080,A.darkColor){const{r:U,g:O,b:B}=A.darkColor;v=4278190080|Math.floor(U*w)<<16|Math.floor(O*w)<<8|Math.floor(B*w)}}else{if(n){const w=Math.floor(n[3]*I.a*g.a*P.a*255),U=Math.floor(n[0]*I.r*g.r*P.r*255),O=Math.floor(n[1]*I.g*g.g*P.g*255),B=Math.floor(n[2]*I.b*g.b*P.b*255);R=w<<24|U<<16|O<<8|B}else{const w=Math.floor(I.a*g.a*P.a*255),U=Math.floor(I.r*g.r*P.r*255),O=Math.floor(I.g*g.g*P.g*255),B=Math.floor(I.b*g.b*P.b*255);R=w<<24|U<<16|O<<8|B}if(v=0,A.darkColor){const{r:w,g:U,b:O}=A.darkColor;v=Math.floor(w*255)<<16|Math.floor(U*255)<<8|Math.floor(O*255)}}o.isClipping()&&(o.clipTrianglesUnpacked(L,0,x,S,f,s),L=o.clippedVerticesTyped,C=o.clippedVerticesLength/s,f=o.clippedUVsTyped,x=o.clippedTrianglesTyped,S=o.clippedTrianglesLength);const V=this.commandPool.getCommand(C,S,s);if(V.blendMode=y.data.blendMode,V.texture=M,V.positions.set(L.subarray(0,C*s)),s>=3)for(let w=2,U=C*s;w=t*n&&i._indices.length>=e){s=i;break}if(s)this.pool.splice(this.pool.indexOf(s),1),s.next=void 0,s.numVertices=t,s.numIndices=e,s.positions=s._positions.subarray(0,t*n),s.uvs=s._uvs.subarray(0,t<<1),s.colors=s._colors.subarray(0,t),s.darkColors=s._darkColors.subarray(0,t),s.indices=s._indices.subarray(0,e);else{const i=new Float32Array(t*n),o=new Float32Array(t<<1),r=new Uint32Array(t),l=new Uint32Array(t),c=new Uint16Array(e);s={positions:i,uvs:o,colors:r,darkColors:l,indices:c,_positions:i,_uvs:o,_colors:r,_darkColors:l,_indices:c,numVertices:t,numIndices:e,blendMode:Tt.Normal,texture:null}}return this.inUse.push(s),s}reset(){this.pool.push(...this.inUse),this.inUse.length=0}}export{Rt as ATTACH_RETAIN,Yt as ATTACH_SETUP,Ft as AlphaTimeline,Et as Animation,_t as AnimationState,Ot as AnimationStateAdapter,It as AnimationStateData,lt as AssetCache,Ct as AssetManagerBase,Vt as AtlasAttachmentLoader,kt as Attachment,Xt as AttachmentTimeline,Bt as BinaryInput,Tt as BlendMode,Nt as Bone,Dt as BoneData,$t as BonePose,zt as BoneTimeline1,Wt as BoneTimeline2,ut as BoundingBoxAttachment,qt as CURRENT,rt as ClippingAttachment,Gt as Color,Jt as Constraint,Ht as ConstraintData,Zt as ConstraintTimeline1,Kt as CurveTimeline,Qt as CurveTimeline1,jt as DebugUtils,te as DeformTimeline,bt as Downloader,ee as DrawOrder,se as DrawOrderFolderTimeline,ne as DrawOrderTimeline,ie as Event,oe as EventData,re as EventQueue,ae as EventTimeline,le as EventType,ce as FIRST,he as FakeTexture,pe as FromProperty,de as FromRotate,ue as FromScaleX,fe as FromScaleY,ge as FromShearY,me as FromX,ye as FromY,Te as HOLD,be as IkConstraint,we as IkConstraintData,xe as IkConstraintPose,Ae as IkConstraintTimeline,Pe as Inherit,Ie as InheritTimeline,Ce as IntSet,Ve as Interpolation,Le as MODE,Se as MathUtils,dt as MeshAttachment,Me as MixFrom,mt as PathAttachment,ve as PathConstraint,Ue as PathConstraintData,Re as PathConstraintMixTimeline,Ye as PathConstraintPose,Fe as PathConstraintPositionTimeline,Ee as PathConstraintSpacingTimeline,_e as Physics,Oe as PhysicsConstraint,ke as PhysicsConstraintDampingTimeline,Xe as PhysicsConstraintData,Be as PhysicsConstraintGravityTimeline,Ne as PhysicsConstraintInertiaTimeline,De as PhysicsConstraintMassTimeline,$e as PhysicsConstraintMixTimeline,ze as PhysicsConstraintPose,We as PhysicsConstraintResetTimeline,qe as PhysicsConstraintStrengthTimeline,Ge as PhysicsConstraintTimeline,Je as PhysicsConstraintWindTimeline,yt as PointAttachment,at as Pool,He as Posed,Ze as PosedActive,Ke as PosedData,Qe as PositionMode,je as Pow,ts as PowOut,es as Property,ss as RGB2Timeline,ns as RGBA2Timeline,is as RGBATimeline,os as RGBTimeline,pt as RegionAttachment,rs as RotateMode,as as RotateTimeline,ls as SETUP,cs as ScaleTimeline,hs as ScaleXTimeline,ps as ScaleYMode,ds as ScaleYTimeline,us as Sequence,fs as SequenceMode,gs as SequenceModeValues,ms as SequenceTimeline,ys as ShearTimeline,Ts as ShearXTimeline,bs as ShearYTimeline,ws as Skeleton,xs as SkeletonBinary,Lt as SkeletonBounds,wt as SkeletonClipping,As as SkeletonData,Ps as SkeletonJson,St as SkeletonPhysicsMovement,Mt as SkeletonRendererCore,Is as Skin,Cs as SkinEntry,Vs as Slider,Ls as SliderData,Ss as SliderMixTimeline,Ms as SliderPose,vs as SliderTimeline,Us as Slot,Rs as SlotCurveTimeline,Ys as SlotData,Fs as SlotPose,Es as SpacingMode,_s as StringSet,Os as Texture,ht as TextureAtlas,ks as TextureAtlasPage,Xs as TextureAtlasRegion,Bs as TextureFilter,Ns as TextureRegion,Ds as TextureWrap,$s as TimeKeeper,zs as Timeline,Ws as ToProperty,qs as ToRotate,Gs as ToScaleX,Js as ToScaleY,Hs as ToShearY,Zs as ToX,Ks as ToY,Qs as TrackEntry,js as TransformConstraint,tn as TransformConstraintData,en as TransformConstraintPose,sn as TransformConstraintTimeline,nn as TranslateTimeline,on as TranslateXTimeline,rn as TranslateYTimeline,z as Triangulator,D as Utils,an as Vector2,ln as VertexAttachment,cn as WindowedMean,hn as isBoneTimeline,pn as isConstraintTimeline,dn as isSlotTimeline}; diff --git a/dist/assets/index-BtGWLkYx.js b/dist/assets/index-CUwqGGwd.js similarity index 99% rename from dist/assets/index-BtGWLkYx.js rename to dist/assets/index-CUwqGGwd.js index d217c35..02a25ac 100644 --- a/dist/assets/index-BtGWLkYx.js +++ b/dist/assets/index-CUwqGGwd.js @@ -1,4 +1,4 @@ -var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-CkcQpCi2.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-CkcQpCi2.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-yF8mmEQU.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-yF8mmEQU.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadata,alphaMode:h.pma?me.PMA:me.UNPACK}},x=e.load(g).then(d=>{h.setTexture(G.from(d.baseTexture))});r.push(x)}}return await Promise.all(r),Q.setPreferences({preferCreateImageBitmap:l}),n}}};ce.add(et);const Z="spineSkeletonLoader";function tt(m){return m.hasOwnProperty("bones")}function st(m){return m instanceof Uint8Array}const ot={extension:O.Asset,loader:{name:Z,extension:{type:O.LoadParser,priority:Te.Normal,name:Z},test(m){return V(m,".skel")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${Z}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return new Uint8Array(await o.arrayBuffer())},testParse(m,o){const e=V(o.src,".json")&&tt(m),t=V(o.src,".skel")&&st(m),s=o.loadParser===Z;return Promise.resolve(e||t||s)}}};ce.add(ot);class nt extends we{constructor(o=!1){super();const e=new $(void 0),t=new $(void 0,!0),s=new $(void 0,!0,!0);this.addAttribute("aVertexPosition",e,2,!1,Y.FLOAT),this.addAttribute("aTextureCoord",t,2,!1,Y.FLOAT),this.addIndex(s)}}const at=` +var Ae=Object.defineProperty;var Be=(m,o,e)=>o in m?Ae(m,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[o]=e;var a=(m,o,e)=>Be(m,typeof o!="symbol"?o+"":o,e);import{T as Fe,a as he,b as F,S as ue,M as pe,c as oe,W as ne,B as H,d as z,L as Te,E as O,e as ce,p as q,f as Ee,g as fe,A as Q,h as me,i as De,j as V,s as re,G as we,k as $,l as Y,m as Le,P as Ie,n as Re,o as Ne,C as X,q as be,r as _e,t as Ue,u as Ye,v as Xe,w as ee,x as j,y as ke,z as Ve,D as J,F as ge,V as Ge,H as ae,I as We,J as $e,U as xe,K as E,R as ve,N as ye,O as Pe,Q as Oe,X as He,Y as ze,Z as qe,_ as Ke}from"./index-BDM5NpkZ.js";import{$ as bt,a0 as kt,a1 as vt,a2 as yt,a3 as Pt,a4 as St,a5 as Mt,a6 as At,a7 as Bt,a8 as Ft,a9 as Et,aa as Dt,ab as Lt,ac as It,ad as Rt,ae as Nt,af as _t,ag as Ut,ah as Yt,ai as Xt,aj as Vt,ak as Gt,al as Wt,am as $t,an as Ot,ao as Ht,ap as zt,aq as qt,ar as Kt,as as Zt,at as Jt,au as Qt,av as jt,aw as es,ax as ts,ay as ss,az as os,aA as ns,aB as as,aC as rs,aD as is,aE as ls,aF as hs,aG as cs,aH as ds,aI as us,aJ as ps,aK as fs,aL as ms,aM as gs,aN as xs,aO as Cs,aP as Ts,aQ as ws,aR as bs,aS as ks,aT as vs,aU as ys,aV as Ps,aW as Ss,aX as Ms,aY as As,aZ as Bs,a_ as Fs,a$ as Es,b0 as Ds,b1 as Ls,b2 as Is,b3 as Rs,b4 as Ns,b5 as _s,b6 as Us,b7 as Ys,b8 as Xs,b9 as Vs,ba as Gs,bb as Ws,bc as $s,bd as Os,be as Hs,bf as zs,bg as qs,bh as Ks,bi as Zs,bj as Js,bk as Qs,bl as js,bm as eo,bn as to,bo as so,bp as oo,bq as no,br as ao,bs as ro,bt as io,bu as lo,bv as ho,bw as co,bx as uo,by as po,bz as fo,bA as mo,bB as go,bC as xo,bD as Co,bE as To,bF as wo,bG as bo,bH as ko,bI as vo,bJ as yo,bK as Po,bL as So,bM as Mo,bN as Ao,bO as Bo,bP as Fo,bQ as Eo,bR as Do,bS as Lo,bT as Io,bU as Ro,bV as No,bW as _o,bX as Uo,bY as Yo,bZ as Xo,b_ as Vo,b$ as Go,c0 as Wo,c1 as $o,c2 as Oo,c3 as Ho}from"./index-BDM5NpkZ.js";import{SkeletonClipping as de,SkeletonPhysicsMovement as Ze,AnimationStateData as Je,AtlasAttachmentLoader as Qe,SkeletonBounds as je}from"./index-BS4GpQRH.js";import{AssetCache as qo,AssetManagerBase as Ko,Downloader as Zo,SkeletonRendererCore as Jo,Triangulator as Qo}from"./index-BS4GpQRH.js";if(typeof window<"u"&&window.PIXI){const m=window.require;window.require=o=>{if(m)return m(o);if(o.startsWith("@pixi/"))return window.PIXI}}const _=class _ extends Fe{constructor(e){super(e.resource.source);a(this,"texture");this.texture=he.from(e)}static from(e){return _.textureMap.has(e)?_.textureMap.get(e):new _(e)}setFilters(e,t){this.texture.baseTexture.scaleMode=_.toPixiTextureFilter(e),this.texture.baseTexture.mipmap=_.toPixiMipMap(e)}setWraps(e,t){this.texture.baseTexture.wrapMode=_.toPixiTextureWrap(e)}dispose(){this.texture.destroy()}static toPixiTextureFilter(e){switch(e){case F.Nearest:case F.MipMapNearestLinear:case F.MipMapNearestNearest:return ue.NEAREST;case F.Linear:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return ue.LINEAR;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiMipMap(e){switch(e){case F.Nearest:case F.Linear:return pe.OFF;case F.MipMapNearestLinear:case F.MipMapNearestNearest:case F.MipMapLinearLinear:case F.MipMapLinearNearest:return pe.ON;default:throw new Error(`Unknown texture filter: ${String(e)}`)}}static toPixiTextureWrap(e){switch(e){case oe.ClampToEdge:return ne.CLAMP;case oe.MirroredRepeat:return ne.MIRRORED_REPEAT;case oe.Repeat:return ne.REPEAT;default:throw new Error(`Unknown texture wrap: ${String(e)}`)}}static toPixiBlending(e){switch(e){case H.Normal:return z.NORMAL;case H.Additive:return z.ADD;case H.Multiply:return z.MULTIPLY;case H.Screen:return z.SCREEN;default:throw new Error(`Unknown blendMode: ${String(e)}`)}}};a(_,"textureMap",new Map);let G=_;const K="spineTextureAtlasLoader",et={extension:O.Asset,resolver:{test:m=>V(m,".atlas"),parse:m=>{var e,t;const o=m.split(".");return{resolution:parseFloat(((t=(e=re.RETINA_PREFIX)==null?void 0:e.exec(m))==null?void 0:t[1])??"1"),format:o[o.length-2],src:m}}},loader:{name:K,extension:{type:O.LoadParser,priority:Te.Normal,name:K},test(m){return V(m,".atlas")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${K}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return await o.text()},testParse(m,o){const e=V(o.src,".atlas"),t=typeof m=="string",s=o.loadParser===K;return Promise.resolve((e||s)&&t)},unload(m){m.dispose()},async parse(m,o,e){var p;const t=o.data||{};let s=q.dirname(o.src);s&&s.lastIndexOf("/")!==s.length-1&&(s+="/");const n=new Ee(m);if(t.images instanceof fe||typeof t.images=="string"){const h=t.images;t.images={},t.images[n.pages[0].name]=h}const r=[];let l=!0;for(const h of e.parsers)if(h.name==="loadTextures"){l=(p=h.config)==null?void 0:p.preferCreateImageBitmap;break}Q.setPreferences({preferCreateImageBitmap:!1});for(const h of n.pages){const u=h.name,c=t!=null&&t.images?t.images[u]:void 0;if(c instanceof fe)h.setTexture(G.from(c));else{const i=c??q.normalize([...s.split(q.sep),u].join(q.sep)),g={src:De(i,o.src),data:{...t.imageMetadata,alphaMode:h.pma?me.PMA:me.UNPACK}},x=e.load(g).then(d=>{h.setTexture(G.from(d.baseTexture))});r.push(x)}}return await Promise.all(r),Q.setPreferences({preferCreateImageBitmap:l}),n}}};ce.add(et);const Z="spineSkeletonLoader";function tt(m){return m.hasOwnProperty("bones")}function st(m){return m instanceof Uint8Array}const ot={extension:O.Asset,loader:{name:Z,extension:{type:O.LoadParser,priority:Te.Normal,name:Z},test(m){return V(m,".skel")},async load(m){const o=await re.ADAPTER.fetch(m);if(!o.ok)throw new Error(`[${Z}] Failed to fetch ${m}: ${o.status} ${o.statusText}`);return new Uint8Array(await o.arrayBuffer())},testParse(m,o){const e=V(o.src,".json")&&tt(m),t=V(o.src,".skel")&&st(m),s=o.loadParser===Z;return Promise.resolve(e||t||s)}}};ce.add(ot);class nt extends we{constructor(o=!1){super();const e=new $(void 0),t=new $(void 0,!0),s=new $(void 0,!0,!0);this.addAttribute("aVertexPosition",e,2,!1,Y.FLOAT),this.addAttribute("aTextureCoord",t,2,!1,Y.FLOAT),this.addIndex(s)}}const at=` attribute vec2 aVertexPosition; attribute vec2 aTextureCoord; diff --git a/dist/assets/index-_52DTWS7.css b/dist/assets/index-eyCkSEtn.css similarity index 86% rename from dist/assets/index-_52DTWS7.css rename to dist/assets/index-eyCkSEtn.css index ad35f75..1de81ff 100644 --- a/dist/assets/index-_52DTWS7.css +++ b/dist/assets/index-eyCkSEtn.css @@ -1 +1 @@ -.help-overlay[data-v-78204b9d]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-78204b9d]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-78204b9d]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-78204b9d]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-78204b9d]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-78204b9d]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-78204b9d]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-78204b9d]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-78204b9d]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-78204b9d]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-78204b9d]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-78204b9d]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-78204b9d]{color:#dce4f7}.help-grid[data-v-78204b9d]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-78204b9d]{display:grid;gap:0;margin:0}.help-list>div[data-v-78204b9d]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-78204b9d]:last-child{border-bottom:0}.help-list dt[data-v-78204b9d]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-78204b9d]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-78204b9d]{display:grid;gap:7px}.shortcut-list>div[data-v-78204b9d]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-78204b9d]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-78204b9d]{color:#65728b;font-size:10px}.shortcut-list em[data-v-78204b9d]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-78204b9d]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-78204b9d]{margin-top:12px}.help-export p[data-v-78204b9d]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}.help-doc-title[data-v-78204b9d]{margin:16px 2px 2px;color:#9fb2ff;font-size:13px;font-weight:700;letter-spacing:.5px}.help-module[data-v-78204b9d]{margin-top:12px}.help-module-head[data-v-78204b9d]{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;color:#9fb2ff;font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.help-module-head[data-v-78204b9d]:hover{color:#fff}.help-module-head .mtitle[data-v-78204b9d]{flex:1;min-width:0}.help-module-head .caret[data-v-78204b9d]{flex:0 0 auto;color:#7b86a2;font-size:12px}.help-module.open .help-module-head[data-v-78204b9d]{color:#fff}.help-module.open .help-module-head .caret[data-v-78204b9d]{color:#9fb2ff}.help-module .mnum[data-v-78204b9d]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#4a53b8,#6a5fd0);color:#fff;font-size:12px;font-weight:700}.help-module.help-connector[data-v-78204b9d]{border-color:#4a4f8a;background:linear-gradient(135deg,#1d2442,#181d2f)}.help-module.help-connector .help-module-head[data-v-78204b9d]{color:#b8c2ff}.help-module .connector-intro[data-v-78204b9d]{margin:0 0 10px;color:#9aa8c4;font-size:11px;line-height:1.6}.help-module .connector-intro b[data-v-78204b9d]{color:#dce4f7}.help-module .dl-link[data-v-78204b9d]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:0 10px 6px 0;padding:6px 12px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;font-size:12px;font-weight:700;text-decoration:none}.help-module .dl-link[data-v-78204b9d]:hover{border-color:#8982ff;background:#554dc2}.help-module .dl-link small[data-v-78204b9d]{color:#cfe0ff;font-weight:500;font-size:9px}.help-module-body[data-v-78204b9d]{padding-top:10px}@media(max-width:760px){.help-overlay[data-v-78204b9d]{padding:66px 12px 14px}.help-grid[data-v-78204b9d]{grid-template-columns:1fr}}.topbar[data-v-4749834a]{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:10px;padding:8px 12px;background:#141420d9;border-radius:10px;border:1px solid rgba(255,255,255,.08);font-size:12px;color:#aab;z-index:5;flex-wrap:wrap}.topbar input[type=range][data-v-4749834a]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px}.tool-group[data-v-4749834a]{display:flex;gap:6px;margin-left:6px;padding-left:12px;border-left:1px solid #2a2a3c}.tool-btn[data-v-4749834a]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.tool-btn[data-v-4749834a]:hover{background:#2b3a5c;color:#fff}.tool-btn.on[data-v-4749834a]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.background-menu[data-v-4749834a]{position:relative;flex:0 0 auto}.background-btn[data-v-4749834a]{height:28px;padding:0 11px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;cursor:pointer}.background-btn[data-v-4749834a]:hover,.background-btn.on[data-v-4749834a]{border-color:#7774ff;background:#343b63;color:#fff}.background-panel[data-v-4749834a]{position:absolute;top:calc(100% + 9px);right:0;width:248px;box-sizing:border-box;padding:10px;border:1px solid #343b50;border-radius:9px;background:#141420fa;color:#aeb8cc;box-shadow:0 8px 24px #0000007a;z-index:12}.background-upload[data-v-4749834a]{width:100%;height:30px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;cursor:pointer}.background-upload[data-v-4749834a]:hover{border-color:#8982ff;background:#554dc2}.background-clear[data-v-4749834a]{width:100%;height:28px;margin-top:6px;border:1px solid #70404a;border-radius:6px;background:#512a33;color:#efb5bd;cursor:pointer}.background-clear[data-v-4749834a]:hover:not(:disabled){border-color:#b65b6a;background:#6a303b;color:#fff}.background-clear[data-v-4749834a]:disabled{opacity:.42;cursor:not-allowed}.background-file-input[data-v-4749834a]{display:none}.background-file-name[data-v-4749834a]{margin:7px 2px 9px;overflow:hidden;color:#737f98;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.background-position-row[data-v-4749834a]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.background-position-row label[data-v-4749834a]{display:flex;align-items:center;gap:5px;color:#8995ad;font-size:11px}.background-position-row input[data-v-4749834a]{width:0;min-width:0;flex:1;box-sizing:border-box;height:28px;padding:0 6px;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2}.background-opacity-row[data-v-4749834a]{display:grid;grid-template-columns:46px 1fr 34px;align-items:center;gap:7px;margin-top:10px;font-size:11px}.background-opacity-row input[data-v-4749834a]{min-width:0;accent-color:#675de0}.background-opacity-row b[data-v-4749834a]{color:#aeb8cc;font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.help-btn[data-v-4749834a]{height:28px;margin-left:auto;padding:0 11px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;font-weight:700;cursor:pointer}.help-btn[data-v-4749834a]:hover,.help-btn.on[data-v-4749834a]{border-color:#7774ff;background:#343b63;color:#fff}.zoom-pct[data-v-4749834a]{margin-left:0;font-variant-numeric:tabular-nums;color:#9aa;min-width:44px;text-align:center}.settings-btn[data-v-4749834a]{height:28px;padding:0 12px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdf;font-size:12px;font-weight:700;cursor:pointer}.settings-btn[data-v-4749834a]:hover{border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-4749834a]{width:30px;height:28px;flex:0 0 30px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdd8ed;font-size:18px;line-height:1;cursor:pointer}.undo-btn[data-v-4749834a]:hover:not(:disabled){border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-4749834a]:disabled{opacity:.38;cursor:not-allowed}.settings-panel[data-v-1bba85d9]{position:absolute;top:52px;left:10px;width:240px;z-index:10;background:#141420f7;border:1px solid #2a2a3c;border-radius:10px;padding:10px 12px;font-size:12px;color:#aab;box-shadow:0 6px 20px #0006}.sp-head[data-v-1bba85d9]{display:flex;justify-content:space-between;align-items:center;font-weight:700;color:#cdf;margin-bottom:10px}.sp-section-title[data-v-1bba85d9]{margin:2px 0 8px;color:#8a93bb;font-size:11px}.sp-switch-row[data-v-1bba85d9]{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#aab}.sp-switch-control[data-v-1bba85d9]{display:inline-flex;align-items:center;gap:7px}.sp-switch-control input[data-v-1bba85d9]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sp-switch-ui[data-v-1bba85d9]{position:relative;width:34px;height:18px;border-radius:999px;background:#39445a;cursor:pointer;transition:background .16s ease}.sp-switch-ui[data-v-1bba85d9]:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#f4f6fb;transition:transform .16s ease}.sp-switch-control input:checked+.sp-switch-ui[data-v-1bba85d9]{background:#655df0}.sp-switch-control input:checked+.sp-switch-ui[data-v-1bba85d9]:after{transform:translate(16px)}.sp-switch-control input:focus-visible+.sp-switch-ui[data-v-1bba85d9]{outline:2px solid #8b86ff;outline-offset:2px}.sp-switch-control b[data-v-1bba85d9]{min-width:24px;color:#8a93bb;font-size:11px;font-weight:500}.sp-cache-note[data-v-1bba85d9]{margin-top:10px;padding-top:9px;border-top:1px solid #2a2a3c;color:#647089;font-size:10px;text-align:center}.sp-divider[data-v-1bba85d9]{height:1px;margin:10px 0;background:#2a2a3c}.sp-close[data-v-1bba85d9]{background:#2e3a55;border:none;color:#cdf;border-radius:4px;width:18px;height:18px;cursor:pointer;font-size:11px}.sp-row[data-v-1bba85d9]{display:flex;align-items:center;gap:8px;margin:8px 0}.sp-row>span[data-v-1bba85d9]:first-child{width:76px;flex-shrink:0;color:#8a93bb}.sp-row input[type=range][data-v-1bba85d9]{flex:1;background:#1a1a28;accent-color:#3a5a8c}.sp-num[data-v-1bba85d9]{width:52px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;padding:2px 4px}.sp-undo-limit[data-v-1bba85d9]{margin-left:auto;width:64px;height:26px;box-sizing:border-box}.sp-colr[data-v-1bba85d9]{width:26px;height:22px;border:none;background:none;cursor:pointer}.sp-hex[data-v-1bba85d9]{font-size:11px;color:#889;font-variant-numeric:tabular-nums}.sp-chk[data-v-1bba85d9]{display:flex;align-items:center;gap:6px;margin:8px 0;color:#aab}.stage-wrap[data-v-38dbe6fc]{position:relative;width:100%;height:100%;overflow:hidden}.stage-holder[data-v-38dbe6fc]{width:100%;height:100%;cursor:grab;touch-action:none;background-color:#0e1219;outline:none}.stage-holder.grid[data-v-38dbe6fc]{background:conic-gradient(#141a26 90deg,transparent 90deg 180deg,#141a26 180deg 270deg,#141a26 180deg 270deg,transparent 270deg);background-size:28px 28px}.stage-holder[data-v-38dbe6fc]:active{cursor:grabbing}.hud[data-v-38dbe6fc]{position:absolute;bottom:12px;left:12px;padding:8px 12px;background:#141420bf;border-radius:8px;font-size:12px;color:#a0a8cc}.hud-number[data-v-38dbe6fc]{display:inline-block;box-sizing:border-box;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.hud-system-count[data-v-38dbe6fc]{width:3ch}.hud-particle-count[data-v-38dbe6fc]{width:7ch;text-align:left}.hud-tip[data-v-38dbe6fc]{margin-left:12px;color:#5f6a8a;font-size:11px}b[data-v-38dbe6fc]{color:#fc3}.config-management-body[data-v-cb52d3e0]{padding-bottom:2px}.config-toolbar[data-v-cb52d3e0]{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;margin-bottom:10px}.config-toolbar button[data-v-cb52d3e0],.config-toolbar select[data-v-cb52d3e0]{min-width:0;height:30px;box-sizing:border-box;border:1px solid #3b4864;border-radius:6px;background:#263149;color:#d6def0;font-size:11px}.config-toolbar button[data-v-cb52d3e0]{padding:0 9px;cursor:pointer}.config-toolbar button[data-v-cb52d3e0]:hover{border-color:#7169dc;background:#343d68;color:#fff}.config-toolbar select[data-v-cb52d3e0]{padding:0 7px;overflow:hidden;text-overflow:ellipsis}.config-toolbar select[data-v-cb52d3e0]:disabled{color:#68738a;background:#1b2130}.config-message[data-v-cb52d3e0]{margin:-4px 0 9px;color:#83b9a2;font-size:10px}.config-message.error[data-v-cb52d3e0]{color:#e8959e}.group[data-v-cb52d3e0]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-cb52d3e0]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-cb52d3e0]:hover{background:#20202e}.group-body[data-v-cb52d3e0]{padding:8px 10px 12px}.caret[data-v-cb52d3e0]{display:inline-block;width:12px;color:#667;font-size:11px}.ns[data-v-7c2fbed0]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.ns-label[data-v-7c2fbed0]{width:60px;flex-shrink:0;color:#8a93bb}.ns-range[data-v-7c2fbed0]{flex:1;accent-color:#3a7cd6}.ns-num[data-v-7c2fbed0]{width:56px;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;text-align:right}.ns.disabled[data-v-7c2fbed0]{opacity:.55}.ns.disabled .ns-range[data-v-7c2fbed0],.ns.disabled .ns-num[data-v-7c2fbed0]{cursor:not-allowed}.ce[data-v-9bfb7b31]{display:flex;align-items:flex-start;gap:6px;width:100%}.ce-editor[data-v-9bfb7b31]{flex:1;min-width:0}.ce-reset[data-v-9bfb7b31]{flex:0 0 auto;padding:5px 7px;border:1px solid #3b4b65;border-radius:5px;background:#242f42;color:#c4cee2;font-size:10px;cursor:pointer}.ce-reset[data-v-9bfb7b31]:hover{border-color:#7774ff;background:#4f4dc2;color:#fff}.ce-svg[data-v-9bfb7b31]{width:100%;height:110px;display:block;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;cursor:crosshair;touch-action:none}.ce-grid line[data-v-9bfb7b31]{stroke:#1e1e30;stroke-width:1}.ce-frame[data-v-9bfb7b31]{stroke:#2e2e44;stroke-width:1}.ce-line[data-v-9bfb7b31]{stroke:#6ea0e8;stroke-width:2;stroke-linejoin:round}.ce-handles line[data-v-9bfb7b31]{stroke:#8d96b5;stroke-width:1;stroke-dasharray:3 2}.ce-handles circle[data-v-9bfb7b31]{fill:#b7c2dd;stroke:#344d94;stroke-width:1.2;cursor:grab}.ce-handles circle[data-v-9bfb7b31]:active{cursor:grabbing}.ce-node[data-v-9bfb7b31]{fill:#fff;stroke:#3a55aa;stroke-width:1.6;pointer-events:none}.ce-hit[data-v-9bfb7b31]{fill:transparent;stroke:none;cursor:grab}.ce-hit[data-v-9bfb7b31]:active{cursor:grabbing}.ce-nav[data-v-9bfb7b31]{display:flex;justify-content:space-between;margin-top:3px}.ce-tip[data-v-9bfb7b31]{color:#566;font-size:10px}.spine-editor[data-v-3545b078]{display:grid;gap:10px;color:#c5cbe0}.editor-title[data-v-3545b078],.section-title[data-v-3545b078]{color:#dce2f5;font-weight:700}.editor-title[data-v-3545b078]{padding-bottom:9px;border-bottom:1px solid #30394d}.grid[data-v-3545b078]{display:grid;gap:8px}.grid.three[data-v-3545b078]{grid-template-columns:repeat(3,minmax(0,1fr))}.field[data-v-3545b078]{display:grid;gap:5px;min-width:0;color:#919bb7;font-size:12px}.field input[data-v-3545b078],.field select[data-v-3545b078],.asset-name[data-v-3545b078]{box-sizing:border-box;width:100%;min-width:0;height:35px;padding:0 10px;color:#e2e6f3;background:#101625;border:1px solid #32405b;border-radius:6px}.divider[data-v-3545b078]{height:1px;background:#30394d;margin:2px 0}.asset-row[data-v-3545b078]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.asset-name[data-v-3545b078]{display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#7f8aa7}button[data-v-3545b078]{height:35px;padding:0 13px;border:1px solid #3b4a67;border-radius:6px;background:#33415b;color:#e2e6f3;cursor:pointer}button[data-v-3545b078]:hover{filter:brightness(1.13)}button[data-v-3545b078]:disabled{opacity:.55;cursor:wait}.folder-select[data-v-3545b078]{width:100%;border-color:#6659c7;background:#4940a8;color:#fff}.folder-hint[data-v-3545b078]{margin-top:-5px;color:#69758e;font-size:10px;line-height:1.45}.asset-actions[data-v-3545b078]{display:grid;grid-template-columns:1fr 1fr;gap:5px}.asset-actions .load[data-v-3545b078]{background:#5543df;border-color:#6959ec}.asset-actions .clear[data-v-3545b078]{background:#702b34;border-color:#803842}.runtime-note[data-v-3545b078]{color:#69758e;font-size:11px;text-align:center}.error[data-v-3545b078]{padding:8px 10px;color:#ffabb2;background:#4b2028;border:1px solid #76323e;border-radius:6px;font-size:12px}.section-box[data-v-3545b078]{display:grid;gap:8px;padding:10px;background:#182132;border:1px solid #303c54;border-radius:7px}.empty[data-v-3545b078]{color:#667187;font-size:12px;padding:5px 0}.bone-tree[data-v-3545b078]{max-height:240px;overflow:auto;padding:4px 0;background:#111827;border-radius:5px}.tree-title-row[data-v-3545b078]{display:flex;align-items:center;justify-content:space-between;gap:8px}.tree-tabs[data-v-3545b078]{display:flex;gap:3px;margin:6px 0}.tree-tabs button[data-v-3545b078]{height:24px;padding:0 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:10px;cursor:pointer}.tree-tabs button[data-v-3545b078]:hover{background:#273246}.tree-tabs button.on[data-v-3545b078]{border-color:#7774ff;background:#35336b;color:#fff}.selected-bone[data-v-3545b078]{width:auto;min-width:0;max-width:100%;height:24px;flex:0 1 auto;overflow:hidden;padding:0 7px;color:#75819c;background:#182132;border:1px solid transparent;border-radius:5px;font-size:10px;text-align:right;white-space:nowrap;text-overflow:ellipsis}.selected-bone.active[data-v-3545b078]{color:#aeb9d4;background:#242f44;border-color:#35445e;cursor:pointer}.selected-bone.active[data-v-3545b078]:hover{border-color:#675ec4;background:#302b57}.selected-bone[data-v-3545b078]:disabled{opacity:1;cursor:default}.selected-bone strong[data-v-3545b078]{color:#c5cde3;font-weight:600}.tree-action[data-v-3545b078]{height:24px;padding:0 8px;color:#9aa7c2;background:#242f44;border-color:#35445e;font-size:10px}.bone-search[data-v-3545b078]{position:relative}.bone-search input[data-v-3545b078]{box-sizing:border-box;width:100%;height:30px;padding:0 32px 0 9px;color:#dce2f2;background:#101827;border:1px solid #33415b;border-radius:5px;font-size:11px;outline:none}.bone-search input[data-v-3545b078]:focus{border-color:#7065df;box-shadow:0 0 0 1px #7065df38}.bone-search button[data-v-3545b078]{position:absolute;top:3px;right:3px;width:24px;height:24px;padding:0;border:0;color:#8d98b0;background:transparent}.bone[data-v-3545b078]{display:flex;align-items:center;gap:4px;min-height:25px;color:#aeb8d2;font-size:12px;border-bottom:1px solid rgba(72,84,112,.22);cursor:pointer;outline:none}.bone[data-v-3545b078]:hover{background:#45567e38}.bone.selected[data-v-3545b078]{color:#f0edff;background:#6b53dd52;box-shadow:inset 2px 0 #8e72ff}.bone[data-v-3545b078]:focus-visible{box-shadow:inset 0 0 0 1px #7d72dd}.bone-toggle[data-v-3545b078]{width:22px;height:22px;padding:0;border:0;background:transparent;color:#9aa7c2}.bone-toggle[data-v-3545b078]:hover{background:#26324a}.bone-leaf[data-v-3545b078]{display:inline-flex;width:22px;justify-content:center;color:#58647d}.bone-name[data-v-3545b078]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.slot-row[data-v-3545b078]{padding-right:8px}.slot-order[data-v-3545b078]{width:24px;flex:0 0 24px;color:#66758e;font-size:10px;font-variant-numeric:tabular-nums;text-align:right}.slot-attachment[data-v-3545b078]{margin-left:auto;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6d7c96;font-size:10px}@media(max-width:430px){.grid.three[data-v-3545b078]{grid-template-columns:1fr}}.panel[data-v-3873124f]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.empty[data-v-3873124f],.panel-hint[data-v-3873124f]{color:#667;font-size:12px;padding:8px 0}.group[data-v-3873124f]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-3873124f]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-3873124f]:hover{background:#20202e}.scene-head[data-v-3873124f]{padding-right:6px}.scene-actions[data-v-3873124f]{margin-left:auto;display:flex;align-items:center;gap:4px}.scene-add[data-v-3873124f]{height:24px;padding:0 6px;border:1px solid #3a4a6a;border-radius:5px;background:#2e3a55;color:#cdf;font-size:10px;white-space:nowrap;cursor:pointer}.scene-add[data-v-3873124f]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-add[data-v-3873124f]:disabled{opacity:.42;cursor:not-allowed;border-color:#343a4b;background:#252a38;color:#778095}.group-body[data-v-3873124f]{padding:8px 10px 12px}.caret[data-v-3873124f]{display:inline-block;width:12px;color:#667;font-size:11px}.tree[data-v-3873124f]{margin-bottom:8px}.tree-item[data-v-3873124f]{display:flex;align-items:center;gap:6px;padding:5px 6px;font-size:12px;color:#bcd;border-radius:6px;margin-bottom:2px}.tree-item.on[data-v-3873124f]{background:#26324a;color:#ffe}.tree-item .tdot[data-v-3873124f]{color:#fc3;font-size:10px}.tree-item .tdot.dim[data-v-3873124f]{color:#556}.tree-item .tdot.collision-dot[data-v-3873124f]{color:#ff7070}.tree-item .tdot.path-dot[data-v-3873124f]{color:#ff933e;font-size:14px}.tree-item .tdot.spine-dot[data-v-3873124f]{color:#c08cff;font-size:11px}.tree-item .tlabel[data-v-3873124f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-tree[data-v-3873124f]{padding-bottom:8px;border-bottom:1px solid #2a2a3c}.scene-object-item[data-v-3873124f]{min-height:28px;cursor:pointer}.scene-object-item[data-v-3873124f]:hover{background:#202b40}.scene-object-kind[data-v-3873124f]{color:#75829c;font-size:10px}.scene-object-eye[data-v-3873124f]{width:24px;height:22px;padding:3px;flex:0 0 24px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9aa6bf;cursor:pointer}.scene-object-eye[data-v-3873124f]:hover{border-color:#4b5972;background:#29354a;color:#e1e7f4}.scene-object-eye.off[data-v-3873124f]{color:#59647a}.scene-object-eye svg[data-v-3873124f]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.scene-object-eye .eye-slash[data-v-3873124f]{stroke:#d47b88;stroke-width:2}.scene-object-delete[data-v-3873124f]{width:24px;height:22px;padding:0;border:1px solid #59414a;border-radius:5px;background:#3a272f;color:#efb4bd;font-size:11px;cursor:pointer}.scene-object-delete[data-v-3873124f]:hover{border-color:#a45c69;background:#57303a;color:#fff}.object-editor-title[data-v-3873124f]{margin:10px 0 8px;padding-top:8px;border-top:1px solid #2a2a3c;color:#cbd4e8;font-weight:700}.field-block[data-v-3873124f]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-3873124f]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-3873124f]{color:#5f6d86;line-height:1.5}.field-grid[data-v-3873124f]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-3873124f]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-3873124f]{width:100%;min-height:30px;box-sizing:border-box}.check-field[data-v-3873124f]{align-items:flex-start}.check-field input[data-v-3873124f]{width:18px;height:18px;margin:4px 0;accent-color:#4f7ee8}.follow-path[data-v-3873124f],.setting-line[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin:12px 0 4px;color:#aeb8cf;font-size:12px}.setting-line[data-v-3873124f]{justify-content:space-between}.follow-path input[data-v-3873124f],.setting-line input[type=checkbox][data-v-3873124f]{width:17px;height:17px;accent-color:#4f7ee8}.collider-follow-section[data-v-3873124f]{margin-top:12px;padding-top:4px;border-top:1px solid #30394d}.collider-curve-title[data-v-3873124f]{display:flex;flex-direction:column;gap:3px;margin:12px 0 6px;color:#aeb8cf;font-size:12px}.collider-curve-title small[data-v-3873124f]{color:#67738c;font-size:10px;line-height:1.45}.path-color[data-v-3873124f]{width:48px;height:28px;padding:0;border:1px solid #3a4963;background:transparent;cursor:pointer}.path-help[data-v-3873124f]{margin:12px 0;color:#7d89a2;font-size:11px;line-height:1.55}.path-help>span[data-v-3873124f]{color:#aeb8cf}.path-help ul[data-v-3873124f]{margin:6px 0 0;padding-left:20px}.path-help li[data-v-3873124f]{margin:3px 0}.path-action[data-v-3873124f]{width:100%;height:31px;margin-top:7px;border:0;border-radius:5px;background:#33425b;color:#c9d1e1;cursor:pointer}.path-action[data-v-3873124f]:hover{filter:brightness(1.12)}.path-action.primary[data-v-3873124f]{background:#f05408;color:#fff}.row[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-3873124f]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-3873124f]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.inp.tiny[data-v-3873124f]{width:46px;flex:0 0 46px;text-align:center}.seed-row[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #2d3950}.seed-row label[data-v-3873124f]{width:64px;color:#8f9bb5;font-size:12px}.seed-input[data-v-3873124f]{min-width:0;flex:1;padding:6px 8px;border:1px solid #344158;border-radius:6px;outline:none;background:#0f1625;color:#e2e7f2;font-size:12px}.seed-input[data-v-3873124f]:focus{border-color:#625ff1}.seed-random[data-v-3873124f]{width:34px;height:30px;border:1px solid #3a4860;border-radius:6px;background:#2c3950;color:#d7def0;cursor:pointer}.seed-random[data-v-3873124f]:hover{background:#394964}.scene-seed[data-v-3873124f]{margin-top:10px}.seed-hint[data-v-3873124f]{margin:5px 0 1px 72px;color:#657188;font-size:9px;line-height:1.45}.group[data-v-f9eac627]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-f9eac627]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-f9eac627]:hover{background:#20202e}.group-reset[data-v-f9eac627]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-f9eac627]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-f9eac627]{padding:8px 10px 12px}.caret[data-v-f9eac627]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-f9eac627]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-f9eac627]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-f9eac627]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-f9eac627]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.segs[data-v-f9eac627]{display:flex;gap:6px;margin:6px 0}.stream-behavior-segs[data-v-f9eac627]{margin-top:10px}.stream-loop-options[data-v-f9eac627]{display:grid;gap:8px;margin:8px 0 4px;padding:9px 10px;border:1px solid #32405a;border-radius:6px;background:#171f2e}.loop-section-row[data-v-f9eac627]{display:flex;min-height:27px;align-items:center;justify-content:space-between;gap:8px}.loop-duration-control[data-v-f9eac627]{display:flex;flex:0 0 auto;align-items:center;gap:7px}.loop-duration-toggle[data-v-f9eac627]{gap:5px;font-size:10px;white-space:nowrap}.loop-duration-toggle .switch-ui[data-v-f9eac627]{width:26px;height:14px}.loop-duration-toggle .switch-ui[data-v-f9eac627]:after{width:10px;height:10px}.loop-duration-toggle input:checked+.switch-ui[data-v-f9eac627]:after{transform:translate(12px)}.loop-section-duration[data-v-f9eac627]{display:flex;flex:0 0 auto;align-items:center;gap:4px;color:#7f8ba4;font-size:11px}.loop-section-duration input[data-v-f9eac627]{position:static;width:54px;height:25px;padding:0 6px;border:1px solid #3a465f;border-radius:5px;outline:none;background:#101725;color:#e4e8f2;text-align:right;opacity:1;pointer-events:auto}.loop-section-duration input[data-v-f9eac627]:focus{border-color:#716eff}.loop-auto-duration[data-v-f9eac627]{min-width:54px;color:#77839a;text-align:right;white-space:nowrap}.seg[data-v-f9eac627]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-f9eac627]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.seg[data-v-f9eac627]{display:flex;gap:6px;margin:6px 0}.inp.tiny[data-v-f9eac627]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-f9eac627]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-f9eac627]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-f9eac627]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-f9eac627]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-f9eac627]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-f9eac627]:after{transform:translate(14px)}.modifier-hint[data-v-f9eac627]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.stream-loop-hint[data-v-f9eac627]{margin:9px 2px 3px;padding:7px 8px;border:1px solid #4a436e;border-radius:5px;background:#211f35;color:#aaa4d7}.switch-row input:disabled+.switch-ui[data-v-f9eac627]{opacity:.45;cursor:not-allowed}.pac[data-v-238f838c]{padding:10px;margin:8px 0;border:1px solid #2c3850;border-radius:7px;background:#171d2a}.pac-head[data-v-238f838c]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.pac-label[data-v-238f838c]{color:#aeb8cf;font-size:12px;font-weight:600;white-space:nowrap}.pac-modes[data-v-238f838c]{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pac-mode[data-v-238f838c]{padding:4px 7px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.pac-mode.on[data-v-238f838c]{border-color:#7774ff;background:#605df0;color:#fff}.pac-curve[data-v-238f838c]{margin-top:8px}.pac-axis[data-v-238f838c]{display:flex;justify-content:space-between;margin-top:3px;color:#5f6b82;font-size:10px}.pac[data-v-238f838c] .ns-label{width:58px}.pac[data-v-238f838c] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.pac[data-v-238f838c] .ce-tip{color:#657188}.group[data-v-cf6b86a5]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-cf6b86a5]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-cf6b86a5]:hover{background:#20202e}.group-reset[data-v-cf6b86a5]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-cf6b86a5]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-cf6b86a5]{padding:8px 10px 12px}.caret[data-v-cf6b86a5]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-cf6b86a5]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-cf6b86a5]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.attr-body[data-v-cf6b86a5]{padding:10px;background:#151b27}.attr-section-title[data-v-cf6b86a5]{margin:2px 0 8px;color:#9ca8c0;font-size:12px;font-weight:700}.attr-section-title.life-title[data-v-cf6b86a5]{margin-top:14px;padding-top:12px;border-top:1px solid #2d3950}.attr-axis-head[data-v-cf6b86a5]{display:flex;align-items:center;justify-content:space-between;margin:10px 1px -2px;color:#aeb8cf;font-size:12px;font-weight:600}.axis-modes[data-v-cf6b86a5]{display:flex;gap:4px}.axis-mode[data-v-cf6b86a5]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-cf6b86a5]{border-color:#7774ff;background:#605df0;color:#fff}.life-item[data-v-cf6b86a5]{padding:9px 0;border-bottom:1px solid #2a3549}.switch-row[data-v-cf6b86a5]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-cf6b86a5]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-cf6b86a5]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-cf6b86a5]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-cf6b86a5]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-cf6b86a5]:after{transform:translate(14px)}.life-axis[data-v-cf6b86a5]{margin:9px 0 2px 42px}.switch-row input:disabled+.switch-ui[data-v-cf6b86a5]{opacity:.45;cursor:not-allowed}.gradient-editor[data-v-f6ab10bf]{margin:8px 0 11px 68px}.gradient-bar[data-v-f6ab10bf]{position:relative;height:18px;margin-bottom:14px;border:1px solid #465570;border-radius:6px;cursor:crosshair}.gradient-stop[data-v-f6ab10bf]{position:absolute;top:15px;width:14px;height:17px;padding:0;transform:translate(-50%);border:2px solid #d8deea;border-radius:2px 2px 5px 5px;background:var(--stop-color);cursor:grab;box-shadow:0 1px 3px #0009}.gradient-stop[data-v-f6ab10bf]:before{content:"";position:absolute;left:2px;top:-7px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:5px solid #d8deea}.gradient-stop.selected[data-v-f6ab10bf]{outline:2px solid #7774ff;outline-offset:1px;z-index:2}.gradient-stop[data-v-f6ab10bf]:active{cursor:grabbing}.gradient-controls[data-v-f6ab10bf]{display:flex;align-items:center;gap:5px;margin-top:30px}.gradient-color[data-v-f6ab10bf]{width:28px;height:24px;padding:1px;border:1px solid #465570;border-radius:4px;background:#151b27;cursor:pointer}.gradient-hex-input[data-v-f6ab10bf]{width:66px;padding:4px 5px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#aeb8cb;font-size:10px;font-family:monospace}.gradient-hex-input[data-v-f6ab10bf]:focus{border-color:#7774ff;color:#fff}.gradient-position[data-v-f6ab10bf]{display:flex;align-items:center;color:#71809a;font-size:10px}.gradient-position input[data-v-f6ab10bf]{width:43px;padding:3px 4px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#dce3ef;text-align:right}.gradient-action[data-v-f6ab10bf]{width:25px;height:24px;padding:0;border:1px solid #3a4860;border-radius:4px;background:#273246;color:#cbd4e5;cursor:pointer}.gradient-action[data-v-f6ab10bf]:hover:not(:disabled){border-color:#7774ff;color:#fff}.gradient-action.danger[data-v-f6ab10bf]{color:#e3a5aa}.gradient-action[data-v-f6ab10bf]:disabled{opacity:.35;cursor:not-allowed}.gradient-hint[data-v-f6ab10bf]{margin-top:5px;color:#59667b;font-size:9px}.pivot-editor[data-v-18659d8e]{margin-top:8px;padding:8px;border:1px solid #2e3c55;border-radius:8px;background:#121a27}.pivot-toolbar[data-v-18659d8e]{display:flex;align-items:center;gap:7px;margin-bottom:7px}.pivot-hint[data-v-18659d8e]{flex:1;min-width:0;display:flex;align-items:center;gap:5px;color:#9aa8c4;font-size:10px;line-height:1.3}.pivot-hint-icon[data-v-18659d8e]{color:#8f8cff;font-size:13px}.pivot-zoom[data-v-18659d8e]{display:flex;align-items:center;gap:2px;padding:2px;border:1px solid #34435e;border-radius:6px;background:#182234}.pivot-zoom button[data-v-18659d8e]{width:20px;height:20px;padding:0;border:0;border-radius:4px;background:transparent;color:#a9b6d0;font-size:13px;cursor:pointer}.pivot-zoom button[data-v-18659d8e]:hover:not(:disabled){background:#2a3853;color:#fff}.pivot-zoom button[data-v-18659d8e]:disabled{opacity:.3;cursor:default}.pivot-zoom span[data-v-18659d8e]{min-width:36px;text-align:center;color:#c7d1e6;font-size:10px;font-variant-numeric:tabular-nums}.pivot-expand[data-v-18659d8e]{width:24px;height:24px;padding:0;border:1px solid #34435e;border-radius:6px;background:#182234;color:#a9b6d0;font-size:13px;cursor:pointer}.pivot-expand[data-v-18659d8e]:hover{border-color:#7774ff;color:#fff}.pivot-stage[data-v-18659d8e]{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:156px;overflow:hidden;border:1px solid #2f3d57;border-radius:8px;background-color:#10161f;background-image:linear-gradient(45deg,#1a2230 25%,transparent 25%),linear-gradient(-45deg,#1a2230 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#1a2230 75%),linear-gradient(-45deg,transparent 75%,#1a2230 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;touch-action:none;cursor:crosshair}.pivot-large .pivot-stage[data-v-18659d8e]{height:340px;background-size:22px 22px;background-position:0 0,0 11px,11px -11px,-11px 0}.pivot-stage.panning[data-v-18659d8e]{cursor:grabbing}.pivot-box[data-v-18659d8e]{position:relative;flex:0 0 auto}.pivot-box>img[data-v-18659d8e]{display:block;width:100%;height:100%;object-fit:fill;-webkit-user-select:none;user-select:none;pointer-events:none}.pivot-empty[data-v-18659d8e]{color:#4e5a70;font-size:12px}.pivot-cross[data-v-18659d8e]{position:absolute;pointer-events:none;background:#7e76ffbf;box-shadow:0 0 3px #7e76ff99}.pivot-cross.vertical[data-v-18659d8e]{top:0;bottom:0;width:1px;transform:translate(-.5px)}.pivot-cross.horizontal[data-v-18659d8e]{left:0;right:0;height:1px;transform:translateY(-.5px)}.pivot-marker[data-v-18659d8e]{position:absolute;width:13px;height:13px;transform:translate(-50%,-50%);border:2px solid #c9c6ff;border-radius:50%;background:#605ff0d9;box-shadow:0 0 0 3px #605ff047,0 0 10px #605ff0cc;pointer-events:none}.pivot-badge[data-v-18659d8e]{position:absolute;transform:translate(-50%,14px);padding:2px 6px;border:1px solid #6f6bc7;border-radius:4px;background:#191c3aeb;color:#b9b6ff;font-size:9px;white-space:nowrap;pointer-events:none}.pivot-bottom[data-v-18659d8e]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:8px}.pivot-large .pivot-bottom[data-v-18659d8e]{gap:14px;margin-top:14px}.pivot-card[data-v-18659d8e]{min-width:0;padding:7px;border:1px solid #28344a;border-radius:8px;background:#151d2b}.pivot-card-head[data-v-18659d8e]{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:6px;color:#b9c4da;font-size:10px}.pivot-card-icon[data-v-18659d8e]{color:#8f8cff}.pivot-presets[data-v-18659d8e]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.pivot-preset[data-v-18659d8e]{height:30px;padding:0;border:1px solid #2f3d57;border-radius:5px;background:#1b2537;color:#aab6cf;font-size:16px;line-height:1;cursor:pointer}.pivot-preset[data-v-18659d8e]:hover{border-color:#5d5aa8;color:#d9d8ff}.pivot-preset.on[data-v-18659d8e]{border-color:#7774ff;background:#4a47b5;color:#fff}.pivot-reset[data-v-18659d8e]{display:block;width:100%;height:26px;margin-top:6px;padding:0 6px;border:1px solid #2f3d57;border-radius:5px;background:#1a2435;color:#96a4c0;font-size:10px;cursor:pointer;white-space:nowrap}.pivot-reset[data-v-18659d8e]:hover{border-color:#5d5aa8;background:#232f46;color:#d9d8ff}.pivot-coords[data-v-18659d8e]{display:flex;flex-direction:column;gap:5px}.pivot-large .pivot-coords[data-v-18659d8e]{flex-direction:row;gap:8px}.pivot-coords label[data-v-18659d8e]{flex:1;display:flex;align-items:center;gap:3px;color:#8d9ab5;font-size:10px}.pivot-coords input[data-v-18659d8e]{width:100%;min-width:0;height:24px;padding:0 4px;border:1px solid #34435e;border-radius:4px;background:#101827;color:#f0b465;font-size:11px;text-align:right}.pivot-rotate-head[data-v-18659d8e]{margin-top:10px}.pivot-rotate-state[data-v-18659d8e]{color:#6f7c96;font-size:9px}.pivot-rotate-body[data-v-18659d8e]{display:flex;align-items:center;gap:7px}.pivot-rotate-modes[data-v-18659d8e]{display:flex;flex-direction:column;gap:4px;flex:1}.pivot-rotate-modes button[data-v-18659d8e]{height:24px;padding:0 5px;border:1px solid #2f3d57;border-radius:5px;background:#1b2537;color:#93a0ba;font-size:9px;cursor:pointer}.pivot-rotate-modes button.on[data-v-18659d8e]{border-color:#7774ff;background:#4a47b5;color:#fff}.pivot-rotate-preview[data-v-18659d8e]{display:flex;align-items:center;justify-content:center;width:78px;height:78px;flex:0 0 78px;border:1px solid #2b374d;border-radius:6px;background:#10161f;overflow:hidden}.pivot-large .pivot-rotate-preview[data-v-18659d8e]{width:128px;height:128px;flex-basis:128px}.pivot-rotate-preview img[data-v-18659d8e]{display:block}.pivot-rotate-preview img.spin[data-v-18659d8e]{animation:pivot-spin-18659d8e 2s linear infinite}.pivot-rotate-preview img.swing[data-v-18659d8e]{animation:pivot-swing-18659d8e 1.1s ease-in-out infinite alternate}@keyframes pivot-spin-18659d8e{to{transform:rotate(360deg)}}@keyframes pivot-swing-18659d8e{0%{transform:rotate(-28deg)}to{transform:rotate(28deg)}}.pivot-large .pivot-hint[data-v-18659d8e],.pivot-large .pivot-card-head[data-v-18659d8e]{font-size:12px}.pivot-large .pivot-preset[data-v-18659d8e]{height:42px;font-size:20px}.pivot-large .pivot-reset[data-v-18659d8e]{height:34px;margin-top:8px;font-size:12px}.pivot-large .pivot-coords input[data-v-18659d8e]{height:34px;font-size:14px}.pivot-large .pivot-rotate-modes button[data-v-18659d8e]{height:34px;font-size:12px}.image-card[data-v-1622bd56]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-1622bd56]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-1622bd56]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-1622bd56]:hover{border-color:#7774ff}.img-thumb img[data-v-1622bd56]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-1622bd56]{flex:1;min-width:0}.img-actions[data-v-1622bd56]{display:flex;flex-direction:column;gap:4px}.row[data-v-1622bd56]{display:flex;align-items:center;gap:8px;margin:6px 0;color:#aab;font-size:12px}.row>span[data-v-1622bd56]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-1622bd56]{min-width:0;flex:1;padding:3px 5px;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;font-size:12px}.mini-btn2[data-v-1622bd56]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-1622bd56]:hover{background:#2b3a5c}.mini-btn2[data-v-1622bd56]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-1622bd56]{margin:4px 0 2px;color:#667;font-size:11px}.sequence-pick[data-v-1622bd56]{width:100%;margin:2px 0 4px;padding:6px 8px;border:1px solid #4a4a76;border-radius:5px;background:#27264b;color:#d8d7ff;font-size:12px;cursor:pointer}.sequence-pick[data-v-1622bd56]:hover{border-color:#7774ff;background:#35336a}.sequence-note[data-v-1622bd56]{margin:0 0 6px;color:#727b9b;font-size:11px;line-height:1.4}.resource-weight-row[data-v-1622bd56]{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:7px}.resource-weight-control[data-v-1622bd56]{width:100%;min-width:0}.resource-weight-control[data-v-1622bd56] .ns-range{min-width:0}.resource-weight-control[data-v-1622bd56] .ns-num{flex:0 0 56px;box-sizing:border-box}.weight-lock[data-v-1622bd56]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-1622bd56]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-1622bd56]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-1622bd56]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-1622bd56]:disabled{opacity:.35;cursor:not-allowed}.pivot-toggle-row[data-v-1622bd56]{display:flex;align-items:center;gap:9px;margin-top:9px;padding:8px 9px;border:1px solid #2c3a54;border-radius:8px;background:#131b28}.pivot-toggle-icon[data-v-1622bd56]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;border:1px solid #35435c;border-radius:7px;background:#1c2638;color:#8f8cff;font-size:17px}.pivot-toggle-text[data-v-1622bd56]{flex:1;min-width:0}.pivot-toggle-title[data-v-1622bd56]{color:#d6deee;font-size:12px;font-weight:600}.pivot-toggle-sub[data-v-1622bd56]{margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7584a0;font-size:9px}.pivot-switch[data-v-1622bd56]{position:relative;flex:0 0 auto;cursor:pointer}.pivot-switch input[data-v-1622bd56]{position:absolute;opacity:0;pointer-events:none}.pivot-switch-ui[data-v-1622bd56]{position:relative;display:block;width:34px;height:19px;border-radius:10px;background:#354258;transition:background .16s ease}.pivot-switch-ui[data-v-1622bd56]:after{content:"";position:absolute;left:2px;top:2px;width:15px;height:15px;border-radius:50%;background:#fff;transition:transform .16s ease}.pivot-switch input:checked+.pivot-switch-ui[data-v-1622bd56]{background:#625ff1}.pivot-switch input:checked+.pivot-switch-ui[data-v-1622bd56]:after{transform:translate(15px)}.pivot-modal-backdrop[data-v-1622bd56]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;background:#06090fc7;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.pivot-modal[data-v-1622bd56]{display:flex;flex-direction:column;width:min(980px,94vw);max-height:92vh;overflow:auto;padding:14px;border:1px solid #2f3f5c;border-radius:14px;background:#121927;box-shadow:0 24px 70px #0009}.pivot-modal-head[data-v-1622bd56]{display:flex;align-items:flex-start;gap:10px;padding-bottom:10px;border-bottom:1px solid #253148}.pivot-modal-icon[data-v-1622bd56]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex:0 0 34px;border:1px solid #3b4a66;border-radius:8px;background:#1c2638;color:#8f8cff;font-size:18px}.pivot-modal-info[data-v-1622bd56]{flex:1;min-width:0}.pivot-modal-title[data-v-1622bd56]{display:flex;align-items:center;gap:7px;color:#e4e9f5;font-size:15px;font-weight:700}.pivot-modal-badge[data-v-1622bd56]{padding:2px 7px;border:1px solid #4b4a8f;border-radius:999px;background:#2c2b58;color:#b9b6ff;font-size:10px;font-weight:500}.pivot-modal-desc[data-v-1622bd56]{margin-top:3px;color:#7f8daa;font-size:11px}.pivot-modal-close[data-v-1622bd56]{width:28px;height:28px;padding:0;border:0;border-radius:6px;background:transparent;color:#8b98b3;font-size:15px;cursor:pointer}.pivot-modal-close[data-v-1622bd56]:hover{background:#253148;color:#fff}.pivot-modal-hint[data-v-1622bd56]{margin:10px 0 0;color:#8b98b3;font-size:11px}.pivot-modal-actions[data-v-1622bd56]{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid #253148}.pivot-modal-cancel[data-v-1622bd56]{height:34px;padding:0 16px;border:1px solid #34435e;border-radius:7px;background:#1a2334;color:#a9b6d0;font-size:12px;cursor:pointer}.pivot-modal-cancel[data-v-1622bd56]:hover{border-color:#5d5aa8;color:#fff}.pivot-modal-confirm[data-v-1622bd56]{height:34px;padding:0 22px;border:1px solid #7774ff;border-radius:7px;background:#5b57e8;color:#fff;font-size:12px;font-weight:700;cursor:pointer}.pivot-modal-confirm[data-v-1622bd56]:hover{background:#6a66ff}.group[data-v-26210049]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-26210049]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-26210049]:hover{background:#20202e}.group-reset[data-v-26210049]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-26210049]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-26210049]{padding:8px 10px 12px}.caret[data-v-26210049]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-26210049]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-26210049]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-26210049]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-26210049]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-26210049]{width:28px;height:22px;border:none;background:none;cursor:pointer}.seg[data-v-26210049]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-26210049]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.look-title[data-v-26210049]{font-size:12px;font-weight:600;color:#ccd;margin:10px 0 6px;padding-bottom:4px;border-bottom:1px solid #2a2a3c}.look-title[data-v-26210049]:first-child{margin-top:2px}.seg[data-v-26210049]{display:flex;gap:6px;margin:6px 0}.seg-btn[data-v-26210049]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg-btn.active[data-v-26210049]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.curve-wrap[data-v-26210049]{margin:6px 0}.curve-labels[data-v-26210049]{display:flex;justify-content:space-between;color:#566;font-size:10px;margin-top:2px}.image-title[data-v-26210049]{display:flex;align-items:center;justify-content:space-between}.image-add[data-v-26210049]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-26210049]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-26210049]{height:1px;margin:9px 0 7px;background:#2a3549}.resource-color-row .blend-select[data-v-26210049]{max-width:88px}.resource-color-picker .hex[data-v-26210049]{margin-left:0}.random-color-hint[data-v-26210049]{margin:-5px 0 9px 68px;color:#66758e;font-size:9px;line-height:1.45}.hex-input[data-v-26210049]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-26210049]:focus{border-color:#7774ff;color:#fff}.resource-alpha-head[data-v-26210049]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:#8a93bb;font-size:12px}.alpha-modes[data-v-26210049]{display:flex;gap:3px}.alpha-modes button[data-v-26210049]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-26210049]:hover{background:#273246}.alpha-modes button.on[data-v-26210049]{border-color:#7774ff;background:#605df0;color:#fff}.resource-alpha-curve[data-v-26210049]{margin-top:7px}.file-input[data-v-26210049]{display:none}.hex[data-v-26210049]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-26210049]{width:46px;flex:0 0 46px;text-align:center}.render-layer-current[data-v-26210049]{display:flex;align-items:center;gap:6px;margin:6px 0}.render-layer-text[data-v-26210049]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#9aa6c2;font-size:11px}.mini-btn[data-v-26210049]{flex:0 0 auto;height:24px;padding:0 7px;border:1px solid #3d4a66;border-radius:5px;background:#202a3e;color:#a9b5cf;font-size:10px;cursor:pointer}.mini-btn[data-v-26210049]:hover{border-color:#7774ff;color:#fff}.mini-btn.ghost[data-v-26210049]{background:transparent}.slot-picker[data-v-26210049]{margin:6px 0;padding:6px;border:1px solid #2e3a52;border-radius:6px;background:#111a28}.slot-list[data-v-26210049]{max-height:180px;overflow:auto;margin-top:6px}.slot-item[data-v-26210049]{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border:1px solid transparent;border-radius:4px;background:transparent;color:#aab4cc;font-size:11px;text-align:left;cursor:pointer}.slot-item[data-v-26210049]:hover{background:#1d2a3f}.slot-item.on[data-v-26210049]{border-color:#7774ff;background:#2b2b55;color:#fff}.slot-order[data-v-26210049]{width:26px;flex:0 0 26px;color:#66758e;font-variant-numeric:tabular-nums}.slot-name[data-v-26210049]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-attachment[data-v-26210049]{max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6d7c96;font-size:10px}.switch-row[data-v-26210049]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-26210049]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-26210049]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-26210049]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-26210049]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-26210049]:after{transform:translate(14px)}.switch-row input:disabled+.switch-ui[data-v-26210049]{opacity:.45;cursor:not-allowed}.render-layer-switch[data-v-26210049]{margin:6px 0}.modifier-hint[data-v-26210049]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.render-layer-warning[data-v-26210049]{color:#d8a45e}.empty[data-v-96ef634f]{color:#667;font-size:12px;padding:8px 0}.group[data-v-96ef634f]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-96ef634f]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-96ef634f]:hover{background:#20202e}.group-reset[data-v-96ef634f]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-96ef634f]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-96ef634f]{padding:8px 10px 12px}.caret[data-v-96ef634f]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-96ef634f]{height:1px;background:#2a2a3c;margin:8px 0}.field-block[data-v-96ef634f]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-96ef634f]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-96ef634f]{color:#5f6d86;line-height:1.5}.field-grid[data-v-96ef634f]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-96ef634f]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-96ef634f]{width:100%;min-height:30px;box-sizing:border-box}.tag[data-v-96ef634f]{font-size:10px;color:#667;background:#1c1c2a;border-radius:4px;padding:1px 5px}.row[data-v-96ef634f]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-96ef634f]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-96ef634f]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-96ef634f]{width:28px;height:22px;border:none;background:none;cursor:pointer}.placeholder[data-v-96ef634f]{color:#667;font-size:11px;padding:6px 0}.image-add[data-v-96ef634f]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-96ef634f]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-96ef634f]{height:1px;margin:9px 0 7px;background:#2a3549}.hex-input[data-v-96ef634f]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-96ef634f]:focus{border-color:#7774ff;color:#fff}.alpha-modes[data-v-96ef634f]{display:flex;gap:3px}.alpha-modes button[data-v-96ef634f]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-96ef634f]:hover{background:#273246}.alpha-modes button.on[data-v-96ef634f]{border-color:#7774ff;background:#605df0;color:#fff}.file-input[data-v-96ef634f]{display:none}.hex[data-v-96ef634f]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-96ef634f]{width:46px;flex:0 0 46px;text-align:center}.axis-mode[data-v-96ef634f]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-96ef634f]{border-color:#7774ff;background:#605df0;color:#fff}.switch-row[data-v-96ef634f]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-96ef634f]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-96ef634f]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-96ef634f]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-96ef634f]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-96ef634f]:after{transform:translate(14px)}.modifier-item[data-v-96ef634f]{padding:8px 0 10px;border-bottom:1px solid #2a3549}.modifier-switch[data-v-96ef634f]{font-weight:600}.modifier-params[data-v-96ef634f]{margin:8px 0 0 10px;padding:2px 0 2px 10px;border-left:2px solid #344158}.modifier-hint[data-v-96ef634f]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.collision-filter-params[data-v-96ef634f]{position:relative;padding-top:5px;padding-bottom:5px}.collision-filter-title[data-v-96ef634f]{margin-bottom:8px;color:#9ba7bd;font-size:11px;font-weight:600}.collision-filter-tags[data-v-96ef634f]{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.collision-filter-tag[data-v-96ef634f]{display:inline-flex;min-width:0;align-items:center;gap:6px;padding:5px 5px 5px 8px;border:1px solid #625ff1;border-radius:6px;background:#514dcf;color:#fff;font-size:11px}.collision-filter-tag>span[data-v-96ef634f]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-tag.disabled[data-v-96ef634f]{border-color:#4b5364;background:#343b4b;color:#929bad}.collision-filter-tag button[data-v-96ef634f]{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:#0b0f1a38;color:inherit;line-height:16px;cursor:pointer}.collision-filter-tag button[data-v-96ef634f]:hover{background:#0b0f1a80;color:#fff}.collision-filter-add[data-v-96ef634f]{width:30px;height:30px;padding:0;border:1px dashed #536079;border-radius:6px;background:#182131;color:#98a5bd;font-size:18px;line-height:28px;cursor:pointer}.collision-filter-add[data-v-96ef634f]:hover,.collision-filter-add.active[data-v-96ef634f]{border-color:#7774ff;background:#262c52;color:#fff}.collision-filter-add[data-v-96ef634f]:disabled{opacity:.42;cursor:not-allowed}.collision-filter-empty[data-v-96ef634f]{margin-top:7px;color:#6f7b91;font-size:10px}.collision-filter-picker[data-v-96ef634f]{display:grid;gap:4px;margin-top:7px;padding:5px;border:1px solid #344158;border-radius:6px;background:#101725}.collision-filter-picker button[data-v-96ef634f]{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:#c7d0e3;font-size:11px;text-align:left;cursor:pointer}.collision-filter-picker button[data-v-96ef634f]:hover{background:#29344a;color:#fff}.collision-filter-picker button span[data-v-96ef634f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-picker button small[data-v-96ef634f]{flex:none;color:#68758d;font-size:9px}.switch-row input:disabled+.switch-ui[data-v-96ef634f]{opacity:.45;cursor:not-allowed}.bone-follow-target[data-v-96ef634f]{margin:7px 0 9px;padding:7px 8px;overflow:hidden;color:#7f8ba3;background:#121a29;border:1px solid #2f3c53;border-radius:5px;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.bone-follow-target strong[data-v-96ef634f]{color:#c8d0e4;font-weight:600}.bone-follow-missing[data-v-96ef634f]{margin:7px 0 9px;padding:7px 8px;color:#d49aa3;background:#2a1e26;border:1px solid #513540;border-radius:5px;font-size:10px;line-height:1.5}.bone-follow-rebind[data-v-96ef634f]{width:100%;min-height:28px;margin:0 0 8px;padding:4px 8px;overflow:hidden;border:1px solid #4a436e;border-radius:5px;background:#2d2947;color:#c8c2ee;font-size:10px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.bone-follow-rebind[data-v-96ef634f]:hover{border-color:#7165bd;background:#3a335d;color:#fff}.bone-follow-transform-grid[data-v-96ef634f]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.modifier-mode-row[data-v-96ef634f]{display:flex;justify-content:flex-end;gap:4px;margin-bottom:6px}.gravity-curve-title[data-v-96ef634f]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.gravity-curve-title span[data-v-96ef634f]:last-child{color:#657188;font-size:9px}.gravity-curve-axis[data-v-96ef634f]{display:flex;justify-content:space-between;margin:3px 34px 0 1px;color:#5f6b82;font-size:9px}.gravity-params[data-v-96ef634f] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.trail-params[data-v-96ef634f]{padding-right:2px}.trail-section-title[data-v-96ef634f]{margin:3px 0 8px;color:#aeb8cf;font-size:12px;font-weight:700}.trail-fixed-color .hex-input[data-v-96ef634f]{min-width:0;flex:1}.trail-mode-head[data-v-96ef634f]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.trail-sub-switch[data-v-96ef634f]{margin:11px 0 7px;padding-top:9px;border-top:1px solid #2a3549}.trail-grid-row[data-v-96ef634f]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.trail-grid-row[data-v-96ef634f] .ns{min-width:0;flex-wrap:wrap;align-items:center}.trail-grid-row[data-v-96ef634f] .ns-label{width:100%}.trail-grid-row[data-v-96ef634f] .ns-range{min-width:0}.trail-grid-row[data-v-96ef634f] .ns-num{width:42px}.trail-params[data-v-96ef634f] .ce-svg{height:92px;background:#0f1625;border-color:#30405a}.group[data-v-04462c7a]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-04462c7a]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-04462c7a]:hover{background:#20202e}.group-reset[data-v-04462c7a]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-04462c7a]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-04462c7a]{padding:8px 10px 12px}.caret[data-v-04462c7a]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-04462c7a]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-04462c7a]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-04462c7a]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.placeholder[data-v-04462c7a]{color:#667;font-size:11px;padding:6px 0}.export-settings[data-v-04462c7a]{padding-top:3px}.export-field[data-v-04462c7a]{display:flex;flex-direction:column;gap:6px;margin:10px 0 13px;color:#9ca8bf;font-size:11px;font-weight:600}.export-input[data-v-04462c7a]{width:100%;min-height:34px;box-sizing:border-box;padding:6px 9px;color:#e3e7f2;background:#141a29;border-color:#35445f}.export-fps-row[data-v-04462c7a]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.export-fps-field[data-v-04462c7a]{margin-bottom:5px}.export-checkbox[data-v-04462c7a]{display:flex;align-items:center;gap:7px;min-height:34px;margin-bottom:5px;color:#aeb8cc;font-size:11px;white-space:nowrap}.export-checkbox input[data-v-04462c7a]{width:17px;height:17px;margin:0;accent-color:#625ff1}.export-help[data-v-04462c7a]{margin:-6px 0 14px;color:#66758e;font-size:10px;line-height:1.5}.export-switches[data-v-04462c7a]{display:grid;gap:13px;margin:4px 0 7px;padding-top:2px}.export-switch[data-v-04462c7a]{font-weight:600}.export-switch-last[data-v-04462c7a]{margin-top:13px}.inp.tiny[data-v-04462c7a]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-04462c7a]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-04462c7a]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-04462c7a]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-04462c7a]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-04462c7a]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-04462c7a]:after{transform:translate(14px)}.switch-row input:disabled+.switch-ui[data-v-04462c7a]{opacity:.45;cursor:not-allowed}.spine-export-actions[data-v-7ff40afe]{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.export-spine-json[data-v-7ff40afe]{width:100%;padding:9px 8px;flex:0 0 auto;border:1px solid #4f4b9a;border-radius:7px;background:#403b91;color:#f1f0ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-json[data-v-7ff40afe]:hover{border-color:#7774ff;background:#514bc0}.export-spine-json[data-v-7ff40afe]:disabled{cursor:wait;opacity:.68}.export-spine-project[data-v-7ff40afe]{grid-column:1 / -1;width:100%;padding:7px 8px;border:1px solid #287d69;border-radius:7px;background:#196854;color:#edfff9;font-size:12px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.export-spine-project small[data-v-7ff40afe]{color:inherit;font-size:9px;font-weight:500;line-height:1.1}.export-spine-project[data-v-7ff40afe]:hover:not(:disabled){border-color:#47c89f;background:#238267}.export-spine-project[data-v-7ff40afe]:disabled{cursor:not-allowed;opacity:.48}.export-spine-images[data-v-7ff40afe]{width:100%;padding:8px;border:1px solid #3b5f8b;border-radius:7px;background:#243e64;color:#eaf3ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-images[data-v-7ff40afe]:hover:not(:disabled){border-color:#6099dc;background:#315581}.export-spine-images[data-v-7ff40afe]:disabled{cursor:wait;opacity:.55}.connector-status[data-v-7ff40afe]{display:flex;align-items:center;justify-content:center;gap:5px;padding-top:6px;color:#717b99;font-size:10px}.connector-status .connector-dot[data-v-7ff40afe]{width:6px;height:6px;border-radius:50%;background:#66718f}.connector-status.ready[data-v-7ff40afe]{color:#70d8ae}.connector-status.ready .connector-dot[data-v-7ff40afe]{background:#49c993;box-shadow:0 0 5px #49c99388}.connector-status.warning[data-v-7ff40afe]{color:#d4aa67}.connector-status.warning .connector-dot[data-v-7ff40afe]{background:#d4aa67}.connector-status button[data-v-7ff40afe]{padding:0 3px;border:0;background:transparent;color:#8290b6;font-size:10px;cursor:pointer}.connector-status button[data-v-7ff40afe]:hover{color:#c5caff}.connector-status a[data-v-7ff40afe]{padding:0 3px;color:#a8b0ff;font-size:10px;text-decoration:underline}.connector-status a[data-v-7ff40afe]:hover{color:#d8dcff}.export-message[data-v-7ff40afe]{padding:7px 5px 0;color:#70d8ae;font-size:10px;line-height:1.45;text-align:center}.export-message.error[data-v-7ff40afe]{color:#ff858f}.export-message a[data-v-7ff40afe]{display:inline-block;margin-left:5px;color:#9da7ff;text-decoration:underline}.panel[data-v-283ef8eb]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.panel-scroll[data-v-283ef8eb]{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin;scrollbar-color:#2e2e44 transparent}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar{width:6px}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-track{background:transparent}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-thumb{background:#2e2e44;border-radius:3px}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-thumb:hover{background:#3a3a55}.panel-header[data-v-283ef8eb]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex:0 0 auto;font-weight:700;color:#ccd}.timeline[data-v-1e581e89]{height:100%;background:#12121c;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;padding:6px 10px;gap:4px}.tl-controls[data-v-1e581e89]{display:flex;align-items:center;gap:8px}.tl-btn[data-v-1e581e89]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.tl-btn.on[data-v-1e581e89]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.tl-range[data-v-1e581e89]{display:flex;height:25px;align-items:center;gap:3px;color:#778198;font-size:10px}.tl-range input[data-v-1e581e89]{width:43px;height:25px;padding:0 5px;box-sizing:border-box;border:1px solid #3a3a51;border-radius:5px;outline:none;background:#181824;color:#e1e4ed;font-size:11px;text-align:center}.tl-range input[data-v-1e581e89]:focus{border-color:#716eff}.tl-loop-range[data-v-1e581e89]{height:25px;padding:0 7px;border:1px solid #4e5680;border-radius:5px;background:#252943;color:#bfc8e8;font-size:10px;cursor:pointer;white-space:nowrap}.tl-loop-range[data-v-1e581e89]:hover{border-color:#716eff;color:#fff}.tl-frame[data-v-1e581e89]{display:inline-block;flex:0 0 92px;width:92px;box-sizing:border-box;font-size:12px;color:#aab;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}.tl-frame b[data-v-1e581e89]{display:inline;color:inherit;font-weight:400}.tl-legend[data-v-1e581e89]{display:flex;align-items:center;gap:4px;color:#778198;font-size:10px}.tl-legend i[data-v-1e581e89]{display:inline-block;width:10px;height:7px;border-radius:2px}.legend-emission[data-v-1e581e89]{margin-left:4px;background:#2f8b62}.legend-life[data-v-1e581e89]{margin-left:5px;background:#a54551}.legend-spine[data-v-1e581e89]{margin-left:5px;background:#7448b8}.tl-anim[data-v-1e581e89]{display:flex;align-items:center;gap:6px;font-size:12px;color:#aab}.tl-owner-animation[data-v-1e581e89]{position:relative}.tl-animation-trigger[data-v-1e581e89]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:116px;height:25px;padding:0 7px;overflow:hidden;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;cursor:pointer}.tl-animation-trigger>span[data-v-1e581e89]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-trigger>i[data-v-1e581e89]{flex:0 0 auto;color:#8c96ad;font-style:normal}.tl-animation-trigger[data-v-1e581e89]:disabled{opacity:.5;cursor:not-allowed}.tl-animation-menu[data-v-1e581e89]{position:absolute;z-index:30;right:0;bottom:calc(100% + 6px);width:226px;padding:7px;border:1px solid #3c4760;border-radius:8px;background:#171b29;box-shadow:0 10px 24px #00000073}.tl-animation-menu-title[data-v-1e581e89]{padding:2px 4px 6px;color:#77839c;font-size:10px}.tl-animation-option[data-v-1e581e89]{display:flex;align-items:center;justify-content:space-between;width:100%;height:27px;padding:0 7px;border:0;border-radius:5px;background:transparent;color:#b8c1d5;text-align:left;cursor:pointer}.tl-animation-option>span[data-v-1e581e89]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-option[data-v-1e581e89]:hover{background:#252e42}.tl-animation-option.on[data-v-1e581e89]{background:#34335d;color:#fff}.tl-animation-option>i[data-v-1e581e89]{color:#8d8aff;font-style:normal}.tl-animation-editor[data-v-1e581e89]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;margin-top:7px;padding-top:7px;border-top:1px solid #2b3346}.tl-animation-name[data-v-1e581e89]{min-width:0;height:27px;padding:0 7px;box-sizing:border-box;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2;outline:none}.tl-animation-name[data-v-1e581e89]:focus{border-color:#6865d8}.tl-animation-editor button[data-v-1e581e89],.tl-animation-actions button[data-v-1e581e89]{height:27px;padding:0 8px;border:1px solid #3c4861;border-radius:5px;background:#29344a;color:#cbd3e3;cursor:pointer}.tl-animation-actions[data-v-1e581e89]{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}.tl-animation-actions button[data-v-1e581e89]:last-child{border-color:#5b3942;background:#3b282f;color:#e2a8b2}.tl-animation-actions button[data-v-1e581e89]:disabled{opacity:.4;cursor:not-allowed}.tl-animation-error[data-v-1e581e89]{margin-top:5px;color:#ef8997;font-size:10px}.tl-animation-hint[data-v-1e581e89]{margin-top:5px;color:#69758d;font-size:9px;text-align:center}.tl-sel[data-v-1e581e89]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px;padding:2px 6px;font-size:12px}.tl-sel[data-v-1e581e89]:disabled{opacity:.5;cursor:not-allowed}.tl-spine-preview .tl-sel[data-v-1e581e89]{max-width:190px}.tl-zoom[data-v-1e581e89]{margin-left:auto;font-size:11px;color:#667}.tl-viewport[data-v-1e581e89]{position:relative;flex:1;overflow:hidden;background:#0d0d14;border:1px solid #2a2a3c;border-radius:6px;cursor:ew-resize}.tl-ticks[data-v-1e581e89]{position:absolute;top:0;left:0;right:0;height:18px}.tl-tickline[data-v-1e581e89]{position:absolute;top:0;bottom:0;width:1px;background:#263040}.tl-ticklabel[data-v-1e581e89]{position:absolute;top:2px;transform:translate(-50%);font-size:9px;color:#667}.tl-playhead[data-v-1e581e89]{position:absolute;top:0;bottom:0;width:2px;background:#fc3;z-index:5;pointer-events:none}.tl-lanes[data-v-1e581e89]{position:absolute;top:22px;left:0;right:0;bottom:0}.tl-lane[data-v-1e581e89]{position:relative;height:26px;margin-bottom:4px}.lane-ico[data-v-1e581e89]{position:absolute;left:4px;top:6px;font-size:11px;color:#dde;z-index:2;pointer-events:none}.lane-bar[data-v-1e581e89]{position:absolute;top:4px;height:18px;display:flex;align-items:stretch;cursor:grab;box-sizing:border-box}.lane-bar[data-v-1e581e89]:active{cursor:grabbing}.lane-name[data-v-1e581e89]{position:absolute;left:14px;right:5px;top:2px;z-index:2;pointer-events:none;font-size:11px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-life[data-v-1e581e89]{position:absolute;inset:0 auto 0 0;z-index:0;min-width:1px;border:1px solid #c05a66;border-radius:5px;background:#a54551;box-sizing:border-box}.bar-life.loop-life[data-v-1e581e89]{border-color:#667085;background:#242b39}.bar-emission[data-v-1e581e89]{position:absolute;inset:0 auto 0 0;z-index:1;min-width:1px;border:1px solid #45a97d;border-radius:5px 0 0 5px;background:#2f8b62;box-sizing:border-box}.bar-emission.bar-loop[data-v-1e581e89]{border-radius:0}.bar-loop-transition[data-v-1e581e89]{position:absolute;top:0;bottom:0;z-index:1;border:1px solid #7d8799;background:#50596a;box-sizing:border-box}.bar-loop-start[data-v-1e581e89]{left:0;border-radius:5px 0 0 5px}.bar-loop-end[data-v-1e581e89]{border-radius:0 5px 5px 0}.bar-handle[data-v-1e581e89]{position:absolute;z-index:4;right:-4px;top:-1px;bottom:-1px;width:8px;cursor:ew-resize;background:#ffffff2e}.bar-handle[data-v-1e581e89]:hover{background:#ffffff59}.spine-ico[data-v-1e581e89]{color:#c08cff}.spine-bar[data-v-1e581e89]{position:absolute;top:4px;height:18px;min-width:1px;box-sizing:border-box;border:1px solid #a575ed;border-radius:5px;background:#7448b8;cursor:grab;box-shadow:inset 0 0 0 1px #ffffff0d}.spine-bar[data-v-1e581e89]:active{cursor:grabbing}.tl-empty[data-v-1e581e89]{color:#667;font-size:11px;padding:8px}.transfer-overlay[data-v-592b922e]{position:fixed;z-index:2000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:auto;cursor:wait;overscroll-behavior:contain;background:#05080f42;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.transfer-dialog[data-v-592b922e]{width:min(420px,calc(100vw - 40px));padding:18px 20px 16px;border:1px solid #414b66;border-radius:10px;box-shadow:0 18px 55px #00000075;background:#171d2b;color:#e7ebf5}.transfer-heading[data-v-592b922e]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;font-size:14px;font-weight:700}.transfer-heading strong[data-v-592b922e]{color:#a8a6ff;font-size:12px;font-variant-numeric:tabular-nums}.transfer-track[data-v-592b922e]{height:9px;overflow:hidden;border:1px solid #35415a;border-radius:999px;background:#0d1422}.transfer-bar[data-v-592b922e]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#4d75e8,#7774ff);transition:width .16s ease}.transfer-track.indeterminate .transfer-bar[data-v-592b922e]{width:42%;animation:transfer-slide-592b922e 1s ease-in-out infinite}.transfer-detail[data-v-592b922e]{min-height:17px;margin-top:9px;color:#8895ae;font-size:11px;line-height:1.5}.transfer-dialog.failed[data-v-592b922e]{border-color:#754351}.transfer-dialog.failed .transfer-heading strong[data-v-592b922e],.transfer-dialog.failed .transfer-detail[data-v-592b922e]{color:#e99aa9}.transfer-dialog.failed .transfer-bar[data-v-592b922e]{background:#c85d70}.transfer-fade-enter-active[data-v-592b922e],.transfer-fade-leave-active[data-v-592b922e]{transition:opacity .16s ease}.transfer-fade-enter-from[data-v-592b922e],.transfer-fade-leave-to[data-v-592b922e]{opacity:0}@keyframes transfer-slide-592b922e{0%{transform:translate(-110%)}to{transform:translate(250%)}}.layout[data-v-42c4fa00]{display:flex;width:100%;height:100%;min-height:0;overflow:clip}.parameter-panel[data-v-42c4fa00]{flex-shrink:0;height:100%;min-height:0;overflow:clip}.resizer-col[data-v-42c4fa00]{width:5px;cursor:col-resize;background:#1c1c2a;border-left:1px solid #2a2a3c;border-right:1px solid #2a2a3c;flex-shrink:0}.resizer-col[data-v-42c4fa00]:hover{background:#3a5a8c}.right[data-v-42c4fa00]{flex:1;min-width:0;height:100%;min-height:0;overflow:clip;display:flex;flex-direction:column}.panel-right .right[data-v-42c4fa00]{order:1}.panel-right .resizer-col[data-v-42c4fa00]{order:2}.panel-right .parameter-panel[data-v-42c4fa00]{order:3}.stage-area[data-v-42c4fa00]{flex:1;min-height:0;overflow:clip}.resizer-row[data-v-42c4fa00]{height:4px;cursor:row-resize;background:#1c1c2a;border-top:1px solid #2a2a3c;border-bottom:1px solid #2a2a3c;flex-shrink:0}.resizer-row[data-v-42c4fa00]:hover{background:#3a5a8c}.timeline-area[data-v-42c4fa00]{position:relative;z-index:10;flex-shrink:0;overflow:visible}html,body{width:100%;height:100%;margin:0;padding:0;overflow:clip;overscroll-behavior:none;background:#0b0b12;color:#e8e8f0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{position:fixed;top:0;right:0;bottom:0;left:0}*{box-sizing:border-box}#app{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;overflow:clip}html,body,#app{-webkit-user-select:none;user-select:none}input,textarea,select,[contenteditable=true]{-webkit-user-select:text;user-select:text}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none} +.help-overlay[data-v-78204b9d]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:72px 24px 28px;box-sizing:border-box;background:#05080fb8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.help-dialog[data-v-78204b9d]{width:min(820px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden;border:1px solid #3a4864;border-radius:14px;background:#141a27;color:#b8c3d8;box-shadow:0 22px 70px #0000009e}.help-head[data-v-78204b9d]{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 15px;border-bottom:1px solid #2b354a;background:linear-gradient(135deg,#202942,#181e2d)}.help-head h2[data-v-78204b9d]{margin:0;color:#eef2ff;font-size:19px}.help-head p[data-v-78204b9d]{margin:5px 0 0;color:#7786a3;font-size:11px}.help-close[data-v-78204b9d]{width:28px;height:28px;flex:0 0 28px;border:1px solid #43516b;border-radius:6px;background:#273249;color:#ccd7ed;cursor:pointer}.help-close[data-v-78204b9d]:hover{border-color:#7774ff;background:#3b4670;color:#fff}.help-body[data-v-78204b9d]{min-height:0;overflow:auto;padding:18px 20px 21px}.help-section[data-v-78204b9d]{padding:14px 15px;border:1px solid #2c3850;border-radius:10px;background:#181f2e}.help-section h3[data-v-78204b9d]{margin:0 0 11px;color:#9fb2ff;font-size:13px}.help-start ol[data-v-78204b9d]{margin:0;padding-left:21px;color:#aab6cc;font-size:12px;line-height:1.75}.help-start li[data-v-78204b9d]::marker{color:#7774ff;font-weight:700}.help-section b[data-v-78204b9d]{color:#dce4f7}.help-grid[data-v-78204b9d]{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(250px,.85fr);gap:12px;margin-top:12px}.help-list[data-v-78204b9d]{display:grid;gap:0;margin:0}.help-list>div[data-v-78204b9d]{display:grid;grid-template-columns:78px 1fr;gap:9px;padding:7px 0;border-bottom:1px solid #263146}.help-list>div[data-v-78204b9d]:last-child{border-bottom:0}.help-list dt[data-v-78204b9d]{color:#d3dcf0;font-size:11px;font-weight:700}.help-list dd[data-v-78204b9d]{margin:0;color:#8795ae;font-size:11px;line-height:1.5}.shortcut-list[data-v-78204b9d]{display:grid;gap:7px}.shortcut-list>div[data-v-78204b9d]{display:flex;align-items:center;min-height:25px;gap:5px}.shortcut-list kbd[data-v-78204b9d]{min-width:24px;box-sizing:border-box;padding:3px 6px;border:1px solid #465470;border-bottom-width:2px;border-radius:5px;background:#101623;color:#e0e7f6;font:10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;text-align:center}.shortcut-list span[data-v-78204b9d]{color:#65728b;font-size:10px}.shortcut-list em[data-v-78204b9d]{margin-left:auto;color:#9ca9c1;font-size:11px;font-style:normal}.help-note[data-v-78204b9d]{margin:11px 0 0;padding-top:9px;border-top:1px solid #2a3549;color:#697791;font-size:10px;line-height:1.55}.help-export[data-v-78204b9d]{margin-top:12px}.help-export p[data-v-78204b9d]{margin:0;color:#8997b0;font-size:11px;line-height:1.65}.help-doc-title[data-v-78204b9d]{margin:16px 2px 2px;color:#9fb2ff;font-size:13px;font-weight:700;letter-spacing:.5px}.help-module[data-v-78204b9d]{margin-top:12px}.help-module-head[data-v-78204b9d]{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:0;background:transparent;color:#9fb2ff;font:inherit;font-size:13px;font-weight:700;text-align:left;cursor:pointer}.help-module-head[data-v-78204b9d]:hover{color:#fff}.help-module-head .mtitle[data-v-78204b9d]{flex:1;min-width:0}.help-module-head .caret[data-v-78204b9d]{flex:0 0 auto;color:#7b86a2;font-size:12px}.help-module.open .help-module-head[data-v-78204b9d]{color:#fff}.help-module.open .help-module-head .caret[data-v-78204b9d]{color:#9fb2ff}.help-module .mnum[data-v-78204b9d]{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,#4a53b8,#6a5fd0);color:#fff;font-size:12px;font-weight:700}.help-module.help-connector[data-v-78204b9d]{border-color:#4a4f8a;background:linear-gradient(135deg,#1d2442,#181d2f)}.help-module.help-connector .help-module-head[data-v-78204b9d]{color:#b8c2ff}.help-module .connector-intro[data-v-78204b9d]{margin:0 0 10px;color:#9aa8c4;font-size:11px;line-height:1.6}.help-module .connector-intro b[data-v-78204b9d]{color:#dce4f7}.help-module .dl-link[data-v-78204b9d]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;margin:0 10px 6px 0;padding:6px 12px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;font-size:12px;font-weight:700;text-decoration:none}.help-module .dl-link[data-v-78204b9d]:hover{border-color:#8982ff;background:#554dc2}.help-module .dl-link small[data-v-78204b9d]{color:#cfe0ff;font-weight:500;font-size:9px}.help-module-body[data-v-78204b9d]{padding-top:10px}@media(max-width:760px){.help-overlay[data-v-78204b9d]{padding:66px 12px 14px}.help-grid[data-v-78204b9d]{grid-template-columns:1fr}}.topbar[data-v-4749834a]{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:10px;padding:8px 12px;background:#141420d9;border-radius:10px;border:1px solid rgba(255,255,255,.08);font-size:12px;color:#aab;z-index:5;flex-wrap:wrap}.topbar input[type=range][data-v-4749834a]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px}.tool-group[data-v-4749834a]{display:flex;gap:6px;margin-left:6px;padding-left:12px;border-left:1px solid #2a2a3c}.tool-btn[data-v-4749834a]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.tool-btn[data-v-4749834a]:hover{background:#2b3a5c;color:#fff}.tool-btn.on[data-v-4749834a]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.background-menu[data-v-4749834a]{position:relative;flex:0 0 auto}.background-btn[data-v-4749834a]{height:28px;padding:0 11px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;cursor:pointer}.background-btn[data-v-4749834a]:hover,.background-btn.on[data-v-4749834a]{border-color:#7774ff;background:#343b63;color:#fff}.background-panel[data-v-4749834a]{position:absolute;top:calc(100% + 9px);right:0;width:248px;box-sizing:border-box;padding:10px;border:1px solid #343b50;border-radius:9px;background:#141420fa;color:#aeb8cc;box-shadow:0 8px 24px #0000007a;z-index:12}.background-upload[data-v-4749834a]{width:100%;height:30px;border:1px solid #5652b5;border-radius:6px;background:#4540a0;color:#fff;cursor:pointer}.background-upload[data-v-4749834a]:hover{border-color:#8982ff;background:#554dc2}.background-clear[data-v-4749834a]{width:100%;height:28px;margin-top:6px;border:1px solid #70404a;border-radius:6px;background:#512a33;color:#efb5bd;cursor:pointer}.background-clear[data-v-4749834a]:hover:not(:disabled){border-color:#b65b6a;background:#6a303b;color:#fff}.background-clear[data-v-4749834a]:disabled{opacity:.42;cursor:not-allowed}.background-file-input[data-v-4749834a]{display:none}.background-file-name[data-v-4749834a]{margin:7px 2px 9px;overflow:hidden;color:#737f98;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.background-position-row[data-v-4749834a]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.background-position-row label[data-v-4749834a]{display:flex;align-items:center;gap:5px;color:#8995ad;font-size:11px}.background-position-row input[data-v-4749834a]{width:0;min-width:0;flex:1;box-sizing:border-box;height:28px;padding:0 6px;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2}.background-opacity-row[data-v-4749834a]{display:grid;grid-template-columns:46px 1fr 34px;align-items:center;gap:7px;margin-top:10px;font-size:11px}.background-opacity-row input[data-v-4749834a]{min-width:0;accent-color:#675de0}.background-opacity-row b[data-v-4749834a]{color:#aeb8cc;font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.help-btn[data-v-4749834a]{height:28px;margin-left:auto;padding:0 11px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cbd7ed;font-size:12px;font-weight:700;cursor:pointer}.help-btn[data-v-4749834a]:hover,.help-btn.on[data-v-4749834a]{border-color:#7774ff;background:#343b63;color:#fff}.zoom-pct[data-v-4749834a]{margin-left:0;font-variant-numeric:tabular-nums;color:#9aa;min-width:44px;text-align:center}.settings-btn[data-v-4749834a]{height:28px;padding:0 12px;flex:0 0 auto;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdf;font-size:12px;font-weight:700;cursor:pointer}.settings-btn[data-v-4749834a]:hover{border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-4749834a]{width:30px;height:28px;flex:0 0 30px;border:1px solid #3a4963;border-radius:6px;background:#202a3b;color:#cdd8ed;font-size:18px;line-height:1;cursor:pointer}.undo-btn[data-v-4749834a]:hover:not(:disabled){border-color:#7774ff;background:#2b3a5c;color:#fff}.undo-btn[data-v-4749834a]:disabled{opacity:.38;cursor:not-allowed}.settings-panel[data-v-1bba85d9]{position:absolute;top:52px;left:10px;width:240px;z-index:10;background:#141420f7;border:1px solid #2a2a3c;border-radius:10px;padding:10px 12px;font-size:12px;color:#aab;box-shadow:0 6px 20px #0006}.sp-head[data-v-1bba85d9]{display:flex;justify-content:space-between;align-items:center;font-weight:700;color:#cdf;margin-bottom:10px}.sp-section-title[data-v-1bba85d9]{margin:2px 0 8px;color:#8a93bb;font-size:11px}.sp-switch-row[data-v-1bba85d9]{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#aab}.sp-switch-control[data-v-1bba85d9]{display:inline-flex;align-items:center;gap:7px}.sp-switch-control input[data-v-1bba85d9]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sp-switch-ui[data-v-1bba85d9]{position:relative;width:34px;height:18px;border-radius:999px;background:#39445a;cursor:pointer;transition:background .16s ease}.sp-switch-ui[data-v-1bba85d9]:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#f4f6fb;transition:transform .16s ease}.sp-switch-control input:checked+.sp-switch-ui[data-v-1bba85d9]{background:#655df0}.sp-switch-control input:checked+.sp-switch-ui[data-v-1bba85d9]:after{transform:translate(16px)}.sp-switch-control input:focus-visible+.sp-switch-ui[data-v-1bba85d9]{outline:2px solid #8b86ff;outline-offset:2px}.sp-switch-control b[data-v-1bba85d9]{min-width:24px;color:#8a93bb;font-size:11px;font-weight:500}.sp-cache-note[data-v-1bba85d9]{margin-top:10px;padding-top:9px;border-top:1px solid #2a2a3c;color:#647089;font-size:10px;text-align:center}.sp-divider[data-v-1bba85d9]{height:1px;margin:10px 0;background:#2a2a3c}.sp-close[data-v-1bba85d9]{background:#2e3a55;border:none;color:#cdf;border-radius:4px;width:18px;height:18px;cursor:pointer;font-size:11px}.sp-row[data-v-1bba85d9]{display:flex;align-items:center;gap:8px;margin:8px 0}.sp-row>span[data-v-1bba85d9]:first-child{width:76px;flex-shrink:0;color:#8a93bb}.sp-row input[type=range][data-v-1bba85d9]{flex:1;background:#1a1a28;accent-color:#3a5a8c}.sp-num[data-v-1bba85d9]{width:52px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;padding:2px 4px}.sp-undo-limit[data-v-1bba85d9]{margin-left:auto;width:64px;height:26px;box-sizing:border-box}.sp-colr[data-v-1bba85d9]{width:26px;height:22px;border:none;background:none;cursor:pointer}.sp-hex[data-v-1bba85d9]{font-size:11px;color:#889;font-variant-numeric:tabular-nums}.sp-chk[data-v-1bba85d9]{display:flex;align-items:center;gap:6px;margin:8px 0;color:#aab}.stage-wrap[data-v-38dbe6fc]{position:relative;width:100%;height:100%;overflow:hidden}.stage-holder[data-v-38dbe6fc]{width:100%;height:100%;cursor:grab;touch-action:none;background-color:#0e1219;outline:none}.stage-holder.grid[data-v-38dbe6fc]{background:conic-gradient(#141a26 90deg,transparent 90deg 180deg,#141a26 180deg 270deg,#141a26 180deg 270deg,transparent 270deg);background-size:28px 28px}.stage-holder[data-v-38dbe6fc]:active{cursor:grabbing}.hud[data-v-38dbe6fc]{position:absolute;bottom:12px;left:12px;padding:8px 12px;background:#141420bf;border-radius:8px;font-size:12px;color:#a0a8cc}.hud-number[data-v-38dbe6fc]{display:inline-block;box-sizing:border-box;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.hud-system-count[data-v-38dbe6fc]{width:3ch}.hud-particle-count[data-v-38dbe6fc]{width:7ch;text-align:left}.hud-tip[data-v-38dbe6fc]{margin-left:12px;color:#5f6a8a;font-size:11px}b[data-v-38dbe6fc]{color:#fc3}.config-management-body[data-v-cb52d3e0]{padding-bottom:2px}.config-toolbar[data-v-cb52d3e0]{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:6px;margin-bottom:10px}.config-toolbar button[data-v-cb52d3e0],.config-toolbar select[data-v-cb52d3e0]{min-width:0;height:30px;box-sizing:border-box;border:1px solid #3b4864;border-radius:6px;background:#263149;color:#d6def0;font-size:11px}.config-toolbar button[data-v-cb52d3e0]{padding:0 9px;cursor:pointer}.config-toolbar button[data-v-cb52d3e0]:hover{border-color:#7169dc;background:#343d68;color:#fff}.config-toolbar select[data-v-cb52d3e0]{padding:0 7px;overflow:hidden;text-overflow:ellipsis}.config-toolbar select[data-v-cb52d3e0]:disabled{color:#68738a;background:#1b2130}.config-message[data-v-cb52d3e0]{margin:-4px 0 9px;color:#83b9a2;font-size:10px}.config-message.error[data-v-cb52d3e0]{color:#e8959e}.group[data-v-cb52d3e0]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-cb52d3e0]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-cb52d3e0]:hover{background:#20202e}.group-body[data-v-cb52d3e0]{padding:8px 10px 12px}.caret[data-v-cb52d3e0]{display:inline-block;width:12px;color:#667;font-size:11px}.ns[data-v-7c2fbed0]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.ns-label[data-v-7c2fbed0]{width:60px;flex-shrink:0;color:#8a93bb}.ns-range[data-v-7c2fbed0]{flex:1;accent-color:#3a7cd6}.ns-num[data-v-7c2fbed0]{width:56px;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px;text-align:right}.ns.disabled[data-v-7c2fbed0]{opacity:.55}.ns.disabled .ns-range[data-v-7c2fbed0],.ns.disabled .ns-num[data-v-7c2fbed0]{cursor:not-allowed}.ce[data-v-9bfb7b31]{display:flex;align-items:flex-start;gap:6px;width:100%}.ce-editor[data-v-9bfb7b31]{flex:1;min-width:0}.ce-reset[data-v-9bfb7b31]{flex:0 0 auto;padding:5px 7px;border:1px solid #3b4b65;border-radius:5px;background:#242f42;color:#c4cee2;font-size:10px;cursor:pointer}.ce-reset[data-v-9bfb7b31]:hover{border-color:#7774ff;background:#4f4dc2;color:#fff}.ce-svg[data-v-9bfb7b31]{width:100%;height:110px;display:block;border:1px solid #2a2a3c;border-radius:6px;background:#10101a;cursor:crosshair;touch-action:none}.ce-grid line[data-v-9bfb7b31]{stroke:#1e1e30;stroke-width:1}.ce-frame[data-v-9bfb7b31]{stroke:#2e2e44;stroke-width:1}.ce-line[data-v-9bfb7b31]{stroke:#6ea0e8;stroke-width:2;stroke-linejoin:round}.ce-handles line[data-v-9bfb7b31]{stroke:#8d96b5;stroke-width:1;stroke-dasharray:3 2}.ce-handles circle[data-v-9bfb7b31]{fill:#b7c2dd;stroke:#344d94;stroke-width:1.2;cursor:grab}.ce-handles circle[data-v-9bfb7b31]:active{cursor:grabbing}.ce-node[data-v-9bfb7b31]{fill:#fff;stroke:#3a55aa;stroke-width:1.6;pointer-events:none}.ce-hit[data-v-9bfb7b31]{fill:transparent;stroke:none;cursor:grab}.ce-hit[data-v-9bfb7b31]:active{cursor:grabbing}.ce-nav[data-v-9bfb7b31]{display:flex;justify-content:space-between;margin-top:3px}.ce-tip[data-v-9bfb7b31]{color:#566;font-size:10px}.spine-editor[data-v-3545b078]{display:grid;gap:10px;color:#c5cbe0}.editor-title[data-v-3545b078],.section-title[data-v-3545b078]{color:#dce2f5;font-weight:700}.editor-title[data-v-3545b078]{padding-bottom:9px;border-bottom:1px solid #30394d}.grid[data-v-3545b078]{display:grid;gap:8px}.grid.three[data-v-3545b078]{grid-template-columns:repeat(3,minmax(0,1fr))}.field[data-v-3545b078]{display:grid;gap:5px;min-width:0;color:#919bb7;font-size:12px}.field input[data-v-3545b078],.field select[data-v-3545b078],.asset-name[data-v-3545b078]{box-sizing:border-box;width:100%;min-width:0;height:35px;padding:0 10px;color:#e2e6f3;background:#101625;border:1px solid #32405b;border-radius:6px}.divider[data-v-3545b078]{height:1px;background:#30394d;margin:2px 0}.asset-row[data-v-3545b078]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.asset-name[data-v-3545b078]{display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#7f8aa7}button[data-v-3545b078]{height:35px;padding:0 13px;border:1px solid #3b4a67;border-radius:6px;background:#33415b;color:#e2e6f3;cursor:pointer}button[data-v-3545b078]:hover{filter:brightness(1.13)}button[data-v-3545b078]:disabled{opacity:.55;cursor:wait}.folder-select[data-v-3545b078]{width:100%;border-color:#6659c7;background:#4940a8;color:#fff}.folder-hint[data-v-3545b078]{margin-top:-5px;color:#69758e;font-size:10px;line-height:1.45}.asset-actions[data-v-3545b078]{display:grid;grid-template-columns:1fr 1fr;gap:5px}.asset-actions .load[data-v-3545b078]{background:#5543df;border-color:#6959ec}.asset-actions .clear[data-v-3545b078]{background:#702b34;border-color:#803842}.runtime-note[data-v-3545b078]{color:#69758e;font-size:11px;text-align:center}.error[data-v-3545b078]{padding:8px 10px;color:#ffabb2;background:#4b2028;border:1px solid #76323e;border-radius:6px;font-size:12px}.section-box[data-v-3545b078]{display:grid;gap:8px;padding:10px;background:#182132;border:1px solid #303c54;border-radius:7px}.empty[data-v-3545b078]{color:#667187;font-size:12px;padding:5px 0}.bone-tree[data-v-3545b078]{max-height:240px;overflow:auto;padding:4px 0;background:#111827;border-radius:5px}.tree-title-row[data-v-3545b078]{display:flex;align-items:center;justify-content:space-between;gap:8px}.tree-tabs[data-v-3545b078]{display:flex;gap:3px;margin:6px 0}.tree-tabs button[data-v-3545b078]{height:24px;padding:0 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:10px;cursor:pointer}.tree-tabs button[data-v-3545b078]:hover{background:#273246}.tree-tabs button.on[data-v-3545b078]{border-color:#7774ff;background:#35336b;color:#fff}.selected-bone[data-v-3545b078]{width:auto;min-width:0;max-width:100%;height:24px;flex:0 1 auto;overflow:hidden;padding:0 7px;color:#75819c;background:#182132;border:1px solid transparent;border-radius:5px;font-size:10px;text-align:right;white-space:nowrap;text-overflow:ellipsis}.selected-bone.active[data-v-3545b078]{color:#aeb9d4;background:#242f44;border-color:#35445e;cursor:pointer}.selected-bone.active[data-v-3545b078]:hover{border-color:#675ec4;background:#302b57}.selected-bone[data-v-3545b078]:disabled{opacity:1;cursor:default}.selected-bone strong[data-v-3545b078]{color:#c5cde3;font-weight:600}.tree-action[data-v-3545b078]{height:24px;padding:0 8px;color:#9aa7c2;background:#242f44;border-color:#35445e;font-size:10px}.bone-search[data-v-3545b078]{position:relative}.bone-search input[data-v-3545b078]{box-sizing:border-box;width:100%;height:30px;padding:0 32px 0 9px;color:#dce2f2;background:#101827;border:1px solid #33415b;border-radius:5px;font-size:11px;outline:none}.bone-search input[data-v-3545b078]:focus{border-color:#7065df;box-shadow:0 0 0 1px #7065df38}.bone-search button[data-v-3545b078]{position:absolute;top:3px;right:3px;width:24px;height:24px;padding:0;border:0;color:#8d98b0;background:transparent}.bone[data-v-3545b078]{display:flex;align-items:center;gap:4px;min-height:25px;color:#aeb8d2;font-size:12px;border-bottom:1px solid rgba(72,84,112,.22);cursor:pointer;outline:none}.bone[data-v-3545b078]:hover{background:#45567e38}.bone.selected[data-v-3545b078]{color:#f0edff;background:#6b53dd52;box-shadow:inset 2px 0 #8e72ff}.bone[data-v-3545b078]:focus-visible{box-shadow:inset 0 0 0 1px #7d72dd}.bone-toggle[data-v-3545b078]{width:22px;height:22px;padding:0;border:0;background:transparent;color:#9aa7c2}.bone-toggle[data-v-3545b078]:hover{background:#26324a}.bone-leaf[data-v-3545b078]{display:inline-flex;width:22px;justify-content:center;color:#58647d}.bone-name[data-v-3545b078]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.slot-row[data-v-3545b078]{padding-right:8px}.slot-order[data-v-3545b078]{width:24px;flex:0 0 24px;color:#66758e;font-size:10px;font-variant-numeric:tabular-nums;text-align:right}.slot-attachment[data-v-3545b078]{margin-left:auto;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6d7c96;font-size:10px}@media(max-width:430px){.grid.three[data-v-3545b078]{grid-template-columns:1fr}}.panel[data-v-3873124f]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.empty[data-v-3873124f],.panel-hint[data-v-3873124f]{color:#667;font-size:12px;padding:8px 0}.group[data-v-3873124f]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-3873124f]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-3873124f]:hover{background:#20202e}.scene-head[data-v-3873124f]{padding-right:6px}.scene-actions[data-v-3873124f]{margin-left:auto;display:flex;align-items:center;gap:4px}.scene-add[data-v-3873124f]{height:24px;padding:0 6px;border:1px solid #3a4a6a;border-radius:5px;background:#2e3a55;color:#cdf;font-size:10px;white-space:nowrap;cursor:pointer}.scene-add[data-v-3873124f]:hover{border-color:#7774ff;background:#45426f;color:#fff}.scene-add[data-v-3873124f]:disabled{opacity:.42;cursor:not-allowed;border-color:#343a4b;background:#252a38;color:#778095}.group-body[data-v-3873124f]{padding:8px 10px 12px}.caret[data-v-3873124f]{display:inline-block;width:12px;color:#667;font-size:11px}.tree[data-v-3873124f]{margin-bottom:8px}.tree-item[data-v-3873124f]{display:flex;align-items:center;gap:6px;padding:5px 6px;font-size:12px;color:#bcd;border-radius:6px;margin-bottom:2px}.tree-item.on[data-v-3873124f]{background:#26324a;color:#ffe}.tree-item .tdot[data-v-3873124f]{color:#fc3;font-size:10px}.tree-item .tdot.dim[data-v-3873124f]{color:#556}.tree-item .tdot.collision-dot[data-v-3873124f]{color:#ff7070}.tree-item .tdot.path-dot[data-v-3873124f]{color:#ff933e;font-size:14px}.tree-item .tdot.spine-dot[data-v-3873124f]{color:#c08cff;font-size:11px}.tree-item .tlabel[data-v-3873124f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-tree[data-v-3873124f]{padding-bottom:8px;border-bottom:1px solid #2a2a3c}.scene-object-item[data-v-3873124f]{min-height:28px;cursor:pointer}.scene-object-item[data-v-3873124f]:hover{background:#202b40}.scene-object-kind[data-v-3873124f]{color:#75829c;font-size:10px}.scene-object-eye[data-v-3873124f]{width:24px;height:22px;padding:3px;flex:0 0 24px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9aa6bf;cursor:pointer}.scene-object-eye[data-v-3873124f]:hover{border-color:#4b5972;background:#29354a;color:#e1e7f4}.scene-object-eye.off[data-v-3873124f]{color:#59647a}.scene-object-eye svg[data-v-3873124f]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.scene-object-eye .eye-slash[data-v-3873124f]{stroke:#d47b88;stroke-width:2}.scene-object-delete[data-v-3873124f]{width:24px;height:22px;padding:0;border:1px solid #59414a;border-radius:5px;background:#3a272f;color:#efb4bd;font-size:11px;cursor:pointer}.scene-object-delete[data-v-3873124f]:hover{border-color:#a45c69;background:#57303a;color:#fff}.object-editor-title[data-v-3873124f]{margin:10px 0 8px;padding-top:8px;border-top:1px solid #2a2a3c;color:#cbd4e8;font-weight:700}.field-block[data-v-3873124f]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-3873124f]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-3873124f]{color:#5f6d86;line-height:1.5}.field-grid[data-v-3873124f]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-3873124f]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-3873124f]{width:100%;min-height:30px;box-sizing:border-box}.check-field[data-v-3873124f]{align-items:flex-start}.check-field input[data-v-3873124f]{width:18px;height:18px;margin:4px 0;accent-color:#4f7ee8}.follow-path[data-v-3873124f],.setting-line[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin:12px 0 4px;color:#aeb8cf;font-size:12px}.setting-line[data-v-3873124f]{justify-content:space-between}.follow-path input[data-v-3873124f],.setting-line input[type=checkbox][data-v-3873124f]{width:17px;height:17px;accent-color:#4f7ee8}.collider-follow-section[data-v-3873124f]{margin-top:12px;padding-top:4px;border-top:1px solid #30394d}.collider-curve-title[data-v-3873124f]{display:flex;flex-direction:column;gap:3px;margin:12px 0 6px;color:#aeb8cf;font-size:12px}.collider-curve-title small[data-v-3873124f]{color:#67738c;font-size:10px;line-height:1.45}.path-color[data-v-3873124f]{width:48px;height:28px;padding:0;border:1px solid #3a4963;background:transparent;cursor:pointer}.path-help[data-v-3873124f]{margin:12px 0;color:#7d89a2;font-size:11px;line-height:1.55}.path-help>span[data-v-3873124f]{color:#aeb8cf}.path-help ul[data-v-3873124f]{margin:6px 0 0;padding-left:20px}.path-help li[data-v-3873124f]{margin:3px 0}.path-action[data-v-3873124f]{width:100%;height:31px;margin-top:7px;border:0;border-radius:5px;background:#33425b;color:#c9d1e1;cursor:pointer}.path-action[data-v-3873124f]:hover{filter:brightness(1.12)}.path-action.primary[data-v-3873124f]{background:#f05408;color:#fff}.row[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-3873124f]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-3873124f]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.inp.tiny[data-v-3873124f]{width:46px;flex:0 0 46px;text-align:center}.seed-row[data-v-3873124f]{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #2d3950}.seed-row label[data-v-3873124f]{width:64px;color:#8f9bb5;font-size:12px}.seed-input[data-v-3873124f]{min-width:0;flex:1;padding:6px 8px;border:1px solid #344158;border-radius:6px;outline:none;background:#0f1625;color:#e2e7f2;font-size:12px}.seed-input[data-v-3873124f]:focus{border-color:#625ff1}.seed-random[data-v-3873124f]{width:34px;height:30px;border:1px solid #3a4860;border-radius:6px;background:#2c3950;color:#d7def0;cursor:pointer}.seed-random[data-v-3873124f]:hover{background:#394964}.scene-seed[data-v-3873124f]{margin-top:10px}.seed-hint[data-v-3873124f]{margin:5px 0 1px 72px;color:#657188;font-size:9px;line-height:1.45}.group[data-v-f9eac627]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-f9eac627]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-f9eac627]:hover{background:#20202e}.group-reset[data-v-f9eac627]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-f9eac627]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-f9eac627]{padding:8px 10px 12px}.caret[data-v-f9eac627]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-f9eac627]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-f9eac627]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-f9eac627]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-f9eac627]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.segs[data-v-f9eac627]{display:flex;gap:6px;margin:6px 0}.stream-behavior-segs[data-v-f9eac627]{margin-top:10px}.stream-loop-options[data-v-f9eac627]{display:grid;gap:8px;margin:8px 0 4px;padding:9px 10px;border:1px solid #32405a;border-radius:6px;background:#171f2e}.loop-section-row[data-v-f9eac627]{display:flex;min-height:27px;align-items:center;justify-content:space-between;gap:8px}.loop-duration-control[data-v-f9eac627]{display:flex;flex:0 0 auto;align-items:center;gap:7px}.loop-duration-toggle[data-v-f9eac627]{gap:5px;font-size:10px;white-space:nowrap}.loop-duration-toggle .switch-ui[data-v-f9eac627]{width:26px;height:14px}.loop-duration-toggle .switch-ui[data-v-f9eac627]:after{width:10px;height:10px}.loop-duration-toggle input:checked+.switch-ui[data-v-f9eac627]:after{transform:translate(12px)}.loop-section-duration[data-v-f9eac627]{display:flex;flex:0 0 auto;align-items:center;gap:4px;color:#7f8ba4;font-size:11px}.loop-section-duration input[data-v-f9eac627]{position:static;width:54px;height:25px;padding:0 6px;border:1px solid #3a465f;border-radius:5px;outline:none;background:#101725;color:#e4e8f2;text-align:right;opacity:1;pointer-events:auto}.loop-section-duration input[data-v-f9eac627]:focus{border-color:#716eff}.loop-auto-duration[data-v-f9eac627]{min-width:54px;color:#77839a;text-align:right;white-space:nowrap}.seg[data-v-f9eac627]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-f9eac627]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.seg[data-v-f9eac627]{display:flex;gap:6px;margin:6px 0}.inp.tiny[data-v-f9eac627]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-f9eac627]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-f9eac627]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-f9eac627]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-f9eac627]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-f9eac627]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-f9eac627]:after{transform:translate(14px)}.modifier-hint[data-v-f9eac627]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.stream-loop-hint[data-v-f9eac627]{margin:9px 2px 3px;padding:7px 8px;border:1px solid #4a436e;border-radius:5px;background:#211f35;color:#aaa4d7}.switch-row input:disabled+.switch-ui[data-v-f9eac627]{opacity:.45;cursor:not-allowed}.pac[data-v-238f838c]{padding:10px;margin:8px 0;border:1px solid #2c3850;border-radius:7px;background:#171d2a}.pac-head[data-v-238f838c]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.pac-label[data-v-238f838c]{color:#aeb8cf;font-size:12px;font-weight:600;white-space:nowrap}.pac-modes[data-v-238f838c]{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pac-mode[data-v-238f838c]{padding:4px 7px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.pac-mode.on[data-v-238f838c]{border-color:#7774ff;background:#605df0;color:#fff}.pac-curve[data-v-238f838c]{margin-top:8px}.pac-axis[data-v-238f838c]{display:flex;justify-content:space-between;margin-top:3px;color:#5f6b82;font-size:10px}.pac[data-v-238f838c] .ns-label{width:58px}.pac[data-v-238f838c] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.pac[data-v-238f838c] .ce-tip{color:#657188}.group[data-v-cf6b86a5]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-cf6b86a5]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-cf6b86a5]:hover{background:#20202e}.group-reset[data-v-cf6b86a5]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-cf6b86a5]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-cf6b86a5]{padding:8px 10px 12px}.caret[data-v-cf6b86a5]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-cf6b86a5]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-cf6b86a5]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.attr-body[data-v-cf6b86a5]{padding:10px;background:#151b27}.attr-section-title[data-v-cf6b86a5]{margin:2px 0 8px;color:#9ca8c0;font-size:12px;font-weight:700}.attr-section-title.life-title[data-v-cf6b86a5]{margin-top:14px;padding-top:12px;border-top:1px solid #2d3950}.attr-axis-head[data-v-cf6b86a5]{display:flex;align-items:center;justify-content:space-between;margin:10px 1px -2px;color:#aeb8cf;font-size:12px;font-weight:600}.axis-modes[data-v-cf6b86a5]{display:flex;gap:4px}.axis-mode[data-v-cf6b86a5]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-cf6b86a5]{border-color:#7774ff;background:#605df0;color:#fff}.life-item[data-v-cf6b86a5]{padding:9px 0;border-bottom:1px solid #2a3549}.switch-row[data-v-cf6b86a5]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-cf6b86a5]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-cf6b86a5]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-cf6b86a5]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-cf6b86a5]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-cf6b86a5]:after{transform:translate(14px)}.life-axis[data-v-cf6b86a5]{margin:9px 0 2px 42px}.switch-row input:disabled+.switch-ui[data-v-cf6b86a5]{opacity:.45;cursor:not-allowed}.gradient-editor[data-v-f6ab10bf]{margin:8px 0 11px 68px}.gradient-bar[data-v-f6ab10bf]{position:relative;height:18px;margin-bottom:14px;border:1px solid #465570;border-radius:6px;cursor:crosshair}.gradient-stop[data-v-f6ab10bf]{position:absolute;top:15px;width:14px;height:17px;padding:0;transform:translate(-50%);border:2px solid #d8deea;border-radius:2px 2px 5px 5px;background:var(--stop-color);cursor:grab;box-shadow:0 1px 3px #0009}.gradient-stop[data-v-f6ab10bf]:before{content:"";position:absolute;left:2px;top:-7px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:5px solid #d8deea}.gradient-stop.selected[data-v-f6ab10bf]{outline:2px solid #7774ff;outline-offset:1px;z-index:2}.gradient-stop[data-v-f6ab10bf]:active{cursor:grabbing}.gradient-controls[data-v-f6ab10bf]{display:flex;align-items:center;gap:5px;margin-top:30px}.gradient-color[data-v-f6ab10bf]{width:28px;height:24px;padding:1px;border:1px solid #465570;border-radius:4px;background:#151b27;cursor:pointer}.gradient-hex-input[data-v-f6ab10bf]{width:66px;padding:4px 5px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#aeb8cb;font-size:10px;font-family:monospace}.gradient-hex-input[data-v-f6ab10bf]:focus{border-color:#7774ff;color:#fff}.gradient-position[data-v-f6ab10bf]{display:flex;align-items:center;color:#71809a;font-size:10px}.gradient-position input[data-v-f6ab10bf]{width:43px;padding:3px 4px;border:1px solid #344158;border-radius:4px;outline:none;background:#101725;color:#dce3ef;text-align:right}.gradient-action[data-v-f6ab10bf]{width:25px;height:24px;padding:0;border:1px solid #3a4860;border-radius:4px;background:#273246;color:#cbd4e5;cursor:pointer}.gradient-action[data-v-f6ab10bf]:hover:not(:disabled){border-color:#7774ff;color:#fff}.gradient-action.danger[data-v-f6ab10bf]{color:#e3a5aa}.gradient-action[data-v-f6ab10bf]:disabled{opacity:.35;cursor:not-allowed}.gradient-hint[data-v-f6ab10bf]{margin-top:5px;color:#59667b;font-size:9px}.pivot-editor[data-v-1261b03a]{margin-top:8px;padding:8px;border:1px solid #2e3c55;border-radius:8px;background:#121a27}.pivot-toolbar[data-v-1261b03a]{display:flex;align-items:center;gap:7px;margin-bottom:7px}.pivot-hint[data-v-1261b03a]{flex:1;min-width:0;display:flex;align-items:center;gap:5px;color:#9aa8c4;font-size:10px;line-height:1.3}.pivot-hint-icon[data-v-1261b03a]{color:#8f8cff;font-size:13px}.pivot-zoom[data-v-1261b03a]{display:flex;align-items:center;gap:2px;padding:2px;border:1px solid #34435e;border-radius:6px;background:#182234}.pivot-zoom button[data-v-1261b03a]{width:20px;height:20px;padding:0;border:0;border-radius:4px;background:transparent;color:#a9b6d0;font-size:13px;cursor:pointer}.pivot-zoom button[data-v-1261b03a]:hover:not(:disabled){background:#2a3853;color:#fff}.pivot-zoom button[data-v-1261b03a]:disabled{opacity:.3;cursor:default}.pivot-zoom span[data-v-1261b03a]{min-width:36px;text-align:center;color:#c7d1e6;font-size:10px;font-variant-numeric:tabular-nums}.pivot-expand[data-v-1261b03a]{width:24px;height:24px;padding:0;border:1px solid #34435e;border-radius:6px;background:#182234;color:#a9b6d0;font-size:13px;cursor:pointer}.pivot-expand[data-v-1261b03a]:hover{border-color:#7774ff;color:#fff}.pivot-stage[data-v-1261b03a]{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:156px;overflow:hidden;border:1px solid #2f3d57;border-radius:8px;background-color:#10161f;background-image:linear-gradient(45deg,#1a2230 25%,transparent 25%),linear-gradient(-45deg,#1a2230 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#1a2230 75%),linear-gradient(-45deg,transparent 75%,#1a2230 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;touch-action:none;cursor:crosshair}.pivot-large .pivot-stage[data-v-1261b03a]{height:340px;background-size:22px 22px;background-position:0 0,0 11px,11px -11px,-11px 0}.pivot-stage.panning[data-v-1261b03a]{cursor:grabbing}.pivot-box[data-v-1261b03a]{position:relative;flex:0 0 auto}.pivot-box>img[data-v-1261b03a]{display:block;width:100%;height:100%;object-fit:fill;-webkit-user-select:none;user-select:none;pointer-events:none}.pivot-empty[data-v-1261b03a]{color:#4e5a70;font-size:12px}.pivot-cross[data-v-1261b03a]{position:absolute;pointer-events:none;background:#7e76ffbf;box-shadow:0 0 3px #7e76ff99}.pivot-cross.vertical[data-v-1261b03a]{top:0;bottom:0;width:1px;transform:translate(-.5px)}.pivot-cross.horizontal[data-v-1261b03a]{left:0;right:0;height:1px;transform:translateY(-.5px)}.pivot-marker[data-v-1261b03a]{position:absolute;width:13px;height:13px;transform:translate(-50%,-50%);border:2px solid #c9c6ff;border-radius:50%;background:#605ff0d9;box-shadow:0 0 0 3px #605ff047,0 0 10px #605ff0cc;pointer-events:none}.pivot-badge[data-v-1261b03a]{position:absolute;transform:translate(-50%,14px);padding:2px 6px;border:1px solid #6f6bc7;border-radius:4px;background:#191c3aeb;color:#b9b6ff;font-size:9px;white-space:nowrap;pointer-events:none}.pivot-bottom[data-v-1261b03a]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:8px}.pivot-large .pivot-bottom[data-v-1261b03a]{gap:14px;margin-top:14px}.pivot-card[data-v-1261b03a]{min-width:0;padding:7px;border:1px solid #28344a;border-radius:8px;background:#151d2b}.pivot-card-head[data-v-1261b03a]{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:6px;color:#b9c4da;font-size:10px}.pivot-card-icon[data-v-1261b03a]{color:#8f8cff}.pivot-presets[data-v-1261b03a]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.pivot-preset[data-v-1261b03a]{height:30px;padding:0;border:1px solid #2f3d57;border-radius:5px;background:#1b2537;color:#aab6cf;font-size:16px;line-height:1;cursor:pointer}.pivot-preset[data-v-1261b03a]:hover{border-color:#5d5aa8;color:#d9d8ff}.pivot-preset.on[data-v-1261b03a]{border-color:#7774ff;background:#4a47b5;color:#fff}.pivot-reset[data-v-1261b03a]{display:block;width:100%;height:26px;margin-top:6px;padding:0 6px;border:1px solid #2f3d57;border-radius:5px;background:#1a2435;color:#96a4c0;font-size:10px;cursor:pointer;white-space:nowrap}.pivot-reset[data-v-1261b03a]:hover{border-color:#5d5aa8;background:#232f46;color:#d9d8ff}.pivot-coords[data-v-1261b03a]{display:flex;flex-direction:column;gap:5px}.pivot-large .pivot-coords[data-v-1261b03a]{flex-direction:row;gap:8px}.pivot-coords label[data-v-1261b03a]{flex:1;display:flex;align-items:center;gap:3px;color:#8d9ab5;font-size:10px}.pivot-coords input[data-v-1261b03a]{width:100%;min-width:0;height:24px;padding:0 4px;border:1px solid #34435e;border-radius:4px;background:#101827;color:#f0b465;font-size:11px;text-align:right}.pivot-rotate-head[data-v-1261b03a]{margin-top:10px}.pivot-rotate-state[data-v-1261b03a]{color:#6f7c96;font-size:9px}.pivot-rotate-body[data-v-1261b03a]{display:flex;align-items:center;gap:7px}.pivot-rotate-modes[data-v-1261b03a]{display:flex;flex-direction:column;gap:4px;flex:1}.pivot-rotate-modes button[data-v-1261b03a]{height:24px;padding:0 5px;border:1px solid #2f3d57;border-radius:5px;background:#1b2537;color:#93a0ba;font-size:9px;cursor:pointer}.pivot-rotate-modes button.on[data-v-1261b03a]{border-color:#7774ff;background:#4a47b5;color:#fff}.pivot-rotate-preview[data-v-1261b03a]{display:flex;align-items:center;justify-content:center;width:78px;height:78px;flex:0 0 78px;border:1px solid #2b374d;border-radius:6px;background:#10161f;overflow:hidden}.pivot-large .pivot-rotate-preview[data-v-1261b03a]{width:128px;height:128px;flex-basis:128px}.pivot-rotate-preview img[data-v-1261b03a]{display:block}.pivot-rotate-preview img.spin[data-v-1261b03a]{animation:pivot-spin-1261b03a 2s linear infinite}.pivot-rotate-preview img.swing[data-v-1261b03a]{animation:pivot-swing-1261b03a 1.1s ease-in-out infinite alternate}@keyframes pivot-spin-1261b03a{to{transform:rotate(360deg)}}@keyframes pivot-swing-1261b03a{0%{transform:rotate(-28deg)}to{transform:rotate(28deg)}}.pivot-large .pivot-hint[data-v-1261b03a],.pivot-large .pivot-card-head[data-v-1261b03a]{font-size:12px}.pivot-large .pivot-preset[data-v-1261b03a]{height:42px;font-size:20px}.pivot-large .pivot-reset[data-v-1261b03a]{height:34px;margin-top:8px;font-size:12px}.pivot-large .pivot-coords input[data-v-1261b03a]{height:34px;font-size:14px}.pivot-large .pivot-rotate-modes button[data-v-1261b03a]{height:34px;font-size:12px}.image-card[data-v-cb3a8e2c]{margin:8px 0;padding:9px;border:1px solid #2e3c55;border-radius:7px;background:#171d2a}.imgrow[data-v-cb3a8e2c]{display:flex;align-items:flex-start;gap:8px}.img-thumb[data-v-cb3a8e2c]{width:48px;height:48px;padding:0;border:1px solid #3a4963;border-radius:6px;background:#1a2232;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;overflow:hidden}.img-thumb[data-v-cb3a8e2c]:hover{border-color:#7774ff}.img-thumb img[data-v-cb3a8e2c]{display:block;width:100%;height:100%;object-fit:contain}.img-fields[data-v-cb3a8e2c]{flex:1;min-width:0}.img-actions[data-v-cb3a8e2c]{display:flex;flex-direction:column;gap:4px}.row[data-v-cb3a8e2c]{display:flex;align-items:center;gap:8px;margin:6px 0;color:#aab;font-size:12px}.row>span[data-v-cb3a8e2c]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-cb3a8e2c]{min-width:0;flex:1;padding:3px 5px;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;font-size:12px}.mini-btn2[data-v-cb3a8e2c]{width:26px;height:24px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:5px;color:#aab;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center}.mini-btn2[data-v-cb3a8e2c]:hover{background:#2b3a5c}.mini-btn2[data-v-cb3a8e2c]:disabled{opacity:.35;cursor:not-allowed}.thumb-note[data-v-cb3a8e2c]{margin:4px 0 2px;color:#667;font-size:11px}.sequence-pick[data-v-cb3a8e2c]{width:100%;margin:2px 0 4px;padding:6px 8px;border:1px solid #4a4a76;border-radius:5px;background:#27264b;color:#d8d7ff;font-size:12px;cursor:pointer}.sequence-pick[data-v-cb3a8e2c]:hover{border-color:#7774ff;background:#35336a}.sequence-note[data-v-cb3a8e2c]{margin:0 0 6px;color:#727b9b;font-size:11px;line-height:1.4}.resource-weight-row[data-v-cb3a8e2c]{display:grid;grid-template-columns:minmax(0,1fr) 28px;align-items:center;gap:7px}.resource-weight-control[data-v-cb3a8e2c]{width:100%;min-width:0}.resource-weight-control[data-v-cb3a8e2c] .ns-range{min-width:0}.resource-weight-control[data-v-cb3a8e2c] .ns-num{flex:0 0 56px;box-sizing:border-box}.weight-lock[data-v-cb3a8e2c]{width:28px;height:26px;flex:0 0 28px;padding:5px;border:1px solid #35435c;border-radius:5px;background:#202a3b;color:#78859e;cursor:pointer}.weight-lock svg[data-v-cb3a8e2c]{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.weight-lock[data-v-cb3a8e2c]:hover:not(:disabled){border-color:#7774ff;color:#b8b6ff}.weight-lock.on[data-v-cb3a8e2c]{border-color:#7774ff;background:#514fd0;color:#fff}.weight-lock[data-v-cb3a8e2c]:disabled{opacity:.35;cursor:not-allowed}.pivot-toggle-row[data-v-cb3a8e2c]{display:flex;align-items:center;gap:9px;margin-top:9px;padding:8px 9px;border:1px solid #2c3a54;border-radius:8px;background:#131b28}.pivot-toggle-icon[data-v-cb3a8e2c]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;border:1px solid #35435c;border-radius:7px;background:#1c2638;color:#8f8cff;font-size:17px}.pivot-toggle-text[data-v-cb3a8e2c]{flex:1;min-width:0}.pivot-toggle-title[data-v-cb3a8e2c]{color:#d6deee;font-size:12px;font-weight:600}.pivot-toggle-sub[data-v-cb3a8e2c]{margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7584a0;font-size:9px}.pivot-switch[data-v-cb3a8e2c]{position:relative;flex:0 0 auto;cursor:pointer}.pivot-switch input[data-v-cb3a8e2c]{position:absolute;opacity:0;pointer-events:none}.pivot-switch-ui[data-v-cb3a8e2c]{position:relative;display:block;width:34px;height:19px;border-radius:10px;background:#354258;transition:background .16s ease}.pivot-switch-ui[data-v-cb3a8e2c]:after{content:"";position:absolute;left:2px;top:2px;width:15px;height:15px;border-radius:50%;background:#fff;transition:transform .16s ease}.pivot-switch input:checked+.pivot-switch-ui[data-v-cb3a8e2c]{background:#625ff1}.pivot-switch input:checked+.pivot-switch-ui[data-v-cb3a8e2c]:after{transform:translate(15px)}.pivot-modal-backdrop[data-v-cb3a8e2c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;background:#06090fc7;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.pivot-modal[data-v-cb3a8e2c]{display:flex;flex-direction:column;width:min(980px,94vw);max-height:92vh;overflow:auto;padding:14px;border:1px solid #2f3f5c;border-radius:14px;background:#121927;box-shadow:0 24px 70px #0009}.pivot-modal-head[data-v-cb3a8e2c]{display:flex;align-items:flex-start;gap:10px;padding-bottom:10px;border-bottom:1px solid #253148}.pivot-modal-icon[data-v-cb3a8e2c]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex:0 0 34px;border:1px solid #3b4a66;border-radius:8px;background:#1c2638;color:#8f8cff;font-size:18px}.pivot-modal-info[data-v-cb3a8e2c]{flex:1;min-width:0}.pivot-modal-title[data-v-cb3a8e2c]{display:flex;align-items:center;gap:7px;color:#e4e9f5;font-size:15px;font-weight:700}.pivot-modal-badge[data-v-cb3a8e2c]{padding:2px 7px;border:1px solid #4b4a8f;border-radius:999px;background:#2c2b58;color:#b9b6ff;font-size:10px;font-weight:500}.pivot-modal-desc[data-v-cb3a8e2c]{margin-top:3px;color:#7f8daa;font-size:11px}.pivot-modal-close[data-v-cb3a8e2c]{width:28px;height:28px;padding:0;border:0;border-radius:6px;background:transparent;color:#8b98b3;font-size:15px;cursor:pointer}.pivot-modal-close[data-v-cb3a8e2c]:hover{background:#253148;color:#fff}.pivot-modal-hint[data-v-cb3a8e2c]{margin:10px 0 0;color:#8b98b3;font-size:11px}.pivot-modal-actions[data-v-cb3a8e2c]{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid #253148}.pivot-modal-cancel[data-v-cb3a8e2c]{height:34px;padding:0 16px;border:1px solid #34435e;border-radius:7px;background:#1a2334;color:#a9b6d0;font-size:12px;cursor:pointer}.pivot-modal-cancel[data-v-cb3a8e2c]:hover{border-color:#5d5aa8;color:#fff}.pivot-modal-confirm[data-v-cb3a8e2c]{height:34px;padding:0 22px;border:1px solid #7774ff;border-radius:7px;background:#5b57e8;color:#fff;font-size:12px;font-weight:700;cursor:pointer}.pivot-modal-confirm[data-v-cb3a8e2c]:hover{background:#6a66ff}.group[data-v-5709815f]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-5709815f]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-5709815f]:hover{background:#20202e}.group-reset[data-v-5709815f]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-5709815f]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-5709815f]{padding:8px 10px 12px}.caret[data-v-5709815f]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-5709815f]{height:1px;background:#2a2a3c;margin:8px 0}.row[data-v-5709815f]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-5709815f]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-5709815f]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-5709815f]{width:28px;height:22px;border:none;background:none;cursor:pointer}.seg[data-v-5709815f]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg.on[data-v-5709815f]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.look-title[data-v-5709815f]{font-size:12px;font-weight:600;color:#ccd;margin:10px 0 6px;padding-bottom:4px;border-bottom:1px solid #2a2a3c}.look-title[data-v-5709815f]:first-child{margin-top:2px}.seg[data-v-5709815f]{display:flex;gap:6px;margin:6px 0}.seg-btn[data-v-5709815f]{flex:1;padding:5px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.seg-btn.active[data-v-5709815f]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.curve-wrap[data-v-5709815f]{margin:6px 0}.curve-labels[data-v-5709815f]{display:flex;justify-content:space-between;color:#566;font-size:10px;margin-top:2px}.image-title[data-v-5709815f]{display:flex;align-items:center;justify-content:space-between}.image-add[data-v-5709815f]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-5709815f]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-5709815f]{height:1px;margin:9px 0 7px;background:#2a3549}.resource-color-row .blend-select[data-v-5709815f]{max-width:88px}.resource-color-picker .hex[data-v-5709815f]{margin-left:0}.random-color-hint[data-v-5709815f]{margin:-5px 0 9px 68px;color:#66758e;font-size:9px;line-height:1.45}.hex-input[data-v-5709815f]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-5709815f]:focus{border-color:#7774ff;color:#fff}.resource-alpha-head[data-v-5709815f]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;color:#8a93bb;font-size:12px}.alpha-modes[data-v-5709815f]{display:flex;gap:3px}.alpha-modes button[data-v-5709815f]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-5709815f]:hover{background:#273246}.alpha-modes button.on[data-v-5709815f]{border-color:#7774ff;background:#605df0;color:#fff}.resource-alpha-curve[data-v-5709815f]{margin-top:7px}.file-input[data-v-5709815f]{display:none}.hex[data-v-5709815f]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-5709815f]{width:46px;flex:0 0 46px;text-align:center}.render-layer-current[data-v-5709815f]{display:flex;align-items:center;gap:6px;margin:6px 0}.render-layer-text[data-v-5709815f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#9aa6c2;font-size:11px}.mini-btn[data-v-5709815f]{flex:0 0 auto;height:24px;padding:0 7px;border:1px solid #3d4a66;border-radius:5px;background:#202a3e;color:#a9b5cf;font-size:10px;cursor:pointer}.mini-btn[data-v-5709815f]:hover{border-color:#7774ff;color:#fff}.mini-btn.ghost[data-v-5709815f]{background:transparent}.slot-picker[data-v-5709815f]{margin:6px 0;padding:6px;border:1px solid #2e3a52;border-radius:6px;background:#111a28}.slot-list[data-v-5709815f]{max-height:180px;overflow:auto;margin-top:6px}.slot-item[data-v-5709815f]{display:flex;align-items:center;gap:6px;width:100%;padding:4px 6px;border:1px solid transparent;border-radius:4px;background:transparent;color:#aab4cc;font-size:11px;text-align:left;cursor:pointer}.slot-item[data-v-5709815f]:hover{background:#1d2a3f}.slot-item.on[data-v-5709815f]{border-color:#7774ff;background:#2b2b55;color:#fff}.slot-order[data-v-5709815f]{width:26px;flex:0 0 26px;color:#66758e;font-variant-numeric:tabular-nums}.slot-name[data-v-5709815f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-attachment[data-v-5709815f]{max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#6d7c96;font-size:10px}.switch-row[data-v-5709815f]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-5709815f]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-5709815f]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-5709815f]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-5709815f]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-5709815f]:after{transform:translate(14px)}.switch-row input:disabled+.switch-ui[data-v-5709815f]{opacity:.45;cursor:not-allowed}.render-layer-switch[data-v-5709815f]{margin:6px 0}.modifier-hint[data-v-5709815f]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.render-layer-warning[data-v-5709815f]{color:#d8a45e}.empty[data-v-96ef634f]{color:#667;font-size:12px;padding:8px 0}.group[data-v-96ef634f]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-96ef634f]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-96ef634f]:hover{background:#20202e}.group-reset[data-v-96ef634f]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-96ef634f]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-96ef634f]{padding:8px 10px 12px}.caret[data-v-96ef634f]{display:inline-block;width:12px;color:#667;font-size:11px}.divider[data-v-96ef634f]{height:1px;background:#2a2a3c;margin:8px 0}.field-block[data-v-96ef634f]{display:flex;flex-direction:column;gap:5px;margin:10px 0;color:#8f9ab3;font-size:11px}.field-block>.inp[data-v-96ef634f]{width:100%;box-sizing:border-box;min-height:30px}.field-block small[data-v-96ef634f]{color:#5f6d86;line-height:1.5}.field-grid[data-v-96ef634f]{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:end}.compact-field[data-v-96ef634f]{display:flex;min-width:0;flex-direction:column;gap:5px;margin:5px 0;color:#8f9ab3;font-size:11px}.compact-field .inp[data-v-96ef634f]{width:100%;min-height:30px;box-sizing:border-box}.tag[data-v-96ef634f]{font-size:10px;color:#667;background:#1c1c2a;border-radius:4px;padding:1px 5px}.row[data-v-96ef634f]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-96ef634f]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-96ef634f]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.colr[data-v-96ef634f]{width:28px;height:22px;border:none;background:none;cursor:pointer}.placeholder[data-v-96ef634f]{color:#667;font-size:11px;padding:6px 0}.image-add[data-v-96ef634f]{width:26px;height:24px;border:1px solid #4a4d9a;border-radius:5px;background:#252850;color:#8f8cff;font-size:18px;line-height:1;cursor:pointer}.image-add[data-v-96ef634f]:hover{background:#4542a8;color:#fff}.resource-divider[data-v-96ef634f]{height:1px;margin:9px 0 7px;background:#2a3549}.hex-input[data-v-96ef634f]{width:72px;padding:4px 6px;border:1px solid #344158;border-radius:5px;outline:none;background:#101725;color:#aeb8cb;font-size:11px;font-family:monospace}.hex-input[data-v-96ef634f]:focus{border-color:#7774ff;color:#fff}.alpha-modes[data-v-96ef634f]{display:flex;gap:3px}.alpha-modes button[data-v-96ef634f]{padding:4px 8px;border:1px solid transparent;border-radius:5px;background:transparent;color:#8d98ae;font-size:11px;cursor:pointer}.alpha-modes button[data-v-96ef634f]:hover{background:#273246}.alpha-modes button.on[data-v-96ef634f]{border-color:#7774ff;background:#605df0;color:#fff}.file-input[data-v-96ef634f]{display:none}.hex[data-v-96ef634f]{font-size:11px;color:#889;margin-left:auto;font-variant-numeric:tabular-nums}.inp.tiny[data-v-96ef634f]{width:46px;flex:0 0 46px;text-align:center}.axis-mode[data-v-96ef634f]{padding:4px 8px;border:1px solid #344158;border-radius:5px;background:#273246;color:#aeb8cf;font-size:11px;cursor:pointer}.axis-mode.on[data-v-96ef634f]{border-color:#7774ff;background:#605df0;color:#fff}.switch-row[data-v-96ef634f]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-96ef634f]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-96ef634f]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-96ef634f]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-96ef634f]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-96ef634f]:after{transform:translate(14px)}.modifier-item[data-v-96ef634f]{padding:8px 0 10px;border-bottom:1px solid #2a3549}.modifier-switch[data-v-96ef634f]{font-weight:600}.modifier-params[data-v-96ef634f]{margin:8px 0 0 10px;padding:2px 0 2px 10px;border-left:2px solid #344158}.modifier-hint[data-v-96ef634f]{margin:7px 0 0 2px;color:#647086;font-size:9px;line-height:1.5}.collision-filter-params[data-v-96ef634f]{position:relative;padding-top:5px;padding-bottom:5px}.collision-filter-title[data-v-96ef634f]{margin-bottom:8px;color:#9ba7bd;font-size:11px;font-weight:600}.collision-filter-tags[data-v-96ef634f]{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.collision-filter-tag[data-v-96ef634f]{display:inline-flex;min-width:0;align-items:center;gap:6px;padding:5px 5px 5px 8px;border:1px solid #625ff1;border-radius:6px;background:#514dcf;color:#fff;font-size:11px}.collision-filter-tag>span[data-v-96ef634f]{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-tag.disabled[data-v-96ef634f]{border-color:#4b5364;background:#343b4b;color:#929bad}.collision-filter-tag button[data-v-96ef634f]{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:#0b0f1a38;color:inherit;line-height:16px;cursor:pointer}.collision-filter-tag button[data-v-96ef634f]:hover{background:#0b0f1a80;color:#fff}.collision-filter-add[data-v-96ef634f]{width:30px;height:30px;padding:0;border:1px dashed #536079;border-radius:6px;background:#182131;color:#98a5bd;font-size:18px;line-height:28px;cursor:pointer}.collision-filter-add[data-v-96ef634f]:hover,.collision-filter-add.active[data-v-96ef634f]{border-color:#7774ff;background:#262c52;color:#fff}.collision-filter-add[data-v-96ef634f]:disabled{opacity:.42;cursor:not-allowed}.collision-filter-empty[data-v-96ef634f]{margin-top:7px;color:#6f7b91;font-size:10px}.collision-filter-picker[data-v-96ef634f]{display:grid;gap:4px;margin-top:7px;padding:5px;border:1px solid #344158;border-radius:6px;background:#101725}.collision-filter-picker button[data-v-96ef634f]{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:0;border-radius:4px;background:transparent;color:#c7d0e3;font-size:11px;text-align:left;cursor:pointer}.collision-filter-picker button[data-v-96ef634f]:hover{background:#29344a;color:#fff}.collision-filter-picker button span[data-v-96ef634f]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collision-filter-picker button small[data-v-96ef634f]{flex:none;color:#68758d;font-size:9px}.switch-row input:disabled+.switch-ui[data-v-96ef634f]{opacity:.45;cursor:not-allowed}.bone-follow-target[data-v-96ef634f]{margin:7px 0 9px;padding:7px 8px;overflow:hidden;color:#7f8ba3;background:#121a29;border:1px solid #2f3c53;border-radius:5px;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.bone-follow-target strong[data-v-96ef634f]{color:#c8d0e4;font-weight:600}.bone-follow-missing[data-v-96ef634f]{margin:7px 0 9px;padding:7px 8px;color:#d49aa3;background:#2a1e26;border:1px solid #513540;border-radius:5px;font-size:10px;line-height:1.5}.bone-follow-rebind[data-v-96ef634f]{width:100%;min-height:28px;margin:0 0 8px;padding:4px 8px;overflow:hidden;border:1px solid #4a436e;border-radius:5px;background:#2d2947;color:#c8c2ee;font-size:10px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.bone-follow-rebind[data-v-96ef634f]:hover{border-color:#7165bd;background:#3a335d;color:#fff}.bone-follow-transform-grid[data-v-96ef634f]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.modifier-mode-row[data-v-96ef634f]{display:flex;justify-content:flex-end;gap:4px;margin-bottom:6px}.gravity-curve-title[data-v-96ef634f]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.gravity-curve-title span[data-v-96ef634f]:last-child{color:#657188;font-size:9px}.gravity-curve-axis[data-v-96ef634f]{display:flex;justify-content:space-between;margin:3px 34px 0 1px;color:#5f6b82;font-size:9px}.gravity-params[data-v-96ef634f] .ce-svg{height:96px;background:#0f1625;border-color:#30405a}.trail-params[data-v-96ef634f]{padding-right:2px}.trail-section-title[data-v-96ef634f]{margin:3px 0 8px;color:#aeb8cf;font-size:12px;font-weight:700}.trail-fixed-color .hex-input[data-v-96ef634f]{min-width:0;flex:1}.trail-mode-head[data-v-96ef634f]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px;color:#9ba7bd;font-size:11px}.trail-sub-switch[data-v-96ef634f]{margin:11px 0 7px;padding-top:9px;border-top:1px solid #2a3549}.trail-grid-row[data-v-96ef634f]{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.trail-grid-row[data-v-96ef634f] .ns{min-width:0;flex-wrap:wrap;align-items:center}.trail-grid-row[data-v-96ef634f] .ns-label{width:100%}.trail-grid-row[data-v-96ef634f] .ns-range{min-width:0}.trail-grid-row[data-v-96ef634f] .ns-num{width:42px}.trail-params[data-v-96ef634f] .ce-svg{height:92px;background:#0f1625;border-color:#30405a}.group[data-v-04462c7a]{border:1px solid #2a2a3c;border-radius:8px;margin-bottom:10px;overflow:hidden}.group-head[data-v-04462c7a]{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;font-size:12px;font-weight:600;color:#ccd;background:#191924;-webkit-user-select:none;user-select:none}.group-head[data-v-04462c7a]:hover{background:#20202e}.group-reset[data-v-04462c7a]{margin-left:auto;height:22px;padding:0 7px;border:1px solid #3a465f;border-radius:5px;background:#252d3d;color:#9eabc3;font-size:10px;line-height:20px;cursor:pointer}.group-reset[data-v-04462c7a]:hover{border-color:#7774ff;background:#45426f;color:#fff}.group-body[data-v-04462c7a]{padding:8px 10px 12px}.caret[data-v-04462c7a]{display:inline-block;width:12px;color:#667;font-size:11px}.row[data-v-04462c7a]{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px;color:#aab}.row>span[data-v-04462c7a]:first-child{width:60px;flex-shrink:0;color:#8a93bb}.inp[data-v-04462c7a]{flex:1;min-width:0;padding:3px 5px;background:#1a1a28;border:1px solid #2e2e44;border-radius:5px;color:#dde;font-size:12px}.placeholder[data-v-04462c7a]{color:#667;font-size:11px;padding:6px 0}.export-settings[data-v-04462c7a]{padding-top:3px}.export-field[data-v-04462c7a]{display:flex;flex-direction:column;gap:6px;margin:10px 0 13px;color:#9ca8bf;font-size:11px;font-weight:600}.export-input[data-v-04462c7a]{width:100%;min-height:34px;box-sizing:border-box;padding:6px 9px;color:#e3e7f2;background:#141a29;border-color:#35445f}.export-fps-row[data-v-04462c7a]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.export-fps-field[data-v-04462c7a]{margin-bottom:5px}.export-checkbox[data-v-04462c7a]{display:flex;align-items:center;gap:7px;min-height:34px;margin-bottom:5px;color:#aeb8cc;font-size:11px;white-space:nowrap}.export-checkbox input[data-v-04462c7a]{width:17px;height:17px;margin:0;accent-color:#625ff1}.export-help[data-v-04462c7a]{margin:-6px 0 14px;color:#66758e;font-size:10px;line-height:1.5}.export-switches[data-v-04462c7a]{display:grid;gap:13px;margin:4px 0 7px;padding-top:2px}.export-switch[data-v-04462c7a]{font-weight:600}.export-switch-last[data-v-04462c7a]{margin-top:13px}.inp.tiny[data-v-04462c7a]{width:46px;flex:0 0 46px;text-align:center}.switch-row[data-v-04462c7a]{display:flex;align-items:center;gap:9px;color:#b8c1d5;font-size:12px;cursor:pointer}.switch-row input[data-v-04462c7a]{position:absolute;opacity:0;pointer-events:none}.switch-ui[data-v-04462c7a]{position:relative;width:32px;height:18px;border-radius:10px;background:#354258;transition:background .16s ease}.switch-ui[data-v-04462c7a]:after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .16s ease}.switch-row input:checked+.switch-ui[data-v-04462c7a]{background:#625ff1}.switch-row input:checked+.switch-ui[data-v-04462c7a]:after{transform:translate(14px)}.switch-row input:disabled+.switch-ui[data-v-04462c7a]{opacity:.45;cursor:not-allowed}.spine-export-actions[data-v-7ff40afe]{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.export-spine-json[data-v-7ff40afe]{width:100%;padding:9px 8px;flex:0 0 auto;border:1px solid #4f4b9a;border-radius:7px;background:#403b91;color:#f1f0ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-json[data-v-7ff40afe]:hover{border-color:#7774ff;background:#514bc0}.export-spine-json[data-v-7ff40afe]:disabled{cursor:wait;opacity:.68}.export-spine-project[data-v-7ff40afe]{grid-column:1 / -1;width:100%;padding:7px 8px;border:1px solid #287d69;border-radius:7px;background:#196854;color:#edfff9;font-size:12px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.export-spine-project small[data-v-7ff40afe]{color:inherit;font-size:9px;font-weight:500;line-height:1.1}.export-spine-project[data-v-7ff40afe]:hover:not(:disabled){border-color:#47c89f;background:#238267}.export-spine-project[data-v-7ff40afe]:disabled{cursor:not-allowed;opacity:.48}.export-spine-images[data-v-7ff40afe]{width:100%;padding:8px;border:1px solid #3b5f8b;border-radius:7px;background:#243e64;color:#eaf3ff;font-size:12px;font-weight:700;cursor:pointer}.export-spine-images[data-v-7ff40afe]:hover:not(:disabled){border-color:#6099dc;background:#315581}.export-spine-images[data-v-7ff40afe]:disabled{cursor:wait;opacity:.55}.connector-status[data-v-7ff40afe]{display:flex;align-items:center;justify-content:center;gap:5px;padding-top:6px;color:#717b99;font-size:10px}.connector-status .connector-dot[data-v-7ff40afe]{width:6px;height:6px;border-radius:50%;background:#66718f}.connector-status.ready[data-v-7ff40afe]{color:#70d8ae}.connector-status.ready .connector-dot[data-v-7ff40afe]{background:#49c993;box-shadow:0 0 5px #49c99388}.connector-status.warning[data-v-7ff40afe]{color:#d4aa67}.connector-status.warning .connector-dot[data-v-7ff40afe]{background:#d4aa67}.connector-status button[data-v-7ff40afe]{padding:0 3px;border:0;background:transparent;color:#8290b6;font-size:10px;cursor:pointer}.connector-status button[data-v-7ff40afe]:hover{color:#c5caff}.connector-status a[data-v-7ff40afe]{padding:0 3px;color:#a8b0ff;font-size:10px;text-decoration:underline}.connector-status a[data-v-7ff40afe]:hover{color:#d8dcff}.export-message[data-v-7ff40afe]{padding:7px 5px 0;color:#70d8ae;font-size:10px;line-height:1.45;text-align:center}.export-message.error[data-v-7ff40afe]{color:#ff858f}.export-message a[data-v-7ff40afe]{display:inline-block;margin-left:5px;color:#9da7ff;text-decoration:underline}.panel[data-v-283ef8eb]{display:flex;width:100%;height:100%;flex-direction:column;overflow:hidden;background:#14141f;border-left:1px solid #2a2a3c;padding:12px;box-sizing:border-box}.panel-scroll[data-v-283ef8eb]{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin;scrollbar-color:#2e2e44 transparent}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar{width:6px}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-track{background:transparent}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-thumb{background:#2e2e44;border-radius:3px}.panel-scroll[data-v-283ef8eb]::-webkit-scrollbar-thumb:hover{background:#3a3a55}.panel-header[data-v-283ef8eb]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex:0 0 auto;font-weight:700;color:#ccd}.timeline[data-v-1e581e89]{height:100%;background:#12121c;border-top:1px solid #2a2a3c;display:flex;flex-direction:column;padding:6px 10px;gap:4px}.tl-controls[data-v-1e581e89]{display:flex;align-items:center;gap:8px}.tl-btn[data-v-1e581e89]{width:30px;height:26px;background:#1e1e2e;border:1px solid #2e2e44;border-radius:6px;color:#aab;font-size:12px;cursor:pointer}.tl-btn.on[data-v-1e581e89]{background:#3a5a8c;color:#fff;border-color:#5a7ab8}.tl-range[data-v-1e581e89]{display:flex;height:25px;align-items:center;gap:3px;color:#778198;font-size:10px}.tl-range input[data-v-1e581e89]{width:43px;height:25px;padding:0 5px;box-sizing:border-box;border:1px solid #3a3a51;border-radius:5px;outline:none;background:#181824;color:#e1e4ed;font-size:11px;text-align:center}.tl-range input[data-v-1e581e89]:focus{border-color:#716eff}.tl-loop-range[data-v-1e581e89]{height:25px;padding:0 7px;border:1px solid #4e5680;border-radius:5px;background:#252943;color:#bfc8e8;font-size:10px;cursor:pointer;white-space:nowrap}.tl-loop-range[data-v-1e581e89]:hover{border-color:#716eff;color:#fff}.tl-frame[data-v-1e581e89]{display:inline-block;flex:0 0 92px;width:92px;box-sizing:border-box;font-size:12px;color:#aab;text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;white-space:nowrap}.tl-frame b[data-v-1e581e89]{display:inline;color:inherit;font-weight:400}.tl-legend[data-v-1e581e89]{display:flex;align-items:center;gap:4px;color:#778198;font-size:10px}.tl-legend i[data-v-1e581e89]{display:inline-block;width:10px;height:7px;border-radius:2px}.legend-emission[data-v-1e581e89]{margin-left:4px;background:#2f8b62}.legend-life[data-v-1e581e89]{margin-left:5px;background:#a54551}.legend-spine[data-v-1e581e89]{margin-left:5px;background:#7448b8}.tl-anim[data-v-1e581e89]{display:flex;align-items:center;gap:6px;font-size:12px;color:#aab}.tl-owner-animation[data-v-1e581e89]{position:relative}.tl-animation-trigger[data-v-1e581e89]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:116px;height:25px;padding:0 7px;overflow:hidden;border:1px solid #2e2e44;border-radius:5px;background:#1a1a28;color:#dde;cursor:pointer}.tl-animation-trigger>span[data-v-1e581e89]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-trigger>i[data-v-1e581e89]{flex:0 0 auto;color:#8c96ad;font-style:normal}.tl-animation-trigger[data-v-1e581e89]:disabled{opacity:.5;cursor:not-allowed}.tl-animation-menu[data-v-1e581e89]{position:absolute;z-index:30;right:0;bottom:calc(100% + 6px);width:226px;padding:7px;border:1px solid #3c4760;border-radius:8px;background:#171b29;box-shadow:0 10px 24px #00000073}.tl-animation-menu-title[data-v-1e581e89]{padding:2px 4px 6px;color:#77839c;font-size:10px}.tl-animation-option[data-v-1e581e89]{display:flex;align-items:center;justify-content:space-between;width:100%;height:27px;padding:0 7px;border:0;border-radius:5px;background:transparent;color:#b8c1d5;text-align:left;cursor:pointer}.tl-animation-option>span[data-v-1e581e89]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tl-animation-option[data-v-1e581e89]:hover{background:#252e42}.tl-animation-option.on[data-v-1e581e89]{background:#34335d;color:#fff}.tl-animation-option>i[data-v-1e581e89]{color:#8d8aff;font-style:normal}.tl-animation-editor[data-v-1e581e89]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;margin-top:7px;padding-top:7px;border-top:1px solid #2b3346}.tl-animation-name[data-v-1e581e89]{min-width:0;height:27px;padding:0 7px;box-sizing:border-box;border:1px solid #343e55;border-radius:5px;background:#101522;color:#e1e6f2;outline:none}.tl-animation-name[data-v-1e581e89]:focus{border-color:#6865d8}.tl-animation-editor button[data-v-1e581e89],.tl-animation-actions button[data-v-1e581e89]{height:27px;padding:0 8px;border:1px solid #3c4861;border-radius:5px;background:#29344a;color:#cbd3e3;cursor:pointer}.tl-animation-actions[data-v-1e581e89]{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}.tl-animation-actions button[data-v-1e581e89]:last-child{border-color:#5b3942;background:#3b282f;color:#e2a8b2}.tl-animation-actions button[data-v-1e581e89]:disabled{opacity:.4;cursor:not-allowed}.tl-animation-error[data-v-1e581e89]{margin-top:5px;color:#ef8997;font-size:10px}.tl-animation-hint[data-v-1e581e89]{margin-top:5px;color:#69758d;font-size:9px;text-align:center}.tl-sel[data-v-1e581e89]{background:#1a1a28;border:1px solid #2e2e44;color:#dde;border-radius:5px;padding:2px 6px;font-size:12px}.tl-sel[data-v-1e581e89]:disabled{opacity:.5;cursor:not-allowed}.tl-spine-preview .tl-sel[data-v-1e581e89]{max-width:190px}.tl-zoom[data-v-1e581e89]{margin-left:auto;font-size:11px;color:#667}.tl-viewport[data-v-1e581e89]{position:relative;flex:1;overflow:hidden;background:#0d0d14;border:1px solid #2a2a3c;border-radius:6px;cursor:ew-resize}.tl-ticks[data-v-1e581e89]{position:absolute;top:0;left:0;right:0;height:18px}.tl-tickline[data-v-1e581e89]{position:absolute;top:0;bottom:0;width:1px;background:#263040}.tl-ticklabel[data-v-1e581e89]{position:absolute;top:2px;transform:translate(-50%);font-size:9px;color:#667}.tl-playhead[data-v-1e581e89]{position:absolute;top:0;bottom:0;width:2px;background:#fc3;z-index:5;pointer-events:none}.tl-lanes[data-v-1e581e89]{position:absolute;top:22px;left:0;right:0;bottom:0}.tl-lane[data-v-1e581e89]{position:relative;height:26px;margin-bottom:4px}.lane-ico[data-v-1e581e89]{position:absolute;left:4px;top:6px;font-size:11px;color:#dde;z-index:2;pointer-events:none}.lane-bar[data-v-1e581e89]{position:absolute;top:4px;height:18px;display:flex;align-items:stretch;cursor:grab;box-sizing:border-box}.lane-bar[data-v-1e581e89]:active{cursor:grabbing}.lane-name[data-v-1e581e89]{position:absolute;left:14px;right:5px;top:2px;z-index:2;pointer-events:none;font-size:11px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-life[data-v-1e581e89]{position:absolute;inset:0 auto 0 0;z-index:0;min-width:1px;border:1px solid #c05a66;border-radius:5px;background:#a54551;box-sizing:border-box}.bar-life.loop-life[data-v-1e581e89]{border-color:#667085;background:#242b39}.bar-emission[data-v-1e581e89]{position:absolute;inset:0 auto 0 0;z-index:1;min-width:1px;border:1px solid #45a97d;border-radius:5px 0 0 5px;background:#2f8b62;box-sizing:border-box}.bar-emission.bar-loop[data-v-1e581e89]{border-radius:0}.bar-loop-transition[data-v-1e581e89]{position:absolute;top:0;bottom:0;z-index:1;border:1px solid #7d8799;background:#50596a;box-sizing:border-box}.bar-loop-start[data-v-1e581e89]{left:0;border-radius:5px 0 0 5px}.bar-loop-end[data-v-1e581e89]{border-radius:0 5px 5px 0}.bar-handle[data-v-1e581e89]{position:absolute;z-index:4;right:-4px;top:-1px;bottom:-1px;width:8px;cursor:ew-resize;background:#ffffff2e}.bar-handle[data-v-1e581e89]:hover{background:#ffffff59}.spine-ico[data-v-1e581e89]{color:#c08cff}.spine-bar[data-v-1e581e89]{position:absolute;top:4px;height:18px;min-width:1px;box-sizing:border-box;border:1px solid #a575ed;border-radius:5px;background:#7448b8;cursor:grab;box-shadow:inset 0 0 0 1px #ffffff0d}.spine-bar[data-v-1e581e89]:active{cursor:grabbing}.tl-empty[data-v-1e581e89]{color:#667;font-size:11px;padding:8px}.transfer-overlay[data-v-592b922e]{position:fixed;z-index:2000;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:auto;cursor:wait;overscroll-behavior:contain;background:#05080f42;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.transfer-dialog[data-v-592b922e]{width:min(420px,calc(100vw - 40px));padding:18px 20px 16px;border:1px solid #414b66;border-radius:10px;box-shadow:0 18px 55px #00000075;background:#171d2b;color:#e7ebf5}.transfer-heading[data-v-592b922e]{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px;font-size:14px;font-weight:700}.transfer-heading strong[data-v-592b922e]{color:#a8a6ff;font-size:12px;font-variant-numeric:tabular-nums}.transfer-track[data-v-592b922e]{height:9px;overflow:hidden;border:1px solid #35415a;border-radius:999px;background:#0d1422}.transfer-bar[data-v-592b922e]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#4d75e8,#7774ff);transition:width .16s ease}.transfer-track.indeterminate .transfer-bar[data-v-592b922e]{width:42%;animation:transfer-slide-592b922e 1s ease-in-out infinite}.transfer-detail[data-v-592b922e]{min-height:17px;margin-top:9px;color:#8895ae;font-size:11px;line-height:1.5}.transfer-dialog.failed[data-v-592b922e]{border-color:#754351}.transfer-dialog.failed .transfer-heading strong[data-v-592b922e],.transfer-dialog.failed .transfer-detail[data-v-592b922e]{color:#e99aa9}.transfer-dialog.failed .transfer-bar[data-v-592b922e]{background:#c85d70}.transfer-fade-enter-active[data-v-592b922e],.transfer-fade-leave-active[data-v-592b922e]{transition:opacity .16s ease}.transfer-fade-enter-from[data-v-592b922e],.transfer-fade-leave-to[data-v-592b922e]{opacity:0}@keyframes transfer-slide-592b922e{0%{transform:translate(-110%)}to{transform:translate(250%)}}.layout[data-v-42c4fa00]{display:flex;width:100%;height:100%;min-height:0;overflow:clip}.parameter-panel[data-v-42c4fa00]{flex-shrink:0;height:100%;min-height:0;overflow:clip}.resizer-col[data-v-42c4fa00]{width:5px;cursor:col-resize;background:#1c1c2a;border-left:1px solid #2a2a3c;border-right:1px solid #2a2a3c;flex-shrink:0}.resizer-col[data-v-42c4fa00]:hover{background:#3a5a8c}.right[data-v-42c4fa00]{flex:1;min-width:0;height:100%;min-height:0;overflow:clip;display:flex;flex-direction:column}.panel-right .right[data-v-42c4fa00]{order:1}.panel-right .resizer-col[data-v-42c4fa00]{order:2}.panel-right .parameter-panel[data-v-42c4fa00]{order:3}.stage-area[data-v-42c4fa00]{flex:1;min-height:0;overflow:clip}.resizer-row[data-v-42c4fa00]{height:4px;cursor:row-resize;background:#1c1c2a;border-top:1px solid #2a2a3c;border-bottom:1px solid #2a2a3c;flex-shrink:0}.resizer-row[data-v-42c4fa00]:hover{background:#3a5a8c}.timeline-area[data-v-42c4fa00]{position:relative;z-index:10;flex-shrink:0;overflow:visible}html,body{width:100%;height:100%;margin:0;padding:0;overflow:clip;overscroll-behavior:none;background:#0b0b12;color:#e8e8f0;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{position:fixed;top:0;right:0;bottom:0;left:0}*{box-sizing:border-box}#app{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;overflow:clip}html,body,#app{-webkit-user-select:none;user-select:none}input,textarea,select,[contenteditable=true]{-webkit-user-select:text;user-select:text}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none} diff --git a/dist/index.html b/dist/index.html index 31763ca..3aa4a62 100644 --- a/dist/index.html +++ b/dist/index.html @@ -8,8 +8,8 @@ html, body { margin: 0; padding: 0; background: #111; color: #eee; font-family: system-ui, -apple-system, sans-serif; } #app { display: flex; flex-direction: column; height: 100vh; } - - + +
diff --git a/public/Preset/5.贴图轴点1.json b/public/Preset/5.贴图轴点1.json new file mode 100644 index 0000000..d60ea97 --- /dev/null +++ b/public/Preset/5.贴图轴点1.json @@ -0,0 +1,531 @@ +{ + "format": "SpineParticle.EditorConfig", + "version": 1, + "savedAt": "2026-10-22T03:44:07.350Z", + "editor": { + "viewScale": 0.7117802478134118, + "viewX": 17.08734153523332, + "viewY": 26.20117264599483 + }, + "settings": { + "backgroundX": 0, + "backgroundY": 0, + "backgroundOpacity": 1, + "backgroundImageName": "", + "backgroundImageData": "", + "showGrid": true, + "exportSettings": { + "imagesPath": "./images/", + "spineVersion": "4.2", + "keyframeCurve": "bezier", + "fps": 30, + "omitFps": false, + "integerFrameAlignment": true, + "bonePool": true, + "excludeEmptyAnimations": false, + "fileName": "SpineParticle.json" + } + }, + "timeline": { + "fps": 30, + "loop": true, + "playbackStart": 0, + "playbackEnd": 30, + "animations": [ + "animation" + ] + }, + "selection": { + "type": "particle", + "id": 1 + }, + "scene": { + "systems": [ + { + "id": 1, + "visible": true, + "animation": "animation", + "config": { + "imageResources": [ + { + "id": 1, + "textureName": "217cc2f5b2914d1716898385698d9eb17e352d97385b8-Fojf0Y", + "textureFolder": "", + "previewUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAApIAAAKSCAYAAABhiDtmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEMTM4OTM1REExQzMxMUU3OENFN0IxN0YxNDFFOEQ5NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEMTM4OTM1RUExQzMxMUU3OENFN0IxN0YxNDFFOEQ5NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQxMzg5MzVCQTFDMzExRTc4Q0U3QjE3RjE0MUU4RDk1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQxMzg5MzVDQTFDMzExRTc4Q0U3QjE3RjE0MUU4RDk1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CRuTCgADgi1JREFUeNrsveuS5EaS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", + "imageMode": "fixed", + "sequencePlayback": "loop-forward", + "sequenceFps": 30, + "sequenceFrames": [], + "weight": 100, + "locked": false, + "scale": 1, + "anchorX": 0.49090082662088885, + "anchorY": 0.8530484713040866, + "colorMode": "fixed", + "colorStart": "#ffffff", + "colorEnd": "#ff4d4d", + "colorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ff4d4d" + } + ], + "blend": "add", + "independentAlpha": "off", + "alpha": 1, + "alphaCurveMode": "跟随导出", + "alphaCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.1, + "y": 1 + }, + { + "x": 0.9, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ] + } + ], + "imageWeightVersion": 1, + "name": "ParticleSystem1", + "mode": "stream", + "rate": 20, + "streamBehavior": "loop", + "loopDurationFrames": 30, + "generateLoopStartAnimation": false, + "loopStartUseCustomDuration": false, + "loopStartDurationFrames": 30, + "generateLoopEndAnimation": false, + "loopEndUseCustomDuration": false, + "loopEndDurationFrames": 30, + "burstCount": 50, + "burstLoop": false, + "delay": 0, + "duration": 1, + "shape": "point", + "showShape": true, + "shapeRangeVersion": 1, + "innerRadius": 0, + "outerRadius": 30, + "innerRectW": 0, + "innerRectH": 0, + "outerRectW": 60, + "outerRectH": 40, + "spawnPathId": 0, + "spawnPathDistribution": "fixed", + "radius": 30, + "rectW": 60, + "rectH": 40, + "centerX": 0, + "centerY": 0, + "rootRotation": 0, + "rootScaleX": 1, + "rootScaleY": 1, + "renderLayerMode": "top", + "renderLayerSpineId": 0, + "renderLayerSlotName": "", + "renderLayerSlotPosition": "above", + "renderLayerFollowAttachment": false, + "emissionAngleMode": "random", + "direction": 0, + "spread": 360, + "coneDirection": 90, + "coneAngle": 60, + "lifeMin": 0.2, + "lifeMax": 1, + "lifeMode": "random", + "lifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "speedMin": 0, + "speedMax": 140, + "speedMode": "fixed", + "speedCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleMin": 0.3, + "scaleMax": 0.8, + "scaleMode": "random", + "scaleAxisMode": "uniform", + "scaleYMin": 0.3, + "scaleYMax": 0.8, + "scaleCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleYCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleEndRatio": 0.3, + "initialRotationMode": "random", + "initialRotationMin": 0, + "initialRotationMax": 360, + "initialRotationCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "alpha": 0.9, + "alphaEnd": 0, + "rotationSpeedMin": -90, + "rotationSpeedMax": 90, + "speedOverLifeEnabled": false, + "speedOverLifeMode": "fixed", + "speedOverLifeMin": 1, + "speedOverLifeMax": 1, + "speedOverLifeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleOverLifeEnabled": true, + "scaleOverLifeMode": "curve", + "scaleOverLifeAxisMode": "uniform", + "scaleOverLifeMin": 0, + "scaleOverLifeMax": 1, + "scaleYOverLifeMin": 0, + "scaleYOverLifeMax": 1, + "scaleOverLifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.08, + "y": 1 + }, + { + "x": 0.88, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ], + "scaleYOverLifeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "rotationOverLifeEnabled": true, + "rotationOverLifeMode": "random", + "rotationOverLifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "gravity": 980, + "gravityMode": "fixed", + "gravityMin": 980, + "gravityMax": 980, + "gravityDirection": -90, + "gravityCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "damping": 0, + "seed": 962221, + "colorStart": "#ffffff", + "colorEnd": "#ff4d4d", + "colorOverLife": false, + "blend": "add", + "alphaMode": "curve", + "curveMode": "线性", + "alphaCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.38, + "y": 1 + }, + { + "x": 0.63, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ], + "textureName": "star", + "textureFolder": "", + "alphaScale": 1, + "anchorX": 0.5, + "anchorY": 0.5, + "independentAlpha": "off", + "offsetX": 0, + "offsetY": 0, + "noise": false, + "noiseAmt": 30, + "noiseRange": 100, + "noiseSpeed": 1, + "useGravity": false, + "wind": false, + "windX": 0, + "windY": 0, + "windMode": "fixed", + "windMin": 100, + "windMax": 100, + "windDirection": 0, + "windCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "forceField": false, + "forceStrength": 10, + "forceRadius": 100, + "forceCenterX": 0, + "forceCenterY": 0, + "forceFalloff": "linear", + "showForceFieldShape": true, + "vortex": false, + "vortexStrength": 10, + "vortexRadius": 100, + "vortexCenterX": 0, + "vortexCenterY": 0, + "vortexFalloff": "linear", + "showVortexShape": true, + "attraction": false, + "attractionCenterX": 200, + "attractionCenterY": 0, + "attractionRadius": 20, + "attractionDuration": 0.5, + "attractionDelay": 0.1, + "attractionDelayMode": "particle", + "attractionPath": "curve", + "showAttractionShape": true, + "trail": false, + "trailConfigVersion": 3, + "trailResources": [ + { + "id": 1, + "textureName": "trail", + "previewUrl": "/images/trail.png", + "weight": 100, + "locked": false, + "rotation": 0, + "colorMode": "particle", + "color": "#ffffff", + "colorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ffffff" + } + ], + "blend": "normal", + "alphaMode": "particle", + "alpha": 1, + "alphaCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "boneCount": 3, + "trailRatio": 100, + "lengthMode": "fixed", + "length": 100, + "lengthMin": 100, + "lengthMax": 100, + "widthSizeMode": "fixed", + "width": 100, + "widthMin": 100, + "widthMax": 100, + "widthMode": "particle", + "lifeLengthEnabled": false, + "lifeLengthCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "shapeEnabled": false, + "shapeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ] + } + ], + "trailResourceVersion": 6, + "trailTextureName": "trail", + "trailPreviewUrl": "/images/trail.png", + "trailColorMode": "particle", + "trailColor": "#ffffff", + "trailColorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ffffff" + } + ], + "trailAlphaMode": "particle", + "trailAlpha": 1, + "trailAlphaCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailBoneCount": 3, + "trailLength": 100, + "trailWidth": 100, + "trailWidthMode": "particle", + "trailLifeLengthEnabled": false, + "trailLifeLengthCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailShapeEnabled": false, + "trailShapeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailGridRows": 4, + "trailGridCols": 4, + "collision": false, + "collisionColliderIds": [], + "pathFollow": false, + "emitterFollow": false, + "emitterFollowMode": "none", + "emitterFollowPathId": 0, + "emitterFollowSpineId": 0, + "emitterFollowBoneName": "", + "emitterFollowBoneOffsetX": 0, + "emitterFollowBoneOffsetY": 0, + "emitterFollowBoneRotation": 0, + "emitterFollowBoneScaleX": 1, + "emitterFollowBoneScaleY": 1, + "emitterAngleMode": "fixed", + "emitterFollowCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "emitterFollowDuration": 2, + "emitterFollowSpace": "world", + "emitterFollowDirection": "forward", + "emitterFollowOffset": 0 + } + } + ], + "colliders": [], + "paths": [], + "spines": [] + } +} \ No newline at end of file diff --git a/public/Preset/6.粒子轴点2.json b/public/Preset/6.粒子轴点2.json new file mode 100644 index 0000000..a746692 --- /dev/null +++ b/public/Preset/6.粒子轴点2.json @@ -0,0 +1,531 @@ +{ + "format": "SpineParticle.EditorConfig", + "version": 1, + "savedAt": "2026-10-22T04:01:50.731Z", + "editor": { + "viewScale": 0.287476104098836, + "viewX": -5.508720333236539, + "viewY": 2.457727380580252 + }, + "settings": { + "backgroundX": 0, + "backgroundY": 0, + "backgroundOpacity": 1, + "backgroundImageName": "", + "backgroundImageData": "", + "showGrid": true, + "exportSettings": { + "imagesPath": "./images/", + "spineVersion": "4.2", + "keyframeCurve": "bezier", + "fps": 30, + "omitFps": false, + "integerFrameAlignment": true, + "bonePool": true, + "excludeEmptyAnimations": false, + "fileName": "SpineParticle.json" + } + }, + "timeline": { + "fps": 30, + "loop": true, + "playbackStart": 0, + "playbackEnd": 30, + "animations": [ + "animation" + ] + }, + "selection": { + "type": "particle", + "id": 1 + }, + "scene": { + "systems": [ + { + "id": 1, + "visible": true, + "animation": "animation", + "config": { + "imageResources": [ + { + "id": 1, + "textureName": "217cc2f5b2914d1716898385698d9eb17e352d97385b8-Fojf0Y", + "textureFolder": "", + "previewUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAApIAAAKSCAYAAABhiDtmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEMTM4OTM1REExQzMxMUU3OENFN0IxN0YxNDFFOEQ5NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEMTM4OTM1RUExQzMxMUU3OENFN0IxN0YxNDFFOEQ5NSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQxMzg5MzVCQTFDMzExRTc4Q0U3QjE3RjE0MUU4RDk1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQxMzg5MzVDQTFDMzExRTc4Q0U3QjE3RjE0MUU4RDk1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CRuTCgADgi1JREFUeNrsveuS5EaS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", + "imageMode": "fixed", + "sequencePlayback": "loop-forward", + "sequenceFps": 30, + "sequenceFrames": [], + "weight": 100, + "locked": false, + "scale": 1, + "anchorX": 0.49669471153846156, + "anchorY": 1.5949519230769231, + "colorMode": "fixed", + "colorStart": "#ffffff", + "colorEnd": "#ff4d4d", + "colorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ff4d4d" + } + ], + "blend": "add", + "independentAlpha": "off", + "alpha": 1, + "alphaCurveMode": "跟随导出", + "alphaCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.1, + "y": 1 + }, + { + "x": 0.9, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ] + } + ], + "imageWeightVersion": 1, + "name": "ParticleSystem1", + "mode": "stream", + "rate": 74, + "streamBehavior": "loop", + "loopDurationFrames": 30, + "generateLoopStartAnimation": false, + "loopStartUseCustomDuration": false, + "loopStartDurationFrames": 30, + "generateLoopEndAnimation": false, + "loopEndUseCustomDuration": false, + "loopEndDurationFrames": 30, + "burstCount": 50, + "burstLoop": false, + "delay": 0, + "duration": 1, + "shape": "point", + "showShape": true, + "shapeRangeVersion": 1, + "innerRadius": 0, + "outerRadius": 100, + "innerRectW": 0, + "innerRectH": 0, + "outerRectW": 200, + "outerRectH": 100, + "spawnPathId": 0, + "spawnPathDistribution": "fixed", + "radius": 30, + "rectW": 60, + "rectH": 40, + "centerX": 0, + "centerY": 0, + "rootRotation": 0, + "rootScaleX": 1, + "rootScaleY": 1, + "renderLayerMode": "top", + "renderLayerSpineId": 0, + "renderLayerSlotName": "", + "renderLayerSlotPosition": "above", + "renderLayerFollowAttachment": false, + "emissionAngleMode": "random", + "direction": 0, + "spread": 360, + "coneDirection": 90, + "coneAngle": 60, + "lifeMin": 0.2, + "lifeMax": 1, + "lifeMode": "random", + "lifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "speedMin": 0, + "speedMax": 140, + "speedMode": "fixed", + "speedCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleMin": 1, + "scaleMax": 0, + "scaleMode": "random", + "scaleAxisMode": "uniform", + "scaleYMin": 0.3, + "scaleYMax": 0.8, + "scaleCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleYCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleEndRatio": 0.3, + "initialRotationMode": "random", + "initialRotationMin": 0, + "initialRotationMax": 360, + "initialRotationCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "alpha": 0.9, + "alphaEnd": 0, + "rotationSpeedMin": -90, + "rotationSpeedMax": 90, + "speedOverLifeEnabled": false, + "speedOverLifeMode": "fixed", + "speedOverLifeMin": 1, + "speedOverLifeMax": 1, + "speedOverLifeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "scaleOverLifeEnabled": false, + "scaleOverLifeMode": "curve", + "scaleOverLifeAxisMode": "uniform", + "scaleOverLifeMin": 0, + "scaleOverLifeMax": 1, + "scaleYOverLifeMin": 0, + "scaleYOverLifeMax": 1, + "scaleOverLifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.08, + "y": 1 + }, + { + "x": 0.88, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ], + "scaleYOverLifeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "rotationOverLifeEnabled": true, + "rotationOverLifeMode": "random", + "rotationOverLifeCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "gravity": 980, + "gravityMode": "fixed", + "gravityMin": 980, + "gravityMax": 980, + "gravityDirection": -90, + "gravityCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "damping": 0, + "seed": 999717, + "colorStart": "#ffffff", + "colorEnd": "#ff4d4d", + "colorOverLife": false, + "blend": "add", + "alphaMode": "curve", + "curveMode": "线性", + "alphaCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 0.38, + "y": 1 + }, + { + "x": 0.63, + "y": 1 + }, + { + "x": 1, + "y": 0 + } + ], + "textureName": "star", + "textureFolder": "", + "alphaScale": 1, + "anchorX": 0.5, + "anchorY": 0.5, + "independentAlpha": "off", + "offsetX": 0, + "offsetY": 0, + "noise": false, + "noiseAmt": 30, + "noiseRange": 100, + "noiseSpeed": 1, + "useGravity": false, + "wind": false, + "windX": 0, + "windY": 0, + "windMode": "fixed", + "windMin": 100, + "windMax": 100, + "windDirection": 0, + "windCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "forceField": false, + "forceStrength": 10, + "forceRadius": 100, + "forceCenterX": 0, + "forceCenterY": 0, + "forceFalloff": "linear", + "showForceFieldShape": true, + "vortex": false, + "vortexStrength": 10, + "vortexRadius": 100, + "vortexCenterX": 0, + "vortexCenterY": 0, + "vortexFalloff": "linear", + "showVortexShape": true, + "attraction": false, + "attractionCenterX": 200, + "attractionCenterY": 0, + "attractionRadius": 20, + "attractionDuration": 0.5, + "attractionDelay": 0.1, + "attractionDelayMode": "particle", + "attractionPath": "curve", + "showAttractionShape": true, + "trail": false, + "trailConfigVersion": 3, + "trailResources": [ + { + "id": 1, + "textureName": "trail", + "previewUrl": "/images/trail.png", + "weight": 100, + "locked": false, + "rotation": 0, + "colorMode": "particle", + "color": "#ffffff", + "colorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ffffff" + } + ], + "blend": "normal", + "alphaMode": "particle", + "alpha": 1, + "alphaCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "boneCount": 3, + "trailRatio": 100, + "lengthMode": "fixed", + "length": 100, + "lengthMin": 100, + "lengthMax": 100, + "widthSizeMode": "fixed", + "width": 100, + "widthMin": 100, + "widthMax": 100, + "widthMode": "particle", + "lifeLengthEnabled": false, + "lifeLengthCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "shapeEnabled": false, + "shapeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ] + } + ], + "trailResourceVersion": 6, + "trailTextureName": "trail", + "trailPreviewUrl": "/images/trail.png", + "trailColorMode": "particle", + "trailColor": "#ffffff", + "trailColorGradient": [ + { + "position": 0, + "color": "#ffffff" + }, + { + "position": 1, + "color": "#ffffff" + } + ], + "trailAlphaMode": "particle", + "trailAlpha": 1, + "trailAlphaCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailBoneCount": 3, + "trailLength": 100, + "trailWidth": 100, + "trailWidthMode": "particle", + "trailLifeLengthEnabled": false, + "trailLifeLengthCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailShapeEnabled": false, + "trailShapeCurve": [ + { + "x": 0, + "y": 1 + }, + { + "x": 1, + "y": 1 + } + ], + "trailGridRows": 4, + "trailGridCols": 4, + "collision": false, + "collisionColliderIds": [], + "pathFollow": false, + "emitterFollow": false, + "emitterFollowMode": "none", + "emitterFollowPathId": 0, + "emitterFollowSpineId": 0, + "emitterFollowBoneName": "", + "emitterFollowBoneOffsetX": 0, + "emitterFollowBoneOffsetY": 0, + "emitterFollowBoneRotation": 0, + "emitterFollowBoneScaleX": 1, + "emitterFollowBoneScaleY": 1, + "emitterAngleMode": "fixed", + "emitterFollowCurve": [ + { + "x": 0, + "y": 0 + }, + { + "x": 1, + "y": 1 + } + ], + "emitterFollowDuration": 2, + "emitterFollowSpace": "world", + "emitterFollowDirection": "forward", + "emitterFollowOffset": 0 + } + } + ], + "colliders": [], + "paths": [], + "spines": [] + } +} \ No newline at end of file diff --git a/public/Preset/6.SpineBoy.json b/public/Preset/7.SpineBoy.json similarity index 100% rename from public/Preset/6.SpineBoy.json rename to public/Preset/7.SpineBoy.json diff --git a/public/Preset/index.json b/public/Preset/index.json index 12adbb9..e97a788 100644 --- a/public/Preset/index.json +++ b/public/Preset/index.json @@ -16,11 +16,15 @@ "file": "4.雷电序列帧.json" }, { - "name": "5.贴图轴点", - "file": "5.贴图轴点.json" + "name": "5.贴图轴点1", + "file": "5.贴图轴点1.json" }, { - "name": "6.SpineBoy", - "file": "6.SpineBoy.json" + "name": "6.粒子轴点2", + "file": "6.粒子轴点2.json" + }, + { + "name": "7.SpineBoy", + "file": "7.SpineBoy.json" } ] diff --git a/src/views/ImageResourceCard.vue b/src/views/ImageResourceCard.vue index 205e9c3..4dfdb39 100644 --- a/src/views/ImageResourceCard.vue +++ b/src/views/ImageResourceCard.vue @@ -64,7 +64,7 @@
{{ pivotSummary }}
@@ -112,7 +112,7 @@