@@ -12,20 +12,17 @@ export class Pin {
12
12
13
13
constructor (
14
14
private id : "pin0" | "pin1" | "pin2" | "pinLogo" ,
15
- private element : SVGElement | null ,
16
- label : string | null ,
15
+ private ui : { element : SVGElement ; label : string } ,
17
16
private onChange : ( changes : Partial < State > ) => void
18
17
) {
19
- if ( ( element ? 0 : 1 ) + ( label ? 0 : 1 ) === 1 ) {
20
- throw new Error ( "Must provide element and label or neither" ) ;
21
- }
22
18
this . state = new RangeSensor ( id , 0 , 1 , 0 , undefined ) ;
23
19
24
- if ( this . element ) {
25
- this . element . setAttribute ( "role" , "button" ) ;
26
- this . element . setAttribute ( "tabindex" , "0" ) ;
27
- this . element . ariaLabel = label ;
28
- this . element . style . cursor = "pointer" ;
20
+ if ( this . ui ) {
21
+ const { element, label } = this . ui ;
22
+ element . setAttribute ( "role" , "button" ) ;
23
+ element . setAttribute ( "tabindex" , "0" ) ;
24
+ element . ariaLabel = label ;
25
+ element . style . cursor = "pointer" ;
29
26
}
30
27
31
28
this . keyListener = ( e ) => {
@@ -60,12 +57,13 @@ export class Pin {
60
57
}
61
58
} ;
62
59
63
- if ( this . element ) {
64
- this . element . addEventListener ( "mousedown" , this . mouseDownListener ) ;
65
- this . element . addEventListener ( "mouseup" , this . mouseUpListener ) ;
66
- this . element . addEventListener ( "keydown" , this . keyListener ) ;
67
- this . element . addEventListener ( "keyup" , this . keyListener ) ;
68
- this . element . addEventListener ( "mouseleave" , this . mouseLeaveListener ) ;
60
+ if ( this . ui ) {
61
+ const { element } = this . ui ;
62
+ element . addEventListener ( "mousedown" , this . mouseDownListener ) ;
63
+ element . addEventListener ( "mouseup" , this . mouseUpListener ) ;
64
+ element . addEventListener ( "keydown" , this . keyListener ) ;
65
+ element . addEventListener ( "keyup" , this . keyListener ) ;
66
+ element . addEventListener ( "mouseleave" , this . mouseLeaveListener ) ;
69
67
}
70
68
}
71
69
@@ -102,9 +100,9 @@ export class Pin {
102
100
}
103
101
104
102
render ( ) {
105
- if ( this . element ) {
103
+ if ( this . ui ) {
106
104
const fill = ! ! this . state . value ? "red" : "url(#an)" ;
107
- this . element . querySelectorAll ( "path" ) . forEach ( ( p ) => {
105
+ this . ui . element . querySelectorAll ( "path" ) . forEach ( ( p ) => {
108
106
p . style . fill = fill ;
109
107
} ) ;
110
108
}
0 commit comments