Spaces:
Sleeping
Sleeping
feat: deploy sustainability, staff command center, security hardening, accessibility and UX polish to HF
ca26788 | export function escapeHTML(value = '') { | |
| return String(value) | |
| .replace(/&/g, '&') | |
| .replace(/</g, '<') | |
| .replace(/>/g, '>') | |
| .replace(/"/g, '"') | |
| .replace(/'/g, '''); | |
| } | |
| export function setHTML(element, html = '') { | |
| if (!element) return; | |
| // Audited HTML sink: callers must escape or whitelist dynamic fields first. | |
| if (typeof element.replaceChildren === 'function' && typeof element.insertAdjacentHTML === 'function') { | |
| element.replaceChildren(); | |
| element.insertAdjacentHTML('afterbegin', String(html)); | |
| return; | |
| } | |
| element.innerHTML = String(html); | |
| } | |
| export function clearElement(element) { | |
| if (element) element.replaceChildren(); | |
| } | |
| export function safeNumber(value, fallback = 0) { | |
| const number = Number(value); | |
| return Number.isFinite(number) ? number : fallback; | |
| } | |