Bin
2025-12-16 9e0b2ba2c317b1a86212f24cbae3195ad1f3dbfa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/**
 * Constants for KonvaVector component
 *
 * This file contains all hardcoded values used throughout the KonvaVector component
 * to ensure consistency and maintainability.
 */
 
// Instance ID generation
export const INSTANCE_ID_PREFIX = "konva-vector-";
export const INSTANCE_ID_LENGTH = 9;
 
// Default transform values
export const DEFAULT_TRANSFORM = {
  zoom: 1,
  offsetX: 0,
  offsetY: 0,
} as const;
 
export const DEFAULT_FIT_SCALE = 1;
 
// Default transformer state
export const DEFAULT_TRANSFORMER_STATE = {
  rotation: 0,
  scaleX: 1,
  scaleY: 1,
  centerX: 0,
  centerY: 0,
} as const;
 
// Default styling colors
export const DEFAULT_STROKE_COLOR = "#3b82f6";
export const DEFAULT_FILL_COLOR = "rgba(239, 68, 68, 0.3)";
 
// Default point styling
export const DEFAULT_POINT_FILL = "#ffffff";
export const DEFAULT_POINT_STROKE = "#3b82f6";
export const DEFAULT_POINT_STROKE_SELECTED = "#ffffff";
export const DEFAULT_POINT_STROKE_WIDTH = 2;
 
// Default point radius values
export const DEFAULT_POINT_RADIUS = {
  enabled: 8,
  disabled: 3,
} as const;
 
// Keypoint annotation point radius values
export const KEYPOINT_POINT_RADIUS = {
  enabled: 6,
  disabled: 4,
} as const;
 
// Hit detection radii (in pixels)
export const HIT_RADIUS = {
  CONTROL_POINT: 6,
  SELECTION: 20, // Increased from 5 to 20 to make points easier to click
  SEGMENT: 8,
} as const;
 
// Timing constants
export const TRANSFORMER_SETUP_DELAY = 0;
export const TRANSFORMER_CLEAR_DELAY = 10;
 
// Point count constraints
export const MIN_POINTS_FOR_CLOSING = 2;
export const MIN_POINTS_FOR_BEZIER_CLOSING = 2;
 
// Invisible shape opacity for mouse event capture
export const INVISIBLE_SHAPE_OPACITY = "rgba(255,255,255,0.001)";
 
// Math constants
export const DEGREES_TO_RADIANS = Math.PI / 180;
 
// Example coordinates for documentation
export const EXAMPLE_COORDINATES = {
  BASIC_PATH: [
    [100, 100],
    [200, 150],
    [300, 100],
  ],
  SIMPLE_PATH: [
    [0, 0],
    [100, 50],
    [200, 0],
  ],
} as const;
 
// Example point count constraints
export const EXAMPLE_POINT_CONSTRAINTS = {
  MIN_POINTS: 3,
  MAX_POINTS: 10,
} as const;
 
// Default scale values
export const DEFAULT_SCALE = 1;
 
// Default offset values
export const DEFAULT_OFFSET = 0;
 
// Default callback time
export const DEFAULT_CALLBACK_TIME = 0;
 
// Array index constants
export const ARRAY_INDEX = {
  FIRST: 0,
  LAST_OFFSET: 1,
} as const;
 
// Selection size constants
export const SELECTION_SIZE = {
  MULTI_SELECTION_MIN: 1,
  TRANSFORMER_MIN: 2,
} as const;
 
// Center calculation divisor
export const CENTER_CALCULATION_DIVISOR = 2;
 
// Control point diamond ratios
export const CONTROL_POINT_DIAMOND = {
  WIDTH_HEIGHT_MULTIPLIER: 1.6,
  OFFSET_MULTIPLIER: 0.8,
  ROTATION: 45,
} as const;
 
// Control point styling
export const CONTROL_POINT_STYLING = {
  LINE_STROKE: "#3b82f6",
  LINE_STROKE_WIDTH: 1,
  DIAMOND_FILL: "#ffffff",
  DIAMOND_STROKE: "#3b82f6",
  DIAMOND_STROKE_WIDTH: 2,
  CONTROL_POINT_2_OPACITY: 0.9,
} as const;
 
// Connection line styling
export const CONNECTION_LINE_STYLING = {
  STROKE: "#3b82f6",
  STROKE_WIDTH: 2,
  TENSION: 0,
  LINE_CAP: "round" as const,
  LINE_JOIN: "round" as const,
} as const;
 
// Ghost line styling and behavior
export const GHOST_LINE_STYLING = {
  STROKE_WIDTH: 2,
  DASH: [4, 4] as const,
  OPACITY: 0.6,
  CLOSING_INDICATOR_STROKE: "#10b981",
  CLOSING_INDICATOR_STROKE_WIDTH: 3,
  CLOSING_INDICATOR_DASH: [6, 6] as const,
  CLOSING_INDICATOR_OPACITY: 0.8,
  CLOSE_RADIUS: 15,
  BEZIER_CONTROL_MULTIPLIER: 0.3,
} as const;