UNPKG

@vizzuality/layer-manager

Version:

## Installation ```sh # with Yarn yarn add @vizzuality/layer-manager

103 lines 3.06 kB
"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