@signal-visualization/react 1.0.0 → 1.2.1

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.
package/README.md CHANGED
@@ -16,4 +16,4 @@ The adapter creates Core only after the container commits, maps `option` and `da
16
16
 
17
17
  `option.type` is required and selects the corresponding `data` type. Changing it calls Core `setOption()` and hot-switches the renderer while preserving the React component, Core facade, container, and Canvas.
18
18
 
19
- React V1 re-exports `SignalChartLinkGroup`. Join Core instances from `onReady` or through `SignalChartHandle.link()`; Core synchronizes frequency View/Crosshair state without routing pointer updates through React state.
19
+ React `1.2.0` re-exports `SignalChartLinkGroup`. Join Core instances from `onReady` or through `SignalChartHandle.link()`; Core synchronizes frequency View/Crosshair/Selection state without routing pointer updates through React state. The handle also exposes peak search, selected-band measurement, and Waterfall freeze/cursor/history commands.
@@ -1 +1 @@
1
- {"version":3,"file":"SignalChart.d.ts","sourceRoot":"","sources":["../src/SignalChart.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAYlE,eAAO,MAAM,WAAW,gHAuDvB,CAAA"}
1
+ {"version":3,"file":"SignalChart.d.ts","sourceRoot":"","sources":["../src/SignalChart.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAYlE,eAAO,MAAM,WAAW,gHAoEvB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -3,5 +3,5 @@ export { useSignalChart } from './useSignalChart';
3
3
  export { SignalChartLinkGroup } from '@signal-visualization/core';
4
4
  export type { ConstellationChartOption, ConstellationChartData, ConstellationChartProps, SignalChartCommonProps, SignalChartHandle, SignalChartOptionFor, SignalChartProps, SignalChartType, SpectrumChartOption, SpectrumChartData, SpectrumChartProps, WaterfallChartOption, WaterfallChartData, WaterfallChartProps, WaveformChartOption, WaveformChartData, WaveformChartProps, } from './types';
5
5
  export type { UseSignalChartResult } from './useSignalChart';
6
- export type { AxisOption, ConstellationData, ConstellationMode, ConstellationStyleOption, GpuResourceStats, InteractionOption, SignalChartOption, SignalData, SignalPerformanceStats, SignalChartLinkOptions, LinkedViewState, SpectrumData, SpectrumStyleOption, WaterfallColorMap, WaterfallDirection, WaterfallFrame, WaterfallStyleOption, WaveformData, WaveformStyleOption, } from '@signal-visualization/core';
6
+ export type { AxisOption, ConstellationData, ConstellationGridType, ConstellationMode, ConstellationStyleOption, GpuResourceStats, InteractionOption, SignalChartOption, SignalData, SignalPerformanceStats, SignalChartLinkOptions, LinkedViewState, FrequencySelection, FrequencySelectionModifier, FrequencySelectionStyleOption, SpectrumMarkerMeasurement, SpectrumMarkerMode, SpectrumMarkerOption, SpectrumMeasurementOption, SpectrumPeakMeasurement, SpectrumPeakSearchOption, SpectrumSelectionMeasurement, SpectrumThresholdOption, SpectrumTraceMode, SpectrumTraceOption, WaterfallTimeMode, WaterfallCursorMeasurement, WaterfallHistoryFrame, SpectrumData, SpectrumStyleOption, WaterfallColorMap, WaterfallDirection, WaterfallFrame, WaterfallStyleOption, WaveformData, WaveformStyleOption, } from '@signal-visualization/core';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACpB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACpB,MAAM,4BAA4B,CAAA"}
@@ -1,63 +1,76 @@
1
- import { jsx as R } from "react/jsx-runtime";
2
- import { forwardRef as S, useRef as u, useImperativeHandle as w, useEffect as o, useCallback as k, useMemo as D } from "react";
3
- import { SignalChart as E } from "@signal-visualization/core";
4
- import { SignalChartLinkGroup as H } from "@signal-visualization/core";
5
- function z(n) {
6
- return n instanceof Error ? n : new Error(String(n));
1
+ import { jsx as W } from "react/jsx-runtime";
2
+ import { forwardRef as d, useRef as u, useImperativeHandle as k, useEffect as i, useCallback as z, useMemo as R } from "react";
3
+ import { SignalChart as w } from "@signal-visualization/core";
4
+ import { SignalChartLinkGroup as x } from "@signal-visualization/core";
5
+ function F(t) {
6
+ return t instanceof Error ? t : new Error(String(t));
7
7
  }
8
- function s(n, t) {
9
- const c = z(n);
10
- if (t) t(c);
8
+ function l(t, n) {
9
+ const c = F(t);
10
+ if (n) n(c);
11
11
  else throw c;
12
12
  }
13
- const I = S(
14
- function({ option: t, data: c, className: m, style: g, onReady: l, onError: f }, d) {
15
- const p = u(null), r = u(null), h = u(l), a = u(f);
16
- return h.current = l, a.current = f, w(d, () => ({
13
+ const D = d(
14
+ function({ option: n, data: c, className: S, style: g, onReady: o, onError: f }, h) {
15
+ const p = u(null), r = u(null), m = u(o), s = u(f);
16
+ return m.current = o, s.current = f, k(h, () => ({
17
17
  getInstance: () => r.current,
18
18
  appendData: (e) => r.current?.appendData(e),
19
19
  resize: () => r.current?.resize(),
20
20
  clear: () => r.current?.clear(),
21
21
  resetView: () => r.current?.resetView(),
22
22
  link: (e) => r.current?.link(e),
23
- unlink: () => r.current?.unlink()
24
- }), []), o(() => {
23
+ unlink: () => r.current?.unlink(),
24
+ setSelection: (e) => r.current?.setSelection(e),
25
+ getSelection: () => r.current?.getSelection(),
26
+ getSpectrumMarkers: () => r.current?.getSpectrumMarkers() ?? [],
27
+ findSpectrumPeaks: (e) => r.current?.findSpectrumPeaks(e) ?? [],
28
+ getSpectrumSelectionMeasurement: () => r.current?.getSpectrumSelectionMeasurement(),
29
+ resetSpectrumTraces: () => r.current?.resetSpectrumTraces(),
30
+ setSpectrumTraceVisible: (e, a) => r.current?.setSpectrumTraceVisible(e, a),
31
+ getSpectrumTraceVisibility: () => r.current?.getSpectrumTraceVisibility() ?? {},
32
+ setWaterfallFrozen: (e) => r.current?.setWaterfallFrozen(e),
33
+ isWaterfallFrozen: () => r.current?.isWaterfallFrozen() ?? !1,
34
+ setWaterfallCursor: (e) => r.current?.setWaterfallCursor(e),
35
+ getWaterfallCursor: () => r.current?.getWaterfallCursor(),
36
+ getWaterfallFrame: (e) => r.current?.getWaterfallFrame(e)
37
+ }), []), i(() => {
25
38
  const e = p.current;
26
39
  if (!e) return;
27
- let i;
40
+ let a;
28
41
  try {
29
- i = new E(e, t);
42
+ a = new w(e, n);
30
43
  } catch (C) {
31
- s(C, a.current);
44
+ l(C, s.current);
32
45
  return;
33
46
  }
34
- return r.current = i, h.current?.(i), () => {
47
+ return r.current = a, m.current?.(a), () => {
35
48
  r.current?.dispose(), r.current = null;
36
49
  };
37
- }, []), o(() => {
50
+ }, []), i(() => {
38
51
  try {
39
- r.current?.setOption(t);
52
+ r.current?.setOption(n);
40
53
  } catch (e) {
41
- s(e, a.current);
54
+ l(e, s.current);
42
55
  }
43
- }, [t]), o(() => {
56
+ }, [n]), i(() => {
44
57
  try {
45
58
  c && r.current?.setData(c);
46
59
  } catch (e) {
47
- s(e, a.current);
60
+ l(e, s.current);
48
61
  }
49
- }, [c]), /* @__PURE__ */ R("div", { ref: p, className: m, style: g });
62
+ }, [c]), /* @__PURE__ */ W("div", { ref: p, className: S, style: g });
50
63
  }
51
64
  );
52
- function V() {
53
- const n = u(null), t = k((c) => {
54
- n.current?.appendData(c);
65
+ function E() {
66
+ const t = u(null), n = z((c) => {
67
+ t.current?.appendData(c);
55
68
  }, []);
56
- return D(() => ({ chartRef: n, appendData: t }), [t]);
69
+ return R(() => ({ chartRef: t, appendData: n }), [n]);
57
70
  }
58
71
  export {
59
- I as SignalChart,
60
- H as SignalChartLinkGroup,
61
- V as useSignalChart
72
+ D as SignalChart,
73
+ x as SignalChartLinkGroup,
74
+ E as useSignalChart
62
75
  };
63
76
  //# sourceMappingURL=signal-visualization-react.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-visualization-react.js","sources":["../src/SignalChart.tsx","../src/useSignalChart.ts"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n type ReactElement,\n} from 'react'\nimport { SignalChart as CoreSignalChart } from '@signal-visualization/core'\n\nimport type { SignalChartHandle, SignalChartProps } from './types'\n\nfunction normalizeError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error))\n}\n\nfunction reportError(error: unknown, callback: ((error: Error) => void) | undefined): void {\n const normalized = normalizeError(error)\n if (callback) callback(normalized)\n else throw normalized\n}\n\nexport const SignalChart = forwardRef<SignalChartHandle, SignalChartProps>(\n function SignalChart({ option, data, className, style, onReady, onError }, ref): ReactElement {\n const containerRef = useRef<HTMLDivElement>(null)\n const instanceRef = useRef<CoreSignalChart | null>(null)\n const onReadyRef = useRef(onReady)\n const onErrorRef = useRef(onError)\n onReadyRef.current = onReady\n onErrorRef.current = onError\n\n useImperativeHandle(ref, () => ({\n getInstance: () => instanceRef.current,\n appendData: (data) => instanceRef.current?.appendData(data),\n resize: () => instanceRef.current?.resize(),\n clear: () => instanceRef.current?.clear(),\n resetView: () => instanceRef.current?.resetView(),\n link: (group) => instanceRef.current?.link(group),\n unlink: () => instanceRef.current?.unlink(),\n }), [])\n\n useEffect(() => {\n const container = containerRef.current\n if (!container) return\n let instance: CoreSignalChart\n try {\n instance = new CoreSignalChart(container, option)\n } catch (error) {\n reportError(error, onErrorRef.current)\n return\n }\n instanceRef.current = instance\n onReadyRef.current?.(instance)\n return () => {\n instanceRef.current?.dispose()\n instanceRef.current = null\n }\n }, [])\n\n useEffect(() => {\n try {\n instanceRef.current?.setOption(option)\n } catch (error) {\n reportError(error, onErrorRef.current)\n }\n }, [option])\n\n useEffect(() => {\n try {\n if (data) instanceRef.current?.setData(data)\n } catch (error) {\n reportError(error, onErrorRef.current)\n }\n }, [data])\n\n return <div ref={containerRef} className={className} style={style} />\n },\n)\n","import { useCallback, useMemo, useRef, type RefObject } from 'react'\nimport type { SignalData } from '@signal-visualization/core'\n\nimport type { SignalChartHandle } from './types'\n\nexport interface UseSignalChartResult {\n readonly chartRef: RefObject<SignalChartHandle | null>\n readonly appendData: (data: SignalData) => void\n}\n\nexport function useSignalChart(): UseSignalChartResult {\n const chartRef = useRef<SignalChartHandle>(null)\n const appendData = useCallback((data: SignalData): void => {\n chartRef.current?.appendData(data)\n }, [])\n\n return useMemo(() => ({ chartRef, appendData }), [appendData])\n}\n"],"names":["normalizeError","error","reportError","callback","normalized","SignalChart","forwardRef","option","data","className","style","onReady","onError","ref","containerRef","useRef","instanceRef","onReadyRef","onErrorRef","useImperativeHandle","group","useEffect","container","instance","CoreSignalChart","jsx","useSignalChart","chartRef","appendData","useCallback","useMemo"],"mappings":";;;;AAWA,SAASA,EAAeC,GAAuB;AAC7C,SAAOA,aAAiB,QAAQA,IAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC;AACjE;AAEA,SAASC,EAAYD,GAAgBE,GAAsD;AACzF,QAAMC,IAAaJ,EAAeC,CAAK;AACvC,MAAIE,KAAmBC,CAAU;AAAA,MAC5B,OAAMA;AACb;AAEO,MAAMC,IAAcC;AAAA,EACzB,SAAqB,EAAE,QAAAC,GAAQ,MAAAC,GAAM,WAAAC,GAAW,OAAAC,GAAO,SAAAC,GAAS,SAAAC,EAAA,GAAWC,GAAmB;AAC5F,UAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAcD,EAA+B,IAAI,GACjDE,IAAaF,EAAOJ,CAAO,GAC3BO,IAAaH,EAAOH,CAAO;AACjC,WAAAK,EAAW,UAAUN,GACrBO,EAAW,UAAUN,GAErBO,EAAoBN,GAAK,OAAO;AAAA,MAC9B,aAAa,MAAMG,EAAY;AAAA,MAC/B,YAAY,CAACR,MAASQ,EAAY,SAAS,WAAWR,CAAI;AAAA,MAC1D,QAAQ,MAAMQ,EAAY,SAAS,OAAA;AAAA,MACnC,OAAO,MAAMA,EAAY,SAAS,MAAA;AAAA,MAClC,WAAW,MAAMA,EAAY,SAAS,UAAA;AAAA,MACtC,MAAM,CAACI,MAAUJ,EAAY,SAAS,KAAKI,CAAK;AAAA,MAChD,QAAQ,MAAMJ,EAAY,SAAS,OAAA;AAAA,IAAO,IACxC,CAAA,CAAE,GAENK,EAAU,MAAM;AACd,YAAMC,IAAYR,EAAa;AAC/B,UAAI,CAACQ,EAAW;AAChB,UAAIC;AACJ,UAAI;AACF,QAAAA,IAAW,IAAIC,EAAgBF,GAAWf,CAAM;AAAA,MAClD,SAASN,GAAO;AACd,QAAAC,EAAYD,GAAOiB,EAAW,OAAO;AACrC;AAAA,MACF;AACA,aAAAF,EAAY,UAAUO,GACtBN,EAAW,UAAUM,CAAQ,GACtB,MAAM;AACX,QAAAP,EAAY,SAAS,QAAA,GACrBA,EAAY,UAAU;AAAA,MACxB;AAAA,IACF,GAAG,CAAA,CAAE,GAELK,EAAU,MAAM;AACd,UAAI;AACF,QAAAL,EAAY,SAAS,UAAUT,CAAM;AAAA,MACvC,SAASN,GAAO;AACd,QAAAC,EAAYD,GAAOiB,EAAW,OAAO;AAAA,MACvC;AAAA,IACF,GAAG,CAACX,CAAM,CAAC,GAEXc,EAAU,MAAM;AACd,UAAI;AACF,QAAIb,KAAMQ,EAAY,SAAS,QAAQR,CAAI;AAAA,MAC7C,SAASP,GAAO;AACd,QAAAC,EAAYD,GAAOiB,EAAW,OAAO;AAAA,MACvC;AAAA,IACF,GAAG,CAACV,CAAI,CAAC,GAEF,gBAAAiB,EAAC,OAAA,EAAI,KAAKX,GAAc,WAAAL,GAAsB,OAAAC,GAAc;AAAA,EACrE;AACF;AClEO,SAASgB,IAAuC;AACrD,QAAMC,IAAWZ,EAA0B,IAAI,GACzCa,IAAaC,EAAY,CAACrB,MAA2B;AACzD,IAAAmB,EAAS,SAAS,WAAWnB,CAAI;AAAA,EACnC,GAAG,CAAA,CAAE;AAEL,SAAOsB,EAAQ,OAAO,EAAE,UAAAH,GAAU,YAAAC,MAAe,CAACA,CAAU,CAAC;AAC/D;"}
1
+ {"version":3,"file":"signal-visualization-react.js","sources":["../src/SignalChart.tsx","../src/useSignalChart.ts"],"sourcesContent":["import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n type ReactElement,\n} from 'react'\nimport { SignalChart as CoreSignalChart } from '@signal-visualization/core'\n\nimport type { SignalChartHandle, SignalChartProps } from './types'\n\nfunction normalizeError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error))\n}\n\nfunction reportError(error: unknown, callback: ((error: Error) => void) | undefined): void {\n const normalized = normalizeError(error)\n if (callback) callback(normalized)\n else throw normalized\n}\n\nexport const SignalChart = forwardRef<SignalChartHandle, SignalChartProps>(\n function SignalChart({ option, data, className, style, onReady, onError }, ref): ReactElement {\n const containerRef = useRef<HTMLDivElement>(null)\n const instanceRef = useRef<CoreSignalChart | null>(null)\n const onReadyRef = useRef(onReady)\n const onErrorRef = useRef(onError)\n onReadyRef.current = onReady\n onErrorRef.current = onError\n\n useImperativeHandle(ref, () => ({\n getInstance: () => instanceRef.current,\n appendData: (data) => instanceRef.current?.appendData(data),\n resize: () => instanceRef.current?.resize(),\n clear: () => instanceRef.current?.clear(),\n resetView: () => instanceRef.current?.resetView(),\n link: (group) => instanceRef.current?.link(group),\n unlink: () => instanceRef.current?.unlink(),\n setSelection: (selection) => instanceRef.current?.setSelection(selection),\n getSelection: () => instanceRef.current?.getSelection(),\n getSpectrumMarkers: () => instanceRef.current?.getSpectrumMarkers() ?? [],\n findSpectrumPeaks: (options) => instanceRef.current?.findSpectrumPeaks(options) ?? [],\n getSpectrumSelectionMeasurement: () => instanceRef.current?.getSpectrumSelectionMeasurement(),\n resetSpectrumTraces: () => instanceRef.current?.resetSpectrumTraces(),\n setSpectrumTraceVisible: (traceId, visible) => instanceRef.current?.setSpectrumTraceVisible(traceId, visible),\n getSpectrumTraceVisibility: () => instanceRef.current?.getSpectrumTraceVisibility() ?? {},\n setWaterfallFrozen: (frozen) => instanceRef.current?.setWaterfallFrozen(frozen),\n isWaterfallFrozen: () => instanceRef.current?.isWaterfallFrozen() ?? false,\n setWaterfallCursor: (age) => instanceRef.current?.setWaterfallCursor(age),\n getWaterfallCursor: () => instanceRef.current?.getWaterfallCursor(),\n getWaterfallFrame: (age) => instanceRef.current?.getWaterfallFrame(age),\n }), [])\n\n useEffect(() => {\n const container = containerRef.current\n if (!container) return\n let instance: CoreSignalChart\n try {\n instance = new CoreSignalChart(container, option)\n } catch (error) {\n reportError(error, onErrorRef.current)\n return\n }\n instanceRef.current = instance\n onReadyRef.current?.(instance)\n return () => {\n instanceRef.current?.dispose()\n instanceRef.current = null\n }\n }, [])\n\n useEffect(() => {\n try {\n instanceRef.current?.setOption(option)\n } catch (error) {\n reportError(error, onErrorRef.current)\n }\n }, [option])\n\n useEffect(() => {\n try {\n if (data) instanceRef.current?.setData(data)\n } catch (error) {\n reportError(error, onErrorRef.current)\n }\n }, [data])\n\n return <div ref={containerRef} className={className} style={style} />\n },\n)\n","import { useCallback, useMemo, useRef, type RefObject } from 'react'\nimport type { SignalData } from '@signal-visualization/core'\n\nimport type { SignalChartHandle } from './types'\n\nexport interface UseSignalChartResult {\n readonly chartRef: RefObject<SignalChartHandle | null>\n readonly appendData: (data: SignalData) => void\n}\n\nexport function useSignalChart(): UseSignalChartResult {\n const chartRef = useRef<SignalChartHandle>(null)\n const appendData = useCallback((data: SignalData): void => {\n chartRef.current?.appendData(data)\n }, [])\n\n return useMemo(() => ({ chartRef, appendData }), [appendData])\n}\n"],"names":["normalizeError","error","reportError","callback","normalized","SignalChart","forwardRef","option","data","className","style","onReady","onError","ref","containerRef","useRef","instanceRef","onReadyRef","onErrorRef","useImperativeHandle","group","selection","options","traceId","visible","frozen","age","useEffect","container","instance","CoreSignalChart","jsx","useSignalChart","chartRef","appendData","useCallback","useMemo"],"mappings":";;;;AAWA,SAASA,EAAeC,GAAuB;AAC7C,SAAOA,aAAiB,QAAQA,IAAQ,IAAI,MAAM,OAAOA,CAAK,CAAC;AACjE;AAEA,SAASC,EAAYD,GAAgBE,GAAsD;AACzF,QAAMC,IAAaJ,EAAeC,CAAK;AACvC,MAAIE,KAAmBC,CAAU;AAAA,MAC5B,OAAMA;AACb;AAEO,MAAMC,IAAcC;AAAA,EACzB,SAAqB,EAAE,QAAAC,GAAQ,MAAAC,GAAM,WAAAC,GAAW,OAAAC,GAAO,SAAAC,GAAS,SAAAC,EAAA,GAAWC,GAAmB;AAC5F,UAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAcD,EAA+B,IAAI,GACjDE,IAAaF,EAAOJ,CAAO,GAC3BO,IAAaH,EAAOH,CAAO;AACjC,WAAAK,EAAW,UAAUN,GACrBO,EAAW,UAAUN,GAErBO,EAAoBN,GAAK,OAAO;AAAA,MAC9B,aAAa,MAAMG,EAAY;AAAA,MAC/B,YAAY,CAACR,MAASQ,EAAY,SAAS,WAAWR,CAAI;AAAA,MAC1D,QAAQ,MAAMQ,EAAY,SAAS,OAAA;AAAA,MACnC,OAAO,MAAMA,EAAY,SAAS,MAAA;AAAA,MAClC,WAAW,MAAMA,EAAY,SAAS,UAAA;AAAA,MACtC,MAAM,CAACI,MAAUJ,EAAY,SAAS,KAAKI,CAAK;AAAA,MAChD,QAAQ,MAAMJ,EAAY,SAAS,OAAA;AAAA,MACnC,cAAc,CAACK,MAAcL,EAAY,SAAS,aAAaK,CAAS;AAAA,MACxE,cAAc,MAAML,EAAY,SAAS,aAAA;AAAA,MACzC,oBAAoB,MAAMA,EAAY,SAAS,mBAAA,KAAwB,CAAA;AAAA,MACvE,mBAAmB,CAACM,MAAYN,EAAY,SAAS,kBAAkBM,CAAO,KAAK,CAAA;AAAA,MACnF,iCAAiC,MAAMN,EAAY,SAAS,gCAAA;AAAA,MAC5D,qBAAqB,MAAMA,EAAY,SAAS,oBAAA;AAAA,MAChD,yBAAyB,CAACO,GAASC,MAAYR,EAAY,SAAS,wBAAwBO,GAASC,CAAO;AAAA,MAC5G,4BAA4B,MAAMR,EAAY,SAAS,2BAAA,KAAgC,CAAA;AAAA,MACvF,oBAAoB,CAACS,MAAWT,EAAY,SAAS,mBAAmBS,CAAM;AAAA,MAC9E,mBAAmB,MAAMT,EAAY,SAAS,uBAAuB;AAAA,MACrE,oBAAoB,CAACU,MAAQV,EAAY,SAAS,mBAAmBU,CAAG;AAAA,MACxE,oBAAoB,MAAMV,EAAY,SAAS,mBAAA;AAAA,MAC/C,mBAAmB,CAACU,MAAQV,EAAY,SAAS,kBAAkBU,CAAG;AAAA,IAAA,IACpE,CAAA,CAAE,GAENC,EAAU,MAAM;AACd,YAAMC,IAAYd,EAAa;AAC/B,UAAI,CAACc,EAAW;AAChB,UAAIC;AACJ,UAAI;AACF,QAAAA,IAAW,IAAIC,EAAgBF,GAAWrB,CAAM;AAAA,MAClD,SAASN,GAAO;AACd,QAAAC,EAAYD,GAAOiB,EAAW,OAAO;AACrC;AAAA,MACF;AACA,aAAAF,EAAY,UAAUa,GACtBZ,EAAW,UAAUY,CAAQ,GACtB,MAAM;AACX,QAAAb,EAAY,SAAS,QAAA,GACrBA,EAAY,UAAU;AAAA,MACxB;AAAA,IACF,GAAG,CAAA,CAAE,GAELW,EAAU,MAAM;AACd,UAAI;AACF,QAAAX,EAAY,SAAS,UAAUT,CAAM;AAAA,MACvC,SAASN,GAAO;AACd,QAAAC,EAAYD,GAAOiB,EAAW,OAAO;AAAA,MACvC;AAAA,IACF,GAAG,CAACX,CAAM,CAAC,GAEXoB,EAAU,MAAM;AACd,UAAI;AACF,QAAInB,KAAMQ,EAAY,SAAS,QAAQR,CAAI;AAAA,MAC7C,SAASP,GAAO;AACd,QAAAC,EAAYD,GAAOiB,EAAW,OAAO;AAAA,MACvC;AAAA,IACF,GAAG,CAACV,CAAI,CAAC,GAEF,gBAAAuB,EAAC,OAAA,EAAI,KAAKjB,GAAc,WAAAL,GAAsB,OAAAC,GAAc;AAAA,EACrE;AACF;AC/EO,SAASsB,IAAuC;AACrD,QAAMC,IAAWlB,EAA0B,IAAI,GACzCmB,IAAaC,EAAY,CAAC3B,MAA2B;AACzD,IAAAyB,EAAS,SAAS,WAAWzB,CAAI;AAAA,EACnC,GAAG,CAAA,CAAE;AAEL,SAAO4B,EAAQ,OAAO,EAAE,UAAAH,GAAU,YAAAC,MAAe,CAACA,CAAU,CAAC;AAC/D;"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { CSSProperties } from 'react';
2
- import type { ConstellationData, SignalChart as CoreSignalChart, SignalChartLinkGroup, SignalChartOption, SignalData, SpectrumData, WaterfallFrame, WaveformData } from '@signal-visualization/core';
2
+ import type { ConstellationData, SignalChart as CoreSignalChart, SignalChartLinkGroup, SignalChartOption, SignalData, FrequencySelection, SpectrumMarkerMeasurement, SpectrumPeakMeasurement, SpectrumPeakSearchOption, SpectrumSelectionMeasurement, SpectrumData, WaterfallFrame, WaterfallCursorMeasurement, WaterfallHistoryFrame, WaveformData } from '@signal-visualization/core';
3
3
  export interface SignalChartHandle {
4
4
  getInstance(): CoreSignalChart | null;
5
5
  appendData(data: SignalData): void;
@@ -8,6 +8,19 @@ export interface SignalChartHandle {
8
8
  resetView(): void;
9
9
  link(group: SignalChartLinkGroup): void;
10
10
  unlink(): void;
11
+ setSelection(selection: FrequencySelection | undefined): void;
12
+ getSelection(): FrequencySelection | undefined;
13
+ getSpectrumMarkers(): readonly SpectrumMarkerMeasurement[];
14
+ findSpectrumPeaks(options?: SpectrumPeakSearchOption): readonly SpectrumPeakMeasurement[];
15
+ getSpectrumSelectionMeasurement(): SpectrumSelectionMeasurement | undefined;
16
+ resetSpectrumTraces(): void;
17
+ setSpectrumTraceVisible(traceId: string, visible: boolean): void;
18
+ getSpectrumTraceVisibility(): Readonly<Record<string, boolean>>;
19
+ setWaterfallFrozen(frozen: boolean): void;
20
+ isWaterfallFrozen(): boolean;
21
+ setWaterfallCursor(age: number | undefined): void;
22
+ getWaterfallCursor(): WaterfallCursorMeasurement | undefined;
23
+ getWaterfallFrame(age?: number): WaterfallHistoryFrame | undefined;
11
24
  }
12
25
  export type SignalChartType = NonNullable<SignalChartOption['type']>;
13
26
  export type SignalChartOptionFor<TType extends SignalChartType> = Omit<SignalChartOption, 'type'> & {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,IAAI,eAAe,EAC9B,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,YAAY,EACZ,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,EACb,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,iBAAiB;IAChC,WAAW,IAAI,eAAe,GAAG,IAAI,CAAA;IACrC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAClC,MAAM,IAAI,IAAI,CAAA;IACd,KAAK,IAAI,IAAI,CAAA;IACb,SAAS,IAAI,IAAI,CAAA;IACjB,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACvC,MAAM,IAAI,IAAI,CAAA;IACd,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAA;IAC7D,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAAA;IAC9C,kBAAkB,IAAI,SAAS,yBAAyB,EAAE,CAAA;IAC1D,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,SAAS,uBAAuB,EAAE,CAAA;IACzF,+BAA+B,IAAI,4BAA4B,GAAG,SAAS,CAAA;IAC3E,mBAAmB,IAAI,IAAI,CAAA;IAC3B,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAChE,0BAA0B,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACzC,iBAAiB,IAAI,OAAO,CAAA;IAC5B,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;IACjD,kBAAkB,IAAI,0BAA0B,GAAG,SAAS,CAAA;IAC5D,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAA;CACnE;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA;AAEpE,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,eAAe,IAC5D,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAA;AAEnD,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;AAClE,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;AACpE,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAA;AAC5E,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;AAElE,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,SAAS,CAAC,EAAE,KAAK,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG;IAChD,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,SAAS,CAAC,EAAE,KAAK,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG;IACvD,aAAa,CAAC,EAAE,KAAK,CAAA;IACrB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,cAAc,CAAC,EAAE,KAAK,CAAA;IACtB,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,MAAM,CAAC,EAAE,KAAK,CAAA;CACf,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,aAAa,CAAC,EAAE,KAAK,CAAA;IACrB,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,cAAc,CAAC,EAAE,KAAK,CAAA;CACvB,CAAA;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE,MAAM,EAAE,mBAAmB,CAAA;IAC3B,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,MAAM,EAAE,oBAAoB,CAAA;IAC5B,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B;AAED,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,MAAM,EAAE,wBAAwB,CAAA;IAChC,IAAI,CAAC,EAAE,sBAAsB,CAAA;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE,MAAM,EAAE,mBAAmB,CAAA;IAC3B,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,MAAM,MAAM,gBAAgB,GACxB,kBAAkB,GAClB,mBAAmB,GACnB,uBAAuB,GACvB,kBAAkB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signal-visualization/react",
3
- "version": "1.0.0",
3
+ "version": "1.2.1",
4
4
  "description": "React adapter for @signal-visualization/core",
5
5
  "type": "module",
6
6
  "main": "./dist/signal-visualization-react.js",
@@ -27,7 +27,7 @@
27
27
  "jsdom": "^30.0.1",
28
28
  "react": "^19.2.8",
29
29
  "react-dom": "^19.2.8",
30
- "@signal-visualization/core": "^1.0.0"
30
+ "@signal-visualization/core": "^1.2.1"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "vite build && tsc -p tsconfig.build.json",