@fluritheme/grinch 0.0.0-stage → 0.1.1
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/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +188 -2
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +508 -0
- package/dist/index.js.map +1 -0
- package/dist/layers.d.ts +12 -0
- package/dist/layers.d.ts.map +1 -0
- package/dist/layers.js +58 -0
- package/dist/layers.js.map +1 -0
- package/dist/model.d.ts +67 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +404 -0
- package/dist/model.js.map +1 -0
- package/dist/options.d.ts +26 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +89 -0
- package/dist/options.js.map +1 -0
- package/dist/paint.d.ts +9 -0
- package/dist/paint.d.ts.map +1 -0
- package/dist/paint.js +355 -0
- package/dist/paint.js.map +1 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +81 -4
package/dist/paint.js
ADDED
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { clamp } from './model.js';
|
|
2
|
+
const TAU = Math.PI * 2;
|
|
3
|
+
export function paintGift(ctx, point, color, size = 1, scale = 1) {
|
|
4
|
+
ctx.save();
|
|
5
|
+
ctx.translate(point.x, point.y);
|
|
6
|
+
ctx.scale(size * scale, size * scale);
|
|
7
|
+
ctx.lineWidth = 0.8;
|
|
8
|
+
ctx.lineJoin = 'round';
|
|
9
|
+
ctx.strokeStyle = '#253222';
|
|
10
|
+
ctx.fillStyle = '#15251d25';
|
|
11
|
+
ctx.beginPath();
|
|
12
|
+
ctx.ellipse(0, 1, 14, 2.7, 0, 0, TAU);
|
|
13
|
+
ctx.fill();
|
|
14
|
+
ctx.fillStyle = color;
|
|
15
|
+
ctx.beginPath();
|
|
16
|
+
ctx.roundRect(-12, -22, 24, 22, 2.5);
|
|
17
|
+
ctx.fill();
|
|
18
|
+
ctx.stroke();
|
|
19
|
+
ctx.fillStyle = '#fff3ce';
|
|
20
|
+
ctx.fillRect(-2.2, -22, 4.4, 22);
|
|
21
|
+
ctx.fillRect(-12, -15, 24, 3.5);
|
|
22
|
+
ctx.strokeStyle = '#d0aa54';
|
|
23
|
+
ctx.lineWidth = 1.2;
|
|
24
|
+
ctx.beginPath();
|
|
25
|
+
ctx.moveTo(0, -23);
|
|
26
|
+
ctx.bezierCurveTo(-18, -37, -15, -17, 0, -23);
|
|
27
|
+
ctx.bezierCurveTo(18, -37, 15, -17, 0, -23);
|
|
28
|
+
ctx.stroke();
|
|
29
|
+
ctx.fillStyle = '#fff3ce';
|
|
30
|
+
ctx.beginPath();
|
|
31
|
+
ctx.arc(0, -23, 2.2, 0, TAU);
|
|
32
|
+
ctx.fill();
|
|
33
|
+
ctx.restore();
|
|
34
|
+
}
|
|
35
|
+
function heart(ctx, x, y, size, color) {
|
|
36
|
+
ctx.save();
|
|
37
|
+
ctx.translate(x, y);
|
|
38
|
+
ctx.scale(size, size);
|
|
39
|
+
ctx.fillStyle = color;
|
|
40
|
+
ctx.beginPath();
|
|
41
|
+
ctx.moveTo(0, 3);
|
|
42
|
+
ctx.bezierCurveTo(-15, -5, -9, -16, 0, -8);
|
|
43
|
+
ctx.bezierCurveTo(9, -16, 15, -5, 0, 3);
|
|
44
|
+
ctx.fill();
|
|
45
|
+
ctx.restore();
|
|
46
|
+
}
|
|
47
|
+
/** Original procedural character artwork, with expressive poses instead of downloaded sprites. */
|
|
48
|
+
export function paintGrinch(ctx, model, options, quiet) {
|
|
49
|
+
const a = model.actor, size = options.size, phase = a.phase, t = model.time, age = a.age;
|
|
50
|
+
const walking = ['arriving', 'sneaking', 'escaping', 'peeking'].includes(phase), climbing = phase === 'climbing' || (phase === 'arriving' && options.entrance === 'rope');
|
|
51
|
+
const caught = phase === 'caught', warm = phase === 'warming', nice = options.mood === 'friendly';
|
|
52
|
+
const reach = ['reaching', 'stealing'].includes(phase), stash = phase === 'stashing', wave = phase === 'waving', gloat = phase === 'gloating';
|
|
53
|
+
const bob = quiet
|
|
54
|
+
? 0
|
|
55
|
+
: walking
|
|
56
|
+
? Math.sin(a.gait * 2) * 1.5
|
|
57
|
+
: climbing
|
|
58
|
+
? Math.sin(a.gait) * 1.5
|
|
59
|
+
: Math.sin(t * 2.2) * 0.6;
|
|
60
|
+
if (a.rope) {
|
|
61
|
+
ctx.save();
|
|
62
|
+
ctx.strokeStyle = '#29402a65';
|
|
63
|
+
ctx.lineWidth = 1.8;
|
|
64
|
+
ctx.beginPath();
|
|
65
|
+
ctx.moveTo(a.rope.x, a.rope.y);
|
|
66
|
+
ctx.quadraticCurveTo(a.rope.x - 5, (a.rope.y + a.y) / 2, a.x + a.facing * 16 * size, a.y - 73 * size);
|
|
67
|
+
ctx.stroke();
|
|
68
|
+
ctx.strokeStyle = '#fff6db';
|
|
69
|
+
ctx.lineWidth = 0.8;
|
|
70
|
+
ctx.stroke();
|
|
71
|
+
ctx.restore();
|
|
72
|
+
}
|
|
73
|
+
ctx.save();
|
|
74
|
+
ctx.translate(a.x, a.y + bob);
|
|
75
|
+
ctx.scale(size * a.facing, size);
|
|
76
|
+
const stroke = '#23351d', fur = options.furColor, furLight = '#b3d85a', red = options.coatColor, cream = '#fff5de';
|
|
77
|
+
ctx.lineCap = 'round';
|
|
78
|
+
ctx.lineJoin = 'round';
|
|
79
|
+
const ellipse = (x, y, rx, ry, fill, line = stroke) => {
|
|
80
|
+
ctx.fillStyle = fill;
|
|
81
|
+
ctx.strokeStyle = line;
|
|
82
|
+
ctx.lineWidth = 0.9;
|
|
83
|
+
ctx.beginPath();
|
|
84
|
+
ctx.ellipse(x, y, rx, ry, 0, 0, TAU);
|
|
85
|
+
ctx.fill();
|
|
86
|
+
if (line !== 'none')
|
|
87
|
+
ctx.stroke();
|
|
88
|
+
};
|
|
89
|
+
const path = (fill, draw, line = stroke, width = 1) => {
|
|
90
|
+
ctx.fillStyle = fill;
|
|
91
|
+
ctx.strokeStyle = line;
|
|
92
|
+
ctx.lineWidth = width;
|
|
93
|
+
ctx.beginPath();
|
|
94
|
+
draw();
|
|
95
|
+
ctx.fill();
|
|
96
|
+
if (line !== 'none')
|
|
97
|
+
ctx.stroke();
|
|
98
|
+
};
|
|
99
|
+
const limb = (x, y, tx, ty, width, fill) => {
|
|
100
|
+
ctx.lineWidth = width + 1.3;
|
|
101
|
+
ctx.strokeStyle = stroke;
|
|
102
|
+
ctx.beginPath();
|
|
103
|
+
ctx.moveTo(x, y);
|
|
104
|
+
ctx.quadraticCurveTo((x + tx) / 2 - 3, (y + ty) / 2 + 5, tx, ty);
|
|
105
|
+
ctx.stroke();
|
|
106
|
+
ctx.lineWidth = width;
|
|
107
|
+
ctx.strokeStyle = fill;
|
|
108
|
+
ctx.stroke();
|
|
109
|
+
};
|
|
110
|
+
ctx.save();
|
|
111
|
+
ctx.globalAlpha = 0.15;
|
|
112
|
+
ellipse(0, 0 - bob, 25, 3, '#0c1911', 'none');
|
|
113
|
+
ctx.restore();
|
|
114
|
+
// Sack follows the shoulder and gets rounder as illustrated presents are stashed.
|
|
115
|
+
const fullness = Math.min(3, model.stolen + (model.held ? 0.3 : 0));
|
|
116
|
+
path('#7e5438', () => {
|
|
117
|
+
ctx.moveTo(-20, -65);
|
|
118
|
+
ctx.bezierCurveTo(-45 - fullness * 2, -62, -43 - fullness * 3, -25, -26, -24);
|
|
119
|
+
ctx.bezierCurveTo(-8, -22, -7, -52, -20, -65);
|
|
120
|
+
});
|
|
121
|
+
ctx.strokeStyle = '#bb9160';
|
|
122
|
+
ctx.lineWidth = 1.1;
|
|
123
|
+
ctx.beginPath();
|
|
124
|
+
ctx.moveTo(-27, -55);
|
|
125
|
+
ctx.quadraticCurveTo(-35, -43, -28, -30);
|
|
126
|
+
ctx.stroke();
|
|
127
|
+
ctx.strokeStyle = cream;
|
|
128
|
+
ctx.lineWidth = 1;
|
|
129
|
+
ctx.beginPath();
|
|
130
|
+
ctx.moveTo(-25, -61);
|
|
131
|
+
ctx.lineTo(-14, -64);
|
|
132
|
+
ctx.stroke();
|
|
133
|
+
// Planted feet and alternating knee bends make the walk feel deliberately sneaky.
|
|
134
|
+
const step = quiet ? 0 : Math.sin(a.gait) * (walking ? 9 : climbing ? 6 : 0);
|
|
135
|
+
limb(-7, -27, -9 - step, -5, 5.8, fur);
|
|
136
|
+
limb(8, -27, 9 + step, -5, 5.8, fur);
|
|
137
|
+
path('#263529', () => {
|
|
138
|
+
ctx.moveTo(-12 - step, -9);
|
|
139
|
+
ctx.quadraticCurveTo(-24 - step, -5, -21 - step, -1);
|
|
140
|
+
ctx.lineTo(-3 - step, -1);
|
|
141
|
+
ctx.quadraticCurveTo(0 - step, -4, -5 - step, -7);
|
|
142
|
+
});
|
|
143
|
+
path('#263529', () => {
|
|
144
|
+
ctx.moveTo(6 + step, -9);
|
|
145
|
+
ctx.quadraticCurveTo(21 + step, -4, 22 + step, -10);
|
|
146
|
+
ctx.quadraticCurveTo(31 + step, 1, 8 + step, 0);
|
|
147
|
+
ctx.lineTo(3 + step, -3);
|
|
148
|
+
});
|
|
149
|
+
// A pear-shaped Santa coat with a soft fur hem and narrow belt.
|
|
150
|
+
path(red, () => {
|
|
151
|
+
ctx.moveTo(-12, -66);
|
|
152
|
+
ctx.bezierCurveTo(-22, -58, -25, -42, -23, -30);
|
|
153
|
+
ctx.quadraticCurveTo(0, -18, 22, -30);
|
|
154
|
+
ctx.bezierCurveTo(22, -45, 18, -61, 10, -66);
|
|
155
|
+
ctx.closePath();
|
|
156
|
+
});
|
|
157
|
+
ctx.strokeStyle = '#ef7180';
|
|
158
|
+
ctx.lineWidth = 1.2;
|
|
159
|
+
ctx.beginPath();
|
|
160
|
+
ctx.moveTo(12, -55);
|
|
161
|
+
ctx.quadraticCurveTo(17, -45, 16, -35);
|
|
162
|
+
ctx.stroke();
|
|
163
|
+
path(cream, () => {
|
|
164
|
+
ctx.moveTo(-23, -33);
|
|
165
|
+
for (let x = -23; x < 22; x += 5)
|
|
166
|
+
ctx.quadraticCurveTo(x + 2, -26, x + 5, -30);
|
|
167
|
+
ctx.lineTo(22, -24);
|
|
168
|
+
ctx.quadraticCurveTo(0, -17, -23, -25);
|
|
169
|
+
ctx.closePath();
|
|
170
|
+
});
|
|
171
|
+
ctx.fillStyle = '#f9edcd';
|
|
172
|
+
ctx.beginPath();
|
|
173
|
+
ctx.roundRect(-2, -60, 4, 32, 1);
|
|
174
|
+
ctx.fill();
|
|
175
|
+
path('#263529', () => {
|
|
176
|
+
ctx.moveTo(-23, -40);
|
|
177
|
+
ctx.quadraticCurveTo(0, -34, 22, -40);
|
|
178
|
+
ctx.lineTo(22, -34);
|
|
179
|
+
ctx.quadraticCurveTo(0, -28, -23, -34);
|
|
180
|
+
ctx.closePath();
|
|
181
|
+
});
|
|
182
|
+
ctx.strokeStyle = '#edc565';
|
|
183
|
+
ctx.lineWidth = 2;
|
|
184
|
+
ctx.beginPath();
|
|
185
|
+
ctx.roundRect(-4, -39, 10, 8, 1);
|
|
186
|
+
ctx.stroke();
|
|
187
|
+
// Thin arms, furry cuffs and long fingers have pose-specific targets.
|
|
188
|
+
let left = { x: -24, y: -42 }, right = { x: 23, y: -43 };
|
|
189
|
+
if (reach) {
|
|
190
|
+
right = { x: 28, y: -46 + Math.min(1, age / 0.55) * 32 };
|
|
191
|
+
left = { x: -16, y: -48 };
|
|
192
|
+
}
|
|
193
|
+
if (phase === 'stealing')
|
|
194
|
+
right = { x: 23, y: -14 - clamp(age / 0.65, 0, 1) * 37 };
|
|
195
|
+
if (stash) {
|
|
196
|
+
const p = clamp(age / 0.7, 0, 1);
|
|
197
|
+
right = { x: 23 - 44 * p, y: -51 - Math.sin(p * Math.PI) * 15 };
|
|
198
|
+
left = { x: -24, y: -60 };
|
|
199
|
+
}
|
|
200
|
+
if (caught) {
|
|
201
|
+
left = { x: -28, y: -79 };
|
|
202
|
+
right = { x: 28, y: -79 };
|
|
203
|
+
}
|
|
204
|
+
if (wave) {
|
|
205
|
+
right = { x: 27 + (quiet ? 0 : Math.sin(age * 12) * 4), y: -83 };
|
|
206
|
+
}
|
|
207
|
+
if (gloat) {
|
|
208
|
+
left = { x: -13, y: -46 };
|
|
209
|
+
right = { x: 16, y: -50 };
|
|
210
|
+
}
|
|
211
|
+
if (climbing) {
|
|
212
|
+
left = { x: -13, y: -83 + Math.sin(a.gait) * 8 };
|
|
213
|
+
right = { x: 16, y: -84 - Math.sin(a.gait) * 8 };
|
|
214
|
+
}
|
|
215
|
+
if (warm) {
|
|
216
|
+
left = { x: -8, y: -55 };
|
|
217
|
+
right = { x: 9, y: -55 };
|
|
218
|
+
}
|
|
219
|
+
for (const [side, hand] of [
|
|
220
|
+
[-1, left],
|
|
221
|
+
[1, right],
|
|
222
|
+
]) {
|
|
223
|
+
limb(side * 14, -60, hand.x, hand.y, 7, red);
|
|
224
|
+
ellipse(hand.x, hand.y + 2, 5.8, 4.3, cream);
|
|
225
|
+
ellipse(hand.x, hand.y - 3, 5.1, 6, fur);
|
|
226
|
+
ctx.strokeStyle = stroke;
|
|
227
|
+
ctx.lineWidth = 1;
|
|
228
|
+
for (let f = 0; f < 3; f++) {
|
|
229
|
+
ctx.beginPath();
|
|
230
|
+
ctx.moveTo(hand.x - 3 + f * 2.6, hand.y - 5);
|
|
231
|
+
ctx.lineTo(hand.x - 4 + f * 3, hand.y - 10 + f * 0.7);
|
|
232
|
+
ctx.stroke();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Broad fluffy cheeks, tapering chin and an asymmetric grin.
|
|
236
|
+
path(fur, () => {
|
|
237
|
+
ctx.moveTo(-9, -65);
|
|
238
|
+
ctx.quadraticCurveTo(-12, -74, -18, -76);
|
|
239
|
+
ctx.lineTo(-28, -80);
|
|
240
|
+
ctx.lineTo(-23, -84);
|
|
241
|
+
ctx.lineTo(-31, -89);
|
|
242
|
+
ctx.lineTo(-23, -91);
|
|
243
|
+
ctx.quadraticCurveTo(-27, -109, -10, -115);
|
|
244
|
+
ctx.lineTo(-12, -121);
|
|
245
|
+
ctx.lineTo(-5, -118);
|
|
246
|
+
ctx.lineTo(1, -124);
|
|
247
|
+
ctx.lineTo(4, -117);
|
|
248
|
+
ctx.lineTo(12, -122);
|
|
249
|
+
ctx.lineTo(11, -115);
|
|
250
|
+
ctx.quadraticCurveTo(27, -108, 23, -92);
|
|
251
|
+
ctx.lineTo(31, -90);
|
|
252
|
+
ctx.lineTo(24, -85);
|
|
253
|
+
ctx.lineTo(29, -81);
|
|
254
|
+
ctx.lineTo(18, -77);
|
|
255
|
+
ctx.quadraticCurveTo(11, -72, 8, -65);
|
|
256
|
+
ctx.quadraticCurveTo(0, -61, -9, -65);
|
|
257
|
+
});
|
|
258
|
+
ctx.strokeStyle = furLight;
|
|
259
|
+
ctx.lineWidth = 1.4;
|
|
260
|
+
ctx.beginPath();
|
|
261
|
+
ctx.moveTo(-23, -89);
|
|
262
|
+
ctx.quadraticCurveTo(-18, -84, -14, -85);
|
|
263
|
+
ctx.moveTo(16, -83);
|
|
264
|
+
ctx.quadraticCurveTo(21, -83, 25, -87);
|
|
265
|
+
ctx.stroke();
|
|
266
|
+
const blink = quiet ? 1 : Math.sin(t * 1.37) > 0.995 ? 0.12 : 1;
|
|
267
|
+
for (const side of [-1, 1]) {
|
|
268
|
+
ellipse(side * 9, -98, 7.1, 4.8 * blink, caught ? '#fff4b5' : '#e8ce51');
|
|
269
|
+
ellipse(side * 9 + (nice ? 0 : 1.2), -98, 1.7, (caught ? 3.5 : 2.8) * blink, '#19281d', 'none');
|
|
270
|
+
ellipse(side * 9 + 0.5, -99.1, 0.55, 0.8 * blink, '#fff7d9', 'none');
|
|
271
|
+
}
|
|
272
|
+
// Eyebrows soften when redeemed and lift sharply when caught.
|
|
273
|
+
ctx.strokeStyle = '#26371b';
|
|
274
|
+
ctx.lineWidth = 2.3;
|
|
275
|
+
for (const side of [-1, 1]) {
|
|
276
|
+
ctx.beginPath();
|
|
277
|
+
ctx.moveTo(side * 17, -105 - (caught ? 4 : 0));
|
|
278
|
+
ctx.quadraticCurveTo(side * 10, nice ? -111 : caught ? -113 : -104, side * 3, -104 + (nice ? -3 : 2));
|
|
279
|
+
ctx.stroke();
|
|
280
|
+
}
|
|
281
|
+
ellipse(1, -91, 4.5, 2.3, '#5a8f2c', 'none');
|
|
282
|
+
ctx.strokeStyle = '#26371b';
|
|
283
|
+
ctx.lineWidth = 1.4;
|
|
284
|
+
ctx.beginPath();
|
|
285
|
+
if (caught) {
|
|
286
|
+
ctx.ellipse(1, -80, 3, 4, 0, 0, TAU);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
ctx.moveTo(-17, -85);
|
|
290
|
+
ctx.bezierCurveTo(-10, -72, 9, nice ? -70 : -75, 19, -88);
|
|
291
|
+
ctx.moveTo(-18, -86);
|
|
292
|
+
ctx.quadraticCurveTo(-20, -82, -19, -80);
|
|
293
|
+
ctx.moveTo(19, -89);
|
|
294
|
+
ctx.quadraticCurveTo(23, -87, 21, -83);
|
|
295
|
+
}
|
|
296
|
+
ctx.stroke();
|
|
297
|
+
if (!caught) {
|
|
298
|
+
ctx.strokeStyle = furLight;
|
|
299
|
+
ctx.lineWidth = 1;
|
|
300
|
+
ctx.beginPath();
|
|
301
|
+
ctx.moveTo(-7, -77);
|
|
302
|
+
ctx.quadraticCurveTo(1, -73, 7, -78);
|
|
303
|
+
ctx.stroke();
|
|
304
|
+
}
|
|
305
|
+
// A soft bent hat with the little bobble clearly separated from the face.
|
|
306
|
+
path(red, () => {
|
|
307
|
+
ctx.moveTo(-22, -110);
|
|
308
|
+
ctx.quadraticCurveTo(-21, -137, 2, -141);
|
|
309
|
+
ctx.bezierCurveTo(23, -148, 33, -137, 29, -126);
|
|
310
|
+
ctx.quadraticCurveTo(21, -133, 15, -125);
|
|
311
|
+
ctx.lineTo(20, -111);
|
|
312
|
+
ctx.closePath();
|
|
313
|
+
});
|
|
314
|
+
path(cream, () => {
|
|
315
|
+
ctx.moveTo(-24, -114);
|
|
316
|
+
for (let x = -24; x < 21; x += 5)
|
|
317
|
+
ctx.quadraticCurveTo(x + 2, -118, x + 5, -114);
|
|
318
|
+
ctx.lineTo(23, -107);
|
|
319
|
+
ctx.quadraticCurveTo(0, -102, -24, -108);
|
|
320
|
+
ctx.closePath();
|
|
321
|
+
});
|
|
322
|
+
ellipse(30, -124, 7, 7.5, cream);
|
|
323
|
+
ctx.strokeStyle = '#ef7c86';
|
|
324
|
+
ctx.lineWidth = 1.3;
|
|
325
|
+
ctx.beginPath();
|
|
326
|
+
ctx.moveTo(-12, -124);
|
|
327
|
+
ctx.quadraticCurveTo(-3, -136, 9, -135);
|
|
328
|
+
ctx.stroke();
|
|
329
|
+
if (warm) {
|
|
330
|
+
const p = clamp(age / 1.7, 0, 1);
|
|
331
|
+
heart(ctx, 0, -57, 0.6 + Math.sin(p * Math.PI) * 0.35, '#f1a9a5');
|
|
332
|
+
for (let i = 0; i < 3; i++)
|
|
333
|
+
heart(ctx, -27 + i * 27, -100 - p * 55 + (i % 2) * 12, (0.35 + i * 0.1) * Math.sin(p * Math.PI), '#e74462');
|
|
334
|
+
}
|
|
335
|
+
ctx.restore();
|
|
336
|
+
}
|
|
337
|
+
export function paintPresents(ctx, model, size, held) {
|
|
338
|
+
for (const gift of model.gifts) {
|
|
339
|
+
if (gift.state === 'stolen')
|
|
340
|
+
continue;
|
|
341
|
+
const isHeld = gift.state === 'held';
|
|
342
|
+
if (isHeld !== held)
|
|
343
|
+
continue;
|
|
344
|
+
if (!gift.visible && !isHeld && !gift.returning)
|
|
345
|
+
continue;
|
|
346
|
+
let scale = 1;
|
|
347
|
+
if (isHeld && model.actor.phase === 'stashing')
|
|
348
|
+
scale = 1 - clamp(model.actor.age / 0.7, 0, 1) * 0.75;
|
|
349
|
+
paintGift(ctx, model.giftPoint(gift), gift.color, size * 0.86, scale);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
export function giftColor(index) {
|
|
353
|
+
return ['#c92c42', '#71a540', '#d99a39', '#499286', '#c67589'][index % 5];
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=paint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paint.js","sourceRoot":"","sources":["../src/paint.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export interface Point {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
}
|
|
5
|
+
export interface Box extends Point {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
9
|
+
export type GrinchMood = 'mischievous' | 'friendly';
|
|
10
|
+
export type GrinchPhase = 'arriving' | 'idle' | 'sneaking' | 'climbing' | 'reaching' | 'stealing' | 'stashing' | 'gloating' | 'escaping' | 'hiding' | 'peeking' | 'caught' | 'warming' | 'waving';
|
|
11
|
+
export type GiftState = 'available' | 'held' | 'stolen' | 'returning';
|
|
12
|
+
export type GrinchEvent = 'ready' | 'phase' | 'theft:start' | 'gift:stolen' | 'gift:returned' | 'caught' | 'redeemed' | 'error';
|
|
13
|
+
export interface GrinchOptions {
|
|
14
|
+
/** Current document or an element. No DOM is touched during server rendering. */
|
|
15
|
+
root?: Document | HTMLElement;
|
|
16
|
+
/** Gift-bearing elements; defaults to [data-grinch-gift], then a few real page surfaces. */
|
|
17
|
+
targets?: string | readonly HTMLElement[];
|
|
18
|
+
territory?: 'page' | 'root';
|
|
19
|
+
/** A selector for places to hide; at most 64 are measured. */
|
|
20
|
+
objects?: string;
|
|
21
|
+
/** Maximum illustrated presents, 1–12. Host content is never removed or moved. */
|
|
22
|
+
maxGifts?: number;
|
|
23
|
+
/** Character scale, .6–1.8; mobileScale applies below 600px. */
|
|
24
|
+
size?: number;
|
|
25
|
+
mobileScale?: number;
|
|
26
|
+
speed?: number;
|
|
27
|
+
/** Seconds between heists, 3–120. */
|
|
28
|
+
cooldown?: number;
|
|
29
|
+
fearRadius?: number;
|
|
30
|
+
mood?: GrinchMood;
|
|
31
|
+
autoSteal?: boolean;
|
|
32
|
+
entrance?: 'sneak' | 'rope' | 'appear';
|
|
33
|
+
motion?: 'system' | 'full' | 'none';
|
|
34
|
+
observe?: boolean;
|
|
35
|
+
zIndex?: number;
|
|
36
|
+
furColor?: string;
|
|
37
|
+
coatColor?: string;
|
|
38
|
+
/** Optional small visitor pause control. Default false. */
|
|
39
|
+
controls?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export type GrinchTuning = Pick<GrinchOptions, 'size' | 'mobileScale' | 'speed' | 'cooldown' | 'fearRadius' | 'mood' | 'autoSteal' | 'furColor' | 'coatColor'>;
|
|
42
|
+
export interface GrinchSnapshot {
|
|
43
|
+
readonly state: 'idle' | 'running' | 'paused' | 'destroyed';
|
|
44
|
+
readonly reducedMotion: boolean;
|
|
45
|
+
readonly mood: GrinchMood;
|
|
46
|
+
readonly phase: GrinchPhase;
|
|
47
|
+
/** Character feet in document CSS coordinates. */
|
|
48
|
+
readonly character: Readonly<Point & {
|
|
49
|
+
visible: boolean;
|
|
50
|
+
behind: boolean;
|
|
51
|
+
facing: number;
|
|
52
|
+
}> | null;
|
|
53
|
+
readonly gifts: readonly Readonly<Point & {
|
|
54
|
+
id: string;
|
|
55
|
+
state: GiftState;
|
|
56
|
+
visible: boolean;
|
|
57
|
+
}>[];
|
|
58
|
+
readonly stolen: number;
|
|
59
|
+
readonly totalStolen: number;
|
|
60
|
+
readonly caught: number;
|
|
61
|
+
}
|
|
62
|
+
export interface GrinchEventData {
|
|
63
|
+
readonly phase?: GrinchPhase;
|
|
64
|
+
readonly giftId?: string;
|
|
65
|
+
readonly totalStolen?: number;
|
|
66
|
+
readonly source?: string;
|
|
67
|
+
}
|
|
68
|
+
export interface GrinchController {
|
|
69
|
+
/** Queue a heist; optional selector must match an existing gift-bearing element. */
|
|
70
|
+
steal(selector?: string): boolean;
|
|
71
|
+
/** Startle him and return one held/stolen present. */
|
|
72
|
+
shoo(): void;
|
|
73
|
+
/** Send stolen presents back to their live page anchors. */
|
|
74
|
+
returnGifts(): void;
|
|
75
|
+
/** Grow a little heart, return all presents, and switch to friendly mode. */
|
|
76
|
+
redeem(): void;
|
|
77
|
+
wave(): void;
|
|
78
|
+
update(options: GrinchTuning): void;
|
|
79
|
+
refresh(): void;
|
|
80
|
+
pause(): void;
|
|
81
|
+
resume(): void;
|
|
82
|
+
destroy(): void;
|
|
83
|
+
getState(): GrinchSnapshot;
|
|
84
|
+
on(event: GrinchEvent, callback: (data: GrinchEventData) => void): () => void;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,83 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluritheme/grinch",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "A mischievous green holiday visitor that sneaks around your website, steals illustrated presents, hides behind elements and learns a little kindness. Zero dependencies.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "František Gejdoš",
|
|
9
|
+
"url": "https://fluri.xyz/founder/",
|
|
10
|
+
"email": "fluritheme@gmail.com"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://fluri.xyz/",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/fluritheme/grinch.git"
|
|
16
|
+
},
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/fluritheme/grinch/issues"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"grinch",
|
|
22
|
+
"christmas",
|
|
23
|
+
"holiday",
|
|
24
|
+
"animation",
|
|
25
|
+
"website-effects",
|
|
26
|
+
"canvas",
|
|
27
|
+
"typescript",
|
|
28
|
+
"react",
|
|
29
|
+
"vue",
|
|
30
|
+
"mascot",
|
|
31
|
+
"interactive",
|
|
32
|
+
"presents",
|
|
33
|
+
"fluri",
|
|
34
|
+
"zero-dependencies"
|
|
35
|
+
],
|
|
36
|
+
"sideEffects": false,
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"README.md",
|
|
40
|
+
"LICENSE",
|
|
41
|
+
"CHANGELOG.md"
|
|
42
|
+
],
|
|
43
|
+
"exports": {
|
|
44
|
+
".": {
|
|
45
|
+
"types": "./dist/index.d.ts",
|
|
46
|
+
"import": "./dist/index.js"
|
|
47
|
+
},
|
|
48
|
+
"./package.json": "./package.json"
|
|
49
|
+
},
|
|
50
|
+
"main": "./dist/index.js",
|
|
51
|
+
"types": "./dist/index.d.ts",
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"access": "public"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=22.12"
|
|
57
|
+
},
|
|
58
|
+
"packageManager": "pnpm@10.33.2",
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsc -p tsconfig.build.json",
|
|
61
|
+
"build:site": "node scripts/prepare-seo.mjs grinch && node scripts/prepare-site.mjs && vite build",
|
|
62
|
+
"dev": "vite --host 127.0.0.1 --port 5196",
|
|
63
|
+
"preview": "vite preview --host 127.0.0.1 --port 4196",
|
|
64
|
+
"typecheck": "tsc --noEmit",
|
|
65
|
+
"test": "vitest run",
|
|
66
|
+
"test:browser": "playwright test",
|
|
67
|
+
"format": "prettier --write .",
|
|
68
|
+
"format:check": "prettier --check .",
|
|
69
|
+
"check": "pnpm typecheck && pnpm test && pnpm build && pnpm build:site && pnpm test:browser && pnpm format:check && pnpm release:check",
|
|
70
|
+
"release:check": "node scripts/release-check.mjs",
|
|
71
|
+
"deploy": "pnpm build:site && wrangler deploy",
|
|
72
|
+
"prepublishOnly": "pnpm build && pnpm release:check"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@playwright/test": "1.64.1",
|
|
76
|
+
"@types/node": "26.6.6",
|
|
77
|
+
"prettier": "3.9.10",
|
|
78
|
+
"typescript": "6.0.3",
|
|
79
|
+
"vite": "8.3.6",
|
|
80
|
+
"vitest": "5.1.0",
|
|
81
|
+
"wrangler": "4.158.0"
|
|
82
|
+
}
|
|
83
|
+
}
|