{"version":3,"file":"tapState.mjs","names":[],"sources":["../../../src/components/interactions/tapState.ts"],"sourcesContent":["/**\n * Shared state for double click and double tap detection.\n *\n * @internal\n */\nexport const globalTapState = {\n  time: 0,\n  x: 0,\n  y: 0,\n};\n\nconst TIMELINE_DOUBLE_TAP_DELAY_MS = 300;\nconst TIMELINE_DOUBLE_TAP_DISTANCE_PX = 20;\n\ninterface TimelineTapEvent {\n  timeStamp: number;\n  clientX: number;\n  clientY: number;\n}\n\n/** @internal */\nexport function resetTimelineTapState() {\n  globalTapState.time = 0;\n  globalTapState.x = 0;\n  globalTapState.y = 0;\n}\n\n/** @internal */\nexport function consumeTimelineDoubleTap(event: TimelineTapEvent) {\n  const dx = event.clientX - globalTapState.x;\n  const dy = event.clientY - globalTapState.y;\n  const distance = Math.sqrt(dx * dx + dy * dy);\n  const isDoubleTap =\n    event.timeStamp - globalTapState.time < TIMELINE_DOUBLE_TAP_DELAY_MS &&\n    distance < TIMELINE_DOUBLE_TAP_DISTANCE_PX;\n\n  if (isDoubleTap) {\n    resetTimelineTapState();\n    return true;\n  }\n\n  globalTapState.time = event.timeStamp;\n  globalTapState.x = event.clientX;\n  globalTapState.y = event.clientY;\n  return false;\n}\n"],"mappings":";;;;;;AAKA,MAAa,iBAAiB;CAC5B,MAAM;CACN,GAAG;CACH,GAAG;AACL;AAEA,MAAM,+BAA+B;AACrC,MAAM,kCAAkC;;AASxC,SAAgB,wBAAwB;CACtC,eAAe,OAAO;CACtB,eAAe,IAAI;CACnB,eAAe,IAAI;AACrB;;AAGA,SAAgB,yBAAyB,OAAyB;CAChE,MAAM,KAAK,MAAM,UAAU,eAAe;CAC1C,MAAM,KAAK,MAAM,UAAU,eAAe;CAC1C,MAAM,WAAW,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;CAK5C,IAHE,MAAM,YAAY,eAAe,OAAO,gCACxC,WAAW,iCAEI;EACf,sBAAsB;EACtB,OAAO;CACT;CAEA,eAAe,OAAO,MAAM;CAC5B,eAAe,IAAI,MAAM;CACzB,eAAe,IAAI,MAAM;CACzB,OAAO;AACT"}