From e76e122e43039755a22729c10dd32219b7721202 Mon Sep 17 00:00:00 2001 From: oliver Date: Fri, 23 Jan 2026 13:29:53 +0100 Subject: [PATCH] feat: make touch controller threshold configurable Add threshold prop to tg-touch-controller with a lower default value (20px instead of 50px) for more precise control. This allows users to configure the minimum swipe distance based on their needs. Co-Authored-By: Claude Opus 4.5 --- src/components.d.ts | 10 ++++++++++ src/components/engine/tg-touch-controller/readme.md | 7 +++++++ .../engine/tg-touch-controller/tg-touch-controller.tsx | 9 +++++++-- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/components.d.ts b/src/components.d.ts index cdf967c..cd81edd 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -327,6 +327,11 @@ export namespace Components { "width": number; } interface TgTouchController { + /** + * Minimum distance in pixels required to trigger a swipe gesture. Lower values make the controller more sensitive to small movements. + * @default 20 + */ + "threshold": number; } } export interface ExampleEntityPlayerCustomEvent extends CustomEvent { @@ -906,6 +911,11 @@ declare namespace LocalJSX { "onSwipeLeft"?: (event: TgTouchControllerCustomEvent) => void; "onSwipeRight"?: (event: TgTouchControllerCustomEvent) => void; "onSwipeUp"?: (event: TgTouchControllerCustomEvent) => void; + /** + * Minimum distance in pixels required to trigger a swipe gesture. Lower values make the controller more sensitive to small movements. + * @default 20 + */ + "threshold"?: number; } interface IntrinsicElements { "example-animator": ExampleAnimator; diff --git a/src/components/engine/tg-touch-controller/readme.md b/src/components/engine/tg-touch-controller/readme.md index 84063ec..f91f26a 100644 --- a/src/components/engine/tg-touch-controller/readme.md +++ b/src/components/engine/tg-touch-controller/readme.md @@ -5,6 +5,13 @@ +## Properties + +| Property | Attribute | Description | Type | Default | +| ----------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | +| `threshold` | `threshold` | Minimum distance in pixels required to trigger a swipe gesture. Lower values make the controller more sensitive to small movements. | `number` | `20` | + + ## Events | Event | Description | Type | diff --git a/src/components/engine/tg-touch-controller/tg-touch-controller.tsx b/src/components/engine/tg-touch-controller/tg-touch-controller.tsx index d5aaef0..c9ed836 100644 --- a/src/components/engine/tg-touch-controller/tg-touch-controller.tsx +++ b/src/components/engine/tg-touch-controller/tg-touch-controller.tsx @@ -1,4 +1,4 @@ -import { Component, EventEmitter,Host, h,Event,Element,ComponentInterface } from '@stencil/core'; +import { Component, EventEmitter, Host, h, Event, Element, ComponentInterface, Prop } from '@stencil/core'; @Component({ tag: 'tg-touch-controller', @@ -8,7 +8,12 @@ import { Component, EventEmitter,Host, h,Event,Element,ComponentInterface } from export class TgTouchController implements ComponentInterface { private startX: number = 0; private startY: number = 0; - private threshold: number = 50; // Mindestdistanz, um eine Geste als valide zu betrachten + + /** + * Minimum distance in pixels required to trigger a swipe gesture. + * Lower values make the controller more sensitive to small movements. + */ + @Prop() threshold: number = 20; @Element() el!: HTMLTgTouchControllerElement;