| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | import BaseFoundation, { DefaultAdapter } from '../base/foundation';export interface SpinAdapter extends Partial<DefaultAdapter> {    setLoading: (val: boolean) => void}class SpinFoundation extends BaseFoundation<SpinAdapter> {    _timer: ReturnType<typeof setTimeout>;    static get spinDefaultAdapter(): SpinAdapter {        return {            getProp: () => undefined,            setLoading: val => undefined        };    }    constructor(adapter: SpinAdapter) {        super({ ...SpinFoundation.spinDefaultAdapter, ...adapter });    }    updateLoadingIfNeedDelay() {        const { spinning: propsSpinning, delay: propsDelay } = this._adapter.getProps();        const { delay } = this._adapter.getStates();        if (delay) {            const self = this;            this._timer = setTimeout(() => {                self._adapter.setState({                    loading: propsSpinning,                    delay: 0                });            }, propsDelay);        }    }    destroy() {        if (this._timer) {            clearTimeout(this._timer);            this._timer = null;        }    }}export default SpinFoundation;
 |