@vizzuality/layer-manager
Version:
## Installation ```sh # with Yarn yarn add @vizzuality/layer-manager
103 lines • 3.06 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const es6_1 = __importDefault(require("fast-deep-equal/es6"));
// @ts-ignore
const js_deep_equals_1 = require("js-deep-equals");
const defaultLayerSpec = {
opacity: 1,
visibility: true,
};
class LayerModel {
constructor(_layerSpec) {
this._layerSpec = _layerSpec;
this._changedAttributes = {};
this.layerRequest = undefined;
if (!_layerSpec)
throw new Error('layerSpec object is required');
// updating counter for internal purposes
LayerModel._counter += 1;
this._layerSpec = Object.assign(Object.assign({}, defaultLayerSpec), _layerSpec);
this._uid = LayerModel._counter;
}
get uid() {
return this._uid;
}
get id() {
return this._layerSpec.id;
}
get type() {
return this._layerSpec.type;
}
get visibility() {
return this._layerSpec.visibility;
}
get opacity() {
return this._layerSpec.opacity;
}
get zIndex() {
return this._layerSpec.zIndex;
}
get images() {
return this._layerSpec.images;
}
get render() {
return this._layerSpec.render;
}
get source() {
return this._layerSpec.source;
}
get interactivity() {
return this._layerSpec.interactivity;
}
get params() {
return this._layerSpec.params;
}
get sqlParams() {
return this._layerSpec.sqlParams;
}
get deck() {
return this._layerSpec.deck;
}
get layerSpec() {
return this._layerSpec;
}
get changedAttributes() {
return this._changedAttributes;
}
setMapLayer(mapLayer) {
this.mapLayer = mapLayer;
}
get(key) {
return this._layerSpec[key];
}
set(key, value) {
const newData = { [key]: value };
this._layerSpec = Object.assign(Object.assign({}, this._layerSpec), newData);
}
update(layerSpec) {
// resetting changedAttributes for every update
const changedAttributes = {};
Object.keys(layerSpec).forEach((key) => {
const prev = this._layerSpec[key];
const current = layerSpec[key];
if (!(0, es6_1.default)(prev, current)) {
changedAttributes[key] = current;
}
// Deep comparison for deck layers
if (key === 'deck' && !(0, js_deep_equals_1.compare)(prev, current)) {
changedAttributes[key] = current;
}
});
this._changedAttributes = changedAttributes;
this._layerSpec = Object.assign(Object.assign({}, this._layerSpec), this._changedAttributes);
}
setLayerRequest(layerRequest) {
this.layerRequest = layerRequest;
}
}
LayerModel._counter = 0;
exports.default = LayerModel;
//# sourceMappingURL=layer-model.js.map