react-cheminfo 0.64.1 → 0.66.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 +293 -6
- package/lib/card/core/cardAddress.d.ts +70 -0
- package/lib/card/core/cardAddress.d.ts.map +1 -0
- package/lib/card/core/cardAddress.js +59 -0
- package/lib/card/core/cardAddress.js.map +1 -0
- package/lib/card/core/cardPageUrl.d.ts +49 -0
- package/lib/card/core/cardPageUrl.d.ts.map +1 -0
- package/lib/card/core/cardPageUrl.js +59 -0
- package/lib/card/core/cardPageUrl.js.map +1 -0
- package/lib/card/core/index.d.ts +7 -0
- package/lib/card/core/index.d.ts.map +1 -0
- package/lib/card/core/index.js +4 -0
- package/lib/card/core/index.js.map +1 -0
- package/lib/card/core/panelRoom.d.ts +40 -0
- package/lib/card/core/panelRoom.d.ts.map +1 -0
- package/lib/card/core/panelRoom.js +40 -0
- package/lib/card/core/panelRoom.js.map +1 -0
- package/lib/card/ui/CardDetailsButton.d.ts +38 -0
- package/lib/card/ui/CardDetailsButton.d.ts.map +1 -0
- package/lib/card/ui/CardDetailsButton.js +50 -0
- package/lib/card/ui/CardDetailsButton.js.map +1 -0
- package/lib/card/ui/CardFigure.d.ts +51 -0
- package/lib/card/ui/CardFigure.d.ts.map +1 -0
- package/lib/card/ui/CardFigure.js +27 -0
- package/lib/card/ui/CardFigure.js.map +1 -0
- package/lib/card/ui/CardFrame.d.ts +30 -0
- package/lib/card/ui/CardFrame.d.ts.map +1 -0
- package/lib/card/ui/CardFrame.js +20 -0
- package/lib/card/ui/CardFrame.js.map +1 -0
- package/lib/card/ui/CopyTableButton.d.ts +37 -0
- package/lib/card/ui/CopyTableButton.d.ts.map +1 -0
- package/lib/card/ui/CopyTableButton.js +19 -0
- package/lib/card/ui/CopyTableButton.js.map +1 -0
- package/lib/card/ui/cardTooltip.d.ts +14 -0
- package/lib/card/ui/cardTooltip.d.ts.map +1 -0
- package/lib/card/ui/cardTooltip.js +15 -0
- package/lib/card/ui/cardTooltip.js.map +1 -0
- package/lib/card/ui/embed.d.ts +15 -0
- package/lib/card/ui/embed.d.ts.map +1 -0
- package/lib/card/ui/embed.js +24 -0
- package/lib/card/ui/embed.js.map +1 -0
- package/lib/card/ui/fitCardToFrame.d.ts +31 -0
- package/lib/card/ui/fitCardToFrame.d.ts.map +1 -0
- package/lib/card/ui/fitCardToFrame.js +66 -0
- package/lib/card/ui/fitCardToFrame.js.map +1 -0
- package/lib/card/ui/holdRoomForPanels.d.ts +16 -0
- package/lib/card/ui/holdRoomForPanels.d.ts.map +1 -0
- package/lib/card/ui/holdRoomForPanels.js +76 -0
- package/lib/card/ui/holdRoomForPanels.js.map +1 -0
- package/lib/card/ui/index.d.ts +11 -0
- package/lib/card/ui/index.d.ts.map +1 -0
- package/lib/card/ui/index.js +7 -0
- package/lib/card/ui/index.js.map +1 -0
- package/lib/card/ui/openPanels.d.ts +25 -0
- package/lib/card/ui/openPanels.d.ts.map +1 -0
- package/lib/card/ui/openPanels.js +85 -0
- package/lib/card/ui/openPanels.js.map +1 -0
- package/lib/card.d.ts +13 -0
- package/lib/card.d.ts.map +1 -0
- package/lib/card.js +13 -0
- package/lib/card.js.map +1 -0
- package/lib/conformers.d.ts +1 -0
- package/lib/conformers.d.ts.map +1 -1
- package/lib/conformers.js +1 -0
- package/lib/conformers.js.map +1 -1
- package/lib/core.d.ts +4 -0
- package/lib/core.d.ts.map +1 -1
- package/lib/core.js +5 -0
- package/lib/core.js.map +1 -1
- package/lib/fetch/core/apiError.d.ts +56 -0
- package/lib/fetch/core/apiError.d.ts.map +1 -0
- package/lib/fetch/core/apiError.js +43 -0
- package/lib/fetch/core/apiError.js.map +1 -0
- package/lib/fetch/core/fetchJson.d.ts +47 -0
- package/lib/fetch/core/fetchJson.d.ts.map +1 -0
- package/lib/fetch/core/fetchJson.js +109 -0
- package/lib/fetch/core/fetchJson.js.map +1 -0
- package/lib/fetch/core/index.d.ts +5 -0
- package/lib/fetch/core/index.d.ts.map +1 -0
- package/lib/fetch/core/index.js +3 -0
- package/lib/fetch/core/index.js.map +1 -0
- package/lib/formula/core/formulaText.d.ts +46 -0
- package/lib/formula/core/formulaText.d.ts.map +1 -0
- package/lib/formula/core/formulaText.js +74 -0
- package/lib/formula/core/formulaText.js.map +1 -0
- package/lib/formula/core/index.d.ts +6 -0
- package/lib/formula/core/index.d.ts.map +1 -0
- package/lib/formula/core/index.js +4 -0
- package/lib/formula/core/index.js.map +1 -0
- package/lib/formula/core/normalizeFormula.d.ts +22 -0
- package/lib/formula/core/normalizeFormula.d.ts.map +1 -0
- package/lib/formula/core/normalizeFormula.js +46 -0
- package/lib/formula/core/normalizeFormula.js.map +1 -0
- package/lib/formula/core/readFormula.d.ts +73 -0
- package/lib/formula/core/readFormula.d.ts.map +1 -0
- package/lib/formula/core/readFormula.js +132 -0
- package/lib/formula/core/readFormula.js.map +1 -0
- package/lib/formula/ui/CopyableFormula.d.ts +31 -0
- package/lib/formula/ui/CopyableFormula.d.ts.map +1 -0
- package/lib/formula/ui/CopyableFormula.js +19 -0
- package/lib/formula/ui/CopyableFormula.js.map +1 -0
- package/lib/formula/ui/FormulaInput.d.ts +29 -0
- package/lib/formula/ui/FormulaInput.d.ts.map +1 -0
- package/lib/formula/ui/FormulaInput.js +16 -0
- package/lib/formula/ui/FormulaInput.js.map +1 -0
- package/lib/formula/ui/QuestionFormula.d.ts +14 -0
- package/lib/formula/ui/QuestionFormula.d.ts.map +1 -0
- package/lib/formula/ui/QuestionFormula.js +13 -0
- package/lib/formula/ui/QuestionFormula.js.map +1 -0
- package/lib/formula/ui/index.d.ts +7 -0
- package/lib/formula/ui/index.d.ts.map +1 -0
- package/lib/formula/ui/index.js +4 -0
- package/lib/formula/ui/index.js.map +1 -0
- package/lib/formula.d.ts +11 -0
- package/lib/formula.d.ts.map +1 -0
- package/lib/formula.js +11 -0
- package/lib/formula.js.map +1 -0
- package/lib/hooks/ui/index.d.ts +1 -0
- package/lib/hooks/ui/index.d.ts.map +1 -1
- package/lib/hooks/ui/index.js.map +1 -1
- package/lib/hooks/ui/keyTargets.d.ts +4 -2
- package/lib/hooks/ui/keyTargets.d.ts.map +1 -1
- package/lib/hooks/ui/keyTargets.js +5 -3
- package/lib/hooks/ui/keyTargets.js.map +1 -1
- package/lib/hooks/ui/useAsync.d.ts +20 -5
- package/lib/hooks/ui/useAsync.d.ts.map +1 -1
- package/lib/hooks/ui/useAsync.js +29 -14
- package/lib/hooks/ui/useAsync.js.map +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts +1 -1
- package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
- package/lib/ir/core/analysisSpectra.d.ts +23 -6
- package/lib/ir/core/analysisSpectra.d.ts.map +1 -1
- package/lib/ir/core/analysisSpectra.js.map +1 -1
- package/lib/ir/core/bandLabelPlan.d.ts.map +1 -1
- package/lib/ir/core/bandLabelPlan.js +11 -6
- package/lib/ir/core/bandLabelPlan.js.map +1 -1
- package/lib/ir/core/index.d.ts +13 -9
- package/lib/ir/core/index.d.ts.map +1 -1
- package/lib/ir/core/index.js +9 -6
- package/lib/ir/core/index.js.map +1 -1
- package/lib/ir/core/irBand.d.ts +45 -14
- package/lib/ir/core/irBand.d.ts.map +1 -1
- package/lib/ir/core/irBand.js +28 -6
- package/lib/ir/core/irBand.js.map +1 -1
- package/lib/ir/core/irCommands.d.ts +11 -0
- package/lib/ir/core/irCommands.d.ts.map +1 -1
- package/lib/ir/core/irCommands.js +11 -1
- package/lib/ir/core/irCommands.js.map +1 -1
- package/lib/ir/core/irDomain.d.ts +4 -3
- package/lib/ir/core/irDomain.d.ts.map +1 -1
- package/lib/ir/core/irDomain.js +10 -7
- package/lib/ir/core/irDomain.js.map +1 -1
- package/lib/ir/core/irFormat.d.ts +14 -2
- package/lib/ir/core/irFormat.d.ts.map +1 -1
- package/lib/ir/core/irFormat.js +33 -4
- package/lib/ir/core/irFormat.js.map +1 -1
- package/lib/ir/core/irMode.d.ts +35 -8
- package/lib/ir/core/irMode.d.ts.map +1 -1
- package/lib/ir/core/irMode.js +38 -10
- package/lib/ir/core/irMode.js.map +1 -1
- package/lib/ir/core/irReducer.d.ts +0 -28
- package/lib/ir/core/irReducer.d.ts.map +1 -1
- package/lib/ir/core/irReducer.js +1 -24
- package/lib/ir/core/irReducer.js.map +1 -1
- package/lib/ir/core/irSpectrum.d.ts +52 -26
- package/lib/ir/core/irSpectrum.d.ts.map +1 -1
- package/lib/ir/core/irSpectrum.js +21 -15
- package/lib/ir/core/irSpectrum.js.map +1 -1
- package/lib/ir/core/irState.d.ts +40 -2
- package/lib/ir/core/irState.d.ts.map +1 -1
- package/lib/ir/core/irState.js +38 -1
- package/lib/ir/core/irState.js.map +1 -1
- package/lib/ir/core/irTechnique.d.ts +94 -0
- package/lib/ir/core/irTechnique.d.ts.map +1 -0
- package/lib/ir/core/irTechnique.js +87 -0
- package/lib/ir/core/irTechnique.js.map +1 -0
- package/lib/ir/core/irTechniqueCommands.d.ts +26 -0
- package/lib/ir/core/irTechniqueCommands.d.ts.map +1 -0
- package/lib/ir/core/irTechniqueCommands.js +68 -0
- package/lib/ir/core/irTechniqueCommands.js.map +1 -0
- package/lib/ir/core/pickBands.d.ts +6 -5
- package/lib/ir/core/pickBands.d.ts.map +1 -1
- package/lib/ir/core/pickBands.js +49 -26
- package/lib/ir/core/pickBands.js.map +1 -1
- package/lib/ir/core/ramanBands.d.ts +30 -0
- package/lib/ir/core/ramanBands.d.ts.map +1 -0
- package/lib/ir/core/ramanBands.js +83 -0
- package/lib/ir/core/ramanBands.js.map +1 -0
- package/lib/ir/core/spectrumJcamp.d.ts +10 -5
- package/lib/ir/core/spectrumJcamp.d.ts.map +1 -1
- package/lib/ir/core/spectrumJcamp.js +63 -15
- package/lib/ir/core/spectrumJcamp.js.map +1 -1
- package/lib/ir/core/toIrSpectrum.d.ts.map +1 -1
- package/lib/ir/core/toIrSpectrum.js +17 -2
- package/lib/ir/core/toIrSpectrum.js.map +1 -1
- package/lib/ir/ui/BandRow.d.ts +30 -0
- package/lib/ir/ui/BandRow.d.ts.map +1 -0
- package/lib/ir/ui/BandRow.js +42 -0
- package/lib/ir/ui/BandRow.js.map +1 -0
- package/lib/ir/ui/BandsPanel.d.ts +4 -0
- package/lib/ir/ui/BandsPanel.d.ts.map +1 -1
- package/lib/ir/ui/BandsPanel.js +14 -59
- package/lib/ir/ui/BandsPanel.js.map +1 -1
- package/lib/ir/ui/IrAboutDialog.d.ts +7 -0
- package/lib/ir/ui/IrAboutDialog.d.ts.map +1 -1
- package/lib/ir/ui/IrAboutDialog.js +16 -3
- package/lib/ir/ui/IrAboutDialog.js.map +1 -1
- package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
- package/lib/ir/ui/IrCanvas.js +2 -2
- package/lib/ir/ui/IrCanvas.js.map +1 -1
- package/lib/ir/ui/IrChart.d.ts +2 -1
- package/lib/ir/ui/IrChart.d.ts.map +1 -1
- package/lib/ir/ui/IrChart.js +18 -21
- package/lib/ir/ui/IrChart.js.map +1 -1
- package/lib/ir/ui/IrCommandProvider.d.ts +7 -0
- package/lib/ir/ui/IrCommandProvider.d.ts.map +1 -1
- package/lib/ir/ui/IrCommandProvider.js +2 -2
- package/lib/ir/ui/IrCommandProvider.js.map +1 -1
- package/lib/ir/ui/IrCommandTooltip.d.ts +7 -0
- package/lib/ir/ui/IrCommandTooltip.d.ts.map +1 -1
- package/lib/ir/ui/IrCommandTooltip.js +3 -2
- package/lib/ir/ui/IrCommandTooltip.js.map +1 -1
- package/lib/ir/ui/IrDocumentationDialog.d.ts +8 -1
- package/lib/ir/ui/IrDocumentationDialog.d.ts.map +1 -1
- package/lib/ir/ui/IrDocumentationDialog.js +30 -7
- package/lib/ir/ui/IrDocumentationDialog.js.map +1 -1
- package/lib/ir/ui/IrEditor.d.ts +3 -1
- package/lib/ir/ui/IrEditor.d.ts.map +1 -1
- package/lib/ir/ui/IrEditor.js +3 -20
- package/lib/ir/ui/IrEditor.js.map +1 -1
- package/lib/ir/ui/IrHeader.d.ts.map +1 -1
- package/lib/ir/ui/IrHeader.js +5 -1
- package/lib/ir/ui/IrHeader.js.map +1 -1
- package/lib/ir/ui/IrLogo.d.ts +11 -3
- package/lib/ir/ui/IrLogo.d.ts.map +1 -1
- package/lib/ir/ui/IrLogo.js +14 -5
- package/lib/ir/ui/IrLogo.js.map +1 -1
- package/lib/ir/ui/IrShell.d.ts.map +1 -1
- package/lib/ir/ui/IrShell.js +23 -56
- package/lib/ir/ui/IrShell.js.map +1 -1
- package/lib/ir/ui/IrStatusBar.d.ts +3 -2
- package/lib/ir/ui/IrStatusBar.d.ts.map +1 -1
- package/lib/ir/ui/IrStatusBar.js +14 -9
- package/lib/ir/ui/IrStatusBar.js.map +1 -1
- package/lib/ir/ui/IrToolbar.d.ts +3 -0
- package/lib/ir/ui/IrToolbar.d.ts.map +1 -1
- package/lib/ir/ui/IrToolbar.js +10 -3
- package/lib/ir/ui/IrToolbar.js.map +1 -1
- package/lib/ir/ui/IrTraces.d.ts +4 -1
- package/lib/ir/ui/IrTraces.d.ts.map +1 -1
- package/lib/ir/ui/IrTraces.js +2 -0
- package/lib/ir/ui/IrTraces.js.map +1 -1
- package/lib/ir/ui/RamanEditor.d.ts +46 -0
- package/lib/ir/ui/RamanEditor.d.ts.map +1 -0
- package/lib/ir/ui/RamanEditor.js +17 -0
- package/lib/ir/ui/RamanEditor.js.map +1 -0
- package/lib/ir/ui/SpectraPanel.d.ts.map +1 -1
- package/lib/ir/ui/SpectraPanel.js +2 -2
- package/lib/ir/ui/SpectraPanel.js.map +1 -1
- package/lib/ir/ui/SpectrumRow.d.ts +7 -0
- package/lib/ir/ui/SpectrumRow.d.ts.map +1 -1
- package/lib/ir/ui/SpectrumRow.js +4 -5
- package/lib/ir/ui/SpectrumRow.js.map +1 -1
- package/lib/ir/ui/VibrationalEditor.d.ts +48 -0
- package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -0
- package/lib/ir/ui/VibrationalEditor.js +31 -0
- package/lib/ir/ui/VibrationalEditor.js.map +1 -0
- package/lib/ir/ui/bandsTsv.d.ts +19 -0
- package/lib/ir/ui/bandsTsv.d.ts.map +1 -0
- package/lib/ir/ui/bandsTsv.js +38 -0
- package/lib/ir/ui/bandsTsv.js.map +1 -0
- package/lib/ir/ui/irChartProps.d.ts +14 -4
- package/lib/ir/ui/irChartProps.d.ts.map +1 -1
- package/lib/ir/ui/irChartProps.js +3 -2
- package/lib/ir/ui/irChartProps.js.map +1 -1
- package/lib/ir/ui/irCommandContext.d.ts +8 -0
- package/lib/ir/ui/irCommandContext.d.ts.map +1 -1
- package/lib/ir/ui/irCommandContext.js +14 -3
- package/lib/ir/ui/irCommandContext.js.map +1 -1
- package/lib/ir/ui/useIrEditor.d.ts +3 -3
- package/lib/ir/ui/useIrEditor.d.ts.map +1 -1
- package/lib/ir/ui/useIrEditor.js +13 -4
- package/lib/ir/ui/useIrEditor.js.map +1 -1
- package/lib/ir/ui/useIrHandle.d.ts +14 -0
- package/lib/ir/ui/useIrHandle.d.ts.map +1 -0
- package/lib/ir/ui/useIrHandle.js +39 -0
- package/lib/ir/ui/useIrHandle.js.map +1 -0
- package/lib/ir/ui/useIrText.d.ts +40 -0
- package/lib/ir/ui/useIrText.d.ts.map +1 -0
- package/lib/ir/ui/useIrText.js +118 -0
- package/lib/ir/ui/useIrText.js.map +1 -0
- package/lib/ir/ui/useIrZoom.d.ts +7 -0
- package/lib/ir/ui/useIrZoom.d.ts.map +1 -1
- package/lib/ir/ui/useIrZoom.js +5 -4
- package/lib/ir/ui/useIrZoom.js.map +1 -1
- package/lib/ir/ui/useValueAxisZoom.d.ts +20 -0
- package/lib/ir/ui/useValueAxisZoom.d.ts.map +1 -0
- package/lib/ir/ui/useValueAxisZoom.js +54 -0
- package/lib/ir/ui/useValueAxisZoom.js.map +1 -0
- package/lib/ir.d.ts +3 -0
- package/lib/ir.d.ts.map +1 -1
- package/lib/ir.js +3 -0
- package/lib/ir.js.map +1 -1
- package/lib/locales/de.json +57 -1
- package/lib/locales/en.json +57 -1
- package/lib/locales/es.json +57 -1
- package/lib/locales/fr.json +57 -1
- package/lib/locales/it.json +57 -1
- package/lib/moleculesClient/core/index.d.ts +5 -0
- package/lib/moleculesClient/core/index.d.ts.map +1 -0
- package/lib/moleculesClient/core/index.js +3 -0
- package/lib/moleculesClient/core/index.js.map +1 -0
- package/lib/moleculesClient/core/moleculesClient.d.ts +12 -0
- package/lib/moleculesClient/core/moleculesClient.d.ts.map +1 -0
- package/lib/moleculesClient/core/moleculesClient.js +105 -0
- package/lib/moleculesClient/core/moleculesClient.js.map +1 -0
- package/lib/moleculesClient/core/moleculesClientApi.d.ts +100 -0
- package/lib/moleculesClient/core/moleculesClientApi.d.ts.map +1 -0
- package/lib/moleculesClient/core/moleculesClientApi.js +20 -0
- package/lib/moleculesClient/core/moleculesClientApi.js.map +1 -0
- package/lib/moleculesClient/core/moleculesTypes.d.ts +154 -0
- package/lib/moleculesClient/core/moleculesTypes.d.ts.map +1 -0
- package/lib/moleculesClient/core/moleculesTypes.js +2 -0
- package/lib/moleculesClient/core/moleculesTypes.js.map +1 -0
- package/lib/moleculesClient/core/requestRetry.d.ts +50 -0
- package/lib/moleculesClient/core/requestRetry.d.ts.map +1 -0
- package/lib/moleculesClient/core/requestRetry.js +108 -0
- package/lib/moleculesClient/core/requestRetry.js.map +1 -0
- package/lib/molstar/core/camera.d.ts +2 -1
- package/lib/molstar/core/camera.d.ts.map +1 -1
- package/lib/molstar/core/camera.js +3 -2
- package/lib/molstar/core/camera.js.map +1 -1
- package/lib/molstar/core/framing.d.ts +102 -0
- package/lib/molstar/core/framing.d.ts.map +1 -0
- package/lib/molstar/core/framing.js +120 -0
- package/lib/molstar/core/framing.js.map +1 -0
- package/lib/molstar/core/hover.d.ts +16 -0
- package/lib/molstar/core/hover.d.ts.map +1 -1
- package/lib/molstar/core/hover.js +14 -0
- package/lib/molstar/core/hover.js.map +1 -1
- package/lib/molstar/core/index.d.ts +4 -1
- package/lib/molstar/core/index.d.ts.map +1 -1
- package/lib/molstar/core/index.js +2 -1
- package/lib/molstar/core/index.js.map +1 -1
- package/lib/pedagogy/core/answers.d.ts +46 -0
- package/lib/pedagogy/core/answers.d.ts.map +1 -0
- package/lib/pedagogy/core/answers.js +77 -0
- package/lib/pedagogy/core/answers.js.map +1 -0
- package/lib/pedagogy/core/attempts.d.ts +86 -0
- package/lib/pedagogy/core/attempts.d.ts.map +1 -0
- package/lib/pedagogy/core/attempts.js +117 -0
- package/lib/pedagogy/core/attempts.js.map +1 -0
- package/lib/pedagogy/core/index.d.ts +8 -0
- package/lib/pedagogy/core/index.d.ts.map +1 -1
- package/lib/pedagogy/core/index.js +4 -0
- package/lib/pedagogy/core/index.js.map +1 -1
- package/lib/pedagogy/core/progressController.d.ts +64 -0
- package/lib/pedagogy/core/progressController.d.ts.map +1 -0
- package/lib/pedagogy/core/progressController.js +56 -0
- package/lib/pedagogy/core/progressController.js.map +1 -0
- package/lib/pedagogy/core/seed.d.ts +96 -0
- package/lib/pedagogy/core/seed.d.ts.map +1 -0
- package/lib/pedagogy/core/seed.js +128 -0
- package/lib/pedagogy/core/seed.js.map +1 -0
- package/lib/pedagogy/core/series.d.ts +77 -0
- package/lib/pedagogy/core/series.d.ts.map +1 -0
- package/lib/pedagogy/core/series.js +10 -0
- package/lib/pedagogy/core/series.js.map +1 -0
- package/lib/pedagogy/ui/AnswerFields.d.ts +21 -0
- package/lib/pedagogy/ui/AnswerFields.d.ts.map +1 -0
- package/lib/pedagogy/ui/AnswerFields.js +24 -0
- package/lib/pedagogy/ui/AnswerFields.js.map +1 -0
- package/lib/pedagogy/ui/ExerciseList.d.ts +82 -0
- package/lib/pedagogy/ui/ExerciseList.d.ts.map +1 -0
- package/lib/pedagogy/ui/ExerciseList.js +53 -0
- package/lib/pedagogy/ui/ExerciseList.js.map +1 -0
- package/lib/pedagogy/ui/ExerciseSeries.d.ts +95 -0
- package/lib/pedagogy/ui/ExerciseSeries.d.ts.map +1 -0
- package/lib/pedagogy/ui/ExerciseSeries.js +74 -0
- package/lib/pedagogy/ui/ExerciseSeries.js.map +1 -0
- package/lib/pedagogy/ui/QuestionCard.d.ts +64 -0
- package/lib/pedagogy/ui/QuestionCard.d.ts.map +1 -0
- package/lib/pedagogy/ui/QuestionCard.js +73 -0
- package/lib/pedagogy/ui/QuestionCard.js.map +1 -0
- package/lib/pedagogy/ui/index.d.ts +10 -0
- package/lib/pedagogy/ui/index.d.ts.map +1 -1
- package/lib/pedagogy/ui/index.js +6 -0
- package/lib/pedagogy/ui/index.js.map +1 -1
- package/lib/pedagogy/ui/seriesCounts.d.ts +17 -0
- package/lib/pedagogy/ui/seriesCounts.d.ts.map +1 -0
- package/lib/pedagogy/ui/seriesCounts.js +27 -0
- package/lib/pedagogy/ui/seriesCounts.js.map +1 -0
- package/lib/pedagogy/ui/seriesParts.d.ts +55 -0
- package/lib/pedagogy/ui/seriesParts.d.ts.map +1 -0
- package/lib/pedagogy/ui/seriesParts.js +38 -0
- package/lib/pedagogy/ui/seriesParts.js.map +1 -0
- package/lib/pedagogy/ui/useAttemptRecords.d.ts +10 -0
- package/lib/pedagogy/ui/useAttemptRecords.d.ts.map +1 -0
- package/lib/pedagogy/ui/useAttemptRecords.js +11 -0
- package/lib/pedagogy/ui/useAttemptRecords.js.map +1 -0
- package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -1
- package/lib/periodic/ui/PeriodicTable.js +6 -3
- package/lib/periodic/ui/PeriodicTable.js.map +1 -1
- package/lib/property/core/copyableText.d.ts +14 -0
- package/lib/property/core/copyableText.d.ts.map +1 -0
- package/lib/property/core/copyableText.js +21 -0
- package/lib/property/core/copyableText.js.map +1 -0
- package/lib/property/core/index.d.ts +2 -0
- package/lib/property/core/index.d.ts.map +1 -0
- package/lib/property/core/index.js +2 -0
- package/lib/property/core/index.js.map +1 -0
- package/lib/property/ui/PropertyTable.d.ts +43 -0
- package/lib/property/ui/PropertyTable.d.ts.map +1 -0
- package/lib/property/ui/PropertyTable.js +19 -0
- package/lib/property/ui/PropertyTable.js.map +1 -0
- package/lib/property/ui/index.d.ts +3 -0
- package/lib/property/ui/index.d.ts.map +1 -0
- package/lib/property/ui/index.js +2 -0
- package/lib/property/ui/index.js.map +1 -0
- package/lib/raman.d.ts +16 -0
- package/lib/raman.d.ts.map +1 -0
- package/lib/raman.js +12 -0
- package/lib/raman.js.map +1 -0
- package/lib/router/core/history.d.ts +24 -3
- package/lib/router/core/history.d.ts.map +1 -1
- package/lib/router/core/history.js +55 -7
- package/lib/router/core/history.js.map +1 -1
- package/lib/router/core/index.d.ts +3 -3
- package/lib/router/core/index.d.ts.map +1 -1
- package/lib/router/core/index.js +2 -2
- package/lib/router/core/index.js.map +1 -1
- package/lib/router/core/languageRoute.d.ts +61 -0
- package/lib/router/core/languageRoute.d.ts.map +1 -0
- package/lib/router/core/languageRoute.js +96 -0
- package/lib/router/core/languageRoute.js.map +1 -0
- package/lib/router/core/siteAddresses.d.ts +23 -0
- package/lib/router/core/siteAddresses.d.ts.map +1 -1
- package/lib/router/core/siteAddresses.js +26 -0
- package/lib/router/core/siteAddresses.js.map +1 -1
- package/lib/router/core/tabRouter.d.ts +2 -108
- package/lib/router/core/tabRouter.d.ts.map +1 -1
- package/lib/router/core/tabRouter.js +38 -5
- package/lib/router/core/tabRouter.js.map +1 -1
- package/lib/router/core/tabRouterTypes.d.ts +154 -0
- package/lib/router/core/tabRouterTypes.d.ts.map +1 -0
- package/lib/router/core/tabRouterTypes.js +2 -0
- package/lib/router/core/tabRouterTypes.js.map +1 -0
- package/lib/seo/core/fitDescription.d.ts +40 -0
- package/lib/seo/core/fitDescription.d.ts.map +1 -0
- package/lib/seo/core/fitDescription.js +45 -0
- package/lib/seo/core/fitDescription.js.map +1 -0
- package/lib/seo/core/index.d.ts +7 -0
- package/lib/seo/core/index.d.ts.map +1 -1
- package/lib/seo/core/index.js +4 -0
- package/lib/seo/core/index.js.map +1 -1
- package/lib/seo/core/limits.d.ts +24 -0
- package/lib/seo/core/limits.d.ts.map +1 -0
- package/lib/seo/core/limits.js +24 -0
- package/lib/seo/core/limits.js.map +1 -0
- package/lib/seo/core/pageContent.d.ts +25 -0
- package/lib/seo/core/pageContent.d.ts.map +1 -0
- package/lib/seo/core/pageContent.js +25 -0
- package/lib/seo/core/pageContent.js.map +1 -0
- package/lib/seo/core/plainDescription.d.ts.map +1 -1
- package/lib/seo/core/plainDescription.js +3 -2
- package/lib/seo/core/plainDescription.js.map +1 -1
- package/lib/seo/core/routeProblems.d.ts.map +1 -1
- package/lib/seo/core/routeProblems.js +1 -6
- package/lib/seo/core/routeProblems.js.map +1 -1
- package/lib/seo/core/routeTable.d.ts +31 -0
- package/lib/seo/core/routeTable.d.ts.map +1 -0
- package/lib/seo/core/routeTable.js +96 -0
- package/lib/seo/core/routeTable.js.map +1 -0
- package/lib/seo/vite/index.d.ts +2 -0
- package/lib/seo/vite/index.d.ts.map +1 -1
- package/lib/seo/vite/index.js +1 -0
- package/lib/seo/vite/index.js.map +1 -1
- package/lib/seo/vite/prerender.d.ts +10 -0
- package/lib/seo/vite/prerender.d.ts.map +1 -1
- package/lib/seo/vite/prerender.js +12 -1
- package/lib/seo/vite/prerender.js.map +1 -1
- package/lib/seo/vite/routeTable.d.ts +40 -0
- package/lib/seo/vite/routeTable.d.ts.map +1 -0
- package/lib/seo/vite/routeTable.js +44 -0
- package/lib/seo/vite/routeTable.js.map +1 -0
- package/lib/server/answerAddresses.d.ts +51 -0
- package/lib/server/answerAddresses.d.ts.map +1 -0
- package/lib/server/answerAddresses.js +72 -0
- package/lib/server/answerAddresses.js.map +1 -0
- package/lib/server/cardMeta.d.ts +57 -0
- package/lib/server/cardMeta.d.ts.map +1 -0
- package/lib/server/cardMeta.js +52 -0
- package/lib/server/cardMeta.js.map +1 -0
- package/lib/server/config.d.ts +72 -0
- package/lib/server/config.d.ts.map +1 -0
- package/lib/server/config.js +67 -0
- package/lib/server/config.js.map +1 -0
- package/lib/server/envNumber.d.ts +35 -0
- package/lib/server/envNumber.d.ts.map +1 -0
- package/lib/server/envNumber.js +42 -0
- package/lib/server/envNumber.js.map +1 -0
- package/lib/server/healthRoute.d.ts +26 -0
- package/lib/server/healthRoute.d.ts.map +1 -0
- package/lib/server/healthRoute.js +22 -0
- package/lib/server/healthRoute.js.map +1 -0
- package/lib/server/listenSite.d.ts +38 -0
- package/lib/server/listenSite.d.ts.map +1 -0
- package/lib/server/listenSite.js +60 -0
- package/lib/server/listenSite.js.map +1 -0
- package/lib/server/mcpServer.d.ts +8 -0
- package/lib/server/mcpServer.d.ts.map +1 -0
- package/lib/server/mcpServer.js +11 -0
- package/lib/server/mcpServer.js.map +1 -0
- package/lib/server/repositoryVersion.d.ts +16 -0
- package/lib/server/repositoryVersion.d.ts.map +1 -0
- package/lib/server/repositoryVersion.js +33 -0
- package/lib/server/repositoryVersion.js.map +1 -0
- package/lib/server/routeOptions.d.ts +23 -0
- package/lib/server/routeOptions.d.ts.map +1 -0
- package/lib/server/routeOptions.js +20 -0
- package/lib/server/routeOptions.js.map +1 -0
- package/lib/server/routeTable.d.ts +14 -0
- package/lib/server/routeTable.d.ts.map +1 -0
- package/lib/server/routeTable.js +32 -0
- package/lib/server/routeTable.js.map +1 -0
- package/lib/server/siteView.d.ts +29 -0
- package/lib/server/siteView.d.ts.map +1 -0
- package/lib/server/siteView.js +21 -0
- package/lib/server/siteView.js.map +1 -0
- package/lib/server/spaPages.d.ts +32 -0
- package/lib/server/spaPages.d.ts.map +1 -0
- package/lib/server/spaPages.js +126 -0
- package/lib/server/spaPages.js.map +1 -0
- package/lib/server/spaSite.d.ts +30 -0
- package/lib/server/spaSite.d.ts.map +1 -0
- package/lib/server/spaSite.js +170 -0
- package/lib/server/spaSite.js.map +1 -0
- package/lib/server/spaSiteOptions.d.ts +126 -0
- package/lib/server/spaSiteOptions.d.ts.map +1 -0
- package/lib/server/spaSiteOptions.js +2 -0
- package/lib/server/spaSiteOptions.js.map +1 -0
- package/lib/server/staticSite.d.ts +9 -0
- package/lib/server/staticSite.d.ts.map +1 -1
- package/lib/server/staticSite.js +41 -19
- package/lib/server/staticSite.js.map +1 -1
- package/lib/server/toolSiteServer.d.ts +77 -0
- package/lib/server/toolSiteServer.d.ts.map +1 -0
- package/lib/server/toolSiteServer.js +58 -0
- package/lib/server/toolSiteServer.js.map +1 -0
- package/lib/server/trustProxy.d.ts +20 -0
- package/lib/server/trustProxy.d.ts.map +1 -0
- package/lib/server/trustProxy.js +32 -0
- package/lib/server/trustProxy.js.map +1 -0
- package/lib/server/types.d.ts +13 -0
- package/lib/server/types.d.ts.map +1 -0
- package/lib/server/types.js +2 -0
- package/lib/server/types.js.map +1 -0
- package/lib/server.d.ts +22 -0
- package/lib/server.d.ts.map +1 -1
- package/lib/server.js +12 -0
- package/lib/server.js.map +1 -1
- package/lib/share/core/config.d.ts +18 -0
- package/lib/share/core/config.d.ts.map +1 -1
- package/lib/share/core/config.js +33 -2
- package/lib/share/core/config.js.map +1 -1
- package/lib/share/core/index.d.ts +3 -1
- package/lib/share/core/index.d.ts.map +1 -1
- package/lib/share/core/index.js +2 -1
- package/lib/share/core/index.js.map +1 -1
- package/lib/share/core/keySetParam.d.ts +40 -0
- package/lib/share/core/keySetParam.d.ts.map +1 -0
- package/lib/share/core/keySetParam.js +60 -0
- package/lib/share/core/keySetParam.js.map +1 -0
- package/lib/share/core/vocabulary.d.ts +8 -0
- package/lib/share/core/vocabulary.d.ts.map +1 -1
- package/lib/shell/ui/ShareControl.d.ts +75 -0
- package/lib/shell/ui/ShareControl.d.ts.map +1 -0
- package/lib/shell/ui/ShareControl.js +40 -0
- package/lib/shell/ui/ShareControl.js.map +1 -0
- package/lib/shell/ui/ShellFrame.d.ts +14 -0
- package/lib/shell/ui/ShellFrame.d.ts.map +1 -0
- package/lib/shell/ui/ShellFrame.js +45 -0
- package/lib/shell/ui/ShellFrame.js.map +1 -0
- package/lib/shell/ui/SiteShell.d.ts +251 -0
- package/lib/shell/ui/SiteShell.d.ts.map +1 -0
- package/lib/shell/ui/SiteShell.js +39 -0
- package/lib/shell/ui/SiteShell.js.map +1 -0
- package/lib/shell/ui/index.d.ts +5 -0
- package/lib/shell/ui/index.d.ts.map +1 -0
- package/lib/shell/ui/index.js +3 -0
- package/lib/shell/ui/index.js.map +1 -0
- package/lib/state/core/index.d.ts +1 -0
- package/lib/state/core/index.d.ts.map +1 -1
- package/lib/state/core/index.js.map +1 -1
- package/lib/state/core/legacyEntries.d.ts +30 -0
- package/lib/state/core/legacyEntries.d.ts.map +1 -0
- package/lib/state/core/legacyEntries.js +51 -0
- package/lib/state/core/legacyEntries.js.map +1 -0
- package/lib/state/core/persistBucket.d.ts +26 -2
- package/lib/state/core/persistBucket.d.ts.map +1 -1
- package/lib/state/core/persistBucket.js +26 -9
- package/lib/state/core/persistBucket.js.map +1 -1
- package/lib/state/core/persistSignalBucket.d.ts +26 -0
- package/lib/state/core/persistSignalBucket.d.ts.map +1 -1
- package/lib/state/core/persistSignalBucket.js +31 -0
- package/lib/state/core/persistSignalBucket.js.map +1 -1
- package/lib/state/core/storageEntry.d.ts +15 -0
- package/lib/state/core/storageEntry.d.ts.map +1 -1
- package/lib/state/core/storageEntry.js +33 -0
- package/lib/state/core/storageEntry.js.map +1 -1
- package/lib/structure/ui/StructureExportButton.d.ts +27 -0
- package/lib/structure/ui/StructureExportButton.d.ts.map +1 -0
- package/lib/structure/ui/StructureExportButton.js +21 -0
- package/lib/structure/ui/StructureExportButton.js.map +1 -0
- package/lib/structure/ui/index.d.ts +4 -0
- package/lib/structure/ui/index.d.ts.map +1 -1
- package/lib/structure/ui/index.js +2 -0
- package/lib/structure/ui/index.js.map +1 -1
- package/lib/structure/ui/useStructureDraft.d.ts +32 -0
- package/lib/structure/ui/useStructureDraft.d.ts.map +1 -0
- package/lib/structure/ui/useStructureDraft.js +20 -0
- package/lib/structure/ui/useStructureDraft.js.map +1 -0
- package/lib/ui.d.ts +2 -0
- package/lib/ui.d.ts.map +1 -1
- package/lib/ui.js +2 -0
- package/lib/ui.js.map +1 -1
- package/lib/worker/core/index.d.ts +1 -1
- package/lib/worker/core/index.d.ts.map +1 -1
- package/lib/worker/core/messages.d.ts +4 -2
- package/lib/worker/core/messages.d.ts.map +1 -1
- package/lib/worker/core/messages.js.map +1 -1
- package/lib/worker/core/oclResourcesUrl.d.ts +16 -0
- package/lib/worker/core/oclResourcesUrl.d.ts.map +1 -0
- package/lib/worker/core/oclResourcesUrl.js +19 -0
- package/lib/worker/core/oclResourcesUrl.js.map +1 -0
- package/lib/worker/core/serveWorkerRequests.d.ts +8 -0
- package/lib/worker/core/serveWorkerRequests.d.ts.map +1 -1
- package/lib/worker/core/serveWorkerRequests.js +15 -2
- package/lib/worker/core/serveWorkerRequests.js.map +1 -1
- package/lib/worker/core/workerChannel.d.ts +3 -4
- package/lib/worker/core/workerChannel.d.ts.map +1 -1
- package/lib/worker/core/workerChannel.js +72 -67
- package/lib/worker/core/workerChannel.js.map +1 -1
- package/lib/worker/core/workerChannelParts.d.ts +17 -6
- package/lib/worker/core/workerChannelParts.d.ts.map +1 -1
- package/lib/worker/core/workerChannelParts.js +20 -4
- package/lib/worker/core/workerChannelParts.js.map +1 -1
- package/lib/worker/core/workerChannelTypes.d.ts +46 -2
- package/lib/worker/core/workerChannelTypes.d.ts.map +1 -1
- package/lib/worker/core/workerSlot.d.ts +66 -0
- package/lib/worker/core/workerSlot.d.ts.map +1 -0
- package/lib/worker/core/workerSlot.js +107 -0
- package/lib/worker/core/workerSlot.js.map +1 -0
- package/package.json +17 -1
- package/src/card/core/cardAddress.ts +100 -0
- package/src/card/core/cardPageUrl.ts +97 -0
- package/src/card/core/index.ts +6 -0
- package/src/card/core/panelRoom.ts +66 -0
- package/src/card/ui/CardDetailsButton.tsx +104 -0
- package/src/card/ui/CardFigure.tsx +86 -0
- package/src/card/ui/CardFrame.tsx +46 -0
- package/src/card/ui/CopyTableButton.tsx +81 -0
- package/src/card/ui/cardTooltip.ts +18 -0
- package/src/card/ui/embed.ts +27 -0
- package/src/card/ui/fitCardToFrame.ts +76 -0
- package/src/card/ui/holdRoomForPanels.ts +83 -0
- package/src/card/ui/index.ts +14 -0
- package/src/card/ui/openPanels.ts +106 -0
- package/src/card.ts +13 -0
- package/src/conformers.ts +4 -0
- package/src/core.ts +5 -0
- package/src/fetch/core/apiError.ts +65 -0
- package/src/fetch/core/fetchJson.ts +129 -0
- package/src/fetch/core/index.ts +4 -0
- package/src/formula/core/formulaText.ts +96 -0
- package/src/formula/core/index.ts +20 -0
- package/src/formula/core/normalizeFormula.ts +50 -0
- package/src/formula/core/readFormula.ts +211 -0
- package/src/formula/ui/CopyableFormula.tsx +51 -0
- package/src/formula/ui/FormulaInput.tsx +50 -0
- package/src/formula/ui/QuestionFormula.tsx +20 -0
- package/src/formula/ui/index.ts +6 -0
- package/src/formula.ts +11 -0
- package/src/hooks/ui/index.ts +1 -0
- package/src/hooks/ui/keyTargets.ts +5 -3
- package/src/hooks/ui/useAsync.ts +50 -14
- package/src/ir/core/analysisSpectra.ts +26 -10
- package/src/ir/core/bandLabelPlan.ts +21 -10
- package/src/ir/core/index.ts +25 -5
- package/src/ir/core/irBand.ts +52 -14
- package/src/ir/core/irCommands.ts +15 -1
- package/src/ir/core/irDomain.ts +9 -7
- package/src/ir/core/irFormat.ts +39 -6
- package/src/ir/core/irMode.ts +42 -10
- package/src/ir/core/irReducer.ts +1 -49
- package/src/ir/core/irSpectrum.ts +59 -30
- package/src/ir/core/irState.ts +67 -2
- package/src/ir/core/irTechnique.ts +115 -0
- package/src/ir/core/irTechniqueCommands.ts +82 -0
- package/src/ir/core/pickBands.ts +63 -28
- package/src/ir/core/ramanBands.ts +105 -0
- package/src/ir/core/spectrumJcamp.ts +65 -16
- package/src/ir/core/toIrSpectrum.ts +20 -2
- package/src/ir/ui/BandRow.tsx +107 -0
- package/src/ir/ui/BandsPanel.tsx +32 -125
- package/src/ir/ui/IrAboutDialog.tsx +69 -28
- package/src/ir/ui/IrCanvas.tsx +2 -1
- package/src/ir/ui/IrChart.tsx +20 -24
- package/src/ir/ui/IrCommandProvider.tsx +10 -3
- package/src/ir/ui/IrCommandTooltip.tsx +11 -2
- package/src/ir/ui/IrDocumentationDialog.tsx +99 -55
- package/src/ir/ui/IrEditor.tsx +5 -36
- package/src/ir/ui/IrHeader.tsx +10 -3
- package/src/ir/ui/IrLogo.tsx +28 -9
- package/src/ir/ui/IrShell.tsx +27 -75
- package/src/ir/ui/IrStatusBar.tsx +17 -12
- package/src/ir/ui/IrToolbar.tsx +26 -15
- package/src/ir/ui/IrTraces.tsx +5 -1
- package/src/ir/ui/RamanEditor.tsx +53 -0
- package/src/ir/ui/SpectraPanel.tsx +2 -1
- package/src/ir/ui/SpectrumRow.tsx +14 -5
- package/src/ir/ui/VibrationalEditor.tsx +94 -0
- package/src/ir/ui/bandsTsv.ts +46 -0
- package/src/ir/ui/irChartProps.ts +14 -4
- package/src/ir/ui/irCommandContext.tsx +18 -3
- package/src/ir/ui/useIrEditor.ts +20 -8
- package/src/ir/ui/useIrHandle.ts +51 -0
- package/src/ir/ui/useIrText.ts +170 -0
- package/src/ir/ui/useIrZoom.ts +12 -3
- package/src/ir/ui/useValueAxisZoom.ts +67 -0
- package/src/ir.ts +3 -0
- package/src/locales/de.json +57 -1
- package/src/locales/en.json +57 -1
- package/src/locales/es.json +57 -1
- package/src/locales/fr.json +57 -1
- package/src/locales/it.json +57 -1
- package/src/moleculesClient/core/index.ts +19 -0
- package/src/moleculesClient/core/moleculesClient.ts +175 -0
- package/src/moleculesClient/core/moleculesClientApi.ts +120 -0
- package/src/moleculesClient/core/moleculesTypes.ts +163 -0
- package/src/moleculesClient/core/requestRetry.ts +118 -0
- package/src/molstar/core/camera.ts +3 -2
- package/src/molstar/core/framing.ts +200 -0
- package/src/molstar/core/hover.ts +26 -0
- package/src/molstar/core/index.ts +21 -1
- package/src/pedagogy/core/answers.ts +94 -0
- package/src/pedagogy/core/attempts.ts +205 -0
- package/src/pedagogy/core/index.ts +36 -0
- package/src/pedagogy/core/progressController.ts +116 -0
- package/src/pedagogy/core/seed.ts +177 -0
- package/src/pedagogy/core/series.ts +82 -0
- package/src/pedagogy/ui/AnswerFields.tsx +63 -0
- package/src/pedagogy/ui/ExerciseList.tsx +202 -0
- package/src/pedagogy/ui/ExerciseSeries.tsx +250 -0
- package/src/pedagogy/ui/QuestionCard.tsx +231 -0
- package/src/pedagogy/ui/index.ts +18 -0
- package/src/pedagogy/ui/seriesCounts.ts +34 -0
- package/src/pedagogy/ui/seriesParts.tsx +127 -0
- package/src/pedagogy/ui/useAttemptRecords.ts +16 -0
- package/src/periodic/ui/PeriodicTable.tsx +6 -3
- package/src/property/core/copyableText.ts +20 -0
- package/src/property/core/index.ts +1 -0
- package/src/property/ui/PropertyTable.tsx +83 -0
- package/src/property/ui/index.ts +2 -0
- package/src/raman.ts +19 -0
- package/src/router/core/history.ts +61 -7
- package/src/router/core/index.ts +3 -2
- package/src/router/core/languageRoute.ts +136 -0
- package/src/router/core/siteAddresses.ts +38 -0
- package/src/router/core/tabRouter.ts +59 -117
- package/src/router/core/tabRouterTypes.ts +158 -0
- package/src/seo/core/fitDescription.ts +74 -0
- package/src/seo/core/index.ts +17 -0
- package/src/seo/core/limits.ts +27 -0
- package/src/seo/core/pageContent.ts +42 -0
- package/src/seo/core/plainDescription.ts +4 -2
- package/src/seo/core/routeProblems.ts +1 -7
- package/src/seo/core/routeTable.ts +103 -0
- package/src/seo/vite/index.ts +2 -0
- package/src/seo/vite/prerender.ts +26 -1
- package/src/seo/vite/routeTable.ts +79 -0
- package/src/server/answerAddresses.ts +92 -0
- package/src/server/cardMeta.ts +88 -0
- package/src/server/config.ts +125 -0
- package/src/server/envNumber.ts +65 -0
- package/src/server/healthRoute.ts +42 -0
- package/src/server/listenSite.ts +90 -0
- package/src/server/mcpServer.ts +14 -0
- package/src/server/repositoryVersion.ts +33 -0
- package/src/server/routeOptions.ts +26 -0
- package/src/server/routeTable.ts +35 -0
- package/src/server/siteView.ts +42 -0
- package/src/server/spaPages.ts +179 -0
- package/src/server/spaSite.ts +216 -0
- package/src/server/spaSiteOptions.ts +133 -0
- package/src/server/staticSite.ts +65 -35
- package/src/server/toolSiteServer.ts +127 -0
- package/src/server/trustProxy.ts +32 -0
- package/src/server/types.ts +25 -0
- package/src/server.ts +40 -0
- package/src/share/core/config.ts +45 -2
- package/src/share/core/index.ts +4 -0
- package/src/share/core/keySetParam.ts +92 -0
- package/src/share/core/vocabulary.ts +8 -0
- package/src/shell/ui/ShareControl.tsx +150 -0
- package/src/shell/ui/ShellFrame.tsx +180 -0
- package/src/shell/ui/SiteShell.tsx +297 -0
- package/src/shell/ui/index.ts +9 -0
- package/src/state/core/index.ts +1 -0
- package/src/state/core/legacyEntries.ts +76 -0
- package/src/state/core/persistBucket.ts +50 -10
- package/src/state/core/persistSignalBucket.ts +52 -0
- package/src/state/core/storageEntry.ts +32 -0
- package/src/structure/ui/StructureExportButton.tsx +57 -0
- package/src/structure/ui/index.ts +4 -0
- package/src/structure/ui/useStructureDraft.ts +47 -0
- package/src/ui.ts +2 -0
- package/src/worker/core/index.ts +1 -0
- package/src/worker/core/messages.ts +4 -3
- package/src/worker/core/oclResourcesUrl.ts +21 -0
- package/src/worker/core/serveWorkerRequests.ts +30 -2
- package/src/worker/core/workerChannel.ts +74 -74
- package/src/worker/core/workerChannelParts.ts +33 -13
- package/src/worker/core/workerChannelTypes.ts +47 -2
- package/src/worker/core/workerSlot.ts +181 -0
- package/styles/card.css +145 -0
- package/styles/chrome.css +248 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The words of the viewer that change with what was measured, in the language
|
|
3
|
+
* the page is written in.
|
|
4
|
+
*
|
|
5
|
+
* Infrared's are not in the chrome's catalog: they are read from the core
|
|
6
|
+
* records, so an infrared viewer reads the same in every language. Raman's are
|
|
7
|
+
* in the catalog, each key written out rather than built, so a key the catalog
|
|
8
|
+
* lacks fails the type check instead of rendering raw.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { ChromeKey } from '../../i18n/core/chromeCatalog.ts';
|
|
12
|
+
import type { Translate } from '../../i18n/ui/useT.ts';
|
|
13
|
+
import { useChromeT } from '../../i18n/ui/useT.ts';
|
|
14
|
+
import type { IrCommand, IrCommandId } from '../core/irCommands.ts';
|
|
15
|
+
import { boxZoomOnly, yAxisTitle } from '../core/irMode.ts';
|
|
16
|
+
import type { IrMode } from '../core/irSpectrum.ts';
|
|
17
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
18
|
+
import { IR_TECHNIQUE_RULES } from '../core/irTechnique.ts';
|
|
19
|
+
import { irCommandsFor } from '../core/irTechniqueCommands.ts';
|
|
20
|
+
|
|
21
|
+
/** The words that change with what was measured. */
|
|
22
|
+
export interface IrText {
|
|
23
|
+
/** What the horizontal axis is called. */
|
|
24
|
+
xTitle: string;
|
|
25
|
+
/** What the value axis is called in a mode. */
|
|
26
|
+
yTitle: (mode: IrMode) => string;
|
|
27
|
+
/** What the chart is and what can be done to it, for whoever cannot see it. */
|
|
28
|
+
chart: (mode: IrMode) => string;
|
|
29
|
+
/** The accessible name of the tool rail. */
|
|
30
|
+
tools: string;
|
|
31
|
+
/** The accessible name of the header. */
|
|
32
|
+
viewer: string;
|
|
33
|
+
/** The accessible name of the header's help group. */
|
|
34
|
+
viewerHelp: string;
|
|
35
|
+
/** The accessible name of the mark. */
|
|
36
|
+
mark: string;
|
|
37
|
+
/** The title of the documentation dialog. */
|
|
38
|
+
documentation: string;
|
|
39
|
+
/** A command as the viewer words it, `undefined` for one it does not offer. */
|
|
40
|
+
command: (id: IrCommandId) => IrCommand | undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The words of a viewer of one technique.
|
|
45
|
+
* @param technique - What was measured.
|
|
46
|
+
* @returns The words, in the language of the page where the catalog has them.
|
|
47
|
+
*/
|
|
48
|
+
export function useIrText(technique: IrTechnique): IrText {
|
|
49
|
+
const t = useChromeT();
|
|
50
|
+
return technique === 'raman' ? ramanText(t) : infraredText(t);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The words of an infrared viewer, from the core records.
|
|
55
|
+
* @param t - The chrome's formatter, for a value axis the catalog names.
|
|
56
|
+
* @returns The words.
|
|
57
|
+
*/
|
|
58
|
+
function infraredText(t: Translate<ChromeKey>): IrText {
|
|
59
|
+
const { name, xTitle } = IR_TECHNIQUE_RULES.infrared;
|
|
60
|
+
const opening = `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
61
|
+
const commands = irCommandsFor('infrared');
|
|
62
|
+
return {
|
|
63
|
+
xTitle,
|
|
64
|
+
yTitle: (mode) => modeTitle(t, mode),
|
|
65
|
+
chart: (mode) => infraredChartLabel(opening, mode),
|
|
66
|
+
tools: `${opening} spectrum tools`,
|
|
67
|
+
viewer: `${opening} spectrum viewer`,
|
|
68
|
+
viewerHelp: `${opening} spectrum viewer help`,
|
|
69
|
+
mark: `${opening} viewer`,
|
|
70
|
+
documentation: `Using the ${name} viewer`,
|
|
71
|
+
command: (id) => commands[id],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The words of a Raman viewer, all of them from the catalog.
|
|
77
|
+
* @param t - The chrome's formatter.
|
|
78
|
+
* @returns The words.
|
|
79
|
+
*/
|
|
80
|
+
function ramanText(t: Translate<ChromeKey>): IrText {
|
|
81
|
+
const commands = irCommandsFor('raman');
|
|
82
|
+
return {
|
|
83
|
+
xTitle: t('ir.raman.xTitle'),
|
|
84
|
+
yTitle: (mode) => modeTitle(t, mode),
|
|
85
|
+
chart: () => t('ir.raman.chart'),
|
|
86
|
+
tools: t('ir.raman.tools'),
|
|
87
|
+
viewer: t('ir.raman.viewer'),
|
|
88
|
+
viewerHelp: t('ir.raman.viewerHelp'),
|
|
89
|
+
mark: t('ir.raman.mark'),
|
|
90
|
+
documentation: t('ir.raman.documentation'),
|
|
91
|
+
command: (id) => translated(t, commands[id], RAMAN_COMMAND_KEYS[id]),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* What the value axis is called, translated where the catalog has the axis.
|
|
97
|
+
* @param t - The chrome's formatter.
|
|
98
|
+
* @param mode - Which value axis.
|
|
99
|
+
* @returns The title.
|
|
100
|
+
*/
|
|
101
|
+
function modeTitle(t: Translate<ChromeKey>, mode: IrMode): string {
|
|
102
|
+
const key = MODE_KEYS[mode];
|
|
103
|
+
return key === undefined ? yAxisTitle(mode) : t(key);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The infrared chart's accessible name. The gestures differ by mode, so the
|
|
108
|
+
* sentence does too — a label promising the wheel to a reader who cannot watch
|
|
109
|
+
* it fail to do anything is worse than no label at all.
|
|
110
|
+
* @param opening - The technique's name, as a sentence opens on it.
|
|
111
|
+
* @param mode - Which value axis is being drawn.
|
|
112
|
+
* @returns The label.
|
|
113
|
+
*/
|
|
114
|
+
function infraredChartLabel(opening: string, mode: IrMode): string {
|
|
115
|
+
const axis = `${opening} spectrum read as ${yAxisTitle(mode)}, wavenumber running from high at the left to low at the right.`;
|
|
116
|
+
return boxZoomOnly(mode)
|
|
117
|
+
? `${axis} Drag a rectangle over it to zoom to that rectangle, and double click to fit everything again.`
|
|
118
|
+
: `${axis} Drag across it to zoom the wavenumber axis, drag past the baseline to take the value axis with it, turn the wheel to scale the value axis, and double click to fit everything again.`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* A command with its words read from the catalog where it has them.
|
|
123
|
+
* @param t - The chrome's formatter.
|
|
124
|
+
* @param entry - The command as its table words it.
|
|
125
|
+
* @param keys - The catalog keys of its title and description, if any.
|
|
126
|
+
* @returns The command, translated.
|
|
127
|
+
*/
|
|
128
|
+
function translated(
|
|
129
|
+
t: Translate<ChromeKey>,
|
|
130
|
+
entry: IrCommand | undefined,
|
|
131
|
+
keys: CommandKeys | undefined,
|
|
132
|
+
): IrCommand | undefined {
|
|
133
|
+
if (entry === undefined || keys === undefined) return entry;
|
|
134
|
+
return {
|
|
135
|
+
...entry,
|
|
136
|
+
...(keys.title === undefined ? {} : { title: t(keys.title) }),
|
|
137
|
+
...(keys.description === undefined
|
|
138
|
+
? {}
|
|
139
|
+
: { description: t(keys.description) }),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** Where a command's words are kept in the catalog. */
|
|
144
|
+
interface CommandKeys {
|
|
145
|
+
/**
|
|
146
|
+
* Its title's key.
|
|
147
|
+
* @default the table's title
|
|
148
|
+
*/
|
|
149
|
+
title?: ChromeKey;
|
|
150
|
+
/**
|
|
151
|
+
* Its description's key.
|
|
152
|
+
* @default the table's description
|
|
153
|
+
*/
|
|
154
|
+
description?: ChromeKey;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/** The value axes the catalog has a name for. */
|
|
158
|
+
const MODE_KEYS: Partial<Record<IrMode, ChromeKey>> = {
|
|
159
|
+
intensity: 'ir.mode.intensity',
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
/** The catalog keys of every command a Raman viewer words its own way. */
|
|
163
|
+
const RAMAN_COMMAND_KEYS: Partial<Record<IrCommandId, CommandKeys>> = {
|
|
164
|
+
about: { title: 'ir.raman.about' },
|
|
165
|
+
documentation: { description: 'ir.raman.command.documentation' },
|
|
166
|
+
readTool: { description: 'ir.raman.command.readTool' },
|
|
167
|
+
boxTool: { description: 'ir.raman.command.boxTool' },
|
|
168
|
+
zoomIn: { description: 'ir.raman.command.zoomIn' },
|
|
169
|
+
togglePicking: { description: 'ir.raman.command.togglePicking' },
|
|
170
|
+
};
|
package/src/ir/ui/useIrZoom.ts
CHANGED
|
@@ -21,10 +21,18 @@ import { useChartZoom } from '../../chart/ui/useChartZoom.ts';
|
|
|
21
21
|
import { fittedTo, fullDomain } from '../core/irDomain.ts';
|
|
22
22
|
import { yAxisRules, zoomGestures } from '../core/irMode.ts';
|
|
23
23
|
import type { IrDomain, IrMode, IrSpectrum } from '../core/irSpectrum.ts';
|
|
24
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
25
|
+
import { IR_TECHNIQUE_RULES } from '../core/irTechnique.ts';
|
|
24
26
|
|
|
25
27
|
export interface IrZoomOptions {
|
|
26
28
|
/** Everything the chart holds, which is what the window is fitted to. */
|
|
27
29
|
spectra: readonly IrSpectrum[];
|
|
30
|
+
/**
|
|
31
|
+
* What the spectra were measured with, which decides which way the
|
|
32
|
+
* wavenumber axis runs.
|
|
33
|
+
* @default 'infrared'
|
|
34
|
+
*/
|
|
35
|
+
technique?: IrTechnique;
|
|
28
36
|
/** Which value axis is being drawn. */
|
|
29
37
|
mode: IrMode;
|
|
30
38
|
/** The SVG the gestures are made on, as it was handed to its `ref`. */
|
|
@@ -58,6 +66,7 @@ export interface IrZoomOptions {
|
|
|
58
66
|
export function useIrZoom(options: IrZoomOptions): ChartZoom {
|
|
59
67
|
const {
|
|
60
68
|
spectra,
|
|
69
|
+
technique = 'infrared',
|
|
61
70
|
mode,
|
|
62
71
|
svgRef,
|
|
63
72
|
plot,
|
|
@@ -71,8 +80,8 @@ export function useIrZoom(options: IrZoomOptions): ChartZoom {
|
|
|
71
80
|
const gestures = useMemo(() => zoomGestures(mode, drag), [mode, drag]);
|
|
72
81
|
|
|
73
82
|
// `reverseX` is not decoration: the hook measures every gesture by inverting a
|
|
74
|
-
// pixel through the scale it builds, so it has to build the same
|
|
75
|
-
//
|
|
83
|
+
// pixel through the scale it builds, so it has to build the same scale the
|
|
84
|
+
// chart draws with — reversed for infrared, forward for Raman.
|
|
76
85
|
return useChartZoom({
|
|
77
86
|
fitted,
|
|
78
87
|
fitKey,
|
|
@@ -81,6 +90,6 @@ export function useIrZoom(options: IrZoomOptions): ChartZoom {
|
|
|
81
90
|
yAxis,
|
|
82
91
|
domain,
|
|
83
92
|
gestures,
|
|
84
|
-
reverseX:
|
|
93
|
+
reverseX: IR_TECHNIQUE_RULES[technique].reverseX,
|
|
85
94
|
});
|
|
86
95
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The zoom in and zoom out commands, which scale the value axis alone.
|
|
3
|
+
*
|
|
4
|
+
* They scale it about the baseline the mode hangs from — 100 for percent
|
|
5
|
+
* transmittance, zero for absorbance and intensity — so a weak band comes up
|
|
6
|
+
* out of its baseline rather than the whole trace drifting off the plot.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useMemo } from 'react';
|
|
10
|
+
|
|
11
|
+
import { fullDomain } from '../core/irDomain.ts';
|
|
12
|
+
import { yAxisRules } from '../core/irMode.ts';
|
|
13
|
+
|
|
14
|
+
import { useIrActions, useIrEditorState } from './irStateContext.ts';
|
|
15
|
+
|
|
16
|
+
/** The two commands, ready to hand to a button or a key. */
|
|
17
|
+
export interface ValueAxisZoom {
|
|
18
|
+
/** Bring the bands up by one step. */
|
|
19
|
+
zoomIn: () => void;
|
|
20
|
+
/** Put the axis back out by one step. */
|
|
21
|
+
zoomOut: () => void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Zoom the value axis of the viewer this is called inside.
|
|
26
|
+
* @returns The two commands.
|
|
27
|
+
*/
|
|
28
|
+
export function useValueAxisZoom(): ValueAxisZoom {
|
|
29
|
+
const { state, visibleSpectra } = useIrEditorState();
|
|
30
|
+
const actions = useIrActions();
|
|
31
|
+
const { domain } = state.view;
|
|
32
|
+
const { mode } = state.settings;
|
|
33
|
+
|
|
34
|
+
return useMemo(() => {
|
|
35
|
+
/**
|
|
36
|
+
* Scale the value axis by a factor, about the baseline the mode hangs from.
|
|
37
|
+
* @param factor - Above one to zoom out.
|
|
38
|
+
*/
|
|
39
|
+
function scale(factor: number): void {
|
|
40
|
+
const shown = domain ?? fullDomain(visibleSpectra, mode);
|
|
41
|
+
// Asked of the mode rather than written out again here: the baseline a
|
|
42
|
+
// value axis is scaled about is `irMode`'s to know, and a second copy of
|
|
43
|
+
// it is a second thing to get wrong.
|
|
44
|
+
const { baseline = 0 } = yAxisRules(mode);
|
|
45
|
+
actions.setDomain({
|
|
46
|
+
x: shown.x,
|
|
47
|
+
y: [
|
|
48
|
+
baseline + (shown.y[0] - baseline) * factor,
|
|
49
|
+
baseline + (shown.y[1] - baseline) * factor,
|
|
50
|
+
],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
zoomIn: () => scale(1 / ZOOM_STEP),
|
|
55
|
+
zoomOut: () => scale(ZOOM_STEP),
|
|
56
|
+
};
|
|
57
|
+
}, [actions, domain, visibleSpectra, mode]);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* What one press of zoom in or out is worth.
|
|
62
|
+
*
|
|
63
|
+
* A fifth, which is about what one notch of a mouse wheel does — so the button
|
|
64
|
+
* and the wheel feel like the same gesture at two speeds rather than two
|
|
65
|
+
* different ones.
|
|
66
|
+
*/
|
|
67
|
+
const ZOOM_STEP = 1.2;
|
package/src/ir.ts
CHANGED
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
* arrive in — `ir-spectrum` for the band correlations, `convert-to-jcamp` for
|
|
8
8
|
* writing them back out, and a JCAMP or SPC reader fetched only once the bytes
|
|
9
9
|
* turn out to need it. A site with no spectra to look at installs none of it.
|
|
10
|
+
*
|
|
11
|
+
* Raman spectra are drawn by the same code, opened through
|
|
12
|
+
* `react-cheminfo/raman`.
|
|
10
13
|
*/
|
|
11
14
|
|
|
12
15
|
export * from './ir/core/index.ts';
|
package/src/locales/de.json
CHANGED
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"share.button": "Teilen",
|
|
54
54
|
"share.buttonTitle": "Einen Link zu dieser Seite teilen oder sie in Ihre eigene Website einbetten",
|
|
55
55
|
"share.dialogTitleFor": "{title} teilen oder einbetten",
|
|
56
|
+
"share.frameTitle": "{site} — {title}",
|
|
56
57
|
"share.layout": "Darstellung",
|
|
57
58
|
"share.embed": "In eine andere Seite einbetten",
|
|
58
59
|
"share.embedHint": "Lässt Kopfzeile und Navigation der Website weg, damit die Seite in einer Seite von Ihnen sitzt.",
|
|
@@ -104,6 +105,12 @@
|
|
|
104
105
|
"clipboard.copyThe": "{what} kopieren",
|
|
105
106
|
"clipboard.copyValue": "{value} kopieren",
|
|
106
107
|
"clipboard.copyToClipboard": "In die Zwischenablage kopieren",
|
|
108
|
+
"card.details": "Details",
|
|
109
|
+
"card.detailsTitle": "In einem neuen Tab öffnen",
|
|
110
|
+
"card.detailsLabel": "Details: in einem neuen Tab öffnen",
|
|
111
|
+
"card.copyTable": "Als Tabelle kopieren",
|
|
112
|
+
"card.copyTableTitle": "Die Tabelle kopieren, zum Einfügen in eine Tabellenkalkulation",
|
|
113
|
+
"card.copyPicture": "Bild kopieren oder speichern",
|
|
107
114
|
"about.providedBy": "Bereitgestellt von",
|
|
108
115
|
"about.whatYouCanDo": "Was Sie hier tun können",
|
|
109
116
|
"about.builtOn": "Aufgebaut auf",
|
|
@@ -245,6 +252,35 @@
|
|
|
245
252
|
"pedagogy.previous": "Zurück",
|
|
246
253
|
"pedagogy.next": "Weiter",
|
|
247
254
|
"pedagogy.stepOf": "Schritt {step} von {total}",
|
|
255
|
+
"pedagogy.answerEmpty": "Geben Sie {what} ein.",
|
|
256
|
+
"pedagogy.answerUnreadable": "„{typed}“ ist nicht {what}.",
|
|
257
|
+
"pedagogy.questions": "Fragen",
|
|
258
|
+
"pedagogy.questionsInSeries": "Fragen pro Serie",
|
|
259
|
+
"pedagogy.questionCount": "{count} Fragen",
|
|
260
|
+
"pedagogy.allQuestions": "Alle {count} Fragen",
|
|
261
|
+
"pedagogy.newSeries": "Neue Serie",
|
|
262
|
+
"pedagogy.newSeriesTitle": "Eine andere Serie ziehen; der angezeigte Link ändert sich mit",
|
|
263
|
+
"pedagogy.seriesQuestions": "Fragen der Serie",
|
|
264
|
+
"pedagogy.questionNumber": "Frage {number}",
|
|
265
|
+
"pedagogy.questionOf": "Frage {number} von {total}",
|
|
266
|
+
"pedagogy.solved": "Gelöst",
|
|
267
|
+
"pedagogy.solvedWithHintsOf": "Geöffnete Hinweise: {revealed} von {total}.",
|
|
268
|
+
"pedagogy.solvedWithoutHint": "Ohne Hinweis.",
|
|
269
|
+
"pedagogy.nextQuestion": "Nächste Frage",
|
|
270
|
+
"pedagogy.solution": "Lösung",
|
|
271
|
+
"pedagogy.exercises": "Übungen",
|
|
272
|
+
"pedagogy.statusIdle": "nicht begonnen",
|
|
273
|
+
"pedagogy.statusAttempted": "abgegeben, noch nicht richtig",
|
|
274
|
+
"pedagogy.statusSolved": "richtig",
|
|
275
|
+
"pedagogy.solvedWithOneHint": "Gelöst mit 1 Hinweis",
|
|
276
|
+
"pedagogy.solvedWithHints": "Gelöst mit {count} Hinweisen",
|
|
277
|
+
"formula.copyLabel": "Formel",
|
|
278
|
+
"formula.typeFirst": "Geben Sie zuerst eine Formel ein.",
|
|
279
|
+
"formula.notElement": "„{symbol}“ ist kein Elementsymbol.",
|
|
280
|
+
"formula.noAtom": "„{formula}“ enthält kein Atom.",
|
|
281
|
+
"formula.wholeCounts": "„{formula}“ gibt einem Atom die Anzahl {count}; Anzahlen sind ganze Zahlen.",
|
|
282
|
+
"formula.unknownNotation": "„{formula}“ verwendet eine Schreibweise, die dieses Werkzeug nicht zählt.",
|
|
283
|
+
"formula.unreadable": "„{formula}“ ist keine Formel, die dieses Werkzeug lesen kann ({reason}).",
|
|
248
284
|
"slides.exit": "Beenden",
|
|
249
285
|
"slides.previousSlide": "Vorige Folie",
|
|
250
286
|
"slides.nextSlide": "Nächste Folie",
|
|
@@ -458,6 +494,7 @@
|
|
|
458
494
|
"structure.tool.unavailable": "In diesem Editor nicht verfügbar.",
|
|
459
495
|
"structure.loadingEditor": "Der Editor wird geladen…",
|
|
460
496
|
"structure.export.open": "Struktur exportieren",
|
|
497
|
+
"structure.export.glyph": "Struktur kopieren oder speichern: SMILES, Molfile",
|
|
461
498
|
"structure.export.title": "Struktur exportieren",
|
|
462
499
|
"structure.export.loading": "Die Struktur wird gelesen…",
|
|
463
500
|
"structure.export.nothing": "Noch nichts gezeichnet.",
|
|
@@ -626,5 +663,24 @@
|
|
|
626
663
|
"moleculesToken.fix.issueOnServer": "Oder auf dem Server von molecules.cheminfo.org:",
|
|
627
664
|
"moleculesToken.fix.envOne": "Tragen Sie es in die .env des Servers dieser Website ein:",
|
|
628
665
|
"moleculesToken.fix.envMany": "Tragen Sie sie in die .env des Servers dieser Website ein:",
|
|
629
|
-
"moleculesToken.fix.restart": "Starten Sie die Dienste neu, da sie die .env nur beim Start lesen:"
|
|
666
|
+
"moleculesToken.fix.restart": "Starten Sie die Dienste neu, da sie die .env nur beim Start lesen:",
|
|
667
|
+
"ir.mode.intensity": "Intensität",
|
|
668
|
+
"ir.raman.xTitle": "Raman-Verschiebung (cm⁻¹)",
|
|
669
|
+
"ir.raman.chart": "Raman-Spektrum, als Intensität gelesen, die Raman-Verschiebung von links nach rechts steigend. Ziehen Sie darüber, um die Achse der Raman-Verschiebung zu zoomen, ziehen Sie über die Grundlinie hinaus, um die Intensitätsachse mitzunehmen, drehen Sie das Mausrad, um die Intensitätsachse zu skalieren, und doppelklicken Sie, um wieder alles einzupassen.",
|
|
670
|
+
"ir.raman.tools": "Werkzeuge für das Raman-Spektrum",
|
|
671
|
+
"ir.raman.viewer": "Raman-Spektrenbetrachter",
|
|
672
|
+
"ir.raman.viewerHelp": "Hilfe zum Raman-Spektrenbetrachter",
|
|
673
|
+
"ir.raman.mark": "Raman-Betrachter",
|
|
674
|
+
"ir.raman.about": "Über den Raman-Betrachter",
|
|
675
|
+
"ir.raman.documentation": "Den Raman-Betrachter verwenden",
|
|
676
|
+
"ir.raman.command.documentation": "Wie die Banden gelesen werden, und jede Geste.",
|
|
677
|
+
"ir.raman.command.readTool": "Ein Ziehen verengt die Achse der Raman-Verschiebung. Über die Grundlinie hinaus losgelassen, nimmt es die Intensitätsachse mit.",
|
|
678
|
+
"ir.raman.command.boxTool": "Ein Ziehen zoomt genau auf das Rechteck, das es aufspannt, beide Achsen zugleich — um in eine Grundlinie oder eine Schulter hineinzusehen statt über das ganze Spektrum.",
|
|
679
|
+
"ir.raman.command.zoomIn": "Hebt die schwachen Banden hervor, indem die Intensitätsachse um null skaliert wird.",
|
|
680
|
+
"ir.raman.command.togglePicking": "Findet die Banden des ausgewählten Spektrums, markiert sie im Diagramm und listet sie auf.",
|
|
681
|
+
"ir.raman.doc.bands": "Die Banden des *ausgewählten* Spektrums werden als Intensitätsmaxima gefunden, im Diagramm markiert und im Bandenbereich aufgelistet. Fahren Sie über eine Zeile, wird die Bande im Diagramm markiert; fahren Sie über das Diagramm, leuchtet die Zeile auf.",
|
|
682
|
+
"ir.raman.doc.sampled": "Eine Bande wird an dem abgetasteten Punkt angegeben, an dem sie ihr Maximum hat: Ihre Lage ist nur so genau wie das Raster, auf dem das Spektrum aufgenommen wurde.",
|
|
683
|
+
"ir.raman.aboutLead": "Zeichnet ein Raman-Spektrum, findet seine Banden und listet sie neben dem Diagramm auf.",
|
|
684
|
+
"ir.raman.credit.picking": "**ir-spectrum** (cheminfo, MIT) findet die Banden, mit dem Peakfinder von **common-spectrum** und **ml-gsd**.",
|
|
685
|
+
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) schreibt die heruntergeladene JCAMP-DX-Datei."
|
|
630
686
|
}
|
package/src/locales/en.json
CHANGED
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"share.button": "Share",
|
|
54
54
|
"share.buttonTitle": "Share a link to this page, or embed it in your own site",
|
|
55
55
|
"share.dialogTitleFor": "Share or embed — {title}",
|
|
56
|
+
"share.frameTitle": "{site} — {title}",
|
|
56
57
|
"share.layout": "Layout",
|
|
57
58
|
"share.embed": "Embed in another page",
|
|
58
59
|
"share.embedHint": "Drops the site header and its navigation, so the page sits inside a page of your own.",
|
|
@@ -104,6 +105,12 @@
|
|
|
104
105
|
"clipboard.copyThe": "Copy the {what}",
|
|
105
106
|
"clipboard.copyValue": "Copy {value}",
|
|
106
107
|
"clipboard.copyToClipboard": "Copy to clipboard",
|
|
108
|
+
"card.details": "Details",
|
|
109
|
+
"card.detailsTitle": "Open in a new tab",
|
|
110
|
+
"card.detailsLabel": "Details: open in a new tab",
|
|
111
|
+
"card.copyTable": "Copy as table",
|
|
112
|
+
"card.copyTableTitle": "Copy the table, to paste into a spreadsheet",
|
|
113
|
+
"card.copyPicture": "Copy or save the picture",
|
|
107
114
|
"about.providedBy": "Provided by",
|
|
108
115
|
"about.whatYouCanDo": "What you can do here",
|
|
109
116
|
"about.builtOn": "Built on",
|
|
@@ -245,6 +252,35 @@
|
|
|
245
252
|
"pedagogy.previous": "Previous",
|
|
246
253
|
"pedagogy.next": "Next",
|
|
247
254
|
"pedagogy.stepOf": "Step {step} of {total}",
|
|
255
|
+
"pedagogy.answerEmpty": "Type {what}.",
|
|
256
|
+
"pedagogy.answerUnreadable": "“{typed}” is not {what}.",
|
|
257
|
+
"pedagogy.questions": "Questions",
|
|
258
|
+
"pedagogy.questionsInSeries": "Questions in a series",
|
|
259
|
+
"pedagogy.questionCount": "{count} questions",
|
|
260
|
+
"pedagogy.allQuestions": "All {count} questions",
|
|
261
|
+
"pedagogy.newSeries": "New series",
|
|
262
|
+
"pedagogy.newSeriesTitle": "Draw another series; the link on screen changes with it",
|
|
263
|
+
"pedagogy.seriesQuestions": "Questions of the series",
|
|
264
|
+
"pedagogy.questionNumber": "Question {number}",
|
|
265
|
+
"pedagogy.questionOf": "Question {number} of {total}",
|
|
266
|
+
"pedagogy.solved": "Solved",
|
|
267
|
+
"pedagogy.solvedWithHintsOf": "With {revealed} of {total} hints.",
|
|
268
|
+
"pedagogy.solvedWithoutHint": "Without a hint.",
|
|
269
|
+
"pedagogy.nextQuestion": "Next question",
|
|
270
|
+
"pedagogy.solution": "Solution",
|
|
271
|
+
"pedagogy.exercises": "Exercises",
|
|
272
|
+
"pedagogy.statusIdle": "not started",
|
|
273
|
+
"pedagogy.statusAttempted": "handed in, not right yet",
|
|
274
|
+
"pedagogy.statusSolved": "right",
|
|
275
|
+
"pedagogy.solvedWithOneHint": "Solved with 1 hint",
|
|
276
|
+
"pedagogy.solvedWithHints": "Solved with {count} hints",
|
|
277
|
+
"formula.copyLabel": "formula",
|
|
278
|
+
"formula.typeFirst": "Type a formula first.",
|
|
279
|
+
"formula.notElement": "“{symbol}” is not an element symbol.",
|
|
280
|
+
"formula.noAtom": "“{formula}” holds no atom.",
|
|
281
|
+
"formula.wholeCounts": "“{formula}” gives an atom a count of {count}; counts are whole numbers.",
|
|
282
|
+
"formula.unknownNotation": "“{formula}” uses a notation this tool does not count.",
|
|
283
|
+
"formula.unreadable": "“{formula}” is not a formula this tool can read ({reason}).",
|
|
248
284
|
"slides.exit": "Exit",
|
|
249
285
|
"slides.previousSlide": "Previous slide",
|
|
250
286
|
"slides.nextSlide": "Next slide",
|
|
@@ -402,6 +438,7 @@
|
|
|
402
438
|
"structure.tool.unavailable": "Not available in this editor.",
|
|
403
439
|
"structure.loadingEditor": "Loading the editor…",
|
|
404
440
|
"structure.export.open": "Export the structure",
|
|
441
|
+
"structure.export.glyph": "Copy or save the structure: SMILES, molfile",
|
|
405
442
|
"structure.export.title": "Export the structure",
|
|
406
443
|
"structure.export.loading": "Reading the structure…",
|
|
407
444
|
"structure.export.nothing": "Nothing is drawn yet.",
|
|
@@ -626,5 +663,24 @@
|
|
|
626
663
|
"moleculesToken.fix.issueOnServer": "Or, on the server of molecules.cheminfo.org:",
|
|
627
664
|
"moleculesToken.fix.envOne": "Write it in the .env of this site's server:",
|
|
628
665
|
"moleculesToken.fix.envMany": "Write them in the .env of this site's server:",
|
|
629
|
-
"moleculesToken.fix.restart": "Restart the services, which read the .env only when they start:"
|
|
666
|
+
"moleculesToken.fix.restart": "Restart the services, which read the .env only when they start:",
|
|
667
|
+
"ir.mode.intensity": "intensity",
|
|
668
|
+
"ir.raman.xTitle": "Raman shift (cm⁻¹)",
|
|
669
|
+
"ir.raman.chart": "Raman spectrum read as intensity, Raman shift running from low at the left to high at the right. Drag across it to zoom the Raman shift axis, drag past the baseline to take the intensity axis with it, turn the wheel to scale the intensity axis, and double click to fit everything again.",
|
|
670
|
+
"ir.raman.tools": "Raman spectrum tools",
|
|
671
|
+
"ir.raman.viewer": "Raman spectrum viewer",
|
|
672
|
+
"ir.raman.viewerHelp": "Raman spectrum viewer help",
|
|
673
|
+
"ir.raman.mark": "Raman viewer",
|
|
674
|
+
"ir.raman.about": "About the Raman viewer",
|
|
675
|
+
"ir.raman.documentation": "Using the Raman viewer",
|
|
676
|
+
"ir.raman.command.documentation": "How the bands are read, and every gesture.",
|
|
677
|
+
"ir.raman.command.readTool": "A drag narrows the Raman shift axis. Released past the baseline, it takes the intensity axis with it.",
|
|
678
|
+
"ir.raman.command.boxTool": "A drag zooms to exactly the rectangle it sweeps out, both axes at once — for looking into a baseline or a shoulder rather than across the spectrum.",
|
|
679
|
+
"ir.raman.command.zoomIn": "Brings the weak bands up, scaling the intensity axis about zero.",
|
|
680
|
+
"ir.raman.command.togglePicking": "Finds the bands of the selected spectrum, marks them on the chart and lists them.",
|
|
681
|
+
"ir.raman.doc.bands": "The bands of the *selected* spectrum are picked as maxima of intensity, marked on the chart and listed in the bands panel. Hovering a row marks the band on the chart, and hovering the chart lights the row.",
|
|
682
|
+
"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.",
|
|
683
|
+
"ir.raman.aboutLead": "Draws a Raman spectrum, picks its bands and lists them beside the chart.",
|
|
684
|
+
"ir.raman.credit.picking": "**ir-spectrum** (cheminfo, MIT) picks the bands, with the peak picker of **common-spectrum** and **ml-gsd**.",
|
|
685
|
+
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) writes the JCAMP-DX download."
|
|
630
686
|
}
|
package/src/locales/es.json
CHANGED
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"share.button": "Compartir",
|
|
54
54
|
"share.buttonTitle": "Compartir un enlace a esta página, o incrustarla en su propio sitio",
|
|
55
55
|
"share.dialogTitleFor": "Compartir o incrustar — {title}",
|
|
56
|
+
"share.frameTitle": "{site} — {title}",
|
|
56
57
|
"share.layout": "Disposición",
|
|
57
58
|
"share.embed": "Incrustar en otra página",
|
|
58
59
|
"share.embedHint": "Quita la cabecera del sitio y su navegación, para que la página quede dentro de una página suya.",
|
|
@@ -104,6 +105,12 @@
|
|
|
104
105
|
"clipboard.copyThe": "Copiar {what}",
|
|
105
106
|
"clipboard.copyValue": "Copiar {value}",
|
|
106
107
|
"clipboard.copyToClipboard": "Copiar al portapapeles",
|
|
108
|
+
"card.details": "Detalles",
|
|
109
|
+
"card.detailsTitle": "Abrir en una pestaña nueva",
|
|
110
|
+
"card.detailsLabel": "Detalles: abrir en una pestaña nueva",
|
|
111
|
+
"card.copyTable": "Copiar como tabla",
|
|
112
|
+
"card.copyTableTitle": "Copiar la tabla, para pegarla en una hoja de cálculo",
|
|
113
|
+
"card.copyPicture": "Copiar o guardar la imagen",
|
|
107
114
|
"about.providedBy": "Ofrecido por",
|
|
108
115
|
"about.whatYouCanDo": "Lo que puede hacer aquí",
|
|
109
116
|
"about.builtOn": "Construido sobre",
|
|
@@ -245,6 +252,35 @@
|
|
|
245
252
|
"pedagogy.previous": "Anterior",
|
|
246
253
|
"pedagogy.next": "Siguiente",
|
|
247
254
|
"pedagogy.stepOf": "Paso {step} de {total}",
|
|
255
|
+
"pedagogy.answerEmpty": "Escriba {what}.",
|
|
256
|
+
"pedagogy.answerUnreadable": "«{typed}» no es {what}.",
|
|
257
|
+
"pedagogy.questions": "Preguntas",
|
|
258
|
+
"pedagogy.questionsInSeries": "Preguntas por serie",
|
|
259
|
+
"pedagogy.questionCount": "{count} preguntas",
|
|
260
|
+
"pedagogy.allQuestions": "Las {count} preguntas",
|
|
261
|
+
"pedagogy.newSeries": "Nueva serie",
|
|
262
|
+
"pedagogy.newSeriesTitle": "Sacar otra serie; el enlace en pantalla cambia con ella",
|
|
263
|
+
"pedagogy.seriesQuestions": "Preguntas de la serie",
|
|
264
|
+
"pedagogy.questionNumber": "Pregunta {number}",
|
|
265
|
+
"pedagogy.questionOf": "Pregunta {number} de {total}",
|
|
266
|
+
"pedagogy.solved": "Resuelta",
|
|
267
|
+
"pedagogy.solvedWithHintsOf": "Pistas abiertas: {revealed} de {total}.",
|
|
268
|
+
"pedagogy.solvedWithoutHint": "Sin pistas.",
|
|
269
|
+
"pedagogy.nextQuestion": "Pregunta siguiente",
|
|
270
|
+
"pedagogy.solution": "Solución",
|
|
271
|
+
"pedagogy.exercises": "Ejercicios",
|
|
272
|
+
"pedagogy.statusIdle": "sin empezar",
|
|
273
|
+
"pedagogy.statusAttempted": "entregada, aún no correcta",
|
|
274
|
+
"pedagogy.statusSolved": "correcta",
|
|
275
|
+
"pedagogy.solvedWithOneHint": "Resuelta con 1 pista",
|
|
276
|
+
"pedagogy.solvedWithHints": "Resuelta con {count} pistas",
|
|
277
|
+
"formula.copyLabel": "fórmula",
|
|
278
|
+
"formula.typeFirst": "Escriba primero una fórmula.",
|
|
279
|
+
"formula.notElement": "«{symbol}» no es el símbolo de un elemento.",
|
|
280
|
+
"formula.noAtom": "«{formula}» no contiene ningún átomo.",
|
|
281
|
+
"formula.wholeCounts": "«{formula}» da a un átomo la cantidad {count}; las cantidades son números enteros.",
|
|
282
|
+
"formula.unknownNotation": "«{formula}» usa una notación que esta herramienta no cuenta.",
|
|
283
|
+
"formula.unreadable": "«{formula}» no es una fórmula que esta herramienta sepa leer ({reason}).",
|
|
248
284
|
"slides.exit": "Salir",
|
|
249
285
|
"slides.previousSlide": "Diapositiva anterior",
|
|
250
286
|
"slides.nextSlide": "Diapositiva siguiente",
|
|
@@ -458,6 +494,7 @@
|
|
|
458
494
|
"structure.tool.unavailable": "No disponible en este editor.",
|
|
459
495
|
"structure.loadingEditor": "Cargando el editor…",
|
|
460
496
|
"structure.export.open": "Exportar la estructura",
|
|
497
|
+
"structure.export.glyph": "Copiar o guardar la estructura: SMILES, molfile",
|
|
461
498
|
"structure.export.title": "Exportar la estructura",
|
|
462
499
|
"structure.export.loading": "Leyendo la estructura…",
|
|
463
500
|
"structure.export.nothing": "Todavía no hay nada dibujado.",
|
|
@@ -626,5 +663,24 @@
|
|
|
626
663
|
"moleculesToken.fix.issueOnServer": "O, en el servidor de molecules.cheminfo.org:",
|
|
627
664
|
"moleculesToken.fix.envOne": "Escríbalo en el .env del servidor de este sitio:",
|
|
628
665
|
"moleculesToken.fix.envMany": "Escríbalos en el .env del servidor de este sitio:",
|
|
629
|
-
"moleculesToken.fix.restart": "Reinicie los servicios, que solo leen el .env al arrancar:"
|
|
666
|
+
"moleculesToken.fix.restart": "Reinicie los servicios, que solo leen el .env al arrancar:",
|
|
667
|
+
"ir.mode.intensity": "intensidad",
|
|
668
|
+
"ir.raman.xTitle": "desplazamiento Raman (cm⁻¹)",
|
|
669
|
+
"ir.raman.chart": "Espectro Raman leído como intensidad, con el desplazamiento Raman creciendo de izquierda a derecha. Arrastre sobre él para ampliar el eje del desplazamiento Raman, arrastre más allá de la línea de base para llevarse también el eje de intensidad, gire la rueda para escalar el eje de intensidad y haga doble clic para volver a ajustarlo todo.",
|
|
670
|
+
"ir.raman.tools": "Herramientas del espectro Raman",
|
|
671
|
+
"ir.raman.viewer": "Visor de espectros Raman",
|
|
672
|
+
"ir.raman.viewerHelp": "Ayuda del visor de espectros Raman",
|
|
673
|
+
"ir.raman.mark": "Visor Raman",
|
|
674
|
+
"ir.raman.about": "Acerca del visor Raman",
|
|
675
|
+
"ir.raman.documentation": "Uso del visor Raman",
|
|
676
|
+
"ir.raman.command.documentation": "Cómo se leen las bandas, y cada gesto.",
|
|
677
|
+
"ir.raman.command.readTool": "Un arrastre estrecha el eje del desplazamiento Raman. Soltado más allá de la línea de base, se lleva también el eje de intensidad.",
|
|
678
|
+
"ir.raman.command.boxTool": "Un arrastre amplía exactamente el rectángulo que traza, los dos ejes a la vez — para mirar dentro de una línea de base o de un hombro en lugar de a lo largo del espectro.",
|
|
679
|
+
"ir.raman.command.zoomIn": "Hace destacar las bandas débiles, escalando el eje de intensidad en torno a cero.",
|
|
680
|
+
"ir.raman.command.togglePicking": "Encuentra las bandas del espectro seleccionado, las marca en la gráfica y las enumera.",
|
|
681
|
+
"ir.raman.doc.bands": "Las bandas del espectro *seleccionado* se buscan como máximos de intensidad, se marcan en la gráfica y se enumeran en el panel de bandas. Pasar sobre una fila marca la banda en la gráfica, y pasar sobre la gráfica ilumina la fila.",
|
|
682
|
+
"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.",
|
|
683
|
+
"ir.raman.aboutLead": "Dibuja un espectro Raman, encuentra sus bandas y las enumera junto a la gráfica.",
|
|
684
|
+
"ir.raman.credit.picking": "**ir-spectrum** (cheminfo, MIT) encuentra las bandas, con el detector de picos de **common-spectrum** y **ml-gsd**.",
|
|
685
|
+
"ir.raman.credit.jcamp": "**convert-to-jcamp** (cheminfo, MIT) escribe el archivo JCAMP-DX descargado."
|
|
630
686
|
}
|