{"version":3,"file":"useViewer.mjs","sources":["../../../../../../packages/components/viewer/src/useViewer.ts"],"sourcesContent":["import { ExtractPropTypes, watch, ref, onMounted, onUnmounted, nextTick, reactive, VNode } from 'vue'\nimport mitt, { Emitter } from 'mitt'\nimport { useLocale } from '@vue-cesium/composables'\nimport defaultProps from './defaultProps'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { dirname, removeEmpty, isEmptyObj, hasOwn } from '@vue-cesium/utils/util'\nimport { getInstanceListener, $ } from '@vue-cesium/utils/private/vm'\nimport {\n  VcComponentInternalInstance,\n  VcCamera,\n  VcReadyObject,\n  VcComponentPublicInstance,\n  AnyObject,\n  VcMittEvents,\n  VcTerrainProvider,\n  VcDatasource,\n  ViewerWidgetResizedEvent,\n  VcContextOptions\n} from '@vue-cesium/utils/types'\nimport { setViewerCamera } from '@vue-cesium/utils/cesium-helpers'\nimport useLog from '@vue-cesium/composables/private/use-log'\nimport { useEvents } from '@vue-cesium/composables'\nimport { getMars3dConfig } from './loadUtil'\nimport { useGlobalConfig } from '@vue-cesium/composables/use-global-config'\nimport { VcSkeletonProps } from '../../ui/skeleton'\n\nexport const viewerProps = defaultProps\n// export type VcViewerProps = ExtractPropTypes<typeof viewerProps>\n\nexport default function (props: VcViewerProps, ctx, vcInstance: VcComponentInternalInstance) {\n  // state\n  let createResolve, reject\n  const createPromise = new Promise<VcReadyObject>((_resolve, _reject) => {\n    createResolve = _resolve\n    reject = _reject\n  })\n\n  const viewerRef = ref<HTMLElement>(null!)\n  const isReady = ref(false)\n  const vcMitt: Emitter<VcMittEvents> = mitt()\n  const { emit } = ctx\n\n  const globalConfig = useGlobalConfig()\n\n  const logger = useLog(vcInstance)\n\n  vcInstance.mounted = false\n  vcInstance.vcMitt = vcMitt\n  vcInstance.cesiumClass = 'Viewer'\n  vcInstance.children = []\n  const eventsState = useEvents(props, vcInstance, logger)\n\n  const layout = reactive({\n    toolbarContainerRC: undefined,\n    timelineContainerRC: undefined,\n    animationContainerRC: undefined,\n    bottomContainerRC: undefined\n  })\n\n  let loadLibs: Array<string> = []\n\n  logger.debug('viewer creating')\n\n  const { t } = useLocale()\n\n  // watch\n  watch(\n    () => props.selectionIndicator,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, SelectionIndicator } = Cesium\n      let selectionIndicatorContainer\n      if (defined(viewer.selectionIndicator) && !viewer.selectionIndicator.isDestroyed() && !val) {\n        selectionIndicatorContainer = viewer.selectionIndicator.container\n        viewerElement?.removeChild(selectionIndicatorContainer)\n        viewer.selectionIndicator.destroy()\n        viewer._selectionIndicator = undefined\n      } else if (!defined(viewer.selectionIndicator) || viewer.selectionIndicator.isDestroyed()) {\n        selectionIndicatorContainer = document.createElement('div')\n        selectionIndicatorContainer.className = 'cesium-viewer-selectionIndicatorContainer'\n        viewerElement?.appendChild(selectionIndicatorContainer)\n        const selectionIndicator = new SelectionIndicator(selectionIndicatorContainer, viewer.scene)\n        viewer._selectionIndicator = selectionIndicator\n      }\n\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'selectionIndicator',\n        status: val ? 'added' : 'removed',\n        target: selectionIndicatorContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.infoBox,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, InfoBox } = Cesium\n      const events = ['cameraClicked', 'closeClicked']\n      let infoBoxContainer\n      if (defined(viewer.infoBox) && !viewer.infoBox.isDestroyed() && !val) {\n        const infoBoxViewModel = viewer.infoBox.viewModel\n        infoBoxViewModel && eventsState.bindEvents(infoBoxViewModel, events, false)\n        infoBoxContainer = viewer.infoBox.container\n        viewerElement?.removeChild(infoBoxContainer)\n        viewer.infoBox.destroy()\n        viewer._infoBox = undefined\n      } else if (!defined(viewer.infoBox) || viewer.infoBox.isDestroyed()) {\n        infoBoxContainer = document.createElement('div')\n        infoBoxContainer.className = 'cesium-viewer-infoBoxContainer'\n        viewerElement?.appendChild(infoBoxContainer)\n        const infoBox = new InfoBox(infoBoxContainer)\n        const infoBoxViewModel = infoBox.viewModel\n        viewer._onInfoBoxCameraClicked && viewer._eventHelper?.add(infoBoxViewModel.cameraClicked, viewer._onInfoBoxCameraClicked, viewer)\n        viewer._onInfoBoxClockClicked && viewer._eventHelper?.add(infoBoxViewModel.closeClicked, viewer._onInfoBoxClockClicked, viewer)\n        infoBoxViewModel && eventsState.bindEvents(infoBoxViewModel, events, true)\n        viewer._infoBox = infoBox\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'infoBox',\n        status: val ? 'added' : 'removed',\n        target: infoBoxContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.geocoder,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, Geocoder } = Cesium\n      let geocoderContainer\n      if (defined(viewer.geocoder) && !viewer.geocoder.isDestroyed() && !val) {\n        geocoderContainer = viewer.geocoder.container\n        toolbar?.removeChild(geocoderContainer)\n        viewer.geocoder.destroy()\n        viewer._geocoder = undefined\n      } else if (!defined(viewer.geocoder) || viewer.geocoder.isDestroyed()) {\n        geocoderContainer = document.createElement('div')\n        geocoderContainer.className = 'cesium-viewer-geocoderContainer'\n        toolbar?.appendChild(geocoderContainer)\n        const geocoder = new Geocoder({\n          container: geocoderContainer,\n          geocoderServices:\n            defined(props.geocoder) && typeof props.geocoder !== 'boolean'\n              ? Array.isArray(props.geocoder)\n                ? props.geocoder\n                : [props.geocoder]\n              : undefined,\n          scene: viewer.scene\n        })\n        viewer._clearObjects && viewer._eventHelper?.add(geocoder.viewModel.search.beforeExecute, viewer._clearObjects, viewer)\n        viewer._geocoder = geocoder\n        resizeToolbar(toolbar, geocoderContainer)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'geocoder',\n        status: val ? 'added' : 'removed',\n        target: geocoderContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.homeButton,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, HomeButton } = Cesium\n      if (defined(viewer.homeButton) && !viewer.homeButton.isDestroyed() && !val) {\n        viewer.homeButton.destroy()\n        viewer._homeButton = undefined\n      } else if (!defined(viewer.homeButton) || viewer.homeButton.isDestroyed()) {\n        const homeButton = new HomeButton(toolbar!, viewer.scene)\n        if (defined(viewer.geocoder)) {\n          viewer._eventHelper?.add(homeButton.viewModel.command.afterExecute, function () {\n            const viewModel = viewer.geocoder.viewModel\n            viewModel.searchText = ''\n            viewModel.isSearchInProgress && (viewModel as any).search()\n          })\n        }\n        viewer._clearTrackedObject && viewer._eventHelper?.add(homeButton.viewModel.command.beforeExecute, viewer._clearTrackedObject, viewer)\n        viewer._homeButton = homeButton\n        resizeToolbar(toolbar, homeButton)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'homeButton',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.sceneModePicker,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, DeveloperError, SceneModePicker } = Cesium\n      if (defined(viewer.sceneModePicker) && !viewer.sceneModePicker.isDestroyed() && !val) {\n        viewer.sceneModePicker.destroy()\n        viewer._sceneModePicker = undefined\n      } else if (!defined(viewer.sceneModePicker) || viewer.sceneModePicker.isDestroyed()) {\n        if (props.sceneModePicker && props.scene3DOnly) {\n          throw new DeveloperError('options.sceneModePicker is not available when options.scene3DOnly is set to true.')\n        }\n        if (!props.scene3DOnly && props.sceneModePicker) {\n          const sceneModePicker = new SceneModePicker(toolbar!, viewer.scene)\n          viewer._sceneModePicker = sceneModePicker\n          resizeToolbar(toolbar, sceneModePicker)\n        }\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'sceneModePicker',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.projectionPicker,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, ProjectionPicker } = Cesium\n      if (defined(viewer.projectionPicker) && !viewer.projectionPicker.isDestroyed() && !val) {\n        viewer.projectionPicker.destroy()\n        viewer._projectionPicker = undefined\n      } else if (!defined(viewer.projectionPicker) || viewer.projectionPicker.isDestroyed()) {\n        const projectionPicker = new ProjectionPicker(toolbar!, viewer.scene)\n        viewer._projectionPicker = projectionPicker\n        resizeToolbar(toolbar, projectionPicker)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'projectionPicker',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.baseLayerPicker,\n    val => {\n      console.log(val)\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const {\n        defined,\n        buildModuleUrl,\n        DeveloperError,\n        defaultValue,\n        createDefaultImageryProviderViewModels,\n        createDefaultTerrainProviderViewModels,\n        BaseLayerPicker\n      } = Cesium\n      if (defined(viewer.baseLayerPicker) && !viewer.baseLayerPicker.isDestroyed() && !val) {\n        viewer.baseLayerPicker.destroy()\n        viewer._baseLayerPicker = undefined\n        viewer.imageryLayers.remove(viewer.imageryLayers.get(viewer.imageryLayers.length - 1))\n        const url = buildModuleUrl('Assets/Textures/NaturalEarthII')\n        const baseLayer = viewer.imageryLayers.addImageryProvider(\n          new Cesium.TileMapServiceImageryProvider({\n            url\n          })\n        )\n        viewer.imageryLayers.lowerToBottom(baseLayer)\n      } else if (!defined(viewer.baseLayerPicker) || viewer.baseLayerPicker.isDestroyed()) {\n        const createBaseLayerPicker =\n          (!Cesium.defined(viewer.scene.globe) || props.globe !== false) &&\n          (!Cesium.defined(viewer.baseLayerPicker) || props.baseLayerPicker !== false)\n\n        if (createBaseLayerPicker && defined(props.imageryProvider)) {\n          throw new DeveloperError(`options.imageryProvider is not available when using the BaseLayerPicker widget.\n        Either specify options.selectedImageryProviderViewModel instead or set options.baseLayerPicker to false.`)\n        }\n        if (!createBaseLayerPicker && defined(props.selectedImageryProviderViewModel)) {\n          throw new DeveloperError(`options.selectedImageryProviderViewModel is not available when not using the BaseLayerPicker widget.\n        Either specify options.imageryProvider instead or set options.baseLayerPicker to true.`)\n        }\n        if (createBaseLayerPicker && defined(props.terrainProvider)) {\n          throw new DeveloperError(`options.terrainProvider is not available when using the BaseLayerPicker widget.\n        Either specify options.selectedTerrainProviderViewModel instead or set options.baseLayerPicker to false.`)\n        }\n        if (!createBaseLayerPicker && defined(props.selectedTerrainProviderViewModel)) {\n          throw new DeveloperError(`options.selectedTerrainProviderViewModel is not available when not using the BaseLayerPicker widget.\n        Either specify options.terrainProvider instead or set options.baseLayerPicker to true.`)\n        }\n        if (createBaseLayerPicker) {\n          const imageryProviderViewModels = defaultValue(props.imageryProviderViewModels, createDefaultImageryProviderViewModels())\n          const terrainProviderViewModels = defaultValue(props.terrainProviderViewModels, createDefaultTerrainProviderViewModels())\n          const baseLayerPicker = new BaseLayerPicker(toolbar!, {\n            globe: viewer.scene.globe,\n            imageryProviderViewModels: imageryProviderViewModels,\n            selectedImageryProviderViewModel: imageryProviderViewModels[0],\n            terrainProviderViewModels: terrainProviderViewModels,\n            selectedTerrainProviderViewModel: terrainProviderViewModels[0]\n          })\n\n          const elements = toolbar?.getElementsByClassName('cesium-baseLayerPicker-dropDown')\n\n          const baseLayerPickerDropDown = elements?.[0]\n          viewer._baseLayerPickerDropDown = baseLayerPickerDropDown\n          viewer._baseLayerPicker = baseLayerPicker\n          viewer.imageryLayers.raiseToTop(viewer.imageryLayers.get(0))\n          resizeToolbar(toolbar, baseLayerPicker)\n        }\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'baseLayerPicker',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.navigationHelpButton,\n    val => {\n      const { viewer } = vcInstance\n      const toolbar = viewer._toolbar\n      const { defined, defaultValue, NavigationHelpButton } = Cesium\n      if (defined(viewer.navigationHelpButton) && !viewer.navigationHelpButton.isDestroyed() && !val) {\n        viewer.navigationHelpButton.destroy()\n        viewer._navigationHelpButton = undefined\n      } else if (!defined(viewer.navigationHelpButton) || viewer.navigationHelpButton.isDestroyed()) {\n        let showNavHelp = true\n        try {\n          if (defined(window.localStorage)) {\n            const hasSeenNavHelp = window.localStorage.getItem('cesium-hasSeenNavHelp')\n            if (defined(hasSeenNavHelp) && Boolean(hasSeenNavHelp)) {\n              showNavHelp = false\n            } else {\n              window.localStorage.setItem('cesium-hasSeenNavHelp', 'true')\n            }\n          }\n        } catch (e) {\n          //\n        }\n        const navigationHelpButton = new NavigationHelpButton({\n          container: toolbar!,\n          instructionsInitiallyVisible: defaultValue(props.navigationInstructionsInitiallyVisible, showNavHelp)\n        })\n        viewer._navigationHelpButton = navigationHelpButton\n        resizeToolbar(toolbar, navigationHelpButton)\n      }\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'navigationHelpButton',\n        status: val ? 'added' : 'removed',\n        target: toolbar\n      })\n    }\n  )\n\n  watch(\n    () => props.animation,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, Animation, AnimationViewModel } = Cesium\n      let animationContainer\n      if (defined(viewer.animation) && !viewer.animation.isDestroyed() && !val) {\n        animationContainer = viewer.animation.container\n        viewerElement?.removeChild(animationContainer)\n        viewer.animation.destroy()\n        viewer._animation = undefined\n      } else if (!defined(viewer.animation) || viewer.animation.isDestroyed()) {\n        animationContainer = document.createElement('div')\n        animationContainer.className = 'cesium-viewer-animationContainer'\n        viewerElement?.appendChild(animationContainer)\n        const animation = new Animation(animationContainer, new AnimationViewModel(viewer.clockViewModel))\n        animation.viewModel.dateFormatter = localeDateTimeFormatter\n        animation.viewModel.timeFormatter = localeTimeFormatter\n        viewer._animation = animation\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'animation',\n        status: val ? 'added' : 'removed',\n        target: animationContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.timeline,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, Timeline } = Cesium\n      let timelineContainer\n      if (defined(viewer.timeline) && !viewer.timeline.isDestroyed() && !val) {\n        timelineContainer = viewer.timeline.container\n        viewerElement?.removeChild(timelineContainer)\n        viewer.timeline.destroy()\n        viewer._timeline = undefined\n      } else if (!defined(viewer.timeline) || viewer.timeline.isDestroyed()) {\n        timelineContainer = document.createElement('div')\n        timelineContainer.className = 'cesium-viewer-timelineContainer'\n        viewerElement?.appendChild(timelineContainer)\n        const timeline = new Timeline(timelineContainer, viewer.clock)\n        timeline.makeLabel = time => {\n          return localeDateTimeFormatter(time)\n        }\n        timeline.addEventListener?.('settime', onTimelineScrubfunction, false)\n        timeline.zoomTo(viewer.clock.startTime, viewer.clock.stopTime)\n        viewer._timeline = timeline\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'timeline',\n        status: val ? 'added' : 'removed',\n        target: timelineContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.fullscreenButton,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, FullscreenButton } = Cesium\n      let fullscreenContainer\n      if (defined(viewer.fullscreenButton) && !viewer.fullscreenButton.isDestroyed() && !val) {\n        fullscreenContainer = viewer.fullscreenButton.container\n        viewerElement?.removeChild(fullscreenContainer)\n        viewer.fullscreenButton.destroy()\n        viewer._fullscreenButton = undefined\n      } else if (!defined(viewer.fullscreenButton) || viewer.fullscreenButton.isDestroyed()) {\n        fullscreenContainer = document.createElement('div')\n        fullscreenContainer.className = 'cesium-viewer-fullscreenContainer'\n        viewerElement?.appendChild(fullscreenContainer)\n        const fullscreenButton = new FullscreenButton(fullscreenContainer, viewerElement)\n        viewer._fullscreenButton = fullscreenButton\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'fullscreenButton',\n        status: val ? 'added' : 'removed',\n        target: fullscreenContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.fullscreenElement,\n    val => {\n      const { viewer } = vcInstance\n      const { defined } = Cesium\n      if (!defined(viewer.fullscreenButton)) {\n        return\n      }\n      if (defined(val)) {\n        viewer.fullscreenButton.viewModel.fullscreenElement = val as Element\n      }\n    }\n  )\n\n  watch(\n    () => props.vrButton,\n    val => {\n      const { viewer, viewerElement } = vcInstance\n      const { defined, VRButton } = Cesium\n      let vrContainer\n      if (defined(viewer.vrButton) && !viewer.vrButton.isDestroyed() && !val) {\n        vrContainer = viewer.vrButton.container\n        viewerElement?.removeChild(vrContainer)\n        viewer.vrButton.destroy()\n        viewer._vrButton = undefined\n      } else if (!defined(viewer.vrButton) || viewer.vrButton.isDestroyed()) {\n        vrContainer = document.createElement('div')\n        vrContainer.className = 'cesium-viewer-vrContainer'\n        viewerElement?.appendChild(vrContainer)\n        const vrButton = new VRButton(vrContainer, viewer.scene, viewerElement)\n        const viewModelCommand = vrButton.viewModel.command as any\n        ;(vrButton.viewModel as any)._command = function (VRButtonViewModel) {\n          viewModelCommand()\n          enableVRUI(viewer, VRButtonViewModel.isVRMode)\n        }\n        viewer._vrButton = vrButton\n      }\n      viewer.forceResize()\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'fullscreenButton',\n        status: val ? 'added' : 'removed',\n        target: vrContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.useDefaultRenderLoop,\n    val => {\n      vcInstance.viewer.useDefaultRenderLoop = val\n    }\n  )\n\n  watch(\n    () => props.sceneMode,\n    val => {\n      const { SceneMode } = Cesium\n      if (SceneMode.COLUMBUS_VIEW === val || SceneMode.MORPHING === val || SceneMode.SCENE2D === val || SceneMode.SCENE3D === val) {\n        vcInstance.viewer.scene.mode = val\n      }\n    }\n  )\n\n  watch(\n    () => props.shouldAnimate,\n    val => {\n      vcInstance.viewer.clock.shouldAnimate = val\n    }\n  )\n\n  watch(\n    () => props.terrainExaggeration,\n    val => {\n      vcInstance.viewer._terrainExaggeration = val\n    }\n  )\n\n  watch(\n    () => props.shadows,\n    val => {\n      vcInstance.viewer.scene.shadowMap.enabled = val\n    }\n  )\n\n  watch(\n    () => props.terrainProvider,\n    val => {\n      val && (vcInstance.viewer.terrainProvider = val)\n    }\n  )\n\n  watch(\n    () => props.camera,\n    val => {\n      setViewerCamera(vcInstance.viewer, val)\n    },\n    { deep: true }\n  )\n\n  watch(\n    () => props.imageryProvider,\n    (val, oldVal) => {\n      const { viewer } = vcInstance\n      const { defined } = Cesium\n      if (defined(val)) {\n        for (let i = 0; i < viewer.imageryLayers.length; i++) {\n          viewer.imageryLayers.get(i).imageryProvider === oldVal && viewer.imageryLayers.remove(viewer.imageryLayers[i])\n        }\n        val && viewer.imageryLayers.addImageryProvider(val)\n      }\n    }\n  )\n\n  watch(\n    () => props.showCredit,\n    val => {\n      const { viewer } = vcInstance\n      ;(viewer.cesiumWidget.creditContainer as HTMLElement).style.display = val ? 'inline' : 'none'\n      viewer.viewerWidgetResized.raiseEvent({\n        type: 'credit',\n        status: val ? 'added' : 'removed',\n        target: viewer.cesiumWidget.creditContainer\n      })\n    }\n  )\n\n  watch(\n    () => props.debugShowFramesPerSecond,\n    val => {\n      const { viewer } = vcInstance\n      viewer.scene.debugShowFramesPerSecond = val\n    }\n  )\n\n  // methods\n\n  /**\n   * 检测是否引入 CesiumJS\n   */\n  const beforeLoad = async function (): Promise<void> {\n    logger.debug('beforeLoad - viewer')\n    const listener = getInstanceListener(vcInstance, 'beforeLoad')\n    listener && emit('beforeLoad', vcInstance)\n    globalConfig.value.__scriptPromise = globalConfig.value.__scriptPromise || getCesiumScript()\n    await globalConfig.value.__scriptPromise\n  }\n  /**\n   * 初始化 Viewer，成功返回 {Cesium, viewer, instance}， 失败返回false。\n   * @returns VcReadyObject\n   */\n  const load = async function (): Promise<boolean | VcReadyObject> {\n    logger.debug('loading-viewer')\n    if (vcInstance.mounted) {\n      return false\n    }\n\n    await beforeLoad()\n\n    if (typeof Cesium === 'undefined') {\n      return false\n    }\n\n    const { Ion, buildModuleUrl, TileMapServiceImageryProvider, Viewer, defined, Math: CesiumMath, Event } = Cesium\n    const accessToken = props.accessToken ? props.accessToken : globalConfig.value.accessToken\n    Ion.defaultAccessToken = accessToken!\n\n    const {\n      animation,\n      baseLayerPicker,\n      fullscreenButton,\n      vrButton,\n      geocoder,\n      homeButton,\n      infoBox,\n      sceneModePicker,\n      selectionIndicator,\n      timeline,\n      navigationHelpButton,\n      navigationInstructionsInitiallyVisible,\n      scene3DOnly,\n      shouldAnimate,\n      clockViewModel,\n      selectedImageryProviderViewModel,\n      imageryProviderViewModels,\n      selectedTerrainProviderViewModel,\n      terrainProviderViewModels,\n      imageryProvider,\n      terrainProvider,\n      skyBox,\n      skyAtmosphere,\n      fullscreenElement,\n      useDefaultRenderLoop,\n      targetFrameRate,\n      showRenderLoopErrors,\n      useBrowserRecommendedResolution,\n      automaticallyTrackDataSourceClocks,\n      contextOptions,\n      sceneMode,\n      mapProjection,\n      globe,\n      orderIndependentTranslucency,\n      creditContainer,\n      creditViewport,\n      dataSources,\n      terrainExaggeration,\n      shadows,\n      terrainShadows,\n      mapMode2D,\n      projectionPicker,\n      requestRenderMode,\n      maximumRenderTimeChange,\n      camera,\n      navigation\n    } = props\n\n    const url = buildModuleUrl('Assets/Textures/NaturalEarthII')\n\n    let options: AnyObject = {\n      animation,\n      baseLayerPicker,\n      fullscreenButton,\n      vrButton,\n      geocoder,\n      homeButton,\n      infoBox,\n      sceneModePicker,\n      selectionIndicator,\n      timeline,\n      navigationHelpButton,\n      navigationInstructionsInitiallyVisible,\n      scene3DOnly,\n      shouldAnimate,\n      clockViewModel,\n      selectedImageryProviderViewModel,\n      imageryProviderViewModels,\n      selectedTerrainProviderViewModel,\n      terrainProviderViewModels,\n      imageryProvider: isEmptyObj(imageryProvider)\n        ? new TileMapServiceImageryProvider({\n            url\n          })\n        : imageryProvider,\n      terrainProvider,\n      skyBox,\n      skyAtmosphere,\n      fullscreenElement: isEmptyObj(fullscreenElement) ? $(viewerRef) : fullscreenElement,\n      useDefaultRenderLoop,\n      targetFrameRate,\n      showRenderLoopErrors,\n      useBrowserRecommendedResolution,\n      automaticallyTrackDataSourceClocks,\n      contextOptions,\n      sceneMode,\n      mapProjection,\n      globe,\n      orderIndependentTranslucency,\n      creditContainer,\n      creditViewport,\n      dataSources,\n      terrainExaggeration,\n      shadows,\n      terrainShadows,\n      mapMode2D,\n      projectionPicker,\n      requestRenderMode,\n      maximumRenderTimeChange,\n      navigation\n    }\n    options = removeEmpty(options)\n\n    if (Cesium.VERSION >= '1.83') {\n      delete options.terrainExaggeration\n    }\n\n    let viewer: Cesium.Viewer\n\n    if (globalThis.mars3d) {\n      vcInstance.map = new mars3d.Map($(viewerRef).id, options)\n      viewer = vcInstance.map?._viewer\n    } else if (globalThis.DC) {\n      vcInstance.dcViewer = new DC.Viewer($(viewerRef).id, options)\n      viewer = vcInstance.dcViewer?.delegate\n    } else if (globalThis.XE) {\n      vcInstance.earth = new globalThis.XE.Earth($(viewerRef), options)\n      viewer = vcInstance.earth?.czm.viewer\n    } else {\n      viewer = new Viewer($(viewerRef), options)\n    }\n\n    vcInstance.Cesium = Cesium\n    vcInstance.viewer = viewer\n    vcInstance.viewerElement = (viewer as any)._element\n    vcInstance.mounted = true\n\n    if (Cesium.VERSION >= '1.83') {\n      viewer.scene.globe.terrainExaggeration = terrainExaggeration\n    }\n\n    // vue-cesium 扩展补充\n    // vue-cesium extension\n    defined(camera) && setViewerCamera(viewer, camera)\n\n    const listener = getInstanceListener(vcInstance, 'update:camera')\n    listener &&\n      viewer.camera.changed.addEventListener(() => {\n        const cartographic = viewer.camera.positionCartographic\n        let cameraNew: VcCamera\n        if (hasOwn(camera.position, 'lng')) {\n          cameraNew = {\n            position: {\n              lng: CesiumMath.toDegrees(cartographic.longitude),\n              lat: CesiumMath.toDegrees(cartographic.latitude),\n              height: cartographic.height\n            },\n            heading: CesiumMath.toDegrees(viewer.camera.heading || 360),\n            pitch: CesiumMath.toDegrees(viewer.camera.pitch || -90),\n            roll: CesiumMath.toDegrees(viewer.camera.roll || 0)\n          }\n        } else {\n          cameraNew = {\n            position: {\n              x: viewer.camera.position.x,\n              y: viewer.camera.position.y,\n              z: viewer.camera.position.z\n            },\n            heading: viewer.camera.heading || 2 * Math.PI,\n            pitch: viewer.camera.pitch || -Math.PI / 2,\n            roll: viewer.camera.roll || 0\n          }\n        }\n\n        emit('update:camera', cameraNew)\n      })\n\n    if (defined(viewer.animation)) {\n      viewer.animation.viewModel.dateFormatter = localeDateTimeFormatter as Cesium.AnimationViewModel.DateFormatter\n      viewer.animation.viewModel.timeFormatter = localeTimeFormatter as Cesium.AnimationViewModel.TimeFormatter\n    }\n\n    if (defined(viewer.timeline)) {\n      viewer.timeline.makeLabel = time => {\n        return localeDateTimeFormatter(time)\n      }\n      viewer.timeline.zoomTo(viewer.clock.startTime, viewer.clock.stopTime)\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if ((props as any).logo) {\n        logger.warn(\"'logo' is deprecated. Use `showCredit` prop instead. \")\n      }\n    }\n\n    !props.showCredit && ((viewer.cesiumWidget.creditContainer as HTMLElement).style.display = 'none')\n\n    props.debugShowFramesPerSecond && (viewer.scene.debugShowFramesPerSecond = true)\n\n    viewer.viewerWidgetResized = viewer.viewerWidgetResized || new Event()\n    viewer.viewerWidgetResized.addEventListener(onViewerWidgetResized)\n    viewer.imageryLayers.layerAdded.addEventListener(onImageryLayerAdded)\n    eventsState.registerEvents(true)\n    const readyObj: VcReadyObject = {\n      Cesium,\n      viewer,\n      vm: vcInstance.proxy as VcComponentPublicInstance\n    }\n    if (globalThis.XE) {\n      Object.assign(readyObj, {\n        earth: vcInstance.earth\n      })\n    } else if (globalThis.mars3d) {\n      Object.assign(readyObj, {\n        map: vcInstance.map\n      })\n    } else if (globalThis.DC) {\n      Object.assign(readyObj, {\n        dcViewer: vcInstance.dcViewer\n      })\n    }\n\n    const listenerReady = getInstanceListener(vcInstance, 'ready')\n    listenerReady && emit('ready', readyObj)\n    vcMitt?.emit('ready', readyObj)\n    nextTick(() => {\n      viewer.resize()\n      onViewerWidgetResized({\n        type: 'viewer',\n        status: 'added',\n        target: viewer.container as HTMLElement\n      })\n      isReady.value = true\n    })\n\n    logger.debug('loaded-viewer')\n\n    Object.assign(vcInstance.proxy, {\n      cesiumObject: viewer\n    })\n    return readyObj\n  }\n\n  /**\n   * Viewer 销毁方法。\n   */\n  const unload = async function () {\n    if (!vcInstance.mounted) {\n      return false\n    }\n\n    logger.debug('viewer---unloading')\n    let unloadingResolve\n    globalConfig.value.__viewerUnloadingPromise = new Promise((resolve, reject) => {\n      unloadingResolve = resolve\n    })\n\n    // If the component has subcomponents, you need to remove the subcomponents first. 如果该组件带有子组件，需要先移除子组件。\n    for (let i = 0; i < vcInstance.children.length; i++) {\n      const vcChildCmp = vcInstance.children[i].proxy as VcComponentPublicInstance\n      await vcChildCmp.unload()\n    }\n\n    vcInstance.children.length = 0\n\n    const { viewer, earth, map, dcViewer } = vcInstance\n    if (globalThis.Cesium) {\n      viewer.imageryLayers.layerAdded.removeEventListener(onImageryLayerAdded)\n      eventsState.registerEvents(false)\n    }\n\n    viewer._vcPickScreenSpaceEventHandler && viewer._vcPickScreenSpaceEventHandler.destroy()\n    viewer._vcViewerScreenSpaceEventHandler && viewer._vcViewerScreenSpaceEventHandler.destroy()\n    viewer._vcPickScreenSpaceEventHandler = undefined!\n    viewer._vcViewerScreenSpaceEventHandler = undefined!\n\n    if (globalThis.XE) {\n      earth && earth.destroy()\n    } else if (globalThis.mars3d) {\n      map && map.destroy()\n    } else if (globalThis.DC) {\n      dcViewer && dcViewer.destroy()\n    } else {\n      viewer && viewer.destroy()\n    }\n\n    vcInstance.viewer = undefined!\n    vcInstance.mounted = false\n    const { removeCesiumScript } = props\n    if (removeCesiumScript && globalThis.Cesium) {\n      const scripts = document.getElementsByTagName('script')\n      const removeScripts: Array<HTMLScriptElement | HTMLLinkElement> = []\n      for (const script of scripts) {\n        script.src.indexOf('/Cesium.js') > -1 && removeScripts.push(script)\n        script.src.indexOf('/Workers/zlib.min.js') > -1 && removeScripts.push(script)\n        if (globalThis.XE) {\n          script.src.indexOf('/rxjs.umd.min.js') > -1 && removeScripts.push(script)\n          script.src.indexOf('/XbsjCesium.js') > -1 && removeScripts.push(script)\n          script.src.indexOf('/viewerCesiumNavigationMixin.js') > -1 && removeScripts.push(script)\n          script.src.indexOf('/XbsjEarth.js') > -1 && removeScripts.push(script)\n        }\n\n        loadLibs.includes(script.src) && !removeScripts.includes(script) && removeScripts.push(script)\n      }\n\n      const links = document.getElementsByTagName('link')\n      for (const link of links) {\n        link.href.includes('Widgets/widgets.css') && !removeScripts.includes(link) && removeScripts.push(link)\n        loadLibs.includes(link.href) && !removeScripts.includes(link) && removeScripts.push(link)\n      }\n      removeScripts.forEach(script => {\n        script.parentNode && script.parentNode.removeChild(script)\n      })\n      globalThis.Cesium && (globalThis.Cesium = undefined!)\n      globalThis.XbsjCesium && (globalThis.XbsjCesium = undefined)\n      globalThis.XbsjEarth && (globalThis.XbsjEarth = undefined)\n      globalThis.XE && (globalThis.XE = undefined)\n      globalThis.mars3d && (globalThis.mars3d = undefined)\n      globalThis.DC && (globalThis.DC = undefined)\n      globalThis.DcCore && (globalThis.DcCore = undefined)\n      globalConfig.value.__scriptPromise = undefined\n      loadLibs = []\n    }\n    const listener = getInstanceListener(vcInstance, 'destroyed')\n    listener && emit('destroyed', vcInstance)\n    logger.debug('viewer---unloaded')\n    unloadingResolve(true)\n    globalConfig.value.__viewerUnloadingPromise = undefined\n    isReady.value = false\n    return true\n  }\n\n  const reload = function () {\n    return unload().then(() => {\n      return load()\n    })\n  }\n\n  /**\n   * 动态引入 CesiumJS\n   */\n  const getCesiumScript = async function (): Promise<typeof Cesium> {\n    logger.debug('getCesiumScript')\n    if (!globalThis.Cesium) {\n      let cesiumPath = props.cesiumPath ? props.cesiumPath : globalConfig.value.cesiumPath\n      const dirName = dirname(cesiumPath!)\n      if (!cesiumPath?.includes('.js')) {\n        // 认为是mars3d\n        if (cesiumPath?.lastIndexOf('/') !== cesiumPath?.length - 1) {\n          cesiumPath += '/'\n        }\n        const libsConfig = getMars3dConfig(cesiumPath!)\n        const include = globalConfig.value.cfg?.include || 'mars3d'\n        const arrInclude = include.split(',')\n        const keys = {}\n        for (let i = 0, len = arrInclude.length; i < len; i++) {\n          const key = arrInclude[i]\n          if (keys[key]) {\n            //规避重复引入lib\n            continue\n          }\n          keys[key] = true\n          loadLibs.push(...libsConfig[key])\n        }\n      } else if (cesiumPath.includes('dc.base')) {\n        loadLibs.push(cesiumPath)\n        loadLibs.push(cesiumPath.replace('dc.base', 'dc.core'))\n        loadLibs.push(cesiumPath.replace('dc.base', 'dc.core').replace('.js', '.css'))\n      } else if (cesiumPath.includes('/XbsjEarth.js')) {\n        loadLibs.push(cesiumPath)\n      } else {\n        loadLibs.push(cesiumPath)\n        loadLibs.push(`${dirName}/Widgets/widgets.css`)\n      }\n\n      const secondaryLibs = loadLibs\n      if (!cesiumPath?.includes('.js')) {\n        // mars3d 必须要等 Cesium 先初始化\n        const primaryLib = loadLibs.find(v => v.includes('Cesium.js'))\n        await loadScript(primaryLib)\n        secondaryLibs.splice(secondaryLibs.indexOf(primaryLib!), 1)\n      }\n\n      const scriptLoadPromises: Array<Promise<unknown>> = []\n      secondaryLibs.forEach(url => {\n        const cssExpr = new RegExp('\\\\.css')\n        if (cssExpr.test(url)) {\n          scriptLoadPromises.push(loadLink(url))\n        } else {\n          scriptLoadPromises.push(loadScript(url))\n        }\n      })\n\n      return Promise.all(scriptLoadPromises).then(() => {\n        if (globalThis.Cesium) {\n          const listener = getInstanceListener(vcInstance, 'cesiumReady')\n          listener && emit('cesiumReady', globalThis.Cesium)\n          return globalThis.Cesium\n        } else if (globalThis.XE) {\n          // 兼容 cesiumlab earthsdk\n          return globalThis.XE.ready().then(() => {\n            // resolve(globalThis.Cesium)\n            const listener = getInstanceListener(vcInstance, 'cesiumReady')\n            listener && emit('cesiumReady', globalThis.Cesium)\n            return globalThis.Cesium\n          })\n        } else if (globalThis.DC) {\n          // 兼容  dc-sdk\n          globalThis.DC.use(globalThis.DcCore.default || globalThis.DcCore)\n          globalThis.DC.baseUrl = `${dirName}/resources/`\n          globalThis.DC.ready(() => {\n            globalThis.Cesium = DC.Namespace.Cesium\n\n            const listener = getInstanceListener(vcInstance, 'cesiumReady')\n            listener && emit('cesiumReady', globalThis.DC)\n            return globalThis.Cesium\n          })\n          return globalThis.Cesium\n        } else {\n          reject(new Error('VueCesium ERROR: ' + 'Error loading CesiumJS!'))\n        }\n      })\n    } else {\n      return Promise.resolve(globalThis.Cesium)\n    }\n  }\n\n  const loadScript = src => {\n    const $script = document.createElement('script')\n    $script.async = true\n    $script.src = src\n    document.body.appendChild($script)\n    return new Promise((resolve, reject) => {\n      $script.onload = () => {\n        resolve(true)\n      }\n    })\n  }\n\n  const loadLink = src => {\n    const $link = document.createElement('link')\n    $link.rel = 'stylesheet'\n    $link.href = src\n    document.head.appendChild($link)\n    return new Promise((resolve, reject) => {\n      $link.onload = () => {\n        resolve(true)\n      }\n    })\n  }\n\n  const onViewerWidgetResized = e => {\n    const { viewer } = vcInstance\n    const toolbarElement = viewer._toolbar as HTMLElement\n    if (\n      toolbarElement !== void 0 &&\n      getComputedStyle(toolbarElement).visibility !== 'hidden' &&\n      getComputedStyle(toolbarElement).display !== 'none'\n    ) {\n      ;(layout.toolbarContainerRC as any) = toolbarElement.getBoundingClientRect()!\n    } else {\n      layout.toolbarContainerRC = undefined\n    }\n\n    const bottomContainer = viewer.bottomContainer as HTMLElement\n    if (\n      bottomContainer !== void 0 &&\n      getComputedStyle(bottomContainer).visibility !== 'hidden' &&\n      getComputedStyle(bottomContainer).display !== 'none'\n    ) {\n      ;(layout.bottomContainerRC as any) = bottomContainer.getBoundingClientRect()\n    } else {\n      layout.bottomContainerRC = undefined\n    }\n\n    const timelineContainer = viewer.timeline?.container as HTMLElement\n    if (\n      timelineContainer !== void 0 &&\n      getComputedStyle(timelineContainer).visibility !== 'hidden' &&\n      getComputedStyle(timelineContainer).display !== 'none'\n    ) {\n      ;(layout.timelineContainerRC as any) = timelineContainer.getBoundingClientRect()\n    } else {\n      layout.timelineContainerRC = undefined\n    }\n\n    const animationContainer = viewer.animation?.container as HTMLElement\n    if (\n      animationContainer !== void 0 &&\n      getComputedStyle(animationContainer).visibility !== 'hidden' &&\n      getComputedStyle(animationContainer).display !== 'none'\n    ) {\n      ;(layout.animationContainerRC as any) = animationContainer.getBoundingClientRect()\n    } else {\n      layout.animationContainerRC = undefined\n    }\n\n    viewer.resize()\n    const listener = getInstanceListener(vcInstance, 'viewerWidgetResized')\n    listener && emit('viewerWidgetResized', e)\n  }\n\n  /**\n   * 添加影像图层事件回调方法，在此维护影像图层相对顺序。\n   * @param layer 添加的图层。\n   */\n  const onImageryLayerAdded = (layer: Cesium.ImageryLayer) => {\n    const viewer = vcInstance.viewer as Cesium.Viewer\n    const { autoSortImageryLayers } = props\n\n    if (viewer.baseLayerPicker) {\n      viewer.imageryLayers.raiseToTop(layer)\n    }\n    const { defined } = Cesium\n    if (autoSortImageryLayers) {\n      layer.sortOrder = defined(layer.sortOrder) ? layer.sortOrder : 9999\n      viewer.imageryLayers._layers.sort((a: Cesium.ImageryLayer, b: Cesium.ImageryLayer) => a.sortOrder! - b.sortOrder!)\n      viewer.imageryLayers._update()\n    }\n  }\n  /**\n   * 本地日期和时间格式化函数。\n   * @param date\n   * @param viewModel\n   * @param ignoredate\n   */\n  const localeDateTimeFormatter = function (date: Cesium.JulianDate, viewModel?: Cesium.AnimationViewModel, ignoredate?: boolean): string {\n    const { JulianDate } = Cesium\n    let TZCode\n\n    if (props.UTCOffset) {\n      date = JulianDate.addMinutes(date, props.UTCOffset, new JulianDate())\n      const offset = new Date().getTimezoneOffset() - props.UTCOffset\n      TZCode = offset === 0 ? 'UTC' : 'UTC' + '+' + -(offset / 60)\n    } else {\n      TZCode = new Date().getTimezoneOffset() === 0 ? 'UTC' : 'UTC' + '+' + -(new Date().getTimezoneOffset() / 60)\n    }\n    const jsDate = JulianDate.toDate(date)\n    const timeString: string = jsDate\n      .toLocaleString(t('name'), {\n        hour: 'numeric',\n        minute: 'numeric',\n        second: 'numeric',\n        hour12: false\n      })\n      .replace(/,/g, '')\n    const dateString: string = jsDate\n      .toLocaleString(t('name'), {\n        year: 'numeric',\n        month: 'short',\n        day: 'numeric'\n      })\n      .replace(/,/g, '')\n\n    if (!ignoredate && (viewModel || jsDate.getHours() + jsDate.getMinutes() === 0)) {\n      return dateString\n    }\n\n    props.TZCode && (TZCode = props.TZCode)\n    return ignoredate ? `${timeString} ${TZCode}` : `${dateString} ${timeString} ${TZCode}`\n  }\n\n  /**\n   * 本地时间格式化函数。\n   * @param time\n   * @param viewModel\n   */\n  const localeTimeFormatter = function (time: Cesium.JulianDate, viewModel: Cesium.AnimationViewModel): string {\n    return localeDateTimeFormatter(time, viewModel, true)\n  }\n\n  const onTimelineScrubfunction = function (e) {\n    const clock = e.clock\n    clock.currentTime = e.timeJulian\n    clock.shouldAnimate = false\n  }\n\n  const enableVRUI = function (viewer, enabled) {\n    const geocoder = viewer._geocoder\n    const homeButton = viewer._homeButton\n    const sceneModePicker = viewer._sceneModePicker\n    const projectionPicker = viewer._projectionPicker\n    const baseLayerPicker = viewer._baseLayerPicker\n    const animation = viewer._animation\n    const timeline = viewer._timeline\n    const fullscreenButton = viewer._fullscreenButton\n    const infoBox = viewer._infoBox\n    const selectionIndicator = viewer._selectionIndicator\n    const visibility = enabled ? 'hidden' : 'visible'\n    const { defined } = Cesium\n    if (defined(geocoder)) {\n      geocoder.container.style.visibility = visibility\n    }\n    if (defined(homeButton)) {\n      homeButton.container.style.visibility = visibility\n    }\n    if (defined(sceneModePicker)) {\n      sceneModePicker.container.style.visibility = visibility\n    }\n    if (defined(projectionPicker)) {\n      projectionPicker.container.style.visibility = visibility\n    }\n    if (defined(baseLayerPicker)) {\n      baseLayerPicker.container.style.visibility = visibility\n    }\n    if (defined(animation)) {\n      animation.container.style.visibility = visibility\n    }\n    if (defined(timeline)) {\n      timeline.container.style.visibility = visibility\n    }\n    if (defined(fullscreenButton) && fullscreenButton.viewModel.isFullscreenEnabled) {\n      fullscreenButton.container.style.visibility = visibility\n    }\n    if (defined(infoBox)) {\n      infoBox.container.style.visibility = visibility\n    }\n    if (defined(selectionIndicator)) {\n      selectionIndicator.container.style.visibility = visibility\n    }\n    if (viewer._container) {\n      const right = enabled || !defined(fullscreenButton) ? 0 : fullscreenButton.container.clientWidth\n      viewer._vrButton.container.style.right = right + 'px'\n      viewer.forceResize()\n    }\n  }\n\n  const resizeToolbar = function (parent, child) {\n    Array.prototype.slice.call(parent.children).forEach(element => {\n      switch (element.className) {\n        case 'cesium-viewer-geocoderContainer':\n          element.customIndex = 1\n          break\n        case 'cesium-button cesium-toolbar-button cesium-home-button':\n          element.customIndex = 2\n          break\n        case 'cesium-sceneModePicker-wrapper cesium-toolbar-button':\n          element.customIndex = 3\n          break\n        case 'cesium-projectionPicker-wrapper cesium-toolbar-button':\n          element.customIndex = 4\n          break\n        case 'cesium-button cesium-toolbar-button':\n        case 'cesium-baseLayerPicker-dropDown':\n          element.customIndex = 5\n          break\n        case 'cesium-navigationHelpButton-wrapper':\n          element.customIndex = 6\n          break\n      }\n    })\n    const arr: any[] = []\n    Array.prototype.slice.call(parent.children).forEach(element => {\n      arr.push(element)\n    })\n    arr.sort(function (a, b) {\n      return a.customIndex - b.customIndex\n    })\n    for (let i = 0; i < arr.length; i++) {\n      parent.appendChild(arr[i])\n    }\n  }\n\n  const getServices = function () {\n    return mergeDescriptors(\n      {},\n      {\n        get layout() {\n          return layout\n        },\n        get vm() {\n          return vcInstance\n        },\n        get Cesium() {\n          return vcInstance.Cesium\n        },\n        get viewer(): Cesium.Viewer {\n          return vcInstance.viewer\n        },\n        get dataSources(): Cesium.DataSourceCollection {\n          return vcInstance.viewer?.dataSources\n        },\n        get entities() {\n          return vcInstance.viewer?.entities\n        },\n        get imageryLayers() {\n          return vcInstance.viewer?.imageryLayers\n        },\n        get primitives() {\n          return vcInstance.viewer?.scene.primitives\n        },\n        get groundPrimitives() {\n          return vcInstance.viewer?.scene.groundPrimitives\n        },\n        get postProcessStages() {\n          return vcInstance.viewer?.postProcessStages\n        },\n        get viewerCreatePromise() {\n          return createPromise\n        }\n      }\n    )\n  }\n\n  Object.defineProperties(vcInstance, {\n    cesiumObject: {\n      enumerable: true,\n      get: () => vcInstance.viewer\n    }\n  })\n\n  // lifecycle\n  onMounted(async () => {\n    try {\n      logger.debug('viewer - onMounted')\n      await globalConfig.value?.__viewerUnloadingPromise\n      createResolve(load())\n    } catch (e) {\n      reject(e)\n    }\n  })\n\n  onUnmounted(() => {\n    logger.debug('viewer - onUnmounted')\n    unload().then(() => {\n      vcMitt.all.clear()\n    })\n  })\n\n  return {\n    isReady,\n    load,\n    unload,\n    reload,\n    getServices,\n    viewerRef,\n    createPromise\n  }\n}\n\n// export type VcViewerProps = ExtractPropTypes<typeof viewerProps>\nexport type VcViewerProps = {\n  /**\n   * If set to false, the Animation widget will not be created.\n   * Default value: false\n   */\n  animation?: boolean\n  /**\n   * If set to false, the BaseLayerPicker widget will not be created.\n   * Default value: false\n   */\n  baseLayerPicker?: boolean\n  /**\n   * \tIf set to false, the FullscreenButton widget will not be created.\n   * Default value: false\n   */\n  fullscreenButton?: boolean\n  /**\n   * If set to true, the VRButton widget will be created.\n   * Default value: false\n   */\n  vrButton?: boolean\n  /**\n   * If set to false, the Geocoder widget will not be created.\n   * Default value: false\n   */\n  geocoder?: boolean | Array<Cesium.GeocoderService>\n  /**\n   * If set to false, the HomeButton widget will not be created.\n   * Default value: false\n   */\n  homeButton?: boolean\n  /**\n   * If set to false, the InfoBox widget will not be created.\n   * Default value: false\n   */\n  infoBox?: boolean\n  /**\n   * If set to false, the SceneModePicker widget will not be created.\n   * Default value: false\n   */\n  sceneModePicker?: boolean\n  /**\n   * If set to false, the SelectionIndicator widget will not be created.\n   * Default value: false\n   */\n  selectionIndicator?: boolean\n  /**\n   * If set to false, the Timeline widget will not be created.\n   * Default value: false\n   */\n  timeline?: boolean\n  /**\n   * If set to false, the navigation help button will not be created.\n   * Default value: false\n   */\n  navigationHelpButton?: boolean\n  /**\n   * True if the navigation instructions should initially be visible, or false if the should not be shown until the user explicitly clicks the button.\n   * Default value: false\n   */\n  navigationInstructionsInitiallyVisible?: boolean\n  /**\n   * When true, each geometry instance will only be rendered in 3D to save GPU memory.\n   * Default value: false\n   */\n  scene3DOnly?: boolean\n  /**\n   * true if the clock should attempt to advance simulation time by default, false otherwise. This option takes precedence over setting clockViewModel.\n   * Default value: false\n   */\n  shouldAnimate?: boolean\n  /**\n   * The clock view model to use to control current time.\n   */\n  clockViewModel?: Cesium.ClockViewModel\n  /**\n   * The view model for the current base imagery layer, if not supplied the first available base layer is used. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  selectedImageryProviderViewModel?: Cesium.ProviderViewModel\n  /**\n   * The array of ProviderViewModels to be selectable from the BaseLayerPicker. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  imageryProviderViewModels?: Array<Cesium.ProviderViewModel>\n  /**\n   * The view model for the current base terrain layer, if not supplied the first available base layer is used. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  selectedTerrainProviderViewModel?: Cesium.ProviderViewModel\n  /**\n   * The array of ProviderViewModels to be selectable from the BaseLayerPicker. This value is only valid if `baseLayerPicker` is set to true.\n   */\n  terrainProviderViewModels?: Array<Cesium.ProviderViewModel>\n  /**\n   * The imagery provider to use. This value is only valid if `baseLayerPicker` is set to false.\n   */\n  imageryProvider?: Cesium.ImageryProvider\n  /**\n   * The terrain provider to use\n   */\n  terrainProvider?: Cesium.TerrainProvider\n  /**\n   * The skybox used to render the stars. When undefined, the default stars are used. If set to false, no skyBox, Sun, or Moon will be added.\n   * Default value: undefined\n   */\n  skyBox?: Cesium.SkyBox | false\n  /**\n   * Blue sky, and the glow around the Earth's limb. Set to false to turn it off.\n   */\n  skyAtmosphere?: Cesium.SkyAtmosphere | false\n  /**\n   * The element or id to be placed into fullscreen mode when the full screen button is pressed.\n   */\n  fullscreenElement?: string | Element\n  /**\n   * True if this widget should control the render loop, false otherwise.\n   * Default value: true\n   */\n  useDefaultRenderLoop?: boolean\n  /**\n   * The target frame rate when using the default render loop.\n   */\n  targetFrameRate?: number\n  /**\n   * If true, this widget will automatically display an HTML panel to the user containing the error, if a render loop error occurs.\n   * Default value: true\n   */\n  showRenderLoopErrors?: boolean\n  /**\n   * If true, render at the browser's recommended resolution and ignore window.devicePixelRatio.\n   * Default value: true\n   */\n  useBrowserRecommendedResolution?: boolean\n  /**\n   * If true, this widget will automatically track the clock settings of newly added DataSources, updating if the DataSource's clock changes. Set this to false if you want to configure the clock independently.\n   * Default value: true\n   */\n  automaticallyTrackDataSourceClocks?: boolean\n  /**\n   * Context and WebGL creation properties corresponding to options passed to Scene.\n   */\n  contextOptions?: VcContextOptions\n  /**\n   * The initial scene mode.\n   * Default value: 3\n   */\n  sceneMode?: Cesium.SceneMode\n  /**\n   * The map projection to use in 2D and Columbus View modes.\n   */\n  mapProjection?: Cesium.MapProjection\n  /**\n   * The globe to use in the scene. If set to false, no globe will be added.\n   */\n  globe?: Cesium.Globe | false\n  /**\n   * If true and the configuration supports it, use order independent translucency.\n   * Default value: true\n   */\n  orderIndependentTranslucency?: boolean\n  /**\n   * The DOM element or ID that will contain the CreditDisplay. If not specified, the credits are added to the bottom of the widget itself.\n   */\n  creditContainer?: string | Element\n  /**\n   * The DOM element or ID that will contain the credit pop up created by the CreditDisplay. If not specified, it will appear over the widget itself.\n   */\n  creditViewport?: string | Element\n  /**\n   * The collection of data sources visualized by the widget. If this parameter is provided, the instance is assumed to be owned by the caller and will not be destroyed when the viewer is destroyed.\n   */\n  dataSources?: Cesium.DataSourceCollection\n  /**\n   * A scalar used to exaggerate the terrain. Defaults to 1.0 (no exaggeration). A value of 2.0 scales the terrain by 2x. A value of 0.0 makes the terrain completely flat. Note that terrain exaggeration will not modify any other primitive as they are positioned relative to the ellipsoid.\n   * Default value: 1.0\n   */\n  terrainExaggeration?: number\n  /**\n   * Determines if shadows are cast by light sources.\n   * Default value: false\n   */\n  shadows?: boolean\n  /**\n   * Determines if the terrain casts or receives shadows from light sources.\n   * Default value: 3\n   */\n  terrainShadows?: Cesium.ShadowMode\n  /**\n   * Determines if the 2D map is rotatable or can be scrolled infinitely in the horizontal direction.\n   * Default value: 1\n   */\n  mapMode2D?: Cesium.MapMode2D\n  /**\n   * If set to true, the ProjectionPicker widget will be created.\n   * Default value: false\n   */\n  projectionPicker?: boolean\n  /**\n   * If true, rendering a frame will only occur when needed as determined by changes within the scene. Enabling reduces the CPU/GPU usage of your application and uses less battery on mobile, but requires using Scene#requestRender to render a new frame explicitly in this mode. This will be necessary in many cases after making changes to the scene in other parts of the API. See Improving Performance with Explicit Rendering.\n   * Default value: false\n   */\n  requestRenderMode?: boolean\n  /**\n   * If requestRenderMode is true, this value defines the maximum change in simulation time allowed before a render is requested. See Improving Performance with Explicit Rendering.\n   * Default value: 0.0\n   */\n  maximumRenderTimeChange?: number\n  /**\n   * Specify the web service address of the CesiumJS library used to initialize the `vc-viewer` component.\n   */\n  cesiumPath?: string\n  /**\n   * Specify the default [Cesium ion](https://cesium.com/ion/) access token.\n   */\n  accessToken?: string\n  /**\n   * Specify the viewer camera\n   */\n  camera?: VcCamera\n  /**\n   * Specify whether to display the default Logo and loading data copyright information.\n   * Default value: true\n   */\n  showCredit?: boolean\n  /**\n   * Specify whether to display frames per second and time between frames.This property is for debugging only; it is not for production use.\n   * Default value: false\n   */\n  debugShowFramesPerSecond?: boolean\n  /**\n   * Specify whether to display navigation control. for supermap webgl iclient only.\n   * Default value: false\n   */\n  navigation?: boolean\n  /**\n   * The time zone code used for timeline date formatting. By default, it is formatted as local time. If you want to display it as UTC universal time, set `UTCoffset` to `new Date().getTimezoneOffset()`\n   */\n  TZCode?: string\n  /**\n   * The time difference (minutes) between local time and UTC time.\n   */\n  UTCOffset?: number\n  /**\n   * Specify whether to remove the CesiumJS script tag when `vc-viewer` is destroyed.\n   * Default value: true\n   */\n  removeCesiumScript?: boolean\n  /**\n   * Specify whether to automatically sort imageLayers according to the layer's `sortOrder` property when adding imagelayer.\n   * Default value: true\n   */\n  autoSortImageryLayers?: boolean\n  /**\n   * Specifiy whether to trigger mouse events.\n   * Default value: true\n   */\n  enableMouseEvent?: boolean\n  /**\n   * Specify whether to show the skeleton background during `vc-viewer` initialization.\n   * Default value: true\n   */\n  skeleton?: boolean | VcSkeletonProps\n  /**\n   * Triggers before the VcViewer is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcViewer is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the VcViewer is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when CesiumJS is successfully loaded.\n   */\n  onCesiumReady?: (payload: typeof Cesium) => void\n  /**\n   * Triggers when a component changes on vc-viewer.\n   */\n  onViewerWidgetResized?: (payload: ViewerWidgetResizedEvent) => void\n  /**\n   * Triggers when the selected entity changes.\n   */\n  onSelectedEntityChanged?: (entity: Cesium.Entity) => void\n  /**\n   * Triggers when the tracked entity changes.\n   */\n  onTrackedEntityChanged?: (entity: Cesium.Entity) => void\n  /**\n   * Triggers when a layer is added to the collection. Event handlers are passed the layer that was added and the index at which it was added.\n   */\n  onLayerAdded?: (imageryLayer: Cesium.ImageryLayer, index: number) => void\n  /**\n   * Triggers when a layer changes position in the collection. Event handlers are passed the layer that was moved, its new index after the move, and its old index prior to the move.\n   */\n  onLayerMoved?: (imageryLayer: Cesium.ImageryLayer, newIndex: number, oldIndex: number) => void\n  /**\n   * Triggers when a layer is removed from the collection. Event handlers are passed the layer that was removed and the index from which it was removed.\n   */\n  onLayerRemoved?: (imageryLayer: Cesium.ImageryLayer, index: number) => void\n  /**\n   * Triggers when a layer is shown or hidden by setting the ImageryLayer#show property. Event handlers are passed a reference to this layer, the index of the layer in the collection, and a flag that is true if the layer is now shown or false if it is now hidden.\n   */\n  onLayerShownOrHidden?: (imageryLayer: Cesium.ImageryLayer, index: number, show: boolean) => void\n  /**\n   * Triggers when a data source is added to the collection. Event handlers are passed the data source that was added.\n   */\n  onDataSourceAdded?: (collection: Cesium.DataSourceCollection, dataSource: VcDatasource) => void\n  /**\n   * Triggers when a data source changes position in the collection. Event handlers are passed the data source that was moved, its new index after the move, and its old index prior to the move.\n   */\n  onDataSourceMoved?: (dataSource: VcDatasource, newIndex: number, oldIndex: number) => void\n  /**\n   * Triggers when a data source is removed from the collection. Event handlers are passed the data source that was removed.\n   */\n  onDataSourceRemoved?: (collection: Cesium.DataSourceCollection, dataSource: VcDatasource) => void\n  /**\n   * Triggers when when entities are added or removed from the collection. The generated event is a EntityCollection.collectionChangedEventCallback.\n   */\n  onCollectionChanged?: (\n    collection: Cesium.EntityCollection,\n    addedArray: Array<Cesium.Entity>,\n    removedArray: Array<Cesium.Entity>,\n    changedArray: Array<Cesium.Entity>\n  ) => void\n  /**\n   * Triggers at the completion of a scene transition.\n   */\n  onMorphComplete?: (transitioner: any, preceneModeMode: Cesium.SceneMode, sceneMode: Cesium.SceneMode, wasMorphing: boolean) => void\n  /**\n   * Triggers at the beginning of a scene transition.\n   */\n  onMorphStart?: (transitioner: any, preceneModeMode: Cesium.SceneMode, sceneMode: Cesium.SceneMode, wasMorphing: boolean) => void\n  /**\n   * Triggers immediately after the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPostRender?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers after the scene is updated and immediately before the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPreRender?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers immediately after the scene is updated and before the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPostUpdate?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers before the scene is updated or rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.\n   */\n  onPreUpdate?: (scene: Cesium.Scene, time: Cesium.JulianDate) => void\n  /**\n   * Triggers when an error is thrown inside the render function. The Scene instance and the thrown error are the only two parameters passed to the event handler. By default, errors are not rethrown after this event is raised, but that can be changed by setting the rethrowRenderErrors property.\n   */\n  onRenderError?: (scene: Cesium.Scene, error: any) => void\n  /**\n   * Triggers when the terrain provider is changed.\n   */\n  onTerrainProviderChanged?: (provider: VcTerrainProvider) => void\n  /**\n   * Triggers when the camera has changed by percentageChanged.\n   */\n  onChanged?: (percent: number) => void\n  /**\n   * Triggers when the camera has stopped moving.\n   */\n  onMoveEnd?: () => void\n  /**\n   * Triggers when the camera starts to move.\n   */\n  onMoveStart?: () => void\n  /**\n   * Triggers when Clock#stopTime is reached.\n   */\n  onOnStop?: (clock: Cesium.Clock) => void\n  /**\n   * Triggers when Clock#tick is called.\n   */\n  onOnTick?: (clock: Cesium.Clock) => void\n  /**\n   * Triggers when the terrain provider encounters an asynchronous error. By subscribing to the event, you will be notified of the error and can potentially recover from it. Event listeners are passed an instance of TileProviderError.\n   */\n  onErrorEvent?: (tileProviderError: any) => void\n  /**\n   * Triggers when the user clicks the camera icon.\n   */\n  onCameraClicked?: (viewModel: Cesium.InfoBoxViewModel) => void\n  /**\n   * Triggers when the user closes the info box.\n   */\n  onCloseClicked?: (viewModel: Cesium.InfoBoxViewModel) => void\n  /**\n   * Triggers when the mouse left button clicked.\n   */\n  onLeftClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggered when the mouse left button double clicked.\n   */\n  onLeftDoubleClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggered when the mouse left button down.\n   */\n  onLeftDown?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggered when the mouse left button up.\n   */\n  onLeftUp?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse middle button clicked.\n   */\n  onMiddleClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse middle button down.\n   */\n  onMiddleDown?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse middle button up.\n   */\n  onMiddleUp?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse move.\n   */\n  onMouseMove?: (mouseClickEvent: { startPosition: Cesium.Cartesian2; endPosition: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the start of a two-finger on a touch surface.\n   */\n  onPinchStart?: (touch2StartEvent: { position1: Cesium.Cartesian2; position2: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when a change of a two-finger on a touch surface.\n   */\n  onPinchMove?: (touchPinchMovementEvent: {\n    distance: {\n      startPosition: Cesium.Cartesian2\n      endPosition: Cesium.Cartesian2\n    }\n    angleAndHeight: {\n      startPosition: Cesium.Cartesian2\n      endPosition: Cesium.Cartesian2\n    }\n  }) => void\n  /**\n   * Triggers when end of a two-finger on a touch surface.\n   */\n  onPinchEnd?: () => void\n  /**\n   * Triggers when the mouse right click.\n   */\n  onRightClick?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse right button down.\n   */\n  onRightDown?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse right button up.\n   */\n  onRightUp?: (mouseClickEvent: { position: Cesium.Cartesian2 }) => void\n  /**\n   * Triggers when the mouse wheel.\n   */\n  onWheel?: (delta: number) => void\n  /**\n   * Triggers when an imagery layer is added, shown, hidden, moved, or removed.\n   */\n  onImageryLayersUpdatedEvent?: () => void\n  /**\n   * \tTriggers when the length of the tile load queue has changed since the last render frame. When the load queue is empty, all terrain and imagery for the current view have been loaded. The event passes the new length of the tile load queue.\n   */\n  onTileLoadProgressEvent?: (length: number) => void\n}\n\nexport interface VcViewerSlots {\n  /**\n   * Default slot content of the component\n   */\n  default: () => VNode[]\n}\n"],"names":[],"mappings":"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"}