{"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;;;;"}