vim-web 0.5.0-dev.17 → 0.5.0-dev.18

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 (48) hide show
  1. package/dist/style.css +37 -7
  2. package/dist/types/core-viewers/ultra/viewport.d.ts +6 -0
  3. package/dist/types/core-viewers/webgl/loader/mesh.d.ts +3 -1
  4. package/dist/types/core-viewers/webgl/loader/progressive/insertableMesh.d.ts +4 -2
  5. package/dist/types/core-viewers/webgl/loader/progressive/instancedMesh.d.ts +5 -0
  6. package/dist/types/core-viewers/webgl/viewer/gizmos/markers/gizmoMarker.d.ts +1 -0
  7. package/dist/types/core-viewers/webgl/viewer/rendering/renderer.d.ts +7 -0
  8. package/dist/types/core-viewers/webgl/viewer/viewport.d.ts +1 -1
  9. package/dist/types/react-viewers/bim/bimPanel.d.ts +3 -3
  10. package/dist/types/react-viewers/errors/errorStyle.d.ts +1 -1
  11. package/dist/types/react-viewers/helpers/reactUtils.d.ts +2 -1
  12. package/dist/types/react-viewers/helpers/utils.d.ts +8 -0
  13. package/dist/types/react-viewers/panels/axesPanel.d.ts +2 -1
  14. package/dist/types/react-viewers/panels/index.d.ts +1 -0
  15. package/dist/types/react-viewers/panels/isolationPanel.d.ts +2 -0
  16. package/dist/types/react-viewers/panels/sidePanel.d.ts +1 -1
  17. package/dist/types/react-viewers/settings/anySettings.d.ts +7 -0
  18. package/dist/types/react-viewers/settings/index.d.ts +1 -1
  19. package/dist/types/react-viewers/settings/settingsInputBox.d.ts +4 -0
  20. package/dist/types/react-viewers/settings/settingsItem.d.ts +30 -0
  21. package/dist/types/react-viewers/settings/settingsKeys.d.ts +46 -0
  22. package/dist/types/react-viewers/settings/settingsPanel.d.ts +5 -4
  23. package/dist/types/react-viewers/settings/settingsPanelContent.d.ts +6 -0
  24. package/dist/types/react-viewers/settings/settingsState.d.ts +11 -11
  25. package/dist/types/react-viewers/settings/settingsStorage.d.ts +3 -3
  26. package/dist/types/react-viewers/settings/settingsSubtitle.d.ts +2 -0
  27. package/dist/types/react-viewers/settings/settingsToggle.d.ts +11 -0
  28. package/dist/types/react-viewers/state/controlBarState.d.ts +41 -7
  29. package/dist/types/react-viewers/state/sharedIsolation.d.ts +2 -0
  30. package/dist/types/react-viewers/ultra/controlBar.d.ts +3 -1
  31. package/dist/types/react-viewers/ultra/index.d.ts +1 -0
  32. package/dist/types/react-viewers/ultra/settings.d.ts +10 -0
  33. package/dist/types/react-viewers/ultra/settingsPanel.d.ts +5 -0
  34. package/dist/types/react-viewers/ultra/viewer.d.ts +3 -1
  35. package/dist/types/react-viewers/ultra/viewerRef.d.ts +3 -0
  36. package/dist/types/react-viewers/urls.d.ts +0 -1
  37. package/dist/types/react-viewers/webgl/index.d.ts +1 -0
  38. package/dist/types/react-viewers/webgl/loading.d.ts +2 -2
  39. package/dist/types/react-viewers/webgl/settings.d.ts +36 -0
  40. package/dist/types/react-viewers/webgl/settingsPanel.d.ts +12 -0
  41. package/dist/types/react-viewers/webgl/viewer.d.ts +3 -3
  42. package/dist/types/react-viewers/webgl/viewerRef.d.ts +12 -5
  43. package/dist/vim-web.iife.js +1047 -481
  44. package/dist/vim-web.iife.js.map +1 -1
  45. package/dist/vim-web.js +1047 -481
  46. package/dist/vim-web.js.map +1 -1
  47. package/package.json +1 -1
  48. package/dist/types/react-viewers/settings/settings.d.ts +0 -61
package/dist/style.css CHANGED
@@ -733,8 +733,8 @@ video:where(.vim-component,.vim-component *) {
733
733
  .vc-top-4 {
734
734
  top: 1rem;
735
735
  }
736
- .vc-top-6 {
737
- top: 1.5rem;
736
+ .vc-top-8 {
737
+ top: 2rem;
738
738
  }
739
739
  .vc-top-\[10\%\] {
740
740
  top: 10%;
@@ -772,6 +772,9 @@ video:where(.vim-component,.vim-component *) {
772
772
  .vc-m-1 {
773
773
  margin: 0.25rem;
774
774
  }
775
+ .vc-m-2 {
776
+ margin: 0.5rem;
777
+ }
775
778
  .vc-m-auto {
776
779
  margin: auto;
777
780
  }
@@ -828,6 +831,9 @@ video:where(.vim-component,.vim-component *) {
828
831
  .vc-mt-6 {
829
832
  margin-top: 1.5rem;
830
833
  }
834
+ .vc-box-border {
835
+ box-sizing: border-box;
836
+ }
831
837
  .vc-box-content {
832
838
  box-sizing: content-box;
833
839
  }
@@ -987,6 +993,11 @@ video:where(.vim-component,.vim-component *) {
987
993
  margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
988
994
  margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
989
995
  }
996
+ .vc-space-y-2 > :not([hidden]) ~ :not([hidden]) {
997
+ --tw-space-y-reverse: 0;
998
+ margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
999
+ margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
1000
+ }
990
1001
  .vc-self-center {
991
1002
  align-self: center;
992
1003
  }
@@ -1025,6 +1036,9 @@ video:where(.vim-component,.vim-component *) {
1025
1036
  .vc-rounded-md {
1026
1037
  border-radius: 0.375rem;
1027
1038
  }
1039
+ .vc-rounded-sm {
1040
+ border-radius: 0.125rem;
1041
+ }
1028
1042
  .vc-rounded-t {
1029
1043
  border-top-left-radius: 0.25rem;
1030
1044
  border-top-right-radius: 0.25rem;
@@ -1069,6 +1083,9 @@ video:where(.vim-component,.vim-component *) {
1069
1083
  --tw-border-opacity: 1;
1070
1084
  border-color: rgb(223 223 225 / var(--tw-border-opacity, 1));
1071
1085
  }
1086
+ .vc-border-gray {
1087
+ border-color: var(--c-gray);
1088
+ }
1072
1089
  .vc-border-gray-divider {
1073
1090
  border-color: var(--c-gray-divider);
1074
1091
  }
@@ -1120,6 +1137,9 @@ video:where(.vim-component,.vim-component *) {
1120
1137
  .vc-p-1 {
1121
1138
  padding: 0.25rem;
1122
1139
  }
1140
+ .vc-p-2 {
1141
+ padding: 0.5rem;
1142
+ }
1123
1143
  .vc-p-5 {
1124
1144
  padding: 1.25rem;
1125
1145
  }
@@ -1157,6 +1177,9 @@ video:where(.vim-component,.vim-component *) {
1157
1177
  .vc-pl-6 {
1158
1178
  padding-left: 1.5rem;
1159
1179
  }
1180
+ .vc-pr-2 {
1181
+ padding-right: 0.5rem;
1182
+ }
1160
1183
  .vc-text-center {
1161
1184
  text-align: center;
1162
1185
  }
@@ -1193,6 +1216,9 @@ video:where(.vim-component,.vim-component *) {
1193
1216
  .vc-font-bold {
1194
1217
  font-weight: 700;
1195
1218
  }
1219
+ .vc-font-medium {
1220
+ font-weight: 500;
1221
+ }
1196
1222
  .vc-font-normal {
1197
1223
  font-weight: 400;
1198
1224
  }
@@ -1284,6 +1310,11 @@ video:where(.vim-component,.vim-component *) {
1284
1310
  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
1285
1311
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1286
1312
  }
1313
+ .vc-shadow-sm {
1314
+ --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
1315
+ --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
1316
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1317
+ }
1287
1318
  .vc-outline-none {
1288
1319
  outline: 2px solid transparent;
1289
1320
  outline-offset: 2px;
@@ -1763,6 +1794,10 @@ video:where(.vim-component,.vim-component *) {
1763
1794
  }
1764
1795
 
1765
1796
  /* === Cursors ===*/
1797
+ .cursor-regular {
1798
+ cursor: default;
1799
+ }
1800
+
1766
1801
  .cursor-orbit:hover {
1767
1802
  cursor: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO30uY2xzLTJ7ZmlsbDojMjEyMzI5O30uY2xzLTN7ZmlsbDpub25lO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iRlJBTUVTIj48ZyBpZD0iZnJhbWUiPjxyZWN0IGNsYXNzPSJjbHMtMyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+PC9nPjwvZz48ZyBpZD0iSUNPTlMiPjxnPjxnPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0LDIwLjIzNGMtNS42NTIsMC0xMC4yNS0yLjYzNi0xMC4yNS01Ljg3NSwwLTEuNzUxLDEuMzA2LTMuMzY2LDMuNjA0LTQuNDgtLjUwOC0uMzEyLS43MDYtLjk2Mi0uNDQtMS40ODgsLjE5NC0uMzg2LC41ODItLjYyNSwxLjAxLS42MjUsLjE0MiwwLC4yODIsLjAyNiwuNDE2LC4wNzlsLjA5NywuMDQyLDIuMTQ4LDEuMDg2Yy42OSwuMzQ5LC45NjksMS4xOTUsLjYyLDEuODg2bC0xLjA4MywyLjE0NWMtLjE5NSwuMzg2LS41ODIsLjYyNS0xLjAxMiwuNjI1LS4xNDEsMC0uMjgtLjAyNS0uNDE0LS4wNzdsLS4wOTgtLjA0NGMtLjU1LS4yNzgtLjY3OC0uODI4LS41NjctMS4zMDYtLjAyMSwuMDExLS4wNDEsLjAyMS0uMDYsLjAzMy0xLjE1NiwuNjUtMS44NDYsMS40NDQtMS44NDYsMi4xMjVzLjY5LDEuNDc2LDEuODQ2LDIuMTI2YzEuNTUzLC44NzMsMy43NTEsMS4zNzQsNi4wMjksMS4zNzRzNC40NzYtLjUwMSw2LjAyOS0xLjM3NGMxLjE1Ni0uNjUsMS44NDYtMS40NDUsMS44NDYtMi4xMjZzLS42OS0xLjQ3NS0xLjg0Ni0yLjEyNWMtMS41NTMtLjg3NC0zLjc1LTEuMzc1LTYuMDI5LTEuMzc1aC0uMTAyYy0uNjI0LDAtMS4xMzItLjQ1Ni0xLjE5Ni0xLjA2Mi0uMDM1LS4zMzQsLjA3My0uNjY4LC4yOTYtLjkxNywuMjIzLS4yNDgsLjU0Mi0uMzkzLC44NzUtLjM5NWguMTI2YzUuNjUyLDAsMTAuMjUsMi42MzUsMTAuMjUsNS44NzRzLTQuNTk4LDUuODc1LTEwLjI1LDUuODc1WiIvPjxwYXRoIGQ9Ik03LjkyNSw4LjAxNmMuMTA4LDAsLjIxNywuMDIsLjMyMywuMDYxLC4wMjYsLjAxMSwuMDUyLC4wMjIsLjA3OCwuMDM1bDIuMTQ1LDEuMDgzYy41NjgsLjI4NywuNzk3LC45ODIsLjUxLDEuNTVsLTEuMDgzLDIuMTQ2Yy0uMTU1LC4zMDgtLjQ2MywuNDg3LS43ODgsLjQ4Ny0uMTA4LDAtLjIxNy0uMDItLjMyNC0uMDYyLS4wMjYtLjAxLS4wNTItLjAyMi0uMDc4LS4wMzUtLjUxMi0uMjU5LS41MzEtLjc5MS0uMzkxLTEuMTY4bC4xNTItLjQxMWMtLjIxNiwuMDk5LS40MjUsLjIwMy0uNjIyLC4zMTMtMS4yNTQsLjcwNi0xLjk3MywxLjU2LTEuOTczLDIuMzQzcy43MTksMS42MzgsMS45NzMsMi4zNDNjMS41ODksLjg5NCwzLjgzMiwxLjQwNyw2LjE1MiwxLjQwN3M0LjU2Mi0uNTEzLDYuMTUyLTEuNDA3YzEuMjU0LS43MDUsMS45NzMtMS41NTksMS45NzMtMi4zNDNzLS43MTktMS42MzgtMS45NzMtMi4zNDNjLTEuNTg5LS44OTQtMy44MzItMS40MDctNi4xNTItMS40MDctLjAzNiwwLS4wNzMsMC0uMTA5LDBoLS4wMDhjLS40OCwwLS44ODMtLjM2Mi0uOTMyLS44NC0uMDU3LS41NSwuMzcyLTEuMDMxLC45MjUtMS4wMzUsLjA0MSwwLC4wODMsMCwuMTI0LDAsNS41MjMsMCwxMCwyLjUxOSwxMCw1LjYyNXMtNC40NzcsNS42MjUtMTAsNS42MjUtMTAtMi41MTgtMTAtNS42MjVjMC0xLjgxNywxLjUzMi0zLjQzMiwzLjkwOS00LjQ2bC0uMDA0LS4wMTEtLjM2Ni0uMTkxYy0uNDM4LS4yMjktLjYxOS0uNzY1LS40MDItMS4xOTQsLjE1Ni0uMzA4LC40NjQtLjQ4NywuNzg4LS40ODdtMC0uNWgwYy0uNTI0LDAtLjk5NywuMjkyLTEuMjM0LC43NjItLjI2MSwuNTE4LS4xNTcsMS4xMzEsLjIxNCwxLjU0OS0yLjE3NiwxLjE1MS0zLjQwNSwyLjc3Mi0zLjQwNSw0LjUzMywwLDMuNDM1LDQuNjEyLDYuMTI1LDEwLjUsNi4xMjVzMTAuNS0yLjY5LDEwLjUtNi4xMjUtNC42MTItNi4xMjUtMTAuNS02LjEyNWgtLjA2NXMtLjA1OSwwLS4wNTksMGMtLjQwNywuMDAzLS43OTMsLjE3Ny0xLjA2MywuNDc5LS4yNywuMzAyLS40MDEsLjcwNi0uMzU5LDEuMTA4LC4wNzYsLjczNCwuNjkxLDEuMjg4LDEuNDMsMS4yODhoLjA2NXMuMDUxLDAsLjA1MSwwYzIuMjM3LDAsNC4zOSwuNDg5LDUuOTA3LDEuMzQyLDEuMDc2LC42MDUsMS43MTgsMS4zMTksMS43MTgsMS45MDhzLS42NDIsMS4zMDItMS43MTgsMS45MDdjLTEuNTE3LC44NTQtMy42NywxLjM0My01LjkwNywxLjM0M3MtNC4zOS0uNDg5LTUuOTA3LTEuMzQyYy0xLjA3Ni0uNjA1LTEuNzE4LTEuMzE4LTEuNzE4LTEuOTA4LDAtLjUyMywuNTA3LTEuMTQ0LDEuMzc0LTEuNzAxLC4wMzgsLjQyMiwuMjU2LC44MjgsLjczNCwxLjA3LC4wNDIsLjAyMSwuMDgyLC4wMzksLjEyMSwuMDU0LC4xNjMsLjA2NCwuMzMzLC4wOTYsLjUwNiwuMDk2LC41MjQsMCwuOTk3LS4yOTIsMS4yMzQtLjc2MmwxLjA4My0yLjE0NWMuMTk5LS4zOTQsLjIzMy0uODQyLC4wOTQtMS4yNjJzLS40MzEtLjc2MS0uODI1LS45NmwtMi4xNDYtMS4wODNjLS4wMzUtLjAxOC0uMDc0LS4wMzUtLjExMy0uMDUxLS4xNzEtLjA2Ny0uMzQxLS4wOTktLjUxMy0uMDk5aDBaIi8+PC9nPjxnPjxjaXJjbGUgY2xhc3M9ImNscy0xIiBjeD0iMTQiIGN5PSIxNC4zNTkiIHI9IjIuNDM4Ii8+PHBhdGggZD0iTTE0LDEyLjE3MmMxLjIwNiwwLDIuMTg4LC45ODEsMi4xODgsMi4xODhzLS45ODEsMi4xODgtMi4xODgsMi4xODgtMi4xODgtLjk4MS0yLjE4OC0yLjE4OCwuOTgxLTIuMTg4LDIuMTg4LTIuMTg4bTAtLjVjLTEuNDgyLDAtMi42ODgsMS4yMDYtMi42ODgsMi42ODhzMS4yMDYsMi42ODgsMi42ODgsMi42ODgsMi42ODgtMS4yMDYsMi42ODgtMi42ODgtMS4yMDYtMi42ODgtMi42ODgtMi42ODhoMFoiLz48L2c+PC9nPjxnPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEuMDA3LDUuNzVjLS4zNzIsMC0uNzU3LS4yODEtLjc1Ny0uNzUyVjFDLjI1LC41ODcsLjU4NiwuMjUsMSwuMjVoMy45OThjLjM2OSwwLC42LC4yMzksLjY5MywuNDYzcy4wOTksLjU1Ny0uMTYzLC44MTdMMS41Myw1LjUyOGMtLjE4MywuMTg0LS4zODYsLjIyMi0uNTIzLC4yMjJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNC45OTgsLjVjLjMxLDAsLjQzMiwuMjM2LC40NjIsLjMwOXMuMTExLC4zMjYtLjEwOCwuNTQ1TDEuMzU0LDUuMzUyYy0uMTIzLC4xMjMtLjI1NiwuMTQ4LS4zNDYsLjE0OC0uMjUsMC0uNTA3LS4xODgtLjUwNy0uNTAyVjFjMC0uMjc2LC4yMjQtLjUsLjUtLjVoMy45OThtMC0uNUgxQy40NDgsMCwwLC40NDgsMCwxdjMuOTk4YzAsLjYwMywuNDkzLDEuMDAyLDEuMDA3LDEuMDAyLC4yNDYsMCwuNDk2LS4wOTEsLjctLjI5NUw1LjcwNSwxLjcwN2MuNjMtLjYzLC4xODQtMS43MDctLjcwNy0xLjcwN2gwWiIvPjwvZz48L2c+PC9zdmc+'),
1768
1803
  auto;
@@ -1778,11 +1813,6 @@ video:where(.vim-component,.vim-component *) {
1778
1813
  auto;
1779
1814
  }
1780
1815
 
1781
- .cursor-pan:active {
1782
- cursor: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO30uY2xzLTJ7ZmlsbDojMjEyMzI5O30uY2xzLTN7ZmlsbDpub25lO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iRlJBTUVTIj48ZyBpZD0iZnJhbWUiPjxyZWN0IGNsYXNzPSJjbHMtMyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+PC9nPjwvZz48ZyBpZD0iSUNPTlMiPjxnPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEuMDA3LDUuNzVjLS4zNzIsMC0uNzU3LS4yODEtLjc1Ny0uNzUyVjFDLjI1LC41ODcsLjU4NiwuMjUsMSwuMjVoMy45OThjLjM2OSwwLC42LC4yMzksLjY5MywuNDYzcy4wOTksLjU1Ny0uMTYzLC44MTdMMS41Myw1LjUyOGMtLjE4MywuMTg0LS4zODYsLjIyMi0uNTIzLC4yMjJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNC45OTgsLjVjLjMxLDAsLjQzMiwuMjM2LC40NjIsLjMwOXMuMTExLC4zMjYtLjEwOCwuNTQ1TDEuMzU0LDUuMzUyYy0uMTIzLC4xMjMtLjI1NiwuMTQ4LS4zNDYsLjE0OC0uMjUsMC0uNTA3LS4xODgtLjUwNy0uNTAyVjFjMC0uMjc2LC4yMjQtLjUsLjUtLjVoMy45OThtMC0uNUgxQy40NDgsMCwwLC40NDgsMCwxdjMuOTk4YzAsLjYwMywuNDkzLDEuMDAyLDEuMDA3LDEuMDAyLC4yNDYsMCwuNDk2LS4wOTEsLjctLjI5NUw1LjcwNSwxLjcwN2MuNjMtLjYzLC4xODQtMS43MDctLjcwNy0xLjcwN2gwWiIvPjwvZz48Zz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNC4xMzksMjMuMDYyYy0xLjY0NywwLTMuMTUzLS43OTMtNC4wMy0yLjEyMmwtMi4xNTktMy4yOTFjLS4yMDktLjMxOS0uMjc1LS42OTUtLjE4Ny0xLjA2MSwuMDg5LS4zNjYsLjMyMi0uNjc3LC42NTYtLjg3NiwuMjM1LS4xNCwuNTA1LS4yMTQsLjc4MS0uMjE0LC4wOCwwLC4xNjEsLjAwNiwuMjQxLC4wMTlsLjU3MiwuMDl2LTMuNjg3YzAtLjY0MiwuNTEzLTEuMTY5LDEuMTY5LTEuMiwuMDIxLDAsLjA0MS0uMDAxLC4wNjItLjAwMSwuNjc4LDAsMS4yMywuNTI2LDEuMjMsMS4xNzJ2LjM5MWMwLC4wODYsLjA3NCwuMTU2LC4xNjQsLjE1NnMuMTY0LS4wNywuMTY0LS4xNTZ2LTEuMjk5YzAtLjY0MiwuNTEzLTEuMTY5LDEuMTY5LTEuMiwuMDIxLDAsLjA0MS0uMDAxLC4wNjItLjAwMSwuNjc4LDAsMS4yMywuNTI2LDEuMjMsMS4xNzJ2MS40ODRjMCwuMDg2LC4wNzQsLjE1NiwuMTY0LC4xNTZzLjE2NC0uMDcsLjE2NC0uMTU2di0uODNjMC0uNjQyLC41MTMtMS4xNjksMS4xNjktMS4yLC4wMjEsMCwuMDQxLS4wMDEsLjA2Mi0uMDAxLC42NzgsMCwxLjIzLC41MjYsMS4yMywxLjE3MnYxLjAxNmMwLC4wODYsLjA3NCwuMTU2LC4xNjQsLjE1NnMuMTY0LS4wNywuMTY0LS4xNTZ2LS4zNjFjMC0uNjQyLC41MTMtMS4xNjksMS4xNjktMS4yLC4wMjEsMCwuMDQxLS4wMDEsLjA2Mi0uMDAxLC42NzgsMCwxLjIzLC41MjYsMS4yMywxLjE3MnY2LjMyOGMwLDIuNDk5LTIuMTM0LDQuNTMxLTQuNzU4LDQuNTMxaC0xLjk0NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMC42NzcsMTIuOTA2djUuNjI1YzAsMi40MTYtMi4wNTcsNC4zNzUtNC41OTQsNC4zNzVoLTEuOTQ0Yy0xLjU5LDAtMy4wNDUtLjc2Ni0zLjg5MS0yLjA0OWwtMi4xNTktMy4yOWMtLjE4Ni0uMjgzLS4yNDUtLjYxOC0uMTY2LS45NDQsLjA3OS0uMzI1LC4yODYtLjYwMiwuNTgzLS43NzksLjIwOS0uMTI0LC40NDktLjE5LC42OTQtLjE5LC4wNzEsMCwuMTQzLC4wMDYsLjIxNCwuMDE3bC43NjMsLjExOXYtLjczNnMwLTMuMTM0LDAtMy4xMzRjMC0uNTQ2LC40NC0xLjAxNywxLjAxMy0xLjA0NCwuNjEyLS4wMjksMS4xMiwuNDM3LDEuMTIsMS4wMTR2LjM5MWMwLC4xNzMsLjE0NywuMzEyLC4zMjgsLjMxMmgwYy4xODEsMCwuMzI4LS4xNCwuMzI4LS4zMTJ2LTEuMjk5YzAtLjU0NiwuNDQtMS4wMTcsMS4wMTMtMS4wNDQsLjYxMi0uMDI5LDEuMTIsLjQzNywxLjEyLDEuMDE0djEuNDg0YzAsLjE3MywuMTQ3LC4zMTIsLjMyOCwuMzEyaDBjLjE4MSwwLC4zMjgtLjE0LC4zMjgtLjMxMnYtLjgzYzAtLjU0NiwuNDQtMS4wMTcsMS4wMTMtMS4wNDQsLjYxMi0uMDI5LDEuMTIsLjQzNywxLjEyLDEuMDE0djEuMDE2YzAsLjE3MywuMTQ3LC4zMTIsLjMyOCwuMzEyaDBjLjE4MSwwLC4zMjgtLjE0LC4zMjgtLjMxMnYtLjM2MWMwLS41NDYsLjQ0LTEuMDE3LDEuMDEzLTEuMDQ0LC42MTItLjAyOSwxLjEyLC40MzcsMS4xMiwxLjAxNHYuNzAzWiIvPjxwYXRoIGQ9Ik0yMS4zMzMsMTIuMjAzYzAtLjkwNi0uNzcxLTEuNjQxLTEuNzIzLTEuNjQxLS40NTUsMC0uODY4LC4xNjktMS4xNzYsLjQ0NC0uMjQ0LS42MjQtLjg3My0xLjA2OS0xLjYxMy0xLjA2OWgwYy0uNDU1LDAtLjg2OCwuMTY5LTEuMTc2LC40NDQtLjI0NC0uNjI0LS44NzMtMS4wNjktMS42MTMtMS4wNjktLjgzNSwwLTEuNTMsLjU2Ni0xLjY4OSwxLjMxNi0uMjk4LS4yMzYtLjY4Mi0uMzc5LTEuMS0uMzc5aDBjLS45NTEsMC0xLjcyMywuNzM1LTEuNzIzLDEuNjQxdjMuMTY0Yy0uMTA2LS4wMTctLjIxMy0uMDI1LS4zMjEtLjAyNS0uMzU2LDAtLjcxNywuMDkyLTEuMDQxLC4yODUtLjkyMiwuNTQ5LTEuMjAzLDEuNzA2LS42MjYsMi41ODRsMi4xNTksMy4yOWMuOTI5LDEuNDA3LDIuNTc0LDIuMzQzLDQuNDQ4LDIuMzQzaDEuOTQ0YzIuOSwwLDUuMjUtMi4yMzksNS4yNS01di02LjMyOFptLS42NTYsLjcwM3Y1LjYyNWMwLDIuNDE2LTIuMDU3LDQuMzc1LTQuNTk0LDQuMzc1aC0xLjk0NGMtMS41OSwwLTMuMDQ1LS43NjYtMy44OTEtMi4wNDlsLTIuMTU5LTMuMjljLS4xODYtLjI4My0uMjQ1LS42MTgtLjE2Ni0uOTQ0LC4wNzktLjMyNSwuMjg2LS42MDIsLjU4My0uNzc5LC4yMDktLjEyNCwuNDQ5LS4xOSwuNjk0LS4xOSwuMDcxLDAsLjE0MywuMDA2LC4yMTQsLjAxN2wuNzYzLC4xMTl2LS43MzZzMC0zLjEzNCwwLTMuMTM0YzAtLjU0NiwuNDQtMS4wMTcsMS4wMTMtMS4wNDQsLjYxMi0uMDI5LDEuMTIsLjQzNywxLjEyLDEuMDE0di4zOTFjMCwuMTczLC4xNDcsLjMxMiwuMzI4LC4zMTJoMGMuMTgxLDAsLjMyOC0uMTQsLjMyOC0uMzEydi0xLjI5OWMwLS41NDYsLjQ0LTEuMDE3LDEuMDEzLTEuMDQ0LC42MTItLjAyOSwxLjEyLC40MzcsMS4xMiwxLjAxNHYxLjQ4NGMwLC4xNzMsLjE0NywuMzEyLC4zMjgsLjMxMmgwYy4xODEsMCwuMzI4LS4xNCwuMzI4LS4zMTJ2LS44M2MwLS41NDYsLjQ0LTEuMDE3LDEuMDEzLTEuMDQ0LC42MTItLjAyOSwxLjEyLC40MzcsMS4xMiwxLjAxNHYxLjAxNmMwLC4xNzMsLjE0NywuMzEyLC4zMjgsLjMxMmgwYy4xODEsMCwuMzI4LS4xNCwuMzI4LS4zMTJ2LS4zNjFjMC0uNTQ2LC40NC0xLjAxNywxLjAxMy0xLjA0NCwuNjEyLS4wMjksMS4xMiwuNDM3LDEuMTIsMS4wMTR2LjcwM1oiLz48L2c+PC9nPjwvc3ZnPg=='),
1783
- auto;
1784
- }
1785
-
1786
1816
  .cursor-zoom:hover {
1787
1817
  cursor: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+DQogIDxnIGlkPSJhIiBkYXRhLW5hbWU9IkZSQU1FUyI+DQogICAgPGcgaWQ9ImIiIGRhdGEtbmFtZT0iZnJhbWUiPg0KICAgICAgPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJub25lIi8+DQogICAgPC9nPg0KICA8L2c+DQogIDxnIGlkPSJjIiBkYXRhLW5hbWU9IklDT05TIj4NCiAgICA8cGF0aCBpZD0iZCIgZGF0YS1uYW1lPSJQYXRoIDE1MDc4IiBkPSJNMTQsNC43ODFjLS4wNTYsMC0uMTEyLC4wMDMtLjE2NywuMDA4cy0uMTExLC4wMTMtLjE2NSwuMDI0LS4xMDgsLjAyNC0uMTYxLC4wMzljLS4wNTMsLjAxNi0uMTA0LC4wMzQtLjE1NSwuMDU1bC00LjIyMSwxLjc2Yy0uMTU0LC4wNjMtLjI5NiwuMTUzLS40MTksLjI2NS0uMTA4LC4wOTktLjE5MywuMjE5LS4yNTEsLjM1Mi0uMDU0LC4xMjUtLjA3NiwuMjYxLS4wNjUsLjM5NywuMDE0LC4xNDIsLjA2NCwuMjc3LC4xNDUsLjM5NCwuMDU5LC4wODYsLjEzMSwuMTYzLC4yMTIsLjIyOCwuMDg1LC4wNjgsLjE3OSwuMTI1LC4yNzgsLjE2OSwuMTA0LC4wNDcsLjIxMywuMDgyLC4zMjUsLjEwNSwuMTE2LC4wMjQsLjIzNCwuMDM2LC4zNTIsLjAzNiwuMDU3LDAsLjExNC0uMDAzLC4xNzItLjAwOHMuMTE1LS4wMTQsLjE3MS0uMDI1Yy4wNTctLjAxMSwuMTEzLS4wMjUsLjE2OS0uMDQyLC4wNTYtLjAxNywuMTExLS4wMzcsLjE2NS0uMDZsMi4yNTgtLjk2NS0uNzcsMTEuOTU2LTMuMzA3LTEuNzE3Yy0uMDU5LS4wMy0uMTE5LS4wNTctLjE4MS0uMDgtLjA2Mi0uMDIzLS4xMjUtLjA0MS0uMTg5LS4wNTYtLjA2NC0uMDE1LS4xMjgtLjAyNi0uMTkzLS4wMzMtLjA2NS0uMDA3LS4xMy0uMDExLS4xOTYtLjAxMS0uMTI3LDAtLjI1NCwuMDE0LS4zNzgsLjA0LS4xMjQsLjAyNi0uMjQ0LC4wNjYtLjM1OSwuMTE4LS4xMTQsLjA1Mi0uMjIzLC4xMTYtLjMyMiwuMTkzLS4xLC4wNzYtLjE4OSwuMTY1LS4yNjYsLjI2NC0uMTExLC4xNDEtLjE5MSwuMzA0LS4yMzQsLjQ3OS0uMDM5LC4xNjItLjA0LC4zMzEtLjAwNCwuNDk0LC4wMzcsLjE2NSwuMTExLC4zMTksLjIxNiwuNDUyLC4xMTUsLjE0NSwuMjYsLjI2NSwuNDI1LC4zNTFsNi4zMDksMy4zNjhjLjA2MiwuMDMzLC4xMjYsLjA2MiwuMTkyLC4wODcsLjA2NiwuMDI1LC4xMzMsLjA0NiwuMjAxLC4wNjIsLjI3NCwuMDY2LC41NiwuMDY2LC44MzQsMCwuMDY4LS4wMTcsLjEzNS0uMDM3LC4yMDEtLjA2MiwuMDY2LS4wMjUsLjEzLS4wNTQsLjE5Mi0uMDg3bDYuMzA3LTMuMzY4Yy4xNjQtLjA4NiwuMzA5LS4yMDYsLjQyNC0uMzUxLC4xMDUtLjEzMywuMTc4LS4yODcsLjIxNi0uNDUyLC4wMzYtLjE2MywuMDM1LS4zMzItLjAwNC0uNDk0LS4wNDMtLjE3NC0uMTIyLS4zMzgtLjIzNC0uNDc5LS4wNzctLjA5OS0uMTY3LS4xODgtLjI2Ni0uMjY0LS4xLS4wNzYtLjIwOC0uMTQxLS4zMjItLjE5My0uMTE1LS4wNTItLjIzNi0uMDkyLS4zNTktLjExOC0uMTI0LS4wMjctLjI1MS0uMDQtLjM3OC0uMDQtLjA2NSwwLS4xMzEsLjAwNC0uMTk2LC4wMTEtLjA2NSwuMDA3LS4xMywuMDE4LS4xOTMsLjAzMy0uMDY0LC4wMTUtLjEyNywuMDM0LS4xODksLjA1Ni0uMDYyLC4wMjMtLjEyMiwuMDQ5LS4xODEsLjA4bC0zLjMwNywxLjcxNy0uNzcyLTExLjk1NywyLjI1OCwuOTY1Yy4wNTQsLjAyMywuMTA5LC4wNDMsLjE2NSwuMDYsLjA1NiwuMDE3LC4xMTIsLjAzMSwuMTY5LC4wNDIsLjA1NywuMDExLC4xMTQsLjAyLC4xNzEsLjAyNXMuMTE1LC4wMDgsLjE3MiwuMDA4Yy4xMTgsMCwuMjM2LS4wMTIsLjM1Mi0uMDM2LC4xMTItLjAyMywuMjIxLS4wNTgsLjMyNS0uMTA1LC4wOTktLjA0NCwuMTkzLS4xMDEsLjI3OC0uMTY5LC4wODItLjA2NSwuMTUzLS4xNDIsLjIxMi0uMjI4LC4wODEtLjExNywuMTMxLS4yNTMsLjE0NS0uMzk0LC4wMTItLjEzNS0uMDExLS4yNzEtLjA2NC0uMzk2LS4wNTgtLjEzNC0uMTQ0LS4yNTQtLjI1Mi0uMzUyLS4xMjMtLjExMi0uMjY1LS4yMDItLjQxOS0uMjY1bC00LjIyMS0xLjc2MWMtLjA1MS0uMDIxLS4xMDItLjA0LS4xNTUtLjA1NS0uMDUyLS4wMTYtLjEwNi0uMDI5LS4xNjEtLjAzOXMtLjEwOS0uMDE4LS4xNjUtLjAyNC0uMTExLS4wMDgtLjE2Ny0uMDA4IiBmaWxsPSIjZmZmIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNSIvPg0KICAgIDxnPg0KICAgICAgPHBhdGggZD0iTTEuMDA3LDUuNzVjLS4zNzIsMC0uNzU3LS4yODEtLjc1Ny0uNzUyVjFDLjI1LC41ODcsLjU4NiwuMjUsMSwuMjVoMy45OThjLjM2OSwwLC42LC4yMzksLjY5MywuNDYzcy4wOTksLjU1Ny0uMTYzLC44MTdMMS41Myw1LjUyOGMtLjE4MywuMTg0LS4zODYsLjIyMi0uNTIzLC4yMjJaIiBmaWxsPSIjZmZmIi8+DQogICAgICA8cGF0aCBkPSJNNC45OTgsLjVjLjMxLDAsLjQzMiwuMjM2LC40NjIsLjMwOXMuMTExLC4zMjYtLjEwOCwuNTQ1TDEuMzU0LDUuMzUyYy0uMTIzLC4xMjMtLjI1NiwuMTQ4LS4zNDYsLjE0OC0uMjUsMC0uNTA3LS4xODgtLjUwNy0uNTAyVjFjMC0uMjc2LC4yMjQtLjUsLjUtLjVoMy45OThtMC0uNUgxQy40NDgsMCwwLC40NDgsMCwxdjMuOTk4YzAsLjYwMywuNDkzLDEuMDAyLDEuMDA3LDEuMDAyLC4yNDYsMCwuNDk2LS4wOTEsLjctLjI5NUw1LjcwNSwxLjcwN2MuNjMtLjYzLC4xODQtMS43MDctLjcwNy0xLjcwN2gwWiIgZmlsbD0iIzIxMjMyOSIvPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+'),
1788
1818
  auto;
@@ -8,6 +8,8 @@ export interface IViewport {
8
8
  canvas: HTMLCanvasElement;
9
9
  /** Updates the aspect ratio of the viewport on the server */
10
10
  update(): void;
11
+ /** Resizes the viewport to match its parent's dimensions */
12
+ resizeToParent(): void;
11
13
  }
12
14
  /**
13
15
  * Class managing the viewport and canvas resizing functionality
@@ -34,6 +36,10 @@ export declare class Viewport {
34
36
  * Updates the aspect ratio of the viewport on the server
35
37
  */
36
38
  update(): void;
39
+ /**
40
+ * Resizes the viewport to match its parent's dimensions
41
+ */
42
+ resizeToParent(): void;
37
43
  /**
38
44
  * Cleans up resources by removing resize observer and clearing timeouts
39
45
  */
@@ -52,9 +52,11 @@ export declare class Mesh {
52
52
  static createMerged(mesh: THREE.Mesh, instances: number[], boxes: THREE.Box3[], submeshes: number[]): Mesh;
53
53
  static createInstanced(mesh: THREE.Mesh, instances: number[], boxes: THREE.Box3[]): Mesh;
54
54
  /**
55
- * Overrides mesh material, set to undefine to restore initial material.
55
+ * Sets the material for this mesh.
56
+ * Set to undefined to reset to original materials.
56
57
  */
57
58
  setMaterial(value: ModelMaterial): void;
59
+ private _mergeMaterials;
58
60
  /**
59
61
  * Returns submesh for given index.
60
62
  */
@@ -54,7 +54,9 @@ export declare class InsertableMesh {
54
54
  */
55
55
  getSubmesh(index: number): InsertableSubmesh;
56
56
  /**
57
- * Overrides mesh material, set to undefine to restore initial material.
58
- */
57
+ * Sets the material for this mesh.
58
+ * Set to undefined to reset to original materials.
59
+ */
59
60
  setMaterial(value: ModelMaterial): void;
61
+ private _mergeMaterials;
60
62
  }
@@ -27,7 +27,12 @@ export declare class InstancedMesh {
27
27
  * Returns all submeshes for given index.
28
28
  */
29
29
  getSubmeshes(): InstancedSubmesh[];
30
+ /**
31
+ * Sets the material for this mesh.
32
+ * Set to undefined to reset to original materials.
33
+ */
30
34
  setMaterial(value: ModelMaterial): void;
35
+ private _mergeMaterials;
31
36
  private computeBoundingBoxes;
32
37
  private importBoundingBoxes;
33
38
  computeBoundingBox(boxes: THREE.Box3[]): THREE.Box3;
@@ -32,6 +32,7 @@ export declare class Marker implements IVimElement {
32
32
  * The index of the marker in the marker collection.
33
33
  */
34
34
  get index(): number;
35
+ get isRoom(): boolean;
35
36
  private _outlineAttribute;
36
37
  private _visibleAttribute;
37
38
  private _coloredAttribute;
@@ -62,8 +62,15 @@ export declare class Renderer implements IRenderer {
62
62
  */
63
63
  get background(): THREE.Color | THREE.Texture;
64
64
  set background(color: THREE.Color | THREE.Texture);
65
+ /**
66
+ * Sets the material used to render models. If set to undefined, the default model or mesh material is used.
67
+ */
65
68
  get modelMaterial(): ModelMaterial;
66
69
  set modelMaterial(material: ModelMaterial);
70
+ /**
71
+ * The material that will be used when setting model material to undefined.
72
+ */
73
+ defaultModelMaterial: ModelMaterial;
67
74
  /**
68
75
  * Signal dispatched at the end of each frame if the scene was updated, such as visibility changes.
69
76
  */
@@ -62,7 +62,7 @@ export declare class Viewport {
62
62
  /**
63
63
  * Resizes the canvas and updates the camera to match new parent dimensions.
64
64
  */
65
- ResizeToParent(): void;
65
+ resizeToParent(): void;
66
66
  /**
67
67
  * Set a callback for canvas resize with debouncing
68
68
  * https://stackoverflow.com/questions/5825447/javascript-event-for-canvas-resize/30688151
@@ -3,19 +3,19 @@
3
3
  */
4
4
  import React from 'react';
5
5
  import * as Core from '../../core-viewers';
6
- import { Settings } from '../settings';
7
6
  import { CameraRef } from '../state/cameraState';
8
7
  import { IsolationRef } from '../state/sharedIsolation';
9
8
  import { ViewerState } from '../webgl/viewerState';
10
9
  import { BimInfoPanelRef } from './bimInfoData';
11
10
  import { TreeActionRef } from './bimTree';
11
+ import { WebglSettings } from '../webgl/settings';
12
12
  export declare function OptionalBimPanel(props: {
13
13
  viewer: Core.Webgl.Viewer;
14
14
  camera: CameraRef;
15
15
  viewerState: ViewerState;
16
16
  isolation: IsolationRef;
17
17
  visible: boolean;
18
- settings: Settings;
18
+ settings: WebglSettings;
19
19
  treeRef: React.MutableRefObject<TreeActionRef | undefined>;
20
20
  bimInfoRef: BimInfoPanelRef;
21
21
  }): JSX.Element;
@@ -34,7 +34,7 @@ export declare function BimPanel(props: {
34
34
  viewerState: ViewerState;
35
35
  isolation: IsolationRef;
36
36
  visible: boolean;
37
- settings: Settings;
37
+ settings: WebglSettings;
38
38
  treeRef: React.MutableRefObject<TreeActionRef | undefined>;
39
39
  bimInfoRef: BimInfoPanelRef;
40
40
  }): import("react/jsx-runtime").JSX.Element;
@@ -4,7 +4,7 @@ export declare const vcColorLink = "vc-text-[#0590CC]";
4
4
  export declare const vcLink = "vc-text-[#0590CC] vc-underline";
5
5
  export declare const vcLabel = "vc-text-[#3F444F]";
6
6
  export declare const vcRoboto = "vc-font-['Roboto',sans-serif]";
7
- export declare function footer(url: string): import("react/jsx-runtime").JSX.Element;
7
+ export declare function footer(): import("react/jsx-runtime").JSX.Element;
8
8
  export declare function mainText(text: JSX.Element): import("react/jsx-runtime").JSX.Element;
9
9
  export declare function detailText(text: string): import("react/jsx-runtime").JSX.Element;
10
10
  export declare function bold(text: string): import("react/jsx-runtime").JSX.Element;
@@ -55,9 +55,10 @@ export declare function useRefresher(): StateRefresher;
55
55
  * The reference provides access to the state, along with event dispatching, validation, and confirmation logic.
56
56
  *
57
57
  * @param initialValue - The initial state value.
58
+ * @param isLazy - Whether to treat the initialValue as a lazy initializer function.
58
59
  * @returns An object implementing StateRef along with additional helper hooks.
59
60
  */
60
- export declare function useStateRef<T>(initialValue: T | (() => T)): {
61
+ export declare function useStateRef<T>(initialValue: T | (() => T), isLazy?: boolean): {
61
62
  /**
62
63
  * Returns the current state value.
63
64
  */
@@ -5,3 +5,11 @@ export declare function whenAllTrue(value: (UserBoolean | boolean)[], element: J
5
5
  export declare function whenAllFalse(value: (UserBoolean | boolean)[], element: JSX.Element): JSX.Element;
6
6
  export declare function whenSomeTrue(value: (UserBoolean | boolean)[], element: JSX.Element): JSX.Element;
7
7
  export declare function whenSomeFalse(value: (UserBoolean | boolean)[], element: JSX.Element): JSX.Element;
8
+ /**
9
+ * Makes all fields optional recursively
10
+ * @template T - The type to make recursively partial
11
+ * @returns A type with all nested properties made optional
12
+ */
13
+ export type RecursivePartial<T> = {
14
+ [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object ? RecursivePartial<T[P]> : T[P];
15
+ };
@@ -5,6 +5,7 @@ import React from 'react';
5
5
  import * as Core from '../../core-viewers';
6
6
  import { CameraRef } from '../state/cameraState';
7
7
  import { SettingsState } from '../settings/settingsState';
8
+ import { WebglSettings } from '../webgl/settings';
8
9
  /**
9
10
  * Memoized version of the AxesPanelMemo.
10
11
  */
@@ -15,6 +16,6 @@ export declare const AxesPanelMemo: React.MemoExoticComponent<typeof AxesPanel>;
15
16
  declare function AxesPanel(props: {
16
17
  viewer: Core.Webgl.Viewer;
17
18
  camera: CameraRef;
18
- settings: SettingsState;
19
+ settings: SettingsState<WebglSettings>;
19
20
  }): import("react/jsx-runtime").JSX.Element;
20
21
  export {};
@@ -3,6 +3,7 @@ export declare const SectionBoxPanel: {
3
3
  Ids: {
4
4
  showGhost: string;
5
5
  ghostOpacity: string;
6
+ transparency: string;
6
7
  };
7
8
  };
8
9
  export declare const IsolationPanel: {
@@ -3,7 +3,9 @@ import { GenericPanelHandle } from "../generic/genericPanel";
3
3
  export declare const Ids: {
4
4
  showGhost: string;
5
5
  ghostOpacity: string;
6
+ transparency: string;
6
7
  };
7
8
  export declare const IsolationPanel: import("react").ForwardRefExoticComponent<{
8
9
  state: IsolationRef;
10
+ transparency: boolean;
9
11
  } & import("react").RefAttributes<GenericPanelHandle>>;
@@ -15,6 +15,6 @@ export declare const SidePanelMemo: React.MemoExoticComponent<typeof SidePanel>;
15
15
  export declare function SidePanel(props: {
16
16
  container: Container;
17
17
  side: SideState;
18
- viewer: Core.Webgl.Viewer;
18
+ viewer: Core.Webgl.Viewer | Core.Ultra.Viewer;
19
19
  content: () => JSX.Element;
20
20
  }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module viw-webgl-react
3
+ * Contains settings and type definitions for the Vim web viewer
4
+ */
5
+ import { UltraSettings } from "../ultra/settings";
6
+ import { WebglSettings } from "../webgl/settings";
7
+ export type AnySettings = WebglSettings | UltraSettings;
@@ -1,4 +1,4 @@
1
- export * from './settings';
1
+ export * from './anySettings';
2
2
  export * from './settingsStorage';
3
3
  export * from './userBoolean';
4
4
  export type * from './settingsPanel';
@@ -0,0 +1,4 @@
1
+ import { SettingsBox } from './settingsItem';
2
+ import { SettingsState } from './settingsState';
3
+ import { AnySettings } from './anySettings';
4
+ export declare function renderSettingsInputBox(settings: SettingsState<AnySettings>, item: SettingsBox<AnySettings>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,30 @@
1
+ import { AnySettings } from './anySettings';
2
+ import { UserBoolean } from './userBoolean';
3
+ export type SettingsCustomizer<T extends AnySettings> = (items: SettingsItem<T>[]) => SettingsItem<T>[];
4
+ export type SettingsItem<T extends AnySettings> = SettingsSubtitle | SettingsToggle<T> | SettingsBox<T> | SettingsElement;
5
+ export type BaseSettingsItem = {
6
+ type: string;
7
+ key: string;
8
+ };
9
+ export type SettingsSubtitle = BaseSettingsItem & {
10
+ type: 'subtitle';
11
+ title: string;
12
+ };
13
+ export type SettingsToggle<T extends AnySettings> = BaseSettingsItem & {
14
+ type: 'toggle';
15
+ label: string;
16
+ getter: (settings: T) => UserBoolean;
17
+ setter: (settings: T, b: boolean) => void;
18
+ };
19
+ export type SettingsBox<T extends AnySettings> = BaseSettingsItem & {
20
+ type: 'box';
21
+ label: string;
22
+ info: string;
23
+ transform: (value: number) => number;
24
+ getter: (settings: T) => number;
25
+ setter: (settings: T, b: number) => void;
26
+ };
27
+ export type SettingsElement = BaseSettingsItem & {
28
+ type: 'element';
29
+ element: JSX.Element;
30
+ };
@@ -0,0 +1,46 @@
1
+ export declare class SettingsPanelKeys {
2
+ static InputsSubtitle: string;
3
+ static InputsScrollSpeedBox: string;
4
+ static PanelsSubtitle: string;
5
+ static PanelsShowLogoToggle: string;
6
+ static PanelsShowBimTreeToggle: string;
7
+ static PanelsShowBimInfoToggle: string;
8
+ static PanelsShowAxesPanelToggle: string;
9
+ static PanelsShowPerformancePanelToggle: string;
10
+ static AxesSubtitle: string;
11
+ static AxesShowOrthographicButtonToggle: string;
12
+ static AxesShowResetCameraButtonToggle: string;
13
+ static ControlBarSubtitle: string;
14
+ static ControlBarShowControlBarToggle: string;
15
+ static ControlBarCursorsSubtitle: string;
16
+ static ControlBarCursorsShowOrbitButtonToggle: string;
17
+ static ControlBarCursorsShowLookAroundButtonToggle: string;
18
+ static ControlBarCursorsShowPanButtonToggle: string;
19
+ static ControlBarCursorsShowZoomButtonToggle: string;
20
+ static ControlBarCursorsShowZoomWindowButtonToggle: string;
21
+ static ControlBarToolsSubtitle: string;
22
+ static ControlBarToolsShowMeasuringModeButtonToggle: string;
23
+ static ControlBarCameraSubtitle: string;
24
+ static ControlBarAutoCamera: string;
25
+ static ControlBarFrameSelection: string;
26
+ static ControlBarFrameAll: string;
27
+ static ControlBarSectioningSubtitle: string;
28
+ static ControlBarSectioningEnable: string;
29
+ static ControlBarSectioningFitToSelection: string;
30
+ static ControlBarSectioningReset: string;
31
+ static ControlBarSectioningShow: string;
32
+ static ControlBarSectioningAuto: string;
33
+ static ControlBarSectioningSettings: string;
34
+ static ControlBarVisibilitySubtitle: string;
35
+ static ControlBarVisibilityClearSelection: string;
36
+ static ControlBarVisibilityShowAll: string;
37
+ static ControlBarVisibilityToggle: string;
38
+ static ControlBarVisibilityIsolate: string;
39
+ static ControlBarVisibilityAutoIsolate: string;
40
+ static ControlBarVisibilitySettings: string;
41
+ static ControlBarSettingsSubtitle: string;
42
+ static ControlBarSettingsShowProjectInspectorButtonToggle: string;
43
+ static ControlBarSettingsShowSettingsButtonToggle: string;
44
+ static ControlBarSettingsShowHelpButtonToggle: string;
45
+ static ControlBarSettingsShowMaximiseButtonToggle: string;
46
+ }
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * @module viw-webgl-react
3
3
  */
4
- import * as Core from '../../core-viewers';
5
4
  import { SettingsState } from './settingsState';
5
+ import { SettingsItem } from './settingsItem';
6
+ import { AnySettings } from './anySettings';
6
7
  /**
7
8
  * JSX Component to interact with settings.
8
9
  * @param viewer current viewer
@@ -10,8 +11,8 @@ import { SettingsState } from './settingsState';
10
11
  * @param visible will return null if this is false.
11
12
  * @returns
12
13
  */
13
- export declare function SettingsPanel(props: {
14
- viewer: Core.Webgl.Viewer;
15
- settings: SettingsState;
14
+ export declare function SettingsPanel<T extends AnySettings>(props: {
15
+ content: SettingsItem<T>[];
16
+ settings: SettingsState<T>;
16
17
  visible: boolean;
17
18
  }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { SettingsItem } from './settingsItem';
2
+ import { AnySettings } from './anySettings';
3
+ export declare function getControlBarCursorSettings(): SettingsItem<AnySettings>[];
4
+ export declare function getControlBarCameraSettings(): SettingsItem<AnySettings>[];
5
+ export declare function getControlBarSectionBoxSettings(): SettingsItem<AnySettings>[];
6
+ export declare function getControlBarVisibilitySettings(): SettingsItem<AnySettings>[];
@@ -1,18 +1,18 @@
1
1
  /**
2
2
  * @module viw-webgl-react
3
3
  */
4
- import * as Core from '../../core-viewers';
5
- import { Settings, PartialSettings } from './settings';
6
- export type SettingsState = {
7
- value: Settings;
8
- update: (updater: (s: Settings) => void) => void;
9
- register: (action: (s: Settings) => void) => void;
4
+ import { StateRef } from '../helpers/reactUtils';
5
+ import { SettingsCustomizer } from './settingsItem';
6
+ import { AnySettings } from './anySettings';
7
+ import { RecursivePartial } from '../../utils';
8
+ export type SettingsState<T extends AnySettings> = {
9
+ value: T;
10
+ update: (updater: (s: T) => void) => void;
11
+ register: (action: (s: T) => void) => void;
12
+ customizer: StateRef<SettingsCustomizer<T>>;
10
13
  };
11
14
  /**
12
15
  * Returns a new state closure for settings.
13
16
  */
14
- export declare function useSettings(viewer: Core.Webgl.Viewer, value: PartialSettings): SettingsState;
15
- /**
16
- * Apply given vim viewer settings to the given viewer.
17
- */
18
- export declare function applySettings(viewer: Core.Webgl.Viewer, settings: Settings): void;
17
+ export declare function useSettings<T extends AnySettings>(value: RecursivePartial<T>, defaultSettings: T, applySettings?: (settings: T) => void): SettingsState<T>;
18
+ export declare function createSettings<T extends AnySettings>(settings: RecursivePartial<T>, defaultSettings: T): T;
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * @module viw-webgl-react
3
3
  */
4
- import { Settings, PartialSettings } from './settings';
4
+ import { AnySettings } from './anySettings';
5
5
  /**
6
6
  * Retrieves viewer settings from localStorage and applies permissions
7
7
  * @param settings - Partial viewer settings to apply permissions from
8
8
  * @returns The stored settings with applied permissions, or empty object if retrieval fails
9
9
  */
10
- export declare function getLocalSettings(settings?: PartialSettings): {};
10
+ export declare function getLocalSettings(settings?: Partial<AnySettings>): {};
11
11
  /**
12
12
  * Saves viewer settings to localStorage after removing permissions
13
13
  * @param value - Component settings to save
14
14
  */
15
- export declare function saveSettingsToLocal(value: Settings): void;
15
+ export declare function saveSettingsToLocal(value: AnySettings): void;
@@ -0,0 +1,2 @@
1
+ import { SettingsSubtitle } from './settingsItem';
2
+ export declare function renderSettingsSubtitle(item: SettingsSubtitle): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { SettingsToggle } from './settingsItem';
2
+ import { SettingsState } from './settingsState';
3
+ import { AnySettings } from './anySettings';
4
+ /**
5
+ * Renders a toggle (checkbox) UI element for a given SettingsToggle item.
6
+ * @param viewer The WebGL viewer instance (for future consistency).
7
+ * @param settings The current settings state object.
8
+ * @param item The SettingsToggle configuration.
9
+ * @returns JSX.Element | null
10
+ */
11
+ export declare function renderSettingsToggle(settings: SettingsState<AnySettings>, item: SettingsToggle<AnySettings>): JSX.Element | null;
@@ -1,7 +1,6 @@
1
1
  import * as Core from "../../core-viewers";
2
2
  import { CameraRef } from './cameraState';
3
3
  import { CursorManager } from '../helpers/cursor';
4
- import { Settings } from '../settings';
5
4
  import { SideState } from './sideState';
6
5
  import * as Icons from '../icons';
7
6
  import { SectionBoxRef } from './sectionBoxState';
@@ -9,11 +8,31 @@ import { getMeasureState } from './measureState';
9
8
  import { ModalHandle } from '../panels/modal';
10
9
  import { IsolationRef } from './sharedIsolation';
11
10
  import * as ControlBar from '../controlbar';
11
+ import { UserBoolean } from "../settings/userBoolean";
12
+ import { UltraSettings } from "../ultra/settings";
13
+ import { WebglSettings } from "../webgl/settings";
14
+ export type ControlBarSectionBoxSettings = {
15
+ sectioningEnable: UserBoolean;
16
+ sectioningFitToSelection: UserBoolean;
17
+ sectioningReset: UserBoolean;
18
+ sectioningShow: UserBoolean;
19
+ sectioningAuto: UserBoolean;
20
+ sectioningSettings: UserBoolean;
21
+ };
12
22
  /**
13
23
  * Returns a control bar section for the section box.
14
24
  */
15
- export declare function controlBarSectionBox(section: SectionBoxRef, hasSelection: boolean): ControlBar.IControlBarSection;
16
- export declare function controlBarMeasure(settings: Settings, measure: ReturnType<typeof getMeasureState>): {
25
+ export declare function controlBarSectionBox(section: SectionBoxRef, hasSelection: boolean, settings: ControlBarSectionBoxSettings): ControlBar.IControlBarSection;
26
+ export type ControlBarCursorSettings = {
27
+ cursorOrbit: UserBoolean;
28
+ cursorLookAround: UserBoolean;
29
+ cursorPan: UserBoolean;
30
+ cursorZoom: UserBoolean;
31
+ };
32
+ export type ControlBarMeasureSettings = {
33
+ measuringMode: UserBoolean;
34
+ };
35
+ export declare function controlBarMeasure(measure: ReturnType<typeof getMeasureState>, settings: ControlBarMeasureSettings): {
17
36
  id: string;
18
37
  enable: () => boolean;
19
38
  style: string;
@@ -27,12 +46,27 @@ export declare function controlBarMeasure(settings: Settings, measure: ReturnTyp
27
46
  style: typeof ControlBar.Style.buttonDefaultStyle;
28
47
  }[];
29
48
  };
30
- export declare function controlBarCamera(camera: CameraRef): ControlBar.IControlBarSection;
31
- export declare function controlBarSelection(isolation: IsolationRef): ControlBar.IControlBarSection;
49
+ export declare function controlBarSettingsUltra(side: SideState, settings: UltraSettings): ControlBar.IControlBarSection;
50
+ export type ControlBarCameraSettings = {
51
+ cameraAuto: UserBoolean;
52
+ cameraFrameSelection: UserBoolean;
53
+ cameraFrameScene: UserBoolean;
54
+ };
55
+ export declare function controlBarCamera(camera: CameraRef, settings: ControlBarCameraSettings): ControlBar.IControlBarSection;
56
+ export type ControlBarVisibilitySettings = {
57
+ visibilityEnable: UserBoolean;
58
+ visibilityClearSelection: UserBoolean;
59
+ visibilityShowAll: UserBoolean;
60
+ visibilityToggle: UserBoolean;
61
+ visibilityIsolate: UserBoolean;
62
+ visibilityAutoIsolate: UserBoolean;
63
+ visibilitySettings: UserBoolean;
64
+ };
65
+ export declare function controlBarVisibility(isolation: IsolationRef, settings: ControlBarVisibilitySettings): ControlBar.IControlBarSection;
32
66
  /**
33
67
  * Combines all control bar sections into one control bar.
34
68
  */
35
- export declare function useControlBar(viewer: Core.Webgl.Viewer, camera: CameraRef, modal: ModalHandle, side: SideState, cursor: CursorManager, settings: Settings, section: SectionBoxRef, isolationRef: IsolationRef, customization: ControlBar.ControlBarCustomization | undefined): (ControlBar.IControlBarSection | {
69
+ export declare function useControlBar(viewer: Core.Webgl.Viewer, camera: CameraRef, modal: ModalHandle, side: SideState, cursor: CursorManager, settings: WebglSettings, section: SectionBoxRef, isolationRef: IsolationRef, customization: ControlBar.ControlBarCustomization | undefined): (ControlBar.IControlBarSection | {
36
70
  id: string;
37
71
  enable: () => boolean;
38
72
  style: string;
@@ -51,4 +85,4 @@ export declare function useControlBar(viewer: Core.Webgl.Viewer, camera: CameraR
51
85
  * @param {Settings} settings - The viewer settings to check
52
86
  * @returns {boolean} True if any settings buttons are enabled
53
87
  */
54
- export declare function anyUiSettingButton(settings: Settings): boolean;
88
+ export declare function anyUiSettingButton(settings: WebglSettings): boolean;