@leafer-in/interface 1.0.0-rc.9 → 1.0.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-in/interface",
3
- "version": "1.0.0-rc.9",
3
+ "version": "1.0.0",
4
4
  "description": "@leafer-in/interface",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
@@ -25,7 +25,7 @@
25
25
  "leaferjs"
26
26
  ],
27
27
  "dependencies": {
28
- "@leafer-ui/interface": "1.0.0-rc.9",
29
- "@leafer/interface": "1.0.0-rc.9"
28
+ "@leafer-ui/interface": "1.0.0",
29
+ "@leafer/interface": "1.0.0"
30
30
  }
31
31
  }
@@ -1,29 +1,7 @@
1
- import { IGroup, IRect, IBoundsData, IKeyEvent } from '@leafer-ui/interface'
2
- import { IEditor } from '@leafer-in/interface'
3
- import { IEditPoint } from './IEditPoint'
4
-
5
- export interface IEditBox extends IGroup {
1
+ import { IEditBoxBase } from '@leafer-ui/interface'
2
+ import { IEditor } from './IEditor'
3
+ export interface IEditBox extends IEditBoxBase {
6
4
 
7
5
  editor: IEditor
8
- dragging?: boolean
9
-
10
- circle: IEditPoint
11
- rect: IRect
12
-
13
- buttons: IGroup
14
-
15
- resizePoints: IEditPoint[]
16
- rotatePoints: IEditPoint[]
17
- resizeLines: IEditPoint[]
18
-
19
- readonly flipped: boolean
20
- readonly flippedX: boolean
21
- readonly flippedY: boolean
22
- readonly flippedOne: boolean
23
-
24
- enterPoint: IEditPoint
25
-
26
- update(bounds: IBoundsData): void
27
- onArrow(e: IKeyEvent): void
28
6
 
29
7
  }
@@ -1,4 +1,4 @@
1
- import { IGroup, IBounds } from '@leafer-ui/interface'
1
+ import { IGroup, IUI, IBounds, IPointerEvent } from '@leafer-ui/interface'
2
2
 
3
3
  import { IStroker } from './IStroker'
4
4
  import { ISelectArea } from './ISelectArea'
@@ -16,5 +16,7 @@ export interface IEditSelect extends IGroup {
16
16
  selectArea: ISelectArea
17
17
  bounds: IBounds
18
18
 
19
+ findUI(e: IPointerEvent): IUI
20
+ findDeepOne(e: IPointerEvent): IUI
19
21
  update(): void
20
22
  }
@@ -1,42 +1,61 @@
1
- import { IUI, IPointData, IAround, IDragEvent, IEvent, IEventListenerId, ILeafList, IMatrixData, IEditorBase } from '@leafer-ui/interface'
1
+ import { IUI, IPointData, IAround, IDragEvent, IEvent, IEventListenerId, IMatrixData, IEditorBase, IGroup, IObject } from '@leafer-ui/interface'
2
+
2
3
  import { IEditBox } from './IEditBox'
3
4
  import { IEditSelect } from './IEditSelect'
4
5
 
5
6
 
6
7
  export interface IEditor extends IEditorBase {
7
- leafList: ILeafList
8
-
9
8
  simulateTarget: IUI
10
9
 
11
10
  selector: IEditSelect
12
11
  editBox: IEditBox
13
- editTool: IEditTool
12
+ editTool?: IEditTool
13
+ innerEditor?: IInnerEditor
14
14
 
15
+ dragStartPoint: IPointData
15
16
  targetEventIds: IEventListenerId[]
16
17
 
18
+ checkOpenedGroups(): void
19
+
17
20
  listenTargetEvents(): void
18
21
  removeTargetEvents(): void
19
22
  }
20
23
 
21
- export interface IEditTool {
22
- tag: string
24
+ export interface IEditTool extends IInnerEditor {
25
+ // 操作
23
26
  onMove(e: IEditorMoveEvent): void
24
27
  onScale(e: IEditorScaleEvent): void
25
28
  onScaleWithDrag?(e: IEditorScaleEvent): void
26
29
  onRotate(e: IEditorRotateEvent): void
27
30
  onSkew(e: IEditorSkewEvent): void
28
- update(editor: IEditor): void
29
31
  }
30
32
 
31
- export enum IDirection8 {
32
- topLeft,
33
- top,
34
- topRight,
35
- right,
36
- bottomRight,
37
- bottom,
38
- bottomLeft,
39
- left
33
+ export interface IInnerEditor {
34
+ tag: string
35
+ editTarget: IUI
36
+ config: IObject
37
+
38
+ editor: IEditor
39
+ editBox: IEditBox
40
+ view: IGroup
41
+
42
+ eventIds: IEventListenerId[]
43
+
44
+ onCreate(): void
45
+ create(): void
46
+
47
+ // 状态
48
+ onLoad(): void
49
+ load(): void
50
+
51
+ onLoad(): void
52
+ unload(): void
53
+
54
+ onUpdate(): void
55
+ update(): void
56
+
57
+ onDestroy(): void
58
+ destroy(): void
40
59
  }
41
60
 
42
61
  export interface IEditorEvent extends IEvent {
@@ -45,10 +64,23 @@ export interface IEditorEvent extends IEvent {
45
64
 
46
65
  readonly value?: IUI | IUI[]
47
66
  readonly oldValue?: IUI | IUI[]
67
+ readonly list?: IUI[]
68
+ readonly oldList?: IUI[]
48
69
 
49
70
  readonly worldOrigin?: IPointData
50
71
  readonly origin?: IPointData
51
72
  }
73
+
74
+ export interface IInnerEditorEvent extends IEditorEvent {
75
+ editTarget: IUI
76
+ innerEditor: IInnerEditor
77
+ }
78
+
79
+ export interface IEditorGroupEvent extends IEditorEvent {
80
+ editTarget: IGroup
81
+ }
82
+
83
+
52
84
  export interface IEditorMoveEvent extends IEditorEvent {
53
85
  readonly moveX: number
54
86
  readonly moveY: number
@@ -60,8 +92,8 @@ export interface IEditorScaleEvent extends IEditorEvent {
60
92
  readonly scaleY?: number
61
93
  transform?: IMatrixData
62
94
 
63
- readonly direction?: IDirection8
64
- readonly lockRatio?: boolean
95
+ readonly direction?: number
96
+ readonly lockRatio?: boolean | 'corner'
65
97
  readonly around?: IAround
66
98
 
67
99
  drag?: IDragEvent
@@ -69,6 +101,7 @@ export interface IEditorScaleEvent extends IEditorEvent {
69
101
 
70
102
  export interface IEditorRotateEvent extends IEditorEvent {
71
103
  // rotateOf(origin, rotation)
104
+ transform?: IMatrixData
72
105
  readonly rotation?: number
73
106
  }
74
107
 
@@ -0,0 +1,36 @@
1
+ import { IBoundsData, IGap, IFlowAlign, IAxisAlign, IFlowWrap } from '@leafer-ui/interface'
2
+
3
+ export interface IFlowWrapDrawData extends IGapBoundsData {
4
+ list: IFlowDrawData[]
5
+ }
6
+
7
+ export interface IFlowDrawData extends IGapBoundsData {
8
+ start: number
9
+ grow: number
10
+ hasRangeSize?: boolean
11
+ }
12
+
13
+ export interface IGapBoundsData extends IBoundsData {
14
+ count: number
15
+ gap: number
16
+ }
17
+
18
+ export interface IFlowAlignToAxisAlignMap {
19
+ [name: string]: IAxisAlign
20
+ }
21
+
22
+ export interface IFlowParseData {
23
+ complex: boolean
24
+ wrap: IFlowWrap
25
+
26
+ xGap: IGap
27
+ yGap: IGap
28
+ isAutoXGap: boolean
29
+ isAutoYGap: boolean
30
+ isFitXGap: boolean
31
+ isFitYGap: boolean
32
+
33
+ contentAlign: IFlowAlign
34
+ rowXAlign: IAxisAlign
35
+ rowYAlign: IAxisAlign
36
+ }
package/src/index.ts CHANGED
@@ -1,13 +1,20 @@
1
1
  export * from '@leafer-ui/interface'
2
2
 
3
3
  // editor
4
- export { IEditor, IEditTool, IDirection8, IEditorScaleEvent, IEditorRotateEvent, IEditorSkewEvent, IEditorEvent, IEditorMoveEvent } from './editor/IEditor'
4
+ export { IEditor, IEditTool, IInnerEditor, IEditorEvent, IInnerEditorEvent, IEditorGroupEvent, IEditorMoveEvent, IEditorScaleEvent, IEditorRotateEvent, IEditorSkewEvent } from './editor/IEditor'
5
5
  export { IStroker } from './editor/IStroker'
6
6
  export { IEditBox } from './editor/IEditBox'
7
7
  export { ISelectArea } from './editor/ISelectArea'
8
8
  export { IEditSelect } from './editor/IEditSelect'
9
- export { IEditPoint, IEditPointType } from './editor/IEditPoint'
10
9
 
11
10
  // html
12
11
 
13
- export { IHTMLTextData, IHTMLTextInputData } from './html/IHTMLTextData'
12
+ export { IHTMLTextData, IHTMLTextInputData } from './html/IHTMLTextData'
13
+
14
+ // scroll
15
+
16
+ export { IScrollBar, IScrollBarConfig, IScrollBarTheme } from './scroll/IScrollBar'
17
+
18
+ // flow
19
+
20
+ export { IFlowWrapDrawData, IFlowDrawData, IGapBoundsData, IFlowAlignToAxisAlignMap, IFlowParseData } from './flow'
@@ -0,0 +1,15 @@
1
+ import { IBoxInputData, IFourNumber, IGroup } from '@leafer-ui/interface'
2
+
3
+ export interface IScrollBarConfig {
4
+ theme?: IScrollBarTheme
5
+ padding?: IFourNumber
6
+ minSize?: number
7
+ }
8
+
9
+ export type IScrollBarTheme = 'light' | 'dark' | IBoxInputData
10
+
11
+ export interface IScrollBar extends IGroup {
12
+ config: IScrollBarConfig
13
+ changeTheme(theme: IScrollBarTheme): void
14
+ update(check: boolean): void
15
+ }
package/types/index.d.ts CHANGED
@@ -1,29 +1,8 @@
1
- import { IBox, IGroup, IRect, IBoundsData, IKeyEvent, IUI, IRectInputData, IBounds, IEditorBase, ILeafList, IEventListenerId, IEvent, IPointData, IMatrixData, IAround, IDragEvent, IImageData, IImageInputData } from '@leafer-ui/interface';
1
+ import { IEditBoxBase, IUI, IRectInputData, IGroup, IBoundsData, IBounds, IPointerEvent, IEditorBase, IPointData, IEventListenerId, IObject, IEvent, IMatrixData, IAround, IDragEvent, IImageData, IImageInputData, IFourNumber, IBoxInputData, IAxisAlign, IFlowWrap, IGap, IFlowAlign } from '@leafer-ui/interface';
2
2
  export * from '@leafer-ui/interface';
3
- import { IEditor as IEditor$1 } from '@leafer-in/interface';
4
3
 
5
- interface IEditPoint extends IBox {
6
- direction: IDirection8;
7
- pointType: IEditPointType;
8
- }
9
- type IEditPointType = 'rotate' | 'resize';
10
-
11
- interface IEditBox extends IGroup {
12
- editor: IEditor$1;
13
- dragging?: boolean;
14
- circle: IEditPoint;
15
- rect: IRect;
16
- buttons: IGroup;
17
- resizePoints: IEditPoint[];
18
- rotatePoints: IEditPoint[];
19
- resizeLines: IEditPoint[];
20
- readonly flipped: boolean;
21
- readonly flippedX: boolean;
22
- readonly flippedY: boolean;
23
- readonly flippedOne: boolean;
24
- enterPoint: IEditPoint;
25
- update(bounds: IBoundsData): void;
26
- onArrow(e: IKeyEvent): void;
4
+ interface IEditBox extends IEditBoxBase {
5
+ editor: IEditor;
27
6
  }
28
7
 
29
8
  interface IStroker extends IUI {
@@ -44,46 +23,66 @@ interface IEditSelect extends IGroup {
44
23
  targetStroker: IStroker;
45
24
  selectArea: ISelectArea;
46
25
  bounds: IBounds;
26
+ findUI(e: IPointerEvent): IUI;
27
+ findDeepOne(e: IPointerEvent): IUI;
47
28
  update(): void;
48
29
  }
49
30
 
50
31
  interface IEditor extends IEditorBase {
51
- leafList: ILeafList;
52
32
  simulateTarget: IUI;
53
33
  selector: IEditSelect;
54
34
  editBox: IEditBox;
55
- editTool: IEditTool;
35
+ editTool?: IEditTool;
36
+ innerEditor?: IInnerEditor;
37
+ dragStartPoint: IPointData;
56
38
  targetEventIds: IEventListenerId[];
39
+ checkOpenedGroups(): void;
57
40
  listenTargetEvents(): void;
58
41
  removeTargetEvents(): void;
59
42
  }
60
- interface IEditTool {
61
- tag: string;
43
+ interface IEditTool extends IInnerEditor {
62
44
  onMove(e: IEditorMoveEvent): void;
63
45
  onScale(e: IEditorScaleEvent): void;
64
46
  onScaleWithDrag?(e: IEditorScaleEvent): void;
65
47
  onRotate(e: IEditorRotateEvent): void;
66
48
  onSkew(e: IEditorSkewEvent): void;
67
- update(editor: IEditor): void;
68
- }
69
- declare enum IDirection8 {
70
- topLeft = 0,
71
- top = 1,
72
- topRight = 2,
73
- right = 3,
74
- bottomRight = 4,
75
- bottom = 5,
76
- bottomLeft = 6,
77
- left = 7
49
+ }
50
+ interface IInnerEditor {
51
+ tag: string;
52
+ editTarget: IUI;
53
+ config: IObject;
54
+ editor: IEditor;
55
+ editBox: IEditBox;
56
+ view: IGroup;
57
+ eventIds: IEventListenerId[];
58
+ onCreate(): void;
59
+ create(): void;
60
+ onLoad(): void;
61
+ load(): void;
62
+ onLoad(): void;
63
+ unload(): void;
64
+ onUpdate(): void;
65
+ update(): void;
66
+ onDestroy(): void;
67
+ destroy(): void;
78
68
  }
79
69
  interface IEditorEvent extends IEvent {
80
70
  readonly target?: IUI;
81
71
  readonly editor?: IEditor;
82
72
  readonly value?: IUI | IUI[];
83
73
  readonly oldValue?: IUI | IUI[];
74
+ readonly list?: IUI[];
75
+ readonly oldList?: IUI[];
84
76
  readonly worldOrigin?: IPointData;
85
77
  readonly origin?: IPointData;
86
78
  }
79
+ interface IInnerEditorEvent extends IEditorEvent {
80
+ editTarget: IUI;
81
+ innerEditor: IInnerEditor;
82
+ }
83
+ interface IEditorGroupEvent extends IEditorEvent {
84
+ editTarget: IGroup;
85
+ }
87
86
  interface IEditorMoveEvent extends IEditorEvent {
88
87
  readonly moveX: number;
89
88
  readonly moveY: number;
@@ -92,12 +91,13 @@ interface IEditorScaleEvent extends IEditorEvent {
92
91
  readonly scaleX?: number;
93
92
  readonly scaleY?: number;
94
93
  transform?: IMatrixData;
95
- readonly direction?: IDirection8;
96
- readonly lockRatio?: boolean;
94
+ readonly direction?: number;
95
+ readonly lockRatio?: boolean | 'corner';
97
96
  readonly around?: IAround;
98
97
  drag?: IDragEvent;
99
98
  }
100
99
  interface IEditorRotateEvent extends IEditorEvent {
100
+ transform?: IMatrixData;
101
101
  readonly rotation?: number;
102
102
  }
103
103
  interface IEditorSkewEvent extends IEditorEvent {
@@ -115,4 +115,45 @@ interface IHTMLTextData extends IHTMLTextAttrData, IImageData {
115
115
  interface IHTMLTextInputData extends IHTMLTextAttrData, IImageInputData {
116
116
  }
117
117
 
118
- export { IDirection8, type IEditBox, type IEditPoint, type IEditPointType, type IEditSelect, type IEditTool, type IEditor, type IEditorEvent, type IEditorMoveEvent, type IEditorRotateEvent, type IEditorScaleEvent, type IEditorSkewEvent, type IHTMLTextData, type IHTMLTextInputData, type ISelectArea, type IStroker };
118
+ interface IScrollBarConfig {
119
+ theme?: IScrollBarTheme;
120
+ padding?: IFourNumber;
121
+ minSize?: number;
122
+ }
123
+ type IScrollBarTheme = 'light' | 'dark' | IBoxInputData;
124
+ interface IScrollBar extends IGroup {
125
+ config: IScrollBarConfig;
126
+ changeTheme(theme: IScrollBarTheme): void;
127
+ update(check: boolean): void;
128
+ }
129
+
130
+ interface IFlowWrapDrawData extends IGapBoundsData {
131
+ list: IFlowDrawData[];
132
+ }
133
+ interface IFlowDrawData extends IGapBoundsData {
134
+ start: number;
135
+ grow: number;
136
+ hasRangeSize?: boolean;
137
+ }
138
+ interface IGapBoundsData extends IBoundsData {
139
+ count: number;
140
+ gap: number;
141
+ }
142
+ interface IFlowAlignToAxisAlignMap {
143
+ [name: string]: IAxisAlign;
144
+ }
145
+ interface IFlowParseData {
146
+ complex: boolean;
147
+ wrap: IFlowWrap;
148
+ xGap: IGap;
149
+ yGap: IGap;
150
+ isAutoXGap: boolean;
151
+ isAutoYGap: boolean;
152
+ isFitXGap: boolean;
153
+ isFitYGap: boolean;
154
+ contentAlign: IFlowAlign;
155
+ rowXAlign: IAxisAlign;
156
+ rowYAlign: IAxisAlign;
157
+ }
158
+
159
+ export type { IEditBox, IEditSelect, IEditTool, IEditor, IEditorEvent, IEditorGroupEvent, IEditorMoveEvent, IEditorRotateEvent, IEditorScaleEvent, IEditorSkewEvent, IFlowAlignToAxisAlignMap, IFlowDrawData, IFlowParseData, IFlowWrapDrawData, IGapBoundsData, IHTMLTextData, IHTMLTextInputData, IInnerEditor, IInnerEditorEvent, IScrollBar, IScrollBarConfig, IScrollBarTheme, ISelectArea, IStroker };
@@ -1,9 +0,0 @@
1
- import { IBox } from '@leafer-ui/interface'
2
- import { IDirection8 } from './IEditor'
3
-
4
- export interface IEditPoint extends IBox {
5
- direction: IDirection8
6
- pointType: IEditPointType
7
- }
8
-
9
- export type IEditPointType = 'rotate' | 'resize'