waveform-analysis 0.1.74 → 0.1.76
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 +422 -60
- package/dist/assets/workerRuntime-BJiRmIZD.js +2446 -0
- package/dist/index.cjs +1 -2
- package/dist/index.js +1 -7119
- package/dist/style.css +1 -1
- package/dist/types/animation/WaveformAnimationController.d.ts +30 -0
- package/dist/types/animation/core/Animation.d.ts +13 -0
- package/dist/types/animation/core/Animator.d.ts +23 -0
- package/dist/types/animation/core/easing.d.ts +3 -0
- package/dist/types/animation/core/errors.d.ts +4 -0
- package/dist/types/animation/core/handle.d.ts +7 -0
- package/dist/types/animation/core/owner.d.ts +3 -0
- package/dist/types/animation/core/propertyGroups.d.ts +17 -0
- package/dist/types/animation/core/task.d.ts +29 -0
- package/dist/types/animation/core/types.d.ts +74 -0
- package/dist/types/animation/core/validation.d.ts +30 -0
- package/dist/types/animation/core/values.d.ts +8 -0
- package/dist/types/animation/presets/annotation.d.ts +4 -0
- package/dist/types/animation/presets/lineDrawing.d.ts +7 -0
- package/dist/types/animation/presets/shared.d.ts +14 -0
- package/dist/types/animation/presets/transitions.d.ts +4 -0
- package/dist/types/animation/types.d.ts +84 -0
- package/dist/types/components/WaveformChart.vue.d.ts +3 -2
- package/dist/types/components/animation/annotationPresentation.d.ts +17 -0
- package/dist/types/components/animation/chartExportVersion.d.ts +2 -0
- package/dist/types/components/animation/config.d.ts +31 -0
- package/dist/types/components/animation/context.d.ts +20 -0
- package/dist/types/components/animation/geometry.d.ts +10 -0
- package/dist/types/components/animation/paginationPresentation.d.ts +13 -0
- package/dist/types/components/animation/pathBuffer.d.ts +4 -0
- package/dist/types/components/animation/trackPresentation.d.ts +35 -0
- package/dist/types/components/animation/useWaveformAnimations.d.ts +27 -0
- package/dist/types/components/annotation/WaveformAnnotationContextMenu.vue.d.ts +2 -2
- package/dist/types/components/annotation/types.d.ts +7 -0
- package/dist/types/components/controls/useChartImageExport.d.ts +2 -0
- package/dist/types/components/core/amplitudeLimits.d.ts +6 -0
- package/dist/types/components/core/layout.d.ts +6 -9
- package/dist/types/components/core/trackLayoutBuilder.d.ts +3 -1
- package/dist/types/components/core/types.d.ts +8 -0
- package/dist/types/components/core/useWaveformChartController.d.ts +26 -1
- package/dist/types/components/core/useWaveformData.d.ts +2 -2
- package/dist/types/components/core/useWaveformMeasurements.d.ts +4 -1
- package/dist/types/components/core/useWaveformRenderSampling.d.ts +2 -0
- package/dist/types/components/core/waveformChartTypes.d.ts +6 -3
- package/dist/types/components/core/xAxisTicks.d.ts +2 -0
- package/dist/types/components/core/yAxisLayoutMetrics.d.ts +2 -1
- package/dist/types/components/core/yAxisTicks.d.ts +6 -0
- package/dist/types/components/data/types.d.ts +1 -1
- package/dist/types/components/interaction/integerZoom.d.ts +3 -3
- package/dist/types/components/interaction/stepZoom.d.ts +5 -0
- package/dist/types/components/interaction/useWaveformViewport.d.ts +0 -3
- package/dist/types/components/interaction/useWaveformZoom.d.ts +0 -2
- package/dist/types/components/rendering/WaveformSeriesLayer.vue.d.ts +1 -0
- package/dist/types/components/rendering/WaveformTrack.vue.d.ts +4 -3
- package/dist/types/components/rendering/updateAxis.d.ts +5 -0
- package/dist/types/components/rendering/updateGrid.d.ts +3 -0
- package/dist/types/components/rendering/yAxisTickVisibility.d.ts +2 -0
- package/dist/types/components/utils/assignElement.d.ts +2 -0
- package/dist/types/core/data.d.ts +1 -1
- package/dist/types/demo/DemoChartHost.vue.d.ts +1 -1
- package/dist/types/demo/remoteWaveformLoader.d.ts +23 -0
- package/dist/types/demo/types.d.ts +11 -2
- package/dist/types/demo/useRemoteWaveformWindow.d.ts +22 -0
- package/dist/types/index.d.ts +10 -1
- package/dist/types/types/chart.d.ts +8 -1
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/utils/formatters.d.ts +4 -4
- package/dist/types/utils/xAxisNumber.d.ts +2 -0
- package/dist/types/views/AnimationDemo.vue.d.ts +3 -0
- package/package.json +5 -2
- package/src/App.vue +34 -100
- package/src/DemoRouterApp.vue +1 -0
- package/src/animation/WaveformAnimationController.ts +328 -0
- package/src/animation/core/Animation.ts +37 -0
- package/src/animation/core/Animator.ts +200 -0
- package/src/animation/core/easing.ts +74 -0
- package/src/animation/core/errors.ts +24 -0
- package/src/animation/core/handle.ts +34 -0
- package/src/animation/core/owner.ts +9 -0
- package/src/animation/core/propertyGroups.ts +143 -0
- package/src/animation/core/task.ts +153 -0
- package/src/animation/core/types.ts +81 -0
- package/src/animation/core/validation.ts +173 -0
- package/src/animation/core/values.ts +38 -0
- package/src/animation/presets/annotation.ts +66 -0
- package/src/animation/presets/lineDrawing.ts +51 -0
- package/src/animation/presets/shared.ts +58 -0
- package/src/animation/presets/transitions.ts +77 -0
- package/src/animation/types.ts +81 -0
- package/src/components/WaveformChart.vue +1 -0
- package/src/components/WaveformChartView.vue +13 -6
- package/src/components/animation/annotationPresentation.ts +145 -0
- package/src/components/animation/chartExportVersion.ts +5 -0
- package/src/components/animation/config.ts +87 -0
- package/src/components/animation/context.ts +56 -0
- package/src/components/animation/geometry.ts +148 -0
- package/src/components/animation/paginationPresentation.ts +114 -0
- package/src/components/animation/pathBuffer.ts +61 -0
- package/src/components/animation/trackPresentation.ts +172 -0
- package/src/components/animation/useWaveformAnimations.ts +420 -0
- package/src/components/annotation/WaveformAnnotationLayer.vue +43 -30
- package/src/components/annotation/types.ts +3 -0
- package/src/components/controls/useChartCommands.ts +12 -13
- package/src/components/controls/useChartImageExport.ts +4 -0
- package/src/components/core/amplitudeLimits.ts +44 -0
- package/src/components/core/layout.ts +22 -34
- package/src/components/core/trackLayoutBuilder.ts +21 -23
- package/src/components/core/types.ts +4 -0
- package/src/components/core/useWaveformChartController.ts +27 -23
- package/src/components/core/useWaveformChartLifecycle.ts +11 -2
- package/src/components/core/useWaveformData.ts +11 -5
- package/src/components/core/useWaveformLayout.ts +9 -4
- package/src/components/core/useWaveformMeasurements.ts +3 -0
- package/src/components/core/useWaveformRenderSampling.ts +23 -1
- package/src/components/core/useWaveformYAxisLayout.ts +2 -0
- package/src/components/core/waveformChartTypes.ts +6 -2
- package/src/components/core/xAxisTicks.ts +69 -0
- package/src/components/core/yAxisLayoutMetrics.ts +4 -0
- package/src/components/core/yAxisTicks.ts +39 -0
- package/src/components/data/types.ts +2 -0
- package/src/components/interaction/integerZoom.ts +31 -12
- package/src/components/interaction/remoteViewport.ts +26 -4
- package/src/components/interaction/stepZoom.ts +33 -0
- package/src/components/interaction/useWaveformViewport.ts +3 -26
- package/src/components/interaction/useWaveformZoom.ts +50 -157
- package/src/components/interaction/zoomConstraints.ts +5 -5
- package/src/components/rendering/WaveformSeriesLayer.vue +13 -1
- package/src/components/rendering/WaveformTrack.vue +6 -1
- package/src/components/rendering/WaveformTrackAxes.vue +64 -51
- package/src/components/rendering/WaveformTrackBackdrop.vue +35 -49
- package/src/components/rendering/updateAxis.ts +57 -0
- package/src/components/rendering/updateGrid.ts +42 -0
- package/src/components/rendering/yAxisTickVisibility.ts +45 -18
- package/src/components/utils/assignElement.ts +7 -0
- package/src/core/data.ts +5 -2
- package/src/data/simulatedWaveforms.ts +0 -10
- package/src/demo/DemoChartHost.vue +49 -4
- package/src/demo/remoteWaveformLoader.ts +114 -0
- package/src/demo/types.ts +11 -1
- package/src/demo/useRemoteWaveformWindow.ts +229 -0
- package/src/index.ts +54 -0
- package/src/router.ts +1 -0
- package/src/types/chart.ts +10 -1
- package/src/types/index.ts +2 -0
- package/src/utils/formatters.ts +10 -5
- package/src/utils/xAxisNumber.ts +36 -0
- package/src/views/AnimationDemo.vue +129 -0
- package/dist/assets/workerRuntime-5p-EI-GL.js +0 -1
- package/dist/types/data/sx2Channel.d.ts +0 -10
- package/src/data/sx2Channel.ts +0 -315
|
@@ -84,8 +84,10 @@ declare const __VLS_export: import("vue").DefineComponent<WaveformChartProps, {
|
|
|
84
84
|
minVisiblePoints: number;
|
|
85
85
|
xDomainStrategy: import("..").WaveformXDomainStrategy;
|
|
86
86
|
timeUnit: "s" | "ms";
|
|
87
|
+
frameNumber: string | number;
|
|
87
88
|
annotations: import("..").WaveformAnnotation[];
|
|
88
89
|
annotationsVisible: boolean;
|
|
90
|
+
interactionMode: import("..").WaveformInteractionMode;
|
|
89
91
|
grid: import("..").WaveformGridOptions;
|
|
90
92
|
rendering: import("..").WaveformRenderingOptions;
|
|
91
93
|
plotMargin: import("..").WaveformPlotMargin;
|
|
@@ -94,8 +96,7 @@ declare const __VLS_export: import("vue").DefineComponent<WaveformChartProps, {
|
|
|
94
96
|
cleanView: boolean;
|
|
95
97
|
presentationMode: boolean;
|
|
96
98
|
zeroLine: import("..").WaveformZeroLineOptions;
|
|
97
|
-
|
|
98
|
-
interactionMode: import("..").WaveformInteractionMode;
|
|
99
|
+
animationEnabled: boolean;
|
|
99
100
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
100
101
|
declare const _default: typeof __VLS_export;
|
|
101
102
|
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RenderedAnnotation } from '../annotation/types';
|
|
2
|
+
import type { ResolvedAnimationProps } from './config';
|
|
3
|
+
import type { WaveformAnnotation } from '@/types';
|
|
4
|
+
import type { AnnotationAnimationState } from '@/animation/types';
|
|
5
|
+
import { WaveformAnimationController } from '@/animation/WaveformAnimationController';
|
|
6
|
+
export interface PresentedAnnotation extends RenderedAnnotation {
|
|
7
|
+
animationStyle?: AnnotationAnimationState;
|
|
8
|
+
leaving?: boolean;
|
|
9
|
+
seriesOpacity?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function createAnnotationPresentation(controller: WaveformAnimationController, invalidate: () => void): {
|
|
12
|
+
reconcile(rendered: RenderedAnnotation[], controlled: WaveformAnnotation[], config: ResolvedAnimationProps["animationAnnotation"], enabled: boolean, waitingSeries: Set<string>): void;
|
|
13
|
+
release(seriesId?: string): void;
|
|
14
|
+
finish(rendered: RenderedAnnotation[]): void;
|
|
15
|
+
project(rendered: RenderedAnnotation[], seriesOpacity: Map<string, number>): PresentedAnnotation[];
|
|
16
|
+
clear(): void;
|
|
17
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { WaveformAnimationProps, AnnotationAnimationType, LineDrawingDirection } from '@/animation/types';
|
|
2
|
+
export declare function resolveAnimationProps(props: WaveformAnimationProps, warn?: (message: string) => void): {
|
|
3
|
+
animationEnabled: boolean;
|
|
4
|
+
animationThreshold: number;
|
|
5
|
+
animation: {
|
|
6
|
+
delay: number;
|
|
7
|
+
staggerDelay: number;
|
|
8
|
+
direction: LineDrawingDirection;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
duration: number;
|
|
11
|
+
easing: NonNullable<import("../..").EasingType | import("../..").EasingFunction | undefined>;
|
|
12
|
+
onComplete: (() => void) | undefined;
|
|
13
|
+
onAbort: (() => void) | undefined;
|
|
14
|
+
};
|
|
15
|
+
animationUpdate: {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
duration: number;
|
|
18
|
+
easing: NonNullable<import("../..").EasingType | import("../..").EasingFunction | undefined>;
|
|
19
|
+
onComplete: (() => void) | undefined;
|
|
20
|
+
onAbort: (() => void) | undefined;
|
|
21
|
+
};
|
|
22
|
+
animationAnnotation: {
|
|
23
|
+
type: AnnotationAnimationType;
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
duration: number;
|
|
26
|
+
easing: NonNullable<import("../..").EasingType | import("../..").EasingFunction | undefined>;
|
|
27
|
+
onComplete: (() => void) | undefined;
|
|
28
|
+
onAbort: (() => void) | undefined;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export type ResolvedAnimationProps = ReturnType<typeof resolveAnimationProps>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ComputedRef, Ref, ShallowRef } from 'vue';
|
|
2
|
+
import type { TrackLayout } from '../core/types';
|
|
3
|
+
import type { PreparedWaveformSeries } from '../core/useWaveformData';
|
|
4
|
+
import type { ResolvedWaveformChartProps } from '../core/waveformChartTypes';
|
|
5
|
+
export interface AnimationContext {
|
|
6
|
+
props: ResolvedWaveformChartProps;
|
|
7
|
+
tracks: ComputedRef<TrackLayout[]>;
|
|
8
|
+
currentPage: Ref<number>;
|
|
9
|
+
containerSize: ComputedRef<number[]>;
|
|
10
|
+
preparedSeries: ShallowRef<PreparedWaveformSeries[]>;
|
|
11
|
+
layoutReady: ComputedRef<boolean>;
|
|
12
|
+
innerWidth: ComputedRef<number>;
|
|
13
|
+
innerHeight: ComputedRef<number>;
|
|
14
|
+
sampling: {
|
|
15
|
+
state: ComputedRef<'pending' | 'success' | 'fallback' | 'error'>;
|
|
16
|
+
requestSignature: ComputedRef<string>;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare function animationLayoutSignature(context: AnimationContext): string;
|
|
20
|
+
export declare function wrapAnimationCommands<T extends object>(commands: T, stabilize: () => void): T;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ScaleLinear } from 'd3';
|
|
2
|
+
import type { WaveformPoint, WaveformLineType } from '@/types';
|
|
3
|
+
import type { TrackSeriesPath } from '../core/types';
|
|
4
|
+
import type { NumericGeometry } from '@/animation/types';
|
|
5
|
+
/** Private presentation buffer; the source/target snapshots and business points stay immutable. */
|
|
6
|
+
export declare function interpolateGeometry(from: NumericGeometry, to: NumericGeometry, p: number): NumericGeometry;
|
|
7
|
+
export declare function generateWaveformPath(points: WaveformPoint[], type: WaveformLineType, x: ScaleLinear<number, number>, y: ScaleLinear<number, number>): string | null;
|
|
8
|
+
export declare function captureGeometry(path: TrackSeriesPath, x: ScaleLinear<number, number>): NumericGeometry;
|
|
9
|
+
export declare function projectGeometry(path: TrackSeriesPath, geometry: NumericGeometry, x: ScaleLinear<number, number>, y: ScaleLinear<number, number>): TrackSeriesPath;
|
|
10
|
+
export declare function compatibleGeometry(a: TrackSeriesPath, b: TrackSeriesPath, from: NumericGeometry, to: NumericGeometry): boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ComputedRef } from 'vue';
|
|
2
|
+
import type { AnimationContext } from './context';
|
|
3
|
+
import type { ResolvedAnimationProps } from './config';
|
|
4
|
+
import type { WaveformAnimationController } from '@/animation/WaveformAnimationController';
|
|
5
|
+
/** A single owner-scoped fade; it holds no old page geometry. */
|
|
6
|
+
export declare function createPaginationPresentation(context: AnimationContext, controller: WaveformAnimationController, config: ComputedRef<ResolvedAnimationProps>, effective: ComputedRef<boolean>, commit: () => void): {
|
|
7
|
+
opacity: import("vue").ShallowRef<number, number>;
|
|
8
|
+
reset: () => void;
|
|
9
|
+
cancel: () => void;
|
|
10
|
+
reconcile: (dataChanged: boolean) => boolean;
|
|
11
|
+
wrapPagination: (goToPage: (page: number) => void, count: ComputedRef<number>) => (page: number) => void;
|
|
12
|
+
active: () => boolean;
|
|
13
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ScaleLinear } from 'd3';
|
|
2
|
+
import type { WaveformPoint, WaveformLineType } from '@/types';
|
|
3
|
+
/** Stable D3 accessors/context keep their feedback across frames; storage is private to points. */
|
|
4
|
+
export declare function createPathBuffer(x: ScaleLinear<number, number>, y: ScaleLinear<number, number>): (points: WaveformPoint[], nextType: WaveformLineType, x: ScaleLinear<number, number>, y: ScaleLinear<number, number>) => string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { TrackLayout, TrackSeriesPath } from '../core/types';
|
|
2
|
+
import type { WaveformAnnotation } from '@/types';
|
|
3
|
+
import type { NumericGeometry } from '@/animation/types';
|
|
4
|
+
interface AnchorValue {
|
|
5
|
+
seriesId: string;
|
|
6
|
+
annotationY: number;
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
}
|
|
10
|
+
interface SeriesGeometry {
|
|
11
|
+
path: TrackSeriesPath;
|
|
12
|
+
values: NumericGeometry;
|
|
13
|
+
old?: {
|
|
14
|
+
path: TrackSeriesPath;
|
|
15
|
+
values: NumericGeometry;
|
|
16
|
+
};
|
|
17
|
+
opacity: number;
|
|
18
|
+
}
|
|
19
|
+
export interface TrackPresentation {
|
|
20
|
+
target: TrackLayout;
|
|
21
|
+
series: Map<string, SeriesGeometry>;
|
|
22
|
+
xDomain: [number, number];
|
|
23
|
+
yDomains: [number, number][];
|
|
24
|
+
anchors: Map<string, AnchorValue>;
|
|
25
|
+
clips: Map<string, {
|
|
26
|
+
id: string;
|
|
27
|
+
x: number;
|
|
28
|
+
width: number;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export declare function staticTrack(track: TrackLayout, annotations: WaveformAnnotation[], previous?: TrackPresentation, refreshAnchors?: boolean): TrackPresentation;
|
|
32
|
+
export declare function hasThirdGeometry(from: TrackPresentation): boolean;
|
|
33
|
+
export declare function transitionTrack(from: TrackPresentation, to: TrackPresentation, p: number, terminal: boolean): TrackPresentation;
|
|
34
|
+
export declare function projectTrack(state: TrackPresentation): TrackLayout;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type AnimationContext } from './context';
|
|
2
|
+
export declare function useWaveformAnimations(context: AnimationContext): {
|
|
3
|
+
presentationTracks: import("vue").ComputedRef<import("../core").TrackLayout[]>;
|
|
4
|
+
presentationAnnotations: import("vue").ComputedRef<{
|
|
5
|
+
seriesOpacity: number;
|
|
6
|
+
animationStyle?: import("../..").AnnotationAnimationState;
|
|
7
|
+
leaving?: boolean;
|
|
8
|
+
annotation: import("..").WaveformAnnotation;
|
|
9
|
+
trackIndex: number;
|
|
10
|
+
anchorX: number;
|
|
11
|
+
anchorY: number;
|
|
12
|
+
placement: import("../annotation").AnnotationPlacement;
|
|
13
|
+
lines: string[];
|
|
14
|
+
box: import("../annotation").AnnotationBoxLayout;
|
|
15
|
+
style: {
|
|
16
|
+
borderColor: string;
|
|
17
|
+
textColor: string;
|
|
18
|
+
backgroundColor: string;
|
|
19
|
+
};
|
|
20
|
+
}[]>;
|
|
21
|
+
paginationOpacity: import("vue").ShallowRef<number, number>;
|
|
22
|
+
stabilizeAnimations: (event?: Event) => void;
|
|
23
|
+
wrap: <T extends object>(commands: T) => T;
|
|
24
|
+
wrapPagination: (goToPage: (page: number) => void, count: import("vue").ComputedRef<number>) => (page: number) => void;
|
|
25
|
+
prepareExport: () => void;
|
|
26
|
+
releaseExport: () => void;
|
|
27
|
+
};
|
|
@@ -6,12 +6,12 @@ interface Props {
|
|
|
6
6
|
}
|
|
7
7
|
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
8
8
|
edit: () => any;
|
|
9
|
-
delete: () => any;
|
|
10
9
|
close: () => any;
|
|
10
|
+
delete: () => any;
|
|
11
11
|
}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
|
|
12
12
|
onEdit?: (() => any) | undefined;
|
|
13
|
-
onDelete?: (() => any) | undefined;
|
|
14
13
|
onClose?: (() => any) | undefined;
|
|
14
|
+
onDelete?: (() => any) | undefined;
|
|
15
15
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
16
|
declare const _default: typeof __VLS_export;
|
|
17
17
|
export default _default;
|
|
@@ -48,6 +48,13 @@ export interface AnnotationBoxLayout {
|
|
|
48
48
|
}
|
|
49
49
|
export type AnnotationPlacement = 'top' | 'bottom' | 'right' | 'left' | 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
|
|
50
50
|
export interface RenderedAnnotation {
|
|
51
|
+
animationStyle?: {
|
|
52
|
+
opacity: number;
|
|
53
|
+
scale: number;
|
|
54
|
+
offsetY: number;
|
|
55
|
+
};
|
|
56
|
+
leaving?: boolean;
|
|
57
|
+
seriesOpacity?: number;
|
|
51
58
|
annotation: WaveformAnnotation;
|
|
52
59
|
trackIndex: number;
|
|
53
60
|
anchorX: number;
|
|
@@ -10,6 +10,8 @@ interface Context {
|
|
|
10
10
|
};
|
|
11
11
|
version: () => unknown;
|
|
12
12
|
ready: () => boolean;
|
|
13
|
+
prepare?: () => void;
|
|
14
|
+
release?: () => void;
|
|
13
15
|
}
|
|
14
16
|
export declare function useChartImageExport(c: Context): {
|
|
15
17
|
exportImage: (options?: WaveformImageExportOptions) => Promise<Blob>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { WaveformAmplitudeLimit, WaveformAmplitudeLimits } from '../../types';
|
|
2
|
+
export declare function normalizeAmplitudeLimit(limit?: WaveformAmplitudeLimit): WaveformAmplitudeLimit | undefined;
|
|
3
|
+
export declare function mergeAmplitudeLimits(series: readonly {
|
|
4
|
+
id: string;
|
|
5
|
+
}[], limits?: WaveformAmplitudeLimits): WaveformAmplitudeLimit | undefined;
|
|
6
|
+
export declare function applyAmplitudeLimits(padded: [number, number], limit: WaveformAmplitudeLimit, automatic?: [number, number]): [number, number];
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import type { WaveformOverlayMode } from '../../types';
|
|
1
|
+
import type { WaveformAmplitudeLimit, WaveformAmplitudeLimits, WaveformOverlayMode } from '../../types';
|
|
2
2
|
import type { DisplaySeries, DisplayTrack, TrackLayout } from './types';
|
|
3
3
|
import { type WaveformYDomain } from './yDomain';
|
|
4
|
+
export { resolveYAxisTicks, type ResolvedYAxisTicks } from './yAxisTicks';
|
|
4
5
|
import { type YAxisPaddingOptions } from './yAxisPadding';
|
|
5
6
|
export { MAX_MULTI_Y_AXIS_COUNT } from './constants';
|
|
6
7
|
export declare function resolveYAxisTickCount(_plotHeight: number, splitNumber?: number): number;
|
|
7
|
-
export interface ResolvedYAxisTicks {
|
|
8
|
-
domain: [number, number];
|
|
9
|
-
values: number[];
|
|
10
|
-
}
|
|
11
|
-
export declare function resolveYAxisTicks(domain: [number, number], tickCount?: number, nice?: boolean): ResolvedYAxisTicks;
|
|
12
8
|
export declare function formatYAxisTickLabel(value: number, domain: [number, number], tickValues: readonly number[], unit?: string, side?: 'left' | 'right'): string;
|
|
13
9
|
/** Name spacing excludes scientific multipliers; outer clearance measures the full label. */
|
|
14
10
|
export declare function formatYAxisTickLayoutLabel(value: number, domain: [number, number], tickValues: readonly number[], unit?: string): string;
|
|
@@ -18,6 +14,7 @@ export interface YAxisSeriesGroup {
|
|
|
18
14
|
seriesList: DisplaySeries[];
|
|
19
15
|
domain: [number, number];
|
|
20
16
|
fixed: boolean;
|
|
17
|
+
amplitudeLimit?: WaveformAmplitudeLimit;
|
|
21
18
|
maximumTick?: number;
|
|
22
19
|
minimumTick?: number;
|
|
23
20
|
}
|
|
@@ -30,8 +27,8 @@ export interface YAxisSlot {
|
|
|
30
27
|
}
|
|
31
28
|
export declare function buildYAxisSeriesGroups(track: DisplayTrack, overlayMode: WaveformOverlayMode): YAxisSeriesGroup[];
|
|
32
29
|
export declare function resolveYAxisSeriesGroups(track: DisplayTrack, overlayMode: WaveformOverlayMode, yDomain?: WaveformYDomain, yDomains?: Record<string, WaveformYDomain>): YAxisSeriesGroup[];
|
|
33
|
-
export declare function resolveRenderedYAxisSeriesGroups(track: DisplayTrack, overlayMode: WaveformOverlayMode, yDomain?: WaveformYDomain, yDomains?: Record<string, WaveformYDomain>, viewportYDomains?: Record<string, [number, number]>, padding?: YAxisPaddingOptions | number): YAxisSeriesGroup[];
|
|
34
|
-
export declare function axisTextMetrics(domain: [number, number], nice?: boolean, tickValues?: number[], unit?: string, tickCount?: number, includeWithoutLastTick?: boolean, measureTextWidth?: (text: string) => number, maximumTick?: number, minimumTick?: number): {
|
|
30
|
+
export declare function resolveRenderedYAxisSeriesGroups(track: DisplayTrack, overlayMode: WaveformOverlayMode, yDomain?: WaveformYDomain, yDomains?: Record<string, WaveformYDomain>, viewportYDomains?: Record<string, [number, number]>, padding?: YAxisPaddingOptions | number, amplitudeLimits?: WaveformAmplitudeLimits): YAxisSeriesGroup[];
|
|
31
|
+
export declare function axisTextMetrics(domain: [number, number], nice?: boolean, tickValues?: number[], unit?: string, tickCount?: number, includeWithoutLastTick?: boolean, measureTextWidth?: (text: string) => number, maximumTick?: number, minimumTick?: number, amplitudeLimit?: WaveformAmplitudeLimit): {
|
|
35
32
|
tickTextWidth: number;
|
|
36
33
|
titleTextWidth: number;
|
|
37
34
|
};
|
|
@@ -44,7 +41,7 @@ export declare function measureTrackYAxisClearance(track: DisplayTrack, overlayM
|
|
|
44
41
|
* Reserves stable Y-axis positions for every visible track on the current page.
|
|
45
42
|
* Slots are ordered from the plot edge outward for each side.
|
|
46
43
|
*/
|
|
47
|
-
export declare function buildYAxisSlots(tracks: readonly DisplayTrack[], overlayMode: WaveformOverlayMode, yDomain?: WaveformYDomain, yDomains?: Record<string, WaveformYDomain>, tickCount?: number, nice?: boolean, includeWithoutLastTick?: boolean, viewportYDomains?: Record<string, [number, number]>, padding?: YAxisPaddingOptions | number, showUnits?: boolean, measureTextWidth?: (text: string) => number): {
|
|
44
|
+
export declare function buildYAxisSlots(tracks: readonly DisplayTrack[], overlayMode: WaveformOverlayMode, yDomain?: WaveformYDomain, yDomains?: Record<string, WaveformYDomain>, tickCount?: number, nice?: boolean, includeWithoutLastTick?: boolean, viewportYDomains?: Record<string, [number, number]>, padding?: YAxisPaddingOptions | number, showUnits?: boolean, measureTextWidth?: (text: string) => number, amplitudeLimits?: WaveformAmplitudeLimits): {
|
|
48
45
|
slots: YAxisSlot[];
|
|
49
46
|
clearance: {
|
|
50
47
|
left: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type YAxisPaddingOptions } from './yAxisPadding';
|
|
2
2
|
import { type ZoomTransform } from 'd3';
|
|
3
3
|
import { type ResolvedWaveformRenderingOptions } from '../../core/rendering';
|
|
4
|
-
import type { WaveformDisplayMode, WaveformOverlayMode, WaveformPoint, WaveformXDomainStrategy, WaveformXAxisLabelFormatter } from '../../types';
|
|
4
|
+
import type { WaveformAmplitudeLimits, WaveformDisplayMode, WaveformOverlayMode, WaveformPoint, WaveformXDomainStrategy, WaveformXAxisLabelFormatter } from '../../types';
|
|
5
5
|
import { type GridCellGeometry, type NormalizedWaveformGridOptions } from './grid';
|
|
6
6
|
import { type YAxisSlot } from './layout';
|
|
7
7
|
import type { DisplayTrack, TrackLayout } from './types';
|
|
@@ -20,6 +20,7 @@ export interface BuildTrackLayoutsOptions {
|
|
|
20
20
|
initialXDomains?: Record<string, [number, number]>;
|
|
21
21
|
xDomainStrategy?: WaveformXDomainStrategy;
|
|
22
22
|
integerZoom?: boolean;
|
|
23
|
+
amplitudeLimits?: WaveformAmplitudeLimits;
|
|
23
24
|
fixedYDomain?: [number, number];
|
|
24
25
|
fixedYDomains?: Record<string, [number, number]>;
|
|
25
26
|
yDomains?: Record<string, [number, number]>;
|
|
@@ -40,6 +41,7 @@ export interface BuildTrackLayoutsOptions {
|
|
|
40
41
|
useNonEmptyBottomTracks?: boolean;
|
|
41
42
|
compactYAxisLayout?: boolean;
|
|
42
43
|
showAxisUnits?: boolean;
|
|
44
|
+
domainTimeUnit?: 's' | 'ms';
|
|
43
45
|
}
|
|
44
46
|
export declare function buildTrackLayouts(options: BuildTrackLayoutsOptions): TrackLayout[];
|
|
45
47
|
export {};
|
|
@@ -37,6 +37,14 @@ export interface DisplayTrack {
|
|
|
37
37
|
export interface TrackSeriesPath {
|
|
38
38
|
series: DisplaySeries;
|
|
39
39
|
path: string | null;
|
|
40
|
+
lineRenderPoints?: WaveformPoint[];
|
|
41
|
+
presentationKey?: string;
|
|
42
|
+
opacity?: number;
|
|
43
|
+
animationClip?: {
|
|
44
|
+
id: string;
|
|
45
|
+
x: number;
|
|
46
|
+
width: number;
|
|
47
|
+
};
|
|
40
48
|
pointRenderPoints: WaveformPoint[];
|
|
41
49
|
errorBarRenderPoints: WaveformPoint[];
|
|
42
50
|
yScale: ScaleLinear<number, number>;
|
|
@@ -210,6 +210,26 @@ export declare function useWaveformChartController(inputProps: ResolvedWaveformC
|
|
|
210
210
|
setTitleMeasureElement: (element: Element | ComponentPublicInstance | null) => void;
|
|
211
211
|
setSharedOverlayElement: (element: Element | ComponentPublicInstance | null) => void;
|
|
212
212
|
exportImage: (options?: import("../..").WaveformImageExportOptions) => Promise<Blob>;
|
|
213
|
+
presentationTracks: import("./types").TrackLayout[];
|
|
214
|
+
presentationAnnotations: {
|
|
215
|
+
seriesOpacity: number;
|
|
216
|
+
animationStyle?: import("../..").AnnotationAnimationState;
|
|
217
|
+
leaving?: boolean;
|
|
218
|
+
annotation: import("..").WaveformAnnotation;
|
|
219
|
+
trackIndex: number;
|
|
220
|
+
anchorX: number;
|
|
221
|
+
anchorY: number;
|
|
222
|
+
placement: import("../annotation").AnnotationPlacement;
|
|
223
|
+
lines: string[];
|
|
224
|
+
box: import("../annotation").AnnotationBoxLayout;
|
|
225
|
+
style: {
|
|
226
|
+
borderColor: string;
|
|
227
|
+
textColor: string;
|
|
228
|
+
backgroundColor: string;
|
|
229
|
+
};
|
|
230
|
+
}[];
|
|
231
|
+
paginationOpacity: number;
|
|
232
|
+
stabilizeAnimations: (event?: Event) => void;
|
|
213
233
|
controlState: import("../..").WaveformControlState;
|
|
214
234
|
getControlState: () => import("../..").WaveformControlState;
|
|
215
235
|
execute: (action: import("../..").WaveformControlAction, target?: import("../..").WaveformControlTarget, domain?: [number, number], source?: "toolbar" | "api") => import("../..").WaveformControlResult;
|
|
@@ -245,7 +265,6 @@ export declare function useWaveformChartController(inputProps: ResolvedWaveformC
|
|
|
245
265
|
updateViewportDrag: (event: PointerEvent) => void;
|
|
246
266
|
finishViewportDrag: (event: PointerEvent) => void;
|
|
247
267
|
cancelViewportDrag: (event?: PointerEvent) => void;
|
|
248
|
-
requestViewportReset: (event: MouseEvent) => void;
|
|
249
268
|
toggleSeriesVisibility: (seriesId: string) => void;
|
|
250
269
|
changeDraftSeries: (seriesId: string) => void;
|
|
251
270
|
changeDraftTime: (displayValue: string) => void;
|
|
@@ -367,6 +386,7 @@ export declare function useWaveformChartController(inputProps: ResolvedWaveformC
|
|
|
367
386
|
maxZoomScale?: number | null | undefined;
|
|
368
387
|
initialXDomains?: Record<string, [number, number]> | undefined;
|
|
369
388
|
xDomainStrategy: import("../..").WaveformXDomainStrategy;
|
|
389
|
+
amplitudeLimits?: import("../..").WaveformAmplitudeLimits | undefined;
|
|
370
390
|
yDomain?: [number, number] | undefined;
|
|
371
391
|
yDomains?: Record<string, [number, number]> | undefined;
|
|
372
392
|
timeUnit: "s" | "ms";
|
|
@@ -387,5 +407,10 @@ export declare function useWaveformChartController(inputProps: ResolvedWaveformC
|
|
|
387
407
|
cleanView: boolean;
|
|
388
408
|
presentationMode: boolean;
|
|
389
409
|
zeroLine: import("..").WaveformZeroLineOptions;
|
|
410
|
+
animationEnabled?: boolean | undefined;
|
|
411
|
+
animation?: import("../..").WaveformEnterAnimationOptions | undefined;
|
|
412
|
+
animationUpdate?: import("../..").WaveformUpdateAnimationOptions | undefined;
|
|
413
|
+
animationAnnotation?: import("../..").WaveformAnnotationAnimationOptions | undefined;
|
|
414
|
+
animationThreshold?: number | undefined;
|
|
390
415
|
};
|
|
391
416
|
export type WaveformChartController = ReturnType<typeof useWaveformChartController>;
|
|
@@ -18,5 +18,5 @@ export interface PreparedWaveformSeries {
|
|
|
18
18
|
yDomain: [number, number];
|
|
19
19
|
hasErrorPoints: boolean;
|
|
20
20
|
}
|
|
21
|
-
export declare function prepareWaveformSeries(data: WaveformData): PreparedWaveformSeries[];
|
|
22
|
-
export declare function usePreparedWaveformSeries(data: () => WaveformData, onBeforeDataChange: () => void, onDataChange: () => void): import("vue").ShallowRef<PreparedWaveformSeries[], PreparedWaveformSeries[]>;
|
|
21
|
+
export declare function prepareWaveformSeries(data: WaveformData, retainEmpty?: boolean): PreparedWaveformSeries[];
|
|
22
|
+
export declare function usePreparedWaveformSeries(data: () => WaveformData, onBeforeDataChange: () => void, onDataChange: () => void, retainEmpty?: () => boolean): import("vue").ShallowRef<PreparedWaveformSeries[], PreparedWaveformSeries[]>;
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import type { LifecycleContext } from './useWaveformChartLifecycle';
|
|
2
|
-
export declare function useWaveformMeasurements(context: Pick<LifecycleContext, 'container' | 'titleMeasureElement' | 'resizeObserver' | 'observedWidth' | 'observedHeight' | 'measuredTitleWidth' | 'measuredTitleHeight' | 'resolvedTitleText' | 'titleAreaReserved' | 'titleMeasureStyle'
|
|
2
|
+
export declare function useWaveformMeasurements(context: Pick<LifecycleContext, 'container' | 'titleMeasureElement' | 'resizeObserver' | 'observedWidth' | 'observedHeight' | 'measuredTitleWidth' | 'measuredTitleHeight' | 'resolvedTitleText' | 'titleAreaReserved' | 'titleMeasureStyle'>, resizeHooks?: {
|
|
3
|
+
beforeResize?: () => void;
|
|
4
|
+
afterResize?: () => void;
|
|
5
|
+
}): void;
|
|
@@ -14,6 +14,8 @@ interface SamplingContext {
|
|
|
14
14
|
linePointOverrides: ShallowRef<Record<string, WaveformPoint[]>>;
|
|
15
15
|
}
|
|
16
16
|
export declare function useWaveformRenderSampling(context: SamplingContext): {
|
|
17
|
+
requestSignature: ComputedRef<string>;
|
|
18
|
+
state: ComputedRef<"error" | "pending" | "success" | "fallback">;
|
|
17
19
|
linePointOverrides: ShallowRef<Record<string, WaveformPoint[]>>;
|
|
18
20
|
ready: () => boolean;
|
|
19
21
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { WaveformAnimationProps } from '../../animation/types';
|
|
1
2
|
import type { WaveformToolbarOptions, WaveformControlState } from '../../types/controls';
|
|
2
|
-
import type { WaveformAnnotation, WaveformAxesOptions, WaveformData, WaveformDisplayMode, WaveformUnitDisplayMode, WaveformLayoutPreset, WaveformFrameStyle, WaveformInteractionMode, WaveformLegendOptions, WaveformOverlayMode, WaveformPlotMargin, WaveformPoint, WaveformRenderingOptions, WaveformSamplingBackend, WaveformSamplingDiagnostics, WaveformSamplingError, WaveformTitleOptions, WaveformXDomainStrategy, WaveformZeroLineOptions, WaveformZoomIntentPayload, WaveformZoomEndPayload, WaveformPanEndPayload, WaveformZoomResetPayload } from '../data/types';
|
|
3
|
+
import type { WaveformAmplitudeLimits, WaveformAnnotation, WaveformAxesOptions, WaveformData, WaveformDisplayMode, WaveformUnitDisplayMode, WaveformLayoutPreset, WaveformFrameStyle, WaveformInteractionMode, WaveformLegendOptions, WaveformOverlayMode, WaveformPlotMargin, WaveformPoint, WaveformRenderingOptions, WaveformSamplingBackend, WaveformSamplingDiagnostics, WaveformSamplingError, WaveformTitleOptions, WaveformXDomainStrategy, WaveformZeroLineOptions, WaveformZoomIntentPayload, WaveformZoomEndPayload, WaveformPanEndPayload, WaveformZoomResetPayload } from '../data/types';
|
|
3
4
|
import type { WaveformGridOptions } from './grid';
|
|
4
|
-
export interface WaveformChartProps {
|
|
5
|
+
export interface WaveformChartProps extends WaveformAnimationProps {
|
|
5
6
|
toolbar?: boolean | WaveformToolbarOptions;
|
|
6
7
|
data: WaveformData;
|
|
7
8
|
displayMode?: WaveformDisplayMode;
|
|
@@ -17,7 +18,7 @@ export interface WaveformChartProps {
|
|
|
17
18
|
lineColor?: string;
|
|
18
19
|
showTooltip?: boolean;
|
|
19
20
|
zoomable?: boolean;
|
|
20
|
-
/**
|
|
21
|
+
/** Prefer integer display-unit endpoints; preserve any window narrower than one unit. */
|
|
21
22
|
integerZoom?: boolean;
|
|
22
23
|
pannable?: boolean;
|
|
23
24
|
/** Global record bounds in seconds; enables horizontal panning beyond loaded data. */
|
|
@@ -28,6 +29,8 @@ export interface WaveformChartProps {
|
|
|
28
29
|
initialXDomain?: [number, number];
|
|
29
30
|
initialXDomains?: Record<string, [number, number]>;
|
|
30
31
|
xDomainStrategy?: WaveformXDomainStrategy;
|
|
32
|
+
/** Strict bounds per normalized series ID; active bounds override Y viewports. */
|
|
33
|
+
amplitudeLimits?: WaveformAmplitudeLimits;
|
|
31
34
|
yDomain?: [number, number];
|
|
32
35
|
yDomains?: Record<string, [number, number]>;
|
|
33
36
|
timeUnit?: 's' | 'ms';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { WaveformAmplitudeLimits } from '../../types';
|
|
1
2
|
import type { WaveformOverlayMode } from '../data/types';
|
|
2
3
|
import type { DisplayTrack } from './types';
|
|
3
4
|
import type { WaveformYDomain } from './yDomain';
|
|
@@ -8,4 +9,4 @@ export interface YAxisLayoutMetrics {
|
|
|
8
9
|
labelCenterX: number;
|
|
9
10
|
}
|
|
10
11
|
export declare function resolveViewportYDomains(displayMode: 'independent' | 'separated' | 'compact', chartTracks: DisplayTrack[], sharedYDomains: Record<string, [number, number]>, independentYDomains: Record<number, [number, number]>): Record<string, [number, number]>;
|
|
11
|
-
export declare function resolveYAxisLayoutMetrics(chartTracks: DisplayTrack[], overlayMode: WaveformOverlayMode, yDomain: WaveformYDomain | undefined, yDomains: Record<string, WaveformYDomain> | undefined, viewportYDomains: Record<string, [number, number]>, nice: boolean, tickCount: number, compact: boolean, padding?: YAxisPaddingOptions | number, showUnits?: boolean, measureTextWidth?: (text: string) => number): YAxisLayoutMetrics;
|
|
12
|
+
export declare function resolveYAxisLayoutMetrics(chartTracks: DisplayTrack[], overlayMode: WaveformOverlayMode, yDomain: WaveformYDomain | undefined, yDomains: Record<string, WaveformYDomain> | undefined, viewportYDomains: Record<string, [number, number]>, nice: boolean, tickCount: number, compact: boolean, padding?: YAxisPaddingOptions | number, showUnits?: boolean, measureTextWidth?: (text: string) => number, amplitudeLimits?: WaveformAmplitudeLimits): YAxisLayoutMetrics;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { WaveformAmplitudeLimit } from '../../types';
|
|
2
|
+
export interface ResolvedYAxisTicks {
|
|
3
|
+
domain: [number, number];
|
|
4
|
+
values: number[];
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveYAxisTicks(domain: [number, number], tickCount?: number, nice?: boolean, limit?: WaveformAmplitudeLimit): ResolvedYAxisTicks;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* 数据系统类型定义
|
|
3
3
|
* 重新导出 src/types 中的类型,方便组件内部使用
|
|
4
4
|
*/
|
|
5
|
-
export type { WaveformPoint, WaveformDisplayMode, WaveformUnitDisplayMode, WaveformLayoutPreset, WaveformOverlayMode, WaveformInteractionMode, WaveformXDomainStrategy, WaveformZoomIntentPayload, WaveformZoomEndPayload, WaveformPanEndPayload, WaveformZoomResetPayload, WaveformAnnotationStyle, WaveformAnnotation, WaveformSamplingMode, WaveformSamplingStrategy, WaveformSamplingOptions, WaveformSamplingBackend, WaveformSamplingDiagnostics, WaveformSamplingError, WaveformRenderingOptions, WaveformPlotMargin, WaveformTitleTextStyle, WaveformTitleOptions, WaveformLegendPosition, WaveformLegendOrientation, WaveformLegendOptions, WaveformFrameStyle, WaveformAxesOptions, WaveformZeroLineOptions, SingleWaveformData, WaveformLineType, WaveformLineStyle, WaveformPointType, WaveformErrorBarOptions, ResolvedWaveformErrorBarOptions, WaveformTypedValues, TypedSampleData, TypedPointData, WaveformSeries, WaveformData, NormalizedWaveformSeries, } from '../../types';
|
|
5
|
+
export type { WaveformAmplitudeLimit, WaveformAmplitudeLimits, WaveformPoint, WaveformDisplayMode, WaveformUnitDisplayMode, WaveformLayoutPreset, WaveformOverlayMode, WaveformInteractionMode, WaveformXDomainStrategy, WaveformZoomIntentPayload, WaveformZoomEndPayload, WaveformPanEndPayload, WaveformZoomResetPayload, WaveformAnnotationStyle, WaveformAnnotation, WaveformSamplingMode, WaveformSamplingStrategy, WaveformSamplingOptions, WaveformSamplingBackend, WaveformSamplingDiagnostics, WaveformSamplingError, WaveformRenderingOptions, WaveformPlotMargin, WaveformTitleTextStyle, WaveformTitleOptions, WaveformLegendPosition, WaveformLegendOrientation, WaveformLegendOptions, WaveformFrameStyle, WaveformAxesOptions, WaveformZeroLineOptions, SingleWaveformData, WaveformLineType, WaveformLineStyle, WaveformPointType, WaveformErrorBarOptions, ResolvedWaveformErrorBarOptions, WaveformTypedValues, TypedSampleData, TypedPointData, WaveformSeries, WaveformData, NormalizedWaveformSeries, } from '../../types';
|
|
6
6
|
export type { WaveformGridOptions, WaveformGridLineOptions, WaveformGridTrackLines, } from '../core/grid';
|
|
7
7
|
export { normalizeWaveformData, normalizeWaveformSeries } from '../../core';
|
|
@@ -4,9 +4,9 @@ export interface IntegerZoomOptions {
|
|
|
4
4
|
}
|
|
5
5
|
export declare function integerZoomTicks(domain: [number, number], count: number, options: IntegerZoomOptions): number[];
|
|
6
6
|
export declare function formatIntegerZoomLabel(value: number): string;
|
|
7
|
-
/** Align outwards
|
|
7
|
+
/** Align outwards only when the displayed span reaches one unit. */
|
|
8
8
|
export declare function alignIntegerZoomDomain(domain: [number, number], options: IntegerZoomOptions): [number, number];
|
|
9
|
-
/** Recover
|
|
9
|
+
/** Recover endpoints after a D3 transform without applying a new zoom or changing pan span. */
|
|
10
10
|
export declare function normalizeIntegerZoomDomain(domain: [number, number], options: IntegerZoomOptions): [number, number];
|
|
11
|
-
/**
|
|
11
|
+
/** Integer viewports snap translation; sub-unit viewports pan freely across integers. */
|
|
12
12
|
export declare function alignIntegerPanDomain(domain: [number, number], options: IntegerZoomOptions): [number, number];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ResolvedWaveformChartProps } from '../core/waveformChartTypes';
|
|
2
|
+
import type { ZoomSeriesGroup } from './zoomConstraints';
|
|
3
|
+
export declare const sameZoomDomain: (a: [number, number], b: [number, number]) => boolean;
|
|
4
|
+
/** Toolbar and wheel steps share their scale factor and constraints. */
|
|
5
|
+
export declare function resolveStepZoomDomain(current: [number, number], action: 'zoom-in' | 'zoom-out', boundary: [number, number], groups: readonly ZoomSeriesGroup[], props: ResolvedWaveformChartProps, anchorRatio?: number): [number, number];
|
|
@@ -24,8 +24,6 @@ export interface ViewportContext {
|
|
|
24
24
|
isPresentationMode: ComputedRef<boolean>;
|
|
25
25
|
editorSeriesOptions: Ref<AnnotationSeriesCandidate[]>;
|
|
26
26
|
resolveInitialTrackDomain: (track: TrackLayout) => [number, number];
|
|
27
|
-
canZoomTrack: (track: TrackLayout) => boolean;
|
|
28
|
-
canZoomSharedTracks: () => boolean;
|
|
29
27
|
configureZoom: () => void;
|
|
30
28
|
cancelPendingZoom: () => void;
|
|
31
29
|
clearHover: () => void;
|
|
@@ -45,5 +43,4 @@ export declare function useWaveformViewport(context: ViewportContext): {
|
|
|
45
43
|
cancelViewportDrag: (event?: PointerEvent) => void;
|
|
46
44
|
resetViewport: (trackIndex?: number) => void;
|
|
47
45
|
setViewportDomain: (domain: [number, number], trackIndex?: number) => void;
|
|
48
|
-
requestViewportReset: (event: MouseEvent) => void;
|
|
49
46
|
};
|
|
@@ -23,8 +23,6 @@ interface ZoomContext {
|
|
|
23
23
|
export declare function useWaveformZoom(context: ZoomContext): {
|
|
24
24
|
cancelPendingZoom: () => void;
|
|
25
25
|
clearZoomBindings: (preservePendingWheel?: boolean) => void;
|
|
26
|
-
canZoomTrack: (track: TrackLayout) => boolean;
|
|
27
|
-
canZoomSharedTracks: () => boolean;
|
|
28
26
|
configureZoom: () => void;
|
|
29
27
|
prepareForDataChange: () => void;
|
|
30
28
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { TrackLayout } from '../core/types';
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
track: TrackLayout;
|
|
4
|
+
paginationOpacity?: number;
|
|
4
5
|
clipPathId: string;
|
|
5
6
|
};
|
|
6
7
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -3,6 +3,7 @@ import type { TrackLayout } from '../core/types';
|
|
|
3
3
|
import type { WaveformDisplayMode, WaveformInteractionMode } from '../data/types';
|
|
4
4
|
interface Props {
|
|
5
5
|
track: TrackLayout;
|
|
6
|
+
paginationOpacity?: number;
|
|
6
7
|
clipPathId: string;
|
|
7
8
|
innerWidth: number;
|
|
8
9
|
zoomable: boolean;
|
|
@@ -23,25 +24,25 @@ interface Props {
|
|
|
23
24
|
zeroLine?: Required<WaveformZeroLineOptions>;
|
|
24
25
|
}
|
|
25
26
|
declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
26
|
-
contextmenu: (mouseEvent: MouseEvent) => any;
|
|
27
27
|
click: (mouseEvent: MouseEvent) => any;
|
|
28
|
+
contextmenu: (mouseEvent: MouseEvent) => any;
|
|
28
29
|
"pointer-move": (pointerEvent: PointerEvent) => any;
|
|
29
30
|
"pointer-down": (pointerEvent: PointerEvent) => any;
|
|
30
31
|
"pointer-up": (pointerEvent: PointerEvent) => any;
|
|
31
32
|
"pointer-cancel": (pointerEvent: PointerEvent) => any;
|
|
32
33
|
"pointer-leave": () => any;
|
|
33
34
|
}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
|
|
34
|
-
onContextmenu?: ((mouseEvent: MouseEvent) => any) | undefined;
|
|
35
35
|
onClick?: ((mouseEvent: MouseEvent) => any) | undefined;
|
|
36
|
+
onContextmenu?: ((mouseEvent: MouseEvent) => any) | undefined;
|
|
36
37
|
"onPointer-move"?: ((pointerEvent: PointerEvent) => any) | undefined;
|
|
37
38
|
"onPointer-down"?: ((pointerEvent: PointerEvent) => any) | undefined;
|
|
38
39
|
"onPointer-up"?: ((pointerEvent: PointerEvent) => any) | undefined;
|
|
39
40
|
"onPointer-cancel"?: ((pointerEvent: PointerEvent) => any) | undefined;
|
|
40
41
|
"onPointer-leave"?: (() => any) | undefined;
|
|
41
42
|
}>, {
|
|
43
|
+
interactionMode: WaveformInteractionMode;
|
|
42
44
|
cleanView: boolean;
|
|
43
45
|
zeroLine: Required<WaveformZeroLineOptions>;
|
|
44
|
-
interactionMode: WaveformInteractionMode;
|
|
45
46
|
interactive: boolean;
|
|
46
47
|
showAxisUnits: boolean;
|
|
47
48
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Axis, NumberValue, ScaleLinear } from 'd3';
|
|
2
|
+
/** Avoid invalidating native SVG layout when an attribute already has the required value. */
|
|
3
|
+
export declare function updateSvgAttribute(element: Element, name: string, value: string | number | null): void;
|
|
4
|
+
/** Domain animation moves existing ticks; unchanged labels keep their native text nodes. */
|
|
5
|
+
export declare function updateAxis(element: SVGGElement, axis: Axis<NumberValue>, scale: ScaleLinear<number, number>, ticks: number[], orientation: 'bottom' | 'left' | 'right', format: (value: number) => string): void;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ScaleLinear } from 'd3';
|
|
2
|
+
/** Keep each grid line independently discoverable by the axis collision pass. */
|
|
3
|
+
export declare function updateGrid(group: SVGGElement, ticks: readonly number[], scale: ScaleLinear<number, number>, direction: 'vertical' | 'horizontal', extent: number, color: string | undefined): void;
|
|
@@ -6,6 +6,8 @@ interface Box {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function labelsOverlap(a: Box, b: Box): boolean;
|
|
8
8
|
export declare function linesOverlap(a: number, b: number, widthA?: number, widthB?: number): boolean;
|
|
9
|
+
/** Coalesce sibling axes after Vue's current DOM patch, without adding a late animation frame. */
|
|
10
|
+
export declare function scheduleMaximumTickVisibility(svg: SVGSVGElement): void;
|
|
9
11
|
/** Apply after axes and grid are in the DOM; never feed the filtered set back into layout. */
|
|
10
12
|
export declare function updateMaximumTickVisibility(svg: SVGSVGElement): void;
|
|
11
13
|
export {};
|
|
@@ -14,7 +14,7 @@ export interface NormalizedWaveformSourceSeries extends Omit<NormalizedWaveformS
|
|
|
14
14
|
source: WaveformPointSource;
|
|
15
15
|
}
|
|
16
16
|
/** Internal normalized series which preserves compact TypedArray storage for chart rendering. */
|
|
17
|
-
export declare function normalizeWaveformSeriesSources(data: WaveformData): NormalizedWaveformSourceSeries[];
|
|
17
|
+
export declare function normalizeWaveformSeriesSources(data: WaveformData, retainEmpty?: boolean): NormalizedWaveformSourceSeries[];
|
|
18
18
|
/**
|
|
19
19
|
* 规范化波形系列数据
|
|
20
20
|
* @param data 输入数据(单波形或多通道)
|