{"version":3,"file":"MotionValueState.mjs","sources":["../../../src/effects/MotionValueState.ts"],"sourcesContent":["import { AnyResolvedKeyframe } from \"../animation/types\"\nimport { cancelFrame, frame } from \"../frameloop/frame\"\nimport { MotionValue } from \"../value\"\nimport { numberValueTypes } from \"../value/types/maps/number\"\nimport { getValueAsType } from \"../value/types/utils/get-as-type\"\n\nexport class MotionValueState {\n    latest: { [name: string]: AnyResolvedKeyframe } = {}\n\n    private values = new Map<\n        string,\n        { value: MotionValue; onRemove: VoidFunction }\n    >()\n\n    set(\n        name: string,\n        value: MotionValue,\n        render?: VoidFunction,\n        computed?: MotionValue,\n        useDefaultValueType = true\n    ) {\n        const existingValue = this.values.get(name)\n\n        if (existingValue) {\n            existingValue.onRemove()\n        }\n\n        const onChange = () => {\n            const v = value.get()\n\n            if (useDefaultValueType) {\n                this.latest[name] = getValueAsType(v, numberValueTypes[name])\n            } else {\n                this.latest[name] = v\n            }\n\n            render && frame.render(render)\n        }\n\n        onChange()\n\n        const cancelOnChange = value.on(\"change\", onChange)\n\n        computed && value.addDependent(computed)\n\n        const remove = () => {\n            cancelOnChange()\n            render && cancelFrame(render)\n            this.values.delete(name)\n            computed && value.removeDependent(computed)\n        }\n\n        this.values.set(name, { value, onRemove: remove })\n\n        return remove\n    }\n\n    get(name: string): MotionValue | undefined {\n        return this.values.get(name)?.value\n    }\n\n    destroy() {\n        for (const value of this.values.values()) {\n            value.onRemove()\n        }\n    }\n}\n"],"names":[],"mappings":";;;;MAMa,gBAAgB,CAAA;AAA7B,IAAA,WAAA,GAAA;QACI,IAAM,CAAA,MAAA,GAA4C,EAAE,CAAA;AAE5C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,GAAG,EAGrB,CAAA;KAsDN;IApDG,GAAG,CACC,IAAY,EACZ,KAAkB,EAClB,MAAqB,EACrB,QAAsB,EACtB,mBAAmB,GAAG,IAAI,EAAA;QAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE3C,IAAI,aAAa,EAAE;YACf,aAAa,CAAC,QAAQ,EAAE,CAAA;SAC3B;QAED,MAAM,QAAQ,GAAG,MAAK;AAClB,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;YAErB,IAAI,mBAAmB,EAAE;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;aAChE;iBAAM;AACH,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;aACxB;AAED,YAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAClC,SAAC,CAAA;AAED,QAAA,QAAQ,EAAE,CAAA;QAEV,MAAM,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEnD,QAAA,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAExC,MAAM,MAAM,GAAG,MAAK;AAChB,YAAA,cAAc,EAAE,CAAA;AAChB,YAAA,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACxB,YAAA,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;AAC/C,SAAC,CAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;AAElD,QAAA,OAAO,MAAM,CAAA;KAChB;AAED,IAAA,GAAG,CAAC,IAAY,EAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;KACtC;IAED,OAAO,GAAA;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;YACtC,KAAK,CAAC,QAAQ,EAAE,CAAA;SACnB;KACJ;AACJ;;;;"}