nhanh-pure-function 4.0.0 → 4.2.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/Axis/LayerGroup/index.d.ts +1 -1
- package/dist/Canvas/Axis/OverlayCreator/index.d.ts +1 -1
- package/dist/Canvas/Axis/OverlayGroup/billboard.d.ts +50 -0
- package/dist/Canvas/Axis/OverlayGroup/index.d.ts +5 -4
- package/dist/Canvas/Axis/common.type.d.ts +7 -0
- package/dist/Canvas/Axis/core/quikmethod.d.ts +2 -0
- package/dist/Canvas/Axis/index.d.ts +3 -0
- package/dist/Canvas/Axis/index.types.d.ts +2 -1
- package/dist/Canvas/TimeAxis/index.d.ts +9 -21
- package/dist/Canvas/TimeAxis/type.d.ts +39 -0
- package/dist/Element/Runtime/fullscreen.d.ts +48 -0
- package/dist/Element/Runtime/index.d.ts +2 -0
- package/dist/Element/index.d.ts +1 -20
- package/dist/index.cjs.js +3 -3
- package/dist/index.es.js +1333 -793
- 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
|
+
}
|
|
@@ -23,7 +23,7 @@ export default class LayerGroup extends EventController {
|
|
|
23
23
|
/** 删除图层 */
|
|
24
24
|
removeLayer(layers: Layer | Layer[]): void;
|
|
25
25
|
/** 清空图层 */
|
|
26
|
-
|
|
26
|
+
clearLayer(): void;
|
|
27
27
|
/** 收集图层的 canvas */
|
|
28
28
|
fetchCanvas(): [number, HTMLCanvasElement, [[number, number], OverlayType][]][];
|
|
29
29
|
}
|
|
@@ -34,7 +34,7 @@ export default class OverlayCreator {
|
|
|
34
34
|
createPolygon(): Polygon;
|
|
35
35
|
finish?: (overlay?: Polygon | Line) => void;
|
|
36
36
|
/** 从创建层中移除指定覆盖物,不传则清空该层全部 */
|
|
37
|
-
|
|
37
|
+
removeOverlay(overlay?: Polygon | Line): void;
|
|
38
38
|
/** 清空创建层并重置当前创建状态 */
|
|
39
39
|
clear(): void;
|
|
40
40
|
/** 销毁实例:清空覆盖物并移除所有事件监听 */
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { default as Overlay } from './public/overlay';
|
|
2
|
+
import { OverlayType } from './index';
|
|
3
|
+
import { EventHandler } from '../public/eventController';
|
|
4
|
+
import { BillboardStyleType } from '../common.type';
|
|
5
|
+
type ObjectFit = "fill" | "contain" | "cover" | "scale-down";
|
|
6
|
+
type ConstructorOption = ConstructorParameters<typeof Overlay<BillboardStyleType, [number, number][]>>[0] & {
|
|
7
|
+
url?: string;
|
|
8
|
+
objectFit?: ObjectFit;
|
|
9
|
+
};
|
|
10
|
+
declare abstract class BillboardBase extends Overlay<BillboardStyleType, [
|
|
11
|
+
number,
|
|
12
|
+
number
|
|
13
|
+
][]> {
|
|
14
|
+
private _ready;
|
|
15
|
+
get ready(): boolean;
|
|
16
|
+
set ready(value: boolean);
|
|
17
|
+
protected image: HTMLImageElement;
|
|
18
|
+
private _url?;
|
|
19
|
+
get url(): string | undefined;
|
|
20
|
+
set url(url: string | undefined);
|
|
21
|
+
private _objectFit;
|
|
22
|
+
get objectFit(): ObjectFit;
|
|
23
|
+
set objectFit(value: ObjectFit);
|
|
24
|
+
/** 当前广告牌绘制矩形(左上角坐标 + 宽高) */
|
|
25
|
+
protected get drawRect(): {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
sx?: number;
|
|
31
|
+
sy?: number;
|
|
32
|
+
sw?: number;
|
|
33
|
+
sh?: number;
|
|
34
|
+
};
|
|
35
|
+
private loadImage;
|
|
36
|
+
protected updateBaseData(): void;
|
|
37
|
+
}
|
|
38
|
+
export default class Billboard extends BillboardBase {
|
|
39
|
+
constructor(option: ConstructorOption);
|
|
40
|
+
defaultDragg: EventHandler<"dragg">;
|
|
41
|
+
protected updateValueScope(): void;
|
|
42
|
+
isPointInPath(x: number, y: number): boolean;
|
|
43
|
+
isPointInStroke(x: number, y: number): boolean;
|
|
44
|
+
/** 设置样式 */
|
|
45
|
+
protected setOverlayStyles(ctx: CanvasRenderingContext2D): BillboardStyleType;
|
|
46
|
+
protected get computedValueScopeStyles(): {};
|
|
47
|
+
draw(ctx: CanvasRenderingContext2D): void;
|
|
48
|
+
getDraw(): [(ctx: CanvasRenderingContext2D) => void, OverlayType] | void;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -7,8 +7,9 @@ import { default as Polygon } from './polygon';
|
|
|
7
7
|
import { default as Custom } from './custom';
|
|
8
8
|
import { default as Arc } from './arc';
|
|
9
9
|
import { default as ArcTo } from './arcTo';
|
|
10
|
+
import { default as Billboard } from './billboard';
|
|
10
11
|
type ConstructorOption = ConstructorParameters<typeof EventController>[0];
|
|
11
|
-
export type OverlayType = Text | Point | Line | Arc | ArcTo | Polygon | Custom<any>;
|
|
12
|
+
export type OverlayType = Text | Point | Line | Arc | ArcTo | Polygon | Billboard | Custom<any>;
|
|
12
13
|
export default class OverlayGroup extends EventController {
|
|
13
14
|
/** 覆盖物集合 */
|
|
14
15
|
overlays: Set<OverlayType>;
|
|
@@ -18,13 +19,13 @@ export default class OverlayGroup extends EventController {
|
|
|
18
19
|
/** 设置覆盖物重新绘制方法 */
|
|
19
20
|
setNotifyReload(notifyReload?: () => void): void;
|
|
20
21
|
/** 添加覆盖物 */
|
|
21
|
-
|
|
22
|
+
addOverlay(overlays: OverlayType[] | OverlayType): void;
|
|
22
23
|
/** 是否包含覆盖物 */
|
|
23
24
|
hasOverlay(overlay: OverlayType): boolean;
|
|
24
25
|
/** 移除覆盖物 */
|
|
25
|
-
|
|
26
|
+
removeOverlay(overlays: OverlayType[] | OverlayType): void;
|
|
26
27
|
/** 清空覆盖物 */
|
|
27
|
-
|
|
28
|
+
clearOverlay(): void;
|
|
28
29
|
/** 获取覆盖物的绘制方法 */
|
|
29
30
|
getOverlaysDrawingMethod(): [number, [(ctx: CanvasRenderingContext2D) => void, OverlayType]][];
|
|
30
31
|
}
|
|
@@ -93,6 +93,11 @@ export type PolygonStyleType = {
|
|
|
93
93
|
/** 点位样式 */
|
|
94
94
|
point: PointStyleType;
|
|
95
95
|
};
|
|
96
|
+
/** 广告牌样式 */
|
|
97
|
+
export type BillboardStyleType = {
|
|
98
|
+
/** 描边 */
|
|
99
|
+
stroke: BaseLineStyle;
|
|
100
|
+
};
|
|
96
101
|
/** 主题样式 */
|
|
97
102
|
export type StyleItemType = {
|
|
98
103
|
/** 背景色 */
|
|
@@ -111,6 +116,8 @@ export type StyleItemType = {
|
|
|
111
116
|
arcTo: ArcToStyleType;
|
|
112
117
|
/** 面样式 */
|
|
113
118
|
polygon: PolygonStyleType;
|
|
119
|
+
/** 广告牌样式 */
|
|
120
|
+
billboard: BillboardStyleType;
|
|
114
121
|
};
|
|
115
122
|
/** 主题样式 */
|
|
116
123
|
export type StyleType = Record<KnownStyleKeys, StyleItemType> & Record<string, StyleItemType>;
|
|
@@ -15,6 +15,8 @@ declare class QuickMethod_Get extends Event {
|
|
|
15
15
|
overlays_line: OverlayGroup | undefined;
|
|
16
16
|
overlays_polygon: OverlayGroup | undefined;
|
|
17
17
|
overlays_custom: OverlayGroup | undefined;
|
|
18
|
+
overlays_billboard: OverlayGroup | undefined;
|
|
19
|
+
overlays_other: OverlayGroup | undefined;
|
|
18
20
|
} | undefined;
|
|
19
21
|
/**
|
|
20
22
|
* 获取所有可见的覆盖层(Overlay)
|
|
@@ -12,6 +12,7 @@ import { default as ArcTo } from './OverlayGroup/arcTo';
|
|
|
12
12
|
import { default as OverlayCreator } from './OverlayCreator';
|
|
13
13
|
import { default as ViewFit } from './public/viewFit';
|
|
14
14
|
import { DeepArray } from './common.type';
|
|
15
|
+
import { default as Billboard } from './OverlayGroup/billboard';
|
|
15
16
|
export type * from './index.types';
|
|
16
17
|
type ConstructorOption = ConstructorParameters<typeof QuickMethod>[0] & {
|
|
17
18
|
/** 轴线显示属性 */
|
|
@@ -49,6 +50,8 @@ export declare class _Canvas_Axis extends QuickMethod {
|
|
|
49
50
|
static Arc: typeof Arc;
|
|
50
51
|
/** 圆角 */
|
|
51
52
|
static ArcTo: typeof ArcTo;
|
|
53
|
+
/** 图片 */
|
|
54
|
+
static Billboard: typeof Billboard;
|
|
52
55
|
/** 按坐标轴值创建覆盖物(多边形/线)的交互管理 */
|
|
53
56
|
overlayCreator: OverlayCreator;
|
|
54
57
|
constructor(option: ConstructorOption);
|
|
@@ -13,4 +13,5 @@ import { default as OverlayCreatorByAxisValue } from './OverlayCreator';
|
|
|
13
13
|
import { default as ViewFit } from './public/viewFit';
|
|
14
14
|
import { EventHandler } from './public/eventController';
|
|
15
15
|
import { default as Overlay } from './OverlayGroup/public/overlay';
|
|
16
|
-
|
|
16
|
+
import { default as Billboard } from './OverlayGroup/billboard';
|
|
17
|
+
export type { LayerGroup, OverlayGroup, Layer, OverlayType, Overlay, Point, Text, Line, Polygon, Axis, Custom, Arc, ArcTo, Billboard, OverlayCreatorByAxisValue, ViewFit, EventHandler, };
|
|
@@ -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;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** 进入全屏模式 */
|
|
2
|
+
export declare function _Element_EnterFullscreen(element?: HTMLElement | string): Promise<void>;
|
|
3
|
+
/** 退出全屏模式 */
|
|
4
|
+
export declare function _Element_ExitFullscreen(): Promise<void>;
|
|
5
|
+
/** 判断是否处于全屏模式 */
|
|
6
|
+
export declare function _Element_IsFullscreen(element?: HTMLElement | string): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* 返回一个用于切换全屏模式的函数
|
|
9
|
+
* @param {HTMLElement} content - 需要进入全屏的元素
|
|
10
|
+
* 该函数通过检查不同浏览器的特定方法来实现全屏切换
|
|
11
|
+
*/
|
|
12
|
+
export declare function _Element_Fullscreen(element?: HTMLElement | string): (() => void) | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* 元素全屏状态观察器
|
|
15
|
+
* 监听元素的全屏状态变化,并通过回调函数通知状态改变
|
|
16
|
+
* @param notify - 全屏状态变化回调函数,接收一个布尔值参数表示当前是否为全屏状态
|
|
17
|
+
* @param selectors - 要观察的元素或元素选择器,默认为document.documentElement
|
|
18
|
+
* @returns 返回一个清理函数,调用后可移除所有事件监听器
|
|
19
|
+
*/
|
|
20
|
+
export declare function _Element_FullscreenObserver(notify: (isFull: boolean) => void, selectors?: HTMLElement | string): (() => void) | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* 全屏控制:绑定目标元素,提供进入 / 退出 / 切换;在 document 上监听各厂商全屏事件并回调当前是否以该元素全屏。
|
|
23
|
+
* 构造时即注册监听;务必在不再使用时调用 {@link destroy},避免泄漏。
|
|
24
|
+
*/
|
|
25
|
+
export declare class _Element_FullscreenController {
|
|
26
|
+
/** 要全屏展示的目标元素 */
|
|
27
|
+
private targetElement?;
|
|
28
|
+
/**
|
|
29
|
+
* 全屏状态变化回调。参数为 `true` 表示当前全屏元素为本实例的目标元素。
|
|
30
|
+
*/
|
|
31
|
+
onFullscreenChange?: (isFullscreen: boolean) => void;
|
|
32
|
+
/** 解除 {@link attachFullscreenChangeListeners} 注册的 document 监听 */
|
|
33
|
+
private detachFullscreenListeners?;
|
|
34
|
+
constructor(targetOrSelector?: HTMLElement | string, onFullscreenChange?: (isFullscreen: boolean) => void);
|
|
35
|
+
/**
|
|
36
|
+
* 设置或更新目标元素(`HTMLElement` 或 CSS 选择器;未传时内部会回退到 `document.documentElement`)
|
|
37
|
+
*/
|
|
38
|
+
init(targetOrSelector?: HTMLElement | string): void;
|
|
39
|
+
/** 使目标元素进入浏览器全屏 */
|
|
40
|
+
enter(): void;
|
|
41
|
+
/** 退出浏览器全屏(不区分由哪个元素进入) */
|
|
42
|
+
exit(): void;
|
|
43
|
+
/** 若当前已为该目标全屏则退出,否则进入全屏 */
|
|
44
|
+
toggle(): void;
|
|
45
|
+
private attachFullscreenChangeListeners;
|
|
46
|
+
/** 移除全屏事件监听,实例不应再使用 */
|
|
47
|
+
destroy(): void;
|
|
48
|
+
}
|
package/dist/Element/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DragOption, LocalDragOptions, UiLibrary } from './type';
|
|
2
|
+
export * from './Runtime';
|
|
2
3
|
/**
|
|
3
4
|
* 滚动结束监听器
|
|
4
5
|
* @param {(trigger: "vertical" | "horizontal") => void} callback
|
|
@@ -47,26 +48,6 @@ export declare class _Element_LocalDrag {
|
|
|
47
48
|
mousemove(event: Event): void;
|
|
48
49
|
mouseup(): void;
|
|
49
50
|
}
|
|
50
|
-
/** 进入全屏模式 */
|
|
51
|
-
export declare function _Element_EnterFullscreen(element?: HTMLElement | string): Promise<void>;
|
|
52
|
-
/** 退出全屏模式 */
|
|
53
|
-
export declare function _Element_ExitFullscreen(): Promise<void>;
|
|
54
|
-
/** 判断是否处于全屏模式 */
|
|
55
|
-
export declare function _Element_IsFullscreen(element?: HTMLElement | string): boolean;
|
|
56
|
-
/**
|
|
57
|
-
* 返回一个用于切换全屏模式的函数
|
|
58
|
-
* @param {HTMLElement} content - 需要进入全屏的元素
|
|
59
|
-
* 该函数通过检查不同浏览器的特定方法来实现全屏切换
|
|
60
|
-
*/
|
|
61
|
-
export declare function _Element_Fullscreen(element?: HTMLElement | string): (() => void) | undefined;
|
|
62
|
-
/**
|
|
63
|
-
* 元素全屏状态观察器
|
|
64
|
-
* 监听元素的全屏状态变化,并通过回调函数通知状态改变
|
|
65
|
-
* @param notify - 全屏状态变化回调函数,接收一个布尔值参数表示当前是否为全屏状态
|
|
66
|
-
* @param selectors - 要观察的元素或元素选择器,默认为document.documentElement
|
|
67
|
-
* @returns 返回一个清理函数,调用后可移除所有事件监听器
|
|
68
|
-
*/
|
|
69
|
-
export declare function _Element_FullscreenObserver(notify: (isFull: boolean) => void, selectors?: HTMLElement | string): (() => void) | undefined;
|
|
70
51
|
/**
|
|
71
52
|
* 单位转换 12** -> **px
|
|
72
53
|
* @param {string} width
|