@labmgm/patterns 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -0
- package/dist/generator-URuC3uDY.d.cts +179 -0
- package/dist/generator-URuC3uDY.d.ts +179 -0
- package/dist/generator.cjs +826 -0
- package/dist/generator.cjs.map +1 -0
- package/dist/generator.d.cts +1 -0
- package/dist/generator.d.ts +1 -0
- package/dist/generator.js +823 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.cjs +1003 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +119 -0
- package/dist/index.d.ts +119 -0
- package/dist/index.js +982 -0
- package/dist/index.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,826 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/palette.ts
|
|
4
|
+
var PALETTE = ["blue", "yellow", "red", "green", "white"];
|
|
5
|
+
var PALETTE_VAR = {
|
|
6
|
+
blue: "var(--brand-blue)",
|
|
7
|
+
yellow: "var(--brand-yellow)",
|
|
8
|
+
red: "var(--brand-red)",
|
|
9
|
+
green: "var(--brand-green)",
|
|
10
|
+
white: "var(--surface)"
|
|
11
|
+
};
|
|
12
|
+
var PALETTE_HEX = {
|
|
13
|
+
blue: "#3a6dc5",
|
|
14
|
+
yellow: "#f7bf33",
|
|
15
|
+
red: "#f94141",
|
|
16
|
+
green: "#0f8657",
|
|
17
|
+
white: "#ffffff"
|
|
18
|
+
};
|
|
19
|
+
function contrastShapeColor(bg) {
|
|
20
|
+
return bg === "white" ? "blue" : "white";
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// src/rng.ts
|
|
24
|
+
function mulberry32(seed) {
|
|
25
|
+
let a = seed >>> 0;
|
|
26
|
+
return function() {
|
|
27
|
+
a |= 0;
|
|
28
|
+
a = a + 1831565813 | 0;
|
|
29
|
+
let t = a;
|
|
30
|
+
t = Math.imul(t ^ t >>> 15, t | 1);
|
|
31
|
+
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
|
|
32
|
+
return ((t ^ t >>> 14) >>> 0) / 4294967296;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function pick(rng, items) {
|
|
36
|
+
return items[Math.floor(rng() * items.length)];
|
|
37
|
+
}
|
|
38
|
+
function shuffle(rng, items) {
|
|
39
|
+
for (let i = items.length - 1; i > 0; i--) {
|
|
40
|
+
const j = Math.floor(rng() * (i + 1));
|
|
41
|
+
[items[i], items[j]] = [items[j], items[i]];
|
|
42
|
+
}
|
|
43
|
+
return items;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/colour-graph.ts
|
|
47
|
+
var MAX_BACKTRACKS = 1e4;
|
|
48
|
+
function colourGrid({ rows, cols, seed }) {
|
|
49
|
+
const rng = mulberry32(seed);
|
|
50
|
+
const total = rows * cols;
|
|
51
|
+
const ids = Array.from({ length: total }, (_, i) => i);
|
|
52
|
+
const order = shuffle(rng, [...ids]);
|
|
53
|
+
const candidates = ids.map(() => shuffle(rng, [...PALETTE]));
|
|
54
|
+
const assignment = new Array(total).fill(void 0);
|
|
55
|
+
const tried = new Array(total).fill(0);
|
|
56
|
+
const neighbours = (idx) => {
|
|
57
|
+
const r = Math.floor(idx / cols);
|
|
58
|
+
const c = idx % cols;
|
|
59
|
+
const out2 = [];
|
|
60
|
+
if (r > 0) out2.push((r - 1) * cols + c);
|
|
61
|
+
if (r < rows - 1) out2.push((r + 1) * cols + c);
|
|
62
|
+
if (c > 0) out2.push(r * cols + (c - 1));
|
|
63
|
+
if (c < cols - 1) out2.push(r * cols + (c + 1));
|
|
64
|
+
return out2;
|
|
65
|
+
};
|
|
66
|
+
let cursor = 0;
|
|
67
|
+
let backtracks = 0;
|
|
68
|
+
while (cursor < order.length) {
|
|
69
|
+
const idx = order[cursor];
|
|
70
|
+
const cands = candidates[idx];
|
|
71
|
+
let placed = false;
|
|
72
|
+
while (tried[idx] < cands.length) {
|
|
73
|
+
const candidate = cands[tried[idx]];
|
|
74
|
+
tried[idx] = tried[idx] + 1;
|
|
75
|
+
const ok = neighbours(idx).every((n) => assignment[n] !== candidate);
|
|
76
|
+
if (ok) {
|
|
77
|
+
assignment[idx] = candidate;
|
|
78
|
+
placed = true;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (placed) {
|
|
83
|
+
cursor += 1;
|
|
84
|
+
} else {
|
|
85
|
+
tried[idx] = 0;
|
|
86
|
+
assignment[idx] = void 0;
|
|
87
|
+
cursor -= 1;
|
|
88
|
+
backtracks += 1;
|
|
89
|
+
if (cursor < 0 || backtracks > MAX_BACKTRACKS) {
|
|
90
|
+
throw new Error(
|
|
91
|
+
`colourGrid: could not satisfy adjacency constraint after ${MAX_BACKTRACKS} backtracks (rows=${rows}, cols=${cols}, seed=${seed}).`
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const out = [];
|
|
97
|
+
for (let i = 0; i < total; i++) {
|
|
98
|
+
out.push({
|
|
99
|
+
row: Math.floor(i / cols),
|
|
100
|
+
col: i % cols,
|
|
101
|
+
background: assignment[i]
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// src/shapes.ts
|
|
108
|
+
var SHAPES = [
|
|
109
|
+
"circle",
|
|
110
|
+
"circle-ring",
|
|
111
|
+
"square",
|
|
112
|
+
"square-inset",
|
|
113
|
+
"triangle",
|
|
114
|
+
"x",
|
|
115
|
+
"plus",
|
|
116
|
+
"quarter-disc",
|
|
117
|
+
"half-disc",
|
|
118
|
+
"flower",
|
|
119
|
+
"diamond"
|
|
120
|
+
];
|
|
121
|
+
function renderShape(name, args) {
|
|
122
|
+
const { size: s, color } = args;
|
|
123
|
+
const cx = s / 2;
|
|
124
|
+
const cy = s / 2;
|
|
125
|
+
const r = s * 0.4;
|
|
126
|
+
switch (name) {
|
|
127
|
+
case "circle":
|
|
128
|
+
return `<circle cx="${cx}" cy="${cy}" r="${r}" fill="${color}"/>`;
|
|
129
|
+
case "circle-ring": {
|
|
130
|
+
const sw = s * 0.08;
|
|
131
|
+
return `<circle cx="${cx}" cy="${cy}" r="${r - sw / 2}" fill="none" stroke="${color}" stroke-width="${sw}"/>`;
|
|
132
|
+
}
|
|
133
|
+
case "square": {
|
|
134
|
+
const side = s * 0.7;
|
|
135
|
+
const off = (s - side) / 2;
|
|
136
|
+
return `<rect x="${off}" y="${off}" width="${side}" height="${side}" fill="${color}"/>`;
|
|
137
|
+
}
|
|
138
|
+
case "square-inset": {
|
|
139
|
+
const outer = s * 0.7;
|
|
140
|
+
const outOff = (s - outer) / 2;
|
|
141
|
+
const inner = outer * 0.4;
|
|
142
|
+
const inOff = (s - inner) / 2;
|
|
143
|
+
const sw = s * 0.06;
|
|
144
|
+
return `<rect x="${outOff}" y="${outOff}" width="${outer}" height="${outer}" fill="none" stroke="${color}" stroke-width="${sw}"/><rect x="${inOff}" y="${inOff}" width="${inner}" height="${inner}" fill="${color}"/>`;
|
|
145
|
+
}
|
|
146
|
+
case "triangle": {
|
|
147
|
+
const h = s * 0.78;
|
|
148
|
+
const w = h * 1.155;
|
|
149
|
+
const x0 = (s - w) / 2;
|
|
150
|
+
const y0 = (s - h) / 2;
|
|
151
|
+
return `<path d="M ${x0 + w / 2} ${y0} L ${x0 + w} ${y0 + h} L ${x0} ${y0 + h} Z" fill="${color}"/>`;
|
|
152
|
+
}
|
|
153
|
+
case "x": {
|
|
154
|
+
const sw = s * 0.16;
|
|
155
|
+
const pad = s * 0.15;
|
|
156
|
+
return `<path d="M ${pad} ${pad} L ${s - pad} ${s - pad} M ${s - pad} ${pad} L ${pad} ${s - pad}" stroke="${color}" stroke-width="${sw}" stroke-linecap="round"/>`;
|
|
157
|
+
}
|
|
158
|
+
case "plus": {
|
|
159
|
+
const sw = s * 0.22;
|
|
160
|
+
const pad = s * 0.18;
|
|
161
|
+
return `<path d="M ${cx} ${pad} L ${cx} ${s - pad} M ${pad} ${cy} L ${s - pad} ${cy}" stroke="${color}" stroke-width="${sw}" stroke-linecap="round"/>`;
|
|
162
|
+
}
|
|
163
|
+
case "quarter-disc": {
|
|
164
|
+
return `<path d="M 0 0 L ${s} 0 A ${s} ${s} 0 0 1 0 ${s} Z" fill="${color}"/>`;
|
|
165
|
+
}
|
|
166
|
+
case "half-disc": {
|
|
167
|
+
return `<path d="M 0 ${cy} A ${cx} ${cy} 0 0 1 ${s} ${cy} L 0 ${cy} Z" fill="${color}"/>`;
|
|
168
|
+
}
|
|
169
|
+
case "flower": {
|
|
170
|
+
return [
|
|
171
|
+
`<path d="M 0 0 L ${cx} 0 A ${cx} ${cy} 0 0 1 0 ${cy} Z" fill="${color}"/>`,
|
|
172
|
+
`<path d="M ${cx} 0 L ${s} 0 L ${s} ${cy} A ${cx} ${cy} 0 0 0 ${cx} 0 Z" fill="${color}"/>`,
|
|
173
|
+
`<path d="M 0 ${cy} A ${cx} ${cy} 0 0 0 ${cx} ${s} L 0 ${s} Z" fill="${color}"/>`,
|
|
174
|
+
`<path d="M ${cx} ${s} A ${cx} ${cy} 0 0 0 ${s} ${cy} L ${s} ${s} Z" fill="${color}"/>`
|
|
175
|
+
].join("");
|
|
176
|
+
}
|
|
177
|
+
case "diamond": {
|
|
178
|
+
const inset = s * 0.15;
|
|
179
|
+
const p0 = `${cx},${inset}`;
|
|
180
|
+
const p1 = `${s - inset},${cy}`;
|
|
181
|
+
const p2 = `${cx},${s - inset}`;
|
|
182
|
+
const p3 = `${inset},${cy}`;
|
|
183
|
+
return `<polygon points="${p0} ${p1} ${p2} ${p3}" fill="${color}"/>`;
|
|
184
|
+
}
|
|
185
|
+
default:
|
|
186
|
+
return "";
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// src/tiles-catalog.ts
|
|
191
|
+
var TILE_VIEWBOX_SIZE = 100;
|
|
192
|
+
var TILES = [
|
|
193
|
+
{
|
|
194
|
+
"id": "p-1",
|
|
195
|
+
"background": "blue",
|
|
196
|
+
"shapeColor": "white",
|
|
197
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"id": "p-2",
|
|
201
|
+
"background": "blue",
|
|
202
|
+
"shapeColor": "white",
|
|
203
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "p-3",
|
|
207
|
+
"background": "blue",
|
|
208
|
+
"shapeColor": "white",
|
|
209
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"id": "p-4",
|
|
213
|
+
"background": "white",
|
|
214
|
+
"shapeColor": "blue",
|
|
215
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"id": "p-5",
|
|
219
|
+
"background": "white",
|
|
220
|
+
"shapeColor": "blue",
|
|
221
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"id": "p-6",
|
|
225
|
+
"background": "white",
|
|
226
|
+
"shapeColor": "blue",
|
|
227
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"id": "p-7",
|
|
231
|
+
"background": "blue",
|
|
232
|
+
"shapeColor": "white",
|
|
233
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"id": "p-8",
|
|
237
|
+
"background": "white",
|
|
238
|
+
"shapeColor": "blue",
|
|
239
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"id": "p-9",
|
|
243
|
+
"background": "white",
|
|
244
|
+
"shapeColor": "blue",
|
|
245
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"id": "p-10",
|
|
249
|
+
"background": "blue",
|
|
250
|
+
"shapeColor": "white",
|
|
251
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"id": "p-11",
|
|
255
|
+
"background": "yellow",
|
|
256
|
+
"shapeColor": "white",
|
|
257
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"id": "p-12",
|
|
261
|
+
"background": "yellow",
|
|
262
|
+
"shapeColor": "white",
|
|
263
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"id": "p-13",
|
|
267
|
+
"background": "yellow",
|
|
268
|
+
"shapeColor": "white",
|
|
269
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"id": "p-14",
|
|
273
|
+
"background": "white",
|
|
274
|
+
"shapeColor": "yellow",
|
|
275
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"id": "p-15",
|
|
279
|
+
"background": "white",
|
|
280
|
+
"shapeColor": "yellow",
|
|
281
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"id": "p-16",
|
|
285
|
+
"background": "white",
|
|
286
|
+
"shapeColor": "yellow",
|
|
287
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"id": "p-17",
|
|
291
|
+
"background": "yellow",
|
|
292
|
+
"shapeColor": "white",
|
|
293
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"id": "p-18",
|
|
297
|
+
"background": "white",
|
|
298
|
+
"shapeColor": "yellow",
|
|
299
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"id": "p-19",
|
|
303
|
+
"background": "white",
|
|
304
|
+
"shapeColor": "yellow",
|
|
305
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"id": "p-20",
|
|
309
|
+
"background": "yellow",
|
|
310
|
+
"shapeColor": "white",
|
|
311
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"id": "p-21",
|
|
315
|
+
"background": "red",
|
|
316
|
+
"shapeColor": "white",
|
|
317
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"id": "p-22",
|
|
321
|
+
"background": "red",
|
|
322
|
+
"shapeColor": "white",
|
|
323
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"id": "p-23",
|
|
327
|
+
"background": "red",
|
|
328
|
+
"shapeColor": "white",
|
|
329
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"id": "p-24",
|
|
333
|
+
"background": "white",
|
|
334
|
+
"shapeColor": "red",
|
|
335
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"id": "p-25",
|
|
339
|
+
"background": "white",
|
|
340
|
+
"shapeColor": "red",
|
|
341
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"id": "p-26",
|
|
345
|
+
"background": "white",
|
|
346
|
+
"shapeColor": "red",
|
|
347
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"id": "p-27",
|
|
351
|
+
"background": "red",
|
|
352
|
+
"shapeColor": "white",
|
|
353
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"id": "p-28",
|
|
357
|
+
"background": "white",
|
|
358
|
+
"shapeColor": "red",
|
|
359
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"id": "p-29",
|
|
363
|
+
"background": "white",
|
|
364
|
+
"shapeColor": "red",
|
|
365
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"id": "p-30",
|
|
369
|
+
"background": "red",
|
|
370
|
+
"shapeColor": "white",
|
|
371
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"id": "p-31",
|
|
375
|
+
"background": "green",
|
|
376
|
+
"shapeColor": "white",
|
|
377
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"id": "p-32",
|
|
381
|
+
"background": "green",
|
|
382
|
+
"shapeColor": "white",
|
|
383
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"id": "p-33",
|
|
387
|
+
"background": "green",
|
|
388
|
+
"shapeColor": "white",
|
|
389
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"id": "p-34",
|
|
393
|
+
"background": "white",
|
|
394
|
+
"shapeColor": "green",
|
|
395
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"id": "p-35",
|
|
399
|
+
"background": "white",
|
|
400
|
+
"shapeColor": "green",
|
|
401
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"id": "p-36",
|
|
405
|
+
"background": "white",
|
|
406
|
+
"shapeColor": "green",
|
|
407
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"id": "p-37",
|
|
411
|
+
"background": "green",
|
|
412
|
+
"shapeColor": "white",
|
|
413
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"id": "p-38",
|
|
417
|
+
"background": "white",
|
|
418
|
+
"shapeColor": "green",
|
|
419
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"id": "p-39",
|
|
423
|
+
"background": "white",
|
|
424
|
+
"shapeColor": "green",
|
|
425
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"id": "p-40",
|
|
429
|
+
"background": "green",
|
|
430
|
+
"shapeColor": "white",
|
|
431
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
"id": "p-41",
|
|
435
|
+
"background": "white",
|
|
436
|
+
"shapeColor": "blue",
|
|
437
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"id": "p-42",
|
|
441
|
+
"background": "white",
|
|
442
|
+
"shapeColor": "blue",
|
|
443
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"id": "p-43",
|
|
447
|
+
"background": "white",
|
|
448
|
+
"shapeColor": "blue",
|
|
449
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"id": "p-44",
|
|
453
|
+
"background": "blue",
|
|
454
|
+
"shapeColor": "white",
|
|
455
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"id": "p-45",
|
|
459
|
+
"background": "blue",
|
|
460
|
+
"shapeColor": "white",
|
|
461
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
"id": "p-46",
|
|
465
|
+
"background": "blue",
|
|
466
|
+
"shapeColor": "white",
|
|
467
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"id": "p-47",
|
|
471
|
+
"background": "white",
|
|
472
|
+
"shapeColor": "blue",
|
|
473
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"id": "p-48",
|
|
477
|
+
"background": "blue",
|
|
478
|
+
"shapeColor": "white",
|
|
479
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"id": "p-49",
|
|
483
|
+
"background": "blue",
|
|
484
|
+
"shapeColor": "white",
|
|
485
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"id": "p-50",
|
|
489
|
+
"background": "white",
|
|
490
|
+
"shapeColor": "blue",
|
|
491
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"id": "p-51",
|
|
495
|
+
"background": "white",
|
|
496
|
+
"shapeColor": "yellow",
|
|
497
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
"id": "p-52",
|
|
501
|
+
"background": "white",
|
|
502
|
+
"shapeColor": "yellow",
|
|
503
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"id": "p-53",
|
|
507
|
+
"background": "white",
|
|
508
|
+
"shapeColor": "yellow",
|
|
509
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"id": "p-54",
|
|
513
|
+
"background": "yellow",
|
|
514
|
+
"shapeColor": "white",
|
|
515
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"id": "p-55",
|
|
519
|
+
"background": "yellow",
|
|
520
|
+
"shapeColor": "white",
|
|
521
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"id": "p-56",
|
|
525
|
+
"background": "yellow",
|
|
526
|
+
"shapeColor": "white",
|
|
527
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"id": "p-57",
|
|
531
|
+
"background": "white",
|
|
532
|
+
"shapeColor": "yellow",
|
|
533
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"id": "p-58",
|
|
537
|
+
"background": "yellow",
|
|
538
|
+
"shapeColor": "white",
|
|
539
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"id": "p-59",
|
|
543
|
+
"background": "yellow",
|
|
544
|
+
"shapeColor": "white",
|
|
545
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"id": "p-60",
|
|
549
|
+
"background": "white",
|
|
550
|
+
"shapeColor": "yellow",
|
|
551
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"id": "p-61",
|
|
555
|
+
"background": "white",
|
|
556
|
+
"shapeColor": "red",
|
|
557
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
"id": "p-62",
|
|
561
|
+
"background": "white",
|
|
562
|
+
"shapeColor": "red",
|
|
563
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"id": "p-63",
|
|
567
|
+
"background": "white",
|
|
568
|
+
"shapeColor": "red",
|
|
569
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
"id": "p-64",
|
|
573
|
+
"background": "red",
|
|
574
|
+
"shapeColor": "white",
|
|
575
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"id": "p-65",
|
|
579
|
+
"background": "red",
|
|
580
|
+
"shapeColor": "white",
|
|
581
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"id": "p-66",
|
|
585
|
+
"background": "red",
|
|
586
|
+
"shapeColor": "white",
|
|
587
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"id": "p-67",
|
|
591
|
+
"background": "white",
|
|
592
|
+
"shapeColor": "red",
|
|
593
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"id": "p-68",
|
|
597
|
+
"background": "red",
|
|
598
|
+
"shapeColor": "white",
|
|
599
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"id": "p-69",
|
|
603
|
+
"background": "red",
|
|
604
|
+
"shapeColor": "white",
|
|
605
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
"id": "p-70",
|
|
609
|
+
"background": "white",
|
|
610
|
+
"shapeColor": "red",
|
|
611
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"id": "p-71",
|
|
615
|
+
"background": "white",
|
|
616
|
+
"shapeColor": "green",
|
|
617
|
+
"shapeMarkup": '<path d="M0 0H2C29.6142 0 52 22.3858 52 50V52H50C22.3858 52 0 29.6142 0 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H2C29.6142 100 52 77.6142 52 50V48H50C22.3858 48 0 70.3858 0 98V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0H98C70.3858 0 48 22.3858 48 50V52H50C77.6142 52 100 29.6142 100 2V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100H98C70.3858 100 48 77.6142 48 50V48H50C77.6142 48 100 70.3858 100 98V100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"id": "p-72",
|
|
621
|
+
"background": "white",
|
|
622
|
+
"shapeColor": "green",
|
|
623
|
+
"shapeMarkup": '<path d="M0 100L100 0M100 100L0 0" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"id": "p-73",
|
|
627
|
+
"background": "white",
|
|
628
|
+
"shapeColor": "green",
|
|
629
|
+
"shapeMarkup": '<circle cx="50" cy="50" r="40" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
"id": "p-74",
|
|
633
|
+
"background": "green",
|
|
634
|
+
"shapeColor": "white",
|
|
635
|
+
"shapeMarkup": '<rect x="10" y="10" width="80" height="80" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"id": "p-75",
|
|
639
|
+
"background": "green",
|
|
640
|
+
"shapeColor": "white",
|
|
641
|
+
"shapeMarkup": '<path d="M100 0C100 27.6142 77.6142 50 50 50C22.3858 50 0 27.6142 0 0C0 -27.6142 22.3858 -50 50 -50C77.6142 -50 100 -27.6142 100 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100C100 127.614 77.6142 150 50 150C22.3858 150 0 127.614 0 100C0 72.3858 22.3858 50 50 50C77.6142 50 100 72.3858 100 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"id": "p-76",
|
|
645
|
+
"background": "green",
|
|
646
|
+
"shapeColor": "white",
|
|
647
|
+
"shapeMarkup": '<path d="M150 0C150 27.6142 127.614 50 100 50C72.3858 50 50 27.6142 50 0C50 -27.6142 72.3858 -50 100 -50C127.614 -50 150 -27.6142 150 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M150 100C150 127.614 127.614 150 100 150C72.3858 150 50 127.614 50 100C50 72.3858 72.3858 50 100 50C127.614 50 150 72.3858 150 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C50 27.6142 27.6142 50 0 50C-27.6142 50 -50 27.6142 -50 0C-50 -27.6142 -27.6142 -50 0 -50C27.6142 -50 50 -27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C50 127.614 27.6142 150 0 150C-27.6142 150 -50 127.614 -50 100C-50 72.3858 -27.6142 50 0 50C27.6142 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
"id": "p-77",
|
|
651
|
+
"background": "white",
|
|
652
|
+
"shapeColor": "green",
|
|
653
|
+
"shapeMarkup": '<path d="M0 0C27.6142 0 50 22.3858 50 50C22.3858 50 0 27.6142 0 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100C27.6142 100 50 77.6142 50 50C22.3858 50 0 72.3858 0 100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 0C77.6142 0 100 22.3858 100 50C72.3858 50 50 27.6142 50 0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 100C77.6142 100 100 77.6142 100 50C72.3858 50 50 72.3858 50 100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
"id": "p-78",
|
|
657
|
+
"background": "green",
|
|
658
|
+
"shapeColor": "white",
|
|
659
|
+
"shapeMarkup": '<path d="M0 0H25C38.8071 0 50 11.1929 50 25C50 38.8071 38.8071 50 25 50C11.1929 50 0 38.8071 0 25V0Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 0V25C100 38.8071 88.8071 50 75 50C61.1929 50 50 38.8071 50 25C50 11.1929 61.1929 0 75 0H100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M0 100H25C38.8071 100 50 88.8071 50 75C50 61.1929 38.8071 50 25 50C11.1929 50 0 61.1929 0 75V100Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M100 100V75C100 61.1929 88.8071 50 75 50C61.1929 50 50 61.1929 50 75C50 88.8071 61.1929 100 75 100H100Z" fill="{{SHAPE_COLOR}}"/>'
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
"id": "p-79",
|
|
663
|
+
"background": "green",
|
|
664
|
+
"shapeColor": "white",
|
|
665
|
+
"shapeMarkup": '<path d="M50 50H25C11.1929 50 0 38.8071 0 25C0 11.1929 11.1929 0 25 0C38.8071 0 50 11.1929 50 25V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V25C50 11.1929 61.1929 0 75 0C88.8071 0 100 11.1929 100 25C100 38.8071 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50H25C11.1929 50 0 61.1929 0 75C0 88.8071 11.1929 100 25 100C38.8071 100 50 88.8071 50 75V50Z" fill="{{SHAPE_COLOR}}"/>\n<path d="M50 50V75C50 88.8071 61.1929 100 75 100C88.8071 100 100 88.8071 100 75C100 61.1929 88.8071 50 75 50H50Z" fill="{{SHAPE_COLOR}}"/>'
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"id": "p-80",
|
|
669
|
+
"background": "white",
|
|
670
|
+
"shapeColor": "green",
|
|
671
|
+
"shapeMarkup": '<path d="M50 0V100" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>\n<path d="M100 50H3.93391e-06" stroke="{{SHAPE_COLOR}}" stroke-width="20"/>'
|
|
672
|
+
}
|
|
673
|
+
];
|
|
674
|
+
var TILE_BY_ID = Object.freeze(
|
|
675
|
+
Object.fromEntries(TILES.map((t) => [t.id, t]))
|
|
676
|
+
);
|
|
677
|
+
|
|
678
|
+
// src/tiles.ts
|
|
679
|
+
var UnknownTileError = class extends Error {
|
|
680
|
+
constructor(id) {
|
|
681
|
+
super(`Unknown tile id: "${id}". Known ids: ${TILES.map((t) => t.id).join(", ")}.`);
|
|
682
|
+
this.id = id;
|
|
683
|
+
this.name = "UnknownTileError";
|
|
684
|
+
}
|
|
685
|
+
id;
|
|
686
|
+
};
|
|
687
|
+
function resolveTilePool(opts) {
|
|
688
|
+
if (opts.base !== void 0) {
|
|
689
|
+
const tile = TILE_BY_ID[opts.base];
|
|
690
|
+
if (!tile) throw new UnknownTileError(opts.base);
|
|
691
|
+
return [tile];
|
|
692
|
+
}
|
|
693
|
+
if (opts.pool !== void 0) {
|
|
694
|
+
if (opts.pool.length === 0) {
|
|
695
|
+
throw new Error("Pattern pool is empty \u2014 supply at least one tile id or omit `pool`.");
|
|
696
|
+
}
|
|
697
|
+
return opts.pool.map((id) => {
|
|
698
|
+
const tile = TILE_BY_ID[id];
|
|
699
|
+
if (!tile) throw new UnknownTileError(id);
|
|
700
|
+
return tile;
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
return TILES;
|
|
704
|
+
}
|
|
705
|
+
function pickTile(rng, pool) {
|
|
706
|
+
return pick(rng, pool);
|
|
707
|
+
}
|
|
708
|
+
function recolourTileMarkup(markup, shapeColor, useHex) {
|
|
709
|
+
const palette = useHex ? PALETTE_HEX : PALETTE_VAR;
|
|
710
|
+
return markup.replaceAll("{{SHAPE_COLOR}}", palette[shapeColor]);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
// src/variants.ts
|
|
714
|
+
function parseGrid(grid) {
|
|
715
|
+
const m = grid.match(/^(\d+)x(\d+)$/);
|
|
716
|
+
if (!m) throw new Error(`Invalid grid shape: ${grid}. Use "<rows>x<cols>".`);
|
|
717
|
+
return { rows: parseInt(m[1], 10), cols: parseInt(m[2], 10) };
|
|
718
|
+
}
|
|
719
|
+
function resolveVariant(variant, overrides = {}) {
|
|
720
|
+
const baseGrid = {
|
|
721
|
+
corner: { rows: 3, cols: 3 },
|
|
722
|
+
"edge-strip": { rows: 9, cols: 2 },
|
|
723
|
+
"divider-strip": { rows: 1, cols: 12 },
|
|
724
|
+
"dado-footer": { rows: 1, cols: 32 },
|
|
725
|
+
"full-scene": { rows: 5, cols: 6 }
|
|
726
|
+
};
|
|
727
|
+
const baseSize = {
|
|
728
|
+
corner: 40,
|
|
729
|
+
"edge-strip": 40,
|
|
730
|
+
"divider-strip": 32,
|
|
731
|
+
"dado-footer": 8,
|
|
732
|
+
"full-scene": 80
|
|
733
|
+
};
|
|
734
|
+
const dims = overrides.grid ? parseGrid(overrides.grid) : baseGrid[variant];
|
|
735
|
+
const cellSize = overrides.cellSize ?? baseSize[variant];
|
|
736
|
+
return { ...dims, cellSize };
|
|
737
|
+
}
|
|
738
|
+
var DADO_CYCLE = ["blue", "yellow", "red", "green"];
|
|
739
|
+
|
|
740
|
+
// src/generator.ts
|
|
741
|
+
function generatePatternData(options) {
|
|
742
|
+
const { variant, seed = 0, useHex = false, base, pool } = options;
|
|
743
|
+
const { rows, cols, cellSize } = resolveVariant(variant, {
|
|
744
|
+
...options.grid !== void 0 && { grid: options.grid },
|
|
745
|
+
...options.cellSize !== void 0 && { cellSize: options.cellSize }
|
|
746
|
+
});
|
|
747
|
+
const palette = useHex ? PALETTE_HEX : PALETTE_VAR;
|
|
748
|
+
const tileMode = variant !== "dado-footer" && (base !== void 0 || pool !== void 0);
|
|
749
|
+
const tilePool = tileMode ? resolveTilePool({ ...base !== void 0 && { base }, ...pool !== void 0 && { pool } }) : [];
|
|
750
|
+
let coloured;
|
|
751
|
+
if (variant === "dado-footer") {
|
|
752
|
+
coloured = Array.from({ length: rows * cols }, (_, i) => ({
|
|
753
|
+
row: Math.floor(i / cols),
|
|
754
|
+
col: i % cols,
|
|
755
|
+
background: DADO_CYCLE[i % DADO_CYCLE.length]
|
|
756
|
+
}));
|
|
757
|
+
} else {
|
|
758
|
+
coloured = colourGrid({ rows, cols, seed });
|
|
759
|
+
}
|
|
760
|
+
const rng = mulberry32(seed ^ 2654435769);
|
|
761
|
+
const cells = coloured.map((c) => {
|
|
762
|
+
if (variant === "dado-footer") {
|
|
763
|
+
return {
|
|
764
|
+
...c,
|
|
765
|
+
shape: null,
|
|
766
|
+
backgroundColor: palette[c.background],
|
|
767
|
+
shapeColor: palette[c.background],
|
|
768
|
+
tile: null,
|
|
769
|
+
tileMarkup: ""
|
|
770
|
+
};
|
|
771
|
+
}
|
|
772
|
+
const shapeColor = contrastShapeColor(c.background);
|
|
773
|
+
if (tileMode) {
|
|
774
|
+
const tile = pickTile(rng, tilePool);
|
|
775
|
+
return {
|
|
776
|
+
...c,
|
|
777
|
+
shape: null,
|
|
778
|
+
backgroundColor: palette[c.background],
|
|
779
|
+
shapeColor: palette[shapeColor],
|
|
780
|
+
tile,
|
|
781
|
+
tileMarkup: recolourTileMarkup(tile.shapeMarkup, shapeColor, useHex)
|
|
782
|
+
};
|
|
783
|
+
}
|
|
784
|
+
const shape = pick(rng, SHAPES);
|
|
785
|
+
return {
|
|
786
|
+
...c,
|
|
787
|
+
shape,
|
|
788
|
+
backgroundColor: palette[c.background],
|
|
789
|
+
shapeColor: palette[shapeColor],
|
|
790
|
+
tile: null,
|
|
791
|
+
tileMarkup: ""
|
|
792
|
+
};
|
|
793
|
+
});
|
|
794
|
+
const width = cols * cellSize;
|
|
795
|
+
const height = rows * cellSize;
|
|
796
|
+
return {
|
|
797
|
+
cells,
|
|
798
|
+
width,
|
|
799
|
+
height,
|
|
800
|
+
rows,
|
|
801
|
+
cols,
|
|
802
|
+
cellSize,
|
|
803
|
+
viewBox: `0 0 ${width} ${height}`,
|
|
804
|
+
tileMode,
|
|
805
|
+
tileViewBox: TILE_VIEWBOX_SIZE
|
|
806
|
+
};
|
|
807
|
+
}
|
|
808
|
+
function generatePatternSvg(options) {
|
|
809
|
+
const data = generatePatternData(options);
|
|
810
|
+
const cellSvg = data.cells.map((c) => {
|
|
811
|
+
const tx = c.col * data.cellSize;
|
|
812
|
+
const ty = c.row * data.cellSize;
|
|
813
|
+
if (c.tile) {
|
|
814
|
+
return `<svg x="${tx}" y="${ty}" width="${data.cellSize}" height="${data.cellSize}" viewBox="0 0 ${data.tileViewBox} ${data.tileViewBox}" overflow="hidden"><rect width="${data.tileViewBox}" height="${data.tileViewBox}" fill="${c.backgroundColor}"/>` + c.tileMarkup + `</svg>`;
|
|
815
|
+
}
|
|
816
|
+
const bg = `<rect width="${data.cellSize}" height="${data.cellSize}" fill="${c.backgroundColor}"/>`;
|
|
817
|
+
const shape = c.shape ? renderShape(c.shape, { size: data.cellSize, color: c.shapeColor }) : "";
|
|
818
|
+
return `<g transform="translate(${tx} ${ty})">${bg}${shape}</g>`;
|
|
819
|
+
}).join("");
|
|
820
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${data.viewBox}" width="${data.width}" height="${data.height}" aria-hidden="true">${cellSvg}</svg>`;
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
exports.generatePatternData = generatePatternData;
|
|
824
|
+
exports.generatePatternSvg = generatePatternSvg;
|
|
825
|
+
//# sourceMappingURL=generator.cjs.map
|
|
826
|
+
//# sourceMappingURL=generator.cjs.map
|