react-cheminfo 0.63.0 → 0.63.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.
@@ -10,7 +10,9 @@
10
10
  * measurement.
11
11
  */
12
12
  import type { ElementIndex, Structure } from 'molstar/lib/mol-model/structure.js';
13
+ import { StructureElement } from 'molstar/lib/mol-model/structure.js';
13
14
  import type { PluginContext } from 'molstar/lib/mol-plugin/context.js';
15
+ import type { StructureMeasurementManager } from 'molstar/lib/mol-plugin-state/manager/structure/measurement.js';
14
16
  import type { AtomReference, Measurement, MeasurementKind } from '../../molecule3d/core/measurement.ts';
15
17
  /**
16
18
  * Where the atoms a measurement addresses are found in the plugin's state.
@@ -28,6 +30,14 @@ export type MoleculeStructureSource = (plugin: PluginContext) => Structure | und
28
30
  * @returns Nothing; resolves once every label is on screen.
29
31
  */
30
32
  export declare function renderMeasurements(plugin: PluginContext, measurements: readonly Measurement[], structureOf: MoleculeStructureSource): Promise<void>;
33
+ /**
34
+ * Add one measurement to the scene, its label in front of the atoms it names.
35
+ * @param manager - molstar's measurement manager.
36
+ * @param kind - What is measured.
37
+ * @param loci - Its atoms, in order; fewer than the kind needs adds nothing.
38
+ * @returns Nothing; resolves once the measurement is committed.
39
+ */
40
+ export declare function addMeasurement(manager: Pick<StructureMeasurementManager, 'addDistance' | 'addAngle' | 'addDihedral'>, kind: MeasurementKind, loci: readonly StructureElement.Loci[]): Promise<void>;
31
41
  /**
32
42
  * Remove every measurement from the scene.
33
43
  * @param plugin - The molstar context.
@@ -1 +1 @@
1
- {"version":3,"file":"measurements.d.ts","sourceRoot":"","sources":["../../../src/molstar/core/measurements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACV,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIvE,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAM9C;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,aAAa,KAClB,SAAS,GAAG,SAAS,CAAC;AAE3B;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,WAAW,EAAE,uBAAuB,GACnC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5E;AAED,2EAA2E;AAC3E,qBAAa,iBAAiB;;IAO5B;;;;;OAKG;gBAED,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,EAC7C,WAAW,EAAE,uBAAuB;IAmBtC;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAO3C,oCAAoC;IACpC,OAAO,IAAI,IAAI;CAqBhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,YAAY,GACpB,aAAa,GAAG,SAAS,CAS3B"}
1
+ {"version":3,"file":"measurements.d.ts","sourceRoot":"","sources":["../../../src/molstar/core/measurements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAIjH,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAM9C;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,aAAa,KAClB,SAAS,GAAG,SAAS,CAAC;AAE3B;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,WAAW,EAAE,uBAAuB,GACnC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,IAAI,CACX,2BAA2B,EAC3B,aAAa,GAAG,UAAU,GAAG,aAAa,CAC3C,EACD,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,SAAS,gBAAgB,CAAC,IAAI,EAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CASf;AAQD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5E;AAED,2EAA2E;AAC3E,qBAAa,iBAAiB;;IAO5B;;;;;OAKG;gBAED,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,EAC7C,WAAW,EAAE,uBAAuB;IAmBtC;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAO3C,oCAAoC;IACpC,OAAO,IAAI,IAAI;CAqBhB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,YAAY,GACpB,aAAa,GAAG,SAAS,CAS3B"}
@@ -31,20 +31,34 @@ export async function renderMeasurements(plugin, measurements, structureOf) {
31
31
  return;
32
32
  const manager = plugin.managers.structure.measurement;
33
33
  for (const measurement of measurements) {
34
- const [a, b, c, d] = atomLoci(structure, measurement.atoms);
35
- /* eslint-disable no-await-in-loop -- each add commits to the state tree, and commits must not interleave */
36
- if (measurement.kind === 'distance' && a && b) {
37
- await manager.addDistance(a, b);
38
- }
39
- else if (measurement.kind === 'angle' && a && b && c) {
40
- await manager.addAngle(a, b, c);
41
- }
42
- else if (measurement.kind === 'dihedral' && a && b && c && d) {
43
- await manager.addDihedral(a, b, c, d);
44
- }
45
- /* eslint-enable no-await-in-loop */
34
+ // eslint-disable-next-line no-await-in-loop -- each add commits to the state tree, and commits must not interleave
35
+ await addMeasurement(manager, measurement.kind, atomLoci(structure, measurement.atoms));
46
36
  }
47
37
  }
38
+ /**
39
+ * Add one measurement to the scene, its label in front of the atoms it names.
40
+ * @param manager - molstar's measurement manager.
41
+ * @param kind - What is measured.
42
+ * @param loci - Its atoms, in order; fewer than the kind needs adds nothing.
43
+ * @returns Nothing; resolves once the measurement is committed.
44
+ */
45
+ export async function addMeasurement(manager, kind, loci) {
46
+ const [a, b, c, d] = loci;
47
+ if (kind === 'distance' && a && b) {
48
+ await manager.addDistance(a, b, MEASUREMENT_LABEL);
49
+ }
50
+ else if (kind === 'angle' && a && b && c) {
51
+ await manager.addAngle(a, b, c, MEASUREMENT_LABEL);
52
+ }
53
+ else if (kind === 'dihedral' && a && b && c && d) {
54
+ await manager.addDihedral(a, b, c, d, MEASUREMENT_LABEL);
55
+ }
56
+ }
57
+ /**
58
+ * A label drawn at the depth of its atoms hides half behind them: it is drawn
59
+ * in front of them, as molstar's own order labels are.
60
+ */
61
+ const MEASUREMENT_LABEL = { labelParams: { offsetZ: 0.75 } };
48
62
  /**
49
63
  * Remove every measurement from the scene.
50
64
  * @param plugin - The molstar context.
@@ -1 +1 @@
1
- {"version":3,"file":"measurements.js","sourceRoot":"","sources":["../../../src/molstar/core/measurements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"measurements.js","sourceRoot":"","sources":["../../../src/molstar/core/measurements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAOtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAGtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAOhF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,kDAAkD;AAClD,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAY1C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAqB,EACrB,YAAoC,EACpC,WAAoC;IAEpC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;IACtD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,mHAAmH;QACnH,MAAM,cAAc,CAClB,OAAO,EACP,WAAW,CAAC,IAAI,EAChB,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,CACvC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAGC,EACD,IAAqB,EACrB,IAAsC;IAEtC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAqB;IAC3D,MAAM,GAAG,GAAG,cAAc,CAAC,gBAAgB,CACzC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EACtB,cAAc,CAAC,OAAO,EACtB,mBAAmB,CACpB,CAAC;IACF,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO;IAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,2EAA2E;AAC3E,MAAM,OAAO,iBAAiB;IACnB,OAAO,CAAgB;IACvB,UAAU,CAAqC;IAC/C,YAAY,CAAa;IACzB,YAAY,CAA0B;IAC/C,KAAK,GAA2B,IAAI,CAAC;IAErC;;;;;OAKG;IACH,YACE,MAAqB,EACrB,SAA6C,EAC7C,WAAoC;QAEpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,qEAAqE;QACrE,iCAAiC;QACjC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,MAAM,YAAY,GAChB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAC1E,GAAG,EAAE;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CACF,CAAC;QACJ,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE;YACvB,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,IAA4B;QAClC,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAChE,CAAC;IAED,oCAAoC;IACpC,OAAO;QACL,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACrD,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC7C,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC3E,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,IAAI,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,IAAI,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO;QAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAoB,EACpB,OAAqB;IAErB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;QACvC,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CACpB,SAAoB,EACpB,IAAU;IAEV,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CACf,SAAoB,EACpB,KAA+B;IAE/B,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAC1E,IAAI,CAAC,IAAI,CACP,WAAW,CAAC,SAAS,EAAE;YACrB,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAoB,CAAC,EAAE;SACrE,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-cheminfo",
3
- "version": "0.63.0",
3
+ "version": "0.63.1",
4
4
  "license": "MIT",
5
5
  "description": "React components, hooks and framework-free helpers shared by the cheminfo sites: site chrome, citations, sharing, routing, pedagogy, charts, and the structure, orbital and 3D molecule viewers",
6
6
  "author": "Luc Patiny",
@@ -19,6 +19,7 @@ import type {
19
19
  } from 'molstar/lib/mol-model/structure.js';
20
20
  import { StructureElement } from 'molstar/lib/mol-model/structure.js';
21
21
  import type { PluginContext } from 'molstar/lib/mol-plugin/context.js';
22
+ import type { StructureMeasurementManager } from 'molstar/lib/mol-plugin-state/manager/structure/measurement.js';
22
23
  import { MeasurementGroupTag } from 'molstar/lib/mol-plugin-state/manager/structure/measurement.js';
23
24
  import { StateSelection, StateTransform } from 'molstar/lib/mol-state/index.js';
24
25
 
@@ -60,19 +61,46 @@ export async function renderMeasurements(
60
61
  if (structure === undefined) return;
61
62
  const manager = plugin.managers.structure.measurement;
62
63
  for (const measurement of measurements) {
63
- const [a, b, c, d] = atomLoci(structure, measurement.atoms);
64
- /* eslint-disable no-await-in-loop -- each add commits to the state tree, and commits must not interleave */
65
- if (measurement.kind === 'distance' && a && b) {
66
- await manager.addDistance(a, b);
67
- } else if (measurement.kind === 'angle' && a && b && c) {
68
- await manager.addAngle(a, b, c);
69
- } else if (measurement.kind === 'dihedral' && a && b && c && d) {
70
- await manager.addDihedral(a, b, c, d);
71
- }
72
- /* eslint-enable no-await-in-loop */
64
+ // eslint-disable-next-line no-await-in-loop -- each add commits to the state tree, and commits must not interleave
65
+ await addMeasurement(
66
+ manager,
67
+ measurement.kind,
68
+ atomLoci(structure, measurement.atoms),
69
+ );
73
70
  }
74
71
  }
75
72
 
73
+ /**
74
+ * Add one measurement to the scene, its label in front of the atoms it names.
75
+ * @param manager - molstar's measurement manager.
76
+ * @param kind - What is measured.
77
+ * @param loci - Its atoms, in order; fewer than the kind needs adds nothing.
78
+ * @returns Nothing; resolves once the measurement is committed.
79
+ */
80
+ export async function addMeasurement(
81
+ manager: Pick<
82
+ StructureMeasurementManager,
83
+ 'addDistance' | 'addAngle' | 'addDihedral'
84
+ >,
85
+ kind: MeasurementKind,
86
+ loci: readonly StructureElement.Loci[],
87
+ ): Promise<void> {
88
+ const [a, b, c, d] = loci;
89
+ if (kind === 'distance' && a && b) {
90
+ await manager.addDistance(a, b, MEASUREMENT_LABEL);
91
+ } else if (kind === 'angle' && a && b && c) {
92
+ await manager.addAngle(a, b, c, MEASUREMENT_LABEL);
93
+ } else if (kind === 'dihedral' && a && b && c && d) {
94
+ await manager.addDihedral(a, b, c, d, MEASUREMENT_LABEL);
95
+ }
96
+ }
97
+
98
+ /**
99
+ * A label drawn at the depth of its atoms hides half behind them: it is drawn
100
+ * in front of them, as molstar's own order labels are.
101
+ */
102
+ const MEASUREMENT_LABEL = { labelParams: { offsetZ: 0.75 } };
103
+
76
104
  /**
77
105
  * Remove every measurement from the scene.
78
106
  * @param plugin - The molstar context.