From 1bfa66e1c99121f78cc2f8e758f71aa2bded4ed6 Mon Sep 17 00:00:00 2001
From: thepaperpilot <thepaperpilot@gmail.com>
Date: Wed, 15 Feb 2023 14:57:22 -0600
Subject: [PATCH] Add mouse/touch events to more onClicks

---
 src/data/common.tsx         | 6 +++---
 src/features/grids/grid.ts  | 4 ++--
 src/features/repeatable.tsx | 6 +++---
 src/features/trees/tree.ts  | 4 ++--
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/data/common.tsx b/src/data/common.tsx
index 3f68007..638bc7d 100644
--- a/src/data/common.tsx
+++ b/src/data/common.tsx
@@ -73,7 +73,7 @@ export type ResetButton<T extends ResetButtonOptions> = Replace<
         display: GetComputableTypeWithDefault<T["display"], Ref<JSX.Element>>;
         canClick: GetComputableTypeWithDefault<T["canClick"], Ref<boolean>>;
         minimumGain: GetComputableTypeWithDefault<T["minimumGain"], 1>;
-        onClick: VoidFunction;
+        onClick: (event?: MouseEvent | TouchEvent) => void;
     }
 >;
 
@@ -153,7 +153,7 @@ export function createResetButton<T extends ClickableOptions & ResetButtonOption
         }
 
         const onClick = resetButton.onClick;
-        resetButton.onClick = function () {
+        resetButton.onClick = function (event?: MouseEvent | TouchEvent) {
             if (unref(resetButton.canClick) === false) {
                 return;
             }
@@ -162,7 +162,7 @@ export function createResetButton<T extends ClickableOptions & ResetButtonOption
             if (resetButton.resetTime) {
                 resetButton.resetTime.value = resetButton.resetTime[DefaultValue];
             }
-            onClick?.();
+            onClick?.(event);
         };
 
         return resetButton;
diff --git a/src/features/grids/grid.ts b/src/features/grids/grid.ts
index 05890a7..2804e80 100644
--- a/src/features/grids/grid.ts
+++ b/src/features/grids/grid.ts
@@ -277,9 +277,9 @@ export function createGrid<T extends GridOptions>(
 
         if (grid.onClick) {
             const onClick = grid.onClick.bind(grid);
-            grid.onClick = function (id, state) {
+            grid.onClick = function (id, state, e) {
                 if (unref((grid as GenericGrid).cells[id].canClick)) {
-                    onClick(id, state);
+                    onClick(id, state, e);
                 }
             };
         }
diff --git a/src/features/repeatable.tsx b/src/features/repeatable.tsx
index f40f61c..8bceaf6 100644
--- a/src/features/repeatable.tsx
+++ b/src/features/repeatable.tsx
@@ -79,7 +79,7 @@ export interface BaseRepeatable {
     /** Whether or not this repeatable can be clicked. */
     canClick: ProcessedComputable<boolean>;
     /** A function that gets called when this repeatable is clicked. */
-    onClick: VoidFunction;
+    onClick: (event?: MouseEvent | TouchEvent) => void;
     /** A symbol that helps identify features of the same type. */
     type: typeof RepeatableType;
     /** The Vue component used to render this feature. */
@@ -172,7 +172,7 @@ export function createRepeatable<T extends RepeatableOptions>(
         });
         repeatable.canClick = computed(() => requirementsMet(repeatable.requirements));
         const onClick = repeatable.onClick;
-        repeatable.onClick = function (this: GenericRepeatable) {
+        repeatable.onClick = function (this: GenericRepeatable, event?: MouseEvent | TouchEvent) {
             const genericRepeatable = repeatable as GenericRepeatable;
             if (!unref(genericRepeatable.canClick)) {
                 return;
@@ -184,7 +184,7 @@ export function createRepeatable<T extends RepeatableOptions>(
                     : 1
             );
             genericRepeatable.amount.value = Decimal.add(genericRepeatable.amount.value, 1);
-            onClick?.();
+            onClick?.(event);
         };
         processComputable(repeatable as T, "display");
         const display = repeatable.display;
diff --git a/src/features/trees/tree.ts b/src/features/trees/tree.ts
index 0b36f74..99c759a 100644
--- a/src/features/trees/tree.ts
+++ b/src/features/trees/tree.ts
@@ -87,9 +87,9 @@ export function createTreeNode<T extends TreeNodeOptions>(
 
         if (treeNode.onClick) {
             const onClick = treeNode.onClick.bind(treeNode);
-            treeNode.onClick = function () {
+            treeNode.onClick = function (e) {
                 if (unref(treeNode.canClick) !== false) {
-                    onClick();
+                    onClick(e);
                 }
             };
         }