{"version":3,"file":"resolve-elements.mjs","sources":["../../../src/utils/resolve-elements.ts"],"sourcesContent":["export type ElementOrSelector =\n    | Element\n    | Element[]\n    | NodeListOf<Element>\n    | string\n    | null\n    | undefined\n\nexport interface WithQuerySelectorAll {\n    querySelectorAll: Element[\"querySelectorAll\"]\n}\n\nexport interface AnimationScope<T = any> {\n    readonly current: T\n    animations: any[] // TODO: Refactor to types package AnimationPlaybackControls[]\n}\n\nexport interface SelectorCache {\n    [key: string]: NodeListOf<Element>\n}\n\nexport function resolveElements(\n    elementOrSelector: ElementOrSelector,\n    scope?: AnimationScope,\n    selectorCache?: SelectorCache\n): Element[] {\n    if (elementOrSelector == null) {\n        return []\n    }\n\n    if (elementOrSelector instanceof EventTarget) {\n        return [elementOrSelector]\n    } else if (typeof elementOrSelector === \"string\") {\n        let root: WithQuerySelectorAll = document\n\n        if (scope) {\n            root = scope.current\n        }\n\n        const elements =\n            selectorCache?.[elementOrSelector] ??\n            root.querySelectorAll(elementOrSelector)\n\n        return elements ? Array.from(elements) : []\n    }\n\n    return Array.from(elementOrSelector).filter(\n        (element): element is Element => element != null\n    )\n}\n"],"names":[],"mappings":"SAqBgB,eAAe,CAC3B,iBAAoC,EACpC,KAAsB,EACtB,aAA6B,EAAA;AAE7B,IAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;AAC3B,QAAA,OAAO,EAAE,CAAA;KACZ;AAED,IAAA,IAAI,iBAAiB,YAAY,WAAW,EAAE;QAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAA;KAC7B;AAAM,SAAA,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;QAC9C,IAAI,IAAI,GAAyB,QAAQ,CAAA;QAEzC,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,GAAG,KAAK,CAAC,OAAO,CAAA;SACvB;AAED,QAAA,MAAM,QAAQ,GACV,aAAa,GAAG,iBAAiB,CAAC;AAClC,YAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;AAE5C,QAAA,OAAO,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;KAC9C;AAED,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACvC,CAAC,OAAO,KAAyB,OAAO,IAAI,IAAI,CACnD,CAAA;AACL;;;;"}