From 1a22513608d8375e45717e7a63d86f53a8e3c8bc Mon Sep 17 00:00:00 2001
From: tpoisseau <22891227+tpoisseau@users.noreply.github.com>
Date: Tue, 17 Mar 2026 11:29:44 +0100
Subject: [PATCH 1/3] feat: implement `MoleculesPreferences`
* add `general.molecules.labelStyle` initial values to workspaces
* add `general.molecules.labelStyle` form field
* bind `labelStyle` to renderer
---
.../tanstack_general_settings/tabs/general_tab.tsx | 9 ++++++++-
.../validation/general_tab_validation.ts | 4 ++++
.../panels/MoleculesPanel/MoleculeStructure.tsx | 10 ++++++++--
src/component/workspaces/exercise.ts | 8 ++++++++
src/component/workspaces/prediction.ts | 8 ++++++++
src/component/workspaces/simulation.ts | 8 ++++++++
src/component/workspaces/workspaceDefaultProperties.ts | 8 ++++++++
7 files changed, 52 insertions(+), 3 deletions(-)
diff --git a/src/component/modal/setting/tanstack_general_settings/tabs/general_tab.tsx b/src/component/modal/setting/tanstack_general_settings/tabs/general_tab.tsx
index 21dbb4ae11..74ae18ac3e 100644
--- a/src/component/modal/setting/tanstack_general_settings/tabs/general_tab.tsx
+++ b/src/component/modal/setting/tanstack_general_settings/tabs/general_tab.tsx
@@ -1,5 +1,5 @@
import { Tag } from '@blueprintjs/core';
-import { withForm } from 'react-science/ui';
+import { FieldGroupSVGTextStyleFields, withForm } from 'react-science/ui';
import { LOGGER_LEVELS } from '../../../../context/LoggerContext.js';
import type { SelectDefaultItem } from '../../../../elements/Select2.js';
@@ -87,6 +87,13 @@ export const GeneralTab = withForm({
)}
+
+
+
>
);
},
diff --git a/src/component/modal/setting/tanstack_general_settings/validation/general_tab_validation.ts b/src/component/modal/setting/tanstack_general_settings/validation/general_tab_validation.ts
index 16111fa005..cceff1682a 100644
--- a/src/component/modal/setting/tanstack_general_settings/validation/general_tab_validation.ts
+++ b/src/component/modal/setting/tanstack_general_settings/validation/general_tab_validation.ts
@@ -1,3 +1,4 @@
+import { svgTextStyleFieldsSchema } from 'react-science/ui';
import { z } from 'zod';
import type { LoggerType } from '../../../../context/LoggerContext.js';
@@ -30,6 +31,9 @@ export const generalValidation = z.object({
]),
popupLoggingLevel: z.enum(loggingLevel).optional(),
loggingLevel: z.enum(loggingLevel).optional(),
+ molecules: z.object({
+ labelStyle: svgTextStyleFieldsSchema,
+ }),
});
export const displayGeneralValidation = z
diff --git a/src/component/panels/MoleculesPanel/MoleculeStructure.tsx b/src/component/panels/MoleculesPanel/MoleculeStructure.tsx
index 80ceb7c56e..7f1fd77623 100644
--- a/src/component/panels/MoleculesPanel/MoleculeStructure.tsx
+++ b/src/component/panels/MoleculesPanel/MoleculeStructure.tsx
@@ -9,6 +9,7 @@ import OCLnmr from 'react-ocl-nmr';
import type { StateMoleculeExtended } from '../../../data/molecules/Molecule.js';
import { useDispatch } from '../../context/DispatchContext.js';
+import { usePreferences } from '../../context/PreferencesContext.tsx';
import { useTopicMolecule } from '../../context/TopicMoleculeContext.tsx';
import { useHighlightColor } from '../../hooks/useHighlightColor.js';
@@ -65,6 +66,7 @@ export function MoleculeStructure(props: MoleculeStructureProps) {
} = useAtomAssignment();
const highlightColor = useHighlightColor();
const dispatch = useDispatch();
+ const { current } = usePreferences();
const { onAtomHover, getAssignmentLabelByHover, getLastHoverAtom } =
useExtractAtomAssignmentLabel();
//TODO Temporary workaround to prevent other focused elements from being triggered by the space key
@@ -73,12 +75,16 @@ export function MoleculeStructure(props: MoleculeStructureProps) {
const atomHighlightColor =
currentDiaIDsToHighlight?.length > 0 ? '#ff000080' : highlightColor;
+ const labelStyle = current.general.molecules.labelStyle;
const baseProps: MolfileSvgRendererProps = {
height,
width,
label: (showMoleculeLabel ?? moleculeView.showLabel) ? molecule.label : '',
- labelFontSize: 15,
- labelColor: 'rgba(138, 59, 59, 1)',
+ labelFontSize: labelStyle.fontSize ?? 15,
+ labelColor: labelStyle.fill ?? 'rgba(138, 59, 59, 1)',
+ // @ts-expect-error not in react-ocl yet
+ labelFontStyle: labelStyle.fontStyle ?? 'normal',
+ labelFontWeight: labelStyle.fontWeight ?? 'normal',
molfile: molecule.molfile,
atomHighlightColor,
atomHighlightOpacity: 1,
diff --git a/src/component/workspaces/exercise.ts b/src/component/workspaces/exercise.ts
index 87183ec0bb..fe79274b53 100644
--- a/src/component/workspaces/exercise.ts
+++ b/src/component/workspaces/exercise.ts
@@ -43,6 +43,14 @@ export const exercise: InnerWorkspace = {
popupLoggingLevel: 'error',
invert: true,
invertScroll: false,
+ molecules: {
+ labelStyle: {
+ fontSize: 15,
+ fontWeight: 'normal',
+ fontStyle: 'normal',
+ fill: '#8A3B3B',
+ },
+ },
},
nuclei: [],
panels: {
diff --git a/src/component/workspaces/prediction.ts b/src/component/workspaces/prediction.ts
index d2931c9393..e8e95285c9 100644
--- a/src/component/workspaces/prediction.ts
+++ b/src/component/workspaces/prediction.ts
@@ -11,6 +11,14 @@ export const prediction: InnerWorkspace = {
popupLoggingLevel: 'error',
invertScroll: false,
invert: true,
+ molecules: {
+ labelStyle: {
+ fontSize: 15,
+ fontWeight: 'normal',
+ fontStyle: 'normal',
+ fill: '#8A3B3B',
+ },
+ },
},
display: {
general: {
diff --git a/src/component/workspaces/simulation.ts b/src/component/workspaces/simulation.ts
index fb40026349..fb005d8dcc 100644
--- a/src/component/workspaces/simulation.ts
+++ b/src/component/workspaces/simulation.ts
@@ -11,6 +11,14 @@ export const simulation: InnerWorkspace = {
popupLoggingLevel: 'error',
invert: true,
invertScroll: false,
+ molecules: {
+ labelStyle: {
+ fontSize: 15,
+ fontWeight: 'normal',
+ fontStyle: 'normal',
+ fill: '#8A3B3B',
+ },
+ },
},
display: {
general: {
diff --git a/src/component/workspaces/workspaceDefaultProperties.ts b/src/component/workspaces/workspaceDefaultProperties.ts
index 49ae644f40..365b9bd6dc 100644
--- a/src/component/workspaces/workspaceDefaultProperties.ts
+++ b/src/component/workspaces/workspaceDefaultProperties.ts
@@ -130,6 +130,14 @@ export const workspaceDefaultProperties: RequiredWorkspacePreferences = {
popupLoggingLevel: 'error',
invert: true,
invertScroll: false,
+ molecules: {
+ labelStyle: {
+ fontSize: 15,
+ fontWeight: 'normal',
+ fontStyle: 'normal',
+ fill: '#8A3B3B',
+ },
+ },
} satisfies Required,
nuclei: [
From d3ba7039a0f739a66d3ed5e9f5aec0f26ba90202 Mon Sep 17 00:00:00 2001
From: tpoisseau <22891227+tpoisseau@users.noreply.github.com>
Date: Fri, 27 Mar 2026 08:57:25 +0100
Subject: [PATCH 2/3] chore: lint
---
src/component/panels/MoleculesPanel/MoleculeStructure.tsx | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/component/panels/MoleculesPanel/MoleculeStructure.tsx b/src/component/panels/MoleculesPanel/MoleculeStructure.tsx
index 7f1fd77623..4a525b4bdc 100644
--- a/src/component/panels/MoleculesPanel/MoleculeStructure.tsx
+++ b/src/component/panels/MoleculesPanel/MoleculeStructure.tsx
@@ -82,7 +82,6 @@ export function MoleculeStructure(props: MoleculeStructureProps) {
label: (showMoleculeLabel ?? moleculeView.showLabel) ? molecule.label : '',
labelFontSize: labelStyle.fontSize ?? 15,
labelColor: labelStyle.fill ?? 'rgba(138, 59, 59, 1)',
- // @ts-expect-error not in react-ocl yet
labelFontStyle: labelStyle.fontStyle ?? 'normal',
labelFontWeight: labelStyle.fontWeight ?? 'normal',
molfile: molecule.molfile,
From 707d17a49c90fdeddffa6b3f31d036d09a6d6c41 Mon Sep 17 00:00:00 2001
From: tpoisseau <22891227+tpoisseau@users.noreply.github.com>
Date: Fri, 27 Mar 2026 09:17:14 +0100
Subject: [PATCH 3/3] fix: update core and add default molecules settings
---
package-lock.json | 100 ++++++++----------------
package.json | 6 +-
src/demo/views/BenchtopNMRWorkspace.tsx | 8 ++
src/demo/views/CustomWorkspace.tsx | 8 ++
src/demo/views/SnapshotView.tsx | 8 ++
5 files changed, 61 insertions(+), 69 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index fdaaff185f..92c890cef6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,8 +17,8 @@
"@tanstack/react-form": "^1.28.5",
"@tanstack/react-table": "^8.21.3",
"@zakodium/nmr-types": "^0.5.4",
- "@zakodium/nmrium-core": "^0.7.4",
- "@zakodium/nmrium-core-plugins": "^0.7.6",
+ "@zakodium/nmrium-core": "^0.7.6",
+ "@zakodium/nmrium-core-plugins": "^0.7.8",
"@zakodium/pdnd-esm": "^1.0.2",
"@zip.js/zip.js": "^2.8.23",
"cheminfo-font": "^1.23.0",
@@ -56,7 +56,7 @@
"react-icons": "^5.6.0",
"react-inspector": "^9.0.0",
"react-mf": "^3.1.1",
- "react-ocl": "^8.6.0",
+ "react-ocl": "^8.7.0",
"react-ocl-nmr": "^4.1.1",
"react-plot": "^3.1.2",
"react-rnd": "^10.5.3",
@@ -180,7 +180,6 @@
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/code-frame": "^7.29.0",
"@babel/generator": "^7.29.0",
@@ -463,7 +462,6 @@
"resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-6.10.0.tgz",
"integrity": "sha512-k6B8aeIwuH0ns2NAz4iWWcfv5/0v5Av9ePQXmNbs2VOdPSRn3X0l1mhyNBAjuuXHJV3OEENGE1HSbFi6f1NNJw==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@blueprintjs/colors": "^5.1.15",
"@blueprintjs/icons": "^6.7.0",
@@ -496,7 +494,6 @@
"resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-6.7.0.tgz",
"integrity": "sha512-wT8LjdXz5ogWYtWGsMpmLHbgg5Ml7rGcTg4QzHRL4NROaS2LEuNCNRQxmRNBdRdfpKcnGGwXNYqUNZYurB1r4Q==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"change-case": "^4.1.2",
"classnames": "^2.3.1",
@@ -518,7 +515,6 @@
"resolved": "https://registry.npmjs.org/@blueprintjs/select/-/select-6.1.4.tgz",
"integrity": "sha512-j0eAwfApM3cUjuLQALgkN7QKNKGbNlPlL4LhngENYvs9bZMuHdtARFBT9FZV3UCqiIpAQmIccdvYJ0VtwV8Irg==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@blueprintjs/colors": "^5.1.15",
"@blueprintjs/core": "^6.10.0",
@@ -573,7 +569,6 @@
"integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@keyv/serialize": "^1.1.1"
}
@@ -732,7 +727,6 @@
"integrity": "sha512-Tdfx4eH2uS+gv9V9NCr3Rz+c7RSS6ntXp3Blliud18ibRUlRxO9dTaOjG4iv4x0nAmMeedP1ORkEpeXSkh2QiQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=20"
}
@@ -814,8 +808,7 @@
"resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.1.0.tgz",
"integrity": "sha512-bfuvlTeGoK5QgXzzjn+PvqXU5J6mwraIdESNDSvPyplr/EbGFSuvgW3TOuoVNqW4WdDI7eM4tmoP5Dn1ZVgLag==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@cspell/dict-dart": {
"version": "2.3.2",
@@ -955,16 +948,14 @@
"resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.14.tgz",
"integrity": "sha512-2bf7n+kS92g+cMKV0wr9o/Oq9n8JzU7CcrB96gIh2GHgnF+0xDOqO2W/1KeFAqOfqosoOVE48t+4dnEMkkoJ2Q==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@cspell/dict-html-symbol-entities": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.5.tgz",
"integrity": "sha512-429alTD4cE0FIwpMucvSN35Ld87HCyuM8mF731KU5Rm4Je2SG6hmVx7nkBsLyrmH3sQukTcr1GaiZsiEg8svPA==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@cspell/dict-java": {
"version": "5.0.12",
@@ -1162,8 +1153,7 @@
"resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.2.3.tgz",
"integrity": "sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@cspell/dict-vue": {
"version": "3.0.5",
@@ -1273,7 +1263,6 @@
}
],
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=20.19.0"
},
@@ -1314,7 +1303,6 @@
}
],
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=20.19.0"
}
@@ -1487,7 +1475,6 @@
"resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz",
"integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/runtime": "^7.18.3",
"@emotion/babel-plugin": "^11.13.5",
@@ -3075,7 +3062,6 @@
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
- "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
@@ -3958,7 +3944,6 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz",
"integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.2.2"
@@ -4029,7 +4014,6 @@
"integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.56.1",
"@typescript-eslint/types": "8.56.1",
@@ -4491,9 +4475,9 @@
}
},
"node_modules/@zakodium/nmrium-core": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/@zakodium/nmrium-core/-/nmrium-core-0.7.4.tgz",
- "integrity": "sha512-dUWUU+I4Os6he7CdN5lKmw35Lk8KMqkioEn2HPxuUivnnlLLpoC/DNQufPE3AxJ1sXZfnwVQASCXpCgotTKXfA==",
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/@zakodium/nmrium-core/-/nmrium-core-0.7.6.tgz",
+ "integrity": "sha512-mtuU6S+Pa3bZQXWO+0QuhwM1kcI0cslIuAV9xBV2ZAzXOO/HDO8zCsgYhS2Q6dx0iEqOhz2H8KsEi8OL9TsgKA==",
"license": "CC-BY-NC-SA-4.0",
"dependencies": {
"cheminfo-types": "^1.10.0",
@@ -4506,26 +4490,26 @@
}
},
"node_modules/@zakodium/nmrium-core-plugins": {
- "version": "0.7.6",
- "resolved": "https://registry.npmjs.org/@zakodium/nmrium-core-plugins/-/nmrium-core-plugins-0.7.6.tgz",
- "integrity": "sha512-BDp17Fbc+EHdhreFUKOms9y7pQawUkYLte/m9PH4Ib6KoQptfBurdYL6IuwroZeLkLMxrD/ik3wT+3h2/9+OvA==",
+ "version": "0.7.8",
+ "resolved": "https://registry.npmjs.org/@zakodium/nmrium-core-plugins/-/nmrium-core-plugins-0.7.8.tgz",
+ "integrity": "sha512-sMNTQIWbSOpmnwr4DzYT5mZhKWkbjOGTYhOkYtlBX3rN49QDGkNlpZfT39kSSbrO64vOQsIbzC+sMMCpCCItng==",
"license": "CC-BY-NC-SA-4.0",
"dependencies": {
"@date-fns/utc": "^2.1.1",
- "@zakodium/nmrium-core": "^0.7.4",
+ "@zakodium/nmrium-core": "^0.7.6",
"cheminfo-types": "^1.10.0",
"convert-to-jcamp": "^6.0.0",
"date-fns": "^4.1.0",
"file-collection": "^6.6.1",
"gyromagnetic-ratio": "^2.0.0",
"is-any-array": "^2.0.1",
- "jcampconverter": "^12.2.2",
+ "jcampconverter": "^12.2.3",
"linear-sum-assignment": "^1.0.9",
"lodash.merge": "^4.6.2",
"ml-spectra-processing": "^14.22.0",
- "nmr-processing": "^22.7.1",
- "openchemlib": "^9.20.0",
- "openchemlib-utils": "^8.12.1",
+ "nmr-processing": "^22.7.2",
+ "openchemlib": "^9.22.0",
+ "openchemlib-utils": "^8.15.0",
"sdf-parser": "^7.0.4"
}
},
@@ -4570,7 +4554,6 @@
"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -5108,7 +5091,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -6082,7 +6064,6 @@
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"license": "ISC",
- "peer": true,
"engines": {
"node": ">=12"
}
@@ -6670,7 +6651,6 @@
"integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -7465,7 +7445,6 @@
"resolved": "https://registry.npmjs.org/fifo-logger/-/fifo-logger-2.0.1.tgz",
"integrity": "sha512-AwCaBK389hl67z4AJ5+8uOsxU07olw0DzowzA6Znr/eaItMCsXXxzA1DjY/KCABWu/4Bq+wrBhn1p7hsjNDv4g==",
"license": "MIT",
- "peer": true,
"dependencies": {
"typescript-event-target": "^1.1.1"
}
@@ -8961,9 +8940,9 @@
}
},
"node_modules/jcampconverter": {
- "version": "12.2.2",
- "resolved": "https://registry.npmjs.org/jcampconverter/-/jcampconverter-12.2.2.tgz",
- "integrity": "sha512-Sbpeaf4ms6vghQrcnxqVS3C8y+HLu19uOOKKuO2E1EioX9/zrBltnnfscP2oF9gJiX7FRgCzgGu2W7WaG4BBTw==",
+ "version": "12.2.3",
+ "resolved": "https://registry.npmjs.org/jcampconverter/-/jcampconverter-12.2.3.tgz",
+ "integrity": "sha512-leLqnszCXhxfylN8op1Rt0PizaNJsYfwVzGx0Qep3txdi3gd5SYXYrtCjDsv8PB7oiRNu+Q6obtR9u/fBXSk7Q==",
"license": "CC-BY-NC-SA-4.0",
"dependencies": {
"cheminfo-types": "^1.10.0",
@@ -8971,7 +8950,7 @@
"ensure-string": "^2.0.0",
"gyromagnetic-ratio": "^2.0.0",
"ml-array-median": "^1.1.6",
- "openchemlib": "^9.20.0"
+ "openchemlib": "^9.22.0"
}
},
"node_modules/jiti": {
@@ -8980,7 +8959,6 @@
"integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"jiti": "lib/jiti-cli.mjs"
}
@@ -9941,9 +9919,9 @@
}
},
"node_modules/nmr-processing": {
- "version": "22.7.1",
- "resolved": "https://registry.npmjs.org/nmr-processing/-/nmr-processing-22.7.1.tgz",
- "integrity": "sha512-Kuny1kxHaFLQj9vMakjh/3EgLSQHOSkHSCSSQRbXKTGdolAcS2HiYVFfF0/yOWi2GU4+cc25iV1u+h1hFmiJfg==",
+ "version": "22.7.2",
+ "resolved": "https://registry.npmjs.org/nmr-processing/-/nmr-processing-22.7.2.tgz",
+ "integrity": "sha512-i/8QKEFqN5C1vw4i+vhK+Si0d9bqOdT+l7k47G3nP2XeSSJXxaemokyMxDJsdF8AZwGGsQsRwItrfPs711VGOg==",
"license": "CC-BY-NC-SA-4.0",
"dependencies": {
"binary-search": "^1.3.6",
@@ -9975,8 +9953,8 @@
"multiplet-analysis": "^2.1.5",
"nmr-correlation": "^3.0.0",
"numeral": "^2.0.6",
- "openchemlib": "^9.20.0",
- "openchemlib-utils": "^8.12.1",
+ "openchemlib": "^9.22.0",
+ "openchemlib-utils": "^8.15.0",
"spectrum-generator": "^8.1.1"
}
},
@@ -10252,11 +10230,10 @@
}
},
"node_modules/openchemlib": {
- "version": "9.21.0",
- "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-9.21.0.tgz",
- "integrity": "sha512-BJ93BYI7lQK4XMc8+ZocOsc2aCEdY0WyLhaJBHs/fH/XckETbheX/7nLaLnPALjXzxcLs2DbcnuDuGk7zXrlZQ==",
- "license": "BSD-3-Clause",
- "peer": true
+ "version": "9.22.0",
+ "resolved": "https://registry.npmjs.org/openchemlib/-/openchemlib-9.22.0.tgz",
+ "integrity": "sha512-1KZyKO+LkNkGtk6j92biMOUO0B26zgJXhwTrF+6tIeYxpzMXhMmiEhZe/a6RakyPHECzJnh9mqIJ5rId75Ov9A==",
+ "license": "BSD-3-Clause"
},
"node_modules/openchemlib-utils": {
"version": "8.15.0",
@@ -10695,7 +10672,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -10738,7 +10714,6 @@
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -11012,7 +10987,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -11038,7 +11012,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.2"
@@ -11113,7 +11086,6 @@
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.72.0.tgz",
"integrity": "sha512-V4v6jubaf6JAurEaVnT9aUPKFbNtDgohj5CIgVGyPHvT9wRx5OZHVjz31GsxnPNI278XMu+ruFz+wGOscHaLKw==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=18.0.0"
},
@@ -11163,9 +11135,9 @@
}
},
"node_modules/react-ocl": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/react-ocl/-/react-ocl-8.6.0.tgz",
- "integrity": "sha512-ThIaeh578kRvYJ3Ib5Vm6C5FzUSUFOmCPurxO6orN3lGHOKzTOI1BYS1QYfwQGPwO7pRUMqSshnihPaFVDbELA==",
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/react-ocl/-/react-ocl-8.7.0.tgz",
+ "integrity": "sha512-ZVnyKch1akEngUKf4HqnQJs/DR2WNbsnYV/VOmfsz7mGuAWIbrsXpa4vERMMQZpLnjbZALJkrOrkCdwXWdma+Q==",
"license": "MIT",
"dependencies": {
"@emotion/styled": "^11.14.1",
@@ -12981,7 +12953,6 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -13171,7 +13142,6 @@
"integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.27.0",
"fdir": "^6.5.0",
@@ -13262,7 +13232,6 @@
"integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vitest/expect": "4.1.0",
"@vitest/mocker": "4.1.0",
@@ -13643,7 +13612,6 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/package.json b/package.json
index 1160efc23b..587afd5a4b 100644
--- a/package.json
+++ b/package.json
@@ -71,8 +71,8 @@
"@tanstack/react-form": "^1.28.5",
"@tanstack/react-table": "^8.21.3",
"@zakodium/nmr-types": "^0.5.4",
- "@zakodium/nmrium-core": "^0.7.4",
- "@zakodium/nmrium-core-plugins": "^0.7.6",
+ "@zakodium/nmrium-core": "^0.7.6",
+ "@zakodium/nmrium-core-plugins": "^0.7.8",
"@zakodium/pdnd-esm": "^1.0.2",
"@zip.js/zip.js": "^2.8.23",
"cheminfo-font": "^1.23.0",
@@ -110,7 +110,7 @@
"react-icons": "^5.6.0",
"react-inspector": "^9.0.0",
"react-mf": "^3.1.1",
- "react-ocl": "^8.6.0",
+ "react-ocl": "^8.7.0",
"react-ocl-nmr": "^4.1.1",
"react-plot": "^3.1.2",
"react-rnd": "^10.5.3",
diff --git a/src/demo/views/BenchtopNMRWorkspace.tsx b/src/demo/views/BenchtopNMRWorkspace.tsx
index 5a18c55c3c..c23f812804 100644
--- a/src/demo/views/BenchtopNMRWorkspace.tsx
+++ b/src/demo/views/BenchtopNMRWorkspace.tsx
@@ -123,6 +123,14 @@ const customWorkspaces: CustomWorkspaces = {
popupLoggingLevel: 'error',
invert: false,
invertScroll: false,
+ molecules: {
+ labelStyle: {
+ fontSize: 15,
+ fontWeight: 'normal',
+ fontStyle: 'normal',
+ fill: '#8A3B3B',
+ },
+ },
},
nuclei: [
{
diff --git a/src/demo/views/CustomWorkspace.tsx b/src/demo/views/CustomWorkspace.tsx
index c148b91c81..b393ef0226 100644
--- a/src/demo/views/CustomWorkspace.tsx
+++ b/src/demo/views/CustomWorkspace.tsx
@@ -66,6 +66,14 @@ const customWorkspaces: CustomWorkspaces = {
invert: false,
popupLoggingLevel: 'info',
invertScroll: false,
+ molecules: {
+ labelStyle: {
+ fontSize: 15,
+ fontWeight: 'normal',
+ fontStyle: 'normal',
+ fill: '#8A3B3B',
+ },
+ },
},
nuclei: [
{ nucleus: '1H', ppmFormat: '0.00', hzFormat: '0.00' },
diff --git a/src/demo/views/SnapshotView.tsx b/src/demo/views/SnapshotView.tsx
index 19c766f6ad..378e339cfc 100644
--- a/src/demo/views/SnapshotView.tsx
+++ b/src/demo/views/SnapshotView.tsx
@@ -112,6 +112,14 @@ const customWorkspaces: CustomWorkspaces = {
invert: false,
popupLoggingLevel: 'info',
invertScroll: false,
+ molecules: {
+ labelStyle: {
+ fontSize: 15,
+ fontWeight: 'normal',
+ fontStyle: 'normal',
+ fill: '#8A3B3B',
+ },
+ },
},
nuclei: [
{