{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-providers/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-06-01 18:06:23\n * @LastEditTime: 2022-03-11 11:36:37\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-providers\\index.ts\n */\nimport { getInstanceListener, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport type { VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport * as coordtransform from 'casc-cesium-utils/coordtransform'\nimport useCommon from '../use-common'\nimport type { SetupContext } from 'vue'\nimport type { ProviderEmits } from 'casc-cesium-utils/emits'\nimport { VcLayerImageryRef } from 'casc-cesium-components'\n\nexport default function (props, ctx: SetupContext<ProviderEmits>, vcInstance: VcComponentInternalInstance) {\n  // state\n  vcInstance.cesiumEvents = ['errorEvent']\n  const commonState = useCommon(props, ctx, vcInstance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { emit } = ctx\n\n  // methods\n  vcInstance.mount = async () => {\n    const { viewer } = commonState.$services\n    if (vcInstance.cesiumClass.indexOf('ImageryProvider') !== -1) {\n      vcInstance.renderByParent = true\n      const imageryProvider = vcInstance.cesiumObject as Cesium.ImageryProvider\n      imageryProvider?.readyPromise?.then(() => {\n        const listener = getInstanceListener(vcInstance, 'readyPromise')\n        listener && emit('readyPromise', imageryProvider, viewer, vcInstance.proxy as VcLayerImageryRef)\n      })\n\n      if (props.projectionTransforms && props.projectionTransforms.from !== props.projectionTransforms.to) {\n        const ignoreTransforms =\n          vcInstance.proxy?.$options.name === 'VcImageryProviderBaidu' ||\n          (vcInstance.proxy?.$options.name === 'VcImageryProviderTianditu' && (imageryProvider as any)._epsgCode === '4490')\n        if (!ignoreTransforms) {\n          const { WebMercatorTilingScheme, Cartographic, Math: CesiumMath } = Cesium\n          const tilingScheme = new WebMercatorTilingScheme()\n          const projection = tilingScheme.projection\n          const nativeProject = projection.project\n          const nativeUnProject = projection.unproject\n          let projectMethods\n          let unprojectMethods\n          if (props.projectionTransforms.to.toUpperCase() === 'WGS84') {\n            projectMethods = 'wgs84togcj02'\n            unprojectMethods = 'gcj02towgs84'\n          } else if (props.projectionTransforms.to.toUpperCase() === 'GCJ02') {\n            projectMethods = 'gcj02towgs84'\n            unprojectMethods = 'wgs84togcj02'\n          }\n\n          if (projectMethods && unprojectMethods) {\n            projection.project = function (cartographic, result) {\n              result = result || new Cesium.Cartesian3()\n              result = coordtransform[projectMethods](CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n              return nativeProject.call(this, new Cartographic(CesiumMath.toRadians(result?.[0]), CesiumMath.toRadians(result?.[1])))\n            }\n            projection.unproject = function (cartesian2, result) {\n              result = result || new Cartographic()\n              const cartographic = nativeUnProject.call(this, cartesian2)\n              result = coordtransform[unprojectMethods](CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude))\n              return new Cartographic(CesiumMath.toRadians(result?.[0]), CesiumMath.toRadians(result?.[1]))\n            }\n            ;(imageryProvider as any)._tilingScheme = tilingScheme\n          }\n        }\n      }\n      const parentVM = getVcParentInstance(vcInstance).proxy as VcLayerImageryRef\n      return parentVM && parentVM.__updateProvider?.(imageryProvider)\n    } else {\n      const terrainProvider = vcInstance.cesiumObject as Cesium.TerrainProvider\n      terrainProvider.readyPromise.then(() => {\n        const listener = getInstanceListener(vcInstance, 'readyPromise')\n        listener && emit('readyPromise', terrainProvider, viewer, vcInstance.proxy as VcLayerImageryRef)\n      })\n      viewer.terrainProvider = terrainProvider\n      return true\n    }\n  }\n  vcInstance.unmount = async () => {\n    const { viewer } = commonState.$services\n    if (vcInstance.cesiumClass.indexOf('ImageryProvider') !== -1) {\n      const parentVM = getVcParentInstance(vcInstance).proxy as VcLayerImageryRef\n      return parentVM && parentVM.__updateProvider?.(undefined)\n    } else {\n      const terrainProvider = new Cesium.EllipsoidTerrainProvider()\n      terrainProvider.readyPromise.then(() => {\n        const listener = getInstanceListener(vcInstance, 'readyPromise')\n        listener && emit('readyPromise', terrainProvider, viewer, vcInstance.proxy as VcLayerImageryRef)\n      })\n      viewer.terrainProvider = terrainProvider\n      return true\n    }\n  }\n\n  return {\n    transformProps: commonState.transformProps,\n    unwatchFns: commonState.unwatchFns,\n    setPropsWatcher: commonState.setPropsWatcher\n  }\n}\n"],"names":[],"mappings":"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"}