viral-viewer-2 7.0.9 → 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/{batched-mesh-simplifier-Dg6taIi9.mjs → batched-mesh-simplifier-BFjj2CKy.mjs} +1 -1
  2. package/dist/components/camera/viral-camera.d.ts +1 -1
  3. package/dist/components/custom-objects/viral-batched-mesh.d.ts +47 -6
  4. package/dist/components/custom-objects/viral-instanced-mesh-v2.d.ts +43 -2
  5. package/dist/components/custom-objects/viral-merged-model.d.ts +8 -1
  6. package/dist/components/data-manager/viral-data-manager.d.ts +4 -9
  7. package/dist/components/duplication-analyzer/viral-duplication-analyzer.d.ts +1 -1
  8. package/dist/components/event-handler/base/event-dispatcher.d.ts +1 -1
  9. package/dist/components/event-handler/mouse/viral-mouse.d.ts +1 -1
  10. package/dist/components/event-handler/viral-lifecycle-event-handler.d.ts +1 -1
  11. package/dist/components/loader/viral-revit.loader.d.ts +2 -17
  12. package/dist/components/loader/viral.loader.d.ts +0 -2
  13. package/dist/components/visibility-manager/viral-visibility-manager.d.ts +8 -1
  14. package/dist/components/worker/bounding-box-intersect.worker.d.ts +1 -1
  15. package/dist/components/worker/bounding-box.worker.d.ts +1 -1
  16. package/dist/components/worker/load-element-batch.worker.d.ts +1 -1
  17. package/dist/entities/archive-elements.d.ts +59 -0
  18. package/dist/entities/base-elements.d.ts +61 -0
  19. package/dist/entities/configuration.d.ts +14 -0
  20. package/dist/entities/data-tree.d.ts +141 -0
  21. package/dist/entities/data.d.ts +15 -0
  22. package/dist/entities/event.d.ts +30 -0
  23. package/dist/entities/index.d.ts +9 -0
  24. package/dist/entities/results.d.ts +19 -0
  25. package/dist/entities/tool.d.ts +6 -0
  26. package/dist/entities/viewer-option.d.ts +18 -0
  27. package/dist/gui/draggable-modal/viral-draggable-modal.d.ts +6 -1
  28. package/dist/{index-BIlAmQvm.mjs → index-BRDaOYaY.mjs} +32664 -12347
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.mjs +23 -26
  31. package/dist/types.d.ts +0 -325
  32. package/dist/viral-viewer-api.d.ts +1 -1
  33. package/package.json +1 -2
  34. package/dist/components/loader/viral-flatbuffer.loader.d.ts +0 -13
  35. package/dist/components/worker/load-element-by-material-v2.worker.d.ts +0 -11
  36. package/dist/components/worker/load-element-by-material.worker.d.ts +0 -11
  37. package/dist/components/worker/load-element-standalone.worker.d.ts +0 -15
  38. package/dist/components/worker/viral-viewer-2.worker.d.ts +0 -17
  39. package/dist/components/worker/viral-viewer-3.worker.d.ts +0 -14
  40. package/dist/components/worker/viral-viewer.worker.d.ts +0 -8
  41. package/dist/components/worker-script/load-element-by-material.script.d.ts +0 -3
  42. package/dist/components/worker-script/load-element-standalone.script.d.ts +0 -1
  43. package/dist/components/worker-script/load-model-worker-2.script.d.ts +0 -1
  44. package/dist/components/worker-script/load-model-worker.script.d.ts +0 -1
  45. package/dist/components/worker-script/material-aproach/load-element-by-material-instanced-mesh.script.d.ts +0 -1
  46. package/dist/components/worker-script/material-aproach/load-element-by-material-mesh.script.d.ts +0 -3
  47. package/dist/components/worker-script/threejs.types.d.ts +0 -1
  48. package/dist/models/flat-buffer/model-management-camera-model.d.ts +0 -24
  49. package/dist/models/flat-buffer/parameter-dictionary.d.ts +0 -20
  50. package/dist/models/flat-buffer/point.d.ts +0 -11
  51. package/dist/models/flat-buffer/render-material.d.ts +0 -26
  52. package/dist/models/flat-buffer/revit-transform.d.ts +0 -22
  53. package/dist/models/flat-buffer/viralution-box.d.ts +0 -11
  54. package/dist/models/flat-buffer/viralution-element.d.ts +0 -27
  55. package/dist/models/flat-buffer/viralution-information.d.ts +0 -19
  56. package/dist/models/flat-buffer/viralution-parameter.d.ts +0 -35
  57. package/dist/models/flat-buffer/viralution-solid.d.ts +0 -28
  58. package/dist/models/flat-buffer/viralution-standalone-model.d.ts +0 -27
  59. package/dist/models/index.d.ts +0 -8
  60. package/dist/serializers/index.d.ts +0 -2
  61. package/dist/serializers/viralution-flatbuffer.serializer.d.ts +0 -92
  62. package/dist/serializers/viralution-standalone.serializer.d.ts +0 -16
@@ -1,4 +1,4 @@
1
- import { B as S, a as V, V as Z } from "./index-BIlAmQvm.mjs";
1
+ import { B as S, a as V, V as Z } from "./index-BRDaOYaY.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,
@@ -1,7 +1,7 @@
1
1
  import CameraControls from "camera-controls";
2
- import { ViralCameraEventType, ViralViewerState } from "../../types";
3
2
  import { ViralViewerApi } from "../../viral-viewer-api";
4
3
  import { Vector3, Raycaster, PerspectiveCamera, Object3D, OrthographicCamera } from "three";
4
+ import { ViralCameraEventType, ViralViewerState } from "../..";
5
5
  export declare class ViralCamera {
6
6
  viralViewerApi: ViralViewerApi;
7
7
  raycaster: Raycaster;
@@ -86,6 +86,7 @@ export declare class ViralBatchedMesh extends Mesh {
86
86
  private _elementOpacityMap;
87
87
  private _isRGBAMode;
88
88
  private _elementOriginalColors;
89
+ private _temporaryColors;
89
90
  /**
90
91
  * Select elements (highlights them with accent color)
91
92
  */
@@ -232,6 +233,24 @@ export declare class ViralBatchedMesh extends Mesh {
232
233
  * Works with RGBA color buffer (preserves existing alpha values)
233
234
  * @param elements - An array of elements, each containing `modelId` and `elementId`.
234
235
  * @param color - The new RGB color to apply
236
+ * @param isTemporary - Override for temporary, if element has temporary color it will turn back this color, otherwise will turn back to original
237
+ */
238
+ /**
239
+ * Changes the color of multiple elements in the merged mesh.
240
+ * Works with RGBA color buffer (preserves existing alpha values)
241
+ * @param elements - An array of elements, each containing `modelId` and `elementId`.
242
+ * @param color - The new RGB color to apply
243
+ * @param isTemporary - If true, stores this color as a temporary layer that will be restored on reset
244
+ *
245
+ * @example
246
+ * ```typescript
247
+ * // Normal color change (resets to original)
248
+ * mesh.changeColor([{ modelId: "0", elementId: "abc" }], { r: 1, g: 0, b: 0 });
249
+ *
250
+ * // Temporary color (resets to this color instead of original)
251
+ * mesh.changeColor([{ modelId: "0", elementId: "abc" }], { r: 0, g: 1, b: 0 }, true);
252
+ * // Later, any non-temporary color change will reset to green instead of original
253
+ * ```
235
254
  */
236
255
  changeColor(elements: {
237
256
  modelId: string;
@@ -240,18 +259,40 @@ export declare class ViralBatchedMesh extends Mesh {
240
259
  r: number;
241
260
  g: number;
242
261
  b: number;
243
- }): void;
262
+ }, isTemporary?: boolean): void;
263
+ /**
264
+ * Clears temporary colors for specified elements or all elements
265
+ * @param elements - Elements to clear temporary colors for, or null to clear all
266
+ */
267
+ clearTemporaryColors(elements?: {
268
+ modelId: string;
269
+ elementId: string;
270
+ }[] | null): void;
244
271
  /**
245
272
  * Reset color of an element back to the original color
246
273
  */
247
274
  /**
248
- * Resets the color of an element back to the original color or the entire mesh if no element is specified.
275
+ * Resets the color of elements back to temporary color (if exists) or original color.
249
276
  * Works with RGBA color buffer (preserves existing alpha values)
250
- * @param modelId - The model ID to reset. Pass `null` to reset the entire mesh.
251
- * @param elementId - The element ID to reset. Ignored if `modelId` is `null`.
252
- * @param excepts - Elements that should receive a different color instead of original
277
+ * @param elements - Array of elements to reset, or `null` to reset the entire mesh.
278
+ * @param excepts - Elements that should receive a different color instead of original/temporary
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * // Reset all elements to temporary color (if set) or original color
283
+ * mesh.resetColor(null);
284
+ *
285
+ * // Reset specific elements
286
+ * mesh.resetColor([{ modelId: "0", elementId: "abc" }, { modelId: "0", elementId: "def" }]);
287
+ *
288
+ * // Reset all except some elements with custom colors
289
+ * mesh.resetColor(null, [{ elements: [{ modelId: "0", elementId: "abc" }], color: { r: 1, g: 0, b: 0 } }]);
290
+ * ```
253
291
  */
254
- resetColor(modelId: string | null, elementId?: string, excepts?: {
292
+ resetColor(elements: {
293
+ modelId: string;
294
+ elementId: string;
295
+ }[] | null, excepts?: {
255
296
  elements: {
256
297
  modelId: string;
257
298
  elementId: string;
@@ -15,6 +15,7 @@ export declare class ViralInstancedMeshV2 extends Object3D {
15
15
  }[]>>;
16
16
  private _originalTransforms;
17
17
  private _elementOpacity;
18
+ private _temporaryColors;
18
19
  private _selectedElements;
19
20
  private _hidingElements;
20
21
  protected _isolatingElements: {
@@ -49,6 +50,21 @@ export declare class ViralInstancedMeshV2 extends Object3D {
49
50
  };
50
51
  }[]): void;
51
52
  unselect(): void;
53
+ /**
54
+ * Changes the color of multiple elements.
55
+ * @param elements - An array of elements, each containing `modelId` and `elementId`.
56
+ * @param color - The new RGB color to apply
57
+ * @param isTemporary - If true, stores this color as a temporary layer that will be restored on reset
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Normal color change (resets to original)
62
+ * mesh.changeColor([{ modelId: "0", elementId: "abc" }], { r: 1, g: 0, b: 0 });
63
+ *
64
+ * // Temporary color (resets to this color instead of original)
65
+ * mesh.changeColor([{ modelId: "0", elementId: "abc" }], { r: 0, g: 1, b: 0 }, true);
66
+ * ```
67
+ */
52
68
  changeColor(elements: {
53
69
  modelId: string;
54
70
  elementId: string;
@@ -56,8 +72,33 @@ export declare class ViralInstancedMeshV2 extends Object3D {
56
72
  r: number;
57
73
  g: number;
58
74
  b: number;
59
- }): void;
60
- resetColor(modelId: string | null, elementId?: string, excepts?: {
75
+ }, isTemporary?: boolean): void;
76
+ /**
77
+ * Clears temporary colors for specified elements or all elements
78
+ * @param elements - Elements to clear temporary colors for, or null to clear all
79
+ */
80
+ clearTemporaryColors(elements?: {
81
+ modelId: string;
82
+ elementId: string;
83
+ }[] | null): void;
84
+ /**
85
+ * Resets the color of elements back to temporary color (if exists) or original color.
86
+ * @param elements - Array of elements to reset, or `null` to reset all instances.
87
+ * @param excepts - Elements that should receive a different color instead of original/temporary
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * // Reset all elements to temporary color (if set) or original color
92
+ * mesh.resetColor(null);
93
+ *
94
+ * // Reset specific elements
95
+ * mesh.resetColor([{ modelId: "0", elementId: "abc" }, { modelId: "0", elementId: "def" }]);
96
+ * ```
97
+ */
98
+ resetColor(elements: {
99
+ modelId: string;
100
+ elementId: string;
101
+ }[] | null, excepts?: {
61
102
  elements: {
62
103
  modelId: string;
63
104
  elementId: string;
@@ -90,6 +90,13 @@ export declare class ViralMergedModel extends Mesh {
90
90
  modelId: string;
91
91
  elementId: string;
92
92
  }[];
93
+ /**
94
+ * Changes the color of multiple elements in the merged mesh.
95
+ * Works with RGBA color buffer (preserves existing alpha values)
96
+ * @param elements - An array of elements, each containing `modelId` and `elementId`.
97
+ * @param color - The new RGB color to apply
98
+ * @param isTemporary - Override for temporary, if element has temporary color it will turn back this color, otherwise will turn back to original - default is false
99
+ */
93
100
  changeColor(elements: {
94
101
  modelId: string;
95
102
  elementId: string;
@@ -97,7 +104,7 @@ export declare class ViralMergedModel extends Mesh {
97
104
  r: number;
98
105
  g: number;
99
106
  b: number;
100
- }): void;
107
+ }, isTemporary?: boolean): void;
101
108
  getElementBoxs(elements: {
102
109
  modelId: string;
103
110
  elementId: string;
@@ -1,4 +1,4 @@
1
- import { CheckClashResult, CompareModelsResult, DataTree, GroupByResult, ViralutionTrackingModel, ViralViewerApi } from "../..";
1
+ import { CheckClashResult, CompareModelsResult, DataTree, GroupByResult, ViralutionInformation, ViralutionTrackingModel, ViralViewerApi } from "../..";
2
2
  export declare class ViralDataManager {
3
3
  viralViewerApi: ViralViewerApi;
4
4
  dataTree: DataTree[];
@@ -25,20 +25,15 @@ export declare class ViralDataManager {
25
25
  * Uses optimized flat Map storage for O(1) element lookup
26
26
  * Search index is built lazily on first search (saves memory until needed)
27
27
  *
28
- * @param elementData Object with elementId as key, nested properties as value
28
+ * @param data Object with elementId as key, nested properties as value
29
29
  */
30
- addData(elementData: {
31
- [key: number]: {
32
- [key: string]: {
33
- [key: string]: string;
34
- };
35
- };
36
- }): void;
30
+ addData(data: ViralutionInformation): void;
37
31
  getElementData(modelId: number, elementId: number): {
38
32
  [key: string]: {
39
33
  [key: string]: string;
40
34
  };
41
35
  } | null;
36
+ getLinkedElements(modelId: number, elementId: number): number[] | null;
42
37
  /**
43
38
  * Get element count for a model
44
39
  */
@@ -1,4 +1,4 @@
1
- import { ViralutionElement } from "../../types";
1
+ import { ViralutionElement } from "../../..";
2
2
  export interface DuplicationAnalysis {
3
3
  strategy: "BATCHING" | "INSTANCING" | "HYBRID";
4
4
  totalElements: number;
@@ -1,4 +1,4 @@
1
- import { ViralutionEvent } from "../../../types";
1
+ import { ViralutionEvent } from "../../..";
2
2
  type EventHandler = (...args: any[]) => void;
3
3
  export declare class EventDispatcher {
4
4
  private events;
@@ -1,6 +1,6 @@
1
1
  import { Vector2 } from "three";
2
2
  import { ViralViewerApi } from "../../../viral-viewer-api";
3
- import { ViralMouseEventType } from "../../../types";
3
+ import { ViralMouseEventType } from "../../..";
4
4
  export declare class ViralMouse {
5
5
  viralViewerApi: ViralViewerApi;
6
6
  position: Vector2;
@@ -1,4 +1,4 @@
1
- import { ViewerOptions } from "../../types";
1
+ import { ViewerOptions } from "../../..";
2
2
  import { ViralViewerApi } from "../../viral-viewer-api";
3
3
  export declare class ViralLifecycleEventHandler {
4
4
  private viralViewerApi;
@@ -1,25 +1,11 @@
1
- import { RevitTransform, ViralPoint, ViralViewerRevitProject, ViralutionElement, ViralutionFragmentModel, ViralutionTrackingModel } from "../../types";
2
1
  import { ViralViewerApi } from "../../viral-viewer-api";
2
+ import { ViralutionElement, ViralutionTrackingModel } from "../..";
3
3
  export declare class ViralRevitLoader {
4
4
  viralViewerApi: ViralViewerApi;
5
5
  elements: ViralutionElement[];
6
- private _loadElementStandaloneWorker;
7
- private _loadElementByMaterialWorker;
8
- private _loadElementByMaterialV2Worker;
9
6
  private _loadElementBatchWorker;
10
7
  constructor(viralViewerApi: ViralViewerApi);
11
- /**
12
- * @deprecated This function is deprecated. Use the loadRevit2 instead.
13
- */
14
- loadRevit(model: ViralViewerRevitProject): void;
15
- private progressStructuralGeometries;
16
- private progressNoneStructuralGeometries;
17
- private addCustomMesh3;
18
- private addCustomMesh4;
19
- loadRevitGroupByMaterial(model: ViralutionFragmentModel): void;
20
- getVerticePoints(indices: number[], vertices: ViralPoint[], instances?: RevitTransform[]): number[];
21
- loadStandalone(trackingUrl: string, dataUrl: string, informationUrl: string, callbackOnFinish?: () => void): Promise<void>;
22
- loadFlatBufferStandalone(informationUrl: string, geometriesUrl: string, callbackOnFinish?: () => void): Promise<void>;
8
+ load(trackingUrl: string, dataUrl: string, informationUrl: string, callbackOnFinish?: () => void): Promise<void>;
23
9
  getMaterials(dataUrl: string, byteRangeStart: number, byteRangeEnd: number): Promise<any>;
24
10
  getElements(dataUrl: string, chunk: number[][], callbackOnSuccess?: (model: any, index: number) => void): Promise<void>;
25
11
  focusCameraOnModel(trackingModel: ViralutionTrackingModel): Promise<void>;
@@ -28,7 +14,6 @@ export declare class ViralRevitLoader {
28
14
  y: number;
29
15
  z: number;
30
16
  } | null;
31
- loadByMaterial(trackingUrl: string, dataUrl: string, informationUrl: string): Promise<void>;
32
17
  /**
33
18
  * dispose all current model
34
19
  */
@@ -1,5 +1,4 @@
1
1
  import { ViralViewerApi } from "../../viral-viewer-api";
2
- import { ViralFlatbufferLoader } from "./viral-flatbuffer.loader";
3
2
  import { ViralPointCloudLoader } from "./viral-point-cloud.loader";
4
3
  import { ViralRevitLoader } from "./viral-revit.loader";
5
4
  import { ViralThreeLoader } from "./viral-three.loader";
@@ -8,6 +7,5 @@ export declare class ViralLoader {
8
7
  revitLoader: ViralRevitLoader;
9
8
  pointCloudLoader: ViralPointCloudLoader;
10
9
  threeLoader: ViralThreeLoader;
11
- flatbufferLoader: ViralFlatbufferLoader;
12
10
  constructor(viralViewerApi: ViralViewerApi);
13
11
  }
@@ -52,6 +52,13 @@ export declare class ViralVisibilityManager {
52
52
  modelId: string;
53
53
  elementId: string;
54
54
  }[]): void;
55
+ /**
56
+ * Changes the color of multiple elements in the merged mesh.
57
+ * Works with RGBA color buffer (preserves existing alpha values)
58
+ * @param elements - An array of elements, each containing `modelId` and `elementId`.
59
+ * @param color - The new RGB color to apply
60
+ * @param isTemporary - Override for temporary, if element has temporary color it will turn back this color, otherwise will turn back to original - default is false
61
+ */
55
62
  changeColor(elements: {
56
63
  modelId: string;
57
64
  elementId: string;
@@ -59,7 +66,7 @@ export declare class ViralVisibilityManager {
59
66
  r: number;
60
67
  g: number;
61
68
  b: number;
62
- }): void;
69
+ }, isTemporary?: boolean): void;
63
70
  /**
64
71
  * except elements from reverse to original color, using for compare model, group elements,...
65
72
  */
@@ -1,5 +1,5 @@
1
1
  import { WorkerThreadPool } from "./base/worker-pool";
2
- import { ViralPoint } from "../../types";
2
+ import { ViralPoint } from "../../..";
3
3
  export declare class BoundingBoxIntersectWorker {
4
4
  workerPool: WorkerThreadPool;
5
5
  constructor();
@@ -1,5 +1,5 @@
1
1
  import { WorkerThreadPool } from "./base/worker-pool";
2
- import { ViralPoint } from "../../types";
2
+ import { ViralPoint } from "../../..";
3
3
  export declare class BoundingBoxWorker {
4
4
  workerPool: WorkerThreadPool;
5
5
  constructor();
@@ -1,5 +1,5 @@
1
1
  import { ViralViewerApi } from "../../viral-viewer-api";
2
- import { RenderMaterial, ViralutionElement } from "../../types";
2
+ import { RenderMaterial, ViralutionElement } from "../../..";
3
3
  import { WorkerThreadPool } from "./base/worker-pool";
4
4
  export declare class LoadElementBatchWorker {
5
5
  viralViewerApi: ViralViewerApi;
@@ -0,0 +1,59 @@
1
+ import { RenderMaterial, RevitTransform, ViralPoint } from "./base-elements";
2
+ export interface ViralViewerRevitProject {
3
+ Materials: RenderMaterial[];
4
+ StructuralGeometries: ViralViewerRevitStructuralGeometry[];
5
+ NoneStructuralGeometries: ViralViewerRevitNoneStructuralGeometry[];
6
+ }
7
+ export interface ViralViewerRevitStructuralGeometry {
8
+ MaterialIndex: number;
9
+ Vertices: ViralPoint[];
10
+ Indices: number[];
11
+ }
12
+ export declare class ViralViewerRevitNoneStructuralGeometry {
13
+ MaterialIndex: number;
14
+ Vertices: ViralPoint[];
15
+ Indices: number[];
16
+ Name: string;
17
+ Instances: RevitTransform[];
18
+ }
19
+ export interface ViralutionFragmentModel {
20
+ Materials: RenderMaterial[];
21
+ Fragments: Fragment[];
22
+ }
23
+ export declare class Fragment {
24
+ MaterialIndex: number;
25
+ Elements: ElementFragment[];
26
+ }
27
+ export declare class ElementFragment {
28
+ Vertices: ViralPoint[];
29
+ Indices: number[];
30
+ Instances: RevitTransform[];
31
+ Id: string;
32
+ }
33
+ export declare class ViralViewerRevitGeometry {
34
+ Vertices: ViralPoint[];
35
+ Indices: number[];
36
+ Transform: RevitTransform | null;
37
+ }
38
+ export declare class BufferElement {
39
+ /**
40
+ * In case this buffer element is instanced mesh this buffer is original geometry
41
+ */
42
+ buffer: Float32Array | null;
43
+ /**
44
+ * In case this buffer element is instanced mesh this field is null
45
+ */
46
+ elementId: string;
47
+ modelId: number;
48
+ localMaterialIndex?: number;
49
+ globalMaterialIndex?: number;
50
+ minPoint?: ViralPoint;
51
+ maxPoint?: ViralPoint;
52
+ /**
53
+ * In case this buffer element is instanced mesh
54
+ */
55
+ instances: {
56
+ elementId: string;
57
+ transform: number[];
58
+ }[];
59
+ }
@@ -0,0 +1,61 @@
1
+ export declare class ViralutionElement {
2
+ Solids: ViralutionSolid[];
3
+ Id: string;
4
+ Instances: RevitTransform[];
5
+ }
6
+ export declare class ViralutionStandaloneModel {
7
+ Materials: RenderMaterial[];
8
+ Elements: ViralutionElement[];
9
+ Camera: ViralutionCamera;
10
+ }
11
+ export declare class ViralutionSolid {
12
+ MaterialIndex: number;
13
+ Vertices: ViralPoint[];
14
+ Indices: number[];
15
+ Buffer: number[];
16
+ }
17
+ export declare class ViralutionCamera {
18
+ scale: number;
19
+ origin: ViralPoint;
20
+ eyePosition: ViralPoint;
21
+ upDirection: ViralPoint;
22
+ forwardDirection: ViralPoint;
23
+ target: ViralPoint;
24
+ box: ViralutionBox;
25
+ }
26
+ export declare class ViralutionBox {
27
+ min: ViralPoint;
28
+ max: ViralPoint;
29
+ }
30
+ export declare class ViralutionTrackingModel {
31
+ Data: {
32
+ [key: number]: number[][];
33
+ };
34
+ CameraData: ViralutionCamera;
35
+ Translation?: number[];
36
+ }
37
+ export declare class ViralPoint {
38
+ X: number;
39
+ Y: number;
40
+ Z: number;
41
+ }
42
+ export interface RenderMaterial {
43
+ Name: string;
44
+ Opacity: number;
45
+ Metalness: number;
46
+ Roughness: number;
47
+ Red: number;
48
+ Green: number;
49
+ Blue: number;
50
+ }
51
+ export interface RevitTransform {
52
+ BasisX: ViralPoint;
53
+ BasisY: ViralPoint;
54
+ BasisZ: ViralPoint;
55
+ Offset: ViralPoint;
56
+ Id: string;
57
+ }
58
+ export interface ViralViewerState {
59
+ CameraPoint: ViralPoint;
60
+ TargetPoint: ViralPoint;
61
+ }
@@ -0,0 +1,14 @@
1
+ export interface LightConfiguration {
2
+ enabled?: boolean;
3
+ castShadow?: boolean;
4
+ intensity?: number;
5
+ color?: number;
6
+ indirectLightIntensity?: number;
7
+ shadowcatcher?: boolean;
8
+ }
9
+ export interface SunLightConfiguration extends LightConfiguration {
10
+ elevation?: number;
11
+ azimuth?: number;
12
+ radius?: number;
13
+ }
14
+ export declare const DefaultLightConfiguration: SunLightConfiguration;
@@ -0,0 +1,141 @@
1
+ import { ViralutionRelationship } from "./data";
2
+ /**
3
+ * Main entity to store a whole model data - Optimized DataTree with flat key-value storage
4
+ * - Memory efficient: Uses flat Map instead of nested objects
5
+ * - Fast queries: O(1) element lookup, O(n) search
6
+ * - Lazy search index: Only builds trie when search is called
7
+ */
8
+ export declare class DataTree {
9
+ private _elementMap;
10
+ private _relationships;
11
+ private _searchIndex;
12
+ private _searchIndexBuilt;
13
+ get elementData(): {
14
+ [key: number]: {
15
+ [key: string]: {
16
+ [key: string]: string;
17
+ };
18
+ };
19
+ }[];
20
+ constructor(elementData?: {
21
+ [key: number]: {
22
+ [key: string]: {
23
+ [key: string]: string;
24
+ };
25
+ };
26
+ }[], treeNode?: SerializedTreeNode);
27
+ /**
28
+ * Add elements to the data tree (batch operation)
29
+ * @param data Object with elementId as key
30
+ */
31
+ addElements(data: {
32
+ [key: number]: {
33
+ [key: string]: {
34
+ [key: string]: string;
35
+ };
36
+ };
37
+ }): void;
38
+ addRelationships(relationships: ViralutionRelationship[]): void;
39
+ /**
40
+ * Get element data by ID - O(1) lookup
41
+ */
42
+ getObjectByKey(key: number): {
43
+ [key: string]: {
44
+ [key: string]: string;
45
+ };
46
+ } | null;
47
+ /**
48
+ * Get all element IDs
49
+ */
50
+ getElementIds(): number[];
51
+ /**
52
+ * Get element count
53
+ */
54
+ get size(): number;
55
+ /**
56
+ * Get all elements with their data
57
+ * @returns Array of { elementId, data } objects
58
+ */
59
+ getAllElements(): {
60
+ elementId: number;
61
+ data: {
62
+ [key: string]: {
63
+ [key: string]: string;
64
+ };
65
+ };
66
+ }[];
67
+ /**
68
+ * Get all elements as a Map (more efficient for large datasets)
69
+ * @returns Map<elementId, elementData>
70
+ */
71
+ getAllElementsMap(): Map<number, {
72
+ [key: string]: {
73
+ [key: string]: string;
74
+ };
75
+ }>;
76
+ /**
77
+ * Iterate over all elements without creating intermediate arrays
78
+ * More memory efficient for large datasets
79
+ * @param callback Function to call for each element
80
+ */
81
+ forEachElement(callback: (elementId: number, data: {
82
+ [key: string]: {
83
+ [key: string]: string;
84
+ };
85
+ }) => void): void;
86
+ /**
87
+ * Search for elements containing the query string
88
+ * Builds search index lazily on first search
89
+ */
90
+ search(query: string): number[];
91
+ /**
92
+ * Build inverted index for search
93
+ * Maps: "search term" -> Set<elementId>
94
+ */
95
+ private _buildSearchIndex;
96
+ /**
97
+ * Rebuild search index from serialized worker result
98
+ */
99
+ private _rebuildSearchIndexFromSerialized;
100
+ /**
101
+ * Clear search index to free memory
102
+ */
103
+ clearSearchIndex(): void;
104
+ /**
105
+ * Dispose and clear all data
106
+ */
107
+ dispose(): void;
108
+ private _outEdges;
109
+ private _inEdges;
110
+ private _edgesByType;
111
+ INVERSE: Record<string, string>;
112
+ buildGraphIndex(): void;
113
+ getLinkedElements(id: number): number[];
114
+ getNeighborsByType(id: number, type: string): number[];
115
+ toGraph(): {
116
+ nodes: GraphNode[];
117
+ edges: GraphEdge[];
118
+ };
119
+ }
120
+ export interface SerializedTreeNode {
121
+ children: {
122
+ [char: string]: SerializedTreeNode;
123
+ };
124
+ keys: number[];
125
+ }
126
+ export declare class TreeNode {
127
+ children: Map<string, TreeNode>;
128
+ keys: Set<number>;
129
+ }
130
+ type GraphNode = {
131
+ id: string;
132
+ label: string;
133
+ group?: string;
134
+ };
135
+ type GraphEdge = {
136
+ id: string;
137
+ source: string;
138
+ target: string;
139
+ type: string;
140
+ };
141
+ export {};