nhanh-pure-function 3.0.6-beta.2 → 3.0.6-beta.4

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 (49) hide show
  1. package/dist/Animate/index.d.ts +45 -0
  2. package/dist/Animate/type.d.ts +0 -0
  3. package/dist/Blob/index.d.ts +10 -0
  4. package/dist/Blob/type.d.ts +0 -0
  5. package/dist/Browser/index.d.ts +77 -0
  6. package/dist/Browser/type.d.ts +0 -0
  7. package/dist/Canvas/LayerGroup/index.d.ts +30 -0
  8. package/dist/Canvas/LayerGroup/layer.d.ts +44 -0
  9. package/dist/Canvas/OverlayGroup/arc.d.ts +97 -0
  10. package/dist/Canvas/OverlayGroup/arcTo.d.ts +50 -0
  11. package/dist/Canvas/OverlayGroup/bezierCurve.d.ts +1 -0
  12. package/dist/Canvas/OverlayGroup/custom.d.ts +24 -0
  13. package/dist/Canvas/OverlayGroup/ellipse.d.ts +1 -0
  14. package/dist/Canvas/OverlayGroup/index.d.ts +31 -0
  15. package/dist/Canvas/OverlayGroup/line.d.ts +31 -0
  16. package/dist/Canvas/OverlayGroup/point.d.ts +40 -0
  17. package/dist/Canvas/OverlayGroup/polygon.d.ts +46 -0
  18. package/dist/Canvas/OverlayGroup/public/geometricBoundary.d.ts +70 -0
  19. package/dist/Canvas/OverlayGroup/public/overlay.d.ts +174 -0
  20. package/dist/Canvas/OverlayGroup/text.d.ts +27 -0
  21. package/dist/Canvas/core/axis.d.ts +42 -0
  22. package/dist/Canvas/core/basedata.d.ts +177 -0
  23. package/dist/Canvas/core/draw.d.ts +34 -0
  24. package/dist/Canvas/core/event.d.ts +77 -0
  25. package/dist/Canvas/core/quikmethod.d.ts +104 -0
  26. package/dist/Canvas/core/style.d.ts +22 -0
  27. package/dist/Canvas/index.d.ts +69 -0
  28. package/dist/Canvas/index.types.d.ts +14 -0
  29. package/dist/Canvas/public/basedata.d.ts +64 -0
  30. package/dist/Canvas/public/eventController.d.ts +111 -0
  31. package/dist/Canvas/public/eventControllerBasedata.d.ts +62 -0
  32. package/dist/Canvas/public/tools.d.ts +6 -0
  33. package/dist/Constant.d.ts +256 -0
  34. package/dist/Element/index.d.ts +108 -0
  35. package/dist/Element/type.d.ts +33 -0
  36. package/dist/File/index.d.ts +39 -0
  37. package/dist/File/type.d.ts +0 -0
  38. package/dist/Format/index.d.ts +75 -0
  39. package/dist/Format/type.d.ts +0 -0
  40. package/dist/Math/index.d.ts +56 -0
  41. package/dist/Math/type.d.ts +0 -0
  42. package/dist/Utility/index.d.ts +90 -0
  43. package/dist/Utility/type.d.ts +10 -0
  44. package/dist/Valid/index.d.ts +125 -0
  45. package/dist/Valid/type.d.ts +6 -0
  46. package/dist/index.cjs.js +9 -0
  47. package/dist/index.d.ts +44 -0
  48. package/dist/index.es.js +6186 -0
  49. package/package.json +1 -1
@@ -0,0 +1,174 @@
1
+ import { default as _Canvas } from '../..';
2
+ import { OverlayType } from '../index';
3
+ import { EventHandler, default as EventController } from '../../public/eventController';
4
+ type ConstructorOption<T, V> = ConstructorParameters<typeof EventController>[0] & {
5
+ /** 样式 */
6
+ style?: DeepPartial<T> | string;
7
+ /** 层级 */
8
+ zIndex?: number;
9
+ /** 坐标轴上的点位 */
10
+ position?: V;
11
+ /** 动态点位 */
12
+ dynamicPosition?: V;
13
+ /** 坐标轴上的值 */
14
+ value?: V;
15
+ /** 偏移 */
16
+ offset?: {
17
+ x: number;
18
+ y: number;
19
+ };
20
+ /** 鼠标移入时是否重新绘制 */
21
+ redrawOnIsHoverChange?: boolean;
22
+ };
23
+ export default abstract class Overlay<T, V extends [number, number] | [number, number][]> extends EventController {
24
+ static ctx: CanvasRenderingContext2D;
25
+ private _style?;
26
+ /** 样式 */
27
+ get style(): Overlay<T, V>["_style"] | undefined;
28
+ set style(style: Overlay<T, V>["_style"] | undefined);
29
+ private _position?;
30
+ /** 坐标轴上的点位 */
31
+ get position(): V | undefined;
32
+ set position(position: V | undefined);
33
+ private _value?;
34
+ /** 坐标轴上的值 */
35
+ get value(): V | undefined;
36
+ set value(value: V | undefined);
37
+ private _zIndex;
38
+ /** 层级 */
39
+ get zIndex(): number;
40
+ set zIndex(zIndex: number);
41
+ private _dynamicPosition?;
42
+ /** 动态点位 */
43
+ get dynamicPosition(): V | undefined;
44
+ private set dynamicPosition(value);
45
+ private _offset;
46
+ /** 偏移量 */
47
+ get offset(): {
48
+ x: number;
49
+ y: number;
50
+ };
51
+ set offset(offset: {
52
+ x: number;
53
+ y: number;
54
+ });
55
+ /** 最终的动态位置(含:偏移) */
56
+ get finalDynamicPosition(): V;
57
+ /** 绘制路径 */
58
+ path?: Path2D;
59
+ constructor(option: ConstructorOption<T, V>);
60
+ /** 内部使用的属性映射表,请勿修改 */
61
+ private readonly publicToPrivateKeyMap;
62
+ /** 请勿在实体对象中调用此方法,此方法仅用于类内部无副作用更新 (请勿使用!) */
63
+ internalUpdate(option: {
64
+ offset?: {
65
+ x: number;
66
+ y: number;
67
+ };
68
+ position?: V;
69
+ value?: V;
70
+ dynamicPosition?: V;
71
+ zIndex?: number;
72
+ style?: DeepPartial<T> | string;
73
+ }, updateValueScope?: boolean): void;
74
+ /** 鼠标移入时是否重新绘制 */
75
+ redrawOnIsHoverChange: boolean;
76
+ /** 默认 hover 事件 */
77
+ defaultHover: EventHandler<"hover">;
78
+ setMainCanvas(mainCanvas?: _Canvas): void;
79
+ setNotifyReload(notifyReload?: () => void): void;
80
+ /** 值范围 */
81
+ private _valueScope?;
82
+ /** 值范围 */
83
+ get valueScope(): {
84
+ minX: number;
85
+ maxX: number;
86
+ minY: number;
87
+ maxY: number;
88
+ } | undefined;
89
+ private set valueScope(value);
90
+ /** 更新值范围 */
91
+ protected abstract updateValueScope(): void;
92
+ /** 初始化值范围 */
93
+ protected initValueScope(): void;
94
+ /** 计算 valueScope 所需要的样式 */
95
+ protected abstract get computedValueScopeStyles(): {
96
+ stroke?: BaseLineStyle;
97
+ point?: PointStyleType;
98
+ };
99
+ /** 描边半径值 */
100
+ private styleRadius;
101
+ /** 计算样式半径值 */
102
+ protected calculateStyleRadiusValue(uselastFact?: boolean): {
103
+ radius: number;
104
+ value: number;
105
+ } | undefined;
106
+ /** 额外偏移 */
107
+ private offsetValue;
108
+ /** 计算偏移 */
109
+ protected calculateOffsetValue(uselastFact?: boolean): void;
110
+ /** 固定的额外范围 */
111
+ private fixedExtraScope;
112
+ /** 初始化设置固定的额外范围 */
113
+ protected setFixedExtraScope(init: true): void;
114
+ /** 设置固定的额外范围 */
115
+ protected setFixedExtraScope(fixedExtraScope?: {
116
+ topV: number;
117
+ bottomV: number;
118
+ leftV: number;
119
+ rightV: number;
120
+ }): void;
121
+ /** 额外范围 */
122
+ private extraScope;
123
+ /** 初始化设置额外范围 */
124
+ protected setExtraScope(init: true): void;
125
+ /** 更新额外范围 */
126
+ protected setExtraScope(): void;
127
+ /** 设置新的额外范围 */
128
+ protected setExtraScope(extraScope?: {
129
+ top: number;
130
+ bottom: number;
131
+ left: number;
132
+ right: number;
133
+ }): void;
134
+ /** 判断是否在可视范围内 */
135
+ protected get isWithinRange(): boolean;
136
+ /** 判断是否需要渲染 */
137
+ protected get isNeedRender(): boolean;
138
+ /** 计算偏移量 */
139
+ protected calculateOffset(offsetX: number, offsetY: number): {
140
+ x: {
141
+ value: number;
142
+ position: number;
143
+ dynamicPosition: number;
144
+ };
145
+ y: {
146
+ value: number;
147
+ position: number;
148
+ dynamicPosition: number;
149
+ };
150
+ };
151
+ /** 处理一维数组的坐标数据 */
152
+ protected handleValuePosition(type: "array1D"): boolean;
153
+ /** 处理二维数组的坐标数据 */
154
+ protected handleValuePosition(type: "array2D", minLen: number): boolean;
155
+ /** 更新基础数据 */
156
+ protected abstract updateBaseData(): void;
157
+ /** 判断当前路径中是否包含指定点 */
158
+ abstract isPointInPath(x: number, y: number): boolean;
159
+ /** 检测某点是否在路径的描边所在的区域内 */
160
+ abstract isPointInStroke(x: number, y: number): boolean;
161
+ /** 检测某点是否在当前覆盖物中 */
162
+ isPointInAnywhere(x: number, y: number): boolean;
163
+ /** 设置透明度 */
164
+ setGlobalAlpha(ctx: CanvasRenderingContext2D): void;
165
+ /** 绘制线基础样式 */
166
+ protected setBaseLineStyle(ctx: CanvasRenderingContext2D, style: BaseLineStyle): BaseLineStyle;
167
+ /** 设置画布样式 */
168
+ protected abstract setOverlayStyles(ctx?: CanvasRenderingContext2D): T;
169
+ /** 光标样式 */
170
+ get cursorStyle(): string | undefined;
171
+ /** 获取绘制函数 */
172
+ abstract getDraw(): [(ctx: CanvasRenderingContext2D) => void, OverlayType] | void;
173
+ }
174
+ export {};
@@ -0,0 +1,27 @@
1
+ import { default as Overlay } from './public/overlay';
2
+ import { OverlayType } from './index';
3
+ import { EventHandler } from '../public/eventController';
4
+ type ConstructorOption = ConstructorParameters<typeof Overlay<TextStyleType, [number, number]>>[0] & {
5
+ /** 文字 */
6
+ text?: string;
7
+ };
8
+ export default class Text extends Overlay<TextStyleType, [number, number]> {
9
+ /** 文字偏差 */
10
+ private textOffset;
11
+ private _text?;
12
+ /** 文字 */
13
+ get text(): string | undefined;
14
+ set text(text: string | undefined);
15
+ constructor(option: ConstructorOption);
16
+ defaultDragg: EventHandler<"dragg">;
17
+ protected updateValueScope(): void;
18
+ isPointInPath(x: number, y: number): boolean;
19
+ isPointInStroke(x: number, y: number): boolean;
20
+ protected updateBaseData(): void;
21
+ /** 设置样式 */
22
+ setOverlayStyles(ctx: CanvasRenderingContext2D): TextStyleType;
23
+ protected get computedValueScopeStyles(): {};
24
+ draw(ctx: CanvasRenderingContext2D): void;
25
+ getDraw(): [(ctx: CanvasRenderingContext2D) => void, OverlayType] | void;
26
+ }
27
+ export {};
@@ -0,0 +1,42 @@
1
+ import { default as Canvas } from '..';
2
+ export default class Axis {
3
+ /** 画布 */
4
+ private canvas;
5
+ private axis_canvas;
6
+ private ctx;
7
+ private isReload;
8
+ /** 网格开关 */
9
+ show: {
10
+ all: boolean;
11
+ grid: {
12
+ main: boolean;
13
+ secondary: boolean;
14
+ };
15
+ axis: boolean;
16
+ axisText: boolean;
17
+ };
18
+ constructor(canvas: Canvas);
19
+ private initAxisCanvas;
20
+ /** 开关坐标轴 */
21
+ toggleAxis(show?: boolean | DeepPartial<Axis["show"]>): void;
22
+ drawAxisAndGrid(): HTMLCanvasElement | undefined;
23
+ private color;
24
+ /** 绘制网格 */
25
+ private drawGrid;
26
+ /** 坐标轴 */
27
+ private drawAxis;
28
+ /**
29
+ * 在画布上绘制文本
30
+ *
31
+ * 此函数根据给定的文本、位置和选项参数,在画布上绘制文本它首先配置文本的字体和颜色,
32
+ * 然后根据是否需要次要颜色和当前主题来绘制文本的描边和填充
33
+ *
34
+ * @param text 要绘制的文本内容
35
+ * @param x 文本绘制的横坐标
36
+ * @param y 文本绘制的纵坐标
37
+ * @param secondary 是否为次要颜色
38
+ */
39
+ private drawText;
40
+ /** 坐标轴 - 文字 */
41
+ private drawAxisText;
42
+ }
@@ -0,0 +1,177 @@
1
+ import { default as Axis } from './axis';
2
+ import { default as LayerGroup } from '../LayerGroup';
3
+ import { default as EventController } from '../public/eventController';
4
+ type ConstructorOption = ConstructorParameters<typeof EventController>[0] & {
5
+ /** 画布 id */
6
+ id: string;
7
+ /** 轴配置 */
8
+ axisConfig?: Parameters<BaseData["setAxis"]>[0];
9
+ /** 默认中心点 */
10
+ defaultCenter?: Parameters<BaseData["setDefaultCenter"]>[0];
11
+ /** 偏移量 */
12
+ offset?: BaseData["offset"];
13
+ /**
14
+ * 缩放比例,用于动态控制坐标轴上数字所对应的实际显示长度,以实现坐标轴显示效果的缩放调整。
15
+ *
16
+ * 默认情况下,scale 的初始值设定为 1,此时坐标轴上数值为 1 的刻度在界面上的实际显示长度为 50px。
17
+ *
18
+ * scale 的值依据特定的计算逻辑动态变化,其计算公式为:scale = 默认值 1 + 滚动周期 * 滚动值,其中滚动周期和滚动值均为可变参数。
19
+ * 例如,当滚动周期为 10,滚动值为 0.02 时,scale 的计算结果为 1 + 10 * 0.02 = 1.2 。在此状态下,坐标轴上数值为 1 的刻度在界面上的实际显示长度会变为 100px。
20
+ *
21
+ * 一般而言,scale 的值越大,相同数值在坐标轴上显示的长度就越长,在视觉上呈现出放大效果;scale 的值越小,相同数值在坐标轴上显示的长度就越短,视觉上呈现出缩小效果。
22
+ * 可通过调整滚动周期和滚动值来灵活改变 scale 的大小,进而满足不同的显示需求。
23
+ */
24
+ defaultScale?: number;
25
+ };
26
+ /** 基础数据 */
27
+ export default class BaseData extends EventController {
28
+ /** 画布元素 */
29
+ canvas: HTMLCanvasElement;
30
+ /** 画布上下文 */
31
+ ctx: CanvasRenderingContext2D;
32
+ /** rect值是最新的吗 */
33
+ private _rectValueIsUpdated;
34
+ private _rect?;
35
+ /** 画布矩形 */
36
+ get rect(): DOMRect;
37
+ /** 画布偏移量 */
38
+ offset: {
39
+ x: number;
40
+ y: number;
41
+ };
42
+ /** 画布中心点 */
43
+ center: {
44
+ x: number;
45
+ y: number;
46
+ };
47
+ /** 默认画布中心点 */
48
+ defaultCenter: DefaultCenter;
49
+ /** 精度 */
50
+ accuracy: number;
51
+ /**
52
+ * 缩放比例,用于动态控制坐标轴上数字所对应的实际显示长度,以实现坐标轴显示效果的缩放调整。
53
+ *
54
+ * 默认情况下,scale 的初始值设定为 1,此时坐标轴上数值为 1 的刻度在界面上的实际显示长度为 50px。
55
+ *
56
+ * scale 的值依据特定的计算逻辑动态变化,其计算公式为:scale = 默认值 1 + 滚动周期 * 滚动值,其中滚动周期和滚动值均为可变参数。
57
+ * 例如,当滚动周期为 10,滚动值为 0.02 时,scale 的计算结果为 1 + 10 * 0.02 = 1.2 。在此状态下,坐标轴上数值为 1 的刻度在界面上的实际显示长度会变为 100px。
58
+ *
59
+ * 一般而言,scale 的值越大,相同数值在坐标轴上显示的长度就越长,在视觉上呈现出放大效果;scale 的值越小,相同数值在坐标轴上显示的长度就越短,视觉上呈现出缩小效果。
60
+ * 可通过调整滚动周期和滚动值来灵活改变 scale 的大小,进而满足不同的显示需求。
61
+ */
62
+ scale: number;
63
+ /** 缩放比例 */
64
+ defaultScale: number;
65
+ /** 百分比 */
66
+ percentage: number;
67
+ /**
68
+ * 网格大小设定规则:
69
+ * 1. 基于 count 计算的网格,其内部会被均匀划分为 5 个子网格。
70
+ * 2. 为确保网格在绘制时网格线正常显示,且在缩放操作时能实现平滑过渡
71
+ * min 必须是 5 的整数倍,即 min % 5 === 0。
72
+ */
73
+ axisConfig: {
74
+ /** 滚轮滚动周期为 0 时单网格代表的数字 */
75
+ count: number;
76
+ /** 网格最小尺寸 */
77
+ min: number;
78
+ /** 网格当前大小 */
79
+ size: number;
80
+ /** x 轴方向:1 右增左减,-1 左增右减 */
81
+ x: 1 | -1;
82
+ /** y 轴方向:1 下增上减,-1 上增下减 */
83
+ y: 1 | -1;
84
+ };
85
+ /**
86
+ * 滚动周期规则说明:
87
+ * 1. 每滚动 10 次构成一个完整的滚动周期。
88
+ * 2. 为保证与网格绘制相适配,滚动周期数值必须为 5 的整数倍。
89
+ */
90
+ cycle: number;
91
+ /** 滚轮滚动的值 */
92
+ delta: number;
93
+ private _redrawInNextRenderFrame;
94
+ /** 是否在当前渲染帧进行重绘 */
95
+ get redrawInNextRenderFrame(): boolean;
96
+ protected set redrawInNextRenderFrame(value: boolean);
97
+ /** 是否正在自动调整 */
98
+ protected isAuto: boolean;
99
+ /** 是否正在绘制 */
100
+ protected isRendering: boolean;
101
+ /** 绘制坐标轴 */
102
+ drawAxis: Axis;
103
+ /** 图层群组 集合 */
104
+ protected layerGroups: Map<string, LayerGroup>;
105
+ constructor(option: ConstructorOption);
106
+ setNotifyReload(notifyReload?: () => void): void;
107
+ /** 获取默认中心点位置 */
108
+ getDefaultCenterLocation(): void | {
109
+ x: number;
110
+ y: number;
111
+ };
112
+ /** 更新中心点 */
113
+ updateCenter(): void;
114
+ /** 更新网格大小 */
115
+ updateSize(): void;
116
+ /** 缩放比例是否更新 */
117
+ isScaleUpdated: boolean;
118
+ /** 设置缩放 */
119
+ setScale(event: "center" | {
120
+ clientX: number;
121
+ clientY: number;
122
+ }, delta: number): void;
123
+ /** 设置坐标轴 */
124
+ setAxis(config: Partial<BaseData["axisConfig"]>): void;
125
+ /** 设置默认中心 */
126
+ setDefaultCenter(center: Partial<BaseData["defaultCenter"]>): void;
127
+ /**
128
+ * 计算当前缩放级别下的网格尺寸
129
+ * @param scale - 当前缩放比例
130
+ * @returns 计算得到的网格尺寸(像素单位)
131
+ */
132
+ getGridSize(scale: number): number;
133
+ /**
134
+ * 计算当前缩放级别下显示的网格值
135
+ * @param scale - 当前缩放比例
136
+ * @returns 计算得到的网格数量
137
+ */
138
+ getGridCount(scale: number): number;
139
+ /** 现在网格计数 */
140
+ private nowGridCount?;
141
+ /** 获取每个网格表示的数字 */
142
+ get getNowGridCount(): number;
143
+ /** 获取鼠标在坐标轴上的位置 */
144
+ getMousePositionOnAxis(event: {
145
+ clientX: number;
146
+ clientY: number;
147
+ }): void | {
148
+ x: number;
149
+ y: number;
150
+ };
151
+ /** 通过坐标轴上的点 获取坐标轴上的值 */
152
+ getAxisValueByPoint(x: number, y: number, returnInitialScaleValue?: boolean): {
153
+ xV: number;
154
+ yV: number;
155
+ };
156
+ /** 通过坐标轴上的值 获取坐标轴上的点 */
157
+ getAxisPointByValue(xV: number, yV: number, returnInitialScaleValue?: boolean): {
158
+ x: number;
159
+ y: number;
160
+ };
161
+ /** 获取最大/小的 值 */
162
+ getMaxMinValue(rect?: {
163
+ left: number;
164
+ top: number;
165
+ right: number;
166
+ bottom: number;
167
+ }): {
168
+ minXV: number;
169
+ maxXV: number;
170
+ minYV: number;
171
+ maxYV: number;
172
+ };
173
+ /** 变换坐标 */
174
+ transformPosition(positions: [number, number]): [number, number];
175
+ transformPosition(positions: [number, number][]): [number, number][];
176
+ }
177
+ export {};
@@ -0,0 +1,34 @@
1
+ import { default as Style } from './style';
2
+ import { OverlayType } from '../OverlayGroup';
3
+ type ConstructorOption = ConstructorParameters<typeof Style>[0];
4
+ /** 绘制方法 */
5
+ export default class Draw extends Style {
6
+ /** 监听元素大小 */
7
+ private resizeObserver?;
8
+ /** 本次绘制的覆盖物 */
9
+ currentDrawOverlays: OverlayType[];
10
+ /** 计算坐标所需依赖 */
11
+ private rely;
12
+ private isResizeObserverFirstRun;
13
+ constructor(option: ConstructorOption);
14
+ /** 更新 计算坐标所需依赖 */
15
+ private updateRely;
16
+ /** 获取最大/小的 值 */
17
+ maxMinValue: {
18
+ minXV: number;
19
+ maxXV: number;
20
+ minYV: number;
21
+ maxYV: number;
22
+ };
23
+ /** 重绘画布 */
24
+ private redraw;
25
+ /** 测量重绘性能 */
26
+ private measureRedrawPerformance;
27
+ /** 重绘画布 同一个渲染帧只会执行一次 */
28
+ redrawOnce(): void;
29
+ /** 根据坐标查找覆盖物 */
30
+ protected findOverlayByPoint(event: MouseEvent): OverlayType | undefined;
31
+ /** 销毁resizeObserver监听器 */
32
+ protected destroy(): void;
33
+ }
34
+ export {};
@@ -0,0 +1,77 @@
1
+ import { default as Draw } from './draw';
2
+ import { EventHandler } from '../public/eventController';
3
+ type ConstructorOption = ConstructorParameters<typeof Draw>[0];
4
+ /** 事件管理器 */
5
+ export default class Event extends Draw {
6
+ /** 鼠标是否在画布内 */
7
+ private mouseInCanvas;
8
+ /** 鼠标是否按下 */
9
+ private mouseIsDown;
10
+ /** 鼠标上一帧位置 */
11
+ private mouseLastPosition;
12
+ private unBind?;
13
+ constructor(option: ConstructorOption);
14
+ /** 初始化事件 */
15
+ private initEvent;
16
+ /** 上一个被点击的覆盖物 */
17
+ private lastClickedOverlay?;
18
+ private lockNotifyClick;
19
+ /** 鼠标左键点击画布 */
20
+ private click;
21
+ /** 上一个被右击的覆盖物 */
22
+ private lastContextmenuOverlay?;
23
+ /** 鼠标右键点击画布 */
24
+ private contextmenu;
25
+ defaultContextmenu: EventHandler<"contextmenu">;
26
+ /** 鼠标进入画布 */
27
+ private mouseenter;
28
+ /** 鼠标离开画布 */
29
+ private mouseleave;
30
+ /** 上次按下的按键 */
31
+ private lastPressedKey;
32
+ /** 获取按键的步长 */
33
+ private getStep;
34
+ /** 键盘按下事件 */
35
+ private keydown;
36
+ /** 键盘松开事件 */
37
+ private keyup;
38
+ /** 滚轮滚动 */
39
+ private wheel;
40
+ defaultWheel: EventHandler<"wheel">;
41
+ /** 上一个被按下的覆盖物 */
42
+ private lastDownOverlay?;
43
+ /** 鼠标按下 */
44
+ private mousedown;
45
+ defaultDown: EventHandler<"down">;
46
+ /** 鼠标松开 */
47
+ private mouseup;
48
+ /** 上一个被hover的覆盖物 */
49
+ private lastHoverOverlay?;
50
+ /** 鼠标移动 */
51
+ private mousemove;
52
+ /** 处理拖拽移动 */
53
+ private handleDragMove;
54
+ /** 通知可拖拽的 overlays */
55
+ private notifyDraggOverlays;
56
+ /** 处理画布平移 */
57
+ private handleCanvasPan;
58
+ /** 处理 hover 逻辑 */
59
+ private handleHover;
60
+ /** 最后的光标样式 */
61
+ private lastCursorStyle?;
62
+ /** 更新 hover 状态 */
63
+ private updateHoverState;
64
+ /** 清除旧的 hover 状态 */
65
+ private clearHoverState;
66
+ /** 应用新的 hover 状态 */
67
+ private applyHoverState;
68
+ private oldClientX;
69
+ private oldClientY;
70
+ /** 移动端 松开 */
71
+ private touchend;
72
+ /** 移动端 移动 */
73
+ private touchmove;
74
+ /** 销毁事件 */
75
+ destroy(): void;
76
+ }
77
+ export {};
@@ -0,0 +1,104 @@
1
+ import { default as Axis } from './axis';
2
+ import { default as Event } from './event';
3
+ import { default as OverlayGroup, OverlayType } from '../OverlayGroup';
4
+ import { default as LayerGroup } from '../LayerGroup';
5
+ import { default as Layer } from '../LayerGroup/layer';
6
+ type NodeType = LayerGroup | Layer | OverlayGroup | OverlayType;
7
+ type SingleOrArray<T> = T | T[];
8
+ declare class QuickMethod_Get extends Event {
9
+ /** 获取默认覆盖物群组 */
10
+ getDefaultOverlayGroup(): {
11
+ overlays_text: OverlayGroup | undefined;
12
+ overlays_point: OverlayGroup | undefined;
13
+ overlays_line: OverlayGroup | undefined;
14
+ overlays_polygon: OverlayGroup | undefined;
15
+ overlays_custom: OverlayGroup | undefined;
16
+ } | undefined;
17
+ /**
18
+ * 获取所有可见的覆盖层(Overlay)
19
+ * 支持从指定源(图层组/图层/覆盖层组/覆盖层数组)开始遍历
20
+ */
21
+ getAllOverlays(source?: SingleOrArray<NodeType>): OverlayType[];
22
+ }
23
+ declare class QuickMethod_Set extends QuickMethod_Get {
24
+ /** 缩放画布 */
25
+ zoom(delta: number): void;
26
+ /** 放大 */
27
+ zoomIn(): void;
28
+ /** 缩小 */
29
+ zoomOut(): void;
30
+ /** 添加样式 */
31
+ setStyle(style: DeepPartial<StyleType>): void;
32
+ /** 设置主题 */
33
+ setTheme(theme: KnownStyleKeys): void;
34
+ /** 设置坐标轴 */
35
+ setAxis(config: Partial<QuickMethod["axisConfig"]>): void;
36
+ /** 设置默认中心 */
37
+ setDefaultCenter(center: QuickMethod["defaultCenter"]): void;
38
+ }
39
+ declare class QuickMethod_View extends QuickMethod_Set {
40
+ /**
41
+ * 调整视图以适应指定覆盖层
42
+ * @param overlays 目标覆盖层数组,默认使用全部可见覆盖层
43
+ * @param immediately 是否立即执行
44
+ * @param avoid 边距调整 [上, 右, 下, 左]
45
+ * @param maxScale 最大缩放比例限制
46
+ */
47
+ setFitView(overlays?: SingleOrArray<NodeType> | undefined, immediately?: boolean, avoid?: [number, number, number, number], maxScale?: number): void;
48
+ /** 计算所有覆盖层的边界范围 */
49
+ private calculateBoundingBox;
50
+ /**
51
+ * 计算最佳缩放比例(基于动态网格系统适配)
52
+ *
53
+ * 核心逻辑:
54
+ * 1. 网格尺寸动态范围:x ~ 2x(axisConfig.min 表示基础尺寸 x)
55
+ * 2. 计算内容密度 = 单位像素需要表示的数据量(数值越大表示越密集)
56
+ * 3. 对比基准密度(网格在最小尺寸时的密度)
57
+ * 4. 动态选择缩放策略:
58
+ * - 过密内容:减小缩放比例使内容更紧凑(网格尺寸向 2x 调整)
59
+ * - 过疏内容:增大缩放比例以填充空间(网格尺寸向 x 调整)
60
+ *
61
+ * @param visibleWidthValue 可见区域宽度(数据单位)
62
+ * @param visibleHeightValue 可见区域高度(数据单位)
63
+ * @param margins 安全边距 [top, right, bottom, left](像素单位)
64
+ * @param maxScale 最大允许缩放比例
65
+ * @returns 优化后的缩放比例
66
+ */
67
+ private calculateOptimalScale;
68
+ /** 计算目标位置偏移 */
69
+ private calculateOffsetDifference;
70
+ /** 立即应用变换 */
71
+ private applyTransformImmediately;
72
+ /** 执行动画过渡 */
73
+ private animateTransform;
74
+ /** 执行缩放动画 */
75
+ private animateScale;
76
+ /** 执行偏移动画 */
77
+ private animateOffset;
78
+ /** 回归初始位置 */
79
+ returnToOrigin(): void;
80
+ }
81
+ declare class QuickMethod_Toggle extends QuickMethod_View {
82
+ /** 开关坐标轴 */
83
+ toggleAxis(show?: boolean | DeepPartial<Axis["show"]>): void;
84
+ /** 开关点位 */
85
+ togglePoint(show?: boolean): boolean;
86
+ /** 开关线段 */
87
+ toggleLine(show?: boolean): boolean;
88
+ /** 开关多边形 */
89
+ togglePolygon(show?: boolean): boolean;
90
+ /** 切换锁定状态 */
91
+ toggleLock(lock?: boolean): boolean;
92
+ }
93
+ declare class QuickMethod_Ctx extends QuickMethod_Toggle {
94
+ /**
95
+ * 清除指定区域的像素点
96
+ * @param ctx - Canvas 2D绘图上下文
97
+ * @param path - 定义清除区域的路径对象
98
+ */
99
+ static clearPathRegion(ctx: CanvasRenderingContext2D, path: Path2D): void;
100
+ }
101
+ /** 快速方法 */
102
+ export default class QuickMethod extends QuickMethod_Ctx {
103
+ }
104
+ export {};
@@ -0,0 +1,22 @@
1
+ import { default as BaseData } from './basedata';
2
+ type ConstructorOption = ConstructorParameters<typeof BaseData>[0] & {
3
+ theme?: KnownStyleKeys;
4
+ };
5
+ /** 样式管理器 */
6
+ export default class Style extends BaseData {
7
+ /** 主题 */
8
+ theme: KnownStyleKeys;
9
+ /** 主题是否更新 */
10
+ isThemeUpdated: boolean;
11
+ style: StyleType;
12
+ constructor(option: ConstructorOption);
13
+ /** 初始化样式 */
14
+ initStyle(): void;
15
+ /** 清除画布 */
16
+ clearScreen(fillBackground?: boolean): void;
17
+ /** 设置样式 */
18
+ setStyle(style: DeepPartial<StyleType>): void;
19
+ /** 设置主题 */
20
+ setTheme(theme: KnownStyleKeys): void;
21
+ }
22
+ export {};