import { ref } from 'vue' export class LayerManager { stateManager: any canvasManager: any layers: any activeID: any constructor(options) { this.stateManager = options.stateManager; this.canvasManager = options.canvasManager; this.layers = ref([]) this.activeID = ref("") } setActiveID(id: string) { this.activeID.value = id } getLayerByID(id) { return this.layers.value.find((item: any) => item.info.id === id) } setLayerNameByID(id, name: string) { const layer = this.getLayerByID(id) if (layer) { layer.info.name = name this.canvasManager.renderAll() } } setLayerVisibleByID(id, visible: boolean) { const layer = this.getLayerByID(id) if (layer) { layer.set({ visible: visible }) this.canvasManager.renderAll() } } deleteLayerByID(id) { this.canvasManager.deleteObjectById(id) } // 拖拽排序 dragSort(id, newIndex) { const index = Math.abs(this.layers.value.length - newIndex - 1) this.canvasManager.dragSort(id, index) } // 更新图层列表 updateLayers() { this.layers.value = this.canvasManager.getObjects().reverse() } }