vim-web 0.5.0-dev.9 → 0.6.0-dev.0
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.
- package/dist/style.css +34 -7
- package/dist/types/core-viewers/shared/index.d.ts +2 -0
- package/dist/types/core-viewers/shared/inputAdapter.d.ts +2 -1
- package/dist/types/core-viewers/shared/keyboardHandler.d.ts +1 -1
- package/dist/types/core-viewers/shared/loadResult.d.ts +55 -0
- package/dist/types/core-viewers/shared/mouseHandler.d.ts +4 -1
- package/dist/types/core-viewers/shared/raycaster.d.ts +5 -5
- package/dist/types/core-viewers/shared/vimCollection.d.ts +25 -0
- package/dist/types/core-viewers/ultra/loadRequest.d.ts +6 -28
- package/dist/types/core-viewers/ultra/viewer.d.ts +6 -1
- package/dist/types/core-viewers/ultra/viewport.d.ts +6 -0
- package/dist/types/core-viewers/ultra/vim.d.ts +3 -1
- package/dist/types/core-viewers/ultra/vimCollection.d.ts +15 -11
- package/dist/types/core-viewers/webgl/index.d.ts +0 -1
- package/dist/types/core-viewers/webgl/loader/index.d.ts +3 -3
- package/dist/types/core-viewers/webgl/loader/materials/index.d.ts +1 -0
- package/dist/types/core-viewers/webgl/loader/materials/pickingMaterial.d.ts +42 -0
- package/dist/types/core-viewers/webgl/loader/mesh.d.ts +3 -1
- package/dist/types/core-viewers/webgl/loader/progressive/insertableGeometry.d.ts +6 -1
- package/dist/types/core-viewers/webgl/loader/progressive/insertableMesh.d.ts +6 -3
- package/dist/types/core-viewers/webgl/loader/progressive/instancedMesh.d.ts +5 -0
- package/dist/types/core-viewers/webgl/loader/progressive/instancedMeshFactory.d.ts +8 -1
- package/dist/types/core-viewers/webgl/loader/progressive/legacyMeshFactory.d.ts +4 -1
- package/dist/types/core-viewers/webgl/loader/progressive/loadRequest.d.ts +21 -0
- package/dist/types/core-viewers/webgl/loader/progressive/subsetBuilder.d.ts +2 -1
- package/dist/types/core-viewers/webgl/loader/progressive/subsetRequest.d.ts +3 -2
- package/dist/types/core-viewers/webgl/loader/vim.d.ts +12 -2
- package/dist/types/core-viewers/webgl/loader/vimCollection.d.ts +78 -0
- package/dist/types/core-viewers/webgl/loader/vimSettings.d.ts +11 -4
- package/dist/types/core-viewers/webgl/viewer/camera/cameraMovement.d.ts +8 -0
- package/dist/types/core-viewers/webgl/viewer/gizmos/gizmoOrbit.d.ts +22 -17
- package/dist/types/core-viewers/webgl/viewer/gizmos/markers/gizmoMarker.d.ts +1 -0
- package/dist/types/core-viewers/webgl/viewer/raycaster.d.ts +3 -1
- package/dist/types/core-viewers/webgl/viewer/rendering/gpuPicker.d.ts +127 -0
- package/dist/types/core-viewers/webgl/viewer/rendering/renderScene.d.ts +2 -2
- package/dist/types/core-viewers/webgl/viewer/rendering/renderer.d.ts +7 -0
- package/dist/types/core-viewers/webgl/viewer/rendering/renderingSection.d.ts +4 -0
- package/dist/types/core-viewers/webgl/viewer/settings/viewerSettings.d.ts +11 -6
- package/dist/types/core-viewers/webgl/viewer/viewer.d.ts +16 -1
- package/dist/types/core-viewers/webgl/viewer/viewport.d.ts +1 -1
- package/dist/types/react-viewers/bim/bimPanel.d.ts +3 -3
- package/dist/types/react-viewers/controlbar/controlBarIds.d.ts +32 -36
- package/dist/types/react-viewers/errors/errorStyle.d.ts +1 -1
- package/dist/types/react-viewers/helpers/loadRequest.d.ts +14 -16
- package/dist/types/react-viewers/helpers/reactUtils.d.ts +2 -1
- package/dist/types/react-viewers/helpers/utils.d.ts +8 -0
- package/dist/types/react-viewers/panels/axesPanel.d.ts +2 -1
- package/dist/types/react-viewers/panels/index.d.ts +1 -0
- package/dist/types/react-viewers/panels/isolationPanel.d.ts +2 -0
- package/dist/types/react-viewers/panels/loadingBox.d.ts +1 -1
- package/dist/types/react-viewers/panels/messageBox.d.ts +2 -0
- package/dist/types/react-viewers/panels/sidePanel.d.ts +1 -1
- package/dist/types/react-viewers/settings/anySettings.d.ts +7 -0
- package/dist/types/react-viewers/settings/index.d.ts +1 -1
- package/dist/types/react-viewers/settings/settingsInputBox.d.ts +4 -0
- package/dist/types/react-viewers/settings/settingsItem.d.ts +30 -0
- package/dist/types/react-viewers/settings/settingsKeys.d.ts +46 -0
- package/dist/types/react-viewers/settings/settingsPanel.d.ts +5 -4
- package/dist/types/react-viewers/settings/settingsPanelContent.d.ts +6 -0
- package/dist/types/react-viewers/settings/settingsState.d.ts +11 -11
- package/dist/types/react-viewers/settings/settingsStorage.d.ts +3 -3
- package/dist/types/react-viewers/settings/settingsSubtitle.d.ts +2 -0
- package/dist/types/react-viewers/settings/settingsToggle.d.ts +11 -0
- package/dist/types/react-viewers/state/controlBarState.d.ts +41 -7
- package/dist/types/react-viewers/state/sharedIsolation.d.ts +2 -0
- package/dist/types/react-viewers/ultra/controlBar.d.ts +4 -1
- package/dist/types/react-viewers/ultra/index.d.ts +1 -0
- package/dist/types/react-viewers/ultra/settings.d.ts +13 -0
- package/dist/types/react-viewers/ultra/settingsPanel.d.ts +5 -0
- package/dist/types/react-viewers/ultra/viewer.d.ts +3 -1
- package/dist/types/react-viewers/ultra/viewerRef.d.ts +3 -0
- package/dist/types/react-viewers/urls.d.ts +0 -1
- package/dist/types/react-viewers/webgl/index.d.ts +1 -0
- package/dist/types/react-viewers/webgl/loading.d.ts +19 -24
- package/dist/types/react-viewers/webgl/settings.d.ts +36 -0
- package/dist/types/react-viewers/webgl/settingsPanel.d.ts +12 -0
- package/dist/types/react-viewers/webgl/viewer.d.ts +3 -3
- package/dist/types/react-viewers/webgl/viewerRef.d.ts +32 -8
- package/dist/types/utils/asyncQueue.d.ts +15 -0
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/vim-web.iife.js +49873 -49090
- package/dist/vim-web.iife.js.map +1 -1
- package/dist/vim-web.js +49690 -48907
- package/dist/vim-web.js.map +1 -1
- package/package.json +1 -1
- package/dist/types/core-viewers/webgl/loader/progressive/open.d.ts +0 -12
- package/dist/types/core-viewers/webgl/loader/progressive/vimRequest.d.ts +0 -44
- package/dist/types/react-viewers/settings/settings.d.ts +0 -61
- package/dist/types/utils/result.d.ts +0 -13
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-
|
|
737
|
-
top:
|
|
736
|
+
.vc-top-8 {
|
|
737
|
+
top: 2rem;
|
|
738
738
|
}
|
|
739
739
|
.vc-top-\[10\%\] {
|
|
740
740
|
top: 10%;
|
|
@@ -828,6 +828,9 @@ video:where(.vim-component,.vim-component *) {
|
|
|
828
828
|
.vc-mt-6 {
|
|
829
829
|
margin-top: 1.5rem;
|
|
830
830
|
}
|
|
831
|
+
.vc-box-border {
|
|
832
|
+
box-sizing: border-box;
|
|
833
|
+
}
|
|
831
834
|
.vc-box-content {
|
|
832
835
|
box-sizing: content-box;
|
|
833
836
|
}
|
|
@@ -987,6 +990,11 @@ video:where(.vim-component,.vim-component *) {
|
|
|
987
990
|
margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
|
|
988
991
|
margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
|
|
989
992
|
}
|
|
993
|
+
.vc-space-y-2 > :not([hidden]) ~ :not([hidden]) {
|
|
994
|
+
--tw-space-y-reverse: 0;
|
|
995
|
+
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
|
|
996
|
+
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
|
|
997
|
+
}
|
|
990
998
|
.vc-self-center {
|
|
991
999
|
align-self: center;
|
|
992
1000
|
}
|
|
@@ -1025,6 +1033,9 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1025
1033
|
.vc-rounded-md {
|
|
1026
1034
|
border-radius: 0.375rem;
|
|
1027
1035
|
}
|
|
1036
|
+
.vc-rounded-sm {
|
|
1037
|
+
border-radius: 0.125rem;
|
|
1038
|
+
}
|
|
1028
1039
|
.vc-rounded-t {
|
|
1029
1040
|
border-top-left-radius: 0.25rem;
|
|
1030
1041
|
border-top-right-radius: 0.25rem;
|
|
@@ -1069,6 +1080,9 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1069
1080
|
--tw-border-opacity: 1;
|
|
1070
1081
|
border-color: rgb(223 223 225 / var(--tw-border-opacity, 1));
|
|
1071
1082
|
}
|
|
1083
|
+
.vc-border-gray {
|
|
1084
|
+
border-color: var(--c-gray);
|
|
1085
|
+
}
|
|
1072
1086
|
.vc-border-gray-divider {
|
|
1073
1087
|
border-color: var(--c-gray-divider);
|
|
1074
1088
|
}
|
|
@@ -1120,6 +1134,9 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1120
1134
|
.vc-p-1 {
|
|
1121
1135
|
padding: 0.25rem;
|
|
1122
1136
|
}
|
|
1137
|
+
.vc-p-2 {
|
|
1138
|
+
padding: 0.5rem;
|
|
1139
|
+
}
|
|
1123
1140
|
.vc-p-5 {
|
|
1124
1141
|
padding: 1.25rem;
|
|
1125
1142
|
}
|
|
@@ -1157,6 +1174,9 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1157
1174
|
.vc-pl-6 {
|
|
1158
1175
|
padding-left: 1.5rem;
|
|
1159
1176
|
}
|
|
1177
|
+
.vc-pr-2 {
|
|
1178
|
+
padding-right: 0.5rem;
|
|
1179
|
+
}
|
|
1160
1180
|
.vc-text-center {
|
|
1161
1181
|
text-align: center;
|
|
1162
1182
|
}
|
|
@@ -1193,6 +1213,9 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1193
1213
|
.vc-font-bold {
|
|
1194
1214
|
font-weight: 700;
|
|
1195
1215
|
}
|
|
1216
|
+
.vc-font-medium {
|
|
1217
|
+
font-weight: 500;
|
|
1218
|
+
}
|
|
1196
1219
|
.vc-font-normal {
|
|
1197
1220
|
font-weight: 400;
|
|
1198
1221
|
}
|
|
@@ -1284,6 +1307,11 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1284
1307
|
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
|
1285
1308
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
1286
1309
|
}
|
|
1310
|
+
.vc-shadow-sm {
|
|
1311
|
+
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
1312
|
+
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
|
1313
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
1314
|
+
}
|
|
1287
1315
|
.vc-outline-none {
|
|
1288
1316
|
outline: 2px solid transparent;
|
|
1289
1317
|
outline-offset: 2px;
|
|
@@ -1763,6 +1791,10 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1763
1791
|
}
|
|
1764
1792
|
|
|
1765
1793
|
/* === Cursors ===*/
|
|
1794
|
+
.cursor-regular {
|
|
1795
|
+
cursor: default;
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1766
1798
|
.cursor-orbit:hover {
|
|
1767
1799
|
cursor: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO30uY2xzLTJ7ZmlsbDojMjEyMzI5O30uY2xzLTN7ZmlsbDpub25lO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iRlJBTUVTIj48ZyBpZD0iZnJhbWUiPjxyZWN0IGNsYXNzPSJjbHMtMyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+PC9nPjwvZz48ZyBpZD0iSUNPTlMiPjxnPjxnPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0LDIwLjIzNGMtNS42NTIsMC0xMC4yNS0yLjYzNi0xMC4yNS01Ljg3NSwwLTEuNzUxLDEuMzA2LTMuMzY2LDMuNjA0LTQuNDgtLjUwOC0uMzEyLS43MDYtLjk2Mi0uNDQtMS40ODgsLjE5NC0uMzg2LC41ODItLjYyNSwxLjAxLS42MjUsLjE0MiwwLC4yODIsLjAyNiwuNDE2LC4wNzlsLjA5NywuMDQyLDIuMTQ4LDEuMDg2Yy42OSwuMzQ5LC45NjksMS4xOTUsLjYyLDEuODg2bC0xLjA4MywyLjE0NWMtLjE5NSwuMzg2LS41ODIsLjYyNS0xLjAxMiwuNjI1LS4xNDEsMC0uMjgtLjAyNS0uNDE0LS4wNzdsLS4wOTgtLjA0NGMtLjU1LS4yNzgtLjY3OC0uODI4LS41NjctMS4zMDYtLjAyMSwuMDExLS4wNDEsLjAyMS0uMDYsLjAzMy0xLjE1NiwuNjUtMS44NDYsMS40NDQtMS44NDYsMi4xMjVzLjY5LDEuNDc2LDEuODQ2LDIuMTI2YzEuNTUzLC44NzMsMy43NTEsMS4zNzQsNi4wMjksMS4zNzRzNC40NzYtLjUwMSw2LjAyOS0xLjM3NGMxLjE1Ni0uNjUsMS44NDYtMS40NDUsMS44NDYtMi4xMjZzLS42OS0xLjQ3NS0xLjg0Ni0yLjEyNWMtMS41NTMtLjg3NC0zLjc1LTEuMzc1LTYuMDI5LTEuMzc1aC0uMTAyYy0uNjI0LDAtMS4xMzItLjQ1Ni0xLjE5Ni0xLjA2Mi0uMDM1LS4zMzQsLjA3My0uNjY4LC4yOTYtLjkxNywuMjIzLS4yNDgsLjU0Mi0uMzkzLC44NzUtLjM5NWguMTI2YzUuNjUyLDAsMTAuMjUsMi42MzUsMTAuMjUsNS44NzRzLTQuNTk4LDUuODc1LTEwLjI1LDUuODc1WiIvPjxwYXRoIGQ9Ik03LjkyNSw4LjAxNmMuMTA4LDAsLjIxNywuMDIsLjMyMywuMDYxLC4wMjYsLjAxMSwuMDUyLC4wMjIsLjA3OCwuMDM1bDIuMTQ1LDEuMDgzYy41NjgsLjI4NywuNzk3LC45ODIsLjUxLDEuNTVsLTEuMDgzLDIuMTQ2Yy0uMTU1LC4zMDgtLjQ2MywuNDg3LS43ODgsLjQ4Ny0uMTA4LDAtLjIxNy0uMDItLjMyNC0uMDYyLS4wMjYtLjAxLS4wNTItLjAyMi0uMDc4LS4wMzUtLjUxMi0uMjU5LS41MzEtLjc5MS0uMzkxLTEuMTY4bC4xNTItLjQxMWMtLjIxNiwuMDk5LS40MjUsLjIwMy0uNjIyLC4zMTMtMS4yNTQsLjcwNi0xLjk3MywxLjU2LTEuOTczLDIuMzQzcy43MTksMS42MzgsMS45NzMsMi4zNDNjMS41ODksLjg5NCwzLjgzMiwxLjQwNyw2LjE1MiwxLjQwN3M0LjU2Mi0uNTEzLDYuMTUyLTEuNDA3YzEuMjU0LS43MDUsMS45NzMtMS41NTksMS45NzMtMi4zNDNzLS43MTktMS42MzgtMS45NzMtMi4zNDNjLTEuNTg5LS44OTQtMy44MzItMS40MDctNi4xNTItMS40MDctLjAzNiwwLS4wNzMsMC0uMTA5LDBoLS4wMDhjLS40OCwwLS44ODMtLjM2Mi0uOTMyLS44NC0uMDU3LS41NSwuMzcyLTEuMDMxLC45MjUtMS4wMzUsLjA0MSwwLC4wODMsMCwuMTI0LDAsNS41MjMsMCwxMCwyLjUxOSwxMCw1LjYyNXMtNC40NzcsNS42MjUtMTAsNS42MjUtMTAtMi41MTgtMTAtNS42MjVjMC0xLjgxNywxLjUzMi0zLjQzMiwzLjkwOS00LjQ2bC0uMDA0LS4wMTEtLjM2Ni0uMTkxYy0uNDM4LS4yMjktLjYxOS0uNzY1LS40MDItMS4xOTQsLjE1Ni0uMzA4LC40NjQtLjQ4NywuNzg4LS40ODdtMC0uNWgwYy0uNTI0LDAtLjk5NywuMjkyLTEuMjM0LC43NjItLjI2MSwuNTE4LS4xNTcsMS4xMzEsLjIxNCwxLjU0OS0yLjE3NiwxLjE1MS0zLjQwNSwyLjc3Mi0zLjQwNSw0LjUzMywwLDMuNDM1LDQuNjEyLDYuMTI1LDEwLjUsNi4xMjVzMTAuNS0yLjY5LDEwLjUtNi4xMjUtNC42MTItNi4xMjUtMTAuNS02LjEyNWgtLjA2NXMtLjA1OSwwLS4wNTksMGMtLjQwNywuMDAzLS43OTMsLjE3Ny0xLjA2MywuNDc5LS4yNywuMzAyLS40MDEsLjcwNi0uMzU5LDEuMTA4LC4wNzYsLjczNCwuNjkxLDEuMjg4LDEuNDMsMS4yODhoLjA2NXMuMDUxLDAsLjA1MSwwYzIuMjM3LDAsNC4zOSwuNDg5LDUuOTA3LDEuMzQyLDEuMDc2LC42MDUsMS43MTgsMS4zMTksMS43MTgsMS45MDhzLS42NDIsMS4zMDItMS43MTgsMS45MDdjLTEuNTE3LC44NTQtMy42NywxLjM0My01LjkwNywxLjM0M3MtNC4zOS0uNDg5LTUuOTA3LTEuMzQyYy0xLjA3Ni0uNjA1LTEuNzE4LTEuMzE4LTEuNzE4LTEuOTA4LDAtLjUyMywuNTA3LTEuMTQ0LDEuMzc0LTEuNzAxLC4wMzgsLjQyMiwuMjU2LC44MjgsLjczNCwxLjA3LC4wNDIsLjAyMSwuMDgyLC4wMzksLjEyMSwuMDU0LC4xNjMsLjA2NCwuMzMzLC4wOTYsLjUwNiwuMDk2LC41MjQsMCwuOTk3LS4yOTIsMS4yMzQtLjc2MmwxLjA4My0yLjE0NWMuMTk5LS4zOTQsLjIzMy0uODQyLC4wOTQtMS4yNjJzLS40MzEtLjc2MS0uODI1LS45NmwtMi4xNDYtMS4wODNjLS4wMzUtLjAxOC0uMDc0LS4wMzUtLjExMy0uMDUxLS4xNzEtLjA2Ny0uMzQxLS4wOTktLjUxMy0uMDk5aDBaIi8+PC9nPjxnPjxjaXJjbGUgY2xhc3M9ImNscy0xIiBjeD0iMTQiIGN5PSIxNC4zNTkiIHI9IjIuNDM4Ii8+PHBhdGggZD0iTTE0LDEyLjE3MmMxLjIwNiwwLDIuMTg4LC45ODEsMi4xODgsMi4xODhzLS45ODEsMi4xODgtMi4xODgsMi4xODgtMi4xODgtLjk4MS0yLjE4OC0yLjE4OCwuOTgxLTIuMTg4LDIuMTg4LTIuMTg4bTAtLjVjLTEuNDgyLDAtMi42ODgsMS4yMDYtMi42ODgsMi42ODhzMS4yMDYsMi42ODgsMi42ODgsMi42ODgsMi42ODgtMS4yMDYsMi42ODgtMi42ODgtMS4yMDYtMi42ODgtMi42ODgtMi42ODhoMFoiLz48L2c+PC9nPjxnPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEuMDA3LDUuNzVjLS4zNzIsMC0uNzU3LS4yODEtLjc1Ny0uNzUyVjFDLjI1LC41ODcsLjU4NiwuMjUsMSwuMjVoMy45OThjLjM2OSwwLC42LC4yMzksLjY5MywuNDYzcy4wOTksLjU1Ny0uMTYzLC44MTdMMS41Myw1LjUyOGMtLjE4MywuMTg0LS4zODYsLjIyMi0uNTIzLC4yMjJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNC45OTgsLjVjLjMxLDAsLjQzMiwuMjM2LC40NjIsLjMwOXMuMTExLC4zMjYtLjEwOCwuNTQ1TDEuMzU0LDUuMzUyYy0uMTIzLC4xMjMtLjI1NiwuMTQ4LS4zNDYsLjE0OC0uMjUsMC0uNTA3LS4xODgtLjUwNy0uNTAyVjFjMC0uMjc2LC4yMjQtLjUsLjUtLjVoMy45OThtMC0uNUgxQy40NDgsMCwwLC40NDgsMCwxdjMuOTk4YzAsLjYwMywuNDkzLDEuMDAyLDEuMDA3LDEuMDAyLC4yNDYsMCwuNDk2LS4wOTEsLjctLjI5NUw1LjcwNSwxLjcwN2MuNjMtLjYzLC4xODQtMS43MDctLjcwNy0xLjcwN2gwWiIvPjwvZz48L2c+PC9zdmc+'),
|
|
1768
1800
|
auto;
|
|
@@ -1778,11 +1810,6 @@ video:where(.vim-component,.vim-component *) {
|
|
|
1778
1810
|
auto;
|
|
1779
1811
|
}
|
|
1780
1812
|
|
|
1781
|
-
.cursor-pan:active {
|
|
1782
|
-
cursor: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZmZmO30uY2xzLTJ7ZmlsbDojMjEyMzI5O30uY2xzLTN7ZmlsbDpub25lO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iRlJBTUVTIj48ZyBpZD0iZnJhbWUiPjxyZWN0IGNsYXNzPSJjbHMtMyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+PC9nPjwvZz48ZyBpZD0iSUNPTlMiPjxnPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEuMDA3LDUuNzVjLS4zNzIsMC0uNzU3LS4yODEtLjc1Ny0uNzUyVjFDLjI1LC41ODcsLjU4NiwuMjUsMSwuMjVoMy45OThjLjM2OSwwLC42LC4yMzksLjY5MywuNDYzcy4wOTksLjU1Ny0uMTYzLC44MTdMMS41Myw1LjUyOGMtLjE4MywuMTg0LS4zODYsLjIyMi0uNTIzLC4yMjJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNC45OTgsLjVjLjMxLDAsLjQzMiwuMjM2LC40NjIsLjMwOXMuMTExLC4zMjYtLjEwOCwuNTQ1TDEuMzU0LDUuMzUyYy0uMTIzLC4xMjMtLjI1NiwuMTQ4LS4zNDYsLjE0OC0uMjUsMC0uNTA3LS4xODgtLjUwNy0uNTAyVjFjMC0uMjc2LC4yMjQtLjUsLjUtLjVoMy45OThtMC0uNUgxQy40NDgsMCwwLC40NDgsMCwxdjMuOTk4YzAsLjYwMywuNDkzLDEuMDAyLDEuMDA3LDEuMDAyLC4yNDYsMCwuNDk2LS4wOTEsLjctLjI5NUw1LjcwNSwxLjcwN2MuNjMtLjYzLC4xODQtMS43MDctLjcwNy0xLjcwN2gwWiIvPjwvZz48Zz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNC4xMzksMjMuMDYyYy0xLjY0NywwLTMuMTUzLS43OTMtNC4wMy0yLjEyMmwtMi4xNTktMy4yOTFjLS4yMDktLjMxOS0uMjc1LS42OTUtLjE4Ny0xLjA2MSwuMDg5LS4zNjYsLjMyMi0uNjc3LC42NTYtLjg3NiwuMjM1LS4xNCwuNTA1LS4yMTQsLjc4MS0uMjE0LC4wOCwwLC4xNjEsLjAwNiwuMjQxLC4wMTlsLjU3MiwuMDl2LTMuNjg3YzAtLjY0MiwuNTEzLTEuMTY5LDEuMTY5LTEuMiwuMDIxLDAsLjA0MS0uMDAxLC4wNjItLjAwMSwuNjc4LDAsMS4yMywuNTI2LDEuMjMsMS4xNzJ2LjM5MWMwLC4wODYsLjA3NCwuMTU2LC4xNjQsLjE1NnMuMTY0LS4wNywuMTY0LS4xNTZ2LTEuMjk5YzAtLjY0MiwuNTEzLTEuMTY5LDEuMTY5LTEuMiwuMDIxLDAsLjA0MS0uMDAxLC4wNjItLjAwMSwuNjc4LDAsMS4yMywuNTI2LDEuMjMsMS4xNzJ2MS40ODRjMCwuMDg2LC4wNzQsLjE1NiwuMTY0LC4xNTZzLjE2NC0uMDcsLjE2NC0uMTU2di0uODNjMC0uNjQyLC41MTMtMS4xNjksMS4xNjktMS4yLC4wMjEsMCwuMDQxLS4wMDEsLjA2Mi0uMDAxLC42NzgsMCwxLjIzLC41MjYsMS4yMywxLjE3MnYxLjAxNmMwLC4wODYsLjA3NCwuMTU2LC4xNjQsLjE1NnMuMTY0LS4wNywuMTY0LS4xNTZ2LS4zNjFjMC0uNjQyLC41MTMtMS4xNjksMS4xNjktMS4yLC4wMjEsMCwuMDQxLS4wMDEsLjA2Mi0uMDAxLC42NzgsMCwxLjIzLC41MjYsMS4yMywxLjE3MnY2LjMyOGMwLDIuNDk5LTIuMTM0LDQuNTMxLTQuNzU4LDQuNTMxaC0xLjk0NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yMC42NzcsMTIuOTA2djUuNjI1YzAsMi40MTYtMi4wNTcsNC4zNzUtNC41OTQsNC4zNzVoLTEuOTQ0Yy0xLjU5LDAtMy4wNDUtLjc2Ni0zLjg5MS0yLjA0OWwtMi4xNTktMy4yOWMtLjE4Ni0uMjgzLS4yNDUtLjYxOC0uMTY2LS45NDQsLjA3OS0uMzI1LC4yODYtLjYwMiwuNTgzLS43NzksLjIwOS0uMTI0LC40NDktLjE5LC42OTQtLjE5LC4wNzEsMCwuMTQzLC4wMDYsLjIxNCwuMDE3bC43NjMsLjExOXYtLjczNnMwLTMuMTM0LDAtMy4xMzRjMC0uNTQ2LC40NC0xLjAxNywxLjAxMy0xLjA0NCwuNjEyLS4wMjksMS4xMiwuNDM3LDEuMTIsMS4wMTR2LjM5MWMwLC4xNzMsLjE0NywuMzEyLC4zMjgsLjMxMmgwYy4xODEsMCwuMzI4LS4xNCwuMzI4LS4zMTJ2LTEuMjk5YzAtLjU0NiwuNDQtMS4wMTcsMS4wMTMtMS4wNDQsLjYxMi0uMDI5LDEuMTIsLjQzNywxLjEyLDEuMDE0djEuNDg0YzAsLjE3MywuMTQ3LC4zMTIsLjMyOCwuMzEyaDBjLjE4MSwwLC4zMjgtLjE0LC4zMjgtLjMxMnYtLjgzYzAtLjU0NiwuNDQtMS4wMTcsMS4wMTMtMS4wNDQsLjYxMi0uMDI5LDEuMTIsLjQzNywxLjEyLDEuMDE0djEuMDE2YzAsLjE3MywuMTQ3LC4zMTIsLjMyOCwuMzEyaDBjLjE4MSwwLC4zMjgtLjE0LC4zMjgtLjMxMnYtLjM2MWMwLS41NDYsLjQ0LTEuMDE3LDEuMDEzLTEuMDQ0LC42MTItLjAyOSwxLjEyLC40MzcsMS4xMiwxLjAxNHYuNzAzWiIvPjxwYXRoIGQ9Ik0yMS4zMzMsMTIuMjAzYzAtLjkwNi0uNzcxLTEuNjQxLTEuNzIzLTEuNjQxLS40NTUsMC0uODY4LC4xNjktMS4xNzYsLjQ0NC0uMjQ0LS42MjQtLjg3My0xLjA2OS0xLjYxMy0xLjA2OWgwYy0uNDU1LDAtLjg2OCwuMTY5LTEuMTc2LC40NDQtLjI0NC0uNjI0LS44NzMtMS4wNjktMS42MTMtMS4wNjktLjgzNSwwLTEuNTMsLjU2Ni0xLjY4OSwxLjMxNi0uMjk4LS4yMzYtLjY4Mi0uMzc5LTEuMS0uMzc5aDBjLS45NTEsMC0xLjcyMywuNzM1LTEuNzIzLDEuNjQxdjMuMTY0Yy0uMTA2LS4wMTctLjIxMy0uMDI1LS4zMjEtLjAyNS0uMzU2LDAtLjcxNywuMDkyLTEuMDQxLC4yODUtLjkyMiwuNTQ5LTEuMjAzLDEuNzA2LS42MjYsMi41ODRsMi4xNTksMy4yOWMuOTI5LDEuNDA3LDIuNTc0LDIuMzQzLDQuNDQ4LDIuMzQzaDEuOTQ0YzIuOSwwLDUuMjUtMi4yMzksNS4yNS01di02LjMyOFptLS42NTYsLjcwM3Y1LjYyNWMwLDIuNDE2LTIuMDU3LDQuMzc1LTQuNTk0LDQuMzc1aC0xLjk0NGMtMS41OSwwLTMuMDQ1LS43NjYtMy44OTEtMi4wNDlsLTIuMTU5LTMuMjljLS4xODYtLjI4My0uMjQ1LS42MTgtLjE2Ni0uOTQ0LC4wNzktLjMyNSwuMjg2LS42MDIsLjU4My0uNzc5LC4yMDktLjEyNCwuNDQ5LS4xOSwuNjk0LS4xOSwuMDcxLDAsLjE0MywuMDA2LC4yMTQsLjAxN2wuNzYzLC4xMTl2LS43MzZzMC0zLjEzNCwwLTMuMTM0YzAtLjU0NiwuNDQtMS4wMTcsMS4wMTMtMS4wNDQsLjYxMi0uMDI5LDEuMTIsLjQzNywxLjEyLDEuMDE0di4zOTFjMCwuMTczLC4xNDcsLjMxMiwuMzI4LC4zMTJoMGMuMTgxLDAsLjMyOC0uMTQsLjMyOC0uMzEydi0xLjI5OWMwLS41NDYsLjQ0LTEuMDE3LDEuMDEzLTEuMDQ0LC42MTItLjAyOSwxLjEyLC40MzcsMS4xMiwxLjAxNHYxLjQ4NGMwLC4xNzMsLjE0NywuMzEyLC4zMjgsLjMxMmgwYy4xODEsMCwuMzI4LS4xNCwuMzI4LS4zMTJ2LS44M2MwLS41NDYsLjQ0LTEuMDE3LDEuMDEzLTEuMDQ0LC42MTItLjAyOSwxLjEyLC40MzcsMS4xMiwxLjAxNHYxLjAxNmMwLC4xNzMsLjE0NywuMzEyLC4zMjgsLjMxMmgwYy4xODEsMCwuMzI4LS4xNCwuMzI4LS4zMTJ2LS4zNjFjMC0uNTQ2LC40NC0xLjAxNywxLjAxMy0xLjA0NCwuNjEyLS4wMjksMS4xMiwuNDM3LDEuMTIsMS4wMTR2LjcwM1oiLz48L2c+PC9nPjwvc3ZnPg=='),
|
|
1783
|
-
auto;
|
|
1784
|
-
}
|
|
1785
|
-
|
|
1786
1813
|
.cursor-zoom:hover {
|
|
1787
1814
|
cursor: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+DQogIDxnIGlkPSJhIiBkYXRhLW5hbWU9IkZSQU1FUyI+DQogICAgPGcgaWQ9ImIiIGRhdGEtbmFtZT0iZnJhbWUiPg0KICAgICAgPHJlY3Qgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSJub25lIi8+DQogICAgPC9nPg0KICA8L2c+DQogIDxnIGlkPSJjIiBkYXRhLW5hbWU9IklDT05TIj4NCiAgICA8cGF0aCBpZD0iZCIgZGF0YS1uYW1lPSJQYXRoIDE1MDc4IiBkPSJNMTQsNC43ODFjLS4wNTYsMC0uMTEyLC4wMDMtLjE2NywuMDA4cy0uMTExLC4wMTMtLjE2NSwuMDI0LS4xMDgsLjAyNC0uMTYxLC4wMzljLS4wNTMsLjAxNi0uMTA0LC4wMzQtLjE1NSwuMDU1bC00LjIyMSwxLjc2Yy0uMTU0LC4wNjMtLjI5NiwuMTUzLS40MTksLjI2NS0uMTA4LC4wOTktLjE5MywuMjE5LS4yNTEsLjM1Mi0uMDU0LC4xMjUtLjA3NiwuMjYxLS4wNjUsLjM5NywuMDE0LC4xNDIsLjA2NCwuMjc3LC4xNDUsLjM5NCwuMDU5LC4wODYsLjEzMSwuMTYzLC4yMTIsLjIyOCwuMDg1LC4wNjgsLjE3OSwuMTI1LC4yNzgsLjE2OSwuMTA0LC4wNDcsLjIxMywuMDgyLC4zMjUsLjEwNSwuMTE2LC4wMjQsLjIzNCwuMDM2LC4zNTIsLjAzNiwuMDU3LDAsLjExNC0uMDAzLC4xNzItLjAwOHMuMTE1LS4wMTQsLjE3MS0uMDI1Yy4wNTctLjAxMSwuMTEzLS4wMjUsLjE2OS0uMDQyLC4wNTYtLjAxNywuMTExLS4wMzcsLjE2NS0uMDZsMi4yNTgtLjk2NS0uNzcsMTEuOTU2LTMuMzA3LTEuNzE3Yy0uMDU5LS4wMy0uMTE5LS4wNTctLjE4MS0uMDgtLjA2Mi0uMDIzLS4xMjUtLjA0MS0uMTg5LS4wNTYtLjA2NC0uMDE1LS4xMjgtLjAyNi0uMTkzLS4wMzMtLjA2NS0uMDA3LS4xMy0uMDExLS4xOTYtLjAxMS0uMTI3LDAtLjI1NCwuMDE0LS4zNzgsLjA0LS4xMjQsLjAyNi0uMjQ0LC4wNjYtLjM1OSwuMTE4LS4xMTQsLjA1Mi0uMjIzLC4xMTYtLjMyMiwuMTkzLS4xLC4wNzYtLjE4OSwuMTY1LS4yNjYsLjI2NC0uMTExLC4xNDEtLjE5MSwuMzA0LS4yMzQsLjQ3OS0uMDM5LC4xNjItLjA0LC4zMzEtLjAwNCwuNDk0LC4wMzcsLjE2NSwuMTExLC4zMTksLjIxNiwuNDUyLC4xMTUsLjE0NSwuMjYsLjI2NSwuNDI1LC4zNTFsNi4zMDksMy4zNjhjLjA2MiwuMDMzLC4xMjYsLjA2MiwuMTkyLC4wODcsLjA2NiwuMDI1LC4xMzMsLjA0NiwuMjAxLC4wNjIsLjI3NCwuMDY2LC41NiwuMDY2LC44MzQsMCwuMDY4LS4wMTcsLjEzNS0uMDM3LC4yMDEtLjA2MiwuMDY2LS4wMjUsLjEzLS4wNTQsLjE5Mi0uMDg3bDYuMzA3LTMuMzY4Yy4xNjQtLjA4NiwuMzA5LS4yMDYsLjQyNC0uMzUxLC4xMDUtLjEzMywuMTc4LS4yODcsLjIxNi0uNDUyLC4wMzYtLjE2MywuMDM1LS4zMzItLjAwNC0uNDk0LS4wNDMtLjE3NC0uMTIyLS4zMzgtLjIzNC0uNDc5LS4wNzctLjA5OS0uMTY3LS4xODgtLjI2Ni0uMjY0LS4xLS4wNzYtLjIwOC0uMTQxLS4zMjItLjE5My0uMTE1LS4wNTItLjIzNi0uMDkyLS4zNTktLjExOC0uMTI0LS4wMjctLjI1MS0uMDQtLjM3OC0uMDQtLjA2NSwwLS4xMzEsLjAwNC0uMTk2LC4wMTEtLjA2NSwuMDA3LS4xMywuMDE4LS4xOTMsLjAzMy0uMDY0LC4wMTUtLjEyNywuMDM0LS4xODksLjA1Ni0uMDYyLC4wMjMtLjEyMiwuMDQ5LS4xODEsLjA4bC0zLjMwNywxLjcxNy0uNzcyLTExLjk1NywyLjI1OCwuOTY1Yy4wNTQsLjAyMywuMTA5LC4wNDMsLjE2NSwuMDYsLjA1NiwuMDE3LC4xMTIsLjAzMSwuMTY5LC4wNDIsLjA1NywuMDExLC4xMTQsLjAyLC4xNzEsLjAyNXMuMTE1LC4wMDgsLjE3MiwuMDA4Yy4xMTgsMCwuMjM2LS4wMTIsLjM1Mi0uMDM2LC4xMTItLjAyMywuMjIxLS4wNTgsLjMyNS0uMTA1LC4wOTktLjA0NCwuMTkzLS4xMDEsLjI3OC0uMTY5LC4wODItLjA2NSwuMTUzLS4xNDIsLjIxMi0uMjI4LC4wODEtLjExNywuMTMxLS4yNTMsLjE0NS0uMzk0LC4wMTItLjEzNS0uMDExLS4yNzEtLjA2NC0uMzk2LS4wNTgtLjEzNC0uMTQ0LS4yNTQtLjI1Mi0uMzUyLS4xMjMtLjExMi0uMjY1LS4yMDItLjQxOS0uMjY1bC00LjIyMS0xLjc2MWMtLjA1MS0uMDIxLS4xMDItLjA0LS4xNTUtLjA1NS0uMDUyLS4wMTYtLjEwNi0uMDI5LS4xNjEtLjAzOXMtLjEwOS0uMDE4LS4xNjUtLjAyNC0uMTExLS4wMDgtLjE2Ny0uMDA4IiBmaWxsPSIjZmZmIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLXdpZHRoPSIuNSIvPg0KICAgIDxnPg0KICAgICAgPHBhdGggZD0iTTEuMDA3LDUuNzVjLS4zNzIsMC0uNzU3LS4yODEtLjc1Ny0uNzUyVjFDLjI1LC41ODcsLjU4NiwuMjUsMSwuMjVoMy45OThjLjM2OSwwLC42LC4yMzksLjY5MywuNDYzcy4wOTksLjU1Ny0uMTYzLC44MTdMMS41Myw1LjUyOGMtLjE4MywuMTg0LS4zODYsLjIyMi0uNTIzLC4yMjJaIiBmaWxsPSIjZmZmIi8+DQogICAgICA8cGF0aCBkPSJNNC45OTgsLjVjLjMxLDAsLjQzMiwuMjM2LC40NjIsLjMwOXMuMTExLC4zMjYtLjEwOCwuNTQ1TDEuMzU0LDUuMzUyYy0uMTIzLC4xMjMtLjI1NiwuMTQ4LS4zNDYsLjE0OC0uMjUsMC0uNTA3LS4xODgtLjUwNy0uNTAyVjFjMC0uMjc2LC4yMjQtLjUsLjUtLjVoMy45OThtMC0uNUgxQy40NDgsMCwwLC40NDgsMCwxdjMuOTk4YzAsLjYwMywuNDkzLDEuMDAyLDEuMDA3LDEuMDAyLC4yNDYsMCwuNDk2LS4wOTEsLjctLjI5NUw1LjcwNSwxLjcwN2MuNjMtLjYzLC4xODQtMS43MDctLjcwNy0xLjcwN2gwWiIgZmlsbD0iIzIxMjMyOSIvPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+'),
|
|
1788
1815
|
auto;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './inputHandler';
|
|
2
|
+
export * from './loadResult';
|
|
2
3
|
export { PointerMode } from './inputHandler';
|
|
3
4
|
export type * from './baseInputHandler';
|
|
4
5
|
export type * from './keyboardHandler';
|
|
@@ -7,3 +8,4 @@ export type * from './raycaster';
|
|
|
7
8
|
export type * from './selection';
|
|
8
9
|
export type * from './touchHandler';
|
|
9
10
|
export type * from './vim';
|
|
11
|
+
export type * from './vimCollection';
|
|
@@ -2,6 +2,7 @@ import * as THREE from 'three';
|
|
|
2
2
|
export interface IInputAdapter {
|
|
3
3
|
init: () => void;
|
|
4
4
|
toggleOrthographic: () => void;
|
|
5
|
+
toggleCameraOrbitMode: () => void;
|
|
5
6
|
resetCamera: () => void;
|
|
6
7
|
clearSelection: () => void;
|
|
7
8
|
frameCamera: () => void;
|
|
@@ -17,5 +18,5 @@ export interface IInputAdapter {
|
|
|
17
18
|
mouseMove: (pos: THREE.Vector2) => void;
|
|
18
19
|
selectAtPointer: (pos: THREE.Vector2, add: boolean) => void;
|
|
19
20
|
frameAtPointer: (pos: THREE.Vector2) => void;
|
|
20
|
-
zoom: (value: number) => void;
|
|
21
|
+
zoom: (value: number, pos?: THREE.Vector2) => void;
|
|
21
22
|
}
|
|
@@ -72,7 +72,7 @@ export declare class KeyboardHandler extends BaseInputHandler {
|
|
|
72
72
|
* @param code The event.code of the key.
|
|
73
73
|
* @param handler Callback invoked on key up.
|
|
74
74
|
*/
|
|
75
|
-
registerKeyUp(code: string, mode: CallbackMode, handler: () => void): void;
|
|
75
|
+
registerKeyUp(code: string | string[], mode: CallbackMode, handler: () => void): void;
|
|
76
76
|
private registerKey;
|
|
77
77
|
/**
|
|
78
78
|
* Internal key down event handler.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface ILoadSuccess<T> {
|
|
2
|
+
readonly isSuccess: true;
|
|
3
|
+
readonly isError: false;
|
|
4
|
+
readonly vim: T;
|
|
5
|
+
}
|
|
6
|
+
export interface ILoadError {
|
|
7
|
+
readonly isSuccess: false;
|
|
8
|
+
readonly isError: true;
|
|
9
|
+
readonly error: string;
|
|
10
|
+
readonly details?: string;
|
|
11
|
+
}
|
|
12
|
+
export type ProgressType = 'bytes' | 'percent';
|
|
13
|
+
export interface IProgress {
|
|
14
|
+
type: ProgressType;
|
|
15
|
+
current: number;
|
|
16
|
+
total?: number;
|
|
17
|
+
}
|
|
18
|
+
export type LoadResult<TValue, TError extends ILoadError = ILoadError> = ILoadSuccess<TValue> | TError;
|
|
19
|
+
export declare class LoadSuccess<T> implements ILoadSuccess<T> {
|
|
20
|
+
readonly vim: T;
|
|
21
|
+
readonly isSuccess: true;
|
|
22
|
+
readonly isError: false;
|
|
23
|
+
constructor(vim: T);
|
|
24
|
+
}
|
|
25
|
+
export declare class LoadError implements ILoadError {
|
|
26
|
+
readonly error: string;
|
|
27
|
+
readonly details?: string;
|
|
28
|
+
readonly isSuccess: false;
|
|
29
|
+
readonly isError: true;
|
|
30
|
+
constructor(error: string, details?: string);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Interface for load requests that can be used as a type constraint.
|
|
34
|
+
*/
|
|
35
|
+
export interface ILoadRequest<TVim, TError extends ILoadError = ILoadError> {
|
|
36
|
+
readonly isCompleted: boolean;
|
|
37
|
+
getProgress(): AsyncGenerator<IProgress>;
|
|
38
|
+
getResult(): Promise<LoadResult<TVim, TError>>;
|
|
39
|
+
abort(): void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Base class for loading requests that provides progress tracking via AsyncQueue.
|
|
43
|
+
* Both WebGL and Ultra extend this class with their specific loading logic.
|
|
44
|
+
*/
|
|
45
|
+
export declare class LoadRequest<TVim, TError extends ILoadError = ILoadError> implements ILoadRequest<TVim, TError> {
|
|
46
|
+
private _progressQueue;
|
|
47
|
+
private _result;
|
|
48
|
+
private _resultPromise;
|
|
49
|
+
get isCompleted(): boolean;
|
|
50
|
+
getProgress(): AsyncGenerator<IProgress>;
|
|
51
|
+
getResult(): Promise<LoadResult<TVim, TError>>;
|
|
52
|
+
pushProgress(progress: IProgress): void;
|
|
53
|
+
complete(result: LoadResult<TVim, TError>): void;
|
|
54
|
+
abort(): void;
|
|
55
|
+
}
|
|
@@ -6,19 +6,22 @@ export declare class MouseHandler extends BaseInputHandler {
|
|
|
6
6
|
private _capture;
|
|
7
7
|
private _dragHandler;
|
|
8
8
|
private _doubleClickHandler;
|
|
9
|
+
private _clickHandler;
|
|
9
10
|
onButtonDown: (pos: THREE.Vector2, button: number) => void;
|
|
10
11
|
onButtonUp: (pos: THREE.Vector2, button: number) => void;
|
|
11
12
|
onMouseMove: (event: THREE.Vector2) => void;
|
|
12
13
|
onDrag: DragCallback;
|
|
13
14
|
onClick: (position: THREE.Vector2, ctrl: boolean) => void;
|
|
14
15
|
onDoubleClick: (position: THREE.Vector2) => void;
|
|
15
|
-
onWheel: (value: number, ctrl: boolean) => void;
|
|
16
|
+
onWheel: (value: number, ctrl: boolean, pos: THREE.Vector2) => void;
|
|
17
|
+
onContextMenu: (position: THREE.Vector2) => void;
|
|
16
18
|
constructor(canvas: HTMLCanvasElement);
|
|
17
19
|
protected addListeners(): void;
|
|
18
20
|
dispose(): void;
|
|
19
21
|
private handlePointerDown;
|
|
20
22
|
private handlePointerUp;
|
|
21
23
|
private handleMouseClick;
|
|
24
|
+
private handleContextMenu;
|
|
22
25
|
private handlePointerMove;
|
|
23
26
|
private handleDoubleClick;
|
|
24
27
|
private onMouseScroll;
|
|
@@ -15,13 +15,13 @@ export interface IRaycaster<T> {
|
|
|
15
15
|
/**
|
|
16
16
|
* Raycasts from camera to the screen position to find the first object hit.
|
|
17
17
|
* @param position - The screen position to raycast from.
|
|
18
|
-
* @returns A promise that resolves to the raycast result.
|
|
18
|
+
* @returns A promise that resolves to the raycast result, or undefined if no hit.
|
|
19
19
|
*/
|
|
20
|
-
raycastFromScreen(position: THREE.Vector2): Promise<IRaycastResult<T
|
|
20
|
+
raycastFromScreen(position: THREE.Vector2): Promise<IRaycastResult<T> | undefined>;
|
|
21
21
|
/**
|
|
22
22
|
* Raycasts from camera to world position to find the first object hit.
|
|
23
|
-
* @param position - The world position to raycast
|
|
24
|
-
* @returns A promise that resolves to the raycast result.
|
|
23
|
+
* @param position - The world position to raycast through.
|
|
24
|
+
* @returns A promise that resolves to the raycast result, or undefined if no hit.
|
|
25
25
|
*/
|
|
26
|
-
raycastFromWorld(position: THREE.Vector3): Promise<IRaycastResult<T
|
|
26
|
+
raycastFromWorld(position: THREE.Vector3): Promise<IRaycastResult<T> | undefined>;
|
|
27
27
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ISignal } from 'ste-signals';
|
|
2
|
+
import { IVim, IVimElement } from './vim';
|
|
3
|
+
/**
|
|
4
|
+
* Readonly interface for a collection of vims.
|
|
5
|
+
*/
|
|
6
|
+
export interface IReadonlyVimCollection<T extends IVim<IVimElement>> {
|
|
7
|
+
/** Number of vims in the collection */
|
|
8
|
+
readonly count: number;
|
|
9
|
+
/** Signal dispatched when collection changes */
|
|
10
|
+
readonly onChanged: ISignal;
|
|
11
|
+
/** Get vim by its stable ID */
|
|
12
|
+
getFromId(id: number): T | undefined;
|
|
13
|
+
/** Get all vims as an array */
|
|
14
|
+
getAll(): ReadonlyArray<T>;
|
|
15
|
+
/** Check if vim is in collection */
|
|
16
|
+
has(vim: T): boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Mutable interface for a collection of vims.
|
|
20
|
+
*/
|
|
21
|
+
export interface IVimCollection<T extends IVim<IVimElement>> extends IReadonlyVimCollection<T> {
|
|
22
|
+
add(vim: T): void;
|
|
23
|
+
remove(vim: T): void;
|
|
24
|
+
clear(): void;
|
|
25
|
+
}
|
|
@@ -1,35 +1,13 @@
|
|
|
1
1
|
import { Vim } from './vim';
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
readonly isSuccess = true;
|
|
6
|
-
readonly vim: Vim;
|
|
7
|
-
constructor(vim: Vim);
|
|
8
|
-
}
|
|
9
|
-
export declare class LoadError {
|
|
10
|
-
error: VimRequestErrorType;
|
|
11
|
-
readonly isError = true;
|
|
12
|
-
readonly isSuccess = false;
|
|
2
|
+
import { LoadRequest as BaseLoadRequest, ILoadRequest as BaseILoadRequest, IProgress, LoadError as SharedLoadError } from '../shared/loadResult';
|
|
3
|
+
export type VimRequestErrorType = 'loadingError' | 'downloadingError' | 'serverDisconnected' | 'unknown' | 'cancelled';
|
|
4
|
+
export declare class LoadError extends SharedLoadError {
|
|
13
5
|
readonly type: VimRequestErrorType;
|
|
14
|
-
readonly details: string | undefined;
|
|
15
6
|
constructor(error: VimRequestErrorType, details?: string);
|
|
16
7
|
}
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
getResult(): Promise<LoadError | LoadSuccess>;
|
|
21
|
-
abort(): void;
|
|
22
|
-
}
|
|
23
|
-
export type VimRequestErrorType = 'loadingError' | 'downloadingError' | 'serverDisconnected' | 'unknown' | 'cancelled';
|
|
24
|
-
export declare class LoadRequest implements ILoadRequest {
|
|
25
|
-
private _progress;
|
|
26
|
-
private _progressPromise;
|
|
27
|
-
private _completionPromise;
|
|
28
|
-
private _result;
|
|
29
|
-
get isCompleted(): boolean;
|
|
30
|
-
getProgress(): AsyncGenerator<number, void, unknown>;
|
|
31
|
-
getResult(): Promise<LoadError | LoadSuccess>;
|
|
32
|
-
onProgress(progress: number): void;
|
|
8
|
+
export type ILoadRequest = BaseILoadRequest<Vim, LoadError>;
|
|
9
|
+
export declare class LoadRequest extends BaseLoadRequest<Vim, LoadError> {
|
|
10
|
+
onProgress(progress: IProgress): void;
|
|
33
11
|
success(vim: Vim): this;
|
|
34
12
|
error(error: VimRequestErrorType, details?: string): this;
|
|
35
13
|
abort(): void;
|
|
@@ -3,7 +3,7 @@ import type { InputHandler } from '../shared';
|
|
|
3
3
|
import { ICamera } from './camera';
|
|
4
4
|
import { ColorManager } from './colorManager';
|
|
5
5
|
import { IDecoder } from './decoder';
|
|
6
|
-
import { ILoadRequest } from './loadRequest';
|
|
6
|
+
import { type ILoadRequest } from './loadRequest';
|
|
7
7
|
import { ILogger } from './logger';
|
|
8
8
|
import { IUltraRaycaster } from './raycaster';
|
|
9
9
|
import { IRenderer } from './renderer';
|
|
@@ -20,6 +20,11 @@ export declare const INVALID_HANDLE = 4294967295;
|
|
|
20
20
|
* handling connections, and coordinating various components like the camera, decoder, and inputs.
|
|
21
21
|
*/
|
|
22
22
|
export declare class Viewer {
|
|
23
|
+
/**
|
|
24
|
+
* The type of the viewer, indicating it is a WebGL viewer.
|
|
25
|
+
* Useful for distinguishing between different viewer types in a multi-viewer application.
|
|
26
|
+
*/
|
|
27
|
+
readonly type = "ultra";
|
|
23
28
|
private readonly _decoder;
|
|
24
29
|
private readonly _socketClient;
|
|
25
30
|
private readonly _input;
|
|
@@ -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
|
*/
|
|
@@ -8,6 +8,7 @@ import { Renderer } from './renderer';
|
|
|
8
8
|
import { RpcSafeClient, VimSource } from './rpcSafeClient';
|
|
9
9
|
import * as THREE from 'three';
|
|
10
10
|
export declare class Vim implements IVim<Element3D> {
|
|
11
|
+
readonly type = "ultra";
|
|
11
12
|
readonly source: VimSource;
|
|
12
13
|
private _handle;
|
|
13
14
|
private _request;
|
|
@@ -18,6 +19,7 @@ export declare class Vim implements IVim<Element3D> {
|
|
|
18
19
|
readonly visibility: VisibilitySynchronizer;
|
|
19
20
|
private _elementColors;
|
|
20
21
|
private _updatedColors;
|
|
22
|
+
private _removedColors;
|
|
21
23
|
private _updateScheduled;
|
|
22
24
|
private _elementCount;
|
|
23
25
|
private _objects;
|
|
@@ -34,7 +36,7 @@ export declare class Vim implements IVim<Element3D> {
|
|
|
34
36
|
private _load;
|
|
35
37
|
private getErrorType;
|
|
36
38
|
private _getHandle;
|
|
37
|
-
|
|
39
|
+
getBoundingBoxForElements(elements: number[] | 'all'): Promise<THREE.Box3 | undefined>;
|
|
38
40
|
getBoundingBox(): Promise<THREE.Box3 | undefined>;
|
|
39
41
|
getColor(elementIndex: number): THREE.Color | undefined;
|
|
40
42
|
setColor(elementIndex: number[], color: THREE.Color | undefined): Promise<void>;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { ISignal } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { ISignal } from 'ste-signals';
|
|
2
|
+
import { IReadonlyVimCollection as ISharedReadonlyVimCollection, IVimCollection } from '../shared/vimCollection';
|
|
3
|
+
import { Vim } from './vim';
|
|
4
|
+
export interface IReadonlyVimCollection extends ISharedReadonlyVimCollection<Vim> {
|
|
5
|
+
/** Get vim at a specific index */
|
|
6
6
|
getAt(index: number): Vim | undefined;
|
|
7
|
-
count: number;
|
|
8
|
-
onChanged: ISignal;
|
|
9
7
|
}
|
|
10
|
-
export declare class VimCollection implements IReadonlyVimCollection {
|
|
8
|
+
export declare class VimCollection implements IVimCollection<Vim>, IReadonlyVimCollection {
|
|
11
9
|
private _vims;
|
|
12
10
|
private _onChanged;
|
|
13
11
|
get onChanged(): ISignal;
|
|
@@ -24,11 +22,17 @@ export declare class VimCollection implements IReadonlyVimCollection {
|
|
|
24
22
|
*/
|
|
25
23
|
remove(vim: Vim): void;
|
|
26
24
|
/**
|
|
27
|
-
* Gets a Vim instance by its
|
|
28
|
-
* @param
|
|
25
|
+
* Gets a Vim instance by its stable ID.
|
|
26
|
+
* @param id - The ID of the Vim instance.
|
|
29
27
|
* @returns The Vim instance or undefined if not found.
|
|
30
28
|
*/
|
|
31
|
-
|
|
29
|
+
getFromId(id: number): Vim | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Checks if a vim is in the collection.
|
|
32
|
+
* @param vim - The Vim instance to check.
|
|
33
|
+
* @returns True if the vim is in the collection.
|
|
34
|
+
*/
|
|
35
|
+
has(vim: Vim): boolean;
|
|
32
36
|
/**
|
|
33
37
|
* Gets a Vim instance at a specific index.
|
|
34
38
|
* @param index - The index of the Vim instance.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export type { VimSettings, VimPartialSettings } from './vimSettings';
|
|
2
|
+
export * from './vimCollection';
|
|
3
|
+
export type { RequestSource, LoadRequest, ILoadRequest } from './progressive/loadRequest';
|
|
3
4
|
export * as Materials from './materials';
|
|
4
5
|
export type { Transparency } from './geometry';
|
|
5
6
|
export type * from './webglAttribute';
|
|
@@ -9,7 +10,6 @@ export type * from './elementMapping';
|
|
|
9
10
|
export type * from './mesh';
|
|
10
11
|
export type * from './scene';
|
|
11
12
|
export type * from './vim';
|
|
12
|
-
export type * from './progressive/vimx';
|
|
13
13
|
export type * from './progressive/g3dOffsets';
|
|
14
14
|
export type * from './progressive/g3dSubset';
|
|
15
15
|
export type * from './progressive/insertableGeometry';
|
|
@@ -3,6 +3,7 @@ export * from './maskMaterial';
|
|
|
3
3
|
export * from './materials';
|
|
4
4
|
export * from './mergeMaterial';
|
|
5
5
|
export * from './outlineMaterial';
|
|
6
|
+
export * from './pickingMaterial';
|
|
6
7
|
export * from './simpleMaterial';
|
|
7
8
|
export * from './skyboxMaterial';
|
|
8
9
|
export * from './standardMaterial';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module vim-loader/materials
|
|
3
|
+
* Material for GPU picking that outputs element index, depth, and surface normal in a single pass.
|
|
4
|
+
*/
|
|
5
|
+
import * as THREE from 'three';
|
|
6
|
+
/**
|
|
7
|
+
* Creates a material for GPU picking that outputs packed IDs, depth, and surface normal.
|
|
8
|
+
*
|
|
9
|
+
* Expects a `packedId` uint attribute pre-packed during mesh building as: (vimIndex << 24) | elementIndex
|
|
10
|
+
*
|
|
11
|
+
* Output format (Float32 RGBA):
|
|
12
|
+
* - R = packed uint as float bits - supports 256 vims × 16M elements
|
|
13
|
+
* - G = depth (distance along camera direction, 0 = miss)
|
|
14
|
+
* - B = normal.x (surface normal X component)
|
|
15
|
+
* - A = normal.y (surface normal Y component)
|
|
16
|
+
*
|
|
17
|
+
* Normal.z is reconstructed as: sqrt(1 - x² - y²), always positive since normal faces camera.
|
|
18
|
+
*
|
|
19
|
+
* @returns A custom shader material for GPU picking.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createPickingMaterial(): THREE.ShaderMaterial;
|
|
22
|
+
/**
|
|
23
|
+
* PickingMaterial class that wraps the shader material with camera update functionality.
|
|
24
|
+
*/
|
|
25
|
+
export declare class PickingMaterial {
|
|
26
|
+
readonly material: THREE.ShaderMaterial;
|
|
27
|
+
constructor();
|
|
28
|
+
/**
|
|
29
|
+
* Updates the camera uniforms for depth calculation.
|
|
30
|
+
* Must be called before rendering.
|
|
31
|
+
*/
|
|
32
|
+
updateCamera(camera: THREE.Camera): void;
|
|
33
|
+
/**
|
|
34
|
+
* Gets or sets the clipping planes for section box support.
|
|
35
|
+
*/
|
|
36
|
+
get clippingPlanes(): THREE.Plane[];
|
|
37
|
+
set clippingPlanes(planes: THREE.Plane[]);
|
|
38
|
+
/**
|
|
39
|
+
* Disposes of the material resources.
|
|
40
|
+
*/
|
|
41
|
+
dispose(): void;
|
|
42
|
+
}
|
|
@@ -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
|
-
*
|
|
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
|
*/
|
|
@@ -5,6 +5,7 @@ import * as THREE from 'three';
|
|
|
5
5
|
import { G3d, G3dMesh, G3dMaterial } from 'vim-format';
|
|
6
6
|
import { Scene } from '../scene';
|
|
7
7
|
import { G3dMeshOffsets } from './g3dOffsets';
|
|
8
|
+
import { ElementMapping } from '../elementMapping';
|
|
8
9
|
export declare class GeometrySubmesh {
|
|
9
10
|
instance: number;
|
|
10
11
|
start: number;
|
|
@@ -23,10 +24,13 @@ export declare class InsertableGeometry {
|
|
|
23
24
|
private _indexAttribute;
|
|
24
25
|
private _vertexAttribute;
|
|
25
26
|
private _colorAttribute;
|
|
27
|
+
private _packedIdAttribute;
|
|
28
|
+
private _mapping;
|
|
29
|
+
private _vimIndex;
|
|
26
30
|
private _updateStartMesh;
|
|
27
31
|
private _updateEndMesh;
|
|
28
32
|
private _meshToUpdate;
|
|
29
|
-
constructor(offsets: G3dMeshOffsets, materials: G3dMaterial, transparent: boolean);
|
|
33
|
+
constructor(offsets: G3dMeshOffsets, materials: G3dMaterial, transparent: boolean, mapping?: ElementMapping, vimIndex?: number);
|
|
30
34
|
get progress(): number;
|
|
31
35
|
insert(mesh: G3dMesh, at: number): number[];
|
|
32
36
|
float32ArraysAreEqual(array1: Float32Array, array2: Float32Array): boolean;
|
|
@@ -34,6 +38,7 @@ export declare class InsertableGeometry {
|
|
|
34
38
|
private setIndex;
|
|
35
39
|
private setVertex;
|
|
36
40
|
private setColor;
|
|
41
|
+
private setPackedId;
|
|
37
42
|
private expandBox;
|
|
38
43
|
flushUpdate(): void;
|
|
39
44
|
update(): void;
|
|
@@ -8,6 +8,7 @@ import { InsertableSubmesh } from './insertableSubmesh';
|
|
|
8
8
|
import { G3dMeshOffsets } from './g3dOffsets';
|
|
9
9
|
import { Vim } from '../vim';
|
|
10
10
|
import { ModelMaterial } from '../materials/materials';
|
|
11
|
+
import { ElementMapping } from '../elementMapping';
|
|
11
12
|
export declare class InsertableMesh {
|
|
12
13
|
offsets: G3dMeshOffsets;
|
|
13
14
|
mesh: THREE.Mesh;
|
|
@@ -33,7 +34,7 @@ export declare class InsertableMesh {
|
|
|
33
34
|
*/
|
|
34
35
|
private _material;
|
|
35
36
|
geometry: InsertableGeometry;
|
|
36
|
-
constructor(offsets: G3dMeshOffsets, materials: G3dMaterial, transparent: boolean);
|
|
37
|
+
constructor(offsets: G3dMeshOffsets, materials: G3dMaterial, transparent: boolean, mapping?: ElementMapping, vimIndex?: number);
|
|
37
38
|
get progress(): number;
|
|
38
39
|
insert(g3d: G3dMesh, mesh: number): void;
|
|
39
40
|
insertFromVim(g3d: G3d, mesh: number): void;
|
|
@@ -54,7 +55,9 @@ export declare class InsertableMesh {
|
|
|
54
55
|
*/
|
|
55
56
|
getSubmesh(index: number): InsertableSubmesh;
|
|
56
57
|
/**
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
* Sets the material for this mesh.
|
|
59
|
+
* Set to undefined to reset to original materials.
|
|
60
|
+
*/
|
|
59
61
|
setMaterial(value: ModelMaterial): void;
|
|
62
|
+
private _mergeMaterials;
|
|
60
63
|
}
|
|
@@ -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;
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { G3d, G3dMesh, G3dMaterial, MeshSection } from 'vim-format';
|
|
5
5
|
import { InstancedMesh } from './instancedMesh';
|
|
6
|
+
import { ElementMapping } from '../elementMapping';
|
|
6
7
|
export declare class InstancedMeshFactory {
|
|
7
8
|
materials: G3dMaterial;
|
|
8
|
-
|
|
9
|
+
private _mapping;
|
|
10
|
+
private _vimIndex;
|
|
11
|
+
constructor(materials: G3dMaterial, mapping?: ElementMapping, vimIndex?: number);
|
|
9
12
|
createTransparent(mesh: G3dMesh, instances: number[]): InstancedMesh;
|
|
10
13
|
createOpaque(mesh: G3dMesh, instances: number[]): InstancedMesh;
|
|
11
14
|
createOpaqueFromVim(g3d: G3d, mesh: number, instances: number[]): InstancedMesh;
|
|
@@ -17,4 +20,8 @@ export declare class InstancedMeshFactory {
|
|
|
17
20
|
private computeVertices;
|
|
18
21
|
private computeColors;
|
|
19
22
|
private setMatricesFromVimx;
|
|
23
|
+
/**
|
|
24
|
+
* Adds per-instance packed ID attribute for GPU picking.
|
|
25
|
+
*/
|
|
26
|
+
private setPackedIds;
|
|
20
27
|
}
|