handler-playable-sdk 0.1.0 → 0.1.1
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/dist/chunk-4YZWQKX4.mjs +17 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/pixi/index.js +1 -1
- package/dist/pixi/index.mjs +1 -1
- package/dist/three/index.d.mts +493 -0
- package/dist/three/index.d.ts +493 -0
- package/dist/three/index.js +109 -0
- package/dist/three/index.mjs +93 -0
- package/package.json +14 -3
- package/dist/chunk-CJIYY5BP.mjs +0 -17
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import{b as it}from"../chunk-4YZWQKX4.mjs";import*as I from"three";async function An(e,t={}){let n=()=>({width:e.clientWidth||window.innerWidth||320,height:e.clientHeight||window.innerHeight||480});e.innerHTML="",e.style.position="relative",e.style.display="flex",e.style.flexDirection="column",e.style.alignItems="stretch",e.style.width="100%",e.style.height="100dvh",e.style.minHeight="100vh",e.style.maxWidth="100%",e.style.maxHeight="100%",e.style.boxSizing="border-box",e.style.overflow="hidden",t.background&&(e.style.background=t.background);let o=document.createElement("div");o.setAttribute("style",["position:relative","width:100%","height:100%","display:flex","align-items:center","justify-content:center",`background:${t.background||"transparent"}`,"color:var(--h-text, #f4f6ff)",'font-family:var(--h-font-main, "Inter", "Helvetica Neue", Arial, sans-serif)',"box-sizing:border-box"].join(";")),e.appendChild(o);let a=document.createElement("div");a.setAttribute("style",["position:absolute","inset:0","display:flex","align-items:center","justify-content:center","pointer-events:auto"].join(";")),o.appendChild(a);let s=new I.Scene,{width:i,height:r}=n(),l=new I.OrthographicCamera(-i/2,i/2,r/2,-r/2,.1,1e3);l.position.set(0,0,1),l.lookAt(0,0,0);let p=new I.WebGLRenderer({antialias:!0,alpha:!0});p.setPixelRatio(window.devicePixelRatio||1),p.setSize(i,r),p.domElement.style.maxWidth="100%",p.domElement.style.maxHeight="100%",a.appendChild(p.domElement);let m=c=>{let y=n(),f=typeof(c==null?void 0:c.width)=="number"?c.width:y.width,h=typeof(c==null?void 0:c.height)=="number"?c.height:y.height;p.setSize(f,h),p.setPixelRatio(window.devicePixelRatio||1),l.left=-f/2,l.right=f/2,l.top=h/2,l.bottom=-h/2,l.updateProjectionMatrix()};requestAnimationFrame(()=>m());let u=!1;it.on("pause",()=>{u=!0,document.querySelectorAll("audio").forEach(y=>y.pause())}),it.on("resume",()=>{u=!1,document.querySelectorAll("audio").forEach(y=>{y.currentTime>0&&!y.ended&&y.play().catch(()=>{})})}),it.on("resize",({payload:c})=>{m({width:c==null?void 0:c.width,height:c==null?void 0:c.height})}),window.addEventListener("resize",()=>m());let d=document.createElement("div");return d.setAttribute("style",["position:absolute","inset:0","display:flex","flex-direction:column","align-items:center","justify-content:flex-start","gap:12px","pointer-events:none","font-family:Arial,sans-serif","padding:20px 16px","padding-bottom:clamp(24px, 6vh, 96px)","box-sizing:border-box","z-index:2"].join(";")),e.appendChild(d),{scene:s,camera:l,renderer:p,overlay:d,applySize:m}}import*as S from"three";var rt=class{constructor(t){var n,o;this.position=(t==null?void 0:t.position)||{x:0,y:0},this.scale=(n=t==null?void 0:t.scale)!=null?n:1,this.rotation=(o=t==null?void 0:t.rotation)!=null?o:0}update(t){t.position!==void 0&&(this.position={...t.position}),t.scale!==void 0&&(this.scale=t.scale),t.rotation!==void 0&&(this.rotation=t.rotation)}syncToThree(t){t.position.set(this.position.x,this.position.y,0),t.scale.set(this.scale,this.scale,this.scale),t.rotation.z=this.rotation}},lt=class{constructor(t){var n,o,a,s;this.z_index=(n=t==null?void 0:t.z_index)!=null?n:0,this.alpha=(o=t==null?void 0:t.alpha)!=null?o:1,this.visible=(a=t==null?void 0:t.visible)!=null?a:!0,this.tint=(s=t==null?void 0:t.tint)!=null?s:null}update(t){t.z_index!==void 0&&(this.z_index=t.z_index),t.alpha!==void 0&&(this.alpha=t.alpha),t.visible!==void 0&&(this.visible=t.visible),t.tint!==void 0&&(this.tint=t.tint)}syncToThree(t){if(t.renderOrder=this.z_index,t.visible=this.visible,t instanceof S.Mesh&&t.material&&(Array.isArray(t.material)?t.material.forEach(n=>{n instanceof S.Material&&(n.opacity=this.alpha,n.transparent=this.alpha<1)}):t.material instanceof S.Material&&(t.material.opacity=this.alpha,t.material.transparent=this.alpha<1)),this.tint!==null&&t instanceof S.Mesh&&t.material){let n=typeof this.tint=="string"?new S.Color(this.tint):new S.Color(this.tint);Array.isArray(t.material)?t.material.forEach(o=>{(o instanceof S.MeshBasicMaterial||o instanceof S.MeshStandardMaterial)&&o.color.copy(n)}):(t.material instanceof S.MeshBasicMaterial||t.material instanceof S.MeshStandardMaterial)&&t.material.color.copy(n)}}},ct=class{constructor(t,n,o,a){this.instanceId=t,this.objectConfig=n,this.threeObject=o,this._config=a,this.transform=new rt(a.transform),this.renderer=new lt(a.render),this.sync()}sync(){this.transform.syncToThree(this.threeObject),this.renderer.syncToThree(this.threeObject)}updateConfig(t){this._config=t,t.transform&&this.transform.update(t.transform),t.render&&this.renderer.update(t.render),this.sync()}getComponent(t){return this._config[t]}getPosition(){return{...this.transform.position}}setPosition(t,n){this.transform.position={x:t,y:n},this.transform.syncToThree(this.threeObject)}getAlpha(){return this.renderer.alpha}setAlpha(t){this.renderer.alpha=t,this.renderer.syncToThree(this.threeObject)}getVisible(){return this.renderer.visible}setVisible(t){this.renderer.visible=t,this.renderer.syncToThree(this.threeObject)}},Tt=class{constructor(t){this.objects=new Map;this.config=t}create(t,n){let o=this.config.objects.get(t);if(!o)throw new Error(`Object config not found: ${t}`);let a=new ct(t,o.object_config||t,n,o);return this.objects.set(t,a),a}get(t){return this.objects.get(t)}updateConfig(t){this.config=t;for(let[n,o]of this.objects.entries()){let a=t.objects.get(n);a&&o.updateConfig(a)}}getAll(){return Array.from(this.objects.values())}remove(t){this.objects.delete(t)}clear(){this.objects.clear()}};var pt={"brand.primary":{family:"Arial, sans-serif",weight:"400"},"brand.warning":{family:"Arial Black, Arial, sans-serif",weight:"900"},"brand.heading":{family:"Arial Black, Arial, sans-serif",weight:"800"},"brand.body":{family:"Arial, sans-serif",weight:"400"}};function G(e){let t=pt[e];return t?t.family:(console.warn(`Font ID "${e}" not found in registry, using fallback`),"Arial, sans-serif")}function X(e){var n;let t=pt[e];return t&&(n=t.weight)!=null?n:"400"}function Fn(e,t){pt[e]=t}function Ln(){return Object.keys(pt)}import*as U from"three";function Q(e){return{element:e,get alpha(){return parseFloat(e.style.opacity||"1")},set alpha(t){e.style.opacity=t.toString()},get visible(){return e.style.display!=="none"},set visible(t){e.style.display=t?"":"none"},position:{set(t,n){e.style.left=`${t}px`,e.style.top=`${n}px`},get x(){return parseFloat(e.style.left||"0")},get y(){return parseFloat(e.style.top||"0")}},scale:{set(t,n){e.style.transform=`scale(${t})`},get x(){let t=e.style.transform.match(/scale\(([^)]+)\)/);return t?parseFloat(t[1]):1}}}}function Dn(e,t,n){var Lt,Dt,Wt,kt,zt,Yt,Bt,Pt,Gt,Xt,qt,Nt,Vt,jt,Jt,Kt,Qt,Zt,Ot,It,Ut,te,ee,ne,ae,se,oe,ie,re,le,ce,pe,me,de,ue,ye,he,fe,ge,be,Te,xe,_e,Ee,we,Se,He,ve,Re,Ce,Me,$e,Ae,Fe,Le,De,We,ke,ze,Ye,Be,Pe;let o=e.objects.get("ui_endgame_1"),a=e.objects.get("ui_endgame_logo_1"),s=e.objects.get("ui_endgame_title_1"),i=e.objects.get("ui_endgame_subtitle_1"),r=e.objects.get("ui_endgame_footer_1"),l=e.objects.get("ui_endgame_cta_1"),p=e.objects.get("ui_endgame_cta_hint_1"),m=e.objects.get("ui_endgame_hand_1"),u=e.engine.runtime||{},d=((Lt=o==null?void 0:o.gameplay)==null?void 0:Lt.tuning)||{},c=(o==null?void 0:o.render)||{},y=(Dt=d.panel_width)!=null?Dt:320,f=(Wt=d.panel_height)!=null?Wt:400,h=(kt=d.panel_padding)!=null?kt:32,w=(zt=d.panel_radius)!=null?zt:24,b=c.background_color||d.panel_bg_color||"#1a0a0a",T=c.background_alpha!==void 0&&c.background_alpha!==null?c.background_alpha:(Yt=d.panel_bg_alpha)!=null?Yt:.98,g=c.border_color||d.panel_border_color||"#ffffff",_=(Bt=d.panel_border_width)!=null?Bt:2,R=(Pt=d.panel_border_alpha)!=null?Pt:.3,x=document.createElement("div");x.style.cssText=`
|
|
2
|
+
position: absolute;
|
|
3
|
+
width: ${y}px;
|
|
4
|
+
height: ${f}px;
|
|
5
|
+
background: ${b};
|
|
6
|
+
opacity: ${T};
|
|
7
|
+
border: ${_}px solid ${g};
|
|
8
|
+
border-opacity: ${R};
|
|
9
|
+
border-radius: ${w}px;
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
transform: translate(-50%, -50%);
|
|
15
|
+
opacity: 0;
|
|
16
|
+
visibility: hidden;
|
|
17
|
+
pointer-events: auto;
|
|
18
|
+
`;let M=Q(x);M.element=x;let W=((Gt=a==null?void 0:a.gameplay)==null?void 0:Gt.tuning)||{},H=(a==null?void 0:a.transform)||{},C=(Xt=W.logo_size)!=null?Xt:56,D=(qt=H.scale)!=null?qt:1,k=(Vt=(Nt=H.offset)==null?void 0:Nt.y)!=null?Vt:-130,Z=(jt=W.logo_alpha)!=null?jt:1,q=new U.SpriteMaterial({map:n||void 0,transparent:!0,alphaTest:.1}),E=new U.Sprite(q);E.position.set(0,k,0),E.material.opacity=0;let z=0,N=0;if(n&&(z=((Jt=n.image)==null?void 0:Jt.width)||100,N=((Kt=n.image)==null?void 0:Kt.height)||100),z>0&&N>0){let O=z/N,gt,bt;O>1?(gt=C,bt=C/O):(bt=C,gt=C*O);let Mn=gt/z*D,$n=bt/N*D;E.scale.set(Mn,$n,1)}else{let O=C/100*D;E.scale.set(O,O,1)}E.targetAlpha=Z,E.baseScaleX=E.scale.x,E.baseScaleY=E.scale.y;let $=s==null?void 0:s.ui,Y=((Qt=s==null?void 0:s.gameplay)==null?void 0:Qt.tuning)||{},qe=($==null?void 0:$.text)||"MISSION ACCOMPLISHED",xt=($==null?void 0:$.font)||"brand.heading",Ne=($==null?void 0:$.fontSize)||24,Ve=(Zt=$==null?void 0:$.letterSpacing)!=null?Zt:1,nt=(Ot=s==null?void 0:s.render)==null?void 0:Ot.tint,je=typeof nt=="string"?nt:nt?`#${nt.toString(16).padStart(6,"0")}`:"#00FF88",Je=y-h*2-30,Ke=Y.font_weight_override?Y.font_weight_override:X(xt),V=document.createElement("div");V.textContent=qe,V.style.cssText=`
|
|
19
|
+
font-family: ${G(xt)};
|
|
20
|
+
font-size: ${Ne}px;
|
|
21
|
+
font-weight: ${Ke};
|
|
22
|
+
color: ${je};
|
|
23
|
+
text-align: center;
|
|
24
|
+
letter-spacing: ${Ve}px;
|
|
25
|
+
-webkit-text-stroke: ${(It=Y.stroke_width)!=null?It:2}px ${Y.stroke_color||"#000000"};
|
|
26
|
+
text-shadow: ${(Ut=Y.shadow_distance)!=null?Ut:4}px ${(te=Y.shadow_distance)!=null?te:4}px ${(ee=Y.shadow_blur)!=null?ee:8}px rgba(0,0,0,${(ne=Y.shadow_alpha)!=null?ne:.9});
|
|
27
|
+
opacity: 0;
|
|
28
|
+
position: absolute;
|
|
29
|
+
transform: translate(-50%, -50%);
|
|
30
|
+
white-space: nowrap;
|
|
31
|
+
max-width: ${Je}px;
|
|
32
|
+
`;let _t=(ae=d.title_offset_y)!=null?ae:30,Qe=_t+((se=Y.animation_start_y_offset)!=null?se:-20);V.style.top=`${Qe}px`,V.style.left="50%";let Et=Q(V);Et.element=V,x.appendChild(V);let A=i==null?void 0:i.ui,wt=((oe=i==null?void 0:i.gameplay)==null?void 0:oe.tuning)||{},Ze=(A==null?void 0:A.text)||"RESCUE COMPLETE",St=(A==null?void 0:A.font)||"brand.body",Oe=(A==null?void 0:A.fontSize)||11,Ie=(ie=A==null?void 0:A.letterSpacing)!=null?ie:.5,at=(re=i==null?void 0:i.render)==null?void 0:re.tint,Ue=typeof at=="string"?at:at?`#${at.toString(16).padStart(6,"0")}`:"#B0B0B0",j=document.createElement("div");j.textContent=Ze,j.style.cssText=`
|
|
33
|
+
font-family: ${G(St)};
|
|
34
|
+
font-size: ${Oe}px;
|
|
35
|
+
font-weight: ${X(St)};
|
|
36
|
+
color: ${Ue};
|
|
37
|
+
text-align: center;
|
|
38
|
+
letter-spacing: ${Ie}px;
|
|
39
|
+
opacity: 0;
|
|
40
|
+
position: absolute;
|
|
41
|
+
transform: translate(-50%, -50%);
|
|
42
|
+
white-space: nowrap;
|
|
43
|
+
`;let tn=_t+20+((le=wt.animation_start_y_offset)!=null?le:-10);j.style.top=`${tn}px`,j.style.left="50%";let dt=Q(j);dt.element=j,dt.animationStartYOffset=(ce=wt.animation_start_y_offset)!=null?ce:-10,x.appendChild(j);let B=r==null?void 0:r.ui,Ht=((pe=r==null?void 0:r.gameplay)==null?void 0:pe.tuning)||{},en=(B==null?void 0:B.text)||((me=u.ui)==null?void 0:me.cta_hint)||"Continue the adventure!",vt=(B==null?void 0:B.font)||"brand.body",nn=(B==null?void 0:B.fontSize)||16,st=(de=r==null?void 0:r.render)==null?void 0:de.tint,an=typeof st=="string"?st:st?`#${st.toString(16).padStart(6,"0")}`:"#FFFFFF",sn=(ue=Ht.max_width)!=null?ue:y-h*2,on=(ye=Ht.line_height)!=null?ye:1.4,J=document.createElement("div");J.textContent=en,J.style.cssText=`
|
|
44
|
+
font-family: ${G(vt)};
|
|
45
|
+
font-size: ${nn}px;
|
|
46
|
+
font-weight: ${X(vt)};
|
|
47
|
+
color: ${an};
|
|
48
|
+
text-align: center;
|
|
49
|
+
opacity: 0;
|
|
50
|
+
position: absolute;
|
|
51
|
+
transform: translate(-50%, -50%);
|
|
52
|
+
max-width: ${sn}px;
|
|
53
|
+
line-height: ${on};
|
|
54
|
+
word-wrap: break-word;
|
|
55
|
+
`;let rn=(he=d.footer_offset_y)!=null?he:120;J.style.top=`${rn}px`,J.style.left="50%";let ut=Q(J);ut.element=J;let ln=((fe=r==null?void 0:r.render)==null?void 0:fe.alpha)!==void 0&&((ge=r==null?void 0:r.render)==null?void 0:ge.alpha)!==null?r.render.alpha:1;ut.targetAlpha=ln,x.appendChild(J);let P=((be=l==null?void 0:l.gameplay)==null?void 0:be.tuning)||{},F=l==null?void 0:l.ui,cn=(Te=P.button_width)!=null?Te:260,pn=(xe=P.button_height)!=null?xe:56,mn=(_e=P.button_radius)!=null?_e:16,dn=P.button_bg_color||((Ee=u.theme)==null?void 0:Ee.cta_background)||"#ffb43b",un=(we=P.button_bg_alpha)!=null?we:1,yn=P.button_border_color||"#ffffff",hn=(Se=P.button_border_width)!=null?Se:2,Qn=(He=P.button_border_alpha)!=null?He:.2,yt=(ve=d.cta_offset_y)!=null?ve:160,v=document.createElement("button");v.style.cssText=`
|
|
56
|
+
width: ${cn}px;
|
|
57
|
+
height: ${pn}px;
|
|
58
|
+
background: ${dn};
|
|
59
|
+
opacity: ${un};
|
|
60
|
+
border: ${hn}px solid ${yn};
|
|
61
|
+
border-radius: ${mn}px;
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
opacity: 0;
|
|
64
|
+
position: absolute;
|
|
65
|
+
transform: translate(-50%, -50%);
|
|
66
|
+
box-shadow: inset 0 0 1px rgba(0,0,0,0.15);
|
|
67
|
+
`,v.style.top=`${yt}px`,v.style.left="50%";let Rt=Q(v);Rt.element=v,x.appendChild(v);let fn=(F==null?void 0:F.text)||((Re=u.ui)==null?void 0:Re.cta_label_end)||"DOWNLOAD",Ct=(F==null?void 0:F.font)||"brand.heading",gn=(F==null?void 0:F.fontSize)||20,bn=P.button_text_color||((Ce=u.theme)==null?void 0:Ce.cta_text)||"#1a0a0a";v.textContent=fn,v.style.fontFamily=G(Ct),v.style.fontSize=`${gn}px`,v.style.fontWeight=String(X(Ct)),v.style.color=bn,v.style.letterSpacing=`${(Me=F==null?void 0:F.letterSpacing)!=null?Me:1}px`;let Mt=Q(v);Mt.element=v;let L=p==null?void 0:p.ui,$t=(($e=p==null?void 0:p.gameplay)==null?void 0:$e.tuning)||{},Tn=(L==null?void 0:L.text)||"Play the full game",At=(L==null?void 0:L.font)||"brand.body",xn=(L==null?void 0:L.fontSize)||11,_n=(Ae=L==null?void 0:L.letterSpacing)!=null?Ae:0,ot=(Fe=p==null?void 0:p.render)==null?void 0:Fe.tint,En=typeof ot=="string"?ot:ot?`#${ot.toString(16).padStart(6,"0")}`:"#CCCCCC",K=document.createElement("div");K.textContent=Tn,K.style.cssText=`
|
|
68
|
+
font-family: ${G(At)};
|
|
69
|
+
font-size: ${xn}px;
|
|
70
|
+
font-weight: ${X(At)};
|
|
71
|
+
color: ${En};
|
|
72
|
+
text-align: center;
|
|
73
|
+
letter-spacing: ${_n}px;
|
|
74
|
+
opacity: 0;
|
|
75
|
+
position: absolute;
|
|
76
|
+
transform: translate(-50%, -50%);
|
|
77
|
+
white-space: nowrap;
|
|
78
|
+
`;let wn=yt+35+((Le=$t.animation_start_y_offset)!=null?Le:5);K.style.top=`${wn}px`,K.style.left="50%";let ht=Q(K);ht.element=K,ht.animationStartYOffset=(De=$t.animation_start_y_offset)!=null?De:5,x.appendChild(K);let ft=((We=m==null?void 0:m.gameplay)==null?void 0:We.tuning)||{},Sn=(ke=ft.hand_offset_x)!=null?ke:50,Hn=(ze=ft.hand_offset_y)!=null?ze:50,vn=(Be=(Ye=m==null?void 0:m.transform)==null?void 0:Ye.scale)!=null?Be:.1875,Rn=(Pe=ft.hand_scale_multiplier)!=null?Pe:2.5,Cn=new U.SpriteMaterial({map:t||void 0,transparent:!0,alphaTest:.1}),et=new U.Sprite(Cn),Ft=vn*Rn*100;return et.scale.set(Ft,Ft,1),et.position.set(Sn,yt+Hn,0),et.material.opacity=0,et.visible=!1,{panel:M,logo:E,title:Et,subtitle:dt,footer:ut,ctaButton:Rt,ctaText:Mt,ctaHint:ht,hand:et}}function Wn(e,t,n){var R,x,M,W,H,C,D,k;let o=t.objects.get("ui_endgame_1"),a=((R=o==null?void 0:o.gameplay)==null?void 0:R.tuning)||{},s=(x=a.animation_duration_ms)!=null?x:800,i=(M=a.fade_in_duration_ms)!=null?M:600,r=(W=a.scale_animation_intensity)!=null?W:.1,l=(H=a.logo_animation_delay_ms)!=null?H:100,p=(C=a.title_animation_delay_ms)!=null?C:200,m=(D=a.footer_animation_delay_ms)!=null?D:300,u=(k=a.cta_animation_delay_ms)!=null?k:400,{panel:d,logo:c,title:y,subtitle:f,footer:h,ctaButton:w,ctaText:b,ctaHint:T}=e;d.visible=!0,d.element.style.visibility="visible";let g=Date.now(),_=()=>{let Z=Date.now()-g,q=Math.min(Z/i,1),E=1-Math.pow(1-q,3);d.alpha=E,d.element.style.opacity=E.toString();let z=1+r*(1-E);d.element.style.transform=`translate(-50%, -50%) scale(${z})`,q<1?requestAnimationFrame(_):(setTimeout(()=>kn(c,s,t),l),setTimeout(()=>{zn(y,s),setTimeout(()=>Yn(f,s),50)},p),setTimeout(()=>Bn(h,s),m),setTimeout(()=>{Pn(w,b,s),setTimeout(()=>Gn(T,s),50),n&&n()},u))};_()}function kn(e,t,n){var d,c,y,f,h;let o=n==null?void 0:n.objects.get("ui_endgame_logo_1"),s=(c=(((d=o==null?void 0:o.gameplay)==null?void 0:d.tuning)||{}).animation_start_scale)!=null?c:1.2,i=Date.now(),r=e.material.opacity,l=(y=e.targetAlpha)!=null?y:1,p=(f=e.baseScaleX)!=null?f:e.scale.x,m=(h=e.baseScaleY)!=null?h:e.scale.y,u=()=>{let w=Date.now()-i,b=Math.min(w/t,1),T=1-Math.pow(1-b,2);e.material.opacity=r+(l-r)*T;let g=s+(1-s)*T;e.scale.set(p*g,m*g,1),b<1&&requestAnimationFrame(u)};u()}function zn(e,t){let n=Date.now(),o=parseFloat(e.element.style.opacity||"0"),a=parseFloat(e.element.style.top||"0"),s=()=>{let i=Date.now()-n,r=Math.min(i/t,1),l=1-Math.pow(1-r,2);e.element.style.opacity=(o+(1-o)*l).toString(),e.element.style.top=`${a-20*(1-l)}px`,r<1&&requestAnimationFrame(s)};s()}function Yn(e,t){var r;let n=Date.now(),o=parseFloat(e.element.style.opacity||"0"),a=parseFloat(e.element.style.top||"0"),s=a-((r=e.animationStartYOffset)!=null?r:-10),i=()=>{let l=Date.now()-n,p=Math.min(l/t,1),m=1-Math.pow(1-p,2);e.element.style.opacity=(o+(1-o)*m).toString(),e.element.style.top=`${a+(s-a)*m}px`,p<1&&requestAnimationFrame(i)};i()}function Bn(e,t){var i;let n=Date.now(),o=parseFloat(e.element.style.opacity||"0"),a=(i=e.targetAlpha)!=null?i:1,s=()=>{let r=Date.now()-n,l=Math.min(r/t,1),p=1-Math.pow(1-l,2);e.element.style.opacity=(o+(a-o)*p).toString(),l<1&&requestAnimationFrame(s)};s()}function Pn(e,t,n){let o=Date.now(),a=parseFloat(e.element.style.opacity||"0"),s=()=>{let i=Date.now()-o,r=Math.min(i/n,1),l=1-Math.pow(1-r,2);e.element.style.opacity=(a+(1-a)*l).toString(),t.element.style.opacity=(a+(1-a)*l).toString(),e.element.style.transform=`translate(-50%, -50%) scale(${1+.1*(1-l)})`,r<1&&requestAnimationFrame(s)};s()}function Gn(e,t){var r;let n=Date.now(),o=parseFloat(e.element.style.opacity||"0"),a=parseFloat(e.element.style.top||"0"),s=a-((r=e.animationStartYOffset)!=null?r:5),i=()=>{let l=Date.now()-n,p=Math.min(l/t,1),m=1-Math.pow(1-p,2);e.element.style.opacity=(o+(1-o)*m).toString(),e.element.style.top=`${a+(s-a)*m}px`,p<1&&requestAnimationFrame(i)};i()}function Xn(e,t,n,o){var m,u,d,c;let a=n.objects.get("ui_endgame_hand_1"),s=((m=a==null?void 0:a.gameplay)==null?void 0:m.tuning)||{},i=(u=s.click_animation_duration_ms)!=null?u:600,r=(d=s.click_delay_ms)!=null?d:2e3,l=(c=s.click_repeat_delay_ms)!=null?c:3e3,p=()=>{var x,M;e.visible=!0,e.material.opacity=1;let y=e.position.x,f=e.position.y,h=(x=s.hand_offset_x)!=null?x:50,w=(M=s.hand_offset_y)!=null?M:50,b=t.element.getBoundingClientRect(),T=h,g=w,_=Date.now(),R=()=>{var E,z,N;let W=Date.now()-_,H=Math.min(W/i,1),C=H<.5?2*H*H:1-Math.pow(-2*H+2,2)/2;e.position.set(y+(T-y)*C,f+(g-f)*C,0);let D=(z=(E=a==null?void 0:a.transform)==null?void 0:E.scale)!=null?z:.1875,k=(N=s.hand_scale_multiplier)!=null?N:2.5,Z=D*k*100,q=Z+Z*.2*Math.sin(H*Math.PI);e.scale.set(q,q,1),H<1?requestAnimationFrame(R):(t.element.style.transform="translate(-50%, -50%) scale(0.95)",setTimeout(()=>{t.element.style.transform="translate(-50%, -50%) scale(1)",o()},100),setTimeout(()=>{e.material.opacity=0,setTimeout(()=>{e.position.set(y,f,0),p()},l)},500))};R()};setTimeout(p,r)}import*as mt from"three";function qn(e,t,n){var u,d,c,y;let o=t.objects.get("hand_tutorial_1"),a=((u=o==null?void 0:o.gameplay)==null?void 0:u.tuning)||{},s=(o==null?void 0:o.render)||{},i=(o==null?void 0:o.transform)||{},r=new mt.SpriteMaterial({map:e||void 0,transparent:!0,alphaTest:.1}),l=new mt.Sprite(r);l.position.set(n.x,n.y,0),l.material.opacity=0;let p=(d=a.hand_scale_multiplier)!=null?d:2.5,m=(c=i.scale)!=null?c:.1875;return l.scale.set(m*p*100,m*p*100,1),l.renderOrder=(y=s.z_index)!=null?y:99999,l}function Nn(e){var y,f,h,w,b,T,g,_,R;let t=e.objects.get("ui_tutorial_1"),n=t==null?void 0:t.ui,o=(t==null?void 0:t.render)||{},a=((y=e.engine.runtime)==null?void 0:y.ui_styles)||{},s=((f=e.engine.runtime)==null?void 0:f.ui)||{},i=(n==null?void 0:n.text)||s.tutorial_label||s.label_text||"CLEAN!",r=(n==null?void 0:n.font)||"brand.warning",l=(n==null?void 0:n.fontSize)||a.label_font_size||52,p=(w=n==null?void 0:n.letterSpacing)!=null?w:(h=a.label_letter_spacing)!=null?h:-1,m=(n==null?void 0:n.align)||"center",u=o.tint,d=typeof u=="string"?u:u?`#${u.toString(16).padStart(6,"0")}`:a.label_fill||"#FFF1C1",c=document.createElement("div");return c.textContent=i,c.style.cssText=`
|
|
79
|
+
font-family: ${G(r)};
|
|
80
|
+
font-size: ${l}px;
|
|
81
|
+
font-weight: ${X(r)};
|
|
82
|
+
color: ${d};
|
|
83
|
+
text-align: ${m};
|
|
84
|
+
letter-spacing: ${p}px;
|
|
85
|
+
text-shadow: ${(b=a.label_shadow_distance)!=null?b:2}px ${(T=a.label_shadow_distance)!=null?T:2}px ${(g=a.label_shadow_blur)!=null?g:4}px rgba(0,0,0,${(_=a.label_shadow_alpha)!=null?_:.8});
|
|
86
|
+
-webkit-text-stroke: ${a.label_stroke||"#8B0000"} 2px;
|
|
87
|
+
opacity: ${(R=o.alpha)!=null?R:0};
|
|
88
|
+
visibility: ${o.visible!==!1?"visible":"hidden"};
|
|
89
|
+
pointer-events: none;
|
|
90
|
+
position: absolute;
|
|
91
|
+
transform: translate(-50%, 0);
|
|
92
|
+
white-space: nowrap;
|
|
93
|
+
`,c}function Vn(e,t,n,o,a){var l,p,m,u,d,c,y;let s=a.objects.get("hand_tutorial_1"),i=((l=s==null?void 0:s.gameplay)==null?void 0:l.tuning)||{},r=(s==null?void 0:s.transform)||{};if(!o){let f=(p=i.animation_duration)!=null?p:1.5,h=n%f/f,w=h<.5?2*h*h:-1+(4-2*h)*h,b=(m=i.x_offset)!=null?m:0,T=(u=i.y_offset)!=null?u:0,g=(d=i.animation_range)!=null?d:40,_=g*.7,R=g,x=t.x+b+_,M=t.y+T+R,W=x+_,H=M+R;e.position.set(x+(W-x)*w,M+(H-M)*w,0);let C=(c=r.scale)!=null?c:.1875,D=(y=i.hand_scale_multiplier)!=null?y:2.5,k=C*D*100;e.scale.set(k,k,1)}}import*as tt from"three";var Ge=new tt.TextureLoader;async function Xe(e,t,n=16777215,o=!1){try{let s=(globalThis.INLINE_ASSETS||{})[e];return await Ge.loadAsync(s||e)}catch{console.warn(`Asset missing: ${e}. Using placeholder.`);let s=document.createElement("canvas");s.width=64,s.height=64;let i=s.getContext("2d");return i&&(i.fillStyle=`#${n.toString(16).padStart(6,"0")}`,o?i.fillRect(0,0,30,60):(i.beginPath(),i.arc(32,32,30,0,Math.PI*2),i.fill(),i.fillRect(27,32,10,40))),new tt.CanvasTexture(s)}}async function jn(e,t,n){var y,f,h,w;let a=(globalThis.INLINE_ASSETS||{})[e]||e,s;try{s=await Ge.loadAsync(a),console.log("[character] loaded sheet",{path:e,sourceUsed:a})}catch(b){let _=((n.gameplay.character_sheet||{}).fallback_color||"#ff00ff").replace("#","");s=await Xe(e,t,parseInt(_,16),!0),console.warn("[character] fallback loadAsset used",{path:e,err:b})}if(!s)return[];let i=n.gameplay.character_sheet||{},r=(y=i.cols)!=null?y:3,l=(f=i.rows)!=null?f:2,p=((h=s.image)==null?void 0:h.width)||0,m=((w=s.image)==null?void 0:w.height)||0,u=p/r,d=m/l;if(!Number.isFinite(u)||!Number.isFinite(d)||u<=0||d<=0)return[s];let c=[];for(let b=0;b<l;b++)for(let T=0;T<r;T++){let g=document.createElement("canvas");g.width=u,g.height=d;let _=g.getContext("2d");_&&s.image&&_.drawImage(s.image,T*u,b*d,u,d,0,0,u,d),c.push(new tt.CanvasTexture(g))}return c.length>2&&c.push(...c.slice(1,-1).reverse()),console.log("[character] frames prepared",{count:c.length}),c}function Jn(e,t){var u,d,c,y;let n=t.gameplay.brush||{},o=t.theme.brush_color||"#ffffff",a=(u=n.radius)!=null?u:20,s=(d=n.inner_radius)!=null?d:15,i=(c=n.alpha)!=null?c:.8,r=(y=n.inner_alpha)!=null?y:.3,l=n.inner_color||"#ffffff",p=document.createElement("canvas");p.width=a*2,p.height=a*2;let m=p.getContext("2d");return m&&(m.clearRect(0,0,p.width,p.height),m.beginPath(),m.arc(a,a,a,0,Math.PI*2),m.fillStyle=o,m.globalAlpha=i,m.fill(),m.beginPath(),m.arc(a,a,s,0,Math.PI*2),m.fillStyle=l,m.globalAlpha=r,m.fill()),new tt.CanvasTexture(p)}export{ct as GameObject,Tt as GameObjectManager,lt as Renderer,rt as Transform,Xn as animateHandClick,Wn as animatePanelEntrance,Jn as createBrushTexture,Dn as createEndGamePanel,qn as createHandTutorial,An as createThreeBase,Nn as createTutorialLabel,Ln as getRegisteredFontIds,Xe as loadAsset,jn as loadCharacterFrames,Fn as registerFont,G as resolveFont,X as resolveFontWeight,Vn as updateHandAnimation};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "handler-playable-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -15,10 +15,15 @@
|
|
|
15
15
|
"types": "./dist/pixi/index.d.ts",
|
|
16
16
|
"import": "./dist/pixi/index.mjs",
|
|
17
17
|
"require": "./dist/pixi/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./three": {
|
|
20
|
+
"types": "./dist/three/index.d.ts",
|
|
21
|
+
"import": "./dist/three/index.mjs",
|
|
22
|
+
"require": "./dist/three/index.js"
|
|
18
23
|
}
|
|
19
24
|
},
|
|
20
25
|
"scripts": {
|
|
21
|
-
"build": "tsup src/index.ts src/pixi/index.ts --format cjs,esm --dts --clean --minify",
|
|
26
|
+
"build": "tsup src/index.ts src/pixi/index.ts src/three/index.ts --format cjs,esm --dts --clean --minify",
|
|
22
27
|
"lint": "eslint 'src/**/*.{ts,tsx}'",
|
|
23
28
|
"typecheck": "tsc --noEmit",
|
|
24
29
|
"prepublishOnly": "npm run build"
|
|
@@ -38,16 +43,22 @@
|
|
|
38
43
|
"README.md"
|
|
39
44
|
],
|
|
40
45
|
"peerDependencies": {
|
|
41
|
-
"pixi.js": "^8.0.0"
|
|
46
|
+
"pixi.js": "^8.0.0",
|
|
47
|
+
"three": "^0.160.0"
|
|
42
48
|
},
|
|
43
49
|
"peerDependenciesMeta": {
|
|
44
50
|
"pixi.js": {
|
|
45
51
|
"optional": true
|
|
52
|
+
},
|
|
53
|
+
"three": {
|
|
54
|
+
"optional": true
|
|
46
55
|
}
|
|
47
56
|
},
|
|
48
57
|
"devDependencies": {
|
|
58
|
+
"@types/three": "^0.160.0",
|
|
49
59
|
"eslint": "^8.57.1",
|
|
50
60
|
"pixi.js": "^8.8.1",
|
|
61
|
+
"three": "^0.160.0",
|
|
51
62
|
"ts-node": "^10.9.2",
|
|
52
63
|
"tsup": "^8.4.0",
|
|
53
64
|
"typescript": "^5.7.2"
|
package/dist/chunk-CJIYY5BP.mjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
var u={};function I(e,t,n=!1){u[e]||(u[e]=[]),u[e].push({fn:t,once:n})}function V(e,t){if(u[e]){if(!t){delete u[e];return}u[e]=u[e].filter(n=>n.fn!==t)}}function P(e,...t){let n=u[e];if(n)for(let i of[...n])i.fn(...t),i.once&&V(e,i.fn)}function a(e,t){I(e,t,!0)}var R={name:"handler-playable-sdk",version:"0.1.0",description:"Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",main:"dist/index.js",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.js"},"./pixi":{types:"./dist/pixi/index.d.ts",import:"./dist/pixi/index.mjs",require:"./dist/pixi/index.js"}},scripts:{build:"tsup src/index.ts src/pixi/index.ts --format cjs,esm --dts --clean --minify",lint:"eslint 'src/**/*.{ts,tsx}'",typecheck:"tsc --noEmit",prepublishOnly:"npm run build"},author:"Handler",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/HandlerAIGames/handler-playable-sdk.git"},files:["dist","LICENSE","README.md"],peerDependencies:{"pixi.js":"^8.0.0"},peerDependenciesMeta:{"pixi.js":{optional:!0}},devDependencies:{eslint:"^8.57.1","pixi.js":"^8.8.1","ts-node":"^10.9.2",tsup:"^8.4.0",typescript:"^5.7.2"}};var s=0,Se=s++,Z=s++,ee=s++,te=s++,ne=s++,ie=s++,oe=s++,re=s++,ae=s++,se=s++,de=s++,le=s++,r=Se;function ce(){return r===Z}function ue(){return r===ee}function fe(){return r===te}function pe(){return r===ne}function g(){return r===ie}function y(){return r===oe}function me(){return r===re}function ge(){return r===ae}function ye(){return r===se}function H(){return r===de}function F(){return r===le}function we(){let e=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none",t=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed";if(e==="mraid")try{mraid.getState(),r=Z;return}catch{}else if(e==="dapi")try{dapi.isReady(),r=ee;return}catch{}if(t==="facebook")try{typeof FbPlayableAd!="undefined"&&(r=te)}catch{}else if(t==="google")try{typeof ExitApi!="undefined"&&(r=ne)}catch{}else if(t==="mintegral")window.gameReady&&(r=ie);else if(t==="tapjoy")window.TJ_API&&(r=oe);else if(t==="tiktok")window.openAppStore&&(r=re);else if(t==="smadex")try{window.smxTracking&&(r=ae)}catch{}else if(t==="snapchat")try{window.ScPlayableAd&&(r=se)}catch{}else t==="vungle"?r=de:(e==="nucleo"||t==="nucleo")&&(r=le)}var Ee={mechanic_id:"TODO_mechanic_id",variant_id:"TODO_variant_id",deployment_id:"TODO_deployment_id",export_id:"TODO_export_id",profile_id:"TODO_profile_id",instance_id:"default"},Ce=Math.random().toString(36).slice(2),w=null,A={...Ee},Ae="web_embed",De={},G=!1,E=!1,T=!1,ke=!1,B=1,W=0,z=!1,d=!1,j="",b=Math.floor(window.innerWidth),h=Math.floor(window.innerHeight),K=b>h,l=!1,k=!1,be=!1,he=!1,U=!1,M=null;function _e(){if(w)return w;let e=document.createElement("div");return e.id="handler-root",e.setAttribute("data-handler-root","true"),document.body.appendChild(e),w=e,e}function N(e){switch(e){case"interaction":return"engagement";case"finish":return"complete";case"install":return"cta_click";default:return e}}function Te(e,t){return{event_name:e,ts:Date.now(),session_id:Ce,deployment_id:A.deployment_id,variant_id:A.variant_id,export_profile_id:A.profile_id,instance_id:A.instance_id||"default",env:Ae==="mraid"?"mraid":"web",payload:t}}function o(e,t){let n=N(e),i=Te(n,t);P(n,i),n!==e&&P(e,i)}function O(){M&&(M(b,h),M=null)}function _(e){B=e,o("volume",e)}function v(e){e&&(ke=!0),!T&&(T=!0,o("pause"),_(0))}function S(e){!e&&ke||T&&(T=!1,o("resume"),_(B))}function p(e,t){b=Math.floor(e||window.innerWidth),h=Math.floor(t||window.innerHeight),K=b>h,o("resize",{width:b,height:h})}function Le(){if(ce())try{let e=mraid.getMaxSize();p(e.width,e.height);let t=()=>{mraid.isViewable()&&mraid.getState()!=="hidden"?S():v()};if(mraid.addEventListener("viewableChange",t),mraid.addEventListener("stateChange",t),mraid.addEventListener("sizeChange",()=>{let n=mraid.getMaxSize();p(n.width,n.height)}),mraid.getAudioVolume){let n=mraid.getAudioVolume();_(n?1:0)}if(mraid.addEventListener("audioVolumeChange",n=>{n!==null&&_(n>0?1:0)}),mraid.addEventListener("error",(n,i)=>{console.warn("mraid error:",n,"action:",i)}),z=!0,mraid.isViewable()&&mraid.getState()!=="hidden")l=!0,o("boot"),o("view"),o("ready"),d=!0,O();else{let n=()=>{l=!0,o("boot"),o("view"),o("ready"),d=!0,O()};mraid.addEventListener("ready",n)}}catch(e){console.warn("MRAID hook skipped",e)}}function Ie(){if(ue())try{let e=dapi.getScreenSize();p(e.width,e.height),dapi.addEventListener("viewableChange",n=>{n.isViewable?S():v()}),dapi.addEventListener("adResized",n=>{let i=dapi.getScreenSize();p(n.width||i.width,n.height||i.height)});let t=dapi.getAudioVolume();if(_(t?1:0),dapi.addEventListener("audioVolumeChange",n=>_(n?1:0)),z=!0,dapi.isViewable())l=!0,o("boot"),o("view"),o("ready"),d=!0,O();else{let n=()=>{l=!0,o("boot"),o("view"),o("ready"),d=!0,O()};dapi.addEventListener("ready",n)}}catch(e){console.warn("DAPI hook skipped",e)}}function ve(){let e=()=>{l||document.visibilityState==="visible"&&(document.readyState==="complete"||document.readyState==="interactive")&&(l=!0,o("boot"),o("view"),o("ready"),d=!0,O(),k&&(k=!1,f.start()))};window.addEventListener("resize",()=>p()),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"?(S(),e()):v()}),document.readyState==="complete"||document.readyState==="interactive"?e():window.addEventListener("load",e),z=!0}function Pe(){let e=t=>{typeof TouchEvent!="undefined"&&t instanceof TouchEvent&&(be=!0),!(be&&t instanceof MouseEvent)&&(W+=1,o("interaction",W))};document.addEventListener("mousedown",e),document.addEventListener("touchstart",e)}function Re(e){var i,c,x,C,J,D,q,L,$,X,Y,Q;let t=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none";if((typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed")==="google")try{(i=window.ExitApi)==null||i.exit();return}catch{}if(t==="mraid"&&typeof mraid!="undefined")mraid.open(e||"");else if(t==="dapi"&&typeof dapi!="undefined")dapi.openStoreUrl();else if(y())(x=(c=window.TJ_API)==null?void 0:c.click)==null||x.call(c);else if(fe())(J=(C=window.FbPlayableAd)==null?void 0:C.onCTAClick)==null||J.call(C);else if(ye())(q=(D=window.ScPlayableAd)==null?void 0:D.onCTAClick)==null||q.call(D);else if(ge())try{($=(L=window.smxTracking)==null?void 0:L.redirect)==null||$.call(L)}catch(m){console.warn("Smadex redirect failed",m)}else if(pe()){let m=window.ExitApi;m&&typeof m.exit=="function"?m.exit(e||j||""):e&&window.open(e)}else g()?(X=window.install)==null||X.call(window):me()?(Y=window.openAppStore)==null||Y.call(window):H()?(Q=parent==null?void 0:parent.postMessage)==null||Q.call(parent,"download","*"):e&&window.open(e)}function Me(){let e=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed",t=n=>{if(!n)return;let i=new Image;i.src=n};if(e==="bigabid"){let n=window.BIGABID_BIDTIMEMACROS;if(!n)return;a("view",()=>t(n.mraid_viewable)),a("start",()=>t(n.game_viewable)),a("engagement",()=>t(n.engagement));let i=()=>t(n.complete);a("complete",i),I("engagement",c=>{var x;((x=c==null?void 0:c.payload)==null?void 0:x.count)>3&&i()}),a("cta_click",()=>t(n.click))}else if(e==="inmobi"){let n=window.INMOBI_DSPMACROS;if(!n)return;a("view",()=>t(n.Ad_Load_Start)),a("start",()=>t(n.Ad_Viewable)),a("engagement",()=>t(n.First_Engagement)),a("complete",()=>t(n.Gameplay_Complete)),a("cta_click",()=>t(n.DSP_Click)),a("start",()=>{[5,10,15,20,25,30].forEach(i=>setTimeout(()=>t(n[`Spent_${i}_Seconds`]),i*1e3))})}}function Ne(){if(!y())return;let e=window.TJ_API;e&&e.setPlayableAPI&&e.setPlayableAPI({skipAd:()=>{try{f.finish()}catch(t){console.warn("Tapjoy skip failed",t)}}})}function xe(){var t,n,i;let e=window.TJ_API;(t=e==null?void 0:e.objectiveComplete)==null||t.call(e),(n=e==null?void 0:e.playableFinished)==null||n.call(e),(i=e==null?void 0:e.gameplayFinished)==null||i.call(e)}function je(){g()&&(window.mintGameStart=()=>{S(!0),p()},window.mintGameClose=()=>{v(!0)})}function ze(){if(!F())return;let e=window.NUC;!e||!e.trigger||(f.on("cta_click",()=>{var t,n;return(n=(t=e.trigger).convert)==null?void 0:n.call(t,j)}),f.on("complete",()=>{var t,n;return(n=(t=e.trigger).tryAgain)==null?void 0:n.call(t)}))}var f={init(e={},t){if(Ae=e.profile||"web_embed",De=e.consent||{},A={...Ee,...e.ids||{}},w=e.rootEl||w,j=e.destinationUrl||(/android/i.test(navigator.userAgent)?"https://play.google.com/store":"https://www.apple.com/app-store/"),t&&(M=t),o("init"),document.body.oncontextmenu=()=>!1,_e(),Ve(w),we(),Le(),Ie(),!z){if(document.readyState==="complete")ve();else if(!he){he=!0;let n=()=>{ve(),window.removeEventListener("load",n),document.removeEventListener("DOMContentLoaded",n)};window.addEventListener("load",n),document.addEventListener("DOMContentLoaded",n)}}Pe(),Me(),Ne(),je(),ze(),console.log(`%c @handler/playable-sdk %c v${R.version||"0.0.0"} `,"background: #007acc; color: #fff; font-size: 14px; padding: 4px 8px; border-top-left-radius: 4px; border-bottom-left-radius: 4px;","background: #e1e4e8; color: #333; font-size: 14px; padding: 4px 8px; border-top-right-radius: 4px; border-bottom-right-radius: 4px;"),l&&!d&&(o("boot"),o("view"),o("ready"),k&&(k=!1,f.start()),d=!0),d=l},getRoot(){return _e()},get version(){return R.version||"0.0.0"},get maxWidth(){return b},get maxHeight(){return h},get isLandscape(){return K},get isReady(){return d},get isStarted(){return G},get isPaused(){return T},get isFinished(){return E},get volume(){return B},get interactions(){return W},on(e,t){I(N(e),t)},off(e,t){V(N(e),t)},start(){var e,t;if(!G){if(!l){k=!0;return}if(G=!0,o("start"),p(),g())v(),(e=window.gameReady)==null||e.call(window);else if(y()){let n=window.TJ_API;(t=n==null?void 0:n.setPlayableBuild)==null||t.call(n,{orientation:K?"landscape":"portrait",buildID:R.version||"dev"})}}},finish(){var e,t;E||(E=!0,o("complete"),g()?(e=window.gameEnd)==null||e.call(window):H()?(t=parent==null?void 0:parent.postMessage)==null||t.call(parent,"complete","*"):y()&&xe())},install(e){if(!E){E=!0,y()?(xe(),setTimeout(()=>f.install(e),300)):(o("complete"),setTimeout(()=>f.install(e),0));return}U||(U=!0,setTimeout(()=>U=!1,500),o("cta_click"),o("conversion"),Re(e||j))},emit(e,t){let n=N(e);if(!["view","boot","start","engagement","complete","cta_click","conversion","retry","pause","resume","resize","volume","error"].includes(n)&&!n.startsWith("custom."))throw new Error(`Event ${e} must be canonical or namespaced as custom.<mechanic_id>.<event>`);let i=Te(n,t);P(n,i)},retry(){var e,t,n;if(g())(e=window.gameRetry)==null||e.call(window);else if(F()){let i=window.NUC;(n=(t=i==null?void 0:i.trigger)==null?void 0:t.tryAgain)==null||n.call(t)}o("engagement",{action:"retry"})},pause(){v(!0)},resume(){S(!0)},resize(e,t){p(e,t)}},Be=f;function Ve(e){let t=document.createElement("script");t.type="text/javascript",t.textContent=`
|
|
2
|
-
(function(){
|
|
3
|
-
var events = ['touchstart','touchend','mousedown','keydown'];
|
|
4
|
-
function unlock(){
|
|
5
|
-
if(window.AudioContext && AudioContext.prototype.resume){
|
|
6
|
-
if(!window.__handler_audio_ctx){
|
|
7
|
-
window.__handler_audio_ctx = new AudioContext();
|
|
8
|
-
}
|
|
9
|
-
if(window.__handler_audio_ctx.state === 'suspended'){
|
|
10
|
-
window.__handler_audio_ctx.resume();
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
events.forEach(function(e){ document.removeEventListener(e, unlock); });
|
|
14
|
-
}
|
|
15
|
-
events.forEach(function(e){ document.addEventListener(e, unlock, false); });
|
|
16
|
-
})();
|
|
17
|
-
`,e.appendChild(t)}export{f as a,Be as b};
|