@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credit/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,12 @@
1
+ export type { ConnectOptions, MapBounds, MapConnection, MapDriver, MapInView, MapLayerEvents, MapLayerSpec, MapPadding, MapPlace, MapType, } from './connect-map/index.js';
2
+ export { connectMap, distancesAlong } from './connect-map/index.js';
3
+ export type { CreditPart } from './credit/index.js';
4
+ export { creditParts } from './credit/index.js';
5
+ export type { MapMotion, MapPace } from './motion/index.js';
6
+ export { easingOf, millisecondsOf, motionOf } from './motion/index.js';
7
+ export type { MapPoints } from './points/index.js';
8
+ export { pointsFrom } from './points/index.js';
9
+ export type { MapColors } from './style/index.js';
10
+ export { colorsNow, colorsReady, fontReady, mapColorsFrom, mapFontFrom, PATIENCE, settledColor, } from './style/index.js';
11
+ export { watchTheme } from './theme/index.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,GACR,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACnE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACtE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACR,YAAY,GACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { connectMap, distancesAlong } from './connect-map/index.js';
2
+ export { creditParts } from './credit/index.js';
3
+ export { easingOf, millisecondsOf, motionOf } from './motion/index.js';
4
+ export { pointsFrom } from './points/index.js';
5
+ export { colorsNow, colorsReady, fontReady, mapColorsFrom, mapFontFrom, PATIENCE, settledColor, } from './style/index.js';
6
+ export { watchTheme } from './theme/index.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACR,YAAY,GACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export type { LeafletAttribution, LeafletLayer, LeafletMap, LeafletShape, LeafletShapes, } from './leaflet-driver.js';
2
+ export { leafletDriver } from './leaflet-driver.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/leaflet/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { leafletDriver } from './leaflet-driver.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/leaflet/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,126 @@
1
+ import type { MapDriver } from '../connect-map/connect-map.js';
2
+ /** How Leaflet is told to move: over a time, in seconds, or at once. */
3
+ interface LeafletAnimation {
4
+ animate?: boolean;
5
+ duration?: number;
6
+ }
7
+ /** The part of a Leaflet layer the driver reads. */
8
+ export interface LeafletLayer {
9
+ /** The layer's credit, where it has one. */
10
+ getAttribution?: (() => string | null | undefined) | undefined;
11
+ /** Whether a tile layer still has tiles on the way. */
12
+ isLoading?: (() => boolean) | undefined;
13
+ off?: ((type: 'load', listener: () => void) => unknown) | undefined;
14
+ once?: ((type: 'load', listener: () => void) => unknown) | undefined;
15
+ }
16
+ /** The credit control Leaflet adds unless told not to. */
17
+ export interface LeafletAttribution {
18
+ /** What Leaflet writes before the layers' credits, which is its own name by default. */
19
+ options: {
20
+ prefix?: string | boolean | undefined;
21
+ };
22
+ remove(): unknown;
23
+ }
24
+ /**
25
+ * The part of a Leaflet `Map` the driver uses, so this package imports no
26
+ * renderer and a page brings whichever version it has.
27
+ */
28
+ export interface LeafletMap {
29
+ addControl(control: never): unknown;
30
+ /** The credit control, absent where the map was made without one. */
31
+ attributionControl?: LeafletAttribution | undefined;
32
+ eachLayer(visit: (layer: LeafletLayer) => void): unknown;
33
+ /** The element the map was made in, which Leaflet makes focusable. */
34
+ getContainer(): HTMLElement;
35
+ /** The arrow-key handler, absent where the map was made with `keyboard: false`. */
36
+ keyboard?: {
37
+ disable(): unknown;
38
+ enable(): unknown;
39
+ enabled(): boolean;
40
+ } | undefined;
41
+ /** Where a place falls in the map's box, in pixels. */
42
+ latLngToContainerPoint(latLng: [number, number]): {
43
+ x: number;
44
+ y: number;
45
+ };
46
+ off(type: 'layeradd layerremove' | 'move zoom resize', listener: () => void): unknown;
47
+ on(type: 'layeradd layerremove' | 'move zoom resize', listener: () => void): unknown;
48
+ fitBounds(bounds: [[number, number], [number, number]], options?: LeafletAnimation & {
49
+ paddingBottomRight?: [number, number];
50
+ paddingTopLeft?: [number, number];
51
+ }): unknown;
52
+ panBy(offset: [number, number], options?: LeafletAnimation): unknown;
53
+ /** Goes to a place, at its zoom or the one it is at. */
54
+ setView(center: [number, number], zoom?: number, options?: LeafletAnimation): unknown;
55
+ /** The zoom buttons Leaflet adds unless told not to. */
56
+ zoomControl?: {
57
+ remove(): unknown;
58
+ } | undefined;
59
+ zoomIn(delta?: number, options?: {
60
+ animate?: boolean;
61
+ }): unknown;
62
+ zoomOut(delta?: number, options?: {
63
+ animate?: boolean;
64
+ }): unknown;
65
+ }
66
+ /**
67
+ * A drawn shape, as far as the driver handles one: put on the map, and taken
68
+ * off. `addTo` takes `never` for `addControl`'s reason: Leaflet types it as its
69
+ * own `Map`, which this package does not import.
70
+ */
71
+ export interface LeafletShape {
72
+ addTo(map: never): unknown;
73
+ /** Hears a press, which a point that can be pressed takes. */
74
+ on?(type: 'click', listener: () => void): unknown;
75
+ remove(): unknown;
76
+ }
77
+ /**
78
+ * The two constructors a page hands over for routes and areas to be drawn,
79
+ * which is `L` itself: `leafletDriver(map, L)`. **Passed rather than
80
+ * imported**, so this package still depends on no renderer.
81
+ */
82
+ export interface LeafletShapes {
83
+ /** A point drawn as a circle a fixed size on screen, which a points layer is drawn in. */
84
+ circleMarker?(latlng: [number, number], options: LeafletShapeOptions & {
85
+ radius: number;
86
+ }): LeafletShape;
87
+ polygon(latlngs: [number, number][], options: LeafletShapeOptions): LeafletShape;
88
+ polyline(latlngs: [number, number][], options: LeafletShapeOptions): LeafletShape;
89
+ /** A layer of map tiles from a URL, which a raster layer's frames are drawn in. */
90
+ tileLayer?(url: string, options: {
91
+ attribution?: string;
92
+ maxNativeZoom?: number;
93
+ opacity: number;
94
+ zIndex?: number;
95
+ }): LeafletTiles;
96
+ }
97
+ /** A tile layer, which a raster layer's frame is, faded in and out by opacity. */
98
+ export interface LeafletTiles extends LeafletShape {
99
+ setOpacity(opacity: number): unknown;
100
+ }
101
+ /** How a shape is painted, in Leaflet's own words for it. */
102
+ interface LeafletShapeOptions {
103
+ color: string;
104
+ dashArray?: string;
105
+ opacity?: number;
106
+ fillColor?: string;
107
+ fillOpacity?: number;
108
+ interactive: boolean;
109
+ lineCap?: 'round';
110
+ lineJoin?: 'round';
111
+ weight: number;
112
+ }
113
+ /**
114
+ * Drives a Leaflet map from the Map frame.
115
+ *
116
+ * **The credit is the control's prefix and every layer's attribution**, in the
117
+ * order Leaflet's own control draws them, read again as layers come and go.
118
+ * **The control is taken off while connected and put back after**, which
119
+ * Leaflet allows through its public API, unlike MapLibre. **So are its zoom
120
+ * buttons**, which Leaflet adds by default and MapLibre does not, where the
121
+ * frame draws its own. A zoom step is one level, which is what Leaflet's own
122
+ * buttons take.
123
+ */
124
+ export declare const leafletDriver: (map: LeafletMap, shapes?: LeafletShapes) => MapDriver;
125
+ export {};
126
+ //# sourceMappingURL=leaflet-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaflet-driver.d.ts","sourceRoot":"","sources":["../../src/leaflet/leaflet-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ const animation = (motion) => motion ? { animate: true, duration: motion.duration / 1000 } : { animate: false };
2
+ export const leafletDriver = (map, shapes) => ({
3
+ credits(changed) {
4
+ const control = map.attributionControl;
5
+ control?.remove();
6
+ map.on('layeradd layerremove', changed);
7
+ return {
8
+ read: () => {
9
+ const prefix = control?.options.prefix;
10
+ const credits = typeof prefix === 'string' && prefix !== '' ? [prefix] : [];
11
+ map.eachLayer((layer) => {
12
+ const credit = layer.getAttribution?.();
13
+ if (credit) {
14
+ credits.push(credit);
15
+ }
16
+ });
17
+ return credits;
18
+ },
19
+ stop: () => {
20
+ map.off('layeradd layerremove', changed);
21
+ if (control) {
22
+ map.addControl(control);
23
+ }
24
+ },
25
+ };
26
+ },
27
+ fit: ({ northEast, southWest }, padding, motion) => {
28
+ const inset = typeof padding === 'number'
29
+ ? { bottom: padding, left: padding, right: padding, top: padding }
30
+ : padding;
31
+ map.fitBounds([
32
+ [southWest.lat, southWest.lng],
33
+ [northEast.lat, northEast.lng],
34
+ ], {
35
+ ...animation(motion),
36
+ paddingBottomRight: [inset.right, inset.bottom],
37
+ paddingTopLeft: [inset.left, inset.top],
38
+ });
39
+ },
40
+ focusTarget: () => map.getContainer(),
41
+ onView: (moved) => {
42
+ map.on('move zoom resize', moved);
43
+ return () => {
44
+ map.off('move zoom resize', moved);
45
+ };
46
+ },
47
+ ready: (done) => {
48
+ const loading = [];
49
+ map.eachLayer((layer) => {
50
+ if (layer.isLoading?.()) {
51
+ loading.push(layer);
52
+ }
53
+ });
54
+ if (loading.length === 0) {
55
+ done();
56
+ return () => undefined;
57
+ }
58
+ let left = loading.length;
59
+ const heard = () => {
60
+ left -= 1;
61
+ if (left === 0) {
62
+ done();
63
+ }
64
+ };
65
+ for (const layer of loading) {
66
+ layer.once?.('load', heard);
67
+ }
68
+ return () => {
69
+ for (const layer of loading) {
70
+ layer.off?.('load', heard);
71
+ }
72
+ };
73
+ },
74
+ ...(shapes
75
+ ? {
76
+ layers: (read, events) => {
77
+ let drawn = [];
78
+ const rasters = new Map();
79
+ const drawRasters = (specs) => {
80
+ const make = shapes.tileLayer;
81
+ const wanted = new Set(specs.map((spec) => spec.id));
82
+ for (const [id, had] of [...rasters]) {
83
+ if (!wanted.has(id)) {
84
+ for (const tiles of had.tiles) {
85
+ tiles.remove();
86
+ }
87
+ rasters.delete(id);
88
+ }
89
+ }
90
+ if (!make) {
91
+ return;
92
+ }
93
+ for (const spec of specs) {
94
+ const frames = spec.frames ?? [];
95
+ const key = `${frames.join(' ')}|${spec.maxZoom ?? ''}`;
96
+ let had = rasters.get(spec.id);
97
+ if (had?.key !== key) {
98
+ for (const tiles of had?.tiles ?? []) {
99
+ tiles.remove();
100
+ }
101
+ had = {
102
+ key,
103
+ tiles: frames.map((url) => {
104
+ const tiles = make(url, {
105
+ ...(spec.attribution ? { attribution: spec.attribution } : {}),
106
+ ...(spec.maxZoom === undefined ? {} : { maxNativeZoom: spec.maxZoom }),
107
+ opacity: 0,
108
+ });
109
+ tiles.addTo(map);
110
+ return tiles;
111
+ }),
112
+ };
113
+ rasters.set(spec.id, had);
114
+ }
115
+ for (const [at, tiles] of had.tiles.entries()) {
116
+ tiles.setOpacity(at === spec.frame ? (spec.opacity ?? 0.7) : 0);
117
+ }
118
+ }
119
+ };
120
+ const draw = () => {
121
+ for (const shape of drawn) {
122
+ shape.remove();
123
+ }
124
+ const specs = read();
125
+ drawRasters(specs.filter((spec) => spec.kind === 'raster'));
126
+ drawn = specs.flatMap((layer) => {
127
+ if (layer.kind === 'buildings' ||
128
+ layer.kind === 'raster' ||
129
+ layer.kind === 'terrain' ||
130
+ layer.kind === 'contours' ||
131
+ layer.kind === 'landcover') {
132
+ return [];
133
+ }
134
+ const latlngs = layer.points.map(({ lat, lng }) => [lat, lng]);
135
+ if (layer.kind === 'points') {
136
+ const circle = shapes.circleMarker;
137
+ if (!circle) {
138
+ return [];
139
+ }
140
+ return latlngs.map((latlng, at) => {
141
+ const point = circle(latlng, {
142
+ color: layer.casing ?? layer.color,
143
+ fillColor: layer.color,
144
+ fillOpacity: 1,
145
+ interactive: true,
146
+ radius: 5,
147
+ weight: 1.5,
148
+ });
149
+ point.on?.('click', () => events?.press(layer.id, at));
150
+ point.addTo(map);
151
+ return point;
152
+ });
153
+ }
154
+ const casing = layer.kind === 'route' && layer.casing
155
+ ? [
156
+ shapes.polyline(latlngs, {
157
+ color: layer.casing,
158
+ interactive: false,
159
+ lineCap: 'round',
160
+ lineJoin: 'round',
161
+ opacity: layer.faded ? 0.4 : 1,
162
+ weight: 7,
163
+ }),
164
+ ]
165
+ : [];
166
+ const shape = layer.kind === 'route'
167
+ ? shapes.polyline(latlngs, {
168
+ color: layer.color,
169
+ ...(layer.pattern === 'dotted' ? { dashArray: '0 10' } : {}),
170
+ interactive: false,
171
+ lineCap: 'round',
172
+ lineJoin: 'round',
173
+ opacity: layer.faded ? 0.4 : 1,
174
+ weight: 4,
175
+ })
176
+ : shapes.polygon(latlngs, {
177
+ color: layer.color,
178
+ fillColor: layer.color,
179
+ fillOpacity: 0.16,
180
+ interactive: false,
181
+ weight: 1.5,
182
+ });
183
+ for (const one of [...casing, shape]) {
184
+ one.addTo(map);
185
+ }
186
+ return [...casing, shape];
187
+ });
188
+ };
189
+ draw();
190
+ return {
191
+ stop: () => {
192
+ for (const shape of drawn) {
193
+ shape.remove();
194
+ }
195
+ drawn = [];
196
+ drawRasters([]);
197
+ },
198
+ update: draw,
199
+ };
200
+ },
201
+ }
202
+ : {}),
203
+ panBy: (x, y, motion) => {
204
+ map.panBy([x, y], animation(motion));
205
+ },
206
+ project: ({ lat, lng }) => {
207
+ const { x, y } = map.latLngToContainerPoint([lat, lng]);
208
+ return { x, y };
209
+ },
210
+ replaceZoom: () => {
211
+ const control = map.zoomControl;
212
+ control?.remove();
213
+ return () => {
214
+ if (control) {
215
+ map.addControl(control);
216
+ }
217
+ };
218
+ },
219
+ show: ({ lat, lng, zoom }, motion) => {
220
+ map.setView([lat, lng], zoom, animation(motion));
221
+ },
222
+ silenceKeyboard: () => {
223
+ const handler = map.keyboard;
224
+ const was = handler?.enabled() ?? false;
225
+ handler?.disable();
226
+ return () => {
227
+ if (was) {
228
+ handler?.enable();
229
+ }
230
+ };
231
+ },
232
+ zoomBy: (direction, motion) => {
233
+ if (direction > 0) {
234
+ map.zoomIn(1, { animate: motion !== null });
235
+ }
236
+ else {
237
+ map.zoomOut(1, { animate: motion !== null });
238
+ }
239
+ },
240
+ });
241
+ //# sourceMappingURL=leaflet-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaflet-driver.js","sourceRoot":"","sources":["../../src/leaflet/leaflet-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { MapLibreStyle, MapStyleOptions } from '../style/index.js';
2
+ export { mapLibreStyle } from '../style/index.js';
3
+ export type { FollowedTheme, MapLibreMap } from './maplibre-driver.js';
4
+ export { followTheme, mapLibreDriver } from './maplibre-driver.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/maplibre/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { mapLibreStyle } from '../style/index.js';
2
+ export { followTheme, mapLibreDriver } from './maplibre-driver.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/maplibre/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { MapImage } from '../style/map-style.js';
2
+ /** Drawn at twice their size, for sharp screens, and handed to MapLibre as such. */
3
+ export declare const IMAGE_RATIO = 2;
4
+ /** A drawn image as MapLibre takes it: its pixels, and its size in them. */
5
+ export interface DrawnImage {
6
+ data: Uint8Array;
7
+ height: number;
8
+ width: number;
9
+ }
10
+ /**
11
+ * The image a style describes, drawn on a canvas: a landmark's icon on a disc
12
+ * in its hue, ringed in the land so it stands off the map, or a highway sign
13
+ * as wide as `text`, its number, with the number in it. `undefined` where
14
+ * there is no canvas to draw on.
15
+ */
16
+ export declare const drawMapImage: (image: MapImage, text?: string) => DrawnImage | undefined;
17
+ //# sourceMappingURL=map-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-images.d.ts","sourceRoot":"","sources":["../../src/maplibre/map-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAErD,oFAAoF;AACpF,eAAO,MAAM,WAAW,IAAI,CAAA;AAE5B,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AA8ID;;;;;GAKG;AACH,eAAO,MAAM,YAAY,UAAW,QAAQ,oBAAc,UAAU,GAAG,SA8CtE,CAAA"}
@@ -0,0 +1,138 @@
1
+ export const IMAGE_RATIO = 2;
2
+ const INTERSTATE = {
3
+ crown: {
4
+ d: 'M31.324219,124.99902C43.579102,85.77832 62.362793,49.44043 86.402832,17.259766C119.50439,26.392578 154.37061,31.272461 190.37695,31.272461C228.4375,31.272461 265.22461,25.820801 300,15.654785C334.77539,25.820801 371.5625,31.272461 409.62305,31.272461C445.62891,31.272461 480.49609,26.392578 513.59766,17.259766C537.63672,49.44043 556.4209,85.77832 568.67578,124.99902L31.324219,124.99902z',
5
+ transform: [1.0125461, 0, 0, 1.0271486, -3.7638021, -3.1017481],
6
+ },
7
+ field: {
8
+ d: 'M15,232.5C15,200.521 19.169434,169.51611 26.994629,139.99902L573.00586,139.99902C580.83008,169.51611 585,200.521 585,232.5C585,405.60547 462.82617,550.17188 300,584.67676C137.17432,550.17188 15,405.60547 15,232.5z',
9
+ transform: [1.0070935, 0, 0, 1.0102847, -2.1280324, -3.66885],
10
+ },
11
+ outline: {
12
+ d: 'M80.75293,0C115.42871,10.583496 152.23779,16.276856 190.37695,16.276856C228.51563,16.276856 265.32422,10.583496 300,0.0004883C334.67578,10.583496 371.48438,16.276856 409.62305,16.276856C447.76172,16.276856 484.57129,10.583496 519.24707,0C569.8125,63.908203 600,144.67822 600,232.5C600,413.92383 471.16992,565.25391 300,599.99902C128.83008,565.25391 0,413.92383 0,232.5C0,144.67822 30.187988,63.907715 80.75293,0z',
13
+ transform: [0.9983361, 0, 0, 0.9983377, 0.4991681, 0.4986858],
14
+ },
15
+ };
16
+ const US_ROUTE = 'M300,10.0024414c23.5644531,20.0751953,54.1171875,32.1914063,87.5,32.1914063S451.4355469,30.0751953,475,10l115,115c-21.1621094,30.0805664-33.5878906,66.753418-33.5878906,106.3271484c0,28.4628906,6.4267578,55.4238281,17.9101563,79.5117188C584.2441406,331.6640625,590,355.3945313,590,380c0,88.3671875-71.6328125,160-160,160h-25.1132813C362.5419922,540,324.7509766,559.4951172,300,590c-24.7514648-30.5048828-62.5419922-50-104.8867188-50h-25.1137695c-88.3666992,0-160-71.6328125-160-160c0-24.6054688,5.7563477-48.3359375,15.6787109-69.1611328c11.4824219-24.0878906,17.9101563-51.0488281,17.9101563-79.5117188C43.5883789,191.753418,31.1616211,155.0805664,10,125L125,10c23.5644531,20.0751953,54.1166992,32.1938477,87.5,32.1938477C245.8828125,42.1938477,276.4355469,30.0776367,300,10.0024414z';
17
+ const BOX = 600;
18
+ const FIELDS = {
19
+ interstate: { height: 0.36, middle: 0.585, width: 0.74 },
20
+ plate: { height: 0.5, middle: 0.5, width: 1 },
21
+ state: { height: 0.42, middle: 0.5, width: 0.72 },
22
+ us: { height: 0.38, middle: 0.47, width: 0.74 },
23
+ };
24
+ const across = (length) => (length <= 2 ? 1 : length === 3 ? 1.25 : 1.5);
25
+ const drawSign = (context, image, width, height) => {
26
+ const line = 1.5 * IMAGE_RATIO;
27
+ const part = (d, fill, transform, stroke) => {
28
+ context.save();
29
+ context.scale(width / BOX, height / BOX);
30
+ if (transform) {
31
+ const [a = 1, b = 0, c = 0, e = 1, f = 0, g = 0] = transform;
32
+ context.transform(a, b, c, e, f, g);
33
+ }
34
+ const path = new Path2D(d);
35
+ context.fillStyle = fill;
36
+ context.fill(path);
37
+ if (stroke) {
38
+ context.lineWidth = (line * BOX) / height;
39
+ context.strokeStyle = stroke;
40
+ context.stroke(path);
41
+ }
42
+ context.restore();
43
+ };
44
+ if (image.design === 'interstate') {
45
+ part(INTERSTATE.outline.d, '#ffffff', INTERSTATE.outline.transform, '#1a1a1a');
46
+ part(INTERSTATE.field.d, '#003f87', INTERSTATE.field.transform);
47
+ part(INTERSTATE.crown.d, '#af1e2d', INTERSTATE.crown.transform);
48
+ return;
49
+ }
50
+ if (image.design === 'us') {
51
+ part(US_ROUTE, '#ffffff', undefined, '#1a1a1a');
52
+ return;
53
+ }
54
+ context.beginPath();
55
+ if (image.design === 'state') {
56
+ context.ellipse(width / 2, height / 2, width / 2 - line, height / 2 - line, 0, 0, Math.PI * 2);
57
+ context.fillStyle = '#ffffff';
58
+ context.strokeStyle = '#1a1a1a';
59
+ }
60
+ else {
61
+ context.roundRect(line / 2, line / 2, width - line, height - line, height * 0.2);
62
+ context.fillStyle = image.fill ?? '#ffffff';
63
+ context.strokeStyle = image.edge ?? '#1a1a1a';
64
+ }
65
+ context.fill();
66
+ context.lineWidth = line;
67
+ context.stroke();
68
+ };
69
+ const drawNumber = (context, image, text, width, height) => {
70
+ const field = FIELDS[image.design];
71
+ const reference = 100;
72
+ context.font = `700 ${reference}px ${image.font}`;
73
+ const sample = context.measureText(text);
74
+ const tall = sample.actualBoundingBoxAscent + sample.actualBoundingBoxDescent || reference * 0.7;
75
+ const size = (reference * field.height * height) / tall;
76
+ context.font = `700 ${size}px ${image.font}`;
77
+ const measured = context.measureText(text);
78
+ const room = image.design === 'plate' ? width - 8 * IMAGE_RATIO : width * field.width;
79
+ const narrow = Math.min(1, room / measured.width);
80
+ const middle = height * field.middle;
81
+ const baseline = middle + (measured.actualBoundingBoxAscent - measured.actualBoundingBoxDescent) / 2;
82
+ context.save();
83
+ context.translate(width / 2, baseline);
84
+ context.scale(narrow, 1);
85
+ context.fillStyle = image.ink;
86
+ context.textAlign = 'center';
87
+ context.textBaseline = 'alphabetic';
88
+ context.fillText(text, 0, 0);
89
+ context.restore();
90
+ };
91
+ export const drawMapImage = (image, text = '') => {
92
+ const canvas = document.createElement('canvas');
93
+ const context = canvas.getContext('2d');
94
+ if (!context) {
95
+ return undefined;
96
+ }
97
+ const height = 22 * IMAGE_RATIO;
98
+ let width = height;
99
+ if (image.kind === 'sign') {
100
+ if (image.design === 'plate') {
101
+ context.font = `700 ${height * 0.5}px ${image.font}`;
102
+ width = Math.max(height, Math.ceil(context.measureText(text).width + 10 * IMAGE_RATIO));
103
+ }
104
+ else {
105
+ width = Math.round(height * across(text.length));
106
+ }
107
+ }
108
+ canvas.width = width;
109
+ canvas.height = height;
110
+ if (image.kind === 'landmark') {
111
+ const middle = width / 2;
112
+ context.fillStyle = image.ink;
113
+ context.beginPath();
114
+ context.arc(middle, middle, middle, 0, Math.PI * 2);
115
+ context.fill();
116
+ context.fillStyle = image.color;
117
+ context.beginPath();
118
+ context.arc(middle, middle, middle - 1.5 * IMAGE_RATIO, 0, Math.PI * 2);
119
+ context.fill();
120
+ const [, , boxWidth = 256] = image.icon.viewBox.split(/\s+/).map(Number);
121
+ const size = 12 * IMAGE_RATIO;
122
+ context.save();
123
+ context.translate(middle - size / 2, middle - size / 2);
124
+ context.scale(size / boxWidth, size / boxWidth);
125
+ context.fillStyle = image.ink;
126
+ for (const [, path] of image.icon.content.matchAll(/\sd="([^"]+)"/g)) {
127
+ context.fill(new Path2D(path));
128
+ }
129
+ context.restore();
130
+ }
131
+ else {
132
+ drawSign(context, image, width, height);
133
+ drawNumber(context, image, text, width, height);
134
+ }
135
+ const { data } = context.getImageData(0, 0, width, height);
136
+ return { data: new Uint8Array(data.buffer.slice(0)), height, width };
137
+ };
138
+ //# sourceMappingURL=map-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-images.js","sourceRoot":"","sources":["../../src/maplibre/map-images.ts"],"names":[],"mappings":"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"}