@gustkit/mapbox-web 0.2.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/LICENSE +21 -0
- package/README.md +25 -0
- package/dist/GustKitMap.d.ts +56 -0
- package/dist/GustKitMap.d.ts.map +1 -0
- package/dist/GustKitMap.js +443 -0
- package/dist/GustKitMap.js.map +1 -0
- package/dist/arrows.d.ts +17 -0
- package/dist/arrows.d.ts.map +1 -0
- package/dist/arrows.js +87 -0
- package/dist/arrows.js.map +1 -0
- package/dist/fieldPng.d.ts +4 -0
- package/dist/fieldPng.d.ts.map +1 -0
- package/dist/fieldPng.js +15 -0
- package/dist/fieldPng.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.d.ts +2 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +25 -0
- package/dist/styles.js.map +1 -0
- package/package.json +56 -0
- package/src/GustKitMap.tsx +540 -0
- package/src/arrows.ts +112 -0
- package/src/fieldPng.ts +14 -0
- package/src/index.ts +2 -0
- package/src/styles.ts +25 -0
package/dist/arrows.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { vectorAt } from "@gustkit/client";
|
|
2
|
+
import { Product } from "@gustkit/client";
|
|
3
|
+
/** 3×2 sample grid, inset from the postcard edges — at most `maxCount` arrows. */
|
|
4
|
+
export function sparseArrowSpots(w, h, sample, maxCount = 6) {
|
|
5
|
+
const cols = 3;
|
|
6
|
+
const rows = 2;
|
|
7
|
+
const insetX = w * 0.22;
|
|
8
|
+
const insetY = h * 0.28;
|
|
9
|
+
const spanX = cols > 1 ? (w - 2 * insetX) / (cols - 1) : 0;
|
|
10
|
+
const spanY = rows > 1 ? (h - 2 * insetY) / (rows - 1) : 0;
|
|
11
|
+
const out = [];
|
|
12
|
+
for (let r = 0; r < rows && out.length < maxCount; r++) {
|
|
13
|
+
for (let c = 0; c < cols && out.length < maxCount; c++) {
|
|
14
|
+
const x = insetX + c * spanX;
|
|
15
|
+
const y = insetY + r * spanY;
|
|
16
|
+
const v = sample(x, y);
|
|
17
|
+
if (!v || !(v.mag > 0))
|
|
18
|
+
continue;
|
|
19
|
+
out.push({ x, y, dirU: v.dirU, dirV: v.dirV, mag: v.mag });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
export function paintArrowSpots(ctx, spots, magMax, scale = 1) {
|
|
25
|
+
const color = "rgba(255,255,255,0.92)";
|
|
26
|
+
const stroke = Math.max(1.4, 1.5 * Math.sqrt(scale));
|
|
27
|
+
ctx.strokeStyle = color;
|
|
28
|
+
ctx.fillStyle = color;
|
|
29
|
+
ctx.lineWidth = stroke;
|
|
30
|
+
ctx.lineCap = "round";
|
|
31
|
+
ctx.lineJoin = "miter";
|
|
32
|
+
ctx.shadowColor = "rgba(0,0,0,0.55)";
|
|
33
|
+
ctx.shadowBlur = 2 * Math.sqrt(scale);
|
|
34
|
+
for (const s of spots) {
|
|
35
|
+
const len = (8 + Math.min(s.mag / magMax, 1) * 16) * scale;
|
|
36
|
+
const ang = Math.atan2(-s.dirV, s.dirU);
|
|
37
|
+
const hl = Math.min(len * 0.45, 7 * scale);
|
|
38
|
+
const hw = hl * 0.7;
|
|
39
|
+
const shaft = Math.max(stroke, len - hl);
|
|
40
|
+
const bx = s.x + Math.cos(ang) * shaft;
|
|
41
|
+
const by = s.y + Math.sin(ang) * shaft;
|
|
42
|
+
const ex = s.x + Math.cos(ang) * len;
|
|
43
|
+
const ey = s.y + Math.sin(ang) * len;
|
|
44
|
+
ctx.beginPath();
|
|
45
|
+
ctx.moveTo(s.x, s.y);
|
|
46
|
+
ctx.lineTo(bx, by);
|
|
47
|
+
ctx.stroke();
|
|
48
|
+
ctx.beginPath();
|
|
49
|
+
ctx.moveTo(ex, ey);
|
|
50
|
+
ctx.lineTo(bx + Math.sin(ang) * hw, by - Math.cos(ang) * hw);
|
|
51
|
+
ctx.lineTo(bx - Math.sin(ang) * hw, by + Math.cos(ang) * hw);
|
|
52
|
+
ctx.closePath();
|
|
53
|
+
ctx.fill();
|
|
54
|
+
}
|
|
55
|
+
ctx.shadowBlur = 0;
|
|
56
|
+
}
|
|
57
|
+
export function paintArrowGrid(ctx, w, h, source, product, unproject) {
|
|
58
|
+
const magMax = product === Product.Wind ? 25 : 8;
|
|
59
|
+
const step = 46;
|
|
60
|
+
ctx.strokeStyle = "rgba(255,255,255,0.9)";
|
|
61
|
+
ctx.lineWidth = 1.3;
|
|
62
|
+
ctx.lineCap = "round";
|
|
63
|
+
ctx.shadowColor = "rgba(0,0,0,0.55)";
|
|
64
|
+
ctx.shadowBlur = 2;
|
|
65
|
+
for (let py = step / 2; py < h; py += step) {
|
|
66
|
+
for (let px = step / 2; px < w; px += step) {
|
|
67
|
+
const ll = unproject(px, py);
|
|
68
|
+
const v = vectorAt(source, product, ll.lon, ll.lat);
|
|
69
|
+
if (!v || !(v.mag > 0))
|
|
70
|
+
continue;
|
|
71
|
+
const len = 6 + Math.min(v.mag / magMax, 1) * 16;
|
|
72
|
+
const ex = px + v.dirU * len;
|
|
73
|
+
const ey = py - v.dirV * len;
|
|
74
|
+
ctx.beginPath();
|
|
75
|
+
ctx.moveTo(px, py);
|
|
76
|
+
ctx.lineTo(ex, ey);
|
|
77
|
+
const ang = Math.atan2(ey - py, ex - px);
|
|
78
|
+
const hl = 4;
|
|
79
|
+
ctx.lineTo(ex - hl * Math.cos(ang - 0.5), ey - hl * Math.sin(ang - 0.5));
|
|
80
|
+
ctx.moveTo(ex, ey);
|
|
81
|
+
ctx.lineTo(ex - hl * Math.cos(ang + 0.5), ey - hl * Math.sin(ang + 0.5));
|
|
82
|
+
ctx.stroke();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
ctx.shadowBlur = 0;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=arrows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrows.js","sourceRoot":"","sources":["../src/arrows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldPng.d.ts","sourceRoot":"","sources":["../src/fieldPng.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAUhE"}
|
package/dist/fieldPng.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Encode an RGBA field as a PNG data URL for a Mapbox ImageSource. */
|
|
2
|
+
export function fieldToDataUrl(field) {
|
|
3
|
+
if (field.width < 1 || field.height < 1 || field.rgba.length === 0)
|
|
4
|
+
return null;
|
|
5
|
+
const canvas = document.createElement("canvas");
|
|
6
|
+
canvas.width = field.width;
|
|
7
|
+
canvas.height = field.height;
|
|
8
|
+
const ctx = canvas.getContext("2d");
|
|
9
|
+
if (!ctx)
|
|
10
|
+
return null;
|
|
11
|
+
const img = new ImageData(new Uint8ClampedArray(field.rgba), field.width, field.height);
|
|
12
|
+
ctx.putImageData(img, 0, 0);
|
|
13
|
+
return canvas.toDataURL("image/png");
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=fieldPng.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldPng.js","sourceRoot":"","sources":["../src/fieldPng.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxF,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/styles.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAiBA,wBAAgB,eAAe,IAAI,IAAI,CAOtC"}
|
package/dist/styles.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const CSS = `
|
|
2
|
+
.gk-map-root{position:relative;width:100%;height:100%}
|
|
3
|
+
.gk-map-canvas{position:absolute;inset:0}
|
|
4
|
+
.gk-overlay{position:absolute;top:0;left:0;pointer-events:none}
|
|
5
|
+
.gk-arrows{z-index:1}
|
|
6
|
+
.gk-particles{z-index:2}
|
|
7
|
+
.gk-map-chrome{position:absolute;inset:0;pointer-events:none;z-index:3}
|
|
8
|
+
.gk-center{display:flex;flex-direction:column;align-items:center;line-height:1;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.7);font-variant-numeric:tabular-nums}
|
|
9
|
+
.gk-center b{font-size:18px;font-weight:800}
|
|
10
|
+
.gk-center span{font-size:10px;color:#e5e7eb}
|
|
11
|
+
.gk-center-high b{color:#4a86e8}
|
|
12
|
+
.gk-center-low b{color:#e2555a}
|
|
13
|
+
.gk-notoken{display:flex;align-items:center;justify-content:center;color:#94a3b8;padding:24px;text-align:center}
|
|
14
|
+
`;
|
|
15
|
+
let injected = false;
|
|
16
|
+
export function ensureMapStyles() {
|
|
17
|
+
if (injected || typeof document === "undefined")
|
|
18
|
+
return;
|
|
19
|
+
injected = true;
|
|
20
|
+
const el = document.createElement("style");
|
|
21
|
+
el.dataset.gustkit = "mapbox-web";
|
|
22
|
+
el.textContent = CSS;
|
|
23
|
+
document.head.appendChild(el);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAAG;;;;;;;;;;;;;CAaX,CAAC;AAEF,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,MAAM,UAAU,eAAe;IAC7B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO;IACxD,QAAQ,GAAG,IAAI,CAAC;IAChB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3C,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC;IAClC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gustkit/mapbox-web",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "GustKitMap for the web — wraps Mapbox GL JS (ADR-016). Weather stack + loadView on camera idle; hosts pass token, camera, layers, children.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "SeaPeople",
|
|
7
|
+
"homepage": "https://github.com/Sea-People-App/gustkit#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/Sea-People-App/gustkit.git",
|
|
11
|
+
"directory": "packages/mapbox-web"
|
|
12
|
+
},
|
|
13
|
+
"bugs": "https://github.com/Sea-People-App/gustkit/issues",
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=20"
|
|
16
|
+
},
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public",
|
|
19
|
+
"registry": "https://registry.npmjs.org/"
|
|
20
|
+
},
|
|
21
|
+
"sideEffects": false,
|
|
22
|
+
"type": "module",
|
|
23
|
+
"main": "./dist/index.js",
|
|
24
|
+
"module": "./dist/index.js",
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"import": "./dist/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"src"
|
|
35
|
+
],
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@gustkit/client": "0.2.0"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"mapbox-gl": "^3.0.0",
|
|
41
|
+
"react": ">=19.0.0",
|
|
42
|
+
"react-dom": ">=19.0.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/geojson": "^7946.0.16",
|
|
46
|
+
"@types/mapbox-gl": "^3.4.1",
|
|
47
|
+
"@types/react": "^19.1.0",
|
|
48
|
+
"mapbox-gl": "^3.9.0",
|
|
49
|
+
"typescript": "^5.7.0"
|
|
50
|
+
},
|
|
51
|
+
"scripts": {
|
|
52
|
+
"build": "rm -rf dist && tsc -p tsconfig.json",
|
|
53
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
54
|
+
"lint": "echo 'no lint configured (mapbox-web)'"
|
|
55
|
+
}
|
|
56
|
+
}
|