UNPKG

framer-motion

Version:

A simple and powerful JavaScript animation library

1 lines • 2.42 kB
{"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;;;;"}