@fusion.dev/helix-map 0.0.0-dev
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 +66 -0
- package/dist/connect-map/connect-map.d.ts +317 -0
- package/dist/connect-map/connect-map.d.ts.map +1 -0
- package/dist/connect-map/connect-map.js +847 -0
- package/dist/connect-map/connect-map.js.map +1 -0
- package/dist/connect-map/index.d.ts +3 -0
- package/dist/connect-map/index.d.ts.map +1 -0
- package/dist/connect-map/index.js +2 -0
- package/dist/connect-map/index.js.map +1 -0
- package/dist/contours/contours.d.ts +71 -0
- package/dist/contours/contours.d.ts.map +1 -0
- package/dist/contours/contours.js +314 -0
- package/dist/contours/contours.js.map +1 -0
- package/dist/credit/credit.d.ts +20 -0
- package/dist/credit/credit.d.ts.map +1 -0
- package/dist/credit/credit.js +65 -0
- package/dist/credit/credit.js.map +1 -0
- package/dist/credit/index.d.ts +3 -0
- package/dist/credit/index.d.ts.map +1 -0
- package/dist/credit/index.js +2 -0
- package/dist/credit/index.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/leaflet/index.d.ts +3 -0
- package/dist/leaflet/index.d.ts.map +1 -0
- package/dist/leaflet/index.js +2 -0
- package/dist/leaflet/index.js.map +1 -0
- package/dist/leaflet/leaflet-driver.d.ts +126 -0
- package/dist/leaflet/leaflet-driver.d.ts.map +1 -0
- package/dist/leaflet/leaflet-driver.js +241 -0
- package/dist/leaflet/leaflet-driver.js.map +1 -0
- package/dist/maplibre/index.d.ts +5 -0
- package/dist/maplibre/index.d.ts.map +1 -0
- package/dist/maplibre/index.js +3 -0
- package/dist/maplibre/index.js.map +1 -0
- package/dist/maplibre/map-images.d.ts +17 -0
- package/dist/maplibre/map-images.d.ts.map +1 -0
- package/dist/maplibre/map-images.js +138 -0
- package/dist/maplibre/map-images.js.map +1 -0
- package/dist/maplibre/maplibre-driver.d.ts +276 -0
- package/dist/maplibre/maplibre-driver.d.ts.map +1 -0
- package/dist/maplibre/maplibre-driver.js +1114 -0
- package/dist/maplibre/maplibre-driver.js.map +1 -0
- package/dist/motion/index.d.ts +3 -0
- package/dist/motion/index.d.ts.map +1 -0
- package/dist/motion/index.js +2 -0
- package/dist/motion/index.js.map +1 -0
- package/dist/motion/motion.d.ts +41 -0
- package/dist/motion/motion.d.ts.map +1 -0
- package/dist/motion/motion.js +167 -0
- package/dist/motion/motion.js.map +1 -0
- package/dist/points/index.d.ts +3 -0
- package/dist/points/index.d.ts.map +1 -0
- package/dist/points/index.js +2 -0
- package/dist/points/index.js.map +1 -0
- package/dist/points/points.d.ts +20 -0
- package/dist/points/points.d.ts.map +1 -0
- package/dist/points/points.js +41 -0
- package/dist/points/points.js.map +1 -0
- package/dist/snapshot/camera.d.ts +44 -0
- package/dist/snapshot/camera.d.ts.map +1 -0
- package/dist/snapshot/camera.js +42 -0
- package/dist/snapshot/camera.js.map +1 -0
- package/dist/snapshot/index.d.ts +5 -0
- package/dist/snapshot/index.d.ts.map +1 -0
- package/dist/snapshot/index.js +3 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/snapshot/snapshot.d.ts +75 -0
- package/dist/snapshot/snapshot.d.ts.map +1 -0
- package/dist/snapshot/snapshot.js +290 -0
- package/dist/snapshot/snapshot.js.map +1 -0
- package/dist/style/index.d.ts +5 -0
- package/dist/style/index.d.ts.map +1 -0
- package/dist/style/index.js +3 -0
- package/dist/style/index.js.map +1 -0
- package/dist/style/map-colors.d.ts +69 -0
- package/dist/style/map-colors.d.ts.map +1 -0
- package/dist/style/map-colors.js +82 -0
- package/dist/style/map-colors.js.map +1 -0
- package/dist/style/map-style.d.ts +99 -0
- package/dist/style/map-style.d.ts.map +1 -0
- package/dist/style/map-style.js +440 -0
- package/dist/style/map-style.js.map +1 -0
- package/dist/style/oklab.d.ts +36 -0
- package/dist/style/oklab.d.ts.map +1 -0
- package/dist/style/oklab.js +76 -0
- package/dist/style/oklab.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +2 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/watch-theme.d.ts +14 -0
- package/dist/theme/watch-theme.d.ts.map +1 -0
- package/dist/theme/watch-theme.js +30 -0
- package/dist/theme/watch-theme.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const parseColor = (value) => {
|
|
2
|
+
const hex = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(value.trim())?.[1];
|
|
3
|
+
if (hex) {
|
|
4
|
+
const full = hex.length === 3 ? [...hex].map((one) => one + one).join('') : hex;
|
|
5
|
+
const channel = (at) => Number.parseInt(full.slice(at, at + 2), 16) / 255;
|
|
6
|
+
return { alpha: 1, blue: channel(4), green: channel(2), red: channel(0) };
|
|
7
|
+
}
|
|
8
|
+
const rgb = /^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:[\s,/]+([\d.]+%?))?\s*\)$/i.exec(value.trim());
|
|
9
|
+
if (!rgb) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const [, red = '0', green = '0', blue = '0', alpha] = rgb;
|
|
13
|
+
const opacity = alpha === undefined
|
|
14
|
+
? 1
|
|
15
|
+
: alpha.endsWith('%')
|
|
16
|
+
? Number.parseFloat(alpha) / 100
|
|
17
|
+
: Number.parseFloat(alpha);
|
|
18
|
+
return {
|
|
19
|
+
alpha: opacity,
|
|
20
|
+
blue: Number.parseFloat(blue) / 255,
|
|
21
|
+
green: Number.parseFloat(green) / 255,
|
|
22
|
+
red: Number.parseFloat(red) / 255,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const linear = (channel) => channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4;
|
|
26
|
+
const gamma = (channel) => channel <= 0.0031308 ? channel * 12.92 : 1.055 * channel ** (1 / 2.4) - 0.055;
|
|
27
|
+
const toOklab = ({ blue, green, red }) => {
|
|
28
|
+
const [r, g, b] = [linear(red), linear(green), linear(blue)];
|
|
29
|
+
const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);
|
|
30
|
+
const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);
|
|
31
|
+
const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
|
|
32
|
+
return [
|
|
33
|
+
0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
|
|
34
|
+
1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
|
|
35
|
+
0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,
|
|
36
|
+
];
|
|
37
|
+
};
|
|
38
|
+
const fromOklab = ([lightness, a, b], alpha) => {
|
|
39
|
+
const l = (lightness + 0.3963377774 * a + 0.2158037573 * b) ** 3;
|
|
40
|
+
const m = (lightness - 0.1055613458 * a - 0.0638541728 * b) ** 3;
|
|
41
|
+
const s = (lightness - 0.0894841775 * a - 1.291485548 * b) ** 3;
|
|
42
|
+
const clamp = (channel) => Math.min(1, Math.max(0, gamma(channel)));
|
|
43
|
+
return {
|
|
44
|
+
alpha,
|
|
45
|
+
blue: clamp(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s),
|
|
46
|
+
green: clamp(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),
|
|
47
|
+
red: clamp(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export const mix = (from, to, amount) => {
|
|
51
|
+
const a = toOklab(from);
|
|
52
|
+
const b = toOklab(to);
|
|
53
|
+
return fromOklab([a[0] + (b[0] - a[0]) * amount, a[1] + (b[1] - a[1]) * amount, a[2] + (b[2] - a[2]) * amount], from.alpha + (to.alpha - from.alpha) * amount);
|
|
54
|
+
};
|
|
55
|
+
export const rehue = (like, hue, least = 0.1) => {
|
|
56
|
+
const [lightness, a, b] = toOklab(like);
|
|
57
|
+
const chroma = Math.max(Math.hypot(a, b), least);
|
|
58
|
+
const angle = (hue * Math.PI) / 180;
|
|
59
|
+
return fromOklab([lightness, chroma * Math.cos(angle), chroma * Math.sin(angle)], like.alpha);
|
|
60
|
+
};
|
|
61
|
+
export const oklch = (lightness, chroma, hue) => {
|
|
62
|
+
const angle = (hue * Math.PI) / 180;
|
|
63
|
+
return fromOklab([lightness, chroma * Math.cos(angle), chroma * Math.sin(angle)], 1);
|
|
64
|
+
};
|
|
65
|
+
export const cssColor = ({ alpha, blue, green, red }) => {
|
|
66
|
+
const [r, g, b] = [red, green, blue].map((channel) => Math.round(channel * 255));
|
|
67
|
+
return alpha >= 1
|
|
68
|
+
? `rgb(${r}, ${g}, ${b})`
|
|
69
|
+
: `rgba(${r}, ${g}, ${b}, ${Number(alpha.toFixed(3))})`;
|
|
70
|
+
};
|
|
71
|
+
const luminance = ({ blue, green, red }) => 0.2126 * linear(red) + 0.7152 * linear(green) + 0.0722 * linear(blue);
|
|
72
|
+
export const contrast = (one, other) => {
|
|
73
|
+
const [light, dark] = [luminance(one), luminance(other)].sort((a, b) => b - a);
|
|
74
|
+
return (light + 0.05) / (dark + 0.05);
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=oklab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oklab.js","sourceRoot":"","sources":["../../src/style/oklab.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calls `changed` once a frame after anything that can move an element's
|
|
3
|
+
* theme: a class, a mode, a theme's own marker or an inline token on the
|
|
4
|
+
* element or any element above it, or the reader's light or dark preference.
|
|
5
|
+
*
|
|
6
|
+
* **Above it and not beside it.** A theme reaches an element only through
|
|
7
|
+
* the elements it is inside, so each of those is watched for its own
|
|
8
|
+
* attributes and nothing below them is: a page-wide watch heard a map's own
|
|
9
|
+
* markers being placed, every frame of every pan, and threw each one away.
|
|
10
|
+
*
|
|
11
|
+
* Returns what stops watching.
|
|
12
|
+
*/
|
|
13
|
+
export declare const watchTheme: (element: Element, changed: () => void) => (() => void);
|
|
14
|
+
//# sourceMappingURL=watch-theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-theme.d.ts","sourceRoot":"","sources":["../../src/theme/watch-theme.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,YAAa,OAAO,WAAW,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAkB7E,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const above = (element) => {
|
|
2
|
+
const chain = [];
|
|
3
|
+
let at = element;
|
|
4
|
+
while (at) {
|
|
5
|
+
chain.push(at);
|
|
6
|
+
const root = at.getRootNode();
|
|
7
|
+
at = at.parentElement ?? (root instanceof ShadowRoot ? root.host : null);
|
|
8
|
+
}
|
|
9
|
+
return chain;
|
|
10
|
+
};
|
|
11
|
+
const THEMING = ['class', 'data-color-mode', 'data-helix-theme', 'style'];
|
|
12
|
+
export const watchTheme = (element, changed) => {
|
|
13
|
+
let pending = 0;
|
|
14
|
+
const soon = () => {
|
|
15
|
+
cancelAnimationFrame(pending);
|
|
16
|
+
pending = requestAnimationFrame(() => changed());
|
|
17
|
+
};
|
|
18
|
+
const observer = new MutationObserver(soon);
|
|
19
|
+
for (const one of above(element)) {
|
|
20
|
+
observer.observe(one, { attributeFilter: THEMING, attributes: true });
|
|
21
|
+
}
|
|
22
|
+
const scheme = typeof matchMedia === 'function' ? matchMedia('(prefers-color-scheme: dark)') : null;
|
|
23
|
+
scheme?.addEventListener('change', soon);
|
|
24
|
+
return () => {
|
|
25
|
+
cancelAnimationFrame(pending);
|
|
26
|
+
observer.disconnect();
|
|
27
|
+
scheme?.removeEventListener('change', soon);
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=watch-theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-theme.js","sourceRoot":"","sources":["../../src/theme/watch-theme.ts"],"names":[],"mappings":"AACA,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAa,EAAE;IAC5C,MAAM,KAAK,GAAc,EAAE,CAAA;IAC3B,IAAI,EAAE,GAAmB,OAAO,CAAA;IAChC,OAAO,EAAE,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,MAAM,IAAI,GAAS,EAAE,CAAC,WAAW,EAAE,CAAA;QACnC,EAAE,GAAG,EAAE,CAAC,aAAa,IAAI,CAAC,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAGD,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAA;AAczE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,OAAmB,EAAgB,EAAE;IAChF,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAC7B,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAClD,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAC3C,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,MAAM,GACV,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACtF,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACxC,OAAO,GAAG,EAAE;QACV,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAC7B,QAAQ,CAAC,UAAU,EAAE,CAAA;QACrB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAA;AACH,CAAC,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fusion.dev/helix-map",
|
|
3
|
+
"description": "Connects the Helix Map frame to a map renderer: MapLibre, Leaflet, or a driver of your own.",
|
|
4
|
+
"version": "0.0.0-dev",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
|
+
"repository": {
|
|
8
|
+
"directory": "helix/map",
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/project-fusion/fusion.git"
|
|
11
|
+
},
|
|
12
|
+
"type": "module",
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"default": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./leaflet": {
|
|
21
|
+
"types": "./dist/leaflet/index.d.ts",
|
|
22
|
+
"default": "./dist/leaflet/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./maplibre": {
|
|
25
|
+
"types": "./dist/maplibre/index.d.ts",
|
|
26
|
+
"default": "./dist/maplibre/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./snapshot": {
|
|
29
|
+
"types": "./dist/snapshot/index.d.ts",
|
|
30
|
+
"default": "./dist/snapshot/index.js"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"sideEffects": false,
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "tsc -p tsconfig.build.json && tsc -p tsconfig.types.json",
|
|
39
|
+
"test": "bun run test:pure && bun run test:dom",
|
|
40
|
+
"test:dom": "bun test dom.spec",
|
|
41
|
+
"test:pure": "bun test pure.spec",
|
|
42
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
43
|
+
},
|
|
44
|
+
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@fusion.dev/helix-core": "0.104.1",
|
|
47
|
+
"@fusion.dev/helix-icons": "0.104.1",
|
|
48
|
+
"@mapbox/vector-tile": "^2.0.4",
|
|
49
|
+
"pbf": "^4.0.1"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@fusion.dev/helix-headless": "0.104.1",
|
|
53
|
+
"@fusion.dev/helix-testing": "0.104.1",
|
|
54
|
+
"@maplibre/maplibre-gl-style-spec": "^24.10.0",
|
|
55
|
+
"@types/bun": "^1.3.0",
|
|
56
|
+
"@types/leaflet": "^1.9.20",
|
|
57
|
+
"leaflet": "^1.9.4",
|
|
58
|
+
"maplibre-gl": "^5.6.0"
|
|
59
|
+
},
|
|
60
|
+
"homepage": "https://fusion.dev",
|
|
61
|
+
"keywords": [
|
|
62
|
+
"map",
|
|
63
|
+
"maplibre",
|
|
64
|
+
"leaflet",
|
|
65
|
+
"accessibility"
|
|
66
|
+
],
|
|
67
|
+
"publishConfig": {
|
|
68
|
+
"access": "restricted"
|
|
69
|
+
}
|
|
70
|
+
}
|