File size: 1,367 Bytes
eddc354
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
export type ElementKind = "ring" | "arc";

export type TattingElement = {
  id: string;
  kind: ElementKind;
  picots: number;
  radius: number;
  x: number;
  y: number;
  rotation: number;
  color: string;
  mirrored: boolean;
};

export const GRID = 10;

export const snap = (v: number) => Math.round(v / GRID) * GRID;

export const PALETTE: { name: string; value: string }[] = [
  { name: "Gold", value: "#c9962b" },
  { name: "Silver", value: "#9aa3ad" },
  { name: "Purple", value: "#6b4a8f" },
  { name: "Rose", value: "#c26a76" },
  { name: "Sage", value: "#6f8f6a" },
  { name: "Indigo", value: "#3f5288" },
  { name: "Copper", value: "#b06a3b" },
  { name: "Ink", value: "#2b2b2f" },
  { name: "Ivory", value: "#e8dfcd" },
  { name: "Teal", value: "#2f7d7a" },
];

export const LIBRARY: {
  label: string;
  kind: ElementKind;
  picots: number;
  radius: number;
}[] = [
  { label: "Ring 4", kind: "ring", picots: 4, radius: 30 },
  { label: "Ring 6", kind: "ring", picots: 6, radius: 34 },
  { label: "Ring 8", kind: "ring", picots: 8, radius: 38 },
  { label: "Ring 12", kind: "ring", picots: 12, radius: 44 },
  { label: "Arc 3", kind: "arc", picots: 3, radius: 40 },
  { label: "Arc 5", kind: "arc", picots: 5, radius: 50 },
  { label: "Arc 7", kind: "arc", picots: 7, radius: 60 },
];

export const uid = () => Math.random().toString(36).slice(2, 10);