@zakodium/nmrium-core-plugins-ui 0.1.29 → 0.1.30

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.
@@ -1 +1 @@
1
- {"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/fft.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,6FAGhB,CAAC"}
1
+ {"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/fft.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,6FAIhB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
+ import { FFTTool } from "./fft_tool.js";
2
3
  export const fft1D = defineProcessingOperatorUI({
3
4
  id: '@zakodium/nmrium-core-plugins#fft1D',
4
5
  name: 'FFT',
6
+ Tool: FFTTool,
5
7
  });
6
8
  //# sourceMappingURL=fft.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fft.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/fft.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,MAAM,KAAK,GAAG,0BAA0B,CAAC;IAC9C,EAAE,EAAE,qCAAqC;IACzC,IAAI,EAAE,KAAK;CACZ,CAAC,CAAC"}
1
+ {"version":3,"file":"fft.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/fft.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAgB,CAAC;AAEzC,MAAM,CAAC,MAAM,KAAK,GAAG,0BAA0B,CAAC;IAC9C,EAAE,EAAE,qCAAqC;IACzC,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,OAAO;CACd,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProcessingOperatorUIToolProps } from '@zakodium/nmrium-core';
2
+ export declare function FFTTool(props: ProcessingOperatorUIToolProps<'@zakodium/nmrium-core-plugins#fft1D'>): import("react").JSX.Element | null;
3
+ //# sourceMappingURL=fft_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fft_tool.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/fft_tool.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,6BAA6B,EAE9B,MAAM,uBAAuB,CAAC;AAmB/B,wBAAgB,OAAO,CACrB,KAAK,EAAE,6BAA6B,CAAC,qCAAqC,CAAC,sCAiD5E"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useHotkeys } from '@blueprintjs/core';
3
+ import { generateID, isSpectrum1DFid } from '@zakodium/nmrium-core';
4
+ import { SvgNmrFourierTransform } from 'cheminfo-font';
5
+ import { useMemo } from 'react';
6
+ import { Toolbar, TooltipHelpContent } from 'react-science/ui';
7
+ import { useEventCallback } from 'usehooks-ts';
8
+ function defaultFFTOperation() {
9
+ return {
10
+ operatorId: '@zakodium/nmrium-core-plugins#fft1D',
11
+ settings: null,
12
+ options: undefined,
13
+ error: undefined,
14
+ uid: generateID(),
15
+ enabled: true,
16
+ };
17
+ }
18
+ export function FFTTool(props) {
19
+ const { spectrum, activeOperatorId, onTriggerOperation } = props;
20
+ const isActive = activeOperatorId === '@zakodium/nmrium-core-plugins#fft1D';
21
+ const isVisible = isSpectrum1DFid(spectrum) && spectrum.info.isComplex;
22
+ const triggerOperation = useEventCallback((event) => {
23
+ if ('stopImmediatePropagation' in event) {
24
+ // stopPropagation is not enough because
25
+ // nmrium keyboard listener is also on document
26
+ event.stopImmediatePropagation();
27
+ }
28
+ onTriggerOperation(defaultFFTOperation());
29
+ });
30
+ const hotkeys = useMemo(() => {
31
+ return [
32
+ {
33
+ combo: 't',
34
+ label: 'Fourier Transform',
35
+ global: true,
36
+ onKeyDown: triggerOperation,
37
+ },
38
+ ];
39
+ }, [triggerOperation]);
40
+ useHotkeys(isVisible ? hotkeys : []);
41
+ if (!isVisible)
42
+ return null;
43
+ return (_jsx(Toolbar.Item, { id: "@zakodium/nmrium-core-plugins#fft1D", icon: _jsx(SvgNmrFourierTransform, {}), tooltip: _jsx(TooltipHelpContent, { title: "Fourier transform", shortcuts: ['t'], description: "Perform a Fourier transform on the FID.", link: "https://docs.nmrium.org/help/ft/" }), active: isActive, onClick: triggerOperation }));
44
+ }
45
+ //# sourceMappingURL=fft_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fft_tool.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/fft_tool.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK/C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,mBAAmB;IAC1B,OAAO;QACL,UAAU,EAAE,qCAAqC;QACjD,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,UAAU,EAAE;QACjB,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,KAA2E;IAE3E,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;IAEjE,MAAM,QAAQ,GAAG,gBAAgB,KAAK,qCAAqC,CAAC;IAC5E,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;IAEvE,MAAM,gBAAgB,GAAG,gBAAgB,CACvC,CAAC,KAAiC,EAAE,EAAE;QACpC,IAAI,0BAA0B,IAAI,KAAK,EAAE,CAAC;YACxC,wCAAwC;YACxC,+CAA+C;YAC/C,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACnC,CAAC;QAED,kBAAkB,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5C,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CAAiB,GAAG,EAAE;QAC3C,OAAO;YACL;gBACE,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,gBAAgB;aAC5B;SACF,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,OAAO,CACL,KAAC,OAAO,CAAC,IAAI,IACX,EAAE,EAAC,qCAAqC,EACxC,IAAI,EAAE,KAAC,sBAAsB,KAAG,EAChC,OAAO,EACL,KAAC,kBAAkB,IACjB,KAAK,EAAC,mBAAmB,EACzB,SAAS,EAAE,CAAC,GAAG,CAAC,EAChB,WAAW,EAAC,yCAAyC,EACrD,IAAI,EAAC,kCAAkC,GACvC,EAEJ,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,gBAAgB,GACzB,CACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zakodium/nmrium-core-plugins-ui",
3
- "version": "0.1.29",
3
+ "version": "0.1.30",
4
4
  "license": "CC-BY-NC-SA-4.0",
5
5
  "description": "UI related plugins needed for cheminfo/nmrium",
6
6
  "keywords": [],
@@ -44,5 +44,5 @@
44
44
  "typescript": "~6.0.3",
45
45
  "vitest": "^4.1.10"
46
46
  },
47
- "gitHead": "81f8fd5aee7cd864addbe7a5dd5cfa98eb0b99c3"
47
+ "gitHead": "018413b9504e9e805e601b3d08391d752342a2cf"
48
48
  }
@@ -1,6 +1,9 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
2
 
3
+ import { FFTTool } from './fft_tool.tsx';
4
+
3
5
  export const fft1D = defineProcessingOperatorUI({
4
6
  id: '@zakodium/nmrium-core-plugins#fft1D',
5
7
  name: 'FFT',
8
+ Tool: FFTTool,
6
9
  });
@@ -0,0 +1,75 @@
1
+ import type { HotkeyConfig } from '@blueprintjs/core';
2
+ import { useHotkeys } from '@blueprintjs/core';
3
+ import type {
4
+ ProcessingOperatorUIToolProps,
5
+ Spectrum1DProcessingTypeRegistry,
6
+ } from '@zakodium/nmrium-core';
7
+ import { generateID, isSpectrum1DFid } from '@zakodium/nmrium-core';
8
+ import { SvgNmrFourierTransform } from 'cheminfo-font';
9
+ import type { MouseEvent } from 'react';
10
+ import { useMemo } from 'react';
11
+ import { Toolbar, TooltipHelpContent } from 'react-science/ui';
12
+ import { useEventCallback } from 'usehooks-ts';
13
+
14
+ function defaultFFTOperation(): Spectrum1DProcessingTypeRegistry['@zakodium/nmrium-core-plugins#fft1D'] {
15
+ return {
16
+ operatorId: '@zakodium/nmrium-core-plugins#fft1D',
17
+ settings: null,
18
+ options: undefined,
19
+ error: undefined,
20
+ uid: generateID(),
21
+ enabled: true,
22
+ };
23
+ }
24
+
25
+ export function FFTTool(
26
+ props: ProcessingOperatorUIToolProps<'@zakodium/nmrium-core-plugins#fft1D'>,
27
+ ) {
28
+ const { spectrum, activeOperatorId, onTriggerOperation } = props;
29
+
30
+ const isActive = activeOperatorId === '@zakodium/nmrium-core-plugins#fft1D';
31
+ const isVisible = isSpectrum1DFid(spectrum) && spectrum.info.isComplex;
32
+
33
+ const triggerOperation = useEventCallback(
34
+ (event: KeyboardEvent | MouseEvent) => {
35
+ if ('stopImmediatePropagation' in event) {
36
+ // stopPropagation is not enough because
37
+ // nmrium keyboard listener is also on document
38
+ event.stopImmediatePropagation();
39
+ }
40
+
41
+ onTriggerOperation(defaultFFTOperation());
42
+ },
43
+ );
44
+
45
+ const hotkeys = useMemo<HotkeyConfig[]>(() => {
46
+ return [
47
+ {
48
+ combo: 't',
49
+ label: 'Fourier Transform',
50
+ global: true,
51
+ onKeyDown: triggerOperation,
52
+ },
53
+ ];
54
+ }, [triggerOperation]);
55
+
56
+ useHotkeys(isVisible ? hotkeys : []);
57
+ if (!isVisible) return null;
58
+
59
+ return (
60
+ <Toolbar.Item
61
+ id="@zakodium/nmrium-core-plugins#fft1D"
62
+ icon={<SvgNmrFourierTransform />}
63
+ tooltip={
64
+ <TooltipHelpContent
65
+ title="Fourier transform"
66
+ shortcuts={['t']}
67
+ description="Perform a Fourier transform on the FID."
68
+ link="https://docs.nmrium.org/help/ft/"
69
+ />
70
+ }
71
+ active={isActive}
72
+ onClick={triggerOperation}
73
+ />
74
+ );
75
+ }