/**
 * vue-cesium - https://github.com/zouyaoji/vue-cesium
 * Vue 2.x components for CesiumJS.
 *
 * @package VueCesium
 * @author zouyaoji <370681295@qq.com>
 * @version 2.2.8
 * @license MIT
 * @homepage https://zouyaoji.top/vue-cesium
 * @copyright (c) 2018-2021, zouyaoji <370681295@qq.com>
 */
import { makeDistanceDisplayCondition, makeCartesian2, makeCartesian2Array, makeCartesian3, makeCartesian3Array, makeColor, makeNearFarScalar, makeMaterial, makeRectangle, makeBoundingRectangle, makePlane, makePolygonHierarchy, makeTranslationRotationScale, makeQuaternion, makeOptions } from './cesiumHelpers';

/**
 * 特殊的 Props, 需要用 cesiumHelpers 中提供的方法转换。
 */

var specialProps = {
  distanceDisplayCondition: {
    handler: makeDistanceDisplayCondition
  },
  pixelOffset: {
    handler: makeCartesian2
  },
  backgroundPadding: {
    handler: makeCartesian2
  },
  imageBasedLightingFactor: {
    handler: makeCartesian2
  },
  imageSize: {
    handler: makeCartesian2
  },
  minimumImageSize: {
    handler: makeCartesian2
  },
  maximumImageSize: {
    handler: makeCartesian2
  },
  shape: {
    handler: makeCartesian2Array
  },
  shapePositions: {
    handler: makeCartesian2Array
  },
  position: {
    handler: makeCartesian3
  },
  eyeOffset: {
    handler: makeCartesian3
  },
  alignedAxis: {
    handler: makeCartesian3
  },
  dimensions: {
    handler: makeCartesian3
  },
  radii: {
    handler: makeCartesian3
  },
  center: {
    handler: makeCartesian3
  },
  innerRadii: {
    handler: makeCartesian3
  },
  origin: {
    handler: makeCartesian3
  },
  positions: {
    handler: makeCartesian3Array,
    exclude: '_callback'
  },
  polylinePositions: {
    handler: makeCartesian3Array,
    exclude: '_callback'
  },
  color: {
    handler: makeColor
  },
  outlineColor: {
    handler: makeColor
  },
  backgroundColor: {
    handler: makeColor
  },
  fillColor: {
    handler: makeColor
  },
  silhouetteColor: {
    handler: makeColor
  },
  lightColor: {
    handler: makeColor
  },
  glowColor: {
    handler: makeColor
  },
  clearColor: {
    handler: makeColor
  },
  startColor: {
    handler: makeColor
  },
  endColor: {
    handler: makeColor
  },
  scaleByDistance: {
    handler: makeNearFarScalar
  },
  translucencyByDistance: {
    handler: makeNearFarScalar
  },
  pixelOffsetScaleByDistance: {
    handler: makeNearFarScalar
  },
  material: {
    handler: makeMaterial
  },
  depthFailMaterial: {
    handler: makeMaterial
  },
  cutoutRectangle: {
    handler: makeRectangle
  },
  coordinates: {
    handler: makeRectangle
  },
  rectangle: {
    handler: makeRectangle
  },
  imageSubRegion: {
    handler: makeBoundingRectangle
  },
  colorToAlpha: {
    handler: makeColor
  },
  plane: {
    handler: makePlane
  },
  hierarchy: {
    handler: makePolygonHierarchy,
    exclude: '_callback'
  },
  polygonHierarchy: {
    handler: makePolygonHierarchy
  },
  nodeTransformations: {
    handler: makeTranslationRotationScale
  },
  orientation: {
    handler: makeQuaternion
  },
  options: {
    deep: true,
    handler: makeOptions
  }
};

export default specialProps;
