{"version":3,"file":"ScrollSpring.mjs","sources":["../../../src/utils/trackpad/ScrollSpring.ts"],"sourcesContent":["import { Spring } from './Spring';\n\nexport default class ScrollSpring\n{\n    done: boolean = false;\n    to: number = 0;\n\n    protected _spring: Spring;\n    protected _pos: number = 0;\n    protected _speed: number = 0;\n    protected _correctSpeed: boolean = false;\n\n    constructor()\n    {\n        this._spring = new Spring();\n        this._pos = 0;\n        this.to = 0;\n    }\n\n    start(speed: number, pos: number, to: number): void\n    {\n        this._speed = speed;\n        this._pos = pos;\n        this.to = to;\n        this.done = false;\n\n        this._spring.x = this._pos;\n        this._spring.tx = this.to;\n\n        const diff = this.to - this._pos;\n        const toDirection = Math.abs(diff) / diff;\n        const currentDirection = Math.abs(this._speed) / this._speed;\n\n        if (toDirection !== currentDirection)\n        {\n            this._correctSpeed = true;\n        }\n        else\n        {\n            this._correctSpeed = false;\n        }\n    }\n\n    update(): number\n    {\n        if (this._correctSpeed)\n        {\n            this._speed *= 0.6;\n\n            if (Math.abs(this._speed) < 2)\n            {\n                this._correctSpeed = false;\n            }\n\n            this._pos += this._speed;\n\n            this._spring.x = this._pos;\n        }\n        else\n        {\n            const diff = this.to - this._pos;\n\n            if (Math.abs(diff) < 0.05)\n            {\n                this._pos = this.to;\n                this.done = true;\n            }\n            else\n            {\n                this._spring.tx = this.to;\n                this._spring.update();\n                this._pos = this._spring.x;\n            }\n        }\n\n        return this._pos;\n    }\n\n    cancel(): void\n    {\n        // matches jux interface\n    }\n}\n"],"names":[],"mappings":"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"}