nhanh-pure-function 3.0.5 → 3.0.6-beta.10

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 (40) hide show
  1. package/dist/Canvas/LayerGroup/index.d.ts +30 -0
  2. package/dist/Canvas/LayerGroup/layer.d.ts +44 -0
  3. package/dist/Canvas/OverlayGroup/arc.d.ts +98 -0
  4. package/dist/Canvas/OverlayGroup/arcTo.d.ts +51 -0
  5. package/dist/Canvas/OverlayGroup/bezierCurve.d.ts +1 -0
  6. package/dist/Canvas/OverlayGroup/custom.d.ts +24 -0
  7. package/dist/Canvas/OverlayGroup/ellipse.d.ts +1 -0
  8. package/dist/Canvas/OverlayGroup/index.d.ts +31 -0
  9. package/dist/Canvas/OverlayGroup/line.d.ts +32 -0
  10. package/dist/Canvas/OverlayGroup/point.d.ts +41 -0
  11. package/dist/Canvas/OverlayGroup/polygon.d.ts +47 -0
  12. package/dist/Canvas/OverlayGroup/public/geometricBoundary.d.ts +70 -0
  13. package/dist/Canvas/OverlayGroup/public/overlay.d.ts +176 -0
  14. package/dist/Canvas/OverlayGroup/text.d.ts +28 -0
  15. package/dist/Canvas/common.type.d.ts +117 -0
  16. package/dist/Canvas/core/axis.d.ts +43 -0
  17. package/dist/Canvas/core/basedata.d.ts +178 -0
  18. package/dist/Canvas/core/draw.d.ts +33 -0
  19. package/dist/Canvas/core/event.d.ts +77 -0
  20. package/dist/Canvas/core/quikmethod.d.ts +106 -0
  21. package/dist/Canvas/core/style.d.ts +24 -0
  22. package/dist/Canvas/index.d.ts +70 -0
  23. package/dist/Canvas/index.types.d.ts +14 -0
  24. package/dist/Canvas/public/basedata.d.ts +64 -0
  25. package/dist/Canvas/public/eventController.d.ts +111 -0
  26. package/dist/Canvas/public/eventControllerBasedata.d.ts +62 -0
  27. package/dist/Canvas/public/tools.d.ts +6 -0
  28. package/dist/Element/index.d.ts +17 -0
  29. package/dist/File/index.d.ts +24 -4
  30. package/dist/Format/index.d.ts +36 -0
  31. package/dist/Math/index.d.ts +6 -0
  32. package/dist/Types/index.d.ts +39 -0
  33. package/dist/Utility/index.d.ts +14 -29
  34. package/dist/Utility/type.d.ts +10 -0
  35. package/dist/Valid/index.d.ts +2 -8
  36. package/dist/Valid/type.d.ts +1 -1
  37. package/dist/index.cjs.js +9 -3
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.es.js +5512 -779
  40. package/package.json +4 -1
@@ -0,0 +1,14 @@
1
+ import { default as LayerGroup } from './LayerGroup';
2
+ import { default as OverlayGroup, OverlayType } from './OverlayGroup';
3
+ import { default as Layer } from './LayerGroup/layer';
4
+ import { default as Point } from './OverlayGroup/point';
5
+ import { default as Text } from './OverlayGroup/text';
6
+ import { default as Line } from './OverlayGroup/line';
7
+ import { default as Polygon } from './OverlayGroup/polygon';
8
+ import { default as Axis } from './core/axis';
9
+ import { default as Custom } from './OverlayGroup/custom';
10
+ import { default as Arc } from './OverlayGroup/arc';
11
+ import { default as ArcTo } from './OverlayGroup/arcTo';
12
+ import { EventHandler } from './public/eventController';
13
+ import { default as Overlay } from './OverlayGroup/public/overlay';
14
+ export type { LayerGroup, OverlayGroup, Layer, OverlayType, Overlay, Point, Text, Line, Polygon, Axis, Custom, Arc, ArcTo, EventHandler, };
@@ -0,0 +1,64 @@
1
+ import { default as _Canvas } from '..';
2
+ declare abstract class Base<T extends Base<T>> {
3
+ /** 父级 */
4
+ parent?: T;
5
+ /** 名称 */
6
+ name: string;
7
+ /** 自定义扩展数据 */
8
+ extData?: any;
9
+ /** 主画布 */
10
+ mainCanvas?: _Canvas;
11
+ private _isRecalculate;
12
+ /** 是否需要重新计算坐标 */
13
+ get isRecalculate(): boolean;
14
+ set isRecalculate(isRecalculate: boolean);
15
+ /** 是否是同一个主画布 */
16
+ equalsMainCanvas(mainCanvas?: _Canvas): boolean;
17
+ /** 设置主画布 */
18
+ setMainCanvas(mainCanvas?: _Canvas): void;
19
+ /** 通知重新加载 */
20
+ notifyReload?: (needForceExecute?: boolean) => void;
21
+ /** 设置通知重新加载 */
22
+ abstract setNotifyReload(notifyReload?: () => void): void;
23
+ }
24
+ declare abstract class Show<T extends Show<T>> extends Base<T> {
25
+ private _isVisible;
26
+ /** 是否显示 */
27
+ get isVisible(): boolean;
28
+ set isVisible(isVisible: boolean);
29
+ /** 是否继承父级透明度 */
30
+ protected inheritOpacity: boolean;
31
+ private _opacity;
32
+ /** 透明度 */
33
+ get opacity(): number | undefined;
34
+ set opacity(opacity: number | undefined);
35
+ private _scaleRange?;
36
+ /** 显示范围 缩放比例 */
37
+ get scaleRange(): [number, number] | undefined;
38
+ set scaleRange(scaleRange: [number, number] | undefined);
39
+ /** 是否需要渲染 */
40
+ shouldRender(): boolean;
41
+ }
42
+ interface BaseDataOptions {
43
+ /** 父级 */
44
+ parent?: BaseData<any>;
45
+ /** 名称 */
46
+ name?: string;
47
+ /** 自定义扩展数据 */
48
+ extData?: any;
49
+ /** 主画布 */
50
+ mainCanvas?: _Canvas;
51
+ /** 通知重新加载 */
52
+ notifyReload?: (needForceExecute?: boolean) => void;
53
+ /** 是否显示 */
54
+ isVisible?: boolean;
55
+ /** 透明度 */
56
+ opacity?: number;
57
+ /** 显示范围 缩放比例 */
58
+ scaleRange?: [number, number];
59
+ }
60
+ /** 基础数据 公共 */
61
+ export default abstract class BaseData<T extends BaseData<T>> extends Show<T> {
62
+ constructor(options: BaseDataOptions);
63
+ }
64
+ export {};
@@ -0,0 +1,111 @@
1
+ import { default as EventControllerBasedata } from './eventControllerBasedata';
2
+ declare class _CanvasEvent<T = undefined> {
3
+ readonly data: T;
4
+ private propagationStopped;
5
+ constructor(data: T);
6
+ stopPropagation(): void;
7
+ get canPropagate(): boolean;
8
+ }
9
+ type State = {
10
+ state: boolean;
11
+ oldState: boolean;
12
+ };
13
+ type EventMap = {
14
+ wheel: number;
15
+ down: State;
16
+ contextmenu: State;
17
+ click: State;
18
+ doubleClick: State;
19
+ hover: State;
20
+ dragg: {
21
+ offsetX: number;
22
+ offsetY: number;
23
+ };
24
+ };
25
+ export type EventHandler<T extends keyof EventMap> = (event: _CanvasEvent<EventMap[T]>, mouseEvent?: MouseEvent) => void;
26
+ export default abstract class EventController extends EventControllerBasedata<EventController> {
27
+ /** 事件管理器 */
28
+ private readonly listeners;
29
+ /** 添加事件监听器 */
30
+ addEventListener<T extends keyof EventMap>(type: T, handler: EventHandler<T>): void;
31
+ /** 移除事件监听器 */
32
+ removeEventListener<T extends keyof EventMap>(type: T, handler: EventHandler<T>): void;
33
+ /** 共享事件状态集合 控制器 */
34
+ private sharedControllers;
35
+ /** 注册指定类型的共享事件状态集合 */
36
+ registerControllers(type: keyof EventMap, controllers: EventController[]): void;
37
+ /** 检查指定类型下是否存在特定控制器 */
38
+ hasController(type: keyof EventMap, controller: EventController): boolean | undefined;
39
+ private trigger;
40
+ private updateStates;
41
+ private _eventDate;
42
+ private _clearEventDate;
43
+ private checkEventDate;
44
+ private _isHover;
45
+ /** 是否触发悬停 */
46
+ get isHover(): boolean;
47
+ /**
48
+ * 接收悬停状态变更通知(由外部事件处理器判断后调用)
49
+ * @param state - 当前悬停状态(true:进入元素 / false:离开元素)
50
+ * @param [event] - 可选的关联鼠标事件对象
51
+ */
52
+ notifyHover: (state: boolean, event?: MouseEvent) => false | void;
53
+ private _isDown;
54
+ /** 是否触发按下 */
55
+ get isDown(): boolean;
56
+ /**
57
+ * 接收鼠标按下状态变更通知(由外部事件处理器判断后调用)
58
+ * @param state - 当前按下状态(true:按下开始 / false:按下结束)
59
+ * @param [event] - 可选的关联鼠标事件对象
60
+ */
61
+ notifyDown: (state: boolean, event?: MouseEvent) => false | void;
62
+ private _isContextmenu;
63
+ /** 是否触发右击 */
64
+ get isContextmenu(): boolean;
65
+ /**
66
+ * 接收右键菜单触发通知(由外部事件处理器判断后调用)
67
+ * @param state - 右键触发状态(true: 右键开始 / false: 右键结束)
68
+ * @param [event] - 可选的关联鼠标事件对象
69
+ */
70
+ notifyContextmenu: (state: boolean, event?: MouseEvent) => false | void;
71
+ private _isClick;
72
+ /** 是否触发点击 */
73
+ get isClick(): boolean;
74
+ /** 点击时间 */
75
+ private clickTimestamp;
76
+ /** 双击判定,两次点击之间的间隔(毫秒) */
77
+ doubleClickInterval: number;
78
+ /**
79
+ * 接收单击动作通知(由外部事件处理器判断点击动作后调用)
80
+ * @param state - 点击状态(true: 单击开始 / false: 单击结束)
81
+ * @param [event] - 可选的关联鼠标事件对象
82
+ */
83
+ notifyClick: (state: boolean, event?: MouseEvent) => void;
84
+ private _isDblClick;
85
+ /** 是否触发双击 */
86
+ get isDblClick(): boolean;
87
+ /**
88
+ * 接收双击动作通知(由外部事件处理器判断双击动作后调用)
89
+ * @param state - 双击状态(true: 双击开始 / false: 双击结束)
90
+ * @param [event] - 可选的关联鼠标事件对象
91
+ */
92
+ notifyDoubleClick: (state: boolean, event?: MouseEvent) => false | void;
93
+ /**
94
+ * 接收拖拽位置更新通知(由外部事件处理器判断拖拽动作后调用)
95
+ * @param position - 当前拖拽位置坐标
96
+ * @param position.offsetX - 相对于元素X轴的偏移量
97
+ * @param position.offsetY - 相对于元素Y轴的偏移量
98
+ * @param [event] - 可选的关联鼠标事件对象
99
+ */
100
+ notifyDragg: (position: {
101
+ offsetX: number;
102
+ offsetY: number;
103
+ }, event?: MouseEvent) => false | void;
104
+ /**
105
+ * 接收滚轮滚动通知(由外部事件处理器判断滚轮动作后调用)
106
+ * @param step - 滚轮滚动步长(正数:向上滚动 / 负数:向下滚动)
107
+ * @param [event] - 可选的关联滚轮事件对象
108
+ */
109
+ notifyWheel: (step: number, event?: WheelEvent) => false | void;
110
+ }
111
+ export {};
@@ -0,0 +1,62 @@
1
+ import { default as BaseData } from './basedata';
2
+ type EventControllerOptions<T extends EventControllerBasedata<T>> = ConstructorParameters<typeof BaseData<EventControllerBasedata<T>>>[0] & {
3
+ /** 是否可以触发交互事件 */
4
+ isInteractive?: boolean;
5
+ /** 是否可以触发悬停事件 */
6
+ isHoverable?: boolean;
7
+ /** 是否可以触发按下事件 */
8
+ isDownable?: boolean;
9
+ /** 是否可以触发右击事件 */
10
+ isContextmenuable?: boolean;
11
+ /** 是否可以触发点击事件 */
12
+ isClickable?: boolean;
13
+ /** 是否可以触发双击事件 */
14
+ isDoubleClickable?: boolean;
15
+ /** 是否可以触发拖动事件 */
16
+ isDraggable?: boolean;
17
+ /** 是否可以触发滚轮滚动事件 */
18
+ isWheelable?: boolean;
19
+ };
20
+ export default abstract class EventControllerBasedata<T extends EventControllerBasedata<T>> extends BaseData<T> {
21
+ private _isInteractive;
22
+ /** 是否可以触发交互事件 */
23
+ get isInteractive(): boolean;
24
+ set isInteractive(value: boolean);
25
+ private _isHoverable;
26
+ /** 是否可以触发悬停事件 */
27
+ get isHoverable(): boolean;
28
+ set isHoverable(value: boolean);
29
+ private _isDownable;
30
+ /** 是否可以触发按下事件 */
31
+ get isDownable(): boolean;
32
+ set isDownable(value: boolean);
33
+ private _isContextmenuable;
34
+ /** 是否可以触发右击事件 */
35
+ get isContextmenuable(): boolean;
36
+ set isContextmenuable(value: boolean);
37
+ private _isClickable;
38
+ /** 是否可以触发点击事件 */
39
+ get isClickable(): boolean;
40
+ set isClickable(value: boolean);
41
+ private _isDoubleClickable;
42
+ /** 是否可以触发双击事件 */
43
+ get isDoubleClickable(): boolean;
44
+ set isDoubleClickable(value: boolean);
45
+ private _isDraggable;
46
+ /** 是否可以触发拖动事件 */
47
+ get isDraggable(): boolean;
48
+ set isDraggable(value: boolean);
49
+ private _isWheelable;
50
+ /** 是否可以触发滚轮滚动事件 */
51
+ get isWheelable(): boolean;
52
+ set isWheelable(value: boolean);
53
+ /**
54
+ * 通用属性获取方法
55
+ * @param parentProp 父级属性名
56
+ * @param ownValue 当前实例的属性值
57
+ * @param checkInteractive 是否检查交互状态(isInteractive 属性专用)
58
+ */
59
+ private getPropValue;
60
+ constructor(options: EventControllerOptions<T>);
61
+ }
62
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare class _Number {
2
+ static add(a: number, b: number): number;
3
+ static sub(a: number, b: number): number;
4
+ static mul(a: number, b: number): number;
5
+ static div(a: number, b: number): number;
6
+ }
@@ -89,3 +89,20 @@ export declare function _Element_CalculateCanvasSize(aspectRatio: number, target
89
89
  * @returns 一个Promise对象,包含加载的图片对象及其宽高比
90
90
  */
91
91
  export declare function _Element_LoadImage(src: string, timeout?: number): Promise<[HTMLImageElement, number]>;
92
+ /**
93
+ * 检查指定dom内所有图片的加载状态并返回结果
94
+ * @param id - 图片ID
95
+ * @returns - 图片加载状态信息
96
+ */
97
+ export declare function _Element_CheckImagesLoaded(id: string): Promise<{
98
+ /** 是否全部加载完成 */
99
+ allLoaded: boolean;
100
+ /** 成功加载的图片数量 */
101
+ loaded: number;
102
+ /** 加载失败的图片数量 */
103
+ failed: number;
104
+ /** 总图片数量 */
105
+ total: number;
106
+ /** 加载失败的图片列表 */
107
+ errors: HTMLImageElement[];
108
+ }>;
@@ -5,11 +5,31 @@
5
5
  */
6
6
  export declare function _File_Read(src: string): Promise<string>;
7
7
  /**
8
- * 下载文件
9
- * @param {string} href - 文件路径
10
- * @param {string} [fileName] - 导出文件名
8
+ * 下载文件并支持进度监控、超时控制和主动中止
9
+ *
10
+ * @param {Object} options - 下载配置选项
11
+ * @param {string} options.href - 文件的 URL 路径或下载地址,需确保跨域权限或同源
12
+ * @param {string} [options.fileName] - 可选,指定导出的文件名(不含扩展名时会自动从 href 提取)
13
+ * @param {Function} [options.onProgress] - 可选,下载进度回调函数
14
+ * @param {number} [options.onProgress.progress] - 进度百分比(0-100)
15
+ * @param {number} [options.timeout=30000] - 可选,超时时间(毫秒),默认 30 秒
16
+ * @param {boolean} [options.autoDownload=true] - 可选,是否自动执行下载操作,默认 true
17
+ * @returns {Object} 返回包含以下属性的对象:
18
+ * - promise: Promise 对象,成功时 resolve 下载的 Blob 数据,失败时 reject 错误信息
19
+ * - abort: 中止下载的函数,调用后会触发 abort 错误
20
+ * - download: 手动执行下载的函数(当 autoDownload 为 false 时使用)
11
21
  */
12
- export declare function _File_Download(href: string, fileName?: string): Promise<unknown>;
22
+ export declare function _File_Download(options: {
23
+ href: string;
24
+ fileName?: string;
25
+ onProgress?: (progress: number) => void;
26
+ timeout?: number;
27
+ autoDownload?: boolean;
28
+ }): {
29
+ promise: Promise<Blob>;
30
+ abort: () => false | void;
31
+ download: () => void;
32
+ };
13
33
  /**
14
34
  * 创建文件并下载
15
35
  * @param {BlobPart[]} content 文件内容
@@ -73,3 +73,39 @@ export declare function _Format_CamelCase(str: string, isRemoveDelimiter?: boole
73
73
  * @returns 裁减后的字符串
74
74
  */
75
75
  export declare function _Format_ExcludeSubstring(inputString: string, substringToDelete: string, delimiter?: string): string;
76
+ /**
77
+ * 处理不可见字符的转义和还原
78
+ * @param {string} str - 要处理的字符串
79
+ * @param {boolean} escape - true表示转义(默认),false表示还原
80
+ * @returns {string} 处理后的字符串
81
+ */
82
+ export declare function _Format_ToggleInvisibleChars(str: string, escape?: boolean): string;
83
+ declare const UnitConfigs: readonly [readonly ["年", number], readonly ["月", number], readonly ["周", number], readonly ["天", number], readonly ["时", number], readonly ["分", number], readonly ["秒", 1000], readonly ["毫秒", 1]];
84
+ type UnitName = (typeof UnitConfigs)[number][0];
85
+ /**
86
+ * 格式化毫秒数为易读的时间单位(基于固定换算规则)
87
+ * @param ms 待格式化的毫秒数(需为非负整数)
88
+ * @param maxUnit 最大单位限制(可选,如传入"天"则最大只显示到天,不显示年/月/周)
89
+ * 可选值:"年"|"月"|"周"|"天"|"时"|"分"|"秒"|"毫秒"
90
+ * @returns 格式化后的时间字符串(如 1.3秒、300毫秒、1,234年)
91
+ * @description
92
+ * 1. 单位换算规则(固定值,非自然时间):
93
+ * - 1年 = 365天(忽略闰年差异)
94
+ * - 1月 = 30天(忽略实际月份天数差异)
95
+ * - 1周 = 7天,1天 = 24小时,1小时 = 60分钟,1分钟 = 60秒,1秒 = 1000毫秒
96
+ * 2. 格式化逻辑:
97
+ * - 自动匹配不超过最大单位限制的最优单位(数值≥单位阈值时使用该单位)
98
+ * - 非整数数值保留1位小数(如1.3秒),整数自动去除末尾.0(如1秒而非1.0秒)
99
+ * - "年"单位数值会自动应用千分位格式化(如1,234年)
100
+ * 3. 输入校验:非整数或负数会返回"0毫秒"
101
+ */
102
+ export declare function _Format_MillisecondToReadable(ms: number, maxUnit?: UnitName): string;
103
+ /**
104
+ * 将数组按指定长度分割成多个子数组
105
+ * @param arr 要分割的原始数组
106
+ * @param size 每个子数组的长度
107
+ * @returns 分割后的二维数组
108
+ * @throws 当size小于1时抛出错误
109
+ */
110
+ export declare function _Format_ChunkArray<T>(arr: T[], size: number): T[][];
111
+ export {};
@@ -48,3 +48,9 @@ export declare function _Math_GetMidpoint(x1: number, y1: number, x2: number, y2
48
48
  * @returns 与边界的交点坐标
49
49
  */
50
50
  export declare function _Math_GetBoundaryIntersection(startPoint: [number, number], direction: [number, number], canvasWidth: number, canvasHeight: number): [number, number];
51
+ /**
52
+ * 角度制数学工具代理
53
+ * 对于三角函数:自动将输入的角度转换为弧度
54
+ * 对于其他方法:直接调用原生Math方法
55
+ */
56
+ export declare const _Math_Degree: Math;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 将类型 T 中指定的属性 K 改为必填,其他属性保持原有状态(必填/可选)
3
+ * @template T - 原始类型
4
+ * @template K - 需要改为必填的属性集合(必须是 T 的属性键)
5
+ * @returns 新类型,其中 K 对应的属性为必填,其他属性保持 T 中原有的状态
6
+ * @example
7
+ * type User = { name?: string; age?: number; id: string }
8
+ * type RequiredName = RequiredBy<User, 'name'>
9
+ * // 结果:{ name: string; age?: number; id: string }
10
+ */
11
+ export type _Type_RequiredBy<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
12
+ /**
13
+ * 将类型 T 中指定的属性 K 改为可选,其他属性保持原有状态(必填/可选)
14
+ * @template T - 原始类型
15
+ * @template K - 需要改为可选的属性集合(必须是 T 的属性键)
16
+ * @returns 新类型,其中 K 对应的属性为可选,其他属性保持 T 中原有的状态
17
+ * @example
18
+ * type User = { name: string; age: number; id?: string }
19
+ * type OptionalAge = PartialBy<User, 'age'>
20
+ * // 结果:{ name: string; age?: number; id?: string }
21
+ */
22
+ export type _Type_PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
23
+ /**
24
+ * 递归将类型T的所有属性(包括嵌套对象的属性)转为可选
25
+ * @template T - 要处理的基础类型
26
+ * @description 与TypeScript内置的Partial不同,DeepPartial会对嵌套对象进行递归处理,
27
+ * 使所有层级的属性都变为可选。适用于需要部分更新对象且允许深层属性缺失的场景
28
+ */
29
+ export type _Type_DeepPartial<T> = {
30
+ [P in keyof T]?: T[P] extends object ? _Type_DeepPartial<T[P]> : T[P];
31
+ };
32
+ /**
33
+ * @template T - 要处理的对象类型
34
+ * @description 创建一个对象类型,将所有属性变为可变(mutable)。
35
+ * 适用于需要修改对象属性的场景,但需要确保对象不会被其他地方引用
36
+ */
37
+ export type _Type_Mutable<T> = {
38
+ -readonly [P in keyof T]: T[P];
39
+ };
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * 寻找空闲时机执行传入方法
3
3
  * @param callback 需执行的方法
4
+ * @param timeout 超时时间
4
5
  */
5
- export declare function _Utility_ExecuteWhenIdle(callback: Function): void;
6
+ export declare function _Utility_ExecuteWhenIdle(callback: Function, timeout?: number): void;
6
7
  /**
7
8
  * 等待条件满足
8
9
  * @param conditionChecker 条件检查器
@@ -40,37 +41,21 @@ export declare function _Utility_Debounce<T extends (...args: any[]) => void>(fn
40
41
  */
41
42
  export declare function _Utility_Throttle<T extends (...args: any[]) => void>(fn: T, delay: number): (...args: Parameters<T>) => void;
42
43
  /**
43
- * 根据路径初始化目标对象
44
- * 如果路径中某个属性不存在,则会创建该属性及其所有父属性
45
- * 最终返回路径的最后一个属性对应的值或undefined(如果路径不存在)
46
- *
47
- * @param {Object} model - 要初始化的模型对象
48
- * @param {string} path - 属性路径,使用英文句点分隔
49
- * @param {any} initValue - 初始值
50
- * @returns {any} 路径的最后一个属性对应的值或 initValue
51
- */
52
- export declare function _Utility_InitTargetByPath(model: any, path: string, initValue?: any): any;
53
- /**
54
- * 根据路径获取目标对象
55
- * 该函数用于在给定的模型中,通过路径字符串来获取深层嵌套的目标对象如果路径中的某一部分不存在,则会创建一个新的对象(除非已经是路径的最后一部分)
56
- *
57
- * @param {Object} model - 包含要查询的数据的模型对象
58
- * @param {string} path - 用点分隔的路径字符串,表示要访问的对象属性路径
59
- * @returns {Object|undefined} - 返回目标对象,如果路径不存在则返回undefined
44
+ * 根据路径从对象中获取目标值
45
+ * @param rootObject - 根对象
46
+ * @param path - 访问路径,支持点号和数组索引语法(如 "a1.b2[0].c3")
47
+ * @returns 目标值,如果路径无效则返回根对象
60
48
  */
61
- export declare function _Utility_GetTargetByPath(model: any, path: string): any;
49
+ export declare function _Utility_GetTargetByPath(rootObject: any, path: string): any;
62
50
  /**
63
- * 根据路径更新目标值
64
- *
65
- * 该函数通过一个点分隔的路径来更新一个对象中的嵌套属性值
66
- * 它使用了reduce方法来遍历路径数组,并在路径的终点设置新的值
67
- *
68
- * @param {Object} model - 包含要更新数据的模型对象
69
- * @param {string} path - 点分隔的字符串路径,指示如何到达目标属性
70
- * @param {*} value - 要设置的新值
71
- * @returns {*} - 返回更新后的模型对象中的值
51
+ * 根据路径设置对象中的目标值
52
+ * @param rootObject - 根对象
53
+ * @param path - 访问路径,支持点号和数组索引语法(如 "a1.b2[0].c3")
54
+ * @param value - 要设置的值
55
+ * @param skipIfExists - 如果为true,当目标位置已有值时跳过设置
56
+ * @returns 设置后的根对象
72
57
  */
73
- export declare function _Utility_SetTargetByPath(model: any, path: string, value: any): any;
58
+ export declare function _Utility_SetTargetByPath(rootObject: any, path: string, value: any, skipIfExists?: boolean): any;
74
59
  /**
75
60
  * 旋转列表函数
76
61
  *
@@ -0,0 +1,10 @@
1
+ export declare const PATH_SEGMENT_REGEX: RegExp;
2
+ export declare const ARRAY_PATH_REGEX: RegExp;
3
+ export declare const ARRAY_PART_REGEX: RegExp;
4
+ export declare const INDEX_EXTRACT_REGEX: RegExp;
5
+ /**
6
+ * 解析路径字符串为路径段数组
7
+ * @param path - 需要解析的路径字符串
8
+ * @returns 路径段数组,如果路径为空则返回空数组
9
+ */
10
+ export declare function _parsePathSegments(path: string): string[];
@@ -1,11 +1,5 @@
1
1
  import { FileType } from '../Constant';
2
2
  import { DataType, Point } from './type';
3
- /**
4
- * 是正常对象吗
5
- * @param {} value
6
- * @returns boolean
7
- */
8
- export declare function _Valid_IsObject(value: any): boolean;
9
3
  /**
10
4
  * 检查单个一维数组参数是否合法(元素为有限数字)
11
5
  * @param arr - 待检查的数组
@@ -97,7 +91,7 @@ export declare class _Valid_FileTypeChecker {
97
91
  static parseAddresses(url: string): {
98
92
  url: string;
99
93
  name: string;
100
- type: "audio" | "code" | "script" | "video" | "image" | "ppt" | "word" | "excel" | "pdf" | "text" | "archive" | "font" | "database" | "markup" | "configuration" | "logs" | "unknown";
94
+ type: "audio" | "code" | "script" | "video" | "text" | "image" | "ppt" | "word" | "excel" | "pdf" | "archive" | "font" | "database" | "markup" | "configuration" | "logs" | "unknown";
101
95
  }[];
102
96
  /**
103
97
  * 检查 MIME 类型是否与指定的模式匹配
@@ -127,5 +121,5 @@ export declare class _Valid_FileTypeChecker {
127
121
  * @param {string} url - 文件的URL
128
122
  * @returns {string} - 如果URL与任何已知类型匹配,则返回文件类型,否则返回"unknown"
129
123
  */
130
- static _detectFileType(url: string): "audio" | "code" | "script" | "video" | "image" | "ppt" | "word" | "excel" | "pdf" | "text" | "archive" | "font" | "database" | "markup" | "configuration" | "logs" | "unknown";
124
+ static _detectFileType(url: string): "audio" | "code" | "script" | "video" | "text" | "image" | "ppt" | "word" | "excel" | "pdf" | "archive" | "font" | "database" | "markup" | "configuration" | "logs" | "unknown";
131
125
  }
@@ -3,4 +3,4 @@ export interface Point {
3
3
  y: number;
4
4
  }
5
5
  /** 定义所有可能的数据类型字符串 */
6
- export type DataType = "null" | "undefined" | "boolean" | "number" | "string" | "symbol" | "bigint" | "function" | "array" | "object" | "date" | "regexp" | "map" | "set" | "error" | "promise" | "weakmap" | "weakset" | "arraybuffer" | "dataview" | "int8array" | "uint8array" | "uint8clampedarray" | "int16array" | "uint16array" | "int32array" | "uint32array" | "float32array" | "float64array" | "bigint64array" | "biguint64array";
6
+ export type DataType = "null" | "undefined" | "boolean" | "number" | "string" | "symbol" | "bigint" | "function" | "array" | "object" | "date" | "regexp" | "map" | "set" | "error" | "promise" | "weakmap" | "weakset" | "file" | "arraybuffer" | "dataview" | "int8array" | "uint8array" | "uint8clampedarray" | "int16array" | "uint16array" | "int32array" | "uint32array" | "float32array" | "float64array" | "bigint64array" | "biguint64array";