mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
disable cursor rules
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
alwaysApply: true
|
alwaysApply: false
|
||||||
---
|
---
|
||||||
|
|
||||||
# video-editor-oss Codebase Index
|
# video-editor-oss Codebase Index
|
||||||
@@ -11,6 +11,7 @@ Updated in real-time by Twiggy. Use this to discover existing utilities and avoi
|
|||||||
## How to Use
|
## How to Use
|
||||||
|
|
||||||
When implementing new features:
|
When implementing new features:
|
||||||
|
|
||||||
1. Check if similar functionality already exists
|
1. Check if similar functionality already exists
|
||||||
2. Reuse existing types and utilities
|
2. Reuse existing types and utilities
|
||||||
3. Understand the API surface of your codebase
|
3. Understand the API surface of your codebase
|
||||||
@@ -213,9 +214,13 @@ use-sound-search.ts
|
|||||||
|
|
||||||
use-transform-handles.ts
|
use-transform-handles.ts
|
||||||
export function useTransformHandles({
|
export function useTransformHandles({
|
||||||
|
|
||||||
canvasRef,
|
canvasRef,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
canvasRef: React.RefObject<HTMLCanvasElement | null>;
|
canvasRef: React.RefObject<HTMLCanvasElement | null>;
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
## apps/web/src/hooks/actions
|
## apps/web/src/hooks/actions
|
||||||
@@ -254,10 +259,15 @@ use-bookmark-drag.ts
|
|||||||
currentTime: number
|
currentTime: number
|
||||||
}
|
}
|
||||||
export function useBookmarkDrag({
|
export function useBookmarkDrag({
|
||||||
|
|
||||||
zoomLevel,
|
zoomLevel,
|
||||||
|
|
||||||
scrollRef,
|
scrollRef,
|
||||||
|
|
||||||
snappingEnabled,
|
snappingEnabled,
|
||||||
|
|
||||||
onSnapPointChange,
|
onSnapPointChange,
|
||||||
|
|
||||||
}: UseBookmarkDragProps)
|
}: UseBookmarkDragProps)
|
||||||
|
|
||||||
use-edge-auto-scroll.ts
|
use-edge-auto-scroll.ts
|
||||||
@@ -929,57 +939,103 @@ element-bounds.ts
|
|||||||
|
|
||||||
hit-test.ts
|
hit-test.ts
|
||||||
export function hitTest({
|
export function hitTest({
|
||||||
|
|
||||||
canvasX,
|
canvasX,
|
||||||
|
|
||||||
canvasY,
|
canvasY,
|
||||||
|
|
||||||
elementsWithBounds,
|
elementsWithBounds,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
canvasX: number;
|
canvasX: number;
|
||||||
|
|
||||||
canvasY: number;
|
canvasY: number;
|
||||||
|
|
||||||
elementsWithBounds: ElementWithBounds[];
|
elementsWithBounds: ElementWithBounds[];
|
||||||
|
|
||||||
}): ElementWithBounds | null
|
}): ElementWithBounds | null
|
||||||
|
|
||||||
preview-coords.ts
|
preview-coords.ts
|
||||||
export function screenToCanvas({
|
export function screenToCanvas({
|
||||||
|
|
||||||
clientX,
|
clientX,
|
||||||
|
|
||||||
clientY,
|
clientY,
|
||||||
|
|
||||||
canvas,
|
canvas,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
clientX: number;
|
clientX: number;
|
||||||
|
|
||||||
clientY: number;
|
clientY: number;
|
||||||
|
|
||||||
canvas: HTMLCanvasElement;
|
canvas: HTMLCanvasElement;
|
||||||
|
|
||||||
}): { x: number; y: number }
|
}): { x: number; y: number }
|
||||||
export function canvasToOverlay({
|
export function canvasToOverlay({
|
||||||
|
|
||||||
canvasX,
|
canvasX,
|
||||||
|
|
||||||
canvasY,
|
canvasY,
|
||||||
|
|
||||||
canvasRect,
|
canvasRect,
|
||||||
|
|
||||||
containerRect,
|
containerRect,
|
||||||
|
|
||||||
canvasSize,
|
canvasSize,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
canvasX: number;
|
canvasX: number;
|
||||||
|
|
||||||
canvasY: number;
|
canvasY: number;
|
||||||
|
|
||||||
canvasRect: DOMRect;
|
canvasRect: DOMRect;
|
||||||
|
|
||||||
containerRect: DOMRect;
|
containerRect: DOMRect;
|
||||||
|
|
||||||
canvasSize: { width: number; height: number };
|
canvasSize: { width: number; height: number };
|
||||||
|
|
||||||
}): { x: number; y: number }
|
}): { x: number; y: number }
|
||||||
export function positionToOverlay({
|
export function positionToOverlay({
|
||||||
|
|
||||||
positionX,
|
positionX,
|
||||||
|
|
||||||
positionY,
|
positionY,
|
||||||
|
|
||||||
canvasRect,
|
canvasRect,
|
||||||
|
|
||||||
containerRect,
|
containerRect,
|
||||||
|
|
||||||
canvasSize,
|
canvasSize,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
positionX: number;
|
positionX: number;
|
||||||
|
|
||||||
positionY: number;
|
positionY: number;
|
||||||
|
|
||||||
canvasRect: DOMRect;
|
canvasRect: DOMRect;
|
||||||
|
|
||||||
containerRect: DOMRect;
|
containerRect: DOMRect;
|
||||||
|
|
||||||
canvasSize: { width: number; height: number };
|
canvasSize: { width: number; height: number };
|
||||||
|
|
||||||
}): { x: number; y: number }
|
}): { x: number; y: number }
|
||||||
export function getDisplayScale({
|
export function getDisplayScale({
|
||||||
|
|
||||||
canvasRect,
|
canvasRect,
|
||||||
|
|
||||||
canvasSize,
|
canvasSize,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
canvasRect: DOMRect;
|
canvasRect: DOMRect;
|
||||||
|
|
||||||
canvasSize: { width: number; height: number };
|
canvasSize: { width: number; height: number };
|
||||||
|
|
||||||
}): { x: number; y: number }
|
}): { x: number; y: number }
|
||||||
|
|
||||||
preview-snap.ts
|
preview-snap.ts
|
||||||
@@ -993,39 +1049,63 @@ preview-snap.ts
|
|||||||
activeLines: SnapLine[]
|
activeLines: SnapLine[]
|
||||||
}
|
}
|
||||||
export function snapPosition({
|
export function snapPosition({
|
||||||
|
|
||||||
proposedPosition,
|
proposedPosition,
|
||||||
|
|
||||||
canvasSize,
|
canvasSize,
|
||||||
|
|
||||||
elementSize,
|
elementSize,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
proposedPosition: { x: number; y: number };
|
proposedPosition: { x: number; y: number };
|
||||||
|
|
||||||
canvasSize: { width: number; height: number };
|
canvasSize: { width: number; height: number };
|
||||||
|
|
||||||
elementSize: { width: number; height: number };
|
elementSize: { width: number; height: number };
|
||||||
|
|
||||||
}): SnapResult
|
}): SnapResult
|
||||||
export interface ScaleSnapResult {
|
export interface ScaleSnapResult {
|
||||||
snappedScale: number
|
snappedScale: number
|
||||||
activeLines: SnapLine[]
|
activeLines: SnapLine[]
|
||||||
}
|
}
|
||||||
export function snapScale({
|
export function snapScale({
|
||||||
|
|
||||||
proposedScale,
|
proposedScale,
|
||||||
|
|
||||||
position,
|
position,
|
||||||
|
|
||||||
baseWidth,
|
baseWidth,
|
||||||
|
|
||||||
baseHeight,
|
baseHeight,
|
||||||
|
|
||||||
canvasSize,
|
canvasSize,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
proposedScale: number;
|
proposedScale: number;
|
||||||
|
|
||||||
position: { x: number; y: number };
|
position: { x: number; y: number };
|
||||||
|
|
||||||
baseWidth: number;
|
baseWidth: number;
|
||||||
|
|
||||||
baseHeight: number;
|
baseHeight: number;
|
||||||
|
|
||||||
canvasSize: { width: number; height: number };
|
canvasSize: { width: number; height: number };
|
||||||
|
|
||||||
}): ScaleSnapResult
|
}): ScaleSnapResult
|
||||||
export interface RotationSnapResult {
|
export interface RotationSnapResult {
|
||||||
snappedRotation: number
|
snappedRotation: number
|
||||||
isSnapped: boolean
|
isSnapped: boolean
|
||||||
}
|
}
|
||||||
export function snapRotation({
|
export function snapRotation({
|
||||||
|
|
||||||
proposedRotation,
|
proposedRotation,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
proposedRotation: number;
|
proposedRotation: number;
|
||||||
|
|
||||||
}): RotationSnapResult
|
}): RotationSnapResult
|
||||||
|
|
||||||
## apps/web/src/lib/stickers
|
## apps/web/src/lib/stickers
|
||||||
@@ -1181,15 +1261,25 @@ bookmarks.ts
|
|||||||
|
|
||||||
drag-utils.ts
|
drag-utils.ts
|
||||||
export function getMouseTimeFromClientX({
|
export function getMouseTimeFromClientX({
|
||||||
|
|
||||||
clientX,
|
clientX,
|
||||||
|
|
||||||
containerRect,
|
containerRect,
|
||||||
|
|
||||||
zoomLevel,
|
zoomLevel,
|
||||||
|
|
||||||
scrollLeft,
|
scrollLeft,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
clientX: number;
|
clientX: number;
|
||||||
|
|
||||||
containerRect: DOMRect;
|
containerRect: DOMRect;
|
||||||
|
|
||||||
zoomLevel: number;
|
zoomLevel: number;
|
||||||
|
|
||||||
scrollLeft: number;
|
scrollLeft: number;
|
||||||
|
|
||||||
}): number
|
}): number
|
||||||
|
|
||||||
drop-utils.ts
|
drop-utils.ts
|
||||||
@@ -1955,11 +2045,17 @@ project.ts
|
|||||||
|
|
||||||
rendering.ts
|
rendering.ts
|
||||||
export type BlendMode = | "normal"
|
export type BlendMode = | "normal"
|
||||||
|
|
||||||
| "darken"
|
| "darken"
|
||||||
|
|
||||||
| "multiply"
|
| "multiply"
|
||||||
|
|
||||||
| "color-burn"
|
| "color-burn"
|
||||||
|
|
||||||
| "lighten"
|
| "lighten"
|
||||||
|
|
||||||
| "screen"
|
| "screen"
|
||||||
|
|
||||||
| "plus-ligh...
|
| "plus-ligh...
|
||||||
|
|
||||||
sounds.ts
|
sounds.ts
|
||||||
@@ -2259,34 +2355,58 @@ color.ts
|
|||||||
export type ColorFormat = "hex" | "rgb" | "hsl" | "hsv"
|
export type ColorFormat = "hex" | "rgb" | "hsl" | "hsv"
|
||||||
export function hexToHsv({ hex }: { hex: string }): [number, number, number]
|
export function hexToHsv({ hex }: { hex: string }): [number, number, number]
|
||||||
export function hsvToHex({
|
export function hsvToHex({
|
||||||
|
|
||||||
h,
|
h,
|
||||||
|
|
||||||
s,
|
s,
|
||||||
|
|
||||||
v,
|
v,
|
||||||
|
|
||||||
}: { h: number; s: number; v: number }): string
|
}: { h: number; s: number; v: number }): string
|
||||||
export function parseHexAlpha({ hex }: { hex: string }): {
|
export function parseHexAlpha({ hex }: { hex: string }): {
|
||||||
|
|
||||||
rgb: string;
|
rgb: string;
|
||||||
|
|
||||||
alpha: number;
|
alpha: number;
|
||||||
|
|
||||||
}
|
}
|
||||||
export function appendAlpha({
|
export function appendAlpha({
|
||||||
|
|
||||||
rgbHex,
|
rgbHex,
|
||||||
|
|
||||||
alpha,
|
alpha,
|
||||||
|
|
||||||
}: { rgbHex: string; alpha: number }): string
|
}: { rgbHex: string; alpha: number }): string
|
||||||
export function extractColorFromText({
|
export function extractColorFromText({
|
||||||
|
|
||||||
text,
|
text,
|
||||||
|
|
||||||
}: { text: string }): string | null
|
}: { text: string }): string | null
|
||||||
export function formatColorValue({
|
export function formatColorValue({
|
||||||
|
|
||||||
hex,
|
hex,
|
||||||
|
|
||||||
format,
|
format,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
hex: string;
|
hex: string;
|
||||||
|
|
||||||
format: ColorFormat;
|
format: ColorFormat;
|
||||||
|
|
||||||
}): string
|
}): string
|
||||||
export function parseColorInput({
|
export function parseColorInput({
|
||||||
|
|
||||||
input,
|
input,
|
||||||
|
|
||||||
format,
|
format,
|
||||||
|
|
||||||
}: {
|
}: {
|
||||||
|
|
||||||
input: string;
|
input: string;
|
||||||
|
|
||||||
format: ColorFormat;
|
format: ColorFormat;
|
||||||
|
|
||||||
}): string | null
|
}): string | null
|
||||||
|
|
||||||
date.ts
|
date.ts
|
||||||
@@ -2392,4 +2512,4 @@ ui.tsx
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Generated and maintained by [Twiggy](https://github.com/twiggy-tools/Twiggy)*
|
_Generated and maintained by [Twiggy](https://github.com/twiggy-tools/Twiggy)_
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
alwaysApply: true
|
alwaysApply: false
|
||||||
---
|
---
|
||||||
|
|
||||||
# Comment Guidelines
|
# Comment Guidelines
|
||||||
|
|
||||||
## Good Comments (Human-style)
|
## Good Comments (Human-style)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
alwaysApply: true
|
alwaysApply: false
|
||||||
---
|
---
|
||||||
|
|
||||||
# Handling Uncertainty
|
# Handling Uncertainty
|
||||||
|
|
||||||
## Principle
|
## Principle
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
alwaysApply: true
|
alwaysApply: false
|
||||||
---
|
---
|
||||||
|
|
||||||
# Readability First
|
# Readability First
|
||||||
|
|
||||||
Optimize code for AI agents to understand and modify.
|
Optimize code for AI agents to understand and modify.
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
alwaysApply: true
|
alwaysApply: false
|
||||||
---
|
---
|
||||||
|
|
||||||
# Separation of Concerns
|
# Separation of Concerns
|
||||||
|
|
||||||
## Core Principle
|
## Core Principle
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
---
|
---
|
||||||
description: Ultracite Rules - AI-Ready Formatter and Linter
|
alwaysApply: false
|
||||||
globs: "**/*.{ts,tsx,js,jsx}"
|
|
||||||
alwaysApply: true
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project Context
|
# Project Context
|
||||||
|
|
||||||
Ultracite enforces strict type safety, accessibility standards, and consistent code quality for JavaScript/TypeScript projects using Biome's formatter.
|
Ultracite enforces strict type safety, accessibility standards, and consistent code quality for JavaScript/TypeScript projects using Biome's formatter.
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
---
|
---
|
||||||
alwaysApply: true
|
alwaysApply: false
|
||||||
---
|
---
|
||||||
|
|
||||||
# Scannable Code Guidelines/Separating Concerns.
|
# Scannable Code Guidelines/Separating Concerns.
|
||||||
|
|
||||||
## Core Principle
|
## Core Principle
|
||||||
|
|||||||
Reference in New Issue
Block a user