UNPKG

framer-motion

Version:

A simple and powerful JavaScript animation library

1 lines • 3.25 kB
{"version":3,"file":"press.mjs","sources":["../../../src/gestures/press.ts"],"sourcesContent":["import {\n Feature,\n press,\n type PointerEventOptions,\n type VisualElement,\n} from \"motion-dom\"\nimport { handleGestureEvent } from \"./hover\"\n\nfunction handlePressEvent(\n node: VisualElement<Element>,\n event: PointerEvent,\n lifecycle: \"Start\" | \"\" | \"Cancel\",\n isRepeat?: boolean\n) {\n if (node.current instanceof HTMLButtonElement && node.current.disabled) {\n return\n }\n\n handleGestureEvent(node, event, \"Tap\", lifecycle, isRepeat)\n}\n\nexport class PressGesture extends Feature<Element> {\n /**\n * press() reads its options on each press, so this object is kept\n * and updated in place when props change.\n */\n private options: PointerEventOptions = {}\n\n mount() {\n const { current } = this.node\n if (!current) return\n\n this.update()\n\n this.unmount = press(\n current,\n (_element, startEvent) => {\n handlePressEvent(this.node, startEvent, \"Start\")\n\n return {\n onComplete: (endEvent, { success }) =>\n handlePressEvent(\n this.node,\n endEvent,\n success ? \"\" : \"Cancel\"\n ),\n onRepeat: () =>\n handlePressEvent(this.node, startEvent, \"\", true),\n }\n },\n this.options\n )\n }\n\n update() {\n const { options, node } = this\n const { globalTapTarget, propagate, tap } = node.props\n\n for (const key in options) delete options[key as \"count\"]\n\n Object.assign(options, tap, {\n useGlobalTarget: globalTapTarget,\n stopPropagation: propagate?.tap === false,\n })\n }\n\n unmount() {}\n}\n"],"names":[],"mappings":";;;AAQA,SAAS,gBAAgB,CACrB,IAA4B,EAC5B,KAAmB,EACnB,SAAkC,EAClC,QAAkB,EAAA;AAElB,IAAA,IAAI,IAAI,CAAC,OAAO,YAAY,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;QACpE;IACJ;IAEA,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC/D;AAEM,MAAO,YAAa,SAAQ,OAAgB,CAAA;AAAlD,IAAA,WAAA,GAAA;;AACI;;;AAGG;QACK,IAAA,CAAA,OAAO,GAAwB,EAAE;IAyC7C;IAvCI,KAAK,GAAA;AACD,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI;AAC7B,QAAA,IAAI,CAAC,OAAO;YAAE;QAEd,IAAI,CAAC,MAAM,EAAE;AAEb,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAChB,OAAO,EACP,CAAC,QAAQ,EAAE,UAAU,KAAI;YACrB,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;YAEhD,OAAO;gBACH,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAC9B,gBAAgB,CACZ,IAAI,CAAC,IAAI,EACT,QAAQ,EACR,OAAO,GAAG,EAAE,GAAG,QAAQ,CAC1B;AACL,gBAAA,QAAQ,EAAE,MACN,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC;aACxD;AACL,QAAA,CAAC,EACD,IAAI,CAAC,OAAO,CACf;IACL;IAEA,MAAM,GAAA;AACF,QAAA,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;QAC9B,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK;QAEtD,KAAK,MAAM,GAAG,IAAI,OAAO;AAAE,YAAA,OAAO,OAAO,CAAC,GAAc,CAAC;AAEzD,QAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE;AACxB,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,eAAe,EAAE,SAAS,EAAE,GAAG,KAAK,KAAK;AAC5C,SAAA,CAAC;IACN;AAEA,IAAA,OAAO,KAAI;AACd;;;;"}