export default class ContentController{ /* (1) Construct default attributes * ---------------------------------------------------------*/ constructor(){} /* (2) Channel bindings * ---------------------------------------------------------*/ get cid(){ return gs.get.channel.current; } get cbuf(){ return gs.get.channel.buffer; } /* (3) Room ID binding * ---------------------------------------------------------*/ get rid(){ return gs.get.room.text.current; } /* (4) Room buffer binding * ---------------------------------------------------------*/ get rbuf(){ /* (1) Ignore: if no rooms empty */ if( this.cbuf.room == null || this.cbuf.room.length === 0 ) return {}; /* (2) Search for current room */ for( let r of this.cbuf.room ){ // Return if room found // if( r.rid === this.rid ) return r; } /* (3) If nothing found */ return {}; } get messages(){ return this.rbuf.messages; } get members(){ return this.rbuf.members; } /* (5) User getter * * @user_id User id * * @return user User data * ---------------------------------------------------------*/ user(user_id=null){ /* (1) Error: if invalid user_id */ if( isNaN(user_id) ) return {}; /* (2) Error: unknown user */ if( this.cbuf.users == null || this.cbuf.users.length < 1 ) return {}; /* (3) return user data */ for( let u of this.cbuf.users ) if( u.uid === user_id ) return u; /* (4) Error */ return {}; } /* (6) Textarea auto_grow * * @e Textarea event * ---------------------------------------------------------*/ auto_grow(e){ setTimeout(() => { e.target.style.height = '0'; e.target.style.height = `calc( ${e.target.scrollHeight}px )`; }, 1); } }