{"version":3,"file":"DOMVisualElement.mjs","sources":["../../../../src/render/dom/DOMVisualElement.ts"],"sourcesContent":["import { isMotionValue } from \"../../value/utils/is-motion-value\"\nimport type { MotionValue } from \"../../value\"\nimport type { AnyResolvedKeyframe } from \"../../animation/types\"\nimport { DOMKeyframesResolver } from \"../../animation/keyframes/DOMKeyframesResolver\"\nimport type { MotionNodeOptions } from \"../../node/types\"\nimport type { DOMVisualElementOptions } from \"./types\"\nimport type { HTMLRenderState } from \"../html/types\"\nimport { VisualElement, MotionStyle } from \"../VisualElement\"\n\nexport abstract class DOMVisualElement<\n    Instance extends HTMLElement | SVGElement = HTMLElement,\n    State extends HTMLRenderState = HTMLRenderState,\n    Options extends DOMVisualElementOptions = DOMVisualElementOptions\n> extends VisualElement<Instance, State, Options> {\n    sortInstanceNodePosition(a: Instance, b: Instance): number {\n        /**\n         * compareDocumentPosition returns a bitmask, by using the bitwise &\n         * we're returning true if 2 in that bitmask is set to true. 2 is set\n         * to true if b preceeds a.\n         */\n        return a.compareDocumentPosition(b) & 2 ? 1 : -1\n    }\n\n    getBaseTargetFromProps(\n        props: MotionNodeOptions,\n        key: string\n    ): AnyResolvedKeyframe | MotionValue<any> | undefined {\n        const style = (props as MotionNodeOptions & { style?: MotionStyle }).style\n        return style ? (style[key] as string) : undefined\n    }\n\n    removeValueFromRenderState(\n        key: string,\n        { vars, style }: HTMLRenderState\n    ): void {\n        delete vars[key]\n        delete style[key]\n    }\n\n    KeyframeResolver = DOMKeyframesResolver\n\n    childSubscription?: VoidFunction\n    handleChildMotionValue() {\n        if (this.childSubscription) {\n            this.childSubscription()\n            delete this.childSubscription\n        }\n\n        const { children } = this.props as MotionNodeOptions & { children?: MotionValue | any }\n        if (isMotionValue(children)) {\n            this.childSubscription = children.on(\"change\", (latest) => {\n                if (this.current) {\n                    this.current.textContent = `${latest}`\n                }\n            })\n        }\n    }\n}\n"],"names":[],"mappings":";;;;AASM,MAAgB,gBAIpB,SAAQ,aAAuC,CAAA;AAJjD,IAAA,WAAA,GAAA;;QA8BI,IAAgB,CAAA,gBAAA,GAAG,oBAAoB,CAAA;KAkB1C;IA3CG,wBAAwB,CAAC,CAAW,EAAE,CAAW,EAAA;AAC7C;;;;AAIG;AACH,QAAA,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;KACnD;IAED,sBAAsB,CAClB,KAAwB,EACxB,GAAW,EAAA;AAEX,QAAA,MAAM,KAAK,GAAI,KAAqD,CAAC,KAAK,CAAA;AAC1E,QAAA,OAAO,KAAK,GAAI,KAAK,CAAC,GAAG,CAAY,GAAG,SAAS,CAAA;KACpD;AAED,IAAA,0BAA0B,CACtB,GAAW,EACX,EAAE,IAAI,EAAE,KAAK,EAAmB,EAAA;AAEhC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AAChB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;KACpB;IAKD,sBAAsB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAA;YACxB,OAAO,IAAI,CAAC,iBAAiB,CAAA;SAChC;AAED,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAA6D,CAAA;AACvF,QAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAI;AACtD,gBAAA,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAG,EAAA,MAAM,EAAE,CAAA;iBACzC;AACL,aAAC,CAAC,CAAA;SACL;KACJ;AACJ;;;;"}