import { Component } from "./core/component"; import { Env } from "./env"; //------------------------------------------------------------------------------ // Widget classes //------------------------------------------------------------------------------ export class Widget extends Component { constructor(parent, props) { super(parent, props); (this.__widget__).isMobile = this.env.isMobile; } async updateProps(nextProps: P): Promise { if ((this.__widget__).isMobile !== this.env.isMobile) { (this.__widget__).isMobile = this.env.isMobile; return this._updateProps(nextProps); } return super.updateProps(nextProps); } } export class PureWidget extends Widget { shouldUpdate(nextProps: P): boolean { for (let k in nextProps) { if (nextProps[k] !== this.props[k]) { return true; } } return false; } async updateState(nextState: Partial) { for (let k in nextState) { if (nextState[k] !== this.state[k]) { return super.updateState(nextState); } } } }