UNPKG

illustrator.js

Version:

JavaScript image processing library

115 lines (114 loc) 4.74 kB
"use strict"; var _LayerManager_layers; Object.defineProperty(exports, "__esModule", { value: true }); exports.LayerManager = void 0; const tslib_1 = require("tslib"); const IllustratorCollection_1 = require("../utils/IllustratorCollection"); const randomId_1 = require("../utils/randomId"); const Layer_1 = require("./Layer"); class LayerManager { constructor(illustrator) { this.illustrator = illustrator; _LayerManager_layers.set(this, new IllustratorCollection_1.IllustratorCollection()); } count() { return tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").size; } createLayer(options) { if (!options.name || typeof options.name !== "string") throw new Error("Layer name is required"); if (tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").findKey((x) => x.name === options.name)) throw new Error("Layer with that name already exists"); const id = (0, randomId_1.generateRandomId)(); const layerObj = { id, layer: new Layer_1.Layer(this, id, options.config), name: options.name, position: options.position ?? this.count() + 1 }; tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").set(layerObj.id, layerObj); // rearrange layerObj.layer.setPosition(layerObj.position); return layerObj.layer; } duplicateLayer(layer, history, options) { if (!options.name || typeof options.name !== "string") throw new Error("Layer name is required"); if (tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").findKey((x) => x.name === options.name)) throw new Error("Layer with that name already exists"); const id = (0, randomId_1.generateRandomId)(); const layerObj = { id, layer: new Layer_1.Layer(this, id, options.config), name: options.name, position: options.position ?? this.count() + 1 }; layerObj.layer.setHistory(history); tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").set(layerObj.id, layerObj); layerObj.layer.setPosition(layer.position + 1); return layerObj.layer; } deleteLayer(layer) { const id = this.resolveId(layer); if (id == null) return false; return tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").delete(id); } hasLayer(layer) { const id = this.resolveId(layer); return id != null; } getLayer(layer) { const l = this.resolveLayer(layer); if (l == null) return null; return l; } getLayerPosition(layer) { const l = this.resolve(layer); if (!l) return -1; return l.position; } setLayerPosition(layer, position) { if (position < 0) throw new Error(`invalid layer position index ${position}`); const l = this.resolve(layer); if (!l) return -1; const layersToBeUpdated = tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").filter((l) => l.position >= position); layersToBeUpdated.forEach((l) => { tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").set(l.id, { ...l, position: l.position + 1 }); }); tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").set(l.id, { ...l, position }); return tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").get(l.id)?.position ?? -1; } resolveLayer(layer) { return this.resolve(layer)?.layer; } resolveId(layer) { return this.resolve(layer)?.id; } resolve(layer) { if (layer instanceof Layer_1.Layer) return tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").get(layer.id); if (typeof layer === "number") return tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").get(layer); if (typeof layer === "string") return tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").find((l) => l.name === layer); } getAllLayers(ordered = true) { return ordered ? tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").array().sort((a, b) => b.position - a.position) : tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").array(); } iterate() { return tslib_1.__classPrivateFieldGet(this, _LayerManager_layers, "f").values(); } } exports.LayerManager = LayerManager; _LayerManager_layers = new WeakMap();