@zakodium/nmrium-core-plugins-ui 0.1.26 → 0.1.27

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":"zero_filling.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/zero_filling.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,qGAOxB,CAAC"}
1
+ {"version":3,"file":"zero_filling.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/zero_filling.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,qGAQxB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
2
  import { ZeroFillingExpand } from "./zero_filling_expand.js";
3
+ import { ZeroFillingTool } from "./zero_filling_tool.js";
3
4
  export const zeroFilling1D = defineProcessingOperatorUI({
4
5
  id: '@zakodium/nmrium-core-plugins#zeroFilling1D',
5
6
  name: 'Zero filling',
@@ -7,5 +8,6 @@ export const zeroFilling1D = defineProcessingOperatorUI({
7
8
  isLiveEditable: true,
8
9
  defaultShouldProcessAll: false,
9
10
  Expanded: ZeroFillingExpand,
11
+ Tool: ZeroFillingTool,
10
12
  });
11
13
  //# sourceMappingURL=zero_filling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zero_filling.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/zero_filling.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA2B,CAAC;AAE9D,MAAM,CAAC,MAAM,aAAa,GAAG,0BAA0B,CAAC;IACtD,EAAE,EAAE,6CAA6C;IACjD,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,uBAAuB,EAAE,KAAK;IAC9B,QAAQ,EAAE,iBAAiB;CAC5B,CAAC,CAAC"}
1
+ {"version":3,"file":"zero_filling.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/zero_filling.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAyB,CAAC;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG,0BAA0B,CAAC;IACtD,EAAE,EAAE,6CAA6C;IACjD,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,uBAAuB,EAAE,KAAK;IAC9B,QAAQ,EAAE,iBAAiB;IAC3B,IAAI,EAAE,eAAe;CACtB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProcessingOperatorUIToolProps } from '@zakodium/nmrium-core';
2
+ export declare function ZeroFillingTool(props: ProcessingOperatorUIToolProps<'@zakodium/nmrium-core-plugins#zeroFilling1D'>): import("react").JSX.Element | null;
3
+ //# sourceMappingURL=zero_filling_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zero_filling_tool.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/zero_filling_tool.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,6BAA6B,EAG9B,MAAM,uBAAuB,CAAC;AA6B/B,wBAAgB,eAAe,CAC7B,KAAK,EAAE,6BAA6B,CAAC,6CAA6C,CAAC,sCAoDpF"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useHotkeys } from '@blueprintjs/core';
3
+ import { castSpectrum1D, generateID, isSpectrum1DFid, } from '@zakodium/nmrium-core';
4
+ import { SvgNmrZeroFilling } from 'cheminfo-font';
5
+ import { useMemo } from 'react';
6
+ import { Toolbar, TooltipHelpContent } from 'react-science/ui';
7
+ import { useEventCallback } from 'usehooks-ts';
8
+ function defaultZeroFillingOperation(spectrum) {
9
+ castSpectrum1D(spectrum);
10
+ const zeroFillingSize = getZeroFillingSize(spectrum.data.x.length);
11
+ return {
12
+ operatorId: '@zakodium/nmrium-core-plugins#zeroFilling1D',
13
+ settings: zeroFillingSize,
14
+ options: undefined,
15
+ error: undefined,
16
+ uid: generateID(),
17
+ enabled: true,
18
+ };
19
+ }
20
+ export function ZeroFillingTool(props) {
21
+ const { liveSpectrum, onTriggerOperation, spectrum } = props;
22
+ const firstLiveProcessing = liveSpectrum?.processings?.[0]?.operatorId;
23
+ const isActive = firstLiveProcessing === '@zakodium/nmrium-core-plugins#zeroFilling1D';
24
+ const isVisible = isSpectrum1DFid(spectrum) && spectrum.info.isComplex;
25
+ const triggerOperation = useEventCallback((event) => {
26
+ if ('stopImmediatePropagation' in event) {
27
+ // stopPropagation is not enough because
28
+ // nmrium keyboard listener is also on document
29
+ event.stopImmediatePropagation();
30
+ }
31
+ onTriggerOperation(defaultZeroFillingOperation(spectrum));
32
+ });
33
+ const hotkeys = useMemo(() => {
34
+ return [
35
+ {
36
+ combo: 'z',
37
+ label: 'Zero Filling',
38
+ global: true,
39
+ onKeyDown: triggerOperation,
40
+ },
41
+ ];
42
+ }, [triggerOperation]);
43
+ useHotkeys(isVisible ? hotkeys : []);
44
+ if (!isVisible)
45
+ return null;
46
+ return (_jsx(Toolbar.Item, { id: "@zakodium/nmrium-core-plugins#zeroFilling1D", icon: _jsx(SvgNmrZeroFilling, {}), tooltip: _jsx(TooltipHelpContent, { title: "Zero Filling", shortcuts: ['z'], description: "Improve spectrum quality by increasing the number of points. By default, the number of points is twise as many as in the original FID.", link: "https://docs.nmrium.org/help/zero-filling" }), active: isActive, onClick: triggerOperation }));
47
+ }
48
+ function getZeroFillingSize(length) {
49
+ return 2 ** Math.round(Math.log2(length * 2));
50
+ }
51
+ //# sourceMappingURL=zero_filling_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zero_filling_tool.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/zero_filling_tool.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,OAAO,EACL,cAAc,EACd,UAAU,EACV,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,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,2BAA2B,CAClC,QAAkB;IAElB,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzB,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEnE,OAAO;QACL,UAAU,EAAE,6CAA6C;QACzD,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,UAAU,EAAE;QACjB,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAmF;IAEnF,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE7D,MAAM,mBAAmB,GAAG,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;IACvE,MAAM,QAAQ,GACZ,mBAAmB,KAAK,6CAA6C,CAAC;IAExE,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,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CAAiB,GAAG,EAAE;QAC3C,OAAO;YACL;gBACE,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,cAAc;gBACrB,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,6CAA6C,EAChD,IAAI,EAAE,KAAC,iBAAiB,KAAG,EAC3B,OAAO,EACL,KAAC,kBAAkB,IACjB,KAAK,EAAC,cAAc,EACpB,SAAS,EAAE,CAAC,GAAG,CAAC,EAChB,WAAW,EAAC,wIAAwI,EACpJ,IAAI,EAAC,2CAA2C,GAChD,EAEJ,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,gBAAgB,GACzB,CACH,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zakodium/nmrium-core-plugins-ui",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "license": "CC-BY-NC-SA-4.0",
5
5
  "description": "UI related plugins needed for cheminfo/nmrium",
6
6
  "keywords": [],
@@ -43,5 +43,5 @@
43
43
  "typescript": "~6.0.3",
44
44
  "vitest": "^4.1.10"
45
45
  },
46
- "gitHead": "5862adcdc11eb074b88b8303366f4ef923f36ee0"
46
+ "gitHead": "c18d499dbfc4de25c2bcca78a00c0dfc6c362cc6"
47
47
  }
@@ -1,6 +1,7 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
2
 
3
3
  import { ZeroFillingExpand } from './zero_filling_expand.tsx';
4
+ import { ZeroFillingTool } from './zero_filling_tool.tsx';
4
5
 
5
6
  export const zeroFilling1D = defineProcessingOperatorUI({
6
7
  id: '@zakodium/nmrium-core-plugins#zeroFilling1D',
@@ -9,4 +10,5 @@ export const zeroFilling1D = defineProcessingOperatorUI({
9
10
  isLiveEditable: true,
10
11
  defaultShouldProcessAll: false,
11
12
  Expanded: ZeroFillingExpand,
13
+ Tool: ZeroFillingTool,
12
14
  });
@@ -0,0 +1,93 @@
1
+ import type { HotkeyConfig } from '@blueprintjs/core';
2
+ import { useHotkeys } from '@blueprintjs/core';
3
+ import type {
4
+ ProcessingOperatorUIToolProps,
5
+ Spectrum1DProcessingTypeRegistry,
6
+ Spectrum,
7
+ } from '@zakodium/nmrium-core';
8
+ import {
9
+ castSpectrum1D,
10
+ generateID,
11
+ isSpectrum1DFid,
12
+ } from '@zakodium/nmrium-core';
13
+ import { SvgNmrZeroFilling } from 'cheminfo-font';
14
+ import type { MouseEvent } from 'react';
15
+ import { useMemo } from 'react';
16
+ import { Toolbar, TooltipHelpContent } from 'react-science/ui';
17
+ import { useEventCallback } from 'usehooks-ts';
18
+
19
+ function defaultZeroFillingOperation(
20
+ spectrum: Spectrum,
21
+ ): Spectrum1DProcessingTypeRegistry['@zakodium/nmrium-core-plugins#zeroFilling1D'] {
22
+ castSpectrum1D(spectrum);
23
+
24
+ const zeroFillingSize = getZeroFillingSize(spectrum.data.x.length);
25
+
26
+ return {
27
+ operatorId: '@zakodium/nmrium-core-plugins#zeroFilling1D',
28
+ settings: zeroFillingSize,
29
+ options: undefined,
30
+ error: undefined,
31
+ uid: generateID(),
32
+ enabled: true,
33
+ };
34
+ }
35
+
36
+ export function ZeroFillingTool(
37
+ props: ProcessingOperatorUIToolProps<'@zakodium/nmrium-core-plugins#zeroFilling1D'>,
38
+ ) {
39
+ const { liveSpectrum, onTriggerOperation, spectrum } = props;
40
+
41
+ const firstLiveProcessing = liveSpectrum?.processings?.[0]?.operatorId;
42
+ const isActive =
43
+ firstLiveProcessing === '@zakodium/nmrium-core-plugins#zeroFilling1D';
44
+
45
+ const isVisible = isSpectrum1DFid(spectrum) && spectrum.info.isComplex;
46
+
47
+ const triggerOperation = useEventCallback(
48
+ (event: KeyboardEvent | MouseEvent) => {
49
+ if ('stopImmediatePropagation' in event) {
50
+ // stopPropagation is not enough because
51
+ // nmrium keyboard listener is also on document
52
+ event.stopImmediatePropagation();
53
+ }
54
+
55
+ onTriggerOperation(defaultZeroFillingOperation(spectrum));
56
+ },
57
+ );
58
+
59
+ const hotkeys = useMemo<HotkeyConfig[]>(() => {
60
+ return [
61
+ {
62
+ combo: 'z',
63
+ label: 'Zero Filling',
64
+ global: true,
65
+ onKeyDown: triggerOperation,
66
+ },
67
+ ];
68
+ }, [triggerOperation]);
69
+
70
+ useHotkeys(isVisible ? hotkeys : []);
71
+ if (!isVisible) return null;
72
+
73
+ return (
74
+ <Toolbar.Item
75
+ id="@zakodium/nmrium-core-plugins#zeroFilling1D"
76
+ icon={<SvgNmrZeroFilling />}
77
+ tooltip={
78
+ <TooltipHelpContent
79
+ title="Zero Filling"
80
+ shortcuts={['z']}
81
+ description="Improve spectrum quality by increasing the number of points. By default, the number of points is twise as many as in the original FID."
82
+ link="https://docs.nmrium.org/help/zero-filling"
83
+ />
84
+ }
85
+ active={isActive}
86
+ onClick={triggerOperation}
87
+ />
88
+ );
89
+ }
90
+
91
+ function getZeroFillingSize(length: number) {
92
+ return 2 ** Math.round(Math.log2(length * 2));
93
+ }