illustrator.js
Version:
JavaScript image processing library
115 lines (114 loc) • 4.74 kB
JavaScript
"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();