tchen-vuelayers
Version:
Web map Vue components with the power of OpenLayers
92 lines (81 loc) • 1.99 kB
JavaScript
/**
* VueLayers
* Web map Vue components with the power of OpenLayers
*
* @package vuelayers
* @author Vladimir Vershinin <ghettovoice@gmail.com>
* @version 0.11.1
* @license MIT
* @copyright (c) 2017-2019, Vladimir Vershinin <ghettovoice@gmail.com>
*/
import _Object$defineProperties from '@babel/runtime-corejs2/core-js/object/define-properties';
import Vue from 'vue';
import { isPlainObject } from '../util/minilo';
import projTransforms from './proj-transforms';
var methods = {
/**
* @return {{
* getGeometry: function(): Geometry|undefined,
* setGeometry: function(Geometry|undefined)
* }|undefined}
* @protected
*/
getGeometryTarget: function getGeometryTarget() {
throw new Error('Not implemented method');
},
/**
* @return {Geometry|undefined}
*/
getGeometry: function getGeometry() {
return this._geometry;
},
/**
* @return {Object}
* @protected
*/
getServices: function getServices() {
var vm = this;
return {
get geometryContainer() {
return vm;
}
};
},
/**
* @param {Geometry|Vue|Object|undefined} geom
* @return {void}
* @throws {AssertionError}
*/
setGeometry: function setGeometry(geom) {
if (geom instanceof Vue) {
geom = geom.$geometry;
} else if (isPlainObject(geom)) {
geom = this.readGeometryInDataProj(geom);
}
if (geom !== this._geometry) {
this._geometry = geom;
}
var geomTarget = this.getGeometryTarget();
if (geomTarget && geom !== geomTarget.getGeometry()) {
geomTarget.setGeometry(geom);
}
}
};
var geometryContainer = {
mixins: [projTransforms],
methods: methods,
created: function created() {
/**
* @type {Geometry|undefined}
* @private
*/
this._geometry = undefined;
_Object$defineProperties(this, {
$geometry: {
enumerable: true,
get: this.getGeometry
}
});
}
};
export default geometryContainer;