@fieldia/map 0.18.0 → 0.19.1
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 +143 -3
- package/package.json +4 -4
- package/src/index.d.mts +5 -0
- package/src/index.d.ts +5 -0
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/index.mjs +2 -0
- package/src/index.mjs.map +1 -1
- package/src/lib/address-labels.d.mts +33 -0
- package/src/lib/address-labels.d.ts +33 -0
- package/src/lib/address-labels.js +16 -0
- package/src/lib/address-labels.js.map +1 -0
- package/src/lib/address-labels.mjs +12 -0
- package/src/lib/address-labels.mjs.map +1 -0
- package/src/lib/address-line.d.mts +11 -0
- package/src/lib/address-line.d.ts +11 -0
- package/src/lib/address-line.js +51 -0
- package/src/lib/address-line.js.map +1 -0
- package/src/lib/address-line.mjs +47 -0
- package/src/lib/address-line.mjs.map +1 -0
- package/src/lib/address-names.d.mts +38 -0
- package/src/lib/address-names.d.ts +38 -0
- package/src/lib/address-names.js +240 -0
- package/src/lib/address-names.js.map +1 -0
- package/src/lib/address-names.mjs +232 -0
- package/src/lib/address-names.mjs.map +1 -0
- package/src/lib/address-parts.d.mts +146 -0
- package/src/lib/address-parts.d.ts +146 -0
- package/src/lib/address-parts.js +866 -0
- package/src/lib/address-parts.js.map +1 -0
- package/src/lib/address-parts.mjs +851 -0
- package/src/lib/address-parts.mjs.map +1 -0
- package/src/lib/address-search.d.mts +25 -0
- package/src/lib/address-search.d.ts +25 -0
- package/src/lib/address-search.js +70 -0
- package/src/lib/address-search.js.map +1 -0
- package/src/lib/address-search.mjs +67 -0
- package/src/lib/address-search.mjs.map +1 -0
- package/src/lib/address-suggest.d.mts +21 -0
- package/src/lib/address-suggest.d.ts +21 -0
- package/src/lib/address-suggest.js +273 -0
- package/src/lib/address-suggest.js.map +1 -0
- package/src/lib/address-suggest.mjs +270 -0
- package/src/lib/address-suggest.mjs.map +1 -0
- package/src/lib/area-count.d.mts +47 -0
- package/src/lib/area-count.d.ts +47 -0
- package/src/lib/area-count.js +123 -0
- package/src/lib/area-count.js.map +1 -0
- package/src/lib/area-count.mjs +116 -0
- package/src/lib/area-count.mjs.map +1 -0
- package/src/lib/card.d.mts +14 -5
- package/src/lib/card.d.ts +14 -5
- package/src/lib/card.js +67 -12
- package/src/lib/card.js.map +1 -1
- package/src/lib/card.mjs +66 -12
- package/src/lib/card.mjs.map +1 -1
- package/src/lib/embed.d.mts +86 -0
- package/src/lib/embed.d.ts +86 -0
- package/src/lib/embed.js +96 -0
- package/src/lib/embed.js.map +1 -0
- package/src/lib/embed.mjs +93 -0
- package/src/lib/embed.mjs.map +1 -0
- package/src/lib/form-map.js +9 -7
- package/src/lib/form-map.js.map +1 -1
- package/src/lib/form-map.mjs +10 -8
- package/src/lib/form-map.mjs.map +1 -1
- package/src/lib/kinds.d.mts +6 -4
- package/src/lib/kinds.d.ts +6 -4
- package/src/lib/kinds.js +49 -2
- package/src/lib/kinds.js.map +1 -1
- package/src/lib/kinds.mjs +49 -2
- package/src/lib/kinds.mjs.map +1 -1
- package/src/lib/labels.d.mts +2 -0
- package/src/lib/labels.d.ts +2 -0
- package/src/lib/labels.js +4 -0
- package/src/lib/labels.js.map +1 -1
- package/src/lib/labels.mjs +4 -0
- package/src/lib/labels.mjs.map +1 -1
- package/src/lib/list-view.d.mts +37 -1
- package/src/lib/list-view.d.ts +37 -1
- package/src/lib/list-view.js +97 -37
- package/src/lib/list-view.js.map +1 -1
- package/src/lib/list-view.mjs +97 -38
- package/src/lib/list-view.mjs.map +1 -1
- package/src/lib/map-core.d.mts +6 -1
- package/src/lib/map-core.d.ts +6 -1
- package/src/lib/map-core.js +13 -5
- package/src/lib/map-core.js.map +1 -1
- package/src/lib/map-core.mjs +13 -5
- package/src/lib/map-core.mjs.map +1 -1
- package/src/lib/pins.d.mts +20 -8
- package/src/lib/pins.d.ts +20 -8
- package/src/lib/pins.js +60 -15
- package/src/lib/pins.js.map +1 -1
- package/src/lib/pins.mjs +60 -17
- package/src/lib/pins.mjs.map +1 -1
- package/src/lib/place.js +23 -11
- package/src/lib/place.js.map +1 -1
- package/src/lib/place.mjs +23 -11
- package/src/lib/place.mjs.map +1 -1
- package/src/lib/providers.d.mts +16 -0
- package/src/lib/providers.d.ts +16 -0
- package/src/lib/providers.js +71 -112
- package/src/lib/providers.js.map +1 -1
- package/src/lib/providers.mjs +71 -112
- package/src/lib/providers.mjs.map +1 -1
- package/src/lib/regions.js +18 -1
- package/src/lib/regions.js.map +1 -1
- package/src/lib/regions.mjs +18 -1
- package/src/lib/regions.mjs.map +1 -1
- package/src/lib/route-line.d.mts +9 -0
- package/src/lib/route-line.d.ts +9 -0
- package/src/lib/route-line.js +13 -0
- package/src/lib/route-line.js.map +1 -1
- package/src/lib/route-line.mjs +11 -0
- package/src/lib/route-line.mjs.map +1 -1
- package/src/lib/routes.js +6 -2
- package/src/lib/routes.js.map +1 -1
- package/src/lib/routes.mjs +6 -2
- package/src/lib/routes.mjs.map +1 -1
- package/src/lib/search-box.d.mts +20 -2
- package/src/lib/search-box.d.ts +20 -2
- package/src/lib/search-box.js +133 -44
- package/src/lib/search-box.js.map +1 -1
- package/src/lib/search-box.mjs +133 -44
- package/src/lib/search-box.mjs.map +1 -1
- package/src/lib/settings.d.mts +19 -2
- package/src/lib/settings.d.ts +19 -2
- package/src/lib/styles.d.mts +12 -1
- package/src/lib/styles.d.ts +12 -1
- package/src/lib/styles.js +61 -3
- package/src/lib/styles.js.map +1 -1
- package/src/lib/styles.mjs +59 -2
- package/src/lib/styles.mjs.map +1 -1
- package/src/lib/view-box.d.mts +18 -0
- package/src/lib/view-box.d.ts +18 -0
- package/src/lib/view-box.js +31 -0
- package/src/lib/view-box.js.map +1 -0
- package/src/lib/view-box.mjs +25 -0
- package/src/lib/view-box.mjs.map +1 -0
- package/src/lib/widgets.d.mts +3 -0
- package/src/lib/widgets.d.ts +3 -0
- package/src/lib/widgets.js +10 -1
- package/src/lib/widgets.js.map +1 -1
- package/src/lib/widgets.mjs +10 -1
- package/src/lib/widgets.mjs.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address-suggest.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/address-suggest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { asJson, isLatLng, writePoint } from './geo.mjs';
|
|
2
|
+
import { addressLabels } from './address-labels.mjs';
|
|
3
|
+
import { fill } from './labels.mjs';
|
|
4
|
+
import { warnOnce } from './map-core.mjs';
|
|
5
|
+
import { installMapStyles } from './styles.mjs';
|
|
6
|
+
/**
|
|
7
|
+
* An address field's suggestions (address-search.ts), loaded the first time
|
|
8
|
+
* one is shown: the place search's combobox on the field's own box, its list
|
|
9
|
+
* in a box of its own under it with the provider's credit, and what a
|
|
10
|
+
* suggestion picked writes.
|
|
11
|
+
*/
|
|
12
|
+
/** The list as the place search draws it, in a box of its own with the credit under it; hidden with the list. */
|
|
13
|
+
const ADDRESS_CSS = `
|
|
14
|
+
.fd-address-search { position: relative; min-width: 0; }
|
|
15
|
+
.fd-address-popup {
|
|
16
|
+
position: absolute; inset-inline: 0; top: calc(100% + 4px); z-index: 1100; overflow: hidden;
|
|
17
|
+
background: var(--fd-surface); color: var(--fd-text); border: 1px solid var(--fd-border); border-radius: var(--fd-control-radius); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.16);
|
|
18
|
+
}
|
|
19
|
+
.fd-address-popup:has(> .fd-map-results[hidden]) { display: none; }
|
|
20
|
+
.fd-address-popup .fd-map-results { position: static; max-height: 264px; border: 0; border-radius: 0; box-shadow: none; background: none; }
|
|
21
|
+
.fd-address-credit { display: block; padding: 3px 10px 5px; border-top: 1px solid var(--fd-border); font-size: 11px; line-height: 1.4; color: var(--fd-muted); text-align: end; text-decoration: none; }
|
|
22
|
+
a.fd-address-credit:hover { text-decoration: underline; }
|
|
23
|
+
.fd-address-credit img { height: 14px; vertical-align: middle; }
|
|
24
|
+
.fd-address-note { margin-top: 4px; font-size: 12.5px; line-height: 1.4; color: var(--fd-error); }
|
|
25
|
+
`;
|
|
26
|
+
/** Said under the box when the address picked is not found on the map: loaded with the suggestions, not with every page that shows a map. */
|
|
27
|
+
const NOT_PLACED = {
|
|
28
|
+
en: 'Not found on the map: no place was saved for this address.',
|
|
29
|
+
ar: 'لم يُعثر على هذا العنوان على الخريطة، فلم يُحفظ له مكان.',
|
|
30
|
+
fr: 'Introuvable sur la carte : aucun lieu n’a été enregistré pour cette adresse.',
|
|
31
|
+
de: 'Nicht auf der Karte gefunden: Für diese Adresse wurde kein Ort gespeichert.',
|
|
32
|
+
};
|
|
33
|
+
/** Said when the place could not be asked for (the line dropped, the provider down or refusing): it may well be on the map. */
|
|
34
|
+
const LOCATE_FAILED = {
|
|
35
|
+
en: 'The map did not answer, so no place was saved for this address: check the connection, then pick it again.',
|
|
36
|
+
ar: 'لم تُجب الخريطة، فلم يُحفظ مكان لهذا العنوان: تحقّق من الاتصال، ثم اختره مرة أخرى.',
|
|
37
|
+
fr: 'La carte n’a pas répondu, aucun lieu n’a donc été enregistré pour cette adresse : vérifiez la connexion, puis choisissez-la de nouveau.',
|
|
38
|
+
de: 'Die Karte hat nicht geantwortet, daher wurde für diese Adresse kein Ort gespeichert: Prüfen Sie die Verbindung und wählen Sie sie dann erneut.',
|
|
39
|
+
};
|
|
40
|
+
/** Said when only a place near it is found (`precise: false`): its street, district or town, kilometres off perhaps. */
|
|
41
|
+
const PLACED_NEAR = {
|
|
42
|
+
en: 'Placed only near this address: its exact place was not found on the map.',
|
|
43
|
+
ar: 'لم يُعثر على مكان هذا العنوان بالضبط على الخريطة، فوُضع قربه فقط.',
|
|
44
|
+
fr: 'Placé seulement près de cette adresse : son emplacement exact est introuvable sur la carte.',
|
|
45
|
+
de: 'Nur in der Nähe dieser Adresse platziert: Der genaue Ort wurde auf der Karte nicht gefunden.',
|
|
46
|
+
};
|
|
47
|
+
const round6 = (n) => Math.round(n * 1e6) / 1e6;
|
|
48
|
+
/**
|
|
49
|
+
* Whether a lookup failed for want of an answer, not because the provider
|
|
50
|
+
* found no such place: nothing came back (fetch fails with a TypeError, as
|
|
51
|
+
* on a line dropped), the page is offline, or the provider refused or failed
|
|
52
|
+
* (answers.ts says what it answered: a 503, a 429, a 403); not its 404, a
|
|
53
|
+
* place it does not know.
|
|
54
|
+
*/
|
|
55
|
+
const unanswered = (error, offline) => offline || error.name === 'TypeError' || / answered (?!404)\d{3}\b/.test(error.message);
|
|
56
|
+
const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
57
|
+
/** The suggestions on the field's box: `described` says again what describes the box after the field's own update has, and `destroy` takes them off. */
|
|
58
|
+
export function suggest({ settings, context, search, element, input, searchBox, addressLine }) {
|
|
59
|
+
const { form, name, node, id, document: doc } = context;
|
|
60
|
+
const locale = context.locale ?? 'en';
|
|
61
|
+
const options = node.options ?? {};
|
|
62
|
+
const words = { notPlaced: NOT_PLACED[locale], placedNear: PLACED_NEAR[locale], locateFailed: LOCATE_FAILED[locale], ...addressLabels(locale, settings.labels?.[locale]) };
|
|
63
|
+
const named = (key) => (typeof options[key] === 'string' ? options[key] : null);
|
|
64
|
+
const [placeField, longitudeField, partsField] = [named('placeField'), named('longitudeField'), named('partsField')];
|
|
65
|
+
const listed = options['countries'];
|
|
66
|
+
// "UK" as every provider's parts name it, "GB".
|
|
67
|
+
const countries = (Array.isArray(listed) ? listed.map(String) : typeof listed === 'string' ? listed.split(',') : []).map((code) => code.trim().toUpperCase().replace(/^UK$/, 'GB')).filter(Boolean);
|
|
68
|
+
const near = isObject(options['near']) && isLatLng(options['near']['lat'], options['near']['lng']) ? options['near'] : settings.center;
|
|
69
|
+
installMapStyles(doc);
|
|
70
|
+
if (!doc.getElementById('fieldia-address-styles')) {
|
|
71
|
+
const style = doc.createElement('style');
|
|
72
|
+
style.id = 'fieldia-address-styles';
|
|
73
|
+
style.textContent = ADDRESS_CSS;
|
|
74
|
+
doc.head.prepend(style);
|
|
75
|
+
}
|
|
76
|
+
const status = doc.createElement('span');
|
|
77
|
+
status.className = 'fd-sr-only';
|
|
78
|
+
status.setAttribute('role', 'status');
|
|
79
|
+
/** Said to screen readers alone: how many suggestions came, or why none did. A typed address needs none to be an answer. */
|
|
80
|
+
const say = (said) => {
|
|
81
|
+
status.textContent = said ?? (box.list.hidden ? '' : fill(words.suggested, { n: box.list.children.length }));
|
|
82
|
+
// Suggestions come: all of them in sight, as near the bottom of a phone's screen as the box is.
|
|
83
|
+
if (!box.list.hidden)
|
|
84
|
+
popup.scrollIntoView?.({ block: 'nearest' });
|
|
85
|
+
};
|
|
86
|
+
const write = (text) => {
|
|
87
|
+
input.value = text;
|
|
88
|
+
form.setValue(name, text || null);
|
|
89
|
+
};
|
|
90
|
+
/** Shown, and said, when the address picked is not found where it is, or only near it: the console is not where a person looks. */
|
|
91
|
+
const note = doc.createElement('div');
|
|
92
|
+
note.className = 'fd-address-note';
|
|
93
|
+
note.id = `${id}-note`;
|
|
94
|
+
note.hidden = true;
|
|
95
|
+
/** Read with the box, beside what describes it already (its help, its error), while it is shown. */
|
|
96
|
+
const described = () => {
|
|
97
|
+
const ids = (input.getAttribute('aria-describedby') ?? '').split(/\s+/).filter((one) => one && one !== note.id);
|
|
98
|
+
if (!note.hidden)
|
|
99
|
+
ids.push(note.id);
|
|
100
|
+
if (ids.length)
|
|
101
|
+
input.setAttribute('aria-describedby', ids.join(' '));
|
|
102
|
+
else
|
|
103
|
+
input.removeAttribute('aria-describedby');
|
|
104
|
+
};
|
|
105
|
+
const tell = (said) => {
|
|
106
|
+
note.hidden = !said;
|
|
107
|
+
note.textContent = said ?? '';
|
|
108
|
+
described();
|
|
109
|
+
if (said)
|
|
110
|
+
status.textContent = said;
|
|
111
|
+
};
|
|
112
|
+
let picking = 0;
|
|
113
|
+
/** Whether the box has been emptied since the last pick: the words it wrote all taken out, whatever is typed in their place. */
|
|
114
|
+
let emptied = false;
|
|
115
|
+
/** The words that name the address picked (its first line, and the provider's own first piece): while the box still says one, it is that address, edited. */
|
|
116
|
+
let picked = [];
|
|
117
|
+
const plain = (text) => text.toLocaleLowerCase(locale).replace(/\s+/g, ' ').trim();
|
|
118
|
+
const firstPiece = (line) => plain(line.split(/[,،]/)[0] ?? '');
|
|
119
|
+
const typedOver = () => picked.length > 0 && !picked.some((words) => words && plain(input.value).includes(words));
|
|
120
|
+
const typedOn = () => {
|
|
121
|
+
tell(null);
|
|
122
|
+
if (!input.value.trim())
|
|
123
|
+
emptied = true;
|
|
124
|
+
};
|
|
125
|
+
input.addEventListener('input', typedOn);
|
|
126
|
+
const now = () => form.getState().values;
|
|
127
|
+
const inFloats = () => !!placeField && form.page.fields[placeField]?.type === 'float';
|
|
128
|
+
/** The place and the parts as the form holds them, the line a person typed under the street left out: to tell this field's own from one set since. */
|
|
129
|
+
const placeNow = () => JSON.stringify(placeField ? [now()[placeField] ?? null, inFloats() && longitudeField ? (now()[longitudeField] ?? null) : null] : null);
|
|
130
|
+
const partsNow = () => {
|
|
131
|
+
const held = partsField ? now()[partsField] : null;
|
|
132
|
+
return JSON.stringify(isObject(held) ? { ...held, line2: undefined } : (held ?? null));
|
|
133
|
+
};
|
|
134
|
+
/** What the last pick wrote, while the form still holds it as written: a pick that finds no place, or no parts, takes them back (they were another address's), as the box emptied and left does; a place set since by hand (a pin dragged) stays. */
|
|
135
|
+
let wrote = {};
|
|
136
|
+
const setPlace = (at) => {
|
|
137
|
+
if (!placeField)
|
|
138
|
+
return;
|
|
139
|
+
const point = at && { lat: round6(at.lat), lng: round6(at.lng) };
|
|
140
|
+
if (!inFloats())
|
|
141
|
+
form.setValue(placeField, point && asJson(writePoint(point)));
|
|
142
|
+
else if (longitudeField) {
|
|
143
|
+
form.setValue(placeField, point && point.lat);
|
|
144
|
+
form.setValue(longitudeField, point && point.lng);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
/** Its parts, the line under the street kept as the person typed it. */
|
|
148
|
+
const setParts = (parts) => {
|
|
149
|
+
if (!partsField)
|
|
150
|
+
return;
|
|
151
|
+
const held = now()[partsField];
|
|
152
|
+
const line2 = isObject(held) && typeof held['line2'] === 'string' ? { line2: held['line2'] } : null;
|
|
153
|
+
form.setValue(partsField, parts || line2 ? { ...parts, ...line2 } : null);
|
|
154
|
+
};
|
|
155
|
+
/** A pick's place and parts written; where it found none, the last pick's taken back, while the form still holds them as that pick wrote them. */
|
|
156
|
+
const writeFound = (at, parts) => {
|
|
157
|
+
const before = wrote;
|
|
158
|
+
wrote = {};
|
|
159
|
+
if (placeField && (at || before.place === placeNow())) {
|
|
160
|
+
setPlace(at);
|
|
161
|
+
if (at)
|
|
162
|
+
wrote.place = placeNow();
|
|
163
|
+
}
|
|
164
|
+
if (partsField && (parts || before.parts === partsNow())) {
|
|
165
|
+
setParts(parts);
|
|
166
|
+
if (parts)
|
|
167
|
+
wrote.parts = partsNow();
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
// Emptied and left, or typed over in one go (all of it selected, then typed or pasted): the address picked is no longer the
|
|
171
|
+
// box's, nor its place and parts (a delivery would go to it); words only edited, a flat added or a word taken out, keep them.
|
|
172
|
+
const left = () => {
|
|
173
|
+
if (!emptied && !typedOver())
|
|
174
|
+
return;
|
|
175
|
+
emptied = false;
|
|
176
|
+
picked = [];
|
|
177
|
+
// A pick still finding its place writes nothing now.
|
|
178
|
+
picking++;
|
|
179
|
+
tell(null);
|
|
180
|
+
writeFound(null, undefined);
|
|
181
|
+
};
|
|
182
|
+
input.addEventListener('blur', left);
|
|
183
|
+
const box = searchBox({
|
|
184
|
+
document: doc,
|
|
185
|
+
id,
|
|
186
|
+
input,
|
|
187
|
+
labels: words,
|
|
188
|
+
search: (request) => search({ ...request, addresses: true, ...(countries.length ? { countries } : {}), ...(partsField ? { parts: true } : {}) }),
|
|
189
|
+
asYouType: settings.search ? (settings.searchAsYouType ?? true) : !!settings.provider.searchAsYouType,
|
|
190
|
+
locale,
|
|
191
|
+
near: () => near,
|
|
192
|
+
zoom: () => settings.zoom,
|
|
193
|
+
freeText: true,
|
|
194
|
+
say,
|
|
195
|
+
// Its whole address at once; its place and parts as soon as they are known (looked up now, for a provider whose suggestions carry none).
|
|
196
|
+
async pick(place) {
|
|
197
|
+
const mine = ++picking;
|
|
198
|
+
emptied = false;
|
|
199
|
+
picked = [plain(place.label)];
|
|
200
|
+
tell(null);
|
|
201
|
+
const whole = addressLine([place.label, place.detail], locale);
|
|
202
|
+
write(whole);
|
|
203
|
+
let at = place.lat !== undefined && place.lng !== undefined ? { lat: place.lat, lng: place.lng } : null;
|
|
204
|
+
let parts = place.parts;
|
|
205
|
+
if (!at && place.locate && (placeField || (partsField && !parts))) {
|
|
206
|
+
let failed = false;
|
|
207
|
+
const located = await place.locate().catch((error) => {
|
|
208
|
+
failed = unanswered(error, doc.defaultView?.navigator.onLine === false);
|
|
209
|
+
warnOnce(`Finding the address picked failed: ${error.message}`);
|
|
210
|
+
return null;
|
|
211
|
+
});
|
|
212
|
+
if (mine !== picking)
|
|
213
|
+
return;
|
|
214
|
+
// Not found where it is: no place written, its parts still are; and the person is told, or told the map did not answer (it may well be on it). Only near it: written, and said.
|
|
215
|
+
tell(!located ? (failed ? words.locateFailed : words.notPlaced) : located.precise === false ? words.placedNear : null);
|
|
216
|
+
if (located) {
|
|
217
|
+
at = located;
|
|
218
|
+
parts = located.parts ?? parts;
|
|
219
|
+
// The provider's own way of writing it, unless a person has typed since.
|
|
220
|
+
if (located.address && input.value === whole) {
|
|
221
|
+
write(addressLine([located.address], locale));
|
|
222
|
+
picked.push(firstPiece(located.address));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// The pick before's place and parts, still as it wrote them, were another address's: they go, though nothing comes in their place.
|
|
227
|
+
writeFound(at, parts);
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
// The list with what the provider's terms ask to be said under it: its mark, or its credit.
|
|
231
|
+
const popup = doc.createElement('div');
|
|
232
|
+
popup.className = 'fd-address-popup';
|
|
233
|
+
popup.append(box.list);
|
|
234
|
+
const mark = settings.search ? undefined : (settings.provider.logo ?? settings.provider.searchCredit);
|
|
235
|
+
if (mark) {
|
|
236
|
+
const credit = doc.createElement(mark.href ? 'a' : 'span');
|
|
237
|
+
credit.className = 'fd-address-credit';
|
|
238
|
+
if (mark.href)
|
|
239
|
+
Object.assign(credit, { href: mark.href, target: '_blank', rel: 'noopener', tabIndex: -1 });
|
|
240
|
+
const image = 'image' in mark ? mark.image : undefined;
|
|
241
|
+
if (image) {
|
|
242
|
+
const img = doc.createElement('img');
|
|
243
|
+
Object.assign(img, { src: image, alt: mark.text });
|
|
244
|
+
credit.append(img);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
// Its own words in their own direction: "© OpenStreetMap contributors" in an Arabic page too.
|
|
248
|
+
const text = doc.createElement('bdi');
|
|
249
|
+
text.textContent = mark.text;
|
|
250
|
+
credit.append(text);
|
|
251
|
+
}
|
|
252
|
+
popup.append(credit);
|
|
253
|
+
}
|
|
254
|
+
// A press on it keeps the box's focus, so the list stays open and a credit's link opens.
|
|
255
|
+
popup.addEventListener('mousedown', (event) => event.preventDefault());
|
|
256
|
+
element.append(popup, note, status);
|
|
257
|
+
return {
|
|
258
|
+
described,
|
|
259
|
+
destroy() {
|
|
260
|
+
box.destroy();
|
|
261
|
+
input.removeEventListener('input', typedOn);
|
|
262
|
+
input.removeEventListener('blur', left);
|
|
263
|
+
tell(null);
|
|
264
|
+
popup.remove();
|
|
265
|
+
note.remove();
|
|
266
|
+
status.remove();
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=address-suggest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address-suggest.mjs","sourceRoot":"","sources":["../../../../../libs/map/src/lib/address-suggest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ListMap, ResolvedFilter } from '@fieldia/core';
|
|
2
|
+
import type { LatLng } from './geo.mjs';
|
|
3
|
+
import { type Box } from './view-box.mjs';
|
|
4
|
+
/**
|
|
5
|
+
* How many records a list map's view holds, said on "Search this area"
|
|
6
|
+
* before it is pressed: counted among the records on hand when they can
|
|
7
|
+
* tell, asked otherwise. Its code comes the first time the button shows.
|
|
8
|
+
*/
|
|
9
|
+
/** Whether a place lies in a box, its edges included, as `between` takes them. */
|
|
10
|
+
export declare function inBox(at: LatLng, box: Box): boolean;
|
|
11
|
+
/** Whether one box lies within another. */
|
|
12
|
+
export declare function boxWithin(inner: Box, outer: Box): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The view a search already holds, as the map's "Search this area" puts it
|
|
15
|
+
* (its very conditions, found among the search's), and the search's other
|
|
16
|
+
* conditions: a new view takes its place, as a search bar keeps one.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ownBox(spec: ListMap, filter: readonly ResolvedFilter[]): {
|
|
19
|
+
box: Box;
|
|
20
|
+
rest: ResolvedFilter[];
|
|
21
|
+
} | null;
|
|
22
|
+
/**
|
|
23
|
+
* One question at a time, the last one winning: each ask waits `wait`
|
|
24
|
+
* milliseconds (a run of moves asks once), aborts the one before it, and an
|
|
25
|
+
* answer that comes after a newer ask is dropped. A refusal says nothing.
|
|
26
|
+
*/
|
|
27
|
+
export declare function lastAsk<T>(wait: number): {
|
|
28
|
+
ask(question: (signal: AbortSignal) => Promise<T>, answer: (value: T) => void): void;
|
|
29
|
+
stop: () => void;
|
|
30
|
+
};
|
|
31
|
+
/** What the map has on hand: the search its records were found by, whether they are all it finds, and where each is. */
|
|
32
|
+
export interface OnHand {
|
|
33
|
+
filter: readonly ResolvedFilter[];
|
|
34
|
+
all: boolean;
|
|
35
|
+
places: readonly (LatLng | null)[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The count for a view: the records on hand say it when they are all the
|
|
39
|
+
* search finds and the view lies within any area it already holds;
|
|
40
|
+
* otherwise `ask` (the app's count, or its source's) is asked, for the
|
|
41
|
+
* search with the view in the area's place, a moment after the map stops;
|
|
42
|
+
* otherwise there is no number.
|
|
43
|
+
*/
|
|
44
|
+
export declare function areaCounter(spec: ListMap, ask: ((filter: ResolvedFilter[], signal: AbortSignal) => Promise<number>) | null, say: (n: number) => void): {
|
|
45
|
+
count(view: Box, shown: OnHand): void;
|
|
46
|
+
stop: () => void;
|
|
47
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ListMap, ResolvedFilter } from '@fieldia/core';
|
|
2
|
+
import type { LatLng } from './geo';
|
|
3
|
+
import { type Box } from './view-box';
|
|
4
|
+
/**
|
|
5
|
+
* How many records a list map's view holds, said on "Search this area"
|
|
6
|
+
* before it is pressed: counted among the records on hand when they can
|
|
7
|
+
* tell, asked otherwise. Its code comes the first time the button shows.
|
|
8
|
+
*/
|
|
9
|
+
/** Whether a place lies in a box, its edges included, as `between` takes them. */
|
|
10
|
+
export declare function inBox(at: LatLng, box: Box): boolean;
|
|
11
|
+
/** Whether one box lies within another. */
|
|
12
|
+
export declare function boxWithin(inner: Box, outer: Box): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The view a search already holds, as the map's "Search this area" puts it
|
|
15
|
+
* (its very conditions, found among the search's), and the search's other
|
|
16
|
+
* conditions: a new view takes its place, as a search bar keeps one.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ownBox(spec: ListMap, filter: readonly ResolvedFilter[]): {
|
|
19
|
+
box: Box;
|
|
20
|
+
rest: ResolvedFilter[];
|
|
21
|
+
} | null;
|
|
22
|
+
/**
|
|
23
|
+
* One question at a time, the last one winning: each ask waits `wait`
|
|
24
|
+
* milliseconds (a run of moves asks once), aborts the one before it, and an
|
|
25
|
+
* answer that comes after a newer ask is dropped. A refusal says nothing.
|
|
26
|
+
*/
|
|
27
|
+
export declare function lastAsk<T>(wait: number): {
|
|
28
|
+
ask(question: (signal: AbortSignal) => Promise<T>, answer: (value: T) => void): void;
|
|
29
|
+
stop: () => void;
|
|
30
|
+
};
|
|
31
|
+
/** What the map has on hand: the search its records were found by, whether they are all it finds, and where each is. */
|
|
32
|
+
export interface OnHand {
|
|
33
|
+
filter: readonly ResolvedFilter[];
|
|
34
|
+
all: boolean;
|
|
35
|
+
places: readonly (LatLng | null)[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The count for a view: the records on hand say it when they are all the
|
|
39
|
+
* search finds and the view lies within any area it already holds;
|
|
40
|
+
* otherwise `ask` (the app's count, or its source's) is asked, for the
|
|
41
|
+
* search with the view in the area's place, a moment after the map stops;
|
|
42
|
+
* otherwise there is no number.
|
|
43
|
+
*/
|
|
44
|
+
export declare function areaCounter(spec: ListMap, ask: ((filter: ResolvedFilter[], signal: AbortSignal) => Promise<number>) | null, say: (n: number) => void): {
|
|
45
|
+
count(view: Box, shown: OnHand): void;
|
|
46
|
+
stop: () => void;
|
|
47
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inBox = inBox;
|
|
4
|
+
exports.boxWithin = boxWithin;
|
|
5
|
+
exports.ownBox = ownBox;
|
|
6
|
+
exports.lastAsk = lastAsk;
|
|
7
|
+
exports.areaCounter = areaCounter;
|
|
8
|
+
const view_box_1 = require("./view-box");
|
|
9
|
+
/**
|
|
10
|
+
* How many records a list map's view holds, said on "Search this area"
|
|
11
|
+
* before it is pressed: counted among the records on hand when they can
|
|
12
|
+
* tell, asked otherwise. Its code comes the first time the button shows.
|
|
13
|
+
*/
|
|
14
|
+
/** Whether a place lies in a box, its edges included, as `between` takes them. */
|
|
15
|
+
function inBox(at, box) {
|
|
16
|
+
if (at.lat < box.south || at.lat > box.north)
|
|
17
|
+
return false;
|
|
18
|
+
return box.west <= box.east ? at.lng >= box.west && at.lng <= box.east : at.lng >= box.west || at.lng <= box.east;
|
|
19
|
+
}
|
|
20
|
+
/** Whether one box lies within another. */
|
|
21
|
+
function boxWithin(inner, outer) {
|
|
22
|
+
if (inner.south < outer.south || inner.north > outer.north)
|
|
23
|
+
return false;
|
|
24
|
+
if ((0, view_box_1.whole)(outer))
|
|
25
|
+
return true;
|
|
26
|
+
// Each as a stretch eastwards from its west edge; the inner one a world further round, if that is where it fits.
|
|
27
|
+
const span = (box) => [box.west, box.east < box.west ? box.east + 360 : box.east];
|
|
28
|
+
const [w, e] = span(outer);
|
|
29
|
+
const [iw, ie] = span(inner);
|
|
30
|
+
return [0, 360].some((by) => iw + by >= w && ie + by <= e);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The view a search already holds, as the map's "Search this area" puts it
|
|
34
|
+
* (its very conditions, found among the search's), and the search's other
|
|
35
|
+
* conditions: a new view takes its place, as a search bar keeps one.
|
|
36
|
+
*/
|
|
37
|
+
function ownBox(spec, filter) {
|
|
38
|
+
const said = filter.map((item) => JSON.stringify(item));
|
|
39
|
+
const numbers = (value) => (Array.isArray(value) && value.length === 2 && value.every((n) => typeof n === 'number') ? value : null);
|
|
40
|
+
const boxes = [];
|
|
41
|
+
for (const item of filter) {
|
|
42
|
+
if ('any' in item || 'all' in item)
|
|
43
|
+
continue;
|
|
44
|
+
const v = item.value;
|
|
45
|
+
if (spec.point) {
|
|
46
|
+
if (item.field === spec.point && item.op === 'within' && v && ['south', 'west', 'north', 'east'].every((k) => typeof v[k] === 'number'))
|
|
47
|
+
boxes.push(v);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const lat = item.field === spec.latitude && item.op === 'between' ? numbers(v) : null;
|
|
51
|
+
if (!lat)
|
|
52
|
+
continue;
|
|
53
|
+
// Its longitudes: a range, either side of the antimeridian, or (tried last) the world round.
|
|
54
|
+
const sides = [];
|
|
55
|
+
for (const other of filter) {
|
|
56
|
+
if ('any' in other && other.any.length === 2) {
|
|
57
|
+
const [a, b] = other.any;
|
|
58
|
+
if (a.field === spec.longitude && b.field === spec.longitude && typeof a.value === 'number' && typeof b.value === 'number')
|
|
59
|
+
sides.push([a.value, b.value]);
|
|
60
|
+
}
|
|
61
|
+
else if (!('all' in other) && !('any' in other) && other.field === spec.longitude && other.op === 'between' && numbers(other.value))
|
|
62
|
+
sides.push(numbers(other.value));
|
|
63
|
+
}
|
|
64
|
+
for (const [west, east] of [...sides, [-180, 180]])
|
|
65
|
+
boxes.push({ south: lat[0], west, north: lat[1], east });
|
|
66
|
+
}
|
|
67
|
+
for (const box of boxes) {
|
|
68
|
+
const own = (0, view_box_1.boxFilter)(spec, box).map((item) => JSON.stringify(item));
|
|
69
|
+
if (!own.every((item) => said.includes(item)))
|
|
70
|
+
continue;
|
|
71
|
+
return { box: { ...box }, rest: filter.filter((_, i) => !own.includes(said[i])) };
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* One question at a time, the last one winning: each ask waits `wait`
|
|
77
|
+
* milliseconds (a run of moves asks once), aborts the one before it, and an
|
|
78
|
+
* answer that comes after a newer ask is dropped. A refusal says nothing.
|
|
79
|
+
*/
|
|
80
|
+
function lastAsk(wait) {
|
|
81
|
+
let timer;
|
|
82
|
+
let asking = null;
|
|
83
|
+
let asked = 0;
|
|
84
|
+
const stop = () => {
|
|
85
|
+
clearTimeout(timer);
|
|
86
|
+
asking?.abort();
|
|
87
|
+
asking = null;
|
|
88
|
+
asked++;
|
|
89
|
+
};
|
|
90
|
+
return {
|
|
91
|
+
ask(question, answer) {
|
|
92
|
+
stop();
|
|
93
|
+
const mine = asked;
|
|
94
|
+
timer = setTimeout(() => {
|
|
95
|
+
const controller = (asking = new AbortController());
|
|
96
|
+
question(controller.signal).then((value) => mine === asked && !controller.signal.aborted && answer(value), () => undefined);
|
|
97
|
+
}, wait);
|
|
98
|
+
},
|
|
99
|
+
stop,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The count for a view: the records on hand say it when they are all the
|
|
104
|
+
* search finds and the view lies within any area it already holds;
|
|
105
|
+
* otherwise `ask` (the app's count, or its source's) is asked, for the
|
|
106
|
+
* search with the view in the area's place, a moment after the map stops;
|
|
107
|
+
* otherwise there is no number.
|
|
108
|
+
*/
|
|
109
|
+
function areaCounter(spec, ask, say) {
|
|
110
|
+
const asker = lastAsk(400);
|
|
111
|
+
return {
|
|
112
|
+
count(view, shown) {
|
|
113
|
+
asker.stop();
|
|
114
|
+
const own = ownBox(spec, shown.filter);
|
|
115
|
+
if (shown.all && (!own || boxWithin(view, own.box)))
|
|
116
|
+
return say(shown.places.filter((at) => at && inBox(at, view)).length);
|
|
117
|
+
if (ask)
|
|
118
|
+
asker.ask((signal) => ask([...(own ? own.rest : shown.filter), ...(0, view_box_1.boxFilter)(spec, view)], signal), say);
|
|
119
|
+
},
|
|
120
|
+
stop: asker.stop,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=area-count.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area-count.js","sourceRoot":"","sources":["../../../../../libs/map/src/lib/area-count.ts"],"names":[],"mappings":"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"}
|