viral-viewer-2 7.6.4 → 7.6.6

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 (31) hide show
  1. package/dist/{batched-mesh-simplifier-C2U_sfLF.mjs → batched-mesh-simplifier-BDUskH_d.mjs} +1 -1
  2. package/dist/components/editor/block/profile-edit-tool.d.ts +2 -1
  3. package/dist/components/editor/persistence/editor-persistence-types.d.ts +6 -1
  4. package/dist/components/editor/persistence/editor-persistence.d.ts +2 -2
  5. package/dist/components/editor/placement/area-placement-tool.d.ts +2 -2
  6. package/dist/components/editor/placement/line-placement-tool.d.ts +2 -2
  7. package/dist/components/editor/placement/placement-preview.d.ts +5 -3
  8. package/dist/components/editor/placement/point-placement-tool.d.ts +1 -1
  9. package/dist/components/editor/placement/screen-space-handle.d.ts +9 -0
  10. package/dist/components/editor/viral-editor.d.ts +13 -6
  11. package/dist/components/loader/ifc-cache-types.d.ts +31 -0
  12. package/dist/components/loader/revit-cache-types.d.ts +15 -0
  13. package/dist/components/loader/viral-ifc.loader.d.ts +9 -0
  14. package/dist/components/loader/viral-revit.loader.d.ts +5 -0
  15. package/dist/entities/data-tree.d.ts +1 -0
  16. package/dist/entities/viewer-option.d.ts +16 -0
  17. package/dist/{index-ChPxnuQp.mjs → index-YPDgQMOD.mjs} +7371 -6336
  18. package/dist/index.mjs +56 -53
  19. package/dist/services/idb/idb-connection.d.ts +1 -0
  20. package/dist/services/idb/idb-hash.d.ts +1 -0
  21. package/dist/services/idb/idb-migration.d.ts +1 -0
  22. package/dist/services/idb/idb-store.d.ts +14 -0
  23. package/dist/services/idb/idb-types.d.ts +10 -0
  24. package/dist/services/idb/index.d.ts +2 -0
  25. package/dist/services/session/session-persistence.d.ts +15 -0
  26. package/dist/services/snapshot/scene-snapshot-manager.d.ts +22 -0
  27. package/dist/services/snapshot/scene-snapshot-types.d.ts +31 -0
  28. package/dist/services/snapshot/snapshot-manager.d.ts +16 -0
  29. package/dist/services/snapshot/snapshot-types.d.ts +15 -0
  30. package/dist/viral-viewer-api.d.ts +55 -1
  31. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { B as S, a as V, V as Z } from "./index-ChPxnuQp.mjs";
1
+ import { B as S, a as V, V as Z } from "./index-YPDgQMOD.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,
@@ -31,8 +31,9 @@ export declare class ProfileEditTool {
31
31
  private _savedShowZ;
32
32
  private _savedMode;
33
33
  private _gizmoActive;
34
+ private _elevation;
34
35
  constructor(_viralViewerApi: ViralViewerApi, _editorGroup: Group);
35
- start(profile: BlockProfile): void;
36
+ start(profile: BlockProfile, elevation?: number): void;
36
37
  cancel(): void;
37
38
  finish(): ProfileEditResult | null;
38
39
  private _selectHandle;
@@ -1,4 +1,8 @@
1
- import type { LandscapeDefinition } from "../../landscape/landscape-types";
1
+ import type { LandscapeDefinition, OsmFeatures } from "../../landscape/landscape-types";
2
+ export interface LandscapeCache {
3
+ features: OsmFeatures;
4
+ elevGrid: number[][];
5
+ }
2
6
  export interface EditorObjectRecord {
3
7
  id: string;
4
8
  name: string;
@@ -13,6 +17,7 @@ export interface EditorObjectRecord {
13
17
  placementMode?: string;
14
18
  placementGroupId?: string;
15
19
  landscapeDefinition?: LandscapeDefinition;
20
+ landscapeCache?: LandscapeCache;
16
21
  }
17
22
  export interface EditorSceneState {
18
23
  version: 1;
@@ -1,6 +1,7 @@
1
1
  import type { EditorSceneState } from "./editor-persistence-types";
2
2
  export declare class EditorPersistence {
3
- private _db;
3
+ private _sceneStore;
4
+ private _uploadStore;
4
5
  open(): Promise<void>;
5
6
  saveScene(state: EditorSceneState): Promise<void>;
6
7
  loadScene(): Promise<EditorSceneState | null>;
@@ -8,5 +9,4 @@ export declare class EditorPersistence {
8
9
  loadUpload(objectId: string): Promise<ArrayBuffer | null>;
9
10
  removeUpload(objectId: string): Promise<void>;
10
11
  clearAll(): Promise<void>;
11
- private _ensureDb;
12
12
  }
@@ -29,8 +29,8 @@ export declare class AreaPlacementTool {
29
29
  private _onMouseMove;
30
30
  private _onKeyDown;
31
31
  constructor(_viralViewerApi: ViralViewerApi, _editorGroup: Group);
32
- start(catalogItemId: string, drawMode?: AreaDrawMode, spacing?: number): void;
33
- startWithProfile(catalogItemId: string, points2D: Vector2[], spacing: number): void;
32
+ start(catalogItemId: string, drawMode?: AreaDrawMode, spacing?: number): Promise<void>;
33
+ startWithProfile(catalogItemId: string, points2D: Vector2[], spacing: number): Promise<void>;
34
34
  cancel(): void;
35
35
  finish(): AreaPlacementResult | null;
36
36
  setSpacing(spacing: number): void;
@@ -25,8 +25,8 @@ export declare class LinePlacementTool {
25
25
  private _onMouseMove;
26
26
  private _onKeyDown;
27
27
  constructor(_viralViewerApi: ViralViewerApi, _editorGroup: Group);
28
- start(catalogItemId: string, spacing?: number): void;
29
- startWithProfile(catalogItemId: string, points: Vector3[], spacing: number): void;
28
+ start(catalogItemId: string, spacing?: number): Promise<void>;
29
+ startWithProfile(catalogItemId: string, points: Vector3[], spacing: number): Promise<void>;
30
30
  cancel(): void;
31
31
  finish(): LinePlacementResult | null;
32
32
  setSpacing(spacing: number): void;
@@ -1,4 +1,6 @@
1
- import { Mesh } from "three";
1
+ import { Object3D } from "three";
2
2
  import type { CatalogItem } from "../catalog/catalog-types";
3
- export declare function createPreviewMesh(catalogItemId: string, findItem: (id: string) => CatalogItem | undefined): Mesh | null;
4
- export declare function disposePreviewMesh(mesh: Mesh): void;
3
+ import type { ViralViewerApi } from "../../../viral-viewer-api";
4
+ export declare function preloadCustomModel(catalogItemId: string, findItem: (id: string) => CatalogItem | undefined, viralViewerApi: ViralViewerApi): Promise<void>;
5
+ export declare function createPreviewMesh(catalogItemId: string, findItem: (id: string) => CatalogItem | undefined): Object3D | null;
6
+ export declare function disposePreviewMesh(obj: Object3D): void;
@@ -18,7 +18,7 @@ export declare class PointPlacementTool {
18
18
  private _onMouseMove;
19
19
  private _onKeyDown;
20
20
  constructor(_viralViewerApi: ViralViewerApi, _editorGroup: Group);
21
- start(catalogItemId: string): void;
21
+ start(catalogItemId: string): Promise<void>;
22
22
  cancel(): void;
23
23
  private _place;
24
24
  private _bindListeners;
@@ -0,0 +1,9 @@
1
+ import { type Object3D } from "three";
2
+ /**
3
+ * Makes an Object3D maintain a constant screen size regardless of camera distance.
4
+ * Call once after creating the handle mesh — it hooks into onBeforeRender automatically.
5
+ * @param obj The handle mesh to keep at constant screen size
6
+ * @param baseSize The desired base scale (default 1)
7
+ * @param scaleFactor Pixels-per-unit tuning factor (default 0.008)
8
+ */
9
+ export declare function makeScreenSpaceHandle(obj: Object3D, baseSize?: number, scaleFactor?: number): void;
@@ -7,6 +7,7 @@ import { ProfileEditTool } from "./block/profile-edit-tool";
7
7
  import { EditorObject } from "./editor-object";
8
8
  import { EditorLibraryPanel } from "./library-panel/editor-library-panel";
9
9
  import { EditorPersistence } from "./persistence/editor-persistence";
10
+ import type { EditorSceneState } from "./persistence/editor-persistence-types";
10
11
  import { AreaPlacementTool, type AreaDrawMode } from "./placement/area-placement-tool";
11
12
  import { LinePlacementTool } from "./placement/line-placement-tool";
12
13
  import { PointPlacementTool } from "./placement/point-placement-tool";
@@ -17,6 +18,7 @@ import { EditorHoverFeedback } from "./hover/editor-hover-feedback";
17
18
  import { BuildingRemovalTool } from "./building-removal-tool";
18
19
  import type { LandscapeGenerateResult } from "../landscape/landscape-generator.worker";
19
20
  import type { LandscapeDefinition } from "../landscape/landscape-types";
21
+ import type { LandscapeCache } from "./persistence/editor-persistence-types";
20
22
  export declare class ViralEditor {
21
23
  viralViewerApi: ViralViewerApi;
22
24
  enabled: boolean;
@@ -42,8 +44,11 @@ export declare class ViralEditor {
42
44
  gridSize: number;
43
45
  movingBimModel: boolean;
44
46
  private _bimWasDragging;
45
- private _skipNextBimChange;
46
- private _bimRestorePosition;
47
+ private _bimAnchor;
48
+ private _bimAnchorStart;
49
+ private _bimAnchorRotStart;
50
+ private _bimWorldStart;
51
+ private _bimWorldRotStart;
47
52
  rotationSnapAngle: number;
48
53
  private _placementCatalogItemId;
49
54
  private _editingBlockId;
@@ -94,19 +99,19 @@ export declare class ViralEditor {
94
99
  findCatalogItem(itemId: string): CatalogItem | undefined;
95
100
  addObjectFromCatalog(itemId: string): Promise<EditorObject | null>;
96
101
  addObjectFromUpload(file: File): Promise<EditorObject | null>;
97
- addLandscape(result: LandscapeGenerateResult, definition: LandscapeDefinition): EditorObject;
102
+ addLandscape(result: LandscapeGenerateResult, definition: LandscapeDefinition, cache?: LandscapeCache): EditorObject;
98
103
  private _fitShadowCamera;
99
104
  private _enableEditorRendering;
100
105
  private _frameLandscape;
101
- startPointPlacement(catalogItemId: string): void;
106
+ startPointPlacement(catalogItemId: string): Promise<void>;
102
107
  cancelPointPlacement(): void;
103
108
  private _handlePointPlacement;
104
- startLinePlacement(catalogItemId: string, spacing?: number): void;
109
+ startLinePlacement(catalogItemId: string, spacing?: number): Promise<void>;
105
110
  finishLinePlacement(): void;
106
111
  cancelLinePlacement(): void;
107
112
  setLinePlacementSpacing(spacing: number): void;
108
113
  private _handleLinePlacement;
109
- startAreaPlacement(catalogItemId: string, drawMode?: AreaDrawMode, spacing?: number): void;
114
+ startAreaPlacement(catalogItemId: string, drawMode?: AreaDrawMode, spacing?: number): Promise<void>;
110
115
  finishAreaPlacement(): void;
111
116
  cancelAreaPlacement(): void;
112
117
  setAreaPlacementSpacing(spacing: number): void;
@@ -128,6 +133,8 @@ export declare class ViralEditor {
128
133
  toggleGrid(): void;
129
134
  private _showGrid;
130
135
  private _hideGrid;
136
+ getSceneState(): EditorSceneState;
137
+ restoreFromState(state: EditorSceneState): Promise<void>;
131
138
  private _triggerSave;
132
139
  private _restoreScene;
133
140
  private _restoreObject;
@@ -0,0 +1,31 @@
1
+ import type { RenderMaterial } from "../../entities/base-elements";
2
+ export interface IFCCacheSpatialNode {
3
+ expressId: number;
4
+ name: string;
5
+ type: string;
6
+ children: IFCCacheSpatialNode[];
7
+ elementIds: number[];
8
+ }
9
+ export interface IFCCacheElement {
10
+ buffer: number[];
11
+ elementId: string;
12
+ localMaterialIndex: number;
13
+ ifcType: string;
14
+ }
15
+ export interface IFCCacheEntry {
16
+ bounds: {
17
+ min: {
18
+ x: number;
19
+ y: number;
20
+ z: number;
21
+ };
22
+ max: {
23
+ x: number;
24
+ y: number;
25
+ z: number;
26
+ };
27
+ } | null;
28
+ materials: RenderMaterial[];
29
+ elements: IFCCacheElement[];
30
+ spatialTree: IFCCacheSpatialNode | null;
31
+ }
@@ -0,0 +1,15 @@
1
+ import type { ViralutionElement, ViralutionTrackingModel } from "../../entities/base-elements";
2
+ import type { ViralutionInformation } from "../../entities/data";
3
+ export type RevitCacheEntry = {
4
+ kind: "tracking";
5
+ data: ViralutionTrackingModel;
6
+ } | {
7
+ kind: "materials";
8
+ data: unknown;
9
+ } | {
10
+ kind: "geometry";
11
+ data: ViralutionElement[];
12
+ } | {
13
+ kind: "information";
14
+ data: ViralutionInformation | Record<string, unknown>;
15
+ };
@@ -30,6 +30,11 @@ export declare class ViralIFCLoader {
30
30
  private _ifcMaterials;
31
31
  /** colorKey ("r.toFixed(3),g,b,a") -> localMaterialIndex */
32
32
  private _colorMap;
33
+ private _cacheStore;
34
+ private _currentHash;
35
+ private _accumulatedElements;
36
+ private _accumulatedBounds;
37
+ private _accumulatedSpatialTree;
33
38
  constructor(viralViewerApi: ViralViewerApi);
34
39
  /**
35
40
  * Load an IFC file from a URL string or File/Blob.
@@ -38,11 +43,15 @@ export declare class ViralIFCLoader {
38
43
  * @param callbackOnProgress Progress callback with phase name and percent
39
44
  */
40
45
  load(source: string | File | Blob, callbackOnFinish?: () => void, callbackOnProgress?: (phase: string, percent: number) => void): Promise<void>;
46
+ private _loadFromCache;
47
+ private _spawnPropertyWorker;
48
+ private _postLoadSetup;
41
49
  /**
42
50
  * Query IFC properties for an element via the correct model's worker.
43
51
  * Returns null if no worker exists for that model or the query fails.
44
52
  */
45
53
  getProperties(modelId: number, expressId: number): Promise<WorkerPropertyData | null>;
54
+ clearCache(hash?: string): Promise<void>;
46
55
  /** Convert worker's raw spatial nodes to SpatialTreeNode format. */
47
56
  private _convertSpatialTree;
48
57
  /** Add newly discovered materials and register them with the material manager. */
@@ -4,8 +4,11 @@ export declare class ViralRevitLoader {
4
4
  viralViewerApi: ViralViewerApi;
5
5
  elements: ViralutionElement[];
6
6
  private _loadBatchedElementWorker;
7
+ private _cacheStore;
7
8
  constructor(viralViewerApi: ViralViewerApi);
8
9
  load(trackingUrl: string, dataUrl: string, informationUrl: string, callbackOnFinish?: () => void): Promise<void>;
10
+ private getCachedMaterials;
11
+ private getCachedChunk;
9
12
  getMaterials(dataUrl: string, byteRangeStart: number, byteRangeEnd: number, type?: string): Promise<any>;
10
13
  /**
11
14
  * Fetch + decompress + parse BIM information entirely off the main thread.
@@ -73,6 +76,8 @@ export declare class ViralRevitLoader {
73
76
  * dispose all current model
74
77
  */
75
78
  disposeModels(): void;
79
+ private _cacheKey;
80
+ clearRevitCache(prefix?: string): Promise<void>;
76
81
  /**
77
82
  * Dispose worker pools held by the revit loader.
78
83
  */
@@ -8,6 +8,7 @@ import type { ViralutionParameter, ViralutionRelationship } from "./data";
8
8
  export declare class DataTree {
9
9
  private _elementMap;
10
10
  private _relationships;
11
+ get relationships(): ViralutionRelationship[];
11
12
  private _searchIndex;
12
13
  private _searchIndexBuilt;
13
14
  get elementData(): {
@@ -21,6 +21,12 @@ export interface ViewerOptions {
21
21
  * from 0 to 1, step 0.1
22
22
  */
23
23
  navigationCubeScale?: number;
24
+ /**
25
+ * Hide the home button (house icon) on the navigation cube.
26
+ * When true, only the 3D orientation cube is shown.
27
+ * Default: false
28
+ */
29
+ hideNavigationCubeHomeButton?: boolean;
24
30
  /**
25
31
  * Override the secondary branding color used across the entire viewer UI
26
32
  * (navigation cube, toolbar active states, home button, hover planes, etc.).
@@ -41,4 +47,14 @@ export interface ViewerOptions {
41
47
  * Default: false
42
48
  */
43
49
  hideLandscapePanel?: boolean;
50
+ /**
51
+ * Auto-restore session state (camera, visibility, elevation section) from IndexedDB
52
+ * on viewer initialization. Default: true. Set to false to disable.
53
+ */
54
+ autoRestoreSession?: boolean;
55
+ /**
56
+ * Interval in milliseconds for snapshot auto-save after last state change.
57
+ * Default: 30000 (30s). Set to 0 to disable snapshot auto-save.
58
+ */
59
+ snapshotAutoSaveInterval?: number;
44
60
  }