@fieldia/map 0.16.0 → 0.18.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 +56 -9
- package/package.json +4 -4
- package/src/index.d.mts +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js.map +1 -1
- package/src/index.mjs.map +1 -1
- package/src/lib/area.js +2 -1
- package/src/lib/area.js.map +1 -1
- package/src/lib/area.mjs +3 -2
- package/src/lib/area.mjs.map +1 -1
- package/src/lib/card.d.mts +2 -1
- package/src/lib/card.d.ts +2 -1
- package/src/lib/card.js +5 -3
- package/src/lib/card.js.map +1 -1
- package/src/lib/card.mjs +5 -3
- package/src/lib/card.mjs.map +1 -1
- package/src/lib/cluster.d.mts +6 -1
- package/src/lib/cluster.d.ts +6 -1
- package/src/lib/cluster.js +11 -5
- package/src/lib/cluster.js.map +1 -1
- package/src/lib/cluster.mjs +11 -5
- package/src/lib/cluster.mjs.map +1 -1
- package/src/lib/form-map.d.mts +5 -2
- package/src/lib/form-map.d.ts +5 -2
- package/src/lib/form-map.js +222 -22
- package/src/lib/form-map.js.map +1 -1
- package/src/lib/form-map.mjs +224 -24
- package/src/lib/form-map.mjs.map +1 -1
- package/src/lib/heat.d.mts +25 -0
- package/src/lib/heat.d.ts +25 -0
- package/src/lib/heat.js +111 -0
- package/src/lib/heat.js.map +1 -0
- package/src/lib/heat.mjs +108 -0
- package/src/lib/heat.mjs.map +1 -0
- package/src/lib/labels.d.mts +23 -0
- package/src/lib/labels.d.ts +23 -0
- package/src/lib/labels.js +56 -4
- package/src/lib/labels.js.map +1 -1
- package/src/lib/labels.mjs +56 -4
- package/src/lib/labels.mjs.map +1 -1
- package/src/lib/leaflet.js +1 -0
- package/src/lib/leaflet.js.map +1 -1
- package/src/lib/leaflet.mjs +1 -0
- package/src/lib/leaflet.mjs.map +1 -1
- package/src/lib/list-view.js +126 -18
- package/src/lib/list-view.js.map +1 -1
- package/src/lib/list-view.mjs +126 -18
- package/src/lib/list-view.mjs.map +1 -1
- package/src/lib/map-core.d.mts +8 -0
- package/src/lib/map-core.d.ts +8 -0
- package/src/lib/map-core.js +41 -5
- package/src/lib/map-core.js.map +1 -1
- package/src/lib/map-core.mjs +40 -5
- package/src/lib/map-core.mjs.map +1 -1
- package/src/lib/marks.d.mts +11 -0
- package/src/lib/marks.d.ts +11 -0
- package/src/lib/marks.js +26 -1
- package/src/lib/marks.js.map +1 -1
- package/src/lib/marks.mjs +23 -0
- package/src/lib/marks.mjs.map +1 -1
- package/src/lib/measure.d.mts +15 -0
- package/src/lib/measure.d.ts +15 -0
- package/src/lib/measure.js +157 -0
- package/src/lib/measure.js.map +1 -0
- package/src/lib/measure.mjs +153 -0
- package/src/lib/measure.mjs.map +1 -0
- package/src/lib/place.js +3 -1
- package/src/lib/place.js.map +1 -1
- package/src/lib/place.mjs +4 -2
- package/src/lib/place.mjs.map +1 -1
- package/src/lib/providers.d.mts +37 -5
- package/src/lib/providers.d.ts +37 -5
- package/src/lib/providers.js +37 -18
- package/src/lib/providers.js.map +1 -1
- package/src/lib/providers.mjs +37 -18
- package/src/lib/providers.mjs.map +1 -1
- package/src/lib/reach.d.mts +25 -0
- package/src/lib/reach.d.ts +25 -0
- package/src/lib/reach.js +158 -0
- package/src/lib/reach.js.map +1 -0
- package/src/lib/reach.mjs +153 -0
- package/src/lib/reach.mjs.map +1 -0
- package/src/lib/regions.d.mts +137 -0
- package/src/lib/regions.d.ts +137 -0
- package/src/lib/regions.js +456 -0
- package/src/lib/regions.js.map +1 -0
- package/src/lib/regions.mjs +445 -0
- package/src/lib/regions.mjs.map +1 -0
- package/src/lib/routes.d.mts +16 -4
- package/src/lib/routes.d.ts +16 -4
- package/src/lib/routes.js +40 -3
- package/src/lib/routes.js.map +1 -1
- package/src/lib/routes.mjs +38 -3
- package/src/lib/routes.mjs.map +1 -1
- package/src/lib/settings.d.mts +9 -1
- package/src/lib/settings.d.ts +9 -1
- package/src/lib/styles.d.mts +3 -3
- package/src/lib/styles.d.ts +3 -3
- package/src/lib/styles.js +18 -1
- package/src/lib/styles.js.map +1 -1
- package/src/lib/styles.mjs +18 -1
- package/src/lib/styles.mjs.map +1 -1
- package/src/lib/tools.d.mts +30 -0
- package/src/lib/tools.d.ts +30 -0
- package/src/lib/tools.js +135 -0
- package/src/lib/tools.js.map +1 -0
- package/src/lib/tools.mjs +132 -0
- package/src/lib/tools.mjs.map +1 -0
package/src/lib/heat.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.drawHeat = drawHeat;
|
|
4
|
+
/** How far each record's glow reaches, in pixels, and how soft its edge is. */
|
|
5
|
+
const RADIUS = 22;
|
|
6
|
+
const BLUR = 16;
|
|
7
|
+
function drawHeat(options) {
|
|
8
|
+
const { map, L, document: doc } = options;
|
|
9
|
+
const canvas = doc.createElement('canvas');
|
|
10
|
+
canvas.className = 'fd-map-heat leaflet-zoom-hide';
|
|
11
|
+
canvas.setAttribute('aria-hidden', 'true');
|
|
12
|
+
canvas.style.position = 'absolute';
|
|
13
|
+
canvas.style.pointerEvents = 'none';
|
|
14
|
+
const pane = map.getPane('fd-heat') ?? map.createPane('fd-heat');
|
|
15
|
+
// Over the images, under the shapes (400) and the pins (600).
|
|
16
|
+
pane.style.zIndex = '350';
|
|
17
|
+
pane.style.pointerEvents = 'none';
|
|
18
|
+
pane.append(canvas);
|
|
19
|
+
let points = [];
|
|
20
|
+
let shown = false;
|
|
21
|
+
let palette = null;
|
|
22
|
+
let paletteOf = '';
|
|
23
|
+
// One record's glow, drawn once: a blurred disc to stamp at each place.
|
|
24
|
+
const stamp = doc.createElement('canvas');
|
|
25
|
+
const r = RADIUS + BLUR;
|
|
26
|
+
stamp.width = stamp.height = r * 2;
|
|
27
|
+
const stampContext = stamp.getContext('2d');
|
|
28
|
+
if (stampContext) {
|
|
29
|
+
stampContext.shadowOffsetX = stampContext.shadowOffsetY = r * 2;
|
|
30
|
+
stampContext.shadowBlur = BLUR;
|
|
31
|
+
stampContext.shadowColor = 'black';
|
|
32
|
+
stampContext.beginPath();
|
|
33
|
+
stampContext.arc(-r, -r, RADIUS, 0, Math.PI * 2);
|
|
34
|
+
stampContext.fill();
|
|
35
|
+
}
|
|
36
|
+
/** 256 colours, from none to the strongest, made from the page's tones as the canvas reads them. */
|
|
37
|
+
function makePalette(colours) {
|
|
38
|
+
const strip = doc.createElement('canvas');
|
|
39
|
+
strip.width = 256;
|
|
40
|
+
strip.height = 1;
|
|
41
|
+
const context = strip.getContext('2d');
|
|
42
|
+
if (!context)
|
|
43
|
+
return new Uint8ClampedArray(1024);
|
|
44
|
+
const gradient = context.createLinearGradient(0, 0, 256, 0);
|
|
45
|
+
colours.forEach((colour, i) => {
|
|
46
|
+
context.fillStyle = '#2563eb';
|
|
47
|
+
// A tone the canvas cannot read keeps the last it could.
|
|
48
|
+
context.fillStyle = colour;
|
|
49
|
+
gradient.addColorStop(0.25 + (0.75 * i) / Math.max(1, colours.length - 1), context.fillStyle);
|
|
50
|
+
});
|
|
51
|
+
context.fillStyle = gradient;
|
|
52
|
+
context.fillRect(0, 0, 256, 1);
|
|
53
|
+
return context.getImageData(0, 0, 256, 1).data;
|
|
54
|
+
}
|
|
55
|
+
function redraw() {
|
|
56
|
+
const size = map.getSize();
|
|
57
|
+
const ratio = doc.defaultView?.devicePixelRatio ?? 1;
|
|
58
|
+
L.DomUtil.setPosition(canvas, map.containerPointToLayerPoint([0, 0]));
|
|
59
|
+
canvas.style.width = `${size.x}px`;
|
|
60
|
+
canvas.style.height = `${size.y}px`;
|
|
61
|
+
canvas.width = Math.round(size.x * ratio);
|
|
62
|
+
canvas.height = Math.round(size.y * ratio);
|
|
63
|
+
canvas.hidden = !shown;
|
|
64
|
+
const context = canvas.getContext('2d', { willReadFrequently: true });
|
|
65
|
+
if (!context || !shown || !points.length)
|
|
66
|
+
return;
|
|
67
|
+
const colours = options.colours();
|
|
68
|
+
if (colours.join() !== paletteOf) {
|
|
69
|
+
palette = makePalette(colours);
|
|
70
|
+
paletteOf = colours.join();
|
|
71
|
+
}
|
|
72
|
+
context.setTransform(ratio, 0, 0, ratio, 0, 0);
|
|
73
|
+
const most = Math.max(...points.map((p) => p.weight), 1e-9);
|
|
74
|
+
const bounds = map.getBounds().pad(0.2);
|
|
75
|
+
for (const point of points) {
|
|
76
|
+
if (!bounds.contains([point.lat, point.lng]))
|
|
77
|
+
continue;
|
|
78
|
+
const at = map.latLngToContainerPoint([point.lat, point.lng]);
|
|
79
|
+
// Each adds a little: only many together, or the heaviest, glow strongest.
|
|
80
|
+
context.globalAlpha = Math.max(0.04, point.weight / most) * 0.22;
|
|
81
|
+
context.drawImage(stamp, at.x - r, at.y - r);
|
|
82
|
+
}
|
|
83
|
+
// Each pixel's strength becomes its colour.
|
|
84
|
+
const image = context.getImageData(0, 0, canvas.width, canvas.height);
|
|
85
|
+
const data = image.data;
|
|
86
|
+
for (let i = 3; i < data.length; i += 4) {
|
|
87
|
+
const strength = data[i];
|
|
88
|
+
if (!strength || !palette)
|
|
89
|
+
continue;
|
|
90
|
+
const j = strength * 4;
|
|
91
|
+
data[i - 3] = palette[j];
|
|
92
|
+
data[i - 2] = palette[j + 1];
|
|
93
|
+
data[i - 1] = palette[j + 2];
|
|
94
|
+
data[i] = Math.min(220, strength * 1.6);
|
|
95
|
+
}
|
|
96
|
+
context.putImageData(image, 0, 0);
|
|
97
|
+
}
|
|
98
|
+
map.on('moveend resize', redraw);
|
|
99
|
+
return {
|
|
100
|
+
draw(next, on) {
|
|
101
|
+
points = next;
|
|
102
|
+
shown = on;
|
|
103
|
+
redraw();
|
|
104
|
+
},
|
|
105
|
+
destroy() {
|
|
106
|
+
map.off('moveend resize', redraw);
|
|
107
|
+
canvas.remove();
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=heat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heat.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/heat.ts"],"names":[],"mappings":"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"}
|
package/src/lib/heat.mjs
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/** How far each record's glow reaches, in pixels, and how soft its edge is. */
|
|
2
|
+
const RADIUS = 22;
|
|
3
|
+
const BLUR = 16;
|
|
4
|
+
export function drawHeat(options) {
|
|
5
|
+
const { map, L, document: doc } = options;
|
|
6
|
+
const canvas = doc.createElement('canvas');
|
|
7
|
+
canvas.className = 'fd-map-heat leaflet-zoom-hide';
|
|
8
|
+
canvas.setAttribute('aria-hidden', 'true');
|
|
9
|
+
canvas.style.position = 'absolute';
|
|
10
|
+
canvas.style.pointerEvents = 'none';
|
|
11
|
+
const pane = map.getPane('fd-heat') ?? map.createPane('fd-heat');
|
|
12
|
+
// Over the images, under the shapes (400) and the pins (600).
|
|
13
|
+
pane.style.zIndex = '350';
|
|
14
|
+
pane.style.pointerEvents = 'none';
|
|
15
|
+
pane.append(canvas);
|
|
16
|
+
let points = [];
|
|
17
|
+
let shown = false;
|
|
18
|
+
let palette = null;
|
|
19
|
+
let paletteOf = '';
|
|
20
|
+
// One record's glow, drawn once: a blurred disc to stamp at each place.
|
|
21
|
+
const stamp = doc.createElement('canvas');
|
|
22
|
+
const r = RADIUS + BLUR;
|
|
23
|
+
stamp.width = stamp.height = r * 2;
|
|
24
|
+
const stampContext = stamp.getContext('2d');
|
|
25
|
+
if (stampContext) {
|
|
26
|
+
stampContext.shadowOffsetX = stampContext.shadowOffsetY = r * 2;
|
|
27
|
+
stampContext.shadowBlur = BLUR;
|
|
28
|
+
stampContext.shadowColor = 'black';
|
|
29
|
+
stampContext.beginPath();
|
|
30
|
+
stampContext.arc(-r, -r, RADIUS, 0, Math.PI * 2);
|
|
31
|
+
stampContext.fill();
|
|
32
|
+
}
|
|
33
|
+
/** 256 colours, from none to the strongest, made from the page's tones as the canvas reads them. */
|
|
34
|
+
function makePalette(colours) {
|
|
35
|
+
const strip = doc.createElement('canvas');
|
|
36
|
+
strip.width = 256;
|
|
37
|
+
strip.height = 1;
|
|
38
|
+
const context = strip.getContext('2d');
|
|
39
|
+
if (!context)
|
|
40
|
+
return new Uint8ClampedArray(1024);
|
|
41
|
+
const gradient = context.createLinearGradient(0, 0, 256, 0);
|
|
42
|
+
colours.forEach((colour, i) => {
|
|
43
|
+
context.fillStyle = '#2563eb';
|
|
44
|
+
// A tone the canvas cannot read keeps the last it could.
|
|
45
|
+
context.fillStyle = colour;
|
|
46
|
+
gradient.addColorStop(0.25 + (0.75 * i) / Math.max(1, colours.length - 1), context.fillStyle);
|
|
47
|
+
});
|
|
48
|
+
context.fillStyle = gradient;
|
|
49
|
+
context.fillRect(0, 0, 256, 1);
|
|
50
|
+
return context.getImageData(0, 0, 256, 1).data;
|
|
51
|
+
}
|
|
52
|
+
function redraw() {
|
|
53
|
+
const size = map.getSize();
|
|
54
|
+
const ratio = doc.defaultView?.devicePixelRatio ?? 1;
|
|
55
|
+
L.DomUtil.setPosition(canvas, map.containerPointToLayerPoint([0, 0]));
|
|
56
|
+
canvas.style.width = `${size.x}px`;
|
|
57
|
+
canvas.style.height = `${size.y}px`;
|
|
58
|
+
canvas.width = Math.round(size.x * ratio);
|
|
59
|
+
canvas.height = Math.round(size.y * ratio);
|
|
60
|
+
canvas.hidden = !shown;
|
|
61
|
+
const context = canvas.getContext('2d', { willReadFrequently: true });
|
|
62
|
+
if (!context || !shown || !points.length)
|
|
63
|
+
return;
|
|
64
|
+
const colours = options.colours();
|
|
65
|
+
if (colours.join() !== paletteOf) {
|
|
66
|
+
palette = makePalette(colours);
|
|
67
|
+
paletteOf = colours.join();
|
|
68
|
+
}
|
|
69
|
+
context.setTransform(ratio, 0, 0, ratio, 0, 0);
|
|
70
|
+
const most = Math.max(...points.map((p) => p.weight), 1e-9);
|
|
71
|
+
const bounds = map.getBounds().pad(0.2);
|
|
72
|
+
for (const point of points) {
|
|
73
|
+
if (!bounds.contains([point.lat, point.lng]))
|
|
74
|
+
continue;
|
|
75
|
+
const at = map.latLngToContainerPoint([point.lat, point.lng]);
|
|
76
|
+
// Each adds a little: only many together, or the heaviest, glow strongest.
|
|
77
|
+
context.globalAlpha = Math.max(0.04, point.weight / most) * 0.22;
|
|
78
|
+
context.drawImage(stamp, at.x - r, at.y - r);
|
|
79
|
+
}
|
|
80
|
+
// Each pixel's strength becomes its colour.
|
|
81
|
+
const image = context.getImageData(0, 0, canvas.width, canvas.height);
|
|
82
|
+
const data = image.data;
|
|
83
|
+
for (let i = 3; i < data.length; i += 4) {
|
|
84
|
+
const strength = data[i];
|
|
85
|
+
if (!strength || !palette)
|
|
86
|
+
continue;
|
|
87
|
+
const j = strength * 4;
|
|
88
|
+
data[i - 3] = palette[j];
|
|
89
|
+
data[i - 2] = palette[j + 1];
|
|
90
|
+
data[i - 1] = palette[j + 2];
|
|
91
|
+
data[i] = Math.min(220, strength * 1.6);
|
|
92
|
+
}
|
|
93
|
+
context.putImageData(image, 0, 0);
|
|
94
|
+
}
|
|
95
|
+
map.on('moveend resize', redraw);
|
|
96
|
+
return {
|
|
97
|
+
draw(next, on) {
|
|
98
|
+
points = next;
|
|
99
|
+
shown = on;
|
|
100
|
+
redraw();
|
|
101
|
+
},
|
|
102
|
+
destroy() {
|
|
103
|
+
map.off('moveend resize', redraw);
|
|
104
|
+
canvas.remove();
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=heat.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heat.mjs","sourceRoot":"","sources":["../../../../../libs/map/src/lib/heat.ts"],"names":[],"mappings":"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"}
|
package/src/lib/labels.d.mts
CHANGED
|
@@ -57,6 +57,19 @@ export interface MapLabels {
|
|
|
57
57
|
/** The designer's setting naming the field a place's address is written into. */
|
|
58
58
|
settingAddress: string;
|
|
59
59
|
settingNowhere: string;
|
|
60
|
+
/** The tools under the zoom. */
|
|
61
|
+
satellite: string;
|
|
62
|
+
traffic: string;
|
|
63
|
+
fullScreen: string;
|
|
64
|
+
leaveFullScreen: string;
|
|
65
|
+
measure: string;
|
|
66
|
+
measureHint: string;
|
|
67
|
+
/** A way measured: `{distance}` its length. */
|
|
68
|
+
measured: string;
|
|
69
|
+
/** An area of a map's shaded areas, with its number. */
|
|
70
|
+
areaValue: string;
|
|
71
|
+
/** The legend's step for areas with nothing to shade them. */
|
|
72
|
+
areasNone: string;
|
|
60
73
|
}
|
|
61
74
|
export declare const MAP_LABELS: Record<Locale, MapLabels>;
|
|
62
75
|
/** The words a list's map shows, besides the maps' own: kept apart, so a form with only a place or an area never carries them. */
|
|
@@ -80,6 +93,14 @@ export interface ListMapLabels {
|
|
|
80
93
|
/** The tools that draw an area on a list's map, and the search the area becomes. */
|
|
81
94
|
drawArea: string;
|
|
82
95
|
inDrawnArea: string;
|
|
96
|
+
/** A search for one shaded area's records: `{name}` the area. */
|
|
97
|
+
inRegion: string;
|
|
98
|
+
/** The tool that puts the records nearest the reader first. */
|
|
99
|
+
nearestFirst: string;
|
|
100
|
+
/** Said when the reader's place was not given: the records nearest the map's middle come first instead. */
|
|
101
|
+
nearestFromMiddle: string;
|
|
102
|
+
/** Said under a heat map. */
|
|
103
|
+
heatNote: string;
|
|
83
104
|
}
|
|
84
105
|
export declare const LIST_MAP_LABELS: Record<Locale, ListMapLabels>;
|
|
85
106
|
/** The words a form's map shows, besides the maps' own and a list map's: kept apart, as theirs are. */
|
|
@@ -91,6 +112,8 @@ export interface FormMapLabels {
|
|
|
91
112
|
/** Back to following a place that moves, after the person moved the map away. */
|
|
92
113
|
follow: string;
|
|
93
114
|
routeFailed: string;
|
|
115
|
+
/** Pins gathered: `{n}` how many, `{names}` whose ("2 here: Kitchen, Courier"). */
|
|
116
|
+
crowdHere: string;
|
|
94
117
|
}
|
|
95
118
|
export declare const FORM_MAP_LABELS: Record<Locale, FormMapLabels>;
|
|
96
119
|
/** The words for a page's language, with the app's own over them. */
|
package/src/lib/labels.d.ts
CHANGED
|
@@ -57,6 +57,19 @@ export interface MapLabels {
|
|
|
57
57
|
/** The designer's setting naming the field a place's address is written into. */
|
|
58
58
|
settingAddress: string;
|
|
59
59
|
settingNowhere: string;
|
|
60
|
+
/** The tools under the zoom. */
|
|
61
|
+
satellite: string;
|
|
62
|
+
traffic: string;
|
|
63
|
+
fullScreen: string;
|
|
64
|
+
leaveFullScreen: string;
|
|
65
|
+
measure: string;
|
|
66
|
+
measureHint: string;
|
|
67
|
+
/** A way measured: `{distance}` its length. */
|
|
68
|
+
measured: string;
|
|
69
|
+
/** An area of a map's shaded areas, with its number. */
|
|
70
|
+
areaValue: string;
|
|
71
|
+
/** The legend's step for areas with nothing to shade them. */
|
|
72
|
+
areasNone: string;
|
|
60
73
|
}
|
|
61
74
|
export declare const MAP_LABELS: Record<Locale, MapLabels>;
|
|
62
75
|
/** The words a list's map shows, besides the maps' own: kept apart, so a form with only a place or an area never carries them. */
|
|
@@ -80,6 +93,14 @@ export interface ListMapLabels {
|
|
|
80
93
|
/** The tools that draw an area on a list's map, and the search the area becomes. */
|
|
81
94
|
drawArea: string;
|
|
82
95
|
inDrawnArea: string;
|
|
96
|
+
/** A search for one shaded area's records: `{name}` the area. */
|
|
97
|
+
inRegion: string;
|
|
98
|
+
/** The tool that puts the records nearest the reader first. */
|
|
99
|
+
nearestFirst: string;
|
|
100
|
+
/** Said when the reader's place was not given: the records nearest the map's middle come first instead. */
|
|
101
|
+
nearestFromMiddle: string;
|
|
102
|
+
/** Said under a heat map. */
|
|
103
|
+
heatNote: string;
|
|
83
104
|
}
|
|
84
105
|
export declare const LIST_MAP_LABELS: Record<Locale, ListMapLabels>;
|
|
85
106
|
/** The words a form's map shows, besides the maps' own and a list map's: kept apart, as theirs are. */
|
|
@@ -91,6 +112,8 @@ export interface FormMapLabels {
|
|
|
91
112
|
/** Back to following a place that moves, after the person moved the map away. */
|
|
92
113
|
follow: string;
|
|
93
114
|
routeFailed: string;
|
|
115
|
+
/** Pins gathered: `{n}` how many, `{names}` whose ("2 here: Kitchen, Courier"). */
|
|
116
|
+
crowdHere: string;
|
|
94
117
|
}
|
|
95
118
|
export declare const FORM_MAP_LABELS: Record<Locale, FormMapLabels>;
|
|
96
119
|
/** The words for a page's language, with the app's own over them. */
|
package/src/lib/labels.js
CHANGED
|
@@ -59,6 +59,15 @@ exports.MAP_LABELS = {
|
|
|
59
59
|
settingShapes: 'Shapes',
|
|
60
60
|
settingAddress: 'Address goes into',
|
|
61
61
|
settingNowhere: 'Nowhere',
|
|
62
|
+
satellite: 'Satellite',
|
|
63
|
+
traffic: 'Traffic',
|
|
64
|
+
fullScreen: 'Full screen',
|
|
65
|
+
leaveFullScreen: 'Leave full screen',
|
|
66
|
+
measure: 'Measure a distance',
|
|
67
|
+
measureHint: 'Click points along the way; double-click or press Enter to finish. Escape clears.',
|
|
68
|
+
measured: 'The way measures {distance}.',
|
|
69
|
+
areaValue: '{name}: {value}',
|
|
70
|
+
areasNone: 'None',
|
|
62
71
|
},
|
|
63
72
|
ar: {
|
|
64
73
|
mapOf: '{label}، خريطة',
|
|
@@ -114,6 +123,15 @@ exports.MAP_LABELS = {
|
|
|
114
123
|
settingShapes: 'الأشكال',
|
|
115
124
|
settingAddress: 'يُكتب العنوان في',
|
|
116
125
|
settingNowhere: 'لا مكان',
|
|
126
|
+
satellite: 'القمر الصناعي',
|
|
127
|
+
traffic: 'حركة المرور',
|
|
128
|
+
fullScreen: 'ملء الشاشة',
|
|
129
|
+
leaveFullScreen: 'الخروج من ملء الشاشة',
|
|
130
|
+
measure: 'قِس مسافة',
|
|
131
|
+
measureHint: 'انقر نقاطًا على طول الطريق؛ انقر مرتين أو اضغط Enter للإنهاء، ويمسح Escape القياس.',
|
|
132
|
+
measured: 'يبلغ الطريق {distance}.',
|
|
133
|
+
areaValue: '{name}: {value}',
|
|
134
|
+
areasNone: 'لا شيء',
|
|
117
135
|
},
|
|
118
136
|
fr: {
|
|
119
137
|
mapOf: '{label}, carte',
|
|
@@ -169,6 +187,15 @@ exports.MAP_LABELS = {
|
|
|
169
187
|
settingShapes: 'Formes',
|
|
170
188
|
settingAddress: 'L’adresse va dans',
|
|
171
189
|
settingNowhere: 'Nulle part',
|
|
190
|
+
satellite: 'Satellite',
|
|
191
|
+
traffic: 'Trafic',
|
|
192
|
+
fullScreen: 'Plein écran',
|
|
193
|
+
leaveFullScreen: 'Quitter le plein écran',
|
|
194
|
+
measure: 'Mesurer une distance',
|
|
195
|
+
measureHint: 'Cliquez des points le long du trajet ; double-cliquez ou appuyez sur Entrée pour terminer. Échap efface.',
|
|
196
|
+
measured: 'Le trajet mesure {distance}.',
|
|
197
|
+
areaValue: '{name} : {value}',
|
|
198
|
+
areasNone: 'Aucun',
|
|
172
199
|
},
|
|
173
200
|
de: {
|
|
174
201
|
mapOf: '{label}, Karte',
|
|
@@ -224,6 +251,15 @@ exports.MAP_LABELS = {
|
|
|
224
251
|
settingShapes: 'Formen',
|
|
225
252
|
settingAddress: 'Adresse kommt in',
|
|
226
253
|
settingNowhere: 'Nirgends',
|
|
254
|
+
satellite: 'Satellit',
|
|
255
|
+
traffic: 'Verkehr',
|
|
256
|
+
fullScreen: 'Vollbild',
|
|
257
|
+
leaveFullScreen: 'Vollbild verlassen',
|
|
258
|
+
measure: 'Entfernung messen',
|
|
259
|
+
measureHint: 'Punkte entlang des Weges anklicken; Doppelklick oder Eingabe beendet, Escape löscht.',
|
|
260
|
+
measured: 'Der Weg misst {distance}.',
|
|
261
|
+
areaValue: '{name}: {value}',
|
|
262
|
+
areasNone: 'Keine',
|
|
227
263
|
},
|
|
228
264
|
};
|
|
229
265
|
exports.LIST_MAP_LABELS = {
|
|
@@ -241,6 +277,10 @@ exports.LIST_MAP_LABELS = {
|
|
|
241
277
|
mapFailed: 'The map could not load the records.',
|
|
242
278
|
drawArea: 'Draw an area to search in',
|
|
243
279
|
inDrawnArea: 'In the area drawn',
|
|
280
|
+
inRegion: 'In {name}',
|
|
281
|
+
nearestFirst: 'Nearest first',
|
|
282
|
+
nearestFromMiddle: 'Nearest the middle of the map first: your place was not given.',
|
|
283
|
+
heatNote: 'A heat map from afar: zoom in to the streets to see each one.',
|
|
244
284
|
},
|
|
245
285
|
ar: {
|
|
246
286
|
pinKeys: 'ينتقل Tab بين الدبابيس. يفتح Enter بطاقة الدبوس، ويغلقها Escape.',
|
|
@@ -256,6 +296,10 @@ exports.LIST_MAP_LABELS = {
|
|
|
256
296
|
mapFailed: 'تعذّر تحميل السجلات على الخريطة.',
|
|
257
297
|
drawArea: 'ارسم منطقة للبحث فيها',
|
|
258
298
|
inDrawnArea: 'في المنطقة المرسومة',
|
|
299
|
+
inRegion: 'في {name}',
|
|
300
|
+
nearestFirst: 'الأقرب أولًا',
|
|
301
|
+
nearestFromMiddle: 'الأقرب إلى منتصف الخريطة أولًا: لم يُعطَ موقعك.',
|
|
302
|
+
heatNote: 'خريطة حرارية من بعيد: قرّب إلى الشوارع لترى كلًّا منها.',
|
|
259
303
|
},
|
|
260
304
|
fr: {
|
|
261
305
|
pinKeys: 'Tab parcourt les épingles. Entrée ouvre la fiche d’une épingle, Échap la ferme.',
|
|
@@ -271,6 +315,10 @@ exports.LIST_MAP_LABELS = {
|
|
|
271
315
|
mapFailed: 'La carte n’a pas pu charger les enregistrements.',
|
|
272
316
|
drawArea: 'Tracer une zone où chercher',
|
|
273
317
|
inDrawnArea: 'Dans la zone tracée',
|
|
318
|
+
inRegion: 'À {name}',
|
|
319
|
+
nearestFirst: 'Les plus proches d’abord',
|
|
320
|
+
nearestFromMiddle: 'Les plus proches du centre de la carte d’abord : votre position n’a pas été donnée.',
|
|
321
|
+
heatNote: 'Une carte de chaleur vue de loin : zoomez jusqu’aux rues pour voir chacun.',
|
|
274
322
|
},
|
|
275
323
|
de: {
|
|
276
324
|
pinKeys: 'Tab springt von Nadel zu Nadel. Eingabe öffnet die Karte einer Nadel, Escape schließt sie.',
|
|
@@ -286,13 +334,17 @@ exports.LIST_MAP_LABELS = {
|
|
|
286
334
|
mapFailed: 'Die Karte konnte die Datensätze nicht laden.',
|
|
287
335
|
drawArea: 'Ein Gebiet zum Suchen zeichnen',
|
|
288
336
|
inDrawnArea: 'Im gezeichneten Gebiet',
|
|
337
|
+
inRegion: 'In {name}',
|
|
338
|
+
nearestFirst: 'Nächste zuerst',
|
|
339
|
+
nearestFromMiddle: 'Die der Kartenmitte nächsten zuerst: Ihr Standort wurde nicht freigegeben.',
|
|
340
|
+
heatNote: 'Eine Heatmap aus der Ferne: bis zu den Straßen zoomen, um jeden zu sehen.',
|
|
289
341
|
},
|
|
290
342
|
};
|
|
291
343
|
exports.FORM_MAP_LABELS = {
|
|
292
|
-
en: { map: 'Map', lastSeen: 'Last seen {time}', follow: 'Follow', routeFailed: 'The way could not be found.' },
|
|
293
|
-
ar: { map: 'خريطة', lastSeen: 'آخر ظهور {time}', follow: 'تتبّع', routeFailed: 'تعذّر إيجاد الطريق.' },
|
|
294
|
-
fr: { map: 'Carte', lastSeen: 'Vu pour la dernière fois {time}', follow: 'Suivre', routeFailed: 'Le trajet est introuvable.' },
|
|
295
|
-
de: { map: 'Karte', lastSeen: 'Zuletzt gesehen {time}', follow: 'Folgen', routeFailed: 'Der Weg wurde nicht gefunden.' },
|
|
344
|
+
en: { map: 'Map', lastSeen: 'Last seen {time}', follow: 'Follow', routeFailed: 'The way could not be found.', crowdHere: '{n} here: {names}. Zoom in to see them.' },
|
|
345
|
+
ar: { map: 'خريطة', lastSeen: 'آخر ظهور {time}', follow: 'تتبّع', routeFailed: 'تعذّر إيجاد الطريق.', crowdHere: '{n} هنا: {names}. كبّر الخريطة لرؤيتها.' },
|
|
346
|
+
fr: { map: 'Carte', lastSeen: 'Vu pour la dernière fois {time}', follow: 'Suivre', routeFailed: 'Le trajet est introuvable.', crowdHere: '{n} ici : {names}. Zoomez pour les voir.' },
|
|
347
|
+
de: { map: 'Karte', lastSeen: 'Zuletzt gesehen {time}', follow: 'Folgen', routeFailed: 'Der Weg wurde nicht gefunden.', crowdHere: '{n} hier: {names}. Hineinzoomen, um sie zu sehen.' },
|
|
296
348
|
};
|
|
297
349
|
/** The words for a page's language, with the app's own over them. */
|
|
298
350
|
function mapLabels(locale, own) {
|
package/src/lib/labels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/labels.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"labels.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/labels.ts"],"names":[],"mappings":"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"}
|
package/src/lib/labels.mjs
CHANGED
|
@@ -53,6 +53,15 @@ export const MAP_LABELS = {
|
|
|
53
53
|
settingShapes: 'Shapes',
|
|
54
54
|
settingAddress: 'Address goes into',
|
|
55
55
|
settingNowhere: 'Nowhere',
|
|
56
|
+
satellite: 'Satellite',
|
|
57
|
+
traffic: 'Traffic',
|
|
58
|
+
fullScreen: 'Full screen',
|
|
59
|
+
leaveFullScreen: 'Leave full screen',
|
|
60
|
+
measure: 'Measure a distance',
|
|
61
|
+
measureHint: 'Click points along the way; double-click or press Enter to finish. Escape clears.',
|
|
62
|
+
measured: 'The way measures {distance}.',
|
|
63
|
+
areaValue: '{name}: {value}',
|
|
64
|
+
areasNone: 'None',
|
|
56
65
|
},
|
|
57
66
|
ar: {
|
|
58
67
|
mapOf: '{label}، خريطة',
|
|
@@ -108,6 +117,15 @@ export const MAP_LABELS = {
|
|
|
108
117
|
settingShapes: 'الأشكال',
|
|
109
118
|
settingAddress: 'يُكتب العنوان في',
|
|
110
119
|
settingNowhere: 'لا مكان',
|
|
120
|
+
satellite: 'القمر الصناعي',
|
|
121
|
+
traffic: 'حركة المرور',
|
|
122
|
+
fullScreen: 'ملء الشاشة',
|
|
123
|
+
leaveFullScreen: 'الخروج من ملء الشاشة',
|
|
124
|
+
measure: 'قِس مسافة',
|
|
125
|
+
measureHint: 'انقر نقاطًا على طول الطريق؛ انقر مرتين أو اضغط Enter للإنهاء، ويمسح Escape القياس.',
|
|
126
|
+
measured: 'يبلغ الطريق {distance}.',
|
|
127
|
+
areaValue: '{name}: {value}',
|
|
128
|
+
areasNone: 'لا شيء',
|
|
111
129
|
},
|
|
112
130
|
fr: {
|
|
113
131
|
mapOf: '{label}, carte',
|
|
@@ -163,6 +181,15 @@ export const MAP_LABELS = {
|
|
|
163
181
|
settingShapes: 'Formes',
|
|
164
182
|
settingAddress: 'L’adresse va dans',
|
|
165
183
|
settingNowhere: 'Nulle part',
|
|
184
|
+
satellite: 'Satellite',
|
|
185
|
+
traffic: 'Trafic',
|
|
186
|
+
fullScreen: 'Plein écran',
|
|
187
|
+
leaveFullScreen: 'Quitter le plein écran',
|
|
188
|
+
measure: 'Mesurer une distance',
|
|
189
|
+
measureHint: 'Cliquez des points le long du trajet ; double-cliquez ou appuyez sur Entrée pour terminer. Échap efface.',
|
|
190
|
+
measured: 'Le trajet mesure {distance}.',
|
|
191
|
+
areaValue: '{name} : {value}',
|
|
192
|
+
areasNone: 'Aucun',
|
|
166
193
|
},
|
|
167
194
|
de: {
|
|
168
195
|
mapOf: '{label}, Karte',
|
|
@@ -218,6 +245,15 @@ export const MAP_LABELS = {
|
|
|
218
245
|
settingShapes: 'Formen',
|
|
219
246
|
settingAddress: 'Adresse kommt in',
|
|
220
247
|
settingNowhere: 'Nirgends',
|
|
248
|
+
satellite: 'Satellit',
|
|
249
|
+
traffic: 'Verkehr',
|
|
250
|
+
fullScreen: 'Vollbild',
|
|
251
|
+
leaveFullScreen: 'Vollbild verlassen',
|
|
252
|
+
measure: 'Entfernung messen',
|
|
253
|
+
measureHint: 'Punkte entlang des Weges anklicken; Doppelklick oder Eingabe beendet, Escape löscht.',
|
|
254
|
+
measured: 'Der Weg misst {distance}.',
|
|
255
|
+
areaValue: '{name}: {value}',
|
|
256
|
+
areasNone: 'Keine',
|
|
221
257
|
},
|
|
222
258
|
};
|
|
223
259
|
export const LIST_MAP_LABELS = {
|
|
@@ -235,6 +271,10 @@ export const LIST_MAP_LABELS = {
|
|
|
235
271
|
mapFailed: 'The map could not load the records.',
|
|
236
272
|
drawArea: 'Draw an area to search in',
|
|
237
273
|
inDrawnArea: 'In the area drawn',
|
|
274
|
+
inRegion: 'In {name}',
|
|
275
|
+
nearestFirst: 'Nearest first',
|
|
276
|
+
nearestFromMiddle: 'Nearest the middle of the map first: your place was not given.',
|
|
277
|
+
heatNote: 'A heat map from afar: zoom in to the streets to see each one.',
|
|
238
278
|
},
|
|
239
279
|
ar: {
|
|
240
280
|
pinKeys: 'ينتقل Tab بين الدبابيس. يفتح Enter بطاقة الدبوس، ويغلقها Escape.',
|
|
@@ -250,6 +290,10 @@ export const LIST_MAP_LABELS = {
|
|
|
250
290
|
mapFailed: 'تعذّر تحميل السجلات على الخريطة.',
|
|
251
291
|
drawArea: 'ارسم منطقة للبحث فيها',
|
|
252
292
|
inDrawnArea: 'في المنطقة المرسومة',
|
|
293
|
+
inRegion: 'في {name}',
|
|
294
|
+
nearestFirst: 'الأقرب أولًا',
|
|
295
|
+
nearestFromMiddle: 'الأقرب إلى منتصف الخريطة أولًا: لم يُعطَ موقعك.',
|
|
296
|
+
heatNote: 'خريطة حرارية من بعيد: قرّب إلى الشوارع لترى كلًّا منها.',
|
|
253
297
|
},
|
|
254
298
|
fr: {
|
|
255
299
|
pinKeys: 'Tab parcourt les épingles. Entrée ouvre la fiche d’une épingle, Échap la ferme.',
|
|
@@ -265,6 +309,10 @@ export const LIST_MAP_LABELS = {
|
|
|
265
309
|
mapFailed: 'La carte n’a pas pu charger les enregistrements.',
|
|
266
310
|
drawArea: 'Tracer une zone où chercher',
|
|
267
311
|
inDrawnArea: 'Dans la zone tracée',
|
|
312
|
+
inRegion: 'À {name}',
|
|
313
|
+
nearestFirst: 'Les plus proches d’abord',
|
|
314
|
+
nearestFromMiddle: 'Les plus proches du centre de la carte d’abord : votre position n’a pas été donnée.',
|
|
315
|
+
heatNote: 'Une carte de chaleur vue de loin : zoomez jusqu’aux rues pour voir chacun.',
|
|
268
316
|
},
|
|
269
317
|
de: {
|
|
270
318
|
pinKeys: 'Tab springt von Nadel zu Nadel. Eingabe öffnet die Karte einer Nadel, Escape schließt sie.',
|
|
@@ -280,13 +328,17 @@ export const LIST_MAP_LABELS = {
|
|
|
280
328
|
mapFailed: 'Die Karte konnte die Datensätze nicht laden.',
|
|
281
329
|
drawArea: 'Ein Gebiet zum Suchen zeichnen',
|
|
282
330
|
inDrawnArea: 'Im gezeichneten Gebiet',
|
|
331
|
+
inRegion: 'In {name}',
|
|
332
|
+
nearestFirst: 'Nächste zuerst',
|
|
333
|
+
nearestFromMiddle: 'Die der Kartenmitte nächsten zuerst: Ihr Standort wurde nicht freigegeben.',
|
|
334
|
+
heatNote: 'Eine Heatmap aus der Ferne: bis zu den Straßen zoomen, um jeden zu sehen.',
|
|
283
335
|
},
|
|
284
336
|
};
|
|
285
337
|
export const FORM_MAP_LABELS = {
|
|
286
|
-
en: { map: 'Map', lastSeen: 'Last seen {time}', follow: 'Follow', routeFailed: 'The way could not be found.' },
|
|
287
|
-
ar: { map: 'خريطة', lastSeen: 'آخر ظهور {time}', follow: 'تتبّع', routeFailed: 'تعذّر إيجاد الطريق.' },
|
|
288
|
-
fr: { map: 'Carte', lastSeen: 'Vu pour la dernière fois {time}', follow: 'Suivre', routeFailed: 'Le trajet est introuvable.' },
|
|
289
|
-
de: { map: 'Karte', lastSeen: 'Zuletzt gesehen {time}', follow: 'Folgen', routeFailed: 'Der Weg wurde nicht gefunden.' },
|
|
338
|
+
en: { map: 'Map', lastSeen: 'Last seen {time}', follow: 'Follow', routeFailed: 'The way could not be found.', crowdHere: '{n} here: {names}. Zoom in to see them.' },
|
|
339
|
+
ar: { map: 'خريطة', lastSeen: 'آخر ظهور {time}', follow: 'تتبّع', routeFailed: 'تعذّر إيجاد الطريق.', crowdHere: '{n} هنا: {names}. كبّر الخريطة لرؤيتها.' },
|
|
340
|
+
fr: { map: 'Carte', lastSeen: 'Vu pour la dernière fois {time}', follow: 'Suivre', routeFailed: 'Le trajet est introuvable.', crowdHere: '{n} ici : {names}. Zoomez pour les voir.' },
|
|
341
|
+
de: { map: 'Karte', lastSeen: 'Zuletzt gesehen {time}', follow: 'Folgen', routeFailed: 'Der Weg wurde nicht gefunden.', crowdHere: '{n} hier: {names}. Hineinzoomen, um sie zu sehen.' },
|
|
290
342
|
};
|
|
291
343
|
/** The words for a page's language, with the app's own over them. */
|
|
292
344
|
export function mapLabels(locale, own) {
|