@x-viewer/core 0.21.7 → 0.21.8
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/README.md +2 -2
- package/dist/chunks/libredwg-web-C2alfoC2.js +9 -0
- package/dist/index.esm.js +1001 -991
- package/dist/types/core/helpers/index.d.ts +0 -1
- package/dist/types/core/index.d.ts +1 -0
- package/dist/types/core/loaders/DaeLoader.d.ts +13 -0
- package/dist/types/core/loaders/DxfModelLoader.d.ts +21 -0
- package/dist/types/core/loaders/FbxLoader.d.ts +17 -0
- package/dist/types/core/loaders/GltfLoader.d.ts +26 -0
- package/dist/types/core/loaders/ModelLoader.d.ts +49 -0
- package/dist/types/core/loaders/ModelLoaderManager.d.ts +33 -0
- package/dist/types/core/loaders/ObjLoader.d.ts +15 -0
- package/dist/types/core/loaders/PlyLoader.d.ts +22 -0
- package/dist/types/core/loaders/RasterLoader.d.ts +13 -0
- package/dist/types/core/loaders/StlLoader.d.ts +15 -0
- package/dist/types/core/loaders/index.d.ts +11 -0
- package/dist/types/core/viewers/BaseViewer.d.ts +16 -5
- package/dist/types/core/viewers/Viewer2d.d.ts +1 -0
- package/package.json +2 -1
- package/dist/chunks/libredwg-web-DR0Rasye.js +0 -9
- package/dist/types/core/helpers/LoadingHelper.d.ts +0 -130
- package/dist/types/core/shp-js/BitView.d.ts +0 -12
- package/dist/types/core/shp-js/SHPLoader.d.ts +0 -12
- package/dist/types/core/shp-js/Shp.d.ts +0 -10
- package/dist/types/core/shp-js/ShpThree.d.ts +0 -23
- package/dist/types/core/shp-js/index.d.ts +0 -4
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class DaeLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.dae";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["dae"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private applyRequestHeader;
|
|
13
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
3
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
4
|
+
import type { DxfData, DxfLoaderConfig } from "../../core/dxf";
|
|
5
|
+
import type { FontManager } from "../../core/font";
|
|
6
|
+
export declare class DxfModelLoader extends BaseModelLoader {
|
|
7
|
+
private readonly manager?;
|
|
8
|
+
readonly id = "loader.builtin.dxf";
|
|
9
|
+
readonly priority = 0;
|
|
10
|
+
readonly formats: readonly ["dxf", "dwg"];
|
|
11
|
+
private font?;
|
|
12
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
13
|
+
setFont(font?: FontManager): void;
|
|
14
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
15
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
16
|
+
loadEx(url: string, dxfDataId?: string, onProgress?: (event: ProgressEvent) => void, onLoad?: () => void, cfg?: DxfLoaderConfig, requestHeader?: {
|
|
17
|
+
[header: string]: string;
|
|
18
|
+
}): Promise<DxfData>;
|
|
19
|
+
loadExFromBuffer(data: ArrayBuffer | Uint8Array, dxfDataId?: string, onProgress?: (event: ProgressEvent) => void, onLoad?: () => void, cfg?: DxfLoaderConfig): Promise<DxfData>;
|
|
20
|
+
private applyRequestHeader;
|
|
21
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class FbxLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.fbx";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["fbx"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
private applyUnitScaleToMeters;
|
|
15
|
+
private fixMaterials;
|
|
16
|
+
private hasSuspiciousDarkVertexColors;
|
|
17
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
/**
|
|
5
|
+
* glTF / GLB model loader wrapping GLTFLoader, DRACO path, and progress handling.
|
|
6
|
+
*/
|
|
7
|
+
export declare class GltfLoader extends BaseModelLoader {
|
|
8
|
+
private readonly manager?;
|
|
9
|
+
readonly id = "loader.builtin.gltf";
|
|
10
|
+
readonly priority = 0;
|
|
11
|
+
readonly formats: readonly ["gltf", "glb"];
|
|
12
|
+
private static dracoDecoderPath;
|
|
13
|
+
static setDracoDecoderPath(path: string): void;
|
|
14
|
+
private gltfLoader?;
|
|
15
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
16
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
17
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
18
|
+
parseToScene(data: ArrayBuffer | string, path: string, onLoad: (object: THREE.Object3D) => void, onError?: (event: ErrorEvent) => void): void;
|
|
19
|
+
private obtainLoader;
|
|
20
|
+
private applyRequestHeader;
|
|
21
|
+
private sanitizeUrlForLoad;
|
|
22
|
+
/**
|
|
23
|
+
* Filter invalid early progress events from three.js loadAsync.
|
|
24
|
+
*/
|
|
25
|
+
private wrapProgress;
|
|
26
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* Shared fields for one model load request.
|
|
4
|
+
*/
|
|
5
|
+
interface BaseModelLoadContext {
|
|
6
|
+
/** Normalized lowercase format token; same semantics as historical `endsWith` checks. */
|
|
7
|
+
readonly format: string;
|
|
8
|
+
readonly onProgress?: (event: ProgressEvent) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Context for model loading from URL.
|
|
12
|
+
*/
|
|
13
|
+
export interface ModelLoadContext extends BaseModelLoadContext {
|
|
14
|
+
readonly url: string;
|
|
15
|
+
readonly requestHeader?: {
|
|
16
|
+
[header: string]: string;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface ObjLoadContext extends ModelLoadContext {
|
|
20
|
+
readonly mtlUrls?: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Context for model loading from memory buffer.
|
|
24
|
+
*/
|
|
25
|
+
export interface ModelLoadFromBufferContext extends BaseModelLoadContext {
|
|
26
|
+
readonly data: ArrayBuffer | Uint8Array;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Pluggable model loader (strategy). Built-ins and extensions share this contract.
|
|
30
|
+
*/
|
|
31
|
+
export declare abstract class BaseModelLoader {
|
|
32
|
+
/** Stable id for unregister and diagnostics. */
|
|
33
|
+
abstract readonly id: string;
|
|
34
|
+
/** Higher runs first; use a value above built-in `0` to override built-ins. */
|
|
35
|
+
readonly priority?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Lowercase extension tokens without a leading dot (e.g. `glb`, `gltf`).
|
|
38
|
+
* Aggregated by `ModelLoaderManager.getSupportedModelFormats`; default {@link match} uses suffix checks on these entries.
|
|
39
|
+
*/
|
|
40
|
+
abstract readonly formats: readonly string[];
|
|
41
|
+
/**
|
|
42
|
+
* True when `format` (often a lowercased filename or extension token) ends with one of {@link formats}.
|
|
43
|
+
* Override for non-suffix matching.
|
|
44
|
+
*/
|
|
45
|
+
match(format: string): boolean;
|
|
46
|
+
load?(ctx: ModelLoadContext): Promise<THREE.Object3D | void>;
|
|
47
|
+
loadFromBuffer?(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D | void>;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { BaseModelLoader } from "./ModelLoader";
|
|
3
|
+
import type { FontManager } from "../../core/font";
|
|
4
|
+
export declare class ModelLoaderManager {
|
|
5
|
+
private font?;
|
|
6
|
+
private manager?;
|
|
7
|
+
/** Built-in loaders; rebuilt when {@link setLoadManager} / {@link setFont} runs. */
|
|
8
|
+
private readonly builtinLoaders;
|
|
9
|
+
/** Extension loaders (e.g. from plugins); preserved across builtin rebuilds. */
|
|
10
|
+
private readonly extensionLoaders;
|
|
11
|
+
constructor(manager?: THREE.LoadingManager);
|
|
12
|
+
register(loader: BaseModelLoader): void;
|
|
13
|
+
unregister(id: string): void;
|
|
14
|
+
private unregisterFromList;
|
|
15
|
+
private rebuildBuiltinLoaders;
|
|
16
|
+
private allLoaders;
|
|
17
|
+
/**
|
|
18
|
+
* Unique extension tokens from all registered loaders (extensions first, then built-ins), sorted.
|
|
19
|
+
*/
|
|
20
|
+
getSupportedModelFormats(): string[];
|
|
21
|
+
private createBuiltinModelLoaders;
|
|
22
|
+
private resolveModelLoader;
|
|
23
|
+
private computeUrlModelFormat;
|
|
24
|
+
private loadModelInternal;
|
|
25
|
+
private loadModelFromBufferInternal;
|
|
26
|
+
setLoadManager(manager?: THREE.LoadingManager): void;
|
|
27
|
+
loadLocalModel(url: string, src: string, onProgress?: (event: ProgressEvent) => void, mtlUrls?: string[]): Promise<THREE.Object3D>;
|
|
28
|
+
loadModel(src: string, fileFormat?: string, onProgress?: (event: ProgressEvent) => void, requestHeader?: {
|
|
29
|
+
[header: string]: string;
|
|
30
|
+
}): Promise<THREE.Object3D | void>;
|
|
31
|
+
loadModelFromBuffer(data: ArrayBuffer | Uint8Array, fileFormat: string, onProgress?: (event: ProgressEvent) => void): Promise<THREE.Object3D | void>;
|
|
32
|
+
setFont(font: FontManager): void;
|
|
33
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadFromBufferContext, ObjLoadContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class ObjLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.obj";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["obj"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ObjLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
private parseMtlUrlsFromObj;
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class PlyLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.ply";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["ply"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
/**
|
|
15
|
+
* PLYLoader always does `channel / 255` for vertex rgb. Float colors already in 0..1 become ~0.004 (near black).
|
|
16
|
+
* Also ensure normals exist so MeshStandardMaterial is lit correctly.
|
|
17
|
+
*/
|
|
18
|
+
private static preparePlyGeometry;
|
|
19
|
+
private static ensureVertexNormals;
|
|
20
|
+
private static fixVertexColorEncoding;
|
|
21
|
+
private finalizeLoadedObject;
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class RasterLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.raster";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["jpg", "jpeg", "png"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private applyRequestHeader;
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { ModelLoadContext, ModelLoadFromBufferContext } from "./ModelLoader";
|
|
3
|
+
import { BaseModelLoader } from "./ModelLoader";
|
|
4
|
+
export declare class StlLoader extends BaseModelLoader {
|
|
5
|
+
private readonly manager?;
|
|
6
|
+
readonly id = "loader.builtin.stl";
|
|
7
|
+
readonly priority = 0;
|
|
8
|
+
readonly formats: readonly ["stl"];
|
|
9
|
+
constructor(manager?: THREE.LoadingManager | undefined);
|
|
10
|
+
load(ctx: ModelLoadContext): Promise<THREE.Object3D>;
|
|
11
|
+
loadFromBuffer(ctx: ModelLoadFromBufferContext): Promise<THREE.Object3D>;
|
|
12
|
+
private static toArrayBuffer;
|
|
13
|
+
private applyRequestHeader;
|
|
14
|
+
private meshFromGeometry;
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { BaseModelLoader } from "./ModelLoader";
|
|
2
|
+
export type { ModelLoadContext, ModelLoadFromBufferContext, ObjLoadContext } from "./ModelLoader";
|
|
3
|
+
export { ModelLoaderManager } from "./ModelLoaderManager";
|
|
4
|
+
export { DaeLoader } from "./DaeLoader";
|
|
5
|
+
export { DxfModelLoader } from "./DxfModelLoader";
|
|
6
|
+
export { FbxLoader } from "./FbxLoader";
|
|
7
|
+
export { GltfLoader } from "./GltfLoader";
|
|
8
|
+
export { ObjLoader } from "./ObjLoader";
|
|
9
|
+
export { PlyLoader } from "./PlyLoader";
|
|
10
|
+
export { RasterLoader } from "./RasterLoader";
|
|
11
|
+
export { StlLoader } from "./StlLoader";
|
|
@@ -10,9 +10,9 @@ import { CanvasRender } from "../../core/canvas";
|
|
|
10
10
|
import { Container } from "../../core/components/Container";
|
|
11
11
|
import { FontManager } from "../../core/font";
|
|
12
12
|
import { ZoomToRectHelper } from "../../core/helpers";
|
|
13
|
-
import { LoadingHelper } from "../../core/helpers/LoadingHelper";
|
|
14
13
|
import { InputManager } from "../../core/input-manager";
|
|
15
14
|
import { Interaction } from "../../core/interactions/Interaction";
|
|
15
|
+
import { BaseModelLoader, ModelLoaderManager } from "../../core/loaders";
|
|
16
16
|
import { Model } from "../../core/model";
|
|
17
17
|
import { PickManager } from "../../core/pick";
|
|
18
18
|
import { SceneManager } from "../../core/scene/SceneManager";
|
|
@@ -45,7 +45,7 @@ export declare abstract class BaseViewer<BaseViewerEvents extends ViewerEvents =
|
|
|
45
45
|
protected spinner: Spinner;
|
|
46
46
|
protected progressBar?: ProgressBar;
|
|
47
47
|
protected watermark?: Watermark;
|
|
48
|
-
protected
|
|
48
|
+
protected loaderManager: ModelLoaderManager;
|
|
49
49
|
protected zoomToRectHelper?: ZoomToRectHelper;
|
|
50
50
|
protected interaction?: Interaction;
|
|
51
51
|
/**
|
|
@@ -103,9 +103,7 @@ export declare abstract class BaseViewer<BaseViewerEvents extends ViewerEvents =
|
|
|
103
103
|
protected animate(timeStamp?: number): void;
|
|
104
104
|
resize(): void;
|
|
105
105
|
/**
|
|
106
|
-
*
|
|
107
|
-
* Draco decoder will be used if a model is draco encoded.
|
|
108
|
-
* @param decoderPath e.g., "libs/draco/gltf/"
|
|
106
|
+
* @deprecated use GltfLoader.setDracoDecoderPath instead
|
|
109
107
|
* @hidden
|
|
110
108
|
*/
|
|
111
109
|
setDracoDecoderPath(path: string): void;
|
|
@@ -243,5 +241,18 @@ export declare abstract class BaseViewer<BaseViewerEvents extends ViewerEvents =
|
|
|
243
241
|
* Finds a Plugin.
|
|
244
242
|
*/
|
|
245
243
|
findPlugin(id: string): Plugin | undefined;
|
|
244
|
+
/**
|
|
245
|
+
* Adds a model format loader (typically from a plugin).
|
|
246
|
+
* Extension loaders are kept when the viewer refreshes built-in loaders (font / loading manager changes).
|
|
247
|
+
*/
|
|
248
|
+
addModelLoader(loader: BaseModelLoader): void;
|
|
249
|
+
/**
|
|
250
|
+
* Removes a previously added extension loader by id.
|
|
251
|
+
*/
|
|
252
|
+
removeModelLoader(id: string): void;
|
|
253
|
+
/**
|
|
254
|
+
* Extension tokens (e.g. `glb`, `dxf`) supported by the current model loader stack, including plugins.
|
|
255
|
+
*/
|
|
256
|
+
getSupportedModelFormats(): string[];
|
|
246
257
|
}
|
|
247
258
|
export {};
|
|
@@ -209,6 +209,7 @@ export declare class Viewer2d extends BaseViewer {
|
|
|
209
209
|
*/
|
|
210
210
|
parseFile(modelCfg: Model2dConfig, onProgress?: ((event: ProgressEvent<EventTarget>) => void) | undefined): Promise<DxfData>;
|
|
211
211
|
addModel(model: Model2d): void;
|
|
212
|
+
private createDxfModelLoader;
|
|
212
213
|
setObjectHighlight(object: THREE.Object3D): void;
|
|
213
214
|
setObjectUnHighlight(object: THREE.Object3D): void;
|
|
214
215
|
clearHighlight(): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x-viewer/core",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.8",
|
|
4
4
|
"homepage": "https://dwg.thingraph.site/",
|
|
5
5
|
"description": "WebGL-based 2D/3D viewer engine built on Three.js. View DWG/DXF/PDF files in the browser with no server required. Supports glTF, OBJ, FBX, IFC, STL and BimTiles formats.",
|
|
6
6
|
"author": "thingraph",
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"types": "dist/types/index.d.ts",
|
|
57
57
|
"scripts": {
|
|
58
58
|
"build": "pnpm run clean:build && pnpm run data-type && rollup -c --environment BUILD:production",
|
|
59
|
+
"build:dev": "cross-env OBFUSCATE=false pnpm run build",
|
|
59
60
|
"clean:build": "rimraf ./dist",
|
|
60
61
|
"data-type": "tsc --project tsconfig.bundle.json && tsc-alias -p tsconfig.bundle.json",
|
|
61
62
|
"dev": "pnpm run data-type && rollup -c -w",
|