react-cheminfo 0.76.0 → 0.78.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.
- package/README.md +141 -31
- package/lib/card/core/cardAddress.d.ts +19 -2
- package/lib/card/core/cardAddress.d.ts.map +1 -1
- package/lib/card/core/cardAddress.js +35 -2
- package/lib/card/core/cardAddress.js.map +1 -1
- package/lib/card/core/cardPageUrl.d.ts +7 -1
- package/lib/card/core/cardPageUrl.d.ts.map +1 -1
- package/lib/card/core/cardPageUrl.js +4 -2
- package/lib/card/core/cardPageUrl.js.map +1 -1
- package/lib/card/core/index.d.ts +1 -1
- package/lib/card/core/index.d.ts.map +1 -1
- package/lib/card/core/index.js +1 -1
- package/lib/card/core/index.js.map +1 -1
- package/lib/credits/core/credits.d.ts +30 -0
- package/lib/credits/core/credits.d.ts.map +1 -1
- package/lib/credits/core/credits.js +35 -0
- package/lib/credits/core/credits.js.map +1 -1
- package/lib/download/core/downloadFigure.d.ts +12 -1
- package/lib/download/core/downloadFigure.d.ts.map +1 -1
- package/lib/download/core/downloadFigure.js +21 -0
- package/lib/download/core/downloadFigure.js.map +1 -1
- package/lib/download/core/figureDpi.d.ts +59 -0
- package/lib/download/core/figureDpi.d.ts.map +1 -0
- package/lib/download/core/figureDpi.js +75 -0
- package/lib/download/core/figureDpi.js.map +1 -0
- package/lib/download/core/figurePng.d.ts +4 -1
- package/lib/download/core/figurePng.d.ts.map +1 -1
- package/lib/download/core/figurePng.js +11 -2
- package/lib/download/core/figurePng.js.map +1 -1
- package/lib/download/core/index.d.ts +4 -1
- package/lib/download/core/index.d.ts.map +1 -1
- package/lib/download/core/index.js +3 -1
- package/lib/download/core/index.js.map +1 -1
- package/lib/download/core/pngDpi.d.ts +22 -0
- package/lib/download/core/pngDpi.d.ts.map +1 -0
- package/lib/download/core/pngDpi.js +79 -0
- package/lib/download/core/pngDpi.js.map +1 -0
- package/lib/download/ui/FigureDownloadPanel.d.ts +13 -0
- package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -1
- package/lib/download/ui/FigureDownloadPanel.js +18 -34
- package/lib/download/ui/FigureDownloadPanel.js.map +1 -1
- package/lib/download/ui/figureDownloadHint.d.ts +5 -0
- package/lib/download/ui/figureDownloadHint.d.ts.map +1 -1
- package/lib/download/ui/figureDownloadHint.js +8 -0
- package/lib/download/ui/figureDownloadHint.js.map +1 -1
- package/lib/download/ui/figureDownloadOptions.d.ts +84 -0
- package/lib/download/ui/figureDownloadOptions.d.ts.map +1 -0
- package/lib/download/ui/figureDownloadOptions.js +2 -0
- package/lib/download/ui/figureDownloadOptions.js.map +1 -0
- package/lib/download/ui/resolutionChoices.d.ts +27 -0
- package/lib/download/ui/resolutionChoices.d.ts.map +1 -0
- package/lib/download/ui/resolutionChoices.js +48 -0
- package/lib/download/ui/resolutionChoices.js.map +1 -0
- package/lib/download/ui/useFigureActions.d.ts +4 -1
- package/lib/download/ui/useFigureActions.d.ts.map +1 -1
- package/lib/download/ui/useFigureActions.js +17 -8
- package/lib/download/ui/useFigureActions.js.map +1 -1
- package/lib/download/ui/useFigureDownload.d.ts +2 -55
- package/lib/download/ui/useFigureDownload.d.ts.map +1 -1
- package/lib/download/ui/useFigureDownload.js +45 -13
- package/lib/download/ui/useFigureDownload.js.map +1 -1
- package/lib/ecosystem/core/sites.d.ts.map +1 -1
- package/lib/ecosystem/core/sites.js +14 -0
- package/lib/ecosystem/core/sites.js.map +1 -1
- package/lib/ecosystem/core/types.d.ts +1 -1
- package/lib/ecosystem/core/types.d.ts.map +1 -1
- package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
- package/lib/ecosystem/ui/glyphs.js +3 -0
- package/lib/ecosystem/ui/glyphs.js.map +1 -1
- package/lib/host/core/connectHost.js +1 -1
- package/lib/host/core/connectHost.js.map +1 -1
- package/lib/host/core/connectTool.d.ts +103 -0
- package/lib/host/core/connectTool.d.ts.map +1 -0
- package/lib/host/core/connectTool.js +169 -0
- package/lib/host/core/connectTool.js.map +1 -0
- package/lib/host/core/hostOutputs.d.ts +16 -3
- package/lib/host/core/hostOutputs.d.ts.map +1 -1
- package/lib/host/core/hostOutputs.js +38 -4
- package/lib/host/core/hostOutputs.js.map +1 -1
- package/lib/host/core/index.d.ts +8 -2
- package/lib/host/core/index.d.ts.map +1 -1
- package/lib/host/core/index.js +4 -1
- package/lib/host/core/index.js.map +1 -1
- package/lib/host/core/kinds.d.ts +31 -3
- package/lib/host/core/kinds.d.ts.map +1 -1
- package/lib/host/core/kinds.js +35 -4
- package/lib/host/core/kinds.js.map +1 -1
- package/lib/host/core/messageValues.d.ts +29 -0
- package/lib/host/core/messageValues.d.ts.map +1 -0
- package/lib/host/core/messageValues.js +57 -0
- package/lib/host/core/messageValues.js.map +1 -0
- package/lib/host/core/protocol.d.ts +2 -5
- package/lib/host/core/protocol.d.ts.map +1 -1
- package/lib/host/core/protocol.js +3 -37
- package/lib/host/core/protocol.js.map +1 -1
- package/lib/host/core/resultKinds.d.ts +74 -0
- package/lib/host/core/resultKinds.d.ts.map +1 -0
- package/lib/host/core/resultKinds.js +40 -0
- package/lib/host/core/resultKinds.js.map +1 -0
- package/lib/host/core/toolMessages.d.ts +24 -0
- package/lib/host/core/toolMessages.d.ts.map +1 -0
- package/lib/host/core/toolMessages.js +136 -0
- package/lib/host/core/toolMessages.js.map +1 -0
- package/lib/host/ui/index.d.ts +2 -0
- package/lib/host/ui/index.d.ts.map +1 -1
- package/lib/host/ui/index.js +1 -0
- package/lib/host/ui/index.js.map +1 -1
- package/lib/host/ui/useFramedTool.d.ts +74 -0
- package/lib/host/ui/useFramedTool.d.ts.map +1 -0
- package/lib/host/ui/useFramedTool.js +125 -0
- package/lib/host/ui/useFramedTool.js.map +1 -0
- package/lib/i18n/core/chromeCatalog.d.ts +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
- package/lib/locales/de.json +30 -1
- package/lib/locales/en.json +30 -1
- package/lib/locales/es.json +30 -1
- package/lib/locales/fr.json +30 -1
- package/lib/locales/it.json +30 -1
- package/lib/molecule3d/ui/Molecule3DStage.d.ts +4 -33
- package/lib/molecule3d/ui/Molecule3DStage.d.ts.map +1 -1
- package/lib/molecule3d/ui/Molecule3DStage.js +3 -37
- package/lib/molecule3d/ui/Molecule3DStage.js.map +1 -1
- package/lib/molecule3d/ui/MoleculeCanvas3D.d.ts.map +1 -1
- package/lib/molecule3d/ui/MoleculeCanvas3D.js +10 -2
- package/lib/molecule3d/ui/MoleculeCanvas3D.js.map +1 -1
- package/lib/molecule3d/ui/exportMoleculeImage.d.ts +10 -0
- package/lib/molecule3d/ui/exportMoleculeImage.d.ts.map +1 -1
- package/lib/molecule3d/ui/exportMoleculeImage.js +17 -0
- package/lib/molecule3d/ui/exportMoleculeImage.js.map +1 -1
- package/lib/molecule3d/ui/index.d.ts +1 -1
- package/lib/molecule3d/ui/index.d.ts.map +1 -1
- package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts +23 -0
- package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts.map +1 -1
- package/lib/molecule3d/ui/useImageExport.d.ts +3 -0
- package/lib/molecule3d/ui/useImageExport.d.ts.map +1 -1
- package/lib/molecule3d/ui/useImageExport.js +21 -3
- package/lib/molecule3d/ui/useImageExport.js.map +1 -1
- package/lib/osiris/core/barGeometry.d.ts +42 -0
- package/lib/osiris/core/barGeometry.d.ts.map +1 -0
- package/lib/osiris/core/barGeometry.js +46 -0
- package/lib/osiris/core/barGeometry.js.map +1 -0
- package/lib/osiris/core/computeProperties.d.ts +42 -0
- package/lib/osiris/core/computeProperties.d.ts.map +1 -0
- package/lib/osiris/core/computeProperties.js +115 -0
- package/lib/osiris/core/computeProperties.js.map +1 -0
- package/lib/osiris/core/constants.d.ts +70 -0
- package/lib/osiris/core/constants.d.ts.map +1 -0
- package/lib/osiris/core/constants.js +99 -0
- package/lib/osiris/core/constants.js.map +1 -0
- package/lib/osiris/core/fitness.d.ts +32 -0
- package/lib/osiris/core/fitness.d.ts.map +1 -0
- package/lib/osiris/core/fitness.js +48 -0
- package/lib/osiris/core/fitness.js.map +1 -0
- package/lib/osiris/core/index.d.ts +29 -0
- package/lib/osiris/core/index.d.ts.map +1 -0
- package/lib/osiris/core/index.js +19 -0
- package/lib/osiris/core/index.js.map +1 -0
- package/lib/osiris/core/poolSize.d.ts +17 -0
- package/lib/osiris/core/poolSize.d.ts.map +1 -0
- package/lib/osiris/core/poolSize.js +22 -0
- package/lib/osiris/core/poolSize.js.map +1 -0
- package/lib/osiris/core/poolTypes.d.ts +140 -0
- package/lib/osiris/core/poolTypes.d.ts.map +1 -0
- package/lib/osiris/core/poolTypes.js +12 -0
- package/lib/osiris/core/poolTypes.js.map +1 -0
- package/lib/osiris/core/predictIdCode.d.ts +39 -0
- package/lib/osiris/core/predictIdCode.d.ts.map +1 -0
- package/lib/osiris/core/predictIdCode.js +54 -0
- package/lib/osiris/core/predictIdCode.js.map +1 -0
- package/lib/osiris/core/predictProtocol.d.ts +67 -0
- package/lib/osiris/core/predictProtocol.d.ts.map +1 -0
- package/lib/osiris/core/predictProtocol.js +29 -0
- package/lib/osiris/core/predictProtocol.js.map +1 -0
- package/lib/osiris/core/predictionPool.d.ts +23 -0
- package/lib/osiris/core/predictionPool.d.ts.map +1 -0
- package/lib/osiris/core/predictionPool.js +186 -0
- package/lib/osiris/core/predictionPool.js.map +1 -0
- package/lib/osiris/core/predictionQueue.d.ts +46 -0
- package/lib/osiris/core/predictionQueue.d.ts.map +1 -0
- package/lib/osiris/core/predictionQueue.js +57 -0
- package/lib/osiris/core/predictionQueue.js.map +1 -0
- package/lib/osiris/core/predictors.d.ts +62 -0
- package/lib/osiris/core/predictors.d.ts.map +1 -0
- package/lib/osiris/core/predictors.js +100 -0
- package/lib/osiris/core/predictors.js.map +1 -0
- package/lib/osiris/core/propertyKeys.d.ts +32 -0
- package/lib/osiris/core/propertyKeys.d.ts.map +1 -0
- package/lib/osiris/core/propertyKeys.js +44 -0
- package/lib/osiris/core/propertyKeys.js.map +1 -0
- package/lib/osiris/core/riskAppearance.d.ts +60 -0
- package/lib/osiris/core/riskAppearance.d.ts.map +1 -0
- package/lib/osiris/core/riskAppearance.js +59 -0
- package/lib/osiris/core/riskAppearance.js.map +1 -0
- package/lib/osiris/core/riskDetail.d.ts +22 -0
- package/lib/osiris/core/riskDetail.d.ts.map +1 -0
- package/lib/osiris/core/riskDetail.js +86 -0
- package/lib/osiris/core/riskDetail.js.map +1 -0
- package/lib/osiris/core/riskDetailRequest.d.ts +31 -0
- package/lib/osiris/core/riskDetailRequest.d.ts.map +1 -0
- package/lib/osiris/core/riskDetailRequest.js +49 -0
- package/lib/osiris/core/riskDetailRequest.js.map +1 -0
- package/lib/osiris/core/riskFindings.d.ts +26 -0
- package/lib/osiris/core/riskFindings.d.ts.map +1 -0
- package/lib/osiris/core/riskFindings.js +79 -0
- package/lib/osiris/core/riskFindings.js.map +1 -0
- package/lib/osiris/core/runPredictionJob.d.ts +20 -0
- package/lib/osiris/core/runPredictionJob.d.ts.map +1 -0
- package/lib/osiris/core/runPredictionJob.js +43 -0
- package/lib/osiris/core/runPredictionJob.js.map +1 -0
- package/lib/osiris/core/scales.d.ts +70 -0
- package/lib/osiris/core/scales.d.ts.map +1 -0
- package/lib/osiris/core/scales.js +185 -0
- package/lib/osiris/core/scales.js.map +1 -0
- package/lib/osiris/core/types.d.ts +91 -0
- package/lib/osiris/core/types.d.ts.map +1 -0
- package/lib/osiris/core/types.js +19 -0
- package/lib/osiris/core/types.js.map +1 -0
- package/lib/osiris/core/valuation.d.ts +28 -0
- package/lib/osiris/core/valuation.d.ts.map +1 -0
- package/lib/osiris/core/valuation.js +39 -0
- package/lib/osiris/core/valuation.js.map +1 -0
- package/lib/osiris/ui/PropertyBar.d.ts +27 -0
- package/lib/osiris/ui/PropertyBar.d.ts.map +1 -0
- package/lib/osiris/ui/PropertyBar.js +27 -0
- package/lib/osiris/ui/PropertyBar.js.map +1 -0
- package/lib/osiris/ui/PropertyPanel.d.ts +91 -0
- package/lib/osiris/ui/PropertyPanel.d.ts.map +1 -0
- package/lib/osiris/ui/PropertyPanel.js +77 -0
- package/lib/osiris/ui/PropertyPanel.js.map +1 -0
- package/lib/osiris/ui/PropertyRows.d.ts +40 -0
- package/lib/osiris/ui/PropertyRows.d.ts.map +1 -0
- package/lib/osiris/ui/PropertyRows.js +23 -0
- package/lib/osiris/ui/PropertyRows.js.map +1 -0
- package/lib/osiris/ui/RiskFindings.d.ts +43 -0
- package/lib/osiris/ui/RiskFindings.d.ts.map +1 -0
- package/lib/osiris/ui/RiskFindings.js +51 -0
- package/lib/osiris/ui/RiskFindings.js.map +1 -0
- package/lib/osiris/ui/RiskPanel.d.ts +46 -0
- package/lib/osiris/ui/RiskPanel.d.ts.map +1 -0
- package/lib/osiris/ui/RiskPanel.js +32 -0
- package/lib/osiris/ui/RiskPanel.js.map +1 -0
- package/lib/osiris/ui/RiskSquare.d.ts +51 -0
- package/lib/osiris/ui/RiskSquare.d.ts.map +1 -0
- package/lib/osiris/ui/RiskSquare.js +23 -0
- package/lib/osiris/ui/RiskSquare.js.map +1 -0
- package/lib/osiris/ui/index.d.ts +15 -0
- package/lib/osiris/ui/index.d.ts.map +1 -0
- package/lib/osiris/ui/index.js +8 -0
- package/lib/osiris/ui/index.js.map +1 -0
- package/lib/osiris/ui/usePredictions.d.ts +81 -0
- package/lib/osiris/ui/usePredictions.d.ts.map +1 -0
- package/lib/osiris/ui/usePredictions.js +102 -0
- package/lib/osiris/ui/usePredictions.js.map +1 -0
- package/lib/osiris-ui.d.ts +11 -0
- package/lib/osiris-ui.d.ts.map +1 -0
- package/lib/osiris-ui.js +11 -0
- package/lib/osiris-ui.js.map +1 -0
- package/lib/osiris.d.ts +17 -0
- package/lib/osiris.d.ts.map +1 -0
- package/lib/osiris.js +17 -0
- package/lib/osiris.js.map +1 -0
- package/lib/panel/ui/FilterInput.d.ts.map +1 -1
- package/lib/panel/ui/FilterInput.js +3 -1
- package/lib/panel/ui/FilterInput.js.map +1 -1
- package/lib/panel/ui/SidePanelItem.d.ts +39 -0
- package/lib/panel/ui/SidePanelItem.d.ts.map +1 -0
- package/lib/panel/ui/SidePanelItem.js +63 -0
- package/lib/panel/ui/SidePanelItem.js.map +1 -0
- package/lib/panel/ui/SidePanelStack.d.ts +11 -10
- package/lib/panel/ui/SidePanelStack.d.ts.map +1 -1
- package/lib/panel/ui/SidePanelStack.js +22 -15
- package/lib/panel/ui/SidePanelStack.js.map +1 -1
- package/lib/panel/ui/SpectrumColorSwatch.d.ts.map +1 -1
- package/lib/panel/ui/SpectrumColorSwatch.js +4 -2
- package/lib/panel/ui/SpectrumColorSwatch.js.map +1 -1
- package/lib/panel/ui/usePanelFolds.d.ts +35 -0
- package/lib/panel/ui/usePanelFolds.d.ts.map +1 -0
- package/lib/panel/ui/usePanelFolds.js +73 -0
- package/lib/panel/ui/usePanelFolds.js.map +1 -0
- package/lib/shared/ui/FullscreenStage.d.ts +43 -0
- package/lib/shared/ui/FullscreenStage.d.ts.map +1 -0
- package/lib/shared/ui/FullscreenStage.js +38 -0
- package/lib/shared/ui/FullscreenStage.js.map +1 -0
- package/lib/shared/ui/canFillScreen.d.ts +7 -0
- package/lib/shared/ui/canFillScreen.d.ts.map +1 -0
- package/lib/shared/ui/canFillScreen.js +9 -0
- package/lib/shared/ui/canFillScreen.js.map +1 -0
- package/lib/shared/ui/index.d.ts +3 -0
- package/lib/shared/ui/index.d.ts.map +1 -1
- package/lib/shared/ui/index.js +2 -0
- package/lib/shared/ui/index.js.map +1 -1
- package/lib/split/ui/splitPanes.d.ts +3 -3
- package/lib/split/ui/splitPanes.js +1 -1
- package/lib/structure/core/structureNotations.d.ts +8 -1
- package/lib/structure/core/structureNotations.d.ts.map +1 -1
- package/lib/structure/core/structureNotations.js +14 -8
- package/lib/structure/core/structureNotations.js.map +1 -1
- package/lib/structure/ui/StructureExportPanel.d.ts +8 -0
- package/lib/structure/ui/StructureExportPanel.d.ts.map +1 -1
- package/lib/structure/ui/StructureExportPanel.js +9 -4
- package/lib/structure/ui/StructureExportPanel.js.map +1 -1
- package/lib/structure/ui/index.d.ts +1 -0
- package/lib/structure/ui/index.d.ts.map +1 -1
- package/lib/structure/ui/index.js.map +1 -1
- package/package.json +4 -1
- package/src/card/core/cardAddress.ts +39 -3
- package/src/card/core/cardPageUrl.ts +10 -3
- package/src/card/core/index.ts +7 -1
- package/src/credits/core/credits.ts +40 -0
- package/src/download/core/downloadFigure.ts +26 -1
- package/src/download/core/figureDpi.ts +94 -0
- package/src/download/core/figurePng.ts +11 -2
- package/src/download/core/index.ts +13 -1
- package/src/download/core/pngDpi.ts +84 -0
- package/src/download/ui/FigureDownloadPanel.tsx +41 -51
- package/src/download/ui/figureDownloadHint.ts +13 -0
- package/src/download/ui/figureDownloadOptions.ts +85 -0
- package/src/download/ui/resolutionChoices.ts +67 -0
- package/src/download/ui/useFigureActions.ts +24 -9
- package/src/download/ui/useFigureDownload.tsx +57 -71
- package/src/ecosystem/core/sites.ts +14 -0
- package/src/ecosystem/core/types.ts +2 -1
- package/src/ecosystem/ui/glyphs.tsx +20 -0
- package/src/host/core/connectHost.ts +1 -1
- package/src/host/core/connectTool.ts +285 -0
- package/src/host/core/hostOutputs.ts +47 -5
- package/src/host/core/index.ts +20 -1
- package/src/host/core/kinds.ts +53 -8
- package/src/host/core/messageValues.ts +58 -0
- package/src/host/core/protocol.ts +5 -37
- package/src/host/core/resultKinds.ts +65 -0
- package/src/host/core/toolMessages.ts +160 -0
- package/src/host/ui/index.ts +6 -0
- package/src/host/ui/useFramedTool.ts +213 -0
- package/src/locales/de.json +30 -1
- package/src/locales/en.json +30 -1
- package/src/locales/es.json +30 -1
- package/src/locales/fr.json +30 -1
- package/src/locales/it.json +30 -1
- package/src/molecule3d/ui/Molecule3DStage.tsx +4 -88
- package/src/molecule3d/ui/MoleculeCanvas3D.tsx +10 -1
- package/src/molecule3d/ui/exportMoleculeImage.ts +22 -0
- package/src/molecule3d/ui/index.ts +4 -1
- package/src/molecule3d/ui/moleculeViewer3DProps.ts +24 -0
- package/src/molecule3d/ui/useImageExport.ts +28 -2
- package/src/osiris/core/barGeometry.ts +74 -0
- package/src/osiris/core/computeProperties.ts +175 -0
- package/src/osiris/core/constants.ts +110 -0
- package/src/osiris/core/fitness.ts +59 -0
- package/src/osiris/core/index.ts +78 -0
- package/src/osiris/core/poolSize.ts +24 -0
- package/src/osiris/core/poolTypes.ts +140 -0
- package/src/osiris/core/predictIdCode.ts +69 -0
- package/src/osiris/core/predictProtocol.ts +78 -0
- package/src/osiris/core/predictionPool.ts +237 -0
- package/src/osiris/core/predictionQueue.ts +89 -0
- package/src/osiris/core/predictors.ts +142 -0
- package/src/osiris/core/propertyKeys.ts +54 -0
- package/src/osiris/core/riskAppearance.ts +86 -0
- package/src/osiris/core/riskDetail.ts +120 -0
- package/src/osiris/core/riskDetailRequest.ts +64 -0
- package/src/osiris/core/riskFindings.ts +92 -0
- package/src/osiris/core/runPredictionJob.ts +49 -0
- package/src/osiris/core/scales.ts +236 -0
- package/src/osiris/core/types.ts +103 -0
- package/src/osiris/core/valuation.ts +44 -0
- package/src/osiris/ui/PropertyBar.tsx +77 -0
- package/src/osiris/ui/PropertyPanel.tsx +227 -0
- package/src/osiris/ui/PropertyRows.tsx +92 -0
- package/src/osiris/ui/RiskFindings.tsx +137 -0
- package/src/osiris/ui/RiskPanel.tsx +81 -0
- package/src/osiris/ui/RiskSquare.tsx +108 -0
- package/src/osiris/ui/index.ts +17 -0
- package/src/osiris/ui/usePredictions.ts +194 -0
- package/src/osiris-ui.ts +11 -0
- package/src/osiris.ts +17 -0
- package/src/panel/ui/FilterInput.tsx +4 -1
- package/src/panel/ui/SidePanelItem.tsx +162 -0
- package/src/panel/ui/SidePanelStack.tsx +29 -36
- package/src/panel/ui/SpectrumColorSwatch.tsx +5 -3
- package/src/panel/ui/usePanelFolds.ts +103 -0
- package/src/shared/ui/FullscreenStage.tsx +96 -0
- package/src/shared/ui/canFillScreen.ts +8 -0
- package/src/shared/ui/index.ts +6 -0
- package/src/split/ui/splitPanes.tsx +4 -4
- package/src/structure/core/structureNotations.ts +25 -8
- package/src/structure/ui/StructureExportPanel.tsx +23 -4
- package/src/structure/ui/index.ts +4 -0
- package/styles/osiris.css +339 -0
package/lib/locales/en.json
CHANGED
|
@@ -114,6 +114,14 @@
|
|
|
114
114
|
"site.atoms.tagline": "Electrons, neutrons, Lewis structures and oxidation states.",
|
|
115
115
|
"site.moles.tagline": "Balance a reaction, and work out its mass composition.",
|
|
116
116
|
"site.inorganic.tagline": "Name an inorganic compound, and write its formula.",
|
|
117
|
+
"site.iupac-name.tagline": "The IUPAC name of a structure, and the structure a name denotes.",
|
|
118
|
+
"site.slides.tagline": "Put a live tool on a slide, from the link its Share button gives.",
|
|
119
|
+
"site.vibrations.tagline": "IR and Raman spectra computed in the browser.",
|
|
120
|
+
"site.draw.tagline": "Journal-grade structures, in an SVG that keeps the chemistry.",
|
|
121
|
+
"site.molecules.tagline": "Look up a molecule, its computed properties and its sources.",
|
|
122
|
+
"site.chembio.tagline": "Natural products, and the organisms they were found in.",
|
|
123
|
+
"site.wikidata.tagline": "The chemistry of Wikipedia’s infoboxes, searchable by structure.",
|
|
124
|
+
"site.mz.tagline": "Mass spectra, classified by how they were measured.",
|
|
117
125
|
"share.button": "Share",
|
|
118
126
|
"share.buttonTitle": "Share a link to this page, or embed it in your own site",
|
|
119
127
|
"share.dialogTitleFor": "Share or embed — {title}",
|
|
@@ -282,10 +290,14 @@
|
|
|
282
290
|
"download.resolution": "Resolution",
|
|
283
291
|
"download.resolutionHelp": "How many times the figure on screen the file is. A PNG gets that many more pixels: two is right for a slide, three or four for print. An SVG stays sharp at any size, and opens that many times larger.",
|
|
284
292
|
"download.resolutionExample": "A figure 640 pixels wide on screen is saved 1280 pixels wide.",
|
|
293
|
+
"download.resolutionDpiHelp": "Dots per inch, with the figure printed at its size on the page. 150 is enough for a slide, 300 for a journal's photographs, 600 to 1200 for line art. The PNG states it, so a document places it at that size.",
|
|
294
|
+
"download.resolutionDpiExample": "A figure 8.5 cm wide is saved 1004 pixels wide.",
|
|
285
295
|
"download.noFigure": "There is no figure on the page to save yet.",
|
|
286
296
|
"download.hintRasterSvg": "An SVG holding a picture of {pixels}: a 3D scene has no vector form.",
|
|
287
297
|
"download.hintSvg": "Opens at {pixels}, and stays sharp at any size.",
|
|
288
298
|
"download.hintPng": "Saved {pixels}.",
|
|
299
|
+
"download.hintSvgDpi": "Prints {width} × {height} cm, and stays sharp at any size.",
|
|
300
|
+
"download.hintPngDpi": "Saved {pixels}, which print {width} × {height} cm.",
|
|
289
301
|
"download.hintCopied": "Copied {pixels} to the clipboard, as a PNG.",
|
|
290
302
|
"download.copyUnsupported": "This browser cannot put a picture on the clipboard. Save it instead.",
|
|
291
303
|
"download.size": "Size",
|
|
@@ -794,5 +806,22 @@
|
|
|
794
806
|
"ir.raman.doc.sampled": "A band is reported at the sampled point it peaked on, so its position is only as precise as the grid the spectrum was recorded on.",
|
|
795
807
|
"ir.raman.aboutLead": "Draws a Raman spectrum, picks its bands and lists them beside the chart.",
|
|
796
808
|
"ir.raman.credit.picking": "**ir-spectrum** (cheminfo, MIT) picks the bands, with the peak picker of **common-spectrum** and **ml-gsd**.",
|
|
797
|
-
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) writes the JCAMP-DX download."
|
|
809
|
+
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) writes the JCAMP-DX download.",
|
|
810
|
+
"panel.focus": "Focus on the {panel} panel",
|
|
811
|
+
"panel.focusTooltip": "Focus on this panel: fold every other one away",
|
|
812
|
+
"panel.unfocusTooltip": "Unfold the other panels again",
|
|
813
|
+
"panel.fillScreen": "Fill the screen with the {panel} panel",
|
|
814
|
+
"panel.fillScreenTooltip": "Fill the screen with this panel",
|
|
815
|
+
"panel.fold": "Fold the {panel} panel",
|
|
816
|
+
"panel.unfold": "Unfold the {panel} panel",
|
|
817
|
+
"panel.foldTooltip": "Fold this panel away",
|
|
818
|
+
"panel.unfoldTooltip": "Unfold it",
|
|
819
|
+
"panel.close": "Close the {panel} panel",
|
|
820
|
+
"panel.closeTooltip": "Close this panel",
|
|
821
|
+
"panel.leaveFullScreen": "Leave full screen",
|
|
822
|
+
"panel.leaveFullScreenTooltip": "Leave full screen (Esc)",
|
|
823
|
+
"panel.clearFilter": "Clear the filter",
|
|
824
|
+
"panel.colourOf": "Colour of {name}",
|
|
825
|
+
"panel.drawIn": "Draw {name} in {color}",
|
|
826
|
+
"panel.changeColour": "Draw this spectrum in another colour"
|
|
798
827
|
}
|
package/lib/locales/es.json
CHANGED
|
@@ -114,6 +114,14 @@
|
|
|
114
114
|
"site.atoms.tagline": "Electrones, neutrones, estructuras de Lewis y números de oxidación.",
|
|
115
115
|
"site.moles.tagline": "Ajustar una reacción y calcular su composición en masa.",
|
|
116
116
|
"site.inorganic.tagline": "Nombrar un compuesto inorgánico y escribir su fórmula.",
|
|
117
|
+
"site.iupac-name.tagline": "El nombre IUPAC de una estructura, y la estructura que designa un nombre.",
|
|
118
|
+
"site.slides.tagline": "Poner una herramienta en vivo en una diapositiva, con el enlace que da su botón Compartir.",
|
|
119
|
+
"site.vibrations.tagline": "Espectros IR y Raman calculados en el navegador.",
|
|
120
|
+
"site.draw.tagline": "Estructuras con calidad de publicación, en un SVG que conserva la química.",
|
|
121
|
+
"site.molecules.tagline": "Buscar una molécula, sus propiedades calculadas y sus fuentes.",
|
|
122
|
+
"site.chembio.tagline": "Productos naturales, y los organismos en los que se encontraron.",
|
|
123
|
+
"site.wikidata.tagline": "La química de las fichas de Wikipedia, con búsqueda por estructura.",
|
|
124
|
+
"site.mz.tagline": "Espectros de masas, clasificados según cómo se midieron.",
|
|
117
125
|
"share.button": "Compartir",
|
|
118
126
|
"share.buttonTitle": "Compartir un enlace a esta página, o incrustarla en su propio sitio",
|
|
119
127
|
"share.dialogTitleFor": "Compartir o incrustar — {title}",
|
|
@@ -282,10 +290,14 @@
|
|
|
282
290
|
"download.resolution": "Resolución",
|
|
283
291
|
"download.resolutionHelp": "Cuántas veces la figura en pantalla mide el archivo. Un PNG recibe tantos píxeles más: dos sirve para una diapositiva, tres o cuatro para imprimir. Un SVG se mantiene nítido a cualquier tamaño, y se abre tantas veces más grande.",
|
|
284
292
|
"download.resolutionExample": "Una figura de 640 píxeles de ancho en pantalla se guarda con 1280 píxeles de ancho.",
|
|
293
|
+
"download.resolutionDpiHelp": "Puntos por pulgada, con la figura impresa a su tamaño en la página. 150 basta para una diapositiva, 300 para las fotografías de una revista, de 600 a 1200 para el dibujo de línea. El PNG lo indica, así un documento lo coloca a ese tamaño.",
|
|
294
|
+
"download.resolutionDpiExample": "Una figura de 8,5 cm de ancho se guarda con 1004 píxeles de ancho.",
|
|
285
295
|
"download.noFigure": "Todavía no hay ninguna figura en la página que guardar.",
|
|
286
296
|
"download.hintRasterSvg": "Un SVG que contiene una imagen de {pixels}: una escena 3D no tiene forma vectorial.",
|
|
287
297
|
"download.hintSvg": "Se abre a {pixels}, y se mantiene nítido a cualquier tamaño.",
|
|
288
298
|
"download.hintPng": "Guardado {pixels}.",
|
|
299
|
+
"download.hintSvgDpi": "Se imprime a {width} × {height} cm, y se mantiene nítido a cualquier tamaño.",
|
|
300
|
+
"download.hintPngDpi": "Guardado {pixels}, que se imprimen a {width} × {height} cm.",
|
|
289
301
|
"download.hintCopied": "Copiado al portapapeles: PNG de {pixels}.",
|
|
290
302
|
"download.copyUnsupported": "Este navegador no puede poner una imagen en el portapapeles. Guárdala en su lugar.",
|
|
291
303
|
"download.size": "Tamaño",
|
|
@@ -794,5 +806,22 @@
|
|
|
794
806
|
"ir.raman.doc.sampled": "Una banda se da en el punto muestreado donde alcanza su máximo: su posición no es más precisa que la rejilla en la que se registró el espectro.",
|
|
795
807
|
"ir.raman.aboutLead": "Dibuja un espectro Raman, encuentra sus bandas y las enumera junto a la gráfica.",
|
|
796
808
|
"ir.raman.credit.picking": "**ir-spectrum** (cheminfo, MIT) encuentra las bandas, con el detector de picos de **common-spectrum** y **ml-gsd**.",
|
|
797
|
-
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) escribe el archivo JCAMP-DX descargado."
|
|
809
|
+
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) escribe el archivo JCAMP-DX descargado.",
|
|
810
|
+
"panel.focus": "Centrarse en el panel {panel}",
|
|
811
|
+
"panel.focusTooltip": "Centrarse en este panel: plegar todos los demás",
|
|
812
|
+
"panel.unfocusTooltip": "Desplegar de nuevo los demás paneles",
|
|
813
|
+
"panel.fillScreen": "Mostrar el panel {panel} a pantalla completa",
|
|
814
|
+
"panel.fillScreenTooltip": "Mostrar este panel a pantalla completa",
|
|
815
|
+
"panel.fold": "Plegar el panel {panel}",
|
|
816
|
+
"panel.unfold": "Desplegar el panel {panel}",
|
|
817
|
+
"panel.foldTooltip": "Plegar este panel",
|
|
818
|
+
"panel.unfoldTooltip": "Desplegarlo",
|
|
819
|
+
"panel.close": "Cerrar el panel {panel}",
|
|
820
|
+
"panel.closeTooltip": "Cerrar este panel",
|
|
821
|
+
"panel.leaveFullScreen": "Salir de la pantalla completa",
|
|
822
|
+
"panel.leaveFullScreenTooltip": "Salir de la pantalla completa (Esc)",
|
|
823
|
+
"panel.clearFilter": "Borrar el filtro",
|
|
824
|
+
"panel.colourOf": "Color de {name}",
|
|
825
|
+
"panel.drawIn": "Dibujar {name} en {color}",
|
|
826
|
+
"panel.changeColour": "Dibujar este espectro en otro color"
|
|
798
827
|
}
|
package/lib/locales/fr.json
CHANGED
|
@@ -114,6 +114,14 @@
|
|
|
114
114
|
"site.atoms.tagline": "Électrons, neutrons, structures de Lewis et nombres d'oxydation.",
|
|
115
115
|
"site.moles.tagline": "Équilibrer une réaction, et en calculer la composition massique.",
|
|
116
116
|
"site.inorganic.tagline": "Nommer un composé inorganique, et en écrire la formule.",
|
|
117
|
+
"site.iupac-name.tagline": "Le nom IUPAC d'une structure, et la structure que désigne un nom.",
|
|
118
|
+
"site.slides.tagline": "Mettre un outil vivant sur une diapositive, avec le lien que donne son bouton Partager.",
|
|
119
|
+
"site.vibrations.tagline": "Spectres IR et Raman calculés dans le navigateur.",
|
|
120
|
+
"site.draw.tagline": "Des structures de qualité publication, dans un SVG qui garde la chimie.",
|
|
121
|
+
"site.molecules.tagline": "Rechercher une molécule, ses propriétés calculées et ses sources.",
|
|
122
|
+
"site.chembio.tagline": "Les produits naturels, et les organismes où ils ont été trouvés.",
|
|
123
|
+
"site.wikidata.tagline": "La chimie des infobox de Wikipédia, interrogeable par structure.",
|
|
124
|
+
"site.mz.tagline": "Des spectres de masse, classés selon la façon dont ils ont été mesurés.",
|
|
117
125
|
"share.button": "Partager",
|
|
118
126
|
"share.buttonTitle": "Partager un lien vers cette page, ou l'intégrer à votre propre site",
|
|
119
127
|
"share.dialogTitleFor": "Partager ou intégrer — {title}",
|
|
@@ -282,10 +290,14 @@
|
|
|
282
290
|
"download.resolution": "Résolution",
|
|
283
291
|
"download.resolutionHelp": "Combien de fois la figure à l'écran mesure le fichier. Un PNG reçoit d'autant plus de pixels : deux convient pour une diapositive, trois ou quatre pour l'impression. Un SVG reste net à toute taille, et s'ouvre d'autant plus grand.",
|
|
284
292
|
"download.resolutionExample": "Une figure large de 640 pixels à l'écran est enregistrée large de 1280 pixels.",
|
|
293
|
+
"download.resolutionDpiHelp": "Points par pouce, la figure étant imprimée à sa taille sur la page. 150 suffit pour une diapositive, 300 pour les photographies d'une revue, 600 à 1200 pour un dessin au trait. Le PNG l'indique, si bien qu'un document le place à cette taille.",
|
|
294
|
+
"download.resolutionDpiExample": "Une figure large de 8,5 cm est enregistrée large de 1004 pixels.",
|
|
285
295
|
"download.noFigure": "Il n'y a encore aucune figure à enregistrer sur la page.",
|
|
286
296
|
"download.hintRasterSvg": "Un SVG contenant une image de {pixels} : une scène 3D n'a pas de forme vectorielle.",
|
|
287
297
|
"download.hintSvg": "S'ouvre à {pixels}, et reste net à toute taille.",
|
|
288
298
|
"download.hintPng": "Enregistré {pixels}.",
|
|
299
|
+
"download.hintSvgDpi": "S'imprime en {width} × {height} cm, et reste net à toute taille.",
|
|
300
|
+
"download.hintPngDpi": "Enregistré {pixels}, qui s'impriment en {width} × {height} cm.",
|
|
289
301
|
"download.hintCopied": "Copié dans le presse-papiers : PNG de {pixels}.",
|
|
290
302
|
"download.copyUnsupported": "Ce navigateur ne peut pas copier une image dans le presse-papiers. Enregistrez-la plutôt.",
|
|
291
303
|
"download.size": "Taille",
|
|
@@ -794,5 +806,22 @@
|
|
|
794
806
|
"ir.raman.doc.sampled": "Une bande est donnée au point échantillonné où elle culmine : sa position n'est pas plus précise que la grille sur laquelle le spectre a été enregistré.",
|
|
795
807
|
"ir.raman.aboutLead": "Trace un spectre Raman, repère ses bandes et les liste à côté du graphique.",
|
|
796
808
|
"ir.raman.credit.picking": "**ir-spectrum** (cheminfo, MIT) repère les bandes, avec le détecteur de pics de **common-spectrum** et **ml-gsd**.",
|
|
797
|
-
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) écrit le fichier JCAMP-DX téléchargé."
|
|
809
|
+
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) écrit le fichier JCAMP-DX téléchargé.",
|
|
810
|
+
"panel.focus": "Se concentrer sur le panneau {panel}",
|
|
811
|
+
"panel.focusTooltip": "Se concentrer sur ce panneau : replier tous les autres",
|
|
812
|
+
"panel.unfocusTooltip": "Déplier de nouveau les autres panneaux",
|
|
813
|
+
"panel.fillScreen": "Afficher le panneau {panel} en plein écran",
|
|
814
|
+
"panel.fillScreenTooltip": "Afficher ce panneau en plein écran",
|
|
815
|
+
"panel.fold": "Replier le panneau {panel}",
|
|
816
|
+
"panel.unfold": "Déplier le panneau {panel}",
|
|
817
|
+
"panel.foldTooltip": "Replier ce panneau",
|
|
818
|
+
"panel.unfoldTooltip": "Le déplier",
|
|
819
|
+
"panel.close": "Fermer le panneau {panel}",
|
|
820
|
+
"panel.closeTooltip": "Fermer ce panneau",
|
|
821
|
+
"panel.leaveFullScreen": "Quitter le plein écran",
|
|
822
|
+
"panel.leaveFullScreenTooltip": "Quitter le plein écran (Échap)",
|
|
823
|
+
"panel.clearFilter": "Effacer le filtre",
|
|
824
|
+
"panel.colourOf": "Couleur de {name}",
|
|
825
|
+
"panel.drawIn": "Tracer {name} en {color}",
|
|
826
|
+
"panel.changeColour": "Tracer ce spectre dans une autre couleur"
|
|
798
827
|
}
|
package/lib/locales/it.json
CHANGED
|
@@ -114,6 +114,14 @@
|
|
|
114
114
|
"site.atoms.tagline": "Elettroni, neutroni, strutture di Lewis e numeri di ossidazione.",
|
|
115
115
|
"site.moles.tagline": "Bilanciare una reazione e calcolarne la composizione in massa.",
|
|
116
116
|
"site.inorganic.tagline": "Nominare un composto inorganico e scriverne la formula.",
|
|
117
|
+
"site.iupac-name.tagline": "Il nome IUPAC di una struttura, e la struttura che un nome designa.",
|
|
118
|
+
"site.slides.tagline": "Mettere uno strumento interattivo su una diapositiva, con il link del suo pulsante Condividi.",
|
|
119
|
+
"site.vibrations.tagline": "Spettri IR e Raman calcolati nel browser.",
|
|
120
|
+
"site.draw.tagline": "Strutture di qualità da pubblicazione, in un SVG che conserva la chimica.",
|
|
121
|
+
"site.molecules.tagline": "Cercare una molecola, le sue proprietà calcolate e le sue fonti.",
|
|
122
|
+
"site.chembio.tagline": "Prodotti naturali, e gli organismi in cui sono stati trovati.",
|
|
123
|
+
"site.wikidata.tagline": "La chimica delle infobox di Wikipedia, ricercabile per struttura.",
|
|
124
|
+
"site.mz.tagline": "Spettri di massa, classificati in base a come sono stati misurati.",
|
|
117
125
|
"share.button": "Condividi",
|
|
118
126
|
"share.buttonTitle": "Condividere un link a questa pagina, o incorporarla nel proprio sito",
|
|
119
127
|
"share.dialogTitleFor": "Condividere o incorporare — {title}",
|
|
@@ -282,10 +290,14 @@
|
|
|
282
290
|
"download.resolution": "Risoluzione",
|
|
283
291
|
"download.resolutionHelp": "Quante volte la figura sullo schermo misura il file. Un PNG riceve altrettanti pixel in più: due va bene per una diapositiva, tre o quattro per la stampa. Un SVG resta nitido a qualsiasi dimensione, e si apre altrettante volte più grande.",
|
|
284
292
|
"download.resolutionExample": "Una figura larga 640 pixel sullo schermo viene salvata larga 1280 pixel.",
|
|
293
|
+
"download.resolutionDpiHelp": "Punti per pollice, con la figura stampata alla sua dimensione sulla pagina. 150 basta per una diapositiva, 300 per le fotografie di una rivista, da 600 a 1200 per i disegni al tratto. Il PNG lo indica, così un documento lo colloca a quella dimensione.",
|
|
294
|
+
"download.resolutionDpiExample": "Una figura larga 8,5 cm viene salvata larga 1004 pixel.",
|
|
285
295
|
"download.noFigure": "Non c'è ancora nessuna figura nella pagina da salvare.",
|
|
286
296
|
"download.hintRasterSvg": "Un SVG che contiene un'immagine di {pixels}: una scena 3D non ha forma vettoriale.",
|
|
287
297
|
"download.hintSvg": "Si apre a {pixels}, e resta nitido a qualsiasi dimensione.",
|
|
288
298
|
"download.hintPng": "Salvato {pixels}.",
|
|
299
|
+
"download.hintSvgDpi": "Si stampa a {width} × {height} cm, e resta nitido a qualsiasi dimensione.",
|
|
300
|
+
"download.hintPngDpi": "Salvato {pixels}, che si stampano a {width} × {height} cm.",
|
|
289
301
|
"download.hintCopied": "Copiato negli appunti: PNG di {pixels}.",
|
|
290
302
|
"download.copyUnsupported": "Questo browser non può mettere un'immagine negli appunti. Salvala invece.",
|
|
291
303
|
"download.size": "Dimensione",
|
|
@@ -794,5 +806,22 @@
|
|
|
794
806
|
"ir.raman.doc.sampled": "Una banda è data nel punto campionato in cui raggiunge il massimo: la sua posizione non è più precisa della griglia su cui lo spettro è stato registrato.",
|
|
795
807
|
"ir.raman.aboutLead": "Disegna uno spettro Raman, ne trova le bande e le elenca accanto al grafico.",
|
|
796
808
|
"ir.raman.credit.picking": "**ir-spectrum** (cheminfo, MIT) trova le bande, con il rilevatore di picchi di **common-spectrum** e **ml-gsd**.",
|
|
797
|
-
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) scrive il file JCAMP-DX scaricato."
|
|
809
|
+
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) scrive il file JCAMP-DX scaricato.",
|
|
810
|
+
"panel.focus": "Concentrati sul pannello {panel}",
|
|
811
|
+
"panel.focusTooltip": "Concentrati su questo pannello: comprimi tutti gli altri",
|
|
812
|
+
"panel.unfocusTooltip": "Espandi di nuovo gli altri pannelli",
|
|
813
|
+
"panel.fillScreen": "Mostra il pannello {panel} a schermo intero",
|
|
814
|
+
"panel.fillScreenTooltip": "Mostra questo pannello a schermo intero",
|
|
815
|
+
"panel.fold": "Comprimi il pannello {panel}",
|
|
816
|
+
"panel.unfold": "Espandi il pannello {panel}",
|
|
817
|
+
"panel.foldTooltip": "Comprimi questo pannello",
|
|
818
|
+
"panel.unfoldTooltip": "Espandilo",
|
|
819
|
+
"panel.close": "Chiudi il pannello {panel}",
|
|
820
|
+
"panel.closeTooltip": "Chiudi questo pannello",
|
|
821
|
+
"panel.leaveFullScreen": "Esci dallo schermo intero",
|
|
822
|
+
"panel.leaveFullScreenTooltip": "Esci dallo schermo intero (Esc)",
|
|
823
|
+
"panel.clearFilter": "Cancella il filtro",
|
|
824
|
+
"panel.colourOf": "Colore di {name}",
|
|
825
|
+
"panel.drawIn": "Disegna {name} in {color}",
|
|
826
|
+
"panel.changeColour": "Disegna questo spettro in un altro colore"
|
|
798
827
|
}
|
|
@@ -1,37 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The box the molecule canvas and its toolbars are drawn in, which is also the
|
|
3
|
-
* box that fills the screen.
|
|
4
|
-
*
|
|
5
|
-
* A box filling the screen hides everything outside it, and the popovers and
|
|
6
|
-
* tooltips of the toolbars are portalled to `document.body`: while the box
|
|
7
|
-
* fills the screen they are portalled into it instead, the way react-science's
|
|
8
|
-
* `RootLayout` keeps its own menus visible. Otherwise the portal options of the
|
|
9
|
-
* page around the viewer are passed through untouched.
|
|
3
|
+
* box that fills the screen. It is the shared fullscreen stage, so the
|
|
4
|
+
* toolbars' popovers stay visible while it does.
|
|
10
5
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/** Props of {@link Molecule3DStage}. */
|
|
14
|
-
export interface Molecule3DStageProps {
|
|
15
|
-
/**
|
|
16
|
-
* Style of the box, or a function handed whether the box fills the screen,
|
|
17
|
-
* for a box shaped differently while it does.
|
|
18
|
-
*/
|
|
19
|
-
style: CSSProperties | ((fillsScreen: boolean) => CSSProperties);
|
|
20
|
-
/**
|
|
21
|
-
* Called with the box once it is mounted, and with `null` once it is gone.
|
|
22
|
-
* @default undefined
|
|
23
|
-
*/
|
|
24
|
-
onStage?: (element: HTMLDivElement | null) => void;
|
|
25
|
-
/**
|
|
26
|
-
* What is drawn in the box, handed whether it fills the screen and the
|
|
27
|
-
* toggle, or `undefined` where the browser cannot fill the screen.
|
|
28
|
-
*/
|
|
29
|
-
children: (fullscreen: Molecule3DFullscreen | undefined) => ReactNode;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* The box of the canvas, able to fill the screen.
|
|
33
|
-
* @param props - See {@link Molecule3DStageProps}.
|
|
34
|
-
* @returns The box.
|
|
35
|
-
*/
|
|
36
|
-
export declare function Molecule3DStage(props: Molecule3DStageProps): ReactElement;
|
|
6
|
+
export type { FullscreenStageProps as Molecule3DStageProps } from '../../shared/ui/FullscreenStage.tsx';
|
|
7
|
+
export { FullscreenStage as Molecule3DStage } from '../../shared/ui/FullscreenStage.tsx';
|
|
37
8
|
//# sourceMappingURL=Molecule3DStage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Molecule3DStage.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DStage.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Molecule3DStage.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DStage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,oBAAoB,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AACxG,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -1,41 +1,7 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
1
|
/**
|
|
3
2
|
* The box the molecule canvas and its toolbars are drawn in, which is also the
|
|
4
|
-
* box that fills the screen.
|
|
5
|
-
*
|
|
6
|
-
* A box filling the screen hides everything outside it, and the popovers and
|
|
7
|
-
* tooltips of the toolbars are portalled to `document.body`: while the box
|
|
8
|
-
* fills the screen they are portalled into it instead, the way react-science's
|
|
9
|
-
* `RootLayout` keeps its own menus visible. Otherwise the portal options of the
|
|
10
|
-
* page around the viewer are passed through untouched.
|
|
3
|
+
* box that fills the screen. It is the shared fullscreen stage, so the
|
|
4
|
+
* toolbars' popovers stay visible while it does.
|
|
11
5
|
*/
|
|
12
|
-
|
|
13
|
-
import { useCallback, useContext, useState } from 'react';
|
|
14
|
-
import { FullScreenProvider, useFullscreen } from 'react-science/ui';
|
|
15
|
-
/**
|
|
16
|
-
* The box of the canvas, able to fill the screen.
|
|
17
|
-
* @param props - See {@link Molecule3DStageProps}.
|
|
18
|
-
* @returns The box.
|
|
19
|
-
*/
|
|
20
|
-
export function Molecule3DStage(props) {
|
|
21
|
-
return (_jsx(FullScreenProvider, { children: (fullscreenRef) => _jsx(Stage, { ...props, fullscreenRef: fullscreenRef }) }));
|
|
22
|
-
}
|
|
23
|
-
function Stage(props) {
|
|
24
|
-
const { style, onStage, children, fullscreenRef } = props;
|
|
25
|
-
const { isFullScreen, toggle } = useFullscreen();
|
|
26
|
-
const portal = useContext(PortalContext);
|
|
27
|
-
const [canFillScreen] = useState(isFullscreenEnabled);
|
|
28
|
-
const [stage, setStage] = useState(null);
|
|
29
|
-
const stageRef = useCallback((element) => {
|
|
30
|
-
fullscreenRef.current = element;
|
|
31
|
-
setStage(element);
|
|
32
|
-
onStage?.(element);
|
|
33
|
-
}, [fullscreenRef, onStage]);
|
|
34
|
-
// The provider is always there, so entering full screen changes a value
|
|
35
|
-
// rather than the tree, and the canvas inside is never mounted again.
|
|
36
|
-
return (_jsx("div", { ref: stageRef, style: typeof style === 'function' ? style(isFullScreen) : style, children: _jsx(PortalProvider, { portalClassName: portal.portalClassName, portalContainer: isFullScreen && stage !== null ? stage : portal.portalContainer, children: children(canFillScreen ? { active: isFullScreen, toggle } : undefined) }) }));
|
|
37
|
-
}
|
|
38
|
-
function isFullscreenEnabled() {
|
|
39
|
-
return typeof document !== 'undefined' && document.fullscreenEnabled;
|
|
40
|
-
}
|
|
6
|
+
export { FullscreenStage as Molecule3DStage } from "../../shared/ui/FullscreenStage.js";
|
|
41
7
|
//# sourceMappingURL=Molecule3DStage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Molecule3DStage.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DStage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Molecule3DStage.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/Molecule3DStage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,IAAI,eAAe,EAAE,MAAM,oCAAqC,CAAC"}
|
|
@@ -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,
|
|
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,CAiK3E"}
|
|
@@ -19,7 +19,7 @@ import { usePolarSurfaceArea } from "./usePolarSurfaceArea.js";
|
|
|
19
19
|
* @returns The canvas with its toolbars.
|
|
20
20
|
*/
|
|
21
21
|
export function MoleculeCanvas3D(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
|
+
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, onCapture, onFailureChange, } = props;
|
|
23
23
|
const tools = resolveMolecule3DTools(toolsProp);
|
|
24
24
|
const [initialSettings] = useState(() => normalizeMolecule3DSettings(defaultSettings));
|
|
25
25
|
const [settings, setSettings] = useControlledState(settingsProp, initialSettings, onSettingsChange);
|
|
@@ -68,7 +68,15 @@ export function MoleculeCanvas3D(props) {
|
|
|
68
68
|
onFailureChange,
|
|
69
69
|
camera: props,
|
|
70
70
|
});
|
|
71
|
-
const { canvasSize, exportImage, copyImage } = useImageExport(container, viewerRef, fileName, framesPerSecond);
|
|
71
|
+
const { canvasSize, exportImage, copyImage, capture } = useImageExport(container, viewerRef, fileName, framesPerSecond);
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
if (onCapture === undefined || container === null)
|
|
74
|
+
return;
|
|
75
|
+
onCapture(capture);
|
|
76
|
+
return () => {
|
|
77
|
+
onCapture(null);
|
|
78
|
+
};
|
|
79
|
+
}, [onCapture, container, capture]);
|
|
72
80
|
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: () => {
|
|
73
81
|
setMeasurements(NO_MEASUREMENTS);
|
|
74
82
|
}, spinning: spinning, onSpinningChange: setSpinning, showSurface: settings.showSurface, onShowSurfaceChange: (showSurface) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoleculeCanvas3D.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/MoleculeCanvas3D.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAW/D;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,MAAM,EACJ,OAAO,EACP,gBAAgB,GAAG,MAAM,EACzB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,YAAY,EACtB,eAAe,EACf,gBAAgB,EAChB,QAAQ,EAAE,YAAY,EACtB,eAAe,GAAG,KAAK,EACvB,gBAAgB,EAChB,SAAS,GAAG,kBAAkB,EAC9B,OAAO,GAAG,KAAK,EACf,eAAe,GAAG,yBAAyB,EAC3C,YAAY,EAAE,gBAAgB,EAC9B,oBAAoB,EACpB,UAAU,GAAG,aAAa,EAC1B,QAAQ,GAAG,UAAU,EACrB,UAAU,EACV,SAAS,GAAG,GAAG,EACf,eAAe,GAChB,GAAG,KAAK,CAAC;IACV,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CACtC,2BAA2B,CAAC,eAAe,CAAC,CAC7C,CAAC;IACF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,kBAAkB,CAChD,YAAY,EACZ,eAAe,EACf,gBAAgB,CACjB,CAAC;IACF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,kBAAkB,CAChD,YAAY,EACZ,eAAe,EACf,gBAAgB,CACjB,CAAC;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,kBAAkB,CAExD,gBAAgB,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAC;IAC3D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IAC7E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,OAAO,EACP,QAAQ,CAAC,eAAe,KAAK,UAAU,CACxC,CAAC;IAEF,6EAA6E;IAC7E,oEAAoE;IACpE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IACxE,6EAA6E;IAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC;IACzD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE;QAC7C,UAAU;QACV,SAAS,EAAE,CAAC,WAAW,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,kBAAkB,EAAE,aAAa;KAClC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAExC,+EAA+E;IAC/E,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,SAAS,CAAC,OAAO,EAAE,aAAa,CACnC,UAAU,EACV,gBAAgB,CAAC,SAAS,CAAC,CAC5B,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvC,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC;QACrC,SAAS;QACT,SAAS;QACT,OAAO;QACP,gBAAgB;QAChB,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,eAAe;QACf,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"MoleculeCanvas3D.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/MoleculeCanvas3D.tsx"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,16 @@ export interface MoleculeImageRequest {
|
|
|
38
38
|
* @throws {Error} When the viewer has nothing to render.
|
|
39
39
|
*/
|
|
40
40
|
export declare function captureMoleculePng(viewer: SceneCapture, scale: number, size: ImageSize): Promise<Blob>;
|
|
41
|
+
/**
|
|
42
|
+
* Render the scene as an SVG holding the rendered image, as the export writes
|
|
43
|
+
* it.
|
|
44
|
+
* @param viewer - The viewer holding the scene.
|
|
45
|
+
* @param scale - Multiple of the canvas on screen it is rendered at.
|
|
46
|
+
* @param size - Size of the canvas on screen, CSS pixels.
|
|
47
|
+
* @returns The SVG markup.
|
|
48
|
+
* @throws {Error} When the viewer has nothing to render.
|
|
49
|
+
*/
|
|
50
|
+
export declare function captureMoleculeSvg(viewer: SceneCapture, scale: number, size: ImageSize): Promise<string>;
|
|
41
51
|
/**
|
|
42
52
|
* Render the scene and hand it to the browser as a file.
|
|
43
53
|
* @param viewer - The viewer holding the scene.
|
|
@@ -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;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"}
|
|
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;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
|
@@ -20,6 +20,23 @@ export async function captureMoleculePng(viewer, scale, size) {
|
|
|
20
20
|
}
|
|
21
21
|
return new Blob([dataUriBytes(dataUri)], { type: FIGURE_PNG_TYPE });
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Render the scene as an SVG holding the rendered image, as the export writes
|
|
25
|
+
* it.
|
|
26
|
+
* @param viewer - The viewer holding the scene.
|
|
27
|
+
* @param scale - Multiple of the canvas on screen it is rendered at.
|
|
28
|
+
* @param size - Size of the canvas on screen, CSS pixels.
|
|
29
|
+
* @returns The SVG markup.
|
|
30
|
+
* @throws {Error} When the viewer has nothing to render.
|
|
31
|
+
*/
|
|
32
|
+
export async function captureMoleculeSvg(viewer, scale, size) {
|
|
33
|
+
const pixels = figurePixels(size, scale);
|
|
34
|
+
const dataUri = await viewer.captureImage(pixels);
|
|
35
|
+
if (dataUri === undefined) {
|
|
36
|
+
throw new Error('There is no picture to copy yet.');
|
|
37
|
+
}
|
|
38
|
+
return rasterSvgMarkup(dataUri, pixels);
|
|
39
|
+
}
|
|
23
40
|
/**
|
|
24
41
|
* Render the scene and hand it to the browser as a file.
|
|
25
42
|
* @param viewer - The viewer holding the scene.
|
|
@@ -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;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"}
|
|
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;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAoB,EACpB,KAAa,EACb,IAAe;IAEf,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,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,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"}
|
|
@@ -18,5 +18,5 @@ export { exportMoleculeImage } from './exportMoleculeImage.ts';
|
|
|
18
18
|
export type { ImageExport } from './useImageExport.ts';
|
|
19
19
|
export { useImageExport } from './useImageExport.ts';
|
|
20
20
|
export { MoleculeViewer3D } from './MoleculeViewer3D.tsx';
|
|
21
|
-
export type { MoleculeViewer3DProps } from './moleculeViewer3DProps.ts';
|
|
21
|
+
export type { Molecule3DCapture, MoleculeViewer3DProps, } from './moleculeViewer3DProps.ts';
|
|
22
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
|
|
@@ -5,6 +5,22 @@ import type { Molecule3DFile } from '../core/file.ts';
|
|
|
5
5
|
import type { Molecule3DHighlight } from '../core/highlight.ts';
|
|
6
6
|
import type { Measurement } from '../core/measurement.ts';
|
|
7
7
|
import type { Molecule3DSettings, Molecule3DTools } from '../core/settings.ts';
|
|
8
|
+
/** The scene on screen, rendered as a picture on request. */
|
|
9
|
+
export interface Molecule3DCapture {
|
|
10
|
+
/**
|
|
11
|
+
* Render the scene as an SVG document holding the rendered image: a molecule
|
|
12
|
+
* drawn by WebGL has no vector form.
|
|
13
|
+
* @param scale - Multiple of the canvas on screen it is rendered at.
|
|
14
|
+
* @returns The SVG markup.
|
|
15
|
+
*/
|
|
16
|
+
svg: (scale: number) => Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Render the scene as a PNG.
|
|
19
|
+
* @param scale - Multiple of the canvas on screen it is rendered at.
|
|
20
|
+
* @returns The PNG.
|
|
21
|
+
*/
|
|
22
|
+
png: (scale: number) => Promise<Blob>;
|
|
23
|
+
}
|
|
8
24
|
/**
|
|
9
25
|
* Props of `MoleculeViewer3D`.
|
|
10
26
|
*
|
|
@@ -127,6 +143,13 @@ export interface MoleculeViewer3DProps {
|
|
|
127
143
|
* @default 'molecule'
|
|
128
144
|
*/
|
|
129
145
|
fileName?: string;
|
|
146
|
+
/**
|
|
147
|
+
* Handed the means to render the scene on screen once the viewer exists, and
|
|
148
|
+
* `null` when it goes — for a page that hands the picture on, to a host
|
|
149
|
+
* framing it. Keep it stable: a new function is handed the means again.
|
|
150
|
+
* @default undefined
|
|
151
|
+
*/
|
|
152
|
+
onCapture?: (capture: Molecule3DCapture | null) => void;
|
|
130
153
|
/**
|
|
131
154
|
* Scene background, as `#rrggbb`.
|
|
132
155
|
* @default '#ffffff'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moleculeViewer3DProps.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/moleculeViewer3DProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,KAAK,IAAI,CAAC;IACtE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACpD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE"}
|
|
1
|
+
{"version":3,"file":"moleculeViewer3DProps.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/moleculeViewer3DProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE/E,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC;;;;OAIG;IACH,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,KAAK,IAAI,CAAC;IACtE;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACpD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACjE"}
|
|
@@ -3,6 +3,7 @@ import type { FigureNotice } from '../../download/core/copyFigure.ts';
|
|
|
3
3
|
import type { FigureFormat } from '../../download/core/downloadFigure.ts';
|
|
4
4
|
import type { FigurePixels } from '../../download/core/figureScale.ts';
|
|
5
5
|
import type { SceneCapture } from './exportMoleculeImage.ts';
|
|
6
|
+
import type { Molecule3DCapture } from './moleculeViewer3DProps.ts';
|
|
6
7
|
/** What {@link useImageExport} hands the export panel. */
|
|
7
8
|
export interface ImageExport {
|
|
8
9
|
/** Size of the canvas on screen, or `null` before it is laid out. */
|
|
@@ -17,6 +18,8 @@ export interface ImageExport {
|
|
|
17
18
|
* from the click itself: Safari only allows a write the click started.
|
|
18
19
|
*/
|
|
19
20
|
copyImage: (scale: number) => Promise<FigureNotice>;
|
|
21
|
+
/** The scene rendered on request, for a page handing the picture on. */
|
|
22
|
+
capture: Molecule3DCapture;
|
|
20
23
|
}
|
|
21
24
|
/**
|
|
22
25
|
* The callbacks the export panel needs, bound to the canvas and its viewer.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useImageExport.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/useImageExport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,WAAW,EAAE,CACX,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,OAAO,KACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useImageExport.d.ts","sourceRoot":"","sources":["../../../src/molecule3d/ui/useImageExport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,UAAU,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,WAAW,EAAE,CACX,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,OAAO,KACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,wEAAwE;IACxE,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,SAAS,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EACzC,QAAQ,EAAE,MAAM,EAChB,eAAe,SAA4B,GAC1C,WAAW,CA6Db"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
1
|
+
import { useCallback, useMemo } from 'react';
|
|
2
2
|
import { copyFigure } from "../../download/core/copyFigure.js";
|
|
3
3
|
import { DEFAULT_FRAMES_PER_SECOND } from "../core/animatedPng.js";
|
|
4
|
-
import { captureMoleculePng, exportMoleculeImage, } from "./exportMoleculeImage.js";
|
|
4
|
+
import { captureMoleculePng, captureMoleculeSvg, exportMoleculeImage, } from "./exportMoleculeImage.js";
|
|
5
5
|
/**
|
|
6
6
|
* The callbacks the export panel needs, bound to the canvas and its viewer.
|
|
7
7
|
* @param container - The element molstar draws into.
|
|
@@ -42,6 +42,24 @@ export function useImageExport(container, viewerRef, fileName, framesPerSecond =
|
|
|
42
42
|
}
|
|
43
43
|
return copyFigure(captureMoleculePng(viewer, scale, size));
|
|
44
44
|
}, [canvasSize, viewerRef]);
|
|
45
|
-
|
|
45
|
+
const capture = useMemo(() => ({
|
|
46
|
+
svg: async (scale) => {
|
|
47
|
+
const viewer = viewerRef.current;
|
|
48
|
+
const size = canvasSize();
|
|
49
|
+
if (viewer === null || size === null) {
|
|
50
|
+
throw new Error('There is no picture to copy yet.');
|
|
51
|
+
}
|
|
52
|
+
return captureMoleculeSvg(viewer, scale, size);
|
|
53
|
+
},
|
|
54
|
+
png: async (scale) => {
|
|
55
|
+
const viewer = viewerRef.current;
|
|
56
|
+
const size = canvasSize();
|
|
57
|
+
if (viewer === null || size === null) {
|
|
58
|
+
throw new Error('There is no picture to copy yet.');
|
|
59
|
+
}
|
|
60
|
+
return captureMoleculePng(viewer, scale, size);
|
|
61
|
+
},
|
|
62
|
+
}), [canvasSize, viewerRef]);
|
|
63
|
+
return { canvasSize, exportImage, copyImage, capture };
|
|
46
64
|
}
|
|
47
65
|
//# sourceMappingURL=useImageExport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useImageExport.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/useImageExport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useImageExport.js","sourceRoot":"","sources":["../../../src/molecule3d/ui/useImageExport.ts"],"names":[],"mappings":"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"}
|