UNPKG

cesium-od-vue3

Version:
2 lines (1 loc) 2.13 kB
"use strict";const t=require("vue"),w=require("cesium");require("cesium/Build/Cesium/Widgets/widgets.css");const k=require("lodash-es"),g=require("../share/component.js"),E=require("../share/screen.js");function j(r){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const o in r)if(o!=="default"){const a=Object.getOwnPropertyDescriptor(r,o);Object.defineProperty(i,o,a.get?a:{enumerable:!0,get:()=>r[o]})}}return i.default=r,Object.freeze(i)}const q=j(w),O={class:"cesium-container"},A={ref:"cesiumContainer",class:"cesium-container__core"},D=t.defineComponent({__name:"CesiumViewer",props:{options:{default:()=>({})},screenEvents:{default:()=>[2]}},emits:["ready","handler"],setup(r,{expose:i,emit:o}){const a=t.ref(!1),e=t.shallowRef(),_=t.useTemplateRef("cesiumContainer"),h={timeline:!1,animation:!1,baseLayerPicker:!1},d=o;t.onMounted(()=>{e.value=new q.Viewer(_.value,k.merge({},h,r.options)),t.provide(g.cesiumViewerInjectKey,e),a.value=!0,C(),d("ready",e.value)});function C(){r.screenEvents.forEach(n=>{var s;(s=e.value)==null||s.screenSpaceEventHandler.setInputAction(async function(c){const u=await E.CoordinateUtils.screenToLonLat(e.value,c.position);d("handler",{type:n,event:c,position:u,pickedObject:E.CoordinateUtils.pickRay(e.value,c.position)})},n)})}function l(){var n;return(n=e==null?void 0:e.value)==null?void 0:n.isDestroyed()}function f(){var n,s,c,u,v;l()||((s=(n=e.value)==null?void 0:n.entities)==null||s.removeAll(),((u=(c=e.value)==null?void 0:c.screenSpaceEventHandler)==null?void 0:u.isDestroyed())===!1&&(r.screenEvents.forEach(S=>{var p,y;try{(y=(p=e.value)==null?void 0:p.screenSpaceEventHandler)==null||y.removeInputAction(S)}catch(b){window.console.error(b)}}),(v=e.value)==null||v.screenSpaceEventHandler.destroy()))}function m(){var n;l()||(n=e.value)==null||n.destroy()}return t.onBeforeUnmount(()=>{f(),m()}),i({viewer:e,isDestroyMap:l,removeAll:f,destroy:m}),(n,s)=>(t.openBlock(),t.createElementBlock("div",O,[t.createElementVNode("div",A,null,512),a.value?t.renderSlot(n.$slots,"default",{key:0},void 0,!0):t.createCommentVNode("",!0)]))}});module.exports=D;