{"version":3,"file":"resolve-variants.mjs","sources":["../../../../src/render/utils/resolve-variants.ts"],"sourcesContent":["import type {\n    AnimationDefinition,\n    TargetAndTransition,\n    TargetResolver,\n} from \"motion-dom\"\nimport type { MotionProps } from \"../../motion/types\"\nimport { VisualElement } from \"../VisualElement\"\nimport type { ResolvedValues } from \"../types\"\n\nfunction getValueState(\n    visualElement?: VisualElement\n): [ResolvedValues, ResolvedValues] {\n    const state: [ResolvedValues, ResolvedValues] = [{}, {}]\n\n    visualElement?.values.forEach((value, key) => {\n        state[0][key] = value.get()\n        state[1][key] = value.getVelocity()\n    })\n\n    return state\n}\n\nexport function resolveVariantFromProps(\n    props: MotionProps,\n    definition: TargetAndTransition | TargetResolver,\n    custom?: any,\n    visualElement?: VisualElement\n): TargetAndTransition\nexport function resolveVariantFromProps(\n    props: MotionProps,\n    definition?: AnimationDefinition,\n    custom?: any,\n    visualElement?: VisualElement\n): undefined | TargetAndTransition\nexport function resolveVariantFromProps(\n    props: MotionProps,\n    definition?: AnimationDefinition,\n    custom?: any,\n    visualElement?: VisualElement\n) {\n    /**\n     * If the variant definition is a function, resolve.\n     */\n    if (typeof definition === \"function\") {\n        const [current, velocity] = getValueState(visualElement)\n        definition = definition(\n            custom !== undefined ? custom : props.custom,\n            current,\n            velocity\n        )\n    }\n\n    /**\n     * If the variant definition is a variant label, or\n     * the function returned a variant label, resolve.\n     */\n    if (typeof definition === \"string\") {\n        definition = props.variants && props.variants[definition]\n    }\n\n    /**\n     * At this point we've resolved both functions and variant labels,\n     * but the resolved variant label might itself have been a function.\n     * If so, resolve. This can only have returned a valid target object.\n     */\n    if (typeof definition === \"function\") {\n        const [current, velocity] = getValueState(visualElement)\n        definition = definition(\n            custom !== undefined ? custom : props.custom,\n            current,\n            velocity\n        )\n    }\n\n    return definition\n}\n"],"names":[],"mappings":"AASA,SAAS,aAAa,CAClB,aAA6B,EAAA;AAE7B,IAAA,MAAM,KAAK,GAAqC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAExD,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;QACzC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;QAC3B,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;AACvC,KAAC,CAAC,CAAA;AAEF,IAAA,OAAO,KAAK,CAAA;AAChB,CAAC;AAcK,SAAU,uBAAuB,CACnC,KAAkB,EAClB,UAAgC,EAChC,MAAY,EACZ,aAA6B,EAAA;AAE7B;;AAEG;AACH,IAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;QAClC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,CAAA;QACxD,UAAU,GAAG,UAAU,CACnB,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,EAC5C,OAAO,EACP,QAAQ,CACX,CAAA;KACJ;AAED;;;AAGG;AACH,IAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAChC,UAAU,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;KAC5D;AAED;;;;AAIG;AACH,IAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;QAClC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,CAAA;QACxD,UAAU,GAAG,UAAU,CACnB,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,EAC5C,OAAO,EACP,QAAQ,CACX,CAAA;KACJ;AAED,IAAA,OAAO,UAAU,CAAA;AACrB;;;;"}