viral-viewer-2 6.9.3 → 6.9.4

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-Dz6pKFVp.mjs";
1
+ import { B as S, a as V, V as Z } from "./index-0hJmUXew.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,
@@ -73,6 +73,22 @@ export declare class ViralBatchedMesh extends Mesh {
73
73
  modelId: string;
74
74
  elementId: string;
75
75
  }[];
76
+ protected _hidingElements: {
77
+ modelId: string;
78
+ elementId: string;
79
+ }[];
80
+ protected _isolatingElements: {
81
+ modelId: string;
82
+ elementId: string;
83
+ }[];
84
+ private _hiddenSet;
85
+ private _isolatedSet;
86
+ private _elementOpacityMap;
87
+ private _isRGBAMode;
88
+ private _elementOriginalColors;
89
+ /**
90
+ * Select elements (highlights them with accent color)
91
+ */
76
92
  select(elements: {
77
93
  modelId: string;
78
94
  elementId: string;
@@ -87,18 +103,26 @@ export declare class ViralBatchedMesh extends Mesh {
87
103
  b: number;
88
104
  };
89
105
  }[]): void;
90
- protected _hidingElements: {
106
+ get selectedElements(): {
91
107
  modelId: string;
92
108
  elementId: string;
93
109
  }[];
110
+ /**
111
+ * Hide elements by setting their alpha to 0 (GPU-accelerated)
112
+ * Hidden elements are discarded in fragment shader - no rendering cost
113
+ *
114
+ * @param elements - Elements to hide (defaults to selected elements)
115
+ */
94
116
  hide(elements?: {
95
117
  modelId: string;
96
118
  elementId: string;
97
119
  }[]): void;
98
- protected _isolatingElements: {
99
- modelId: string;
100
- elementId: string;
101
- }[];
120
+ /**
121
+ * Isolate elements - show ONLY these elements, hide everything else
122
+ *
123
+ * @param elements - Elements to isolate (defaults to selected elements)
124
+ * @returns The isolated elements
125
+ */
102
126
  isolate(elements?: {
103
127
  modelId: string;
104
128
  elementId: string;
@@ -106,62 +130,107 @@ export declare class ViralBatchedMesh extends Mesh {
106
130
  modelId: string;
107
131
  elementId: string;
108
132
  }[];
109
- get selectedElements(): {
110
- modelId: string;
111
- elementId: string;
112
- }[];
113
133
  /**
114
- * Isolate whole model
115
- * @param modelIds
134
+ * Isolate entire models
135
+ * @param modelIds - Model IDs to isolate
116
136
  */
117
137
  isolateModel(modelIds: string[]): void;
118
138
  /**
119
- * reset visibility also color
139
+ * Show a previously hidden element
140
+ * @param elements - Elements to show
141
+ */
142
+ show(elements: {
143
+ modelId: string;
144
+ elementId: string;
145
+ }[]): void;
146
+ /**
147
+ * Reset all visibility - show everything
120
148
  */
121
149
  reset(): void;
122
- optimizeVertices(): void;
123
- updateVisibility(bufferElements: BufferElement[]): void;
124
- private _hiddenSet;
125
- private _isolatedSet;
126
- private _originalColorSize;
127
150
  /**
128
- * 🚀 ULTRA FAST: Hide elements by setting alpha to 0
129
- * Preserves raycasting - hidden elements can still be clicked
151
+ * Check if an element is currently visible
152
+ */
153
+ isElementVisible(modelId: string, elementId: string): boolean;
154
+ /**
155
+ * Set opacity for specific elements (0.0 = invisible, 1.0 = fully opaque)
156
+ * Uses custom shader's per-vertex alpha support
157
+ *
158
+ * @param elements - Elements to modify
159
+ * @param opacity - Opacity value (0.0 to 1.0)
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * // Semi-transparent (ghost mode)
164
+ * mesh.setElementOpacity([{ modelId: "0", elementId: "abc" }], 0.3);
165
+ *
166
+ * // Fully hidden but still raycastable
167
+ * mesh.setElementOpacity([{ modelId: "0", elementId: "abc" }], 0.0);
168
+ * ```
130
169
  */
131
- hideFast(elements?: {
170
+ setElementOpacity(elements: {
132
171
  modelId: string;
133
172
  elementId: string;
134
- }[]): void;
173
+ }[], opacity: number): void;
174
+ /**
175
+ * Get the current opacity of an element
176
+ */
177
+ getElementOpacity(modelId: string, elementId: string): number;
135
178
  /**
136
- * 🚀 ULTRA FAST: Isolate elements by setting non-isolated alpha to 0
179
+ * Ghost mode - semi-transparent with optional desaturation
180
+ * Perfect for showing context while highlighting other elements
181
+ *
182
+ * @param elements - Elements to ghost
183
+ * @param ghostOpacity - Opacity for ghost mode (default: 0.15)
184
+ * @param desaturate - Whether to desaturate color (default: true)
137
185
  */
138
- isolateFast(elements?: {
186
+ setElementGhost(elements: {
139
187
  modelId: string;
140
188
  elementId: string;
141
- }[]): {
189
+ }[], ghostOpacity?: number, desaturate?: boolean): void;
190
+ /**
191
+ * Ghost all elements EXCEPT the specified ones
192
+ * Focused elements remain fully opaque, everything else becomes ghosted
193
+ *
194
+ * @param focusElements - Elements to keep fully visible
195
+ * @param ghostOpacity - Opacity for non-focused elements (default: 0.1)
196
+ */
197
+ ghostExcept(focusElements: {
142
198
  modelId: string;
143
199
  elementId: string;
144
- }[];
200
+ }[], ghostOpacity?: number): void;
145
201
  /**
146
- * 🚀 INTERNAL: Update visibility by modifying alpha channel
147
- * Sets alpha to 0.001 (nearly invisible) + alphaTest to skip rendering
202
+ * Reset all element opacities to fully opaque and restore original colors
148
203
  */
149
- private _updateVisibilityByAlpha;
204
+ resetElementOpacity(): void;
150
205
  /**
151
- * Check if an element is currently visible
206
+ * Check if any element has semi-transparent opacity
152
207
  */
153
- isElementVisible(modelId: string, elementId: string): boolean;
208
+ hasTransparentElements(): boolean;
209
+ /**
210
+ * Check if MOST elements are transparent (for deciding depth write strategy)
211
+ * Returns true if more than 50% of elements have transparency
212
+ */
213
+ private _isMostlyTransparent;
214
+ /**
215
+ * 🔧 Update material depth write based on transparency state
216
+ * When MOST elements are semi-transparent, disable depth write to fix see-through issues
217
+ * Also respects originally transparent materials (windows, glass)
218
+ */
219
+ private _updateDepthWriteForTransparency;
154
220
  /**
155
- * 🚀 ULTRA FAST: Reset visibility - restore everything to normal
221
+ * 🔧 INTERNAL: Update alpha values based on visibility state
222
+ * This is the core method that applies hide/isolate states to the GPU buffer
156
223
  */
157
- resetFast(): void;
224
+ private _updateAlphaVisibility;
158
225
  findElementByFaceIndex(faceIndex: number): {
159
226
  modelId: string;
160
227
  elementId: string;
161
228
  } | null;
162
229
  /**
163
230
  * Changes the color of multiple elements in the merged mesh.
164
- * @param elements - An array of elements, each containing `modelId`, `elementId`, and `color`.
231
+ * Works with RGBA color buffer (preserves existing alpha values)
232
+ * @param elements - An array of elements, each containing `modelId` and `elementId`.
233
+ * @param color - The new RGB color to apply
165
234
  */
166
235
  changeColor(elements: {
167
236
  modelId: string;
@@ -176,9 +245,10 @@ export declare class ViralBatchedMesh extends Mesh {
176
245
  */
177
246
  /**
178
247
  * Resets the color of an element back to the original color or the entire mesh if no element is specified.
248
+ * Works with RGBA color buffer (preserves existing alpha values)
179
249
  * @param modelId - The model ID to reset. Pass `null` to reset the entire mesh.
180
250
  * @param elementId - The element ID to reset. Ignored if `modelId` is `null`.
181
- * @param excepts - In case we dont want to convert back to original color
251
+ * @param excepts - Elements that should receive a different color instead of original
182
252
  */
183
253
  resetColor(modelId: string | null, elementId?: string, excepts?: {
184
254
  elements: {
@@ -14,6 +14,7 @@ export declare class ViralInstancedMeshV2 extends Object3D {
14
14
  instancedMesh: InstancedMesh;
15
15
  }[]>>;
16
16
  private _originalTransforms;
17
+ private _elementOpacity;
17
18
  private _selectedElements;
18
19
  private _hidingElements;
19
20
  protected _isolatingElements: {
@@ -72,11 +73,24 @@ export declare class ViralInstancedMeshV2 extends Object3D {
72
73
  }[];
73
74
  private _hiddenSet;
74
75
  private _isolatedSet;
75
- private _originalColorSize;
76
+ private static readonly ZERO_MATRIX;
77
+ /**
78
+ * Hide elements by setting their transform scale to 0
79
+ * Zero-scaled instances are automatically culled by GPU - maximum performance
80
+ *
81
+ * @param elements - Elements to hide (defaults to selected elements)
82
+ */
76
83
  hide(elements?: {
77
84
  modelId: string;
78
85
  elementId: string;
79
86
  }[]): void;
87
+ /**
88
+ * Isolate elements - show ONLY these elements, hide everything else
89
+ * Uses batch matrix update for best performance
90
+ *
91
+ * @param elements - Elements to isolate (defaults to selected elements)
92
+ * @returns The isolated elements
93
+ */
80
94
  isolate(elements?: {
81
95
  modelId: string;
82
96
  elementId: string;
@@ -85,34 +99,103 @@ export declare class ViralInstancedMeshV2 extends Object3D {
85
99
  elementId: string;
86
100
  }[];
87
101
  /**
88
- * 🚀 FAST: Hide instances by setting alpha to 0
89
- * Preserves raycasting - hidden instances can still be clicked
102
+ * Isolate entire models
103
+ * @param modelIds - Model IDs to isolate
104
+ */
105
+ isolateModel(modelIds: string[]): void;
106
+ /**
107
+ * Show a previously hidden element
108
+ * @param elements - Elements to show
90
109
  */
91
- hideFast(elements?: {
110
+ show(elements: {
92
111
  modelId: string;
93
112
  elementId: string;
94
113
  }[]): void;
95
114
  /**
96
- * 🚀 FAST: Isolate instances by setting non-isolated alpha to 0
115
+ * Reset all visibility - show everything
116
+ */
117
+ reset(): void;
118
+ /**
119
+ * Check if an element is currently visible
97
120
  */
98
- isolateFast(elements?: {
121
+ isElementVisible(modelId: string, elementId: string): boolean;
122
+ /**
123
+ * Inject per-instance opacity shader into material
124
+ * Must be called after material is set and before rendering
125
+ */
126
+ injectOpacityShader(): void;
127
+ /**
128
+ * Ensure all instanced meshes have opacity attribute
129
+ */
130
+ private _ensureOpacityAttributes;
131
+ /**
132
+ * Update opacity for specific instances
133
+ */
134
+ private _updateInstanceOpacity;
135
+ /**
136
+ * Set opacity for specific elements
137
+ * @param elements - Elements to set opacity for
138
+ * @param opacity - Opacity value (0-1)
139
+ */
140
+ setElementOpacity(elements: {
99
141
  modelId: string;
100
142
  elementId: string;
101
- }[]): {
143
+ }[], opacity: number): void;
144
+ /**
145
+ * Get current opacity of an element
146
+ * @param modelId - Model ID
147
+ * @param elementId - Element ID
148
+ * @returns Current opacity (0-1), defaults to 1
149
+ */
150
+ getElementOpacity(modelId: string, elementId: string): number;
151
+ /**
152
+ * Set elements to "ghost" mode (semi-transparent)
153
+ * @param elements - Elements to ghost
154
+ * @param ghostOpacity - Opacity for ghosted elements (default 0.1)
155
+ */
156
+ setElementGhost(elements: {
102
157
  modelId: string;
103
158
  elementId: string;
104
- }[];
159
+ }[], ghostOpacity?: number, desaturate?: boolean): void;
105
160
  /**
106
- * 🚀 INTERNAL: Update instance visibility by modifying instance colors alpha
161
+ * Ghost all elements EXCEPT the specified ones
162
+ * @param elements - Elements to keep fully opaque
163
+ * @param ghostOpacity - Opacity for all other elements (default 0.1)
107
164
  */
108
- private _updateInstanceVisibilityByAlpha;
165
+ ghostExcept(elements: {
166
+ modelId: string;
167
+ elementId: string;
168
+ }[], ghostOpacity?: number): void;
109
169
  /**
110
- * 🚀 FAST: Reset visibility - restore everything to normal
170
+ * Desaturate instance color (turn whitish)
171
+ * @param modelId - Model ID
172
+ * @param elementId - Element ID
173
+ * @param desatFactor - Desaturation factor (0 = original, 1 = full white)
111
174
  */
112
- resetFast(): void;
113
- isolateModel(modelIds: string[]): void;
114
- reset(): void;
115
- private showAllInstances;
175
+ private _desaturateInstanceColor;
176
+ /**
177
+ * Restore instance color to original
178
+ */
179
+ private _restoreInstanceColor;
180
+ /**
181
+ * Reset all elements to full opacity and restore original colors
182
+ */
183
+ resetElementOpacity(): void;
184
+ /**
185
+ * Check if any element has semi-transparent opacity
186
+ */
187
+ hasTransparentElements(): boolean;
188
+ /**
189
+ * Check if MOST elements are transparent (for deciding depth write strategy)
190
+ * Returns true if more than 50% of elements have transparency
191
+ */
192
+ private _isMostlyTransparent;
193
+ /**
194
+ * 🔧 Update material depth write based on transparency state
195
+ * When MOST elements are semi-transparent, disable depth write
196
+ * Also respects originally transparent materials (windows, glass)
197
+ */
198
+ private _updateDepthWriteForTransparency;
116
199
  enableEdgePerElement(material: LineMaterial, thresholdDeg?: number): void;
117
200
  disableEdge(): void;
118
201
  enableEdge(): void;
@@ -109,6 +109,37 @@ export declare class ViralMergedModel extends Mesh {
109
109
  */
110
110
  resetVisibility(): void;
111
111
  resetColor(): void;
112
+ /**
113
+ * Set opacity for specific elements
114
+ * @param elements - Elements to set opacity for
115
+ * @param opacity - Opacity value (0-1)
116
+ */
117
+ setElementOpacity(elements: {
118
+ modelId: string;
119
+ elementId: string;
120
+ }[], opacity: number): void;
121
+ /**
122
+ * Set elements to "ghost" mode (semi-transparent)
123
+ * @param elements - Elements to ghost
124
+ * @param ghostOpacity - Opacity for ghosted elements (default 0.1)
125
+ */
126
+ setElementGhost(elements: {
127
+ modelId: string;
128
+ elementId: string;
129
+ }[], ghostOpacity?: number): void;
130
+ /**
131
+ * Ghost all elements EXCEPT the specified ones
132
+ * @param elements - Elements to keep fully opaque
133
+ * @param ghostOpacity - Opacity for all other elements (default 0.1)
134
+ */
135
+ ghostExcept(elements: {
136
+ modelId: string;
137
+ elementId: string;
138
+ }[], ghostOpacity?: number): void;
139
+ /**
140
+ * Reset all elements to full opacity
141
+ */
142
+ resetElementOpacity(): void;
112
143
  enableEdge(material: LineMaterial, thresholdDeg?: number): void;
113
144
  showEdge(): void;
114
145
  hideEdge(): void;
@@ -139,6 +170,10 @@ export declare class ViralMergedModel extends Mesh {
139
170
  * Notify edge mesh when meshes are updated (call this after batching or rebuilding)
140
171
  */
141
172
  onMeshUpdated(mesh?: ViralBatchedMesh | ViralInstancedMeshV2): void;
173
+ /**
174
+ * @deprecated No longer needed - visibility is now alpha-based (GPU-accelerated)
175
+ * Kept for backward compatibility but does nothing
176
+ */
142
177
  optimizeVertices(): void;
143
178
  /**
144
179
  * *everytime add new model in scene this model will be regenerated again, for that reason we should dispose this model
@@ -56,10 +56,23 @@ export declare class ViralVisibilityManager {
56
56
  b: number;
57
57
  };
58
58
  }[];
59
+ /**
60
+ * Select elements (replaces current selection)
61
+ */
59
62
  selectElements(elements: {
60
63
  modelId: string;
61
64
  elementId: string;
62
65
  }[]): void;
66
+ /**
67
+ * Add elements to current selection (multi-select with Shift)
68
+ */
69
+ addToSelection(elements: {
70
+ modelId: string;
71
+ elementId: string;
72
+ }[]): void;
73
+ /**
74
+ * Unselect all elements
75
+ */
63
76
  unselectElements(): void;
64
77
  isolateModelId: string;
65
78
  isolateModel(isolateModelIds?: string[]): void;
@@ -116,6 +129,37 @@ export declare class ViralVisibilityManager {
116
129
  */
117
130
  enableSampling(numberOfSampling?: number): void;
118
131
  disableSampling(): void;
132
+ /**
133
+ * Set opacity for specific elements
134
+ * @param elements - Elements to set opacity for
135
+ * @param opacity - Opacity value (0-1)
136
+ */
137
+ setElementOpacity(elements: {
138
+ modelId: string;
139
+ elementId: string;
140
+ }[], opacity: number): void;
141
+ /**
142
+ * Set elements to "ghost" mode (semi-transparent)
143
+ * @param elements - Elements to ghost
144
+ * @param ghostOpacity - Opacity for ghosted elements (default 0.1)
145
+ */
146
+ setElementGhost(elements: {
147
+ modelId: string;
148
+ elementId: string;
149
+ }[], ghostOpacity?: number): void;
150
+ /**
151
+ * Ghost all elements EXCEPT the specified ones (highlight effect)
152
+ * @param elements - Elements to keep fully opaque
153
+ * @param ghostOpacity - Opacity for all other elements (default 0.1)
154
+ */
155
+ ghostExcept(elements: {
156
+ modelId: string;
157
+ elementId: string;
158
+ }[], ghostOpacity?: number): void;
159
+ /**
160
+ * Reset all elements to full opacity
161
+ */
162
+ resetElementOpacity(): void;
119
163
  generateLOD(): void;
120
164
  private _batchColors;
121
165
  private _originalBatchMaterials;
@@ -41,9 +41,16 @@ export declare class LoadElementBatchWorker {
41
41
  private createSingleMergedMesh;
42
42
  private createSingleInstancedMesh;
43
43
  /**
44
- * Create optimized material for merging
44
+ * Create optimized material for merging with per-element opacity support
45
+ * Uses onBeforeCompile to inject custom shader code for RGBA vertex colors
45
46
  */
46
47
  private createOptimizedMaterial;
48
+ /**
49
+ * 🎨 Inject custom shader modifications for per-element opacity
50
+ * This modifies the material's shaders to support RGBA vertex colors
51
+ * where the alpha channel controls per-element transparency
52
+ */
53
+ private injectPerElementOpacityShader;
47
54
  /**
48
55
  * Throttled render to avoid excessive render calls
49
56
  */