UNPKG

cesium-od-vue3

Version:
2 lines (1 loc) 1.97 kB
"use strict";const i=require("vue"),k=require("cesium"),C=require("../share/component.js"),g=require("lodash-es");function v(e){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(s,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return s.default=e,Object.freeze(s)}const a=v(k),D=i.defineComponent({__name:"LayerMask",props:{holes:{default:()=>[]},maskColor:{default:"rgba(0, 0, 0, 0.5)"},options:{default:()=>({})},name:{default:"layerMask"},maskRange:{default:()=>[]},holeLineColor:{default:"#6dcdeb"},showHoleBorder:{type:Boolean,default:!0},holesBorderOptions:{default:()=>({})}},setup(e,{expose:s}){const r=i.inject(C.cesiumViewerInjectKey);if(!(r!=null&&r.value))throw TypeError("viewer inject error!");const o=r.value;let u=i.shallowRef();const p=new a.ColorMaterialProperty(a.Color.fromCssColorString(e.maskColor)),l=new a.CustomDataSource("holeLines");o.dataSources.add(l);function d(n){return n.map(t=>({positions:a.Cartesian3.fromDegreesArray(t.positions.flat()),holes:d((t==null?void 0:t.holes)??[])}))}function f(n){n.forEach(t=>{l.entities.add(g.merge({polyline:{positions:t.positions,material:a.Color.fromCssColorString(e.holeLineColor)}},C.holesDefaultBorderOptions,e.holesBorderOptions)),f(t.holes??[])})}function h(){l.entities.removeAll()}function c(){const n=a.Cartesian3.fromDegreesArray(e.maskRange.flat()),t=d(e.holes);e.showHoleBorder&&f(t),u.value=o.entities.add(g.merge({name:e.name,polygon:{hierarchy:{positions:n,holes:t},material:p,height:0,extrudedHeight:0,outline:!1}},e.options))}c();function m(){!o||o!=null&&o.isDestroyed()||(y(),o.dataSources.remove(l))}function y(){u.value&&o.entities.remove(u.value)}return i.watch(()=>e.holes,()=>{y(),h(),c()},{deep:!0}),i.onUnmounted(()=>{m()}),s({layerMaskEntiy:u,holeLineDataSource:l,clearHoleBorder:h,destoryEntity:m,updateLayerMask:c}),(n,t)=>null}});module.exports=D;