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.
Files changed (89) hide show
  1. package/dist/style.css +34 -7
  2. package/dist/types/core-viewers/shared/index.d.ts +2 -0
  3. package/dist/types/core-viewers/shared/inputAdapter.d.ts +2 -1
  4. package/dist/types/core-viewers/shared/keyboardHandler.d.ts +1 -1
  5. package/dist/types/core-viewers/shared/loadResult.d.ts +55 -0
  6. package/dist/types/core-viewers/shared/mouseHandler.d.ts +4 -1
  7. package/dist/types/core-viewers/shared/raycaster.d.ts +5 -5
  8. package/dist/types/core-viewers/shared/vimCollection.d.ts +25 -0
  9. package/dist/types/core-viewers/ultra/loadRequest.d.ts +6 -28
  10. package/dist/types/core-viewers/ultra/viewer.d.ts +6 -1
  11. package/dist/types/core-viewers/ultra/viewport.d.ts +6 -0
  12. package/dist/types/core-viewers/ultra/vim.d.ts +3 -1
  13. package/dist/types/core-viewers/ultra/vimCollection.d.ts +15 -11
  14. package/dist/types/core-viewers/webgl/index.d.ts +0 -1
  15. package/dist/types/core-viewers/webgl/loader/index.d.ts +3 -3
  16. package/dist/types/core-viewers/webgl/loader/materials/index.d.ts +1 -0
  17. package/dist/types/core-viewers/webgl/loader/materials/pickingMaterial.d.ts +42 -0
  18. package/dist/types/core-viewers/webgl/loader/mesh.d.ts +3 -1
  19. package/dist/types/core-viewers/webgl/loader/progressive/insertableGeometry.d.ts +6 -1
  20. package/dist/types/core-viewers/webgl/loader/progressive/insertableMesh.d.ts +6 -3
  21. package/dist/types/core-viewers/webgl/loader/progressive/instancedMesh.d.ts +5 -0
  22. package/dist/types/core-viewers/webgl/loader/progressive/instancedMeshFactory.d.ts +8 -1
  23. package/dist/types/core-viewers/webgl/loader/progressive/legacyMeshFactory.d.ts +4 -1
  24. package/dist/types/core-viewers/webgl/loader/progressive/loadRequest.d.ts +21 -0
  25. package/dist/types/core-viewers/webgl/loader/progressive/subsetBuilder.d.ts +2 -1
  26. package/dist/types/core-viewers/webgl/loader/progressive/subsetRequest.d.ts +3 -2
  27. package/dist/types/core-viewers/webgl/loader/vim.d.ts +12 -2
  28. package/dist/types/core-viewers/webgl/loader/vimCollection.d.ts +78 -0
  29. package/dist/types/core-viewers/webgl/loader/vimSettings.d.ts +11 -4
  30. package/dist/types/core-viewers/webgl/viewer/camera/cameraMovement.d.ts +8 -0
  31. package/dist/types/core-viewers/webgl/viewer/gizmos/gizmoOrbit.d.ts +22 -17
  32. package/dist/types/core-viewers/webgl/viewer/gizmos/markers/gizmoMarker.d.ts +1 -0
  33. package/dist/types/core-viewers/webgl/viewer/raycaster.d.ts +3 -1
  34. package/dist/types/core-viewers/webgl/viewer/rendering/gpuPicker.d.ts +127 -0
  35. package/dist/types/core-viewers/webgl/viewer/rendering/renderScene.d.ts +2 -2
  36. package/dist/types/core-viewers/webgl/viewer/rendering/renderer.d.ts +7 -0
  37. package/dist/types/core-viewers/webgl/viewer/rendering/renderingSection.d.ts +4 -0
  38. package/dist/types/core-viewers/webgl/viewer/settings/viewerSettings.d.ts +11 -6
  39. package/dist/types/core-viewers/webgl/viewer/viewer.d.ts +16 -1
  40. package/dist/types/core-viewers/webgl/viewer/viewport.d.ts +1 -1
  41. package/dist/types/react-viewers/bim/bimPanel.d.ts +3 -3
  42. package/dist/types/react-viewers/controlbar/controlBarIds.d.ts +32 -36
  43. package/dist/types/react-viewers/errors/errorStyle.d.ts +1 -1
  44. package/dist/types/react-viewers/helpers/loadRequest.d.ts +14 -16
  45. package/dist/types/react-viewers/helpers/reactUtils.d.ts +2 -1
  46. package/dist/types/react-viewers/helpers/utils.d.ts +8 -0
  47. package/dist/types/react-viewers/panels/axesPanel.d.ts +2 -1
  48. package/dist/types/react-viewers/panels/index.d.ts +1 -0
  49. package/dist/types/react-viewers/panels/isolationPanel.d.ts +2 -0
  50. package/dist/types/react-viewers/panels/loadingBox.d.ts +1 -1
  51. package/dist/types/react-viewers/panels/messageBox.d.ts +2 -0
  52. package/dist/types/react-viewers/panels/sidePanel.d.ts +1 -1
  53. package/dist/types/react-viewers/settings/anySettings.d.ts +7 -0
  54. package/dist/types/react-viewers/settings/index.d.ts +1 -1
  55. package/dist/types/react-viewers/settings/settingsInputBox.d.ts +4 -0
  56. package/dist/types/react-viewers/settings/settingsItem.d.ts +30 -0
  57. package/dist/types/react-viewers/settings/settingsKeys.d.ts +46 -0
  58. package/dist/types/react-viewers/settings/settingsPanel.d.ts +5 -4
  59. package/dist/types/react-viewers/settings/settingsPanelContent.d.ts +6 -0
  60. package/dist/types/react-viewers/settings/settingsState.d.ts +11 -11
  61. package/dist/types/react-viewers/settings/settingsStorage.d.ts +3 -3
  62. package/dist/types/react-viewers/settings/settingsSubtitle.d.ts +2 -0
  63. package/dist/types/react-viewers/settings/settingsToggle.d.ts +11 -0
  64. package/dist/types/react-viewers/state/controlBarState.d.ts +41 -7
  65. package/dist/types/react-viewers/state/sharedIsolation.d.ts +2 -0
  66. package/dist/types/react-viewers/ultra/controlBar.d.ts +4 -1
  67. package/dist/types/react-viewers/ultra/index.d.ts +1 -0
  68. package/dist/types/react-viewers/ultra/settings.d.ts +13 -0
  69. package/dist/types/react-viewers/ultra/settingsPanel.d.ts +5 -0
  70. package/dist/types/react-viewers/ultra/viewer.d.ts +3 -1
  71. package/dist/types/react-viewers/ultra/viewerRef.d.ts +3 -0
  72. package/dist/types/react-viewers/urls.d.ts +0 -1
  73. package/dist/types/react-viewers/webgl/index.d.ts +1 -0
  74. package/dist/types/react-viewers/webgl/loading.d.ts +19 -24
  75. package/dist/types/react-viewers/webgl/settings.d.ts +36 -0
  76. package/dist/types/react-viewers/webgl/settingsPanel.d.ts +12 -0
  77. package/dist/types/react-viewers/webgl/viewer.d.ts +3 -3
  78. package/dist/types/react-viewers/webgl/viewerRef.d.ts +32 -8
  79. package/dist/types/utils/asyncQueue.d.ts +15 -0
  80. package/dist/types/utils/index.d.ts +1 -1
  81. package/dist/vim-web.iife.js +49873 -49090
  82. package/dist/vim-web.iife.js.map +1 -1
  83. package/dist/vim-web.js +49690 -48907
  84. package/dist/vim-web.js.map +1 -1
  85. package/package.json +1 -1
  86. package/dist/types/core-viewers/webgl/loader/progressive/open.d.ts +0 -12
  87. package/dist/types/core-viewers/webgl/loader/progressive/vimRequest.d.ts +0 -44
  88. package/dist/types/react-viewers/settings/settings.d.ts +0 -61
  89. package/dist/types/utils/result.d.ts +0 -13
@@ -4,18 +4,14 @@
4
4
  import * as Core from '../../core-viewers';
5
5
  import { LoadRequest } from '../helpers/loadRequest';
6
6
  import { ModalHandle } from '../panels/modal';
7
- import { Settings } from '../settings';
7
+ import { WebglSettings } from './settings';
8
+ import { IProgress } from '../../core-viewers/shared/loadResult';
8
9
  type AddSettings = {
9
10
  /**
10
11
  * Controls whether to frame the camera on a vim everytime it is updated.
11
12
  * Default: true
12
13
  */
13
14
  autoFrame?: boolean;
14
- /**
15
- * Controls whether to initially load the vim content or not.
16
- * Default: false
17
- */
18
- loadEmpty?: boolean;
19
15
  };
20
16
  export type OpenSettings = Core.Webgl.VimPartialSettings & AddSettings;
21
17
  export type LoadingError = {
@@ -30,13 +26,13 @@ export declare class ComponentLoader {
30
26
  private _viewer;
31
27
  private _modal;
32
28
  private _addLink;
33
- constructor(viewer: Core.Webgl.Viewer, modal: React.RefObject<ModalHandle>, settings: Settings);
29
+ constructor(viewer: Core.Webgl.Viewer, modal: React.RefObject<ModalHandle>, settings: WebglSettings);
34
30
  /**
35
31
  * Event emitter for progress updates.
36
32
  */
37
- onProgress(p: Core.Webgl.IProgressLogs): void;
33
+ onProgress(p: IProgress): void;
38
34
  /**
39
- * Event emitter for completion notifications.
35
+ * Event emitter for completion notifications.
40
36
  */
41
37
  onDone(): void;
42
38
  /**
@@ -44,26 +40,25 @@ export declare class ComponentLoader {
44
40
  */
45
41
  onError(e: LoadingError): void;
46
42
  /**
47
- * Asynchronously opens a vim at source, applying the provided settings.
48
- * @param source The source to open, either as a string or ArrayBuffer.
49
- * @param settings Partial settings to apply to the opened source.
50
- * @param onProgress Optional callback function to track progress during opening.
51
- * Receives progress logs as input.
52
- */
53
- open(source: Core.Webgl.RequestSource, settings: OpenSettings, onProgress?: (p: Core.Webgl.IProgressLogs) => void): Promise<Core.Webgl.Vim>;
54
- /**
55
- * Creates a new load request for the provided source and settings.
43
+ * Opens a vim file without loading geometry.
44
+ * Use this for querying BIM data or selective loading.
45
+ * Call vim.loadAll() or vim.loadSubset() to load geometry later.
56
46
  * @param source The url to the vim file or a buffer of the file.
57
47
  * @param settings Settings to apply to vim file.
58
- * @returns A new load request instance to track progress and get result.
48
+ * @returns A LoadRequest to track progress and get result. The vim is auto-added on success.
49
+ * @throws Error if the viewer has reached maximum capacity (256 vims)
59
50
  */
60
- request(source: Core.Webgl.RequestSource, settings?: Core.Webgl.VimPartialSettings): LoadRequest;
61
- add(vim: Core.Webgl.Vim, settings?: AddSettings): void;
51
+ open(source: Core.Webgl.RequestSource, settings?: OpenSettings): LoadRequest;
62
52
  /**
63
- * Removes the vim from the viewer and disposes it.
64
- * @param vim Vim to remove from the viewer.
53
+ * Loads a vim file with all geometry.
54
+ * Use this for immediate viewing.
55
+ * @param source The url to the vim file or a buffer of the file.
56
+ * @param settings Settings to apply to vim file.
57
+ * @returns A LoadRequest to track progress and get result. The vim is auto-added on success.
58
+ * @throws Error if the viewer has reached maximum capacity (256 vims)
65
59
  */
66
- remove(vim: Core.Webgl.Vim): void;
60
+ load(source: Core.Webgl.RequestSource, settings?: OpenSettings): LoadRequest;
61
+ private loadInternal;
67
62
  private initVim;
68
63
  }
69
64
  export {};
@@ -0,0 +1,36 @@
1
+ import { RecursivePartial } from "../../utils";
2
+ import { UserBoolean } from "../settings/userBoolean";
3
+ import { ControlBarCameraSettings, ControlBarCursorSettings, ControlBarMeasureSettings, ControlBarSectionBoxSettings, ControlBarVisibilitySettings } from "../state/controlBarState";
4
+ export type PartialWebglSettings = RecursivePartial<WebglSettings>;
5
+ /**
6
+ * Complete settings configuration for the Vim viewer
7
+ * @interface Settings
8
+ */
9
+ export type WebglSettings = {
10
+ capacity: {
11
+ canFollowUrl: boolean;
12
+ canGoFullScreen: boolean;
13
+ canDownload: boolean;
14
+ canReadLocalStorage: boolean;
15
+ };
16
+ ui: ControlBarCameraSettings & ControlBarCursorSettings & ControlBarSectionBoxSettings & ControlBarVisibilitySettings & ControlBarMeasureSettings & {
17
+ panelLogo: UserBoolean;
18
+ panelBimTree: UserBoolean;
19
+ panelBimInfo: UserBoolean;
20
+ panelPerformance: UserBoolean;
21
+ panelAxes: UserBoolean;
22
+ panelControlBar: UserBoolean;
23
+ axesOrthographic: UserBoolean;
24
+ axesHome: UserBoolean;
25
+ miscProjectInspector: UserBoolean;
26
+ miscSettings: UserBoolean;
27
+ miscHelp: UserBoolean;
28
+ miscMaximise: UserBoolean;
29
+ };
30
+ };
31
+ /**
32
+ * Default settings configuration for the React Webgl Vim viewer
33
+ * @constant
34
+ * @type {WebglSettings}
35
+ */
36
+ export declare function getDefaultSettings(): WebglSettings;
@@ -0,0 +1,12 @@
1
+ import { Viewer } from "../../core-viewers/webgl";
2
+ import { SettingsItem } from "../settings/settingsItem";
3
+ import { WebglSettings } from "./settings";
4
+ export declare function getControlBarVariousSettings(): SettingsItem<WebglSettings>[];
5
+ export declare function getPanelsVisibilitySettings(): SettingsItem<WebglSettings>[];
6
+ export declare function getInputsSettings(viewer: Viewer): SettingsItem<WebglSettings>[];
7
+ export declare function getControlBarMeasureSettings(): SettingsItem<WebglSettings>[];
8
+ export declare function getWebglSettingsContent(viewer: Viewer): SettingsItem<WebglSettings>[];
9
+ /**
10
+ * Apply given vim viewer settings to the given viewer.
11
+ */
12
+ export declare function applyWebglSettings(settings: WebglSettings): void;
@@ -2,9 +2,9 @@
2
2
  * @module public-api
3
3
  */
4
4
  import * as Core from '../../core-viewers';
5
- import { PartialSettings } from '../settings';
6
5
  import { Container } from '../container';
7
6
  import { ViewerRef } from './viewerRef';
7
+ import { PartialWebglSettings } from './settings';
8
8
  /**
9
9
  * Creates a UI container along with a VIM.Viewer and its associated React viewer.
10
10
  * @param container An optional container object. If none is provided, a container will be created.
@@ -12,7 +12,7 @@ import { ViewerRef } from './viewerRef';
12
12
  * @param coreSettings Viewer settings.
13
13
  * @returns An object containing the resulting container, reactRoot, and viewer.
14
14
  */
15
- export declare function createViewer(container?: Container | HTMLElement, settings?: PartialSettings, coreSettings?: Core.Webgl.PartialViewerSettings): Promise<ViewerRef>;
15
+ export declare function createViewer(container?: Container | HTMLElement, settings?: PartialWebglSettings, coreSettings?: Core.Webgl.PartialViewerSettings): Promise<ViewerRef>;
16
16
  /**
17
17
  * Represents a React viewer providing UI for the Vim viewer.
18
18
  * @param container The container object containing root, gfx, and UI elements for the Vim viewer.
@@ -24,5 +24,5 @@ export declare function Viewer(props: {
24
24
  container: Container;
25
25
  viewer: Core.Webgl.Viewer;
26
26
  onMount: (viewer: ViewerRef) => void;
27
- settings?: PartialSettings;
27
+ settings?: PartialWebglSettings;
28
28
  }): import("react/jsx-runtime").JSX.Element;
@@ -3,30 +3,38 @@
3
3
  */
4
4
  import * as Core from '../../core-viewers';
5
5
  import { ContextMenuRef } from '../panels/contextMenu';
6
- import { Settings } from '../settings/settings';
6
+ import { AnySettings } from '../settings/anySettings';
7
7
  import { CameraRef } from '../state/cameraState';
8
8
  import { Container } from '../container';
9
9
  import { BimInfoPanelRef } from '../bim/bimInfoData';
10
10
  import { ControlBarRef } from '../controlbar';
11
- import { ComponentLoader } from './loading';
11
+ import { OpenSettings } from './loading';
12
12
  import { ModalHandle } from '../panels/modal';
13
13
  import { SectionBoxRef } from '../state/sectionBoxState';
14
14
  import { IsolationRef } from '../state/sharedIsolation';
15
15
  import { GenericPanelHandle } from '../generic';
16
+ import { SettingsItem } from '../settings/settingsItem';
17
+ import { WebglSettings } from './settings';
18
+ export type { OpenSettings } from './loading';
16
19
  /**
17
20
  * Settings API managing settings applied to the viewer.
18
21
  */
19
- export type SettingsRef = {
22
+ export type SettingsRef<T extends AnySettings> = {
20
23
  /**
21
24
  * Allows updating settings by providing a callback function.
22
25
  * @param updater A function that updates the current settings.
23
26
  */
24
- update: (updater: (settings: Settings) => void) => void;
27
+ update: (updater: (settings: T) => void) => void;
25
28
  /**
26
29
  * Registers a callback function to be notified when settings are updated.
27
30
  * @param callback A function to be called when settings are updated, receiving the updated settings.
28
31
  */
29
- register: (callback: (settings: Settings) => void) => void;
32
+ register: (callback: (settings: T) => void) => void;
33
+ /**
34
+ * Customizes the settings panel by providing a customizer function.
35
+ * @param customizer A function that modifies the settings items.
36
+ */
37
+ customize: (customizer: (items: SettingsItem<T>[]) => SettingsItem<T>[]) => void;
30
38
  };
31
39
  /**
32
40
  * Reference to manage help message functionality in the viewer.
@@ -57,9 +65,25 @@ export type ViewerRef = {
57
65
  */
58
66
  core: Core.Webgl.Viewer;
59
67
  /**
60
- * Vim WebGL loader to download VIMs.
68
+ * Loads a vim file with all geometry for immediate viewing.
69
+ * @param source The url or buffer of the vim file
70
+ * @param settings Optional settings
71
+ * @returns LoadRequest to track progress and get result
72
+ */
73
+ load: (source: Core.Webgl.RequestSource, settings?: OpenSettings) => Core.Webgl.ILoadRequest;
74
+ /**
75
+ * Opens a vim file without loading geometry.
76
+ * Use for BIM queries or selective loading via vim.loadAll()/loadSubset().
77
+ * @param source The url or buffer of the vim file
78
+ * @param settings Optional settings
79
+ * @returns LoadRequest to track progress and get result
80
+ */
81
+ open: (source: Core.Webgl.RequestSource, settings?: OpenSettings) => Core.Webgl.ILoadRequest;
82
+ /**
83
+ * Removes a vim from the viewer and disposes it.
84
+ * @param vim The vim to remove
61
85
  */
62
- loader: ComponentLoader;
86
+ remove: (vim: Core.Webgl.Vim) => void;
63
87
  /**
64
88
  * Isolation API managing isolation state in the viewer.
65
89
  */
@@ -79,7 +103,7 @@ export type ViewerRef = {
79
103
  /**
80
104
  * Settings API managing settings applied to the viewer.
81
105
  */
82
- settings: SettingsRef;
106
+ settings: SettingsRef<WebglSettings>;
83
107
  /**
84
108
  * Message API to interact with the loading box.
85
109
  */
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A queue that converts push-based callbacks into an async iterator.
3
+ * Use this to bridge callback-based APIs with async/await consumers.
4
+ */
5
+ export declare class AsyncQueue<T> {
6
+ private _queue;
7
+ private _waiters;
8
+ private _closed;
9
+ /** Push a value to the queue. Wakes up one waiting consumer. */
10
+ push(value: T): void;
11
+ /** Close the queue. No more values can be pushed. */
12
+ close(): void;
13
+ /** Async iterator that yields queued values until closed. */
14
+ [Symbol.asyncIterator](): AsyncGenerator<T, void, void>;
15
+ }
@@ -1,10 +1,10 @@
1
1
  export * from './array';
2
+ export * from './asyncQueue';
2
3
  export * from './debounce';
3
4
  export * from './interfaces';
4
5
  export * from './math3d';
5
6
  export * from './partial';
6
7
  export * from './promise';
7
- export * from './result';
8
8
  export * from './threeUtils';
9
9
  export * from './url';
10
10
  export * from './validation';