@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.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -0
  3. package/dist/connect-map/connect-map.d.ts +317 -0
  4. package/dist/connect-map/connect-map.d.ts.map +1 -0
  5. package/dist/connect-map/connect-map.js +847 -0
  6. package/dist/connect-map/connect-map.js.map +1 -0
  7. package/dist/connect-map/index.d.ts +3 -0
  8. package/dist/connect-map/index.d.ts.map +1 -0
  9. package/dist/connect-map/index.js +2 -0
  10. package/dist/connect-map/index.js.map +1 -0
  11. package/dist/contours/contours.d.ts +71 -0
  12. package/dist/contours/contours.d.ts.map +1 -0
  13. package/dist/contours/contours.js +314 -0
  14. package/dist/contours/contours.js.map +1 -0
  15. package/dist/credit/credit.d.ts +20 -0
  16. package/dist/credit/credit.d.ts.map +1 -0
  17. package/dist/credit/credit.js +65 -0
  18. package/dist/credit/credit.js.map +1 -0
  19. package/dist/credit/index.d.ts +3 -0
  20. package/dist/credit/index.d.ts.map +1 -0
  21. package/dist/credit/index.js +2 -0
  22. package/dist/credit/index.js.map +1 -0
  23. package/dist/index.d.ts +12 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +7 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/leaflet/index.d.ts +3 -0
  28. package/dist/leaflet/index.d.ts.map +1 -0
  29. package/dist/leaflet/index.js +2 -0
  30. package/dist/leaflet/index.js.map +1 -0
  31. package/dist/leaflet/leaflet-driver.d.ts +126 -0
  32. package/dist/leaflet/leaflet-driver.d.ts.map +1 -0
  33. package/dist/leaflet/leaflet-driver.js +241 -0
  34. package/dist/leaflet/leaflet-driver.js.map +1 -0
  35. package/dist/maplibre/index.d.ts +5 -0
  36. package/dist/maplibre/index.d.ts.map +1 -0
  37. package/dist/maplibre/index.js +3 -0
  38. package/dist/maplibre/index.js.map +1 -0
  39. package/dist/maplibre/map-images.d.ts +17 -0
  40. package/dist/maplibre/map-images.d.ts.map +1 -0
  41. package/dist/maplibre/map-images.js +138 -0
  42. package/dist/maplibre/map-images.js.map +1 -0
  43. package/dist/maplibre/maplibre-driver.d.ts +276 -0
  44. package/dist/maplibre/maplibre-driver.d.ts.map +1 -0
  45. package/dist/maplibre/maplibre-driver.js +1114 -0
  46. package/dist/maplibre/maplibre-driver.js.map +1 -0
  47. package/dist/motion/index.d.ts +3 -0
  48. package/dist/motion/index.d.ts.map +1 -0
  49. package/dist/motion/index.js +2 -0
  50. package/dist/motion/index.js.map +1 -0
  51. package/dist/motion/motion.d.ts +41 -0
  52. package/dist/motion/motion.d.ts.map +1 -0
  53. package/dist/motion/motion.js +167 -0
  54. package/dist/motion/motion.js.map +1 -0
  55. package/dist/points/index.d.ts +3 -0
  56. package/dist/points/index.d.ts.map +1 -0
  57. package/dist/points/index.js +2 -0
  58. package/dist/points/index.js.map +1 -0
  59. package/dist/points/points.d.ts +20 -0
  60. package/dist/points/points.d.ts.map +1 -0
  61. package/dist/points/points.js +41 -0
  62. package/dist/points/points.js.map +1 -0
  63. package/dist/snapshot/camera.d.ts +44 -0
  64. package/dist/snapshot/camera.d.ts.map +1 -0
  65. package/dist/snapshot/camera.js +42 -0
  66. package/dist/snapshot/camera.js.map +1 -0
  67. package/dist/snapshot/index.d.ts +5 -0
  68. package/dist/snapshot/index.d.ts.map +1 -0
  69. package/dist/snapshot/index.js +3 -0
  70. package/dist/snapshot/index.js.map +1 -0
  71. package/dist/snapshot/snapshot.d.ts +75 -0
  72. package/dist/snapshot/snapshot.d.ts.map +1 -0
  73. package/dist/snapshot/snapshot.js +290 -0
  74. package/dist/snapshot/snapshot.js.map +1 -0
  75. package/dist/style/index.d.ts +5 -0
  76. package/dist/style/index.d.ts.map +1 -0
  77. package/dist/style/index.js +3 -0
  78. package/dist/style/index.js.map +1 -0
  79. package/dist/style/map-colors.d.ts +69 -0
  80. package/dist/style/map-colors.d.ts.map +1 -0
  81. package/dist/style/map-colors.js +82 -0
  82. package/dist/style/map-colors.js.map +1 -0
  83. package/dist/style/map-style.d.ts +99 -0
  84. package/dist/style/map-style.d.ts.map +1 -0
  85. package/dist/style/map-style.js +440 -0
  86. package/dist/style/map-style.js.map +1 -0
  87. package/dist/style/oklab.d.ts +36 -0
  88. package/dist/style/oklab.d.ts.map +1 -0
  89. package/dist/style/oklab.js +76 -0
  90. package/dist/style/oklab.js.map +1 -0
  91. package/dist/theme/index.d.ts +2 -0
  92. package/dist/theme/index.d.ts.map +1 -0
  93. package/dist/theme/index.js +2 -0
  94. package/dist/theme/index.js.map +1 -0
  95. package/dist/theme/watch-theme.d.ts +14 -0
  96. package/dist/theme/watch-theme.d.ts.map +1 -0
  97. package/dist/theme/watch-theme.js +30 -0
  98. package/dist/theme/watch-theme.js.map +1 -0
  99. 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,2 @@
1
+ export { watchTheme } from './watch-theme.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { watchTheme } from './watch-theme.js';
2
+ //# sourceMappingURL=index.js.map
@@ -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
+ }