@chemistry/crystalview 1.0.9 → 3.1.1
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/LICENSE +1 -1
- package/README.md +61 -31
- package/dist/{src/camera → camera}/Camera.d.ts +69 -63
- package/dist/camera/Camera.d.ts.map +1 -0
- package/dist/camera/Camera.js +257 -0
- package/dist/camera/Camera.js.map +1 -0
- package/dist/camera/ICamera.d.ts +9 -0
- package/dist/camera/ICamera.d.ts.map +1 -0
- package/dist/camera/ICamera.js +2 -0
- package/dist/camera/ICamera.js.map +1 -0
- package/dist/{src/crystal-view.d.ts → crystal-view.d.ts} +25 -24
- package/dist/crystal-view.d.ts.map +1 -0
- package/dist/crystal-view.js +181 -0
- package/dist/crystal-view.js.map +1 -0
- package/dist/crystalview.css +47 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Atom.d.ts +14 -13
- package/dist/molecule3d/Atom.d.ts.map +1 -0
- package/dist/molecule3d/Atom.js +19 -0
- package/dist/molecule3d/Atom.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Bond.d.ts +8 -7
- package/dist/molecule3d/Bond.d.ts.map +1 -0
- package/dist/molecule3d/Bond.js +11 -0
- package/dist/molecule3d/Bond.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/CellAtom.d.ts +96 -96
- package/dist/molecule3d/CellAtom.d.ts.map +1 -0
- package/dist/molecule3d/CellAtom.js +132 -0
- package/dist/molecule3d/CellAtom.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Link.d.ts +15 -14
- package/dist/molecule3d/Link.d.ts.map +1 -0
- package/dist/molecule3d/Link.js +17 -0
- package/dist/molecule3d/Link.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Marker.d.ts +9 -8
- package/dist/molecule3d/Marker.d.ts.map +1 -0
- package/dist/molecule3d/Marker.js +11 -0
- package/dist/molecule3d/Marker.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/MarkerContact.d.ts +7 -6
- package/dist/molecule3d/MarkerContact.d.ts.map +1 -0
- package/dist/molecule3d/MarkerContact.js +9 -0
- package/dist/molecule3d/MarkerContact.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/Molecule3D.d.ts +45 -44
- package/dist/molecule3d/Molecule3D.d.ts.map +1 -0
- package/dist/molecule3d/Molecule3D.js +139 -0
- package/dist/molecule3d/Molecule3D.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/MoleculeBuilder.d.ts +20 -19
- package/dist/molecule3d/MoleculeBuilder.d.ts.map +1 -0
- package/dist/molecule3d/MoleculeBuilder.js +131 -0
- package/dist/molecule3d/MoleculeBuilder.js.map +1 -0
- package/dist/molecule3d/MoleculeConnector.d.ts +10 -0
- package/dist/molecule3d/MoleculeConnector.d.ts.map +1 -0
- package/dist/molecule3d/MoleculeConnector.js +107 -0
- package/dist/molecule3d/MoleculeConnector.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/UnitCell.d.ts +36 -35
- package/dist/molecule3d/UnitCell.d.ts.map +1 -0
- package/dist/molecule3d/UnitCell.js +238 -0
- package/dist/molecule3d/UnitCell.js.map +1 -0
- package/dist/molecule3d/io/IMoleculeReader.d.ts +8 -0
- package/dist/molecule3d/io/IMoleculeReader.d.ts.map +1 -0
- package/dist/molecule3d/io/IMoleculeReader.js +2 -0
- package/dist/molecule3d/io/IMoleculeReader.js.map +1 -0
- package/dist/{src/molecule3d → molecule3d}/io/MoleculeReaderJCIF.d.ts +12 -11
- package/dist/molecule3d/io/MoleculeReaderJCIF.d.ts.map +1 -0
- package/dist/molecule3d/io/MoleculeReaderJCIF.js +115 -0
- package/dist/molecule3d/io/MoleculeReaderJCIF.js.map +1 -0
- package/dist/{src/painter → painter}/CanvasContext.d.ts +15 -14
- package/dist/painter/CanvasContext.d.ts.map +1 -0
- package/dist/painter/CanvasContext.js +68 -0
- package/dist/painter/CanvasContext.js.map +1 -0
- package/dist/painter/Painter.d.ts +36 -0
- package/dist/painter/Painter.d.ts.map +1 -0
- package/dist/painter/Painter.js +237 -0
- package/dist/painter/Painter.js.map +1 -0
- package/dist/ui/ContextMenu.d.ts +24 -0
- package/dist/ui/ContextMenu.d.ts.map +1 -0
- package/dist/ui/ContextMenu.js +147 -0
- package/dist/ui/ContextMenu.js.map +1 -0
- package/dist/{src/ui → ui}/ContextMenuItem.d.ts +18 -17
- package/dist/ui/ContextMenuItem.d.ts.map +1 -0
- package/dist/ui/ContextMenuItem.js +72 -0
- package/dist/ui/ContextMenuItem.js.map +1 -0
- package/package.json +68 -87
- package/dist/crystal-view.min.js +0 -24
- package/dist/src/molecule3d/MoleculeConnector.d.ts +0 -9
- package/dist/src/painter/Painter.d.ts +0 -35
- package/dist/src/ui/ContextMenu.d.ts +0 -24
- package/package-lock.json +0 -9410
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,42 +1,72 @@
|
|
|
1
1
|
# CrystalView
|
|
2
|
+
|
|
2
3
|
[](https://github.com/chemistry/crystalview/actions?query=workflow%3ACI)
|
|
3
|
-
[](https://www.npmjs.com/package/@chemistry/crystalview)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
|
|
7
|
+
Crystal structure visualization library for the browser. Renders 3D molecular and crystal structures on an HTML5 canvas.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @chemistry/crystalview
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { Mol3DView } from '@chemistry/crystalview';
|
|
21
|
+
import '@chemistry/crystalview/crystalview.css';
|
|
22
|
+
|
|
23
|
+
const container = document.getElementById('viewer')!;
|
|
24
|
+
|
|
25
|
+
const viewer = new Mol3DView({ bgcolor: '#2b303b' });
|
|
26
|
+
viewer.append(container);
|
|
27
|
+
viewer.onInit();
|
|
28
|
+
viewer.load(structureData);
|
|
25
29
|
```
|
|
26
30
|
|
|
27
|
-
##
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
## Tech Stack
|
|
32
|
+
|
|
33
|
+
- TypeScript 5.9, ES2024 target, ESM
|
|
34
|
+
- Vitest for testing, 70%+ coverage
|
|
35
|
+
- ESLint 10 (flat config) + Prettier
|
|
36
|
+
- Native `tsc` build (no bundler)
|
|
37
|
+
- Node.js 22+
|
|
38
|
+
|
|
39
|
+
## Commands
|
|
40
|
+
|
|
41
|
+
| Command | Description |
|
|
42
|
+
| ---------------------- | ------------------------------------------------------------- |
|
|
43
|
+
| `npm run build` | Build the library |
|
|
44
|
+
| `npm run test` | Run unit tests |
|
|
45
|
+
| `npm run lint` | Run ESLint |
|
|
46
|
+
| `npm run format:check` | Check Prettier formatting |
|
|
47
|
+
| `npm run type-check` | Run TypeScript type checking |
|
|
48
|
+
| `npm run verify` | Full verification (type-check + lint + format + test + build) |
|
|
49
|
+
|
|
50
|
+
## Showcase App
|
|
51
|
+
|
|
52
|
+
A Vite-based demo is available in `showcase/`:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
cd showcase
|
|
56
|
+
npm install
|
|
57
|
+
npm run dev
|
|
58
|
+
```
|
|
33
59
|
|
|
34
60
|
## Release
|
|
61
|
+
|
|
35
62
|
```bash
|
|
36
|
-
git tag
|
|
63
|
+
git tag v3.0.1
|
|
37
64
|
git push --tags
|
|
38
65
|
```
|
|
39
66
|
|
|
67
|
+
The `release.yml` GitHub Action will publish to npm and create a GitHub Release automatically.
|
|
68
|
+
|
|
40
69
|
## License
|
|
41
|
-
|
|
42
|
-
|
|
70
|
+
|
|
71
|
+
This project is licensed under the MIT license, Copyright (c) 2026 Volodymyr Vreshch.
|
|
72
|
+
For more information see [LICENSE](https://github.com/chemistry/crystalview/blob/master/LICENSE).
|
|
@@ -1,63 +1,69 @@
|
|
|
1
|
-
import { Vec3 } from
|
|
2
|
-
import { ICamera } from
|
|
3
|
-
export declare class Camera implements ICamera {
|
|
4
|
-
private element;
|
|
5
|
-
/**
|
|
6
|
-
* RootationMatrix
|
|
7
|
-
*/
|
|
8
|
-
private rootation;
|
|
9
|
-
/**
|
|
10
|
-
* TranSlation Matrix
|
|
11
|
-
*/
|
|
12
|
-
private translation;
|
|
13
|
-
private projectionMatrix;
|
|
14
|
-
private unprojectionMatrix;
|
|
15
|
-
private mouseCapture;
|
|
16
|
-
private mouseBegin;
|
|
17
|
-
private mouseLast;
|
|
18
|
-
private mouseCurrent;
|
|
19
|
-
private mouseClick;
|
|
20
|
-
private width;
|
|
21
|
-
private height;
|
|
22
|
-
private onRedrawCallBack;
|
|
23
|
-
private onClickCallBack;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
private
|
|
50
|
-
private
|
|
51
|
-
private
|
|
52
|
-
private
|
|
53
|
-
private
|
|
54
|
-
private
|
|
55
|
-
private
|
|
56
|
-
private
|
|
57
|
-
private
|
|
58
|
-
private
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
private
|
|
63
|
-
|
|
1
|
+
import { Vec3 } from '@chemistry/math';
|
|
2
|
+
import { ICamera } from './ICamera.js';
|
|
3
|
+
export declare class Camera implements ICamera {
|
|
4
|
+
private element;
|
|
5
|
+
/**
|
|
6
|
+
* RootationMatrix
|
|
7
|
+
*/
|
|
8
|
+
private rootation;
|
|
9
|
+
/**
|
|
10
|
+
* TranSlation Matrix
|
|
11
|
+
*/
|
|
12
|
+
private translation;
|
|
13
|
+
private projectionMatrix;
|
|
14
|
+
private unprojectionMatrix;
|
|
15
|
+
private mouseCapture;
|
|
16
|
+
private mouseBegin;
|
|
17
|
+
private mouseLast;
|
|
18
|
+
private mouseCurrent;
|
|
19
|
+
private mouseClick;
|
|
20
|
+
private width;
|
|
21
|
+
private height;
|
|
22
|
+
private onRedrawCallBack;
|
|
23
|
+
private onClickCallBack;
|
|
24
|
+
private boundMouseDown;
|
|
25
|
+
private boundMouseUp;
|
|
26
|
+
private boundMouseLeave;
|
|
27
|
+
private boundMouseMove;
|
|
28
|
+
private boundWheel;
|
|
29
|
+
constructor(options: {
|
|
30
|
+
element: HTMLElement;
|
|
31
|
+
onRedraw: () => void;
|
|
32
|
+
onClick: (x: number, y: number) => void;
|
|
33
|
+
});
|
|
34
|
+
onInit(): void;
|
|
35
|
+
onDestroy(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Transform from 3D coordinates to Screen coordinates
|
|
38
|
+
*/
|
|
39
|
+
project(position: Vec3): Vec3;
|
|
40
|
+
/**
|
|
41
|
+
* Transform screen coordinates to 3D coords
|
|
42
|
+
*/
|
|
43
|
+
unproject(position: Vec3): Vec3;
|
|
44
|
+
extractScale(): number;
|
|
45
|
+
/**
|
|
46
|
+
* Set Transformation scale and Rootation center
|
|
47
|
+
*/
|
|
48
|
+
setCameraView(scale: number, center: Vec3): void;
|
|
49
|
+
private attachLiseners;
|
|
50
|
+
private _mousedown;
|
|
51
|
+
private _mouseup;
|
|
52
|
+
private _mouseleave;
|
|
53
|
+
private _mousemove;
|
|
54
|
+
private _mousewheel;
|
|
55
|
+
private processMouseClick;
|
|
56
|
+
private processMouseMove;
|
|
57
|
+
private mouseRootate_XYZ;
|
|
58
|
+
private mouseRootateXY;
|
|
59
|
+
private mouseTranslate;
|
|
60
|
+
private mouseZoom;
|
|
61
|
+
private whellZoom;
|
|
62
|
+
private detachLiseners;
|
|
63
|
+
private onRedraw;
|
|
64
|
+
/**
|
|
65
|
+
* Init projection Matrixes
|
|
66
|
+
*/
|
|
67
|
+
private initMatrixes;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=Camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../src/camera/Camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,OAAO,CAAc;IAC7B;;OAEG;IACH,OAAO,CAAC,SAAS,CAAc;IAE/B;;OAEG;IACH,OAAO,CAAC,WAAW,CAAc;IAGjC,OAAO,CAAC,gBAAgB,CAAe;IAEvC,OAAO,CAAC,kBAAkB,CAAe;IAGzC,OAAO,CAAC,YAAY,CAAU;IAE9B,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO,CAAC,YAAY,CAAY;IAEhC,OAAO,CAAC,UAAU,CAAU;IAE5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,eAAe,CAAiC;IAExD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,UAAU,CAA8B;gBAEpC,OAAO,EAAE;QACnB,OAAO,EAAE,WAAW,CAAC;QACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KACzC;IAwCM,MAAM,IAAI,IAAI;IAMd,SAAS,IAAI,IAAI;IAIxB;;OAEG;IACI,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAIpC;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI;IAI/B,YAAY,IAAI,MAAM;IAI7B;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI;IAQhD,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,QAAQ;IAMhB;;OAEG;IACH,OAAO,CAAC,YAAY;CAIrB"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { Transform3D, Vec3 } from '@chemistry/math';
|
|
2
|
+
const radStep = 0.012;
|
|
3
|
+
export class Camera {
|
|
4
|
+
element;
|
|
5
|
+
/**
|
|
6
|
+
* RootationMatrix
|
|
7
|
+
*/
|
|
8
|
+
rootation;
|
|
9
|
+
/**
|
|
10
|
+
* TranSlation Matrix
|
|
11
|
+
*/
|
|
12
|
+
translation;
|
|
13
|
+
// projection matrix
|
|
14
|
+
projectionMatrix;
|
|
15
|
+
// unproject matrix
|
|
16
|
+
unprojectionMatrix;
|
|
17
|
+
// Mose click captured ?
|
|
18
|
+
mouseCapture;
|
|
19
|
+
// Click mouse position;
|
|
20
|
+
mouseBegin;
|
|
21
|
+
// Mouse position of last transformation
|
|
22
|
+
mouseLast;
|
|
23
|
+
// mouse current position
|
|
24
|
+
mouseCurrent;
|
|
25
|
+
// mouse btn click flag
|
|
26
|
+
mouseClick;
|
|
27
|
+
width;
|
|
28
|
+
height;
|
|
29
|
+
onRedrawCallBack;
|
|
30
|
+
onClickCallBack;
|
|
31
|
+
boundMouseDown;
|
|
32
|
+
boundMouseUp;
|
|
33
|
+
boundMouseLeave;
|
|
34
|
+
boundMouseMove;
|
|
35
|
+
boundWheel;
|
|
36
|
+
constructor(options) {
|
|
37
|
+
this.element = options.element;
|
|
38
|
+
const scale = 20;
|
|
39
|
+
const center = new Vec3(0, 0, 0);
|
|
40
|
+
this.mouseCapture = false;
|
|
41
|
+
this.mouseClick = false;
|
|
42
|
+
this.rootation = Transform3D.fromScale(scale);
|
|
43
|
+
this.translation = Transform3D.fromTranslation(center);
|
|
44
|
+
// viewport size
|
|
45
|
+
this.width = this.element.clientWidth;
|
|
46
|
+
this.height = this.element.clientHeight;
|
|
47
|
+
this.onRedrawCallBack = options.onRedraw;
|
|
48
|
+
this.onClickCallBack = options.onClick;
|
|
49
|
+
// Create bound handlers for proper cleanup
|
|
50
|
+
this.boundMouseDown = (event) => {
|
|
51
|
+
this._mousedown(event);
|
|
52
|
+
};
|
|
53
|
+
this.boundMouseUp = (event) => {
|
|
54
|
+
this._mouseup(event);
|
|
55
|
+
};
|
|
56
|
+
this.boundMouseLeave = (event) => {
|
|
57
|
+
this._mouseleave(event);
|
|
58
|
+
};
|
|
59
|
+
this.boundMouseMove = (event) => {
|
|
60
|
+
this._mousemove(event);
|
|
61
|
+
};
|
|
62
|
+
this.boundWheel = (event) => {
|
|
63
|
+
this._mousewheel(event);
|
|
64
|
+
};
|
|
65
|
+
// Attach liseners
|
|
66
|
+
this.attachLiseners();
|
|
67
|
+
this.initMatrixes();
|
|
68
|
+
}
|
|
69
|
+
onInit() {
|
|
70
|
+
// Attach liseners
|
|
71
|
+
this.attachLiseners();
|
|
72
|
+
this.initMatrixes();
|
|
73
|
+
}
|
|
74
|
+
onDestroy() {
|
|
75
|
+
this.detachLiseners();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Transform from 3D coordinates to Screen coordinates
|
|
79
|
+
*/
|
|
80
|
+
project(position) {
|
|
81
|
+
return this.projectionMatrix.project(position);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Transform screen coordinates to 3D coords
|
|
85
|
+
*/
|
|
86
|
+
unproject(position) {
|
|
87
|
+
return this.unprojectionMatrix.project(position);
|
|
88
|
+
}
|
|
89
|
+
extractScale() {
|
|
90
|
+
return this.rootation.extractScale();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Set Transformation scale and Rootation center
|
|
94
|
+
*/
|
|
95
|
+
setCameraView(scale, center) {
|
|
96
|
+
this.rootation = Transform3D.fromScale(scale);
|
|
97
|
+
this.translation = Transform3D.fromTranslation(center.scale(-1));
|
|
98
|
+
// reset projection matrix
|
|
99
|
+
this.initMatrixes();
|
|
100
|
+
}
|
|
101
|
+
attachLiseners() {
|
|
102
|
+
this.element.addEventListener('mousedown', this.boundMouseDown);
|
|
103
|
+
this.element.addEventListener('mouseup', this.boundMouseUp);
|
|
104
|
+
this.element.addEventListener('mouseleave', this.boundMouseLeave);
|
|
105
|
+
this.element.addEventListener('mousemove', this.boundMouseMove);
|
|
106
|
+
this.element.addEventListener('wheel', this.boundWheel);
|
|
107
|
+
}
|
|
108
|
+
_mousedown(event) {
|
|
109
|
+
this.mouseCapture = true;
|
|
110
|
+
this.mouseClick = true;
|
|
111
|
+
this.mouseBegin = [event.offsetX, event.offsetY];
|
|
112
|
+
this.mouseCurrent = [event.offsetX, event.offsetY];
|
|
113
|
+
this.mouseLast = [event.offsetX, event.offsetY];
|
|
114
|
+
}
|
|
115
|
+
_mouseup(event) {
|
|
116
|
+
if (!this.mouseCapture) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
this.mouseCapture = false;
|
|
120
|
+
this.mouseCurrent = [event.offsetX, event.offsetY];
|
|
121
|
+
if (this.mouseClick) {
|
|
122
|
+
this.processMouseClick(event.offsetX, event.offsetY, event.which);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
this.processMouseMove(event.shiftKey, event.ctrlKey, event.which);
|
|
126
|
+
}
|
|
127
|
+
this.mouseLast = [event.offsetX, event.offsetY];
|
|
128
|
+
this.mouseClick = false;
|
|
129
|
+
}
|
|
130
|
+
_mouseleave(event) {
|
|
131
|
+
if (!this.mouseCapture) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.mouseCapture = false;
|
|
135
|
+
this.mouseCurrent = [event.offsetX, event.offsetY];
|
|
136
|
+
this.processMouseMove(event.shiftKey, event.ctrlKey, event.which);
|
|
137
|
+
this.mouseLast = [event.offsetX, event.offsetY];
|
|
138
|
+
}
|
|
139
|
+
_mousemove(event) {
|
|
140
|
+
if (!this.mouseCapture) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
this.mouseCurrent = [event.offsetX, event.offsetY];
|
|
144
|
+
this.processMouseMove(event.shiftKey, event.ctrlKey, event.which);
|
|
145
|
+
this.mouseLast = [event.offsetX, event.offsetY];
|
|
146
|
+
event.preventDefault();
|
|
147
|
+
}
|
|
148
|
+
_mousewheel(event) {
|
|
149
|
+
this.whellZoom(event);
|
|
150
|
+
this.initMatrixes();
|
|
151
|
+
this.onRedraw();
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
}
|
|
154
|
+
processMouseClick(offsetX, offsetY, which) {
|
|
155
|
+
if (which === 1 && this.onClickCallBack) {
|
|
156
|
+
this.onClickCallBack(offsetX, offsetY);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
processMouseMove(shiftKey, ctrlKey, which) {
|
|
160
|
+
if (this.mouseCurrent[1] === this.mouseCurrent[0] &&
|
|
161
|
+
this.mouseLast[1] === this.mouseCurrent[1]) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// skeep if it's mouse Click
|
|
165
|
+
if (Math.abs(this.mouseBegin[0] - this.mouseCurrent[0]) < 6 &&
|
|
166
|
+
Math.abs(this.mouseBegin[2] - this.mouseCurrent[2]) < 6 &&
|
|
167
|
+
this.mouseClick) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
this.mouseClick = false;
|
|
171
|
+
switch (true) {
|
|
172
|
+
case shiftKey || which === 2:
|
|
173
|
+
// Translate
|
|
174
|
+
this.mouseTranslate();
|
|
175
|
+
break;
|
|
176
|
+
case ctrlKey || which === 3:
|
|
177
|
+
// zoom
|
|
178
|
+
// mouseZoom.call(this);
|
|
179
|
+
break;
|
|
180
|
+
default:
|
|
181
|
+
// Rotate 3D
|
|
182
|
+
this.mouseRootate_XYZ();
|
|
183
|
+
// callDefaultAction.call(this);
|
|
184
|
+
}
|
|
185
|
+
this.initMatrixes();
|
|
186
|
+
this.onRedraw();
|
|
187
|
+
}
|
|
188
|
+
mouseRootate_XYZ() {
|
|
189
|
+
const dx = this.mouseLast[0] - this.mouseCurrent[0]; // = [0,0];
|
|
190
|
+
const dy = this.mouseLast[1] - this.mouseCurrent[1];
|
|
191
|
+
let t = Transform3D.fromScale(1);
|
|
192
|
+
let axis = new Vec3(0, 1, 0);
|
|
193
|
+
t = t.rotate(axis, dx * radStep);
|
|
194
|
+
axis = new Vec3(1, 0, 0);
|
|
195
|
+
t = t.rotate(axis, -dy * radStep);
|
|
196
|
+
const m = Transform3D.fromMultiplication(this.rootation, t);
|
|
197
|
+
this.rootation = m;
|
|
198
|
+
}
|
|
199
|
+
mouseRootateXY() {
|
|
200
|
+
const dy = this.mouseLast[1] - this.mouseCurrent[1];
|
|
201
|
+
let t = Transform3D.fromScale(1);
|
|
202
|
+
const axis = new Vec3(0, 0, 1);
|
|
203
|
+
t = t.rotate(axis, dy * radStep);
|
|
204
|
+
const m = Transform3D.fromMultiplication(this.rootation, t);
|
|
205
|
+
this.rootation = m;
|
|
206
|
+
}
|
|
207
|
+
mouseTranslate() {
|
|
208
|
+
const u1 = this.unproject(new Vec3(this.mouseLast[0], this.mouseLast[1], 0));
|
|
209
|
+
const u2 = this.unproject(new Vec3(this.mouseCurrent[0], this.mouseCurrent[1], 0));
|
|
210
|
+
const tr = Vec3.sub(u2, u1);
|
|
211
|
+
this.translation = this.translation.translate(tr);
|
|
212
|
+
}
|
|
213
|
+
mouseZoom() {
|
|
214
|
+
const dy = this.mouseLast[1] - this.mouseCurrent[1];
|
|
215
|
+
let scale;
|
|
216
|
+
if (dy > 0) {
|
|
217
|
+
scale = 1 + (dy / this.height) * 4;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
scale = 1 / (1 - (dy / this.height) * 4);
|
|
221
|
+
}
|
|
222
|
+
const t = Transform3D.fromScale(scale);
|
|
223
|
+
this.rootation = Transform3D.fromMultiplication(this.rootation, t);
|
|
224
|
+
}
|
|
225
|
+
whellZoom(event) {
|
|
226
|
+
const dy = (-event.deltaY / 120) * (this.height / 16);
|
|
227
|
+
let scale;
|
|
228
|
+
if (dy > 0) {
|
|
229
|
+
scale = 1 + (dy / this.height) * 4;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
scale = 1 / (1 - (dy / this.height) * 4);
|
|
233
|
+
}
|
|
234
|
+
const t = Transform3D.fromScale(scale);
|
|
235
|
+
this.rootation = Transform3D.fromMultiplication(this.rootation, t);
|
|
236
|
+
}
|
|
237
|
+
detachLiseners() {
|
|
238
|
+
this.element.removeEventListener('mousedown', this.boundMouseDown);
|
|
239
|
+
this.element.removeEventListener('mouseup', this.boundMouseUp);
|
|
240
|
+
this.element.removeEventListener('mouseleave', this.boundMouseLeave);
|
|
241
|
+
this.element.removeEventListener('mousemove', this.boundMouseMove);
|
|
242
|
+
this.element.removeEventListener('wheel', this.boundWheel);
|
|
243
|
+
}
|
|
244
|
+
onRedraw() {
|
|
245
|
+
if (this.onRedrawCallBack) {
|
|
246
|
+
this.onRedrawCallBack();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Init projection Matrixes
|
|
251
|
+
*/
|
|
252
|
+
initMatrixes() {
|
|
253
|
+
this.projectionMatrix = Transform3D.fromMultiplication(this.translation, this.rootation);
|
|
254
|
+
this.unprojectionMatrix = this.projectionMatrix.inverse();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=Camera.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Camera.js","sourceRoot":"","sources":["../../src/camera/Camera.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICamera.d.ts","sourceRoot":"","sources":["../../src/camera/ICamera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,WAAW,OAAO;IACtB,MAAM,IAAI,IAAI,CAAC;IACf,SAAS,IAAI,IAAI,CAAC;IAElB,OAAO,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAEhC,YAAY,IAAI,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICamera.js","sourceRoot":"","sources":["../../src/camera/ICamera.ts"],"names":[],"mappings":""}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
export declare class Mol3DView {
|
|
2
|
-
private
|
|
3
|
-
private canvasElement;
|
|
4
|
-
private context;
|
|
5
|
-
private initDone;
|
|
6
|
-
private width;
|
|
7
|
-
private height;
|
|
8
|
-
private subscriptions;
|
|
9
|
-
private molecule;
|
|
10
|
-
private
|
|
11
|
-
private camera;
|
|
12
|
-
private contextMenu;
|
|
13
|
-
private options;
|
|
14
|
-
constructor(options: {
|
|
15
|
-
bgcolor?: string;
|
|
16
|
-
});
|
|
17
|
-
append(element: HTMLElement): void;
|
|
18
|
-
load(jcif: object): void;
|
|
19
|
-
center(): void;
|
|
20
|
-
onInit(): void;
|
|
21
|
-
onDestroy(): void;
|
|
22
|
-
private redraw
|
|
23
|
-
private resizeCanvas
|
|
24
|
-
}
|
|
1
|
+
export declare class Mol3DView {
|
|
2
|
+
private viewElement;
|
|
3
|
+
private canvasElement;
|
|
4
|
+
private context;
|
|
5
|
+
private initDone;
|
|
6
|
+
private width;
|
|
7
|
+
private height;
|
|
8
|
+
private subscriptions;
|
|
9
|
+
private molecule;
|
|
10
|
+
private painter;
|
|
11
|
+
private camera;
|
|
12
|
+
private contextMenu;
|
|
13
|
+
private options;
|
|
14
|
+
constructor(options: {
|
|
15
|
+
bgcolor?: string;
|
|
16
|
+
});
|
|
17
|
+
append(element: HTMLElement): void;
|
|
18
|
+
load(jcif: object): void;
|
|
19
|
+
center(): void;
|
|
20
|
+
onInit(): void;
|
|
21
|
+
onDestroy(): void;
|
|
22
|
+
private redraw;
|
|
23
|
+
private resizeCanvas;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=crystal-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crystal-view.d.ts","sourceRoot":"","sources":["../src/crystal-view.ts"],"names":[],"mappings":"AAMA,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAa;IAE7B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,WAAW,CAAe;IAElC,OAAO,CAAC,OAAO,CAKb;gBAEU,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAYlC,MAAM,CAAC,OAAO,EAAE,WAAW;IA+F3B,IAAI,CAAC,IAAI,EAAE,MAAM;IAMjB,MAAM;IAcN,MAAM;IA4BN,SAAS;IAOhB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,YAAY;CAarB"}
|