vesium
Version:
Vue component and composition-api library for Cesium.
2 lines • 20.1 kB
JavaScript
import{computedAsync as e,promiseTimeout as t,refThrottled as n,tryOnScopeDispose as r,useElementBounding as i,useElementSize as a,useMutationObserver as o,watchImmediate as s,watchThrottled as c}from"@vueuse/core";import{CallbackProperty as l,Cartesian2 as u,Cartesian3 as d,Cartographic as f,ConstantProperty as p,Ellipsoid as m,EllipsoidGeodesic as h,Material as g,Math as _,ScreenSpaceEventHandler as v,ScreenSpaceEventType as y,Viewer as b,defined as x}from"cesium";import{computed as S,getCurrentScope as C,inject as ee,markRaw as te,nextTick as ne,provide as re,readonly as ie,ref as w,shallowReactive as ae,shallowReadonly as oe,shallowRef as T,toRaw as se,toRef as E,toValue as D,watch as O,watchEffect as k}from"vue";const A=Symbol(`CREATE_VIEWER_INJECTION_KEY`),j=new WeakMap;function ce(...e){let t=T(),n=oe(t);re(A,n);let i=C();i&&j.set(i,n);let a=S(()=>t.value?.canvas);return o(document?.body,()=>{a.value&&!document?.body.contains(a.value)&&(t.value=void 0)},{childList:!0,subtree:!0}),k(n=>{let[r,i]=e,a=se(D(r));if(a instanceof b)t.value=te(a);else if(a){let e=a,r=i;t.value=new b(e,r),n(()=>!t.value?.isDestroyed()&&t.value?.destroy())}else t.value=void 0}),r(()=>{t.value=void 0}),S(()=>t.value?.isDestroyed()?void 0:t.value)}function le(e,t){let n=new Set(t),r=e.filter(e=>!n.has(e)),i=new Set(e),a=t?.filter(e=>!i.has(e))??[];return{added:r,removed:a}}function ue(e,t,n=`auto`){if(n===`pickPosition`)return t.pickPosition(e);if(n===`globePick`){let n=t.camera.getPickRay(e);return n&&t.globe.pick(n,t)}else{if(t.globe.depthTestAgainstTerrain)return t.pickPosition(e);let n=t.pickPosition(e),r=t.camera.getPickRay(e),i=r&&t.globe.pick(r,t);if(!n)return i;let a=(n&&m.WGS84.cartesianToCartographic(n).height)??0,o=(i&&m.WGS84.cartesianToCartographic(i).height)??0;return a<o?n:i}}function M(e,t){return t.cartesianToCanvasCoordinates(e)}const N=Object.prototype.toString;function P(e){return e!==void 0}function de(e){return typeof e==`boolean`}function F(e){return typeof e==`function`}function fe(e){return typeof e==`number`}function pe(e){return typeof e==`string`}function me(e){return N.call(e)===`[object Object]`}function he(e){return typeof window<`u`&&N.call(e)===`[object Window]`}function I(e){return!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`}function ge(e){return!!(e&&e.nodeName&&e.nodeType===1)}const _e=Array.isArray;function ve(e){let t=/^\s*data:([a-z]+\/[\d+.a-z-]+(;[a-z-]+=[\da-z-]+)?)?(;base64)?,([\s\w!$%&'()*+,./:;=?@~-]*?)\s*$/i;return t.test(e)}function ye(e,t){if(e)throw Error(t)}function be(e,t){return e===t||F(e?.equals)&&e.equals(t)||F(t?.equals)&&t.equals(e)}function L(e,t={}){if(!e)return;let{type:n=`Array`,alt:r=!1}=t,i,a,o;if(e instanceof d){let t=m.WGS84.cartesianToCartographic(e);i=_.toDegrees(t.longitude),a=_.toDegrees(t.latitude),o=t.height}else if(e instanceof f){let t=e;i=_.toDegrees(t.longitude),a=_.toDegrees(t.latitude),o=t.height}else Array.isArray(e)?(i=_.toDegrees(e[0]),a=_.toDegrees(e[1]),o=e[2]):(i=e.longitude,a=e.latitude,o=e.height);return n===`Array`?r?[i,a,o]:[i,a]:r?{longitude:i,latitude:a,height:o}:{longitude:i,latitude:a}}function R(e,t=3){let n=`${e}`,r=n.indexOf(`.`),i=r<0?n:n.slice(0,Math.max(0,r)),a=`0`,o=`0`;return r>0&&(a=`0${n.slice(Math.max(0,r))}`,a=`${a*60}`,r=a.indexOf(`.`),r>0&&(o=`0${a.slice(Math.max(0,r))}`,a=a.slice(0,Math.max(0,r)),o=`${o*60}`,r=o.indexOf(`.`),o=o.slice(0,Math.max(0,r+4)),o=(+o).toFixed(t))),`${Math.abs(+i)}°${+a}′${+o}″`}function z(e){let[t,n]=e.split(`°`)??[],[r,i]=n?.split(`′`)??[],a=i?.split(`″`)[0],o=Number(t)||0,s=(Number(r)||0)/60,c=(Number(a)||0)/60/60,l=o+s+c;if(l===0)return 0;{let t=l;return[`W`,`w`,`S`,`s`].includes(e[e.length-1])&&(t=-t),t}}function xe(e,t=3){let n=L(e,{alt:!0});if(!n)return;let[r,i,a]=n,o=R(r,t),s=R(i,t);return[`${o}${r>0?`E`:`W`}`,`${s}${i>0?`N`:`S`}`,a]}function Se(e){let[t,n,r]=e,i=z(t),a=z(n);return[i,a,Number(r)||0]}function Ce(e){return!x(e)||!!e.isConstant}var we=class extends g{constructor(e){super(e)}};function Te(e){return g._materialCache.getMaterial(e)}function Ee(e,t){return g._materialCache.addMaterial(e,t)}function B(e={}){let{primitive:t,id:n,primitiveCollection:r,collection:i}=e,a=n&&n.entityCollection||null,o=a&&a.owner||null,s=Array.isArray(n)?n:[n].filter(Boolean);return[...s,t,r,i,a,o].filter(e=>!!e)}function De(e,t){if(!Array.isArray(t)||!t.length)return!1;let n=B(e);return n.length?n.some(e=>t.includes(e)):!1}function V(e){return e&&F(e.getValue)}function Oe(e,t){return V(e)?e.getValue(t):e}function H(e,t=!1){return V(e)?e:F(e)?new l(e,t):new p(e)}function ke(e,t,n,r){let i,a=n=>{i?.(),x(n?.definitionChanged)&&(i=n?.definitionChanged?.addEventListener(()=>{e.definitionChanged.raiseEvent(e,t,n,n)}))},o=`_${t}`,s=H(n);e[o]=s,a(s),r?Object.defineProperty(e,t,{get(){return e[o]}}):Object.defineProperty(e,t,{get(){return e[o]},set(n){let r=e[o];e[o]!==n&&(e[o]=n,a(n),x(e.definitionChanged)&&e.definitionChanged.raiseEvent(e,t,n,r))}})}function Ae(e,t,n,r={}){let i=!!r.toProperty,a=!!r.shallowClone,o=r.changedEventKey||`definitionChanged`,s=Reflect.get(e,o),c=`_${String(t)}`,l=i?H(n):n;Reflect.set(e,c,l);let u={get(){let t=Reflect.get(e,c);return a?Array.isArray(t)?[...t]:{...t}:t}},d,f=(n,r)=>{d?.(),d=n?.definitionChanged?.addEventListener(()=>{s?.raiseEvent.bind(s)(e,t,n,r)})};r.readonly||(i&&V(n)&&f(n),u.set=n=>{if(i&&!V(n))throw Error(`The value of ${String(t)} must be a Cesium.Property object`);let r=Reflect.get(e,c);r!==n&&(Reflect.set(e,c,n),s?.raiseEvent.bind(s)(e,t,n,r),i&&f(n))}),Object.defineProperty(e,t,u)}function je(e,t,n,r={}){return Ae(e,t,n,{...r,toProperty:!0})}function U(e,n=100,r=!0,i=!1){let a=[],o=!1,s=async()=>{if(await t(n),o=!1,i)try{e(...a[0])}catch(e){console.error(e)}if(r&&(!i||a.length>1))try{e(...a[a.length-1])}catch(e){console.error(e)}a.length=0};return(...e)=>{a.length<2?a.push(e):a[1]=e,o||(o=!0,s())}}function W(e){if(e)return e instanceof d?e.clone():e instanceof f?m.WGS84.cartographicToCartesian(e):Array.isArray(e)?d.fromDegrees(e[0],e[1],e[2]):d.fromDegrees(e.longitude,e.latitude,e.height)}function Me(e){if(e)return e instanceof d?m.WGS84.cartesianToCartographic(e):e instanceof f?e.clone():Array.isArray(e)?f.fromDegrees(e[0],e[1],e[2]):f.fromDegrees(e.longitude,e.latitude,e.height)}function G(e){return(...t)=>{try{return e?.(...t)}catch(e){console.error(e)}}}async function K(e,t={}){try{let{raw:n=!0}=t,r;if(F(e))r=await e();else{let t=D(e);r=I(t)?await t:t}return n?se(r):r}catch(e){throw console.error(e),e}}function q(e,t,n={}){let i=E(n.isActive??!0),a=k(n=>{let r=D(e),a=Array.isArray(r)?r:[r];if(a&&a.length&&i.value){let e=a.map(e=>{let n=D(e);return n?.addEventListener(t,n)});n(()=>e.forEach(e=>e?.()))}});return r(a.stop),a.stop}function J(){let e=C(),t=e?j.get(e):void 0;if(t)return t;{let e=ee(A);if(!e)throw Error("The `Viewer` instance injected by `createViewer` was not found in the current component or its ancestor components. Have you called `createViewer`?");return e}}function Ne(e={}){let t=e.camera;if(!t){let e=J();t=()=>e.value?.scene.camera}let r=S(()=>D(t)),i=S(()=>{let t=D(e.event)||`changed`;return r.value?.[t]}),a=n(T(Symbol(`camera change`)),e.delay??8,!0,!1),o=()=>{a.value=Symbol(`camera change`)};return O(r,()=>o()),q(i,()=>o()),{camera:r,position:S(()=>a.value?r.value?.position?.clone():void 0),direction:S(()=>a.value?r.value?.direction?.clone():void 0),up:S(()=>a.value?r.value?.up?.clone():void 0),right:S(()=>a.value?r.value?.right?.clone():void 0),positionCartographic:S(()=>a.value?r.value?.positionCartographic?.clone():void 0),positionWC:S(()=>a.value?r.value?.positionWC?.clone():void 0),directionWC:S(()=>a.value?r.value?.directionWC?.clone():void 0),upWC:S(()=>a.value?r.value?.directionWC?.clone():void 0),rightWC:S(()=>a.value?r.value?.directionWC?.clone():void 0),viewRectangle:S(()=>a.value?r.value?.computeViewRectangle():void 0),heading:S(()=>a.value?r.value?.heading:void 0),pitch:S(()=>a.value?r.value?.pitch:void 0),roll:S(()=>a.value?r.value?.roll:void 0),level:S(()=>a.value&&r.value?.positionCartographic?.height?Le(r.value.positionCartographic.height):void 0)}}const Pe=40487.57,Fe=7096758e-11,Ie=91610.74,Y=-40467.74;function Le(e){return Y+(Pe-Y)/(1+(e/Ie)**Fe)}function Re(e={}){let{delay:t=100}=e,n=J(),r=T(performance.now());q(()=>n.value?.scene.postRender,()=>r.value=performance.now());let i=w(0);c(r,(e,t)=>{i.value=e-t},{throttle:t});let a=S(()=>1e3/i.value);return{interval:ie(i),fps:a}}function X(e,t,n){let i=ae(new Set),a=(t,...n)=>{let r=e(t,...n);return I(r)?new Promise((e,t)=>{r.then(t=>{i.add(t),e(t)}).catch(e=>t(e))}):(i.add(r),r)},o=(e,...n)=>(i.delete(e),t(e,...n)),s=(e,...t)=>{i.forEach(n=>{e(n)&&o(n,...t)})},c=(...e)=>{i.forEach(t=>{o(t,...e)})};return r(()=>c(...n)),{scope:oe(i),add:a,remove:o,removeWhere:s,removeScope:c}}function ze(t,n={}){let{destroyOnRemove:r,collection:i,isActive:a=!0,evaluating:o}=n,s=e(()=>K(t),void 0,{evaluating:o}),c=J();return k(e=>{let t=D(a);if(t){let t=Array.isArray(s.value)?[...s.value]:[s.value],n=i??c.value?.dataSources;t.forEach(e=>e&&n?.add(e)),e(()=>{let e=D(r);!n?.isDestroyed()&&t.forEach(t=>t&&n?.remove(t,e))})}}),s}function Be(e={}){let{collection:t,destroyOnRemove:n}=e,r=J(),i=S(()=>D(t)??r.value?.dataSources),a=e=>{if(!i.value)throw Error(`collection is not defined`);return i.value.add(e)},o=(e,t)=>!!i.value?.remove(e,t),{scope:s,add:c,remove:l,removeWhere:u,removeScope:d}=X(a,o,[n]);return{scope:s,add:c,remove:l,removeWhere:u,removeScope:d}}function Ve(e,t,n={}){let{referenceWindow:r,horizontal:a=`center`,vertical:o=`bottom`,offset:s={x:0,y:0}}=n,c=S(()=>W(D(t))),l=J(),d=T();q(()=>l.value?.scene.postRender,()=>{if(l.value?.scene)if(!c.value)d.value=void 0;else{let e=M(c.value,l.value.scene);d.value=u.equals(e,d.value)?d.value:e}});let f=i(()=>l.value?.canvas.parentElement),p=i(e),m=S(()=>{let e=D(s),t=e?.x??0,n=D(a);n===`center`?t-=p.width.value/2:n===`right`&&(t-=p.width.value);let r=e?.y??0,i=D(o);return i===`center`?r-=p.height.value/2:i===`bottom`&&(r-=p.height.value),{x:t,y:r}}),h=S(()=>{let e={x:d.value?.x??0,y:d.value?.y??0};return D(r)&&(e.x+=f.x.value,e.y+=f.y.value),{x:m.value.x+e.x,y:m.value.y+e.y}}),g=S(()=>h.value.x),_=S(()=>h.value.y),v=S(()=>({left:`${g.value?.toFixed(2)}px`,top:`${_.value?.toFixed(2)}px`}));return k(()=>{let t=D(e);t&&D(n.applyStyle??!0)&&(t.style?.setProperty?.(`left`,v.value.left),t.style?.setProperty?.(`top`,v.value.top))}),{x:g,y:_,style:v}}function He(t,n={}){let{collection:r,isActive:i=!0,evaluating:a}=n,o=e(()=>K(t),[],{evaluating:a}),s=J();return k(e=>{let t=D(i);if(t){let t=Array.isArray(o.value)?[...o.value]:[o.value],n=r??s.value?.entities;t.forEach(e=>e&&n?.add(e)),e(()=>{t.forEach(e=>e&&n?.remove(e))})}}),o}function Ue(e={}){let{collection:t}=e,n=J(),r=S(()=>D(t)??n.value?.entities),i=e=>{if(!r.value)throw Error(`collection is not defined`);return r.value.contains(e)||r.value.add(e),e},a=e=>!!r.value?.remove(e),{scope:o,add:s,remove:c,removeWhere:l,removeScope:u}=X(i,a,[]);return{scope:o,add:s,remove:c,removeWhere:l,removeScope:u}}const We=new WeakMap;function Z(e,t={}){let{width:r=3,height:i=3,throttled:a=8}=t,o=E(t.isActive??!0),s=J(),c=n(S(()=>D(e)?.clone()),a,!1,!0),l=T();return k(()=>{if(s.value&&c.value&&o.value){let e=We.get(s.value);e&&e[0].equals(c.value)?l.value=e[1]:(We.set(s.value,[c.value.clone(),l.value]),l.value=s.value?.scene.pick(c.value,D(r),D(i)))}}),l}function Q(e,t,n={}){let{modifier:i}=n,a=J(),o=E(n.isActive??!0),s=S(()=>{if(a.value?.cesiumWidget?.canvas)return new v(a.value.cesiumWidget.canvas)}),c=O(s,(e,t)=>{a.value?.cesiumWidget&&t?.destroy()}),l=k(n=>{let r=D(e),a=D(i),c=D(s);!c||!o.value||!t||P(r)&&(c.setInputAction(t,r,a),n(()=>c.removeInputAction(r,a)))}),u=()=>{c(),l()};return r(u),u}function Ge(e){let t=T(),n=Z(t),i=T(),a=w(!1),o=J(),s=w(!1);O(s,e=>{o.value&&(o.value.scene.screenSpaceCameraController.enableRotate=!e)});let c=()=>{s.value=!0},l=(t,n,r)=>{e({event:{startPosition:n.clone(),endPosition:r.clone()},pick:t,dragging:a.value,lockCamera:c}),ne(()=>{!a.value&&s.value&&(s.value=!1)})},u=Q(y.LEFT_DOWN,e=>{a.value=!0,t.value=e.position.clone()}),d=Q(y.MOUSE_MOVE,U(({startPosition:e,endPosition:t})=>{i.value={startPosition:i.value?.endPosition.clone()||e.clone(),endPosition:t.clone()}},8,!1,!0));O([n,i],([e,t])=>{if(e&&t){let{startPosition:n,endPosition:r}=t;a.value&&l(e,n,r)}});let f=Q(y.LEFT_UP,e=>{a.value=!1,n.value&&i.value&&l(n.value,i.value.endPosition,e.position),t.value=void 0,i.value=void 0}),p=()=>{u(),d(),f()};return r(p),p}function Ke(e){let t=T(),n=Z(()=>t.value?.endPosition),r=(t,n,r,i)=>{e({event:{startPosition:n.clone(),endPosition:r.clone()},pick:t,hovering:i})};Q(y.MOUSE_MOVE,({startPosition:e,endPosition:n})=>{(!e.equals(t.value?.startPosition)||!n.equals(t.value?.endPosition))&&(t.value={startPosition:e.clone(),endPosition:n.clone()})}),O([n,t],([e,t])=>{if(e&&t){let{startPosition:n,endPosition:i}=t;r(e,n,i,!0)}}),O(n,(e,n)=>{if(n&&t.value){let{startPosition:e,endPosition:i}=t.value;r(n,e,i,!1)}})}const qe={LEFT_DOWN:y.LEFT_DOWN,LEFT_UP:y.LEFT_UP,LEFT_CLICK:y.LEFT_CLICK,LEFT_DOUBLE_CLICK:y.LEFT_DOUBLE_CLICK,RIGHT_DOWN:y.RIGHT_DOWN,RIGHT_UP:y.RIGHT_UP,RIGHT_CLICK:y.RIGHT_CLICK,MIDDLE_DOWN:y.MIDDLE_DOWN,MIDDLE_UP:y.MIDDLE_UP,MIDDLE_CLICK:y.MIDDLE_CLICK};function Je(e,t){let n=qe[e],r=J();Q(n,e=>{let n=e.position,i=r.value?.scene.pick(n);i&&n&&t({event:{position:n},pick:i})})}const $=Symbol(`GLOBAL_GRAPHIC_SYMBOL`),Ye=[`LEFT_DOWN`,`LEFT_UP`,`LEFT_CLICK`,`LEFT_DOUBLE_CLICK`,`RIGHT_DOWN`,`RIGHT_UP`,`RIGHT_CLICK`,`MIDDLE_DOWN`,`MIDDLE_UP`,`MIDDLE_CLICK`];function Xe(){let e=new WeakMap,t=new WeakMap,n=new WeakMap,r=(r,i,a)=>{let o=r===`global`?$:r;e?.get(o)?.get(i)?.delete(a),t?.get(o)?.get(i)?.delete(a),e?.get(o)?.get(i)?.size===0&&e.get(o).delete(i),e.get(o)?.size===0&&e.delete(o),t?.get(o)?.get(i)?.delete(a),t?.get(o)?.get(i)?.size===0&&t?.get(o)?.delete(i),t?.get(o)?.size===0&&t?.delete(o),n?.get(o)?.get(i)?.delete(a),n?.get(o)?.get(i)?.size===0&&n?.get(o)?.delete(i),n?.get(o)?.size===0&&n?.delete(o)},i=(i,a,o,s={})=>{let c=i===`global`?$:i;e.get(c)??e.set(c,new Map);let l=e.get(c);l.get(a)??l.set(a,new Set);let u=l.get(a);u.add(o);let{cursor:d=`pointer`,dragCursor:f}=s;if(P(d)){let e=F(d)?d:()=>d;t.get(c)??t.set(c,new Map),t.get(c).get(a)??t.get(c).set(a,new Map),t.get(c).get(a).set(o,e)}if(a===`DRAG`&&(f??=e=>e?.dragging?`crosshair`:void 0),P(f)){let e=F(f)?f:()=>f;n.get(c)??n.set(c,new Map),n.get(c).get(a)??n.get(c).set(a,new Map),n.get(c).get(a).set(o,e)}return()=>r(i,a,o)},a=(r,i)=>{let a=r===`global`?$:r;if(i===`all`){e.delete(a),t.delete(a),n.delete(a);return}e.get(a)?.delete(i),e.get(a)?.size===0&&e.delete(a),t?.get(a)?.delete(i),n?.get(a)?.delete(i),t?.get(a)?.size===0&&t?.delete(a),n?.get(a)?.size===0&&n?.delete(a)};for(let t of Ye)Je(t,n=>{let r=B(n.pick);r.concat($).forEach(r=>{e.get(r)?.get(t)?.forEach(e=>G(e)?.(n))})});let o=w(!1),s=J();return Ke(n=>{let r=B(n.pick).concat($);r.forEach(r=>{e.get(r)?.get(`HOVER`)?.forEach(e=>G(e)?.(n)),o.value||t.get(r)?.forEach(e=>{e.forEach(e=>{let t=n.hovering?G(e)(n):``;s.value?.canvas.style?.setProperty(`cursor`,t)})})})}),Ge(t=>{let r=B(t.pick).concat($);o.value=t.dragging,r.forEach(r=>{e.get(r)?.get(`DRAG`)?.forEach(e=>G(e)(t)),n.get(r)?.forEach(e=>{e.forEach(e=>{let n=t.dragging?G(e)(t):``;s.value?.canvas.style?.setProperty(`cursor`,n)})})})}),{addGraphicEvent:i,removeGraphicEvent:r,clearGraphicEvent:a}}function Ze(t,n={}){let{destroyOnRemove:r,collection:i,isActive:a=!0,evaluating:o}=n,s=e(()=>K(t),[],{evaluating:o}),c=J();return k(e=>{let t=D(a);if(t){let t=Array.isArray(s.value)?[...s.value]:[s.value],n=i??c.value?.imageryLayers;if(i?.isDestroyed())return;t.forEach(e=>{if(!e){console.warn(`ImageryLayer is undefined`);return}if(e?.isDestroyed()){console.warn(`ImageryLayer is destroyed`);return}n?.add(e)}),e(()=>{let e=D(r);t.forEach(t=>t&&n?.remove(t,e))})}}),s}function Qe(e={}){let{collection:t,destroyOnRemove:n}=e,r=J(),i=S(()=>D(t)??r.value?.imageryLayers),a=(e,t)=>{if(!i.value)throw Error(`collection is not defined`);return i.value.add(e,t),e},o=(e,t)=>!!i.value?.remove(e,t),{scope:s,add:c,remove:l,removeWhere:u,removeScope:d}=X(a,o,[n]);return{scope:s,add:c,remove:l,removeWhere:u,removeScope:d}}function $e(t,n={}){let{collection:r,isActive:i=!0,evaluating:a}=n,o=e(()=>K(t),void 0,{evaluating:a}),s=J();return k(e=>{if(!s.value)return;let t=D(i);if(t){let t=Array.isArray(o.value)?[...o.value]:[o.value],n=r??s.value.scene.postProcessStages;t.forEach(e=>e&&n.add(e)),e(()=>{t.forEach(e=>e&&n.remove(e))})}}),o}function et(e={}){let{collection:t}=e,n=J(),r=S(()=>D(t)??n.value?.postProcessStages),i=e=>{if(!r.value)throw Error(`collection is not defined`);return r.value.add(e)},a=e=>!!r.value?.remove(e),{scope:o,add:s,remove:c,removeWhere:l,removeScope:u}=X(i,a,[]);return{scope:o,add:s,remove:c,removeWhere:l,removeScope:u}}function tt(t,n={}){let{collection:r,isActive:i=!0,evaluating:a}=n,o=e(()=>K(t),void 0,{evaluating:a}),s=J();return k(e=>{let t=D(i);if(t){let t=Array.isArray(o.value)?[...o.value]:[o.value],n=r===`ground`?s.value?.scene.groundPrimitives:r??s.value?.scene.primitives;t.forEach(e=>e&&n?.add(e)),e(()=>{!n?.isDestroyed()&&t.forEach(e=>e&&n?.remove(e))})}}),o}function nt(e={}){let{collection:t}=e,n=J(),r=S(()=>D(t)??n.value?.scene.primitives),i=e=>{if(!r.value)throw Error(`collection is not defined`);return r.value.add(e)},a=e=>!!r.value?.remove(e),{scope:o,add:s,remove:c,removeWhere:l,removeScope:u}=X(i,a,[]);return{scope:o,add:s,remove:c,removeWhere:l,removeScope:u}}const rt=[.01,.05,.1,.5,1,2,3,5,10,20,30,50,100,200,300,500,1e3,2e3,3e3,5e3,1e4,2e4,3e4,5e4,1e5,2e5,3e5,5e5,1e6,2e6,3e6,5e6,1e7,2e7,3e7,5e7].reverse();function it(e={}){let{maxPixel:t=80,delay:n=8}=e,r=S(()=>D(t)),i=J(),o=a(()=>i.value?.canvas),c=w(),l=async()=>{await ne();let e=i.value?.scene;if(!e)return;let t=e.camera.getPickRay(new u(Math.floor(o.width.value/2),o.height.value-1)),n=e.camera.getPickRay(new u(Math.floor(1+o.width.value/2),o.height.value-1));if(!t||!n)return;let r=e.globe.pick(t,e),a=e.globe.pick(n,e);if(!r||!a)return;let s=e.globe.ellipsoid.cartesianToCartographic(r),l=e.globe.ellipsoid.cartesianToCartographic(a),d=new h(s,l);c.value=d.surfaceDistance};s(i,()=>l()),q(()=>i.value?.camera.changed,U(l,n));let d=S(()=>{if(c.value)return rt.find(e=>c.value*r.value>e)}),f=S(()=>{if(d.value&&c.value){let e=d.value/c.value;return e}return 0}),p=S(()=>{if(d.value)return d.value>1e3?`${d.value/1e3||0}km`:`${d.value||0}m`});return{pixelDistance:ie(c),width:f,distance:d,distanceText:p}}function at(e,t={}){let{width:r=3,height:i=3,limit:a,throttled:o=8,isActive:s=!0}=t,c=J(),l=n(S(()=>D(e)),o,!1,!0),u=S(()=>{if(l.value&&D(s))return c.value?.scene.drillPick(l.value,D(a),D(r),D(i))});return u}export{j as CREATE_VIEWER_COLLECTION,A as CREATE_VIEWER_INJECTION_KEY,we as CesiumMaterial,Ee as addMaterialCache,le as arrayDiff,ye as assertError,ue as canvasCoordToCartesian,M as cartesianToCanvasCoord,be as cesiumEquals,Ae as createCesiumAttribute,je as createCesiumProperty,ke as createPropertyField,ce as createViewer,xe as degreesToDms,z as dmsDecode,R as dmsEncode,Se as dmsToDegrees,Te as getMaterialCache,_e as isArray,ve as isBase64,de as isBoolean,Ce as isCesiumConstant,P as isDef,ge as isElement,F as isFunction,fe as isNumber,me as isObject,I as isPromise,V as isProperty,pe as isString,he as isWindow,De as pickHitGraphic,B as resolvePick,U as throttle,W as toCartesian3,Me as toCartographic,L as toCoord,K as toPromiseValue,H as toProperty,Oe as toPropertyValue,G as tryRun,Ne as useCameraState,q as useCesiumEventListener,Re as useCesiumFps,X as useCollectionScope,ze as useDataSource,Be as useDataSourceScope,Ve as useElementOverlay,He as useEntity,Ue as useEntityScope,Xe as useGraphicEvent,Ze as useImageryLayer,Qe as useImageryLayerScope,$e as usePostProcessStage,et as usePostProcessStageScope,tt as usePrimitive,nt as usePrimitiveScope,it as useScaleBar,at as useSceneDrillPick,Z as useScenePick,Q as useScreenSpaceEventHandler,J as useViewer};
//# sourceMappingURL=index.min.mjs.map