import { ElementSet } from './ElementSet' ; export interface ElementSetManip { get : { attr ( name ) : string ; width ( ) : number ; height ( ) : number ; } ; add : { c ( name ) : ElementSet ; } ; set : { attr ( name , value ) : ElementSet ; } ; rm : { c ( name ) : ElementSet ; attr ( name ) : ElementSet ; } ; } declare module './ElementSet' { interface ElementSet { get : { attr ( name ) : string ; width ( ) : number ; height ( ) : number ; } ; add : { c ( name ) : ElementSet ; } ; set : { attr ( name , value ) : ElementSet ; } ; rm : { c ( name ) : ElementSet ; attr ( name ) : ElementSet ; } ; } } Object . defineProperties ( ElementSet . prototype , { get : { get ( ) { const s = this as any ; return { attr ( name ) { const n = s . first ; return n && n . getAttribute ( name ) ; } , width ( ) { return s . width ( ) ; } , height ( ) { return s . height ( ) ; } , } ; } , } , add : { get ( ) { const s = this as any ; return { c ( name ) { s . each ( e => { e . classList . add ( name ) ; } ) ; return s ; } , } ; } , } , rm : { get ( ) { const s = this as any ; return { c ( name ) { s . each ( e => { e . classList . remove ( name ) ; } ) ; return s ; } , attr ( name ) { s . each ( e => { e . removeAttribute ( name ) ; } ) ; return s ; } , } ; } , } , set : { get ( ) { const s = this as any ; return { attr ( name , v ) { s . each ( e => { e . setAttribute ( name , v ) ; } ) ; return s ; } , } ; } , } , } ) ;