react-cheminfo 0.66.0 → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -11
- package/lib/download/ui/FigureDownloadPanel.d.ts +7 -1
- package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -1
- package/lib/download/ui/FigureDownloadPanel.js +2 -2
- package/lib/download/ui/FigureDownloadPanel.js.map +1 -1
- package/lib/ecosystem/core/sites.js +6 -6
- package/lib/ecosystem/core/sites.js.map +1 -1
- package/lib/ecosystem/core/types.d.ts +1 -1
- package/lib/ecosystem/core/types.d.ts.map +1 -1
- package/lib/ecosystem/ui/glyphs.js +2 -2
- package/lib/ecosystem/ui/glyphs.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/i18n/core/messageCatalog.d.ts +2 -2
- package/lib/i18n/vite/localeCatalog.d.ts +1 -1
- package/lib/ir/core/index.d.ts +2 -2
- package/lib/ir/core/index.d.ts.map +1 -1
- package/lib/ir/core/index.js.map +1 -1
- package/lib/ir/core/irEditorApi.d.ts +12 -0
- package/lib/ir/core/irEditorApi.d.ts.map +1 -1
- package/lib/ir/core/irReducer.d.ts +2 -2
- package/lib/ir/core/irReducer.d.ts.map +1 -1
- package/lib/ir/core/irSidePanels.d.ts +7 -1
- package/lib/ir/core/irSidePanels.d.ts.map +1 -1
- package/lib/ir/core/irState.d.ts +8 -5
- package/lib/ir/core/irState.d.ts.map +1 -1
- package/lib/ir/core/irState.js.map +1 -1
- package/lib/ir/ui/IrCanvas.d.ts +7 -0
- package/lib/ir/ui/IrCanvas.d.ts.map +1 -1
- package/lib/ir/ui/IrCanvas.js +8 -3
- package/lib/ir/ui/IrCanvas.js.map +1 -1
- package/lib/ir/ui/IrChart.d.ts.map +1 -1
- package/lib/ir/ui/IrChart.js +5 -1
- package/lib/ir/ui/IrChart.js.map +1 -1
- package/lib/ir/ui/IrEditor.d.ts +22 -4
- package/lib/ir/ui/IrEditor.d.ts.map +1 -1
- package/lib/ir/ui/IrEditor.js.map +1 -1
- package/lib/ir/ui/IrShell.d.ts +9 -1
- package/lib/ir/ui/IrShell.d.ts.map +1 -1
- package/lib/ir/ui/IrShell.js +4 -19
- package/lib/ir/ui/IrShell.js.map +1 -1
- package/lib/ir/ui/IrSidePanel.d.ts +11 -0
- package/lib/ir/ui/IrSidePanel.d.ts.map +1 -1
- package/lib/ir/ui/IrSidePanel.js +12 -3
- package/lib/ir/ui/IrSidePanel.js.map +1 -1
- package/lib/ir/ui/RamanEditor.d.ts +22 -4
- package/lib/ir/ui/RamanEditor.d.ts.map +1 -1
- package/lib/ir/ui/RamanEditor.js.map +1 -1
- package/lib/ir/ui/VibrationalEditor.d.ts +18 -4
- package/lib/ir/ui/VibrationalEditor.d.ts.map +1 -1
- package/lib/ir/ui/VibrationalEditor.js +4 -2
- package/lib/ir/ui/VibrationalEditor.js.map +1 -1
- package/lib/ir/ui/index.d.ts +1 -0
- package/lib/ir/ui/index.d.ts.map +1 -1
- package/lib/ir/ui/index.js.map +1 -1
- package/lib/ir/ui/irActions.d.ts +3 -3
- package/lib/ir/ui/irActions.d.ts.map +1 -1
- package/lib/ir/ui/irChartProps.d.ts +7 -0
- package/lib/ir/ui/irChartProps.d.ts.map +1 -1
- package/lib/ir/ui/irHostPanels.d.ts +53 -0
- package/lib/ir/ui/irHostPanels.d.ts.map +1 -0
- package/lib/ir/ui/irHostPanels.js +41 -0
- package/lib/ir/ui/irHostPanels.js.map +1 -0
- package/lib/ir/ui/useIrSide.d.ts +27 -0
- package/lib/ir/ui/useIrSide.d.ts.map +1 -0
- package/lib/ir/ui/useIrSide.js +42 -0
- package/lib/ir/ui/useIrSide.js.map +1 -0
- package/lib/ir/ui/useIrZoom.d.ts +8 -0
- package/lib/ir/ui/useIrZoom.d.ts.map +1 -1
- package/lib/ir/ui/useIrZoom.js +2 -1
- package/lib/ir/ui/useIrZoom.js.map +1 -1
- package/lib/locales/de.json +9 -1
- package/lib/locales/en.json +9 -1
- package/lib/locales/es.json +9 -1
- package/lib/locales/fr.json +9 -1
- package/lib/locales/it.json +9 -1
- package/lib/molecule3d/core/animatedPng.d.ts +25 -0
- package/lib/molecule3d/core/animatedPng.d.ts.map +1 -0
- package/lib/molecule3d/core/animatedPng.js +59 -0
- package/lib/molecule3d/core/animatedPng.js.map +1 -0
- package/lib/molecule3d/core/file.d.ts +24 -0
- package/lib/molecule3d/core/file.d.ts.map +1 -0
- package/lib/molecule3d/core/file.js +2 -0
- package/lib/molecule3d/core/file.js.map +1 -0
- package/lib/molecule3d/core/index.d.ts +4 -1
- package/lib/molecule3d/core/index.d.ts.map +1 -1
- package/lib/molecule3d/core/index.js +1 -0
- package/lib/molecule3d/core/index.js.map +1 -1
- package/lib/molecule3d/core/settings.d.ts +0 -7
- package/lib/molecule3d/core/settings.d.ts.map +1 -1
- package/lib/molecule3d/core/settings.js.map +1 -1
- package/lib/molecule3d/ui/Molecule3DExport.d.ts +10 -2
- package/lib/molecule3d/ui/Molecule3DExport.d.ts.map +1 -1
- package/lib/molecule3d/ui/Molecule3DExport.js +15 -2
- package/lib/molecule3d/ui/Molecule3DExport.js.map +1 -1
- package/lib/molecule3d/ui/Molecule3DToolbar.js +9 -2
- package/lib/molecule3d/ui/Molecule3DToolbar.js.map +1 -1
- package/lib/molecule3d/ui/MoleculeCanvas3D.d.ts.map +1 -1
- package/lib/molecule3d/ui/MoleculeCanvas3D.js +23 -41
- package/lib/molecule3d/ui/MoleculeCanvas3D.js.map +1 -1
- package/lib/molecule3d/ui/drawScene.d.ts +2 -1
- package/lib/molecule3d/ui/drawScene.d.ts.map +1 -1
- package/lib/molecule3d/ui/drawScene.js.map +1 -1
- package/lib/molecule3d/ui/exportMoleculeImage.d.ts +15 -1
- package/lib/molecule3d/ui/exportMoleculeImage.d.ts.map +1 -1
- package/lib/molecule3d/ui/exportMoleculeImage.js +14 -2
- package/lib/molecule3d/ui/exportMoleculeImage.js.map +1 -1
- package/lib/molecule3d/ui/moleculeFrames.d.ts +47 -0
- package/lib/molecule3d/ui/moleculeFrames.d.ts.map +1 -0
- package/lib/molecule3d/ui/moleculeFrames.js +65 -0
- package/lib/molecule3d/ui/moleculeFrames.js.map +1 -0
- package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts +14 -1
- package/lib/molecule3d/ui/moleculeViewer3DProps.d.ts.map +1 -1
- package/lib/molecule3d/ui/renderMolecule.d.ts +3 -3
- package/lib/molecule3d/ui/renderMolecule.d.ts.map +1 -1
- package/lib/molecule3d/ui/renderMolecule.js +2 -1
- package/lib/molecule3d/ui/renderMolecule.js.map +1 -1
- package/lib/molecule3d/ui/sceneDrawer.d.ts +2 -1
- package/lib/molecule3d/ui/sceneDrawer.d.ts.map +1 -1
- package/lib/molecule3d/ui/sceneDrawer.js +9 -1
- package/lib/molecule3d/ui/sceneDrawer.js.map +1 -1
- package/lib/molecule3d/ui/useImageExport.d.ts +8 -3
- package/lib/molecule3d/ui/useImageExport.d.ts.map +1 -1
- package/lib/molecule3d/ui/useImageExport.js +13 -4
- package/lib/molecule3d/ui/useImageExport.js.map +1 -1
- package/lib/molecule3d/ui/useMoleculeScene.d.ts +2 -1
- package/lib/molecule3d/ui/useMoleculeScene.d.ts.map +1 -1
- package/lib/molecule3d/ui/useMoleculeScene.js.map +1 -1
- package/lib/molecule3d/ui/useMoleculeViewer.d.ts +16 -0
- package/lib/molecule3d/ui/useMoleculeViewer.d.ts.map +1 -0
- package/lib/molecule3d/ui/useMoleculeViewer.js +37 -0
- package/lib/molecule3d/ui/useMoleculeViewer.js.map +1 -0
- package/lib/molecule3d/ui/usePolarSurfaceArea.d.ts +3 -3
- package/lib/molecule3d/ui/usePolarSurfaceArea.d.ts.map +1 -1
- package/lib/molecule3d/ui/usePolarSurfaceArea.js +4 -3
- package/lib/molecule3d/ui/usePolarSurfaceArea.js.map +1 -1
- package/lib/molecule3d/ui/viewer.d.ts +4 -1
- package/lib/molecule3d/ui/viewer.d.ts.map +1 -1
- package/lib/molecule3d/ui/viewer.js +21 -19
- package/lib/molecule3d/ui/viewer.js.map +1 -1
- package/lib/molecule3d/ui/viewerTypes.d.ts +6 -0
- package/lib/molecule3d/ui/viewerTypes.d.ts.map +1 -1
- package/lib/molstar/core/captureScene.d.ts +19 -1
- package/lib/molstar/core/captureScene.d.ts.map +1 -1
- package/lib/molstar/core/captureScene.js +57 -2
- package/lib/molstar/core/captureScene.js.map +1 -1
- package/lib/molstar/core/index.d.ts +5 -2
- package/lib/molstar/core/index.d.ts.map +1 -1
- package/lib/molstar/core/index.js +4 -2
- package/lib/molstar/core/index.js.map +1 -1
- package/lib/molstar/core/trajectory.d.ts +56 -0
- package/lib/molstar/core/trajectory.d.ts.map +1 -0
- package/lib/molstar/core/trajectory.js +96 -0
- package/lib/molstar/core/trajectory.js.map +1 -0
- package/lib/panel/ui/PanelRail.d.ts.map +1 -1
- package/lib/panel/ui/PanelRail.js +1 -1
- package/lib/panel/ui/PanelRail.js.map +1 -1
- package/lib/raman.d.ts +2 -1
- package/lib/raman.d.ts.map +1 -1
- package/lib/raman.js.map +1 -1
- package/lib/router/core/basePath.d.ts +2 -2
- package/lib/router/core/basePath.js +2 -2
- package/lib/router/core/siteAddresses.d.ts +1 -1
- package/lib/router/core/siteAddresses.js +1 -1
- package/lib/seo/core/siteFiles.js +1 -1
- package/lib/seo/core/siteFiles.js.map +1 -1
- package/lib/server/answerAddresses.d.ts +3 -3
- package/lib/server/answerAddresses.js +3 -3
- package/lib/structure/core/index.d.ts +2 -0
- package/lib/structure/core/index.d.ts.map +1 -1
- package/lib/structure/core/index.js +1 -0
- package/lib/structure/core/index.js.map +1 -1
- package/lib/structure/core/structureTransfer.d.ts +29 -0
- package/lib/structure/core/structureTransfer.d.ts.map +1 -0
- package/lib/structure/core/structureTransfer.js +26 -0
- package/lib/structure/core/structureTransfer.js.map +1 -0
- package/lib/structure/ui/EditorImportButton.d.ts +20 -0
- package/lib/structure/ui/EditorImportButton.d.ts.map +1 -0
- package/lib/structure/ui/EditorImportButton.js +24 -0
- package/lib/structure/ui/EditorImportButton.js.map +1 -0
- package/lib/structure/ui/EditorImportProblem.d.ts +17 -0
- package/lib/structure/ui/EditorImportProblem.d.ts.map +1 -0
- package/lib/structure/ui/EditorImportProblem.js +32 -0
- package/lib/structure/ui/EditorImportProblem.js.map +1 -0
- package/lib/structure/ui/StructureDrop.d.ts +39 -0
- package/lib/structure/ui/StructureDrop.d.ts.map +1 -0
- package/lib/structure/ui/StructureDrop.js +19 -0
- package/lib/structure/ui/StructureDrop.js.map +1 -0
- package/lib/structure/ui/StructureDropOverlay.d.ts +16 -0
- package/lib/structure/ui/StructureDropOverlay.d.ts.map +1 -0
- package/lib/structure/ui/StructureDropOverlay.js +29 -0
- package/lib/structure/ui/StructureDropOverlay.js.map +1 -0
- package/lib/structure/ui/StructureEditor.d.ts +3 -80
- package/lib/structure/ui/StructureEditor.d.ts.map +1 -1
- package/lib/structure/ui/StructureEditor.js +21 -33
- package/lib/structure/ui/StructureEditor.js.map +1 -1
- package/lib/structure/ui/importedStructure.d.ts +25 -0
- package/lib/structure/ui/importedStructure.d.ts.map +1 -0
- package/lib/structure/ui/importedStructure.js +74 -0
- package/lib/structure/ui/importedStructure.js.map +1 -0
- package/lib/structure/ui/index.d.ts +2 -0
- package/lib/structure/ui/index.d.ts.map +1 -1
- package/lib/structure/ui/index.js +1 -0
- package/lib/structure/ui/index.js.map +1 -1
- package/lib/structure/ui/structureEditorProps.d.ts +98 -0
- package/lib/structure/ui/structureEditorProps.d.ts.map +1 -0
- package/lib/structure/ui/structureEditorProps.js +2 -0
- package/lib/structure/ui/structureEditorProps.js.map +1 -0
- package/lib/structure/ui/useDebouncedChange.d.ts +16 -0
- package/lib/structure/ui/useDebouncedChange.d.ts.map +1 -0
- package/lib/structure/ui/useDebouncedChange.js +30 -0
- package/lib/structure/ui/useDebouncedChange.js.map +1 -0
- package/lib/structure/ui/useStructureDrop.d.ts +30 -0
- package/lib/structure/ui/useStructureDrop.d.ts.map +1 -0
- package/lib/structure/ui/useStructureDrop.js +49 -0
- package/lib/structure/ui/useStructureDrop.js.map +1 -0
- package/lib/structure/ui/useStructureImport.d.ts +45 -0
- package/lib/structure/ui/useStructureImport.d.ts.map +1 -0
- package/lib/structure/ui/useStructureImport.js +62 -0
- package/lib/structure/ui/useStructureImport.js.map +1 -0
- package/package.json +6 -3
- package/src/download/ui/FigureDownloadPanel.tsx +9 -2
- package/src/ecosystem/core/sites.ts +6 -6
- package/src/ecosystem/core/types.ts +2 -2
- package/src/ecosystem/ui/glyphs.tsx +2 -2
- package/src/i18n/core/messageCatalog.ts +2 -2
- package/src/i18n/vite/localeCatalog.ts +1 -1
- package/src/ir/core/index.ts +6 -2
- package/src/ir/core/irEditorApi.ts +13 -0
- package/src/ir/core/irReducer.ts +2 -2
- package/src/ir/core/irSidePanels.ts +8 -1
- package/src/ir/core/irState.ts +8 -5
- package/src/ir/ui/IrCanvas.tsx +27 -2
- package/src/ir/ui/IrChart.tsx +11 -0
- package/src/ir/ui/IrEditor.tsx +22 -4
- package/src/ir/ui/IrShell.tsx +21 -22
- package/src/ir/ui/IrSidePanel.tsx +36 -10
- package/src/ir/ui/RamanEditor.tsx +22 -4
- package/src/ir/ui/VibrationalEditor.tsx +24 -5
- package/src/ir/ui/index.ts +1 -0
- package/src/ir/ui/irActions.ts +3 -3
- package/src/ir/ui/irChartProps.ts +7 -0
- package/src/ir/ui/irHostPanels.ts +76 -0
- package/src/ir/ui/useIrSide.ts +60 -0
- package/src/ir/ui/useIrZoom.ts +10 -0
- package/src/locales/de.json +9 -1
- package/src/locales/en.json +9 -1
- package/src/locales/es.json +9 -1
- package/src/locales/fr.json +9 -1
- package/src/locales/it.json +9 -1
- package/src/molecule3d/core/animatedPng.ts +79 -0
- package/src/molecule3d/core/file.ts +23 -0
- package/src/molecule3d/core/index.ts +3 -1
- package/src/molecule3d/core/settings.ts +0 -8
- package/src/molecule3d/ui/Molecule3DExport.tsx +43 -5
- package/src/molecule3d/ui/Molecule3DToolbar.tsx +9 -2
- package/src/molecule3d/ui/MoleculeCanvas3D.tsx +24 -38
- package/src/molecule3d/ui/drawScene.ts +2 -1
- package/src/molecule3d/ui/exportMoleculeImage.ts +28 -3
- package/src/molecule3d/ui/moleculeFrames.ts +88 -0
- package/src/molecule3d/ui/moleculeViewer3DProps.ts +14 -5
- package/src/molecule3d/ui/renderMolecule.ts +5 -3
- package/src/molecule3d/ui/sceneDrawer.ts +14 -2
- package/src/molecule3d/ui/useImageExport.ts +22 -5
- package/src/molecule3d/ui/useMoleculeScene.ts +2 -1
- package/src/molecule3d/ui/useMoleculeViewer.ts +46 -0
- package/src/molecule3d/ui/usePolarSurfaceArea.ts +6 -4
- package/src/molecule3d/ui/viewer.ts +34 -27
- package/src/molecule3d/ui/viewerTypes.ts +6 -0
- package/src/molstar/core/captureScene.ts +85 -2
- package/src/molstar/core/index.ts +13 -2
- package/src/molstar/core/trajectory.ts +117 -0
- package/src/panel/ui/PanelRail.tsx +3 -0
- package/src/raman.ts +2 -1
- package/src/router/core/basePath.ts +2 -2
- package/src/router/core/siteAddresses.ts +1 -1
- package/src/seo/core/siteFiles.ts +1 -1
- package/src/server/answerAddresses.ts +3 -3
- package/src/structure/core/index.ts +8 -0
- package/src/structure/core/structureTransfer.ts +37 -0
- package/src/structure/ui/EditorImportButton.tsx +59 -0
- package/src/structure/ui/EditorImportProblem.tsx +63 -0
- package/src/structure/ui/StructureDrop.tsx +66 -0
- package/src/structure/ui/StructureDropOverlay.tsx +50 -0
- package/src/structure/ui/StructureEditor.tsx +49 -134
- package/src/structure/ui/importedStructure.ts +83 -0
- package/src/structure/ui/index.ts +2 -0
- package/src/structure/ui/structureEditorProps.ts +103 -0
- package/src/structure/ui/useDebouncedChange.ts +41 -0
- package/src/structure/ui/useStructureDrop.ts +76 -0
- package/src/structure/ui/useStructureImport.ts +122 -0
|
@@ -17,6 +17,12 @@ export declare const irSidePanels: readonly [{
|
|
|
17
17
|
readonly title: "Acquisition";
|
|
18
18
|
readonly icon: "properties";
|
|
19
19
|
}];
|
|
20
|
-
/** Identity of one of the panels the
|
|
20
|
+
/** Identity of one of the panels the viewer offers of its own. */
|
|
21
21
|
export type IrSidePanelId = (typeof irSidePanels)[number]['id'];
|
|
22
|
+
/**
|
|
23
|
+
* Identity of any panel the side can hold: one of the viewer's own, or one a
|
|
24
|
+
* host added to them. Still a union with the viewer's own ids, so those keep
|
|
25
|
+
* autocompleting where a plain `string` would swallow them.
|
|
26
|
+
*/
|
|
27
|
+
export type IrPanelId = IrSidePanelId | (string & Record<never, never>);
|
|
22
28
|
//# sourceMappingURL=irSidePanels.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irSidePanels.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irSidePanels.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;EAQvB,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"irSidePanels.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irSidePanels.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;EAQvB,CAAC;AAEH,kEAAkE;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC"}
|
package/lib/ir/core/irState.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* kept in step with its own inputs — `useIrEditor` recomputes them instead, and
|
|
13
13
|
* a stale band is then impossible rather than merely unlikely.
|
|
14
14
|
*/
|
|
15
|
-
import type { IrSidePanelId } from './irSidePanels.ts';
|
|
15
|
+
import type { IrPanelId, IrSidePanelId } from './irSidePanels.ts';
|
|
16
16
|
import type { IrDomain, IrMode, IrSpectrum } from './irSpectrum.ts';
|
|
17
17
|
import type { IrTechnique } from './irTechnique.ts';
|
|
18
18
|
import type { PickBandsOptions } from './pickBands.ts';
|
|
@@ -37,8 +37,11 @@ export interface IrView {
|
|
|
37
37
|
domain: IrDomain | null;
|
|
38
38
|
/** Which tool a drag across the chart is running. */
|
|
39
39
|
tool: IrTool;
|
|
40
|
-
/**
|
|
41
|
-
|
|
40
|
+
/**
|
|
41
|
+
* The side panels that are open: the viewer's own and any a host added. An id
|
|
42
|
+
* no panel on offer answers to opens nothing.
|
|
43
|
+
*/
|
|
44
|
+
openPanelIds: IrPanelId[];
|
|
42
45
|
/** Why the last action was refused, `null` as soon as one succeeds. */
|
|
43
46
|
error: string | null;
|
|
44
47
|
}
|
|
@@ -113,10 +116,10 @@ export interface CreateIrStateOptions {
|
|
|
113
116
|
*/
|
|
114
117
|
settings?: Partial<IrSettings>;
|
|
115
118
|
/**
|
|
116
|
-
* The panels open to begin with.
|
|
119
|
+
* The panels open to begin with, the viewer's own or a host's.
|
|
117
120
|
* @default DEFAULT_SIDE_PANELS
|
|
118
121
|
*/
|
|
119
|
-
panelIds?:
|
|
122
|
+
panelIds?: readonly IrPanelId[];
|
|
120
123
|
}
|
|
121
124
|
/**
|
|
122
125
|
* The state a viewer opens with.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irState.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"irState.d.ts","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irState.js","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"irState.js","sourceRoot":"","sources":["../../../src/ir/core/irState.ts"],"names":[],"mappings":"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"}
|
package/lib/ir/ui/IrCanvas.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IrBand } from '../core/irBand.ts';
|
|
2
|
+
import type { IrPlotClick } from '../core/irEditorApi.ts';
|
|
2
3
|
export interface IrCanvasProps {
|
|
3
4
|
/**
|
|
4
5
|
* The band the pointer is resting on, wherever it was hovered — the chart or
|
|
@@ -24,6 +25,12 @@ export interface IrCanvasProps {
|
|
|
24
25
|
* @default undefined
|
|
25
26
|
*/
|
|
26
27
|
chartId?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Told of a click on the plot — a press let go without travelling, never the
|
|
30
|
+
* end of a drag — with the spectrum selected at that moment.
|
|
31
|
+
* @default undefined
|
|
32
|
+
*/
|
|
33
|
+
onPlotClick?: (click: IrPlotClick) => void;
|
|
27
34
|
}
|
|
28
35
|
/**
|
|
29
36
|
* The chart, and the status bar under it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrCanvas.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrCanvas.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrCanvas.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrCanvas.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAO1D,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAqD5C"}
|
package/lib/ir/ui/IrCanvas.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback } from 'react';
|
|
2
|
+
import { useCallback, useMemo } from 'react';
|
|
3
3
|
import { IrChart } from "./IrChart.js";
|
|
4
4
|
import { IrStatusBar } from "./IrStatusBar.js";
|
|
5
5
|
import { useIrActions, useIrEditorState } from "./irStateContext.js";
|
|
@@ -19,7 +19,7 @@ import { useIrActions, useIrEditorState } from "./irStateContext.js";
|
|
|
19
19
|
* @returns The canvas.
|
|
20
20
|
*/
|
|
21
21
|
export function IrCanvas(props) {
|
|
22
|
-
const { highlight = null, onHighlight, attachChart, chartId } = props;
|
|
22
|
+
const { highlight = null, onHighlight, attachChart, chartId, onPlotClick, } = props;
|
|
23
23
|
const { state, visibleSpectra, assigned } = useIrEditorState();
|
|
24
24
|
const actions = useIrActions();
|
|
25
25
|
const { domain, tool, selectedId } = state.view;
|
|
@@ -27,7 +27,12 @@ export function IrCanvas(props) {
|
|
|
27
27
|
const onDomainChange = useCallback((next) => {
|
|
28
28
|
actions.setDomain(next);
|
|
29
29
|
}, [actions]);
|
|
30
|
-
|
|
30
|
+
// Which spectrum was selected is the viewer's to say, not the chart's: the
|
|
31
|
+
// chart only knows where the press landed.
|
|
32
|
+
const onClickAt = useMemo(() => onPlotClick === undefined
|
|
33
|
+
? undefined
|
|
34
|
+
: (wavenumber) => onPlotClick({ wavenumber, spectrumId: selectedId }), [onPlotClick, selectedId]);
|
|
35
|
+
return (_jsxs("div", { style: rootStyle, children: [_jsx("div", { ref: attachChart, id: chartId, style: chartStyle, children: _jsx(IrChart, { spectra: visibleSpectra, technique: technique, mode: mode, assigned: assigned, showAssignments: showAssignments, labelLimit: labelLimit, highlight: highlight, onHighlight: onHighlight, domain: domain, onDomainChange: onDomainChange, drag: tool === 'box' ? 'box' : 'xAxis', emphasisedId: selectedId, onPlotClick: onClickAt }) }), _jsx(IrStatusBar, {})] }));
|
|
31
36
|
}
|
|
32
37
|
const rootStyle = {
|
|
33
38
|
display: 'flex',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrCanvas.js","sourceRoot":"","sources":["../../../src/ir/ui/IrCanvas.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"IrCanvas.js","sourceRoot":"","sources":["../../../src/ir/ui/IrCanvas.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAM7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAmCrE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EACJ,SAAS,GAAG,IAAI,EAChB,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,GACZ,GAAG,KAAK,CAAC;IACV,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IAChD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAExE,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,IAAc,EAAE,EAAE;QACjB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,2EAA2E;IAC3E,2CAA2C;IAC3C,MAAM,SAAS,GAAG,OAAO,CACvB,GAAG,EAAE,CACH,WAAW,KAAK,SAAS;QACvB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,UAAkB,EAAE,EAAE,CACrB,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAC3D,CAAC,WAAW,EAAE,UAAU,CAAC,CAC1B,CAAC;IAEF,OAAO,CACL,eAAK,KAAK,EAAE,SAAS,aACnB,cAAK,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,YACnD,KAAC,OAAO,IACN,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EACtC,YAAY,EAAE,UAAU,EACxB,WAAW,EAAE,SAAS,GACtB,GACE,EACN,KAAC,WAAW,KAAG,IACX,CACP,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,oDAAoD;AACpD,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrChart.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"IrChart.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAiB1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAwKzD"}
|
package/lib/ir/ui/IrChart.js
CHANGED
|
@@ -39,7 +39,7 @@ import { useIrZoom } from "./useIrZoom.js";
|
|
|
39
39
|
* @returns The chart.
|
|
40
40
|
*/
|
|
41
41
|
export function IrChart(props) {
|
|
42
|
-
const { spectra, technique = 'infrared', mode: asked, assigned = NO_BANDS, showAssignments = false, labelLimit, highlight = null, onHighlight, domain = null, onDomainChange, drag = 'xAxis', emphasisedId = null, width, height, children, } = props;
|
|
42
|
+
const { spectra, technique = 'infrared', mode: asked, assigned = NO_BANDS, showAssignments = false, labelLimit, highlight = null, onHighlight, domain = null, onDomainChange, onPlotClick, drag = 'xAxis', emphasisedId = null, width, height, children, } = props;
|
|
43
43
|
const mode = irModeFor(technique, asked);
|
|
44
44
|
const text = useIrText(technique);
|
|
45
45
|
const [containerRef, measured] = useChartSize();
|
|
@@ -52,6 +52,9 @@ export function IrChart(props) {
|
|
|
52
52
|
// laid out at nothing still draws its axes inside a box that holds them.
|
|
53
53
|
const frameWidth = plot.right + MARGIN.right;
|
|
54
54
|
const frameHeight = plot.bottom + MARGIN.bottom;
|
|
55
|
+
const onClick = useMemo(() => onPlotClick === undefined
|
|
56
|
+
? undefined
|
|
57
|
+
: (point) => onPlotClick(point.x), [onPlotClick]);
|
|
55
58
|
// The host's window goes *into* the zoom rather than over it, so a drag is
|
|
56
59
|
// always measured against what is on screen.
|
|
57
60
|
const zoom = useIrZoom({
|
|
@@ -62,6 +65,7 @@ export function IrChart(props) {
|
|
|
62
65
|
plot,
|
|
63
66
|
domain,
|
|
64
67
|
drag,
|
|
68
|
+
onClick,
|
|
65
69
|
});
|
|
66
70
|
// The scales the zoom measured its gestures against — the x one running right
|
|
67
71
|
// to left. Taken from the hook rather than built here, because two scales over
|
package/lib/ir/ui/IrChart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrChart.js","sourceRoot":"","sources":["../../../src/ir/ui/IrChart.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"IrChart.js","sourceRoot":"","sources":["../../../src/ir/ui/IrChart.tsx"],"names":[],"mappings":"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"}
|
package/lib/ir/ui/IrEditor.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
|
-
import type { IrEditorHandle } from '../core/irEditorApi.ts';
|
|
3
|
-
import type {
|
|
2
|
+
import type { IrEditorHandle, IrPlotClick } from '../core/irEditorApi.ts';
|
|
3
|
+
import type { IrPanelId } from '../core/irSidePanels.ts';
|
|
4
4
|
import type { IrMode, IrSpectrum } from '../core/irSpectrum.ts';
|
|
5
|
+
import type { IrHostPanel } from './irHostPanels.ts';
|
|
5
6
|
export interface IrEditorProps {
|
|
6
7
|
/**
|
|
7
8
|
* The spectra to open on. Read when the viewer opens and never again: what is
|
|
@@ -28,10 +29,27 @@ export interface IrEditorProps {
|
|
|
28
29
|
*/
|
|
29
30
|
mode?: IrMode;
|
|
30
31
|
/**
|
|
31
|
-
* The side panels open to begin with
|
|
32
|
+
* The side panels open to begin with: the viewer's own — `'spectra'`,
|
|
33
|
+
* `'bands'`, `'metadata'` — or the id of one of `panels`. An id no panel
|
|
34
|
+
* answers to is ignored.
|
|
32
35
|
* @default DEFAULT_SIDE_PANELS
|
|
33
36
|
*/
|
|
34
|
-
defaultPanelIds?:
|
|
37
|
+
defaultPanelIds?: readonly IrPanelId[];
|
|
38
|
+
/**
|
|
39
|
+
* Panels the host adds to the viewer's own — a structure to predict a
|
|
40
|
+
* spectrum from, say. Their icons come first in the activity bar, in the
|
|
41
|
+
* order given, and each then behaves as a built-in panel does: toggled on its
|
|
42
|
+
* own, stacked in the same column with a share of its height, folded and
|
|
43
|
+
* closed from its header.
|
|
44
|
+
* @default []
|
|
45
|
+
*/
|
|
46
|
+
panels?: readonly IrHostPanel[];
|
|
47
|
+
/**
|
|
48
|
+
* The plot was clicked at this wavenumber (a press that did not travel, i.e.
|
|
49
|
+
* not a zoom drag), with the spectrum selected at that moment.
|
|
50
|
+
* @default undefined
|
|
51
|
+
*/
|
|
52
|
+
onPlotClick?: (click: IrPlotClick) => void;
|
|
35
53
|
/**
|
|
36
54
|
* The handle a host drives the viewer through: take these spectra, frame this
|
|
37
55
|
* wavenumber, select that one.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrEditor.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,eAAe,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAE5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/IrEditor.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AA0D5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAC,UAAU,KAAK,KAAK,GAAI,CAAC;AAC/D,CAAC"}
|
package/lib/ir/ui/IrShell.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
|
-
import type { IrEditorHandle } from '../core/irEditorApi.ts';
|
|
2
|
+
import type { IrEditorHandle, IrPlotClick } from '../core/irEditorApi.ts';
|
|
3
|
+
import type { IrHostPanel } from './irHostPanels.ts';
|
|
3
4
|
export interface IrShellProps {
|
|
4
5
|
/**
|
|
5
6
|
* The handle to fill in, once there is a state for it to act on.
|
|
6
7
|
* @default undefined
|
|
7
8
|
*/
|
|
8
9
|
handle?: Ref<IrEditorHandle>;
|
|
10
|
+
/** The panels the host adds to the viewer's own, ahead of them. */
|
|
11
|
+
panels: readonly IrHostPanel[];
|
|
12
|
+
/**
|
|
13
|
+
* Told of a click on the plot, with the spectrum selected at that moment.
|
|
14
|
+
* @default undefined
|
|
15
|
+
*/
|
|
16
|
+
onPlotClick?: (click: IrPlotClick) => void;
|
|
9
17
|
}
|
|
10
18
|
/**
|
|
11
19
|
* The viewer's screen: a header, the rails, and the split between the chart and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrShell.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AASjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrShell.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AASjC,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAY1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7B,mEAAmE;IACnE,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAwI1C"}
|
package/lib/ir/ui/IrShell.js
CHANGED
|
@@ -5,8 +5,6 @@ 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
7
|
import { otherIrMode } from "../core/irMode.js";
|
|
8
|
-
import { irSidePanels } from "../core/irSidePanels.js";
|
|
9
|
-
import { DEFAULT_SIDE_PANEL } from "../core/irState.js";
|
|
10
8
|
import { irCommandOffered } from "../core/irTechniqueCommands.js";
|
|
11
9
|
import { IrAboutDialog } from "./IrAboutDialog.js";
|
|
12
10
|
import { IrCanvas } from "./IrCanvas.js";
|
|
@@ -18,6 +16,7 @@ import { IrToolbar } from "./IrToolbar.js";
|
|
|
18
16
|
import { useIrActions, useIrEditorState } from "./irStateContext.js";
|
|
19
17
|
import { useIrHandle } from "./useIrHandle.js";
|
|
20
18
|
import { useIrShortcuts } from "./useIrShortcuts.js";
|
|
19
|
+
import { useIrSide } from "./useIrSide.js";
|
|
21
20
|
import { useValueAxisZoom } from "./useValueAxisZoom.js";
|
|
22
21
|
/**
|
|
23
22
|
* The viewer's screen: a header, the rails, and the split between the chart and
|
|
@@ -34,11 +33,12 @@ import { useValueAxisZoom } from "./useValueAxisZoom.js";
|
|
|
34
33
|
* @returns The screen.
|
|
35
34
|
*/
|
|
36
35
|
export function IrShell(props) {
|
|
37
|
-
const { handle } = props;
|
|
36
|
+
const { handle, panels, onPlotClick } = props;
|
|
38
37
|
const { state, visibleSpectra, selectedSpectrum } = useIrEditorState();
|
|
39
38
|
const actions = useIrActions();
|
|
40
39
|
const { toggle: toggleFullScreen } = useFullscreen();
|
|
41
40
|
const { openPanelIds, tool } = state.view;
|
|
41
|
+
const side = useIrSide(panels);
|
|
42
42
|
const { mode, pickBands, showAssignments, technique } = state.settings;
|
|
43
43
|
const [isAboutOpen, setIsAboutOpen] = useState(false);
|
|
44
44
|
const [isDocumentationOpen, setIsDocumentationOpen] = useState(false);
|
|
@@ -97,22 +97,7 @@ export function IrShell(props) {
|
|
|
97
97
|
const [root, setRoot] = useState(null);
|
|
98
98
|
useIrShortcuts(root, commands);
|
|
99
99
|
useIrHandle(handle);
|
|
100
|
-
|
|
101
|
-
* Open or close the side, as the splitter is dragged shut and back open.
|
|
102
|
-
* @param open - Whether the side is now open.
|
|
103
|
-
*/
|
|
104
|
-
function setSideOpen(open) {
|
|
105
|
-
if (!open) {
|
|
106
|
-
for (const panelId of openPanelIds)
|
|
107
|
-
actions.togglePanel(panelId);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
// Dragging the splitter back open must land on something, or it opens on an
|
|
111
|
-
// empty column and reads as broken.
|
|
112
|
-
if (openPanelIds.length === 0)
|
|
113
|
-
actions.togglePanel(DEFAULT_SIDE_PANEL);
|
|
114
|
-
}
|
|
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 })] }));
|
|
100
|
+
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: side.isOpen, onOpenChange: side.setOpen, children: [_jsx(IrCanvas, { highlight: highlight, onHighlight: setHighlight, chartId: chartId, onPlotClick: onPlotClick }), _jsx(IrSidePanel, { panels: panels, highlight: highlight, onHighlight: setHighlight })] }), _jsx("div", { style: railStyle, children: _jsx(PanelRail, { panels: side.panels, openIds: openPanelIds, onToggle: actions.togglePanel }) })] })] }), _jsx(IrAboutDialog, { isOpen: isAboutOpen, onClose: () => setIsAboutOpen(false), technique: technique }), _jsx(IrDocumentationDialog, { isOpen: isDocumentationOpen, onClose: () => setIsDocumentationOpen(false), technique: technique })] }));
|
|
116
101
|
}
|
|
117
102
|
/**
|
|
118
103
|
* What a picture of the chart is called.
|
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,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAyC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA8B,CAAC;AAIzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrShell.js","sourceRoot":"","sources":["../../../src/ir/ui/IrShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { IrBand } from '../core/irBand.ts';
|
|
2
|
+
import type { IrHostPanel } from './irHostPanels.ts';
|
|
2
3
|
export interface IrSidePanelProps {
|
|
4
|
+
/**
|
|
5
|
+
* The panels the host adds to the viewer's own, stacked above them in the
|
|
6
|
+
* order given.
|
|
7
|
+
* @default []
|
|
8
|
+
*/
|
|
9
|
+
panels?: readonly IrHostPanel[];
|
|
3
10
|
/**
|
|
4
11
|
* The band the pointer is resting on.
|
|
5
12
|
* @default null
|
|
@@ -19,6 +26,10 @@ export interface IrSidePanelProps {
|
|
|
19
26
|
* bands are is one question asked of two panels. The header carries the close
|
|
20
27
|
* button and nothing else — a panel's own actions are a toolbar inside its body,
|
|
21
28
|
* so they travel with it.
|
|
29
|
+
*
|
|
30
|
+
* A host's panel is stacked like the viewer's own, and its body is laid out in
|
|
31
|
+
* the same column a built-in panel fills, so it takes its share of the height
|
|
32
|
+
* and scrolls within it rather than pushing the stack.
|
|
22
33
|
* @param props - Component props.
|
|
23
34
|
* @returns The panel stack.
|
|
24
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrSidePanel.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrSidePanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IrSidePanel.d.ts","sourceRoot":"","sources":["../../../src/ir/ui/IrSidePanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC7C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BA8BlD"}
|
package/lib/ir/ui/IrSidePanel.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { panelStyle } from "../../panel/core/panelStyles.js";
|
|
2
4
|
import { SidePanelStack } from "../../panel/ui/SidePanelStack.js";
|
|
3
|
-
import { irSidePanels } from "../core/irSidePanels.js";
|
|
4
5
|
import { BandsPanel } from "./BandsPanel.js";
|
|
5
6
|
import { MetadataPanel } from "./MetadataPanel.js";
|
|
6
7
|
import { SpectraPanel } from "./SpectraPanel.js";
|
|
8
|
+
import { irStackPanels, isIrHostPanel } from "./irHostPanels.js";
|
|
7
9
|
import { useIrActions, useIrEditorState } from "./irStateContext.js";
|
|
8
10
|
/**
|
|
9
11
|
* The panels that are open, stacked down the right.
|
|
@@ -13,15 +15,20 @@ import { useIrActions, useIrEditorState } from "./irStateContext.js";
|
|
|
13
15
|
* bands are is one question asked of two panels. The header carries the close
|
|
14
16
|
* button and nothing else — a panel's own actions are a toolbar inside its body,
|
|
15
17
|
* so they travel with it.
|
|
18
|
+
*
|
|
19
|
+
* A host's panel is stacked like the viewer's own, and its body is laid out in
|
|
20
|
+
* the same column a built-in panel fills, so it takes its share of the height
|
|
21
|
+
* and scrolls within it rather than pushing the stack.
|
|
16
22
|
* @param props - Component props.
|
|
17
23
|
* @returns The panel stack.
|
|
18
24
|
*/
|
|
19
25
|
export function IrSidePanel(props) {
|
|
20
|
-
const { highlight = null, onHighlight } = props;
|
|
26
|
+
const { panels: hostPanels = NO_PANELS, highlight = null, onHighlight, } = props;
|
|
21
27
|
const { state } = useIrEditorState();
|
|
22
28
|
const actions = useIrActions();
|
|
23
29
|
const { openPanelIds } = state.view;
|
|
24
|
-
|
|
30
|
+
const panels = useMemo(() => irStackPanels(hostPanels), [hostPanels]);
|
|
31
|
+
return (_jsx(SidePanelStack, { panels: panels, openPanelIds: openPanelIds, onClose: actions.togglePanel, children: (panel) => isIrHostPanel(panel) ? (_jsx("div", { style: panelStyle, children: panel.content })) : (_jsx(PanelBody, { panelId: panel.id, highlight: highlight, onHighlight: onHighlight })) }));
|
|
25
32
|
}
|
|
26
33
|
/**
|
|
27
34
|
* Which panel a panel id is.
|
|
@@ -36,4 +43,6 @@ function PanelBody(props) {
|
|
|
36
43
|
return _jsx(MetadataPanel, {});
|
|
37
44
|
return _jsx(BandsPanel, { highlight: highlight, onHighlight: onHighlight });
|
|
38
45
|
}
|
|
46
|
+
/** What a stack the host adds nothing to holds, kept stable for the memo. */
|
|
47
|
+
const NO_PANELS = [];
|
|
39
48
|
//# sourceMappingURL=IrSidePanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrSidePanel.js","sourceRoot":"","sources":["../../../src/ir/ui/IrSidePanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"IrSidePanel.js","sourceRoot":"","sources":["../../../src/ir/ui/IrSidePanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAmC,CAAC;AAInE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAqBrE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EACJ,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,SAAS,GAAG,IAAI,EAChB,WAAW,GACZ,GAAG,KAAK,CAAC;IACV,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtE,OAAO,CACL,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,CAAC,WAAW,YAE3B,CAAC,KAAK,EAAE,EAAE,CACT,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACrB,cAAK,KAAK,EAAE,UAAU,YAAG,KAAK,CAAC,OAAO,GAAO,CAC9C,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IACR,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,GACxB,CACH,GAEY,CAClB,CAAC;AACJ,CAAC;AAWD;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAqB;IACtC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAElD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAC,YAAY,KAAG,CAAC;IACnD,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,KAAC,aAAa,KAAG,CAAC;IACrD,OAAO,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAI,CAAC;AACxE,CAAC;AAED,6EAA6E;AAC7E,MAAM,SAAS,GAA2B,EAAE,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
|
-
import type { IrEditorHandle } from '../core/irEditorApi.ts';
|
|
3
|
-
import type {
|
|
2
|
+
import type { IrEditorHandle, IrPlotClick } from '../core/irEditorApi.ts';
|
|
3
|
+
import type { IrPanelId } from '../core/irSidePanels.ts';
|
|
4
4
|
import type { IrSpectrum } from '../core/irSpectrum.ts';
|
|
5
|
+
import type { IrHostPanel } from './irHostPanels.ts';
|
|
5
6
|
/** The handle a host drives a Raman viewer through: the infrared one's. */
|
|
6
7
|
export type RamanEditorHandle = IrEditorHandle;
|
|
7
8
|
export interface RamanEditorProps {
|
|
@@ -20,10 +21,27 @@ export interface RamanEditorProps {
|
|
|
20
21
|
*/
|
|
21
22
|
onChange?: (spectra: IrSpectrum[]) => void;
|
|
22
23
|
/**
|
|
23
|
-
* The side panels open to begin with
|
|
24
|
+
* The side panels open to begin with: the viewer's own — `'spectra'`,
|
|
25
|
+
* `'bands'`, `'metadata'` — or the id of one of `panels`. An id no panel
|
|
26
|
+
* answers to is ignored.
|
|
24
27
|
* @default DEFAULT_SIDE_PANELS
|
|
25
28
|
*/
|
|
26
|
-
defaultPanelIds?:
|
|
29
|
+
defaultPanelIds?: readonly IrPanelId[];
|
|
30
|
+
/**
|
|
31
|
+
* Panels the host adds to the viewer's own. Their icons come first in the
|
|
32
|
+
* activity bar, in the order given, and each then behaves as a built-in panel
|
|
33
|
+
* does: toggled on its own, stacked in the same column with a share of its
|
|
34
|
+
* height, folded and closed from its header.
|
|
35
|
+
* @default []
|
|
36
|
+
*/
|
|
37
|
+
panels?: readonly IrHostPanel[];
|
|
38
|
+
/**
|
|
39
|
+
* The plot was clicked at this Raman shift (a press that did not travel, i.e.
|
|
40
|
+
* not a zoom drag), with the spectrum selected at that moment. The shift is
|
|
41
|
+
* reported as `wavenumber`, the name both techniques share.
|
|
42
|
+
* @default undefined
|
|
43
|
+
*/
|
|
44
|
+
onPlotClick?: (click: IrPlotClick) => void;
|
|
27
45
|
/**
|
|
28
46
|
* The handle a host drives the viewer through: take these spectra, frame this
|
|
29
47
|
* Raman shift, select that one.
|
|
@@ -1 +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;
|
|
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,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,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;;;;;OAKG;IACH,eAAe,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAElD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RamanEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/RamanEditor.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"RamanEditor.js","sourceRoot":"","sources":["../../../src/ir/ui/RamanEditor.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAmD5D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAC,OAAO,KAAK,KAAK,GAAI,CAAC;AAC5D,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Ref } from 'react';
|
|
2
|
-
import type { IrEditorHandle } from '../core/irEditorApi.ts';
|
|
3
|
-
import type {
|
|
2
|
+
import type { IrEditorHandle, IrPlotClick } from '../core/irEditorApi.ts';
|
|
3
|
+
import type { IrPanelId } from '../core/irSidePanels.ts';
|
|
4
4
|
import type { IrMode, IrSpectrum } from '../core/irSpectrum.ts';
|
|
5
5
|
import type { IrTechnique } from '../core/irTechnique.ts';
|
|
6
|
+
import type { IrHostPanel } from './irHostPanels.ts';
|
|
6
7
|
export interface VibrationalEditorProps {
|
|
7
8
|
/**
|
|
8
9
|
* What the spectra were measured with. Read when the viewer opens and fixed
|
|
@@ -27,10 +28,23 @@ export interface VibrationalEditorProps {
|
|
|
27
28
|
*/
|
|
28
29
|
mode?: IrMode;
|
|
29
30
|
/**
|
|
30
|
-
* The side panels open to begin with.
|
|
31
|
+
* The side panels open to begin with, the viewer's own or the host's. An id
|
|
32
|
+
* no panel answers to is ignored.
|
|
31
33
|
* @default DEFAULT_SIDE_PANELS
|
|
32
34
|
*/
|
|
33
|
-
defaultPanelIds?:
|
|
35
|
+
defaultPanelIds?: readonly IrPanelId[];
|
|
36
|
+
/**
|
|
37
|
+
* Panels the host adds to the viewer's own: their icons come first in the
|
|
38
|
+
* activity bar, in the order given, and each behaves as a built-in panel does.
|
|
39
|
+
* @default []
|
|
40
|
+
*/
|
|
41
|
+
panels?: readonly IrHostPanel[];
|
|
42
|
+
/**
|
|
43
|
+
* The plot was clicked at this wavenumber (a press that did not travel, i.e.
|
|
44
|
+
* not a zoom drag), with the spectrum selected at that moment.
|
|
45
|
+
* @default undefined
|
|
46
|
+
*/
|
|
47
|
+
onPlotClick?: (click: IrPlotClick) => void;
|
|
34
48
|
/**
|
|
35
49
|
* The handle a host drives the viewer through.
|
|
36
50
|
* @default undefined
|
|
@@ -1 +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;
|
|
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,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,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;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,+BA+B9D"}
|
|
@@ -11,14 +11,14 @@ import { useIrEditor } from "./useIrEditor.js";
|
|
|
11
11
|
* @returns The viewer.
|
|
12
12
|
*/
|
|
13
13
|
export function VibrationalEditor(props) {
|
|
14
|
-
const { technique, data = NO_SPECTRA, onChange, mode, defaultPanelIds, ref, } = props;
|
|
14
|
+
const { technique, data = NO_SPECTRA, onChange, mode, defaultPanelIds, panels = NO_PANELS, onPlotClick, ref, } = props;
|
|
15
15
|
const editor = useIrEditor({
|
|
16
16
|
spectra: data,
|
|
17
17
|
settings: { technique, ...(mode === undefined ? {} : { mode }) },
|
|
18
18
|
panelIds: defaultPanelIds,
|
|
19
19
|
onChange,
|
|
20
20
|
});
|
|
21
|
-
return (_jsx(IrStateProvider, { editor: editor, children: _jsx(RootLayout, { style: rootLayoutStyle, children: _jsx(IrShell, { handle: ref }) }) }));
|
|
21
|
+
return (_jsx(IrStateProvider, { editor: editor, children: _jsx(RootLayout, { style: rootLayoutStyle, children: _jsx(IrShell, { handle: ref, panels: panels, onPlotClick: onPlotClick }) }) }));
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* The viewer fills what it is given, and its own children scroll rather than
|
|
@@ -28,4 +28,6 @@ export function VibrationalEditor(props) {
|
|
|
28
28
|
const rootLayoutStyle = { minHeight: 0 };
|
|
29
29
|
/** What a viewer opens on when it is handed nothing, kept stable for the memo. */
|
|
30
30
|
const NO_SPECTRA = [];
|
|
31
|
+
/** What a viewer the host adds no panel to offers, kept stable for the memo. */
|
|
32
|
+
const NO_PANELS = [];
|
|
31
33
|
//# sourceMappingURL=VibrationalEditor.js.map
|
|
@@ -1 +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;
|
|
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;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAkD/C;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EACJ,SAAS,EACT,IAAI,GAAG,UAAU,EACjB,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,MAAM,GAAG,SAAS,EAClB,WAAW,EACX,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,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAI,GACvD,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;AAEpC,gFAAgF;AAChF,MAAM,SAAS,GAA2B,EAAE,CAAC"}
|
package/lib/ir/ui/index.d.ts
CHANGED
|
@@ -46,6 +46,7 @@ export { createIrActions } from './irActions.ts';
|
|
|
46
46
|
export type { IrChartProps } from './irChartProps.ts';
|
|
47
47
|
export type { IrCommandContextValue } from './irCommandContext.tsx';
|
|
48
48
|
export { useIrCommand, useIrCommandProps } from './irCommandContext.tsx';
|
|
49
|
+
export type { IrHostPanel } from './irHostPanels.ts';
|
|
49
50
|
export { useIrActions, useIrEditorState } from './irStateContext.ts';
|
|
50
51
|
export type { IrEditorApi, UseIrEditorOptions } from './useIrEditor.ts';
|
|
51
52
|
export { useIrEditor } from './useIrEditor.ts';
|