@blendviewer/vision-scope 0.1.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/README.md +95 -0
- package/dist/index.js +187288 -0
- package/dist/nestcad-envmaps/citadella/negx.jpg +0 -0
- package/dist/nestcad-envmaps/citadella/negy.jpg +0 -0
- package/dist/nestcad-envmaps/citadella/negz.jpg +0 -0
- package/dist/nestcad-envmaps/citadella/posx.jpg +0 -0
- package/dist/nestcad-envmaps/citadella/posy.jpg +0 -0
- package/dist/nestcad-envmaps/citadella/posz.jpg +0 -0
- package/dist/nestcad-envmaps/citadella/readme.txt +13 -0
- package/dist/nestcad-envmaps/citadella.jpg +0 -0
- package/dist/nestcad-envmaps/fishermans_bastion/negx.jpg +0 -0
- package/dist/nestcad-envmaps/fishermans_bastion/negy.jpg +0 -0
- package/dist/nestcad-envmaps/fishermans_bastion/negz.jpg +0 -0
- package/dist/nestcad-envmaps/fishermans_bastion/posx.jpg +0 -0
- package/dist/nestcad-envmaps/fishermans_bastion/posy.jpg +0 -0
- package/dist/nestcad-envmaps/fishermans_bastion/posz.jpg +0 -0
- package/dist/nestcad-envmaps/fishermans_bastion/readme.txt +13 -0
- package/dist/nestcad-envmaps/fishermans_bastion.jpg +0 -0
- package/dist/nestcad-envmaps/ice_river/negx.jpg +0 -0
- package/dist/nestcad-envmaps/ice_river/negy.jpg +0 -0
- package/dist/nestcad-envmaps/ice_river/negz.jpg +0 -0
- package/dist/nestcad-envmaps/ice_river/posx.jpg +0 -0
- package/dist/nestcad-envmaps/ice_river/posy.jpg +0 -0
- package/dist/nestcad-envmaps/ice_river/posz.jpg +0 -0
- package/dist/nestcad-envmaps/ice_river/readme.txt +13 -0
- package/dist/nestcad-envmaps/ice_river.jpg +0 -0
- package/dist/nestcad-envmaps/maskonaive/negx.jpg +0 -0
- package/dist/nestcad-envmaps/maskonaive/negy.jpg +0 -0
- package/dist/nestcad-envmaps/maskonaive/negz.jpg +0 -0
- package/dist/nestcad-envmaps/maskonaive/posx.jpg +0 -0
- package/dist/nestcad-envmaps/maskonaive/posy.jpg +0 -0
- package/dist/nestcad-envmaps/maskonaive/posz.jpg +0 -0
- package/dist/nestcad-envmaps/maskonaive/readme.txt +13 -0
- package/dist/nestcad-envmaps/maskonaive.jpg +0 -0
- package/dist/nestcad-envmaps/noimage.jpg +0 -0
- package/dist/nestcad-envmaps/park/1.png +0 -0
- package/dist/nestcad-envmaps/park/2.png +0 -0
- package/dist/nestcad-envmaps/park/3.png +0 -0
- package/dist/nestcad-envmaps/park/4.png +0 -0
- package/dist/nestcad-envmaps/park/5.png +0 -0
- package/dist/nestcad-envmaps/park/6.png +0 -0
- package/dist/nestcad-envmaps/park/7.png +0 -0
- package/dist/nestcad-envmaps/park/negx.jpg +0 -0
- package/dist/nestcad-envmaps/park/negy.jpg +0 -0
- package/dist/nestcad-envmaps/park/negz.jpg +0 -0
- package/dist/nestcad-envmaps/park/posx.jpg +0 -0
- package/dist/nestcad-envmaps/park/posy.jpg +0 -0
- package/dist/nestcad-envmaps/park/posz.jpg +0 -0
- package/dist/nestcad-envmaps/park/readme.txt +13 -0
- package/dist/nestcad-envmaps/park.jpg +0 -0
- package/dist/nestcad-envmaps/teide/negx.jpg +0 -0
- package/dist/nestcad-envmaps/teide/negy.jpg +0 -0
- package/dist/nestcad-envmaps/teide/negz.jpg +0 -0
- package/dist/nestcad-envmaps/teide/posx.jpg +0 -0
- package/dist/nestcad-envmaps/teide/posy.jpg +0 -0
- package/dist/nestcad-envmaps/teide/posz.jpg +0 -0
- package/dist/nestcad-envmaps/teide/readme.txt +13 -0
- package/dist/nestcad-envmaps/teide.jpg +0 -0
- package/dist/nestcad-loaders/draco.license.md +252 -0
- package/dist/nestcad-loaders/draco_decoder.js +118 -0
- package/dist/nestcad-loaders/draco_decoder.wasm +0 -0
- package/dist/nestcad-loaders/occt-import-js-worker.js +15 -0
- package/dist/nestcad-loaders/occt-import-js.js +21 -0
- package/dist/nestcad-loaders/occt-import-js.license.md +504 -0
- package/dist/nestcad-loaders/occt-import-js.wasm +0 -0
- package/dist/nestcad-loaders/rhino3dm.license.md +21 -0
- package/dist/nestcad-loaders/rhino3dm.min.js +21 -0
- package/dist/nestcad-loaders/rhino3dm.wasm +0 -0
- package/dist/nestcad-loaders/web-ifc-api-browser.js +54925 -0
- package/dist/nestcad-loaders/web-ifc.license.md +375 -0
- package/dist/nestcad-loaders/web-ifc.wasm +0 -0
- package/dist/samples/.gitkeep +3 -0
- package/dist/samples/config-sample.json +6 -0
- package/dist/samples/logo-sample.svg +4 -0
- package/dist/samples/readme-sample.md +10 -0
- package/dist/styles/archive.css +431 -0
- package/dist/styles/code.css +119 -0
- package/dist/styles/document.css +1158 -0
- package/dist/styles/image.css +77 -0
- package/dist/styles/loading.css +124 -0
- package/dist/styles/media.css +99 -0
- package/dist/styles/native-three.css +54 -0
- package/dist/styles/spatial.css +39 -0
- package/dist/styles/tabular.css +157 -0
- package/dist/ui-styles/ui.css +1171 -0
- package/dist/vision-scope.css +1 -0
- package/package.json +80 -0
package/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# @blendviewer/vision-scope
|
|
2
|
+
|
|
3
|
+
Universal file viewer SDK — detect file types and render images, media, code, documents, archives, textures, and 3D spatial assets.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @blendviewer/vision-scope
|
|
9
|
+
# or
|
|
10
|
+
yarn add @blendviewer/vision-scope
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @blendviewer/vision-scope
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
### Basic Example
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
import { VisionScope } from '@blendviewer/vision-scope';
|
|
21
|
+
import '@blendviewer/vision-scope/styles.css'; // Required: CSS is not injected automatically
|
|
22
|
+
|
|
23
|
+
const scope = new VisionScope({
|
|
24
|
+
container: document.getElementById('viewer'), // or a selector like '#viewer'
|
|
25
|
+
ui: true,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Load a file by URL or file
|
|
29
|
+
await scope.load('https://example.com/path/to/file.glb');
|
|
30
|
+
// await scope.load('/path/to/file.glb');
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Live Demo
|
|
34
|
+
|
|
35
|
+
Try the live playground: **[vision-scope.blendviewer.com](https://vision-scope.blendviewer.com)**
|
|
36
|
+
|
|
37
|
+
- [PDF Document](https://vision-scope.blendviewer.com/?file=https://oss.blendviewer.com/public/788d77d0-1d49-11ef-861a-b3174c760332/math/9912/9912227v2.pdf)
|
|
38
|
+
- [3D Model (GLB)](https://vision-scope.blendviewer.com/?file=https://oss.blendviewer.com/public/57f41350-1e82-11ef-b5e1-03b42f41a1d3/bee.glb)
|
|
39
|
+
|
|
40
|
+
Share links with `?file=` query parameters, for example:
|
|
41
|
+
|
|
42
|
+
- `https://your-domain.example/?file=./dist/samples/readme-sample.md`
|
|
43
|
+
- `https://your-domain.example/?file=https://oss.blendviewer.com/public/57f41350-1e82-11ef-b5e1-03b42f41a1d3/bee.glb`
|
|
44
|
+
|
|
45
|
+
_(Note: Ensure CORS is enabled on the target server if loading your own remote URLs)._
|
|
46
|
+
|
|
47
|
+
## Supported File Types
|
|
48
|
+
|
|
49
|
+
Vision Scope comes with built-in renderers for a wide variety of file formats:
|
|
50
|
+
|
|
51
|
+
- **Images**: `jpg`, `jpeg`, `png`, `webp`, `gif`, `bmp`, `tif`, `tiff`, `svg`
|
|
52
|
+
- **3D Spatial / Models**: `glb`, `gltf`, `fbx`, `obj`, `stl`, `3ds`, `3dm`, `3mf`, `dae`, `amf`, `bvh`, `drc`, `gcode`, `ifc`, `kmz`, `lwo`, `md2`, `mdd`, `mmd`, `pmx`, `mpd`, `nrrd`, `pdb`, `tilt`, `ttf`, `usdz`, `vox`, `vrml`, `wrl`, `vtk`, `xyz`
|
|
53
|
+
- **CAD**: `dwg`, `dxf`
|
|
54
|
+
- **Point Cloud**: `pcd`, `ply`, `las`
|
|
55
|
+
- **GPU Textures**: `ktx2`, `basis`
|
|
56
|
+
- **Documents**: `pdf`, `docx`, `doc`, `pptx`, `ppt`, `txt`, `md`
|
|
57
|
+
- **Tabular / Spreadsheets**: `csv`, `tsv`, `xlsx`, `xls`, `ods`
|
|
58
|
+
- **Media (Video/Audio)**: `mp4`, `webm`, `avi`, `mov`, `mkv`, `mp3`, `wav`, `flac`, `aac`, `ogg`
|
|
59
|
+
- **Code & Text**: `js`, `ts`, `jsx`, `tsx`, `py`, `java`, `go`, `rs`, `c`, `cpp`, `html`, `css`, `json`, `yaml`, `xml`, `sql`, `sh`, `dockerfile`, and many more.
|
|
60
|
+
- **Archives**: `zip`, `rar`, `7z`, `tar`, `gz` (with inner file type detection, e.g., `model.glb.zip`)
|
|
61
|
+
|
|
62
|
+
## Scope Extensions (Plugins)
|
|
63
|
+
|
|
64
|
+
Vision Hub plugins can extend file preview capabilities beyond built-in types. You can export an extension from your plugin module:
|
|
65
|
+
|
|
66
|
+
```javascript
|
|
67
|
+
export const scopeExtension = {
|
|
68
|
+
id: 'com.example.my-viewer',
|
|
69
|
+
extensions: ['h5', 'hdf5'],
|
|
70
|
+
mountPreview(container, context) {
|
|
71
|
+
// context.url, context.filename, context.readOnly, etc.
|
|
72
|
+
// Initialize your custom viewer here
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
destroy() {
|
|
76
|
+
// Cleanup resources when the viewer is unmounted
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Register the extension at runtime:
|
|
84
|
+
|
|
85
|
+
```javascript
|
|
86
|
+
import { VisionScope } from '@blendviewer/vision-scope';
|
|
87
|
+
|
|
88
|
+
// Register a static extension object
|
|
89
|
+
VisionScope.registerExtension(scopeExtension);
|
|
90
|
+
|
|
91
|
+
// Or register via dynamic import
|
|
92
|
+
await VisionScope.registerExtensionModule(() => import('./path/to/plugin.js'));
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Built-in routing uses a file type detector first; unknown extensions fall through to the extension registry.
|