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
package/lib/ir/ui/IrShell.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useId, useMemo, useState } from 'react';
|
|
3
3
|
import { SplitPane, useFullscreen } from 'react-science/ui';
|
|
4
4
|
import { sanitizeFileName } from "../../download/core/sanitizeFileName.js";
|
|
5
5
|
import { useFigureDownload } from "../../download/ui/useFigureDownload.js";
|
|
6
6
|
import { PanelRail } from "../../panel/ui/PanelRail.js";
|
|
7
|
-
import {
|
|
8
|
-
import { otherIrMode, yAxisRules } from "../core/irMode.js";
|
|
7
|
+
import { otherIrMode } from "../core/irMode.js";
|
|
9
8
|
import { irSidePanels } from "../core/irSidePanels.js";
|
|
10
9
|
import { DEFAULT_SIDE_PANEL } from "../core/irState.js";
|
|
10
|
+
import { irCommandOffered } from "../core/irTechniqueCommands.js";
|
|
11
11
|
import { IrAboutDialog } from "./IrAboutDialog.js";
|
|
12
12
|
import { IrCanvas } from "./IrCanvas.js";
|
|
13
13
|
import { IrCommandProvider } from "./IrCommandProvider.js";
|
|
@@ -16,7 +16,9 @@ import { IrHeader } from "./IrHeader.js";
|
|
|
16
16
|
import { IrSidePanel } from "./IrSidePanel.js";
|
|
17
17
|
import { IrToolbar } from "./IrToolbar.js";
|
|
18
18
|
import { useIrActions, useIrEditorState } from "./irStateContext.js";
|
|
19
|
+
import { useIrHandle } from "./useIrHandle.js";
|
|
19
20
|
import { useIrShortcuts } from "./useIrShortcuts.js";
|
|
21
|
+
import { useValueAxisZoom } from "./useValueAxisZoom.js";
|
|
20
22
|
/**
|
|
21
23
|
* The viewer's screen: a header, the rails, and the split between the chart and
|
|
22
24
|
* the panels.
|
|
@@ -36,8 +38,8 @@ export function IrShell(props) {
|
|
|
36
38
|
const { state, visibleSpectra, selectedSpectrum } = useIrEditorState();
|
|
37
39
|
const actions = useIrActions();
|
|
38
40
|
const { toggle: toggleFullScreen } = useFullscreen();
|
|
39
|
-
const { openPanelIds, tool
|
|
40
|
-
const { mode, pickBands, showAssignments } = state.settings;
|
|
41
|
+
const { openPanelIds, tool } = state.view;
|
|
42
|
+
const { mode, pickBands, showAssignments, technique } = state.settings;
|
|
41
43
|
const [isAboutOpen, setIsAboutOpen] = useState(false);
|
|
42
44
|
const [isDocumentationOpen, setIsDocumentationOpen] = useState(false);
|
|
43
45
|
// The chart is the picture, so the box it is drawn in is what the figure
|
|
@@ -54,45 +56,36 @@ export function IrShell(props) {
|
|
|
54
56
|
// chart, so putting it through the reducer would run every panel's memo sixty
|
|
55
57
|
// times a second.
|
|
56
58
|
const [highlight, setHighlight] = useState(null);
|
|
57
|
-
|
|
58
|
-
* ChartScale the value axis by a factor, about the baseline the mode hangs from.
|
|
59
|
-
* @param factor - Above one to zoom out.
|
|
60
|
-
*/
|
|
61
|
-
const scaleValueAxis = useCallback((factor) => {
|
|
62
|
-
const shown = domain ?? fullDomain(visibleSpectra, mode);
|
|
63
|
-
// Asked of the mode rather than written out again here: the baseline a
|
|
64
|
-
// value axis is scaled about is `irMode`'s to know, and a second copy of
|
|
65
|
-
// it is a second thing to get wrong.
|
|
66
|
-
const { baseline = 0 } = yAxisRules(mode);
|
|
67
|
-
actions.setDomain({
|
|
68
|
-
x: shown.x,
|
|
69
|
-
y: [
|
|
70
|
-
baseline + (shown.y[0] - baseline) * factor,
|
|
71
|
-
baseline + (shown.y[1] - baseline) * factor,
|
|
72
|
-
],
|
|
73
|
-
});
|
|
74
|
-
}, [actions, domain, visibleSpectra, mode]);
|
|
59
|
+
const { zoomIn, zoomOut } = useValueAxisZoom();
|
|
75
60
|
const commands = useMemo(() => ({
|
|
76
61
|
about: () => setIsAboutOpen(true),
|
|
77
62
|
documentation: () => setIsDocumentationOpen(true),
|
|
78
63
|
fullScreen: toggleFullScreen,
|
|
79
64
|
readTool: () => actions.setTool('read'),
|
|
80
65
|
boxTool: () => actions.setTool(tool === 'box' ? 'read' : 'box'),
|
|
81
|
-
zoomIn
|
|
82
|
-
zoomOut
|
|
66
|
+
zoomIn,
|
|
67
|
+
zoomOut,
|
|
83
68
|
resetZoom: () => actions.resetDomain(),
|
|
84
|
-
|
|
69
|
+
// A command the technique does not offer has no handler, so its key
|
|
70
|
+
// stays with the page.
|
|
71
|
+
toggleMode: irCommandOffered(technique, 'toggleMode')
|
|
72
|
+
? () => actions.setSettings({ mode: otherIrMode(mode, technique) })
|
|
73
|
+
: undefined,
|
|
85
74
|
togglePicking: () => actions.setSettings({ pickBands: !pickBands }),
|
|
86
|
-
toggleAssignments: (
|
|
75
|
+
toggleAssignments: irCommandOffered(technique, 'toggleAssignments')
|
|
76
|
+
? () => actions.setSettings({ showAssignments: !showAssignments })
|
|
77
|
+
: undefined,
|
|
87
78
|
exportImage: () => setFigureOpen(!isFigureOpen),
|
|
88
79
|
clear: () => actions.clear(),
|
|
89
80
|
}), [
|
|
90
81
|
actions,
|
|
91
82
|
tool,
|
|
92
83
|
mode,
|
|
84
|
+
technique,
|
|
93
85
|
pickBands,
|
|
94
86
|
showAssignments,
|
|
95
|
-
|
|
87
|
+
zoomIn,
|
|
88
|
+
zoomOut,
|
|
96
89
|
toggleFullScreen,
|
|
97
90
|
isFigureOpen,
|
|
98
91
|
setFigureOpen,
|
|
@@ -103,23 +96,7 @@ export function IrShell(props) {
|
|
|
103
96
|
// again.
|
|
104
97
|
const [root, setRoot] = useState(null);
|
|
105
98
|
useIrShortcuts(root, commands);
|
|
106
|
-
|
|
107
|
-
getSpectra: () => state.data.spectra,
|
|
108
|
-
setSpectra: (spectra) => actions.setSpectra(spectra),
|
|
109
|
-
addSpectra: (spectra) => actions.addSpectra(spectra),
|
|
110
|
-
clear: () => actions.clear(),
|
|
111
|
-
setDomain: (next) => actions.setDomain(next),
|
|
112
|
-
resetDomain: () => actions.resetDomain(),
|
|
113
|
-
zoomToWavenumber: (wavenumber, options = {}) => {
|
|
114
|
-
const { width = DEFAULT_FRAME_WIDTH } = options;
|
|
115
|
-
const shown = domain ?? fullDomain(visibleSpectra, mode);
|
|
116
|
-
actions.setDomain({
|
|
117
|
-
x: [wavenumber - width / 2, wavenumber + width / 2],
|
|
118
|
-
y: shown.y,
|
|
119
|
-
});
|
|
120
|
-
},
|
|
121
|
-
selectSpectrum: (id) => actions.selectSpectrum(id),
|
|
122
|
-
}), [state.data.spectra, actions, domain, visibleSpectra, mode]);
|
|
99
|
+
useIrHandle(handle);
|
|
123
100
|
/**
|
|
124
101
|
* Open or close the side, as the splitter is dragged shut and back open.
|
|
125
102
|
* @param open - Whether the side is now open.
|
|
@@ -135,18 +112,8 @@ export function IrShell(props) {
|
|
|
135
112
|
if (openPanelIds.length === 0)
|
|
136
113
|
actions.togglePanel(DEFAULT_SIDE_PANEL);
|
|
137
114
|
}
|
|
138
|
-
return (_jsxs(IrCommandProvider, { handlers: commands, children: [_jsxs("div", { ref: setRoot, tabIndex: -1, style: rootStyle, children: [_jsx(IrHeader, {}), _jsxs("div", { style: mainStyle, children: [_jsx("div", { style: railStyle, children: _jsx(IrToolbar, { figure: figure }) }), _jsxs(SplitPane, { direction: "horizontal", controlledSide: "end", defaultSize: "360px", open: openPanelIds.length > 0, onOpenChange: setSideOpen, children: [_jsx(IrCanvas, { highlight: highlight, onHighlight: setHighlight, chartId: chartId }), _jsx(IrSidePanel, { highlight: highlight, onHighlight: setHighlight })] }), _jsx("div", { style: railStyle, children: _jsx(PanelRail, { panels: irSidePanels, openIds: openPanelIds, onToggle: actions.togglePanel }) })] })] }), _jsx(IrAboutDialog, { isOpen: isAboutOpen, onClose: () => setIsAboutOpen(false) }), _jsx(IrDocumentationDialog, { isOpen: isDocumentationOpen, onClose: () => setIsDocumentationOpen(false) })] }));
|
|
115
|
+
return (_jsxs(IrCommandProvider, { handlers: commands, technique: technique, children: [_jsxs("div", { ref: setRoot, tabIndex: -1, style: rootStyle, children: [_jsx(IrHeader, {}), _jsxs("div", { style: mainStyle, children: [_jsx("div", { style: railStyle, children: _jsx(IrToolbar, { figure: figure }) }), _jsxs(SplitPane, { direction: "horizontal", controlledSide: "end", defaultSize: "360px", open: openPanelIds.length > 0, onOpenChange: setSideOpen, children: [_jsx(IrCanvas, { highlight: highlight, onHighlight: setHighlight, chartId: chartId }), _jsx(IrSidePanel, { highlight: highlight, onHighlight: setHighlight })] }), _jsx("div", { style: railStyle, children: _jsx(PanelRail, { panels: irSidePanels, openIds: openPanelIds, onToggle: actions.togglePanel }) })] })] }), _jsx(IrAboutDialog, { isOpen: isAboutOpen, onClose: () => setIsAboutOpen(false), technique: technique }), _jsx(IrDocumentationDialog, { isOpen: isDocumentationOpen, onClose: () => setIsDocumentationOpen(false), technique: technique })] }));
|
|
139
116
|
}
|
|
140
|
-
/**
|
|
141
|
-
* What one press of zoom in or out is worth.
|
|
142
|
-
*
|
|
143
|
-
* A fifth, which is about what one notch of a mouse wheel does — so the button
|
|
144
|
-
* and the wheel feel like the same gesture at two speeds rather than two
|
|
145
|
-
* different ones.
|
|
146
|
-
*/
|
|
147
|
-
const ZOOM_STEP = 1.2;
|
|
148
|
-
/** How wide a window a host gets when it asks to frame a band without saying. */
|
|
149
|
-
const DEFAULT_FRAME_WIDTH = 200;
|
|
150
117
|
/**
|
|
151
118
|
* What a picture of the chart is called.
|
|
152
119
|
*
|
package/lib/ir/ui/IrShell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrShell.js","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"IrShell.js","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Everything in it is derived, so it is the cheapest place in the viewer to
|
|
5
5
|
* answer "did that work" — how many spectra are drawn of those open, how many
|
|
6
|
-
* bands the picking found and how many the table had something to say about
|
|
7
|
-
* the range the selected spectrum
|
|
6
|
+
* bands the picking found and how many the table had something to say about
|
|
7
|
+
* (where the table covers the technique), and the range the selected spectrum
|
|
8
|
+
* covers, in the order its axis is read.
|
|
8
9
|
*
|
|
9
10
|
* The refusal is last and is the only red in the shell, so the eye that has just
|
|
10
11
|
* pressed something and seen nothing happen lands on the reason.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrStatusBar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IrStatusBar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":"AAiBA;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,gCAqD1B"}
|
package/lib/ir/ui/IrStatusBar.js
CHANGED
|
@@ -2,16 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Icon } from '@blueprintjs/core';
|
|
3
3
|
import { countLabel, statusBarStyle as barStyle, statusItemStyle as itemStyle, statusMutedStyle as mutedStyle, statusSpacerStyle as spacerStyle, } from "../../panel/core/statusBar.js";
|
|
4
4
|
import { countAssigned } from "../core/assignBands.js";
|
|
5
|
-
import {
|
|
6
|
-
import { boxZoomOnly
|
|
5
|
+
import { formatWavenumberRange } from "../core/irFormat.js";
|
|
6
|
+
import { boxZoomOnly } from "../core/irMode.js";
|
|
7
|
+
import { IR_TECHNIQUE_RULES } from "../core/irTechnique.js";
|
|
7
8
|
import { useIrEditorState } from "./irStateContext.js";
|
|
9
|
+
import { useIrText } from "./useIrText.js";
|
|
8
10
|
/**
|
|
9
11
|
* The one line under the chart: what is drawn, what was found, what went wrong.
|
|
10
12
|
*
|
|
11
13
|
* Everything in it is derived, so it is the cheapest place in the viewer to
|
|
12
14
|
* answer "did that work" — how many spectra are drawn of those open, how many
|
|
13
|
-
* bands the picking found and how many the table had something to say about
|
|
14
|
-
* the range the selected spectrum
|
|
15
|
+
* bands the picking found and how many the table had something to say about
|
|
16
|
+
* (where the table covers the technique), and the range the selected spectrum
|
|
17
|
+
* covers, in the order its axis is read.
|
|
15
18
|
*
|
|
16
19
|
* The refusal is last and is the only red in the shell, so the eye that has just
|
|
17
20
|
* pressed something and seen nothing happen lands on the reason.
|
|
@@ -21,13 +24,15 @@ export function IrStatusBar() {
|
|
|
21
24
|
const { state, visibleSpectra, selectedSpectrum, assigned } = useIrEditorState();
|
|
22
25
|
const { spectra } = state.data;
|
|
23
26
|
const { error, tool } = state.view;
|
|
24
|
-
const { mode, pickBands } = state.settings;
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
const { mode, pickBands, technique } = state.settings;
|
|
28
|
+
const { reverseX, assignments } = IR_TECHNIQUE_RULES[technique];
|
|
29
|
+
const text = useIrText(technique);
|
|
30
|
+
const range = selectedSpectrum === null
|
|
31
|
+
? ''
|
|
32
|
+
: formatWavenumberRange(selectedSpectrum.wavenumber, reverseX);
|
|
28
33
|
return (_jsxs("div", { style: barStyle, children: [_jsx("span", { style: itemStyle, children: spectra.length === 0
|
|
29
34
|
? 'no spectrum open'
|
|
30
|
-
: `${countLabel(visibleSpectra.length, 'spectrum', 'spectra')} drawn of ${spectra.length}` }), _jsx("span", { style: itemStyle, children:
|
|
35
|
+
: `${countLabel(visibleSpectra.length, 'spectrum', 'spectra')} drawn of ${spectra.length}` }), _jsx("span", { style: itemStyle, children: text.yTitle(mode) }), selectedSpectrum === null ? null : (_jsx("span", { style: nameStyle, title: selectedSpectrum.name, children: selectedSpectrum.name })), range === '' ? null : _jsx("span", { style: mutedStyle, children: range }), pickBands && assigned.length > 0 ? (_jsxs("span", { style: itemStyle, children: [countLabel(assigned.length, 'band', 'bands'), assignments ? `, ${countAssigned(assigned)} assigned` : null] })) : null, boxZoomOnly(mode) || tool === 'box' ? (_jsx("span", { style: mutedStyle, children: "square zoom: drag a rectangle" })) : null, _jsx("span", { style: spacerStyle }), error === null ? null : (_jsxs("span", { style: errorStyle, title: error, children: [_jsx(Icon, { icon: "warning-sign", size: 12 }), error] }))] }));
|
|
31
36
|
}
|
|
32
37
|
const nameStyle = {
|
|
33
38
|
...itemStyle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrStatusBar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EACL,UAAU,EACV,cAAc,IAAI,QAAQ,EAC1B,eAAe,IAAI,SAAS,EAC5B,gBAAgB,IAAI,UAAU,EAC9B,iBAAiB,IAAI,WAAW,GACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"IrStatusBar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrStatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EACL,UAAU,EACV,cAAc,IAAI,QAAQ,EAC1B,eAAe,IAAI,SAAS,EAC5B,gBAAgB,IAAI,UAAU,EAC9B,iBAAiB,IAAI,WAAW,GACjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GACzD,gBAAgB,EAAE,CAAC;IACrB,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAElC,MAAM,KAAK,GACT,gBAAgB,KAAK,IAAI;QACvB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEnE,OAAO,CACL,eAAK,KAAK,EAAE,QAAQ,aAClB,eAAM,KAAK,EAAE,SAAS,YACnB,OAAO,CAAC,MAAM,KAAK,CAAC;oBACnB,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,aAAa,OAAO,CAAC,MAAM,EAAE,GACvF,EAEP,eAAM,KAAK,EAAE,SAAS,YAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAQ,EAEjD,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC,eAAM,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,CAAC,IAAI,YACjD,gBAAgB,CAAC,IAAI,GACjB,CACR,EAEA,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAM,KAAK,EAAE,UAAU,YAAG,KAAK,GAAQ,EAE7D,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAClC,gBAAM,KAAK,EAAE,SAAS,aACnB,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAC5C,WAAW,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IACxD,CACR,CAAC,CAAC,CAAC,IAAI,EAEP,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CACrC,eAAM,KAAK,EAAE,UAAU,8CAAsC,CAC9D,CAAC,CAAC,CAAC,IAAI,EAER,eAAM,KAAK,EAAE,WAAW,GAAI,EAE3B,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACvB,gBAAM,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,aACnC,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,EAAC,IAAI,EAAE,EAAE,GAAI,EACrC,KAAK,IACD,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,GAAG,SAAS;IACZ,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,GAAG;CACP,CAAC;AAEX,+EAA+E;AAC/E,MAAM,UAAU,GAAG;IACjB,GAAG,SAAS;IACZ,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,KAAK;CACP,CAAC"}
|
package/lib/ir/ui/IrToolbar.d.ts
CHANGED
|
@@ -21,6 +21,9 @@ export interface IrToolbarProps {
|
|
|
21
21
|
* drag on that axis is a rectangle, so both buttons go dead with the square zoom
|
|
22
22
|
* lit. Showing `read` as available there would offer a gesture the chart does not
|
|
23
23
|
* make, and showing it as *active* would name the wrong one.
|
|
24
|
+
*
|
|
25
|
+
* A button whose command the technique does not offer is not drawn: a Raman
|
|
26
|
+
* spectrum has a single value axis and no assignment to name.
|
|
24
27
|
* @param props - Component props.
|
|
25
28
|
* @returns The toolbar.
|
|
26
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrToolbar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"IrToolbar.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AASnF,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAsG9C"}
|
package/lib/ir/ui/IrToolbar.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Toolbar } from 'react-science/ui';
|
|
3
|
-
import { boxZoomOnly } from "../core/irMode.js";
|
|
3
|
+
import { bandsPointDown, boxZoomOnly } from "../core/irMode.js";
|
|
4
|
+
import { defaultIrMode } from "../core/irTechnique.js";
|
|
5
|
+
import { irCommandOffered } from "../core/irTechniqueCommands.js";
|
|
4
6
|
import { useIrCommandProps } from "./irCommandContext.js";
|
|
5
7
|
import { useIrEditorState } from "./irStateContext.js";
|
|
8
|
+
import { useIrText } from "./useIrText.js";
|
|
6
9
|
/**
|
|
7
10
|
* The tools, down the left of the chart.
|
|
8
11
|
*
|
|
@@ -17,6 +20,9 @@ import { useIrEditorState } from "./irStateContext.js";
|
|
|
17
20
|
* drag on that axis is a rectangle, so both buttons go dead with the square zoom
|
|
18
21
|
* lit. Showing `read` as available there would offer a gesture the chart does not
|
|
19
22
|
* make, and showing it as *active* would name the wrong one.
|
|
23
|
+
*
|
|
24
|
+
* A button whose command the technique does not offer is not drawn: a Raman
|
|
25
|
+
* spectrum has a single value axis and no assignment to name.
|
|
20
26
|
* @param props - Component props.
|
|
21
27
|
* @returns The toolbar.
|
|
22
28
|
*/
|
|
@@ -26,12 +32,13 @@ export function IrToolbar(props) {
|
|
|
26
32
|
const command = useIrCommandProps();
|
|
27
33
|
const { spectra } = state.data;
|
|
28
34
|
const { domain, tool } = state.view;
|
|
29
|
-
const { mode, pickBands, showAssignments } = state.settings;
|
|
35
|
+
const { mode, pickBands, showAssignments, technique } = state.settings;
|
|
36
|
+
const text = useIrText(technique);
|
|
30
37
|
const isEmpty = spectra.length === 0;
|
|
31
38
|
// The popover opens the panel itself, so the command's own click is left out.
|
|
32
39
|
const exportCommand = command('exportImage');
|
|
33
40
|
const settled = boxZoomOnly(mode);
|
|
34
|
-
return (_jsxs(Toolbar, { vertical: true, overflow: "collapse", "aria-label":
|
|
41
|
+
return (_jsxs(Toolbar, { vertical: true, overflow: "collapse", "aria-label": text.tools, children: [_jsx(Toolbar.Item, { icon: "trash", intent: "danger", ...command('clear'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "arrows-horizontal", active: !settled && tool === 'read', ...command('readTool'), disabled: isEmpty || settled }), _jsx(Toolbar.Item, { icon: "select", active: settled || tool === 'box', ...command('boxTool'), disabled: isEmpty || settled }), _jsx(Toolbar.Item, { icon: "zoom-in", ...command('zoomIn'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-out", ...command('zoomOut'), disabled: isEmpty }), _jsx(Toolbar.Item, { icon: "zoom-to-fit", ...command('resetZoom'), disabled: domain === null }), irCommandOffered(technique, 'toggleMode') ? (_jsx(Toolbar.Item, { icon: bandsPointDown(mode) ? 'arrow-down' : 'arrow-up', active: mode !== defaultIrMode(technique), ...command('toggleMode'), disabled: isEmpty })) : null, _jsx(Toolbar.Item, { icon: "locate", active: pickBands, ...command('togglePicking'), disabled: selectedSpectrum === null }), irCommandOffered(technique, 'toggleAssignments') ? (_jsx(Toolbar.Item, { icon: "label", active: showAssignments, ...command('toggleAssignments'), disabled: !pickBands || selectedSpectrum === null })) : null, figure === undefined ? (_jsx(Toolbar.Item, { icon: "media", ...command('exportImage'), disabled: isEmpty })) : (_jsx(Toolbar.PopoverItem, { isOpen: figure.isOpen, onInteraction: figure.setOpen, content: figure.panel, disabled: isEmpty, itemProps: {
|
|
35
42
|
icon: 'media',
|
|
36
43
|
tooltip: exportCommand.tooltip,
|
|
37
44
|
'aria-label': exportCommand['aria-label'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrToolbar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrToolbar.js","sourceRoot":"","sources":["../../../src/ir/ui/IrToolbar.tsx"],"names":[],"mappings":"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"}
|
package/lib/ir/ui/IrTraces.d.ts
CHANGED
|
@@ -20,7 +20,10 @@ export interface IrTracesProps {
|
|
|
20
20
|
* the *high* end, the opposite of what every other chart's does.
|
|
21
21
|
*/
|
|
22
22
|
xDomain: readonly [number, number];
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The wavenumber axis as it is currently zoomed, running right to left for
|
|
25
|
+
* infrared.
|
|
26
|
+
*/
|
|
24
27
|
xScale: ChartScale;
|
|
25
28
|
/** The value axis as it is currently zoomed. */
|
|
26
29
|
yScale: ChartScale;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrTraces.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC
|
|
1
|
+
{"version":3,"file":"IrTraces.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;OAKG;IACH,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,MAAM,EAAE,UAAU,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,UAAU,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CA2C3D"}
|
package/lib/ir/ui/IrTraces.js
CHANGED
|
@@ -40,6 +40,8 @@ export function IrTraces(props) {
|
|
|
40
40
|
if (!spectrum.visible)
|
|
41
41
|
continue;
|
|
42
42
|
const trace = traceOf(spectrum, mode);
|
|
43
|
+
if (trace === undefined)
|
|
44
|
+
continue;
|
|
43
45
|
const { x, y } = xyReduce(trace, { from, to, nbPoints: wanted });
|
|
44
46
|
const d = profilePath(x, y, xScale, yScale);
|
|
45
47
|
if (d !== '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrTraces.js","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrTraces.js","sourceRoot":"","sources":["../../../src/ir/ui/IrTraces.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAoChD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,MAAM,EACN,MAAM,EACN,YAAY,GAAG,IAAI,GACpB,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,iBAAiB,CAAC;IAEvE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,KAAK,GAAoD,EAAE,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,SAAS;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,YAAG,aAAa,EAAC,MAAM,YACpB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,eAEE,CAAC,EAAE,IAAI,CAAC,CAAC,EACT,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,IAAI,CAAC,KAAK,EAClB,WAAW,EACT,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAE3D,cAAc,EAAC,OAAO,IAPjB,IAAI,CAAC,EAAE,CAQZ,CACH,CAAC,GACA,CACL,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,kCAAkC;AAClC,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Ref } from 'react';
|
|
2
|
+
import type { IrEditorHandle } from '../core/irEditorApi.ts';
|
|
3
|
+
import type { IrSidePanelId } from '../core/irSidePanels.ts';
|
|
4
|
+
import type { IrSpectrum } from '../core/irSpectrum.ts';
|
|
5
|
+
/** The handle a host drives a Raman viewer through: the infrared one's. */
|
|
6
|
+
export type RamanEditorHandle = IrEditorHandle;
|
|
7
|
+
export interface RamanEditorProps {
|
|
8
|
+
/**
|
|
9
|
+
* The spectra to open on, each carrying its `intensity`. Read when the viewer
|
|
10
|
+
* opens and never again: what is on the chart belongs to the viewer from then
|
|
11
|
+
* on. The `ref` handle is how spectra arrive afterwards.
|
|
12
|
+
* @default []
|
|
13
|
+
*/
|
|
14
|
+
data?: IrSpectrum[];
|
|
15
|
+
/**
|
|
16
|
+
* Called whenever the spectra open change — one loaded, one closed, the chart
|
|
17
|
+
* cleared — with the spectra now open. Not called for a zoom, a selection, a
|
|
18
|
+
* rename or a colour.
|
|
19
|
+
* @default undefined
|
|
20
|
+
*/
|
|
21
|
+
onChange?: (spectra: IrSpectrum[]) => void;
|
|
22
|
+
/**
|
|
23
|
+
* The side panels open to begin with.
|
|
24
|
+
* @default DEFAULT_SIDE_PANELS
|
|
25
|
+
*/
|
|
26
|
+
defaultPanelIds?: IrSidePanelId[];
|
|
27
|
+
/**
|
|
28
|
+
* The handle a host drives the viewer through: take these spectra, frame this
|
|
29
|
+
* Raman shift, select that one.
|
|
30
|
+
* @default undefined
|
|
31
|
+
*/
|
|
32
|
+
ref?: Ref<RamanEditorHandle>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A Raman spectrum viewer: the infrared viewer's shell, panels, gestures and
|
|
36
|
+
* export, changed only where Raman is physically different.
|
|
37
|
+
*
|
|
38
|
+
* The spectra are read as intensity, their one value axis, so there is no mode
|
|
39
|
+
* to choose; the Raman shift runs from low at the left to high at the right;
|
|
40
|
+
* the bands are picked as maxima of intensity; and the infrared correlation
|
|
41
|
+
* table is not asked what a band might be.
|
|
42
|
+
* @param props - Component props.
|
|
43
|
+
* @returns The viewer.
|
|
44
|
+
*/
|
|
45
|
+
export declare function RamanEditor(props: RamanEditorProps): import("react").JSX.Element;
|
|
46
|
+
//# sourceMappingURL=RamanEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RamanEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/RamanEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,2EAA2E;AAC3E,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAElD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { VibrationalEditor } from "./VibrationalEditor.js";
|
|
3
|
+
/**
|
|
4
|
+
* A Raman spectrum viewer: the infrared viewer's shell, panels, gestures and
|
|
5
|
+
* export, changed only where Raman is physically different.
|
|
6
|
+
*
|
|
7
|
+
* The spectra are read as intensity, their one value axis, so there is no mode
|
|
8
|
+
* to choose; the Raman shift runs from low at the left to high at the right;
|
|
9
|
+
* the bands are picked as maxima of intensity; and the infrared correlation
|
|
10
|
+
* table is not asked what a band might be.
|
|
11
|
+
* @param props - Component props.
|
|
12
|
+
* @returns The viewer.
|
|
13
|
+
*/
|
|
14
|
+
export function RamanEditor(props) {
|
|
15
|
+
return _jsx(VibrationalEditor, { technique: "raman", ...props });
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=RamanEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RamanEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/RamanEditor.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAiC5D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAC,OAAO,KAAK,KAAK,GAAI,CAAC;AAC5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpectraPanel.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"SpectraPanel.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,gCAgF3B"}
|
|
@@ -27,7 +27,7 @@ export function SpectraPanel() {
|
|
|
27
27
|
const actions = useIrActions();
|
|
28
28
|
const { spectra } = state.data;
|
|
29
29
|
const { selectedId } = state.view;
|
|
30
|
-
const { mode } = state.settings;
|
|
30
|
+
const { mode, technique } = state.settings;
|
|
31
31
|
const selected = spectra.find((spectrum) => spectrum.id === selectedId);
|
|
32
32
|
const allDrawn = spectra.every((spectrum) => spectrum.visible);
|
|
33
33
|
return (_jsxs("div", { style: panelStyle, children: [_jsx("div", { style: panelToolbarStyle, children: _jsxs(Toolbar, { "aria-label": "Spectra", children: [_jsx(Toolbar.Item, { icon: "trash", intent: "danger", tooltip: "Close every spectrum", "aria-label": "Close every spectrum", disabled: spectra.length === 0, onClick: actions.clear }), _jsx(Toolbar.Item, { icon: "cross", intent: "danger", tooltip: "Close the selected spectrum", "aria-label": "Close the selected spectrum", disabled: selected === undefined, onClick: () => {
|
|
@@ -37,6 +37,6 @@ export function SpectraPanel() {
|
|
|
37
37
|
for (const spectrum of spectra) {
|
|
38
38
|
actions.setSpectrumVisible(spectrum.id, true);
|
|
39
39
|
}
|
|
40
|
-
} }), _jsx(Toolbar.Item, { icon: "download", tooltip: "Download every spectrum as one JCAMP-DX file", "aria-label": "Download every spectrum", disabled: spectra.length === 0, onClick: () => downloadIrSpectra(spectra, mode) })] }) }), _jsx("div", { style: panelBodyStyle, children: spectra.length === 0 ? (_jsx("p", { style: panelEmptyStyle, children: "No spectrum is open. Open one of the examples, or drop a JCAMP-DX file on the chart." })) : (spectra.map((spectrum) => (_jsx(SpectrumRow, { spectrum: spectrum, selected: spectrum.id === selectedId, onSelect: () => actions.selectSpectrum(spectrum.id), onToggle: () => actions.setSpectrumVisible(spectrum.id, !spectrum.visible), onColor: (color) => actions.setSpectrumColor(spectrum.id, color), onDownload: () => downloadIrSpectrum(spectrum, mode), onRemove: () => actions.removeSpectrum(spectrum.id), onRename: (name) => actions.renameSpectrum(spectrum.id, name) }, spectrum.id)))) })] }));
|
|
40
|
+
} }), _jsx(Toolbar.Item, { icon: "download", tooltip: "Download every spectrum as one JCAMP-DX file", "aria-label": "Download every spectrum", disabled: spectra.length === 0, onClick: () => downloadIrSpectra(spectra, mode) })] }) }), _jsx("div", { style: panelBodyStyle, children: spectra.length === 0 ? (_jsx("p", { style: panelEmptyStyle, children: "No spectrum is open. Open one of the examples, or drop a JCAMP-DX file on the chart." })) : (spectra.map((spectrum) => (_jsx(SpectrumRow, { spectrum: spectrum, technique: technique, selected: spectrum.id === selectedId, onSelect: () => actions.selectSpectrum(spectrum.id), onToggle: () => actions.setSpectrumVisible(spectrum.id, !spectrum.visible), onColor: (color) => actions.setSpectrumColor(spectrum.id, color), onDownload: () => downloadIrSpectrum(spectrum, mode), onRemove: () => actions.removeSpectrum(spectrum.id), onRename: (name) => actions.renameSpectrum(spectrum.id, name) }, spectrum.id)))) })] }));
|
|
41
41
|
}
|
|
42
42
|
//# sourceMappingURL=SpectraPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpectraPanel.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAClC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"SpectraPanel.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectraPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { IrSpectrum } from '../core/irSpectrum.ts';
|
|
2
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
2
3
|
export interface SpectrumRowProps {
|
|
3
4
|
/** The spectrum the row is about. */
|
|
4
5
|
spectrum: IrSpectrum;
|
|
6
|
+
/**
|
|
7
|
+
* What it was measured with, which decides the order its range is written
|
|
8
|
+
* in: high to low for infrared, low to high for Raman.
|
|
9
|
+
* @default 'infrared'
|
|
10
|
+
*/
|
|
11
|
+
technique?: IrTechnique;
|
|
5
12
|
/** Whether the panels are about it. */
|
|
6
13
|
selected: boolean;
|
|
7
14
|
/** Point the panels at it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpectrumRow.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SpectrumRow.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,QAAQ,EAAE,UAAU,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAqElD"}
|
package/lib/ir/ui/SpectrumRow.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Button } from 'react-science/ui';
|
|
3
3
|
import { SpectrumColorSwatch } from "../../panel/ui/SpectrumColorSwatch.js";
|
|
4
|
-
import {
|
|
4
|
+
import { formatWavenumberRange } from "../core/irFormat.js";
|
|
5
|
+
import { IR_TECHNIQUE_RULES } from "../core/irTechnique.js";
|
|
5
6
|
/**
|
|
6
7
|
* One spectrum: its colour, its name, where it runs, and what can be done to it.
|
|
7
8
|
* @param props - Component props.
|
|
8
9
|
* @returns The row.
|
|
9
10
|
*/
|
|
10
11
|
export function SpectrumRow(props) {
|
|
11
|
-
const { spectrum, selected, onSelect, onToggle, onColor, onDownload, onRemove, onRename, } = props;
|
|
12
|
-
const range = spectrum.wavenumber.
|
|
13
|
-
? ''
|
|
14
|
-
: `${formatWavenumber(spectrum.wavenumber.at(-1))}–${formatWavenumber(spectrum.wavenumber[0])} cm⁻¹`;
|
|
12
|
+
const { spectrum, technique = 'infrared', selected, onSelect, onToggle, onColor, onDownload, onRemove, onRename, } = props;
|
|
13
|
+
const range = formatWavenumberRange(spectrum.wavenumber, IR_TECHNIQUE_RULES[technique].reverseX);
|
|
15
14
|
return (_jsxs("div", { style: selected ? selectedRowStyle : rowStyle, "data-selected": selected ? 'true' : undefined, children: [_jsx(Button, { variant: "minimal", icon: spectrum.visible ? 'eye-open' : 'eye-off', tooltipProps: { content: spectrum.visible ? 'Hide' : 'Draw' }, "aria-label": spectrum.visible ? 'Hide this spectrum' : 'Draw it', onClick: onToggle }), _jsx(SpectrumColorSwatch, { color: spectrum.color, name: spectrum.name, onPick: onColor }), _jsx("input", { style: nameStyle, value: spectrum.name, spellCheck: false, autoComplete: "off", "aria-label": "What this spectrum is called", onFocus: onSelect, onChange: (event) => onRename(event.target.value) }), _jsx("span", { style: rangeStyle, children: range }), _jsx(Button, { variant: "minimal", icon: "download", tooltipProps: { content: 'Download this spectrum as a JCAMP-DX file' }, "aria-label": "Download this spectrum", onClick: onDownload }), _jsx(Button, { variant: "minimal", icon: "cross", intent: "danger", tooltipProps: { content: 'Close this spectrum' }, "aria-label": "Close this spectrum", onClick: onRemove })] }));
|
|
16
15
|
}
|
|
17
16
|
const rowStyle = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpectrumRow.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAwC,CAAC;AAC7E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SpectrumRow.js","sourceRoot":"","sources":["../../../src/ir/ui/SpectrumRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Ref } from 'react';
|
|
2
|
+
import type { IrEditorHandle } from '../core/irEditorApi.ts';
|
|
3
|
+
import type { IrSidePanelId } from '../core/irSidePanels.ts';
|
|
4
|
+
import type { IrMode, IrSpectrum } from '../core/irSpectrum.ts';
|
|
5
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
6
|
+
export interface VibrationalEditorProps {
|
|
7
|
+
/**
|
|
8
|
+
* What the spectra were measured with. Read when the viewer opens and fixed
|
|
9
|
+
* from then on: it decides the value axes, the direction and name of the
|
|
10
|
+
* wavenumber axis, and whether the correlation table is asked about a band.
|
|
11
|
+
*/
|
|
12
|
+
technique: IrTechnique;
|
|
13
|
+
/**
|
|
14
|
+
* The spectra to open on. Read when the viewer opens and never again.
|
|
15
|
+
* @default []
|
|
16
|
+
*/
|
|
17
|
+
data?: IrSpectrum[];
|
|
18
|
+
/**
|
|
19
|
+
* Called whenever the spectra open change, with the spectra now open.
|
|
20
|
+
* @default undefined
|
|
21
|
+
*/
|
|
22
|
+
onChange?: (spectra: IrSpectrum[]) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Which value axis to open in; one the technique does not offer opens its
|
|
25
|
+
* first instead.
|
|
26
|
+
* @default the technique's first
|
|
27
|
+
*/
|
|
28
|
+
mode?: IrMode;
|
|
29
|
+
/**
|
|
30
|
+
* The side panels open to begin with.
|
|
31
|
+
* @default DEFAULT_SIDE_PANELS
|
|
32
|
+
*/
|
|
33
|
+
defaultPanelIds?: IrSidePanelId[];
|
|
34
|
+
/**
|
|
35
|
+
* The handle a host drives the viewer through.
|
|
36
|
+
* @default undefined
|
|
37
|
+
*/
|
|
38
|
+
ref?: Ref<IrEditorHandle>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The viewer `IrEditor` and `RamanEditor` both are: one shell, one set of
|
|
42
|
+
* panels and gestures, with what differs between the techniques read from
|
|
43
|
+
* `IR_TECHNIQUE_RULES` rather than written into either.
|
|
44
|
+
* @param props - Component props.
|
|
45
|
+
* @returns The viewer.
|
|
46
|
+
*/
|
|
47
|
+
export declare function VibrationalEditor(props: VibrationalEditorProps): import("react").JSX.Element;
|
|
48
|
+
//# sourceMappingURL=VibrationalEditor.d.ts.map
|