react-cheminfo 0.66.0 → 0.68.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 (291) hide show
  1. package/README.md +22 -11
  2. package/lib/download/ui/FigureDownloadPanel.d.ts +7 -1
  3. package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -1
  4. package/lib/download/ui/FigureDownloadPanel.js +2 -2
  5. package/lib/download/ui/FigureDownloadPanel.js.map +1 -1
  6. package/lib/ecosystem/core/sites.js +6 -6
  7. package/lib/ecosystem/core/sites.js.map +1 -1
  8. package/lib/ecosystem/core/types.d.ts +1 -1
  9. package/lib/ecosystem/core/types.d.ts.map +1 -1
  10. package/lib/ecosystem/ui/glyphs.js +2 -2
  11. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  12. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  13. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  14. package/lib/i18n/core/messageCatalog.d.ts +2 -2
  15. package/lib/i18n/vite/localeCatalog.d.ts +1 -1
  16. package/lib/ir/core/index.d.ts +2 -2
  17. package/lib/ir/core/index.d.ts.map +1 -1
  18. package/lib/ir/core/index.js.map +1 -1
  19. package/lib/ir/core/irEditorApi.d.ts +12 -0
  20. package/lib/ir/core/irEditorApi.d.ts.map +1 -1
  21. package/lib/ir/core/irReducer.d.ts +2 -2
  22. package/lib/ir/core/irReducer.d.ts.map +1 -1
  23. package/lib/ir/core/irSidePanels.d.ts +7 -1
  24. package/lib/ir/core/irSidePanels.d.ts.map +1 -1
  25. package/lib/ir/core/irState.d.ts +8 -5
  26. package/lib/ir/core/irState.d.ts.map +1 -1
  27. package/lib/ir/core/irState.js.map +1 -1
  28. package/lib/ir/ui/IrCanvas.d.ts +7 -0
  29. package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
  30. package/lib/ir/ui/IrCanvas.js +8 -3
  31. package/lib/ir/ui/IrCanvas.js.map +1 -1
  32. package/lib/ir/ui/IrChart.d.ts.map +1 -1
  33. package/lib/ir/ui/IrChart.js +5 -1
  34. package/lib/ir/ui/IrChart.js.map +1 -1
  35. package/lib/ir/ui/IrEditor.d.ts +22 -4
  36. package/lib/ir/ui/IrEditor.d.ts.map +1 -1
  37. package/lib/ir/ui/IrEditor.js.map +1 -1
  38. package/lib/ir/ui/IrShell.d.ts +9 -1
  39. package/lib/ir/ui/IrShell.d.ts.map +1 -1
  40. package/lib/ir/ui/IrShell.js +4 -19
  41. package/lib/ir/ui/IrShell.js.map +1 -1
  42. package/lib/ir/ui/IrSidePanel.d.ts +11 -0
  43. package/lib/ir/ui/IrSidePanel.d.ts.map +1 -1
  44. package/lib/ir/ui/IrSidePanel.js +12 -3
  45. package/lib/ir/ui/IrSidePanel.js.map +1 -1
  46. package/lib/ir/ui/RamanEditor.d.ts +22 -4
  47. package/lib/ir/ui/RamanEditor.d.ts.map +1 -1
  48. package/lib/ir/ui/RamanEditor.js.map +1 -1
  49. package/lib/ir/ui/VibrationalEditor.d.ts +18 -4
  50. package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -1
  51. package/lib/ir/ui/VibrationalEditor.js +4 -2
  52. package/lib/ir/ui/VibrationalEditor.js.map +1 -1
  53. package/lib/ir/ui/index.d.ts +1 -0
  54. package/lib/ir/ui/index.d.ts.map +1 -1
  55. package/lib/ir/ui/index.js.map +1 -1
  56. package/lib/ir/ui/irActions.d.ts +3 -3
  57. package/lib/ir/ui/irActions.d.ts.map +1 -1
  58. package/lib/ir/ui/irChartProps.d.ts +7 -0
  59. package/lib/ir/ui/irChartProps.d.ts.map +1 -1
  60. package/lib/ir/ui/irHostPanels.d.ts +53 -0
  61. package/lib/ir/ui/irHostPanels.d.ts.map +1 -0
  62. package/lib/ir/ui/irHostPanels.js +41 -0
  63. package/lib/ir/ui/irHostPanels.js.map +1 -0
  64. package/lib/ir/ui/useIrSide.d.ts +27 -0
  65. package/lib/ir/ui/useIrSide.d.ts.map +1 -0
  66. package/lib/ir/ui/useIrSide.js +42 -0
  67. package/lib/ir/ui/useIrSide.js.map +1 -0
  68. package/lib/ir/ui/useIrZoom.d.ts +8 -0
  69. package/lib/ir/ui/useIrZoom.d.ts.map +1 -1
  70. package/lib/ir/ui/useIrZoom.js +2 -1
  71. package/lib/ir/ui/useIrZoom.js.map +1 -1
  72. package/lib/locales/de.json +9 -1
  73. package/lib/locales/en.json +9 -1
  74. package/lib/locales/es.json +9 -1
  75. package/lib/locales/fr.json +9 -1
  76. package/lib/locales/it.json +9 -1
  77. package/lib/molecule3d/core/animatedPng.d.ts +25 -0
  78. package/lib/molecule3d/core/animatedPng.d.ts.map +1 -0
  79. package/lib/molecule3d/core/animatedPng.js +59 -0
  80. package/lib/molecule3d/core/animatedPng.js.map +1 -0
  81. package/lib/molecule3d/core/file.d.ts +24 -0
  82. package/lib/molecule3d/core/file.d.ts.map +1 -0
  83. package/lib/molecule3d/core/file.js +2 -0
  84. package/lib/molecule3d/core/file.js.map +1 -0
  85. package/lib/molecule3d/core/index.d.ts +4 -1
  86. package/lib/molecule3d/core/index.d.ts.map +1 -1
  87. package/lib/molecule3d/core/index.js +1 -0
  88. package/lib/molecule3d/core/index.js.map +1 -1
  89. package/lib/molecule3d/core/settings.d.ts +0 -7
  90. package/lib/molecule3d/core/settings.d.ts.map +1 -1
  91. package/lib/molecule3d/core/settings.js.map +1 -1
  92. package/lib/molecule3d/ui/Molecule3DExport.d.ts +10 -2
  93. package/lib/molecule3d/ui/Molecule3DExport.d.ts.map +1 -1
  94. package/lib/molecule3d/ui/Molecule3DExport.js +15 -2
  95. package/lib/molecule3d/ui/Molecule3DExport.js.map +1 -1
  96. package/lib/molecule3d/ui/Molecule3DToolbar.js +9 -2
  97. package/lib/molecule3d/ui/Molecule3DToolbar.js.map +1 -1
  98. package/lib/molecule3d/ui/MoleculeCanvas3D.d.ts.map +1 -1
  99. package/lib/molecule3d/ui/MoleculeCanvas3D.js +23 -41
  100. package/lib/molecule3d/ui/MoleculeCanvas3D.js.map +1 -1
  101. package/lib/molecule3d/ui/drawScene.d.ts +2 -1
  102. package/lib/molecule3d/ui/drawScene.d.ts.map +1 -1
  103. package/lib/molecule3d/ui/drawScene.js.map +1 -1
  104. package/lib/molecule3d/ui/exportMoleculeImage.d.ts +15 -1
  105. package/lib/molecule3d/ui/exportMoleculeImage.d.ts.map +1 -1
  106. package/lib/molecule3d/ui/exportMoleculeImage.js +14 -2
  107. package/lib/molecule3d/ui/exportMoleculeImage.js.map +1 -1
  108. package/lib/molecule3d/ui/moleculeFrames.d.ts +47 -0
  109. package/lib/molecule3d/ui/moleculeFrames.d.ts.map +1 -0
  110. package/lib/molecule3d/ui/moleculeFrames.js +65 -0
  111. package/lib/molecule3d/ui/moleculeFrames.js.map +1 -0
  112. package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts +14 -1
  113. package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts.map +1 -1
  114. package/lib/molecule3d/ui/renderMolecule.d.ts +3 -3
  115. package/lib/molecule3d/ui/renderMolecule.d.ts.map +1 -1
  116. package/lib/molecule3d/ui/renderMolecule.js +2 -1
  117. package/lib/molecule3d/ui/renderMolecule.js.map +1 -1
  118. package/lib/molecule3d/ui/sceneDrawer.d.ts +2 -1
  119. package/lib/molecule3d/ui/sceneDrawer.d.ts.map +1 -1
  120. package/lib/molecule3d/ui/sceneDrawer.js +9 -1
  121. package/lib/molecule3d/ui/sceneDrawer.js.map +1 -1
  122. package/lib/molecule3d/ui/useImageExport.d.ts +8 -3
  123. package/lib/molecule3d/ui/useImageExport.d.ts.map +1 -1
  124. package/lib/molecule3d/ui/useImageExport.js +13 -4
  125. package/lib/molecule3d/ui/useImageExport.js.map +1 -1
  126. package/lib/molecule3d/ui/useMoleculeScene.d.ts +2 -1
  127. package/lib/molecule3d/ui/useMoleculeScene.d.ts.map +1 -1
  128. package/lib/molecule3d/ui/useMoleculeScene.js.map +1 -1
  129. package/lib/molecule3d/ui/useMoleculeViewer.d.ts +16 -0
  130. package/lib/molecule3d/ui/useMoleculeViewer.d.ts.map +1 -0
  131. package/lib/molecule3d/ui/useMoleculeViewer.js +37 -0
  132. package/lib/molecule3d/ui/useMoleculeViewer.js.map +1 -0
  133. package/lib/molecule3d/ui/usePolarSurfaceArea.d.ts +3 -3
  134. package/lib/molecule3d/ui/usePolarSurfaceArea.d.ts.map +1 -1
  135. package/lib/molecule3d/ui/usePolarSurfaceArea.js +4 -3
  136. package/lib/molecule3d/ui/usePolarSurfaceArea.js.map +1 -1
  137. package/lib/molecule3d/ui/viewer.d.ts +4 -1
  138. package/lib/molecule3d/ui/viewer.d.ts.map +1 -1
  139. package/lib/molecule3d/ui/viewer.js +21 -19
  140. package/lib/molecule3d/ui/viewer.js.map +1 -1
  141. package/lib/molecule3d/ui/viewerTypes.d.ts +6 -0
  142. package/lib/molecule3d/ui/viewerTypes.d.ts.map +1 -1
  143. package/lib/molstar/core/captureScene.d.ts +19 -1
  144. package/lib/molstar/core/captureScene.d.ts.map +1 -1
  145. package/lib/molstar/core/captureScene.js +57 -2
  146. package/lib/molstar/core/captureScene.js.map +1 -1
  147. package/lib/molstar/core/index.d.ts +5 -2
  148. package/lib/molstar/core/index.d.ts.map +1 -1
  149. package/lib/molstar/core/index.js +4 -2
  150. package/lib/molstar/core/index.js.map +1 -1
  151. package/lib/molstar/core/trajectory.d.ts +56 -0
  152. package/lib/molstar/core/trajectory.d.ts.map +1 -0
  153. package/lib/molstar/core/trajectory.js +96 -0
  154. package/lib/molstar/core/trajectory.js.map +1 -0
  155. package/lib/panel/ui/PanelRail.d.ts.map +1 -1
  156. package/lib/panel/ui/PanelRail.js +1 -1
  157. package/lib/panel/ui/PanelRail.js.map +1 -1
  158. package/lib/raman.d.ts +2 -1
  159. package/lib/raman.d.ts.map +1 -1
  160. package/lib/raman.js.map +1 -1
  161. package/lib/router/core/basePath.d.ts +2 -2
  162. package/lib/router/core/basePath.js +2 -2
  163. package/lib/router/core/siteAddresses.d.ts +1 -1
  164. package/lib/router/core/siteAddresses.js +1 -1
  165. package/lib/seo/core/siteFiles.js +1 -1
  166. package/lib/seo/core/siteFiles.js.map +1 -1
  167. package/lib/server/answerAddresses.d.ts +3 -3
  168. package/lib/server/answerAddresses.js +3 -3
  169. package/lib/structure/core/index.d.ts +2 -0
  170. package/lib/structure/core/index.d.ts.map +1 -1
  171. package/lib/structure/core/index.js +1 -0
  172. package/lib/structure/core/index.js.map +1 -1
  173. package/lib/structure/core/structureTransfer.d.ts +29 -0
  174. package/lib/structure/core/structureTransfer.d.ts.map +1 -0
  175. package/lib/structure/core/structureTransfer.js +26 -0
  176. package/lib/structure/core/structureTransfer.js.map +1 -0
  177. package/lib/structure/ui/EditorImportButton.d.ts +20 -0
  178. package/lib/structure/ui/EditorImportButton.d.ts.map +1 -0
  179. package/lib/structure/ui/EditorImportButton.js +24 -0
  180. package/lib/structure/ui/EditorImportButton.js.map +1 -0
  181. package/lib/structure/ui/EditorImportProblem.d.ts +17 -0
  182. package/lib/structure/ui/EditorImportProblem.d.ts.map +1 -0
  183. package/lib/structure/ui/EditorImportProblem.js +32 -0
  184. package/lib/structure/ui/EditorImportProblem.js.map +1 -0
  185. package/lib/structure/ui/StructureDrop.d.ts +39 -0
  186. package/lib/structure/ui/StructureDrop.d.ts.map +1 -0
  187. package/lib/structure/ui/StructureDrop.js +19 -0
  188. package/lib/structure/ui/StructureDrop.js.map +1 -0
  189. package/lib/structure/ui/StructureDropOverlay.d.ts +16 -0
  190. package/lib/structure/ui/StructureDropOverlay.d.ts.map +1 -0
  191. package/lib/structure/ui/StructureDropOverlay.js +29 -0
  192. package/lib/structure/ui/StructureDropOverlay.js.map +1 -0
  193. package/lib/structure/ui/StructureEditor.d.ts +3 -80
  194. package/lib/structure/ui/StructureEditor.d.ts.map +1 -1
  195. package/lib/structure/ui/StructureEditor.js +21 -33
  196. package/lib/structure/ui/StructureEditor.js.map +1 -1
  197. package/lib/structure/ui/importedStructure.d.ts +25 -0
  198. package/lib/structure/ui/importedStructure.d.ts.map +1 -0
  199. package/lib/structure/ui/importedStructure.js +74 -0
  200. package/lib/structure/ui/importedStructure.js.map +1 -0
  201. package/lib/structure/ui/index.d.ts +2 -0
  202. package/lib/structure/ui/index.d.ts.map +1 -1
  203. package/lib/structure/ui/index.js +1 -0
  204. package/lib/structure/ui/index.js.map +1 -1
  205. package/lib/structure/ui/structureEditorProps.d.ts +98 -0
  206. package/lib/structure/ui/structureEditorProps.d.ts.map +1 -0
  207. package/lib/structure/ui/structureEditorProps.js +2 -0
  208. package/lib/structure/ui/structureEditorProps.js.map +1 -0
  209. package/lib/structure/ui/useDebouncedChange.d.ts +16 -0
  210. package/lib/structure/ui/useDebouncedChange.d.ts.map +1 -0
  211. package/lib/structure/ui/useDebouncedChange.js +30 -0
  212. package/lib/structure/ui/useDebouncedChange.js.map +1 -0
  213. package/lib/structure/ui/useStructureDrop.d.ts +30 -0
  214. package/lib/structure/ui/useStructureDrop.d.ts.map +1 -0
  215. package/lib/structure/ui/useStructureDrop.js +49 -0
  216. package/lib/structure/ui/useStructureDrop.js.map +1 -0
  217. package/lib/structure/ui/useStructureImport.d.ts +45 -0
  218. package/lib/structure/ui/useStructureImport.d.ts.map +1 -0
  219. package/lib/structure/ui/useStructureImport.js +62 -0
  220. package/lib/structure/ui/useStructureImport.js.map +1 -0
  221. package/package.json +6 -3
  222. package/src/download/ui/FigureDownloadPanel.tsx +9 -2
  223. package/src/ecosystem/core/sites.ts +6 -6
  224. package/src/ecosystem/core/types.ts +2 -2
  225. package/src/ecosystem/ui/glyphs.tsx +2 -2
  226. package/src/i18n/core/messageCatalog.ts +2 -2
  227. package/src/i18n/vite/localeCatalog.ts +1 -1
  228. package/src/ir/core/index.ts +6 -2
  229. package/src/ir/core/irEditorApi.ts +13 -0
  230. package/src/ir/core/irReducer.ts +2 -2
  231. package/src/ir/core/irSidePanels.ts +8 -1
  232. package/src/ir/core/irState.ts +8 -5
  233. package/src/ir/ui/IrCanvas.tsx +27 -2
  234. package/src/ir/ui/IrChart.tsx +11 -0
  235. package/src/ir/ui/IrEditor.tsx +22 -4
  236. package/src/ir/ui/IrShell.tsx +21 -22
  237. package/src/ir/ui/IrSidePanel.tsx +36 -10
  238. package/src/ir/ui/RamanEditor.tsx +22 -4
  239. package/src/ir/ui/VibrationalEditor.tsx +24 -5
  240. package/src/ir/ui/index.ts +1 -0
  241. package/src/ir/ui/irActions.ts +3 -3
  242. package/src/ir/ui/irChartProps.ts +7 -0
  243. package/src/ir/ui/irHostPanels.ts +76 -0
  244. package/src/ir/ui/useIrSide.ts +60 -0
  245. package/src/ir/ui/useIrZoom.ts +10 -0
  246. package/src/locales/de.json +9 -1
  247. package/src/locales/en.json +9 -1
  248. package/src/locales/es.json +9 -1
  249. package/src/locales/fr.json +9 -1
  250. package/src/locales/it.json +9 -1
  251. package/src/molecule3d/core/animatedPng.ts +79 -0
  252. package/src/molecule3d/core/file.ts +23 -0
  253. package/src/molecule3d/core/index.ts +3 -1
  254. package/src/molecule3d/core/settings.ts +0 -8
  255. package/src/molecule3d/ui/Molecule3DExport.tsx +43 -5
  256. package/src/molecule3d/ui/Molecule3DToolbar.tsx +9 -2
  257. package/src/molecule3d/ui/MoleculeCanvas3D.tsx +24 -38
  258. package/src/molecule3d/ui/drawScene.ts +2 -1
  259. package/src/molecule3d/ui/exportMoleculeImage.ts +28 -3
  260. package/src/molecule3d/ui/moleculeFrames.ts +88 -0
  261. package/src/molecule3d/ui/moleculeViewer3DProps.ts +14 -5
  262. package/src/molecule3d/ui/renderMolecule.ts +5 -3
  263. package/src/molecule3d/ui/sceneDrawer.ts +14 -2
  264. package/src/molecule3d/ui/useImageExport.ts +22 -5
  265. package/src/molecule3d/ui/useMoleculeScene.ts +2 -1
  266. package/src/molecule3d/ui/useMoleculeViewer.ts +46 -0
  267. package/src/molecule3d/ui/usePolarSurfaceArea.ts +6 -4
  268. package/src/molecule3d/ui/viewer.ts +34 -27
  269. package/src/molecule3d/ui/viewerTypes.ts +6 -0
  270. package/src/molstar/core/captureScene.ts +85 -2
  271. package/src/molstar/core/index.ts +13 -2
  272. package/src/molstar/core/trajectory.ts +117 -0
  273. package/src/panel/ui/PanelRail.tsx +3 -0
  274. package/src/raman.ts +2 -1
  275. package/src/router/core/basePath.ts +2 -2
  276. package/src/router/core/siteAddresses.ts +1 -1
  277. package/src/seo/core/siteFiles.ts +1 -1
  278. package/src/server/answerAddresses.ts +3 -3
  279. package/src/structure/core/index.ts +8 -0
  280. package/src/structure/core/structureTransfer.ts +37 -0
  281. package/src/structure/ui/EditorImportButton.tsx +59 -0
  282. package/src/structure/ui/EditorImportProblem.tsx +63 -0
  283. package/src/structure/ui/StructureDrop.tsx +66 -0
  284. package/src/structure/ui/StructureDropOverlay.tsx +50 -0
  285. package/src/structure/ui/StructureEditor.tsx +49 -134
  286. package/src/structure/ui/importedStructure.ts +83 -0
  287. package/src/structure/ui/index.ts +2 -0
  288. package/src/structure/ui/structureEditorProps.ts +103 -0
  289. package/src/structure/ui/useDebouncedChange.ts +41 -0
  290. package/src/structure/ui/useStructureDrop.ts +76 -0
  291. package/src/structure/ui/useStructureImport.ts +122 -0
@@ -1,3 +1,5 @@
1
+ export type { RgbaFrame } from './animatedPng.ts';
2
+ export { DEFAULT_FRAMES_PER_SECOND, encodeAnimatedPng } from './animatedPng.ts';
1
3
  export type { Molecule3DCamera, Molecule3DRotation, Molecule3DVector, } from './camera.ts';
2
4
  export { DEFAULT_MOLECULE_3D_CAMERA, MOLECULE_3D_ZOOM_RANGE, formatMolecule3DCamera, molecule3DCameraParam, normalizeMolecule3DCamera, parseMolecule3DCamera, sameMolecule3DCamera, } from './camera.ts';
3
5
  export type { ImageSize } from './exportImage.ts';
@@ -8,6 +10,7 @@ export type { HighlightedBond, HighlightedParts, Molecule3DHighlight, } from './
8
10
  export { highlightedParts, sameHighlights } from './highlight.ts';
9
11
  export type { AtomReference, Measurement, MeasurementKind, } from './measurement.ts';
10
12
  export { MEASUREMENT_ATOM_COUNTS, MEASUREMENT_KINDS, MEASUREMENT_LABELS, sameMeasurements, } from './measurement.ts';
11
- export type { Molecule3DFile, Molecule3DSettings, Molecule3DTools, RepresentationId, SurfaceColoringId, } from './settings.ts';
13
+ export type { Molecule3DFile } from './file.ts';
14
+ export type { Molecule3DSettings, Molecule3DTools, RepresentationId, SurfaceColoringId, } from './settings.ts';
12
15
  export { DEFAULT_MOLECULE_3D_SETTINGS, DEFAULT_MOLECULE_3D_TOOLS, MOLECULE_3D_RANGES, REPRESENTATIONS, REPRESENTATION_LABELS, SURFACE_CHARGE_COLORS, SURFACE_COLORINGS, SURFACE_COLORING_LABELS, isRepresentationId, isSurfaceColoringId, normalizeMolecule3DSettings, resetMolecule3DSettings, resolveMolecule3DTools, sameMolecule3DSettings, } from './settings.ts';
13
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,YAAY,EACV,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,YAAY,EACV,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,eAAe,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { DEFAULT_FRAMES_PER_SECOND, encodeAnimatedPng } from "./animatedPng.js";
1
2
  export { DEFAULT_MOLECULE_3D_CAMERA, MOLECULE_3D_ZOOM_RANGE, formatMolecule3DCamera, molecule3DCameraParam, normalizeMolecule3DCamera, parseMolecule3DCamera, sameMolecule3DCamera, } from "./camera.js";
2
3
  export { dataUriBytes, rasterSvgMarkup } from "./exportImage.js";
3
4
  export { MOLECULE_3D_GESTURES } from "./gestures.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/molecule3d/core/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAMrD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMlE,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/molecule3d/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAMhF,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAMrD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMlE,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,eAAe,CAAC"}
@@ -2,13 +2,6 @@
2
2
  * The display settings of the 3D molecule viewer and the toolbar it carries,
3
3
  * free of React and molstar so a site can persist and validate them.
4
4
  */
5
- /** A molfile for the viewer, with the parser molstar has to read it with. */
6
- export interface Molecule3DFile {
7
- /** molstar's format id: `mol` reads V2000, `sdf` reads V2000 and V3000. */
8
- format: 'mol' | 'sdf';
9
- /** The molfile text. It must carry 3D coordinates. */
10
- data: string;
11
- }
12
5
  /** Ways the model can be drawn, in the order the picker offers them. */
13
6
  export declare const REPRESENTATIONS: readonly ["ball-and-stick", "spacefill", "stick"];
14
7
  /** One of {@link REPRESENTATIONS}. */
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/core/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wEAAwE;AACxE,eAAO,MAAM,eAAe,mDAIlB,CAAC;AAEX,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAIlE,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,6CAA8C,CAAC;AAE7E,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAIrE,CAAC;AAEF,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,gBAAgB,CAAC;IACjC,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,EAAE,iBAAiB,CAAC;IACnC,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,sDAAsD;AACtD,eAAO,MAAM,4BAA4B,EAAE,kBAS1C,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAIrB,CAAC;AAEX,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;CACf;AAED,qBAAqB;AACrB,eAAO,MAAM,yBAAyB,EAAE,eASvC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAK3E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAK7E;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACzC,kBAAkB,CA4BpB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,kBAAiD,GAC1D,kBAAkB,CAEpB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAUT;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,GAAE,OAAO,CAAC,eAAe,CAAM,GACnC,eAAe,CAEjB"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/core/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wEAAwE;AACxE,eAAO,MAAM,eAAe,mDAIlB,CAAC;AAEX,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,iDAAiD;AACjD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAIlE,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,6CAA8C,CAAC;AAE7E,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAIrE,CAAC;AAEF,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,gBAAgB,CAAC;IACjC,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;IACrB,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,EAAE,iBAAiB,CAAC;IACnC,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,sDAAsD;AACtD,eAAO,MAAM,4BAA4B,EAAE,kBAS1C,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAIrB,CAAC;AAEX,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,uDAAuD;IACvD,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAC;CACf;AAED,qBAAqB;AACrB,eAAO,MAAM,yBAAyB,EAAE,eASvC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAK3E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAK7E;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,GAAE,OAAO,CAAC,kBAAkB,CAAM,GACzC,kBAAkB,CA4BpB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,GAAE,kBAAiD,GAC1D,kBAAkB,CAEpB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAUT;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,GAAE,OAAO,CAAC,eAAe,CAAM,GACnC,eAAe,CAEjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/molecule3d/core/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/molecule3d/core/settings.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,18 @@ import type { FigurePixels } from '../../download/core/figureScale.ts';
10
10
  export interface Molecule3DExportProps {
11
11
  /** Reads the size of the canvas on screen, when the popover opens. */
12
12
  getSize: () => FigurePixels | null;
13
- /** Writes the file. */
14
- onExport: (format: FigureFormat, scale: number) => Promise<void>;
13
+ /**
14
+ * Writes the file: every frame, as an animated PNG, when `animated` is set.
15
+ */
16
+ onExport: (format: FigureFormat, scale: number, animated: boolean) => Promise<void>;
15
17
  /** Puts a PNG at that scale on the clipboard, and says what came of it. */
16
18
  onCopy: (scale: number) => Promise<FigureNotice>;
19
+ /**
20
+ * How many frames the scene holds. Above one, a PNG may hold them all, as an
21
+ * animation.
22
+ * @default 1
23
+ */
24
+ frameCount?: number;
17
25
  }
18
26
  /**
19
27
  * The export panel.
@@ -1 +1 @@
1
- {"version":3,"file":"Molecule3DExport.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DExport.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AASvE,yCAAyC;AACzC,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACnC,uBAAuB;IACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,2EAA2E;IAC3E,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CAClD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAiC3E"}
1
+ {"version":3,"file":"Molecule3DExport.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DExport.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAUvE,yCAAyC;AACzC,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACnC;;OAEG;IACH,QAAQ,EAAE,CACR,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,2EAA2E;IAC3E,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAuD3E"}
@@ -4,17 +4,21 @@ import { DEFAULT_FIGURE_SCALE, FIGURE_SCALES, } from "../../download/core/figure
4
4
  import { FigureDownloadPanel } from "../../download/ui/FigureDownloadPanel.js";
5
5
  import { useFigureTask } from "../../download/ui/useFigureTask.js";
6
6
  import { useChromeT } from "../../i18n/ui/useT.js";
7
+ import { OverlaySegmented } from "../../overlay/ui/OverlaySegmented.js";
7
8
  /**
8
9
  * The export panel.
9
10
  * @param props - See {@link Molecule3DExportProps}.
10
11
  * @returns The panel.
11
12
  */
12
13
  export function Molecule3DExport(props) {
13
- const { getSize, onExport, onCopy } = props;
14
+ const { getSize, onExport, onCopy, frameCount = 1 } = props;
14
15
  const t = useChromeT();
15
16
  const [size] = useState(getSize);
16
17
  const [format, setFormat] = useState('png');
17
18
  const [scale, setScale] = useState(DEFAULT_FIGURE_SCALE);
19
+ const [frames, setFrames] = useState('all');
20
+ const offerFrames = frameCount > 1 && format === 'png';
21
+ const animated = offerFrames && frames === 'all';
18
22
  const { run, busy, failure, notice, clear } = useFigureTask();
19
23
  // What the last copy came to only describes the choices it was made with.
20
24
  function changed(apply) {
@@ -23,6 +27,15 @@ export function Molecule3DExport(props) {
23
27
  apply(value);
24
28
  };
25
29
  }
26
- return (_jsx(FigureDownloadPanel, { title: t('molecule3d.exportImage'), format: format, scale: scale, scales: FIGURE_SCALES, size: size, failure: failure, notice: notice, saving: busy, rasterSvg: true, onFormatChange: changed(setFormat), onScaleChange: changed(setScale), onSave: () => run(onExport(format, scale).then(() => null)), onCopy: () => run(onCopy(scale)) }));
30
+ return (_jsx(FigureDownloadPanel, { title: t('molecule3d.exportImage'), format: format, scale: scale, scales: FIGURE_SCALES, size: size, failure: failure, notice: notice, saving: busy, rasterSvg: true, onFormatChange: changed(setFormat), onScaleChange: changed(setScale), onSave: () => run(onExport(format, scale, animated).then(() => null)), onCopy: () => run(onCopy(scale)), children: offerFrames && (_jsx(OverlaySegmented, { label: t('molecule3d.frames'), help: {
31
+ title: t('molecule3d.frames'),
32
+ body: t('molecule3d.framesHelp'),
33
+ }, value: frames, options: [
34
+ { value: 'one', label: t('molecule3d.frames.one') },
35
+ {
36
+ value: 'all',
37
+ label: t('molecule3d.frames.all', { count: frameCount }),
38
+ },
39
+ ], onChange: changed(setFrames) })) }));
27
40
  }
28
41
  //# sourceMappingURL=Molecule3DExport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Molecule3DExport.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DExport.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,EACL,oBAAoB,EACpB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA2C,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAYnD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC5C,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IAE9D,0EAA0E;IAC1E,SAAS,OAAO,CAAI,KAAyB;QAC3C,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,mBAAmB,IAClB,KAAK,EAAE,CAAC,CAAC,wBAAwB,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,EACZ,SAAS,QACT,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,EAClC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,EAChC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAC3D,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAChC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Molecule3DExport.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DExport.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,EACL,oBAAoB,EACpB,aAAa,GACd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA2C,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAuC,CAAC;AAwBzE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IAC5D,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAc,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC;IACvD,MAAM,QAAQ,GAAG,WAAW,IAAI,MAAM,KAAK,KAAK,CAAC;IACjD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC;IAE9D,0EAA0E;IAC1E,SAAS,OAAO,CAAI,KAAyB;QAC3C,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,mBAAmB,IAClB,KAAK,EAAE,CAAC,CAAC,wBAAwB,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,IAAI,EACZ,SAAS,QACT,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,EAClC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,EAChC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EACrE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAE/B,WAAW,IAAI,CACd,KAAC,gBAAgB,IACf,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAC7B,IAAI,EAAE;gBACJ,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC;gBAC7B,IAAI,EAAE,CAAC,CAAC,uBAAuB,CAAC;aACjC,EACD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC,EAAE;gBACnD;oBACE,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,CAAC,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;iBACzD;aACF,EACD,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,GAC5B,CACH,GACmB,CACvB,CAAC;AACJ,CAAC"}
@@ -59,11 +59,18 @@ export function Molecule3DToolbar(props) {
59
59
  } }, kind))), _jsx(Toolbar.Item, { icon: _jsx(ClearMeasurementsIcon, {}), disabled: measurementCount === 0, "aria-label": t('molecule3d.clearMeasurements'), tooltip: t('molecule3d.clearMeasurements'), tooltipProps: TOOLTIP_PROPS, onClick: onClearMeasurements })] }) }))] }));
60
60
  }
61
61
  const TOOLTIP_PROPS = { placement: 'right' };
62
+ // A canvas too short for both cards puts the second one beside the first,
63
+ // rather than cutting it off; the column itself lets clicks through to the
64
+ // canvas between and below the cards.
62
65
  const COLUMN_STYLE = {
63
66
  display: 'flex',
64
67
  flexDirection: 'column',
68
+ flexWrap: 'wrap',
69
+ alignContent: 'flex-start',
70
+ alignItems: 'flex-start',
65
71
  gap: 6,
66
- pointerEvents: 'auto',
72
+ height: '100%',
73
+ pointerEvents: 'none',
67
74
  };
68
- const CARD_STYLE = { padding: 0 };
75
+ const CARD_STYLE = { padding: 0, pointerEvents: 'auto' };
69
76
  //# sourceMappingURL=Molecule3DToolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Molecule3DToolbar.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DToolbar.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAsB,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,GACZ,MAAM,sBAAuB,CAAC;AAoC/B;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EACJ,KAAK,EAAE,SAAS,EAChB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,OAAO,EACP,WAAW,EACX,UAAU,GACX,GAAG,KAAK,CAAC;IACV,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,SAAS,CAAC;IAC3D,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,IAAI,mBAAmB,KAAK,SAAS,CAAC;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,KAAK,SAAS,CAAC;IAC7D,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,IAAI,UAAU,KAAK,SAAS,CAAC;IACpE,MAAM,OAAO,GACX,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,KAAK;QACX,WAAW;QACX,UAAU;QACV,cAAc;QACd,KAAK,CAAC,IAAI,CAAC;IAEb,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,YAAY,aAC1C,OAAO,IAAI,CACV,KAAC,IAAI,IAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,YACnC,MAAC,OAAO,IAAC,QAAQ,sBAAa,CAAC,CAAC,iBAAiB,CAAC,aAC/C,KAAK,CAAC,KAAK,IAAI,CACd,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,aAAa,gBACN,CAAC,CAAC,sBAAsB,CAAC,EACrC,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAClC,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,WAAW,GACpB,CACH,EACA,KAAK,CAAC,IAAI,IAAI,CACb,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAC,SAAS,EACd,MAAM,EAAE,QAAQ,gBACJ,CAAC,CAAC,iBAAiB,CAAC,EAChC,OAAO,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAC7B,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,GAAG,EAAE;gCACZ,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC;4BAC9B,CAAC,GACD,CACH,EACA,eAAe,IAAI,CAClB,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAE,KAAC,WAAW,KAAG,EACrB,MAAM,EAAE,WAAW,IAAI,KAAK,gBAChB,CAAC,CAAC,oBAAoB,CAAC,EACnC,OAAO,EAAE,CAAC,CAAC,6BAA6B,CAAC,EACzC,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,GAAG,EAAE;gCACZ,mBAAmB,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC;4BAC5C,CAAC,GACD,CACH,EACA,WAAW,IAAI,CACd,KAAC,OAAO,CAAC,WAAW,IAClB,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE;gCACT,IAAI,EAAE,KAAK;gCACX,YAAY,EAAE,CAAC,CAAC,2BAA2B,CAAC;gCAC5C,OAAO,EAAE,CAAC,CAAC,2BAA2B,CAAC;gCACvC,YAAY,EAAE,aAAa;6BAC5B,GACD,CACH,EACA,UAAU,IAAI,CACb,KAAC,OAAO,CAAC,WAAW,IAClB,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE;gCACT,IAAI,EAAE,UAAU;gCAChB,YAAY,EAAE,CAAC,CAAC,wBAAwB,CAAC;gCACzC,OAAO,EAAE,CAAC,CAAC,wBAAwB,CAAC;gCACpC,YAAY,EAAE,aAAa;6BAC5B,GACD,CACH,EACA,cAAc,IAAI,CACjB,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EACnD,MAAM,EAAE,UAAU,CAAC,MAAM,gBACb,CAAC,CAAC,uBAAuB,CAAC,EACtC,OAAO,EAAE,CAAC,CAAC,uBAAuB,CAAC,EACnC,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,UAAU,CAAC,MAAM,GAC1B,CACH,EACA,KAAK,CAAC,IAAI,IAAI,CACb,KAAC,OAAO,CAAC,WAAW,IAClB,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,KAAC,cAAc,KAAG,EAC3B,SAAS,EAAE;gCACT,IAAI,EAAE,MAAM;gCACZ,YAAY,EAAE,CAAC,CAAC,4BAA4B,CAAC;gCAC7C,OAAO,EAAE,CAAC,CAAC,4BAA4B,CAAC;gCACxC,YAAY,EAAE,aAAa;6BAC5B,GACD,CACH,IACO,GACL,CACR,EACA,KAAK,CAAC,OAAO,IAAI,CAChB,KAAC,IAAI,IAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,YACnC,MAAC,OAAO,IAAC,QAAQ,sBAAa,CAAC,CAAC,oBAAoB,CAAC,aAClD,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC/B,KAAC,OAAO,CAAC,IAAI,IAEX,IAAI,EAAE,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI,EACjC,MAAM,EAAE,WAAW,KAAK,IAAI,gBAChB,CAAC,CAAC,EAAE,CACd,0BAA0B,IAAI,EAAE,EAChC,kBAAkB,CAAC,IAAI,CAAC,CACzB,EACD,OAAO,EAAE,CAAC,CAAC,+BAA+B,EAAE;gCAC1C,IAAI,EAAE,CAAC,CAAC,EAAE,CACR,0BAA0B,IAAI,EAAE,EAChC,kBAAkB,CAAC,IAAI,CAAC,CACzB;gCACD,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC;6BACrC,CAAC,EACF,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,GAAG,EAAE;gCACZ,mBAAmB,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BAC1D,CAAC,IAjBI,IAAI,CAkBT,CACH,CAAC,EACF,KAAC,OAAO,CAAC,IAAI,IACX,IAAI,EAAE,KAAC,qBAAqB,KAAG,EAC/B,QAAQ,EAAE,gBAAgB,KAAK,CAAC,gBACpB,CAAC,CAAC,8BAA8B,CAAC,EAC7C,OAAO,EAAE,CAAC,CAAC,8BAA8B,CAAC,EAC1C,YAAY,EAAE,aAAa,EAC3B,OAAO,EAAE,mBAAmB,GAC5B,IACM,GACL,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,EAAE,SAAS,EAAE,OAAO,EAAW,CAAC;AAEtD,MAAM,YAAY,GAAkB;IAClC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,GAAG,EAAE,CAAC;IACN,aAAa,EAAE,MAAM;CACtB,CAAC;AAEF,MAAM,UAAU,GAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"Molecule3DToolbar.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DToolbar.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MoleculeCanvas3D.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/MoleculeCanvas3D.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAiBzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOxE,yCAAyC;AACzC,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,qBAAqB,EACrB,UAAU,GAAG,mBAAmB,CACjC;IACC,2EAA2E;IAC3E,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAuK3E"}
1
+ {"version":3,"file":"MoleculeCanvas3D.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/MoleculeCanvas3D.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAiBzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAOxE,yCAAyC;AACzC,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CACjD,qBAAqB,EACrB,UAAU,GAAG,mBAAmB,CACjC;IACC,2EAA2E;IAC3E,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAwJ3E"}
@@ -1,16 +1,17 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState } from 'react';
3
3
  import { DEFAULT_SPIN_SPEED } from "../../molstar/core/index.js";
4
+ import { DEFAULT_FRAMES_PER_SECOND } from "../core/animatedPng.js";
4
5
  import { normalizeMolecule3DSettings, resolveMolecule3DTools, } from "../core/settings.js";
5
6
  import { Molecule3DExport } from "./Molecule3DExport.js";
6
7
  import { Molecule3DOptions } from "./Molecule3DOptions.js";
7
8
  import { Molecule3DStage } from "./Molecule3DStage.js";
8
9
  import { Molecule3DToolbar } from "./Molecule3DToolbar.js";
9
- import { createMolecule3DViewer } from "./createViewer.js";
10
10
  import { highlightColorOf } from "./highlightColor.js";
11
11
  import { useControlledState } from "./useControlledState.js";
12
12
  import { useImageExport } from "./useImageExport.js";
13
13
  import { useMoleculeScene } from "./useMoleculeScene.js";
14
+ import { useMoleculeViewer } from "./useMoleculeViewer.js";
14
15
  import { usePolarSurfaceArea } from "./usePolarSurfaceArea.js";
15
16
  /**
16
17
  * Mount one molstar canvas and keep it showing what the props describe.
@@ -18,64 +19,44 @@ import { usePolarSurfaceArea } from "./usePolarSurfaceArea.js";
18
19
  * @returns The canvas with its toolbars.
19
20
  */
20
21
  export function MoleculeCanvas3D(props) {
21
- const { molfile, frameNewMolecule = 'keep', tools: toolsProp, settings: settingsProp, defaultSettings, onSettingsChange, spinning: spinningProp, defaultSpinning = false, onSpinningChange, spinSpeed = DEFAULT_SPIN_SPEED, measurements: measurementsProp, onMeasurementsChange, highlights = NO_HIGHLIGHTS, fileName = 'molecule', background, minHeight = 320, onFailureChange, } = props;
22
+ const { molfile, frameNewMolecule = 'keep', tools: toolsProp, settings: settingsProp, defaultSettings, onSettingsChange, spinning: spinningProp, defaultSpinning = false, onSpinningChange, spinSpeed = DEFAULT_SPIN_SPEED, playing = false, framesPerSecond = DEFAULT_FRAMES_PER_SECOND, measurements: measurementsProp, onMeasurementsChange, highlights = NO_HIGHLIGHTS, fileName = 'molecule', background, minHeight = 320, onFailureChange, } = props;
22
23
  const tools = resolveMolecule3DTools(toolsProp);
23
24
  const [initialSettings] = useState(() => normalizeMolecule3DSettings(defaultSettings));
24
25
  const [settings, setSettings] = useControlledState(settingsProp, initialSettings, onSettingsChange);
25
26
  const [spinning, setSpinning] = useControlledState(spinningProp, defaultSpinning, onSpinningChange);
26
27
  const [measurements, setMeasurements] = useControlledState(measurementsProp, NO_MEASUREMENTS, onMeasurementsChange);
27
28
  const [measureKind, setMeasureKind] = useState(null);
29
+ const [frameCount, setFrameCount] = useState(0);
28
30
  const polarSurfaceArea = usePolarSurfaceArea(molfile, settings.surfaceColoring === 'polarity');
29
31
  // A callback ref: the element arriving is what creates the viewer, and every
30
32
  // effect keyed on it runs again, in order, after the viewer exists.
31
33
  const [container, setContainer] = useState(null);
32
- const viewerRef = useRef(null);
33
34
  // The viewer is created once, so what its callbacks read is kept fresh here.
34
- const latest = useRef({
35
- measurements,
36
- setMeasurements,
37
- onFailureChange,
38
- background,
39
- });
35
+ const latest = useRef({ measurements, setMeasurements });
40
36
  useEffect(() => {
41
- latest.current = {
42
- measurements,
43
- setMeasurements,
44
- onFailureChange,
45
- background,
46
- };
37
+ latest.current = { measurements, setMeasurements };
38
+ });
39
+ const viewerRef = useMoleculeViewer(container, {
40
+ background,
41
+ onMeasure: (measurement) => {
42
+ const current = latest.current;
43
+ current.setMeasurements([...current.measurements, measurement]);
44
+ },
45
+ onFrameCountChange: setFrameCount,
47
46
  });
48
- useEffect(() => {
49
- if (container === null)
50
- return;
51
- const viewer = createMolecule3DViewer(container, {
52
- background: latest.current.background,
53
- onMeasure: (measurement) => {
54
- const current = latest.current;
55
- current.setMeasurements([...current.measurements, measurement]);
56
- },
57
- });
58
- viewerRef.current = viewer;
59
- const observer = new ResizeObserver(() => {
60
- viewer.handleResize();
61
- });
62
- observer.observe(container);
63
- return () => {
64
- observer.disconnect();
65
- viewerRef.current = null;
66
- viewer.dispose();
67
- };
68
- }, [container]);
69
47
  useEffect(() => {
70
48
  void viewerRef.current?.setSpin(spinning, spinSpeed);
71
- }, [container, spinning, spinSpeed]);
49
+ }, [container, viewerRef, spinning, spinSpeed]);
50
+ useEffect(() => {
51
+ void viewerRef.current?.frames.play(playing, framesPerSecond);
52
+ }, [container, viewerRef, playing, framesPerSecond]);
72
53
  useEffect(() => {
73
54
  void viewerRef.current?.setMeasureKind(measureKind);
74
- }, [container, measureKind]);
55
+ }, [container, viewerRef, measureKind]);
75
56
  // Kept out of the scene: a new highlight repaints the model, never redraws it.
76
57
  useEffect(() => {
77
58
  void viewerRef.current?.setHighlights(highlights, highlightColorOf(container));
78
- }, [container, highlights]);
59
+ }, [container, viewerRef, highlights]);
79
60
  const { resetView } = useMoleculeScene({
80
61
  container,
81
62
  viewerRef,
@@ -87,12 +68,12 @@ export function MoleculeCanvas3D(props) {
87
68
  onFailureChange,
88
69
  camera: props,
89
70
  });
90
- const { canvasSize, exportImage, copyImage } = useImageExport(container, viewerRef, fileName);
71
+ const { canvasSize, exportImage, copyImage } = useImageExport(container, viewerRef, fileName, framesPerSecond);
91
72
  return (_jsx(Molecule3DStage, { style: { ...STAGE_STYLE, minHeight }, children: (fullscreen) => (_jsxs(_Fragment, { children: [_jsx("div", { ref: setContainer, style: CANVAS_STYLE, "data-testid": "molecule3d" }), molfile !== null && (_jsx("div", { style: OVERLAY_STYLE, children: _jsx(Molecule3DToolbar, { tools: tools, fullscreen: fullscreen, measureKind: measureKind, onMeasureKindChange: setMeasureKind, measurementCount: measurements.length, onClearMeasurements: () => {
92
73
  setMeasurements(NO_MEASUREMENTS);
93
74
  }, spinning: spinning, onSpinningChange: setSpinning, showSurface: settings.showSurface, onShowSurfaceChange: (showSurface) => {
94
75
  setSettings({ ...settings, showSurface });
95
- }, onResetView: resetView, options: _jsx(Molecule3DOptions, { settings: settings, onChange: setSettings, polarSurfaceArea: polarSurfaceArea, defaults: initialSettings }), exportPanel: _jsx(Molecule3DExport, { getSize: canvasSize, onExport: exportImage, onCopy: copyImage }) }) }))] })) }));
76
+ }, onResetView: resetView, options: _jsx(Molecule3DOptions, { settings: settings, onChange: setSettings, polarSurfaceArea: polarSurfaceArea, defaults: initialSettings }), exportPanel: _jsx(Molecule3DExport, { getSize: canvasSize, onExport: exportImage, onCopy: copyImage, frameCount: frameCount }) }) }))] })) }));
96
77
  }
97
78
  const NO_MEASUREMENTS = [];
98
79
  const NO_HIGHLIGHTS = [];
@@ -108,6 +89,7 @@ const CANVAS_STYLE = { position: 'absolute', inset: 0 };
108
89
  const OVERLAY_STYLE = {
109
90
  position: 'absolute',
110
91
  top: 8,
92
+ bottom: 8,
111
93
  left: 8,
112
94
  zIndex: 2,
113
95
  display: 'flex',
@@ -1 +1 @@
1
- {"version":3,"file":"MoleculeCanvas3D.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/MoleculeCanvas3D.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MoleculeCanvas3D.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/MoleculeCanvas3D.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import type { Molecule3DFile } from '../core/file.ts';
1
2
  import type { Measurement } from '../core/measurement.ts';
2
- import type { Molecule3DFile, Molecule3DSettings } from '../core/settings.ts';
3
+ import type { Molecule3DSettings } from '../core/settings.ts';
3
4
  import type { Molecule3DViewer } from './viewer.ts';
4
5
  /** The operations of the viewer a scene is drawn with. */
5
6
  export type SceneViewer = Pick<Molecule3DViewer, 'showMolecule' | 'hideMolecule' | 'showSurface' | 'showMeasurements' | 'resetCamera' | 'setCamera'>;
@@ -1 +1 @@
1
- {"version":3,"file":"drawScene.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/drawScene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,gBAAgB,EACd,cAAc,GACd,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,aAAa,GACb,WAAW,CACd,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CAqBf"}
1
+ {"version":3,"file":"drawScene.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/drawScene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,0DAA0D;AAC1D,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,gBAAgB,EACd,cAAc,GACd,cAAc,GACd,aAAa,GACb,kBAAkB,GAClB,aAAa,GACb,WAAW,CACd,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -1 +1 @@
1
- {"version":3,"file":"drawScene.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/drawScene.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAelE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB,EACnB,OAA8B,EAC9B,QAA4B,EAC5B,YAAoC,EACpC,WAAsC;IAEtC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;QACjC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,WAAW,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,eAAe;YAC9B,KAAK,EAAE,IAAI,CAAC,YAAY;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,WAAW,KAAK,MAAM;QAAE,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,WAAW,KAAK,OAAO;QAAE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"drawScene.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/drawScene.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAelE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB,EACnB,OAA8B,EAC9B,QAA4B,EAC5B,YAAoC,EACpC,WAAsC;IAEtC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;QACjC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,WAAW,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,eAAe;YAC9B,KAAK,EAAE,IAAI,CAAC,YAAY;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,WAAW,KAAK,MAAM;QAAE,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,WAAW,KAAK,OAAO;QAAE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC"}
@@ -1,9 +1,17 @@
1
1
  import type { FigureFormat } from '../../download/core/downloadFigure.ts';
2
2
  import type { ImageSize } from '../core/exportImage.ts';
3
- /** The one thing an export asks of a viewer: a picture of its scene. */
3
+ /** What an export asks of a viewer: a picture of its scene. */
4
4
  export interface SceneCapture {
5
5
  /** Render the scene at that pixel size, as a `data:` URI. */
6
6
  captureImage: (size: ImageSize) => Promise<string | undefined>;
7
+ /**
8
+ * The frames of the scene, each rendered at that pixel size, for an animated
9
+ * PNG.
10
+ * @default undefined — the viewer has a single frame to give
11
+ */
12
+ frames?: {
13
+ capture: (size: ImageSize) => Promise<ImageData[] | undefined>;
14
+ };
7
15
  }
8
16
  /** What {@link exportMoleculeImage} writes. */
9
17
  export interface MoleculeImageRequest {
@@ -14,6 +22,12 @@ export interface MoleculeImageRequest {
14
22
  size: ImageSize;
15
23
  /** File name without its extension. */
16
24
  fileName: string;
25
+ /**
26
+ * Every frame of the scene as one animated PNG, played at this many frames a
27
+ * second, rather than the frame on screen. Ignored for an SVG.
28
+ * @default undefined — the frame on screen
29
+ */
30
+ framesPerSecond?: number;
17
31
  }
18
32
  /**
19
33
  * Render the scene as a PNG, for the clipboard.
@@ -1 +1 @@
1
- {"version":3,"file":"exportMoleculeImage.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/exportMoleculeImage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAK1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAChE;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,IAAI,EAAE,SAAS,CAAC;IAChB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiBf"}
1
+ {"version":3,"file":"exportMoleculeImage.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/exportMoleculeImage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAM1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/D;;;;OAIG;IACH,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;KAChE,CAAC;CACH;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,IAAI,EAAE,SAAS,CAAC;IAChB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -3,6 +3,7 @@ import { FIGURE_PNG_TYPE } from "../../download/core/figurePng.js";
3
3
  import { figurePixels } from "../../download/core/figureScale.js";
4
4
  import { FIGURE_SVG_TYPE } from "../../download/core/figureSvg.js";
5
5
  import { sanitizeFileName } from "../../download/core/sanitizeFileName.js";
6
+ import { encodeAnimatedPng } from "../core/animatedPng.js";
6
7
  import { dataUriBytes, rasterSvgMarkup } from "../core/exportImage.js";
7
8
  /**
8
9
  * Render the scene as a PNG, for the clipboard.
@@ -26,12 +27,23 @@ export async function captureMoleculePng(viewer, scale, size) {
26
27
  * @returns Nothing; resolves once the download has been started.
27
28
  */
28
29
  export async function exportMoleculeImage(viewer, request) {
29
- const { format, scale, size, fileName } = request;
30
+ const { format, scale, size, fileName, framesPerSecond } = request;
30
31
  const pixels = figurePixels(size, scale);
32
+ const base = sanitizeFileName(fileName, 'molecule');
33
+ if (format === 'png' && framesPerSecond !== undefined) {
34
+ if (viewer.frames === undefined) {
35
+ throw new Error('This viewer has no frames to animate.');
36
+ }
37
+ const frames = await viewer.frames.capture(pixels);
38
+ if (frames === undefined)
39
+ return;
40
+ const bytes = await encodeAnimatedPng(frames, framesPerSecond);
41
+ downloadBlob(new Blob([bytes], { type: FIGURE_PNG_TYPE }), `${base}.png`);
42
+ return;
43
+ }
31
44
  const dataUri = await viewer.captureImage(pixels);
32
45
  if (dataUri === undefined)
33
46
  return;
34
- const base = sanitizeFileName(fileName, 'molecule');
35
47
  if (format === 'png') {
36
48
  downloadBlob(new Blob([dataUriBytes(dataUri)], { type: FIGURE_PNG_TYPE }), `${base}.png`);
37
49
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"exportMoleculeImage.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/exportMoleculeImage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAmBvE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAoB,EACpB,KAAa,EACb,IAAe;IAEf,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAoB,EACpB,OAA6B;IAE7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,YAAY,CACV,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAC5D,GAAG,IAAI,MAAM,CACd,CAAC;QACF,OAAO;IACT,CAAC;IACD,YAAY,CACV,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EACvE,GAAG,IAAI,MAAM,CACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"exportMoleculeImage.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/exportMoleculeImage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAiCvE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAoB,EACpB,KAAa,EACb,IAAe;IAEf,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAoB,EACpB,OAA6B;IAE7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IACnE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,KAAK,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/D,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,YAAY,CACV,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EAC5D,GAAG,IAAI,MAAM,CACd,CAAC;QACF,OAAO;IACT,CAAC;IACD,YAAY,CACV,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,EACvE,GAAG,IAAI,MAAM,CACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The frames of the file a viewer shows: how many there are, whether they
3
+ * play, and a picture of each.
4
+ *
5
+ * Kept apart from the viewer because every redraw of the scene has to go
6
+ * through it: a running animation must not step a state tree being rebuilt —
7
+ * it finds no model and stops itself — so the frames are stopped first and
8
+ * started again once the new file is drawn.
9
+ */
10
+ import type { PluginContext } from 'molstar/lib/mol-plugin/context.js';
11
+ import type { MolstarPlugin } from '../../molstar/core/index.ts';
12
+ import type { ImageSize } from '../core/exportImage.ts';
13
+ /** The frames of what one viewer shows. */
14
+ export declare class MoleculeFrames {
15
+ #private;
16
+ /**
17
+ * Follow the frames of what `plugin` draws.
18
+ * @param plugin - The canvas.
19
+ * @param onCountChange - Called with how many frames each scene drawn holds.
20
+ */
21
+ constructor(plugin: MolstarPlugin, onCountChange: (frameCount: number) => void);
22
+ /**
23
+ * Redraw the scene with the frames stopped, then report how many the new
24
+ * scene holds and play them if playback is on.
25
+ * @param plugin - The molstar context.
26
+ * @param draw - Draws the scene, and resolves with how many frames it holds.
27
+ * @returns Nothing; resolves once the scene is drawn and playing.
28
+ */
29
+ redraw(plugin: PluginContext, draw: () => Promise<number>): Promise<void>;
30
+ /**
31
+ * Play the frames in a loop, or stop them, now and for every scene drawn
32
+ * afterwards. A scene of one frame stays still.
33
+ * @param playing - Whether to play.
34
+ * @param framesPerSecond - How fast.
35
+ * @returns Nothing; resolves once the animation is started or stopped.
36
+ */
37
+ play(playing: boolean, framesPerSecond: number): Promise<void>;
38
+ /**
39
+ * Render every frame off screen, as a still picture of the scene is
40
+ * rendered. Playback pauses while they are taken.
41
+ * @param size - Pixel size of each picture.
42
+ * @returns The pictures, in order; `undefined` once the canvas is disposed.
43
+ * @throws {Error} When the plugin has no screenshot helper.
44
+ */
45
+ capture(size: ImageSize): Promise<ImageData[] | undefined>;
46
+ }
47
+ //# sourceMappingURL=moleculeFrames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculeFrames.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/moleculeFrames.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAOhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,2CAA2C;AAC3C,qBAAa,cAAc;;IASzB;;;;OAIG;gBAED,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI;IAM7C;;;;;;OAMG;IACG,MAAM,CACV,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC;CAK3D"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * The frames of the file a viewer shows: how many there are, whether they
3
+ * play, and a picture of each.
4
+ *
5
+ * Kept apart from the viewer because every redraw of the scene has to go
6
+ * through it: a running animation must not step a state tree being rebuilt —
7
+ * it finds no model and stops itself — so the frames are stopped first and
8
+ * started again once the new file is drawn.
9
+ */
10
+ import { captureFrames, setTrajectoryPlayback, stopTrajectory, } from "../../molstar/core/index.js";
11
+ import { DEFAULT_FRAMES_PER_SECOND } from "../core/animatedPng.js";
12
+ /** The frames of what one viewer shows. */
13
+ export class MoleculeFrames {
14
+ #plugin;
15
+ #onCountChange;
16
+ // Kept across redraws, so the next file plays as the last one did.
17
+ #playback = {
18
+ playing: false,
19
+ framesPerSecond: DEFAULT_FRAMES_PER_SECOND,
20
+ };
21
+ /**
22
+ * Follow the frames of what `plugin` draws.
23
+ * @param plugin - The canvas.
24
+ * @param onCountChange - Called with how many frames each scene drawn holds.
25
+ */
26
+ constructor(plugin, onCountChange) {
27
+ this.#plugin = plugin;
28
+ this.#onCountChange = onCountChange;
29
+ }
30
+ /**
31
+ * Redraw the scene with the frames stopped, then report how many the new
32
+ * scene holds and play them if playback is on.
33
+ * @param plugin - The molstar context.
34
+ * @param draw - Draws the scene, and resolves with how many frames it holds.
35
+ * @returns Nothing; resolves once the scene is drawn and playing.
36
+ */
37
+ async redraw(plugin, draw) {
38
+ await stopTrajectory(plugin);
39
+ this.#onCountChange(await draw());
40
+ const { playing, framesPerSecond } = this.#playback;
41
+ await setTrajectoryPlayback(plugin, playing, framesPerSecond);
42
+ }
43
+ /**
44
+ * Play the frames in a loop, or stop them, now and for every scene drawn
45
+ * afterwards. A scene of one frame stays still.
46
+ * @param playing - Whether to play.
47
+ * @param framesPerSecond - How fast.
48
+ * @returns Nothing; resolves once the animation is started or stopped.
49
+ */
50
+ play(playing, framesPerSecond) {
51
+ this.#playback = { playing, framesPerSecond };
52
+ return this.#plugin.run((plugin) => setTrajectoryPlayback(plugin, playing, framesPerSecond));
53
+ }
54
+ /**
55
+ * Render every frame off screen, as a still picture of the scene is
56
+ * rendered. Playback pauses while they are taken.
57
+ * @param size - Pixel size of each picture.
58
+ * @returns The pictures, in order; `undefined` once the canvas is disposed.
59
+ * @throws {Error} When the plugin has no screenshot helper.
60
+ */
61
+ capture(size) {
62
+ return this.#plugin.run((plugin) => captureFrames(plugin, size, this.#playback));
63
+ }
64
+ }
65
+ //# sourceMappingURL=moleculeFrames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculeFrames.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/moleculeFrames.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,2CAA2C;AAC3C,MAAM,OAAO,cAAc;IAChB,OAAO,CAAgB;IACvB,cAAc,CAA+B;IACtD,mEAAmE;IACnE,SAAS,GAAkB;QACzB,OAAO,EAAE,KAAK;QACd,eAAe,EAAE,yBAAyB;KAC3C,CAAC;IAEF;;;;OAIG;IACH,YACE,MAAqB,EACrB,aAA2C;QAE3C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,MAAqB,EACrB,IAA2B;QAE3B,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACpD,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,OAAgB,EAAE,eAAuB;QAC5C,IAAI,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACjC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CACxD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,IAAe;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACjC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAC5C,CAAC;IACJ,CAAC;CACF"}