nhanh-pure-function 4.0.0 → 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.
- package/dist/Animate/index.d.ts +11 -1
- package/dist/Browser/Runtime/index.d.ts +2 -0
- package/dist/Browser/Runtime/soundEffects.d.ts +47 -0
- package/dist/Browser/Runtime/webSocketClient.d.ts +68 -0
- package/dist/Browser/index.d.ts +34 -0
- package/dist/Browser/type.d.ts +16 -0
- package/dist/Canvas/TimeAxis/index.d.ts +9 -21
- package/dist/Canvas/TimeAxis/type.d.ts +39 -0
- package/dist/index.cjs.js +3 -3
- package/dist/index.es.js +854 -572
- package/package.json +1 -1
package/dist/Animate/index.d.ts
CHANGED
|
@@ -40,6 +40,16 @@ export declare function _Animate_CreateOscillator(initialMin: number, initialMax
|
|
|
40
40
|
* @param targetValue - 目标值
|
|
41
41
|
* @param stepCount - 动画步数
|
|
42
42
|
* @param callback - 每帧回调函数
|
|
43
|
-
* @param precision - 数值精度(默认
|
|
43
|
+
* @param precision - 数值精度(默认4位小数)
|
|
44
44
|
*/
|
|
45
45
|
export declare function _Animate_NumericTransition(startValue: number, targetValue: number, stepCount: number, callback: (currentValue: number) => void, precision?: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* 三次贝塞尔缓动(与 CSS `cubic-bezier(x1, y1, x2, y2)` 语义一致)
|
|
48
|
+
* 曲线端点为 (0,0) → (1,1),控制点为 (x1,y1)、(x2,y2)。
|
|
49
|
+
* @param x1 第一个控制点 x
|
|
50
|
+
* @param y1 第一个控制点 y
|
|
51
|
+
* @param x2 第二个控制点 x
|
|
52
|
+
* @param y2 第二个控制点 y
|
|
53
|
+
* @returns 接收归一化时间 `t ∈ [0,1]`,返回缓动后的进度 `∈ [0,1]`(一般情况)
|
|
54
|
+
*/
|
|
55
|
+
export declare function _Animate_CubicBezier(x1: number, y1: number, x2: number, y2: number): (t: number) => number;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** 资源映射类型 */
|
|
2
|
+
type Resource<T extends string> = Record<T, string>;
|
|
3
|
+
/** 播放配置 */
|
|
4
|
+
interface PlayOptions {
|
|
5
|
+
/** 是否无限循环播放 */
|
|
6
|
+
loop?: boolean;
|
|
7
|
+
/** 循环次数(优先级高于 loop,最少为 1 次) */
|
|
8
|
+
loopCount?: number;
|
|
9
|
+
}
|
|
10
|
+
/** 构造选项 */
|
|
11
|
+
interface SoundEffectsOptions<T extends string> {
|
|
12
|
+
/**
|
|
13
|
+
* 初始化时即 fetch 下载为 Blob,并将 `soundSources` 中对应 key 的地址替换为 blob URL
|
|
14
|
+
*/
|
|
15
|
+
holdKeys?: readonly T[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 音效管理类
|
|
19
|
+
* 负责音效的加载与播放
|
|
20
|
+
*/
|
|
21
|
+
export declare class _Browser_SoundEffects<T extends string> {
|
|
22
|
+
/** 音效资源地址映射(preload 成功后对应项会替换为 blob: URL) */
|
|
23
|
+
private soundSources;
|
|
24
|
+
/** 各 key 下载任务,避免重复发起 */
|
|
25
|
+
private readonly preloadTasks;
|
|
26
|
+
constructor(resource: Resource<T>, options?: SoundEffectsOptions<T>);
|
|
27
|
+
/**
|
|
28
|
+
* 下载指定 key 的音频为 Blob,并将 `soundSources[key]` 替换为 `URL.createObjectURL` 结果(与 holdKeys 同一逻辑)
|
|
29
|
+
*/
|
|
30
|
+
preload(key: T): Promise<void>;
|
|
31
|
+
preload(keys: readonly T[]): Promise<void>;
|
|
32
|
+
private fetchAndReplaceSource;
|
|
33
|
+
/**
|
|
34
|
+
* 根据 key 播放音效
|
|
35
|
+
* @param key 资源 key
|
|
36
|
+
* @param options 播放配置(循环等)
|
|
37
|
+
*/
|
|
38
|
+
play(key: T, options?: PlayOptions): (() => void) | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* 根据 URL 播放音效
|
|
41
|
+
* @param url 音频地址
|
|
42
|
+
* @param options 播放配置(循环等)
|
|
43
|
+
* @returns 停止播放的方法
|
|
44
|
+
*/
|
|
45
|
+
playUrl(url: string, options?: PlayOptions): (() => void) | undefined;
|
|
46
|
+
}
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** ping 配置 */
|
|
2
|
+
interface WebSocketClientPingConfig {
|
|
3
|
+
/** 是否启用 */
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
/** 间隔(毫秒) */
|
|
6
|
+
interval?: number;
|
|
7
|
+
/** 发送内容 */
|
|
8
|
+
content?: string;
|
|
9
|
+
}
|
|
10
|
+
/** WebSocket 客户端配置 */
|
|
11
|
+
interface WebSocketClientConfig {
|
|
12
|
+
url?: string;
|
|
13
|
+
/** true 启用并采用默认参数,或传入具体配置 */
|
|
14
|
+
ping?: boolean | WebSocketClientPingConfig;
|
|
15
|
+
/** 最大重试次数,默认 3 */
|
|
16
|
+
maxRetryCount?: number;
|
|
17
|
+
/** 重试间隔(毫秒),默认 1000 */
|
|
18
|
+
retryInterval?: number;
|
|
19
|
+
}
|
|
20
|
+
/** WebSocket客户端 */
|
|
21
|
+
export declare class _Browser_WebSocketClient {
|
|
22
|
+
/** WebSocket地址 */
|
|
23
|
+
url?: string;
|
|
24
|
+
/** WebSocket实例 */
|
|
25
|
+
private socket?;
|
|
26
|
+
/** 连接回调 */
|
|
27
|
+
onopen?: (ev: Event) => any;
|
|
28
|
+
/** 接收消息回调 */
|
|
29
|
+
onmessage?: (ev: MessageEvent) => any;
|
|
30
|
+
/** 错误回调 */
|
|
31
|
+
onerror?: (ev: Event) => any;
|
|
32
|
+
/** 关闭回调 */
|
|
33
|
+
onclose?: (ev: CloseEvent) => any;
|
|
34
|
+
/** ping 配置 */
|
|
35
|
+
readonly pingConfig: {
|
|
36
|
+
/** 是否启用 */
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
/** 间隔(毫秒) */
|
|
39
|
+
interval: number;
|
|
40
|
+
/** 发送内容 */
|
|
41
|
+
content: string;
|
|
42
|
+
};
|
|
43
|
+
/** ping 定时器 */
|
|
44
|
+
private pingTimer?;
|
|
45
|
+
/** 重试配置 */
|
|
46
|
+
readonly retryConfig: {
|
|
47
|
+
/** 最大次数 */
|
|
48
|
+
maxCount: number;
|
|
49
|
+
/** 当前次数 */
|
|
50
|
+
currentCount: number;
|
|
51
|
+
/** 间隔(毫秒) */
|
|
52
|
+
interval: number;
|
|
53
|
+
};
|
|
54
|
+
/** 是否准备完毕 */
|
|
55
|
+
get ready(): boolean;
|
|
56
|
+
constructor(config?: WebSocketClientConfig);
|
|
57
|
+
/** 开始ping */
|
|
58
|
+
private startPing;
|
|
59
|
+
/** 开始重试 */
|
|
60
|
+
private startRetry;
|
|
61
|
+
/** 开始 */
|
|
62
|
+
start(url: string): void;
|
|
63
|
+
/** 停止 */
|
|
64
|
+
stop(): void;
|
|
65
|
+
/** 发送信息 */
|
|
66
|
+
send: WebSocket["send"];
|
|
67
|
+
}
|
|
68
|
+
export {};
|
package/dist/Browser/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PaperType, WindowTarget } from '../Constant';
|
|
2
|
+
export * from './Runtime';
|
|
2
3
|
/**
|
|
3
4
|
* 获取帧率
|
|
4
5
|
* @param {(fps , frameTime)=>void} callback callback( 帧率 , 每帧时间 )
|
|
@@ -66,3 +67,36 @@ export declare class _Browser_SameOriginTabManager {
|
|
|
66
67
|
/** 获取所有已经打开的标签页 */
|
|
67
68
|
static getAllWindows(): Promise<string[]>;
|
|
68
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* 无操作(闲置)检测类
|
|
72
|
+
* 监听用户键盘、鼠标操作,更新用户活跃状态
|
|
73
|
+
* 支持注册/触发活跃/闲置状态的回调通知
|
|
74
|
+
*/
|
|
75
|
+
export declare class _Browser_IdleDetection {
|
|
76
|
+
/** 用户状态:active(活跃) / idle(闲置) */
|
|
77
|
+
status: "active" | "idle";
|
|
78
|
+
/** 活跃状态回调通知集合(key: 回调标识,value: 回调函数) */
|
|
79
|
+
readonly activeCallbacks: Map<string, () => void>;
|
|
80
|
+
/** 闲置状态回调通知集合(key: 回调标识,value: 回调函数) */
|
|
81
|
+
readonly idleCallbacks: Map<string, () => void>;
|
|
82
|
+
/** 闲置时间(分钟) */
|
|
83
|
+
idleTime: number;
|
|
84
|
+
/** 闲置判定定时器(5分钟无操作触发闲置状态) */
|
|
85
|
+
private timeoutTimer?;
|
|
86
|
+
constructor();
|
|
87
|
+
/**
|
|
88
|
+
* 重置闲置判定定时器
|
|
89
|
+
* 每次用户操作时重置,重新开始5分钟计时
|
|
90
|
+
*/
|
|
91
|
+
resetTimeoutTimer(): void;
|
|
92
|
+
/**
|
|
93
|
+
* 激活为活跃状态
|
|
94
|
+
* 触发活跃回调,并重置定时器
|
|
95
|
+
*/
|
|
96
|
+
private activate;
|
|
97
|
+
/**
|
|
98
|
+
* 标记为闲置状态
|
|
99
|
+
* 触发闲置回调,并清除定时器
|
|
100
|
+
*/
|
|
101
|
+
private markAsIdle;
|
|
102
|
+
}
|
package/dist/Browser/type.d.ts
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** 定义消息类型枚举,避免硬编码字符串 */
|
|
2
|
+
export declare enum ChannelMessageType {
|
|
3
|
+
/** 回执消息 */
|
|
4
|
+
RESPONSE = "response",
|
|
5
|
+
/** 询问消息 */
|
|
6
|
+
QUERY = "query"
|
|
7
|
+
}
|
|
8
|
+
/** 基础消息结构 */
|
|
9
|
+
export interface ChannelMessage {
|
|
10
|
+
/** 消息类型 */
|
|
11
|
+
type: ChannelMessageType;
|
|
12
|
+
/** 消息关联的标识键 */
|
|
13
|
+
responseKey: string;
|
|
14
|
+
/** 标签页名称 "*" 表示所有标签页 */
|
|
15
|
+
name: string;
|
|
16
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TimeAxisAnimationCurve, TimeAxisFillStyle, TimeAxisMouseTimeInfo } from './type';
|
|
1
2
|
declare class TimeAxisCanvasManager {
|
|
2
3
|
/** Canvas DOM id(用于 `document.getElementById` 定位) */
|
|
3
4
|
private id;
|
|
@@ -34,25 +35,6 @@ declare class TimeAxisCanvasManager {
|
|
|
34
35
|
/** 销毁 ResizeObserver,释放资源 */
|
|
35
36
|
destroy(): void;
|
|
36
37
|
}
|
|
37
|
-
/**
|
|
38
|
-
* 鼠标时间提示:仅负责计算鼠标位置对应的时间
|
|
39
|
-
* - 监听 canvas 的 mousemove / mouseleave
|
|
40
|
-
* - 通知外部:显示/隐藏、canvasX、time
|
|
41
|
-
*/
|
|
42
|
-
type TimeAxisMouseTimeInfo = {
|
|
43
|
-
/** 是否显示指示线/时间提示 */
|
|
44
|
-
visible: boolean;
|
|
45
|
-
/** 鼠标在 canvas 内的 x(像素) */
|
|
46
|
-
canvasX: number;
|
|
47
|
-
/** 鼠标在 canvas 内的 y(像素) */
|
|
48
|
-
canvasY: number;
|
|
49
|
-
/** 鼠标位置对应的时间戳(ms) */
|
|
50
|
-
time: number;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* 时间轴动画曲线:入参 `t` 为 [0, 1],返回 eased 后的进度(也应为 [0, 1])
|
|
54
|
-
*/
|
|
55
|
-
type TimeAxisAnimationCurve = (t: number) => number;
|
|
56
38
|
declare class TimeAxisBase {
|
|
57
39
|
/** 负责 canvas 引用、2D context 获取与尺寸同步 */
|
|
58
40
|
protected canvasManager: TimeAxisCanvasManager;
|
|
@@ -140,6 +122,12 @@ declare class TimeAxisBase {
|
|
|
140
122
|
* - 提供常用图形绘制方法(如按时间范围画圆角矩形)
|
|
141
123
|
*/
|
|
142
124
|
export declare class _Canvas_TimeAxis extends TimeAxisBase {
|
|
125
|
+
/**
|
|
126
|
+
* 将填充样式解析为 ctx.fillStyle 可用的值(纯色或线性渐变)
|
|
127
|
+
* @param rect 矩形区域,用于计算渐变起止点
|
|
128
|
+
* @param fillStyle 纯色字符串或渐变配置
|
|
129
|
+
*/
|
|
130
|
+
private resolveFillStyle;
|
|
143
131
|
/**
|
|
144
132
|
* 按时间范围绘制圆角矩形(常用于高亮某段时间区间)
|
|
145
133
|
*/
|
|
@@ -154,8 +142,8 @@ export declare class _Canvas_TimeAxis extends TimeAxisBase {
|
|
|
154
142
|
height?: number;
|
|
155
143
|
/** 圆角半径:可为单值或 canvas roundRect 支持的数组(默认 10) */
|
|
156
144
|
radius?: number | number[];
|
|
157
|
-
/**
|
|
158
|
-
fillStyle?:
|
|
145
|
+
/** 填充色:不传则不填充,支持纯色或线性渐变 */
|
|
146
|
+
fillStyle?: TimeAxisFillStyle;
|
|
159
147
|
/** 描边色:不传则不描边 */
|
|
160
148
|
strokeStyle?: string;
|
|
161
149
|
/** 描边线宽(默认 1) */
|
|
@@ -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;
|