zx-kit 0.2.0 → 0.2.2
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 +202 -255
- package/dist/audio.d.ts +57 -3
- package/dist/audio.d.ts.map +1 -1
- package/dist/audio.js +56 -3
- package/dist/audio.js.map +1 -1
- package/dist/font.d.ts +22 -0
- package/dist/font.d.ts.map +1 -1
- package/dist/font.js +23 -0
- package/dist/font.js.map +1 -1
- package/dist/input.d.ts +42 -0
- package/dist/input.d.ts.map +1 -1
- package/dist/input.js +41 -0
- package/dist/input.js.map +1 -1
- package/dist/palette.d.ts +19 -0
- package/dist/palette.d.ts.map +1 -1
- package/dist/palette.js +11 -1
- package/dist/palette.js.map +1 -1
- package/dist/renderer.d.ts +97 -5
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +109 -10
- package/dist/renderer.js.map +1 -1
- package/package.json +1 -1
package/dist/audio.d.ts
CHANGED
|
@@ -1,18 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates the shared `AudioContext` and master `GainNode`. Idempotent — safe to call
|
|
3
|
+
* multiple times (subsequent calls are no-ops).
|
|
4
|
+
* Must be called inside a user-gesture handler (click or keydown) due to browser autoplay policy.
|
|
5
|
+
*
|
|
6
|
+
* @param volume - Master gain value (0.0–1.0, default `0.3`)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* window.addEventListener('keydown', () => initAudio(), { once: true })
|
|
10
|
+
*/
|
|
1
11
|
export declare function initAudio(volume?: number): void;
|
|
12
|
+
/**
|
|
13
|
+
* Resumes a suspended `AudioContext`. Browsers suspend the context on tab hide or first load.
|
|
14
|
+
* Call before scheduling any audio in the game loop.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* resumeAudio()
|
|
18
|
+
* beep(440, 80, getAudioContext()!.currentTime)
|
|
19
|
+
*/
|
|
2
20
|
export declare function resumeAudio(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Returns the shared `AudioContext`, or `null` if `initAudio()` has not been called yet.
|
|
23
|
+
* Use to get `currentTime` for scheduling beeps and to check audio readiness.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const audio = getAudioContext()
|
|
27
|
+
* if (audio) beep(440, 80, audio.currentTime)
|
|
28
|
+
*/
|
|
3
29
|
export declare function getAudioContext(): AudioContext | null;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the master `GainNode`, or `null` before `initAudio()`.
|
|
32
|
+
* Connect your own oscillators/gains to this node to respect the global volume level.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const osc = ctx.createOscillator()
|
|
36
|
+
* osc.connect(getMasterGain()!)
|
|
37
|
+
*/
|
|
4
38
|
export declare function getMasterGain(): GainNode | null;
|
|
5
|
-
/** A single note in a melody pattern. freq
|
|
39
|
+
/** A single note in a melody pattern. Use `freq: 0` for a rest (silence). */
|
|
6
40
|
export interface Note {
|
|
7
41
|
freq: number;
|
|
8
42
|
dur: number;
|
|
9
43
|
}
|
|
10
44
|
/**
|
|
11
|
-
*
|
|
45
|
+
* Schedules a sequence of notes on the shared `AudioContext`.
|
|
12
46
|
* Silently exits if audio has not been initialised yet.
|
|
47
|
+
* `freq: 0` entries are treated as rests — they advance the timeline but produce no sound.
|
|
48
|
+
*
|
|
49
|
+
* @param notes - Array of `Note` objects to play in order
|
|
50
|
+
* @param startDelay - Optional delay before the first note in milliseconds (default `0`)
|
|
13
51
|
*
|
|
14
52
|
* @example
|
|
15
|
-
* //
|
|
53
|
+
* // Jingle — three notes with rests
|
|
16
54
|
* playPattern([
|
|
17
55
|
* { freq: 523, dur: 120 }, // C5
|
|
18
56
|
* { freq: 0, dur: 40 }, // rest
|
|
@@ -25,5 +63,21 @@ export interface Note {
|
|
|
25
63
|
* playPattern([{ freq: 440, dur: 100 }, { freq: 880, dur: 50 }], 500)
|
|
26
64
|
*/
|
|
27
65
|
export declare function playPattern(notes: Note[], startDelay?: number): void;
|
|
66
|
+
/**
|
|
67
|
+
* Schedules a single square-wave beep on the shared `AudioContext`.
|
|
68
|
+
* Uses a 5ms linear ramp attack and release to avoid click artefacts.
|
|
69
|
+
* Routed through the master gain node.
|
|
70
|
+
* Prefer `playPattern` for sequences — use `beep` when you need precise timing control.
|
|
71
|
+
*
|
|
72
|
+
* @param freq - Frequency in Hz
|
|
73
|
+
* @param durationMs - Duration in milliseconds
|
|
74
|
+
* @param startTime - Absolute `AudioContext.currentTime` to start at
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* const audio = getAudioContext()!
|
|
78
|
+
* resumeAudio()
|
|
79
|
+
* beep(440, 80, audio.currentTime)
|
|
80
|
+
* beep(880, 80, audio.currentTime + 0.15) // second note 150ms later
|
|
81
|
+
*/
|
|
28
82
|
export declare function beep(freq: number, durationMs: number, startTime: number): void;
|
|
29
83
|
//# sourceMappingURL=audio.d.ts.map
|
package/dist/audio.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,MAAM,SAAM,GAAG,IAAI,CAM5C;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,wBAAgB,aAAa,IAAI,QAAQ,GAAG,IAAI,CAE/C;AAED,
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,MAAM,SAAM,GAAG,IAAI,CAM5C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,QAAQ,GAAG,IAAI,CAE/C;AAED,6EAA6E;AAC7E,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,SAAI,GAAG,IAAI,CAS/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAc9E"}
|
package/dist/audio.js
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
let ctx = null;
|
|
2
2
|
let masterGain = null;
|
|
3
|
+
/**
|
|
4
|
+
* Creates the shared `AudioContext` and master `GainNode`. Idempotent — safe to call
|
|
5
|
+
* multiple times (subsequent calls are no-ops).
|
|
6
|
+
* Must be called inside a user-gesture handler (click or keydown) due to browser autoplay policy.
|
|
7
|
+
*
|
|
8
|
+
* @param volume - Master gain value (0.0–1.0, default `0.3`)
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* window.addEventListener('keydown', () => initAudio(), { once: true })
|
|
12
|
+
*/
|
|
3
13
|
export function initAudio(volume = 0.3) {
|
|
4
14
|
if (ctx)
|
|
5
15
|
return;
|
|
@@ -8,22 +18,50 @@ export function initAudio(volume = 0.3) {
|
|
|
8
18
|
masterGain.gain.value = volume;
|
|
9
19
|
masterGain.connect(ctx.destination);
|
|
10
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Resumes a suspended `AudioContext`. Browsers suspend the context on tab hide or first load.
|
|
23
|
+
* Call before scheduling any audio in the game loop.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* resumeAudio()
|
|
27
|
+
* beep(440, 80, getAudioContext()!.currentTime)
|
|
28
|
+
*/
|
|
11
29
|
export function resumeAudio() {
|
|
12
30
|
if (ctx && ctx.state === 'suspended')
|
|
13
31
|
void ctx.resume();
|
|
14
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the shared `AudioContext`, or `null` if `initAudio()` has not been called yet.
|
|
35
|
+
* Use to get `currentTime` for scheduling beeps and to check audio readiness.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const audio = getAudioContext()
|
|
39
|
+
* if (audio) beep(440, 80, audio.currentTime)
|
|
40
|
+
*/
|
|
15
41
|
export function getAudioContext() {
|
|
16
42
|
return ctx;
|
|
17
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Returns the master `GainNode`, or `null` before `initAudio()`.
|
|
46
|
+
* Connect your own oscillators/gains to this node to respect the global volume level.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* const osc = ctx.createOscillator()
|
|
50
|
+
* osc.connect(getMasterGain()!)
|
|
51
|
+
*/
|
|
18
52
|
export function getMasterGain() {
|
|
19
53
|
return masterGain;
|
|
20
54
|
}
|
|
21
55
|
/**
|
|
22
|
-
*
|
|
56
|
+
* Schedules a sequence of notes on the shared `AudioContext`.
|
|
23
57
|
* Silently exits if audio has not been initialised yet.
|
|
58
|
+
* `freq: 0` entries are treated as rests — they advance the timeline but produce no sound.
|
|
59
|
+
*
|
|
60
|
+
* @param notes - Array of `Note` objects to play in order
|
|
61
|
+
* @param startDelay - Optional delay before the first note in milliseconds (default `0`)
|
|
24
62
|
*
|
|
25
63
|
* @example
|
|
26
|
-
* //
|
|
64
|
+
* // Jingle — three notes with rests
|
|
27
65
|
* playPattern([
|
|
28
66
|
* { freq: 523, dur: 120 }, // C5
|
|
29
67
|
* { freq: 0, dur: 40 }, // rest
|
|
@@ -47,7 +85,22 @@ export function playPattern(notes, startDelay = 0) {
|
|
|
47
85
|
offset += note.dur;
|
|
48
86
|
}
|
|
49
87
|
}
|
|
50
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Schedules a single square-wave beep on the shared `AudioContext`.
|
|
90
|
+
* Uses a 5ms linear ramp attack and release to avoid click artefacts.
|
|
91
|
+
* Routed through the master gain node.
|
|
92
|
+
* Prefer `playPattern` for sequences — use `beep` when you need precise timing control.
|
|
93
|
+
*
|
|
94
|
+
* @param freq - Frequency in Hz
|
|
95
|
+
* @param durationMs - Duration in milliseconds
|
|
96
|
+
* @param startTime - Absolute `AudioContext.currentTime` to start at
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* const audio = getAudioContext()!
|
|
100
|
+
* resumeAudio()
|
|
101
|
+
* beep(440, 80, audio.currentTime)
|
|
102
|
+
* beep(880, 80, audio.currentTime + 0.15) // second note 150ms later
|
|
103
|
+
*/
|
|
51
104
|
export function beep(freq, durationMs, startTime) {
|
|
52
105
|
if (!ctx || !masterGain)
|
|
53
106
|
return;
|
package/dist/audio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"AAAA,IAAI,GAAG,GAAwB,IAAI,CAAA;AACnC,IAAI,UAAU,GAAoB,IAAI,CAAA;AAEtC,MAAM,UAAU,SAAS,CAAC,MAAM,GAAG,GAAG;IACpC,IAAI,GAAG;QAAE,OAAM;IACf,GAAG,GAAG,IAAI,YAAY,EAAE,CAAA;IACxB,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC7B,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;IAC9B,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW;QAAE,KAAK,GAAG,CAAC,MAAM,EAAE,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAA;AACnB,CAAC;AAQD
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../src/audio.ts"],"names":[],"mappings":"AAAA,IAAI,GAAG,GAAwB,IAAI,CAAA;AACnC,IAAI,UAAU,GAAoB,IAAI,CAAA;AAEtC;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,MAAM,GAAG,GAAG;IACpC,IAAI,GAAG;QAAE,OAAM;IACf,GAAG,GAAG,IAAI,YAAY,EAAE,CAAA;IACxB,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC7B,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;IAC9B,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW;QAAE,KAAK,GAAG,CAAC,MAAM,EAAE,CAAA;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAA;AACnB,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,UAAU,GAAG,CAAC;IACvD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAM;IAClB,WAAW,EAAE,CAAA;IACb,IAAI,MAAM,GAAG,UAAU,CAAA;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,CAAA;QAC/E,MAAM,IAAI,IAAI,CAAC,GAAG,CAAA;IACpB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,UAAkB,EAAE,SAAiB;IACtE,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU;QAAE,OAAM;IAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;IAC7B,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAA;IACnB,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAA;IAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK,CAAC,CAAA;IACzD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC,CAAA;IACpE,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,CAAA;IACnE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACxB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACpB,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAA;AAChD,CAAC"}
|
package/dist/font.d.ts
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZX Spectrum ROM bitmap font as a flat `Uint8Array`.
|
|
3
|
+
* 96 printable characters (ASCII 32–127), 8 bytes each — one byte per pixel row,
|
|
4
|
+
* bit 7 is the leftmost pixel. Character 127 is a solid block █.
|
|
5
|
+
* Access: `FONT[(charCode - 32) * 8 + row]`.
|
|
6
|
+
*/
|
|
1
7
|
export declare const FONT: Uint8Array<ArrayBuffer>;
|
|
8
|
+
/**
|
|
9
|
+
* Returns the bitmap byte for one row of an ASCII character.
|
|
10
|
+
* Bit 7 is the leftmost pixel; test with `byte & (0x80 >> bit)`.
|
|
11
|
+
* Returns `0` for out-of-range character codes.
|
|
12
|
+
*
|
|
13
|
+
* @param charCode - ASCII code (32–127); values outside this range return 0
|
|
14
|
+
* @param row - Pixel row within the glyph (0 = top, 7 = bottom)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* for (let row = 0; row < 8; row++) {
|
|
18
|
+
* const byte = getCharRow(65, row) // 'A'
|
|
19
|
+
* for (let bit = 0; bit < 8; bit++) {
|
|
20
|
+
* if (byte & (0x80 >> bit)) ctx.fillRect(x + bit, y + row, 1, 1)
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
2
24
|
export declare function getCharRow(charCode: number, row: number): number;
|
|
3
25
|
//# sourceMappingURL=font.d.ts.map
|
package/dist/font.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font.d.ts","sourceRoot":"","sources":["../src/font.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"font.d.ts","sourceRoot":"","sources":["../src/font.ts"],"names":[],"mappings":"AAqMA;;;;;GAKG;AACH,eAAO,MAAM,IAAI,yBAAsB,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhE"}
|
package/dist/font.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// ZX Spectrum ROM font — characters 32–127, 8 bytes per char (row-major, bit7=leftmost pixel)
|
|
2
|
+
// Source: original Spectrum ROM. Must not be altered — any change breaks Spectrum authenticity.
|
|
2
3
|
const RAW = [
|
|
3
4
|
// 32 space
|
|
4
5
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
@@ -193,7 +194,29 @@ const RAW = [
|
|
|
193
194
|
// 127 solid block (used for lives / filled blocks)
|
|
194
195
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
195
196
|
];
|
|
197
|
+
/**
|
|
198
|
+
* ZX Spectrum ROM bitmap font as a flat `Uint8Array`.
|
|
199
|
+
* 96 printable characters (ASCII 32–127), 8 bytes each — one byte per pixel row,
|
|
200
|
+
* bit 7 is the leftmost pixel. Character 127 is a solid block █.
|
|
201
|
+
* Access: `FONT[(charCode - 32) * 8 + row]`.
|
|
202
|
+
*/
|
|
196
203
|
export const FONT = new Uint8Array(RAW);
|
|
204
|
+
/**
|
|
205
|
+
* Returns the bitmap byte for one row of an ASCII character.
|
|
206
|
+
* Bit 7 is the leftmost pixel; test with `byte & (0x80 >> bit)`.
|
|
207
|
+
* Returns `0` for out-of-range character codes.
|
|
208
|
+
*
|
|
209
|
+
* @param charCode - ASCII code (32–127); values outside this range return 0
|
|
210
|
+
* @param row - Pixel row within the glyph (0 = top, 7 = bottom)
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* for (let row = 0; row < 8; row++) {
|
|
214
|
+
* const byte = getCharRow(65, row) // 'A'
|
|
215
|
+
* for (let bit = 0; bit < 8; bit++) {
|
|
216
|
+
* if (byte & (0x80 >> bit)) ctx.fillRect(x + bit, y + row, 1, 1)
|
|
217
|
+
* }
|
|
218
|
+
* }
|
|
219
|
+
*/
|
|
197
220
|
export function getCharRow(charCode, row) {
|
|
198
221
|
const idx = charCode - 32;
|
|
199
222
|
if (idx < 0 || idx >= 96)
|
package/dist/font.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"font.js","sourceRoot":"","sources":["../src/font.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,GAAG,GAAsB;IAC7B,WAAW;IACX,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,eAAe;IACf,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,mDAAmD;IACnD,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;CACxC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;AAEvC,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,GAAW;IACtD,MAAM,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAA;IACzB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;AAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"font.js","sourceRoot":"","sources":["../src/font.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,gGAAgG;AAChG,MAAM,GAAG,GAAsB;IAC7B,WAAW;IACX,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,eAAe;IACf,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,OAAO;IACP,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,QAAQ;IACR,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;IACvC,mDAAmD;IACnD,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI;CACxC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;AAEvC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,GAAW;IACtD,MAAM,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAA;IACzB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;AAC5B,CAAC"}
|
package/dist/input.d.ts
CHANGED
|
@@ -1,9 +1,51 @@
|
|
|
1
|
+
/** Movement direction returned by `tickMovement`. */
|
|
1
2
|
export type Direction = 'up' | 'down' | 'left' | 'right';
|
|
3
|
+
/**
|
|
4
|
+
* Attaches global `keydown`/`keyup` listeners and configures key-repeat timing.
|
|
5
|
+
* Call once at startup after the DOM is ready.
|
|
6
|
+
* Arrow keys drive movement; `F`/`f` = flag; `P`/`p` = pause; `Ctrl+Shift+B` = debug toggle.
|
|
7
|
+
*
|
|
8
|
+
* @param repeatDelay - Milliseconds before auto-repeat starts after initial press (default `150`)
|
|
9
|
+
* @param repeatInterval - Milliseconds between repeat ticks while key is held (default `80`)
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* initInput() // defaults: 150ms delay, 80ms repeat
|
|
13
|
+
* initInput(200, 60) // custom timing
|
|
14
|
+
*/
|
|
2
15
|
export declare function initInput(repeatDelay?: number, repeatInterval?: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Advances the key-repeat timer and returns the movement direction for this frame.
|
|
18
|
+
* Call once per frame with the frame delta in milliseconds.
|
|
19
|
+
* Returns a direction immediately on first press; repeats every `repeatInterval` ms while held.
|
|
20
|
+
* Returns `null` when no movement should occur this frame.
|
|
21
|
+
*
|
|
22
|
+
* @param dtMs - Frame delta in milliseconds
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* function gameLoop(dt: number) {
|
|
26
|
+
* const dir = tickMovement(dt)
|
|
27
|
+
* if (dir) movePlayer(dir)
|
|
28
|
+
* }
|
|
29
|
+
*/
|
|
3
30
|
export declare function tickMovement(dtMs: number): Direction | null;
|
|
31
|
+
/** Consumes and returns the `F` key flag event (flag/unflag a cell). Resets to `false` after read. */
|
|
4
32
|
export declare function consumeFlag(): boolean;
|
|
33
|
+
/** Consumes and returns the `Ctrl+Shift+B` debug toggle event. Resets to `false` after read. */
|
|
5
34
|
export declare function consumeDebug(): boolean;
|
|
35
|
+
/** Consumes and returns the `P` key pause event. Resets to `false` after read. */
|
|
6
36
|
export declare function consumePause(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Consumes and returns `true` if any key was pressed since the last call.
|
|
39
|
+
* Use to dismiss intro screens or game-over overlays.
|
|
40
|
+
*/
|
|
7
41
|
export declare function consumeAnyKey(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Returns `true` if the given key is currently held down.
|
|
44
|
+
*
|
|
45
|
+
* @param key - `KeyboardEvent.key` string (e.g. `'ArrowUp'`, `' '`, `'Enter'`)
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* if (isHeld('ArrowUp')) { ... }
|
|
49
|
+
*/
|
|
8
50
|
export declare function isHeld(key: string): boolean;
|
|
9
51
|
//# sourceMappingURL=input.d.ts.map
|
package/dist/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAmBxD,wBAAgB,SAAS,CAAC,WAAW,SAAM,EAAE,cAAc,SAAK,GAAG,IAAI,CAkCtE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAe3D;AAED,wBAAgB,WAAW,IAAI,OAAO,CAA+D;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAmBxD;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,WAAW,SAAM,EAAE,cAAc,SAAK,GAAG,IAAI,CAkCtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAe3D;AAED,sGAAsG;AACtG,wBAAgB,WAAW,IAAI,OAAO,CAA+D;AAErG,gGAAgG;AAChG,wBAAgB,YAAY,IAAI,OAAO,CAA8D;AAErG,kFAAkF;AAClF,wBAAgB,YAAY,IAAI,OAAO,CAA8D;AAErG;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAA6D;AAErG;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAyB"}
|
package/dist/input.js
CHANGED
|
@@ -12,6 +12,18 @@ let repeatPhase = 'idle';
|
|
|
12
12
|
let pendingImmediate = null;
|
|
13
13
|
let _repeatDelay = 150;
|
|
14
14
|
let _repeatInterval = 80;
|
|
15
|
+
/**
|
|
16
|
+
* Attaches global `keydown`/`keyup` listeners and configures key-repeat timing.
|
|
17
|
+
* Call once at startup after the DOM is ready.
|
|
18
|
+
* Arrow keys drive movement; `F`/`f` = flag; `P`/`p` = pause; `Ctrl+Shift+B` = debug toggle.
|
|
19
|
+
*
|
|
20
|
+
* @param repeatDelay - Milliseconds before auto-repeat starts after initial press (default `150`)
|
|
21
|
+
* @param repeatInterval - Milliseconds between repeat ticks while key is held (default `80`)
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* initInput() // defaults: 150ms delay, 80ms repeat
|
|
25
|
+
* initInput(200, 60) // custom timing
|
|
26
|
+
*/
|
|
15
27
|
export function initInput(repeatDelay = 150, repeatInterval = 80) {
|
|
16
28
|
_repeatDelay = repeatDelay;
|
|
17
29
|
_repeatInterval = repeatInterval;
|
|
@@ -45,6 +57,20 @@ export function initInput(repeatDelay = 150, repeatInterval = 80) {
|
|
|
45
57
|
}
|
|
46
58
|
});
|
|
47
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Advances the key-repeat timer and returns the movement direction for this frame.
|
|
62
|
+
* Call once per frame with the frame delta in milliseconds.
|
|
63
|
+
* Returns a direction immediately on first press; repeats every `repeatInterval` ms while held.
|
|
64
|
+
* Returns `null` when no movement should occur this frame.
|
|
65
|
+
*
|
|
66
|
+
* @param dtMs - Frame delta in milliseconds
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* function gameLoop(dt: number) {
|
|
70
|
+
* const dir = tickMovement(dt)
|
|
71
|
+
* if (dir) movePlayer(dir)
|
|
72
|
+
* }
|
|
73
|
+
*/
|
|
48
74
|
export function tickMovement(dtMs) {
|
|
49
75
|
if (pendingImmediate !== null) {
|
|
50
76
|
const d = pendingImmediate;
|
|
@@ -62,9 +88,24 @@ export function tickMovement(dtMs) {
|
|
|
62
88
|
}
|
|
63
89
|
return null;
|
|
64
90
|
}
|
|
91
|
+
/** Consumes and returns the `F` key flag event (flag/unflag a cell). Resets to `false` after read. */
|
|
65
92
|
export function consumeFlag() { const v = pendingFlag; pendingFlag = false; return v; }
|
|
93
|
+
/** Consumes and returns the `Ctrl+Shift+B` debug toggle event. Resets to `false` after read. */
|
|
66
94
|
export function consumeDebug() { const v = pendingDebug; pendingDebug = false; return v; }
|
|
95
|
+
/** Consumes and returns the `P` key pause event. Resets to `false` after read. */
|
|
67
96
|
export function consumePause() { const v = pendingPause; pendingPause = false; return v; }
|
|
97
|
+
/**
|
|
98
|
+
* Consumes and returns `true` if any key was pressed since the last call.
|
|
99
|
+
* Use to dismiss intro screens or game-over overlays.
|
|
100
|
+
*/
|
|
68
101
|
export function consumeAnyKey() { const v = pendingAnyKey; pendingAnyKey = false; return v; }
|
|
102
|
+
/**
|
|
103
|
+
* Returns `true` if the given key is currently held down.
|
|
104
|
+
*
|
|
105
|
+
* @param key - `KeyboardEvent.key` string (e.g. `'ArrowUp'`, `' '`, `'Enter'`)
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* if (isHeld('ArrowUp')) { ... }
|
|
109
|
+
*/
|
|
69
110
|
export function isHeld(key) { return held.has(key); }
|
|
70
111
|
//# sourceMappingURL=input.js.map
|
package/dist/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
|
package/dist/palette.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
/** CSS pixel scale factor: 1 game pixel = 4 CSS pixels. */
|
|
1
2
|
export declare const SCALE = 4;
|
|
3
|
+
/** Sprite and character grid size in game pixels (8×8 cell). */
|
|
2
4
|
export declare const CELL = 8;
|
|
5
|
+
/**
|
|
6
|
+
* ZX Spectrum palette — exactly 15 colours as `#RRGGBB` hex strings.
|
|
7
|
+
* Normal brightness: `BLACK` … `WHITE`. Bright variants: `B_BLACK` … `B_WHITE` (prefix `B_`).
|
|
8
|
+
* **Never use any other hex values** — all game graphics must stay within this palette.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ctx.fillStyle = C.B_CYAN
|
|
12
|
+
* ctx.fillRect(x, y, CELL, CELL)
|
|
13
|
+
*/
|
|
3
14
|
export declare const C: {
|
|
4
15
|
readonly BLACK: "#000000";
|
|
5
16
|
readonly BLUE: "#0000CD";
|
|
@@ -18,5 +29,13 @@ export declare const C: {
|
|
|
18
29
|
readonly B_YELLOW: "#FFFF00";
|
|
19
30
|
readonly B_WHITE: "#FFFFFF";
|
|
20
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Union of every hex value in the Spectrum palette (`typeof C[keyof typeof C]`).
|
|
34
|
+
* Use as the parameter type for `ink` / `paper` in your own drawing helpers
|
|
35
|
+
* to get compile-time palette enforcement.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* function highlight(ink: SpectrumColor) { ... }
|
|
39
|
+
*/
|
|
21
40
|
export type SpectrumColor = typeof C[keyof typeof C];
|
|
22
41
|
//# sourceMappingURL=palette.d.ts.map
|
package/dist/palette.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../src/palette.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../src/palette.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,KAAK,IAAI,CAAA;AAEtB,gEAAgE;AAChE,eAAO,MAAM,IAAI,IAAI,CAAA;AAErB;;;;;;;;GAQG;AACH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;CAiBJ,CAAA;AAEV;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,CAAA"}
|
package/dist/palette.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
+
/** CSS pixel scale factor: 1 game pixel = 4 CSS pixels. */
|
|
1
2
|
export const SCALE = 4;
|
|
3
|
+
/** Sprite and character grid size in game pixels (8×8 cell). */
|
|
2
4
|
export const CELL = 8;
|
|
3
|
-
|
|
5
|
+
/**
|
|
6
|
+
* ZX Spectrum palette — exactly 15 colours as `#RRGGBB` hex strings.
|
|
7
|
+
* Normal brightness: `BLACK` … `WHITE`. Bright variants: `B_BLACK` … `B_WHITE` (prefix `B_`).
|
|
8
|
+
* **Never use any other hex values** — all game graphics must stay within this palette.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ctx.fillStyle = C.B_CYAN
|
|
12
|
+
* ctx.fillRect(x, y, CELL, CELL)
|
|
13
|
+
*/
|
|
4
14
|
export const C = {
|
|
5
15
|
BLACK: '#000000',
|
|
6
16
|
BLUE: '#0000CD',
|
package/dist/palette.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../src/palette.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../src/palette.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;AAEtB,gEAAgE;AAChE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;AAErB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,KAAK,EAAM,SAAS;IACpB,IAAI,EAAO,SAAS;IACpB,GAAG,EAAQ,SAAS;IACpB,OAAO,EAAI,SAAS;IACpB,KAAK,EAAM,SAAS;IACpB,IAAI,EAAO,SAAS;IACpB,MAAM,EAAK,SAAS;IACpB,KAAK,EAAM,SAAS;IACpB,OAAO,EAAI,SAAS;IACpB,MAAM,EAAK,SAAS;IACpB,KAAK,EAAM,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAI,SAAS;IACpB,MAAM,EAAK,SAAS;IACpB,QAAQ,EAAG,SAAS;IACpB,OAAO,EAAI,SAAS;CACZ,CAAA"}
|
package/dist/renderer.d.ts
CHANGED
|
@@ -1,16 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initialises a canvas element for pixel-perfect scaled rendering.
|
|
3
|
+
* Sets canvas dimensions, applies CSS size, disables image smoothing, applies `ctx.scale()`,
|
|
4
|
+
* and returns the 2D context. All subsequent draw calls use game-pixel coordinates.
|
|
5
|
+
* Call once at game startup.
|
|
6
|
+
*
|
|
7
|
+
* @param canvas - The `<canvas>` element to configure
|
|
8
|
+
* @param scale - CSS pixels per game pixel (e.g. `4` for standard ZX Spectrum display)
|
|
9
|
+
* @param width - Canvas width in game pixels (default `256`)
|
|
10
|
+
* @param height - Canvas height in game pixels (default `192`)
|
|
11
|
+
* @returns The configured `CanvasRenderingContext2D` (already scaled — draw in game pixels)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const canvas = document.getElementById('game') as HTMLCanvasElement
|
|
15
|
+
* const ctx = setupCanvas(canvas, 4) // 256×192 game px → 1024×768 CSS px
|
|
16
|
+
* const ctx = setupCanvas(canvas, 4, 256, 208) // taller canvas for status rows
|
|
17
|
+
*/
|
|
18
|
+
export declare function setupCanvas(canvas: HTMLCanvasElement, scale: number, width?: number, height?: number): CanvasRenderingContext2D;
|
|
19
|
+
/**
|
|
20
|
+
* Flips an 8×8 sprite horizontally. Returns a new `Uint8Array`.
|
|
21
|
+
* Use to derive left-facing sprites from right-facing definitions at module load time.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* export const PLAYER_RIGHT = new Uint8Array([0x18, 0x3C, ...])
|
|
25
|
+
* export const PLAYER_LEFT = mirrorSprite(PLAYER_RIGHT)
|
|
26
|
+
*/
|
|
1
27
|
export declare function mirrorSprite(src: Uint8Array): Uint8Array;
|
|
28
|
+
/**
|
|
29
|
+
* Draws an 8×8 sprite at game coordinates `(x, y)`.
|
|
30
|
+
* Always fills the full `CELL×CELL` area with `paper` first, then renders `ink` pixels.
|
|
31
|
+
*
|
|
32
|
+
* @param ctx - Target canvas context
|
|
33
|
+
* @param sprite - 8-byte sprite bitmap (one byte per row, bit 7 = leftmost pixel)
|
|
34
|
+
* @param x - Left edge in game pixels
|
|
35
|
+
* @param y - Top edge in game pixels
|
|
36
|
+
* @param ink - Foreground color (`C.*` palette value)
|
|
37
|
+
* @param paper - Background color (`C.*` palette value)
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* drawSprite(ctx, MINE_SPRITE, col * CELL, row * CELL, C.B_RED, C.BLACK)
|
|
41
|
+
*/
|
|
2
42
|
export declare function drawSprite(ctx: CanvasRenderingContext2D, sprite: Uint8Array, x: number, y: number, ink: string, paper: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Draws a single ASCII character at game coordinates using the ROM font.
|
|
45
|
+
* If `paper` is omitted the background is not cleared (transparent).
|
|
46
|
+
*
|
|
47
|
+
* @param ctx - Target canvas context
|
|
48
|
+
* @param code - ASCII character code (32–127); 127 = solid block █
|
|
49
|
+
* @param x - Left edge in game pixels
|
|
50
|
+
* @param y - Top edge in game pixels
|
|
51
|
+
* @param ink - Foreground color
|
|
52
|
+
* @param paper - Optional background color; omit for transparent background
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* drawChar(ctx, 127, x, y, C.B_GREEN, C.BLACK) // solid block █
|
|
56
|
+
* drawChar(ctx, 'A'.charCodeAt(0), x, y, C.B_WHITE) // transparent bg
|
|
57
|
+
*/
|
|
3
58
|
export declare function drawChar(ctx: CanvasRenderingContext2D, code: number, x: number, y: number, ink: string, paper?: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Draws a string left-to-right starting at game coordinates `(x, y)`.
|
|
61
|
+
* Each character occupies one `CELL`-wide slot.
|
|
62
|
+
*
|
|
63
|
+
* @param ctx - Target canvas context
|
|
64
|
+
* @param text - ASCII string to render
|
|
65
|
+
* @param x - Left edge in game pixels
|
|
66
|
+
* @param y - Top edge in game pixels
|
|
67
|
+
* @param ink - Foreground color
|
|
68
|
+
* @param paper - Optional background color
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* drawText(ctx, 'SCORE:00000', 0, statusY, C.B_WHITE, C.BLACK)
|
|
72
|
+
*/
|
|
4
73
|
export declare function drawText(ctx: CanvasRenderingContext2D, text: string, x: number, y: number, ink: string, paper?: string): void;
|
|
5
74
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
75
|
+
* Draws a string centered horizontally within a canvas of `cols` character columns.
|
|
76
|
+
*
|
|
77
|
+
* @param ctx - Target canvas context
|
|
78
|
+
* @param text - ASCII string to render
|
|
79
|
+
* @param y - Top edge in game pixels
|
|
80
|
+
* @param cols - Total character columns (canvas width ÷ `CELL`, e.g. 32 for standard Spectrum)
|
|
81
|
+
* @param ink - Foreground color
|
|
82
|
+
* @param paper - Optional background color
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* // Bind cols once to avoid passing it every time:
|
|
86
|
+
* const centered = (ctx: CanvasRenderingContext2D, text: string, y: number, ink: string) =>
|
|
87
|
+
* drawTextCentered(ctx, text, y, COLS, ink)
|
|
88
|
+
* centered(ctx, 'GAME OVER', y, C.B_RED)
|
|
89
|
+
*/
|
|
90
|
+
export declare function drawTextCentered(ctx: CanvasRenderingContext2D, text: string, y: number, cols: number, ink: string, paper?: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Flashes `document.body.style.backgroundColor` between `color` and `resetColor`.
|
|
93
|
+
* Fire-and-forget — does not block. Uses `setInterval` internally.
|
|
94
|
+
* One "flash" = one `color → resetColor` cycle; total steps = `times * 2`.
|
|
95
|
+
* Always resets to `resetColor` on completion.
|
|
96
|
+
*
|
|
97
|
+
* @param color - Flash color (`C.*` palette value or any CSS color string)
|
|
98
|
+
* @param times - Number of flashes
|
|
99
|
+
* @param intervalMs - Duration of each half-cycle in milliseconds
|
|
100
|
+
* @param resetColor - Final color after flashing (default `C.BLACK`)
|
|
8
101
|
*
|
|
9
102
|
* @example
|
|
10
|
-
* flashBorder(C.B_RED, 3, 150) // explosion — 3 red flashes
|
|
103
|
+
* flashBorder(C.B_RED, 3, 150) // explosion — 3 red flashes → black
|
|
11
104
|
* flashBorder(C.B_GREEN, 2, 200) // level complete
|
|
12
|
-
* flashBorder(C.B_CYAN, 2, 120, C.BLUE) // reset to blue border
|
|
105
|
+
* flashBorder(C.B_CYAN, 2, 120, C.BLUE) // flash → reset to blue border
|
|
13
106
|
*/
|
|
14
107
|
export declare function flashBorder(color: string, times: number, intervalMs: number, resetColor?: string): void;
|
|
15
|
-
export declare function drawTextCentered(ctx: CanvasRenderingContext2D, text: string, y: number, cols: number, ink: string, paper?: string): void;
|
|
16
108
|
//# sourceMappingURL=renderer.d.ts.map
|
package/dist/renderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,KAAK,SAAM,EACX,MAAM,SAAM,GACX,wBAAwB,CAS1B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAUxD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,wBAAwB,EAC7B,MAAM,EAAE,UAAU,EAClB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GACzB,IAAI,CAUN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAC1B,IAAI,CAYN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAC1B,IAAI,CAIN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAC1B,IAAI,CAGN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAgB,GAC3B,IAAI,CAWN"}
|