/**
 * vue-cesium - https://github.com/zouyaoji/vue-cesium
 * Vue 2.x components for CesiumJS.
 *
 * @package VueCesium
 * @author zouyaoji <370681295@qq.com>
 * @version 2.2.12
 * @license MIT
 * @homepage https://zouyaoji.top/vue-cesium
 * @copyright (c) 2018-2021, zouyaoji <370681295@qq.com>
 */
import _Object$defineProperties from '@babel/runtime-corejs2/core-js/object/define-properties';
import _regeneratorRuntime from '@babel/runtime-corejs2/regenerator';
import bindEvents from '../../utils/bindEvent';
import { Events } from '../../utils/events';
import cmp from '../virtualCmp';

var methods = {
  /**
   * 用异步方式的将 graphics 挂载到 entity。
   */
  mount: function mount() {
    var graphics, graphicsContainer, $options, arr;
    return _regeneratorRuntime.async(function mount$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            graphics = this.graphics, graphicsContainer = this.graphicsContainer, $options = this.$options;
            bindEvents.call(this, graphics, Events['entity-events']);
            arr = $options.name.split('-');
            return _context.abrupt("return", graphicsContainer && graphicsContainer.setGraphics(graphics, arr.length === 3 ? arr[2] : 'polylineVolume'));

          case 4:
          case "end":
            return _context.stop();
        }
      }
    }, null, this);
  },

  /**
   * 用异步方的式将 graphics 从 entity 卸载。
   */
  unmount: function unmount() {
    var graphics, graphicsContainer, $options, arr;
    return _regeneratorRuntime.async(function unmount$(_context2) {
      while (1) {
        switch (_context2.prev = _context2.next) {
          case 0:
            graphics = this.graphics, graphicsContainer = this.graphicsContainer, $options = this.$options;
            bindEvents.call(this, graphics, Events['entity-events'], false);
            arr = $options.name.split('-');
            return _context2.abrupt("return", graphicsContainer && graphicsContainer.setGraphics(undefined, arr.length === 3 ? arr[2] : 'polylineVolume'));

          case 4:
          case "end":
            return _context2.stop();
        }
      }
    }, null, this);
  }
};
/**
 * 与 vc-entity 组件关联的各 graphics 子组件基础混入方法。
 */

var mixinGraphic = {
  mixins: [cmp],
  methods: methods,
  stubVNode: {
    empty: function empty() {
      return this.$options.name;
    }
  },
  created: function created() {
    var _this = this;

    _Object$defineProperties(this, {
      graphics: {
        enumerable: true,
        get: function get() {
          return _this.cesiumObject;
        }
      },
      graphicsContainer: {
        enumerable: true,
        get: function get() {
          return _this.$services && _this.$services.graphicsContainer;
        }
      }
    });
  }
};

export default mixinGraphic;
