54 lines
1.0 KiB
TypeScript
54 lines
1.0 KiB
TypeScript
// selectable interface
|
|
export interface Selectable {
|
|
getId(): string;
|
|
select(): void;
|
|
deselect(): void;
|
|
isSelected(): boolean;
|
|
getRootType(): string;
|
|
getCurrentType(): string;
|
|
}
|
|
|
|
// Define a Region interface for UI representation
|
|
export interface RegionUI {
|
|
id: string;
|
|
trackId: string;
|
|
trackIndex: number;
|
|
barNumber: number;
|
|
length: number;
|
|
name: string;
|
|
}
|
|
|
|
export interface RegionPreviewContentStyle {
|
|
left: string;
|
|
width: string;
|
|
}
|
|
|
|
export interface RegionClickOptions {
|
|
shiftKey: boolean;
|
|
metaKey: boolean;
|
|
ctrlKey: boolean;
|
|
}
|
|
|
|
// Define resize action types
|
|
export type ResizeAction = 'none' | 'start' | 'end';
|
|
|
|
// Define region resize state
|
|
export interface RegionResizeState {
|
|
regionId: string;
|
|
isResizing: boolean;
|
|
resizeAction: ResizeAction;
|
|
initialX: number;
|
|
initialBarNumber: number;
|
|
initialLength: number;
|
|
}
|
|
|
|
// Define region drag state
|
|
export interface RegionDragState {
|
|
regionId: string;
|
|
isDragging: boolean;
|
|
initialX: number;
|
|
initialY: number;
|
|
initialBarNumber: number;
|
|
initialTrackIndex: number;
|
|
}
|