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 @@
|
|
|
1
|
+
{"version":3,"file":"VibrationalEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/VibrationalEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAM1D,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,SAAS,EAAE,WAAW,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC;;;OAGG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,+BA6B9D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { RootLayout } from 'react-science/ui';
|
|
3
|
+
import { IrShell } from "./IrShell.js";
|
|
4
|
+
import { IrStateProvider } from "./IrStateProvider.js";
|
|
5
|
+
import { useIrEditor } from "./useIrEditor.js";
|
|
6
|
+
/**
|
|
7
|
+
* The viewer `IrEditor` and `RamanEditor` both are: one shell, one set of
|
|
8
|
+
* panels and gestures, with what differs between the techniques read from
|
|
9
|
+
* `IR_TECHNIQUE_RULES` rather than written into either.
|
|
10
|
+
* @param props - Component props.
|
|
11
|
+
* @returns The viewer.
|
|
12
|
+
*/
|
|
13
|
+
export function VibrationalEditor(props) {
|
|
14
|
+
const { technique, data = NO_SPECTRA, onChange, mode, defaultPanelIds, ref, } = props;
|
|
15
|
+
const editor = useIrEditor({
|
|
16
|
+
spectra: data,
|
|
17
|
+
settings: { technique, ...(mode === undefined ? {} : { mode }) },
|
|
18
|
+
panelIds: defaultPanelIds,
|
|
19
|
+
onChange,
|
|
20
|
+
});
|
|
21
|
+
return (_jsx(IrStateProvider, { editor: editor, children: _jsx(RootLayout, { style: rootLayoutStyle, children: _jsx(IrShell, { handle: ref }) }) }));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The viewer fills what it is given, and its own children scroll rather than
|
|
25
|
+
* push: `react-science` lays its root out as a column of full width and height,
|
|
26
|
+
* and a flex column with no `minHeight` grows past its parent instead.
|
|
27
|
+
*/
|
|
28
|
+
const rootLayoutStyle = { minHeight: 0 };
|
|
29
|
+
/** What a viewer opens on when it is handed nothing, kept stable for the memo. */
|
|
30
|
+
const NO_SPECTRA = [];
|
|
31
|
+
//# sourceMappingURL=VibrationalEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VibrationalEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/VibrationalEditor.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqC/C;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EACJ,SAAS,EACT,IAAI,GAAG,UAAU,EACjB,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,GAAG,GACJ,GAAG,KAAK,CAAC;IAEV,MAAM,MAAM,GAAG,WAAW,CAAC;QACzB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;QAChE,QAAQ,EAAE,eAAe;QACzB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,YAM7B,KAAC,UAAU,IAAC,KAAK,EAAE,eAAe,YAChC,KAAC,OAAO,IAAC,MAAM,EAAE,GAAG,GAAI,GACb,GACG,CACnB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,eAAe,GAAG,EAAE,SAAS,EAAE,CAAC,EAAW,CAAC;AAElD,kFAAkF;AAClF,MAAM,UAAU,GAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The band table as text, for pasting into a notebook.
|
|
3
|
+
*/
|
|
4
|
+
import type { AssignedBand } from '../core/assignBands.ts';
|
|
5
|
+
import type { IrMode } from '../core/irSpectrum.ts';
|
|
6
|
+
/**
|
|
7
|
+
* The table as tab separated text.
|
|
8
|
+
*
|
|
9
|
+
* Every candidate is on its band's row, because the reason to copy a band table
|
|
10
|
+
* is to put it beside a structure and argue about it — and the argument is over
|
|
11
|
+
* the candidates rather than over the wavenumbers. A technique the correlation
|
|
12
|
+
* table does not cover has no such column.
|
|
13
|
+
* @param rows - The bands, as they are shown.
|
|
14
|
+
* @param mode - Which value axis is being read.
|
|
15
|
+
* @param assignments - Whether the table has a column for the candidates.
|
|
16
|
+
* @returns The table, one line per band, with a heading.
|
|
17
|
+
*/
|
|
18
|
+
export declare function bandsToTsv(rows: readonly AssignedBand[], mode: IrMode, assignments: boolean): string;
|
|
19
|
+
//# sourceMappingURL=bandsTsv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bandsTsv.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/bandsTsv.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,SAAS,YAAY,EAAE,EAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GACnB,MAAM,CAoBR"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The band table as text, for pasting into a notebook.
|
|
3
|
+
*/
|
|
4
|
+
import { bandValue } from "../core/irBand.js";
|
|
5
|
+
import { formatIrValue, formatWavenumber } from "../core/irFormat.js";
|
|
6
|
+
/**
|
|
7
|
+
* The table as tab separated text.
|
|
8
|
+
*
|
|
9
|
+
* Every candidate is on its band's row, because the reason to copy a band table
|
|
10
|
+
* is to put it beside a structure and argue about it — and the argument is over
|
|
11
|
+
* the candidates rather than over the wavenumbers. A technique the correlation
|
|
12
|
+
* table does not cover has no such column.
|
|
13
|
+
* @param rows - The bands, as they are shown.
|
|
14
|
+
* @param mode - Which value axis is being read.
|
|
15
|
+
* @param assignments - Whether the table has a column for the candidates.
|
|
16
|
+
* @returns The table, one line per band, with a heading.
|
|
17
|
+
*/
|
|
18
|
+
export function bandsToTsv(rows, mode, assignments) {
|
|
19
|
+
const heading = ['wavenumber', 'strength', mode];
|
|
20
|
+
if (assignments)
|
|
21
|
+
heading.push('could be');
|
|
22
|
+
const lines = [heading.join('\t')];
|
|
23
|
+
for (const { band, candidates } of rows) {
|
|
24
|
+
const cells = [
|
|
25
|
+
formatWavenumber(band.wavenumber),
|
|
26
|
+
band.strength,
|
|
27
|
+
formatIrValue(bandValue(band, mode) ?? Number.NaN, mode),
|
|
28
|
+
];
|
|
29
|
+
if (assignments) {
|
|
30
|
+
cells.push(candidates
|
|
31
|
+
.map((candidate) => `${candidate.group} ${candidate.vibration}`)
|
|
32
|
+
.join('; '));
|
|
33
|
+
}
|
|
34
|
+
lines.push(cells.join('\t'));
|
|
35
|
+
}
|
|
36
|
+
return lines.join('\n');
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=bandsTsv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bandsTsv.js","sourceRoot":"","sources":["../../../src/ir/ui/bandsTsv.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGtE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CACxB,IAA6B,EAC7B,IAAY,EACZ,WAAoB;IAEpB,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,WAAW;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG;YACZ,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,IAAI,CAAC,QAAQ;YACb,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC;SACzD,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CACR,UAAU;iBACP,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;iBAC/D,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -7,24 +7,34 @@
|
|
|
7
7
|
* of half a dozen layers nobody needs to read in order to mount one.
|
|
8
8
|
*
|
|
9
9
|
* Everything arrives as a prop and nothing is reached for: the chart reads no
|
|
10
|
-
*
|
|
11
|
-
* that only ever draws one spectrum,
|
|
10
|
+
* store and no context but the language the page is written in, so the same
|
|
11
|
+
* component serves an editor, a report page that only ever draws one spectrum,
|
|
12
|
+
* and a test.
|
|
12
13
|
*/
|
|
13
14
|
import type { ReactNode } from 'react';
|
|
14
15
|
import type { ZoomDragMode } from '../../chart/core/chartDomain.ts';
|
|
15
16
|
import type { AssignedBand } from '../core/assignBands.ts';
|
|
16
17
|
import type { IrBand } from '../core/irBand.ts';
|
|
17
18
|
import type { IrDomain, IrMode, IrSpectrum } from '../core/irSpectrum.ts';
|
|
19
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
18
20
|
export interface IrChartProps {
|
|
19
21
|
/** The spectra to draw, each saying in itself whether it is drawn. */
|
|
20
22
|
spectra: readonly IrSpectrum[];
|
|
21
23
|
/**
|
|
22
|
-
*
|
|
24
|
+
* What the spectra were measured with, which names the wavenumber axis and
|
|
25
|
+
* decides which way it runs: high to low for infrared, low to high for Raman.
|
|
26
|
+
* @default 'infrared'
|
|
27
|
+
*/
|
|
28
|
+
technique?: IrTechnique;
|
|
29
|
+
/**
|
|
30
|
+
* Which value axis to draw them in. One the technique does not offer draws
|
|
31
|
+
* its first instead.
|
|
23
32
|
*
|
|
24
33
|
* A prop rather than state, so the switch lives with whoever owns the toolbar
|
|
25
34
|
* that flips it — and so two charts of the same spectra can be shown side by
|
|
26
35
|
* side, one in each, which is the clearest way to see what the pair means.
|
|
27
|
-
* @default 'transmittance'
|
|
36
|
+
* @default the technique's first: `'transmittance'` for infrared,
|
|
37
|
+
* `'intensity'` for Raman
|
|
28
38
|
*/
|
|
29
39
|
mode?: IrMode;
|
|
30
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irChartProps.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"irChartProps.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB"}
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* of half a dozen layers nobody needs to read in order to mount one.
|
|
8
8
|
*
|
|
9
9
|
* Everything arrives as a prop and nothing is reached for: the chart reads no
|
|
10
|
-
*
|
|
11
|
-
* that only ever draws one spectrum,
|
|
10
|
+
* store and no context but the language the page is written in, so the same
|
|
11
|
+
* component serves an editor, a report page that only ever draws one spectrum,
|
|
12
|
+
* and a test.
|
|
12
13
|
*/
|
|
13
14
|
export {};
|
|
14
15
|
//# sourceMappingURL=irChartProps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irChartProps.js","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"irChartProps.js","sourceRoot":"","sources":["../../../src/ir/ui/irChartProps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
* `irCommands.ts` for why the four files are split the way they are.
|
|
6
6
|
*/
|
|
7
7
|
import type { IrCommandHandlers, IrCommandId, RunIrCommand } from '../core/irCommands.ts';
|
|
8
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
8
9
|
/** What the provider holds. */
|
|
9
10
|
export interface IrCommandContextValue {
|
|
10
11
|
/** What each command does. */
|
|
11
12
|
handlers: IrCommandHandlers;
|
|
13
|
+
/** What the spectra were measured with, which words the commands. */
|
|
14
|
+
technique: IrTechnique;
|
|
12
15
|
/** Run one. */
|
|
13
16
|
run: RunIrCommand;
|
|
14
17
|
}
|
|
@@ -19,6 +22,11 @@ export declare const commandContext: import("react").Context<IrCommandContextVal
|
|
|
19
22
|
* @returns The runner; a command nothing handles does nothing.
|
|
20
23
|
*/
|
|
21
24
|
export declare function useIrCommand(): RunIrCommand;
|
|
25
|
+
/**
|
|
26
|
+
* What the spectra were measured with, from anywhere inside the viewer.
|
|
27
|
+
* @returns The technique; infrared outside a provider.
|
|
28
|
+
*/
|
|
29
|
+
export declare function useIrCommandTechnique(): IrTechnique;
|
|
22
30
|
/**
|
|
23
31
|
* Everything a toolbar item needs to be one command, in one spread.
|
|
24
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irCommandContext.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"irCommandContext.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK1D,+BAA+B;AAC/B,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qEAAqE;IACrE,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe;IACf,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,kCAAkC;AAClC,eAAO,MAAM,cAAc,uDAAoD,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,YAAY,IAAI,YAAY,CAG3C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,KAIP,IAAI,WAAW;;;;EAQxC"}
|
|
@@ -6,8 +6,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
6
6
|
* `irCommands.ts` for why the four files are split the way they are.
|
|
7
7
|
*/
|
|
8
8
|
import { createContext, useContext } from 'react';
|
|
9
|
-
import {
|
|
9
|
+
import { irCommandEntryLabel, irCommands } from "../core/irCommands.js";
|
|
10
10
|
import { IrCommandTooltip } from "./IrCommandTooltip.js";
|
|
11
|
+
import { useIrText } from "./useIrText.js";
|
|
11
12
|
/** Where the provider puts it. */
|
|
12
13
|
export const commandContext = createContext(null);
|
|
13
14
|
/**
|
|
@@ -18,6 +19,13 @@ export function useIrCommand() {
|
|
|
18
19
|
const value = useContext(commandContext);
|
|
19
20
|
return value?.run ?? noRun;
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* What the spectra were measured with, from anywhere inside the viewer.
|
|
24
|
+
* @returns The technique; infrared outside a provider.
|
|
25
|
+
*/
|
|
26
|
+
export function useIrCommandTechnique() {
|
|
27
|
+
return useContext(commandContext)?.technique ?? 'infrared';
|
|
28
|
+
}
|
|
21
29
|
/**
|
|
22
30
|
* Everything a toolbar item needs to be one command, in one spread.
|
|
23
31
|
*
|
|
@@ -28,10 +36,13 @@ export function useIrCommand() {
|
|
|
28
36
|
*/
|
|
29
37
|
export function useIrCommandProps() {
|
|
30
38
|
const run = useIrCommand();
|
|
39
|
+
const technique = useIrCommandTechnique();
|
|
40
|
+
const text = useIrText(technique);
|
|
31
41
|
return function command(id) {
|
|
42
|
+
const entry = text.command(id) ?? irCommands[id];
|
|
32
43
|
return {
|
|
33
|
-
tooltip: _jsx(IrCommandTooltip, { id: id }),
|
|
34
|
-
'aria-label':
|
|
44
|
+
tooltip: _jsx(IrCommandTooltip, { id: id, technique: technique }),
|
|
45
|
+
'aria-label': irCommandEntryLabel(entry),
|
|
35
46
|
onClick: () => run(id),
|
|
36
47
|
};
|
|
37
48
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irCommandContext.js","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOlD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"irCommandContext.js","sourceRoot":"","sources":["../../../src/ir/ui/irCommandContext.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOlD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAY3C,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAA+B,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACzC,OAAO,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,cAAc,CAAC,EAAE,SAAS,IAAI,UAAU,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,SAAS,OAAO,CAAC,EAAe;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,KAAC,gBAAgB,IAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,GAAI;YAC3D,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC;YACxC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;SACvB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,KAAK;IACZ,6EAA6E;IAC7E,iEAAiE;AACnE,CAAC"}
|
|
@@ -13,9 +13,8 @@
|
|
|
13
13
|
* to on every change of a threshold.
|
|
14
14
|
*/
|
|
15
15
|
import type { AssignedBand } from '../core/assignBands.ts';
|
|
16
|
-
import type { CreateIrStateOptions } from '../core/irReducer.ts';
|
|
17
16
|
import type { IrSpectrum } from '../core/irSpectrum.ts';
|
|
18
|
-
import type { IrState } from '../core/irState.ts';
|
|
17
|
+
import type { CreateIrStateOptions, IrState } from '../core/irState.ts';
|
|
19
18
|
import type { IrEditorActions } from './irActions.ts';
|
|
20
19
|
/** What a viewer opens on, and who to tell when the spectra change. */
|
|
21
20
|
export interface UseIrEditorOptions extends CreateIrStateOptions {
|
|
@@ -36,7 +35,8 @@ export interface IrEditorApi {
|
|
|
36
35
|
selectedSpectrum: IrSpectrum | null;
|
|
37
36
|
/**
|
|
38
37
|
* The bands of the selected spectrum, with everything each might be. Empty
|
|
39
|
-
* while nothing is selected or while picking is switched off
|
|
38
|
+
* while nothing is selected or while picking is switched off, and every band
|
|
39
|
+
* without a candidate for a technique the correlation table does not cover.
|
|
40
40
|
*/
|
|
41
41
|
assigned: AssignedBand[];
|
|
42
42
|
/** Everything to do. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useIrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAKxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,uEAAuE;AACvE,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CAC5C;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,kEAAkE;IAClE,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,qEAAqE;IACrE,gBAAgB,EAAE,UAAU,GAAG,IAAI,CAAC;IACpC;;;;OAIG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,wBAAwB;IACxB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CA+DzE"}
|
package/lib/ir/ui/useIrEditor.js
CHANGED
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { useEffect, useMemo, useReducer, useRef } from 'react';
|
|
16
16
|
import { assignBands } from "../core/assignBands.js";
|
|
17
|
-
import {
|
|
17
|
+
import { BAND_ASSIGNMENTS } from "../core/bandAssignments.js";
|
|
18
|
+
import { irReducer } from "../core/irReducer.js";
|
|
19
|
+
import { createIrState } from "../core/irState.js";
|
|
20
|
+
import { IR_TECHNIQUE_RULES } from "../core/irTechnique.js";
|
|
18
21
|
import { pickBands } from "../core/pickBands.js";
|
|
19
22
|
import { createIrActions } from "./irActions.js";
|
|
20
23
|
/**
|
|
@@ -29,7 +32,7 @@ export function useIrEditor(options = {}) {
|
|
|
29
32
|
const { spectra } = state.data;
|
|
30
33
|
const { selectedId } = state.view;
|
|
31
34
|
const { pickBands: picking, picking: pickingOptions } = state.settings;
|
|
32
|
-
const { assignmentTolerance } = state.settings;
|
|
35
|
+
const { assignmentTolerance, technique } = state.settings;
|
|
33
36
|
const visibleSpectra = useMemo(() => {
|
|
34
37
|
const visible = [];
|
|
35
38
|
for (const spectrum of spectra) {
|
|
@@ -52,8 +55,12 @@ export function useIrEditor(options = {}) {
|
|
|
52
55
|
: pickBands(selectedSpectrum, pickingOptions), [selectedSpectrum, picking, pickingOptions]);
|
|
53
56
|
// Assigning is a walk of thirty ranges per band, which is nothing beside the
|
|
54
57
|
// picking — so it is a memo of its own, and moving the tolerance does not
|
|
55
|
-
// re-pick.
|
|
56
|
-
const
|
|
58
|
+
// re-pick. A technique the table does not cover is matched against no table.
|
|
59
|
+
const { assignments } = IR_TECHNIQUE_RULES[technique];
|
|
60
|
+
const assigned = useMemo(() => assignBands(bands, {
|
|
61
|
+
tolerance: assignmentTolerance,
|
|
62
|
+
assignments: assignments ? BAND_ASSIGNMENTS : NO_ASSIGNMENTS,
|
|
63
|
+
}), [bands, assignmentTolerance, assignments]);
|
|
57
64
|
// What was reported last, so a host passing a fresh callback on every render
|
|
58
65
|
// is not told about spectra that did not change. The identities are compared
|
|
59
66
|
// rather than the array: every edit replaces it, including the ones that only
|
|
@@ -67,6 +74,8 @@ export function useIrEditor(options = {}) {
|
|
|
67
74
|
}, [spectra, onChange]);
|
|
68
75
|
return useMemo(() => ({ state, visibleSpectra, selectedSpectrum, assigned, actions }), [state, visibleSpectra, selectedSpectrum, assigned, actions]);
|
|
69
76
|
}
|
|
77
|
+
/** The table a technique the correlation table does not cover is matched against. */
|
|
78
|
+
const NO_ASSIGNMENTS = [];
|
|
70
79
|
/**
|
|
71
80
|
* Whether two lists hold the same spectra, by identity and in order.
|
|
72
81
|
* @param current - What was reported last.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useIrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/useIrEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The handle a host drives the viewer through, filled in from its state.
|
|
3
|
+
*
|
|
4
|
+
* A hook of its own beside the shell, because every gesture on the handle reads
|
|
5
|
+
* the state the shell already reads — and the shell is long enough without it.
|
|
6
|
+
*/
|
|
7
|
+
import type { Ref } from 'react';
|
|
8
|
+
import type { IrEditorHandle } from '../core/irEditorApi.ts';
|
|
9
|
+
/**
|
|
10
|
+
* Fill in a host's handle on the viewer this is called inside.
|
|
11
|
+
* @param handle - The handle to fill in, if the host asked for one.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useIrHandle(handle: Ref<IrEditorHandle> | undefined): void;
|
|
14
|
+
//# sourceMappingURL=useIrHandle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIrHandle.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIjC,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,wBAAwB,CAAC;AAKhF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,IAAI,CA2BzE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The handle a host drives the viewer through, filled in from its state.
|
|
3
|
+
*
|
|
4
|
+
* A hook of its own beside the shell, because every gesture on the handle reads
|
|
5
|
+
* the state the shell already reads — and the shell is long enough without it.
|
|
6
|
+
*/
|
|
7
|
+
import { useImperativeHandle } from 'react';
|
|
8
|
+
import { fullDomain } from "../core/irDomain.js";
|
|
9
|
+
import { useIrActions, useIrEditorState } from "./irStateContext.js";
|
|
10
|
+
/**
|
|
11
|
+
* Fill in a host's handle on the viewer this is called inside.
|
|
12
|
+
* @param handle - The handle to fill in, if the host asked for one.
|
|
13
|
+
*/
|
|
14
|
+
export function useIrHandle(handle) {
|
|
15
|
+
const { state, visibleSpectra } = useIrEditorState();
|
|
16
|
+
const actions = useIrActions();
|
|
17
|
+
const { domain } = state.view;
|
|
18
|
+
const { mode } = state.settings;
|
|
19
|
+
useImperativeHandle(handle, () => ({
|
|
20
|
+
getSpectra: () => state.data.spectra,
|
|
21
|
+
setSpectra: (spectra) => actions.setSpectra(spectra),
|
|
22
|
+
addSpectra: (spectra) => actions.addSpectra(spectra),
|
|
23
|
+
clear: () => actions.clear(),
|
|
24
|
+
setDomain: (next) => actions.setDomain(next),
|
|
25
|
+
resetDomain: () => actions.resetDomain(),
|
|
26
|
+
zoomToWavenumber: (wavenumber, options = {}) => {
|
|
27
|
+
const { width = DEFAULT_FRAME_WIDTH } = options;
|
|
28
|
+
const shown = domain ?? fullDomain(visibleSpectra, mode);
|
|
29
|
+
actions.setDomain({
|
|
30
|
+
x: [wavenumber - width / 2, wavenumber + width / 2],
|
|
31
|
+
y: shown.y,
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
selectSpectrum: (id) => actions.selectSpectrum(id),
|
|
35
|
+
}), [state.data.spectra, actions, domain, visibleSpectra, mode]);
|
|
36
|
+
}
|
|
37
|
+
/** How wide a window a host gets when it asks to frame a band without saying. */
|
|
38
|
+
const DEFAULT_FRAME_WIDTH = 200;
|
|
39
|
+
//# sourceMappingURL=useIrHandle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIrHandle.js","sourceRoot":"","sources":["../../../src/ir/ui/useIrHandle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErE;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuC;IACjE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEhC,mBAAmB,CACjB,MAAM,EACN,GAAmB,EAAE,CAAC,CAAC;QACrB,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;QACpC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QACpD,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QACpD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;QAC5B,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE;QACxC,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAA6B,EAAE,EAAE,EAAE;YAChE,MAAM,EAAE,KAAK,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC;YAChD,MAAM,KAAK,GAAa,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACnE,OAAO,CAAC,SAAS,CAAC;gBAChB,CAAC,EAAE,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;gBACnD,CAAC,EAAE,KAAK,CAAC,CAAC;aACX,CAAC,CAAC;QACL,CAAC;QACD,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;KACnD,CAAC,EACF,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,mBAAmB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
import type { IrCommand, IrCommandId } from '../core/irCommands.ts';
|
|
11
|
+
import type { IrMode } from '../core/irSpectrum.ts';
|
|
12
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
13
|
+
/** The words that change with what was measured. */
|
|
14
|
+
export interface IrText {
|
|
15
|
+
/** What the horizontal axis is called. */
|
|
16
|
+
xTitle: string;
|
|
17
|
+
/** What the value axis is called in a mode. */
|
|
18
|
+
yTitle: (mode: IrMode) => string;
|
|
19
|
+
/** What the chart is and what can be done to it, for whoever cannot see it. */
|
|
20
|
+
chart: (mode: IrMode) => string;
|
|
21
|
+
/** The accessible name of the tool rail. */
|
|
22
|
+
tools: string;
|
|
23
|
+
/** The accessible name of the header. */
|
|
24
|
+
viewer: string;
|
|
25
|
+
/** The accessible name of the header's help group. */
|
|
26
|
+
viewerHelp: string;
|
|
27
|
+
/** The accessible name of the mark. */
|
|
28
|
+
mark: string;
|
|
29
|
+
/** The title of the documentation dialog. */
|
|
30
|
+
documentation: string;
|
|
31
|
+
/** A command as the viewer words it, `undefined` for one it does not offer. */
|
|
32
|
+
command: (id: IrCommandId) => IrCommand | undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The words of a viewer of one technique.
|
|
36
|
+
* @param technique - What was measured.
|
|
37
|
+
* @returns The words, in the language of the page where the catalog has them.
|
|
38
|
+
*/
|
|
39
|
+
export declare function useIrText(technique: IrTechnique): IrText;
|
|
40
|
+
//# sourceMappingURL=useIrText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIrText.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrText.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,oDAAoD;AACpD,MAAM,WAAW,MAAM;IACrB,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,+EAA+E;IAC/E,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,SAAS,GAAG,SAAS,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAGxD"}
|
|
@@ -0,0 +1,118 @@
|
|
|
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
|
+
import { useChromeT } from "../../i18n/ui/useT.js";
|
|
11
|
+
import { boxZoomOnly, yAxisTitle } from "../core/irMode.js";
|
|
12
|
+
import { IR_TECHNIQUE_RULES } from "../core/irTechnique.js";
|
|
13
|
+
import { irCommandsFor } from "../core/irTechniqueCommands.js";
|
|
14
|
+
/**
|
|
15
|
+
* The words of a viewer of one technique.
|
|
16
|
+
* @param technique - What was measured.
|
|
17
|
+
* @returns The words, in the language of the page where the catalog has them.
|
|
18
|
+
*/
|
|
19
|
+
export function useIrText(technique) {
|
|
20
|
+
const t = useChromeT();
|
|
21
|
+
return technique === 'raman' ? ramanText(t) : infraredText(t);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The words of an infrared viewer, from the core records.
|
|
25
|
+
* @param t - The chrome's formatter, for a value axis the catalog names.
|
|
26
|
+
* @returns The words.
|
|
27
|
+
*/
|
|
28
|
+
function infraredText(t) {
|
|
29
|
+
const { name, xTitle } = IR_TECHNIQUE_RULES.infrared;
|
|
30
|
+
const opening = `${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
31
|
+
const commands = irCommandsFor('infrared');
|
|
32
|
+
return {
|
|
33
|
+
xTitle,
|
|
34
|
+
yTitle: (mode) => modeTitle(t, mode),
|
|
35
|
+
chart: (mode) => infraredChartLabel(opening, mode),
|
|
36
|
+
tools: `${opening} spectrum tools`,
|
|
37
|
+
viewer: `${opening} spectrum viewer`,
|
|
38
|
+
viewerHelp: `${opening} spectrum viewer help`,
|
|
39
|
+
mark: `${opening} viewer`,
|
|
40
|
+
documentation: `Using the ${name} viewer`,
|
|
41
|
+
command: (id) => commands[id],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The words of a Raman viewer, all of them from the catalog.
|
|
46
|
+
* @param t - The chrome's formatter.
|
|
47
|
+
* @returns The words.
|
|
48
|
+
*/
|
|
49
|
+
function ramanText(t) {
|
|
50
|
+
const commands = irCommandsFor('raman');
|
|
51
|
+
return {
|
|
52
|
+
xTitle: t('ir.raman.xTitle'),
|
|
53
|
+
yTitle: (mode) => modeTitle(t, mode),
|
|
54
|
+
chart: () => t('ir.raman.chart'),
|
|
55
|
+
tools: t('ir.raman.tools'),
|
|
56
|
+
viewer: t('ir.raman.viewer'),
|
|
57
|
+
viewerHelp: t('ir.raman.viewerHelp'),
|
|
58
|
+
mark: t('ir.raman.mark'),
|
|
59
|
+
documentation: t('ir.raman.documentation'),
|
|
60
|
+
command: (id) => translated(t, commands[id], RAMAN_COMMAND_KEYS[id]),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* What the value axis is called, translated where the catalog has the axis.
|
|
65
|
+
* @param t - The chrome's formatter.
|
|
66
|
+
* @param mode - Which value axis.
|
|
67
|
+
* @returns The title.
|
|
68
|
+
*/
|
|
69
|
+
function modeTitle(t, mode) {
|
|
70
|
+
const key = MODE_KEYS[mode];
|
|
71
|
+
return key === undefined ? yAxisTitle(mode) : t(key);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The infrared chart's accessible name. The gestures differ by mode, so the
|
|
75
|
+
* sentence does too — a label promising the wheel to a reader who cannot watch
|
|
76
|
+
* it fail to do anything is worse than no label at all.
|
|
77
|
+
* @param opening - The technique's name, as a sentence opens on it.
|
|
78
|
+
* @param mode - Which value axis is being drawn.
|
|
79
|
+
* @returns The label.
|
|
80
|
+
*/
|
|
81
|
+
function infraredChartLabel(opening, mode) {
|
|
82
|
+
const axis = `${opening} spectrum read as ${yAxisTitle(mode)}, wavenumber running from high at the left to low at the right.`;
|
|
83
|
+
return boxZoomOnly(mode)
|
|
84
|
+
? `${axis} Drag a rectangle over it to zoom to that rectangle, and double click to fit everything again.`
|
|
85
|
+
: `${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.`;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* A command with its words read from the catalog where it has them.
|
|
89
|
+
* @param t - The chrome's formatter.
|
|
90
|
+
* @param entry - The command as its table words it.
|
|
91
|
+
* @param keys - The catalog keys of its title and description, if any.
|
|
92
|
+
* @returns The command, translated.
|
|
93
|
+
*/
|
|
94
|
+
function translated(t, entry, keys) {
|
|
95
|
+
if (entry === undefined || keys === undefined)
|
|
96
|
+
return entry;
|
|
97
|
+
return {
|
|
98
|
+
...entry,
|
|
99
|
+
...(keys.title === undefined ? {} : { title: t(keys.title) }),
|
|
100
|
+
...(keys.description === undefined
|
|
101
|
+
? {}
|
|
102
|
+
: { description: t(keys.description) }),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/** The value axes the catalog has a name for. */
|
|
106
|
+
const MODE_KEYS = {
|
|
107
|
+
intensity: 'ir.mode.intensity',
|
|
108
|
+
};
|
|
109
|
+
/** The catalog keys of every command a Raman viewer words its own way. */
|
|
110
|
+
const RAMAN_COMMAND_KEYS = {
|
|
111
|
+
about: { title: 'ir.raman.about' },
|
|
112
|
+
documentation: { description: 'ir.raman.command.documentation' },
|
|
113
|
+
readTool: { description: 'ir.raman.command.readTool' },
|
|
114
|
+
boxTool: { description: 'ir.raman.command.boxTool' },
|
|
115
|
+
zoomIn: { description: 'ir.raman.command.zoomIn' },
|
|
116
|
+
togglePicking: { description: 'ir.raman.command.togglePicking' },
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=useIrText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIrText.js","sourceRoot":"","sources":["../../../src/ir/ui/useIrText.ts"],"names":[],"mappings":"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"}
|
package/lib/ir/ui/useIrZoom.d.ts
CHANGED
|
@@ -15,9 +15,16 @@ import type { ZoomDragMode } from '../../chart/core/chartDomain.ts';
|
|
|
15
15
|
import type { PlotRect } from '../../chart/core/chartGeometry.ts';
|
|
16
16
|
import type { ChartZoom } from '../../chart/ui/useChartZoom.ts';
|
|
17
17
|
import type { IrDomain, IrMode, IrSpectrum } from '../core/irSpectrum.ts';
|
|
18
|
+
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
18
19
|
export interface IrZoomOptions {
|
|
19
20
|
/** Everything the chart holds, which is what the window is fitted to. */
|
|
20
21
|
spectra: readonly IrSpectrum[];
|
|
22
|
+
/**
|
|
23
|
+
* What the spectra were measured with, which decides which way the
|
|
24
|
+
* wavenumber axis runs.
|
|
25
|
+
* @default 'infrared'
|
|
26
|
+
*/
|
|
27
|
+
technique?: IrTechnique;
|
|
21
28
|
/** Which value axis is being drawn. */
|
|
22
29
|
mode: IrMode;
|
|
23
30
|
/** The SVG the gestures are made on, as it was handed to its `ref`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIrZoom.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrZoom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"useIrZoom.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/useIrZoom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,MAAM,EAAE,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxC,yEAAyE;IACzE,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CA6B3D"}
|