nhanh-pure-function 3.0.7 → 4.1.0

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 (43) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +20 -6
  3. package/dist/Animate/index.d.ts +11 -1
  4. package/dist/Browser/Runtime/index.d.ts +2 -0
  5. package/dist/Browser/Runtime/soundEffects.d.ts +47 -0
  6. package/dist/Browser/Runtime/webSocketClient.d.ts +68 -0
  7. package/dist/Browser/index.d.ts +34 -0
  8. package/dist/Browser/type.d.ts +16 -0
  9. package/dist/Canvas/{LayerGroup → Axis/LayerGroup}/index.d.ts +2 -2
  10. package/dist/Canvas/{LayerGroup → Axis/LayerGroup}/layer.d.ts +9 -6
  11. package/dist/Canvas/Axis/OverlayCreator/index.d.ts +52 -0
  12. package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/index.d.ts +2 -2
  13. package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/public/overlay.d.ts +3 -3
  14. package/dist/Canvas/{core → Axis/core}/axis.d.ts +1 -1
  15. package/dist/Canvas/{core → Axis/core}/basedata.d.ts +1 -1
  16. package/dist/Canvas/{core → Axis/core}/quikmethod.d.ts +1 -1
  17. package/dist/Canvas/{core → Axis/core}/style.d.ts +1 -1
  18. package/dist/Canvas/{index.d.ts → Axis/index.d.ts} +11 -8
  19. package/dist/Canvas/{index.types.d.ts → Axis/index.types.d.ts} +3 -1
  20. package/dist/Canvas/{public → Axis/public}/basedata.d.ts +5 -5
  21. package/dist/Canvas/Axis/public/viewFit.d.ts +28 -0
  22. package/dist/Canvas/TimeAxis/index.d.ts +153 -0
  23. package/dist/Canvas/TimeAxis/type.d.ts +39 -0
  24. package/dist/index.cjs.js +3 -3
  25. package/dist/index.d.ts +2 -1
  26. package/dist/index.es.js +2689 -1882
  27. package/package.json +5 -5
  28. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/arc.d.ts +0 -0
  29. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/arcTo.d.ts +0 -0
  30. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/bezierCurve.d.ts +0 -0
  31. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/custom.d.ts +0 -0
  32. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/ellipse.d.ts +0 -0
  33. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/line.d.ts +0 -0
  34. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/point.d.ts +0 -0
  35. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/polygon.d.ts +0 -0
  36. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/public/geometricBoundary.d.ts +0 -0
  37. /package/dist/Canvas/{OverlayGroup → Axis/OverlayGroup}/text.d.ts +0 -0
  38. /package/dist/Canvas/{common.type.d.ts → Axis/common.type.d.ts} +0 -0
  39. /package/dist/Canvas/{core → Axis/core}/draw.d.ts +0 -0
  40. /package/dist/Canvas/{core → Axis/core}/event.d.ts +0 -0
  41. /package/dist/Canvas/{public → Axis/public}/eventController.d.ts +0 -0
  42. /package/dist/Canvas/{public → Axis/public}/eventControllerBasedata.d.ts +0 -0
  43. /package/dist/Canvas/{public → Axis/public}/tools.d.ts +0 -0
@@ -0,0 +1,153 @@
1
+ import { TimeAxisAnimationCurve, TimeAxisFillStyle, TimeAxisMouseTimeInfo } from './type';
2
+ declare class TimeAxisCanvasManager {
3
+ /** Canvas DOM id(用于 `document.getElementById` 定位) */
4
+ private id;
5
+ /** 绑定到的 canvas 元素 */
6
+ private canvas?;
7
+ /** Canvas 2D 绘制上下文(可能为 null) */
8
+ private ctx;
9
+ /** 当前渲染像素宽度(会随尺寸变化更新) */
10
+ private width;
11
+ /** 当前渲染像素高度(会随尺寸变化更新) */
12
+ private height;
13
+ /** 尺寸变化监听器,用于驱动重绘 */
14
+ private resizeObserver?;
15
+ /** @param id canvas DOM id(通过 getElementById 定位) */
16
+ constructor(id: string);
17
+ /**
18
+ * 初始化 canvas 引用/上下文,并同步画布像素尺寸与注册 resize 监听
19
+ * @returns true 表示初始化成功;false 表示找不到 canvas 或上下文
20
+ */
21
+ init(onResize: () => void): boolean;
22
+ /** 获取当前 CanvasRenderingContext2D */
23
+ getContext(): CanvasRenderingContext2D | null;
24
+ /** 获取当前 canvas DOM 元素 */
25
+ getCanvas(): HTMLCanvasElement | undefined;
26
+ /** 获取当前画布像素尺寸 */
27
+ getSize(): {
28
+ width: number;
29
+ height: number;
30
+ };
31
+ /** 根据元素在页面中的尺寸同步 canvas.width/canvas.height */
32
+ syncCanvasSize(): void;
33
+ /** 注册 ResizeObserver,当尺寸变化时同步尺寸并触发外部重绘 */
34
+ private setupResizeListener;
35
+ /** 销毁 ResizeObserver,释放资源 */
36
+ destroy(): void;
37
+ }
38
+ declare class TimeAxisBase {
39
+ /** 负责 canvas 引用、2D context 获取与尺寸同步 */
40
+ protected canvasManager: TimeAxisCanvasManager;
41
+ /** 鼠标拖拽:把横向像素位移映射到 currentTime 偏移 */
42
+ private offsetDrag?;
43
+ /** 鼠标滚轮缩放:调整 timeSpacing,并保持缩放锚点时间不变 */
44
+ private wheelZoom?;
45
+ /** 鼠标指示:把鼠标位置映射到时间并通知外部 UI */
46
+ private mouseTimeReporter?;
47
+ /** 外部回调:用于更新“鼠标时间提示/指示线”状态 */
48
+ onMouseTimeChange?: (info: TimeAxisMouseTimeInfo) => void;
49
+ /** centerTime 动画 runId:用于取消旧动画回调(拖拽开始时立即失效) */
50
+ private centerTimeAnimationRunId;
51
+ /** 当前时间轴的“左移/右移”基准时间(与 centerTime、画布 x 共同决定可视区间) */
52
+ private currentTime;
53
+ /** 时间轴主刻度间隔:单位 ms */
54
+ private timeSpacing;
55
+ /** timeSpacing 对应的像素距离:单位 px */
56
+ private timeSpacingInPixels;
57
+ /** 背景与坐标轴绘制样式 */
58
+ readonly styleConfig: {
59
+ backgroundColor: string;
60
+ axisColor: string;
61
+ textFont: string;
62
+ };
63
+ /** 刻度绘制比例与文本基线偏移 */
64
+ readonly tickConfig: {
65
+ heightMinor: number;
66
+ heightMajor: number;
67
+ labelOffsetY: number;
68
+ minorTicksPerMajor: number;
69
+ };
70
+ /**
71
+ * 创建时间轴引擎:会在构造后 `requestAnimationFrame` 初始化并开始渲染。
72
+ * @param id canvas DOM id
73
+ * @param onMouseTimeChange 鼠标移动时回调(用于显示/更新鼠标时间提示)
74
+ */
75
+ constructor(id: string, onMouseTimeChange?: (info: TimeAxisMouseTimeInfo) => void);
76
+ /**
77
+ * 用户自定义绘制回调:在绘制背景之后、绘制刻度之前执行
78
+ * 可用于叠加额外图形(如指示线、事件点等)
79
+ */
80
+ onDrawOverlay?: (ctx: CanvasRenderingContext2D, width: number, height: number) => void;
81
+ /** 初始化交互:拖拽平移、滚轮缩放、鼠标时间通知,并触发首次绘制 */
82
+ private init;
83
+ /** 重绘:先清理并绘制背景/叠加层,再绘制刻度与文本 */
84
+ private render;
85
+ /** 绘制背景(清屏 + 填充背景色) */
86
+ private renderBackground;
87
+ /** 绘制刻度与时间标签(按当前可视区间计算 start/end) */
88
+ private renderAxis;
89
+ /**
90
+ * 计算当前视口需要绘制的时间范围与对应像素区间。
91
+ * 返回值用于 `renderAxis()` 中的刻度循环。
92
+ */
93
+ private get axisDrawingRange();
94
+ /** 获取当前画布中心点对应的时间戳(ms) */
95
+ private get centerTime();
96
+ /** 设置中心时间戳,并据此反推 currentTime 以保持时间视图正确 */
97
+ private set centerTime(value);
98
+ /** 把画布内 x 像素换算为时间戳(ms) */
99
+ getTimeAtCanvasX(x: number): number;
100
+ /** 反向把时间与像素 x 绑定,调整 currentTime 使两者一致 */
101
+ private setTimeAtCanvasX;
102
+ /** 把时间戳(ms)换算为画布内 x 像素 */
103
+ getCanvasXAtTime(time: number): number;
104
+ /**
105
+ * 以动画方式把时间轴中心时间移动到目标值。
106
+ * 用户交互(拖拽/滚轮)会通过 runId 机制取消旧动画回调。
107
+ */
108
+ animateCenterTimeTo(targetCenterTime: number, options?: {
109
+ /** 动画持续的帧数(数值越大越“慢”、越容易感受到快慢) */
110
+ durationFrames?: number;
111
+ /** 动画曲线:入参 t∈[0,1],出参 easedT∈[0,1] */
112
+ curve?: TimeAxisAnimationCurve;
113
+ }): void;
114
+ /** 递增 runId,使正在进行的中心时间动画回调失效 */
115
+ private stopCenterTimeAnimation;
116
+ /** 销毁:清理交互监听器与释放 canvas 资源 */
117
+ destroy(): void;
118
+ }
119
+ /**
120
+ * 给使用方的绘制辅助类(Overlay 绘制)
121
+ * - 封装 time <-> x 的换算
122
+ * - 提供常用图形绘制方法(如按时间范围画圆角矩形)
123
+ */
124
+ export declare class _Canvas_TimeAxis extends TimeAxisBase {
125
+ /**
126
+ * 将填充样式解析为 ctx.fillStyle 可用的值(纯色或线性渐变)
127
+ * @param rect 矩形区域,用于计算渐变起止点
128
+ * @param fillStyle 纯色字符串或渐变配置
129
+ */
130
+ private resolveFillStyle;
131
+ /**
132
+ * 按时间范围绘制圆角矩形(常用于高亮某段时间区间)
133
+ */
134
+ drawTimeRangeRoundedRect(options: {
135
+ /** 区间起点时间戳(ms) */
136
+ startTimeMs: number;
137
+ /** 区间终点时间戳(ms) */
138
+ endTimeMs: number;
139
+ /** 矩形 y 坐标(像素,默认 1) */
140
+ y?: number;
141
+ /** 矩形高度(像素,默认使用画布高度 - 1) */
142
+ height?: number;
143
+ /** 圆角半径:可为单值或 canvas roundRect 支持的数组(默认 10) */
144
+ radius?: number | number[];
145
+ /** 填充色:不传则不填充,支持纯色或线性渐变 */
146
+ fillStyle?: TimeAxisFillStyle;
147
+ /** 描边色:不传则不描边 */
148
+ strokeStyle?: string;
149
+ /** 描边线宽(默认 1) */
150
+ lineWidth?: number;
151
+ }): void;
152
+ }
153
+ export default _Canvas_TimeAxis;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 鼠标时间提示信息
3
+ */
4
+ export type TimeAxisMouseTimeInfo = {
5
+ /** 是否显示指示线/时间提示 */
6
+ visible: boolean;
7
+ /** 鼠标在 canvas 内的 x(像素) */
8
+ canvasX: number;
9
+ /** 鼠标在 canvas 内的 y(像素) */
10
+ canvasY: number;
11
+ /** 鼠标位置对应的时间戳(ms) */
12
+ time: number;
13
+ };
14
+ /** 矩形区域(像素坐标) */
15
+ export type TimeAxisRect = {
16
+ x: number;
17
+ y: number;
18
+ width: number;
19
+ height: number;
20
+ };
21
+ /** 渐变颜色停靠点 */
22
+ export type TimeAxisGradientColorStop = {
23
+ color: string;
24
+ offset: number;
25
+ };
26
+ /** 线性渐变配置:x1/y1/x2/y2 为相对矩形的比例 [0,1],表示渐变起止方向 */
27
+ export type TimeAxisGradientFillStyle = {
28
+ x1: number;
29
+ x2: number;
30
+ y1: number;
31
+ y2: number;
32
+ colorStops: TimeAxisGradientColorStop[];
33
+ };
34
+ /** 填充样式:纯色或线性渐变 */
35
+ export type TimeAxisFillStyle = string | TimeAxisGradientFillStyle;
36
+ /**
37
+ * 时间轴动画曲线:入参 `t` 为 [0, 1],返回 eased 后的进度(也应为 [0, 1])
38
+ */
39
+ export type TimeAxisAnimationCurve = (t: number) => number;