attributeChangedCallback(attrName, oldVal, newVal) {
		switch (attrName) {
			case 'width':
				this.catStyle.width = this.width + 'px';
				break;
			case 'height':
				this.catStyle.height = this.height + 'px';
				break;
			case 'x':
			case 'y':
				this.catStyle.transform = `translate(${this.x}px, ${this.y}px)`;
				break;
			case 'animating':
				if (this.animating) {
					window.requestAnimationFrame(this.$doAnimate.bind(this));
				}
				break;
		}
	}
/**
	 * When one of the observed attributes change, this is called.
	 */
When one of the observed attributes change, this is called.
When one of the observed attributes change this is called .
attributeChangedCallback(attrName, oldVal, newVal) {
		switch (attrName) {
			case 'width':
				this.catStyle.width = this.width + 'px';
				break;
			case 'height':
				this.catStyle.height = this.height + 'px';
				break;
			case 'x':
			case 'y':
				this.catStyle.transform = `translate(${this.x}px, ${this.y}px)`;
				break;
			case 'animating':
				if (this.animating) {
					window.requestAnimationFrame(this.$doAnimate.bind(this));
				}
				break;
		}
	}
attributeChangedCallback ( attrName , oldVal , newVal ) { switch ( attrName ) { case 'width' : this . catStyle . width = this . width + 'px' ; break ; case 'height' : this . catStyle . height = this . height + 'px' ; break ; case 'x' : case 'y' : this . catStyle . transform = ` ${ this . x } ${ this . y } ` ; break ; case 'animating' : if ( this . animating ) { window . requestAnimationFrame ( this . $doAnimate . bind ( this ) ) ; } break ; } }
When one of the observed attributes change, this is called.
When one of the observed attributes change this is called .