import { listFiddles, listTags, listCollections, getCollection } from './api.js'; const $ = (sel) => document.querySelector(sel); let debounceTimer = null; let currentPage = 1; let activeTag = ''; let currentView = 'fiddles'; const JS_TYPE_LABELS = { javascript: 'JS', typescript: 'TS', react: 'React', 'react-ts': 'React+TS', vue: 'Vue', svelte: 'Svelte', markdown: 'MD', wasm: 'WASM', }; function relativeTime(dateStr) { const now = Date.now(); const then = new Date(dateStr + 'Z').getTime(); const diff = Math.floor((now - then) / 1000); if (diff < 60) return 'just now'; if (diff < 3600) return `${Math.floor(diff / 60)}m ago`; if (diff < 86400) return `${Math.floor(diff / 3600)}h ago`; if (diff < 2592000) return `${Math.floor(diff / 86400)}d ago`; return new Date(dateStr).toLocaleDateString(); } function renderCards(fiddles, gridSelector = '#fiddle-grid') { const grid = $(gridSelector); if (!fiddles.length) { grid.innerHTML = '