@chemistry/crystalview 1.0.8 → 3.0.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 (88) hide show
  1. package/README.md +24 -20
  2. package/dist/{src/camera → camera}/Camera.d.ts +69 -63
  3. package/dist/camera/Camera.d.ts.map +1 -0
  4. package/dist/camera/Camera.js +225 -0
  5. package/dist/camera/Camera.js.map +1 -0
  6. package/dist/camera/ICamera.d.ts +9 -0
  7. package/dist/camera/ICamera.d.ts.map +1 -0
  8. package/dist/camera/ICamera.js +2 -0
  9. package/dist/camera/ICamera.js.map +1 -0
  10. package/dist/{src/crystal-view.d.ts → crystal-view.d.ts} +25 -24
  11. package/dist/crystal-view.d.ts.map +1 -0
  12. package/dist/crystal-view.js +169 -0
  13. package/dist/crystal-view.js.map +1 -0
  14. package/dist/crystalview.css +47 -0
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +2 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/{src/molecule3d → molecule3d}/Atom.d.ts +14 -13
  20. package/dist/molecule3d/Atom.d.ts.map +1 -0
  21. package/dist/molecule3d/Atom.js +15 -0
  22. package/dist/molecule3d/Atom.js.map +1 -0
  23. package/dist/{src/molecule3d → molecule3d}/Bond.d.ts +8 -7
  24. package/dist/molecule3d/Bond.d.ts.map +1 -0
  25. package/dist/molecule3d/Bond.js +8 -0
  26. package/dist/molecule3d/Bond.js.map +1 -0
  27. package/dist/{src/molecule3d → molecule3d}/CellAtom.d.ts +96 -96
  28. package/dist/molecule3d/CellAtom.d.ts.map +1 -0
  29. package/dist/molecule3d/CellAtom.js +83 -0
  30. package/dist/molecule3d/CellAtom.js.map +1 -0
  31. package/dist/{src/molecule3d → molecule3d}/Link.d.ts +15 -14
  32. package/dist/molecule3d/Link.d.ts.map +1 -0
  33. package/dist/molecule3d/Link.js +9 -0
  34. package/dist/molecule3d/Link.js.map +1 -0
  35. package/dist/{src/molecule3d → molecule3d}/Marker.d.ts +9 -8
  36. package/dist/molecule3d/Marker.d.ts.map +1 -0
  37. package/dist/molecule3d/Marker.js +8 -0
  38. package/dist/molecule3d/Marker.js.map +1 -0
  39. package/dist/{src/molecule3d → molecule3d}/MarkerContact.d.ts +7 -6
  40. package/dist/molecule3d/MarkerContact.d.ts.map +1 -0
  41. package/dist/molecule3d/MarkerContact.js +7 -0
  42. package/dist/molecule3d/MarkerContact.js.map +1 -0
  43. package/dist/{src/molecule3d → molecule3d}/Molecule3D.d.ts +45 -44
  44. package/dist/molecule3d/Molecule3D.d.ts.map +1 -0
  45. package/dist/molecule3d/Molecule3D.js +126 -0
  46. package/dist/molecule3d/Molecule3D.js.map +1 -0
  47. package/dist/{src/molecule3d → molecule3d}/MoleculeBuilder.d.ts +20 -19
  48. package/dist/molecule3d/MoleculeBuilder.d.ts.map +1 -0
  49. package/dist/molecule3d/MoleculeBuilder.js +130 -0
  50. package/dist/molecule3d/MoleculeBuilder.js.map +1 -0
  51. package/dist/molecule3d/MoleculeConnector.d.ts +10 -0
  52. package/dist/molecule3d/MoleculeConnector.d.ts.map +1 -0
  53. package/dist/molecule3d/MoleculeConnector.js +106 -0
  54. package/dist/molecule3d/MoleculeConnector.js.map +1 -0
  55. package/dist/{src/molecule3d → molecule3d}/UnitCell.d.ts +36 -35
  56. package/dist/molecule3d/UnitCell.d.ts.map +1 -0
  57. package/dist/molecule3d/UnitCell.js +227 -0
  58. package/dist/molecule3d/UnitCell.js.map +1 -0
  59. package/dist/molecule3d/io/IMoleculeReader.d.ts +8 -0
  60. package/dist/molecule3d/io/IMoleculeReader.d.ts.map +1 -0
  61. package/dist/molecule3d/io/IMoleculeReader.js +2 -0
  62. package/dist/molecule3d/io/IMoleculeReader.js.map +1 -0
  63. package/dist/{src/molecule3d → molecule3d}/io/MoleculeReaderJCIF.d.ts +12 -11
  64. package/dist/molecule3d/io/MoleculeReaderJCIF.d.ts.map +1 -0
  65. package/dist/molecule3d/io/MoleculeReaderJCIF.js +112 -0
  66. package/dist/molecule3d/io/MoleculeReaderJCIF.js.map +1 -0
  67. package/dist/{src/painter → painter}/CanvasContext.d.ts +15 -14
  68. package/dist/painter/CanvasContext.d.ts.map +1 -0
  69. package/dist/painter/CanvasContext.js +67 -0
  70. package/dist/painter/CanvasContext.js.map +1 -0
  71. package/dist/painter/Painter.d.ts +36 -0
  72. package/dist/painter/Painter.d.ts.map +1 -0
  73. package/dist/painter/Painter.js +235 -0
  74. package/dist/painter/Painter.js.map +1 -0
  75. package/dist/ui/ContextMenu.d.ts +24 -0
  76. package/dist/ui/ContextMenu.d.ts.map +1 -0
  77. package/dist/ui/ContextMenu.js +140 -0
  78. package/dist/ui/ContextMenu.js.map +1 -0
  79. package/dist/{src/ui → ui}/ContextMenuItem.d.ts +18 -17
  80. package/dist/ui/ContextMenuItem.d.ts.map +1 -0
  81. package/dist/ui/ContextMenuItem.js +66 -0
  82. package/dist/ui/ContextMenuItem.js.map +1 -0
  83. package/package.json +68 -87
  84. package/dist/crystal-view.min.js +0 -24
  85. package/dist/src/molecule3d/MoleculeConnector.d.ts +0 -9
  86. package/dist/src/painter/Painter.d.ts +0 -35
  87. package/dist/src/ui/ContextMenu.d.ts +0 -24
  88. package/package-lock.json +0 -9410
@@ -1,35 +1,36 @@
1
- import { Matrix3x4, Vec3 } from "@chemistry/math";
2
- import { SpaceGroup } from "@crystallography/space-groups";
3
- export declare class UnitCell {
4
- /**
5
- * Will construct Transformation Matrix from Crystallographic notation
6
- * e.g. x,y,z -x+1/2, -y, z+1/2
7
- */
8
- static getMatrixFromSymetry(symetryCode: string): Matrix3x4;
9
- a: number;
10
- b: number;
11
- c: number;
12
- alpha: number;
13
- beta: number;
14
- gamma: number;
15
- spaceGroup: SpaceGroup;
16
- volume: number;
17
- symetryList: Matrix3x4[];
18
- private mOrthMatrix;
19
- private mOrthMatrixInvert;
20
- constructor(a: number, b: number, c: number, alpha: number, beta: number, gamma: number, spaceGroup: SpaceGroup);
21
- /**
22
- * Convert fractional coordinates to Orth
23
- */
24
- fractToOrth(coord: Vec3): Vec3;
25
- /**
26
- * Convert Orth coordinates to fractional
27
- */
28
- orthToFract(coord: Vec3): Vec3;
29
- /**
30
- * Based on Orth box conner coordinates Return
31
- * posible tranactions to get evry posible dot from this box
32
- */
33
- transactionsFromOrthBox(point1: Vec3, point2: Vec3): Vec3[];
34
- private init();
35
- }
1
+ import { Matrix3x4, Vec3 } from '@chemistry/math';
2
+ import type { SpaceGroupInfo } from '@chemistry/space-groups';
3
+ export declare class UnitCell {
4
+ /**
5
+ * Will construct Transformation Matrix from Crystallographic notation
6
+ * e.g. x,y,z -x+1/2, -y, z+1/2
7
+ */
8
+ static getMatrixFromSymetry(symetryCode: string): Matrix3x4;
9
+ a: number;
10
+ b: number;
11
+ c: number;
12
+ alpha: number;
13
+ beta: number;
14
+ gamma: number;
15
+ spaceGroup: SpaceGroupInfo;
16
+ volume: number;
17
+ symetryList: Matrix3x4[];
18
+ private mOrthMatrix;
19
+ private mOrthMatrixInvert;
20
+ constructor(a: number, b: number, c: number, alpha: number, beta: number, gamma: number, spaceGroup: SpaceGroupInfo);
21
+ /**
22
+ * Convert fractional coordinates to Orth
23
+ */
24
+ fractToOrth(coord: Vec3): Vec3;
25
+ /**
26
+ * Convert Orth coordinates to fractional
27
+ */
28
+ orthToFract(coord: Vec3): Vec3;
29
+ /**
30
+ * Based on Orth box conner coordinates Return
31
+ * posible tranactions to get evry posible dot from this box
32
+ */
33
+ transactionsFromOrthBox(point1: Vec3, point2: Vec3): Vec3[];
34
+ private init;
35
+ }
36
+ //# sourceMappingURL=UnitCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnitCell.d.ts","sourceRoot":"","sources":["../../src/molecule3d/UnitCell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBAAa,QAAQ;IACnB;;;OAGG;WACW,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAiI3D,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,cAAc,CAAC;IAE3B,MAAM,EAAG,MAAM,CAAC;IAChB,WAAW,EAAG,SAAS,EAAE,CAAC;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAa;gBAGpC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,cAAc;IAa5B;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIrC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIrC;;;OAGG;IACI,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;IAqDlE,OAAO,CAAC,IAAI;CAsCb"}
@@ -0,0 +1,227 @@
1
+ import { Matrix3x3, Matrix3x4, Vec3 } from '@chemistry/math';
2
+ export class UnitCell {
3
+ /**
4
+ * Will construct Transformation Matrix from Crystallographic notation
5
+ * e.g. x,y,z -x+1/2, -y, z+1/2
6
+ */
7
+ static getMatrixFromSymetry(symetryCode) {
8
+ function replaceAll(str, find, replace) {
9
+ return str.replace(new RegExp(find.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'), replace);
10
+ }
11
+ function prseSym1(str) {
12
+ const res = [0, 0, 0, 0];
13
+ const spl = str.split('+');
14
+ // loop throught all splits
15
+ for (const sp2 of spl) {
16
+ const res2 = prseSym2(sp2);
17
+ res[0] = res[0] + res2[0];
18
+ res[1] = res[1] + res2[1];
19
+ res[2] = res[2] + res2[2];
20
+ res[3] = res[3] + res2[3];
21
+ }
22
+ return res;
23
+ }
24
+ function prseSym2(str) {
25
+ const res = [0, 0, 0, 0];
26
+ const spl = str.split('-');
27
+ let res2;
28
+ // -x-y, _x-z
29
+ for (let i = 0; i < spl.length; i++) {
30
+ if (i === 0 && spl[i] === '') {
31
+ continue;
32
+ }
33
+ let znak = -1;
34
+ if (i === 0) {
35
+ znak = 1;
36
+ }
37
+ res2 = prseSym3(spl[i]);
38
+ res[0] = res[0] + res2[0] * znak;
39
+ res[1] = res[1] + res2[1] * znak;
40
+ res[2] = res[2] + res2[2] * znak;
41
+ res[3] = res[3] + res2[3] * znak;
42
+ }
43
+ return res;
44
+ }
45
+ // Parse Symetry 3
46
+ function prseSym3(str) {
47
+ const res = [0, 0, 0, 0];
48
+ if (str.includes('x')) {
49
+ // 1/2x,0.25*x
50
+ res[0] = prseSym5(str, 'x');
51
+ }
52
+ else if (str.includes('y')) {
53
+ res[1] = prseSym5(str, 'y');
54
+ }
55
+ else if (str.includes('z')) {
56
+ res[2] = prseSym5(str, 'z');
57
+ }
58
+ else {
59
+ // : 1/2 0.33 + 1
60
+ res[3] = prseSym4(str);
61
+ }
62
+ return res;
63
+ }
64
+ function prseSym4(str) {
65
+ let res;
66
+ if (str.includes('/')) {
67
+ // 1/2
68
+ const xpl = str.split('/');
69
+ res = parseFloat(xpl[0]) / parseFloat(xpl[1]);
70
+ }
71
+ else {
72
+ const stp = str.replace('.', ',');
73
+ res = parseFloat(stp);
74
+ }
75
+ return res;
76
+ }
77
+ function prseSym5(str, ch) {
78
+ let res = 0;
79
+ if (str.includes(ch)) {
80
+ if (str.includes('*')) {
81
+ // 1/2x,0.25*x
82
+ const xpl = str.split('*');
83
+ res = prseSym4(xpl[0]);
84
+ if (xpl[1] !== ch) {
85
+ throw new Error('Incorect formula');
86
+ }
87
+ }
88
+ else {
89
+ if (ch === str) {
90
+ return 1;
91
+ }
92
+ res = prseSym4(str.replace(ch, '')); // Replace(ch.ToString(), "")
93
+ }
94
+ }
95
+ return res;
96
+ }
97
+ const s = replaceAll(symetryCode.toLowerCase(), ' ', '');
98
+ const pils = s.split(',');
99
+ if (pils.length !== 3) {
100
+ throw new Error('can not parse symetry code : ' + symetryCode);
101
+ }
102
+ const xv = prseSym1(pils[0]);
103
+ const yv = prseSym1(pils[1]);
104
+ const zv = prseSym1(pils[2]);
105
+ // Double check if the matrix were parsed correctly
106
+ for (let i = 0; i < 4; i++) {
107
+ let r = typeof xv[i] !== 'number' || !isFinite(xv[i]);
108
+ r = r || typeof yv[i] !== 'number' || !isFinite(yv[i]);
109
+ r = r || typeof zv[i] !== 'number' || !isFinite(zv[i]);
110
+ if (r) {
111
+ throw new Error('can not parse symetry code : ' + symetryCode);
112
+ }
113
+ }
114
+ return new Matrix3x4([
115
+ xv[0],
116
+ xv[1],
117
+ xv[2],
118
+ xv[3],
119
+ yv[0],
120
+ yv[1],
121
+ yv[2],
122
+ yv[3],
123
+ zv[0],
124
+ zv[1],
125
+ zv[2],
126
+ zv[3],
127
+ ]);
128
+ }
129
+ constructor(a, b, c, alpha, beta, gamma, spaceGroup) {
130
+ this.a = a;
131
+ this.b = b;
132
+ this.c = c;
133
+ this.alpha = alpha;
134
+ this.beta = beta;
135
+ this.gamma = gamma;
136
+ this.spaceGroup = spaceGroup;
137
+ this.init();
138
+ }
139
+ /**
140
+ * Convert fractional coordinates to Orth
141
+ */
142
+ fractToOrth(coord) {
143
+ return this.mOrthMatrix.project(coord);
144
+ }
145
+ /**
146
+ * Convert Orth coordinates to fractional
147
+ */
148
+ orthToFract(coord) {
149
+ return this.mOrthMatrixInvert.project(coord);
150
+ }
151
+ /**
152
+ * Based on Orth box conner coordinates Return
153
+ * posible tranactions to get evry posible dot from this box
154
+ */
155
+ transactionsFromOrthBox(point1, point2) {
156
+ // Normalize points
157
+ const p1 = new Vec3(Math.min(point1.x, point2.x), Math.min(point1.y, point2.y), Math.min(point1.z, point2.z));
158
+ const p2 = new Vec3(Math.max(point1.x, point2.x), Math.max(point1.y, point2.y), Math.max(point1.z, point2.z));
159
+ // Create vectors of the box
160
+ const v1 = new Vec3(p1.x, p1.y, p1.z);
161
+ const v2 = new Vec3(p2.x, p1.y, p1.z);
162
+ const v3 = new Vec3(p1.x, p2.y, p1.z);
163
+ const v4 = new Vec3(p1.x, p1.y, p2.z);
164
+ const v5 = new Vec3(p2.x, p2.y, p1.z);
165
+ const v6 = new Vec3(p2.x, p1.y, p2.z);
166
+ const v7 = new Vec3(p1.x, p2.y, p2.z);
167
+ const v8 = new Vec3(p2.x, p2.y, p2.z);
168
+ // VP 1 - VP2
169
+ const vp1 = this.orthToFract(v1);
170
+ const vp2 = this.orthToFract(v2);
171
+ const vp3 = this.orthToFract(v3);
172
+ const vp4 = this.orthToFract(v4);
173
+ const vp5 = this.orthToFract(v5);
174
+ const vp6 = this.orthToFract(v6);
175
+ const vp7 = this.orthToFract(v7);
176
+ const vp8 = this.orthToFract(v8);
177
+ const MinX = Math.floor(Math.min(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
178
+ const MinY = Math.floor(Math.min(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
179
+ const MinZ = Math.floor(Math.min(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
180
+ const MaxX = Math.ceil(Math.max(vp1.x, vp2.x, vp3.x, vp4.x, vp5.x, vp6.x, vp7.x, vp8.x));
181
+ const MaxY = Math.ceil(Math.max(vp1.y, vp2.y, vp3.y, vp4.y, vp5.y, vp6.y, vp7.y, vp8.y));
182
+ const MaxZ = Math.ceil(Math.max(vp1.z, vp2.z, vp3.z, vp4.z, vp5.z, vp6.z, vp7.z, vp8.z));
183
+ const res = [];
184
+ // Create range of posible translations;
185
+ for (let i = MinX; i < MaxX; i++) {
186
+ for (let j = MinY; j < MaxY; j++) {
187
+ for (let k = MinZ; k < MaxZ; k++) {
188
+ res.push(new Vec3(i, j, k));
189
+ }
190
+ }
191
+ }
192
+ return res;
193
+ }
194
+ init() {
195
+ // PREPARE PROJECTION MATRIXES
196
+ const pAlpha = this.alpha * 0.017453292519943295; // pi/180 ;
197
+ const pBeta = this.beta * 0.017453292519943295;
198
+ const pGamma = this.gamma * 0.017453292519943295;
199
+ const v = Math.sqrt(1 -
200
+ Math.cos(pAlpha) * Math.cos(pAlpha) -
201
+ Math.cos(pBeta) * Math.cos(pBeta) -
202
+ Math.cos(pGamma) * Math.cos(pGamma) +
203
+ 2 * Math.cos(pAlpha) * Math.cos(pBeta) * Math.cos(pGamma));
204
+ const cc = Math.sin(pGamma) / this.c / v;
205
+ const alphaa = Math.acos((Math.cos(pBeta) * Math.cos(pGamma) - Math.cos(pAlpha)) / Math.sin(pBeta) / Math.sin(pGamma));
206
+ this.mOrthMatrix = new Matrix3x3();
207
+ this.mOrthMatrix.set(0, 0, this.a);
208
+ this.mOrthMatrix.set(0, 1, this.b * Math.cos(pGamma));
209
+ this.mOrthMatrix.set(0, 2, this.c * Math.cos(pBeta));
210
+ this.mOrthMatrix.set(1, 0, 0);
211
+ this.mOrthMatrix.set(1, 1, this.b * Math.sin(pGamma));
212
+ this.mOrthMatrix.set(1, 2, -this.c * Math.sin(pBeta) * Math.cos(alphaa));
213
+ this.mOrthMatrix.set(2, 0, 0);
214
+ this.mOrthMatrix.set(2, 1, 0);
215
+ this.mOrthMatrix.set(2, 2, 1 / cc);
216
+ this.mOrthMatrixInvert = Matrix3x3.inverse(this.mOrthMatrix);
217
+ this.volume = v;
218
+ this.symetryList = [];
219
+ // PREPARE Symetry LIST
220
+ //
221
+ for (const symStr of this.spaceGroup.s) {
222
+ const sym = UnitCell.getMatrixFromSymetry(symStr);
223
+ this.symetryList.push(sym);
224
+ }
225
+ }
226
+ }
227
+ //# sourceMappingURL=UnitCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnitCell.js","sourceRoot":"","sources":["../../src/molecule3d/UnitCell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Molecule3D } from '../Molecule3D.js';
2
+ export interface IMoleculeReader {
3
+ name: string;
4
+ extension: string[];
5
+ description: string;
6
+ loadMolecule(molecule: Molecule3D, data: string | object): void;
7
+ }
8
+ //# sourceMappingURL=IMoleculeReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMoleculeReader.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/io/IMoleculeReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACjE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IMoleculeReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMoleculeReader.js","sourceRoot":"","sources":["../../../src/molecule3d/io/IMoleculeReader.ts"],"names":[],"mappings":""}
@@ -1,11 +1,12 @@
1
- import { Molecule3D } from "../Molecule3D";
2
- import { IMoleculeReader } from "./IMoleculeReader";
3
- export declare class MoleculeReaderJCIF implements IMoleculeReader {
4
- name: string;
5
- extension: string[];
6
- description: string;
7
- constructor();
8
- loadMolecule(molecule: Molecule3D, data: object): void;
9
- private remapCoordLoop(data);
10
- private extractCoordLoop(data);
11
- }
1
+ import { Molecule3D } from '../Molecule3D.js';
2
+ import { IMoleculeReader } from './IMoleculeReader.js';
3
+ export declare class MoleculeReaderJCIF implements IMoleculeReader {
4
+ name: string;
5
+ extension: string[];
6
+ description: string;
7
+ constructor();
8
+ loadMolecule(molecule: Molecule3D, data: object): void;
9
+ private remapCoordLoop;
10
+ private extractCoordLoop;
11
+ }
12
+ //# sourceMappingURL=MoleculeReaderJCIF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoleculeReaderJCIF.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/io/MoleculeReaderJCIF.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA+BvD,qBAAa,kBAAmB,YAAW,eAAe;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;;IAQpB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM;IAsDtD,OAAO,CAAC,cAAc;IA4DtB,OAAO,CAAC,gBAAgB;CAQzB"}
@@ -0,0 +1,112 @@
1
+ import { SpaceGroup } from '@chemistry/space-groups';
2
+ import { UnitCell } from '../UnitCell.js';
3
+ export class MoleculeReaderJCIF {
4
+ constructor() {
5
+ this.name = 'jcif';
6
+ this.extension = ['jcif'];
7
+ this.description = 'jcif molecule format';
8
+ }
9
+ loadMolecule(molecule, data) {
10
+ molecule.clear();
11
+ const jcif = data;
12
+ const a = parseFloat(jcif.a);
13
+ const b = parseFloat(jcif.b);
14
+ const c = parseFloat(jcif.c);
15
+ const alpha = parseFloat(jcif.alpha);
16
+ const beta = parseFloat(jcif.beta);
17
+ const gamma = parseFloat(jcif.gamma);
18
+ if (!isFinite(a) ||
19
+ !isFinite(b) ||
20
+ !isFinite(c) ||
21
+ !isFinite(alpha) ||
22
+ !isFinite(beta) ||
23
+ !isFinite(gamma)) {
24
+ throw new Error('Wrong Unit Cell Params');
25
+ }
26
+ if (!jcif.sgHall && !jcif.sg) {
27
+ throw new Error('Space Group is not provided');
28
+ }
29
+ let spaceGroup = null;
30
+ if (jcif.sgHall) {
31
+ spaceGroup = SpaceGroup.getByHallName(jcif.sgHall);
32
+ }
33
+ if (!spaceGroup && jcif.sg) {
34
+ spaceGroup = SpaceGroup.getByHMName(jcif.sg);
35
+ }
36
+ if (!spaceGroup) {
37
+ throw new Error('Space Group not founnd');
38
+ }
39
+ // Create Unit Cell object
40
+ const unitCell = new UnitCell(a, b, c, alpha, beta, gamma, spaceGroup);
41
+ molecule.unitCell = unitCell;
42
+ const coordLoop = this.extractCoordLoop(jcif);
43
+ let atomRows = [];
44
+ if (coordLoop.length > 0) {
45
+ atomRows = this.remapCoordLoop(coordLoop[0]);
46
+ }
47
+ atomRows.forEach((atomData) => {
48
+ molecule.addCellAtom(atomData);
49
+ });
50
+ }
51
+ remapCoordLoop(data) {
52
+ const colsMap = {
53
+ _atom_site_U_iso_or_equiv: -1,
54
+ _atom_site_disorder_assembly: -1,
55
+ _atom_site_disorder_group: -1,
56
+ _atom_site_fract_x: -1,
57
+ _atom_site_fract_y: -1,
58
+ _atom_site_fract_z: -1,
59
+ _atom_site_label: -1,
60
+ _atom_site_occupancy: -1,
61
+ _atom_site_type_symbol: -1,
62
+ };
63
+ // Set position
64
+ Object.keys(colsMap).forEach((key) => {
65
+ colsMap[key] = data.columns.indexOf(key);
66
+ });
67
+ function getData(code, row) {
68
+ if (typeof colsMap[code] === 'number' && colsMap[code] !== -1) {
69
+ return row[colsMap[code]];
70
+ }
71
+ return undefined;
72
+ }
73
+ function getDataNum(code, row, defaultValue) {
74
+ const valueStr = getData(code, row);
75
+ if (valueStr === undefined) {
76
+ return defaultValue;
77
+ }
78
+ const value = parseFloat(valueStr);
79
+ if (!isFinite(value)) {
80
+ return defaultValue;
81
+ }
82
+ return value;
83
+ }
84
+ let atomRows = [];
85
+ if (Array.isArray(data.data)) {
86
+ atomRows = data.data.map((row) => {
87
+ const type = getData('_atom_site_type_symbol', row) ?? 'Q';
88
+ return {
89
+ assembly: getData('_atom_site_disorder_assembly', row) ?? '',
90
+ group: getData('_atom_site_disorder_group', row) ?? '',
91
+ label: getData('_atom_site_label', row) ?? type,
92
+ occupancy: getDataNum('_atom_site_occupancy', row, 1),
93
+ type,
94
+ uiso: getDataNum('_atom_site_U_iso_or_equiv', row, 0),
95
+ x: getDataNum('_atom_site_fract_x', row, 0),
96
+ y: getDataNum('_atom_site_fract_y', row, 0),
97
+ z: getDataNum('_atom_site_fract_z', row, 0),
98
+ };
99
+ });
100
+ }
101
+ return atomRows;
102
+ }
103
+ extractCoordLoop(data) {
104
+ if (Array.isArray(data.loops)) {
105
+ return data.loops.filter((loopItem) => {
106
+ return loopItem.columns.includes('_atom_site_fract_x');
107
+ });
108
+ }
109
+ return [];
110
+ }
111
+ }
112
+ //# sourceMappingURL=MoleculeReaderJCIF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoleculeReaderJCIF.js","sourceRoot":"","sources":["../../../src/molecule3d/io/MoleculeReaderJCIF.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
- export declare class CanvasContext {
2
- private context;
3
- constructor(context: CanvasRenderingContext2D);
4
- save(): void;
5
- restore(): void;
6
- center(): void;
7
- getCenterX(): number;
8
- getCenterY(): number;
9
- clear(bgcolor: string): void;
10
- circle(x: number, y: number, r: number, color: string): void;
11
- line(x1: number, y1: number, x2: number, y2: number, color: string): void;
12
- linedashed(x1: number, y1: number, x2: number, y2: number, color: string, dash: number[]): void;
13
- text(text: string, x: number, y: number, color: string, font: string): void;
14
- }
1
+ export declare class CanvasContext {
2
+ private context;
3
+ constructor(context: CanvasRenderingContext2D);
4
+ save(): void;
5
+ restore(): void;
6
+ center(): void;
7
+ getCenterX(): number;
8
+ getCenterY(): number;
9
+ clear(bgcolor: string): void;
10
+ circle(x: number, y: number, r: number, color: string): void;
11
+ line(x1: number, y1: number, x2: number, y2: number, color: string): void;
12
+ linedashed(x1: number, y1: number, x2: number, y2: number, color: string, dash: number[]): void;
13
+ text(text: string, x: number, y: number, color: string, font: string): void;
14
+ }
15
+ //# sourceMappingURL=CanvasContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasContext.d.ts","sourceRoot":"","sources":["../../src/painter/CanvasContext.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA2B;gBAE9B,OAAO,EAAE,wBAAwB;IAItC,IAAI;IAGJ,OAAO;IAIP,MAAM;IAMN,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;IAIpB,KAAK,CAAC,OAAO,EAAE,MAAM;IASrB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAUrD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAWlE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IAkBxF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAO5E"}
@@ -0,0 +1,67 @@
1
+ export class CanvasContext {
2
+ constructor(context) {
3
+ this.context = context;
4
+ }
5
+ save() {
6
+ this.context.save();
7
+ }
8
+ restore() {
9
+ this.context.restore();
10
+ }
11
+ center() {
12
+ const ctx = this.context;
13
+ // Change coordinates; so (0,0) :: now corespond to coordinate center
14
+ ctx.translate(this.getCenterX(), this.getCenterY());
15
+ }
16
+ getCenterX() {
17
+ return this.context.canvas.width / 2;
18
+ }
19
+ getCenterY() {
20
+ return this.context.canvas.height / 2;
21
+ }
22
+ clear(bgcolor) {
23
+ const ctx = this.context;
24
+ const width = this.context.canvas.width;
25
+ const height = this.context.canvas.height;
26
+ ctx.fillStyle = bgcolor;
27
+ ctx.fillRect(0, 0, width, height);
28
+ }
29
+ circle(x, y, r, color) {
30
+ const ctx = this.context;
31
+ ctx.beginPath();
32
+ ctx.arc(x, y, r, 0, 2 * Math.PI, true);
33
+ ctx.closePath();
34
+ ctx.fillStyle = color;
35
+ ctx.fill();
36
+ }
37
+ line(x1, y1, x2, y2, color) {
38
+ const ctx = this.context;
39
+ ctx.beginPath();
40
+ ctx.moveTo(x1, y1);
41
+ ctx.lineTo(x2, y2);
42
+ ctx.strokeStyle = color;
43
+ ctx.lineWidth = 1;
44
+ ctx.stroke();
45
+ }
46
+ linedashed(x1, y1, x2, y2, color, dash) {
47
+ const ctx = this.context;
48
+ ctx.save();
49
+ if (ctx.setLineDash) {
50
+ ctx.setLineDash(dash);
51
+ }
52
+ ctx.beginPath();
53
+ ctx.moveTo(x1, y1);
54
+ ctx.lineTo(x2, y2);
55
+ ctx.strokeStyle = color;
56
+ ctx.lineWidth = 1;
57
+ ctx.stroke();
58
+ this.restore();
59
+ }
60
+ text(text, x, y, color, font) {
61
+ const ctx = this.context;
62
+ ctx.font = font;
63
+ ctx.fillStyle = color;
64
+ ctx.fillText(text, x, y);
65
+ }
66
+ }
67
+ //# sourceMappingURL=CanvasContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CanvasContext.js","sourceRoot":"","sources":["../../src/painter/CanvasContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { ICamera } from '../camera/ICamera.js';
2
+ import { Marker } from '../molecule3d/Marker.js';
3
+ import { Molecule3D } from '../molecule3d/Molecule3D.js';
4
+ export declare class Painter {
5
+ private context;
6
+ private options;
7
+ private zBuffer;
8
+ constructor(context: CanvasRenderingContext2D, options: {
9
+ bgcolor: string;
10
+ showUnitCell: boolean;
11
+ showMarkers: boolean;
12
+ showLabels: boolean;
13
+ });
14
+ draw(molecule: Molecule3D, camera: ICamera): void;
15
+ uprojectToMarker(data: {
16
+ molecule: Molecule3D;
17
+ camera: ICamera;
18
+ x: number;
19
+ y: number;
20
+ }): Marker | null;
21
+ private drawZBuffer;
22
+ private unitCellLine;
23
+ private drawBondLine;
24
+ private drawAtom;
25
+ private drawMarker;
26
+ private drawMarkerContact;
27
+ private drawLabel;
28
+ private prepareMarkers;
29
+ private prepareLabels;
30
+ private prepareMarkersContacts;
31
+ private prepareAxis;
32
+ private prepareUnitCell;
33
+ private prepareBonds;
34
+ private prepareAtoms;
35
+ }
36
+ //# sourceMappingURL=Painter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Painter.d.ts","sourceRoot":"","sources":["../../src/painter/Painter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAmBzD,qBAAa,OAAO;IAClB,OAAO,CAAC,OAAO,CAAgB;IAE/B,OAAO,CAAC,OAAO,CAKb;IACF,OAAO,CAAC,OAAO,CAAqB;gBAGlC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB;IAMI,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO;IAiC1C,gBAAgB,CAAC,IAAI,EAAE;QAC5B,QAAQ,EAAE,UAAU,CAAC;QACrB,MAAM,EAAE,OAAO,CAAC;QAChB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,MAAM,GAAG,IAAI;IA2BjB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,YAAY;CAgBrB"}