handler-playable-sdk 1.0.56 → 1.0.57
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-GQFFLZYV.js → chunk-UQJMU5JM.js} +64 -64
- package/dist/cli/brand-dna.mjs +1 -1
- package/dist/cli/canva-import.mjs +1 -1
- package/dist/cli/cleanup-assets.mjs +1 -1
- package/dist/cli/fix-scales.mjs +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/screen-helper.mjs +1 -1
- package/dist/cli/setup-library.mjs +1 -1
- package/dist/cli/student-helper/add-logic.mjs +1 -1
- package/dist/cli/student-helper/add-object.mjs +1 -1
- package/dist/cli/student-helper/arg-parsing.mjs +1 -1
- package/dist/cli/student-helper/asset-registry.mjs +1 -1
- package/dist/cli/student-helper/bullet-system.mjs +1 -1
- package/dist/cli/student-helper/collectable-system.mjs +1 -1
- package/dist/cli/student-helper/constants.mjs +1 -1
- package/dist/cli/student-helper/drag-snap-couples.mjs +1 -1
- package/dist/cli/student-helper/endgame-screen.mjs +1 -1
- package/dist/cli/student-helper/fs-io.mjs +1 -1
- package/dist/cli/student-helper/logic-defaults.mjs +1 -1
- package/dist/cli/student-helper/print-help.mjs +1 -1
- package/dist/cli/student-helper/prompts.mjs +1 -1
- package/dist/cli/student-helper/scratch-card.mjs +1 -1
- package/dist/cli/student-helper/screen-utils.mjs +1 -1
- package/dist/cli/student-helper/snippets.mjs +1 -1
- package/dist/cli/student-helper/start-screen.mjs +1 -1
- package/dist/cli/student-helper/swerve-collect.mjs +1 -1
- package/dist/cli/student-helper/tap-destroy.mjs +1 -1
- package/dist/cli/student-helper/template-packs.mjs +1 -1
- package/dist/cli/student-helper.mjs +1 -1
- package/dist/cli/sync-screens.mjs +1 -1
- package/dist/cli/validate-assets.mjs +1 -1
- package/dist/cli/validate.mjs +1 -1
- package/dist/index.cjs +92 -92
- package/dist/index.js +1 -1
- package/dist/pixi/index.cjs +6 -6
- package/dist/pixi/index.js +1 -1
- package/dist/three/index.cjs +1 -1
- package/dist/three/index.js +1 -1
- package/package.json +1 -1
package/dist/pixi/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x54879e,_0x38a245){var a0_0x379599={_0x8fdbb5:0x380,_0x40f222:0x383,_0x157c18:0x6e,_0xa0bf75:0x6c,_0x444cf6:0x38b,_0x52aec3:0x387,_0x2cbbd2:'!s01',_0x4b567b:0x386,_0x468d06:0x398,_0x12fe1e:0x419,_0x6af785:'qBm[',_0x3bc1c9:0x412,_0x89b573:0x63,_0x198796:0x5f,_0x110fe7:0x6d,_0x4f6c0c:0x76,_0x4d56a2:'lOcs',_0x2fb92b:0x378,_0x309b0d:0x36a,_0x1b7ecd:0x36b,_0x482d05:'Sj%J',_0x241112:0x381,_0x13835c:0x399,_0x32bb29:0x392,_0x30b191:0x394,_0x575df4:0x396,_0x39973d:0x39b,_0x193a09:'^SBQ',_0x57eca3:0x368,_0x381c73:0x37f,_0x4c30a0:0x377},a0_0x16524b={_0x1dbddf:0x2eb},a0_0x589e9e={_0x5a5bc4:0x254},a0_0xc90079={_0x4c9477:0xbe};function _0x879854(_0x30ca30,_0x44ddfa,_0x38378e,_0x12ff69,_0x96397e){return a0_0x25ee(_0x12ff69- -a0_0xc90079._0x4c9477,_0x30ca30);}function _0x586f29(_0x500141,_0x5d7e88,_0x3ac7a4,_0x2e849f,_0x50805e){return a0_0x25ee(_0x50805e-a0_0x589e9e._0x5a5bc4,_0x500141);}var _0x589328=_0x54879e();function _0x437680(_0x43cb6e,_0x5a1c23,_0x163d26,_0x4daeb4,_0x23b857){return a0_0x25ee(_0x23b857-a0_0x16524b._0x1dbddf,_0x163d26);}while(!![]){try{var _0x5af3f8=parseInt(_0x586f29('knM&',a0_0x379599._0x8fdbb5,0x37d,0x37b,a0_0x379599._0x40f222))/(0x208*-0x5+0x15d2+0xba9*-0x1)*(parseInt(_0x879854('maG%',0x72,a0_0x379599._0x157c18,a0_0x379599._0xa0bf75,0x5e))/(0xe2*0xb+0x17*0x151+-0x27fb))+parseInt(_0x586f29('5mco',a0_0x379599._0x444cf6,0x37e,0x391,a0_0x379599._0x52aec3))/(0x32b*-0xb+-0x1*-0x26dd+-0x19*0x29)+parseInt(_0x586f29(a0_0x379599._0x2cbbd2,a0_0x379599._0x4b567b,0x399,a0_0x379599._0x468d06,0x391))/(0xcc7+-0xa3*0x36+0x159f)+parseInt(_0x437680(a0_0x379599._0x12fe1e,0x417,a0_0x379599._0x6af785,0x41b,a0_0x379599._0x3bc1c9))/(-0x85*0x1d+0x6e+0x4*0x3aa)*(-parseInt(_0x879854('NnY6',a0_0x379599._0x89b573,a0_0x379599._0x198796,a0_0x379599._0x110fe7,a0_0x379599._0x4f6c0c))/(0xa11+0x13ed+-0x38*0x89))+-parseInt(_0x586f29(a0_0x379599._0x4d56a2,a0_0x379599._0x2fb92b,a0_0x379599._0x309b0d,a0_0x379599._0x1b7ecd,0x378))/(-0x18de+0x23ea+0x1f*-0x5b)+-parseInt(_0x586f29(a0_0x379599._0x482d05,a0_0x379599._0x241112,a0_0x379599._0x468d06,a0_0x379599._0x13835c,0x38c))/(0x3*0x430+0x3*0xc0e+-0x30b2)*(-parseInt(_0x586f29('VnFC',0x394,0x39b,a0_0x379599._0x32bb29,a0_0x379599._0x32bb29))/(-0x7*-0x2e8+0x1231*-0x1+-0x21e))+parseInt(_0x586f29(a0_0x379599._0x2cbbd2,a0_0x379599._0x30b191,a0_0x379599._0x575df4,a0_0x379599._0x39973d,0x38e))/(0x1*-0x251e+-0xfb6+0x2*0x1a6f)*(-parseInt(_0x586f29(a0_0x379599._0x193a09,a0_0x379599._0x57eca3,a0_0x379599._0x241112,a0_0x379599._0x381c73,a0_0x379599._0x4c30a0))/(-0x2b3*0x9+-0xd*-0x204+-0x1de));if(_0x5af3f8===_0x38a245)break;else _0x589328['push'](_0x589328['shift']());}catch(_0x2ffd3b){_0x589328['push'](_0x589328['shift']());}}}(a0_0x238a,0xce005+0x14d4c+-0x197*0x440));var a0_0x205659=(function(){var a0_0x3a22f2={_0x4b6903:0x87,_0x14f68c:0x97,_0x1133c1:0x8b,_0x34db9a:'F3xI'},_0x34fd85=!![];return function(_0x11b16c,_0x387ca5){var a0_0x165dd3={_0x56ad70:0x1b1},_0x5dac70=_0x34fd85?function(){function _0x4fc80a(_0x19a546,_0x4c0a7c,_0x553e2a,_0x277575,_0x3e7d5d){return a0_0x25ee(_0x553e2a- -a0_0x165dd3._0x56ad70,_0x3e7d5d);}if(_0x387ca5){var _0x190ca1=_0x387ca5[_0x4fc80a(-a0_0x3a22f2._0x4b6903,-a0_0x3a22f2._0x14f68c,-0x8f,-a0_0x3a22f2._0x1133c1,a0_0x3a22f2._0x34db9a)](_0x11b16c,arguments);return _0x387ca5=null,_0x190ca1;}}:function(){};return _0x34fd85=![],_0x5dac70;};}()),a0_0x383b73=a0_0x205659(this,function(){var a0_0x1aafe7={_0x41dd06:0x2a3,_0x613e8c:0x2be,_0x159998:'&s]1',_0x1cd193:0x2bd,_0xe9281:0x2bf,_0x58893e:0x2bc,_0x165cc3:'&VC%',_0x3e7546:0x2c2,_0x350468:0x2bf,_0x97d4ef:'Qf&H',_0x39ae71:0x2c9,_0x1d8d79:0x2a9,_0x2b3272:']V5b',_0x3afe56:0x2b5,_0x3497e7:0x2b2,_0x12133c:0x4d1,_0x2fabfa:0x4d6,_0x852e76:0x4d3,_0xe0b519:0x2b9,_0x4e4c81:0x2c3,_0x17e1a4:0x2bf,_0xa8237c:0x2c5,_0x51d197:'2MuJ',_0x219581:0x4ca,_0x458d67:'3X35',_0x2445ed:0x2bb,_0x5a4f5e:0x4c5,_0x204682:0x4d4},a0_0x3a9bdf={_0x272ef3:0x189},a0_0x13369b={_0x2455e8:0x375},_0x31afc1={};function _0x4942d9(_0x2b5046,_0x39d27d,_0x30dc1d,_0x2c87da,_0x241b25){return a0_0x25ee(_0x2c87da- -a0_0x13369b._0x2455e8,_0x39d27d);}function _0xaf94f1(_0x2e1d29,_0x20e2eb,_0x9565e3,_0x575de7,_0x3dbb98){return a0_0x25ee(_0x3dbb98-a0_0x3a9bdf._0x272ef3,_0x9565e3);}_0x31afc1[_0xaf94f1(a0_0x1aafe7._0x41dd06,a0_0x1aafe7._0x613e8c,a0_0x1aafe7._0x159998,a0_0x1aafe7._0x1cd193,0x2b1)]='(((.+'+')+)+)'+'+$';var _0x34a886=_0x31afc1;function _0x2db2be(_0x47f66d,_0x13dcff,_0x4dda32,_0x19a78c,_0x3dc3fd){return a0_0x25ee(_0x4dda32-0x39f,_0x47f66d);}return a0_0x383b73[_0xaf94f1(a0_0x1aafe7._0xe9281,a0_0x1aafe7._0x58893e,a0_0x1aafe7._0x165cc3,0x2bd,a0_0x1aafe7._0x3e7546)+'ing']()[_0xaf94f1(a0_0x1aafe7._0x350468,0x2ab,a0_0x1aafe7._0x97d4ef,a0_0x1aafe7._0x39ae71,0x2ba)+'h'](_0x34a886['Tinar'])[_0xaf94f1(a0_0x1aafe7._0x1d8d79,0x2b6,a0_0x1aafe7._0x2b3272,a0_0x1aafe7._0x3afe56,a0_0x1aafe7._0x3497e7)+_0x2db2be('5mco',a0_0x1aafe7._0x12133c,a0_0x1aafe7._0x2fabfa,0x4d0,a0_0x1aafe7._0x852e76)]()[_0xaf94f1(a0_0x1aafe7._0xe0b519,a0_0x1aafe7._0x4e4c81,'NnY6',a0_0x1aafe7._0x17e1a4,a0_0x1aafe7._0xa8237c)+_0x2db2be(a0_0x1aafe7._0x51d197,0x4c6,0x4d5,0x4e2,a0_0x1aafe7._0x219581)+'r'](a0_0x383b73)[_0xaf94f1(0x2ac,0x2c5,a0_0x1aafe7._0x458d67,a0_0x1aafe7._0x2445ed,a0_0x1aafe7._0xe0b519)+'h'](_0x34a886[_0x2db2be(a0_0x1aafe7._0x458d67,a0_0x1aafe7._0x5a4f5e,a0_0x1aafe7._0x204682,0x4c8,0x4d9)]);});a0_0x383b73();import{A as a0_0x19876b,B as a0_0x37718e,C as a0_0x198e73,D as a0_0x36e533,b as a0_0x3c1aff,c as a0_0x46cb4b,d as a0_0x19538a,e as a0_0x166f34,f as a0_0x74efd0,g as a0_0x3271c0,h as a0_0x10515b,i as a0_0x12bd7c,j as a0_0x18851d,k as a0_0xa0df21,l as a0_0x5a766f,m as a0_0x5737b0,n as a0_0x295218,o as a0_0x45ad4b,p as a0_0x2425d5,q as a0_0x494d7b,r as a0_0x120cf4,s as a0_0x2252e6,t as a0_0x3207a9,u as a0_0xad8453,v as a0_0x5d7975,w as a0_0x266f74,x as a0_0xc3f952,y as a0_0x24df67,z as a0_0x80c34a}from'../chunk-GQFFLZYV.js';import{a as a0_0x23209a,b as a0_0x6ce739,c as a0_0x29b47b,d as a0_0x5e115f,e as a0_0x3c6d87}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';function a0_0x25ee(_0x527e5b,_0x5f1fce){_0x527e5b=_0x527e5b-(0x3*-0x7fb+0x1f5f+-0x64c);var _0x59c502=a0_0x238a();var _0x4cbb1d=_0x59c502[_0x527e5b];if(a0_0x25ee['WeqzSm']===undefined){var _0x318a5c=function(_0x5b9755){var _0x17686f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x40deb0='',_0x1711ff='',_0x2926bd=_0x40deb0+_0x318a5c;for(var _0x1d4ce7=0x3*-0x2aa+-0x235*0x11+-0x1*-0x2d83,_0x3036e2,_0x3469d1,_0x13e72e=-0x1*0x1439+-0x612*-0x6+0x179*-0xb;_0x3469d1=_0x5b9755['charAt'](_0x13e72e++);~_0x3469d1&&(_0x3036e2=_0x1d4ce7%(-0x1*-0x20c1+-0x1551+-0xb6c)?_0x3036e2*(-0x1fd0+-0x28+0x2038)+_0x3469d1:_0x3469d1,_0x1d4ce7++%(0x371*-0x3+0x31c*-0x8+-0x2337*-0x1))?_0x40deb0+=_0x2926bd['charCodeAt'](_0x13e72e+(0x5d*0x15+0x19b*0x1+-0x16*0x6b))-(-0x139d+0x1590+-0x1e9)!==-0x5ba+0x233e+-0x2*0xec2?String['fromCharCode'](-0xa*0x1+0x2099+-0x1f90&_0x3036e2>>(-(-0x384+0x20b*0xf+-0x1b1f)*_0x1d4ce7&0x1561+0x1119*-0x1+-0x442)):_0x1d4ce7:-0x461*-0x2+-0x1fc2+0x1700){_0x3469d1=_0x17686f['indexOf'](_0x3469d1);}for(var _0xb6b75f=-0x4f*-0x1b+-0x11*-0x1d3+-0x2758,_0x336fe8=_0x40deb0['length'];_0xb6b75f<_0x336fe8;_0xb6b75f++){_0x1711ff+='%'+('00'+_0x40deb0['charCodeAt'](_0xb6b75f)['toString'](0x10c2+0x2268+-0x1a6*0x1f))['slice'](-(-0x123f+-0x2702+0x3943));}return decodeURIComponent(_0x1711ff);};var _0x3f4883=function(_0x37a1b5,_0x3bf923){var _0x480284=[],_0x3bb4ae=-0xc1f+-0x13*-0x1cd+0x8*-0x2c3,_0x219734,_0x428cf3='';_0x37a1b5=_0x318a5c(_0x37a1b5);var _0x1a29f9;for(_0x1a29f9=0x12ee+-0x1252+-0x1a*0x6;_0x1a29f9<-0x17b8+0x21c*-0x9+0x2bb4;_0x1a29f9++){_0x480284[_0x1a29f9]=_0x1a29f9;}for(_0x1a29f9=-0x481*-0x4+-0x975+-0x88f*0x1;_0x1a29f9<0x2583+-0x795+-0x1cee;_0x1a29f9++){_0x3bb4ae=(_0x3bb4ae+_0x480284[_0x1a29f9]+_0x3bf923['charCodeAt'](_0x1a29f9%_0x3bf923['length']))%(-0xa4b+0x19*-0x157+-0xea*-0x31),_0x219734=_0x480284[_0x1a29f9],_0x480284[_0x1a29f9]=_0x480284[_0x3bb4ae],_0x480284[_0x3bb4ae]=_0x219734;}_0x1a29f9=0x735+0x1*0x25ad+-0x2ce2,_0x3bb4ae=-0x6e*-0x50+0x221f+0x16d5*-0x3;for(var _0x1155d4=0x2409+0x655*-0x4+-0xab5;_0x1155d4<_0x37a1b5['length'];_0x1155d4++){_0x1a29f9=(_0x1a29f9+(0x1c6*0x14+-0xf0e+-0x1*0x1469))%(-0x1*-0x1822+0xa1f+-0x2141),_0x3bb4ae=(_0x3bb4ae+_0x480284[_0x1a29f9])%(-0x1*0x1fbb+-0x1*-0x1e95+0x226),_0x219734=_0x480284[_0x1a29f9],_0x480284[_0x1a29f9]=_0x480284[_0x3bb4ae],_0x480284[_0x3bb4ae]=_0x219734,_0x428cf3+=String['fromCharCode'](_0x37a1b5['charCodeAt'](_0x1155d4)^_0x480284[(_0x480284[_0x1a29f9]+_0x480284[_0x3bb4ae])%(0x1e59+-0x1*0x2209+0x4b0)]);}return _0x428cf3;};a0_0x25ee['iocNev']=_0x3f4883,a0_0x25ee['OADXBu']={},a0_0x25ee['WeqzSm']=!![];}var _0x2b6f23=_0x59c502[-0xeaf*-0x1+-0x239*0xd+-0xd6*-0x11],_0x3484ae=_0x527e5b+_0x2b6f23,_0x1a8cd7=a0_0x25ee['OADXBu'][_0x3484ae];if(!_0x1a8cd7){if(a0_0x25ee['lBexvy']===undefined){var _0x5b853a=function(_0x23a672){this['dfnQbk']=_0x23a672,this['APgKor']=[0xa3*0x22+0x1f26*0x1+-0x34cb,-0x2301+0x25b5*-0x1+-0x1*-0x48b6,-0x126b+0x116*-0x10+-0x4d*-0x77],this['tysGRU']=function(){return'newState';},this['fkxqRM']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['hIEAey']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x5b853a['prototype']['qmReUo']=function(){var _0x993840=new RegExp(this['fkxqRM']+this['hIEAey']),_0x444939=_0x993840['test'](this['tysGRU']['toString']())?--this['APgKor'][0xc5*-0x2+-0x3*-0xa63+-0xecf*0x2]:--this['APgKor'][-0x2361*-0x1+-0xc9*-0x16+-0x34a7];return this['BHWSrn'](_0x444939);},_0x5b853a['prototype']['BHWSrn']=function(_0x4261ea){if(!Boolean(~_0x4261ea))return _0x4261ea;return this['hQlVTB'](this['dfnQbk']);},_0x5b853a['prototype']['hQlVTB']=function(_0x3f05cd){for(var _0x5bd33d=0x208*-0x5+0x15d2+0xbaa*-0x1,_0x3d6d66=this['APgKor']['length'];_0x5bd33d<_0x3d6d66;_0x5bd33d++){this['APgKor']['push'](Math['round'](Math['random']())),_0x3d6d66=this['APgKor']['length'];}return _0x3f05cd(this['APgKor'][0xe2*0xb+0x17*0x151+-0x27fd]);},new _0x5b853a(a0_0x25ee)['qmReUo'](),a0_0x25ee['lBexvy']=!![];}_0x4cbb1d=a0_0x25ee['iocNev'](_0x4cbb1d,_0x5f1fce),a0_0x25ee['OADXBu'][_0x3484ae]=_0x4cbb1d;}else _0x4cbb1d=_0x1a8cd7;return _0x4cbb1d;}import'../chunk-JXBG6UFL.js';function a0_0x238a(){var _0x105651=['nmocrxZdUSoIW5XUW7v2g33cLa','evJcKZtcKCoeArzijSoH','W6/dN1BcLZC','WOr7kceD','WPalW6HkWOPkFW','oSkGWPNdUI7cV1mcW7r8','WPLnWRmlW5TpBSkYASoiWRC','WQi9W5JcNx3dRCkpWRJcQxzmWO0','zSkgW7pdKIFcTuRdVZRcI33cRmoW','W4ewW6uxWRFcO8oVW7lcMmoGECor','WOCgESoGWQ4','W53dLCkPW6lcKG','yLpdKM7dQmo6BWnVWOW','W4RcPwpcJSo+lLmcpfSIW6FcRW','WP3cPd3dJ8o2DSkT','WQakDCoZWR8','iqneAcy','WPhdVJa','WQPinCkCA8kduuOGAG','WPBcQCoSfmov','W4bgWQJdJaJcSCk+emoKW7ZdL0u','W78NeWFdVZhcPCkPcHddGLi','Amo8W4pcVru','W4zbWQpdIG/cTCkidSoGW5ZdUxO','WQPmWRCTW4LZW5ryiSkJBq','oSkIWPxdVLhcUgqcW5fRWQa','nSofWRVcI2K','WOxcSG0Kf8okWQ8ZuG','smoVamkfzCkqW6q9WORdISoBB8ko','WOXOaSkjxmkxWRKpoW'];a0_0x238a=function(){return _0x105651;};return a0_0x238a();}export{a0_0x23209a as AssetCache,a0_0x29b47b as AssetLoader,a0_0xad8453 as AssetSystem,a0_0x5e115f as AssetTextures,a0_0x2252e6 as Assets,a0_0x45ad4b as BaseSystem,a0_0x295218 as GameEngine,a0_0x166f34 as GameObject,a0_0x74efd0 as GameObjectManager,a0_0x5737b0 as ObjectFactory,a0_0x19538a as Renderer,a0_0x2425d5 as RuntimeObjectRegistry,a0_0x46cb4b as Transform,a0_0x37718e as applyScreenAnchor,a0_0x494d7b as basePixi,a0_0x266f74 as clearResponsiveElements,a0_0x3c1aff as createPixiBase,a0_0x18851d as getRegisteredFontIds,a0_0x5d7975 as globalResponsiveMultipliers,a0_0x3c6d87 as initAssetTextures,a0_0x3207a9 as initAssets,a0_0x198e73 as layout,a0_0x5a766f as playLottieOverlay,a0_0x12bd7c as registerFont,a0_0x6ce739 as registerType,a0_0x24df67 as resolveAnchorVec2,a0_0x3271c0 as resolveFont,a0_0x10515b as resolveFontWeight,a0_0x80c34a as resolveScreenAnchorPoint,a0_0x19876b as resolveScreenRatioPoint,a0_0x36e533 as runInitSequence,a0_0xa0df21 as setLottieInstance,a0_0x120cf4 as spawnSceneFromConfig,a0_0xc3f952 as updateScreenState};
|
|
1
|
+
(function(_0x39e13f,_0x3fec2d){var a0_0xb9d851={_0x2ec381:0x27f,_0x38b22d:0x279,_0x26df59:0x283,_0x531472:0x289,_0x530162:'CwLi',_0x4da800:'S&O]',_0x2ebfa5:0x3df,_0x4e0437:0x3d2,_0xe7f862:0x3c2,_0x3dbf70:'ZeXS',_0x5e4a4d:0x3ca,_0xe2f05c:0x3ce,_0x94ede0:0x3bf,_0x1bbf68:0x274,_0x33bb87:0x281,_0x3c1985:'VmO4',_0x2a8b5d:0x214,_0x16cfba:0x210,_0x13a81a:0x207,_0x4881d2:0x3c5,_0x588677:0x3bc,_0x38403d:0x1fa,_0x9cc859:0x201,_0x2b446a:'uxYq',_0x369755:0x218,_0x1e8514:0x215,_0x1e14df:'Mz%I',_0x292671:0x204,_0x2bd28f:0x203,_0x465471:0x20f,_0x475013:'Mz%I',_0x479d6b:0x1f4,_0x13f172:0x223,_0x1e987f:0x21c,_0x239b01:'on1A',_0x3a5a33:0x218,_0x4f613b:0x28e,_0x42839e:0x292,_0x526910:0x28d,_0xb7a150:0x28e,_0x4e1665:0x207},a0_0x3ee3dd={_0x48c395:0x198},a0_0x2f3969={_0x4eaf64:0x35d};function _0x5670da(_0x3df39e,_0x3bc1ee,_0x190124,_0x38f307,_0x31e3fa){return a0_0x2bb9(_0x190124-0x20b,_0x31e3fa);}function _0x482005(_0x334153,_0x597cf8,_0x19ccc4,_0x55db07,_0x19d3b7){return a0_0x2bb9(_0x55db07-a0_0x2f3969._0x4eaf64,_0x334153);}var _0x2abaf8=_0x39e13f();function _0x1a52b9(_0x1e2af9,_0x77fa40,_0x42ba45,_0xfda7d7,_0x3d4fca){return a0_0x2bb9(_0x77fa40-a0_0x3ee3dd._0x48c395,_0xfda7d7);}while(!![]){try{var _0x41e297=parseInt(_0x5670da(a0_0xb9d851._0x2ec381,a0_0xb9d851._0x38b22d,a0_0xb9d851._0x26df59,a0_0xb9d851._0x531472,a0_0xb9d851._0x530162))/(-0x1*0x19c7+0x27d*-0x1+0x1c45*0x1)*(-parseInt(_0x482005(a0_0xb9d851._0x4da800,a0_0xb9d851._0x2ebfa5,0x3cf,a0_0xb9d851._0x4e0437,a0_0xb9d851._0xe7f862))/(-0x43d*0x1+0xd21+-0x17b*0x6))+parseInt(_0x482005(a0_0xb9d851._0x3dbf70,0x3d5,a0_0xb9d851._0x5e4a4d,a0_0xb9d851._0xe2f05c,a0_0xb9d851._0x94ede0))/(0x1*-0x7cc+-0xa73+0x1242)+-parseInt(_0x5670da(a0_0xb9d851._0x1bbf68,0x28d,a0_0xb9d851._0x33bb87,a0_0xb9d851._0x33bb87,a0_0xb9d851._0x3c1985))/(0x1240+-0x1722+0x4e6)*(-parseInt(_0x1a52b9(0x217,a0_0xb9d851._0x2a8b5d,a0_0xb9d851._0x16cfba,'kn7C',a0_0xb9d851._0x13a81a))/(-0x1*-0x20b+0x1d*0x48+-0xa2e*0x1))+-parseInt(_0x482005(a0_0xb9d851._0x3c1985,a0_0xb9d851._0x4881d2,a0_0xb9d851._0x588677,0x3cb,0x3bd))/(0x6f5*0x3+-0x1b8e+0x6b5)*(parseInt(_0x1a52b9(a0_0xb9d851._0x38403d,a0_0xb9d851._0x9cc859,0x1f2,a0_0xb9d851._0x2b446a,0x20d))/(-0x1607+-0x9f9+0x2007))+parseInt(_0x1a52b9(0x21c,a0_0xb9d851._0x369755,a0_0xb9d851._0x1e8514,a0_0xb9d851._0x1e14df,0x223))/(-0x19b3+-0x28*-0xe4+0x1*-0x9e5)+-parseInt(_0x1a52b9(a0_0xb9d851._0x292671,a0_0xb9d851._0x2bd28f,a0_0xb9d851._0x465471,a0_0xb9d851._0x475013,a0_0xb9d851._0x479d6b))/(-0x2d4+0x16e0+0x6d*-0x2f)*(-parseInt(_0x1a52b9(a0_0xb9d851._0x13f172,a0_0xb9d851._0x1e987f,a0_0xb9d851._0x2a8b5d,a0_0xb9d851._0x239b01,a0_0xb9d851._0x3a5a33))/(-0x119b+-0x2a5*0x7+0xb2*0x34))+-parseInt(_0x5670da(a0_0xb9d851._0x4f613b,a0_0xb9d851._0x42839e,a0_0xb9d851._0x526910,a0_0xb9d851._0xb7a150,'Zahu'))/(0x2*-0x2fc+-0x231b+0x291e)*(parseInt(_0x1a52b9(a0_0xb9d851._0x9cc859,0x200,0x1f1,'!@2E',a0_0xb9d851._0x4e1665))/(0x9db+0x13*-0x179+0x122c));if(_0x41e297===_0x3fec2d)break;else _0x2abaf8['push'](_0x2abaf8['shift']());}catch(_0x56ebac){_0x2abaf8['push'](_0x2abaf8['shift']());}}}(a0_0x3a17,-0x4f500+0x2c17f+-0x30*-0x2070));var a0_0x895d13=(function(){var a0_0x4e1c7e={_0x2244ca:'AFV7',_0x3ff01f:0x1e6,_0x411c8c:0x1e0},_0x240857=!![];return function(_0x5b4e43,_0x597ab2){var a0_0x458645={_0x5b57b7:0x167},_0xd7384d=_0x240857?function(){function _0x3c3495(_0x1d7af4,_0x5cac6a,_0x223e27,_0x1a7aa9,_0x735819){return a0_0x2bb9(_0x223e27-a0_0x458645._0x5b57b7,_0x1d7af4);}if(_0x597ab2){var _0x5a3e53=_0x597ab2[_0x3c3495(a0_0x4e1c7e._0x2244ca,0x1ef,a0_0x4e1c7e._0x3ff01f,0x1e6,a0_0x4e1c7e._0x411c8c)](_0x5b4e43,arguments);return _0x597ab2=null,_0x5a3e53;}}:function(){};return _0x240857=![],_0xd7384d;};}()),a0_0x59327e=a0_0x895d13(this,function(){var a0_0x3c9679={_0x62308a:0x370,_0x3d6574:'9qPe',_0x45b6c0:0x37e,_0x298bc4:0x36e,_0x3cb2eb:0x388,_0x25917d:'!I[*',_0x36dd4f:0x372,_0xe07452:0x38a,_0x4de373:0x1df,_0x5ee474:0x1d9,_0x420c97:0x371,_0xc8c77:0x381,_0x45c788:0x1fa,_0x2e3ae0:0x1f3,_0x44f7b7:0x1e9,_0x58fde2:']gCX',_0x45c014:0xef,_0x498db5:'on1A',_0x465ca2:0x103,_0x37b27a:0xf4,_0x727ad7:0x375,_0x125040:'#kZT',_0x32d169:0x37c,_0x24b491:0x116,_0x36f121:0x107,_0xe75e9a:0x10a,_0x12bade:0x10b,_0x2e4580:0x10d,_0x320c3b:'C$[G',_0x4a7acf:0xff,_0x23efc0:0x110,_0x40d1d1:0x209,_0x501fc8:0x1fe,_0x3fcc59:0x204,_0x1035f5:'u!(&',_0x2c901e:0x1ef},a0_0x1095a5={_0x47016a:0x88},_0x4220b0={};_0x4220b0['MzLSV']=_0xf78ed0(a0_0x3c9679._0x62308a,0x363,a0_0x3c9679._0x3d6574,a0_0x3c9679._0x45b6c0,a0_0x3c9679._0x298bc4)+_0xf78ed0(0x37e,a0_0x3c9679._0x3cb2eb,a0_0x3c9679._0x25917d,a0_0x3c9679._0x36dd4f,a0_0x3c9679._0xe07452)+'+$';var _0x409751=_0x4220b0;function _0xf78ed0(_0x12cfe2,_0x50041e,_0x5412ed,_0x51b5b7,_0x247149){return a0_0x2bb9(_0x12cfe2-0x301,_0x5412ed);}function _0x332a0e(_0x3cb6a5,_0xe5089c,_0xb0b2e4,_0x442f43,_0x49c4d7){return a0_0x2bb9(_0xe5089c-0x179,_0x442f43);}function _0x44b05f(_0x273626,_0x1060d0,_0x5364fb,_0x205c78,_0x2a151a){return a0_0x2bb9(_0x2a151a-a0_0x1095a5._0x47016a,_0x1060d0);}return a0_0x59327e['toStr'+_0x332a0e(0x1de,0x1e3,a0_0x3c9679._0x4de373,'Mz%I',a0_0x3c9679._0x5ee474)]()[_0xf78ed0(a0_0x3c9679._0x420c97,a0_0x3c9679._0xc8c77,'on1A',0x365,0x37c)+'h'](_0x409751[_0x332a0e(a0_0x3c9679._0x45c788,a0_0x3c9679._0x2e3ae0,a0_0x3c9679._0x44f7b7,a0_0x3c9679._0x58fde2,a0_0x3c9679._0x44f7b7)])['toStr'+_0x44b05f(a0_0x3c9679._0x45c014,a0_0x3c9679._0x498db5,a0_0x3c9679._0x465ca2,0xfd,a0_0x3c9679._0x37b27a)]()[_0xf78ed0(a0_0x3c9679._0x727ad7,0x376,a0_0x3c9679._0x125040,a0_0x3c9679._0x32d169,a0_0x3c9679._0x420c97)+_0x44b05f(a0_0x3c9679._0x24b491,'C$[G',a0_0x3c9679._0x36f121,a0_0x3c9679._0xe75e9a,a0_0x3c9679._0x12bade)+'r'](a0_0x59327e)[_0x44b05f(a0_0x3c9679._0x2e4580,a0_0x3c9679._0x320c3b,a0_0x3c9679._0x4a7acf,0x120,a0_0x3c9679._0x23efc0)+'h'](_0x409751[_0x332a0e(a0_0x3c9679._0x40d1d1,a0_0x3c9679._0x501fc8,a0_0x3c9679._0x3fcc59,a0_0x3c9679._0x1035f5,a0_0x3c9679._0x2c901e)]);});a0_0x59327e();import{A as a0_0xde9928,B as a0_0x26d3ff,C as a0_0x3ce7ca,D as a0_0x489293,b as a0_0x1c180f,c as a0_0x8c58d8,d as a0_0x272ca2,e as a0_0x5567ce,f as a0_0x2286d1,g as a0_0x548e9e,h as a0_0x250b7c,i as a0_0x255c93,j as a0_0x53af8c,k as a0_0x3bd759,l as a0_0x1f5a4e,m as a0_0x3796ff,n as a0_0x1ddafd,o as a0_0x5e8295,p as a0_0x35dfc0,q as a0_0x5e2e14,r as a0_0x2eca33,s as a0_0x1c18e4,t as a0_0x321fcb,u as a0_0x5ed0b4,v as a0_0x47db68,w as a0_0x5d7c45,x as a0_0x273d81,y as a0_0x30366a,z as a0_0x4c5be0}from'../chunk-UQJMU5JM.js';import{a as a0_0x13e224,b as a0_0x9d5c1e,c as a0_0x5ad135,d as a0_0x2bc74f,e as a0_0xdf780f}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';function a0_0x2bb9(_0x262c86,_0x22efea){_0x262c86=_0x262c86-(0xe13*0x2+-0x1521+-0x1*0x69d);var _0x40655c=a0_0x3a17();var _0x33f5b3=_0x40655c[_0x262c86];if(a0_0x2bb9['fMsOry']===undefined){var _0x244133=function(_0xeae1af){var _0x2addd3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x322f1a='',_0x39a472='',_0x3e6c2c=_0x322f1a+_0x244133;for(var _0x1b8339=0x418*0x3+-0x1714+0x4*0x2b3,_0x31f83f,_0x445a42,_0x4b095b=-0xce3+0x18d+0x5ab*0x2;_0x445a42=_0xeae1af['charAt'](_0x4b095b++);~_0x445a42&&(_0x31f83f=_0x1b8339%(-0x547*0x4+-0x796*-0x4+-0x938)?_0x31f83f*(0x101a+-0xd*0x164+-0x1e*-0x13)+_0x445a42:_0x445a42,_0x1b8339++%(-0x21a*0xc+-0x24a9+-0x1*-0x3de5))?_0x322f1a+=_0x3e6c2c['charCodeAt'](_0x4b095b+(-0x1*-0x1710+0xc9+-0x17cf))-(-0x1*-0x8db+-0x13a2+0xad1*0x1)!==-0x653*0x2+-0x1b8c+0x1ea*0x15?String['fromCharCode'](-0x1*0x1283+-0xb*0x175+0x2389&_0x31f83f>>(-(0x1*-0x217b+-0x72a*0x1+0x1*0x28a7)*_0x1b8339&0x2326+-0x105f+-0x12c1)):_0x1b8339:0x1*0x19e4+-0x2*0xd7+-0x1836){_0x445a42=_0x2addd3['indexOf'](_0x445a42);}for(var _0x4fb4f8=0x1bdd*-0x1+-0x3*0xa2e+0x3a67,_0x4928fc=_0x322f1a['length'];_0x4fb4f8<_0x4928fc;_0x4fb4f8++){_0x39a472+='%'+('00'+_0x322f1a['charCodeAt'](_0x4fb4f8)['toString'](0xbd*0x19+-0x11*0x5+-0x1210*0x1))['slice'](-(-0x13f1+0x5c*-0x4d+0x2f9f));}return decodeURIComponent(_0x39a472);};var _0x29735f=function(_0xe0f082,_0x34b1ea){var _0x58588a=[],_0x2aeeb2=-0x3*0xaa1+-0x2*0x37d+0x26dd,_0xe09e06,_0x14cd96='';_0xe0f082=_0x244133(_0xe0f082);var _0x238411;for(_0x238411=0x1d7e+-0x1*-0x9f5+0x1*-0x2773;_0x238411<0x2617+0xbc*-0x1+0x245b*-0x1;_0x238411++){_0x58588a[_0x238411]=_0x238411;}for(_0x238411=-0x1bb*0x4+-0x249a+-0x1*-0x2b86;_0x238411<0x1ba1*-0x1+-0x98d+0x1b*0x16a;_0x238411++){_0x2aeeb2=(_0x2aeeb2+_0x58588a[_0x238411]+_0x34b1ea['charCodeAt'](_0x238411%_0x34b1ea['length']))%(0xdd9+0x19ab*-0x1+0xcd2),_0xe09e06=_0x58588a[_0x238411],_0x58588a[_0x238411]=_0x58588a[_0x2aeeb2],_0x58588a[_0x2aeeb2]=_0xe09e06;}_0x238411=0x1*0x51d+0x21a6+-0x1*0x26c3,_0x2aeeb2=0x26ec+-0x2c*0x93+-0x13*0xb8;for(var _0x38abf3=0x236d*0x1+-0x3b9+-0x1fb4;_0x38abf3<_0xe0f082['length'];_0x38abf3++){_0x238411=(_0x238411+(-0x7eb+-0x1aeb+-0x3df*-0x9))%(-0x2c1+-0x1251+0x1612),_0x2aeeb2=(_0x2aeeb2+_0x58588a[_0x238411])%(-0xa*0x19f+-0x5f7+0x15d*0x11),_0xe09e06=_0x58588a[_0x238411],_0x58588a[_0x238411]=_0x58588a[_0x2aeeb2],_0x58588a[_0x2aeeb2]=_0xe09e06,_0x14cd96+=String['fromCharCode'](_0xe0f082['charCodeAt'](_0x38abf3)^_0x58588a[(_0x58588a[_0x238411]+_0x58588a[_0x2aeeb2])%(0x1cf6+-0xaa*-0x11+-0x9d*0x40)]);}return _0x14cd96;};a0_0x2bb9['XTohuj']=_0x29735f,a0_0x2bb9['mRbscc']={},a0_0x2bb9['fMsOry']=!![];}var _0x15c6f7=_0x40655c[-0xf3a*0x2+-0x44*0x23+0x27c0],_0x45f62f=_0x262c86+_0x15c6f7,_0x1374bc=a0_0x2bb9['mRbscc'][_0x45f62f];if(!_0x1374bc){if(a0_0x2bb9['yAJYKY']===undefined){var _0x65166d=function(_0x175fdb){this['RZwHPT']=_0x175fdb,this['OAmhNu']=[-0x46f*0x2+-0x1bf*0x1+0xa9e,-0x1*0x265d+0x174d+-0xf1*-0x10,-0x1dad+-0x7c1*0x5+0x4472],this['xvcJWv']=function(){return'newState';},this['fRfXxc']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['xUIiBd']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x65166d['prototype']['EfRBLK']=function(){var _0x1052a8=new RegExp(this['fRfXxc']+this['xUIiBd']),_0x5b2bb5=_0x1052a8['test'](this['xvcJWv']['toString']())?--this['OAmhNu'][-0x1*-0x369+-0x1f28+-0x30*-0x94]:--this['OAmhNu'][-0x220a*0x1+-0x983*-0x2+0xf04];return this['JZdCXI'](_0x5b2bb5);},_0x65166d['prototype']['JZdCXI']=function(_0x2e6c5f){if(!Boolean(~_0x2e6c5f))return _0x2e6c5f;return this['hWzRLB'](this['RZwHPT']);},_0x65166d['prototype']['hWzRLB']=function(_0x34e4b8){for(var _0x1e68f7=-0x1*0x19c7+0x27d*-0x1+0x1c44*0x1,_0x4b8796=this['OAmhNu']['length'];_0x1e68f7<_0x4b8796;_0x1e68f7++){this['OAmhNu']['push'](Math['round'](Math['random']())),_0x4b8796=this['OAmhNu']['length'];}return _0x34e4b8(this['OAmhNu'][-0x43d*0x1+0xd21+-0x239*0x4]);},new _0x65166d(a0_0x2bb9)['EfRBLK'](),a0_0x2bb9['yAJYKY']=!![];}_0x33f5b3=a0_0x2bb9['XTohuj'](_0x33f5b3,_0x22efea),a0_0x2bb9['mRbscc'][_0x45f62f]=_0x33f5b3;}else _0x33f5b3=_0x1374bc;return _0x33f5b3;}import'../chunk-JXBG6UFL.js';export{a0_0x13e224 as AssetCache,a0_0x5ad135 as AssetLoader,a0_0x5ed0b4 as AssetSystem,a0_0x2bc74f as AssetTextures,a0_0x1c18e4 as Assets,a0_0x5e8295 as BaseSystem,a0_0x1ddafd as GameEngine,a0_0x5567ce as GameObject,a0_0x2286d1 as GameObjectManager,a0_0x3796ff as ObjectFactory,a0_0x272ca2 as Renderer,a0_0x35dfc0 as RuntimeObjectRegistry,a0_0x8c58d8 as Transform,a0_0x26d3ff as applyScreenAnchor,a0_0x5e2e14 as basePixi,a0_0x5d7c45 as clearResponsiveElements,a0_0x1c180f as createPixiBase,a0_0x53af8c as getRegisteredFontIds,a0_0x47db68 as globalResponsiveMultipliers,a0_0xdf780f as initAssetTextures,a0_0x321fcb as initAssets,a0_0x3ce7ca as layout,a0_0x1f5a4e as playLottieOverlay,a0_0x255c93 as registerFont,a0_0x9d5c1e as registerType,a0_0x30366a as resolveAnchorVec2,a0_0x548e9e as resolveFont,a0_0x250b7c as resolveFontWeight,a0_0x4c5be0 as resolveScreenAnchorPoint,a0_0xde9928 as resolveScreenRatioPoint,a0_0x489293 as runInitSequence,a0_0x3bd759 as setLottieInstance,a0_0x2eca33 as spawnSceneFromConfig,a0_0x273d81 as updateScreenState};function a0_0x3a17(){var _0x51710e=['W4vqWOpcSCk6kCoEW68U','pCoLWOXFeq','oNpcIeTGW4KtW5xdSuBdRgP1','iCoPAxeg','ChmJW7pdQmkZW4KsnW','WRddPmkxW7RcKSoWWRi','pmo1WO5zhq','zuv1e3ZcJdz/W5j5ofqZ','nHldT8kaixHEBqVcKSofW6i','cvumW6ihWOPMb3m','exDO','qwbTje9KCq','zY7dLW','sY46vXu7zq08W7FcGGa','WPtdGmoWDCk2uwb7WOmIW5a','oSk/qcO1','FsxdKqGW','ycZdMmkjDdjeWOTxkmkAy2O','WO8PWPPClMVdSSoqWQ/cIINdRq','mbhdSCovFZvQyGS','WQaMWQimvq','gdZdPCkxxmkdeCkWWRhcHv7cIW','WPtdICo3nmontM1FWOe','WRJcQConWORdJCkKW6axWR3dGYxcQZC','WOXbW5aQtcxdJa','W7ZcOSonieJdVCoDW5tcRalcPG','haWbCrK','W71mlSkuWRdcJmkYW7dcTmkBFMu','l0/cS8kRWOiJa8kWWOZdRsS','W63dQNNdRCkh','lSkYWPhcQb7dOL5TBW','W71CpK4M','tsO9vbeXvqiLW7FcGI4','W415muaJDbi'];a0_0x3a17=function(){return _0x51710e;};return a0_0x3a17();}
|
package/dist/three/index.cjs
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<button class="debug-btn primary" data-modal-apply>Apply</button>
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
46
|
-
`,this.modal=i}attachModalListeners(){if(!this.modal)return;this.modal.querySelectorAll("[data-modal-close]").forEach(r=>{r.addEventListener("click",()=>this.close())}),this.modal.querySelectorAll("[data-tab]").forEach(r=>{r.addEventListener("click",o=>{let d=o.target.dataset.tab;d&&this.switchTab(d)})});let i=this.modal.querySelector("[data-ai-generate]");i==null||i.addEventListener("click",()=>{this.openAiEditor("generate")});let a=this.modal.querySelector("[data-ai-edit]");a==null||a.addEventListener("click",()=>{this.openAiEditor("edit")});let s=this.modal.querySelector("[data-modal-apply]");s==null||s.addEventListener("click",()=>{this.apply()}),this.modal.addEventListener("click",r=>{r.target===this.modal&&this.close()})}switchTab(e){if(!this.modal)return;this.modal.querySelectorAll("[data-tab]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab")===e)}),this.modal.querySelectorAll("[data-tab-panel]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab-panel")===e)})}openAiEditor(e){let n=window.__openAiEditor;if(typeof n!="function"){alert("AI Editor not available. Please check your setup.");return}let i="";e==="edit"&&this.currentAsset?i=`Edit this image: ${this.currentObjectId}`:i=`Create an image for: ${this.currentObjectId}`,n(this.currentObjectId||"unknown",i,this.currentAsset,{path:this.currentPath,onApply:a=>{this.onApplyCallback&&this.onApplyCallback(a),this.close()}})}apply(){this.onApplyCallback&&this.onApplyCallback("library/placeholder.png"),this.close()}close(){this.modal&&this.modal.parentNode&&this.modal.parentNode.removeChild(this.modal),this.modal=null,this.currentObjectId=null,this.currentPath=null,this.onApplyCallback=null}}});var el={};ca(el,{AspectClass:()=>$n,GameObject:()=>ct,GameObjectManager:()=>Dt,Renderer:()=>lt,ResponsiveUISystem:()=>qe,Transform:()=>ot,animateHandClick:()=>Ss,animatePanelEntrance:()=>xs,createBrushTexture:()=>Ps,createEndGamePanel:()=>ws,createHandTutorial:()=>Es,createThreeBase:()=>ys,createTutorialLabel:()=>Cs,getAspectClass:()=>Ht,getRegisteredFontIds:()=>vs,loadAsset:()=>Nn,loadCharacterFrames:()=>ks,registerFont:()=>bs,resolveFont:()=>ee,resolveFontWeight:()=>te,updateHandAnimation:()=>As});module.exports=Sr(el);var W=ge(require("three"),1);var he={};function bt(t,e,n=!1){he[t]||(he[t]=[]),he[t].push({fn:e,once:n})}function Zt(t,e){if(he[t]){if(!e){delete he[t];return}he[t]=he[t].filter(n=>n.fn!==e)}}function vt(t,...e){let n=he[t];if(n)for(let i of[...n])i.fn(...e),i.once&&Zt(t,i.fn)}function B(t,e){bt(t,e,!0)}var M=null,V=[],Ie=null;function ga(t){M=t,V=[],Ie!==null&&(clearTimeout(Ie),Ie=null)}function ha(){var t,e,n;return{endpoint:(M==null?void 0:M.endpoint)||"",transport:(M==null?void 0:M.transport)||"beacon",batchSize:(t=M==null?void 0:M.batchSize)!=null?t:10,flushIntervalMs:(e=M==null?void 0:M.flushIntervalMs)!=null?e:300,maxQueue:(n=M==null?void 0:M.maxQueue)!=null?n:200,debug:!!(M!=null&&M.debug)}}async function pa(t,e,n,i){let a=JSON.stringify(e);if(n==="beacon"&&typeof navigator!="undefined"&&typeof navigator.sendBeacon=="function")try{let s=navigator.sendBeacon(t,new Blob([a],{type:"application/json"}));i&&console.log("[handler.telemetry] beacon",s,e);return}catch(s){i&&console.warn("[handler.telemetry] beacon failed, fallback to fetch",s)}try{await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:a,keepalive:!0}),i&&console.log("[handler.telemetry] fetch",e)}catch(s){i&&console.warn("[handler.telemetry] fetch failed",s)}}function Qt(t,e){let n=ha();if(e&&n.endpoint){if(V.push(t),V.length>n.maxQueue&&(V=V.slice(V.length-n.maxQueue)),V.length>=n.batchSize){ua();return}Ie===null&&(Ie=window.setTimeout(()=>{Ie=null,ua()},n.flushIntervalMs))}}async function ua(){let t=ha();if(!t.endpoint||V.length===0)return;let e=V.splice(0,t.batchSize);await pa(t.endpoint,{events:e},t.transport,t.debug),V.length>0&&await pa(t.endpoint,{events:V.splice(0,t.batchSize)},t.transport,t.debug)}function ma(t){return Math.max(0,Math.min(1,t))}function Er(t){let e=String(t!=null?t:"power2.out");if(e==="linear")return n=>n;if(e==="sine.inOut")return n=>.5-Math.cos(Math.PI*n)/2;if(e==="power2.out"||e==="easeOutQuad")return n=>1-(1-n)*(1-n);if(e.startsWith("back.out")){let n=e.match(/back\.out\(([\d.]+)\)/),i=n?Number(n[1]):1.8;return a=>1+(i+1)*Math.pow(a-1,3)+i*Math.pow(a-1,2)}return n=>1-(1-n)*(1-n)}function Xe(){return typeof performance!="undefined"&&performance.now?performance.now():Date.now()}function Cr(t,e){let n=t==null?void 0:t[e];return typeof n=="number"?n:0}function fa(t,e,n){try{t[e]=n}catch{}}function Ar(t){let e=t==null?void 0:t.scale;if(!e)return null;let n=typeof e.x=="number"?e.x:1,i=typeof e.y=="number"?e.y:1;return{x:n,y:i}}function ya(t,e){let n=t==null?void 0:t.scale;if(n)try{typeof n.set=="function"?n.set(e.x,e.y):(typeof n.x=="number"&&(n.x=e.x),typeof n.y=="number"&&(n.y=e.y))}catch{}}function ba(t,e){let n=Ar(t);if(!n)return{from:null,to:null};let i=null,a=null;return typeof e.scale=="number"?(i=e.scale,a=e.scale):e.scale&&typeof e.scale=="object"&&(typeof e.scale.x=="number"&&(i=e.scale.x),typeof e.scale.y=="number"&&(a=e.scale.y)),typeof e.scaleX=="number"&&(i=e.scaleX),typeof e.scaleY=="number"&&(a=e.scaleY),i===null&&a===null?{from:null,to:null}:{from:{x:n.x,y:n.y},to:{x:i!=null?i:n.x,y:a!=null?a:n.y}}}function va(){let t=new Set,e=new WeakMap,n=null,i=()=>{if(n!=null)return;n=requestAnimationFrame(()=>{n=null,o(),t.size>0&&i()})},a=p=>{var g;t.add(p);let c=(g=e.get(p.target))!=null?g:new Set;c.add(p),e.set(p.target,c),i()},s=p=>{t.delete(p);let c=e.get(p.target);c&&(c.delete(p),c.size===0&&e.delete(p.target))},r=p=>{p.killed||(p.killed=!0,s(p))},o=()=>{var c,g;let p=Xe();for(let u of Array.from(t)){if(u.killed||u.paused)continue;let y=p-u.startMs-u.delayMs;if(y<0)continue;let h=u.durationMs>0?y/u.durationMs:1,w=ma(h),v=u.repeat>=0?u.repeat+1:1,b=u.repeat>0?Math.min(Math.floor(h),v-1):0;if(u.repeat>0&&h>=1){let S=h-b;w=ma(S)}let m=u.ease(w);u.yoyo&&b%2===1&&(m=1-m);for(let S of u.props)fa(u.target,S.key,S.from+(S.to-S.from)*m);u.scaleFrom&&u.scaleTo&&ya(u.target,{x:u.scaleFrom.x+(u.scaleTo.x-u.scaleFrom.x)*m,y:u.scaleFrom.y+(u.scaleTo.y-u.scaleFrom.y)*m});try{(c=u.onUpdate)==null||c.call(u)}catch{}if(h>=v){r(u);try{(g=u.onComplete)==null||g.call(u)}catch{}}}},l=(p,c,g)=>{var S;let u=Math.max(0,(typeof c.duration=="number"?c.duration:.5)*1e3),y=Math.max(0,(typeof c.delay=="number"?c.delay:0)*1e3+((S=g==null?void 0:g.delayMsOverride)!=null?S:0)),h=Er(c.ease),w=typeof c.repeat=="number"?Math.max(0,c.repeat|0):0,v=c.yoyo===!0,b=new Set(["duration","delay","ease","repeat","yoyo","onUpdate","onComplete","scale","scaleX","scaleY"]),m=[];for(let E of Object.keys(c)){if(b.has(E))continue;let C=c[E];typeof C=="number"&&m.push({key:E,from:Cr(p,E),to:C})}let f=ba(p,c);return{target:p,startMs:Xe(),delayMs:y,durationMs:u,ease:h,props:m,scaleFrom:f.from,scaleTo:f.to,repeat:w,yoyo:v,onUpdate:typeof c.onUpdate=="function"?c.onUpdate:void 0,onComplete:typeof c.onComplete=="function"?c.onComplete:void 0,killed:!1,paused:!1,pauseAtMs:null}},d={to(p,c){let g=l(p,c);return a(g),{kill:()=>r(g),pause:()=>{g.paused||(g.paused=!0,g.pauseAtMs=Xe())},resume:()=>{var h;if(!g.paused)return;let u=(h=g.pauseAtMs)!=null?h:Xe(),y=Xe()-u;g.startMs+=y,g.paused=!1,g.pauseAtMs=null},isActive:()=>!g.killed&&!g.paused}},fromTo(p,c,g){return d.set(p,c),d.to(p,g)},set(p,c){if(!p||!c)return;for(let u of Object.keys(c)){let y=c[u];u==="scale"||u==="scaleX"||u==="scaleY"||typeof y=="number"&&fa(p,u,y)}let g=ba(p,c);g.to&&ya(p,g.to)},killTweensOf(p){let c=e.get(p);if(c)for(let g of Array.from(c))r(g)},timeline(p={}){let c=[],g=0,u=!1,y=[],h=b=>{if(typeof b=="number")return Math.max(0,b*1e3);let m=typeof b=="string"?b.trim():"";return m.startsWith("+=")?g+Math.max(0,Number(m.slice(2))*1e3||0):m?Math.max(0,Number(m)*1e3||0):g},w=b=>{c.push(b);let m=Math.max(0,(typeof b.vars.duration=="number"?b.vars.duration:.5)*1e3);g=Math.max(g,b.atMs+m)},v={to(b,m,f){return w({kind:"to",target:b,vars:m,atMs:h(f)}),v},fromTo(b,m,f,S){return w({kind:"fromTo",target:b,vars:f,from:m,atMs:h(S)}),v},play(){var b,m;if(u)return v;u=!0,y=[];for(let f of c)f.kind==="fromTo"&&d.set(f.target,(b=f.from)!=null?b:{}),y.push(d.to(f.target,{...f.vars,delay:f.atMs/1e3+((m=f.vars.delay)!=null?m:0)}));return v},pause(){for(let b of y)b.pause();return v},kill(){for(let b of y)b.kill();y=[],u=!1}};return p.paused||v.play(),v}};return d}function wa(){if(typeof window=="undefined")return;let t=window;if(!t.gsap)try{t.gsap=va()}catch{}}var xa={name:"handler-playable-sdk",version:"1.0.56",type:"module",description:"Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./pixi":{types:"./dist/pixi/index.d.ts",import:"./dist/pixi/index.js",require:"./dist/pixi/index.cjs"},"./pixi/index.css":{import:"./dist/pixi/index.css",require:"./dist/pixi/index.css"},"./three":{types:"./dist/three/index.d.ts",import:"./dist/three/index.js",require:"./dist/three/index.cjs"},"./cli":{types:"./dist/cli/index.d.ts",import:"./dist/cli/index.js",require:"./dist/cli/index.cjs"}},bin:{"handler-student-helper":"./bin/student-helper.mjs","handler-validate":"./bin/validate.mjs","handler-sync-screens":"./bin/sync-screens.mjs","handler-brand-dna":"./bin/brand-dna.mjs","handler-setup-library":"./bin/setup-library.mjs","handler-screen-helper":"./bin/screen-helper.mjs"},scripts:{prebuild:"python3 src/preview/build-css.py",build:"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --minify --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli && npm run obfuscate && npm run postbuild",postbuild:"python3 src/preview/copy-css-to-dist.py","postbuild-cli":"cp src/cli/*.mjs dist/cli/ && mkdir -p dist/cli/student-helper && cp src/cli/student-helper/*.mjs dist/cli/student-helper/ && chmod +x dist/cli/*.mjs dist/cli/student-helper/*.mjs && chmod +x bin/*.mjs","create-mjs-symlinks":"cd dist && ln -sf index.js index.mjs && cd pixi && ln -sf index.js index.mjs && cd ../three && ln -sf index.js index.mjs","build:dev":"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli",obfuscate:"javascript-obfuscator dist/pixi/index.js --output dist/pixi/index.js --config obfuscator.config.json && javascript-obfuscator dist/three/index.js --output dist/three/index.js --config obfuscator.config.json && javascript-obfuscator dist/cli/index.js --output dist/cli/index.js --config obfuscator.config.json && npm run obfuscate-cli","obfuscate-cli":'for file in dist/cli/*.mjs dist/cli/student-helper/*.mjs; do javascript-obfuscator "$file" --output "$file" --config obfuscator.config.json; done',lint:"eslint 'src/**/*.{ts,tsx}'",typecheck:"tsc --noEmit",prepublishOnly:"npm run build","publish:update":"node scripts/publish-and-update.cjs patch","publish:update:minor":"node scripts/publish-and-update.cjs minor","publish:update:major":"node scripts/publish-and-update.cjs major"},author:"Handler",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/HandlerAIGames/handler-playable-sdk.git"},files:["dist","bin","LICENSE","README.md"],peerDependencies:{"lottie-web":"^5.0.0","pixi.js":"^8.0.0",three:"^0.182.0"},peerDependenciesMeta:{"pixi.js":{optional:!0},three:{optional:!0},"lottie-web":{optional:!0}},devDependencies:{"@types/three":"^0.182.0",eslint:"^9.39.2","javascript-obfuscator":"^5.1.0","pixi.js":"8.8.1",three:"^0.182.0","ts-node":"^10.9.2",tsup:"^8.4.0",typescript:"^5.7.2","typescript-eslint":"^8.53.0"},dependencies:{"@google/genai":"^1.35.0","@google/generative-ai":"^0.24.1",jszip:"^3.10.1",sharp:"^0.34.5"}};var G=0,Lr=G++,Sa=G++,Ea=G++,Ca=G++,Aa=G++,Ta=G++,La=G++,ka=G++,Pa=G++,Ma=G++,_a=G++,Ia=G++,T=Lr;function ja(){return T===Sa}function Oa(){return T===Ea}function Ra(){return T===Ca}function za(){return T===Aa}function je(){return T===Ta}function Oe(){return T===La}function $a(){return T===ka}function Ha(){return T===Pa}function Da(){return T===Ma}function en(){return T===_a}function tn(){return T===Ia}function Na(){let t=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none",e=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed";if(t==="mraid")try{mraid.getState(),T=Sa;return}catch{}else if(t==="dapi")try{dapi.isReady(),T=Ea;return}catch{}if(e==="facebook")try{typeof FbPlayableAd!="undefined"&&(T=Ca)}catch{}else if(e==="google")try{typeof ExitApi!="undefined"&&(T=Aa)}catch{}else if(e==="mintegral")window.gameReady&&(T=Ta);else if(e==="tapjoy")window.TJ_API&&(T=La);else if(e==="tiktok")window.openAppStore&&(T=ka);else if(e==="smadex")try{window.smxTracking&&(T=Pa)}catch{}else if(e==="snapchat")try{window.ScPlayableAd&&(T=Ma)}catch{}else e==="vungle"?T=_a:(t==="nucleo"||e==="nucleo")&&(T=Ia)}var wt=ge(require("lottie-web"),1),Fa=wt.default;typeof window!="undefined"&&(window.lottie=wt.default,window.__baseLottie=wt.default);var kr=require("pixi.js");var nn=require("pixi.js");var Pr=null;function an(t){Pr=t}St();xt();var Ke=require("pixi.js");St();var Rr=typeof __BUILD_MODE__!="undefined"?__BUILD_MODE__:"undefined",ln=Rr;if(typeof window!="undefined")try{let t=new XMLHttpRequest;if(t.open("GET","./build-settings.json",!1),t.send(),t.status===200&&t.responseText){let e=JSON.parse(t.responseText);e!=null&&e.buildMode&&(ln=e.buildMode,console.log(`[ObjectFactory] Build mode overridden by settings: ${ln}`))}}catch{}function zr(t){var n,i,a,s,r;if(typeof window!="undefined"&&window.resolveAnchorVec2)return window.resolveAnchorVec2(t);let e={center:{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};if(Array.isArray(t))return{x:(n=t[0])!=null?n:.5,y:(i=t[1])!=null?i:.5};if(t&&typeof t=="object"&&"x"in t&&"y"in t)return{x:(a=t.x)!=null?a:.5,y:(s=t.y)!=null?s:.5};if(typeof t=="string"){let o=t.trim().toLowerCase();return(r=e[o])!=null?r:{x:.5,y:.5}}return null}var fe=class{static async create(e,n,i){var l,d,p,c,g,u,y;console.log(`[ObjectFactory] create() called for: ${e}, __BUILD_MODE__: ${ln}`);let a=(l=n==null?void 0:n.render)==null?void 0:l.asset;if(!a){console.log(`[ObjectFactory] No asset definition for: ${e}, returning empty container`);let h=new Ke.Container;return this.applyTransform(h,n==null?void 0:n.transform,n),h}let s=(d=n==null?void 0:n.identity)==null?void 0:d.id;console.log(`[ObjectFactory] Calling AssetLoader.load() for: ${e}, configId: ${s}, type: ${a.type}, path: ${a.path}`);let r=await Ce.load(e,a,i,s);console.log(`[ObjectFactory] AssetLoader.load() completed for: ${e}, rawAsset type: ${(p=r==null?void 0:r.constructor)==null?void 0:p.name}`);let o;if(a.type==="image")console.log("[ObjectFactory] Creating Sprite from texture:",r,"for object:",e),o=new Ke.Sprite(r),console.log("[ObjectFactory] Created object:",o,"type:",(c=o==null?void 0:o.constructor)==null?void 0:c.name),this.applyTransform(o,n==null?void 0:n.transform,n);else if(a.type==="json")if(console.log("[ObjectFactory] JSON asset for",e,"rawAsset type:",(g=r==null?void 0:r.constructor)==null?void 0:g.name,r),r&&(((u=r.constructor)==null?void 0:u.name)==="Container"||r instanceof Ke.Container)){console.warn("[ObjectFactory] JSON asset is Container (from cache), reloading JSON directly");let h=[a.path,`/assets/${a.path}`,`assets/${a.path}`,`../assets/${a.path}`],w=!1;for(let v of h)try{let b=await fetch(v);if(b.ok){o=await b.json(),console.log("[ObjectFactory] Reloaded JSON directly from:",v,"type:",(y=o==null?void 0:o.constructor)==null?void 0:y.name),w=!0;break}}catch{continue}w||(console.error("[ObjectFactory] Failed to reload JSON from any path"),o=r)}else o=r;else o=r,o&&typeof o=="object"&&("x"in o||"position"in o)&&this.applyTransform(o,n==null?void 0:n.transform,n);return o}static applyTransform(e,n,i){var a,s,r,o;if(!(!n||!e)&&(n.position&&("x"in e&&"y"in e?(e.x=(a=n.position.x)!=null?a:0,e.y=(s=n.position.y)!=null?s:0):"position"in e&&e.position&&e.position.set((r=n.position.x)!=null?r:0,(o=n.position.y)!=null?o:0)),n.scale!==void 0&&"scale"in e&&e.scale&&(typeof e.scale=="object"&&"set"in e.scale?e.scale.set(n.scale):e.scale=n.scale),n.rotation!==void 0&&"rotation"in e&&(e.rotation=n.rotation),n.anchor&&"anchor"in e&&e.anchor)){let l=zr(n.anchor);l&&("set"in e.anchor?e.anchor.set(l.x,l.y):(e.anchor.x=l.x,e.anchor.y=l.y))}}};var Je=class{constructor(){this.config=null}init(e){this.config=e}get(e){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return this.config.objects.get(e)}getAllIds(){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return Array.from(this.config.objects.keys())}has(e){return this.config?this.config.objects.has(e):!1}};var Dr=ge(require("pixi.js"),1);typeof window!="undefined"&&(window.__basePixi=Dr);Ze();var Ct=require("pixi.js");Ze();var dn=class{constructor(){this.instanceCache=new Map;this.readyPromise=null;this.app=null;this.registry=new Je}init(e,n){this.registry.init(e),this.app=n}updateConfig(e){this.registry.init(e),this.instanceCache.clear(),this.readyPromise=null}async ready(){this.readyPromise&&await this.readyPromise;let n=this.registry.getAllIds().filter(a=>!this.instanceCache.has(a));if(n.length===0)return;let i=async a=>{a.length&&(console.log("[Assets] Loading objects:",a),await Promise.all(a.map(async s=>{var o;let r=this.registry.get(s);if(!r){console.warn("[Assets] No config found for object:",s);return}try{let l=await fe.create(s,r,this.app);this.instanceCache.set(s,l),console.log("[Assets] Loaded object:",s,(o=l==null?void 0:l.constructor)==null?void 0:o.name)}catch(l){console.error("[Assets] Failed to load object:",s,l)}})))};return this.readyPromise=(async()=>{await i(n);let a=this.registry.getAllIds().filter(s=>!this.instanceCache.has(s));a.length>0&&(console.warn("[Assets] Retrying missing assets:",a),await i(a)),console.log("[Assets] Ready. Cached objects:",Array.from(this.instanceCache.keys()))})(),this.readyPromise}resetScene(){this.instanceCache.clear(),this.readyPromise=null}async reloadObject(e){let n=this.registry.get(e);if(n){let i=await fe.create(e,n,this.app);this.instanceCache.set(e,i)}}get(e){return this.instanceCache.get(e)}},Fr=new dn,Br=new Proxy(Fr,{get(t,e){if(e in t&&typeof t[e]=="function")return t[e].bind(t);if(t.get(e))return t.get(e)}});Ze();var qr=require("pixi.js"),le={width:400,height:600,designWidth:400,scaleFactor:1},Tt={scale:1,position:1},un=[];function Vr(t,e,n,i,a,s,r){un.push({element:t,originalScale:s,positionHelper:e,heightPercent:a}),e(t,n,i,a,s,r,!1)}function Wr(){un.forEach(({element:t,originalScale:e,positionHelper:n,heightPercent:i})=>{let a=e*le.scaleFactor;n(t,le.width,le.height,i,a,!0,!1)})}function pn(t,e){console.log(`[SCREEN] updateScreenState called: ${t}x${e}`),le.width=t,le.height=e,le.scaleFactor=Math.min(t/le.designWidth,1.15),Tt.scale=le.scaleFactor,Tt.position=1,console.log(`[SCREEN] Global multipliers - scale: ${Tt.scale.toFixed(3)}`),Wr()}var et={layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}};function Yr(t,e,n){let i=et[t];i&&i[e]!==void 0&&(i[e]=n,console.log(`Updated ${t}.${e} = ${n}`))}function Xr(){return et}var Kr={center:{x:.5,y:.5},"center-center":{x:.5,y:.5},middle:{x:.5,y:.5},"middle-center":{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},"left-center":{x:0,y:.5},"right-center":{x:1,y:.5},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};function At(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function ze(t,e={x:.5,y:.5}){var n;if(Array.isArray(t))return{x:At(t[0],e.x),y:At(t[1],e.y)};if(t&&typeof t=="object"){let i=t;return{x:At(i.x,e.x),y:At(i.y,e.y)}}if(typeof t=="string"){let i=t.trim().toLowerCase();return(n=Kr[i])!=null?n:e}return e}function gn(t,e,n,i={}){var u,y,h,w,v,b;let a=ze(n),s=(u=i.inset)!=null?u:{},r=(y=i.padding)!=null?y:{x:0,y:0},o=((h=s.left)!=null?h:0)+r.x,l=((w=s.right)!=null?w:0)+r.x,d=((v=s.top)!=null?v:0)+r.y,p=((b=s.bottom)!=null?b:0)+r.y,c=Math.max(0,t-o-l),g=Math.max(0,e-d-p);return{x:o+c*a.x,y:d+g*a.y}}function hn(t,e,n,i={}){var h,w,v,b,m,f;let a=(h=i.inset)!=null?h:{},s=(w=i.padding)!=null?w:{x:0,y:0},r=((v=a.left)!=null?v:0)+s.x,o=((b=a.right)!=null?b:0)+s.x,l=((m=a.top)!=null?m:0)+s.y,d=((f=a.bottom)!=null?f:0)+s.y,p=Math.max(0,t-r-o),c=Math.max(0,e-l-d),g=ze(n,{x:.5,y:.5}),u=Math.min(Math.max(g.x,0),1),y=Math.min(Math.max(g.y,0),1);return{x:r+p*u,y:l+c*y}}if(typeof window!="undefined"){let t=window.innerWidth,e=window.innerHeight,n=()=>{let i=window.innerWidth,a=window.innerHeight;(i!==t||a!==e)&&(t=i,e=a,pn(i,a))};window.addEventListener("resize",n),window.addEventListener("orientationchange",()=>{setTimeout(n,100)}),window.mraid&&(window.mraid.addEventListener("viewableChange",n),window.mraid.addEventListener("sizeChange",n)),pn(window.innerWidth,window.innerHeight),window.updateDebugConfig=Yr,window.getDebugConfig=Xr,window.copyConfig=oo,window.applyConfig=Qe,window.applyConfigForRatio=lo,window.positionAtBottom=qa,window.positionAtTop=Qr,window.positionAtCenter=eo,window.positionAtLeft=to,window.positionAtRight=no,window.positionAtBottomLeft=io,window.positionAtBottomRight=ao,window.positionAtTopLeft=so,window.positionAtTopRight=ro,window.applyPositionContract=Zr,console.log("\u{1F3AE} Debug Config Functions Available:"),console.log("\u2022 updateDebugConfig(category, key, value)"),console.log("\u2022 getDebugConfig()"),console.log("\u2022 copyConfig(presetName)"),console.log("\u2022 applyConfig(config)"),console.log("\u2022 applyConfigForRatio(width, height)"),console.log("\u{1F4CD} Positioning Helpers Available (with scale):"),console.log("\u2022 positionAtBottom(element, w, h, percent, scale)"),console.log("\u2022 positionAtTop(element, w, h, percent, scale)"),console.log("\u2022 positionAtCenter(element, w, h, offsetX, offsetY, scale)"),console.log("\u2022 positionAtLeft/Right(element, w, h, percent, scale)"),console.log("\u2022 Corner positions: BottomLeft/Right, TopLeft/Right (all with scale)"),console.log("\u2022 applyPositionContract(element, w, h, contract)"),console.log("Example: positionAtCenter(mySprite, 400, 600, 0, -50, 1.2)")}function Lt(t,e,n=0){return t*e+n}function kt(t,e,n=0){return t*(1-e)+n}function Pt(t,e,n=0){return t*e+n}function Mt(t,e,n=0){return t*(1-e)+n}function U(t,e=0){return t/2+e}function Jr(t,e){return t*e}function Zr(t,e,n,i){var r,o,l,d,p,c,g,u,y,h,w,v,b,m,f,S,E,C,P,I;let a=0,s=0;switch(i.type){case"top":a=U(e,(o=(r=i.offset)==null?void 0:r.x)!=null?o:0),s=Lt(n,i.percent,(d=(l=i.offset)==null?void 0:l.y)!=null?d:0);break;case"bottom":a=U(e,(c=(p=i.offset)==null?void 0:p.x)!=null?c:0),s=kt(n,i.percent,(u=(g=i.offset)==null?void 0:g.y)!=null?u:0);break;case"left":a=Pt(e,i.percent,(h=(y=i.offset)==null?void 0:y.x)!=null?h:0),s=U(n,(v=(w=i.offset)==null?void 0:w.y)!=null?v:0);break;case"right":a=Mt(e,i.percent,(m=(b=i.offset)==null?void 0:b.x)!=null?m:0),s=U(n,(S=(f=i.offset)==null?void 0:f.y)!=null?S:0);break;case"center":a=U(e,(C=(E=i.offset)==null?void 0:E.x)!=null?C:0),s=U(n,(I=(P=i.offset)==null?void 0:P.y)!=null?I:0);break}t.position?t.position.set(a,s):(t.x=a,t.y=s),i.scale!==void 0&&i.scale!==1&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(i.scale,i.scale):(t.scale.x=i.scale,t.scale.y=i.scale))}function qa(t,e,n,i=.2,a=1,s=!0,r=!1){let o=Jr(n,i),l=kt(n,i/2);ce(t,U(e),l);let d=s?a*le.scaleFactor:a;de(t,d),r&&!un.find(p=>p.element===t)&&Vr(t,qa,e,n,i,a,s)}function Qr(t,e,n,i=.1,a=1){ce(t,U(e),Lt(n,i)),de(t,a)}function eo(t,e,n,i=0,a=0,s=1){ce(t,U(e,i),U(n,a)),de(t,s)}function to(t,e,n,i=.1,a=1){ce(t,Pt(e,i),U(n)),de(t,a)}function no(t,e,n,i=.1,a=1){ce(t,Mt(e,i),U(n)),de(t,a)}function io(t,e,n,i=.05,a=.05,s=1){ce(t,Pt(e,a),kt(n,i)),de(t,s)}function ao(t,e,n,i=.05,a=.05,s=1){ce(t,Mt(e,a),kt(n,i)),de(t,s)}function so(t,e,n,i=.05,a=.05,s=1){ce(t,Pt(e,a),Lt(n,i)),de(t,s)}function ro(t,e,n,i=.05,a=.05,s=1){ce(t,Mt(e,a),Lt(n,i)),de(t,s)}function ce(t,e,n){t&&t.position?typeof t.position.set=="function"?t.position.set(e,n):(t.position.x=e,t.position.y=n):t&&(t.x=e,t.y=n)}function de(t,e){e!==1&&t&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(e,e):t.scale.x!==void 0&&t.scale.y!==void 0&&(t.scale.x=e,t.scale.y=e))}var Ae={default:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}},wide:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.9,screen_scale_y:1.1},engine:{scale:1,background_scale:1.1,background_offset_y:0,background_alpha:.95,label_pulse_speed:3,label_pulse_intensity:.03}},square:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.85,screen_scale_y:.85},engine:{scale:1,background_scale:1,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}},tall:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1.1,screen_scale_y:.9},engine:{scale:1,background_scale:.95,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}}};function oo(t){return t&&Ae[t]?JSON.parse(JSON.stringify(Ae[t])):JSON.parse(JSON.stringify(et))}function Qe(t){Object.keys(t).forEach(e=>{let n=e;et[n]&&t[n]&&Object.assign(et[n],t[n])}),console.log("Config applied:",t)}function lo(t,e){let n=t/e;n>1.6?(Qe(Ae.wide),console.log("Applied WIDE config for ratio:",n)):n<.7?(Qe(Ae.tall),console.log("Applied TALL config for ratio:",n)):n>.8&&n<1.2?(Qe(Ae.square),console.log("Applied SQUARE config for ratio:",n)):(Qe(Ae.default),console.log("Applied DEFAULT config for ratio:",n))}if(typeof window!="undefined"){let t=window;t.configPresets=Ae,t.resolveAnchorVec2=t.resolveAnchorVec2||ze,t.resolveScreenAnchorPoint=t.resolveScreenAnchorPoint||gn,t.resolveScreenRatioPoint=t.resolveScreenRatioPoint||hn}yn();function _(t,e){let n=(a,s)=>s===0?a:n(s,a%s),i=n(t,e);return`${t/i}:${e/i}`}var Wc=[{id:"iphone-15-pro-max",label:"iPhone 15 Pro Max",width:430,height:932,category:"iphone",ratio:_(430,932)},{id:"iphone-15-pro",label:"iPhone 15 Pro",width:393,height:852,category:"iphone",ratio:_(393,852)},{id:"iphone-15",label:"iPhone 15",width:393,height:852,category:"iphone",ratio:_(393,852)},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"iphone",ratio:_(390,844)},{id:"iphone-se",label:"iPhone SE",width:375,height:667,category:"iphone",ratio:_(375,667)},{id:"iphone-12-mini",label:"iPhone 12 Mini",width:360,height:780,category:"iphone",ratio:_(360,780)}],Yc=[{id:"pixel-8-pro",label:"Pixel 8 Pro",width:448,height:998,category:"android",ratio:_(448,998)},{id:"pixel-8",label:"Pixel 8",width:412,height:915,category:"android",ratio:_(412,915)},{id:"samsung-s24-ultra",label:"Samsung S24 Ultra",width:412,height:915,category:"android",ratio:_(412,915)},{id:"samsung-s24",label:"Samsung S24",width:360,height:780,category:"android",ratio:_(360,780)},{id:"samsung-a54",label:"Samsung A54",width:412,height:915,category:"android",ratio:_(412,915)},{id:"oneplus-12",label:"OnePlus 12",width:412,height:915,category:"android",ratio:_(412,915)}],Xc=[{id:"ipad-pro-12",label:'iPad Pro 12.9"',width:1024,height:1366,category:"tablet",ratio:_(1024,1366)},{id:"ipad-pro-11",label:'iPad Pro 11"',width:834,height:1194,category:"tablet",ratio:_(834,1194)},{id:"ipad-air",label:"iPad Air",width:820,height:1180,category:"tablet",ratio:_(820,1180)},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"tablet",ratio:_(768,1024)},{id:"samsung-tab-s9",label:"Samsung Tab S9",width:800,height:1280,category:"tablet",ratio:_(800,1280)}],Xa=[{id:"playable-portrait",label:"Playable Portrait",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"mraid-320x480",label:"MRAID 320\xD7480",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"playable",ratio:_(390,844),mraidScale:.7},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"playable",ratio:_(768,1024),mraidScale:.7}];var Kc=[...Xa];var yo=Xa[0];Z();function bo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function vo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}async function wo(t){return await new Promise(e=>{let n=new Image;n.onload=()=>e({width:n.naturalWidth||n.width,height:n.naturalHeight||n.height}),n.onerror=()=>e(null),n.src=t})}async function bn(t){var e,n;try{console.log("[ImageUtils] Fetching image data from URL:",t);let i=await fetch(t);if(!i.ok)return console.warn("[ImageUtils] Fetch failed with status:",i.status,t),null;let a=await i.blob();console.log("[ImageUtils] Blob received, size:",a.size,"type:",a.type);let s=await bo(a),r=await wo(s),o=vo(s);return console.log("[ImageUtils] Success resolution:",r==null?void 0:r.width,"x",r==null?void 0:r.height,"mime:",o.mimeType),{base64:o.base64,mimeType:o.mimeType,dataUrl:s,width:(e=r==null?void 0:r.width)!=null?e:0,height:(n=r==null?void 0:r.height)!=null?n:0}}catch(i){return console.error("[ImageUtils] Error fetching image data:",i),null}}async function _t(t,e=30){try{console.log("[ImageUtils] Removing background color...");let n=await new Promise((c,g)=>{let u=new Image;u.onload=()=>c(u),u.onerror=()=>g(new Error("Failed to load image")),u.src=t}),i=document.createElement("canvas");i.width=n.width,i.height=n.height;let a=i.getContext("2d");if(!a)return console.error("[ImageUtils] Failed to get canvas context"),t;a.drawImage(n,0,0);let s=a.getImageData(0,0,i.width,i.height),r=s.data,l=[{name:"top-left",offset:0},{name:"top-right",offset:(i.width-1)*4},{name:"bottom-left",offset:(i.height-1)*i.width*4},{name:"bottom-right",offset:((i.height-1)*i.width+(i.width-1))*4}].map(c=>({r:r[c.offset],g:r[c.offset+1],b:r[c.offset+2]})),d=0;for(let c=0;c<r.length;c+=4){let g=r[c],u=r[c+1],y=r[c+2],h=!1;for(let w of l)if(Math.sqrt(Math.pow(g-w.r,2)+Math.pow(u-w.g,2)+Math.pow(y-w.b,2))<e){h=!0;break}h&&(r[c+3]=0,d++)}return console.log(`[ImageUtils] Removed background from ${d} pixels (4-corner sampling, tolerance: ${e})`),a.putImageData(s,0,0),i.toDataURL("image/png")}catch(n){return console.error("[ImageUtils] Error removing background:",n),t}}var Za=require("@google/genai");async function vn(t,e,n=[],i={}){var a,s,r,o,l,d,p;try{if(!(t!=null&&t.trim()))throw new Error("Gemini API key is required");if(!(e!=null&&e.trim()))throw new Error("Prompt is required");for(let v=0;v<n.length;v++){let b=n[v];if(!b.base64||!b.mimeType)throw new Error(`Image ${v+1} is missing required data`);if(b.base64.length<1e3&&console.warn(`Image ${v+1} data appears very small, may be corrupted`),!b.mimeType.startsWith("image/"))throw new Error(`Image ${v+1} has invalid MIME type: ${b.mimeType}`)}let c=new Za.GoogleGenAI({apiKey:t}),g="gemini-2.5-flash",u=[e];n.length>0&&n.forEach((v,b)=>{u.push({inlineData:{data:v.base64,mimeType:v.mimeType}}),console.log(`[Gemini] Added image ${b+1}: ${v.mimeType}, size: ${Math.round(v.base64.length/1024)}KB`)}),console.log(`[Gemini] Making request with ${n.length} images and prompt length: ${e.length}`);let y=await c.models.generateContent({model:g,contents:u}),h="",w=(r=(s=(a=y.candidates)==null?void 0:a[0])==null?void 0:s.content)==null?void 0:r.parts;if(w)for(let v of w)v.text&&(h+=v.text);if(!h.trim())throw new Error("Empty response from Gemini API");return console.log(`[Gemini] Response received, length: ${h.length}`),h}catch(c){throw console.error("[Gemini] API error:",c),(o=c.message)!=null&&o.includes("Unable to process input image")?new Error("Unable to process the uploaded image. Please ensure it's a valid PNG, JPG, or JPEG file under 10MB and not corrupted."):(l=c.message)!=null&&l.includes("API_KEY_INVALID")?new Error("Invalid Gemini API key. Please check your API key configuration."):(d=c.message)!=null&&d.includes("QUOTA_EXCEEDED")?new Error("Gemini API quota exceeded. Please try again later or check your billing."):(p=c.message)!=null&&p.includes("SAFETY")?new Error("Content was flagged by Gemini safety filters. Please try with different images."):c}}var Qa=require("@google/genai");async function It(t,e,n=[],i={}){try{console.info("[GEMINI-REAL-SDK] Initializing GoogleGenAI...");let a=new Qa.GoogleGenAI({apiKey:t}),s=[{text:e}];n.length>0&&n.forEach((o,l)=>{console.info(`[GEMINI-REAL-SDK] Adding image part ${l}`),s.push({inlineData:{mimeType:o.mimeType,data:o.base64}})}),console.info("[GEMINI-REAL-SDK] Calling generateContent with model: gemini-2.5-flash-image");let r=await a.models.generateContent({model:"gemini-2.5-flash-image",contents:s});if(console.info("[GEMINI-REAL-SDK] Received response from model"),!r.candidates||!r.candidates[0]||!r.candidates[0].content||!r.candidates[0].content.parts)throw new Error("Gemini 2.5 Flash Image returned invalid response structure.");for(let o of r.candidates[0].content.parts)if(o.text)console.log(o.text);else if(o.inlineData){let l=o.inlineData.data,d=o.inlineData.mimeType||"image/png";return console.info("[GEMINI-REAL-SDK] Found inline image data in response"),`data:${d};base64,${l}`}throw new Error("Gemini 2.5 Flash Image returned no image data.")}catch(a){throw console.error("[GEMINI-REAL-SDK] Error in generateImageWithGemini25Flash:",JSON.stringify(a,Object.getOwnPropertyNames(a),2)),a}}var xo=require("pixi.js");Ze();xt();Z();var ts=require("pixi.js");var Eo=require("pixi.js");Z();function jo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function Oo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}function Ro(t){return`
|
|
46
|
+
`,this.modal=i}attachModalListeners(){if(!this.modal)return;this.modal.querySelectorAll("[data-modal-close]").forEach(r=>{r.addEventListener("click",()=>this.close())}),this.modal.querySelectorAll("[data-tab]").forEach(r=>{r.addEventListener("click",o=>{let d=o.target.dataset.tab;d&&this.switchTab(d)})});let i=this.modal.querySelector("[data-ai-generate]");i==null||i.addEventListener("click",()=>{this.openAiEditor("generate")});let a=this.modal.querySelector("[data-ai-edit]");a==null||a.addEventListener("click",()=>{this.openAiEditor("edit")});let s=this.modal.querySelector("[data-modal-apply]");s==null||s.addEventListener("click",()=>{this.apply()}),this.modal.addEventListener("click",r=>{r.target===this.modal&&this.close()})}switchTab(e){if(!this.modal)return;this.modal.querySelectorAll("[data-tab]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab")===e)}),this.modal.querySelectorAll("[data-tab-panel]").forEach(a=>{a.classList.toggle("active",a.getAttribute("data-tab-panel")===e)})}openAiEditor(e){let n=window.__openAiEditor;if(typeof n!="function"){alert("AI Editor not available. Please check your setup.");return}let i="";e==="edit"&&this.currentAsset?i=`Edit this image: ${this.currentObjectId}`:i=`Create an image for: ${this.currentObjectId}`,n(this.currentObjectId||"unknown",i,this.currentAsset,{path:this.currentPath,onApply:a=>{this.onApplyCallback&&this.onApplyCallback(a),this.close()}})}apply(){this.onApplyCallback&&this.onApplyCallback("library/placeholder.png"),this.close()}close(){this.modal&&this.modal.parentNode&&this.modal.parentNode.removeChild(this.modal),this.modal=null,this.currentObjectId=null,this.currentPath=null,this.onApplyCallback=null}}});var el={};ca(el,{AspectClass:()=>$n,GameObject:()=>ct,GameObjectManager:()=>Dt,Renderer:()=>lt,ResponsiveUISystem:()=>qe,Transform:()=>ot,animateHandClick:()=>Ss,animatePanelEntrance:()=>xs,createBrushTexture:()=>Ps,createEndGamePanel:()=>ws,createHandTutorial:()=>Es,createThreeBase:()=>ys,createTutorialLabel:()=>Cs,getAspectClass:()=>Ht,getRegisteredFontIds:()=>vs,loadAsset:()=>Nn,loadCharacterFrames:()=>ks,registerFont:()=>bs,resolveFont:()=>ee,resolveFontWeight:()=>te,updateHandAnimation:()=>As});module.exports=Sr(el);var W=ge(require("three"),1);var he={};function bt(t,e,n=!1){he[t]||(he[t]=[]),he[t].push({fn:e,once:n})}function Zt(t,e){if(he[t]){if(!e){delete he[t];return}he[t]=he[t].filter(n=>n.fn!==e)}}function vt(t,...e){let n=he[t];if(n)for(let i of[...n])i.fn(...e),i.once&&Zt(t,i.fn)}function B(t,e){bt(t,e,!0)}var M=null,V=[],Ie=null;function ga(t){M=t,V=[],Ie!==null&&(clearTimeout(Ie),Ie=null)}function ha(){var t,e,n;return{endpoint:(M==null?void 0:M.endpoint)||"",transport:(M==null?void 0:M.transport)||"beacon",batchSize:(t=M==null?void 0:M.batchSize)!=null?t:10,flushIntervalMs:(e=M==null?void 0:M.flushIntervalMs)!=null?e:300,maxQueue:(n=M==null?void 0:M.maxQueue)!=null?n:200,debug:!!(M!=null&&M.debug)}}async function pa(t,e,n,i){let a=JSON.stringify(e);if(n==="beacon"&&typeof navigator!="undefined"&&typeof navigator.sendBeacon=="function")try{let s=navigator.sendBeacon(t,new Blob([a],{type:"application/json"}));i&&console.log("[handler.telemetry] beacon",s,e);return}catch(s){i&&console.warn("[handler.telemetry] beacon failed, fallback to fetch",s)}try{await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:a,keepalive:!0}),i&&console.log("[handler.telemetry] fetch",e)}catch(s){i&&console.warn("[handler.telemetry] fetch failed",s)}}function Qt(t,e){let n=ha();if(e&&n.endpoint){if(V.push(t),V.length>n.maxQueue&&(V=V.slice(V.length-n.maxQueue)),V.length>=n.batchSize){ua();return}Ie===null&&(Ie=window.setTimeout(()=>{Ie=null,ua()},n.flushIntervalMs))}}async function ua(){let t=ha();if(!t.endpoint||V.length===0)return;let e=V.splice(0,t.batchSize);await pa(t.endpoint,{events:e},t.transport,t.debug),V.length>0&&await pa(t.endpoint,{events:V.splice(0,t.batchSize)},t.transport,t.debug)}function ma(t){return Math.max(0,Math.min(1,t))}function Er(t){let e=String(t!=null?t:"power2.out");if(e==="linear")return n=>n;if(e==="sine.inOut")return n=>.5-Math.cos(Math.PI*n)/2;if(e==="power2.out"||e==="easeOutQuad")return n=>1-(1-n)*(1-n);if(e.startsWith("back.out")){let n=e.match(/back\.out\(([\d.]+)\)/),i=n?Number(n[1]):1.8;return a=>1+(i+1)*Math.pow(a-1,3)+i*Math.pow(a-1,2)}return n=>1-(1-n)*(1-n)}function Xe(){return typeof performance!="undefined"&&performance.now?performance.now():Date.now()}function Cr(t,e){let n=t==null?void 0:t[e];return typeof n=="number"?n:0}function fa(t,e,n){try{t[e]=n}catch{}}function Ar(t){let e=t==null?void 0:t.scale;if(!e)return null;let n=typeof e.x=="number"?e.x:1,i=typeof e.y=="number"?e.y:1;return{x:n,y:i}}function ya(t,e){let n=t==null?void 0:t.scale;if(n)try{typeof n.set=="function"?n.set(e.x,e.y):(typeof n.x=="number"&&(n.x=e.x),typeof n.y=="number"&&(n.y=e.y))}catch{}}function ba(t,e){let n=Ar(t);if(!n)return{from:null,to:null};let i=null,a=null;return typeof e.scale=="number"?(i=e.scale,a=e.scale):e.scale&&typeof e.scale=="object"&&(typeof e.scale.x=="number"&&(i=e.scale.x),typeof e.scale.y=="number"&&(a=e.scale.y)),typeof e.scaleX=="number"&&(i=e.scaleX),typeof e.scaleY=="number"&&(a=e.scaleY),i===null&&a===null?{from:null,to:null}:{from:{x:n.x,y:n.y},to:{x:i!=null?i:n.x,y:a!=null?a:n.y}}}function va(){let t=new Set,e=new WeakMap,n=null,i=()=>{if(n!=null)return;n=requestAnimationFrame(()=>{n=null,o(),t.size>0&&i()})},a=p=>{var g;t.add(p);let c=(g=e.get(p.target))!=null?g:new Set;c.add(p),e.set(p.target,c),i()},s=p=>{t.delete(p);let c=e.get(p.target);c&&(c.delete(p),c.size===0&&e.delete(p.target))},r=p=>{p.killed||(p.killed=!0,s(p))},o=()=>{var c,g;let p=Xe();for(let u of Array.from(t)){if(u.killed||u.paused)continue;let y=p-u.startMs-u.delayMs;if(y<0)continue;let h=u.durationMs>0?y/u.durationMs:1,w=ma(h),v=u.repeat>=0?u.repeat+1:1,b=u.repeat>0?Math.min(Math.floor(h),v-1):0;if(u.repeat>0&&h>=1){let S=h-b;w=ma(S)}let m=u.ease(w);u.yoyo&&b%2===1&&(m=1-m);for(let S of u.props)fa(u.target,S.key,S.from+(S.to-S.from)*m);u.scaleFrom&&u.scaleTo&&ya(u.target,{x:u.scaleFrom.x+(u.scaleTo.x-u.scaleFrom.x)*m,y:u.scaleFrom.y+(u.scaleTo.y-u.scaleFrom.y)*m});try{(c=u.onUpdate)==null||c.call(u)}catch{}if(h>=v){r(u);try{(g=u.onComplete)==null||g.call(u)}catch{}}}},l=(p,c,g)=>{var S;let u=Math.max(0,(typeof c.duration=="number"?c.duration:.5)*1e3),y=Math.max(0,(typeof c.delay=="number"?c.delay:0)*1e3+((S=g==null?void 0:g.delayMsOverride)!=null?S:0)),h=Er(c.ease),w=typeof c.repeat=="number"?Math.max(0,c.repeat|0):0,v=c.yoyo===!0,b=new Set(["duration","delay","ease","repeat","yoyo","onUpdate","onComplete","scale","scaleX","scaleY"]),m=[];for(let E of Object.keys(c)){if(b.has(E))continue;let C=c[E];typeof C=="number"&&m.push({key:E,from:Cr(p,E),to:C})}let f=ba(p,c);return{target:p,startMs:Xe(),delayMs:y,durationMs:u,ease:h,props:m,scaleFrom:f.from,scaleTo:f.to,repeat:w,yoyo:v,onUpdate:typeof c.onUpdate=="function"?c.onUpdate:void 0,onComplete:typeof c.onComplete=="function"?c.onComplete:void 0,killed:!1,paused:!1,pauseAtMs:null}},d={to(p,c){let g=l(p,c);return a(g),{kill:()=>r(g),pause:()=>{g.paused||(g.paused=!0,g.pauseAtMs=Xe())},resume:()=>{var h;if(!g.paused)return;let u=(h=g.pauseAtMs)!=null?h:Xe(),y=Xe()-u;g.startMs+=y,g.paused=!1,g.pauseAtMs=null},isActive:()=>!g.killed&&!g.paused}},fromTo(p,c,g){return d.set(p,c),d.to(p,g)},set(p,c){if(!p||!c)return;for(let u of Object.keys(c)){let y=c[u];u==="scale"||u==="scaleX"||u==="scaleY"||typeof y=="number"&&fa(p,u,y)}let g=ba(p,c);g.to&&ya(p,g.to)},killTweensOf(p){let c=e.get(p);if(c)for(let g of Array.from(c))r(g)},timeline(p={}){let c=[],g=0,u=!1,y=[],h=b=>{if(typeof b=="number")return Math.max(0,b*1e3);let m=typeof b=="string"?b.trim():"";return m.startsWith("+=")?g+Math.max(0,Number(m.slice(2))*1e3||0):m?Math.max(0,Number(m)*1e3||0):g},w=b=>{c.push(b);let m=Math.max(0,(typeof b.vars.duration=="number"?b.vars.duration:.5)*1e3);g=Math.max(g,b.atMs+m)},v={to(b,m,f){return w({kind:"to",target:b,vars:m,atMs:h(f)}),v},fromTo(b,m,f,S){return w({kind:"fromTo",target:b,vars:f,from:m,atMs:h(S)}),v},play(){var b,m;if(u)return v;u=!0,y=[];for(let f of c)f.kind==="fromTo"&&d.set(f.target,(b=f.from)!=null?b:{}),y.push(d.to(f.target,{...f.vars,delay:f.atMs/1e3+((m=f.vars.delay)!=null?m:0)}));return v},pause(){for(let b of y)b.pause();return v},kill(){for(let b of y)b.kill();y=[],u=!1}};return p.paused||v.play(),v}};return d}function wa(){if(typeof window=="undefined")return;let t=window;if(!t.gsap)try{t.gsap=va()}catch{}}var xa={name:"handler-playable-sdk",version:"1.0.57",type:"module",description:"Handler Playable SDK v0.1 with contract-aligned surface (root sandbox, canonical event envelope).",main:"dist/index.cjs",module:"dist/index.js",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.js",require:"./dist/index.cjs"},"./pixi":{types:"./dist/pixi/index.d.ts",import:"./dist/pixi/index.js",require:"./dist/pixi/index.cjs"},"./pixi/index.css":{import:"./dist/pixi/index.css",require:"./dist/pixi/index.css"},"./three":{types:"./dist/three/index.d.ts",import:"./dist/three/index.js",require:"./dist/three/index.cjs"},"./cli":{types:"./dist/cli/index.d.ts",import:"./dist/cli/index.js",require:"./dist/cli/index.cjs"}},bin:{"handler-student-helper":"./bin/student-helper.mjs","handler-validate":"./bin/validate.mjs","handler-sync-screens":"./bin/sync-screens.mjs","handler-brand-dna":"./bin/brand-dna.mjs","handler-setup-library":"./bin/setup-library.mjs","handler-screen-helper":"./bin/screen-helper.mjs"},scripts:{prebuild:"python3 src/preview/build-css.py",build:"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --minify --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli && npm run obfuscate && npm run postbuild",postbuild:"python3 src/preview/copy-css-to-dist.py","postbuild-cli":"cp src/cli/*.mjs dist/cli/ && mkdir -p dist/cli/student-helper && cp src/cli/student-helper/*.mjs dist/cli/student-helper/ && chmod +x dist/cli/*.mjs dist/cli/student-helper/*.mjs && chmod +x bin/*.mjs","create-mjs-symlinks":"cd dist && ln -sf index.js index.mjs && cd pixi && ln -sf index.js index.mjs && cd ../three && ln -sf index.js index.mjs","build:dev":"tsup src/index.ts src/pixi/index.ts src/three/index.ts src/cli/index.ts --format cjs,esm --dts --clean --external lottie-web --external jszip && npm run create-mjs-symlinks && npm run postbuild-cli",obfuscate:"javascript-obfuscator dist/pixi/index.js --output dist/pixi/index.js --config obfuscator.config.json && javascript-obfuscator dist/three/index.js --output dist/three/index.js --config obfuscator.config.json && javascript-obfuscator dist/cli/index.js --output dist/cli/index.js --config obfuscator.config.json && npm run obfuscate-cli","obfuscate-cli":'for file in dist/cli/*.mjs dist/cli/student-helper/*.mjs; do javascript-obfuscator "$file" --output "$file" --config obfuscator.config.json; done',lint:"eslint 'src/**/*.{ts,tsx}'",typecheck:"tsc --noEmit",prepublishOnly:"npm run build","publish:update":"node scripts/publish-and-update.cjs patch","publish:update:minor":"node scripts/publish-and-update.cjs minor","publish:update:major":"node scripts/publish-and-update.cjs major"},author:"Handler",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/HandlerAIGames/handler-playable-sdk.git"},files:["dist","bin","LICENSE","README.md"],peerDependencies:{"lottie-web":"^5.0.0","pixi.js":"^8.0.0",three:"^0.182.0"},peerDependenciesMeta:{"pixi.js":{optional:!0},three:{optional:!0},"lottie-web":{optional:!0}},devDependencies:{"@types/three":"^0.182.0",eslint:"^9.39.2","javascript-obfuscator":"^5.1.0","pixi.js":"8.8.1",three:"^0.182.0","ts-node":"^10.9.2",tsup:"^8.4.0",typescript:"^5.7.2","typescript-eslint":"^8.53.0"},dependencies:{"@google/genai":"^1.35.0","@google/generative-ai":"^0.24.1",jszip:"^3.10.1",sharp:"^0.34.5"}};var G=0,Lr=G++,Sa=G++,Ea=G++,Ca=G++,Aa=G++,Ta=G++,La=G++,ka=G++,Pa=G++,Ma=G++,_a=G++,Ia=G++,T=Lr;function ja(){return T===Sa}function Oa(){return T===Ea}function Ra(){return T===Ca}function za(){return T===Aa}function je(){return T===Ta}function Oe(){return T===La}function $a(){return T===ka}function Ha(){return T===Pa}function Da(){return T===Ma}function en(){return T===_a}function tn(){return T===Ia}function Na(){let t=typeof AD_PROTOCOL!="undefined"?AD_PROTOCOL:"none",e=typeof AD_NETWORK!="undefined"?AD_NETWORK:"web_embed";if(t==="mraid")try{mraid.getState(),T=Sa;return}catch{}else if(t==="dapi")try{dapi.isReady(),T=Ea;return}catch{}if(e==="facebook")try{typeof FbPlayableAd!="undefined"&&(T=Ca)}catch{}else if(e==="google")try{typeof ExitApi!="undefined"&&(T=Aa)}catch{}else if(e==="mintegral")window.gameReady&&(T=Ta);else if(e==="tapjoy")window.TJ_API&&(T=La);else if(e==="tiktok")window.openAppStore&&(T=ka);else if(e==="smadex")try{window.smxTracking&&(T=Pa)}catch{}else if(e==="snapchat")try{window.ScPlayableAd&&(T=Ma)}catch{}else e==="vungle"?T=_a:(t==="nucleo"||e==="nucleo")&&(T=Ia)}var wt=ge(require("lottie-web"),1),Fa=wt.default;typeof window!="undefined"&&(window.lottie=wt.default,window.__baseLottie=wt.default);var kr=require("pixi.js");var nn=require("pixi.js");var Pr=null;function an(t){Pr=t}St();xt();var Ke=require("pixi.js");St();var Rr=typeof __BUILD_MODE__!="undefined"?__BUILD_MODE__:"undefined",ln=Rr;if(typeof window!="undefined")try{let t=new XMLHttpRequest;if(t.open("GET","./build-settings.json",!1),t.send(),t.status===200&&t.responseText){let e=JSON.parse(t.responseText);e!=null&&e.buildMode&&(ln=e.buildMode,console.log(`[ObjectFactory] Build mode overridden by settings: ${ln}`))}}catch{}function zr(t){var n,i,a,s,r;if(typeof window!="undefined"&&window.resolveAnchorVec2)return window.resolveAnchorVec2(t);let e={center:{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};if(Array.isArray(t))return{x:(n=t[0])!=null?n:.5,y:(i=t[1])!=null?i:.5};if(t&&typeof t=="object"&&"x"in t&&"y"in t)return{x:(a=t.x)!=null?a:.5,y:(s=t.y)!=null?s:.5};if(typeof t=="string"){let o=t.trim().toLowerCase();return(r=e[o])!=null?r:{x:.5,y:.5}}return null}var fe=class{static async create(e,n,i){var l,d,p,c,g,u,y;console.log(`[ObjectFactory] create() called for: ${e}, __BUILD_MODE__: ${ln}`);let a=(l=n==null?void 0:n.render)==null?void 0:l.asset;if(!a){console.log(`[ObjectFactory] No asset definition for: ${e}, returning empty container`);let h=new Ke.Container;return this.applyTransform(h,n==null?void 0:n.transform,n),h}let s=(d=n==null?void 0:n.identity)==null?void 0:d.id;console.log(`[ObjectFactory] Calling AssetLoader.load() for: ${e}, configId: ${s}, type: ${a.type}, path: ${a.path}`);let r=await Ce.load(e,a,i,s);console.log(`[ObjectFactory] AssetLoader.load() completed for: ${e}, rawAsset type: ${(p=r==null?void 0:r.constructor)==null?void 0:p.name}`);let o;if(a.type==="image")console.log("[ObjectFactory] Creating Sprite from texture:",r,"for object:",e),o=new Ke.Sprite(r),console.log("[ObjectFactory] Created object:",o,"type:",(c=o==null?void 0:o.constructor)==null?void 0:c.name),this.applyTransform(o,n==null?void 0:n.transform,n);else if(a.type==="json")if(console.log("[ObjectFactory] JSON asset for",e,"rawAsset type:",(g=r==null?void 0:r.constructor)==null?void 0:g.name,r),r&&(((u=r.constructor)==null?void 0:u.name)==="Container"||r instanceof Ke.Container)){console.warn("[ObjectFactory] JSON asset is Container (from cache), reloading JSON directly");let h=[a.path,`/assets/${a.path}`,`assets/${a.path}`,`../assets/${a.path}`],w=!1;for(let v of h)try{let b=await fetch(v);if(b.ok){o=await b.json(),console.log("[ObjectFactory] Reloaded JSON directly from:",v,"type:",(y=o==null?void 0:o.constructor)==null?void 0:y.name),w=!0;break}}catch{continue}w||(console.error("[ObjectFactory] Failed to reload JSON from any path"),o=r)}else o=r;else o=r,o&&typeof o=="object"&&("x"in o||"position"in o)&&this.applyTransform(o,n==null?void 0:n.transform,n);return o}static applyTransform(e,n,i){var a,s,r,o;if(!(!n||!e)&&(n.position&&("x"in e&&"y"in e?(e.x=(a=n.position.x)!=null?a:0,e.y=(s=n.position.y)!=null?s:0):"position"in e&&e.position&&e.position.set((r=n.position.x)!=null?r:0,(o=n.position.y)!=null?o:0)),n.scale!==void 0&&"scale"in e&&e.scale&&(typeof e.scale=="object"&&"set"in e.scale?e.scale.set(n.scale):e.scale=n.scale),n.rotation!==void 0&&"rotation"in e&&(e.rotation=n.rotation),n.anchor&&"anchor"in e&&e.anchor)){let l=zr(n.anchor);l&&("set"in e.anchor?e.anchor.set(l.x,l.y):(e.anchor.x=l.x,e.anchor.y=l.y))}}};var Je=class{constructor(){this.config=null}init(e){this.config=e}get(e){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return this.config.objects.get(e)}getAllIds(){if(!this.config)throw new Error("RuntimeObjectRegistry not initialized. Call init() first.");return Array.from(this.config.objects.keys())}has(e){return this.config?this.config.objects.has(e):!1}};var Dr=ge(require("pixi.js"),1);typeof window!="undefined"&&(window.__basePixi=Dr);Ze();var Ct=require("pixi.js");Ze();var dn=class{constructor(){this.instanceCache=new Map;this.readyPromise=null;this.app=null;this.registry=new Je}init(e,n){this.registry.init(e),this.app=n}updateConfig(e){this.registry.init(e),this.instanceCache.clear(),this.readyPromise=null}async ready(){this.readyPromise&&await this.readyPromise;let n=this.registry.getAllIds().filter(a=>!this.instanceCache.has(a));if(n.length===0)return;let i=async a=>{a.length&&(console.log("[Assets] Loading objects:",a),await Promise.all(a.map(async s=>{var o;let r=this.registry.get(s);if(!r){console.warn("[Assets] No config found for object:",s);return}try{let l=await fe.create(s,r,this.app);this.instanceCache.set(s,l),console.log("[Assets] Loaded object:",s,(o=l==null?void 0:l.constructor)==null?void 0:o.name)}catch(l){console.error("[Assets] Failed to load object:",s,l)}})))};return this.readyPromise=(async()=>{await i(n);let a=this.registry.getAllIds().filter(s=>!this.instanceCache.has(s));a.length>0&&(console.warn("[Assets] Retrying missing assets:",a),await i(a)),console.log("[Assets] Ready. Cached objects:",Array.from(this.instanceCache.keys()))})(),this.readyPromise}resetScene(){this.instanceCache.clear(),this.readyPromise=null}async reloadObject(e){let n=this.registry.get(e);if(n){let i=await fe.create(e,n,this.app);this.instanceCache.set(e,i)}}get(e){return this.instanceCache.get(e)}},Fr=new dn,Br=new Proxy(Fr,{get(t,e){if(e in t&&typeof t[e]=="function")return t[e].bind(t);if(t.get(e))return t.get(e)}});Ze();var qr=require("pixi.js"),le={width:400,height:600,designWidth:400,scaleFactor:1},Tt={scale:1,position:1},un=[];function Vr(t,e,n,i,a,s,r){un.push({element:t,originalScale:s,positionHelper:e,heightPercent:a}),e(t,n,i,a,s,r,!1)}function Wr(){un.forEach(({element:t,originalScale:e,positionHelper:n,heightPercent:i})=>{let a=e*le.scaleFactor;n(t,le.width,le.height,i,a,!0,!1)})}function pn(t,e){console.log(`[SCREEN] updateScreenState called: ${t}x${e}`),le.width=t,le.height=e,le.scaleFactor=Math.min(t/le.designWidth,1.15),Tt.scale=le.scaleFactor,Tt.position=1,console.log(`[SCREEN] Global multipliers - scale: ${Tt.scale.toFixed(3)}`),Wr()}var et={layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}};function Yr(t,e,n){let i=et[t];i&&i[e]!==void 0&&(i[e]=n,console.log(`Updated ${t}.${e} = ${n}`))}function Xr(){return et}var Kr={center:{x:.5,y:.5},"center-center":{x:.5,y:.5},middle:{x:.5,y:.5},"middle-center":{x:.5,y:.5},"top-left":{x:0,y:0},"top-center":{x:.5,y:0},"top-right":{x:1,y:0},"bottom-left":{x:0,y:1},"bottom-center":{x:.5,y:1},"bottom-right":{x:1,y:1},"left-center":{x:0,y:.5},"right-center":{x:1,y:.5},"center-left":{x:0,y:.5},"center-right":{x:1,y:.5},left:{x:0,y:.5},right:{x:1,y:.5},top:{x:.5,y:0},bottom:{x:.5,y:1}};function At(t,e){return typeof t=="number"&&Number.isFinite(t)?t:e}function ze(t,e={x:.5,y:.5}){var n;if(Array.isArray(t))return{x:At(t[0],e.x),y:At(t[1],e.y)};if(t&&typeof t=="object"){let i=t;return{x:At(i.x,e.x),y:At(i.y,e.y)}}if(typeof t=="string"){let i=t.trim().toLowerCase();return(n=Kr[i])!=null?n:e}return e}function gn(t,e,n,i={}){var u,y,h,w,v,b;let a=ze(n),s=(u=i.inset)!=null?u:{},r=(y=i.padding)!=null?y:{x:0,y:0},o=((h=s.left)!=null?h:0)+r.x,l=((w=s.right)!=null?w:0)+r.x,d=((v=s.top)!=null?v:0)+r.y,p=((b=s.bottom)!=null?b:0)+r.y,c=Math.max(0,t-o-l),g=Math.max(0,e-d-p);return{x:o+c*a.x,y:d+g*a.y}}function hn(t,e,n,i={}){var h,w,v,b,m,f;let a=(h=i.inset)!=null?h:{},s=(w=i.padding)!=null?w:{x:0,y:0},r=((v=a.left)!=null?v:0)+s.x,o=((b=a.right)!=null?b:0)+s.x,l=((m=a.top)!=null?m:0)+s.y,d=((f=a.bottom)!=null?f:0)+s.y,p=Math.max(0,t-r-o),c=Math.max(0,e-l-d),g=ze(n,{x:.5,y:.5}),u=Math.min(Math.max(g.x,0),1),y=Math.min(Math.max(g.y,0),1);return{x:r+p*u,y:l+c*y}}if(typeof window!="undefined"){let t=window.innerWidth,e=window.innerHeight,n=()=>{let i=window.innerWidth,a=window.innerHeight;(i!==t||a!==e)&&(t=i,e=a,pn(i,a))};window.addEventListener("resize",n),window.addEventListener("orientationchange",()=>{setTimeout(n,100)}),window.mraid&&(window.mraid.addEventListener("viewableChange",n),window.mraid.addEventListener("sizeChange",n)),pn(window.innerWidth,window.innerHeight),window.updateDebugConfig=Yr,window.getDebugConfig=Xr,window.copyConfig=oo,window.applyConfig=Qe,window.applyConfigForRatio=lo,window.positionAtBottom=qa,window.positionAtTop=Qr,window.positionAtCenter=eo,window.positionAtLeft=to,window.positionAtRight=no,window.positionAtBottomLeft=io,window.positionAtBottomRight=ao,window.positionAtTopLeft=so,window.positionAtTopRight=ro,window.applyPositionContract=Zr,console.log("\u{1F3AE} Debug Config Functions Available:"),console.log("\u2022 updateDebugConfig(category, key, value)"),console.log("\u2022 getDebugConfig()"),console.log("\u2022 copyConfig(presetName)"),console.log("\u2022 applyConfig(config)"),console.log("\u2022 applyConfigForRatio(width, height)"),console.log("\u{1F4CD} Positioning Helpers Available (with scale):"),console.log("\u2022 positionAtBottom(element, w, h, percent, scale)"),console.log("\u2022 positionAtTop(element, w, h, percent, scale)"),console.log("\u2022 positionAtCenter(element, w, h, offsetX, offsetY, scale)"),console.log("\u2022 positionAtLeft/Right(element, w, h, percent, scale)"),console.log("\u2022 Corner positions: BottomLeft/Right, TopLeft/Right (all with scale)"),console.log("\u2022 applyPositionContract(element, w, h, contract)"),console.log("Example: positionAtCenter(mySprite, 400, 600, 0, -50, 1.2)")}function Lt(t,e,n=0){return t*e+n}function kt(t,e,n=0){return t*(1-e)+n}function Pt(t,e,n=0){return t*e+n}function Mt(t,e,n=0){return t*(1-e)+n}function U(t,e=0){return t/2+e}function Jr(t,e){return t*e}function Zr(t,e,n,i){var r,o,l,d,p,c,g,u,y,h,w,v,b,m,f,S,E,C,P,I;let a=0,s=0;switch(i.type){case"top":a=U(e,(o=(r=i.offset)==null?void 0:r.x)!=null?o:0),s=Lt(n,i.percent,(d=(l=i.offset)==null?void 0:l.y)!=null?d:0);break;case"bottom":a=U(e,(c=(p=i.offset)==null?void 0:p.x)!=null?c:0),s=kt(n,i.percent,(u=(g=i.offset)==null?void 0:g.y)!=null?u:0);break;case"left":a=Pt(e,i.percent,(h=(y=i.offset)==null?void 0:y.x)!=null?h:0),s=U(n,(v=(w=i.offset)==null?void 0:w.y)!=null?v:0);break;case"right":a=Mt(e,i.percent,(m=(b=i.offset)==null?void 0:b.x)!=null?m:0),s=U(n,(S=(f=i.offset)==null?void 0:f.y)!=null?S:0);break;case"center":a=U(e,(C=(E=i.offset)==null?void 0:E.x)!=null?C:0),s=U(n,(I=(P=i.offset)==null?void 0:P.y)!=null?I:0);break}t.position?t.position.set(a,s):(t.x=a,t.y=s),i.scale!==void 0&&i.scale!==1&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(i.scale,i.scale):(t.scale.x=i.scale,t.scale.y=i.scale))}function qa(t,e,n,i=.2,a=1,s=!0,r=!1){let o=Jr(n,i),l=kt(n,i/2);ce(t,U(e),l);let d=s?a*le.scaleFactor:a;de(t,d),r&&!un.find(p=>p.element===t)&&Vr(t,qa,e,n,i,a,s)}function Qr(t,e,n,i=.1,a=1){ce(t,U(e),Lt(n,i)),de(t,a)}function eo(t,e,n,i=0,a=0,s=1){ce(t,U(e,i),U(n,a)),de(t,s)}function to(t,e,n,i=.1,a=1){ce(t,Pt(e,i),U(n)),de(t,a)}function no(t,e,n,i=.1,a=1){ce(t,Mt(e,i),U(n)),de(t,a)}function io(t,e,n,i=.05,a=.05,s=1){ce(t,Pt(e,a),kt(n,i)),de(t,s)}function ao(t,e,n,i=.05,a=.05,s=1){ce(t,Mt(e,a),kt(n,i)),de(t,s)}function so(t,e,n,i=.05,a=.05,s=1){ce(t,Pt(e,a),Lt(n,i)),de(t,s)}function ro(t,e,n,i=.05,a=.05,s=1){ce(t,Mt(e,a),Lt(n,i)),de(t,s)}function ce(t,e,n){t&&t.position?typeof t.position.set=="function"?t.position.set(e,n):(t.position.x=e,t.position.y=n):t&&(t.x=e,t.y=n)}function de(t,e){e!==1&&t&&t.scale&&(typeof t.scale.set=="function"?t.scale.set(e,e):t.scale.x!==void 0&&t.scale.y!==void 0&&(t.scale.x=e,t.scale.y=e))}var Ae={default:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1,screen_scale_y:1},engine:{scale:1,background_scale:1.05,background_offset_y:0,background_alpha:.98,label_pulse_speed:3,label_pulse_intensity:.03}},wide:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.9,screen_scale_y:1.1},engine:{scale:1,background_scale:1.1,background_offset_y:0,background_alpha:.95,label_pulse_speed:3,label_pulse_intensity:.03}},square:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:.85,screen_scale_y:.85},engine:{scale:1,background_scale:1,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}},tall:{layout:{scale_multiplier:1,position_offset:{x:0,y:0},debug_rect_visible:!0,debug_rect_color:16711680,debug_rect_thickness:4,debug_rect_scale_x:1,debug_rect_scale_y:1,screen_scale_x:1.1,screen_scale_y:.9},engine:{scale:1,background_scale:.95,background_offset_y:0,background_alpha:1,label_pulse_speed:3,label_pulse_intensity:.03}}};function oo(t){return t&&Ae[t]?JSON.parse(JSON.stringify(Ae[t])):JSON.parse(JSON.stringify(et))}function Qe(t){Object.keys(t).forEach(e=>{let n=e;et[n]&&t[n]&&Object.assign(et[n],t[n])}),console.log("Config applied:",t)}function lo(t,e){let n=t/e;n>1.6?(Qe(Ae.wide),console.log("Applied WIDE config for ratio:",n)):n<.7?(Qe(Ae.tall),console.log("Applied TALL config for ratio:",n)):n>.8&&n<1.2?(Qe(Ae.square),console.log("Applied SQUARE config for ratio:",n)):(Qe(Ae.default),console.log("Applied DEFAULT config for ratio:",n))}if(typeof window!="undefined"){let t=window;t.configPresets=Ae,t.resolveAnchorVec2=t.resolveAnchorVec2||ze,t.resolveScreenAnchorPoint=t.resolveScreenAnchorPoint||gn,t.resolveScreenRatioPoint=t.resolveScreenRatioPoint||hn}yn();function _(t,e){let n=(a,s)=>s===0?a:n(s,a%s),i=n(t,e);return`${t/i}:${e/i}`}var Wc=[{id:"iphone-15-pro-max",label:"iPhone 15 Pro Max",width:430,height:932,category:"iphone",ratio:_(430,932)},{id:"iphone-15-pro",label:"iPhone 15 Pro",width:393,height:852,category:"iphone",ratio:_(393,852)},{id:"iphone-15",label:"iPhone 15",width:393,height:852,category:"iphone",ratio:_(393,852)},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"iphone",ratio:_(390,844)},{id:"iphone-se",label:"iPhone SE",width:375,height:667,category:"iphone",ratio:_(375,667)},{id:"iphone-12-mini",label:"iPhone 12 Mini",width:360,height:780,category:"iphone",ratio:_(360,780)}],Yc=[{id:"pixel-8-pro",label:"Pixel 8 Pro",width:448,height:998,category:"android",ratio:_(448,998)},{id:"pixel-8",label:"Pixel 8",width:412,height:915,category:"android",ratio:_(412,915)},{id:"samsung-s24-ultra",label:"Samsung S24 Ultra",width:412,height:915,category:"android",ratio:_(412,915)},{id:"samsung-s24",label:"Samsung S24",width:360,height:780,category:"android",ratio:_(360,780)},{id:"samsung-a54",label:"Samsung A54",width:412,height:915,category:"android",ratio:_(412,915)},{id:"oneplus-12",label:"OnePlus 12",width:412,height:915,category:"android",ratio:_(412,915)}],Xc=[{id:"ipad-pro-12",label:'iPad Pro 12.9"',width:1024,height:1366,category:"tablet",ratio:_(1024,1366)},{id:"ipad-pro-11",label:'iPad Pro 11"',width:834,height:1194,category:"tablet",ratio:_(834,1194)},{id:"ipad-air",label:"iPad Air",width:820,height:1180,category:"tablet",ratio:_(820,1180)},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"tablet",ratio:_(768,1024)},{id:"samsung-tab-s9",label:"Samsung Tab S9",width:800,height:1280,category:"tablet",ratio:_(800,1280)}],Xa=[{id:"playable-portrait",label:"Playable Portrait",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"mraid-320x480",label:"MRAID 320\xD7480",width:320,height:480,category:"playable",ratio:"2:3",mraidScale:1},{id:"iphone-14",label:"iPhone 14",width:390,height:844,category:"playable",ratio:_(390,844),mraidScale:.7},{id:"ipad-mini",label:"iPad Mini",width:768,height:1024,category:"playable",ratio:_(768,1024),mraidScale:.7}];var Kc=[...Xa];var yo=Xa[0];Z();function bo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function vo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}async function wo(t){return await new Promise(e=>{let n=new Image;n.onload=()=>e({width:n.naturalWidth||n.width,height:n.naturalHeight||n.height}),n.onerror=()=>e(null),n.src=t})}async function bn(t){var e,n;try{console.log("[ImageUtils] Fetching image data from URL:",t);let i=await fetch(t);if(!i.ok)return console.warn("[ImageUtils] Fetch failed with status:",i.status,t),null;let a=await i.blob();console.log("[ImageUtils] Blob received, size:",a.size,"type:",a.type);let s=await bo(a),r=await wo(s),o=vo(s);return console.log("[ImageUtils] Success resolution:",r==null?void 0:r.width,"x",r==null?void 0:r.height,"mime:",o.mimeType),{base64:o.base64,mimeType:o.mimeType,dataUrl:s,width:(e=r==null?void 0:r.width)!=null?e:0,height:(n=r==null?void 0:r.height)!=null?n:0}}catch(i){return console.error("[ImageUtils] Error fetching image data:",i),null}}async function _t(t,e=30){try{console.log("[ImageUtils] Removing background color...");let n=await new Promise((c,g)=>{let u=new Image;u.onload=()=>c(u),u.onerror=()=>g(new Error("Failed to load image")),u.src=t}),i=document.createElement("canvas");i.width=n.width,i.height=n.height;let a=i.getContext("2d");if(!a)return console.error("[ImageUtils] Failed to get canvas context"),t;a.drawImage(n,0,0);let s=a.getImageData(0,0,i.width,i.height),r=s.data,l=[{name:"top-left",offset:0},{name:"top-right",offset:(i.width-1)*4},{name:"bottom-left",offset:(i.height-1)*i.width*4},{name:"bottom-right",offset:((i.height-1)*i.width+(i.width-1))*4}].map(c=>({r:r[c.offset],g:r[c.offset+1],b:r[c.offset+2]})),d=0;for(let c=0;c<r.length;c+=4){let g=r[c],u=r[c+1],y=r[c+2],h=!1;for(let w of l)if(Math.sqrt(Math.pow(g-w.r,2)+Math.pow(u-w.g,2)+Math.pow(y-w.b,2))<e){h=!0;break}h&&(r[c+3]=0,d++)}return console.log(`[ImageUtils] Removed background from ${d} pixels (4-corner sampling, tolerance: ${e})`),a.putImageData(s,0,0),i.toDataURL("image/png")}catch(n){return console.error("[ImageUtils] Error removing background:",n),t}}var Za=require("@google/genai");async function vn(t,e,n=[],i={}){var a,s,r,o,l,d,p;try{if(!(t!=null&&t.trim()))throw new Error("Gemini API key is required");if(!(e!=null&&e.trim()))throw new Error("Prompt is required");for(let v=0;v<n.length;v++){let b=n[v];if(!b.base64||!b.mimeType)throw new Error(`Image ${v+1} is missing required data`);if(b.base64.length<1e3&&console.warn(`Image ${v+1} data appears very small, may be corrupted`),!b.mimeType.startsWith("image/"))throw new Error(`Image ${v+1} has invalid MIME type: ${b.mimeType}`)}let c=new Za.GoogleGenAI({apiKey:t}),g="gemini-2.5-flash",u=[e];n.length>0&&n.forEach((v,b)=>{u.push({inlineData:{data:v.base64,mimeType:v.mimeType}}),console.log(`[Gemini] Added image ${b+1}: ${v.mimeType}, size: ${Math.round(v.base64.length/1024)}KB`)}),console.log(`[Gemini] Making request with ${n.length} images and prompt length: ${e.length}`);let y=await c.models.generateContent({model:g,contents:u}),h="",w=(r=(s=(a=y.candidates)==null?void 0:a[0])==null?void 0:s.content)==null?void 0:r.parts;if(w)for(let v of w)v.text&&(h+=v.text);if(!h.trim())throw new Error("Empty response from Gemini API");return console.log(`[Gemini] Response received, length: ${h.length}`),h}catch(c){throw console.error("[Gemini] API error:",c),(o=c.message)!=null&&o.includes("Unable to process input image")?new Error("Unable to process the uploaded image. Please ensure it's a valid PNG, JPG, or JPEG file under 10MB and not corrupted."):(l=c.message)!=null&&l.includes("API_KEY_INVALID")?new Error("Invalid Gemini API key. Please check your API key configuration."):(d=c.message)!=null&&d.includes("QUOTA_EXCEEDED")?new Error("Gemini API quota exceeded. Please try again later or check your billing."):(p=c.message)!=null&&p.includes("SAFETY")?new Error("Content was flagged by Gemini safety filters. Please try with different images."):c}}var Qa=require("@google/genai");async function It(t,e,n=[],i={}){try{console.info("[GEMINI-REAL-SDK] Initializing GoogleGenAI...");let a=new Qa.GoogleGenAI({apiKey:t}),s=[{text:e}];n.length>0&&n.forEach((o,l)=>{console.info(`[GEMINI-REAL-SDK] Adding image part ${l}`),s.push({inlineData:{mimeType:o.mimeType,data:o.base64}})}),console.info("[GEMINI-REAL-SDK] Calling generateContent with model: gemini-2.5-flash-image");let r=await a.models.generateContent({model:"gemini-2.5-flash-image",contents:s});if(console.info("[GEMINI-REAL-SDK] Received response from model"),!r.candidates||!r.candidates[0]||!r.candidates[0].content||!r.candidates[0].content.parts)throw new Error("Gemini 2.5 Flash Image returned invalid response structure.");for(let o of r.candidates[0].content.parts)if(o.text)console.log(o.text);else if(o.inlineData){let l=o.inlineData.data,d=o.inlineData.mimeType||"image/png";return console.info("[GEMINI-REAL-SDK] Found inline image data in response"),`data:${d};base64,${l}`}throw new Error("Gemini 2.5 Flash Image returned no image data.")}catch(a){throw console.error("[GEMINI-REAL-SDK] Error in generateImageWithGemini25Flash:",JSON.stringify(a,Object.getOwnPropertyNames(a),2)),a}}var xo=require("pixi.js");Ze();xt();Z();var ts=require("pixi.js");var Eo=require("pixi.js");Z();function jo(t){return new Promise((e,n)=>{let i=new FileReader;i.onerror=()=>n(new Error("FileReader failed")),i.onload=()=>e(String(i.result||"")),i.readAsDataURL(t)})}function Oo(t){var a;let[e,n]=t.split(","),i=e==null?void 0:e.match(/data:(.*?);base64/);return{base64:n!=null?n:"",mimeType:(a=i==null?void 0:i[1])!=null?a:"image/png"}}function Ro(t){return`
|
|
47
47
|
Analyze these screenshots of a brand or game and extract its "Brand DNA".
|
|
48
48
|
|
|
49
49
|
Provide a concise summary (2-3 sentences) covering:
|