@leafer/interface 1.8.0 → 1.9.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leafer/interface",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "@leafer/interface",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -24,8 +24,9 @@ import { ITransition } from '../animate/ITransition'
24
24
 
25
25
 
26
26
  export interface ICachedLeaf {
27
- canvas: ILeaferCanvas,
28
- matrix?: IMatrix,
27
+ canvas: ILeaferCanvas, // 完整的元素缓存画布
28
+ matrix?: IMatrix, // 包含导出时附加的 options.matrix
29
+ fitMatrix?: IMatrix, // 不包含导出时附加的 options.matrix
29
30
  bounds: IBoundsData
30
31
  }
31
32
 
@@ -73,6 +74,8 @@ export interface IConstraint {
73
74
 
74
75
  export type IConstraintType = 'from' | 'center' | 'to' | 'from-to' | 'scale'
75
76
 
77
+ export type IScaleFixed = boolean | 'zoom-in' // 缩放时是否固定原有比例,zoom-in表示仅在放大时固定比例(缩小时仍跟随缩小)
78
+
76
79
  export type IHitType =
77
80
  | 'path'
78
81
  | 'pixel'
@@ -605,7 +608,7 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
605
608
  // convert
606
609
  __getNowWorld(options: IRenderOptions): IMatrixWithBoundsScaleData // when render use other matrix
607
610
  getClampRenderScale(): number // 获取当前渲染元素的缩放比例,限制最小为1
608
- getRenderScaleData(abs?: boolean, scaleFixed?: boolean): IScaleData // 当前渲染的比例数据,必须马上分解使用
611
+ getRenderScaleData(abs?: boolean, scaleFixed?: IScaleFixed): IScaleData // 当前渲染的比例数据,必须马上分解使用
609
612
 
610
613
  getTransform(relative?: ILocationType | ILeaf): IMatrixData
611
614
 
@@ -658,6 +661,7 @@ export interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix,
658
661
  resizeHeight(height: number): void
659
662
 
660
663
  // ILeafHit ->
664
+ hit(world: IPointData, hitRadius?: number): boolean
661
665
  __hitWorld(point: IRadiusPointData): boolean
662
666
  __hit(local: IRadiusPointData): boolean
663
667
  __hitFill(inner: IRadiusPointData): boolean
@@ -23,6 +23,8 @@ export interface IUIEvent extends IEvent {
23
23
  path?: ILeafList
24
24
  throughPath?: ILeafList // 穿透path,不受层级影响,从上到下只要碰撞到区域就算,一般点击的时候
25
25
 
26
+ isHoldKeys?(shortcutKeys?: IShortcutKeysCheck | IShortcutKeys): boolean
27
+
26
28
  getBoxPoint?(relative?: ILeaf): IPointData
27
29
  getInnerPoint?(relative?: ILeaf): IPointData
28
30
  getLocalPoint?(relative?: ILeaf): IPointData
@@ -93,10 +95,264 @@ export interface ISwipeEvent extends IDragEvent {
93
95
  }
94
96
 
95
97
  export interface IKeyEvent extends IUIEvent {
96
- code?: string
98
+ code?: IKeyCodes
97
99
  key?: string
98
100
  }
99
101
 
102
+ export type IShortcutKeys = IShortcutStringKeys | IShortcutArrayKeys
103
+
104
+ export type IShortcutStringKeys = string
105
+
106
+ export type IShortcutArrayKeys = IShortcutKeyCodes[] | IShortcutKeyCodes[][] // 二维数组表示或 [ [Shift, A] or [Ctrl, A] ]
107
+
108
+ export type IShortcutKeyCodes =
109
+ | IKeyCodes
110
+ | 'A' // 增加更友好的键名
111
+ | 'B'
112
+ | 'C'
113
+ | 'D'
114
+ | 'E'
115
+ | 'F'
116
+ | 'G'
117
+ | 'H'
118
+ | 'I'
119
+ | 'J'
120
+ | 'K'
121
+ | 'L'
122
+ | 'M'
123
+ | 'N'
124
+ | 'O'
125
+ | 'P'
126
+ | 'Q'
127
+ | 'R'
128
+ | 'S'
129
+ | 'T'
130
+ | 'U'
131
+ | 'V'
132
+ | 'W'
133
+ | 'X'
134
+ | 'Y'
135
+ | 'Z'
136
+ | '0' // 包含小键盘上的 0
137
+ | '1'
138
+ | '2'
139
+ | '3'
140
+ | '4'
141
+ | '5'
142
+ | '6'
143
+ | '7'
144
+ | '8'
145
+ | '9'
146
+ | '!' // Shift + 1
147
+ | '@'
148
+ | '#'
149
+ | '$'
150
+ | '%'
151
+ | '^'
152
+ | '&'
153
+ | '*'
154
+ | '('
155
+ | ')'
156
+ | 'Esc'
157
+ | 'Caps'
158
+ | 'Shift' // 包含 ShiftLeft 和 ShiftRight
159
+ | 'Ctrl'
160
+ | 'Alt'
161
+ | 'Meta'
162
+ | '⌘' // = Meta
163
+ | 'Win' // = Meta
164
+ | '↑'
165
+ | '↓'
166
+ | '←'
167
+ | '→'
168
+ | 'Scroll'
169
+ | 'Num'
170
+ | '-'
171
+ | '_'
172
+ | '='
173
+ | '+'
174
+ | '['
175
+ | '{'
176
+ | ']'
177
+ | '}'
178
+ | '\\'
179
+ | '|'
180
+ | ';'
181
+ | ':'
182
+ | "'"
183
+ | '"'
184
+ | ','
185
+ | '<'
186
+ | '.'
187
+ | '>'
188
+ | '/'
189
+ | '?'
190
+ | '`'
191
+ | '~'
192
+
193
+ export type IKeyCodes =
194
+ | 'KeyA' // A
195
+ | 'KeyB' // B
196
+ | 'KeyC' // C
197
+ | 'KeyD' // D
198
+ | 'KeyE' // E
199
+ | 'KeyF' // F
200
+ | 'KeyG' // G
201
+ | 'KeyH' // H
202
+ | 'KeyI' // I
203
+ | 'KeyJ' // J
204
+ | 'KeyK' // K
205
+ | 'KeyL' // L
206
+ | 'KeyM' // M
207
+ | 'KeyN' // N
208
+ | 'KeyO' // O
209
+ | 'KeyP' // P
210
+ | 'KeyQ' // Q
211
+ | 'KeyR' // R
212
+ | 'KeyS' // S
213
+ | 'KeyT' // T
214
+ | 'KeyU' // U
215
+ | 'KeyV' // V
216
+ | 'KeyW' // W
217
+ | 'KeyX' // X
218
+ | 'KeyY' // Y
219
+ | 'KeyZ' // Z
220
+ | 'Digit0' // 0
221
+ | 'Digit1' // 1
222
+ | 'Digit2' // 2
223
+ | 'Digit3' // 3
224
+ | 'Digit4' // 4
225
+ | 'Digit5' // 5
226
+ | 'Digit6' // 6
227
+ | 'Digit7' // 7
228
+ | 'Digit8' // 8
229
+ | 'Digit9' // 9
230
+ | 'F1' // F1
231
+ | 'F2' // F2
232
+ | 'F3' // F3
233
+ | 'F4' // F4
234
+ | 'F5' // F5
235
+ | 'F6' // F6
236
+ | 'F7' // F7
237
+ | 'F8' // F8
238
+ | 'F9' // F9
239
+ | 'F10' // F10
240
+ | 'F11' // F11
241
+ | 'F12' // F12
242
+ | 'F13' // F13
243
+ | 'F14' // F14
244
+ | 'F15' // F15
245
+ | 'F16' // F16
246
+ | 'F17' // F17
247
+ | 'F18' // F18
248
+ | 'F19' // F19
249
+ | 'F20' // F20
250
+ | 'F21' // F21
251
+ | 'F22' // F22
252
+ | 'F23' // F23
253
+ | 'F24' // F24
254
+ | 'Escape' // Esc
255
+ | 'Tab' // Tab
256
+ | 'CapsLock' // Caps Lock
257
+ | 'ShiftLeft' // Shift (左)
258
+ | 'ShiftRight' // Shift (右)
259
+ | 'ControlLeft' // Ctrl (左)
260
+ | 'ControlRight' // Ctrl (右)
261
+ | 'AltLeft' // Alt (左)
262
+ | 'AltRight' // Alt (右)
263
+ | 'MetaLeft' // Meta / ⌘ / Win (左)
264
+ | 'MetaRight' // Meta / ⌘ / Win (右)
265
+ | 'Enter' // Enter / 回车
266
+ | 'Space' // 空格键
267
+ | 'Backspace' // Backspace / 删除
268
+ | 'Insert' // Insert
269
+ | 'Delete' // Delete
270
+ | 'Home' // Home
271
+ | 'End' // End
272
+ | 'PageUp' // Page Up
273
+ | 'PageDown' // Page Down
274
+ | 'ArrowUp' // ↑
275
+ | 'ArrowDown' // ↓
276
+ | 'ArrowLeft' // ←
277
+ | 'ArrowRight' // →
278
+ | 'PrintScreen' // Print Screen
279
+ | 'Pause' // Pause / Break
280
+ | 'ScrollLock' // Scroll Lock
281
+ | 'NumLock' // Num Lock
282
+ | 'ContextMenu' // 菜单键
283
+ | 'Minus' // - / _
284
+ | 'Equal' // = / +
285
+ | 'BracketLeft' // [ / {
286
+ | 'BracketRight' // ] / }
287
+ | 'Backslash' // \ / |
288
+ | 'IntlBackslash' // 国际键盘上的 \
289
+ | 'Semicolon' // ; / :
290
+ | 'Quote' // ' / "
291
+ | 'Comma' // , / <
292
+ | 'Period' // . / >
293
+ | 'Slash' // / / ?
294
+ | 'Backquote' // ` / ~
295
+ | 'Numpad0' // 小键盘 0
296
+ | 'Numpad1' // 小键盘 1
297
+ | 'Numpad2' // 小键盘 2
298
+ | 'Numpad3' // 小键盘 3
299
+ | 'Numpad4' // 小键盘 4
300
+ | 'Numpad5' // 小键盘 5
301
+ | 'Numpad6' // 小键盘 6
302
+ | 'Numpad7' // 小键盘 7
303
+ | 'Numpad8' // 小键盘 8
304
+ | 'Numpad9' // 小键盘 9
305
+ | 'NumpadMultiply' // *
306
+ | 'NumpadAdd' // +
307
+ | 'NumpadSubtract' // -
308
+ | 'NumpadDecimal' // .
309
+ | 'NumpadDivide' // /
310
+ | 'NumpadEnter' // 小键盘回车
311
+ | 'NumpadComma' // 小键盘 ,
312
+ | 'NumpadParenLeft' // (
313
+ | 'NumpadParenRight' // )
314
+ | 'NumpadEqual' // =
315
+ | 'BrowserBack' // 浏览器后退
316
+ | 'BrowserForward' // 浏览器前进
317
+ | 'BrowserRefresh' // 浏览器刷新
318
+ | 'BrowserStop' // 停止加载
319
+ | 'BrowserSearch' // 浏览器搜索
320
+ | 'BrowserFavorites' // 浏览器收藏夹
321
+ | 'BrowserHome' // 浏览器主页
322
+ | 'LaunchMail' // 启动邮件客户端
323
+ | 'LaunchMediaPlayer' // 启动媒体播放器
324
+ | 'LaunchCalculator' // 启动计算器
325
+ | 'MediaPlayPause' // 播放/暂停
326
+ | 'MediaStop' // 停止播放
327
+ | 'MediaTrackNext' // 下一首
328
+ | 'MediaTrackPrevious' // 上一首
329
+ | 'MediaVolumeMute' // 静音
330
+ | 'MediaVolumeUp' // 音量+
331
+ | 'MediaVolumeDown' // 音量-
332
+ | 'AudioVolumeMute' // 系统静音
333
+ | 'AudioVolumeUp' // 系统音量+
334
+ | 'AudioVolumeDown' // 系统音量-
335
+ | 'Select' // 已废弃
336
+ | 'LaunchApp1' // 启动应用 1
337
+ | 'LaunchApp2' // 启动应用 2
338
+ | 'Help' // 帮助键
339
+ | 'Sleep' // 休眠
340
+ | 'WakeUp' // 唤醒
341
+ | 'Lang1' // 韩文/日文切换
342
+ | 'Lang2' // 韩文/日文切换
343
+ | 'Power' // 电源键
344
+ | 'Fn' // Fn 键(部分设备)
345
+ | 'Eject' // 光驱弹出键(Mac)
346
+ | 'Convert' // 日文输入:转换
347
+ | 'NonConvert' // 日文输入:不转换
348
+ | 'KanaMode' // 日文假名模式
349
+ | 'Unidentified' // 未识别键
350
+
351
+
352
+ export interface IShortcutKeysCheck {
353
+ (e: IUIEvent): boolean
354
+ }
355
+
100
356
  export interface IImageEvent extends IEvent {
101
357
  image?: ILeaferImage
102
358
  attrName?: string
@@ -55,7 +55,7 @@ export interface ILeaferImage {
55
55
  load(onSuccess?: ILeaferImageOnLoaded, onError?: ILeaferImageOnError): number
56
56
  unload(index: number, stopEvent?: boolean): void
57
57
  getFull(filters?: IObject): any
58
- getCanvas(width: number, height: number, opacity?: number, filters?: IObject): any
58
+ getCanvas(width: number, height: number, opacity?: number, filters?: IObject, xGap?: number, yGap?: number): any
59
59
  getPattern(canvas: any, repeat: string | null, transform?: IMatrixData, paint?: IObject): ICanvasPattern
60
60
  destroy(): void
61
61
  }
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { IAppBase } from './app/IApp'
2
2
  export { ILeaferBase, ILeaferAttrData, ILeaferType, ILeaferTypeCreator, ILeaferTypeFunction, ILeaferTypeList, ILeaferConfig, ICreator, IUICreator, IZoomType, IZoomOptions } from './app/ILeafer'
3
- export { ILeaf, ILeafAttrData, ILeafComputedData, ILeafInputData, ICachedLeaf, IFlowType, IFlowBoxType, IAlign, IAxisAlign, IFlowAlign, IFlowAxisAlign, ISide, IAxis, IGap, IPointGap, IAxisReverse, IBaseLineAlign, IFlowWrap, IAutoSize, IRangeSize, IPercentData, IUnitData, IConstraint, IConstraintType, IHitType, IMaskType, IEraserType, IBlendMode, IEditSize, IImageCursor, ICursorType, IStateStyleType, IDirection, IDirection4, IAround, IFilter, ILeafAttrDescriptor, ILeafAttrDescriptorFn } from './display/ILeaf'
3
+ export { ILeaf, ILeafAttrData, ILeafComputedData, ILeafInputData, ICachedLeaf, IFlowType, IFlowBoxType, IAlign, IAxisAlign, IFlowAlign, IFlowAxisAlign, ISide, IAxis, IGap, IPointGap, IAxisReverse, IBaseLineAlign, IFlowWrap, IAutoSize, IRangeSize, IPercentData, IUnitData, IConstraint, IConstraintType, IScaleFixed, IHitType, IMaskType, IEraserType, IBlendMode, IEditSize, IImageCursor, ICursorType, IStateStyleType, IDirection, IDirection4, IAround, IFilter, ILeafAttrDescriptor, ILeafAttrDescriptorFn } from './display/ILeaf'
4
4
  export { IBranch } from './display/IBranch'
5
5
  export { IZoomView } from './display/IView'
6
6
 
@@ -47,7 +47,7 @@ export { IExportOptions, IJSONOptions, IExportResult, IExportResultFunction, IEx
47
47
 
48
48
  export { InnerId, IEventer, IEventParamsMap, IEventParams, IEventListener, IEventOption, IEventListenerOptions, IEventListenerMap, IEventListenerItem, IEventListenerId } from './event/IEventer'
49
49
  export { IEventTarget, IEvent, ILeaferEvent, IPropertyEvent, ILayoutEvent, IRenderEvent, IAnimateEvent, IChildEvent, IBoundsEvent, IResizeEvent, IResizeEventListener, IUpdateEvent, IWatchEvent, IMultiTouchData, IKeepTouchData } from './event/IEvent'
50
- export { IUIEvent, IPointerEvent, PointerType, IDragEvent, IDropEvent, ISwipeEvent, IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IKeyEvent, IImageEvent } from './event/IUIEvent'
50
+ export { IUIEvent, IPointerEvent, PointerType, IDragEvent, IDropEvent, ISwipeEvent, IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, IKeyEvent, IShortcutKeys, IShortcutKeysCheck, IShortcutKeyCodes, IKeyCodes, IImageEvent } from './event/IUIEvent'
51
51
  export { IProgressData, IProgressFunction } from './event/IProgress'
52
52
 
53
53
  export { ICursorTypeMap, ICursorRotate, ICursorRotateMap } from './interaction/ICursor'
@@ -10,6 +10,7 @@ import { IKeepTouchData } from '../event/IEvent'
10
10
  import { ILeaferCanvas } from '../canvas/ILeaferCanvas'
11
11
  import { IObject } from '../data/IData'
12
12
 
13
+
13
14
  export interface IInteraction extends IControl {
14
15
  target: ILeaf
15
16
  canvas: IInteractionCanvas
@@ -117,7 +118,7 @@ export interface IMoveConfig {
117
118
  holdRightKey?: boolean
118
119
  scroll?: boolean | 'x' | 'y' | 'limit' | 'x-limit' | 'y-limit'
119
120
  drag?: boolean | 'auto'
120
- dragAnimate?: boolean
121
+ dragAnimate?: boolean | number
121
122
  dragEmpty?: boolean
122
123
  dragOut?: boolean | number
123
124
  autoDistance?: number
@@ -152,6 +153,7 @@ export interface IPointerConfig {
152
153
  hover?: boolean
153
154
  touch?: boolean // 使用touch事件代替pointer事件
154
155
 
156
+ dragLimitAnimate?: boolean | number //拖拽限制可在拖拽结束时进行动画归位
155
157
  dragHover?: boolean
156
158
  dragDistance?: number
157
159
  swipeDistance?: number
package/src/math/IMath.ts CHANGED
@@ -85,7 +85,7 @@ export interface IOffsetBoundsData extends IBoundsData {
85
85
  }
86
86
 
87
87
  export interface IBoundsDataFn {
88
- (target: any): IBoundsData
88
+ (target: any, index?: number): IBoundsData
89
89
  }
90
90
 
91
91
  export interface IBounds extends IBoundsData, ITwoPointBoundsData {
@@ -31,6 +31,7 @@ export interface IPlatform {
31
31
  syncDomFont?: boolean // firefox need
32
32
 
33
33
  selector?: ISelector // 公共查找选择器
34
+ getSelector?(leaf: ILeaf): ISelector
34
35
  layout?(target: ILeaf): void
35
36
 
36
37
  origin?: {
@@ -56,6 +56,7 @@ export interface ISelector {
56
56
  finder?: IFinder
57
57
 
58
58
  getByPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): IPickResult
59
+ hitPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): boolean
59
60
  getBy(condition: number | string | IFindCondition | IFindMethod, branch?: ILeaf, one?: boolean, options?: any): ILeaf | ILeaf[]
60
61
  destroy(): void
61
62
  }
@@ -63,6 +64,7 @@ export interface ISelector {
63
64
 
64
65
  export interface IPicker {
65
66
  getByPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): IPickResult
67
+ hitPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): boolean
66
68
  destroy(): void
67
69
  }
68
70
 
package/types/index.d.ts CHANGED
@@ -65,7 +65,7 @@ interface IOffsetBoundsData extends IBoundsData {
65
65
  offsetY: number;
66
66
  }
67
67
  interface IBoundsDataFn {
68
- (target: any): IBoundsData;
68
+ (target: any, index?: number): IBoundsData;
69
69
  }
70
70
  interface IBounds extends IBoundsData, ITwoPointBoundsData {
71
71
  set(x?: number | IBoundsData, y?: number, width?: number, height?: number): IBounds;
@@ -597,12 +597,19 @@ interface CanvasUserInterface {
597
597
  drawFocusIfNeeded(path: IPath2D, element: any): void;
598
598
  }
599
599
  interface ITextMetrics {
600
+ /** Returns the measurement described below. */
600
601
  readonly actualBoundingBoxAscent: number;
602
+ /** Returns the measurement described below. */
601
603
  readonly actualBoundingBoxDescent: number;
604
+ /** Returns the measurement described below. */
602
605
  readonly actualBoundingBoxLeft: number;
606
+ /** Returns the measurement described below. */
603
607
  readonly actualBoundingBoxRight: number;
608
+ /** Returns the measurement described below. */
604
609
  readonly fontBoundingBoxAscent: number;
610
+ /** Returns the measurement described below. */
605
611
  readonly fontBoundingBoxDescent: number;
612
+ /** Returns the measurement described below. */
606
613
  readonly width: number;
607
614
  }
608
615
  interface CanvasText {
@@ -1299,11 +1306,13 @@ interface ISelector {
1299
1306
  picker: IPicker;
1300
1307
  finder?: IFinder;
1301
1308
  getByPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): IPickResult;
1309
+ hitPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): boolean;
1302
1310
  getBy(condition: number | string | IFindCondition | IFindMethod, branch?: ILeaf, one?: boolean, options?: any): ILeaf | ILeaf[];
1303
1311
  destroy(): void;
1304
1312
  }
1305
1313
  interface IPicker {
1306
1314
  getByPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): IPickResult;
1315
+ hitPoint(hitPoint: IPointData, hitRadius: number, options?: IPickOptions): boolean;
1307
1316
  destroy(): void;
1308
1317
  }
1309
1318
  interface IFinder {
@@ -1371,6 +1380,7 @@ interface IAnimateEventFunction {
1371
1380
  interface ICachedLeaf {
1372
1381
  canvas: ILeaferCanvas;
1373
1382
  matrix?: IMatrix;
1383
+ fitMatrix?: IMatrix;
1374
1384
  bounds: IBoundsData;
1375
1385
  }
1376
1386
  type ISide = 'width' | 'height';
@@ -1407,6 +1417,7 @@ interface IConstraint {
1407
1417
  y: IConstraintType;
1408
1418
  }
1409
1419
  type IConstraintType = 'from' | 'center' | 'to' | 'from-to' | 'scale';
1420
+ type IScaleFixed = boolean | 'zoom-in';
1410
1421
  type IHitType = 'path' | 'pixel' | 'all' | 'none';
1411
1422
  type IMaskType = 'path' | 'pixel' | 'grayscale' | 'clipping' | 'clipping-path';
1412
1423
  type IEraserType = 'path' | 'pixel';
@@ -1708,7 +1719,7 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1708
1719
  __renderEraser(canvas: ILeaferCanvas, options: IRenderOptions): void;
1709
1720
  __getNowWorld(options: IRenderOptions): IMatrixWithBoundsScaleData;
1710
1721
  getClampRenderScale(): number;
1711
- getRenderScaleData(abs?: boolean, scaleFixed?: boolean): IScaleData;
1722
+ getRenderScaleData(abs?: boolean, scaleFixed?: IScaleFixed): IScaleData;
1712
1723
  getTransform(relative?: ILocationType | ILeaf): IMatrixData;
1713
1724
  getBounds(type?: IBoundsType, relative?: ILocationType | ILeaf): IBoundsData;
1714
1725
  getLayoutBounds(type?: IBoundsType, relative?: ILocationType | ILeaf, unscale?: boolean): ILayoutBoundsData;
@@ -1747,6 +1758,7 @@ interface ILeaf extends ILeafRender, ILeafHit, ILeafBounds, ILeafMatrix, ILeafDa
1747
1758
  __scaleResize(scaleX: number, scaleY: number): void;
1748
1759
  resizeWidth(width: number): void;
1749
1760
  resizeHeight(height: number): void;
1761
+ hit(world: IPointData, hitRadius?: number): boolean;
1750
1762
  __hitWorld(point: IRadiusPointData): boolean;
1751
1763
  __hit(local: IRadiusPointData): boolean;
1752
1764
  __hitFill(inner: IRadiusPointData): boolean;
@@ -1831,7 +1843,7 @@ interface ILeaferImage {
1831
1843
  load(onSuccess?: ILeaferImageOnLoaded, onError?: ILeaferImageOnError): number;
1832
1844
  unload(index: number, stopEvent?: boolean): void;
1833
1845
  getFull(filters?: IObject): any;
1834
- getCanvas(width: number, height: number, opacity?: number, filters?: IObject): any;
1846
+ getCanvas(width: number, height: number, opacity?: number, filters?: IObject, xGap?: number, yGap?: number): any;
1835
1847
  getPattern(canvas: any, repeat: string | null, transform?: IMatrixData, paint?: IObject): ICanvasPattern;
1836
1848
  destroy(): void;
1837
1849
  }
@@ -1850,6 +1862,7 @@ interface IUIEvent extends IEvent {
1850
1862
  buttons?: number;
1851
1863
  path?: ILeafList;
1852
1864
  throughPath?: ILeafList;
1865
+ isHoldKeys?(shortcutKeys?: IShortcutKeysCheck | IShortcutKeys): boolean;
1853
1866
  getBoxPoint?(relative?: ILeaf): IPointData;
1854
1867
  getInnerPoint?(relative?: ILeaf): IPointData;
1855
1868
  getLocalPoint?(relative?: ILeaf): IPointData;
@@ -1904,9 +1917,17 @@ interface IWheelEvent extends IUIEvent {
1904
1917
  interface ISwipeEvent extends IDragEvent {
1905
1918
  }
1906
1919
  interface IKeyEvent extends IUIEvent {
1907
- code?: string;
1920
+ code?: IKeyCodes;
1908
1921
  key?: string;
1909
1922
  }
1923
+ type IShortcutKeys = IShortcutStringKeys | IShortcutArrayKeys;
1924
+ type IShortcutStringKeys = string;
1925
+ type IShortcutArrayKeys = IShortcutKeyCodes[] | IShortcutKeyCodes[][];
1926
+ type IShortcutKeyCodes = IKeyCodes | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '!' | '@' | '#' | '$' | '%' | '^' | '&' | '*' | '(' | ')' | 'Esc' | 'Caps' | 'Shift' | 'Ctrl' | 'Alt' | 'Meta' | '⌘' | 'Win' | '↑' | '↓' | '←' | '→' | 'Scroll' | 'Num' | '-' | '_' | '=' | '+' | '[' | '{' | ']' | '}' | '\\' | '|' | ';' | ':' | "'" | '"' | ',' | '<' | '.' | '>' | '/' | '?' | '`' | '~';
1927
+ type IKeyCodes = 'KeyA' | 'KeyB' | 'KeyC' | 'KeyD' | 'KeyE' | 'KeyF' | 'KeyG' | 'KeyH' | 'KeyI' | 'KeyJ' | 'KeyK' | 'KeyL' | 'KeyM' | 'KeyN' | 'KeyO' | 'KeyP' | 'KeyQ' | 'KeyR' | 'KeyS' | 'KeyT' | 'KeyU' | 'KeyV' | 'KeyW' | 'KeyX' | 'KeyY' | 'KeyZ' | 'Digit0' | 'Digit1' | 'Digit2' | 'Digit3' | 'Digit4' | 'Digit5' | 'Digit6' | 'Digit7' | 'Digit8' | 'Digit9' | 'F1' | 'F2' | 'F3' | 'F4' | 'F5' | 'F6' | 'F7' | 'F8' | 'F9' | 'F10' | 'F11' | 'F12' | 'F13' | 'F14' | 'F15' | 'F16' | 'F17' | 'F18' | 'F19' | 'F20' | 'F21' | 'F22' | 'F23' | 'F24' | 'Escape' | 'Tab' | 'CapsLock' | 'ShiftLeft' | 'ShiftRight' | 'ControlLeft' | 'ControlRight' | 'AltLeft' | 'AltRight' | 'MetaLeft' | 'MetaRight' | 'Enter' | 'Space' | 'Backspace' | 'Insert' | 'Delete' | 'Home' | 'End' | 'PageUp' | 'PageDown' | 'ArrowUp' | 'ArrowDown' | 'ArrowLeft' | 'ArrowRight' | 'PrintScreen' | 'Pause' | 'ScrollLock' | 'NumLock' | 'ContextMenu' | 'Minus' | 'Equal' | 'BracketLeft' | 'BracketRight' | 'Backslash' | 'IntlBackslash' | 'Semicolon' | 'Quote' | 'Comma' | 'Period' | 'Slash' | 'Backquote' | 'Numpad0' | 'Numpad1' | 'Numpad2' | 'Numpad3' | 'Numpad4' | 'Numpad5' | 'Numpad6' | 'Numpad7' | 'Numpad8' | 'Numpad9' | 'NumpadMultiply' | 'NumpadAdd' | 'NumpadSubtract' | 'NumpadDecimal' | 'NumpadDivide' | 'NumpadEnter' | 'NumpadComma' | 'NumpadParenLeft' | 'NumpadParenRight' | 'NumpadEqual' | 'BrowserBack' | 'BrowserForward' | 'BrowserRefresh' | 'BrowserStop' | 'BrowserSearch' | 'BrowserFavorites' | 'BrowserHome' | 'LaunchMail' | 'LaunchMediaPlayer' | 'LaunchCalculator' | 'MediaPlayPause' | 'MediaStop' | 'MediaTrackNext' | 'MediaTrackPrevious' | 'MediaVolumeMute' | 'MediaVolumeUp' | 'MediaVolumeDown' | 'AudioVolumeMute' | 'AudioVolumeUp' | 'AudioVolumeDown' | 'Select' | 'LaunchApp1' | 'LaunchApp2' | 'Help' | 'Sleep' | 'WakeUp' | 'Lang1' | 'Lang2' | 'Power' | 'Fn' | 'Eject' | 'Convert' | 'NonConvert' | 'KanaMode' | 'Unidentified';
1928
+ interface IShortcutKeysCheck {
1929
+ (e: IUIEvent): boolean;
1930
+ }
1910
1931
  interface IImageEvent extends IEvent {
1911
1932
  image?: ILeaferImage;
1912
1933
  attrName?: string;
@@ -1994,7 +2015,7 @@ interface IMoveConfig {
1994
2015
  holdRightKey?: boolean;
1995
2016
  scroll?: boolean | 'x' | 'y' | 'limit' | 'x-limit' | 'y-limit';
1996
2017
  drag?: boolean | 'auto';
1997
- dragAnimate?: boolean;
2018
+ dragAnimate?: boolean | number;
1998
2019
  dragEmpty?: boolean;
1999
2020
  dragOut?: boolean | number;
2000
2021
  autoDistance?: number;
@@ -2023,6 +2044,7 @@ interface IPointerConfig {
2023
2044
  transformTime?: number;
2024
2045
  hover?: boolean;
2025
2046
  touch?: boolean;
2047
+ dragLimitAnimate?: boolean | number;
2026
2048
  dragHover?: boolean;
2027
2049
  dragDistance?: number;
2028
2050
  swipeDistance?: number;
@@ -2256,6 +2278,7 @@ interface IPlatform {
2256
2278
  fullImageShadow?: boolean;
2257
2279
  syncDomFont?: boolean;
2258
2280
  selector?: ISelector;
2281
+ getSelector?(leaf: ILeaf): ISelector;
2259
2282
  layout?(target: ILeaf): void;
2260
2283
  origin?: {
2261
2284
  createCanvas(width: number, height: number, format?: 'svg' | 'pdf'): any;
@@ -2343,4 +2366,4 @@ interface ITransformer {
2343
2366
  destroy(): void;
2344
2367
  }
2345
2368
 
2346
- export type { ACommandData, ArcCommandData, ArcToCommandData, BezierCurveToCommandObject, CCommandData, CanvasPathCommand, EllipseCommandData, HCommandData, IAlign, IAnimateEasing, IAnimateEasingFunction, IAnimateEasingName, IAnimateEnding, IAnimateEvent, IAnimateEventFunction, IAnimateEvents, IAnimateOptions, IAnswer, IAppBase, IAround, IAttrDecorator, IAutoBounds, IAutoBoundsData, IAutoBoxData, IAutoSize, IAxis, IAxisAlign, IAxisReverse, IBaseLineAlign, IBlendMode, IBlob, IBlobFunction, IBoolean, IBooleanMap, IBounds, IBoundsData, IBoundsDataFn, IBoundsEvent, IBoundsType, IBranch, IBranchRender, IBranchRenderModule, ICachedLeaf, ICanvasAttr, ICanvasCacheOptions, ICanvasContext2D, ICanvasContext2DSettings, ICanvasManager, ICanvasPattern, ICanvasStrokeOptions, ICanvasType, IChildEvent, IClientPointData, IConstraint, IConstraintType, IControl, ICreator, ICubicBezierEasing, ICursorConfig, ICursorRotate, ICursorRotateMap, ICursorType, ICursorTypeMap, ICustomEasingFunction, IDataProcessor, IDataTypeHandle, IDirection, IDirection4, IDragEvent, IDropEvent, IEditSize, IEraserType, IEvent, IEventListener, IEventListenerId, IEventListenerItem, IEventListenerMap, IEventListenerOptions, IEventOption, IEventParams, IEventParamsMap, IEventTarget, IEventer, IExportFileType, IExportImageType, IExportOnCanvasFunction, IExportOptions, IExportResult, IExportResultFunction, IFilter, IFindCondition, IFindMethod, IFinder, IFlowAlign, IFlowAxisAlign, IFlowBoxType, IFlowType, IFlowWrap, IFourNumber, IFromToData, IFunction, IFunctionMap, IGap, IHitCanvas, IHitCanvasConfig, IHitCanvasManager, IHitType, IImageCursor, IImageEvent, IImageManager, IInteraction, IInteractionCanvas, IInteractionConfig, IJSONOptions, IKeepTouchData, IKeyEvent, ILayoutAttr, ILayoutBlockData, ILayoutBoundsData, ILayoutChangedData, ILayoutData, ILayoutEvent, ILayouter, ILayouterConfig, ILeaf, ILeafArrayMap, ILeafAttrData, ILeafAttrDescriptor, ILeafAttrDescriptorFn, ILeafBounds, ILeafBoundsModule, ILeafComputedData, ILeafData, ILeafDataOptions, ILeafDataProxy, ILeafDataProxyModule, ILeafEventer, ILeafEventerModule, ILeafHit, ILeafHitModule, ILeafInputData, ILeafLayout, ILeafLevelList, ILeafList, ILeafListItemCallback, ILeafMap, ILeafMatrix, ILeafMatrixModule, ILeafRender, ILeafRenderModule, ILeaferAttrData, ILeaferBase, ILeaferCanvas, ILeaferCanvasConfig, ILeaferCanvasView, ILeaferConfig, ILeaferEvent, ILeaferImage, ILeaferImageCacheCanvas, ILeaferImageConfig, ILeaferImageOnError, ILeaferImageOnLoaded, ILeaferImagePatternPaint, ILeaferType, ILeaferTypeCreator, ILeaferTypeFunction, ILeaferTypeList, ILocationType, IMaskType, IMatrix, IMatrixData, IMatrixWithBoundsData, IMatrixWithBoundsScaleData, IMatrixWithLayoutData, IMatrixWithOptionHalfData, IMatrixWithOptionScaleData, IMatrixWithScaleData, IMiniapp, IMiniappSelect, IMiniappSizeView, IMotionPathData, IMoveConfig, IMoveEvent, IMultiTouchConfig, IMultiTouchData, INumber, INumberFunction, INumberMap, IObject, IObjectFunction, IOffsetBoundsData, IOptionSizeData, IPartLayoutConfig, IPath2D, IPathCommandData, IPathCommandObject, IPathCreator, IPathDrawer, IPathString, IPercentData, IPickBottom, IPickOptions, IPickResult, IPicker, IPlatform, IPlugin, IPoint, IPointData, IPointDataFunction, IPointDataMap, IPointGap, IPointerConfig, IPointerEvent, IProgressData, IProgressFunction, IPropertyEvent, IRadiusPointData, IRangeSize, IRenderEvent, IRenderOptions, IRenderer, IRendererConfig, IResizeEvent, IResizeEventListener, IResource, IRotateEvent, IRotationPointData, IScaleData, IScaleRotationData, IScreenSizeData, IScrollPointData, ISelector, ISelectorConfig, ISelectorProxy, ISide, ISize, ISizeData, ISkewData, ISkiaCanvas, ISkiaCanvasExportConfig, ISkiaNAPICanvas, IStateStyleType, IStepsEasing, IString, IStringFunction, IStringMap, ISwipeEvent, ITaskItem, ITaskOptions, ITaskProcessor, ITaskProcessorConfig, ITextMetrics, ITimer, ITouchConfig, ITransformer, ITransition, ITwoPointBoundsData, IUICreator, IUIEvent, IUnitData, IUnitPointData, IUpdateEvent, IValue, IValueFunction, IWatchEvent, IWatchEventData, IWatcher, IWatcherConfig, IWheelConfig, IWheelEvent, IWindingRule, IWindingRuleData, IZoomConfig, IZoomEvent, IZoomOptions, IZoomType, IZoomView, InnerId, LCommandData, LineToCommandObject, MCommandData, MoveToCommandObject, PointerType, QCommandData, QuadraticCurveToCommandObject, RectCommandData, RoundRectCommandData, SCommandData, TCommandData, VCommandData, ZCommandData };
2369
+ export type { ACommandData, ArcCommandData, ArcToCommandData, BezierCurveToCommandObject, CCommandData, CanvasPathCommand, EllipseCommandData, HCommandData, IAlign, IAnimateEasing, IAnimateEasingFunction, IAnimateEasingName, IAnimateEnding, IAnimateEvent, IAnimateEventFunction, IAnimateEvents, IAnimateOptions, IAnswer, IAppBase, IAround, IAttrDecorator, IAutoBounds, IAutoBoundsData, IAutoBoxData, IAutoSize, IAxis, IAxisAlign, IAxisReverse, IBaseLineAlign, IBlendMode, IBlob, IBlobFunction, IBoolean, IBooleanMap, IBounds, IBoundsData, IBoundsDataFn, IBoundsEvent, IBoundsType, IBranch, IBranchRender, IBranchRenderModule, ICachedLeaf, ICanvasAttr, ICanvasCacheOptions, ICanvasContext2D, ICanvasContext2DSettings, ICanvasManager, ICanvasPattern, ICanvasStrokeOptions, ICanvasType, IChildEvent, IClientPointData, IConstraint, IConstraintType, IControl, ICreator, ICubicBezierEasing, ICursorConfig, ICursorRotate, ICursorRotateMap, ICursorType, ICursorTypeMap, ICustomEasingFunction, IDataProcessor, IDataTypeHandle, IDirection, IDirection4, IDragEvent, IDropEvent, IEditSize, IEraserType, IEvent, IEventListener, IEventListenerId, IEventListenerItem, IEventListenerMap, IEventListenerOptions, IEventOption, IEventParams, IEventParamsMap, IEventTarget, IEventer, IExportFileType, IExportImageType, IExportOnCanvasFunction, IExportOptions, IExportResult, IExportResultFunction, IFilter, IFindCondition, IFindMethod, IFinder, IFlowAlign, IFlowAxisAlign, IFlowBoxType, IFlowType, IFlowWrap, IFourNumber, IFromToData, IFunction, IFunctionMap, IGap, IHitCanvas, IHitCanvasConfig, IHitCanvasManager, IHitType, IImageCursor, IImageEvent, IImageManager, IInteraction, IInteractionCanvas, IInteractionConfig, IJSONOptions, IKeepTouchData, IKeyCodes, IKeyEvent, ILayoutAttr, ILayoutBlockData, ILayoutBoundsData, ILayoutChangedData, ILayoutData, ILayoutEvent, ILayouter, ILayouterConfig, ILeaf, ILeafArrayMap, ILeafAttrData, ILeafAttrDescriptor, ILeafAttrDescriptorFn, ILeafBounds, ILeafBoundsModule, ILeafComputedData, ILeafData, ILeafDataOptions, ILeafDataProxy, ILeafDataProxyModule, ILeafEventer, ILeafEventerModule, ILeafHit, ILeafHitModule, ILeafInputData, ILeafLayout, ILeafLevelList, ILeafList, ILeafListItemCallback, ILeafMap, ILeafMatrix, ILeafMatrixModule, ILeafRender, ILeafRenderModule, ILeaferAttrData, ILeaferBase, ILeaferCanvas, ILeaferCanvasConfig, ILeaferCanvasView, ILeaferConfig, ILeaferEvent, ILeaferImage, ILeaferImageCacheCanvas, ILeaferImageConfig, ILeaferImageOnError, ILeaferImageOnLoaded, ILeaferImagePatternPaint, ILeaferType, ILeaferTypeCreator, ILeaferTypeFunction, ILeaferTypeList, ILocationType, IMaskType, IMatrix, IMatrixData, IMatrixWithBoundsData, IMatrixWithBoundsScaleData, IMatrixWithLayoutData, IMatrixWithOptionHalfData, IMatrixWithOptionScaleData, IMatrixWithScaleData, IMiniapp, IMiniappSelect, IMiniappSizeView, IMotionPathData, IMoveConfig, IMoveEvent, IMultiTouchConfig, IMultiTouchData, INumber, INumberFunction, INumberMap, IObject, IObjectFunction, IOffsetBoundsData, IOptionSizeData, IPartLayoutConfig, IPath2D, IPathCommandData, IPathCommandObject, IPathCreator, IPathDrawer, IPathString, IPercentData, IPickBottom, IPickOptions, IPickResult, IPicker, IPlatform, IPlugin, IPoint, IPointData, IPointDataFunction, IPointDataMap, IPointGap, IPointerConfig, IPointerEvent, IProgressData, IProgressFunction, IPropertyEvent, IRadiusPointData, IRangeSize, IRenderEvent, IRenderOptions, IRenderer, IRendererConfig, IResizeEvent, IResizeEventListener, IResource, IRotateEvent, IRotationPointData, IScaleData, IScaleFixed, IScaleRotationData, IScreenSizeData, IScrollPointData, ISelector, ISelectorConfig, ISelectorProxy, IShortcutKeyCodes, IShortcutKeys, IShortcutKeysCheck, ISide, ISize, ISizeData, ISkewData, ISkiaCanvas, ISkiaCanvasExportConfig, ISkiaNAPICanvas, IStateStyleType, IStepsEasing, IString, IStringFunction, IStringMap, ISwipeEvent, ITaskItem, ITaskOptions, ITaskProcessor, ITaskProcessorConfig, ITextMetrics, ITimer, ITouchConfig, ITransformer, ITransition, ITwoPointBoundsData, IUICreator, IUIEvent, IUnitData, IUnitPointData, IUpdateEvent, IValue, IValueFunction, IWatchEvent, IWatchEventData, IWatcher, IWatcherConfig, IWheelConfig, IWheelEvent, IWindingRule, IWindingRuleData, IZoomConfig, IZoomEvent, IZoomOptions, IZoomType, IZoomView, InnerId, LCommandData, LineToCommandObject, MCommandData, MoveToCommandObject, PointerType, QCommandData, QuadraticCurveToCommandObject, RectCommandData, RoundRectCommandData, SCommandData, TCommandData, VCommandData, ZCommandData };