{"version":3,"file":"visual-element-variant.mjs","sources":["../../../../src/animation/interfaces/visual-element-variant.ts"],"sourcesContent":["import {\n    getTypeCustom,\n    resolveVariant,\n} from \"../../render/utils/resolve-dynamic-variants\"\nimport { calcChildStagger } from \"../utils/calc-child-stagger\"\nimport type { VisualElementAnimationOptions } from \"./types\"\nimport { animateTarget } from \"./visual-element-target\"\nimport type { VisualElement } from \"../../render/VisualElement\"\n\nexport function animateVariant(\n    visualElement: VisualElement,\n    variant: string,\n    options: VisualElementAnimationOptions = {}\n): Promise<any> {\n    const resolved = resolveVariant(\n        visualElement,\n        variant,\n        getTypeCustom(visualElement, options.type)\n    )\n\n    const transition =\n        options.transitionOverride ||\n        (resolved?.transition ?? (visualElement.getDefaultTransition() || {}))\n\n    const getAnimation = () =>\n        Promise.all(\n            resolved ? animateTarget(visualElement, resolved, options) : []\n        )\n\n    const getChildAnimations = (delay = 0) => {\n        const { variantChildren } = visualElement\n        const {\n            delayChildren = 0,\n            staggerChildren,\n            staggerDirection,\n        } = transition\n        const animations: Promise<any>[] = []\n\n        variantChildren?.forEach((child) => {\n            child.notify(\"AnimationStart\", variant)\n            animations.push(\n                animateVariant(child, variant, {\n                    ...options,\n                    delay:\n                        delay +\n                        (typeof delayChildren === \"function\"\n                            ? 0\n                            : delayChildren) +\n                        calcChildStagger(\n                            variantChildren,\n                            child,\n                            delayChildren,\n                            staggerChildren,\n                            staggerDirection\n                        ),\n                }).then(() => child.notify(\"AnimationComplete\", variant))\n            )\n        })\n\n        return Promise.all(animations)\n    }\n\n    /**\n     * when: \"beforeChildren\" | \"afterChildren\" runs this element's animation\n     * and its children's in sequence.\n     */\n    const { when } = transition\n\n    return when\n        ? when === \"beforeChildren\"\n            ? getAnimation().then(() => getChildAnimations())\n            : getChildAnimations().then(getAnimation)\n        : Promise.all([getAnimation(), getChildAnimations(options.delay)])\n}\n"],"names":[],"mappings":";;;;AASM,SAAU,cAAc,CAC1B,aAA4B,EAC5B,OAAe,EACf,UAAyC,EAAE,EAAA;AAE3C,IAAA,MAAM,QAAQ,GAAG,cAAc,CAC3B,aAAa,EACb,OAAO,EACP,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAC7C;AAED,IAAA,MAAM,UAAU,GACZ,OAAO,CAAC,kBAAkB;AAC1B,SAAC,QAAQ,EAAE,UAAU,KAAK,aAAa,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,YAAY,GAAG,MACjB,OAAO,CAAC,GAAG,CACP,QAAQ,GAAG,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAClE;AAEL,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAK,GAAG,CAAC,KAAI;AACrC,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,aAAa;QACzC,MAAM,EACF,aAAa,GAAG,CAAC,EACjB,eAAe,EACf,gBAAgB,GACnB,GAAG,UAAU;QACd,MAAM,UAAU,GAAmB,EAAE;AAErC,QAAA,eAAe,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;AAC/B,YAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC;YACvC,UAAU,CAAC,IAAI,CACX,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3B,gBAAA,GAAG,OAAO;AACV,gBAAA,KAAK,EACD,KAAK;qBACJ,OAAO,aAAa,KAAK;AACtB,0BAAE;0BACA,aAAa,CAAC;oBACpB,gBAAgB,CACZ,eAAe,EACf,KAAK,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,CACnB;AACR,aAAA,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAC5D;AACL,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAClC,IAAA,CAAC;AAED;;;AAGG;AACH,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU;AAE3B,IAAA,OAAO;UACD,IAAI,KAAK;cACL,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,kBAAkB,EAAE;AAChD,cAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,YAAY;AAC5C,UAAE,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E;;;;"}