handler-playable-sdk 1.0.40 → 1.0.41
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-3F5DSSDY.js → chunk-5HCYLW64.js} +29 -29
- 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 +195 -195
- package/dist/index.js +1 -1
- package/dist/pixi/index.cjs +16 -16
- 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(_0x51bc4e,_0x57a203){var a0_0x2869ed={_0x485f1c:0x101,_0x426709:0xfe,_0x19b76a:0x103,_0x4e8708:'UBW)',_0x39ba65:0xf6,_0x1b12c0:0x19d,_0x2c6186:0x1a9,_0x537af2:'y0E)',_0x5c4a9a:0x1a5,_0x218391:0x1aa,_0x58aa72:0x1aa,_0x41ca9b:0x1ae,_0x51b838:0xfa,_0x26e451:'eazE',_0x3c00d4:0x112,_0x40e2ed:'D0MB',_0x53f9e0:0x18c,_0x1dd972:0xff,_0x3184f1:0x105,_0x26c794:'x]R1',_0x4c1262:0x476,_0x555f5c:0x47f,_0x5d86fa:0x466,_0x5c8eff:0x114,_0xa6cbe6:0x10b,_0x2b6022:0x10a,_0x1fe439:'gCUC',_0x5776fa:0x10f,_0x50e0b9:0x492,_0x19b961:0x48a,_0x3ebe94:0x49c,_0x5e225f:0x48d,_0x121d76:0xf2,_0x50be76:0x100,_0x69ebd5:'RLeI',_0xef45fa:0xeb,_0x14fcbe:0x102,_0x236bc1:'y7X2',_0x374a2c:0x1a4,_0xb9f058:'g6VF',_0x5c6494:0x19e},a0_0x1e4285={_0x58db42:0xc8},a0_0xee0d4d={_0x5dad9b:0x1d9},a0_0x411149={_0x597ed1:0x3ac};function _0xc61772(_0x359e43,_0x16118e,_0x42f4f6,_0x546d91,_0x5a6b54){return a0_0x36da(_0x16118e-a0_0x411149._0x597ed1,_0x359e43);}function _0x103b56(_0x265189,_0x210b2d,_0x55d587,_0xdd1eb2,_0x4ab8e2){return a0_0x36da(_0x210b2d- -a0_0xee0d4d._0x5dad9b,_0xdd1eb2);}function _0x246756(_0x49d2ed,_0x42b970,_0xf545d7,_0x6bef4a,_0x18ac3e){return a0_0x36da(_0x42b970-a0_0x1e4285._0x58db42,_0xf545d7);}var _0xc2a60=_0x51bc4e();while(!![]){try{var _0x253e72=-parseInt(_0x103b56(-a0_0x2869ed._0x485f1c,-a0_0x2869ed._0x426709,-a0_0x2869ed._0x19b76a,a0_0x2869ed._0x4e8708,-a0_0x2869ed._0x39ba65))/(-0xb*0x2ba+0x1bf1+0x1*0x20e)*(-parseInt(_0x246756(a0_0x2869ed._0x1b12c0,a0_0x2869ed._0x2c6186,a0_0x2869ed._0x537af2,0x1a6,0x1ae))/(0x5*0xe5+-0x2b3+-0x1c4))+parseInt(_0x246756(a0_0x2869ed._0x5c4a9a,a0_0x2869ed._0x218391,'nyl9',a0_0x2869ed._0x58aa72,a0_0x2869ed._0x41ca9b))/(0x5d*0x56+0x1501+0x2*-0x1a1e)+parseInt(_0x103b56(-a0_0x2869ed._0x51b838,-0x106,-0x106,a0_0x2869ed._0x26e451,-a0_0x2869ed._0x3c00d4))/(0x62*0x1c+-0x24a2+0x2*0xcf7)*(-parseInt(_0x246756(0x1ac,0x19d,a0_0x2869ed._0x40e2ed,0x192,a0_0x2869ed._0x53f9e0))/(-0x52a+0x1539*0x1+0x1*-0x100a))+parseInt(_0x103b56(-0xfb,-a0_0x2869ed._0x1dd972,-a0_0x2869ed._0x3184f1,'RLeI',-a0_0x2869ed._0x426709))/(-0x1efa+0x10e7*0x1+0xe19*0x1)+parseInt(_0xc61772(a0_0x2869ed._0x26c794,a0_0x2869ed._0x4c1262,a0_0x2869ed._0x555f5c,a0_0x2869ed._0x5d86fa,0x47e))/(0x1*-0xca9+-0x19c5+0x2675)*(parseInt(_0x103b56(-a0_0x2869ed._0x5c8eff,-a0_0x2869ed._0xa6cbe6,-a0_0x2869ed._0x2b6022,a0_0x2869ed._0x1fe439,-a0_0x2869ed._0x5776fa))/(0x4d2+-0x1a93+-0x1*-0x15c9))+-parseInt(_0xc61772('Cy^U',a0_0x2869ed._0x50e0b9,a0_0x2869ed._0x19b961,a0_0x2869ed._0x3ebe94,a0_0x2869ed._0x5e225f))/(-0xc04+0x18be+0xcb1*-0x1)*(parseInt(_0x103b56(-a0_0x2869ed._0x121d76,-0xf9,-a0_0x2869ed._0x50be76,a0_0x2869ed._0x69ebd5,-a0_0x2869ed._0xef45fa))/(0x3c0*0xa+0x2540+-0x83*0x92))+parseInt(_0x103b56(-0xf6,-a0_0x2869ed._0x19b76a,-a0_0x2869ed._0x14fcbe,a0_0x2869ed._0x236bc1,-0xfa))/(0x21*0xc5+0x6*-0x61f+0xb60)*(parseInt(_0x246756(0x197,a0_0x2869ed._0x374a2c,a0_0x2869ed._0xb9f058,0x1b1,a0_0x2869ed._0x5c6494))/(0x19e2+0x1b6b+-0x3541));if(_0x253e72===_0x57a203)break;else _0xc2a60['push'](_0xc2a60['shift']());}catch(_0x57c0fc){_0xc2a60['push'](_0xc2a60['shift']());}}}(a0_0x5642,0x68034+0x15cfa*-0x9+0xe7707*0x1));var a0_0x26febd=(function(){var _0x2e5055=!![];return function(_0x8f126e,_0x2fac5d){var a0_0x1f855c={_0x48667b:0xce,_0x3a2211:0xc2,_0x428b61:0xbb,_0x52f5c8:0xba},a0_0x32c412={_0x9591b4:0x19f},_0x5865bc=_0x2e5055?function(){function _0x416240(_0x12478d,_0x3cd91c,_0x9abf7f,_0xddf9e7,_0x3be7d0){return a0_0x36da(_0x9abf7f- -a0_0x32c412._0x9591b4,_0x3cd91c);}if(_0x2fac5d){var _0x4e3993=_0x2fac5d[_0x416240(-a0_0x1f855c._0x48667b,'ckdJ',-a0_0x1f855c._0x3a2211,-a0_0x1f855c._0x428b61,-a0_0x1f855c._0x52f5c8)](_0x8f126e,arguments);return _0x2fac5d=null,_0x4e3993;}}:function(){};return _0x2e5055=![],_0x5865bc;};}()),a0_0xe7b75=a0_0x26febd(this,function(){var a0_0x2959ae={_0x2ecebc:'OW(i',_0x1142a6:0x2e9,_0x220515:0x2e4,_0x53a6d0:0x2dc,_0x534979:'RLeI',_0x48a89e:0x2db,_0x376a95:0x2e2,_0x24e97e:0x2de,_0x39fa74:0x2c6,_0x5c4215:0x2c5,_0x4d8956:0x2ca,_0x886aa3:0x25f,_0x57c5ea:'Cy^U',_0x14f897:0x26d,_0x409af2:0x260,_0x420f7f:0x266,_0x343f59:0x26c,_0x58301e:0x27b,_0x11ea71:0x286,_0x43f262:'TtQe',_0x58080c:0x275,_0x3cb0a1:'N]3P',_0x35436d:0x2f2,_0x47d972:0x2eb,_0x3d3441:0x2ec,_0x95cedc:0x28f,_0x16213d:0x27c,_0x26f2d6:'EETx',_0x3cda24:0x28c,_0x1eccdf:0x284,_0x20115f:0x270,_0x40a6d8:'QQ62',_0x250026:0x274},a0_0x5644fd={_0x1cac07:0x1a4},a0_0xf49e36={_0x452f32:0x3c0},_0x46c61c={};_0x46c61c[_0x5f0f72(a0_0x2959ae._0x2ecebc,-a0_0x2959ae._0x1142a6,-a0_0x2959ae._0x220515,-a0_0x2959ae._0x53a6d0,-0x2e8)]=_0x5f0f72(a0_0x2959ae._0x534979,-a0_0x2959ae._0x48a89e,-a0_0x2959ae._0x376a95,-a0_0x2959ae._0x376a95,-a0_0x2959ae._0x24e97e)+')+)+)'+'+$';function _0x260de1(_0x3404b4,_0x5047ec,_0xbbb5e4,_0x206e62,_0x39e7c7){return a0_0x36da(_0x5047ec- -0x39f,_0x3404b4);}var _0x892852=_0x46c61c;function _0x5f0f72(_0xa7949e,_0x5bd4c9,_0x1e6d02,_0x483809,_0x33b952){return a0_0x36da(_0x483809- -a0_0xf49e36._0x452f32,_0xa7949e);}function _0x1513ed(_0x26ec34,_0x1a28a5,_0x453e6c,_0x307fe8,_0x5f35c3){return a0_0x36da(_0x5f35c3-a0_0x5644fd._0x1cac07,_0x307fe8);}return a0_0xe7b75[_0x260de1('D0MB',-a0_0x2959ae._0x39fa74,-0x2ce,-a0_0x2959ae._0x5c4215,-a0_0x2959ae._0x4d8956)+_0x1513ed(0x25d,a0_0x2959ae._0x886aa3,0x25d,a0_0x2959ae._0x57c5ea,a0_0x2959ae._0x14f897)]()['searc'+'h'](_0x892852[_0x1513ed(0x25c,a0_0x2959ae._0x409af2,a0_0x2959ae._0x420f7f,'N]3P',a0_0x2959ae._0x343f59)])['toStr'+_0x1513ed(a0_0x2959ae._0x58301e,a0_0x2959ae._0x11ea71,0x270,a0_0x2959ae._0x43f262,a0_0x2959ae._0x58080c)]()[_0x5f0f72(a0_0x2959ae._0x3cb0a1,-a0_0x2959ae._0x35436d,-a0_0x2959ae._0x47d972,-a0_0x2959ae._0x3d3441,-0x2e2)+_0x1513ed(a0_0x2959ae._0x95cedc,0x280,a0_0x2959ae._0x16213d,a0_0x2959ae._0x26f2d6,a0_0x2959ae._0x3cda24)+'r'](a0_0xe7b75)['searc'+'h'](_0x892852[_0x1513ed(a0_0x2959ae._0x1eccdf,a0_0x2959ae._0x20115f,0x266,a0_0x2959ae._0x40a6d8,a0_0x2959ae._0x250026)]);});function a0_0x5642(){var _0x41c915=['WPfaW5lcV8kicSoyrmo6mSolWQu','tmouWOaYnZFdTs1BtdS','b2RdN07dHq','krbIgSovxczgW4GtfgW','WQHBWQLpkCkczXm','W7WZfSo7W5LklNjNWPmS','vq7dKfbC','FIlcImkcWPe','W7uaWO0','CazAW4tdVsjOWOBdMmoZWPa','mmkbW6pdVSoYvSk+W47cJW','Bde1zSkhmqhcVq','W45XWRe0bCoEA1NdNKunWPRdTq','ovtcUw7cUxhcItqR','rCk7uLhdN8oVaKP5','gColewJdMa','WQZcO8kW','W63dUJO+WROWyW','WO/cQeqfE1xcTCkJtmk1DW','DW/cKCkYWOO','WO0nCHddS8kWW5vnWQq','eSoecdfLcCkIW4O','W7tdTmoKD8k6rIJcLSkCWRddJCk0rW','W6vnCYpdK8okqCousfBcLfldQa','W45AfcxdLG','W4VcPW4OWQhdMSk6WQvKWO7dLSkiWQ8','W53dO8kvxJtdMaG','fmkvW7ddMSoTWQv5abNcT1GMWPe','ehWjvSog','W5hcVbq+WRm','ifxcVmkhWQGlWR14','W4JcRq8LWQ/dNSk+WPrfWPRdLSkoWQa','tGFcRJtcNgZcKWimFq8jW48'];a0_0x5642=function(){return _0x41c915;};return a0_0x5642();}function a0_0x36da(_0x4e4c50,_0x3a6703){_0x4e4c50=_0x4e4c50-(0x1ffc+0x12dd+-0x3211);var _0x3cc5f0=a0_0x5642();var _0x2f9b9a=_0x3cc5f0[_0x4e4c50];if(a0_0x36da['vcwOnb']===undefined){var _0x4dd3e2=function(_0x2962c3){var _0x4997a8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3e1f0c='',_0x34301d='',_0x5d0a4a=_0x3e1f0c+_0x4dd3e2;for(var _0x459890=0x1f9b+-0x9*-0xa7+-0x257a,_0x308bf4,_0x9e10a3,_0x445163=-0x1*0xaf7+0xe4b+-0x1*0x354;_0x9e10a3=_0x2962c3['charAt'](_0x445163++);~_0x9e10a3&&(_0x308bf4=_0x459890%(-0x1dbd+0xd15*-0x2+0x199*0x23)?_0x308bf4*(-0x1b*-0x1e+0x1a6c+-0x2*0xeab)+_0x9e10a3:_0x9e10a3,_0x459890++%(0xbdb+-0xae*-0x5+-0xf3d))?_0x3e1f0c+=_0x5d0a4a['charCodeAt'](_0x445163+(-0x1753+0x234*0x5+0x6d*0x1d))-(0x1cff+0x53*-0x4f+-0x1*0x358)!==0xc34+0x7f*-0x5+-0x9b9?String['fromCharCode'](-0x781+0x1354+0x15*-0x84&_0x308bf4>>(-(-0x6*-0x1c1+0x86c+0x4bc*-0x4)*_0x459890&0x2589+-0x30d*0xa+-0x701*0x1)):_0x459890:0x40a+-0x19c*0xc+0xf46){_0x9e10a3=_0x4997a8['indexOf'](_0x9e10a3);}for(var _0x150fcb=0x1ee8+0x527*-0x1+-0x19c1,_0x31d449=_0x3e1f0c['length'];_0x150fcb<_0x31d449;_0x150fcb++){_0x34301d+='%'+('00'+_0x3e1f0c['charCodeAt'](_0x150fcb)['toString'](-0x1*-0x2dd+-0x5e4+-0x317*-0x1))['slice'](-(-0x1*-0x295+-0x88f+0x2fe*0x2));}return decodeURIComponent(_0x34301d);};var _0x46da00=function(_0x53964d,_0x5ea5ff){var _0x578e16=[],_0x203c1c=0x16fb*0x1+0x1*-0x863+-0xe98,_0x103c31,_0x4a0aaf='';_0x53964d=_0x4dd3e2(_0x53964d);var _0x3838b6;for(_0x3838b6=-0x93*0x21+0x3*0x98c+-0x9b1;_0x3838b6<0x3b*-0x7a+0x1732+-0x1*-0x5ec;_0x3838b6++){_0x578e16[_0x3838b6]=_0x3838b6;}for(_0x3838b6=0x2bf*0xe+-0x186*0x1+-0x1*0x24ec;_0x3838b6<0x12d*-0x1b+-0x3*0x1+0x1061*0x2;_0x3838b6++){_0x203c1c=(_0x203c1c+_0x578e16[_0x3838b6]+_0x5ea5ff['charCodeAt'](_0x3838b6%_0x5ea5ff['length']))%(0x1*0xa4e+-0x24f8+-0x1*-0x1baa),_0x103c31=_0x578e16[_0x3838b6],_0x578e16[_0x3838b6]=_0x578e16[_0x203c1c],_0x578e16[_0x203c1c]=_0x103c31;}_0x3838b6=-0x7*0x4bb+0x151*0x9+-0x1*-0x1544,_0x203c1c=0x10*0x15a+-0x57*-0xd+-0x1*0x1a0b;for(var _0x107bdd=0x936+-0xd70+0x43a;_0x107bdd<_0x53964d['length'];_0x107bdd++){_0x3838b6=(_0x3838b6+(-0xf*0x2b+0xed1+-0x419*0x3))%(0x6a*0x35+-0x217+0x1*-0x12db),_0x203c1c=(_0x203c1c+_0x578e16[_0x3838b6])%(0x21f6+-0xa92+0x599*-0x4),_0x103c31=_0x578e16[_0x3838b6],_0x578e16[_0x3838b6]=_0x578e16[_0x203c1c],_0x578e16[_0x203c1c]=_0x103c31,_0x4a0aaf+=String['fromCharCode'](_0x53964d['charCodeAt'](_0x107bdd)^_0x578e16[(_0x578e16[_0x3838b6]+_0x578e16[_0x203c1c])%(0xc5f+0x3*-0x72e+0xa2b)]);}return _0x4a0aaf;};a0_0x36da['fDntxI']=_0x46da00,a0_0x36da['guIsaC']={},a0_0x36da['vcwOnb']=!![];}var _0x4b145e=_0x3cc5f0[0xf92*-0x2+-0x1*-0x1bb3+0x371],_0x2d6dcc=_0x4e4c50+_0x4b145e,_0x366dce=a0_0x36da['guIsaC'][_0x2d6dcc];if(!_0x366dce){if(a0_0x36da['KRNnma']===undefined){var _0x104deb=function(_0x3591fd){this['icqgev']=_0x3591fd,this['OpoioN']=[0x121b*0x2+0x3*0x42+0x24fb*-0x1,0xc1c+0x1a61+-0x267d,-0x5*0x70a+-0x233*-0x5+0x1833],this['YiqFUi']=function(){return'newState';},this['NJTFCG']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['SoYsAS']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x104deb['prototype']['kbbfLS']=function(){var _0xf40732=new RegExp(this['NJTFCG']+this['SoYsAS']),_0x2525ac=_0xf40732['test'](this['YiqFUi']['toString']())?--this['OpoioN'][0x1*-0x471+-0x1ff1+0x2463]:--this['OpoioN'][0xbbc+0x5e7*0x3+-0x1d71];return this['FZDWfk'](_0x2525ac);},_0x104deb['prototype']['FZDWfk']=function(_0xd97bce){if(!Boolean(~_0xd97bce))return _0xd97bce;return this['vFeIfh'](this['icqgev']);},_0x104deb['prototype']['vFeIfh']=function(_0x5ea001){for(var _0x2ca6d7=0x7*-0x507+0x11fc+0x5*0x371,_0x210636=this['OpoioN']['length'];_0x2ca6d7<_0x210636;_0x2ca6d7++){this['OpoioN']['push'](Math['round'](Math['random']())),_0x210636=this['OpoioN']['length'];}return _0x5ea001(this['OpoioN'][0x39*-0x21+0x91*-0x3a+0x2833]);},new _0x104deb(a0_0x36da)['kbbfLS'](),a0_0x36da['KRNnma']=!![];}_0x2f9b9a=a0_0x36da['fDntxI'](_0x2f9b9a,_0x3a6703),a0_0x36da['guIsaC'][_0x2d6dcc]=_0x2f9b9a;}else _0x2f9b9a=_0x366dce;return _0x2f9b9a;}a0_0xe7b75();import{A as a0_0x253e99,B as a0_0x3f31e1,C as a0_0x18a2b8,D as a0_0x2d178d,b as a0_0x4ddef3,c as a0_0x52fedb,d as a0_0x4bbc29,e as a0_0x25743f,f as a0_0x395416,g as a0_0x5c7390,h as a0_0x38b164,i as a0_0x33f7b8,j as a0_0xdbf4b8,k as a0_0x188fd2,l as a0_0x52a49c,m as a0_0x399ac6,n as a0_0x109a4e,o as a0_0x3c6ffd,p as a0_0x33d0f7,q as a0_0x12c5d3,r as a0_0xd5f102,s as a0_0x4c0043,t as a0_0x3073b8,u as a0_0x414ac5,v as a0_0x2b1dd3,w as a0_0x3adfa6,x as a0_0x2f2b12,y as a0_0x5e9c80,z as a0_0x2dd3b6}from'../chunk-3F5DSSDY.js';import{a as a0_0x337d38,b as a0_0x55152a,c as a0_0x33a860,d as a0_0xa0e2d,e as a0_0x3d0f73}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';import'../chunk-JXBG6UFL.js';export{a0_0x337d38 as AssetCache,a0_0x33a860 as AssetLoader,a0_0x414ac5 as AssetSystem,a0_0xa0e2d as AssetTextures,a0_0x4c0043 as Assets,a0_0x3c6ffd as BaseSystem,a0_0x109a4e as GameEngine,a0_0x25743f as GameObject,a0_0x395416 as GameObjectManager,a0_0x399ac6 as ObjectFactory,a0_0x4bbc29 as Renderer,a0_0x33d0f7 as RuntimeObjectRegistry,a0_0x52fedb as Transform,a0_0x3f31e1 as applyScreenAnchor,a0_0x12c5d3 as basePixi,a0_0x3adfa6 as clearResponsiveElements,a0_0x4ddef3 as createPixiBase,a0_0xdbf4b8 as getRegisteredFontIds,a0_0x2b1dd3 as globalResponsiveMultipliers,a0_0x3d0f73 as initAssetTextures,a0_0x3073b8 as initAssets,a0_0x18a2b8 as layout,a0_0x52a49c as playLottieOverlay,a0_0x33f7b8 as registerFont,a0_0x55152a as registerType,a0_0x5e9c80 as resolveAnchorVec2,a0_0x5c7390 as resolveFont,a0_0x38b164 as resolveFontWeight,a0_0x2dd3b6 as resolveScreenAnchorPoint,a0_0x253e99 as resolveScreenRatioPoint,a0_0x2d178d as runInitSequence,a0_0x188fd2 as setLottieInstance,a0_0xd5f102 as spawnSceneFromConfig,a0_0x2f2b12 as updateScreenState};
|
|
1
|
+
(function(_0x4a8705,_0x54f312){var a0_0xb51363={_0x32d216:0x370,_0x2c5933:0x362,_0x284538:0x364,_0x4807c0:'PKtx',_0x366366:0x366,_0x29da0e:'Fp*%',_0x4ed52e:0x1dc,_0x553c84:0x1cf,_0xae84d1:0x1d2,_0x2bcac2:0x1d6,_0x75757b:'#f$E',_0x32f37d:0x1cd,_0x242ca2:0x1c7,_0x37dd99:0x1ce,_0x25e480:0x272,_0x5200c0:'T$)v',_0x6af898:0x258,_0x403b1b:0x264,_0x5b519e:0x262,_0x17ba9e:0x360,_0x986367:'18cs',_0x5add9d:0x359,_0x7cc0be:0x36f,_0x57a757:0x361,_0x503bae:'*Wsw',_0x1a4e6f:0x1c6,_0x401c0d:'*Wsw',_0x565c89:0x1d9,_0x2f78fe:0x1da,_0x17efe5:0x1cd,_0x45d202:0x362,_0x5b3fbf:'92zh',_0x38a098:0x36d,_0x39d835:0x355,_0x471d05:0x363,_0x324936:'(X0T',_0xdd68aa:0x357},a0_0x277b51={_0xaaf929:0x9e},a0_0x510682={_0x32a6c9:0xb},a0_0x63419d={_0x3cb384:0x1a6},_0x30032c=_0x4a8705();function _0x25fcf2(_0x44650e,_0x1cc042,_0x461d99,_0x257455,_0x13224c){return a0_0x26fe(_0x461d99-a0_0x63419d._0x3cb384,_0x257455);}function _0x242e7e(_0x21c334,_0x23deae,_0x2294b3,_0x4b0b95,_0x426f46){return a0_0x26fe(_0x426f46-a0_0x510682._0x32a6c9,_0x23deae);}function _0x382fff(_0x4a174a,_0x2a9a0a,_0x7c5623,_0x10efa4,_0x4aceee){return a0_0x26fe(_0x10efa4-a0_0x277b51._0xaaf929,_0x2a9a0a);}while(!![]){try{var _0x194db1=parseInt(_0x25fcf2(a0_0xb51363._0x32d216,a0_0xb51363._0x2c5933,a0_0xb51363._0x284538,a0_0xb51363._0x4807c0,a0_0xb51363._0x366366))/(0x4*-0x5c+0x215d+-0xe3*0x24)+parseInt(_0x242e7e(0x1da,a0_0xb51363._0x29da0e,a0_0xb51363._0x4ed52e,a0_0xb51363._0x553c84,a0_0xb51363._0xae84d1))/(-0x12f8*-0x2+0x1*0xf1+0x1*-0x26df)+parseInt(_0x242e7e(a0_0xb51363._0x2bcac2,a0_0xb51363._0x75757b,a0_0xb51363._0x32f37d,a0_0xb51363._0x242ca2,a0_0xb51363._0x37dd99))/(0x105d+0x10*0x8+-0x2cf*0x6)*(-parseInt(_0x382fff(a0_0xb51363._0x25e480,a0_0xb51363._0x5200c0,a0_0xb51363._0x6af898,a0_0xb51363._0x403b1b,a0_0xb51363._0x5b519e))/(0x4*-0x779+-0x6d9*0x4+0x394c))+parseInt(_0x25fcf2(0x369,a0_0xb51363._0x17ba9e,a0_0xb51363._0x366366,a0_0xb51363._0x986367,a0_0xb51363._0x32d216))/(0x493*-0x6+-0x1a7c+0x35f3)+parseInt(_0x25fcf2(a0_0xb51363._0x5add9d,a0_0xb51363._0x7cc0be,a0_0xb51363._0x57a757,a0_0xb51363._0x503bae,0x35d))/(0x1*0x1871+-0xaba+0x1*-0xdb1)+-parseInt(_0x242e7e(a0_0xb51363._0x1a4e6f,a0_0xb51363._0x401c0d,a0_0xb51363._0x565c89,a0_0xb51363._0x2f78fe,a0_0xb51363._0x17efe5))/(-0x1b7b+-0xc81+0x2803*0x1)*(-parseInt(_0x25fcf2(0x368,a0_0xb51363._0x366366,a0_0xb51363._0x45d202,a0_0xb51363._0x5b3fbf,a0_0xb51363._0x38a098))/(0xa*0x53+-0xad5+0x1*0x79f))+-parseInt(_0x25fcf2(0x359,a0_0xb51363._0x39d835,a0_0xb51363._0x471d05,a0_0xb51363._0x324936,a0_0xb51363._0xdd68aa))/(-0xd6*-0xc+-0x228c+0xf*0x1a3);if(_0x194db1===_0x54f312)break;else _0x30032c['push'](_0x30032c['shift']());}catch(_0x32abf0){_0x30032c['push'](_0x30032c['shift']());}}}(a0_0x5dfd,-0x89*0x2b53+-0x132101+0x398b1f));var a0_0x3fa948=(function(){var _0x5aceba=!![];return function(_0x23f0a8,_0x589e2e){var a0_0x1009f7={_0x2fe909:0x123,_0x1b2f9e:0x123,_0x45df6a:'IU4&',_0x572859:0x11b},_0x33161e=_0x5aceba?function(){function _0x70d1dc(_0x51357f,_0x5c5413,_0x184a78,_0x567be9,_0x44ff58){return a0_0x26fe(_0x51357f- -0x92,_0x184a78);}if(_0x589e2e){var _0x7c2588=_0x589e2e[_0x70d1dc(a0_0x1009f7._0x2fe909,a0_0x1009f7._0x1b2f9e,a0_0x1009f7._0x45df6a,a0_0x1009f7._0x572859,0x11c)](_0x23f0a8,arguments);return _0x589e2e=null,_0x7c2588;}}:function(){};return _0x5aceba=![],_0x33161e;};}()),a0_0xa7d770=a0_0x3fa948(this,function(){var a0_0x53cd8b={_0x331258:'uMen',_0x4c2de1:0x35,_0x44bb73:0x3c,_0x2f2857:0x27,_0x2780e1:'&YKP',_0x145cd3:0x3f,_0x4afd3d:0x36,_0x1b166e:0x59d,_0x11b5b5:0x5a5,_0x4bfd0b:'IU4&',_0x2ee875:0x596,_0x25ed48:0x595,_0x17a752:0x598,_0x72c73c:0x596,_0x374d13:'u%#9',_0x3c9d04:0x59a,_0x491d07:0x5a4,_0x4c8956:0x39,_0x4ee16e:0x40,_0x28efa3:0x41,_0x3a5c3c:0x32,_0x6c09d1:0x5a1,_0x3d7800:0x5aa,_0x20346a:'XO9D',_0x3ded00:0x5ab,_0x364eb2:0x58e,_0x26b09f:'T$)v',_0x3335fc:0x586,_0x452e06:0x2e,_0x10d552:'F23A',_0x55acf0:0x3c,_0x2f50cd:0x40,_0x1b8371:0x4a6,_0x569687:0x4a8,_0x37b77d:0x4a6,_0x37f138:'7TSW'},a0_0x9ffeb7={_0x45d9f3:0x1f6},_0x40fd69={};function _0x248f8e(_0xd50928,_0x21e323,_0xa7c77e,_0x5f472b,_0x4b4976){return a0_0x26fe(_0xd50928-0x3d4,_0xa7c77e);}function _0x2f3852(_0x228f73,_0x5c76c9,_0x1ef0bc,_0x43b383,_0x2c84f3){return a0_0x26fe(_0x1ef0bc- -a0_0x9ffeb7._0x45d9f3,_0x5c76c9);}_0x40fd69[_0x2f3852(-0x2c,a0_0x53cd8b._0x331258,-a0_0x53cd8b._0x4c2de1,-a0_0x53cd8b._0x44bb73,-0x42)]='(((.+'+')+)+)'+'+$';var _0x5b5d7e=_0x40fd69;function _0x1fa06e(_0x4c4302,_0x175e25,_0xe9dc6d,_0x2c5b3b,_0x7020e3){return a0_0x26fe(_0xe9dc6d-0x2d8,_0x7020e3);}return a0_0xa7d770['toStr'+_0x2f3852(-a0_0x53cd8b._0x2f2857,a0_0x53cd8b._0x2780e1,-0x31,-a0_0x53cd8b._0x145cd3,-a0_0x53cd8b._0x4afd3d)]()[_0x248f8e(a0_0x53cd8b._0x1b166e,a0_0x53cd8b._0x11b5b5,a0_0x53cd8b._0x4bfd0b,a0_0x53cd8b._0x2ee875,a0_0x53cd8b._0x25ed48)+'h'](_0x5b5d7e['hFWSO'])[_0x248f8e(a0_0x53cd8b._0x17a752,a0_0x53cd8b._0x72c73c,a0_0x53cd8b._0x374d13,a0_0x53cd8b._0x3c9d04,a0_0x53cd8b._0x491d07)+_0x2f3852(-a0_0x53cd8b._0x4c8956,'X(i9',-a0_0x53cd8b._0x4ee16e,-a0_0x53cd8b._0x28efa3,-a0_0x53cd8b._0x3a5c3c)]()[_0x248f8e(a0_0x53cd8b._0x6c09d1,a0_0x53cd8b._0x3d7800,a0_0x53cd8b._0x20346a,a0_0x53cd8b._0x3ded00,a0_0x53cd8b._0x3ded00)+_0x248f8e(0x58c,a0_0x53cd8b._0x364eb2,a0_0x53cd8b._0x26b09f,a0_0x53cd8b._0x3335fc,0x58e)+'r'](a0_0xa7d770)[_0x2f3852(-a0_0x53cd8b._0x452e06,a0_0x53cd8b._0x10d552,-a0_0x53cd8b._0x55acf0,-0x30,-a0_0x53cd8b._0x2f50cd)+'h'](_0x5b5d7e[_0x1fa06e(0x4a3,a0_0x53cd8b._0x1b8371,a0_0x53cd8b._0x569687,a0_0x53cd8b._0x37b77d,a0_0x53cd8b._0x37f138)]);});a0_0xa7d770();import{A as a0_0x566216,B as a0_0x3f3ac5,C as a0_0x17b4ae,D as a0_0x281c08,b as a0_0x274a2e,c as a0_0x509e90,d as a0_0x5d8f77,e as a0_0x59f9cb,f as a0_0x54ea6c,g as a0_0x150e2c,h as a0_0x354cbb,i as a0_0x1f2bde,j as a0_0x26a134,k as a0_0x4c3554,l as a0_0x3b24bd,m as a0_0x2a5893,n as a0_0x2920cc,o as a0_0x164457,p as a0_0x2a0702,q as a0_0x46af57,r as a0_0x545852,s as a0_0x1246c9,t as a0_0x302349,u as a0_0x53e1f1,v as a0_0x70f757,w as a0_0x567043,x as a0_0x2b43db,y as a0_0x26d672,z as a0_0x2aa1ad}from'../chunk-5HCYLW64.js';import{a as a0_0x4ec33e,b as a0_0x380584,c as a0_0xc495cc,d as a0_0x320b6b,e as a0_0x1e750a}from'../chunk-I5OOVR5U.js';import'../chunk-PW2FGMCO.js';import'../chunk-HVKF2KYL.js';import'../chunk-E6WJCS24.js';function a0_0x5dfd(){var _0xdd9dc1=['xmk+W4W4WPrcW6BdQetdGW','sCoaneyv','WPBcHSk+sxG','W40aeW','wJiRWQZcHSo7WOFcPCklWQJcVWNdQW','WPNcGSkMv8o0','W7tcR8kMxMbZka','tCkjWQRdRs8','dmkWkKhdKdqyWQ9HsSkAhG','WRj+W4FcSeNdTqW','uwj1WO3dMCors8kZlb3dOmklW5ddMq','EbdcH8oaW7RdKXbIpez4ymoJ','WPChW45DW6hcKCkZWPRdSZPBeCoRWP8','WOZcMSkaWQ5SW6lcLKpcQSoKhIno','q8oOWRfKtW','dmkYlKpdLZHLW4P1uCkRbcRcIW','WPtdUYldMCo/WQSGW7ldM8ok','W69VyCovW44','nCkhqq','W5ldGmoXg8oEDaCwWOhcOW','W6e0WOFcUwXEbmoQWQFdN8oUWOft','uJaNWQFcGCo7WOdcGmkRWORcKIJdRa','WOtcK8kVv2i','WPBdVstdKCkkW7XvW6pdHSo2qSkXWRq','W5SrW5C5WOyLWQJcTCkvba','W5mvW5q1W7zqWOJcSSkYe2xdKG','yCoxWQyDWQG','WRSKWRZdOZxcON7cKCk4WRvqWOuWkW'];a0_0x5dfd=function(){return _0xdd9dc1;};return a0_0x5dfd();}function a0_0x26fe(_0xe3177f,_0xf5d2b4){_0xe3177f=_0xe3177f-(-0x1309*0x1+0x138*-0x1+0x15f6);var _0x52d791=a0_0x5dfd();var _0x4b7996=_0x52d791[_0xe3177f];if(a0_0x26fe['mngNtD']===undefined){var _0x27f459=function(_0x390f98){var _0x1a9a04='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5c5795='',_0x327daa='',_0xe25fdf=_0x5c5795+_0x27f459;for(var _0x206dd2=0x8*0x3cd+-0x2023*0x1+0x1*0x1bb,_0xbd8c5c,_0xb7af3f,_0x582334=0x4c*0x45+-0x1d6f+0x8f3;_0xb7af3f=_0x390f98['charAt'](_0x582334++);~_0xb7af3f&&(_0xbd8c5c=_0x206dd2%(-0x98*0x1+0x322+-0x286*0x1)?_0xbd8c5c*(-0x1*0x8f5+0x7eb*0x3+-0xe8c)+_0xb7af3f:_0xb7af3f,_0x206dd2++%(0x5*-0x599+0x1f93+-0x392))?_0x5c5795+=_0xe25fdf['charCodeAt'](_0x582334+(-0xb6a+0x3*0x1e6+0xb*0x86))-(-0xe86+0xff+0xd91)!==0x1049+-0x43e+-0xc0b?String['fromCharCode'](0x1950+-0x1732+-0x29*0x7&_0xbd8c5c>>(-(-0x5*0x3e5+-0x1*0xeda+-0x2255*-0x1)*_0x206dd2&0x1ba6+0x3b*0x4b+0x2ce9*-0x1)):_0x206dd2:-0x2053+-0x1a10+0x3a63){_0xb7af3f=_0x1a9a04['indexOf'](_0xb7af3f);}for(var _0x53aa64=-0xcf7*-0x1+0x69e+-0x1395,_0x33a545=_0x5c5795['length'];_0x53aa64<_0x33a545;_0x53aa64++){_0x327daa+='%'+('00'+_0x5c5795['charCodeAt'](_0x53aa64)['toString'](-0x251f+0x71d+0x1e12))['slice'](-(0x93a*-0x3+0x1*0x8cc+-0x64c*-0x3));}return decodeURIComponent(_0x327daa);};var _0x593b81=function(_0x227792,_0x3abd8f){var _0x455a96=[],_0x1eee77=-0x2ef*-0xb+0x1fb4+-0x3ff9,_0x5305bc,_0x427178='';_0x227792=_0x27f459(_0x227792);var _0x3bee42;for(_0x3bee42=0x1afb*0x1+0x2595+-0x8*0x812;_0x3bee42<-0x4*0x1db+0x175e+-0xef2;_0x3bee42++){_0x455a96[_0x3bee42]=_0x3bee42;}for(_0x3bee42=-0x4a3*0x1+0x2b1*0x7+-0xe34;_0x3bee42<0x1fc0+-0x3a0+0x8*-0x364;_0x3bee42++){_0x1eee77=(_0x1eee77+_0x455a96[_0x3bee42]+_0x3abd8f['charCodeAt'](_0x3bee42%_0x3abd8f['length']))%(-0x1d01+-0x2*-0xf7+0x1*0x1c13),_0x5305bc=_0x455a96[_0x3bee42],_0x455a96[_0x3bee42]=_0x455a96[_0x1eee77],_0x455a96[_0x1eee77]=_0x5305bc;}_0x3bee42=0x20b7*-0x1+0xe2d*0x1+0x128a,_0x1eee77=-0x132d*-0x2+0x73+0x15*-0x1d9;for(var _0x58633e=-0x266*0xf+-0x1437+0x3831;_0x58633e<_0x227792['length'];_0x58633e++){_0x3bee42=(_0x3bee42+(-0x1d*-0xf1+-0x22a1+0x755))%(-0x1c97+-0x211a+0x3eb1),_0x1eee77=(_0x1eee77+_0x455a96[_0x3bee42])%(-0x86*-0x7+-0x2222+0x4*0x7de),_0x5305bc=_0x455a96[_0x3bee42],_0x455a96[_0x3bee42]=_0x455a96[_0x1eee77],_0x455a96[_0x1eee77]=_0x5305bc,_0x427178+=String['fromCharCode'](_0x227792['charCodeAt'](_0x58633e)^_0x455a96[(_0x455a96[_0x3bee42]+_0x455a96[_0x1eee77])%(0x0+0x1ac7*-0x1+-0xd*-0x223)]);}return _0x427178;};a0_0x26fe['cJclnD']=_0x593b81,a0_0x26fe['TFnejA']={},a0_0x26fe['mngNtD']=!![];}var _0x126dcc=_0x52d791[-0xb*-0xb+0x10e*-0x10+0x1067],_0x4d84df=_0xe3177f+_0x126dcc,_0x229839=a0_0x26fe['TFnejA'][_0x4d84df];if(!_0x229839){if(a0_0x26fe['NEhati']===undefined){var _0x5236b7=function(_0x12d935){this['lojBkD']=_0x12d935,this['PGEhcq']=[0x15b6+-0xd1d+0x4*-0x226,-0x109d*0x1+-0xc4d*0x1+-0x2*-0xe75,0x83e+-0xc9d*-0x1+0x1*-0x14db],this['tRImhS']=function(){return'newState';},this['PQbbrv']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['XJWGTc']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x5236b7['prototype']['bSmWKe']=function(){var _0x102db3=new RegExp(this['PQbbrv']+this['XJWGTc']),_0x59ca10=_0x102db3['test'](this['tRImhS']['toString']())?--this['PGEhcq'][0x4*-0x5c+0x215d+-0xe3*0x24]:--this['PGEhcq'][-0x12f8*-0x2+0x1*0xf1+0x1*-0x26e1];return this['XMUHYC'](_0x59ca10);},_0x5236b7['prototype']['XMUHYC']=function(_0x434dd6){if(!Boolean(~_0x434dd6))return _0x434dd6;return this['VBmoMj'](this['lojBkD']);},_0x5236b7['prototype']['VBmoMj']=function(_0xb65213){for(var _0x11bea1=0x105d+0x10*0x8+-0x59f*0x3,_0x3502ef=this['PGEhcq']['length'];_0x11bea1<_0x3502ef;_0x11bea1++){this['PGEhcq']['push'](Math['round'](Math['random']())),_0x3502ef=this['PGEhcq']['length'];}return _0xb65213(this['PGEhcq'][0x4*-0x779+-0x6d9*0x4+0x3948]);},new _0x5236b7(a0_0x26fe)['bSmWKe'](),a0_0x26fe['NEhati']=!![];}_0x4b7996=a0_0x26fe['cJclnD'](_0x4b7996,_0xf5d2b4),a0_0x26fe['TFnejA'][_0x4d84df]=_0x4b7996;}else _0x4b7996=_0x229839;return _0x4b7996;}import'../chunk-JXBG6UFL.js';export{a0_0x4ec33e as AssetCache,a0_0xc495cc as AssetLoader,a0_0x53e1f1 as AssetSystem,a0_0x320b6b as AssetTextures,a0_0x1246c9 as Assets,a0_0x164457 as BaseSystem,a0_0x2920cc as GameEngine,a0_0x59f9cb as GameObject,a0_0x54ea6c as GameObjectManager,a0_0x2a5893 as ObjectFactory,a0_0x5d8f77 as Renderer,a0_0x2a0702 as RuntimeObjectRegistry,a0_0x509e90 as Transform,a0_0x3f3ac5 as applyScreenAnchor,a0_0x46af57 as basePixi,a0_0x567043 as clearResponsiveElements,a0_0x274a2e as createPixiBase,a0_0x26a134 as getRegisteredFontIds,a0_0x70f757 as globalResponsiveMultipliers,a0_0x1e750a as initAssetTextures,a0_0x302349 as initAssets,a0_0x17b4ae as layout,a0_0x3b24bd as playLottieOverlay,a0_0x1f2bde as registerFont,a0_0x380584 as registerType,a0_0x26d672 as resolveAnchorVec2,a0_0x150e2c as resolveFont,a0_0x354cbb as resolveFontWeight,a0_0x2aa1ad as resolveScreenAnchorPoint,a0_0x566216 as resolveScreenRatioPoint,a0_0x281c08 as runInitSequence,a0_0x4c3554 as setLottieInstance,a0_0x545852 as spawnSceneFromConfig,a0_0x2b43db as updateScreenState};
|
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 Ke(){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=Ke();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:Ke(),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=Ke())},resume:()=>{var h;if(!g.paused)return;let u=(h=g.pauseAtMs)!=null?h:Ke(),y=Ke()-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.40",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 Xe=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 Xe.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 Xe.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 Xe.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 Kr(){return et}var Xr={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=Xr[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=Kr,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)}],Kc=[{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)}],Ka=[{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 Xc=[...Ka];var yo=Ka[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 Ke(){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=Ke();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:Ke(),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=Ke())},resume:()=>{var h;if(!g.paused)return;let u=(h=g.pauseAtMs)!=null?h:Ke(),y=Ke()-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.41",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 Xe=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 Xe.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 Xe.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 Xe.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 Kr(){return et}var Xr={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=Xr[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=Kr,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)}],Kc=[{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)}],Ka=[{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 Xc=[...Ka];var yo=Ka[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:
|