{"version":3,"file":"hover.mjs","sources":["../../../src/gestures/hover.ts"],"sourcesContent":["import {\n    extractEventInfo,\n    Feature,\n    frame,\n    hover,\n    type VisualElement,\n} from \"motion-dom\"\n\n/**\n * Toggle `while{gesture}` and fire `on{gesture}{lifecycle}`, e.g.\n * `onHoverStart` or, with an empty lifecycle, `onTap`.\n */\nexport function handleGestureEvent(\n    node: VisualElement<Element>,\n    event: PointerEvent,\n    gesture: \"Hover\" | \"Tap\",\n    lifecycle: \"Start\" | \"End\" | \"Cancel\" | \"\"\n) {\n    const { props } = node\n    const whileKey = (\"while\" + gesture) as \"whileHover\" | \"whileTap\"\n\n    if (node.animationState && props[whileKey]) {\n        node.animationState.setActive(whileKey, lifecycle === \"Start\")\n    }\n\n    const callback = props[(\"on\" + gesture + lifecycle) as \"onHoverStart\"] as\n        | ((event: PointerEvent, info: any) => void)\n        | undefined\n    if (callback) {\n        frame.postRender(() => callback(event, extractEventInfo(event)))\n    }\n}\n\nexport class HoverGesture extends Feature<Element> {\n    mount() {\n        const { current } = this.node\n        if (!current) return\n\n        this.unmount = hover(current, (_element, startEvent) => {\n            handleGestureEvent(this.node, startEvent, \"Hover\", \"Start\")\n\n            return (endEvent) =>\n                handleGestureEvent(this.node, endEvent, \"Hover\", \"End\")\n        })\n    }\n\n    unmount() {}\n}\n"],"names":[],"mappings":";;AAQA;;;AAGG;AACG,SAAU,kBAAkB,CAC9B,IAA4B,EAC5B,KAAmB,EACnB,OAAwB,EACxB,SAA0C,EAAA;AAE1C,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AACtB,IAAA,MAAM,QAAQ,IAAI,OAAO,GAAG,OAAO,CAA8B;IAEjE,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QACxC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC;IAClE;AAEA,IAAA,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,EAEnC;IACf,IAAI,QAAQ,EAAE;AACV,QAAA,KAAK,CAAC,UAAU,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE;AACJ;AAEM,MAAO,YAAa,SAAQ,OAAgB,CAAA;IAC9C,KAAK,GAAA;AACD,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI;AAC7B,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,KAAI;YACnD,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC;AAE3D,YAAA,OAAO,CAAC,QAAQ,KACZ,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;AAC/D,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,OAAO,KAAI;AACd;;;;"}