/
Gabryelf
/
Icons-Customize-Gen
Обзор
Документация
Войти
/
Gabryelf
/
Icons-Customize-Gen
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
js/controllers/LayerController.js
70 строк
2 KB
Valeev Serj
create_services
10 июл 2026, 21:27
10 июл 2026, 21:27
2e9672a
Код
Авторство
О чём код?
export class LayerController { constructor(project, eventBus) { this.project = project; this.events = eventBus; } add(data) { const layer = this.project.addLayer(data); this.events.emit('layer:added', layer); this.events.emit('project:changed'); return layer; } remove(id) { const layer = this.project.layers.find(l => l.id === id); if (!layer) return false; this.project.removeLayer(id); this.events.emit('layer:removed', layer); this.events.emit('project:changed'); return true; } select(id) { if (this.project.selectedId === id) return; this.project.selectedId = id; this.events.emit('layer:selected', this.project.selectedLayer); this.events.emit('project:changed'); } update(id, props) { const layer = this.project.layers.find(l => l.id === id); if (!layer) return false; Object.assign(layer, props); this.events.emit('layer:updated', layer); this.events.emit('project:changed'); return true; } move(id, direction) { const idx = this.project.layers.findIndex(l => l.id === id); if (idx === -1) return; const newIdx = idx + direction; if (newIdx < 0 || newIdx >= this.project.layers.length) return; const [layer] = this.project.layers.splice(idx, 1); this.project.layers.splice(newIdx, 0, layer); this.project.layers.forEach((l, i) => l.zIndex = i); this.events.emit('layer:reordered', this.project.layers); this.events.emit('project:changed'); } toggleVisibility(id) { const layer = this.project.layers.find(l => l.id === id); if (!layer) return; layer.visible = !layer.visible; this.events.emit('layer:updated', layer); this.events.emit('project:changed'); } duplicate(id) { const layer = this.project.layers.find(l => l.id === id); if (!layer) return null; const clone = layer.clone(); clone.x += 10; clone.y += 10; this.project.addLayer(clone); this.events.emit('layer:added', clone); this.events.emit('project:changed'); return clone; } }