nhanh-pure-function 4.3.0 → 4.4.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.
@@ -61,3 +61,11 @@ export declare const _Math_Degree: Math;
61
61
  * @returns 曲线上的点
62
62
  */
63
63
  export declare function _Math_GetBezierCurveNodes(nodes: [number, number][], progress: number): [number, number];
64
+ /**
65
+ * 根据宽高比与参数 progress,计算椭圆上的点(中心在原点)。
66
+ * @param aspectRatio 宽高比(width / height),即 X 半轴与 Y 半轴之比
67
+ * @param progress 曲线参数,通常取 [0, 1],表示沿椭圆一周的位置
68
+ * @param normalizeToUnitSquare 为 true 时将坐标归一化到 [0,1]×[0,1](外接矩形内)
69
+ * @returns 椭圆上的点 [x, y]
70
+ */
71
+ export declare function _Math_GetEllipsePoints(aspectRatio: number, progress: number, normalizeToUnitSquare?: boolean): [number, number];
@@ -0,0 +1,2 @@
1
+ export * from './undoRedoHistory';
2
+ export * from './shortcutKey';
@@ -0,0 +1,88 @@
1
+ /**
2
+ * 全局快捷键管理:支持组合键、多步序列、作用域与输入框上下文过滤。
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * const shortcuts = new _Utility_ShortcutManager();
7
+ * shortcuts.bind("control+s,control+shift+s", {
8
+ * callback: (e) => { e.preventDefault(); save(); },
9
+ * sequenceDelimiter: ",",
10
+ * chordDelimiter: "+",
11
+ * });
12
+ * ```
13
+ */
14
+ /** `bind` 时传入的配置项 */
15
+ interface ShortcutOptions {
16
+ /** 匹配成功后的回调 */
17
+ callback: (event: KeyboardEvent) => void;
18
+ /** 多步序列之间的分隔符,默认 `","` */
19
+ sequenceDelimiter?: string;
20
+ /** 单步组合键内各键的分隔符,默认 `"+"` */
21
+ chordDelimiter?: string;
22
+ /** CSS 选择器,仅在匹配元素内生效;未设置则全局生效 */
23
+ scope?: string;
24
+ /** `scope` 的判定依据:`click` 用最近点击目标,`hover` 用最近悬停目标 */
25
+ scopeType?: "click" | "hover";
26
+ /** 多步序列中,相邻两步之间的最大间隔(毫秒),默认 `5000` */
27
+ timeout?: number;
28
+ /** 为 `true` 时,在 input / textarea / contentEditable 内也响应快捷键 */
29
+ enableInInput?: boolean;
30
+ }
31
+ /**
32
+ * 在 `window` 上监听键盘与鼠标事件,按配置触发快捷键回调。
33
+ */
34
+ export declare class _Utility_ShortcutManager {
35
+ /** 最近一次 `mousedown` 的目标,供 `scopeType: "click"` 使用 */
36
+ private lastClickDom?;
37
+ /** 最近一次 `mouseover` 的目标,供 `scopeType: "hover"` 使用 */
38
+ private lastHoverDom?;
39
+ /** 当前仍按下的键(已 normalize),顺序与物理按下顺序一致 */
40
+ private downKeys;
41
+ /** 注册表:`bind` 时的原始 `key` 字符串 → 运行时绑定 */
42
+ private bindings;
43
+ /** 为 `true` 时在控制台输出 keydown / keyup 日志 */
44
+ private debug;
45
+ constructor(debug?: boolean);
46
+ /**
47
+ * 注册快捷键。
48
+ * @param key 配置字符串,如 `"control+a"` 或 `"g,i"`(两步序列)
49
+ * @param options 回调与其它选项
50
+ */
51
+ bind(key: string | string[], options: ShortcutOptions): void;
52
+ /** 移除指定 `key` 的绑定并清理其超时定时器 */
53
+ unbind(key: string): void;
54
+ /** 移除所有监听、清空状态,实例不可再使用 */
55
+ destroy(): void;
56
+ private handleMouseOver;
57
+ private handleMouseDown;
58
+ /** 窗口失焦时清空按下状态,避免 `keyup` 未触发导致的状态残留 */
59
+ private clearKeys;
60
+ private handleKeyDown;
61
+ private handleKeyUp;
62
+ /**
63
+ * 遍历所有绑定:校验作用域与输入上下文后,用数组匹配当前步骤;
64
+ * 完全匹配则推进序列或触发回调,前缀匹配则等待,否则重置。
65
+ */
66
+ private checkBindings;
67
+ /** 启动多步序列超时;超时未按下一步则重置 `currentIndex` */
68
+ private startSequenceTimer;
69
+ private resetBinding;
70
+ private isValidScope;
71
+ /**
72
+ * 默认在可编辑控件内禁用快捷键,避免与浏览器/输入法默认行为冲突。
73
+ */
74
+ private isValidContext;
75
+ /**
76
+ * 将配置串与 `KeyboardEvent.key` 统一为小写别名,便于与 `event.key` 比较。
77
+ * 例如 `ctrl` → `control`,`cmd` → `meta`。
78
+ */
79
+ private normalizeKey;
80
+ /** 当前按下键与预期组合键在长度与顺序上完全一致 */
81
+ private isExactMatch;
82
+ /**
83
+ * 当前按下键是预期组合键的有序前缀(尚缺后续键)。
84
+ * 使用逐元素比较,避免字符串 `startsWith` 误匹配(如 `"S"` 匹配 `"Shift,a"`)。
85
+ */
86
+ private isPrefixMatch;
87
+ }
88
+ export {};
@@ -0,0 +1,88 @@
1
+ interface _Utility_UndoRedoConfig<T> {
2
+ /** 存储上限;`0` 或负数表示无限制。超出时自动淘汰最早的记录。默认为 50 */
3
+ maxSize?: number;
4
+ /** 自定义克隆/结构共享函数。若不传,则默认直接引用赋值 */
5
+ clone?: (value: T) => T;
6
+ /** 初始状态快照 */
7
+ initialState?: T;
8
+ }
9
+ interface _Utility_UndoRedoRecord<T> {
10
+ /** 历史快照数据 */
11
+ state: T;
12
+ /** 记录产生的时间戳 */
13
+ timestamp: number;
14
+ }
15
+ /** 订阅者回调函数类型 */
16
+ type _Utility_UndoRedoListener<T> = (current: Readonly<T> | undefined) => void;
17
+ /**
18
+ * 通用历史记录状态机
19
+ */
20
+ export declare class _Utility_UndoRedoHistory<T> {
21
+ private stack;
22
+ private _index;
23
+ private _maxSize;
24
+ private cloneFn;
25
+ private listeners;
26
+ constructor(config?: _Utility_UndoRedoConfig<T>);
27
+ /** 获取最大存储上限 */
28
+ get maxSize(): number;
29
+ /** 动态调整最大存储上限,超出时自动裁剪 */
30
+ set maxSize(value: number);
31
+ /** 当前所处的历史记录索引位置 */
32
+ get index(): number;
33
+ /** 历史栈中的总记录数 */
34
+ get length(): number;
35
+ /** 历史栈是否为空 */
36
+ get isEmpty(): boolean;
37
+ /** 当前游标处的只读状态快照;栈为空时返回 `undefined` */
38
+ get current(): Readonly<T> | undefined;
39
+ /** 是否可以执行撤销(Undo) */
40
+ get canUndo(): boolean;
41
+ /** 是否可以执行重做(Redo) */
42
+ get canRedo(): boolean;
43
+ /** 剩余可撤销的步数 */
44
+ get undoCount(): number;
45
+ /** 剩余可重做的步数 */
46
+ get redoCount(): number;
47
+ /**
48
+ * 记录一个新状态。
49
+ * 会自动裁剪掉当前索引之后的“未来(Redo)”分支,并处理容量超限。
50
+ */
51
+ push(state: T): void;
52
+ /**
53
+ * 仅更新当前位置的快照,不产生新的历史节点,不裁剪未来分支。
54
+ * 常用于高频连续变更的中间状态同步
55
+ */
56
+ replace(state: T): void;
57
+ /**
58
+ * 撤销一步
59
+ * @returns 是否撤销成功
60
+ */
61
+ undo(): boolean;
62
+ /**
63
+ * 重进一步
64
+ * @returns 是否重进成功
65
+ */
66
+ redo(): boolean;
67
+ /**
68
+ * 跳转到指定的历史索引位置
69
+ */
70
+ jump(index: number): boolean;
71
+ /**
72
+ * 清空所有历史记录并重置状态
73
+ */
74
+ clear(): void;
75
+ /**
76
+ * 支持多重事件监听。返回一个取消订阅的函数,便于在组件销毁时规避内存泄漏。
77
+ */
78
+ subscribe(listener: _Utility_UndoRedoListener<T>): () => void;
79
+ /**
80
+ * 返回整个历史栈的外部只读镜像,专门用于调试、分析或序列化暂存,防止内部数据被篡改。
81
+ */
82
+ snapshot(): readonly Readonly<_Utility_UndoRedoRecord<T>>[];
83
+ /** 内部超出容量时的核心裁剪逻辑 */
84
+ private trimOverflow;
85
+ /** 统一通知所有订阅者 */
86
+ private notify;
87
+ }
88
+ export {};
@@ -1,3 +1,4 @@
1
+ export * from './Runtime';
1
2
  /**
2
3
  * 寻找空闲时机执行传入方法
3
4
  * @param callback 需执行的方法
@@ -71,7 +71,7 @@ export declare function _Valid_CheckConnectionWithXHR(url: string): Promise<unkn
71
71
  */
72
72
  export declare class _Valid_FileTypeChecker {
73
73
  private static cachedEntries;
74
- constructor();
74
+ private constructor();
75
75
  /**
76
76
  * 检查给定URL的文件类型
77
77
  * @param {string} url - 文件的URL