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

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.
Files changed (52) hide show
  1. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.d.ts.map +1 -1
  2. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.hook.d.ts +400 -0
  3. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.hook.d.ts.map +1 -0
  4. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.hook.js +34 -0
  5. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.hook.js.map +1 -0
  6. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.js +2 -0
  7. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.js.map +1 -1
  8. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_expanded.d.ts +2 -2
  9. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_expanded.d.ts.map +1 -1
  10. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_expanded.js +4 -26
  11. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_expanded.js.map +1 -1
  12. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_tool.d.ts.map +1 -1
  13. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_tool.js +2 -3
  14. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_tool.js.map +1 -1
  15. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_topbar.d.ts +3 -0
  16. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_topbar.d.ts.map +1 -0
  17. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_topbar.js +33 -0
  18. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_topbar.js.map +1 -0
  19. package/lib/plugins/spectrum_1d_processings_ui/operators/phase_correction_expanded.d.ts +2 -2
  20. package/lib/plugins/spectrum_1d_processings_ui/operators/phase_correction_expanded.d.ts.map +1 -1
  21. package/lib/plugins/spectrum_1d_processings_ui/operators/phase_correction_expanded.js +4 -5
  22. package/lib/plugins/spectrum_1d_processings_ui/operators/phase_correction_expanded.js.map +1 -1
  23. package/lib/plugins/spectrum_1d_processings_ui/operators/phase_correction_tool.d.ts.map +1 -1
  24. package/lib/plugins/spectrum_1d_processings_ui/operators/phase_correction_tool.js +2 -3
  25. package/lib/plugins/spectrum_1d_processings_ui/operators/phase_correction_tool.js.map +1 -1
  26. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.d.ts +2 -2
  27. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.d.ts.map +1 -1
  28. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.js +3 -4
  29. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.js.map +1 -1
  30. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling.d.ts.map +1 -1
  31. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling.js +2 -0
  32. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling.js.map +1 -1
  33. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_expand.d.ts +2 -2
  34. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_expand.d.ts.map +1 -1
  35. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_expand.js +3 -4
  36. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_expand.js.map +1 -1
  37. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_tool.d.ts +3 -0
  38. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_tool.d.ts.map +1 -0
  39. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_tool.js +50 -0
  40. package/lib/plugins/spectrum_1d_processings_ui/operators/zero_filling_tool.js.map +1 -0
  41. package/package.json +5 -4
  42. package/src/plugins/spectrum_1d_processings_ui/operators/apodization.hook.ts +43 -0
  43. package/src/plugins/spectrum_1d_processings_ui/operators/apodization.ts +2 -0
  44. package/src/plugins/spectrum_1d_processings_ui/operators/apodization_expanded.tsx +7 -32
  45. package/src/plugins/spectrum_1d_processings_ui/operators/apodization_tool.tsx +2 -3
  46. package/src/plugins/spectrum_1d_processings_ui/operators/apodization_topbar.tsx +64 -0
  47. package/src/plugins/spectrum_1d_processings_ui/operators/phase_correction_expanded.tsx +6 -15
  48. package/src/plugins/spectrum_1d_processings_ui/operators/phase_correction_tool.tsx +2 -3
  49. package/src/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.tsx +5 -6
  50. package/src/plugins/spectrum_1d_processings_ui/operators/zero_filling.tsx +2 -0
  51. package/src/plugins/spectrum_1d_processings_ui/operators/zero_filling_expand.tsx +5 -6
  52. package/src/plugins/spectrum_1d_processings_ui/operators/zero_filling_tool.tsx +92 -0
@@ -1,5 +1,5 @@
1
1
  import { revalidateLogic } from '@tanstack/react-form';
2
- import type { ProcessingOperatorUIExpandedProps } from '@zakodium/nmrium-core';
2
+ import type { ProcessingOperatorUISettingsFormProps } from '@zakodium/nmrium-core';
3
3
  import { useMemo } from 'react';
4
4
  import { AppForm, useForm } from 'react-science/ui';
5
5
  import { z } from 'zod';
@@ -22,9 +22,9 @@ const options = [
22
22
  ];
23
23
 
24
24
  export function ZeroFillingExpand(
25
- props: ProcessingOperatorUIExpandedProps<'@zakodium/nmrium-core-plugins#zeroFilling1D'>,
25
+ props: ProcessingOperatorUISettingsFormProps<'@zakodium/nmrium-core-plugins#zeroFilling1D'>,
26
26
  ) {
27
- const { operation, onChange, onLiveChange, onMount, core, children } = props;
27
+ const { operation, onSubmit, onChange, core, children } = props;
28
28
  const operator = core.getOperationOperator(
29
29
  '@zakodium/nmrium-core-plugins#zeroFilling1D',
30
30
  operation,
@@ -47,15 +47,14 @@ export function ZeroFillingExpand(
47
47
  validationLogic: revalidateLogic(),
48
48
  onSubmit: ({ value }) => {
49
49
  const { size: settings } = validator.parse(value);
50
- onChange({ ...operation, settings });
50
+ onSubmit({ ...operation, settings });
51
51
  },
52
52
  listeners: {
53
- onMount: () => onMount(),
54
53
  onChange: ({ formApi }) => {
55
54
  const result = validator.safeParse(formApi.state.values);
56
55
  if (!result.success) return;
57
56
 
58
- onLiveChange({ ...operation, settings: result.data.size });
57
+ onChange({ ...operation, settings: result.data.size });
59
58
  },
60
59
  },
61
60
  });
@@ -0,0 +1,92 @@
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 { onTriggerOperation, spectrum, activeOperatorId } = props;
40
+
41
+ const isActive =
42
+ activeOperatorId === '@zakodium/nmrium-core-plugins#zeroFilling1D';
43
+
44
+ const isVisible = isSpectrum1DFid(spectrum) && spectrum.info.isComplex;
45
+
46
+ const triggerOperation = useEventCallback(
47
+ (event: KeyboardEvent | MouseEvent) => {
48
+ if ('stopImmediatePropagation' in event) {
49
+ // stopPropagation is not enough because
50
+ // nmrium keyboard listener is also on document
51
+ event.stopImmediatePropagation();
52
+ }
53
+
54
+ onTriggerOperation(defaultZeroFillingOperation(spectrum));
55
+ },
56
+ );
57
+
58
+ const hotkeys = useMemo<HotkeyConfig[]>(() => {
59
+ return [
60
+ {
61
+ combo: 'z',
62
+ label: 'Zero Filling',
63
+ global: true,
64
+ onKeyDown: triggerOperation,
65
+ },
66
+ ];
67
+ }, [triggerOperation]);
68
+
69
+ useHotkeys(isVisible ? hotkeys : []);
70
+ if (!isVisible) return null;
71
+
72
+ return (
73
+ <Toolbar.Item
74
+ id="@zakodium/nmrium-core-plugins#zeroFilling1D"
75
+ icon={<SvgNmrZeroFilling />}
76
+ tooltip={
77
+ <TooltipHelpContent
78
+ title="Zero Filling"
79
+ shortcuts={['z']}
80
+ 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."
81
+ link="https://docs.nmrium.org/help/zero-filling"
82
+ />
83
+ }
84
+ active={isActive}
85
+ onClick={triggerOperation}
86
+ />
87
+ );
88
+ }
89
+
90
+ function getZeroFillingSize(length: number) {
91
+ return 2 ** Math.round(Math.log2(length * 2));
92
+ }