@dcl/wearable-preview 2.13.1-24086313373.commit-94ac427 → 2.13.1-24096673885.commit-cf09103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/{Preview-DkCvZkIm.js → Preview-BloXax2L.js} +4 -4
- package/assets/UnityPreview-CaPSWPNu.js +1 -0
- package/assets/{babylon.inspector.bundle.max-BshTwI20.js → babylon.inspector.bundle.max-DGZCBG-7.js} +1 -1
- package/assets/emote-events-R7O4OQgI.js +12 -0
- package/assets/{index-VRKZM3V3.js → index-KYuRa154.js} +3 -3
- package/index.html +3 -3
- package/package.json +3 -3
- package/static-local/assets/{Preview-C3-9aoDs.js → Preview-CGqOUw_I.js} +4 -4
- package/static-local/assets/UnityPreview-Co9Lu6Zt.js +1 -0
- package/static-local/assets/{babylon.inspector.bundle.max-CE4VRJMh.js → babylon.inspector.bundle.max-DDnqGh7g.js} +1 -1
- package/static-local/assets/emote-events-jjoBnMzo.js +12 -0
- package/static-local/assets/{index-BTE6cqrU.js → index-D4VHDB8W.js} +2 -2
- package/static-local/index.html +1 -1
- package/static-local/package.json +1 -1
- package/assets/UnityPreview-CMj8Kcs_.js +0 -1
- package/assets/emote-events-B-dYr8DT.js +0 -12
- package/static-local/assets/UnityPreview-BRcNA4ZQ.js +0 -1
- package/static-local/assets/emote-events-B_yv1p5T.js +0 -12
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as k,a as j,r as c,b as W,R as oe,j as U}from"./index-BTE6cqrU.js";import{m as ie,i as K,d,u as te,s as le,f as de,a as ce,b as ue,c as me,g as ge,e as Se,h as z,j as $,k as Ee,l as ye,n as fe,o as pe,p as G,q as O,r as we,t as he}from"./emote-events-B_yv1p5T.js";var V=(e=>(e.SET_MODE="SetMode",e.SET_PROFILE="SetProfile",e.SET_EMOTE="SetEmote",e.SET_URNS="SetUrns",e.SET_BACKGROUND="SetBackground",e.SET_SKIN_COLOR="SetSkinColor",e.SET_HAIR_COLOR="SetHairColor",e.SET_EYE_COLOR="SetEyeColor",e.SET_BODY_SHAPE="SetBodyShape",e.SET_SHOW_ANIMATION_REFERENCE="SetShowAnimationReference",e.SET_PROJECTION="SetProjection",e.ADD_BASE64="AddBase64",e.CLEAR_BASE64="ClearBase64",e.SET_CONTRACT="SetContract",e.SET_ITEM_ID="SetItemID",e.SET_TOKEN_ID="SetTokenID",e.SET_DISABLE_LOADER="SetDisableLoader",e.RELOAD="Reload",e.CLEANUP="Cleanup",e.GET_ELEMENT_BOUNDS="GetElementBounds",e))(V||{});const Re={unityMode:"SetMode",profile:"SetProfile",emote:"SetEmote",urns:"SetUrns",background:"SetBackground",skin:"SetSkinColor",hair:"SetHairColor",eyes:"SetEyeColor",bodyShape:"SetBodyShape",showAnimationReference:"SetShowAnimationReference",projection:"SetProjection",base64s:"AddBase64",contractAddress:"SetContract",itemId:"SetItemID",tokenId:"SetTokenID",disableLoader:"SetDisableLoader"},Ae={unityMode:e=>String(e),profile:e=>String(e),emote:e=>String(e),urns:e=>Array.isArray(e)?e.join(","):String(e),background:e=>typeof e=="string"?e.replace("#",""):String(e),skin:e=>typeof e=="string"?e.replace("#",""):String(e),hair:e=>typeof e=="string"?e.replace("#",""):String(e),eyes:e=>typeof e=="string"?e.replace("#",""):String(e),bodyShape:e=>String(e),showAnimationReference:e=>String(e),projection:e=>String(e),contractAddress:e=>String(e),itemId:e=>String(e),tokenId:e=>String(e),disableLoader:e=>String(e)},N=(e,t,s)=>{if(e)try{const r=String(t);Object.values(V).includes(r)||(console.warn(`Unknown Unity method: ${r}. Sending anyway...`),k(`Unknown Unity method: ${r}`,{method:r,value:s})),s!==void 0?e.SendMessage("JSBridge",r,s):e.SendMessage("JSBridge",r)}catch(r){console.error(`Failed to send Unity message ${t}:`,r),j(r,{method:String(t),value:s})}else console.warn(`Unity instance not ready, cannot send message: ${t}`),k(`Unity instance not ready, cannot send message: ${t}`,{method:String(t)})},Ie=(e,t,s)=>{if(!e){console.warn("Unity instance not available, cannot send override messages"),k("Unity instance not available, cannot send override messages");return}let r=0;t.base64s!==void 0&&s.base64s&&(N(e,"ClearBase64"),r++,Array.isArray(t.base64s)&&t.base64s.length>0&&t.base64s.forEach(n=>{N(e,"AddBase64",n),r++})),Object.entries(t).forEach(([n,a])=>{if(n!=="base64s"&&s[n]&&a!==void 0){const i=Re[n];if(i){const l=Ae[n],y=l?l(a):String(a);N(e,i,y),r++}else console.warn(`No Unity method mapping found for property: ${n}`),k(`No Unity method mapping found for property: ${n}`,{property:n,value:a})}}),r>0&&N(e,"Reload")};var be={VITE_BASE_URL:""};const F=new Map,C=(e,t)=>t;function Te(e){if(F.has(e))return F.get(e);const t=new Promise((s,r)=>{const n=document.querySelector(`script[src="${e}"]`);if(n){n.addEventListener("load",()=>s(n)),n.addEventListener("error",i=>r(i));return}const a=document.createElement("script");a.src=e,a.async=!0,a.onload=()=>s(a),a.onerror=i=>r(i),document.body.appendChild(a)});return F.set(e,t),t}const ve=async(e,t,s,r,n,a,i,l,y,m,u,g)=>{try{const o=be.VITE_BASE_URL||"";return await Te(C(o,t)),await createUnityInstance(e,{dataUrl:C(o,s),frameworkUrl:C(o,r),codeUrl:C(o,n),streamingAssetsUrl:C(o,i),symbolUrl:C(o,a),companyName:l,productName:y,productVersion:m,matchWebGLToCanvasSize:u,arguments:g})}catch(o){throw console.error("❌ Failed to load Unity instance:",o),o}},Pe="data:image/png;base64,";function Le(e){return{getScreenshot:()=>new Promise(t=>{if(!e){t("");return}e.SendMessage("JSBridge","TakeScreenshot",""),window.addEventListener("message",function s(r){if(r.data.type==="unity-renderer"){const{type:n,payload:a}=r.data.payload;n==="screenshot"&&(window.removeEventListener("message",s),t(Pe+a))}})}),getMetrics:()=>new Promise(t=>{if(!e){t({triangles:0,materials:0,textures:0,meshes:0,bodies:0,entities:0});return}e.SendMessage("JSBridge","GetMetrics",""),window.addEventListener("message",function s(r){if(r.data.type==="unity-renderer"){const{type:n,payload:a}=r.data.payload;n==="metrics"&&(window.removeEventListener("message",s),t(a))}})}),changeZoom:async t=>{e&&e.SendMessage("JSBridge","SetZoom",t.toString())},panCamera:async t=>{if(!e)return;const s=t.x??0,r=t.y??0,n=t.z??0;e.SendMessage("JSBridge","SetOffset",`${s},${r},${n}`)},changeCameraPosition:async t=>{if(!e)return;const s=t.alpha??0,r=t.beta??0,n=t.radius??0;e.SendMessage("JSBridge","SetCameraPosition",`${s},${r},${n}`)},setUsername:async t=>{e&&e.SendMessage("JSBridge","SetUsername",t)},cleanup:async()=>{e&&e.SendMessage("JSBridge","Cleanup","")}}}function Oe(e,t,s){const r=ie();let n=0,a=0,i="stopped",l=null,y=0;const m=()=>{u(),y=Date.now(),l=setInterval(()=>{var S;if(i!=="playing")return;const o=Date.now(),f=(o-y)/1e3;if(y=o,a+=f,n>0&&a>=n)if((S=t==null?void 0:t.emoteDataADR74)!=null&&S.loop)a=a%n,r.emit(d.PreviewEmoteEventType.ANIMATION_LOOP);else{a=n,u(),i="stopped",r.emit(d.PreviewEmoteEventType.ANIMATION_PLAYING,{length:a}),r.emit(d.PreviewEmoteEventType.ANIMATION_END);return}r.emit(d.PreviewEmoteEventType.ANIMATION_PLAYING,{length:a})},15)},u=()=>{l!==null&&(clearInterval(l),l=null)},g=(o,f,S)=>new Promise(E=>{if(!e){E(S);return}const p=P=>{if(P.data.type==="unity-renderer"){const{type:b,payload:R}=P.data.payload;b===f&&(window.removeEventListener("message",p),E(R))}};window.addEventListener("message",p),o()});return{getLength:async()=>await g(()=>e.SendMessage("JSBridge","GetEmoteLength",""),"emoteLength",0)??0,isPlaying:async()=>g(()=>e.SendMessage("JSBridge","IsEmotePlaying",""),"isEmotePlaying",!1),goTo:async o=>{e&&(a=o,e.SendMessage("JSBridge","GoToEmote",o.toString()),r.emit(d.PreviewEmoteEventType.ANIMATION_PLAYING,{length:o}))},play:async()=>{e&&(n<=0&&(n=await g(()=>e.SendMessage("JSBridge","GetEmoteLength",""),"emoteLength",0)),i==="stopped"&&(a=0),i="playing",e.SendMessage("JSBridge","PlayEmote",""),m(),r.emit(d.PreviewEmoteEventType.ANIMATION_PLAY))},pause:async()=>{e&&(i="paused",u(),e.SendMessage("JSBridge","PauseEmote",""),r.emit(d.PreviewEmoteEventType.ANIMATION_PAUSE))},stop:async()=>{e&&(i="stopped",a=0,u(),e.SendMessage("JSBridge","StopEmote",""),r.emit(d.PreviewEmoteEventType.ANIMATION_END))},enableSound:async()=>{e&&e.SendMessage("JSBridge","EnableSound","")},disableSound:async()=>{e&&e.SendMessage("JSBridge","DisableSound","")},hasSound:async()=>g(()=>e.SendMessage("JSBridge","HasSound",""),"hasSound",!1),isSocialEmote:async()=>K(t),getSocialEmoteAnimations:async()=>!t||!K(t)?null:[{title:"Start Animation",...t.emoteDataADR74.startAnimation},...t.emoteDataADR74.outcomes.map(o=>({title:o.title,loop:o.loop,audio:o.audio,...o.clips}))],getPlayingSocialEmoteAnimation:async()=>s??null,emote:t,events:r}}const Ce={dataUrl:"/unity/Build/aang-renderer.data.br",frameworkUrl:"/unity/Build/aang-renderer.framework.js.br",codeUrl:"/unity/Build/aang-renderer.wasm.br",symbolUrl:"/unity/Build/aang-renderer.symbols.json.br"};function _e(){return Ce}async function Ne(e,t,s){let r=null;try{const n=_e();if(r=await ve(e,"/unity/Build/aang-renderer.loader.js",n.dataUrl,n.frameworkUrl,n.codeUrl,n.symbolUrl,"/emotes","Decentraland","AangRenderer","2.2.2",!0,[]),!r)throw new Error("Failed to load Unity instance");const a=Le(r),i=Oe(r,t,s);return{scene:a,emote:i,unity:r}}catch(n){if(console.error("Unity render failed:",n),r!=null&&r.Quit)try{r.Quit()}catch(a){console.error("Error quitting Unity instance:",a),j(a,{phase:"unityQuit"})}throw n}}const Me=()=>Math.floor(Math.random()*159)+1,re=()=>`default${Me()}`,De=(e,t)=>{var s,r,n,a,i,l;return{eyes:z(t.eyes||((r=(s=e==null?void 0:e.avatar)==null?void 0:s.eyes)==null?void 0:r.color)&&$(e.avatar.eyes.color)||"#000000"),hair:z(t.hair||((a=(n=e==null?void 0:e.avatar)==null?void 0:n.hair)==null?void 0:a.color)&&$(e.avatar.hair.color)||"#000000"),skin:z(t.skin||((l=(i=e==null?void 0:e.avatar)==null?void 0:i.skin)==null?void 0:l.color)&&$(e.avatar.skin.color)||"#cc9b76")}},_=e=>e||"",X=e=>e||[],B=e=>e.replace("#","");function Z(e){const t=new URL(window.location.href);Object.entries(e).forEach(([s,r])=>{t.searchParams.delete(s),Array.isArray(r)?r.forEach(n=>{n!==""&&t.searchParams.append(s,n)}):r!==""&&t.searchParams.set(s,r)}),window.history.replaceState({},"",t.toString())}function Ue(){const{options:e,overrideSources:t}=te(),[s,r]=c.useState(null),[n,a]=c.useState(!0),[i,l]=c.useState(null),y=c.useRef(null),m=c.useRef(e),u=c.useRef(!0);return c.useEffect(()=>{const g=JSON.stringify(e),o=JSON.stringify(m.current);if(!u.current&&g===o)return;u.current=!1,m.current=e,(async()=>{var S,E;try{a(!0),l(null);const p=e.peerUrl||W.get("PEER_URL"),P=e.marketplaceServerUrl||e.nftServerUrl||W.get("MARKETPLACE_SERVER_URL");let b=d.PreviewType.WEARABLE,R={color:e.background||"#4b4852",transparent:e.disableBackground===!0};const T=le(e.profile);let A=T==null?void 0:T.value;A==="default"&&(A=re());const h=A&&T?T.type==="address"?await de(A,p):await ce(A,p):null,I=e.bodyShape||((S=h==null?void 0:h.avatar)==null?void 0:S.bodyShape)||d.BodyShape.MALE;let w=null;if(e.contractAddress&&(w=await ue({contractAddress:e.contractAddress,tokenId:e.tokenId,itemId:e.itemId,peerUrl:p,marketplaceServerUrl:P}),w&&me(w))){R={...R,image:w.thumbnail};const D=ge(w);Se(D)&&(b=d.PreviewType.TEXTURE)}const{eyes:v,hair:H,skin:Y}=De(h,{eyes:e.eyes,hair:e.hair,skin:e.skin}),M=e.unityMode||null,ne=e.camera&&Object.values(d.PreviewCamera).includes(e.camera)?e.camera:d.PreviewCamera.INTERACTIVE,Q=e.projection&&Object.values(d.PreviewProjection).includes(e.projection)?e.projection:d.PreviewProjection.PERSPECTIVE,L=e.disableDefaultEmotes?null:e.emote&&Object.values(d.PreviewEmote).includes(e.emote)?e.emote:d.PreviewEmote.IDLE,x={background:R,bodyShape:I,mode:M,projection:Q,type:b,base64:((E=e.base64s)==null?void 0:E[0])||null,contract:e.contractAddress||null,disableLoader:e.disableLoader||!1,emote:(L==null?void 0:L.toString())||null,eyeColor:v.replace("#",""),hairColor:H.replace("#",""),item:e.itemId||null,profile:A||null,skinColor:Y.replace("#",""),token:e.tokenId||null,urn:e.urns||null,showAnimationReference:null,itemDefinition:w,socialEmote:e.socialEmote||null},ae=JSON.stringify(x),se=JSON.stringify(y.current);if(ae!==se){if(y.current=x,Object.keys(t).length===0){const D=X(e.urns),q=X(e.base64s);if(M===d.PreviewUnityMode.CONFIG){const J={mode:_(M||"")};Z(J)}else{const J={background:R.transparent?"":B(R.color),disableLoader:e.disableLoader?"true":"",profile:_(A||""),bodyShape:_(I||""),eyeColor:B(v||""),hairColor:B(H||""),skinColor:B(Y||""),mode:_(M||""),camera:ne,projection:Q,emote:_((L==null?void 0:L.toString())||""),urn:D.length>0?D:[""],base64:q.length>0?q:[""]};Z(J)}}r(x)}a(!1)}catch(p){console.error("[useUnityConfig] Failed to load config:",p),l(p instanceof Error?p.message:"Failed to load config"),a(!1)}})()},[e,t]),[s,n,i]}const Be="unity-renderer",ke="unity-canvas",ee=1,je="Failed to load Unity";var xe=(e=>(e.LOADED="loaded",e.ERROR="error",e.SCREENSHOT="screenshot",e.CUSTOMIZATION_DONE="customization-done",e.CUSTOMIZATION_STEP="avatar-customization-step",e.ELEMENT_BOUNDS="element-bounds",e))(xe||{});const Je="get_element_bounds",ze="element_bounds_response",$e=(e,t,s,r)=>{const[n,a]=c.useState({isLoaded:!1,isInitialized:!1,error:null}),i=c.useRef(null),l=c.useCallback(m=>{if(m.data.type===Be){const{type:u,payload:g}=m.data.payload;u==="loaded"&&(g===!0||g==="true")?(a(o=>({...o,isLoaded:!0,isInitialized:!0})),d.sendMessage(O(),d.PreviewMessageType.LOAD,{renderer:d.PreviewRenderer.UNITY}),t.current&&t.current.emote.play()):u==="customization-done"?d.sendMessage(O(),d.PreviewMessageType.CONTROLLER_RESPONSE,{id:"customization-done",ok:!0,result:JSON.parse(m.data.payload.payload)}):u==="avatar-customization-step"?d.sendMessage(O(),d.PreviewMessageType.CONTROLLER_RESPONSE,{id:"avatar-customization-step",ok:!0,result:{step:m.data.payload.payload}}):u==="element-bounds"?d.sendMessage(O(),ze,g):u==="error"&&(j(new Error(g),{component:"UnityPreview",phase:"unityMessage"}),a(o=>({...o,error:g})),d.sendMessage(O(),d.PreviewMessageType.ERROR,{message:"Error loading the wearable. Please try again."}))}},[]),y=c.useCallback(async m=>{if(!(!e.canvas.current||e.isInitializing.current||e.unityInstance.current)){e.isInitializing.current=!0,a(u=>({...u,isLoaded:!1,error:null}));try{const u=m!=null&&m.itemDefinition&&we(m.itemDefinition)?m.itemDefinition:null,{unity:g,scene:o,emote:f}=await Ne(e.canvas.current,u,(m==null?void 0:m.socialEmote)||void 0);e.unityInstance.current=g,t.current={scene:o,emote:f},i.current&&i.current(),i.current=he(t.current),a(S=>({...S,isInitialized:!0}))}catch(u){const g=u instanceof Error?u.message:je;console.error("Unity init failed:",u),j(u,{component:"UnityPreview",phase:"initializeUnity"}),a(o=>({...o,error:g})),d.sendMessage(O(),d.PreviewMessageType.ERROR,{message:g})}finally{e.isInitializing.current=!1}}},[e,t]);return c.useEffect(()=>{n.isInitialized||r||!s||y(s)},[s,r,n.isInitialized,y]),c.useEffect(()=>()=>{i.current&&i.current()},[]),c.useEffect(()=>{if(s)return window.addEventListener("message",l,!1),()=>{window.removeEventListener("message",l,!1)}},[s,l]),n},Ge=e=>{const[t,s]=c.useState({pixelRatio:window.devicePixelRatio||ee,is3D:!0,backgroundImage:""});return c.useEffect(()=>{const r=()=>{s(a=>({...a,pixelRatio:window.devicePixelRatio||ee}))},n=window.matchMedia(`(resolution: ${t.pixelRatio}dppx)`);return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},[t.pixelRatio]),c.useEffect(()=>{e&&s(r=>({...r,backgroundImage:e.background.image||"",is3D:e.type!==d.PreviewType.TEXTURE}))},[e]),t},Fe=(e,t,s,r,n)=>{const a=c.useMemo(()=>{const i={};for(const l of Object.keys(n))n[l]&&r[l]!==void 0&&(i[l]=r[l]);return i},[n,r]);c.useEffect(()=>{if(!(!s.isInitialized||!s.isLoaded||!e.current)){if(a.profile==="default"){const i=t.current.profile;a.profile=i!=null&&i.match(/^default\d+$/)?i:re()}Object.keys(a).length>0&&(Ie(e.current,a,n),t.current=a)}},[s.isInitialized,s.isLoaded,a,n,e,t])},Ve=()=>{const{width:e=window.innerWidth,height:t=window.innerHeight}=Ee(),s=c.useRef(null),r=c.useRef(null),n=c.useRef(!1),a=c.useRef({}),i=ye(),[l,y,m]=Ue(),{options:u,overrideSources:g}=te(),o=c.useMemo(()=>({canvas:s,unityInstance:r,isInitializing:n,lastSentOverrides:a}),[]);fe(h=>{var I,w;if(((I=h.data)==null?void 0:I.type)===Je&&r.current){const v=(w=h.data.payload)==null?void 0:w.elementName;v&&N(r.current,V.GET_ELEMENT_BOUNDS,v)}});const f=$e(o,i,l,y),S=Ge(l);Fe(o.unityInstance,o.lastSentOverrides,f,u,g),pe();const E=c.useMemo(()=>{const h=f.error||m,I=!f.isLoaded&&!h,w=!!S.backgroundImage&&!S.is3D&&!I,v=S.is3D&&!I;return{error:h,isLoading:I,showImage:w,showCanvas:v}},[f.error,f.isLoaded,m,S.backgroundImage,S.is3D]),p=c.useMemo(()=>({opacity:1,backgroundColor:!(l!=null&&l.background.transparent)&&(l==null?void 0:l.type)===d.PreviewType.TEXTURE?l.background.color:void 0}),[l]),P=c.useMemo(()=>({width:`${e}px`,height:`${t}px`}),[e,t]),b=c.useMemo(()=>({width:Math.round(e*S.pixelRatio),height:Math.round(t*S.pixelRatio)}),[e,t,S.pixelRatio]),R=c.useMemo(()=>G("Preview",{"is-loading":E.isLoading,"is-loaded":f.isLoaded,"is-3d":S.is3D,"has-error":!!E.error}),[E.isLoading,f.isLoaded,S.is3D,E.error]),T=c.useMemo(()=>G("thumbnail",{"is-visible":E.showImage}),[E.showImage]),A=c.useMemo(()=>G({"is-visible":E.showCanvas}),[E.showCanvas]);return U.jsxs("div",{className:R,style:p,children:[U.jsx("img",{src:S.backgroundImage,className:T,alt:"preview"}),U.jsx("canvas",{ref:o.canvas,id:ke,className:A,width:b.width,height:b.height,style:P}),E.error&&U.jsx("div",{className:"error",children:E.error})]})},Qe=oe.memo(Ve);export{xe as UnityMessageType,Qe as default};
|