// Generated, do not edit. sha256:9856275bb06c64defb28cac958ae6f3ea1416a635a680ca0739edd9bad0379ee import * as dialog from './dialog.js'; import { esc } from './escape.js'; let _seq = 0; export function labelComboMarkup(fieldKey, currentId) { const id = currentId == null ? '' : currentId; const dl = `lc-dl-${++_seq}`; return ` `; } export function labelComboRead(host) { if (!host) return null; const v = host.querySelector('[data-label-id]').value; return v === '' ? null : Number(v); } export function labelComboMount(host, labelApi, onChange) { const hidden = host.querySelector('[data-label-id]'); const input = host.querySelector('[data-label-input]'); const datalist = host.querySelector('datalist'); const addBtn = host.querySelector('[data-label-add]'); const delBtn = host.querySelector('[data-label-del]'); let cache = []; const byName = name => { const n = name.trim().toLowerCase(); return cache.find(l => l.name.toLowerCase() === n) || null; }; function refreshList() { datalist.innerHTML = cache.map(l => ``).join(''); } function setId(id) { hidden.value = id == null ? '' : id; const cur = cache.find(l => String(l.id) === String(id)); input.value = cur ? cur.name : ''; delBtn.disabled = !cur; } async function load() { cache = (await labelApi.listLabels()) || []; refreshList(); } input.onfocus = () => { input.value = ''; load(); }; input.onblur = () => setTimeout(() => { if (document.activeElement === input) return; if (!input.value.trim()) { const cur = cache.find(l => String(l.id) === String(hidden.value)); input.value = cur ? cur.name : ''; } }, 150); input.onchange = () => { const name = input.value.trim(); if (!name) { setId(''); onChange?.(null); return; } const m = byName(name); if (m) { setId(m.id); onChange?.(m.id); } else { hidden.value = ''; delBtn.disabled = true; } }; addBtn.onclick = async () => { const name = input.value.trim(); if (!name) { input.focus(); return; } const m = byName(name); if (m) { setId(m.id); onChange?.(m.id); return; } try { const id = await labelApi.createLabel({ name }); await load(); setId(id); onChange?.(id); } catch (e) { dialog.alert({ message: e.message }); } }; delBtn.onclick = () => { setId(''); onChange?.(null); }; return load().then(() => setId(hidden.value || '')); }