2 import { appState } from '../state/AppState.svelte.js';
4 let { api_request_params = {} } = $props();
6 function handleFormSubmit(event) {
7 event.preventDefault();
9 let form_el = event.target;
10 let val = form_el.querySelector('input[type=edit]').value.trim();
11 let type_and_id_match = val.match(/^\s*([NWR])(-?\d+)\s*$/i)
12 || val.match(/\/(relation|way|node)\/(-?\d+)\s*$/);
15 if (type_and_id_match) {
16 params.osmtype = type_and_id_match[1].charAt(0).toUpperCase();
17 params.osmid = type_and_id_match[2];
18 } else if (val.match(/^\d+$/)) {
19 params.place_id = val;
21 alert('invalid input');
25 appState.refreshPage('details', new URLSearchParams(params));
29 <form onsubmit={handleFormSubmit} class="form-inline" action="details.html">
31 <div class="col-auto">
32 <!-- eslint-disable-next-line max-len -->
34 class="form-control form-control-sm me-1"
35 pattern="^[1-9][0-9]*$|^[NWRnwr]-?[1-9][0-9]*$|.*openstreetmap.*"
37 (api_request_params.osmtype || '')
38 + (api_request_params.osmid || '')
39 + (api_request_params.place_id || '')
42 <div class="col-auto">
43 <button type="submit" class="btn btn-primary btn-sm">Show</button>
47 <small class="form-text text-muted">
48 OSM type+id (<em>N123</em>,
54 Place id (<em>1234</em>) or
55 URL (<em>https://openstreetmap.org/way/123</em>)
64 font-family: monospace;