summaryrefslogtreecommitdiff
path: root/apps/web/src/components/editor/timeline-canvas/timeline-canvas-ruler-wrapper.tsx
diff options
context:
space:
mode:
authorgantiro <gantiro396@gmail.com>2025-07-15 22:51:38 +0700
committergantiro <gantiro396@gmail.com>2025-07-15 22:51:38 +0700
commitb266678fe4bb8c4053688fd037693fa2f930ac14 (patch)
tree89a8c3b7a151a42fecfc480b440c55fce79252da /apps/web/src/components/editor/timeline-canvas/timeline-canvas-ruler-wrapper.tsx
parent1f95bb98d6108a5fa059e0f9a08c98e5bdb72c08 (diff)
downloadopencut-b266678fe4bb8c4053688fd037693fa2f930ac14.tar.gz
Optimize timeline performance
Diffstat (limited to 'apps/web/src/components/editor/timeline-canvas/timeline-canvas-ruler-wrapper.tsx')
-rw-r--r--apps/web/src/components/editor/timeline-canvas/timeline-canvas-ruler-wrapper.tsx24
1 files changed, 24 insertions, 0 deletions
diff --git a/apps/web/src/components/editor/timeline-canvas/timeline-canvas-ruler-wrapper.tsx b/apps/web/src/components/editor/timeline-canvas/timeline-canvas-ruler-wrapper.tsx
new file mode 100644
index 00000000..c0efc19e
--- /dev/null
+++ b/apps/web/src/components/editor/timeline-canvas/timeline-canvas-ruler-wrapper.tsx
@@ -0,0 +1,24 @@
+import { TimelineCanvasRulerWrapperProps } from "@/types/timeline";
+import React, { forwardRef } from "react";
+
+/**
+ * Wrapper div around the canvas-based timeline ruler.
+ * Captures mouse events for scrubbing and ensures pointer events are properly enabled.
+ */
+const TimelineCanvasRulerWrapper = forwardRef<
+ HTMLDivElement,
+ TimelineCanvasRulerWrapperProps
+>(({ children, onMouseDown, className = "" }, ref) => {
+ return (
+ <div
+ ref={ref}
+ className={`relative overflow-hidden h-5 w-full select-none cursor-pointer ${className}`}
+ onMouseDown={onMouseDown}
+ data-ruler-wrapper
+ >
+ {children}
+ </div>
+ );
+});
+
+export default TimelineCanvasRulerWrapper;