/**
* API utilities and configuration
*/
// API configuration
export const apiConfig = {
baseUrl: '' // Empty string means same origin (default)
};
/**
* Fetch with timeout utility
* @param {string} resource - URL to fetch
* @param {object} options - Fetch options
* @param {number} timeout - Timeout in milliseconds (default: 30000)
* @returns {Promise<Response>}
*/
export async function fetchWithTimeout(resource, options = {}, timeout = 30000) {
const controller = new AbortController();
const id = setTimeout(() => controller.abort(), timeout);
try {
const response = await fetch(resource, {
...options,
signal: controller.signal
});
clearTimeout(id);
return response;
} catch (error) {
clearTimeout(id);
throw error;
}
}
/**
* Show/hide loading indicator
*/
export function showLoading(show) {
const loadingIndicator = document.getElementById('loading-indicator');
if (loadingIndicator) {
loadingIndicator.style.display = show ? 'flex' : 'none';
}
}