viral-viewer-2 6.9.6 → 6.9.8

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.
@@ -1,4 +1,4 @@
1
- import { B as S, a as V, V as Z } from "./index-BNX3NNA-.mjs";
1
+ import { B as S, a as V, V as Z } from "./index-B55mwbMr.mjs";
2
2
  (function() {
3
3
  var s = "b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiE8AdilveoveovrrwrrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:PlCo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxY9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVJ9V29VVbmE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9WbHa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbOK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbAl79IV9RbXDwebcekdKYq;i28Adbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:xjjjb8AdnaiTmbarc;adfadalz:wjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:xjjjb8Aarc;abfarc;adfalz:wjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:xjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:wjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:xjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:xjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:xjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:wjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:xjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:wjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:xjjjbawfhokaoarc;adfalz:wjjjbalfhodnaDTmbaoaraez:wjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:xjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk:Ylvdud99due99iudnaeTmbceaicufgvthocuaitcu7:Zhrcuavtcu7:Zhwcbhvadcl9hhDcbhqindndnalcwfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikdndnalIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohdxekcjjjj94hdkadai9Rcd9TgxaifhidndnalclfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEarNJbbbZMgk:lJbbb9p9DTmbak:Ohdxekcjjjj94hdkadai9Rcd9ThddndnalcxfIdbgkJbbbbakJbbbb9GEgkJbbjZakJbbjZ9FEawNJbbbZMgk:lJbbb9p9DTmbak:Ohmxekcjjjj94hmkadaifhiaoamVhmdndnaDmbabavfgPai86bbaPcifam86bbaPcdfad86bbaPcefax86bbxekabaqfgPai87ebaPcofam87ebaPclfad87ebaPcdfax87ebkalczfhlavclfhvaqcwfhqaecufgembkkk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:xjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;q:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:wjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:pjjjbavyd:GehDadci9Ugqcbyd;q:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:xjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;q:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;q:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;u:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;q:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;q:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;q:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:xjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:ojjjbkQbabaeadaic;m:jjjbz:ojjjbk9DeeuabcFeaicdtz:xjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:xjjjb8AalcuadcitgoadcFFFFe0Ecbyd;q:kjjbHjjjjbbgrBdxalceBd2araeadaicezNjjjbalcuaoadcjjjjoGEcbyd;q:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:xjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;u:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb", D = new Uint8Array([
4
4
  32,
@@ -13,36 +13,4 @@ export declare class ViralAnimation {
13
13
  rainAnimation(): void;
14
14
  private isRainEnabled;
15
15
  toggleRain(value: boolean): void;
16
- /**
17
- * Update spatial visibility based on current camera position
18
- */
19
- private updateSpatialVisibility;
20
- /**
21
- * Cleanup distant spatial meshes to free memory
22
- */
23
- private cleanupDistantSpatialMeshes;
24
- /**
25
- * Get spatial mesh statistics for debugging
26
- */
27
- getSpatialStats(): {
28
- totalCells: number;
29
- loadedCells: number;
30
- visibleCells: number;
31
- } | null;
32
- /**
33
- * Log spatial mesh statistics to console (for debugging)
34
- */
35
- logSpatialStats(): void;
36
- /**
37
- * Set spatial update frequency (for performance tuning)
38
- */
39
- setSpatialUpdateFrequency(fps: number): void;
40
- /**
41
- * Set cleanup frequency (for memory management tuning)
42
- */
43
- setCleanupFrequency(seconds: number): void;
44
- /**
45
- * Toggle debug mode for spatial meshes
46
- */
47
- toggleSpatialDebug(enabled: boolean): void;
48
16
  }
@@ -1,9 +1,7 @@
1
1
  import { Box3, Mesh } from "three";
2
2
  import { ViralBatchedMesh } from "./viral-batched-mesh";
3
3
  import { BufferElement } from "../..";
4
- import { LineMaterial } from "three/examples/jsm/lines/LineMaterial";
5
4
  import { ViralInstancedMeshV2 } from "./viral-instanced-mesh-v2";
6
- import { ViralEdgeMesh } from "./viral-edge-mesh";
7
5
  import { WorkerThreadPool } from "../worker/base/worker-pool";
8
6
  /**
9
7
  * this class is a wrapper, it stand for a clone of bim model (optimize version to increase performance when render)
@@ -11,7 +9,6 @@ import { WorkerThreadPool } from "../worker/base/worker-pool";
11
9
  *
12
10
  */
13
11
  export declare class ViralMergedModel extends Mesh {
14
- protected _edgeMesh: ViralEdgeMesh;
15
12
  workerPool: WorkerThreadPool | null;
16
13
  constructor();
17
14
  private _initializeWorkerPool;
@@ -140,36 +137,6 @@ export declare class ViralMergedModel extends Mesh {
140
137
  * Reset all elements to full opacity
141
138
  */
142
139
  resetElementOpacity(): void;
143
- enableEdge(material: LineMaterial, thresholdDeg?: number): void;
144
- showEdge(): void;
145
- hideEdge(): void;
146
- /**
147
- * Refresh edges when meshes are updated
148
- */
149
- refreshEdges(): void;
150
- /**
151
- * Update edge material
152
- */
153
- updateEdgeMaterial(material: LineMaterial): void;
154
- /**
155
- * Update edge threshold
156
- */
157
- updateEdgeThreshold(thresholdDeg: number): void;
158
- /**
159
- * Get edge mesh statistics
160
- */
161
- getEdgeStats(): {
162
- isVisible: boolean;
163
- vertexCount: number;
164
- meshCount: {
165
- batched: number;
166
- instanced: number;
167
- };
168
- };
169
- /**
170
- * Notify edge mesh when meshes are updated (call this after batching or rebuilding)
171
- */
172
- onMeshUpdated(mesh?: ViralBatchedMesh | ViralInstancedMeshV2): void;
173
140
  /**
174
141
  * @deprecated No longer needed - visibility is now alpha-based (GPU-accelerated)
175
142
  * Kept for backward compatibility but does nothing
@@ -6,9 +6,12 @@ export declare class ViralCentralizedEventHandler {
6
6
  private elementProperties;
7
7
  private contextMenuEventHandler;
8
8
  /**
9
- ** this for optimize purpose; when renderer become too heavy, it will hide object when camera move
9
+ ** Performance optimization: disable expensive effects during camera movement
10
+ ** Uses debounced sleep detection to avoid flickering during micro-movements
11
+ ** 🔧 Uses fast bypass for screen-space edges (instant on/off, no pipeline changes)
10
12
  */
11
- private sleepTimer;
13
+ private _sleepDebounceTimer;
14
+ private _sleepDebounceDelay;
12
15
  cameraHandler(): void;
13
16
  windowHandler(): void;
14
17
  handleResize(entries: any): void;
@@ -65,6 +65,17 @@ export declare class PostProcessingRenderer {
65
65
  * Disable screen-space edge detection
66
66
  */
67
67
  disableScreenSpaceEdges(): void;
68
+ /**
69
+ * 🔧 FAST: Bypass screen-space edges (instant, no geometry render)
70
+ * Use this during camera movement for smooth performance
71
+ * The pass stays in the pipeline but just copies input to output
72
+ */
73
+ bypassScreenSpaceEdges(): void;
74
+ /**
75
+ * 🔧 FAST: Resume screen-space edges after bypassing
76
+ * Call this when camera stops moving
77
+ */
78
+ resumeScreenSpaceEdges(): void;
68
79
  /**
69
80
  * Configure screen-space edge detection options
70
81
  */
@@ -42,8 +42,16 @@ export declare class ScreenSpaceEdgesPass extends Pass {
42
42
  private depthMaterial;
43
43
  private edgeMaterial;
44
44
  private objectIdMaterial;
45
+ private copyMaterial;
45
46
  private fsQuad;
46
47
  options: ScreenSpaceEdgesOptions;
48
+ /**
49
+ * 🔧 FAST TOGGLE: When true, skips geometry renders and just passes through the image
50
+ * Use this instead of `enabled` for faster on/off during camera movement
51
+ * - `enabled = false`: Pass is completely skipped by EffectComposer (may cause pipeline issues)
52
+ * - `bypass = true`: Pass runs but just copies input to output (very fast, no geometry render)
53
+ */
54
+ bypass: boolean;
47
55
  constructor(scene: Scene, camera: Camera, resolution?: Vector2, options?: Partial<ScreenSpaceEdgesOptions>);
48
56
  /**
49
57
  * Update options
@@ -59,6 +67,16 @@ export declare class ScreenSpaceEdgesPass extends Pass {
59
67
  setSize(width: number, height: number): void;
60
68
  /**
61
69
  * Main render method
70
+ *
71
+ * 🔧 HYBRID APPROACH:
72
+ * - Depth edges: Uses main render's depth buffer (FREE if available)
73
+ * - Normal edges: Requires 1 geometry pass (can't avoid - needed for crease detection)
74
+ * - Object ID edges: 1 extra geometry pass (disabled by default)
75
+ *
76
+ * Note: Reconstructed normals from depth CANNOT detect internal creases!
77
+ * We MUST render actual geometry normals for proper edge detection.
78
+ *
79
+ * 🔧 FAST TOGGLE: Set `bypass = true` to skip geometry renders (instant on/off)
62
80
  */
63
81
  render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, deltaTime?: number, maskActive?: boolean): void;
64
82
  /**
@@ -17,10 +17,6 @@ export declare class ViralRenderer {
17
17
  * Log standard WebGL render statistics
18
18
  */
19
19
  private logRenderStats;
20
- /**
21
- * Log spatial mesh statistics if spatial merging is active
22
- */
23
- private logSpatialStats;
24
20
  /**
25
21
  * Get detailed rendering performance info
26
22
  */
@@ -35,14 +31,6 @@ export declare class ViralRenderer {
35
31
  geometries: number;
36
32
  textures: number;
37
33
  };
38
- spatial: {
39
- totalCells: number;
40
- loadedCells: number;
41
- visibleCells: number;
42
- cullingEfficiency: string;
43
- memoryEfficiency: string;
44
- } | null;
45
- isSpatialActive: boolean;
46
34
  };
47
35
  /**
48
36
  * Enable/disable performance logging
@@ -55,12 +43,4 @@ export declare class ViralRenderer {
55
43
  applyJitter(): void;
56
44
  generateJitterOffsets(samples?: number): number[][];
57
45
  screenshot(): string;
58
- /**
59
- * Take a screenshot with spatial mesh debug overlay
60
- */
61
- screenshotWithSpatialDebug(): string;
62
- /**
63
- * Render only visible spatial cells (for debugging)
64
- */
65
- renderVisibleCellsOnly(): void;
66
46
  }
@@ -1,9 +1,8 @@
1
- import { Scene, DirectionalLight, Mesh, Object3D, MeshBasicMaterial, Light, CameraHelper, Vector3, Box3, OrthographicCamera, PerspectiveCamera, Camera } from "three";
1
+ import { Scene, DirectionalLight, Mesh, Object3D, MeshBasicMaterial, Light, CameraHelper, Box3, OrthographicCamera, PerspectiveCamera } from "three";
2
2
  import { ViralViewerApi } from "../../viral-viewer-api";
3
3
  import { ViralMergedModel } from "../custom-objects/viral-merged-model";
4
4
  import { ViralMainModel } from "../custom-objects/viral-main.model";
5
5
  import { TransformControls } from "three/examples/jsm/controls/TransformControls";
6
- import { ViralSpatialMeshManager } from "../custom-objects/viral-spatial-mesh-manager";
7
6
  export declare class ViralScene {
8
7
  viralViewerApi: ViralViewerApi;
9
8
  scene: Scene;
@@ -13,9 +12,6 @@ export declare class ViralScene {
13
12
  isolateModel: Mesh;
14
13
  mergedModel: ViralMergedModel;
15
14
  outlineModel: Mesh;
16
- spatialMeshManager: ViralSpatialMeshManager | null;
17
- spatialMeshContainer: Mesh;
18
- private useSpatialMerging;
19
15
  hideables: Object3D[];
20
16
  selectables: Object3D[];
21
17
  edges: Object3D[];
@@ -25,42 +21,6 @@ export declare class ViralScene {
25
21
  transformControls: TransformControls | null;
26
22
  lightHelpers: CameraHelper[];
27
23
  constructor(viralViewerApi: ViralViewerApi);
28
- /**
29
- * Initialize spatial mesh manager with world bounds
30
- */
31
- initializeSpatialManager(worldBounds: Box3, gridSize?: Vector3): void;
32
- /**
33
- * Enable/disable spatial merging
34
- */
35
- setSpatialMerging(enabled: boolean): void;
36
- /**
37
- * Update spatial visibility based on camera (call this in render loop)
38
- */
39
- updateSpatialVisibility(camera: Camera): void;
40
- /**
41
- * Get spatial mesh manager
42
- */
43
- getSpatialMeshManager(): ViralSpatialMeshManager | null;
44
- /**
45
- * Check if spatial merging is active
46
- */
47
- isSpatialMergingActive(): boolean;
48
- /**
49
- * Add spatial mesh to the spatial container
50
- */
51
- addSpatialMesh(mesh: Object3D): void;
52
- /**
53
- * Clean up distant spatial meshes
54
- */
55
- cleanupDistantSpatialMeshes(cameraPosition: Vector3, maxDistance?: number): void;
56
- /**
57
- * Get spatial mesh statistics
58
- */
59
- getSpatialStats(): {
60
- totalCells: number;
61
- loadedCells: number;
62
- visibleCells: number;
63
- } | null;
64
24
  addObject(object: Object3D): void;
65
25
  addModel(object: Object3D): void;
66
26
  addEdge(object: Object3D): void;
@@ -102,6 +102,15 @@ export declare class ViralVisibilityManager {
102
102
  * Disable screen-space edge detection
103
103
  */
104
104
  disableScreenSpaceEdge(): void;
105
+ /**
106
+ * 🔧 FAST: Bypass screen-space edges during camera movement
107
+ * Much faster than disable - skips geometry render but keeps pass in pipeline
108
+ */
109
+ bypassScreenSpaceEdge(): void;
110
+ /**
111
+ * 🔧 FAST: Resume screen-space edges after camera stops
112
+ */
113
+ resumeScreenSpaceEdge(): void;
105
114
  /**
106
115
  * Configure screen-space edge detection
107
116
  */
@@ -1,14 +1,11 @@
1
1
  import { ViralViewerApi } from "../../viral-viewer-api";
2
2
  import { RenderMaterial, ViralutionElement } from "../../types";
3
- import { Box3, Vector3 } from "three";
4
3
  import { WorkerThreadPool } from "./base/worker-pool";
5
- import { ViralSpatialMeshManager } from "../custom-objects/viral-spatial-mesh-manager";
6
4
  export declare class LoadElementBatchWorker {
7
5
  viralViewerApi: ViralViewerApi;
8
6
  workerPool: WorkerThreadPool;
9
7
  workerPool2: WorkerThreadPool;
10
8
  private lastRenderTime;
11
- private useSpatialMerging;
12
9
  private elementBuffer;
13
10
  private readonly BATCH_THRESHOLD_VERTICES;
14
11
  private readonly BATCH_THRESHOLD_OBJECTS;
@@ -67,32 +64,4 @@ export declare class LoadElementBatchWorker {
67
64
  * 🚀 Flush all remaining buffers (call this when loading is complete)
68
65
  */
69
66
  flushAllBuffers(): void;
70
- /**
71
- * Get spatial mesh manager (delegate to scene)
72
- */
73
- getSpatialMeshManager(): ViralSpatialMeshManager | null;
74
- /**
75
- * Check if spatial merging is enabled
76
- */
77
- isSpatialMergingEnabled(): boolean;
78
- /**
79
- * Get spatial mesh statistics
80
- */
81
- getSpatialStats(): {
82
- totalCells: number;
83
- loadedCells: number;
84
- visibleCells: number;
85
- } | null;
86
- /**
87
- * Clean up distant spatial meshes to free memory
88
- */
89
- cleanupDistantMeshes(cameraPosition: Vector3, maxDistance?: number): void;
90
- /**
91
- * Calculate world bounds from elements (utility method)
92
- */
93
- calculateWorldBounds(elements: ViralutionElement[]): Box3;
94
- /**
95
- * Apply RevitTransform to a point (utility method)
96
- */
97
- private applyTransform;
98
67
  }
@@ -0,0 +1,28 @@
1
+ import { ViralViewerApi } from "../../viral-viewer-api";
2
+ export declare class ViralInstancedDebugPanel {
3
+ viralViewerApi: ViralViewerApi;
4
+ private panel;
5
+ private instancedListContainer;
6
+ private isVisible;
7
+ private selectedInstancedMesh;
8
+ private selectedInternalMesh;
9
+ constructor(viralViewerApi: ViralViewerApi);
10
+ private inject;
11
+ private createButton;
12
+ private injectStyles;
13
+ private attachEventListeners;
14
+ show(): void;
15
+ hide(): void;
16
+ toggle(): void;
17
+ private refreshInstancedList;
18
+ private isolateWrapper;
19
+ private isolateInternalMesh;
20
+ private showAllInstanced;
21
+ private hideAllInstanced;
22
+ private clearIsolation;
23
+ /**
24
+ * Log detailed information about all instanced meshes to console
25
+ */
26
+ logAllDetails(): void;
27
+ dispose(): void;
28
+ }
@@ -0,0 +1,83 @@
1
+ import { ViralViewerApi } from "../../viral-viewer-api";
2
+ interface RenderableInfo {
3
+ id: number;
4
+ name: string;
5
+ type: string;
6
+ visible: boolean;
7
+ parent: string;
8
+ path: string;
9
+ vertices: number;
10
+ triangles: number;
11
+ drawCalls: number;
12
+ children: number;
13
+ materialType: string;
14
+ isDuplicate?: boolean;
15
+ duplicateOf?: number;
16
+ isContainer?: boolean;
17
+ }
18
+ interface RenderPassInfo {
19
+ name: string;
20
+ enabled: boolean;
21
+ estimatedPasses: number;
22
+ }
23
+ interface SceneAnalysis {
24
+ totalObjects: number;
25
+ visibleObjects: number;
26
+ totalDrawCalls: number;
27
+ totalTriangles: number;
28
+ totalVertices: number;
29
+ renderPasses: RenderPassInfo[];
30
+ estimatedTotalPasses: number;
31
+ singlePassDrawCalls: number;
32
+ expectedTotalDrawCalls: number;
33
+ batchedMeshes: RenderableInfo[];
34
+ instancedMeshes: RenderableInfo[];
35
+ regularMeshes: RenderableInfo[];
36
+ edgeMeshes: RenderableInfo[];
37
+ otherObjects: RenderableInfo[];
38
+ potentialDuplicates: {
39
+ object1: RenderableInfo;
40
+ object2: RenderableInfo;
41
+ reason: string;
42
+ }[];
43
+ warnings: string[];
44
+ }
45
+ export declare class ViralRenderDebugPanel {
46
+ viralViewerApi: ViralViewerApi;
47
+ private panel;
48
+ private contentContainer;
49
+ private isVisible;
50
+ private lastAnalysis;
51
+ constructor(viralViewerApi: ViralViewerApi);
52
+ private inject;
53
+ private createButton;
54
+ private injectStyles;
55
+ private attachEventListeners;
56
+ show(): void;
57
+ hide(): void;
58
+ toggle(): void;
59
+ /**
60
+ * Main analysis function - traverses entire scene
61
+ */
62
+ analyzeScene(): SceneAnalysis;
63
+ /**
64
+ * Analyze post-processing render passes
65
+ */
66
+ private analyzeRenderPasses;
67
+ private extractObjectInfo;
68
+ private isRenderable;
69
+ private isVisibleInHierarchy;
70
+ private getGeometryHash;
71
+ private categorizeObject;
72
+ private analyzeMergedModel;
73
+ private analyzeAndRender;
74
+ private renderAnalysis;
75
+ private createSection;
76
+ private createCollapsibleSection;
77
+ private highlightObject;
78
+ logToConsole(): void;
79
+ private logObjectTree;
80
+ private exportJSON;
81
+ dispose(): void;
82
+ }
83
+ export {};