UNPKG

tchen-vuelayers

Version:

Web map Vue components with the power of OpenLayers

92 lines (81 loc) 1.99 kB
/** * 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;