2 import { refresh_page } from '../lib/stores.js';
3 import { SvelteURLSearchParams } from 'svelte/reactivity';
5 let { text = 'details', extra_classes = '', feature = null } = $props();
7 function formatShortOSMType(sType) {
8 if (sType === 'node') return 'N';
9 if (sType === 'way') return 'W';
10 if (sType === 'relation') return 'R';
14 const url_params = $derived.by(() => {
15 const new_params = new SvelteURLSearchParams();
17 if (feature !== null) {
18 if (feature.osm_type) {
19 if (feature.osm_type.length === 1) {
20 new_params.set('osmtype', feature.osm_type);
22 new_params.set('osmtype', formatShortOSMType(feature.osm_type));
25 new_params.set('osmid', feature.osm_id);
28 new_params.set('class', feature.class);
29 } else if (feature.category) {
30 new_params.set('class', feature.category);
32 } else if (feature.place_id) {
33 new_params.set('place_id', feature.place_id);
39 const href = $derived.by(() => {
40 const param_str = url_params.toString();
41 return 'details.html' + (param_str ? '?' : '') + param_str;
44 function handleClick(e) {
47 refresh_page('details', url_params);
51 <a onclick={handleClick} href={href} class={extra_classes}>{text}</a>