{"version":3,"file":"Spring.mjs","sources":["../../../src/utils/trackpad/Spring.ts"],"sourcesContent":["export interface SpringOptions\n{\n    max?: number;\n    damp?: number;\n    springiness?: number;\n}\n\nexport class Spring\n{\n    x: number;\n    ax: number;\n    dx: number;\n    tx: number;\n\n    protected _options: Required<SpringOptions>;\n\n    constructor(options: SpringOptions = {})\n    {\n        this.x = 0;\n        this.ax = 0;\n        this.dx = 0;\n        this.tx = 0;\n\n        // add opts to object for shared opts.\n        this._options = {\n            max: options.max ?? 160,\n            damp: options.damp ?? 0.8,\n            springiness: options.springiness ?? 0.1,\n        };\n    }\n\n    update(): void\n    {\n        this.ax = (this.tx - this.x) * this._options.springiness;\n\n        this.dx += this.ax;\n        this.dx *= this._options.damp;\n\n        if (this.dx < -this._options.max) this.dx = -this._options.max;\n        else if (this.dx > this._options.max) this.dx = this._options.max;\n\n        this.x += this.dx;\n    }\n\n    reset(): void\n    {\n        this.x = 0;\n        this.ax = 0;\n        this.dx = 0;\n        this.tx = 0;\n    }\n\n    get max(): number\n    {\n        return this._options.max;\n    }\n\n    set max(value: number)\n    {\n        this._options.max = value;\n    }\n\n    get damp(): number\n    {\n        return this._options.damp;\n    }\n\n    set damp(value: number)\n    {\n        this._options.damp = value;\n    }\n\n    get springiness(): number\n    {\n        return this._options.springiness;\n    }\n\n    set springiness(value: number)\n    {\n        this._options.springiness = value;\n    }\n}\n"],"names":[],"mappings":";;;AAOO,MAAM,MACb,CAAA;AAAA,EAQI,WAAA,CAAY,OAAyB,GAAA,EACrC,EAAA;AARA,IAAA,aAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;AAEA,IAAU,aAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAA;AAIN,IAAA,IAAA,CAAK,CAAI,GAAA,CAAA,CAAA;AACT,IAAA,IAAA,CAAK,EAAK,GAAA,CAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,CAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,CAAA,CAAA;AAGV,IAAA,IAAA,CAAK,QAAW,GAAA;AAAA,MACZ,GAAA,EAAK,QAAQ,GAAO,IAAA,GAAA;AAAA,MACpB,IAAA,EAAM,QAAQ,IAAQ,IAAA,GAAA;AAAA,MACtB,WAAA,EAAa,QAAQ,WAAe,IAAA,GAAA;AAAA,KACxC,CAAA;AAAA,GACJ;AAAA,EAEA,MACA,GAAA;AACI,IAAA,IAAA,CAAK,MAAM,IAAK,CAAA,EAAA,GAAK,IAAK,CAAA,CAAA,IAAK,KAAK,QAAS,CAAA,WAAA,CAAA;AAE7C,IAAA,IAAA,CAAK,MAAM,IAAK,CAAA,EAAA,CAAA;AAChB,IAAK,IAAA,CAAA,EAAA,IAAM,KAAK,QAAS,CAAA,IAAA,CAAA;AAEzB,IAAI,IAAA,IAAA,CAAK,EAAK,GAAA,CAAC,IAAK,CAAA,QAAA,CAAS,KAAU,IAAA,CAAA,EAAA,GAAK,CAAC,IAAA,CAAK,QAAS,CAAA,GAAA,CAAA;AAAA,SAClD,IAAA,IAAA,CAAK,KAAK,IAAK,CAAA,QAAA,CAAS,KAAU,IAAA,CAAA,EAAA,GAAK,KAAK,QAAS,CAAA,GAAA,CAAA;AAE9D,IAAA,IAAA,CAAK,KAAK,IAAK,CAAA,EAAA,CAAA;AAAA,GACnB;AAAA,EAEA,KACA,GAAA;AACI,IAAA,IAAA,CAAK,CAAI,GAAA,CAAA,CAAA;AACT,IAAA,IAAA,CAAK,EAAK,GAAA,CAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,CAAA,CAAA;AACV,IAAA,IAAA,CAAK,EAAK,GAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,GACJ,GAAA;AACI,IAAA,OAAO,KAAK,QAAS,CAAA,GAAA,CAAA;AAAA,GACzB;AAAA,EAEA,IAAI,IAAI,KACR,EAAA;AACI,IAAA,IAAA,CAAK,SAAS,GAAM,GAAA,KAAA,CAAA;AAAA,GACxB;AAAA,EAEA,IAAI,IACJ,GAAA;AACI,IAAA,OAAO,KAAK,QAAS,CAAA,IAAA,CAAA;AAAA,GACzB;AAAA,EAEA,IAAI,KAAK,KACT,EAAA;AACI,IAAA,IAAA,CAAK,SAAS,IAAO,GAAA,KAAA,CAAA;AAAA,GACzB;AAAA,EAEA,IAAI,WACJ,GAAA;AACI,IAAA,OAAO,KAAK,QAAS,CAAA,WAAA,CAAA;AAAA,GACzB;AAAA,EAEA,IAAI,YAAY,KAChB,EAAA;AACI,IAAA,IAAA,CAAK,SAAS,WAAc,GAAA,KAAA,CAAA;AAAA,GAChC;AACJ;;;;"}