@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.
Files changed (89) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +61 -31
  3. package/dist/{src/camera → camera}/Camera.d.ts +69 -63
  4. package/dist/camera/Camera.d.ts.map +1 -0
  5. package/dist/camera/Camera.js +257 -0
  6. package/dist/camera/Camera.js.map +1 -0
  7. package/dist/camera/ICamera.d.ts +9 -0
  8. package/dist/camera/ICamera.d.ts.map +1 -0
  9. package/dist/camera/ICamera.js +2 -0
  10. package/dist/camera/ICamera.js.map +1 -0
  11. package/dist/{src/crystal-view.d.ts → crystal-view.d.ts} +25 -24
  12. package/dist/crystal-view.d.ts.map +1 -0
  13. package/dist/crystal-view.js +181 -0
  14. package/dist/crystal-view.js.map +1 -0
  15. package/dist/crystalview.css +47 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/{src/molecule3d → molecule3d}/Atom.d.ts +14 -13
  21. package/dist/molecule3d/Atom.d.ts.map +1 -0
  22. package/dist/molecule3d/Atom.js +19 -0
  23. package/dist/molecule3d/Atom.js.map +1 -0
  24. package/dist/{src/molecule3d → molecule3d}/Bond.d.ts +8 -7
  25. package/dist/molecule3d/Bond.d.ts.map +1 -0
  26. package/dist/molecule3d/Bond.js +11 -0
  27. package/dist/molecule3d/Bond.js.map +1 -0
  28. package/dist/{src/molecule3d → molecule3d}/CellAtom.d.ts +96 -96
  29. package/dist/molecule3d/CellAtom.d.ts.map +1 -0
  30. package/dist/molecule3d/CellAtom.js +132 -0
  31. package/dist/molecule3d/CellAtom.js.map +1 -0
  32. package/dist/{src/molecule3d → molecule3d}/Link.d.ts +15 -14
  33. package/dist/molecule3d/Link.d.ts.map +1 -0
  34. package/dist/molecule3d/Link.js +17 -0
  35. package/dist/molecule3d/Link.js.map +1 -0
  36. package/dist/{src/molecule3d → molecule3d}/Marker.d.ts +9 -8
  37. package/dist/molecule3d/Marker.d.ts.map +1 -0
  38. package/dist/molecule3d/Marker.js +11 -0
  39. package/dist/molecule3d/Marker.js.map +1 -0
  40. package/dist/{src/molecule3d → molecule3d}/MarkerContact.d.ts +7 -6
  41. package/dist/molecule3d/MarkerContact.d.ts.map +1 -0
  42. package/dist/molecule3d/MarkerContact.js +9 -0
  43. package/dist/molecule3d/MarkerContact.js.map +1 -0
  44. package/dist/{src/molecule3d → molecule3d}/Molecule3D.d.ts +45 -44
  45. package/dist/molecule3d/Molecule3D.d.ts.map +1 -0
  46. package/dist/molecule3d/Molecule3D.js +139 -0
  47. package/dist/molecule3d/Molecule3D.js.map +1 -0
  48. package/dist/{src/molecule3d → molecule3d}/MoleculeBuilder.d.ts +20 -19
  49. package/dist/molecule3d/MoleculeBuilder.d.ts.map +1 -0
  50. package/dist/molecule3d/MoleculeBuilder.js +131 -0
  51. package/dist/molecule3d/MoleculeBuilder.js.map +1 -0
  52. package/dist/molecule3d/MoleculeConnector.d.ts +10 -0
  53. package/dist/molecule3d/MoleculeConnector.d.ts.map +1 -0
  54. package/dist/molecule3d/MoleculeConnector.js +107 -0
  55. package/dist/molecule3d/MoleculeConnector.js.map +1 -0
  56. package/dist/{src/molecule3d → molecule3d}/UnitCell.d.ts +36 -35
  57. package/dist/molecule3d/UnitCell.d.ts.map +1 -0
  58. package/dist/molecule3d/UnitCell.js +238 -0
  59. package/dist/molecule3d/UnitCell.js.map +1 -0
  60. package/dist/molecule3d/io/IMoleculeReader.d.ts +8 -0
  61. package/dist/molecule3d/io/IMoleculeReader.d.ts.map +1 -0
  62. package/dist/molecule3d/io/IMoleculeReader.js +2 -0
  63. package/dist/molecule3d/io/IMoleculeReader.js.map +1 -0
  64. package/dist/{src/molecule3d → molecule3d}/io/MoleculeReaderJCIF.d.ts +12 -11
  65. package/dist/molecule3d/io/MoleculeReaderJCIF.d.ts.map +1 -0
  66. package/dist/molecule3d/io/MoleculeReaderJCIF.js +115 -0
  67. package/dist/molecule3d/io/MoleculeReaderJCIF.js.map +1 -0
  68. package/dist/{src/painter → painter}/CanvasContext.d.ts +15 -14
  69. package/dist/painter/CanvasContext.d.ts.map +1 -0
  70. package/dist/painter/CanvasContext.js +68 -0
  71. package/dist/painter/CanvasContext.js.map +1 -0
  72. package/dist/painter/Painter.d.ts +36 -0
  73. package/dist/painter/Painter.d.ts.map +1 -0
  74. package/dist/painter/Painter.js +237 -0
  75. package/dist/painter/Painter.js.map +1 -0
  76. package/dist/ui/ContextMenu.d.ts +24 -0
  77. package/dist/ui/ContextMenu.d.ts.map +1 -0
  78. package/dist/ui/ContextMenu.js +147 -0
  79. package/dist/ui/ContextMenu.js.map +1 -0
  80. package/dist/{src/ui → ui}/ContextMenuItem.d.ts +18 -17
  81. package/dist/ui/ContextMenuItem.d.ts.map +1 -0
  82. package/dist/ui/ContextMenuItem.js +72 -0
  83. package/dist/ui/ContextMenuItem.js.map +1 -0
  84. package/package.json +68 -87
  85. package/dist/crystal-view.min.js +0 -24
  86. package/dist/src/molecule3d/MoleculeConnector.d.ts +0 -9
  87. package/dist/src/painter/Painter.d.ts +0 -35
  88. package/dist/src/ui/ContextMenu.d.ts +0 -24
  89. package/package-lock.json +0 -9410
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 Volodymyr Vreshch
3
+ Copyright (c) 2026 Volodymyr Vreshch
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
package/README.md CHANGED
@@ -1,42 +1,72 @@
1
1
  # CrystalView
2
+
2
3
  [![GitHub Build Status](https://github.com/chemistry/crystalview/workflows/CI/badge.svg)](https://github.com/chemistry/crystalview/actions?query=workflow%3ACI)
3
- [![License: MIT](https://img.shields.io/badge/License-MIT-gren.svg)](https://opensource.org/licenses/MIT)
4
-
5
- Simple Crystal Viewer - v1
6
-
7
- ## How to use
8
- ```javascript
9
- import { Mol3DView } from '@chemistry/crystalview';
10
- import structure from './1000004';
11
-
12
- $(() => {
13
- let viewer = new Mol3DView({
14
- bgcolor: "#2b303b"
15
- });
16
- var element = document.getElementById('app');
17
- viewer.append(element);
18
- viewer.onInit();
19
-
20
- try {
21
- viewer.load(structure);
22
- } catch(e) {
23
- }
24
- });
4
+ [![npm version](https://img.shields.io/npm/v/@chemistry/crystalview)](https://www.npmjs.com/package/@chemistry/crystalview)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](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
+ ![CrystalView](https://github.com/chemistry/crystalview/blob/master/crystalview.png?raw=true)
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
- ## Quick start:
28
- * Run unit tests: `npm run test`
29
- * Start TDD flow: `npm run tdd`
30
- * Run linter verification: `npm run lint`
31
- * Run linter verification & fix: `npm run lintfix`
32
- * Build project: `npm run build`
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 v1.0.0
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
- This project is licensed under the MIT license, Copyright (c) 2020 Volodymyr Vreshch.
42
- For more information see [LICENSE.md](https://github.com/chemistry/crystalview/blob/master/LICENSE).
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 "@chemistry/math";
2
- import { ICamera } from "./ICamera";
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
- constructor(options: {
25
- element: HTMLElement;
26
- onRedraw: () => void;
27
- onClick: (x: number, y: number) => void;
28
- });
29
- onInit(): void;
30
- onDestroy(): void;
31
- /**
32
- * Transform from 3D coordinates to Screen coordinates
33
- */
34
- project(position: Vec3): Vec3;
35
- /**
36
- * Transform screen coordinates to 3D coords
37
- */
38
- unproject(position: Vec3): Vec3;
39
- extractScale(): number;
40
- /**
41
- * Set Transformation scale and Rootation center
42
- */
43
- setCameraView(scale: number, center: Vec3): void;
44
- private attachLiseners();
45
- private _mousedown(event);
46
- private _mouseup(event);
47
- private _mouseleave(event);
48
- private _mousemove(event);
49
- private _mousewheel(event);
50
- private processMouseClick(offsetX, offsetY, which);
51
- private processMouseMove(shiftKey, ctrlKey, which);
52
- private mouseRootate_XYZ();
53
- private mouseRootateXY();
54
- private mouseTranslate();
55
- private mouseZoom(event);
56
- private whellZoom(event);
57
- private detachLiseners();
58
- private onRedraw();
59
- /**
60
- * Init projection Matrixes
61
- */
62
- private initMatrixes();
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,9 @@
1
+ import { Vec3 } from '@chemistry/math';
2
+ export interface ICamera {
3
+ onInit(): void;
4
+ onDestroy(): void;
5
+ project(position: Vec3): Vec3;
6
+ unproject(position: Vec3): Vec3;
7
+ extractScale(): number;
8
+ }
9
+ //# sourceMappingURL=ICamera.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ICamera.js.map
@@ -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 View;
3
- private canvasElement;
4
- private context;
5
- private initDone;
6
- private width;
7
- private height;
8
- private subscriptions;
9
- private molecule;
10
- private painer;
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"}