@mailwoman/map-tui 9.1.1 → 9.3.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 +59 -0
- package/lib/browser.ts +525 -0
- package/lib/cli-args.ts +233 -0
- package/lib/cli.ts +141 -0
- package/{frame.ts → lib/frame.ts} +33 -6
- package/lib/index.ts +13 -0
- package/lib/input.ts +288 -0
- package/{mercator.ts → lib/mercator.ts} +20 -0
- package/{mvt.ts → lib/mvt.ts} +2 -2
- package/{raster.ts → lib/raster.ts} +1 -1
- package/{renderer.ts → lib/renderer.ts} +86 -36
- package/lib/style.ts +115 -0
- package/{tile-source.ts → lib/tile-source.ts} +76 -20
- package/out/browser.d.ts +126 -0
- package/out/browser.d.ts.map +1 -0
- package/out/browser.js +373 -0
- package/out/browser.js.map +1 -0
- package/out/cli-args.d.ts +47 -0
- package/out/cli-args.d.ts.map +1 -0
- package/out/cli-args.js +171 -0
- package/out/cli-args.js.map +1 -0
- package/out/cli.d.ts +8 -0
- package/out/cli.d.ts.map +1 -0
- package/out/cli.js +119 -0
- package/out/cli.js.map +1 -0
- package/out/frame.d.ts +20 -2
- package/out/frame.d.ts.map +1 -1
- package/out/frame.js +28 -3
- package/out/frame.js.map +1 -1
- package/out/index.d.ts +7 -7
- package/out/index.d.ts.map +1 -1
- package/out/index.js +7 -7
- package/out/index.js.map +1 -1
- package/out/input.d.ts +93 -0
- package/out/input.d.ts.map +1 -0
- package/out/input.js +214 -0
- package/out/input.js.map +1 -0
- package/out/mercator.d.ts +13 -0
- package/out/mercator.d.ts.map +1 -1
- package/out/mercator.js +16 -0
- package/out/mercator.js.map +1 -1
- package/out/mvt.d.ts.map +1 -1
- package/out/mvt.js +2 -2
- package/out/mvt.js.map +1 -1
- package/out/raster.d.ts +1 -1
- package/out/raster.d.ts.map +1 -1
- package/out/raster.js.map +1 -1
- package/out/renderer.d.ts +11 -14
- package/out/renderer.d.ts.map +1 -1
- package/out/renderer.js +46 -26
- package/out/renderer.js.map +1 -1
- package/out/style.d.ts +22 -11
- package/out/style.d.ts.map +1 -1
- package/out/style.js +49 -4
- package/out/style.js.map +1 -1
- package/out/tile-source.d.ts +25 -4
- package/out/tile-source.d.ts.map +1 -1
- package/out/tile-source.js +46 -14
- package/out/tile-source.js.map +1 -1
- package/out/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +105 -6
- package/index.ts +0 -13
- package/out/tsconfig.tsbuildinfo +0 -1
- package/style.ts +0 -62
package/out/input.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright Sister Software.
|
|
3
|
+
* @license AGPL-3.0
|
|
4
|
+
* @author Teffen Ellis, et al.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Terminal input decoding for the interactive map browser.
|
|
8
|
+
*
|
|
9
|
+
* `decodeInputChunk` turns a raw-mode stdin chunk into zero or more {@link MapTUIInput} events. It stays pure — the
|
|
10
|
+
* caller owns the only state there is, the unresolved trailing fragment the function hands back — so one chunk in gives
|
|
11
|
+
* the same events out every time.
|
|
12
|
+
*
|
|
13
|
+
* THE FALLBACK IS THE DANGEROUS PART. An ESC this decoder had no rule for used to mean "the Esc key", i.e. QUIT, which
|
|
14
|
+
* made every unrecognized escape sequence a quit: F1 (`ESC O P`), an OSC reply the terminal sends unasked (`ESC ] 11 ;
|
|
15
|
+
* rgb:… BEL`), and — worst, because it needs no exotic key at all — a mouse report split across two stdin reads, whose
|
|
16
|
+
* first half ends inside the sequence. So the fallback now separates three cases:
|
|
17
|
+
*
|
|
18
|
+
* - A sequence this decoder recognizes is consumed and acted on (arrows, SGR mouse).
|
|
19
|
+
* - A sequence it does NOT recognize is consumed WHOLE and ignored: CSI (`ESC [ … final`), SS3 (`ESC O final`), and the
|
|
20
|
+
* string family (OSC/DCS/SOS/PM/APC, terminated by BEL or ST). Re-scanning their bodies as characters is how a `q`
|
|
21
|
+
* inside a cursor-position report quit the app.
|
|
22
|
+
* - A chunk that ENDS mid-sequence — including a lone trailing ESC, which is byte-for-byte the start of one — is not
|
|
23
|
+
* decoded at all: it comes back as {@link DecodedInput.pending} for the caller to prepend to the next chunk. Quit is
|
|
24
|
+
* emitted only for an ESC that is neither, i.e. one whose following byte cannot continue a sequence.
|
|
25
|
+
*
|
|
26
|
+
* Holding costs a lone Esc keypress its effect until the next byte arrives. That is the right side of the trade for a
|
|
27
|
+
* browser whose advertised quit keys are `q` and Ctrl+C: the alternative is a drag ending the session because the
|
|
28
|
+
* kernel split a read.
|
|
29
|
+
*
|
|
30
|
+
* Mouse reports are SGR-encoded (DEC private mode 1006), which is what {@link MOUSE_ENABLE} asks for. Their coordinates
|
|
31
|
+
* are 1-based on the wire and 0-based in every event here — the off-by-one lives at this boundary and nowhere else.
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Enables mouse reporting: button events (1000), drag/button-motion tracking (1002), and SGR extended coordinates
|
|
35
|
+
* (1006) so columns past 223 survive.
|
|
36
|
+
*/
|
|
37
|
+
export const MOUSE_ENABLE = "\u001B[?1000h\u001B[?1002h\u001B[?1006h";
|
|
38
|
+
/**
|
|
39
|
+
* Disables mouse reporting, in the reverse order it was enabled.
|
|
40
|
+
*/
|
|
41
|
+
export const MOUSE_DISABLE = "\u001B[?1006l\u001B[?1002l\u001B[?1000l";
|
|
42
|
+
const ESC = "\u001B";
|
|
43
|
+
const CTRL_C = "\u0003";
|
|
44
|
+
/* oxlint-disable no-control-regex -- ESC (U+001B) is the byte every pattern below exists to match. A decoder of
|
|
45
|
+
terminal escape sequences cannot avoid the control character the sequences are made of. */
|
|
46
|
+
/**
|
|
47
|
+
* SGR mouse report: `ESC [ < button ; column ; row (M|m)`, where `M` is a press/motion and `m` a release.
|
|
48
|
+
*/
|
|
49
|
+
const MOUSE_SGR_PATTERN = /\u001B\[<(\d+);(\d+);(\d+)([Mm])/y;
|
|
50
|
+
/**
|
|
51
|
+
* Cursor keys, in both normal (`ESC [ A`) and application (`ESC O A`) modes — a terminal may be left in either.
|
|
52
|
+
*/
|
|
53
|
+
const ARROW_PATTERN = /\u001B(?:\[|O)([ABCD])/y;
|
|
54
|
+
/**
|
|
55
|
+
* Any other CSI sequence, consumed whole and ignored. Without this, an unhandled sequence's body would be re-scanned as
|
|
56
|
+
* individual key presses, and a stray `q` inside one would quit the app.
|
|
57
|
+
*/
|
|
58
|
+
const UNKNOWN_CSI_PATTERN = /\u001B\[[\d;<>?]*[\u0020-\u002F]*[\u0040-\u007E]/y;
|
|
59
|
+
/**
|
|
60
|
+
* Any other SS3 sequence (`ESC O <final>`) — F1–F4 on xterm, and the numeric keypad in application mode. Two bytes
|
|
61
|
+
* shorter than a CSI, and until this pattern existed the likeliest key on a keyboard to quit the browser by accident.
|
|
62
|
+
*/
|
|
63
|
+
const UNKNOWN_SS3_PATTERN = /\u001BO[\u0040-\u007E]/y;
|
|
64
|
+
/**
|
|
65
|
+
* The string-sequence family: OSC (`ESC ]`), DCS (`ESC P`), SOS (`ESC X`), PM (`ESC ^`), APC (`ESC _`), each running to
|
|
66
|
+
* a BEL or an ST (`ESC \`). A terminal sends these UNASKED — an OSC colour or clipboard reply lands on stdin with no
|
|
67
|
+
* key pressed — so consuming them is not a nicety.
|
|
68
|
+
*/
|
|
69
|
+
const STRING_SEQUENCE_PATTERN = /\u001B[P\]X^_][\s\S]*?(?:\u0007|\u001B\\)/y;
|
|
70
|
+
/**
|
|
71
|
+
* Every "unrecognized but complete" sequence, in the order they are tried. Sharing one list is what keeps a new
|
|
72
|
+
* sequence family from being added to the consumer and forgotten in the incomplete test below.
|
|
73
|
+
*/
|
|
74
|
+
const UNRECOGNIZED_PATTERNS = [UNKNOWN_CSI_PATTERN, UNKNOWN_SS3_PATTERN, STRING_SEQUENCE_PATTERN];
|
|
75
|
+
/**
|
|
76
|
+
* A chunk that STOPS inside a sequence. The end-anchors are what make these "incomplete" rather than "unrecognized":
|
|
77
|
+
* each requires the WHOLE remainder of the chunk to be a legal prefix and nothing more. The first covers both a lone
|
|
78
|
+
* trailing ESC and an `ESC O` still waiting for its final byte.
|
|
79
|
+
*/
|
|
80
|
+
const PARTIAL_PATTERNS = [/\u001BO?$/y, /\u001B\[[\d;<>?]*[\u0020-\u002F]*$/y, /\u001B[P\]X^_][^\u0007]*$/y];
|
|
81
|
+
/* oxlint-enable no-control-regex */
|
|
82
|
+
/**
|
|
83
|
+
* Wheel reports set bit 6 of the button field; the low bit then separates up (0) from down (1).
|
|
84
|
+
*/
|
|
85
|
+
const WHEEL_FLAG = 64;
|
|
86
|
+
/**
|
|
87
|
+
* Motion reports set bit 5. With mode 1002 that means "moved with a button held" — a drag.
|
|
88
|
+
*/
|
|
89
|
+
const MOTION_FLAG = 32;
|
|
90
|
+
const BUTTON_MASK = 3;
|
|
91
|
+
const LEFT_BUTTON = 0;
|
|
92
|
+
/**
|
|
93
|
+
* The longest fragment worth holding for the next chunk (64 KB). See the drop site: this bounds an unterminated string
|
|
94
|
+
* sequence, not a real key.
|
|
95
|
+
*/
|
|
96
|
+
const MAX_PENDING_LENGTH = 65_536;
|
|
97
|
+
const ARROW_INPUTS = {
|
|
98
|
+
A: { kind: "pan", dx: 0, dy: -1 },
|
|
99
|
+
B: { kind: "pan", dx: 0, dy: 1 },
|
|
100
|
+
C: { kind: "pan", dx: 1, dy: 0 },
|
|
101
|
+
D: { kind: "pan", dx: -1, dy: 0 },
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Single-character bindings. `a`/`z` are mapscii's zoom keys, `+`/`-` the ones every other map uses, and `hjkl` the vim
|
|
105
|
+
* pan set mapscii also accepts. `y` joins `z` for zoom-out because on a QWERTZ keyboard it sits where `z` does on
|
|
106
|
+
* QWERTY — mapscii binds both for the same reason.
|
|
107
|
+
*/
|
|
108
|
+
const CHARACTER_INPUTS = {
|
|
109
|
+
q: { kind: "quit" },
|
|
110
|
+
Q: { kind: "quit" },
|
|
111
|
+
"+": { kind: "zoom", delta: 1 },
|
|
112
|
+
"=": { kind: "zoom", delta: 1 },
|
|
113
|
+
a: { kind: "zoom", delta: 1 },
|
|
114
|
+
"-": { kind: "zoom", delta: -1 },
|
|
115
|
+
_: { kind: "zoom", delta: -1 },
|
|
116
|
+
z: { kind: "zoom", delta: -1 },
|
|
117
|
+
y: { kind: "zoom", delta: -1 },
|
|
118
|
+
h: { kind: "pan", dx: -1, dy: 0 },
|
|
119
|
+
j: { kind: "pan", dx: 0, dy: 1 },
|
|
120
|
+
k: { kind: "pan", dx: 0, dy: -1 },
|
|
121
|
+
l: { kind: "pan", dx: 1, dy: 0 },
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* The length of the unrecognized-but-complete sequence at `index`, or null when there isn't one.
|
|
125
|
+
*/
|
|
126
|
+
function consumeUnrecognized(buffer, index) {
|
|
127
|
+
for (const pattern of UNRECOGNIZED_PATTERNS) {
|
|
128
|
+
pattern.lastIndex = index;
|
|
129
|
+
if (pattern.exec(buffer))
|
|
130
|
+
return pattern.lastIndex;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* True when everything from `index` to the end of the chunk is a legal PREFIX of a sequence — i.e. the terminal is
|
|
136
|
+
* mid-sequence and the rest is in the next read.
|
|
137
|
+
*/
|
|
138
|
+
function isIncompleteSequence(buffer, index) {
|
|
139
|
+
for (const pattern of PARTIAL_PATTERNS) {
|
|
140
|
+
pattern.lastIndex = index;
|
|
141
|
+
if (pattern.exec(buffer))
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Builds the event for one SGR mouse report.
|
|
148
|
+
*/
|
|
149
|
+
function mouseInput(button, column, row, final) {
|
|
150
|
+
if (button & WHEEL_FLAG) {
|
|
151
|
+
return { kind: "wheel", delta: button & 1 ? -1 : 1, column, row };
|
|
152
|
+
}
|
|
153
|
+
if (final === "m")
|
|
154
|
+
return { kind: "release" };
|
|
155
|
+
if ((button & BUTTON_MASK) !== LEFT_BUTTON)
|
|
156
|
+
return null;
|
|
157
|
+
return button & MOTION_FLAG ? { kind: "drag", column, row } : { kind: "press", column, row };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Decodes one raw-mode stdin chunk into input events. Unrecognized bytes are dropped; an unresolved trailing escape
|
|
161
|
+
* fragment is returned rather than decoded, and the caller passes it back as `pending` with the next chunk.
|
|
162
|
+
*/
|
|
163
|
+
export function decodeInputChunk(chunk, pending = "") {
|
|
164
|
+
const events = [];
|
|
165
|
+
const buffer = pending + chunk;
|
|
166
|
+
let index = 0;
|
|
167
|
+
while (index < buffer.length) {
|
|
168
|
+
const character = buffer[index];
|
|
169
|
+
if (character !== ESC) {
|
|
170
|
+
const input = character === CTRL_C ? { kind: "interrupt" } : CHARACTER_INPUTS[character];
|
|
171
|
+
if (input) {
|
|
172
|
+
events.push(input);
|
|
173
|
+
}
|
|
174
|
+
index += 1;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
MOUSE_SGR_PATTERN.lastIndex = index;
|
|
178
|
+
const mouse = MOUSE_SGR_PATTERN.exec(buffer);
|
|
179
|
+
if (mouse) {
|
|
180
|
+
const input = mouseInput(Number(mouse[1]), Number(mouse[2]) - 1, Number(mouse[3]) - 1, mouse[4]);
|
|
181
|
+
if (input) {
|
|
182
|
+
events.push(input);
|
|
183
|
+
}
|
|
184
|
+
index = MOUSE_SGR_PATTERN.lastIndex;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
ARROW_PATTERN.lastIndex = index;
|
|
188
|
+
const arrow = ARROW_PATTERN.exec(buffer);
|
|
189
|
+
if (arrow) {
|
|
190
|
+
events.push(ARROW_INPUTS[arrow[1]]);
|
|
191
|
+
index = ARROW_PATTERN.lastIndex;
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
const consumed = consumeUnrecognized(buffer, index);
|
|
195
|
+
if (consumed !== null) {
|
|
196
|
+
index = consumed;
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
// The buffer stops inside a sequence — hand the fragment back instead of guessing at it.
|
|
200
|
+
if (isIncompleteSequence(buffer, index)) {
|
|
201
|
+
const fragment = buffer.slice(index);
|
|
202
|
+
// …unless it has stopped being plausible. An unterminated string sequence would otherwise grow the held
|
|
203
|
+
// fragment for the life of the process. Dropping is the safe failure: it emits nothing, where flushing
|
|
204
|
+
// the fragment back through the decoder would read its body as keys, which is the bug this all exists
|
|
205
|
+
// for. The cap is generous because an OSC 52 clipboard reply is legitimately large.
|
|
206
|
+
return { events, pending: fragment.length > MAX_PENDING_LENGTH ? "" : fragment };
|
|
207
|
+
}
|
|
208
|
+
// An ESC whose next byte cannot continue a sequence: the Esc KEY.
|
|
209
|
+
events.push({ kind: "quit" });
|
|
210
|
+
index += 1;
|
|
211
|
+
}
|
|
212
|
+
return { events, pending: "" };
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=input.js.map
|
package/out/input.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../lib/input.ts"],"names":[],"mappings":"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"}
|
package/out/mercator.d.ts
CHANGED
|
@@ -26,4 +26,17 @@ export interface WorldPx {
|
|
|
26
26
|
export declare function lonLatToWorldPx(lon: number, lat: number, zoom: number): WorldPx;
|
|
27
27
|
export declare function worldPxToLonLat(x: number, y: number, zoom: number): LonLat;
|
|
28
28
|
export declare function metersPerPixel(lat: number, zoom: number): number;
|
|
29
|
+
/**
|
|
30
|
+
* Wraps a longitude into [-180, 180) so panning past the antimeridian continues rather than running off the pyramid.
|
|
31
|
+
*/
|
|
32
|
+
export declare function wrapLongitude(lon: number): number;
|
|
33
|
+
/**
|
|
34
|
+
* Subpixel dimensions of one braille cell — 2 columns wide, 4 rows tall. The unit every projection-to-cell conversion
|
|
35
|
+
* works in, shared by the renderer and the browser so both sides of the frame boundary agree on the grid.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SUBPIXEL_COLUMNS_PER_CELL = 2;
|
|
38
|
+
/**
|
|
39
|
+
* See {@link SUBPIXEL_COLUMNS_PER_CELL} — the vertical half of the braille 2×4 subpixel grid.
|
|
40
|
+
*/
|
|
41
|
+
export declare const SUBPIXEL_ROWS_PER_CELL = 4;
|
|
29
42
|
//# sourceMappingURL=mercator.d.ts.map
|
package/out/mercator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mercator.d.ts","sourceRoot":"","sources":["../mercator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,MAAM,CAAA;AAE5B,MAAM,WAAW,MAAM;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,OAAO;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACT;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ/E;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAID,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
|
1
|
+
{"version":3,"file":"mercator.d.ts","sourceRoot":"","sources":["../lib/mercator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,MAAM,CAAA;AAE5B,MAAM,WAAW,MAAM;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,OAAO;IACvB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACT;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ/E;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAID,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAE1C;;GAEG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA"}
|
package/out/mercator.js
CHANGED
|
@@ -35,4 +35,20 @@ const EARTH_CIRCUMFERENCE_M = 40_075_016.686;
|
|
|
35
35
|
export function metersPerPixel(lat, zoom) {
|
|
36
36
|
return (EARTH_CIRCUMFERENCE_M * Math.cos((lat * Math.PI) / 180)) / (TILE_SIZE * 2 ** zoom);
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Wraps a longitude into [-180, 180) so panning past the antimeridian continues rather than running off the pyramid.
|
|
40
|
+
*/
|
|
41
|
+
export function wrapLongitude(lon) {
|
|
42
|
+
const wrapped = (((lon + 180) % 360) + 360) % 360;
|
|
43
|
+
return wrapped - 180;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Subpixel dimensions of one braille cell — 2 columns wide, 4 rows tall. The unit every projection-to-cell conversion
|
|
47
|
+
* works in, shared by the renderer and the browser so both sides of the frame boundary agree on the grid.
|
|
48
|
+
*/
|
|
49
|
+
export const SUBPIXEL_COLUMNS_PER_CELL = 2;
|
|
50
|
+
/**
|
|
51
|
+
* See {@link SUBPIXEL_COLUMNS_PER_CELL} — the vertical half of the braille 2×4 subpixel grid.
|
|
52
|
+
*/
|
|
53
|
+
export const SUBPIXEL_ROWS_PER_CELL = 4;
|
|
38
54
|
//# sourceMappingURL=mercator.js.map
|
package/out/mercator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mercator.js","sourceRoot":"","sources":["../mercator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA;AAY5B,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY;IACrE,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,IAAI,IAAI,CAAA;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;IAE3C,OAAO;QACN,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAC5B,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;KACrE,CAAA;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;IACjE,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,IAAI,IAAI,CAAA;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;IAEzC,OAAO;QACN,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;QAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;KAC9C,CAAA;AACF,CAAC;AAED,MAAM,qBAAqB,GAAG,cAAc,CAAA;AAE5C,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,IAAY;IACvD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;AAC3F,CAAC"}
|
|
1
|
+
{"version":3,"file":"mercator.js","sourceRoot":"","sources":["../lib/mercator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAA;AAY5B,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY;IACrE,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,IAAI,IAAI,CAAA;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAA;IAE3C,OAAO;QACN,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;QAC5B,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;KACrE,CAAA;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;IACjE,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,IAAI,IAAI,CAAA;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAA;IAEzC,OAAO;QACN,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG;QAC5B,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;KAC9C,CAAA;AACF,CAAC;AAED,MAAM,qBAAqB,GAAG,cAAc,CAAA;AAE5C,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,IAAY;IACvD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;AAC3F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACxC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;IAEjD,OAAO,OAAO,GAAG,GAAG,CAAA;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA"}
|
package/out/mvt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mvt.d.ts","sourceRoot":"","sources":["../mvt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEf;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,EAAE,CAkB1D"}
|
|
1
|
+
{"version":3,"file":"mvt.d.ts","sourceRoot":"","sources":["../lib/mvt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEf;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,EAAE,CAkB1D"}
|
package/out/mvt.js
CHANGED
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* never touches the upstream library's lazy-geometry classes.
|
|
11
11
|
*/
|
|
12
12
|
import { VectorTile } from "@mapbox/vector-tile";
|
|
13
|
-
import
|
|
13
|
+
import { PbfReader } from "pbf";
|
|
14
14
|
export function decodeMVT(data) {
|
|
15
|
-
const tile = new VectorTile(new
|
|
15
|
+
const tile = new VectorTile(new PbfReader(data));
|
|
16
16
|
return Object.entries(tile.layers).map(([name, layer]) => {
|
|
17
17
|
const features = [];
|
|
18
18
|
for (let index = 0; index < layer.length; index++) {
|
package/out/mvt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mvt.js","sourceRoot":"","sources":["../mvt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"mvt.js","sourceRoot":"","sources":["../lib/mvt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAqB/B,MAAM,UAAU,SAAS,CAAC,IAAgB;IACzC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACxD,MAAM,QAAQ,GAAqB,EAAE,CAAA;QAErC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAEpC,QAAQ,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,OAAO,CAAC,IAAiB;gBAC/B,QAAQ,EAAE,OAAO,CAAC,YAAY,EAAE;gBAChC,UAAU,EAAE,OAAO,CAAC,UAAqC;aACzD,CAAC,CAAA;QACH,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;AACH,CAAC"}
|
package/out/raster.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* bounds-check geometry themselves. The polyline and circle primitives floor their coordinates to integers on entry;
|
|
12
12
|
* {@link fillPolygon} does not — its scanline edge math keeps ring vertices as given, see its own docstring.
|
|
13
13
|
*/
|
|
14
|
-
import type { RGB } from "
|
|
14
|
+
import type { RGB } from "#style";
|
|
15
15
|
/**
|
|
16
16
|
* A row-major RGBA pixel buffer. Alpha starts at 0 (unlit/transparent) everywhere; drawing a pixel sets it to 255,
|
|
17
17
|
* which is how callers (including this module's own tests) distinguish "lit" from "background".
|
package/out/raster.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster.d.ts","sourceRoot":"","sources":["../raster.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"raster.d.ts","sourceRoot":"","sources":["../lib/raster.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAEjC;;;GAGG;AACH,qBAAa,QAAQ;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;gBAEpB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;CAahD;AAuDD;;;;GAIG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,KAAK,EAAE,GAAG,EACV,KAAK,EAAE,MAAM,GACX,IAAI,CAON;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAC1B,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,EAC7D,KAAK,EAAE,GAAG,GACR,IAAI,CAkCN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAgC7G"}
|
package/out/raster.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raster.js","sourceRoot":"","sources":["../raster.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"raster.js","sourceRoot":"","sources":["../lib/raster.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;;GAGG;AACH,MAAM,OAAO,QAAQ;IACX,KAAK,CAAQ;IACb,MAAM,CAAQ;IACvB;;OAEG;IACM,IAAI,CAAmB;IAEhC,YAAY,KAAa,EAAE,MAAc;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA;IACtD,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,KAAU;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAExB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QAErE,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QAEzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAC5B,CAAC;CACD;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAc,EAAE,CAAS,EAAE,CAAS,EAAE,KAAU,EAAE,KAAa;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAElC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;QACnC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACnD,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAc,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,KAAU,EAAE,KAAa;IAC7G,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAE3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,CAAA;IAEnB,SAAS,CAAC;QACT,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;YAAE,MAAK;QAEnC,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAA;QAE7B,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;YACvB,KAAK,IAAI,EAAE,CAAA;YACX,CAAC,IAAI,KAAK,CAAA;QACX,CAAC;QAED,IAAI,WAAW,IAAI,EAAE,EAAE,CAAC;YACvB,KAAK,IAAI,EAAE,CAAA;YACX,CAAC,IAAI,KAAK,CAAA;QACX,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC3B,IAAc,EACd,MAA+C,EAC/C,KAAU,EACV,KAAa;IAEb,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAE,CAAA;QACxB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAE,CAAA;QAE5B,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACpD,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAC1B,IAAc,EACd,KAA6D,EAC7D,KAAU;IAEV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAA;QACrB,MAAM,aAAa,GAAa,EAAE,CAAA;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;gBAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAE,CAAA;gBAEtC,gFAAgF;gBAChF,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,SAAQ;gBAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAE/B,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI;oBAAE,SAAQ;gBAE3C,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBACrC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,CAAC;QACF,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;QAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAA;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,GAAG,CAAC,CAAA;YAEnD,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;YAC3B,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,OAAe,EAAE,OAAe,EAAE,MAAc,EAAE,KAAU;IACtG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAE5B,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;IAEjB,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,EAAU,EAAQ,EAAE;QACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC,CAAA;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACf,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAEjB,CAAC,EAAE,CAAA;QAEH,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;aAAM,CAAC;YACP,CAAC,EAAE,CAAA;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;IACF,CAAC;AACF,CAAC"}
|
package/out/renderer.d.ts
CHANGED
|
@@ -3,19 +3,9 @@
|
|
|
3
3
|
* @license AGPL-3.0
|
|
4
4
|
* @author Teffen Ellis, et al.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* `MapRenderer.renderFrame` is the package's single public entry point: given a `Viewport` (center lon/lat, zoom, cell
|
|
10
|
-
* columns/rows), it fetches the covering tiles from a `TileSource`, rasterizes styled geometry (./style.ts,
|
|
11
|
-
* ./raster.ts) into a subpixel RGBA grid, converts that grid to braille cells (./frame.ts), then overlays collected
|
|
12
|
-
* labels and marker/ring annotations on top. Draw order is fill → line → label per the layer style table, with overlays
|
|
13
|
-
* (ring, labels, markers) layered afterward in that order — markers deliberately skip the label collision bitmap so a
|
|
14
|
-
* requested marker always wins the cell.
|
|
15
|
-
*/
|
|
16
|
-
import { type MapFrame } from "./frame.ts";
|
|
17
|
-
import { type RGB } from "./style.ts";
|
|
18
|
-
import type { TileSource } from "./tile-source.ts";
|
|
6
|
+
import { type MapFrame } from "#frame";
|
|
7
|
+
import { type RGB } from "#style";
|
|
8
|
+
import type { TileProvider } from "#tile-source";
|
|
19
9
|
export interface Viewport {
|
|
20
10
|
centerLon: number;
|
|
21
11
|
centerLat: number;
|
|
@@ -41,7 +31,14 @@ export interface RingSpec {
|
|
|
41
31
|
*/
|
|
42
32
|
export declare class MapRenderer {
|
|
43
33
|
private readonly source;
|
|
44
|
-
constructor(source:
|
|
34
|
+
constructor(source: TileProvider);
|
|
35
|
+
/**
|
|
36
|
+
* Resolves each viewport slot to its native tile or, when the archive has none — a spatially sparse deep band, a
|
|
37
|
+
* zoom-capped extract — the nearest existing ancestor. Ancestors shared by several absent slots are deduplicated so
|
|
38
|
+
* their geometry rasterizes once, and coarse tiles sort first so native detail paints over the fallback wherever both
|
|
39
|
+
* cover a cell.
|
|
40
|
+
*/
|
|
41
|
+
private resolveTiles;
|
|
45
42
|
renderFrame(viewport: Viewport, overlays?: {
|
|
46
43
|
markers?: MarkerSpec[];
|
|
47
44
|
ring?: RingSpec;
|
package/out/renderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../lib/renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,EAAE,KAAK,QAAQ,EAA8C,MAAM,QAAQ,CAAA;AAUlF,OAAO,EAAmB,KAAK,GAAG,EAAkC,MAAM,QAAQ,CAAA;AAClF,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,cAAc,CAAA;AAE7D,MAAM,WAAW,QAAQ;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,UAAU;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,GAAG,CAAA;CACX;AAED,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,CAAA;CACpB;AA4KD;;;;GAIG;AACH,qBAAa,WAAW;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,YAAY;IAIhC;;;;;OAKG;YACW,YAAY;IA8BpB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;CA2EhH"}
|
package/out/renderer.js
CHANGED
|
@@ -13,29 +13,22 @@
|
|
|
13
13
|
* (ring, labels, markers) layered afterward in that order — markers deliberately skip the label collision bitmap so a
|
|
14
14
|
* requested marker always wins the cell.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
16
|
+
import { clamp } from "@mailwoman/core/numeric";
|
|
17
|
+
import { overlayText, rasterizeToFrame, rgbToPacked } from "#frame";
|
|
18
|
+
import { lonLatToWorldPx, metersPerPixel, SUBPIXEL_COLUMNS_PER_CELL, SUBPIXEL_ROWS_PER_CELL, TILE_SIZE, } from "#mercator";
|
|
19
|
+
import { drawCircle, drawPolyline, fillPolygon, RGBAGrid } from "#raster";
|
|
20
|
+
import { styleForFeatureKind, stylesFor } from "#style";
|
|
20
21
|
const DEFAULT_MARKER_CHAR = "●";
|
|
21
22
|
const DEFAULT_MARKER_COLOR = [255, 80, 80];
|
|
22
|
-
/**
|
|
23
|
-
* Subpixel dimensions per braille cell: 2 columns wide, 4 rows tall.
|
|
24
|
-
*/
|
|
25
|
-
const SUBPIXEL_COLUMNS_PER_CELL = 2;
|
|
26
|
-
const SUBPIXEL_ROWS_PER_CELL = 4;
|
|
27
23
|
/**
|
|
28
24
|
* Minimum ring radius (in device pixels) worth drawing — smaller than this, the midpoint circle algorithm degenerates
|
|
29
25
|
* to a single point or nothing useful.
|
|
30
26
|
*/
|
|
31
27
|
const MIN_RING_RADIUS_PX = 2;
|
|
32
|
-
function clamp(value, min, max) {
|
|
33
|
-
return Math.min(Math.max(value, min), max);
|
|
34
|
-
}
|
|
35
28
|
function projectPoint(projection, gx, gy) {
|
|
36
29
|
return {
|
|
37
|
-
x: projection.
|
|
38
|
-
y: projection.
|
|
30
|
+
x: projection.worldX + gx * projection.scale - projection.origin.x,
|
|
31
|
+
y: projection.worldY + gy * projection.scale - projection.origin.y,
|
|
39
32
|
};
|
|
40
33
|
}
|
|
41
34
|
function rasterizeFill(grid, feature, projection, color) {
|
|
@@ -85,14 +78,20 @@ function rasterizeFeature(grid, feature, style, renderZoom, projection, pendingL
|
|
|
85
78
|
* Rasterizes every layer/style/feature in one tile matching `kind`. Pulled out of {@link MapRenderer.renderFrame} so
|
|
86
79
|
* that method's own tile loop doesn't accumulate this function's three nested loops on top of its own.
|
|
87
80
|
*/
|
|
88
|
-
function rasterizeTileForKind(grid,
|
|
89
|
-
for (const layer of tile.layers) {
|
|
81
|
+
function rasterizeTileForKind(grid, resolved, kind, renderZoom, origin, pendingLabels) {
|
|
82
|
+
for (const layer of resolved.tile.layers) {
|
|
90
83
|
const styles = stylesFor(layer.name, renderZoom).filter((style) => style.kind === kind);
|
|
91
84
|
if (!styles.length)
|
|
92
85
|
continue;
|
|
93
|
-
const projection = {
|
|
94
|
-
|
|
95
|
-
|
|
86
|
+
const projection = {
|
|
87
|
+
worldX: resolved.tileX * resolved.span,
|
|
88
|
+
worldY: resolved.tileY * resolved.span,
|
|
89
|
+
scale: resolved.span / layer.extent,
|
|
90
|
+
origin,
|
|
91
|
+
};
|
|
92
|
+
for (const feature of layer.features) {
|
|
93
|
+
const style = styleForFeatureKind(styles, feature.properties.kind);
|
|
94
|
+
if (style) {
|
|
96
95
|
rasterizeFeature(grid, feature, style, renderZoom, projection, pendingLabels);
|
|
97
96
|
}
|
|
98
97
|
}
|
|
@@ -108,6 +107,31 @@ export class MapRenderer {
|
|
|
108
107
|
constructor(source) {
|
|
109
108
|
this.source = source;
|
|
110
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Resolves each viewport slot to its native tile or, when the archive has none — a spatially sparse deep band, a
|
|
112
|
+
* zoom-capped extract — the nearest existing ancestor. Ancestors shared by several absent slots are deduplicated so
|
|
113
|
+
* their geometry rasterizes once, and coarse tiles sort first so native detail paints over the fallback wherever both
|
|
114
|
+
* cover a cell.
|
|
115
|
+
*/
|
|
116
|
+
async resolveTiles(tileCoords, renderZoom) {
|
|
117
|
+
const resolved = new Map();
|
|
118
|
+
await Promise.all(tileCoords.map(async ({ x, y }) => {
|
|
119
|
+
for (let zoom = renderZoom; zoom >= this.source.minZoom; zoom--) {
|
|
120
|
+
const shift = renderZoom - zoom;
|
|
121
|
+
const tileX = x >> shift;
|
|
122
|
+
const tileY = y >> shift;
|
|
123
|
+
const key = `${zoom}/${tileX}/${tileY}`;
|
|
124
|
+
if (resolved.has(key))
|
|
125
|
+
return;
|
|
126
|
+
const tile = await this.source.getTile(zoom, tileX, tileY);
|
|
127
|
+
if (tile) {
|
|
128
|
+
resolved.set(key, { tile, tileX, tileY, span: TILE_SIZE * 2 ** shift });
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}));
|
|
133
|
+
return [...resolved.values()].toSorted((a, b) => b.span - a.span);
|
|
134
|
+
}
|
|
111
135
|
async renderFrame(viewport, overlays) {
|
|
112
136
|
const { centerLon, centerLat, columns, rows } = viewport;
|
|
113
137
|
const subpixelW = columns * SUBPIXEL_COLUMNS_PER_CELL;
|
|
@@ -126,16 +150,12 @@ export class MapRenderer {
|
|
|
126
150
|
tileCoords.push({ x: tileX, y: tileY });
|
|
127
151
|
}
|
|
128
152
|
}
|
|
129
|
-
const
|
|
153
|
+
const resolvedTiles = await this.resolveTiles(tileCoords, renderZoom);
|
|
130
154
|
const grid = new RGBAGrid(subpixelW, subpixelH);
|
|
131
155
|
const pendingLabels = [];
|
|
132
156
|
for (const kind of ["fill", "line", "label"]) {
|
|
133
|
-
for (
|
|
134
|
-
|
|
135
|
-
if (!tile)
|
|
136
|
-
continue;
|
|
137
|
-
const { x: tileX, y: tileY } = tileCoords[i];
|
|
138
|
-
rasterizeTileForKind(grid, tile, tileX, tileY, kind, renderZoom, origin, pendingLabels);
|
|
157
|
+
for (const resolved of resolvedTiles) {
|
|
158
|
+
rasterizeTileForKind(grid, resolved, kind, renderZoom, origin, pendingLabels);
|
|
139
159
|
}
|
|
140
160
|
}
|
|
141
161
|
if (overlays?.ring) {
|
package/out/renderer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAiB,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../lib/renderer.ts"],"names":[],"mappings":"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"}
|
package/out/style.d.ts
CHANGED
|
@@ -6,32 +6,43 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Protomaps-basemap style table for the map-tui debug view.
|
|
8
8
|
*
|
|
9
|
-
* Defines fill, line, and label styles for each of the nine protomaps-basemap layers,
|
|
9
|
+
* Defines fill, line, and label styles for each of the nine protomaps-basemap layers, restricted by zoom level. Color
|
|
10
10
|
* palette calibrated for dark-terminal rendering: dim fills (read as stipple density via dithering), bright lines and
|
|
11
11
|
* labels.
|
|
12
12
|
*/
|
|
13
13
|
export type RGB = readonly [red: number, green: number, blue: number];
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Fields shared by every style entry. `featureKinds` scopes an entry to features whose `kind` tile attribute is in the
|
|
16
|
+
* list; an entry without it is the layer's catch-all. Entries are consulted in table order and the first match wins, so
|
|
17
|
+
* kind-scoped entries precede the catch-all.
|
|
18
|
+
*/
|
|
19
|
+
interface StyleBase {
|
|
16
20
|
color: RGB;
|
|
17
21
|
minZoom: number;
|
|
22
|
+
featureKinds?: readonly string[];
|
|
18
23
|
}
|
|
19
|
-
export interface
|
|
24
|
+
export interface FillStyle extends StyleBase {
|
|
25
|
+
kind: "fill";
|
|
26
|
+
}
|
|
27
|
+
export interface LineStyle extends StyleBase {
|
|
20
28
|
kind: "line";
|
|
21
|
-
color: RGB;
|
|
22
|
-
minZoom: number;
|
|
23
29
|
width: (zoom: number) => number;
|
|
24
30
|
}
|
|
25
|
-
export interface LabelStyle {
|
|
31
|
+
export interface LabelStyle extends StyleBase {
|
|
26
32
|
kind: "label";
|
|
27
|
-
color: RGB;
|
|
28
|
-
minZoom: number;
|
|
29
33
|
property: string;
|
|
30
34
|
}
|
|
31
35
|
export type LayerStyle = FillStyle | LineStyle | LabelStyle;
|
|
32
36
|
/**
|
|
33
|
-
* Styles applying to a protomaps-basemap layer at a zoom, draw-ordered (fills < lines < labels). Empty for
|
|
34
|
-
*
|
|
37
|
+
* Styles applying to a protomaps-basemap layer at a zoom, draw-ordered (fills < lines < labels). Empty for unstyled or
|
|
38
|
+
* zoom-restricted layers.
|
|
35
39
|
*/
|
|
36
40
|
export declare function stylesFor(layerName: string, zoom: number): LayerStyle[];
|
|
41
|
+
/**
|
|
42
|
+
* The one style painting a feature: the first entry whose `featureKinds` contains the feature's `kind` attribute, or
|
|
43
|
+
* the first catch-all. A feature is painted at most once per draw pass — kind-scoped entries recolor, they never
|
|
44
|
+
* double-paint.
|
|
45
|
+
*/
|
|
46
|
+
export declare function styleForFeatureKind(styles: readonly LayerStyle[], featureKind: unknown): LayerStyle | null;
|
|
47
|
+
export {};
|
|
37
48
|
//# sourceMappingURL=style.d.ts.map
|
package/out/style.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../style.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AAEH,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAErE,
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../lib/style.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AAEH,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AAErE;;;;GAIG;AACH,UAAU,SAAS;IAClB,KAAK,EAAE,GAAG,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC3C,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC5C,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAoD3D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAQ1G"}
|