@zakodium/nmrium-core-plugins-ui 0.1.23 → 0.1.25

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 (21) 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.js +2 -0
  3. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization.js.map +1 -1
  4. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_tool.d.ts +3 -0
  5. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_tool.d.ts.map +1 -0
  6. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_tool.js +45 -0
  7. package/lib/plugins/spectrum_1d_processings_ui/operators/apodization_tool.js.map +1 -0
  8. package/lib/plugins/spectrum_1d_processings_ui/operators/index.js.map +1 -1
  9. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x.d.ts.map +1 -1
  10. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x.js +4 -0
  11. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x.js.map +1 -1
  12. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.d.ts +3 -0
  13. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.d.ts.map +1 -0
  14. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.js +48 -0
  15. package/lib/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.js.map +1 -0
  16. package/package.json +5 -4
  17. package/src/plugins/spectrum_1d_processings_ui/operators/apodization.ts +2 -0
  18. package/src/plugins/spectrum_1d_processings_ui/operators/apodization_tool.tsx +81 -0
  19. package/src/plugins/spectrum_1d_processings_ui/operators/index.ts +1 -1
  20. package/src/plugins/spectrum_1d_processings_ui/operators/{shift_x.tsx → shift_x.ts} +5 -0
  21. package/src/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.tsx +71 -0
@@ -1 +1 @@
1
- {"version":3,"file":"apodization.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/apodization.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,qGAOxB,CAAC"}
1
+ {"version":3,"file":"apodization.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/apodization.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,qGAQxB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
2
  import { ApodizationExpanded } from "./apodization_expanded.js";
3
+ import { ApodizationTool } from "./apodization_tool.js";
3
4
  export const apodization1D = defineProcessingOperatorUI({
4
5
  id: '@zakodium/nmrium-core-plugins#apodization1D',
5
6
  name: 'Apodization / Window',
@@ -7,5 +8,6 @@ export const apodization1D = defineProcessingOperatorUI({
7
8
  isLiveEditable: true,
8
9
  defaultShouldProcessAll: false,
9
10
  Expanded: ApodizationExpanded,
11
+ Tool: ApodizationTool,
10
12
  });
11
13
  //# sourceMappingURL=apodization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apodization.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/apodization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA4B,CAAC;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,0BAA0B,CAAC;IACtD,EAAE,EAAE,6CAA6C;IACjD,IAAI,EAAE,sBAAsB;IAC5B,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,uBAAuB,EAAE,KAAK;IAC9B,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"apodization.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/apodization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAwB,CAAC;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,0BAA0B,CAAC;IACtD,EAAE,EAAE,6CAA6C;IACjD,IAAI,EAAE,sBAAsB;IAC5B,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,uBAAuB,EAAE,KAAK;IAC9B,QAAQ,EAAE,mBAAmB;IAC7B,IAAI,EAAE,eAAe;CACtB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProcessingOperatorUIToolProps } from '@zakodium/nmrium-core';
2
+ export declare function ApodizationTool(props: ProcessingOperatorUIToolProps<'@zakodium/nmrium-core-plugins#apodization1D'>): import("react").JSX.Element | null;
3
+ //# sourceMappingURL=apodization_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apodization_tool.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/apodization_tool.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,6BAA6B,EAE9B,MAAM,uBAAuB,CAAC;AAqB/B,wBAAgB,eAAe,CAC7B,KAAK,EAAE,6BAA6B,CAAC,6CAA6C,CAAC,sCAqDpF"}
@@ -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 { SvgNmrApodization } from 'cheminfo-font';
5
+ import { useMemo } from 'react';
6
+ import { Toolbar, TooltipHelpContent } from 'react-science/ui';
7
+ import { useEventCallback } from 'usehooks-ts';
8
+ function defaultApodization1DOperation() {
9
+ return {
10
+ operatorId: '@zakodium/nmrium-core-plugins#apodization1D',
11
+ settings: { exponential: { apply: true, options: { lineBroadening: 1 } } },
12
+ options: undefined,
13
+ error: undefined,
14
+ uid: generateID(),
15
+ enabled: true,
16
+ };
17
+ }
18
+ const NO_SHORTCUTS = [];
19
+ export function ApodizationTool(props) {
20
+ const { spectrum, liveSpectrum, onTriggerOperation } = props;
21
+ const firstLiveProcessing = liveSpectrum?.processings?.[0]?.operatorId;
22
+ const isActive = firstLiveProcessing === '@zakodium/nmrium-core-plugins#apodization1D';
23
+ const isVisible = isSpectrum1DFid(spectrum) && spectrum.info.isComplex;
24
+ const triggerOperation = useEventCallback((event) => {
25
+ if ('stopImmediatePropagation' in event) {
26
+ // stopPropagation is not enough because
27
+ // nmrium keyboard listener is also on document
28
+ event.stopImmediatePropagation();
29
+ }
30
+ onTriggerOperation(defaultApodization1DOperation());
31
+ });
32
+ const hotkeys = useMemo(() => [
33
+ {
34
+ combo: 'A',
35
+ label: 'Apodization',
36
+ global: true,
37
+ onKeyDown: triggerOperation,
38
+ },
39
+ ], [triggerOperation]);
40
+ useHotkeys(isVisible ? hotkeys : NO_SHORTCUTS);
41
+ if (!isVisible)
42
+ return null;
43
+ return (_jsx(Toolbar.Item, { id: "@zakodium/nmrium-core-plugins#apodization1D", icon: _jsx(SvgNmrApodization, {}), tooltip: _jsx(TooltipHelpContent, { title: "Apodization / Window", shortcuts: ['a'], description: "Apply mathematical function that the FID is multiplied by before Fourier Transform.", link: "https://docs.nmrium.org/help/apodization" }), active: isActive, onClick: triggerOperation }));
44
+ }
45
+ //# sourceMappingURL=apodization_tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apodization_tool.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/apodization_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,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,6BAA6B;IACpC,OAAO;QACL,UAAU,EAAE,6CAA6C;QACzD,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1E,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,UAAU,EAAE;QACjB,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAmB,EAAE,CAAC;AAExC,MAAM,UAAU,eAAe,CAC7B,KAAmF;IAEnF,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,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,6BAA6B,EAAE,CAAC,CAAC;IACtD,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC;QACJ;YACE,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,gBAAgB;SAC5B;KACF,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IACF,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAE/C,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,sBAAsB,EAC5B,SAAS,EAAE,CAAC,GAAG,CAAC,EAChB,WAAW,EAAC,qFAAqF,EACjG,IAAI,EAAC,0CAA0C,GAC/C,EAEJ,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,gBAAgB,GACzB,CACH,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAW,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAqC;IAC3D,eAAe;IACf,aAAa;IACb,aAAa;IACb,KAAK;IACL,QAAQ;IACR,iBAAiB;CAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAW,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAqC;IAC3D,eAAe;IACf,aAAa;IACb,aAAa;IACb,KAAK;IACL,QAAQ;IACR,iBAAiB;CAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shift_x.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/shift_x.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,gGAGnB,CAAC"}
1
+ {"version":3,"file":"shift_x.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/shift_x.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,gGAMnB,CAAC"}
@@ -1,6 +1,10 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
+ import { ShiftXExpanded } from "./shift_x_expanded.js";
2
3
  export const shiftX1D = defineProcessingOperatorUI({
3
4
  id: '@zakodium/nmrium-core-plugins#shiftX1D',
4
5
  name: 'Shift x',
6
+ Expanded: ShiftXExpanded,
7
+ isEditable: true,
8
+ isLiveEditable: true,
5
9
  });
6
10
  //# sourceMappingURL=shift_x.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shift_x.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/shift_x.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,CAAC,MAAM,QAAQ,GAAG,0BAA0B,CAAC;IACjD,EAAE,EAAE,wCAAwC;IAC5C,IAAI,EAAE,SAAS;CAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"shift_x.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/shift_x.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,QAAQ,GAAG,0BAA0B,CAAC;IACjD,EAAE,EAAE,wCAAwC;IAC5C,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ProcessingOperatorUIExpandedProps } from '@zakodium/nmrium-core';
2
+ export declare function ShiftXExpanded(props: ProcessingOperatorUIExpandedProps<'@zakodium/nmrium-core-plugins#shiftX1D'>): import("react").JSX.Element;
3
+ //# sourceMappingURL=shift_x_expanded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shift_x_expanded.d.ts","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAK/E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,iCAAiC,CAAC,wCAAwC,CAAC,+BA+DnF"}
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { revalidateLogic } from '@tanstack/react-form';
3
+ import { useMemo } from 'react';
4
+ import { AppForm, useForm } from 'react-science/ui';
5
+ import { z } from 'zod';
6
+ export function ShiftXExpanded(props) {
7
+ const { operation, core, children, onChange, onLiveChange, onMount } = props;
8
+ const { settings } = operation;
9
+ const operator = core.getOperationOperator('@zakodium/nmrium-core-plugins#shiftX1D', operation);
10
+ const defaultValues = useMemo(() => {
11
+ return {
12
+ shift: settings,
13
+ };
14
+ }, [settings]);
15
+ const { schemaSettings } = operator;
16
+ const validation = useMemo(() => {
17
+ return z.object({
18
+ shift: schemaSettings,
19
+ });
20
+ }, [schemaSettings]);
21
+ const form = useForm({
22
+ defaultValues,
23
+ validators: { onDynamic: validation },
24
+ validationLogic: revalidateLogic(),
25
+ onSubmit: ({ value }) => {
26
+ if (!onChange)
27
+ return;
28
+ const { shift } = validation.parse(value);
29
+ const newOperation = {
30
+ ...operation,
31
+ settings: shift,
32
+ };
33
+ onChange(newOperation);
34
+ },
35
+ listeners: {
36
+ onMount: () => onMount(),
37
+ onChange: ({ formApi }) => {
38
+ const result = validation.safeParse(formApi.state.values);
39
+ if (!result.success)
40
+ return;
41
+ const liveOperation = { ...operation, settings: result.data.shift };
42
+ onLiveChange(liveOperation);
43
+ },
44
+ },
45
+ });
46
+ return (_jsxs(AppForm, { form: form, layout: "inline", children: [children?.(_jsx(form.SubmitButton, { variant: "outlined", size: "small", intent: "success", children: "Apply" })), _jsx(form.AppField, { name: "shift", children: (field) => _jsx(field.NumericInput, { label: "Shift" }) })] }));
47
+ }
48
+ //# sourceMappingURL=shift_x_expanded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shift_x_expanded.js","sourceRoot":"","sources":["../../../../src/plugins/spectrum_1d_processings_ui/operators/shift_x_expanded.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,cAAc,CAC5B,KAAkF;IAElF,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE7E,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CACxC,wCAAwC,EACxC,SAAS,CACV,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO;YACL,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,CAAC,CAAC,MAAM,CAAC;YACd,KAAK,EAAE,cAAc;SACtB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,MAAM,IAAI,GAAG,OAAO,CAAC;QACnB,aAAa;QACb,UAAU,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;QACrC,eAAe,EAAE,eAAe,EAAE;QAClC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACtB,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,YAAY,GAAG;gBACnB,GAAG,SAAS;gBACZ,QAAQ,EAAE,KAAK;aAChB,CAAC;YAEF,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzB,CAAC;QACD,SAAS,EAAE;YACT,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;YACxB,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBACxB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO;gBAE5B,MAAM,aAAa,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpE,YAAY,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,aACjC,QAAQ,EAAE,CACT,KAAC,IAAI,CAAC,YAAY,IAAC,OAAO,EAAC,UAAU,EAAC,IAAI,EAAC,OAAO,EAAC,MAAM,EAAC,SAAS,sBAE/C,CACrB,EAED,KAAC,IAAI,CAAC,QAAQ,IAAC,IAAI,EAAC,OAAO,YACxB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAC,KAAK,CAAC,YAAY,IAAC,KAAK,EAAC,OAAO,GAAG,GAClC,IACR,CACX,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.23",
3
+ "version": "0.1.25",
4
4
  "license": "CC-BY-NC-SA-4.0",
5
5
  "description": "UI related plugins needed for cheminfo/nmrium",
6
6
  "keywords": [],
@@ -27,12 +27,13 @@
27
27
  "@blueprintjs/icons": "^6.13.0",
28
28
  "@blueprintjs/select": "^6.3.3",
29
29
  "@tanstack/react-form": "^1.33.2",
30
- "@zakodium/nmrium-core": "^0.7.49",
31
- "@zakodium/nmrium-core-plugins": "^0.7.65",
30
+ "@zakodium/nmrium-core": "^0.7.50",
31
+ "@zakodium/nmrium-core-plugins": "^0.7.67",
32
32
  "fifo-logger": "^2.0.1",
33
33
  "react": "^18.3.1",
34
34
  "react-dom": "^18.3.1",
35
35
  "react-science": "^20.6.1",
36
+ "usehooks-ts": "^3.1.1",
36
37
  "zod": "^4.4.3"
37
38
  },
38
39
  "devDependencies": {
@@ -42,5 +43,5 @@
42
43
  "typescript": "~6.0.3",
43
44
  "vitest": "^4.1.10"
44
45
  },
45
- "gitHead": "b11e2640ef3a8c479d8fa8e90dce341a767757bc"
46
+ "gitHead": "80667e0063863c55c90ac6cd4f8e3159a2aeaa04"
46
47
  }
@@ -1,6 +1,7 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
2
 
3
3
  import { ApodizationExpanded } from './apodization_expanded.tsx';
4
+ import { ApodizationTool } from './apodization_tool.tsx';
4
5
 
5
6
  export const apodization1D = defineProcessingOperatorUI({
6
7
  id: '@zakodium/nmrium-core-plugins#apodization1D',
@@ -9,4 +10,5 @@ export const apodization1D = defineProcessingOperatorUI({
9
10
  isLiveEditable: true,
10
11
  defaultShouldProcessAll: false,
11
12
  Expanded: ApodizationExpanded,
13
+ Tool: ApodizationTool,
12
14
  });
@@ -0,0 +1,81 @@
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 { SvgNmrApodization } 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 defaultApodization1DOperation(): Spectrum1DProcessingTypeRegistry['@zakodium/nmrium-core-plugins#apodization1D'] {
15
+ return {
16
+ operatorId: '@zakodium/nmrium-core-plugins#apodization1D',
17
+ settings: { exponential: { apply: true, options: { lineBroadening: 1 } } },
18
+ options: undefined,
19
+ error: undefined,
20
+ uid: generateID(),
21
+ enabled: true,
22
+ };
23
+ }
24
+
25
+ const NO_SHORTCUTS: HotkeyConfig[] = [];
26
+
27
+ export function ApodizationTool(
28
+ props: ProcessingOperatorUIToolProps<'@zakodium/nmrium-core-plugins#apodization1D'>,
29
+ ) {
30
+ const { spectrum, liveSpectrum, onTriggerOperation } = props;
31
+
32
+ const firstLiveProcessing = liveSpectrum?.processings?.[0]?.operatorId;
33
+ const isActive =
34
+ firstLiveProcessing === '@zakodium/nmrium-core-plugins#apodization1D';
35
+
36
+ const isVisible = isSpectrum1DFid(spectrum) && spectrum.info.isComplex;
37
+
38
+ const triggerOperation = useEventCallback(
39
+ (event: KeyboardEvent | MouseEvent) => {
40
+ if ('stopImmediatePropagation' in event) {
41
+ // stopPropagation is not enough because
42
+ // nmrium keyboard listener is also on document
43
+ event.stopImmediatePropagation();
44
+ }
45
+
46
+ onTriggerOperation(defaultApodization1DOperation());
47
+ },
48
+ );
49
+
50
+ const hotkeys = useMemo<HotkeyConfig[]>(
51
+ () => [
52
+ {
53
+ combo: 'A',
54
+ label: 'Apodization',
55
+ global: true,
56
+ onKeyDown: triggerOperation,
57
+ },
58
+ ],
59
+ [triggerOperation],
60
+ );
61
+ useHotkeys(isVisible ? hotkeys : NO_SHORTCUTS);
62
+
63
+ if (!isVisible) return null;
64
+
65
+ return (
66
+ <Toolbar.Item
67
+ id="@zakodium/nmrium-core-plugins#apodization1D"
68
+ icon={<SvgNmrApodization />}
69
+ tooltip={
70
+ <TooltipHelpContent
71
+ title="Apodization / Window"
72
+ shortcuts={['a']}
73
+ description="Apply mathematical function that the FID is multiplied by before Fourier Transform."
74
+ link="https://docs.nmrium.org/help/apodization"
75
+ />
76
+ }
77
+ active={isActive}
78
+ onClick={triggerOperation}
79
+ />
80
+ );
81
+ }
@@ -4,7 +4,7 @@ import { apodization1D } from './apodization.ts';
4
4
  import { digitalFilter1D } from './digital_filter.tsx';
5
5
  import { fft1D } from './fft.tsx';
6
6
  import { phaseCorrection1D } from './phase_correction.ts';
7
- import { shiftX1D } from './shift_x.tsx';
7
+ import { shiftX1D } from './shift_x.ts';
8
8
  import { zeroFilling1D } from './zero_filling.tsx';
9
9
 
10
10
  export const operatorsUI: Array<ProcessingOperatorUI<any>> = [
@@ -1,6 +1,11 @@
1
1
  import { defineProcessingOperatorUI } from '@zakodium/nmrium-core';
2
2
 
3
+ import { ShiftXExpanded } from './shift_x_expanded.tsx';
4
+
3
5
  export const shiftX1D = defineProcessingOperatorUI({
4
6
  id: '@zakodium/nmrium-core-plugins#shiftX1D',
5
7
  name: 'Shift x',
8
+ Expanded: ShiftXExpanded,
9
+ isEditable: true,
10
+ isLiveEditable: true,
6
11
  });
@@ -0,0 +1,71 @@
1
+ import { revalidateLogic } from '@tanstack/react-form';
2
+ import type { ProcessingOperatorUIExpandedProps } from '@zakodium/nmrium-core';
3
+ import { useMemo } from 'react';
4
+ import { AppForm, useForm } from 'react-science/ui';
5
+ import { z } from 'zod';
6
+
7
+ export function ShiftXExpanded(
8
+ props: ProcessingOperatorUIExpandedProps<'@zakodium/nmrium-core-plugins#shiftX1D'>,
9
+ ) {
10
+ const { operation, core, children, onChange, onLiveChange, onMount } = props;
11
+
12
+ const { settings } = operation;
13
+ const operator = core.getOperationOperator(
14
+ '@zakodium/nmrium-core-plugins#shiftX1D',
15
+ operation,
16
+ );
17
+
18
+ const defaultValues = useMemo(() => {
19
+ return {
20
+ shift: settings,
21
+ };
22
+ }, [settings]);
23
+
24
+ const { schemaSettings } = operator;
25
+ const validation = useMemo(() => {
26
+ return z.object({
27
+ shift: schemaSettings,
28
+ });
29
+ }, [schemaSettings]);
30
+
31
+ const form = useForm({
32
+ defaultValues,
33
+ validators: { onDynamic: validation },
34
+ validationLogic: revalidateLogic(),
35
+ onSubmit: ({ value }) => {
36
+ if (!onChange) return;
37
+
38
+ const { shift } = validation.parse(value);
39
+ const newOperation = {
40
+ ...operation,
41
+ settings: shift,
42
+ };
43
+
44
+ onChange(newOperation);
45
+ },
46
+ listeners: {
47
+ onMount: () => onMount(),
48
+ onChange: ({ formApi }) => {
49
+ const result = validation.safeParse(formApi.state.values);
50
+ if (!result.success) return;
51
+
52
+ const liveOperation = { ...operation, settings: result.data.shift };
53
+ onLiveChange(liveOperation);
54
+ },
55
+ },
56
+ });
57
+
58
+ return (
59
+ <AppForm form={form} layout="inline">
60
+ {children?.(
61
+ <form.SubmitButton variant="outlined" size="small" intent="success">
62
+ Apply
63
+ </form.SubmitButton>,
64
+ )}
65
+
66
+ <form.AppField name="shift">
67
+ {(field) => <field.NumericInput label="Shift" />}
68
+ </form.AppField>
69
+ </AppForm>
70
+ );
71
+ }