@leafer-ui/display 1.0.0-rc.9 → 1.0.1
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 +8 -8
- package/src/Box.ts +58 -37
- package/src/Canvas.ts +18 -20
- package/src/Ellipse.ts +3 -3
- package/src/Frame.ts +8 -5
- package/src/Group.ts +24 -31
- package/src/Image.ts +1 -1
- package/src/Leafer.ts +449 -0
- package/src/Line.ts +19 -30
- package/src/Path.ts +4 -21
- package/src/Pen.ts +18 -8
- package/src/Polygon.ts +3 -6
- package/src/Rect.ts +2 -6
- package/src/Star.ts +2 -2
- package/src/Text.ts +34 -29
- package/src/UI.ts +258 -92
- package/src/index.ts +1 -0
- package/types/index.d.ts +252 -118
- package/src/Arrow.ts +0 -24
package/src/UI.ts
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import { ILeaferCanvas, IPathDrawer, IPathCommandData, IHitType, INumber, IBoolean, IString, IPathString, IExportFileType, IPointData, ICursorType,
|
|
2
|
-
import { Leaf, PathDrawer, surfaceType, dataType, positionType, boundsType, pathType, scaleType, rotationType, opacityType, sortType, maskType, dataProcessor, useModule, rewrite, rewriteAble, UICreator, PathCorner, hitType, strokeType, PathConvert, eraserType, cursorType, autoLayoutType,
|
|
1
|
+
import { ILeaferCanvas, IPathDrawer, IPathCommandData, IHitType, INumber, IBoolean, IString, IPathString, IExportFileType, IPointData, ICursorType, IMaskType, IEraserType, IValue, IWindingRule, IPathCreator, IFourNumber, IBoundsData, IFlowType, IGap, IFlowWrap, IAxis, IConstraint, IAutoBoxData, IFlowBoxType, IPointGap, IFlowAlign, IFlowAxisAlign, IFindCondition, IAutoSize, IRangeSize, IAlign, IUnitPointData, IObject } from '@leafer/interface'
|
|
2
|
+
import { Leaf, PathDrawer, surfaceType, dataType, positionType, boundsType, pathType, scaleType, rotationType, opacityType, visibleType, sortType, maskType, dataProcessor, registerUI, useModule, rewrite, rewriteAble, UICreator, PathCorner, hitType, strokeType, PathConvert, eraserType, cursorType, autoLayoutType, pen, naturalBoundsType, pathInputType } from '@leafer/core'
|
|
3
3
|
|
|
4
|
-
import { IUI, IShadowEffect, IBlurEffect, IStrokeAlign, IStrokeJoin, IStrokeCap, IBlendMode, IDashPatternString, IShadowString, IGrayscaleEffect, IUIData, IGroup, IStrokeWidthString, ICornerRadiusString, IUIInputData, IExportOptions, IExportResult, IFill, IStroke, IArrowType, IFindUIMethod,
|
|
5
|
-
import { effectType } from '@leafer-ui/decorator'
|
|
4
|
+
import { IUI, IShadowEffect, IBlurEffect, IStrokeAlign, IStrokeJoin, IStrokeCap, IBlendMode, IDashPatternString, IShadowString, IGrayscaleEffect, IUIData, IGroup, IStrokeWidthString, ICornerRadiusString, IUIInputData, IExportOptions, IExportResult, IFill, IStroke, IArrowType, IFindUIMethod, ILeafer, IEditorConfig, IEditorConfigFunction, IEditToolFunction } from '@leafer-ui/interface'
|
|
5
|
+
import { arrowType, effectType, stateType, zoomLayerType } from '@leafer-ui/decorator'
|
|
6
6
|
|
|
7
7
|
import { UIData } from '@leafer-ui/data'
|
|
8
|
-
import { UIBounds,
|
|
8
|
+
import { UIBounds, UIRender } from '@leafer-ui/display-module'
|
|
9
9
|
|
|
10
|
-
import { Export,
|
|
10
|
+
import { Export, PathArrow } from '@leafer-ui/external'
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
@useModule(UIBounds)
|
|
14
|
-
@useModule(UIHit)
|
|
15
14
|
@useModule(UIRender)
|
|
16
15
|
@rewriteAble()
|
|
17
|
-
export class UI extends Leaf implements IUI {
|
|
16
|
+
export class UI extends Leaf implements IUI { // tip: rewrited Box
|
|
18
17
|
|
|
19
18
|
@dataProcessor(UIData)
|
|
20
19
|
declare public __: IUIData
|
|
21
20
|
|
|
22
|
-
declare public proxyData
|
|
21
|
+
declare public proxyData?: IUIInputData // need rewrite getter
|
|
23
22
|
declare public __proxyData?: IUIInputData
|
|
24
23
|
|
|
25
24
|
public get app(): ILeafer { return this.leafer && this.leafer.app }
|
|
@@ -27,7 +26,10 @@ export class UI extends Leaf implements IUI {
|
|
|
27
26
|
declare public leafer?: ILeafer
|
|
28
27
|
declare public parent?: IGroup
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
@zoomLayerType()
|
|
30
|
+
public zoomLayer: IGroup
|
|
31
|
+
|
|
32
|
+
public get isFrame(): boolean { return false }
|
|
31
33
|
|
|
32
34
|
declare public children?: IUI[]
|
|
33
35
|
|
|
@@ -35,110 +37,201 @@ export class UI extends Leaf implements IUI {
|
|
|
35
37
|
|
|
36
38
|
// id
|
|
37
39
|
@dataType('')
|
|
38
|
-
public id
|
|
40
|
+
public id?: IString
|
|
39
41
|
|
|
40
42
|
@dataType('')
|
|
41
|
-
public name
|
|
43
|
+
public name?: IString
|
|
42
44
|
|
|
43
45
|
@dataType('')
|
|
44
|
-
public className
|
|
46
|
+
public className?: IString
|
|
45
47
|
|
|
46
48
|
|
|
47
49
|
// layer
|
|
48
50
|
@surfaceType('pass-through')
|
|
49
|
-
public blendMode
|
|
51
|
+
public blendMode?: IBlendMode
|
|
50
52
|
|
|
51
53
|
@opacityType(1)
|
|
52
|
-
public opacity
|
|
54
|
+
public opacity?: INumber
|
|
53
55
|
|
|
54
|
-
@
|
|
55
|
-
public visible
|
|
56
|
+
@visibleType(true)
|
|
57
|
+
public visible?: IBoolean | 0
|
|
56
58
|
|
|
57
|
-
@maskType(false)
|
|
58
|
-
public isMask: IBoolean
|
|
59
59
|
|
|
60
|
-
@
|
|
61
|
-
public
|
|
60
|
+
@stateType(false)
|
|
61
|
+
public selected?: IBoolean
|
|
62
|
+
|
|
63
|
+
@stateType(false)
|
|
64
|
+
public disabled?: IBoolean
|
|
65
|
+
|
|
66
|
+
@surfaceType(false)
|
|
67
|
+
public locked?: IBoolean
|
|
62
68
|
|
|
63
|
-
@dataType(false)
|
|
64
|
-
public locked: IBoolean
|
|
65
69
|
|
|
66
70
|
@sortType(0)
|
|
67
|
-
public zIndex
|
|
71
|
+
public zIndex?: INumber
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@maskType(false)
|
|
75
|
+
public mask?: IBoolean | IMaskType
|
|
76
|
+
|
|
77
|
+
@eraserType(false)
|
|
78
|
+
public eraser?: IBoolean | IEraserType
|
|
68
79
|
|
|
69
80
|
|
|
70
81
|
// position
|
|
71
|
-
@positionType(0)
|
|
72
|
-
public x
|
|
82
|
+
@positionType(0, true)
|
|
83
|
+
public x?: INumber
|
|
73
84
|
|
|
74
|
-
@positionType(0)
|
|
75
|
-
public y
|
|
85
|
+
@positionType(0, true)
|
|
86
|
+
public y?: INumber
|
|
76
87
|
|
|
77
88
|
// size
|
|
78
|
-
@boundsType(100)
|
|
79
|
-
public width
|
|
89
|
+
@boundsType(100, true)
|
|
90
|
+
public width?: INumber
|
|
80
91
|
|
|
81
|
-
@boundsType(100)
|
|
82
|
-
public height
|
|
92
|
+
@boundsType(100, true)
|
|
93
|
+
public height?: INumber
|
|
83
94
|
|
|
84
95
|
// scale
|
|
85
|
-
@scaleType(1)
|
|
86
|
-
public scaleX
|
|
96
|
+
@scaleType(1, true)
|
|
97
|
+
public scaleX?: INumber
|
|
87
98
|
|
|
88
|
-
@scaleType(1)
|
|
89
|
-
public scaleY
|
|
99
|
+
@scaleType(1, true)
|
|
100
|
+
public scaleY?: INumber
|
|
90
101
|
|
|
91
102
|
// rotate
|
|
92
|
-
@rotationType(0)
|
|
93
|
-
public rotation
|
|
103
|
+
@rotationType(0, true)
|
|
104
|
+
public rotation?: INumber
|
|
94
105
|
|
|
95
106
|
// skew
|
|
96
|
-
@rotationType(0)
|
|
97
|
-
public skewX
|
|
107
|
+
@rotationType(0, true)
|
|
108
|
+
public skewX?: INumber
|
|
98
109
|
|
|
99
|
-
@rotationType(0)
|
|
100
|
-
public skewY
|
|
110
|
+
@rotationType(0, true)
|
|
111
|
+
public skewY?: INumber
|
|
101
112
|
|
|
102
113
|
|
|
114
|
+
// offset
|
|
115
|
+
@positionType(0, true)
|
|
116
|
+
public offsetX?: INumber
|
|
117
|
+
|
|
118
|
+
@positionType(0, true)
|
|
119
|
+
public offsetY?: INumber
|
|
120
|
+
|
|
121
|
+
// scroll
|
|
122
|
+
@positionType(0, true)
|
|
123
|
+
public scrollX?: INumber
|
|
124
|
+
|
|
125
|
+
@positionType(0, true)
|
|
126
|
+
public scrollY?: INumber
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
// center
|
|
103
130
|
@autoLayoutType()
|
|
104
|
-
public
|
|
131
|
+
public origin?: IAlign | IUnitPointData
|
|
132
|
+
|
|
133
|
+
@autoLayoutType()
|
|
134
|
+
public around?: IAlign | IUnitPointData
|
|
105
135
|
|
|
106
136
|
|
|
137
|
+
// image
|
|
107
138
|
@dataType(false)
|
|
108
|
-
public
|
|
139
|
+
public lazy?: IBoolean // load image / compute paint
|
|
140
|
+
|
|
141
|
+
@naturalBoundsType(1)
|
|
142
|
+
public pixelRatio?: INumber
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
// path
|
|
146
|
+
@pathInputType()
|
|
147
|
+
public path?: IPathCommandData | IPathString
|
|
148
|
+
|
|
149
|
+
@pathType()
|
|
150
|
+
public windingRule?: IWindingRule
|
|
151
|
+
|
|
152
|
+
@pathType(true)
|
|
153
|
+
public closed?: boolean
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
// auto layout
|
|
157
|
+
@autoLayoutType(false)
|
|
158
|
+
public flow?: IFlowType
|
|
159
|
+
|
|
160
|
+
@boundsType(0)
|
|
161
|
+
public padding?: IFourNumber
|
|
162
|
+
|
|
163
|
+
@boundsType(0)
|
|
164
|
+
public gap?: IGap | IPointGap
|
|
165
|
+
|
|
166
|
+
@boundsType('top-left')
|
|
167
|
+
public flowAlign?: IFlowAlign | IFlowAxisAlign
|
|
168
|
+
|
|
169
|
+
@boundsType(false)
|
|
170
|
+
public flowWrap?: IFlowWrap
|
|
171
|
+
|
|
172
|
+
@boundsType('box')
|
|
173
|
+
public itemBox?: IFlowBoxType
|
|
109
174
|
|
|
110
175
|
|
|
176
|
+
@boundsType(true)
|
|
177
|
+
public inFlow?: IBoolean
|
|
178
|
+
|
|
179
|
+
@boundsType() // rewrite in flow
|
|
180
|
+
public autoWidth?: IAutoSize
|
|
181
|
+
|
|
182
|
+
@boundsType() // rewrite in flow
|
|
183
|
+
public autoHeight?: IAutoSize
|
|
184
|
+
|
|
185
|
+
@boundsType()
|
|
186
|
+
public lockRatio?: IBoolean
|
|
187
|
+
|
|
188
|
+
@boundsType()
|
|
189
|
+
public autoBox?: IAutoBoxData | IConstraint
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
@boundsType()
|
|
193
|
+
public widthRange?: IRangeSize
|
|
194
|
+
|
|
195
|
+
@boundsType()
|
|
196
|
+
public heightRange?: IRangeSize
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
// drag
|
|
111
200
|
@dataType(false)
|
|
112
|
-
public
|
|
201
|
+
public draggable?: IBoolean | IAxis
|
|
113
202
|
|
|
114
|
-
@dataType(
|
|
115
|
-
public
|
|
203
|
+
@dataType()
|
|
204
|
+
public dragBounds?: IBoundsData | 'parent'
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
@dataType(false)
|
|
208
|
+
public editable?: IBoolean
|
|
116
209
|
|
|
117
210
|
|
|
118
211
|
// hit
|
|
119
212
|
@hitType(true)
|
|
120
|
-
public hittable
|
|
213
|
+
public hittable?: IBoolean
|
|
121
214
|
|
|
122
215
|
@hitType('path')
|
|
123
|
-
public hitFill
|
|
216
|
+
public hitFill?: IHitType
|
|
124
217
|
|
|
125
218
|
@strokeType('path')
|
|
126
|
-
public hitStroke
|
|
219
|
+
public hitStroke?: IHitType
|
|
127
220
|
|
|
128
221
|
@hitType(false)
|
|
129
|
-
public hitBox
|
|
222
|
+
public hitBox?: IBoolean
|
|
130
223
|
|
|
131
224
|
@hitType(true)
|
|
132
|
-
public hitChildren
|
|
225
|
+
public hitChildren?: IBoolean
|
|
133
226
|
|
|
134
227
|
@hitType(true)
|
|
135
|
-
public hitSelf
|
|
228
|
+
public hitSelf?: IBoolean
|
|
136
229
|
|
|
137
230
|
@hitType()
|
|
138
|
-
public hitRadius
|
|
231
|
+
public hitRadius?: INumber
|
|
139
232
|
|
|
140
233
|
@cursorType('')
|
|
141
|
-
public cursor
|
|
234
|
+
public cursor?: ICursorType | ICursorType[]
|
|
142
235
|
|
|
143
236
|
// ---
|
|
144
237
|
|
|
@@ -146,66 +239,96 @@ export class UI extends Leaf implements IUI {
|
|
|
146
239
|
// fill
|
|
147
240
|
|
|
148
241
|
@surfaceType()
|
|
149
|
-
public fill
|
|
242
|
+
public fill?: IFill
|
|
150
243
|
|
|
151
244
|
// stroke
|
|
152
245
|
|
|
153
246
|
@strokeType()
|
|
154
|
-
public stroke
|
|
247
|
+
public stroke?: IStroke
|
|
155
248
|
|
|
156
249
|
@strokeType('inside')
|
|
157
|
-
public strokeAlign
|
|
250
|
+
public strokeAlign?: IStrokeAlign
|
|
158
251
|
|
|
159
252
|
@strokeType(1)
|
|
160
|
-
public strokeWidth
|
|
253
|
+
public strokeWidth?: IFourNumber | IStrokeWidthString
|
|
254
|
+
|
|
255
|
+
@strokeType(false)
|
|
256
|
+
public strokeWidthFixed?: IBoolean
|
|
161
257
|
|
|
162
258
|
@strokeType('none')
|
|
163
|
-
public strokeCap
|
|
259
|
+
public strokeCap?: IStrokeCap
|
|
164
260
|
|
|
165
261
|
@strokeType('miter')
|
|
166
|
-
public strokeJoin
|
|
262
|
+
public strokeJoin?: IStrokeJoin
|
|
167
263
|
|
|
168
264
|
@strokeType()
|
|
169
|
-
public dashPattern
|
|
265
|
+
public dashPattern?: INumber[] | IDashPatternString
|
|
170
266
|
|
|
171
267
|
@strokeType()
|
|
172
|
-
public dashOffset
|
|
268
|
+
public dashOffset?: INumber
|
|
173
269
|
|
|
174
270
|
@strokeType(10)
|
|
175
|
-
public miterLimit
|
|
271
|
+
public miterLimit?: INumber
|
|
272
|
+
|
|
176
273
|
|
|
177
274
|
// arrow
|
|
178
275
|
|
|
179
|
-
@
|
|
180
|
-
public startArrow
|
|
276
|
+
@arrowType('none')
|
|
277
|
+
public startArrow?: IArrowType
|
|
181
278
|
|
|
182
|
-
@
|
|
183
|
-
public endArrow
|
|
279
|
+
@arrowType('none')
|
|
280
|
+
public endArrow?: IArrowType
|
|
184
281
|
|
|
185
282
|
// corner
|
|
186
283
|
|
|
187
284
|
@pathType(0)
|
|
188
|
-
public cornerRadius
|
|
285
|
+
public cornerRadius?: IFourNumber | ICornerRadiusString
|
|
189
286
|
|
|
190
287
|
@pathType()
|
|
191
|
-
public cornerSmoothing
|
|
288
|
+
public cornerSmoothing?: INumber
|
|
192
289
|
|
|
193
290
|
// effect
|
|
194
291
|
|
|
195
292
|
@effectType()
|
|
196
|
-
public shadow
|
|
293
|
+
public shadow?: IShadowEffect | IShadowEffect[] | IShadowString
|
|
197
294
|
|
|
198
295
|
@effectType()
|
|
199
|
-
public innerShadow
|
|
296
|
+
public innerShadow?: IShadowEffect | IShadowEffect[] | IShadowString
|
|
200
297
|
|
|
201
298
|
@effectType()
|
|
202
|
-
public blur
|
|
299
|
+
public blur?: INumber | IBlurEffect
|
|
203
300
|
|
|
204
301
|
@effectType()
|
|
205
|
-
public backgroundBlur
|
|
302
|
+
public backgroundBlur?: INumber | IBlurEffect
|
|
206
303
|
|
|
207
304
|
@effectType()
|
|
208
|
-
public grayscale
|
|
305
|
+
public grayscale?: INumber | IGrayscaleEffect
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
// states
|
|
309
|
+
|
|
310
|
+
@dataType()
|
|
311
|
+
public normalStyle?: IUIInputData // auto restore hover / press / focus / selected / disabled style
|
|
312
|
+
|
|
313
|
+
@dataType()
|
|
314
|
+
public hoverStyle?: IUIInputData
|
|
315
|
+
|
|
316
|
+
@dataType()
|
|
317
|
+
public pressStyle?: IUIInputData
|
|
318
|
+
|
|
319
|
+
@dataType()
|
|
320
|
+
public focusStyle?: IUIInputData
|
|
321
|
+
|
|
322
|
+
@dataType()
|
|
323
|
+
public selectedStyle?: IUIInputData
|
|
324
|
+
|
|
325
|
+
@dataType()
|
|
326
|
+
public disabledStyle?: IUIInputData
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
// 预留给用户使用的数据对象
|
|
330
|
+
@dataType({})
|
|
331
|
+
public data: IObject
|
|
209
332
|
|
|
210
333
|
|
|
211
334
|
public set scale(value: INumber | IPointData) {
|
|
@@ -222,6 +345,22 @@ export class UI extends Leaf implements IUI {
|
|
|
222
345
|
return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX
|
|
223
346
|
}
|
|
224
347
|
|
|
348
|
+
public get pen(): IPathCreator {
|
|
349
|
+
const { path } = this.__
|
|
350
|
+
pen.set(this.path = path || [])
|
|
351
|
+
if (!path) this.__drawPathByBox(pen)
|
|
352
|
+
return pen
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
// editor
|
|
357
|
+
|
|
358
|
+
public get editConfig(): IEditorConfig { return undefined }
|
|
359
|
+
|
|
360
|
+
public get editOuter(): string { return this.__.__isLinePath ? 'LineEditTool' : 'EditTool' }
|
|
361
|
+
|
|
362
|
+
public get editInner(): string { return 'PathEditor' }
|
|
363
|
+
|
|
225
364
|
|
|
226
365
|
constructor(data?: IUIInputData) {
|
|
227
366
|
super(data)
|
|
@@ -238,22 +377,22 @@ export class UI extends Leaf implements IUI {
|
|
|
238
377
|
Object.assign(this, data)
|
|
239
378
|
}
|
|
240
379
|
|
|
241
|
-
public get(): IUIInputData {
|
|
242
|
-
return this.__.__getInputData()
|
|
380
|
+
public get(name?: string | string[] | IUIInputData): IUIInputData | IValue {
|
|
381
|
+
return typeof name === 'string' ? this.__.__getInput(name) : this.__.__getInputData(name)
|
|
243
382
|
}
|
|
244
383
|
|
|
245
384
|
public createProxyData(): IUIInputData { return undefined }
|
|
246
385
|
|
|
247
386
|
|
|
248
|
-
//
|
|
387
|
+
// hit rewrite
|
|
249
388
|
|
|
250
|
-
public find(
|
|
251
|
-
return this.leafer ? this.leafer.selector.getBy(condition as IFindMethod, this, false, options) as IUI[] : []
|
|
252
|
-
}
|
|
389
|
+
public find(_condition: number | string | IFindCondition | IFindUIMethod, _options?: any): IUI[] { return undefined }
|
|
253
390
|
|
|
254
|
-
public
|
|
255
|
-
|
|
256
|
-
}
|
|
391
|
+
public findTag(tag: string | string[]): IUI[] { return this.find({ tag }) }
|
|
392
|
+
|
|
393
|
+
public findOne(_condition: number | string | IFindCondition | IFindUIMethod, _options?: any): IUI | undefined { return undefined }
|
|
394
|
+
|
|
395
|
+
public findId(id: number | string): IUI | undefined { return this.findOne({ id }) }
|
|
257
396
|
|
|
258
397
|
|
|
259
398
|
// path
|
|
@@ -261,7 +400,7 @@ export class UI extends Leaf implements IUI {
|
|
|
261
400
|
public getPath(curve?: boolean, pathForRender?: boolean): IPathCommandData {
|
|
262
401
|
this.__layout.update()
|
|
263
402
|
let path = pathForRender ? this.__.__pathForRender : this.__.path
|
|
264
|
-
if (!path)
|
|
403
|
+
if (!path) pen.set(path = []), this.__drawPathByBox(pen)
|
|
265
404
|
return curve ? PathConvert.toCanvasData(path, true) : path
|
|
266
405
|
}
|
|
267
406
|
|
|
@@ -270,18 +409,22 @@ export class UI extends Leaf implements IUI {
|
|
|
270
409
|
}
|
|
271
410
|
|
|
272
411
|
|
|
412
|
+
public load(): void {
|
|
413
|
+
this.__.__computePaint() // 手动加载图片
|
|
414
|
+
}
|
|
415
|
+
|
|
273
416
|
public __onUpdateSize(): void {
|
|
274
417
|
if (this.__.__input) {
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
if (stroke) Paint.compute('stroke', this)
|
|
418
|
+
const data = this.__;
|
|
419
|
+
(data.lazy && !this.__inLazyBounds && !Export.running) ? data.__needComputePaint = true : data.__computePaint()
|
|
278
420
|
}
|
|
279
421
|
}
|
|
280
422
|
|
|
281
423
|
public __updateRenderPath(): void {
|
|
282
424
|
if (this.__.path) {
|
|
283
|
-
const
|
|
425
|
+
const data = this.__
|
|
284
426
|
data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path
|
|
427
|
+
if (data.__useArrow) PathArrow.addArrows(this, !data.cornerRadius)
|
|
285
428
|
}
|
|
286
429
|
}
|
|
287
430
|
|
|
@@ -295,13 +438,19 @@ export class UI extends Leaf implements IUI {
|
|
|
295
438
|
this.__drawPathByData(canvas, this.__.path)
|
|
296
439
|
}
|
|
297
440
|
|
|
298
|
-
|
|
299
|
-
|
|
441
|
+
public __drawPathByData(drawer: IPathDrawer, data: IPathCommandData): void {
|
|
442
|
+
if (data) {
|
|
443
|
+
PathDrawer.drawPathByData(drawer, data)
|
|
444
|
+
} else {
|
|
445
|
+
this.__drawPathByBox(drawer)
|
|
446
|
+
}
|
|
447
|
+
}
|
|
300
448
|
|
|
301
449
|
public __drawPathByBox(drawer: IPathDrawer): void {
|
|
302
450
|
const { x, y, width, height } = this.__layout.boxBounds
|
|
303
451
|
if (this.__.cornerRadius) {
|
|
304
|
-
|
|
452
|
+
const { cornerRadius } = this.__
|
|
453
|
+
drawer.roundRect(x, y, width, height, typeof cornerRadius === 'number' ? [cornerRadius] : cornerRadius) // 修复微信浏览器bug, 后续需进一步优化
|
|
305
454
|
} else {
|
|
306
455
|
drawer.rect(x, y, width, height)
|
|
307
456
|
}
|
|
@@ -322,6 +471,23 @@ export class UI extends Leaf implements IUI {
|
|
|
322
471
|
return UICreator.get(data.tag || this.prototype.__tag, data, x, y, width, height) as IUI
|
|
323
472
|
}
|
|
324
473
|
|
|
474
|
+
static registerUI(): void {
|
|
475
|
+
registerUI()(this)
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
static registerData(data: IUIData): void {
|
|
479
|
+
dataProcessor(data)(this.prototype)
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
// @leafer-in/editor rewrite
|
|
484
|
+
|
|
485
|
+
static setEditConfig(_config: IEditorConfig | IEditorConfigFunction): void { }
|
|
486
|
+
|
|
487
|
+
static setEditOuter(_toolName: string | IEditToolFunction): void { }
|
|
488
|
+
|
|
489
|
+
static setEditInner(_editorName: string | IEditToolFunction): void { }
|
|
490
|
+
|
|
325
491
|
|
|
326
492
|
public destroy(): void {
|
|
327
493
|
this.fill = this.stroke = null
|