{"version":3,"file":"create-effect.mjs","sources":["../../../../src/effects/utils/create-effect.ts"],"sourcesContent":["import { MotionValue } from \"../../value\"\nimport { MotionValueState } from \"../MotionValueState\"\n\nexport function createEffect<Subject extends object>(\n    addValue: (\n        subject: Subject,\n        state: MotionValueState,\n        key: string,\n        value: MotionValue\n    ) => VoidFunction\n) {\n    const stateCache = new WeakMap<Subject, MotionValueState>()\n    const subscriptions: VoidFunction[] = []\n\n    return (\n        subject: Subject,\n        values: Record<string, MotionValue>\n    ): VoidFunction => {\n        const state = stateCache.get(subject) ?? new MotionValueState()\n\n        stateCache.set(subject, state)\n\n        for (const key in values) {\n            const value = values[key]\n            const remove = addValue(subject, state, key, value)\n            subscriptions.push(remove)\n        }\n\n        return () => {\n            for (const cancel of subscriptions) cancel()\n        }\n    }\n}\n"],"names":[],"mappings":";;AAGM,SAAU,YAAY,CACxB,QAKiB,EAAA;AAEjB,IAAA,MAAM,UAAU,GAAG,IAAI,OAAO,EAA6B,CAAA;IAC3D,MAAM,aAAa,GAAmB,EAAE,CAAA;AAExC,IAAA,OAAO,CACH,OAAgB,EAChB,MAAmC,KACrB;AACd,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAA;AAE/D,QAAA,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AAE9B,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;AACzB,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AACnD,YAAA,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC7B;AAED,QAAA,OAAO,MAAK;YACR,KAAK,MAAM,MAAM,IAAI,aAAa;AAAE,gBAAA,MAAM,EAAE,CAAA;AAChD,SAAC,CAAA;AACL,KAAC,CAAA;AACL;;;;"}