@@ -2,17 +2,17 @@ import { BaseService } from '@pictode/utils';
2
2
import Konva from 'konva' ;
3
3
4
4
import { MouseService } from './services/mouse' ;
5
+ import { Selector } from './services/selector' ;
5
6
import { ChildType , EventArgs , KonvaMouseEvent , Plugin , Tool } from './types' ;
6
7
import { Point } from './utils' ;
7
8
8
9
export class App extends BaseService < EventArgs > {
9
10
public stage : Konva . Stage ;
10
11
public currentTool : Tool | null = null ;
11
12
public mainLayer : Konva . Layer ;
12
- public selected : ChildType [ ] = [ ] ;
13
13
14
- private selector : Konva . Transformer ;
15
14
private mouse : MouseService ;
15
+ private selector : Selector ;
16
16
private containerElement : HTMLDivElement ;
17
17
private installedPlugins : Map < string , Plugin > = new Map ( ) ;
18
18
@@ -36,36 +36,7 @@ export class App extends BaseService<EventArgs> {
36
36
this . mainLayer . name ( 'pictode:main:layer' ) ;
37
37
this . stage . add ( this . mainLayer ) ;
38
38
39
- this . selector = new Konva . Transformer ( {
40
- padding : 3 ,
41
- borderStroke : 'rgb(157, 157, 231)' ,
42
- borderStrokeWidth : 1 ,
43
- anchorSize : 8 ,
44
- anchorStroke : 'rgb(157, 157, 231)' ,
45
- anchorCornerRadius : 3 ,
46
- anchorStrokeWidth : 1 ,
47
- rotateAnchorOffset : 20 ,
48
- } ) ;
49
- this . selector . anchorStyleFunc ( ( anchor ) => {
50
- if ( ! anchor . hasName ( 'rotater' ) ) {
51
- return ;
52
- }
53
- const setAnchorCursor = ( cursor : string = '' ) => {
54
- const anchorStage = anchor . getStage ( ) ;
55
- if ( ! anchorStage || ! anchorStage . content ) {
56
- return ;
57
- }
58
- anchorStage . content . style . cursor = cursor ;
59
- } ;
60
- anchor . on ( 'mouseenter' , ( ) => {
61
- setAnchorCursor ( 'grab' ) ;
62
- } ) ;
63
- anchor . on ( 'mouseout' , ( ) => {
64
- setAnchorCursor ( ) ;
65
- } ) ;
66
- } ) ;
67
- this . mainLayer . add ( this . selector ) ;
68
-
39
+ this . selector = new Selector ( this ) ;
69
40
this . mouse = new MouseService ( this ) ;
70
41
}
71
42
@@ -101,15 +72,7 @@ export class App extends BaseService<EventArgs> {
101
72
}
102
73
103
74
public select ( ...children : ChildType [ ] ) : void {
104
- this . selected . forEach ( ( child ) => child . draggable ( false ) ) ;
105
- this . selected = [ ] ;
106
- this . selector . nodes ( [ ] ) ;
107
- children . forEach ( ( child ) => {
108
- child . draggable ( true ) ;
109
- this . selected . push ( child ) ;
110
- } ) ;
111
- this . selector . nodes ( children ) ;
112
- this . selector . moveToTop ( ) ;
75
+ this . selector . select ( ...children ) ;
113
76
}
114
77
115
78
public selectByEvent ( event : KonvaMouseEvent ) : void {
0 commit comments