react-cheminfo 0.4.1 → 0.7.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 (174) hide show
  1. package/README.md +198 -34
  2. package/lib/citation/core/index.d.ts +1 -0
  3. package/lib/citation/core/index.d.ts.map +1 -1
  4. package/lib/citation/core/index.js +1 -0
  5. package/lib/citation/core/index.js.map +1 -1
  6. package/lib/citation/core/platformPaper.d.ts +14 -0
  7. package/lib/citation/core/platformPaper.d.ts.map +1 -0
  8. package/lib/citation/core/platformPaper.js +28 -0
  9. package/lib/citation/core/platformPaper.js.map +1 -0
  10. package/lib/color/core/index.d.ts +1 -1
  11. package/lib/color/core/index.d.ts.map +1 -1
  12. package/lib/color/core/index.js +1 -1
  13. package/lib/color/core/index.js.map +1 -1
  14. package/lib/core.d.ts +1 -0
  15. package/lib/core.d.ts.map +1 -1
  16. package/lib/core.js +1 -0
  17. package/lib/core.js.map +1 -1
  18. package/lib/ecosystem/core/sites.d.ts +1 -1
  19. package/lib/ecosystem/core/sites.d.ts.map +1 -1
  20. package/lib/ecosystem/core/sites.js +15 -5
  21. package/lib/ecosystem/core/sites.js.map +1 -1
  22. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
  23. package/lib/ecosystem/ui/glyphs.js +3 -0
  24. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  25. package/lib/orbital/core/index.d.ts +1 -1
  26. package/lib/orbital/core/index.d.ts.map +1 -1
  27. package/lib/orbital/core/index.js +1 -1
  28. package/lib/orbital/core/index.js.map +1 -1
  29. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +5 -0
  30. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -1
  31. package/lib/orbital/ui/AtomicOrbitalCanvas.js +4 -3
  32. package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -1
  33. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +5 -0
  34. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -1
  35. package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -1
  36. package/lib/orbital/ui/axesGeometry.d.ts +27 -0
  37. package/lib/orbital/ui/axesGeometry.d.ts.map +1 -0
  38. package/lib/orbital/ui/axesGeometry.js +74 -0
  39. package/lib/orbital/ui/axesGeometry.js.map +1 -0
  40. package/lib/orbital/ui/camera.d.ts +7 -0
  41. package/lib/orbital/ui/camera.d.ts.map +1 -1
  42. package/lib/orbital/ui/camera.js +8 -1
  43. package/lib/orbital/ui/camera.js.map +1 -1
  44. package/lib/orbital/ui/renderAxes.d.ts +53 -0
  45. package/lib/orbital/ui/renderAxes.d.ts.map +1 -0
  46. package/lib/orbital/ui/renderAxes.js +110 -0
  47. package/lib/orbital/ui/renderAxes.js.map +1 -0
  48. package/lib/orbital/ui/viewer.d.ts +16 -0
  49. package/lib/orbital/ui/viewer.d.ts.map +1 -1
  50. package/lib/orbital/ui/viewer.js +24 -2
  51. package/lib/orbital/ui/viewer.js.map +1 -1
  52. package/lib/periodic/core/categories.d.ts +25 -0
  53. package/lib/periodic/core/categories.d.ts.map +1 -0
  54. package/lib/periodic/core/categories.js +70 -0
  55. package/lib/periodic/core/categories.js.map +1 -0
  56. package/lib/periodic/core/elements.d.ts +49 -0
  57. package/lib/periodic/core/elements.d.ts.map +1 -0
  58. package/lib/periodic/core/elements.js +175 -0
  59. package/lib/periodic/core/elements.js.map +1 -0
  60. package/lib/periodic/core/index.d.ts +6 -0
  61. package/lib/periodic/core/index.d.ts.map +1 -0
  62. package/lib/periodic/core/index.js +4 -0
  63. package/lib/periodic/core/index.js.map +1 -0
  64. package/lib/periodic/core/layout.d.ts +73 -0
  65. package/lib/periodic/core/layout.d.ts.map +1 -0
  66. package/lib/periodic/core/layout.js +132 -0
  67. package/lib/periodic/core/layout.js.map +1 -0
  68. package/lib/periodic/ui/CategoryLegend.d.ts +26 -0
  69. package/lib/periodic/ui/CategoryLegend.d.ts.map +1 -0
  70. package/lib/periodic/ui/CategoryLegend.js +53 -0
  71. package/lib/periodic/ui/CategoryLegend.js.map +1 -0
  72. package/lib/periodic/ui/ElementCell.d.ts +53 -0
  73. package/lib/periodic/ui/ElementCell.d.ts.map +1 -0
  74. package/lib/periodic/ui/ElementCell.js +56 -0
  75. package/lib/periodic/ui/ElementCell.js.map +1 -0
  76. package/lib/periodic/ui/PeriodicTable.d.ts +90 -0
  77. package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -0
  78. package/lib/periodic/ui/PeriodicTable.js +77 -0
  79. package/lib/periodic/ui/PeriodicTable.js.map +1 -0
  80. package/lib/periodic/ui/PeriodicTableChrome.d.ts +36 -0
  81. package/lib/periodic/ui/PeriodicTableChrome.d.ts.map +1 -0
  82. package/lib/periodic/ui/PeriodicTableChrome.js +72 -0
  83. package/lib/periodic/ui/PeriodicTableChrome.js.map +1 -0
  84. package/lib/periodic/ui/index.d.ts +7 -0
  85. package/lib/periodic/ui/index.d.ts.map +1 -0
  86. package/lib/periodic/ui/index.js +4 -0
  87. package/lib/periodic/ui/index.js.map +1 -0
  88. package/lib/seo/core/documentMeta.d.ts +2 -2
  89. package/lib/seo/core/documentMeta.js +4 -3
  90. package/lib/seo/core/documentMeta.js.map +1 -1
  91. package/lib/seo/core/index.d.ts +13 -4
  92. package/lib/seo/core/index.d.ts.map +1 -1
  93. package/lib/seo/core/index.js +8 -3
  94. package/lib/seo/core/index.js.map +1 -1
  95. package/lib/seo/core/noscript.d.ts +97 -0
  96. package/lib/seo/core/noscript.d.ts.map +1 -0
  97. package/lib/seo/core/noscript.js +93 -0
  98. package/lib/seo/core/noscript.js.map +1 -0
  99. package/lib/seo/core/pageMeta.d.ts +30 -14
  100. package/lib/seo/core/pageMeta.d.ts.map +1 -1
  101. package/lib/seo/core/pageMeta.js +40 -43
  102. package/lib/seo/core/pageMeta.js.map +1 -1
  103. package/lib/seo/core/robots.d.ts +55 -0
  104. package/lib/seo/core/robots.d.ts.map +1 -0
  105. package/lib/seo/core/robots.js +70 -0
  106. package/lib/seo/core/robots.js.map +1 -0
  107. package/lib/seo/core/routes.d.ts +73 -5
  108. package/lib/seo/core/routes.d.ts.map +1 -1
  109. package/lib/seo/core/routes.js +142 -16
  110. package/lib/seo/core/routes.js.map +1 -1
  111. package/lib/seo/core/siteFiles.d.ts +39 -43
  112. package/lib/seo/core/siteFiles.d.ts.map +1 -1
  113. package/lib/seo/core/siteFiles.js +53 -69
  114. package/lib/seo/core/siteFiles.js.map +1 -1
  115. package/lib/seo/core/startDocumentMeta.d.ts +44 -0
  116. package/lib/seo/core/startDocumentMeta.d.ts.map +1 -0
  117. package/lib/seo/core/startDocumentMeta.js +47 -0
  118. package/lib/seo/core/startDocumentMeta.js.map +1 -0
  119. package/lib/seo/core/structuredData.d.ts +48 -0
  120. package/lib/seo/core/structuredData.d.ts.map +1 -0
  121. package/lib/seo/core/structuredData.js +41 -0
  122. package/lib/seo/core/structuredData.js.map +1 -0
  123. package/lib/seo/core/template.d.ts +48 -0
  124. package/lib/seo/core/template.d.ts.map +1 -0
  125. package/lib/seo/core/template.js +53 -0
  126. package/lib/seo/core/template.js.map +1 -0
  127. package/lib/seo/vite/ogCard.d.ts +9 -1
  128. package/lib/seo/vite/ogCard.d.ts.map +1 -1
  129. package/lib/seo/vite/ogCard.js +14 -4
  130. package/lib/seo/vite/ogCard.js.map +1 -1
  131. package/lib/seo/vite/prerender.d.ts +38 -7
  132. package/lib/seo/vite/prerender.d.ts.map +1 -1
  133. package/lib/seo/vite/prerender.js +68 -30
  134. package/lib/seo/vite/prerender.js.map +1 -1
  135. package/lib/ui.d.ts +1 -0
  136. package/lib/ui.d.ts.map +1 -1
  137. package/lib/ui.js +1 -0
  138. package/lib/ui.js.map +1 -1
  139. package/package.json +2 -1
  140. package/src/citation/core/index.ts +1 -0
  141. package/src/citation/core/platformPaper.ts +32 -0
  142. package/src/color/core/index.ts +6 -1
  143. package/src/core.ts +1 -0
  144. package/src/ecosystem/core/sites.ts +16 -5
  145. package/src/ecosystem/ui/glyphs.tsx +19 -0
  146. package/src/orbital/core/index.ts +1 -1
  147. package/src/orbital/ui/AtomicOrbitalCanvas.tsx +9 -2
  148. package/src/orbital/ui/AtomicOrbitalViewer.tsx +5 -0
  149. package/src/orbital/ui/axesGeometry.ts +91 -0
  150. package/src/orbital/ui/camera.ts +9 -1
  151. package/src/orbital/ui/renderAxes.ts +190 -0
  152. package/src/orbital/ui/viewer.ts +32 -2
  153. package/src/periodic/core/categories.ts +83 -0
  154. package/src/periodic/core/elements.ts +217 -0
  155. package/src/periodic/core/index.ts +27 -0
  156. package/src/periodic/core/layout.ts +183 -0
  157. package/src/periodic/ui/CategoryLegend.tsx +105 -0
  158. package/src/periodic/ui/ElementCell.tsx +137 -0
  159. package/src/periodic/ui/PeriodicTable.tsx +226 -0
  160. package/src/periodic/ui/PeriodicTableChrome.tsx +170 -0
  161. package/src/periodic/ui/index.ts +6 -0
  162. package/src/seo/core/documentMeta.ts +5 -5
  163. package/src/seo/core/index.ts +19 -12
  164. package/src/seo/core/noscript.ts +195 -0
  165. package/src/seo/core/pageMeta.ts +54 -53
  166. package/src/seo/core/robots.ts +114 -0
  167. package/src/seo/core/routes.ts +181 -14
  168. package/src/seo/core/siteFiles.ts +58 -96
  169. package/src/seo/core/startDocumentMeta.ts +77 -0
  170. package/src/seo/core/structuredData.ts +80 -0
  171. package/src/seo/core/template.ts +54 -0
  172. package/src/seo/vite/ogCard.ts +15 -5
  173. package/src/seo/vite/prerender.ts +105 -58
  174. package/src/ui.ts +1 -0
@@ -35,6 +35,11 @@ export interface AtomicOrbitalCanvasProps {
35
35
  * @default false
36
36
  */
37
37
  spinning?: boolean;
38
+ /**
39
+ * How fast it turns, in molstar's own spin unit. Lower is slower.
40
+ * @default 0.3
41
+ */
42
+ spinSpeed?: number;
38
43
  /**
39
44
  * How the field is produced. Supply a worker-backed sampler to keep the main
40
45
  * thread free; the default runs in process.
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicOrbitalCanvas.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAGzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMvD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkFd"}
1
+ {"version":3,"file":"AtomicOrbitalCanvas.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAGzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAmFd"}
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from 'react';
3
3
  import { PHASE_PALETTES } from "../core/palette.js";
4
4
  import { sampleInProcess } from "../core/sample.js";
5
+ import { DEFAULT_SPIN_SPEED } from "./camera.js";
5
6
  import { createOrbitalViewer } from "./viewer.js";
6
7
  /**
7
8
  * Mount one molstar canvas and keep it showing the orbital named by the props.
@@ -9,7 +10,7 @@ import { createOrbitalViewer } from "./viewer.js";
9
10
  * @returns The canvas, with a progress note while it samples.
10
11
  */
11
12
  export function AtomicOrbitalCanvas(props) {
12
- const { atomicNumber, orbitalId, palette = PHASE_PALETTES.textbook, resolution = DEFAULT_RESOLUTION, spinning = false, sample = sampleInProcess, onNodeRadii, onError, } = props;
13
+ const { atomicNumber, orbitalId, palette = PHASE_PALETTES.textbook, resolution = DEFAULT_RESOLUTION, spinning = false, spinSpeed = DEFAULT_SPIN_SPEED, sample = sampleInProcess, onNodeRadii, onError, } = props;
13
14
  const containerRef = useRef(null);
14
15
  const viewerRef = useRef(null);
15
16
  const [drawn, setDrawn] = useState(null);
@@ -70,8 +71,8 @@ export function AtomicOrbitalCanvas(props) {
70
71
  };
71
72
  }, [atomicNumber, orbitalId, resolution, palette, sample, wanted]);
72
73
  useEffect(() => {
73
- void viewerRef.current?.setSpin(spinning);
74
- }, [spinning]);
74
+ void viewerRef.current?.setSpin(spinning, spinSpeed);
75
+ }, [spinning, spinSpeed]);
75
76
  return (_jsx("div", { ref: containerRef, style: CANVAS_STYLE, children: busy && _jsx("div", { style: BUSY_STYLE, children: "Sampling\u2026" }) }));
76
77
  }
77
78
  /** Samples per edge; 56 resolves the radial node of a 3s in about 25 ms. */
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AtomicOrbitalCanvas.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalCanvas.tsx"],"names":[],"mappings":"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"}
@@ -43,6 +43,11 @@ export interface AtomicOrbitalViewerProps {
43
43
  * @default false
44
44
  */
45
45
  spinning?: boolean;
46
+ /**
47
+ * How fast it turns, in molstar's own spin unit. Lower is slower.
48
+ * @default 0.3
49
+ */
50
+ spinSpeed?: number;
46
51
  /**
47
52
  * How the field is produced. Supply a worker-backed sampler to keep the main
48
53
  * thread free; the default runs in process.
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkCd"}
1
+ {"version":3,"file":"AtomicOrbitalViewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQxD,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CAkCd"}
@@ -1 +1 @@
1
- {"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA2B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjD,CAAC,CAAC,CAAC;AAoDH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,QAAQ,GAAG,wBAAwB,EACnC,iBAAiB,EACjB,GAAG,MAAM,EACV,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,UAAU,YACnB,iBAAiB,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,GAClD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,UAAU,aACpB,KAAC,QAAQ,IAAC,QAAQ,EAAE,cAAK,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAO,YAC1D,KAAC,mBAAmB,OACd,MAAM,EACV,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;wBACnB,UAAU,CAAC,OAAO,CAAC,CAAC;oBACtB,CAAC,GACD,GACO,EACV,OAAO,KAAK,IAAI,IAAI,CACnB,eAAK,KAAK,EAAE,aAAa,kDACW,OAAO,IACrC,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,kBAAkB;IAC9B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC"}
1
+ {"version":3,"file":"AtomicOrbitalViewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/AtomicOrbitalViewer.tsx"],"names":[],"mappings":";AAkBA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA2B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACjD,CAAC,CAAC,CAAC;AAyDH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA+B;IAE/B,MAAM,EACJ,QAAQ,GAAG,wBAAwB,EACnC,iBAAiB,EACjB,GAAG,MAAM,EACV,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,UAAU,YACnB,iBAAiB,EAAE,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,GAClD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,UAAU,aACpB,KAAC,QAAQ,IAAC,QAAQ,EAAE,cAAK,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAO,YAC1D,KAAC,mBAAmB,OACd,MAAM,EACV,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;wBACnB,UAAU,CAAC,OAAO,CAAC,CAAC;oBACtB,CAAC,GACD,GACO,EACV,OAAO,KAAK,IAAI,IAAI,CACnB,eAAK,KAAK,EAAE,aAAa,kDACW,OAAO,IACrC,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,UAAU,GAAkB;IAChC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,kBAAkB;IAC9B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,EAAE;CACb,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The geometry of the cartesian frame: three rods through the origin and the
3
+ * three letters that name them.
4
+ *
5
+ * It is arithmetic over positions, which is why it is here rather than in
6
+ * `renderAxes.ts` — that module is about representations, exactly as
7
+ * `volumeField.ts` is to `renderVolume.ts`.
8
+ */
9
+ import type { Mesh } from 'molstar/lib/mol-geo/geometry/mesh/mesh.js';
10
+ import type { Text } from 'molstar/lib/mol-geo/geometry/text/text.js';
11
+ /** How far a rod, and a label, sit from the origin as fractions of the reach. */
12
+ export declare const ROD_LENGTH = 1.06;
13
+ export declare const LABEL_SIZE = 0.1;
14
+ /**
15
+ * Three rods through the origin, each with an arrowhead on its positive end.
16
+ * @param reach - How far the orbital reaches, in scene units.
17
+ * @returns The mesh, one group per axis.
18
+ */
19
+ export declare function buildAxisRods(reach: number): Mesh;
20
+ /**
21
+ * One label just beyond each arrowhead.
22
+ * @param at - Distance from the origin the labels sit at, in scene units.
23
+ * @param labels - What the axes are called, in x, y, z order.
24
+ * @returns The text geometry, one group per axis.
25
+ */
26
+ export declare function buildAxisLabels(at: number, labels: readonly string[]): Text;
27
+ //# sourceMappingURL=axesGeometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axesGeometry.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/axesGeometry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2CAA2C,CAAC;AAGtE,iFAAiF;AACjF,eAAO,MAAM,UAAU,OAAO,CAAC;AAC/B,eAAO,MAAM,UAAU,MAAM,CAAC;AAkB9B;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CA0BjD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAe3E"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The geometry of the cartesian frame: three rods through the origin and the
3
+ * three letters that name them.
4
+ *
5
+ * It is arithmetic over positions, which is why it is here rather than in
6
+ * `renderAxes.ts` — that module is about representations, exactly as
7
+ * `volumeField.ts` is to `renderVolume.ts`.
8
+ */
9
+ import { addCylinder } from 'molstar/lib/mol-geo/geometry/mesh/builder/cylinder.js';
10
+ import { MeshBuilder } from 'molstar/lib/mol-geo/geometry/mesh/mesh-builder.js';
11
+ import { TextBuilder } from 'molstar/lib/mol-geo/geometry/text/text-builder.js';
12
+ import { Vec3 } from 'molstar/lib/mol-math/linear-algebra.js';
13
+ /** How far a rod, and a label, sit from the origin as fractions of the reach. */
14
+ export const ROD_LENGTH = 1.06;
15
+ export const LABEL_SIZE = 0.1;
16
+ /** Rod radius, as a fraction of the reach. */
17
+ const ROD_RADIUS = 0.006;
18
+ /** Arrowhead length as a fraction of the rod's half-length. */
19
+ const HEAD_LENGTH = 0.06;
20
+ /** Arrowhead radius as a multiple of the rod's. */
21
+ const HEAD_FLARE = 4;
22
+ /** x, y and z, in the order their labels are given in. */
23
+ const AXIS_DIRECTIONS = [
24
+ Vec3.create(1, 0, 0),
25
+ Vec3.create(0, 1, 0),
26
+ Vec3.create(0, 0, 1),
27
+ ];
28
+ /**
29
+ * Three rods through the origin, each with an arrowhead on its positive end.
30
+ * @param reach - How far the orbital reaches, in scene units.
31
+ * @returns The mesh, one group per axis.
32
+ */
33
+ export function buildAxisRods(reach) {
34
+ const state = MeshBuilder.createState(1024, 512);
35
+ const length = reach * ROD_LENGTH;
36
+ const radius = reach * ROD_RADIUS;
37
+ const head = length * HEAD_LENGTH;
38
+ for (const [axis, direction] of AXIS_DIRECTIONS.entries()) {
39
+ state.currentGroup = axis;
40
+ const start = Vec3.scale(Vec3.zero(), direction, -length);
41
+ const neck = Vec3.scale(Vec3.zero(), direction, length - head);
42
+ const tip = Vec3.scale(Vec3.zero(), direction, length);
43
+ addCylinder(state, start, neck, 1, {
44
+ radiusTop: radius,
45
+ radiusBottom: radius,
46
+ topCap: true,
47
+ bottomCap: true,
48
+ radialSegments: 12,
49
+ });
50
+ addCylinder(state, neck, tip, 1, {
51
+ radiusTop: 0,
52
+ radiusBottom: radius * HEAD_FLARE,
53
+ topCap: true,
54
+ bottomCap: true,
55
+ radialSegments: 16,
56
+ });
57
+ }
58
+ return MeshBuilder.getMesh(state);
59
+ }
60
+ /**
61
+ * One label just beyond each arrowhead.
62
+ * @param at - Distance from the origin the labels sit at, in scene units.
63
+ * @param labels - What the axes are called, in x, y, z order.
64
+ * @returns The text geometry, one group per axis.
65
+ */
66
+ export function buildAxisLabels(at, labels) {
67
+ const builder = TextBuilder.create({}, 3, 3);
68
+ for (const [axis, direction] of AXIS_DIRECTIONS.entries()) {
69
+ const position = Vec3.scale(Vec3.zero(), direction, at);
70
+ builder.add(labels[axis] ?? '', position[0], position[1], position[2], 0, 1, axis);
71
+ }
72
+ return builder.getText();
73
+ }
74
+ //# sourceMappingURL=axesGeometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axesGeometry.js","sourceRoot":"","sources":["../../../src/orbital/ui/axesGeometry.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,13 @@
6
6
  import type { PluginContext } from 'molstar/lib/mol-plugin/context.js';
7
7
  /** Transition length used when the caller does not pick one, milliseconds. */
8
8
  export declare const DEFAULT_CAMERA_DURATION = 250;
9
+ /**
10
+ * Turn rate used when the caller does not pick one, in molstar's own spin unit.
11
+ *
12
+ * A lobe has to stay in one place long enough to be read; molstar's own 1 turns
13
+ * an orbital fast enough that the phases blur into each other.
14
+ */
15
+ export declare const DEFAULT_SPIN_SPEED = 0.3;
9
16
  /**
10
17
  * Frame everything currently in the scene.
11
18
  * @param plugin - The molstar context.
@@ -1 +1 @@
1
- {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAY3C;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,UAAU,SAA0B,GACnC,IAAI,CAWN;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,IAAI,CA4BN;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,OAAO,EACjB,KAAK,SAAI,GACR,IAAI,CAQN"}
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAYtC;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,UAAU,SAA0B,GACnC,IAAI,CAWN;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,IAAI,CA4BN;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,OAAO,EACjB,KAAK,SAAqB,GACzB,IAAI,CAQN"}
@@ -6,6 +6,13 @@
6
6
  import { Vec3 } from 'molstar/lib/mol-math/linear-algebra.js';
7
7
  /** Transition length used when the caller does not pick one, milliseconds. */
8
8
  export const DEFAULT_CAMERA_DURATION = 250;
9
+ /**
10
+ * Turn rate used when the caller does not pick one, in molstar's own spin unit.
11
+ *
12
+ * A lobe has to stay in one place long enough to be read; molstar's own 1 turns
13
+ * an orbital fast enough that the phases blur into each other.
14
+ */
15
+ export const DEFAULT_SPIN_SPEED = 0.3;
9
16
  /**
10
17
  * Fraction of the bounding sphere kept as breathing room around the orbital.
11
18
  *
@@ -86,7 +93,7 @@ export function frameOrbital(plugin, orbitalRadius, durationMs = DEFAULT_CAMERA_
86
93
  * @param spinning - Whether the scene should keep turning.
87
94
  * @param speed - Revolutions per minute-ish; molstar's own unit.
88
95
  */
89
- export function setSpin(plugin, spinning, speed = 1) {
96
+ export function setSpin(plugin, spinning, speed = DEFAULT_SPIN_SPEED) {
90
97
  plugin.canvas3d?.setProps({
91
98
  trackball: {
92
99
  animate: spinning
@@ -1 +1 @@
1
- {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/orbital/ui/camera.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The cartesian frame an atomic orbital is read against.
3
+ *
4
+ * A `3d_xz` is only `3d_xz` because of where its lobes sit relative to x and
5
+ * z, and a lone isosurface on a blank canvas says nothing about that: the
6
+ * student is looking at four identical lobes and has to take the label's word
7
+ * for it. Three labelled axes through the nucleus are what turn the picture
8
+ * back into the diagram their textbook draws.
9
+ *
10
+ * The axes are neutral grey on purpose. The phase palette already owns colour
11
+ * here — blue against red, or blue against amber — so the usual red/green/blue
12
+ * axis convention would compete with the one thing the surface is saying, and
13
+ * the labels tell the three apart anyway.
14
+ *
15
+ * Like the isosurfaces, the representations live outside the state tree and
16
+ * are tracked per plugin.
17
+ */
18
+ import type { PluginContext } from 'molstar/lib/mol-plugin/context.js';
19
+ /** How the cartesian frame is drawn. */
20
+ export interface AxesStyle {
21
+ /**
22
+ * Colour of the three rods, as `#rrggbb`.
23
+ * @default '#64748b'
24
+ */
25
+ colour?: string;
26
+ /**
27
+ * Colour of the three labels, as `#rrggbb`.
28
+ * @default '#334155'
29
+ */
30
+ labelColour?: string;
31
+ /**
32
+ * What the axes are called, in x, y, z order.
33
+ * @default ['x', 'y', 'z']
34
+ */
35
+ labels?: readonly [string, string, string];
36
+ }
37
+ /**
38
+ * Draw a labelled x, y, z frame through the origin, replacing any previous one.
39
+ * @param plugin - The molstar context.
40
+ * @param reach - How far the orbital reaches, in scene units — what
41
+ * `renderSampledVolume` returned.
42
+ * @param style - See {@link AxesStyle}.
43
+ * @returns How far the frame reaches, labels included, in scene units: what a
44
+ * camera has to frame for the whole of it to be on screen.
45
+ * @throws {Error} When the canvas is not ready.
46
+ */
47
+ export declare function renderOrbitalAxes(plugin: PluginContext, reach: number, style?: AxesStyle): Promise<number>;
48
+ /**
49
+ * Remove the frame, leaving anything else on the canvas.
50
+ * @param plugin - The molstar context.
51
+ */
52
+ export declare function clearOrbitalAxes(plugin: PluginContext): void;
53
+ //# sourceMappingURL=renderAxes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderAxes.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/renderAxes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAavE,wCAAwC;AACxC,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,SAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ5D"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The cartesian frame an atomic orbital is read against.
3
+ *
4
+ * A `3d_xz` is only `3d_xz` because of where its lobes sit relative to x and
5
+ * z, and a lone isosurface on a blank canvas says nothing about that: the
6
+ * student is looking at four identical lobes and has to take the label's word
7
+ * for it. Three labelled axes through the nucleus are what turn the picture
8
+ * back into the diagram their textbook draws.
9
+ *
10
+ * The axes are neutral grey on purpose. The phase palette already owns colour
11
+ * here — blue against red, or blue against amber — so the usual red/green/blue
12
+ * axis convention would compete with the one thing the surface is saying, and
13
+ * the labels tell the three apart anyway.
14
+ *
15
+ * Like the isosurfaces, the representations live outside the state tree and
16
+ * are tracked per plugin.
17
+ */
18
+ import { Mesh } from 'molstar/lib/mol-geo/geometry/mesh/mesh.js';
19
+ import { Text } from 'molstar/lib/mol-geo/geometry/text/text.js';
20
+ import { Shape } from 'molstar/lib/mol-model/shape.js';
21
+ // Lowercased on import: it is a factory, not a constructor.
22
+ import { ShapeRepresentation as shapeRepresentation } from 'molstar/lib/mol-repr/shape/representation.js';
23
+ import { Color } from 'molstar/lib/mol-util/color/color.js';
24
+ import { LABEL_SIZE, ROD_LENGTH, buildAxisLabels, buildAxisRods, } from "./axesGeometry.js";
25
+ /**
26
+ * Draw a labelled x, y, z frame through the origin, replacing any previous one.
27
+ * @param plugin - The molstar context.
28
+ * @param reach - How far the orbital reaches, in scene units — what
29
+ * `renderSampledVolume` returned.
30
+ * @param style - See {@link AxesStyle}.
31
+ * @returns How far the frame reaches, labels included, in scene units: what a
32
+ * camera has to frame for the whole of it to be on screen.
33
+ * @throws {Error} When the canvas is not ready.
34
+ */
35
+ export async function renderOrbitalAxes(plugin, reach, style = {}) {
36
+ const canvas3d = plugin.canvas3d;
37
+ if (canvas3d === undefined) {
38
+ throw new Error('renderOrbitalAxes: the molstar canvas is not ready.');
39
+ }
40
+ const { colour = '#64748b', labelColour = '#334155', labels = ['x', 'y', 'z'], } = style;
41
+ clearOrbitalAxes(plugin);
42
+ if (reach <= 0)
43
+ return 0;
44
+ const labelSize = reach * LABEL_SIZE;
45
+ const labelAt = reach * ROD_LENGTH + labelSize;
46
+ const drawn = await Promise.all([
47
+ createRods(plugin, buildAxisRods(reach), colour),
48
+ createLabels(plugin, buildAxisLabels(labelAt, labels), labelColour, labelSize),
49
+ ]);
50
+ representations.set(plugin, drawn);
51
+ for (const representation of drawn)
52
+ canvas3d.add(representation);
53
+ // add() only queues; nothing appears until the queue is committed.
54
+ canvas3d.commit();
55
+ return labelAt + labelSize / 2;
56
+ }
57
+ /**
58
+ * Remove the frame, leaving anything else on the canvas.
59
+ * @param plugin - The molstar context.
60
+ */
61
+ export function clearOrbitalAxes(plugin) {
62
+ const previous = representations.get(plugin);
63
+ if (previous === undefined)
64
+ return;
65
+ representations.delete(plugin);
66
+ for (const representation of previous) {
67
+ plugin.canvas3d?.remove(representation);
68
+ }
69
+ plugin.canvas3d?.commit();
70
+ }
71
+ /**
72
+ * The rods, as a representation the canvas can hold.
73
+ * @param plugin - The molstar context.
74
+ * @param mesh - The rod mesh.
75
+ * @param colour - Rod colour, as `#rrggbb`.
76
+ * @returns The representation.
77
+ */
78
+ async function createRods(plugin, mesh, colour) {
79
+ const value = Color.fromHexStyle(colour);
80
+ const representation = shapeRepresentation((_ctx, data) => Shape.create('orbital axes', {}, data, () => value, () => 1, () => 'axis'), Mesh.Utils);
81
+ await plugin.runTask(
82
+ // Unlit: a shaded rod reads as a cylinder in front of the surface, while a
83
+ // flat one reads as the axis line a textbook draws.
84
+ representation.createOrUpdate({ alpha: 1, ignoreLight: true }, mesh));
85
+ representation.setState({ pickable: false });
86
+ return representation;
87
+ }
88
+ /**
89
+ * The labels, as a representation the canvas can hold.
90
+ * @param plugin - The molstar context.
91
+ * @param text - The label geometry.
92
+ * @param colour - Label colour, as `#rrggbb`.
93
+ * @param size - Label height, in scene units.
94
+ * @returns The representation.
95
+ */
96
+ async function createLabels(plugin, text, colour, size) {
97
+ const value = Color.fromHexStyle(colour);
98
+ const representation = shapeRepresentation((_ctx, data) => Shape.create('orbital axis labels', {}, data, () => value, () => 1, () => 'axis label'), Text.Utils);
99
+ await plugin.runTask(representation.createOrUpdate({
100
+ sizeFactor: size,
101
+ background: false,
102
+ attachment: 'middle-center',
103
+ fontWeight: 'bold',
104
+ }, text));
105
+ representation.setState({ pickable: false });
106
+ return representation;
107
+ }
108
+ /** One frame per plugin, outside the state tree like the isosurfaces. */
109
+ const representations = new WeakMap();
110
+ //# sourceMappingURL=renderAxes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderAxes.js","sourceRoot":"","sources":["../../../src/orbital/ui/renderAxes.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import type { OrbitalGrid } from '../core/grid.ts';
16
16
  import type { OrbitalContour } from '../core/isovalue.ts';
17
+ import type { AxesStyle } from './renderAxes.ts';
17
18
  import type { VolumeStyle } from './renderVolume.ts';
18
19
  /** Settings fixed for the life of a viewer. */
19
20
  export interface OrbitalViewerOptions {
@@ -56,6 +57,21 @@ export declare class OrbitalViewer {
56
57
  * to frame; `undefined` once the viewer has been disposed.
57
58
  */
58
59
  showOrbital(field: OrbitalGrid, contour: OrbitalContour, style?: VolumeStyle): Promise<number | undefined>;
60
+ /**
61
+ * Draw the labelled x, y, z frame through the origin, replacing any previous
62
+ * one.
63
+ * @param reach - How far the orbital reaches, in scene units, as
64
+ * `showOrbital` returned it.
65
+ * @param style - See {@link AxesStyle}.
66
+ * @returns How far the frame reaches, labels included, for the camera to
67
+ * frame; `undefined` once the viewer has been disposed.
68
+ */
69
+ showAxes(reach: number, style?: AxesStyle): Promise<number | undefined>;
70
+ /**
71
+ * Remove the frame.
72
+ * @returns Nothing, once the axes are gone.
73
+ */
74
+ hideAxes(): Promise<void>;
59
75
  /**
60
76
  * Remove the isosurface pair.
61
77
  * @returns Nothing, once the surfaces are gone.
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAEf;AAED;;;;;GAKG;AACH,qBAAa,aAAa;;IAIxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAElB,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB;IAiBtE;;;OAGG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;;OAOG;IACH,WAAW,CACT,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAM9B;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;;;OAOG;IACH,KAAK,CACH,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,OAAO,CAAC,IAAI,CAAC;IAMhB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,kEAAkE;IAClE,YAAY,IAAI,IAAI;IAKpB;;;OAGG;IACH,OAAO,IAAI,IAAI;CAkChB"}
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,WAAW,EACtB,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAEf;AAED;;;;;GAKG;AACH,qBAAa,aAAa;;IAIxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAElB,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,oBAAyB;IAiBtE;;;OAGG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;;;;;OAOG;IACH,WAAW,CACT,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAM9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIvE;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;;;OAOG;IACH,KAAK,CACH,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,SAA0B,GACnC,OAAO,CAAC,IAAI,CAAC;IAMhB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,kEAAkE;IAClE,YAAY,IAAI,IAAI;IAKpB;;;OAGG;IACH,OAAO,IAAI,IAAI;CAkChB"}
@@ -16,7 +16,8 @@ import { PluginViewModel } from 'molstar/lib/extensions/plugin/view-model.js';
16
16
  // Lowercased on import: it is a factory, not a constructor.
17
17
  import { DefaultPluginSpec as defaultPluginSpec } from 'molstar/lib/mol-plugin/spec.js';
18
18
  import { Color } from 'molstar/lib/mol-util/color/color.js';
19
- import { DEFAULT_CAMERA_DURATION, frameOrbital, setSpin } from "./camera.js";
19
+ import { DEFAULT_CAMERA_DURATION, DEFAULT_SPIN_SPEED, frameOrbital, setSpin, } from "./camera.js";
20
+ import { clearOrbitalAxes, renderOrbitalAxes } from "./renderAxes.js";
20
21
  import { clearSampledVolume, renderSampledVolume } from "./renderVolume.js";
21
22
  /**
22
23
  * Create a viewer inside `container` and start initialising it.
@@ -73,6 +74,27 @@ export class OrbitalViewer {
73
74
  showOrbital(field, contour, style) {
74
75
  return this.#run((plugin) => renderSampledVolume(plugin, field, contour, style));
75
76
  }
77
+ /**
78
+ * Draw the labelled x, y, z frame through the origin, replacing any previous
79
+ * one.
80
+ * @param reach - How far the orbital reaches, in scene units, as
81
+ * `showOrbital` returned it.
82
+ * @param style - See {@link AxesStyle}.
83
+ * @returns How far the frame reaches, labels included, for the camera to
84
+ * frame; `undefined` once the viewer has been disposed.
85
+ */
86
+ showAxes(reach, style) {
87
+ return this.#run((plugin) => renderOrbitalAxes(plugin, reach, style));
88
+ }
89
+ /**
90
+ * Remove the frame.
91
+ * @returns Nothing, once the axes are gone.
92
+ */
93
+ hideAxes() {
94
+ return this.#run((plugin) => {
95
+ clearOrbitalAxes(plugin);
96
+ });
97
+ }
76
98
  /**
77
99
  * Remove the isosurface pair.
78
100
  * @returns Nothing, once the surfaces are gone.
@@ -101,7 +123,7 @@ export class OrbitalViewer {
101
123
  * @param speed - molstar's own spin unit.
102
124
  * @returns Nothing, once the spin has been switched.
103
125
  */
104
- setSpin(spinning, speed = 1) {
126
+ setSpin(spinning, speed = DEFAULT_SPIN_SPEED) {
105
127
  return this.#run((plugin) => {
106
128
  setSpin(plugin, spinning, speed);
107
129
  });
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../../src/orbital/ui/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE9E,4DAA4D;AAC5D,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAK5D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACZ,OAAO,GACR,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAW5E;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAsB,EACtB,UAAgC,EAAE;IAElC,OAAO,IAAI,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IACf,MAAM,CAAkB;IACjC,SAAS,GAAG,KAAK,CAAC;IAElB,0EAA0E;IACjE,KAAK,CAAgB;IAE9B,YAAY,SAAsB,EAAE,UAAgC,EAAE;QACpE,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;QAC3C,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;YAChC,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,QAAQ,EAAE;oBACR,GAAG,IAAI,CAAC,QAAQ;oBAChB,QAAQ,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;oBAC7D,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE;iBAC1D;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CACT,KAAkB,EAClB,OAAuB,EACvB,KAAmB;QAEnB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1B,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CACnD,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAa,EAAE,KAAiB;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CACH,aAAsB,EACtB,UAAU,GAAG,uBAAuB;QAEpC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,QAAiB,EAAE,KAAK,GAAG,kBAAkB;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,YAAY;QACV,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,oDAAoD;QACpD,KAAK,IAAI,CAAC,KAAK;aACZ,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACtB,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CACR,MAA2D;QAE3D,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACrC,MAAM,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,SAAS,CAAC;YACrC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * What each family is called, and the colour it takes.
3
+ *
4
+ * Ten hues that stay distinguishable under deuteranopia and protanopia, and
5
+ * that keep the metals warm and the non-metals cool the way a wall chart does.
6
+ * Each is paired at load with the ink that stays readable on it, so a cell
7
+ * never has to compute a contrast while it renders.
8
+ */
9
+ import type { Swatch } from '../../color/core/scale.ts';
10
+ import type { ElementCategory } from './elements.ts';
11
+ /** Families in the order a legend lists them, which is the order of the table. */
12
+ export declare const CATEGORY_ORDER: readonly ElementCategory[];
13
+ /** What each family is called in a legend. */
14
+ export declare const CATEGORY_LABELS: Record<ElementCategory, string>;
15
+ /** The colour of each family, with the ink that stays readable on it. */
16
+ export declare const CATEGORY_SWATCHES: Record<ElementCategory, Swatch>;
17
+ /** Shown for a cell whose family is unknown. */
18
+ export declare const UNKNOWN_SWATCH: Swatch;
19
+ /**
20
+ * The swatch of one family.
21
+ * @param category - Family to look up.
22
+ * @returns Its colour and the ink to write on it.
23
+ */
24
+ export declare function categorySwatch(category: ElementCategory): Swatch;
25
+ //# sourceMappingURL=categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../../src/periodic/core/categories.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,SAAS,eAAe,EAWpD,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAW3D,CAAC;AAeF,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CASxB,CAAC;AAIvC,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,MAG5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEhE"}