export function createStaticLayerCanvas(width, height) { const w = Math.max(1, width | 0); const h = Math.max(1, height | 0); if (typeof OffscreenCanvas !== 'undefined') return new OffscreenCanvas(w, h); const c = document.createElement('canvas'); c.width = w; c.height = h; return c; } export function drawCachedStaticLayer(state, g, layerId, key, rect, build) { if (!state || !rect || rect.w <= 0 || rect.h <= 0) return; if (!state.staticLayers) state.staticLayers = new Map(); const fullKey = `${layerId}:${key}:${Math.max(0, rect.w | 0)}x${Math.max(0, rect.h | 0)}`; let layer = state.staticLayers.get(fullKey); if (!layer) { const canvas = createStaticLayerCanvas(rect.w, rect.h); const ctx = canvas.getContext('2d'); build(ctx, rect); layer = { canvas }; state.staticLayers.set(fullKey, layer); } g.drawImage(layer.canvas, rect.x, rect.y); }