feat: coordinate paste support

This commit is contained in:
ccmdi 2025-11-23 17:23:41 -05:00
parent 1cefcb2829
commit 2e410a0e38
No known key found for this signature in database
2 changed files with 46 additions and 1 deletions

View file

@ -129,6 +129,7 @@ export class MapSettingTab extends PluginSettingTab {
.setValue(this.plugin.settings.enableSearchGeocoding)
.onChange(async (value) => {
this.plugin.settings.enableSearchGeocoding = value;
this.plugin.refreshAllMapViews();
await this.plugin.saveSettings();
}));

View file

@ -589,9 +589,53 @@ export class MapBasesView extends BasesView {
}
};
const handleCoordinatePaste = (query: string): boolean => {
const parsed = LatLng.parse(query);
if (parsed && this.deck) {
this.deck.setProps({
initialViewState: {
MapView: {
latitude: parsed.lat,
longitude: parsed.lng,
zoom: 12,
transitionDuration: 800,
transitionInterpolator: new FlyToInterpolator(),
}
}
});
searchInput.value = LatLng.toString(parsed);
resultsContainer.empty();
resultsContainer.removeClass('visible');
return true;
}
return false;
};
searchInput.addEventListener('paste', (e) => {
e.preventDefault();
const pastedText = e.clipboardData?.getData('text')?.trim() || '';
if (handleCoordinatePaste(pastedText)) {
return;
}
searchInput.value = pastedText;
searchInput.dispatchEvent(new Event('input'));
});
searchInput.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
const query = searchInput.value.trim();
if (handleCoordinatePaste(query)) {
return;
}
}
});
searchInput.addEventListener('input', () => {
const query = searchInput.value.trim();
if (searchTimeout) {
window.clearTimeout(searchTimeout);
}