@juun-roh/cesium-utils 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ import{EllipsoidTerrainProvider as g}from"cesium";var o=class d{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(e){this._defaultProvider=e.defaultProvider,this._fallbackProvider=e.fallbackProvider||new g,this._tilingScheme=e.defaultProvider.tilingScheme,this._regions=e.regions||[],this._availability=e.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(e,r,i){return this._defaultProvider.loadTileDataAvailability(e,r,i)}getLevelMaximumGeometricError(e){return this._defaultProvider.getLevelMaximumGeometricError(e)}requestTileGeometry(e,r,i,t){if(this._ready){for(let a of this._regions)if(d.TerrainRegion.contains(a,e,r,i))return a.provider.requestTileGeometry(e,r,i,t);return this._defaultProvider.getTileDataAvailable(e,r,i)?this._defaultProvider.requestTileGeometry(e,r,i,t):this._fallbackProvider.requestTileGeometry(e,r,i,t)}}getTileDataAvailable(e,r,i){for(let t of this._regions)if(d.TerrainRegion.contains(t,e,r,i)&&t.provider.getTileDataAvailable(e,r,i))return!0;return this._defaultProvider.getTileDataAvailable(e,r,i)}};(r=>{function d(i,t,a){return new r({regions:i.map(l=>({...l})),defaultProvider:t,fallbackProvider:a})}r.fromTileRanges=d;let e;(t=>{function i(a,l,u,s){if(a.levels&&!a.levels.includes(s))return!1;if(a.tiles){let n=a.tiles.get(s);if(!n)return!1;let[v,m]=Array.isArray(n.x)?n.x:[n.x,n.x],[b,f]=Array.isArray(n.y)?n.y:[n.y,n.y];return l>=v&&l<=m&&u>=b&&u<=f}return!1}t.contains=i})(e=r.TerrainRegion||={})})(o||={});var T=o;export{T as a};
File without changes
@@ -0,0 +1 @@
1
+ import{a as x}from"./chunk-6ABRDFE5.js";var I;(h=>{let o=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(a,l={}){if(!e)return;let{once:c=!0,prefix:m="[DEPRECATED]",includeStack:g=!0,removeInVersion:f}=l;if(c&&o.has(a))return;let u=`${m} ${a}`;f&&(u+=` This feature will be removed in ${f}.`),typeof console<"u"&&console.warn&&(g?(console.warn(u),console.trace("Deprecation stack trace:")):console.warn(u)),c&&o.add(a)}h.warn=t;function i(a,l,c={}){let m=((...g)=>(t(l,c),a(...g)));return Object.defineProperty(m,"name",{value:a.name,configurable:!0}),m}h.deprecate=i;function r(){o.clear()}h.clear=r;function n(){return o.size}h.getWarningCount=n;function s(a){return o.has(a)}h.hasShown=s})(I||={});var P=I;import{Color as d,Entity as V,HeightReference as j,Rectangle as R,TileCoordinatesImageryProvider as G}from"cesium";import{DataSourceCollection as O,defined as _,EntityCollection as S,ImageryLayerCollection as F,PrimitiveCollection as D}from"cesium";var T=class o{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof S)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,o.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,o.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)_(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)_(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)_(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let n of r)if(e in n&&typeof n[e]!="function"){if(b(n,e))throw Error(`Cannot set read-only property '${String(e)}' on ${n.constructor.name}`);n[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,n)=>e(r,n))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(n=>n(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[o.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof S?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof D?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof O?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof F&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},E=T;var p=class o{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",d.RED],["default",d.BLUE],["fallback",d.GRAY],["grid",d.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new E({collection:e.entities,tag:o.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(o.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new G({tilingScheme:this._terrainProvider.tilingScheme,color:d.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(s=>{this._collection.add(s.entity,o.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(R.northwest(e),t),n=i.positionToTileXY(R.southeast(e),t);if(!r||!n)throw new Error("Failed to calculate tile bounds");return{start:r,end:n}}_generateVisibleTiles(e,t,i){let r=[],s=Math.min(e.end.x-e.start.x+1,100),h=Math.min(e.end.y-e.start.y+1,100);for(let a=e.start.x;a<e.start.x+s;a++)for(let l=e.start.y;l<e.start.y+h;l++)try{let c=this._createTileEntity(a,l,t,i);c&&r.push({entity:c})}catch(c){console.warn(`Error creating tile (${a}, ${l}, ${t}):`,c)}return r}_createTileEntity(e,t,i,r){let n=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(n))return null;let s=this._getTileColor(e,t,i),h=o.createRectangle(n,s.withAlpha(.3));return h.properties?.addProperty("tileX",e),h.properties?.addProperty("tileY",t),h.properties?.addProperty("tileLevel",i),h}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||d.TRANSPARENT;for(let r of this._terrainProvider.regions)if(x.TerrainRegion.contains(r,e,t,i))return this._colors.get("custom")||d.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||d.BLUE:this._colors.get("fallback")||d.GRAY}hide(){this._collection.remove(o.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",grid:"Terrain Visualizer Tile Grid"};function e(r,n){return new V({rectangle:{coordinates:r,material:n,heightReference:j.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,n,s){let h=s?.tag||"terrain_region_visualization",a=s?.color||d.RED,l=s?.maxTilesToShow||100,c=s?.show??!0,m=s?.tileAlpha||.2,g=new E({collection:n.entities,tag:h});if(c&&r.tiles&&r.tiles.size>0){let f=r.provider.tilingScheme,u=0;r.tiles.forEach((v,A)=>{let w=Array.isArray(v.x)?v.x:[v.x,v.x],L=Array.isArray(v.y)?v.y:[v.y,v.y];for(let y=w[0];y<=w[1]&&u<l;y++)for(let C=L[0];C<=L[1]&&u<l;C++){let M=f.tileXYToRectangle(y,C,A);g.add(e(M,a.withAlpha(m)),`${h}_tile`),u++}})}return g}i.visualize=t})(p||={});function b(o,e){let t=!1,i=Object.getOwnPropertyDescriptor(o,e);if(!i){let r=Object.getPrototypeOf(o);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var te=P.deprecate;export{P as a,p as b,b as c,te as d,E as e};
@@ -1 +1 @@
1
- "use strict";var E=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var D=(n,e)=>{for(var t in e)E(n,t,{get:e[t],enumerable:!0})},V=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of O(e))!F.call(n,r)&&r!==t&&E(n,r,{get:()=>e[r],enumerable:!(i=M(e,r))||i.enumerable});return n};var j=n=>V(E({},"__esModule",{value:!0}),n);var G={};D(G,{Collection:()=>C});module.exports=j(G);var c=require("cesium");var P;(v=>{let n=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(s,h={}){if(!e)return;let{once:d=!0,prefix:m="[DEPRECATED]",includeStack:g=!0,removeInVersion:p}=h;if(d&&n.has(s))return;let f=`${m} ${s}`;p&&(f+=` This feature will be removed in ${p}.`),typeof console<"u"&&console.warn&&(g?(console.warn(f),console.trace("Deprecation stack trace:")):console.warn(f)),d&&n.add(s)}v.warn=t;function i(s,h,d={}){let m=((...g)=>(t(h,d),s(...g)));return Object.defineProperty(m,"name",{value:s.name,configurable:!0}),m}v.deprecate=i;function r(){n.clear()}v.clear=r;function o(){return n.size}v.getWarningCount=o;function l(s){return n.has(s)}v.hasShown=l})(P||={});var S=P;var a=require("cesium");var y=class n{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",a.Color.RED],["default",a.Color.BLUE],["fallback",a.Color.GRAY],["grid",a.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new C({collection:e.entities,tag:n.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(n.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new a.TileCoordinatesImageryProvider({tilingScheme:this._terrainProvider.tilingScheme,color:a.Color.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(l=>{this._collection.add(l.entity,n.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(a.Rectangle.northwest(e),t),o=i.positionToTileXY(a.Rectangle.southeast(e),t);if(!r||!o)throw new Error("Failed to calculate tile bounds");return{start:r,end:o}}_generateVisibleTiles(e,t,i){let r=[],l=Math.min(e.end.x-e.start.x+1,100),v=Math.min(e.end.y-e.start.y+1,100);for(let s=e.start.x;s<e.start.x+l;s++)for(let h=e.start.y;h<e.start.y+v;h++)try{let d=this._createTileEntity(s,h,t,i);d&&r.push({entity:d})}catch(d){console.warn(`Error creating tile (${s}, ${h}, ${t}):`,d)}return r}_createTileEntity(e,t,i,r){let o=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(o))return null;let l=this._getTileColor(e,t,i),v=n.createRectangle(o,l.withAlpha(.3));return v.properties?.addProperty("tileX",e),v.properties?.addProperty("tileY",t),v.properties?.addProperty("tileLevel",i),v}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||a.Color.TRANSPARENT;for(let r of this._terrainProvider.regions)if(this._terrainProvider._regionContains(r,e,t,i))return this._colors.get("custom")||a.Color.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||a.Color.BLUE:this._colors.get("fallback")||a.Color.GRAY}hide(){this._collection.remove(n.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",boundary:"Terrain Visualizer Boundary",grid:"Terrain Visualizer Tile Grid"};function e(r,o){return new a.Entity({rectangle:{coordinates:r,material:o,heightReference:a.HeightReference.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,o,l){let v=l?.tag||"terrain_region_visualization",s=l?.color||a.Color.RED,h=l?.maxTilesToShow||100,d=l?.show??!0,m=l?.alpha||.7,g=l?.tileAlpha||.2,p=new C({collection:o.entities,tag:v});if(d&&r.tiles&&r.tiles.size>0){let f=r.provider.tilingScheme,_=0;r.tiles.forEach((u,R)=>{let x=Array.isArray(u.x)?u.x:[u.x,u.x],I=Array.isArray(u.y)?u.y:[u.y,u.y];for(let T=x[0];T<=x[1]&&_<h;T++)for(let b=I[0];b<=I[1]&&_<h;b++){let A=f.tileXYToRectangle(T,b,R);p.add(e(A,s.withAlpha(g)),`${v}_tile`),_++}})}return p}i.visualize=t})(y||={});function w(n,e){let t=!1,i=Object.getOwnPropertyDescriptor(n,e);if(!i){let r=Object.getPrototypeOf(n);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var J=S.deprecate;var L=class n{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof c.EntityCollection)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)(0,c.defined)(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)(0,c.defined)(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)(0,c.defined)(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let o of r)if(e in o&&typeof o[e]!="function"){if(w(o,e))throw Error(`Cannot set read-only property '${String(e)}' on ${o.constructor.name}`);o[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,o)=>e(r,o))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(o=>o(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[n.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof c.EntityCollection?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof c.PrimitiveCollection?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof c.DataSourceCollection?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof c.ImageryLayerCollection&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},C=L;
1
+ "use strict";var P=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var G=(a,e)=>{for(var t in e)P(a,t,{get:e[t],enumerable:!0})},V=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of F(e))!k.call(a,r)&&r!==t&&P(a,r,{get:()=>e[r],enumerable:!(i=D(e,r))||i.enumerable});return a};var H=a=>V(P({},"__esModule",{value:!0}),a);var N={};G(N,{Collection:()=>b});module.exports=H(N);var u=require("cesium");var I;(d=>{let a=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(l,o={}){if(!e)return;let{once:h=!0,prefix:v="[DEPRECATED]",includeStack:m=!0,removeInVersion:p}=o;if(h&&a.has(l))return;let f=`${v} ${l}`;p&&(f+=` This feature will be removed in ${p}.`),typeof console<"u"&&console.warn&&(m?(console.warn(f),console.trace("Deprecation stack trace:")):console.warn(f)),h&&a.add(l)}d.warn=t;function i(l,o,h={}){let v=((...m)=>(t(o,h),l(...m)));return Object.defineProperty(v,"name",{value:l.name,configurable:!0}),v}d.deprecate=i;function r(){a.clear()}d.clear=r;function n(){return a.size}d.getWarningCount=n;function c(l){return a.has(l)}d.hasShown=c})(I||={});var R=I;var s=require("cesium");var S=require("cesium"),y=class a{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(e){this._defaultProvider=e.defaultProvider,this._fallbackProvider=e.fallbackProvider||new S.EllipsoidTerrainProvider,this._tilingScheme=e.defaultProvider.tilingScheme,this._regions=e.regions||[],this._availability=e.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(e,t,i){return this._defaultProvider.loadTileDataAvailability(e,t,i)}getLevelMaximumGeometricError(e){return this._defaultProvider.getLevelMaximumGeometricError(e)}requestTileGeometry(e,t,i,r){if(this._ready){for(let n of this._regions)if(a.TerrainRegion.contains(n,e,t,i))return n.provider.requestTileGeometry(e,t,i,r);return this._defaultProvider.getTileDataAvailable(e,t,i)?this._defaultProvider.requestTileGeometry(e,t,i,r):this._fallbackProvider.requestTileGeometry(e,t,i,r)}}getTileDataAvailable(e,t,i){for(let r of this._regions)if(a.TerrainRegion.contains(r,e,t,i)&&r.provider.getTileDataAvailable(e,t,i))return!0;return this._defaultProvider.getTileDataAvailable(e,t,i)}};(t=>{function a(i,r,n){return new t({regions:i.map(c=>({...c})),defaultProvider:r,fallbackProvider:n})}t.fromTileRanges=a;let e;(r=>{function i(n,c,d,l){if(n.levels&&!n.levels.includes(l))return!1;if(n.tiles){let o=n.tiles.get(l);if(!o)return!1;let[h,v]=Array.isArray(o.x)?o.x:[o.x,o.x],[m,p]=Array.isArray(o.y)?o.y:[o.y,o.y];return c>=h&&c<=v&&d>=m&&d<=p}return!1}r.contains=i})(e=t.TerrainRegion||={})})(y||={});var A=y;var _=class a{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",s.Color.RED],["default",s.Color.BLUE],["fallback",s.Color.GRAY],["grid",s.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new b({collection:e.entities,tag:a.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(a.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new s.TileCoordinatesImageryProvider({tilingScheme:this._terrainProvider.tilingScheme,color:s.Color.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(c=>{this._collection.add(c.entity,a.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(s.Rectangle.northwest(e),t),n=i.positionToTileXY(s.Rectangle.southeast(e),t);if(!r||!n)throw new Error("Failed to calculate tile bounds");return{start:r,end:n}}_generateVisibleTiles(e,t,i){let r=[],c=Math.min(e.end.x-e.start.x+1,100),d=Math.min(e.end.y-e.start.y+1,100);for(let l=e.start.x;l<e.start.x+c;l++)for(let o=e.start.y;o<e.start.y+d;o++)try{let h=this._createTileEntity(l,o,t,i);h&&r.push({entity:h})}catch(h){console.warn(`Error creating tile (${l}, ${o}, ${t}):`,h)}return r}_createTileEntity(e,t,i,r){let n=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(n))return null;let c=this._getTileColor(e,t,i),d=a.createRectangle(n,c.withAlpha(.3));return d.properties?.addProperty("tileX",e),d.properties?.addProperty("tileY",t),d.properties?.addProperty("tileLevel",i),d}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||s.Color.TRANSPARENT;for(let r of this._terrainProvider.regions)if(A.TerrainRegion.contains(r,e,t,i))return this._colors.get("custom")||s.Color.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||s.Color.BLUE:this._colors.get("fallback")||s.Color.GRAY}hide(){this._collection.remove(a.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",grid:"Terrain Visualizer Tile Grid"};function e(r,n){return new s.Entity({rectangle:{coordinates:r,material:n,heightReference:s.HeightReference.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,n,c){let d=c?.tag||"terrain_region_visualization",l=c?.color||s.Color.RED,o=c?.maxTilesToShow||100,h=c?.show??!0,v=c?.tileAlpha||.2,m=new b({collection:n.entities,tag:d});if(h&&r.tiles&&r.tiles.size>0){let p=r.provider.tilingScheme,f=0;r.tiles.forEach((g,M)=>{let w=Array.isArray(g.x)?g.x:[g.x,g.x],L=Array.isArray(g.y)?g.y:[g.y,g.y];for(let T=w[0];T<=w[1]&&f<o;T++)for(let C=L[0];C<=L[1]&&f<o;C++){let O=p.tileXYToRectangle(T,C,M);m.add(e(O,l.withAlpha(v)),`${d}_tile`),f++}})}return m}i.visualize=t})(_||={});function E(a,e){let t=!1,i=Object.getOwnPropertyDescriptor(a,e);if(!i){let r=Object.getPrototypeOf(a);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var te=R.deprecate;var x=class a{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof u.EntityCollection)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,a.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,a.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)(0,u.defined)(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)(0,u.defined)(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)(0,u.defined)(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let n of r)if(e in n&&typeof n[e]!="function"){if(E(n,e))throw Error(`Cannot set read-only property '${String(e)}' on ${n.constructor.name}`);n[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,n)=>e(r,n))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(n=>n(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[a.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof u.EntityCollection?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof u.PrimitiveCollection?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof u.DataSourceCollection?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof u.ImageryLayerCollection&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},b=x;
@@ -1 +1 @@
1
- import"../chunk-RXMNSDKR.js";import{e as a}from"../chunk-EGWUHR3C.js";export{a as Collection};
1
+ import"../chunk-RXMNSDKR.js";import{e as a}from"../chunk-R4DSXQCN.js";import"../chunk-6ABRDFE5.js";export{a as Collection};
@@ -1 +1 @@
1
- "use strict";var E=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var D=(n,e)=>{for(var t in e)E(n,t,{get:e[t],enumerable:!0})},V=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of O(e))!F.call(n,r)&&r!==t&&E(n,r,{get:()=>e[r],enumerable:!(i=M(e,r))||i.enumerable});return n};var j=n=>V(E({},"__esModule",{value:!0}),n);var N={};D(N,{Deprecate:()=>w,TerrainVisualizer:()=>m,deprecate:()=>G,isGetterOnly:()=>C});module.exports=j(N);var S;(v=>{let n=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(s,h={}){if(!e)return;let{once:d=!0,prefix:g="[DEPRECATED]",includeStack:p=!0,removeInVersion:f}=h;if(d&&n.has(s))return;let y=`${g} ${s}`;f&&(y+=` This feature will be removed in ${f}.`),typeof console<"u"&&console.warn&&(p?(console.warn(y),console.trace("Deprecation stack trace:")):console.warn(y)),d&&n.add(s)}v.warn=t;function i(s,h,d={}){let g=((...p)=>(t(h,d),s(...p)));return Object.defineProperty(g,"name",{value:s.name,configurable:!0}),g}v.deprecate=i;function r(){n.clear()}v.clear=r;function o(){return n.size}v.getWarningCount=o;function l(s){return n.has(s)}v.hasShown=l})(S||={});var w=S;var a=require("cesium");var c=require("cesium");var L=class n{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof c.EntityCollection)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)(0,c.defined)(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)(0,c.defined)(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)(0,c.defined)(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let o of r)if(e in o&&typeof o[e]!="function"){if(C(o,e))throw Error(`Cannot set read-only property '${String(e)}' on ${o.constructor.name}`);o[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,o)=>e(r,o))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(o=>o(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[n.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof c.EntityCollection?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof c.PrimitiveCollection?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof c.DataSourceCollection?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof c.ImageryLayerCollection&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},x=L;var m=class n{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",a.Color.RED],["default",a.Color.BLUE],["fallback",a.Color.GRAY],["grid",a.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new x({collection:e.entities,tag:n.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(n.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new a.TileCoordinatesImageryProvider({tilingScheme:this._terrainProvider.tilingScheme,color:a.Color.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(l=>{this._collection.add(l.entity,n.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(a.Rectangle.northwest(e),t),o=i.positionToTileXY(a.Rectangle.southeast(e),t);if(!r||!o)throw new Error("Failed to calculate tile bounds");return{start:r,end:o}}_generateVisibleTiles(e,t,i){let r=[],l=Math.min(e.end.x-e.start.x+1,100),v=Math.min(e.end.y-e.start.y+1,100);for(let s=e.start.x;s<e.start.x+l;s++)for(let h=e.start.y;h<e.start.y+v;h++)try{let d=this._createTileEntity(s,h,t,i);d&&r.push({entity:d})}catch(d){console.warn(`Error creating tile (${s}, ${h}, ${t}):`,d)}return r}_createTileEntity(e,t,i,r){let o=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(o))return null;let l=this._getTileColor(e,t,i),v=n.createRectangle(o,l.withAlpha(.3));return v.properties?.addProperty("tileX",e),v.properties?.addProperty("tileY",t),v.properties?.addProperty("tileLevel",i),v}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||a.Color.TRANSPARENT;for(let r of this._terrainProvider.regions)if(this._terrainProvider._regionContains(r,e,t,i))return this._colors.get("custom")||a.Color.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||a.Color.BLUE:this._colors.get("fallback")||a.Color.GRAY}hide(){this._collection.remove(n.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",boundary:"Terrain Visualizer Boundary",grid:"Terrain Visualizer Tile Grid"};function e(r,o){return new a.Entity({rectangle:{coordinates:r,material:o,heightReference:a.HeightReference.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,o,l){let v=l?.tag||"terrain_region_visualization",s=l?.color||a.Color.RED,h=l?.maxTilesToShow||100,d=l?.show??!0,g=l?.alpha||.7,p=l?.tileAlpha||.2,f=new x({collection:o.entities,tag:v});if(d&&r.tiles&&r.tiles.size>0){let y=r.provider.tilingScheme,_=0;r.tiles.forEach((u,R)=>{let I=Array.isArray(u.x)?u.x:[u.x,u.x],P=Array.isArray(u.y)?u.y:[u.y,u.y];for(let T=I[0];T<=I[1]&&_<h;T++)for(let b=P[0];b<=P[1]&&_<h;b++){let A=y.tileXYToRectangle(T,b,R);f.add(e(A,s.withAlpha(p)),`${v}_tile`),_++}})}return f}i.visualize=t})(m||={});function C(n,e){let t=!1,i=Object.getOwnPropertyDescriptor(n,e);if(!i){let r=Object.getPrototypeOf(n);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var G=w.deprecate;
1
+ "use strict";var P=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var G=(a,e)=>{for(var t in e)P(a,t,{get:e[t],enumerable:!0})},V=(a,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of F(e))!k.call(a,r)&&r!==t&&P(a,r,{get:()=>e[r],enumerable:!(i=D(e,r))||i.enumerable});return a};var H=a=>V(P({},"__esModule",{value:!0}),a);var j={};G(j,{Deprecate:()=>E,TerrainVisualizer:()=>y,deprecate:()=>N,isGetterOnly:()=>b});module.exports=H(j);var R;(d=>{let a=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(l,o={}){if(!e)return;let{once:h=!0,prefix:v="[DEPRECATED]",includeStack:m=!0,removeInVersion:p}=o;if(h&&a.has(l))return;let f=`${v} ${l}`;p&&(f+=` This feature will be removed in ${p}.`),typeof console<"u"&&console.warn&&(m?(console.warn(f),console.trace("Deprecation stack trace:")):console.warn(f)),h&&a.add(l)}d.warn=t;function i(l,o,h={}){let v=((...m)=>(t(o,h),l(...m)));return Object.defineProperty(v,"name",{value:l.name,configurable:!0}),v}d.deprecate=i;function r(){a.clear()}d.clear=r;function n(){return a.size}d.getWarningCount=n;function c(l){return a.has(l)}d.hasShown=c})(R||={});var E=R;var s=require("cesium");var u=require("cesium");var x=class a{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof u.EntityCollection)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,a.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,a.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)(0,u.defined)(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)(0,u.defined)(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)(0,u.defined)(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let n of r)if(e in n&&typeof n[e]!="function"){if(b(n,e))throw Error(`Cannot set read-only property '${String(e)}' on ${n.constructor.name}`);n[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,n)=>e(r,n))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(n=>n(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[a.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof u.EntityCollection?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof u.PrimitiveCollection?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof u.DataSourceCollection?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof u.ImageryLayerCollection&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},w=x;var S=require("cesium"),_=class a{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(e){this._defaultProvider=e.defaultProvider,this._fallbackProvider=e.fallbackProvider||new S.EllipsoidTerrainProvider,this._tilingScheme=e.defaultProvider.tilingScheme,this._regions=e.regions||[],this._availability=e.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(e,t,i){return this._defaultProvider.loadTileDataAvailability(e,t,i)}getLevelMaximumGeometricError(e){return this._defaultProvider.getLevelMaximumGeometricError(e)}requestTileGeometry(e,t,i,r){if(this._ready){for(let n of this._regions)if(a.TerrainRegion.contains(n,e,t,i))return n.provider.requestTileGeometry(e,t,i,r);return this._defaultProvider.getTileDataAvailable(e,t,i)?this._defaultProvider.requestTileGeometry(e,t,i,r):this._fallbackProvider.requestTileGeometry(e,t,i,r)}}getTileDataAvailable(e,t,i){for(let r of this._regions)if(a.TerrainRegion.contains(r,e,t,i)&&r.provider.getTileDataAvailable(e,t,i))return!0;return this._defaultProvider.getTileDataAvailable(e,t,i)}};(t=>{function a(i,r,n){return new t({regions:i.map(c=>({...c})),defaultProvider:r,fallbackProvider:n})}t.fromTileRanges=a;let e;(r=>{function i(n,c,d,l){if(n.levels&&!n.levels.includes(l))return!1;if(n.tiles){let o=n.tiles.get(l);if(!o)return!1;let[h,v]=Array.isArray(o.x)?o.x:[o.x,o.x],[m,p]=Array.isArray(o.y)?o.y:[o.y,o.y];return c>=h&&c<=v&&d>=m&&d<=p}return!1}r.contains=i})(e=t.TerrainRegion||={})})(_||={});var A=_;var y=class a{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",s.Color.RED],["default",s.Color.BLUE],["fallback",s.Color.GRAY],["grid",s.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new w({collection:e.entities,tag:a.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(a.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new s.TileCoordinatesImageryProvider({tilingScheme:this._terrainProvider.tilingScheme,color:s.Color.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(c=>{this._collection.add(c.entity,a.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(s.Rectangle.northwest(e),t),n=i.positionToTileXY(s.Rectangle.southeast(e),t);if(!r||!n)throw new Error("Failed to calculate tile bounds");return{start:r,end:n}}_generateVisibleTiles(e,t,i){let r=[],c=Math.min(e.end.x-e.start.x+1,100),d=Math.min(e.end.y-e.start.y+1,100);for(let l=e.start.x;l<e.start.x+c;l++)for(let o=e.start.y;o<e.start.y+d;o++)try{let h=this._createTileEntity(l,o,t,i);h&&r.push({entity:h})}catch(h){console.warn(`Error creating tile (${l}, ${o}, ${t}):`,h)}return r}_createTileEntity(e,t,i,r){let n=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(n))return null;let c=this._getTileColor(e,t,i),d=a.createRectangle(n,c.withAlpha(.3));return d.properties?.addProperty("tileX",e),d.properties?.addProperty("tileY",t),d.properties?.addProperty("tileLevel",i),d}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||s.Color.TRANSPARENT;for(let r of this._terrainProvider.regions)if(A.TerrainRegion.contains(r,e,t,i))return this._colors.get("custom")||s.Color.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||s.Color.BLUE:this._colors.get("fallback")||s.Color.GRAY}hide(){this._collection.remove(a.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",grid:"Terrain Visualizer Tile Grid"};function e(r,n){return new s.Entity({rectangle:{coordinates:r,material:n,heightReference:s.HeightReference.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,n,c){let d=c?.tag||"terrain_region_visualization",l=c?.color||s.Color.RED,o=c?.maxTilesToShow||100,h=c?.show??!0,v=c?.tileAlpha||.2,m=new w({collection:n.entities,tag:d});if(h&&r.tiles&&r.tiles.size>0){let p=r.provider.tilingScheme,f=0;r.tiles.forEach((g,M)=>{let L=Array.isArray(g.x)?g.x:[g.x,g.x],I=Array.isArray(g.y)?g.y:[g.y,g.y];for(let T=L[0];T<=L[1]&&f<o;T++)for(let C=I[0];C<=I[1]&&f<o;C++){let O=p.tileXYToRectangle(T,C,M);m.add(e(O,l.withAlpha(v)),`${d}_tile`),f++}})}return m}i.visualize=t})(y||={});function b(a,e){let t=!1,i=Object.getOwnPropertyDescriptor(a,e);if(!i){let r=Object.getPrototypeOf(a);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var N=E.deprecate;
@@ -1,7 +1,7 @@
1
1
  import { Viewer, Color, Rectangle, EntityCollection, Entity } from 'cesium';
2
2
  import { C as Collection } from '../index-iIlou-Sq.cjs';
3
3
  export { N as NonFunction, i as isGetterOnly } from '../index-iIlou-Sq.cjs';
4
- import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-C2iCeaf-.cjs';
4
+ import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-CVTrsFR5.cjs';
5
5
 
6
6
  /**
7
7
  * Utility for managing deprecation warnings in the cesium-utils library.
@@ -198,7 +198,6 @@ declare namespace TerrainVisualizer {
198
198
  /** Tag constants for entity collection management. */
199
199
  const tag: {
200
200
  default: string;
201
- boundary: string;
202
201
  grid: string;
203
202
  };
204
203
  /**
@@ -1,7 +1,7 @@
1
1
  import { Viewer, Color, Rectangle, EntityCollection, Entity } from 'cesium';
2
2
  import { C as Collection } from '../index-iIlou-Sq.js';
3
3
  export { N as NonFunction, i as isGetterOnly } from '../index-iIlou-Sq.js';
4
- import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-C2iCeaf-.js';
4
+ import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-CVTrsFR5.js';
5
5
 
6
6
  /**
7
7
  * Utility for managing deprecation warnings in the cesium-utils library.
@@ -198,7 +198,6 @@ declare namespace TerrainVisualizer {
198
198
  /** Tag constants for entity collection management. */
199
199
  const tag: {
200
200
  default: string;
201
- boundary: string;
202
201
  grid: string;
203
202
  };
204
203
  /**
package/dist/dev/index.js CHANGED
@@ -1 +1 @@
1
- import{a,b,c,d}from"../chunk-EGWUHR3C.js";export{a as Deprecate,b as TerrainVisualizer,d as deprecate,c as isGetterOnly};
1
+ import{a,b,c,d}from"../chunk-R4DSXQCN.js";import"../chunk-6ABRDFE5.js";export{a as Deprecate,b as TerrainVisualizer,d as deprecate,c as isGetterOnly};
@@ -114,11 +114,6 @@ declare class HybridTerrainProvider implements TerrainProvider {
114
114
  * @returns Undefined if not supported by the terrain provider, otherwise true or false.
115
115
  */
116
116
  getTileDataAvailable(x: number, y: number, level: number): boolean | undefined;
117
- /**
118
- * Checks if a terrain region contains the specified tile.
119
- * @private
120
- */
121
- private _regionContains;
122
117
  }
123
118
  /**
124
119
  * @namespace
@@ -134,6 +129,20 @@ declare namespace HybridTerrainProvider {
134
129
  /** Optional fallback provider when data is not available from default provider. @default EllipsoidTerrainProvider */
135
130
  fallbackProvider?: TerrainProvider;
136
131
  }
132
+ /**
133
+ * A factory function which creates a HybridTerrainProvider from tile-coordinate based regions.
134
+ * @param regions Array of regions with tile-coordinate bounds
135
+ * @param defaultProvider Default terrain provider
136
+ * @param fallbackProvider Optional fallback provider
137
+ */
138
+ function fromTileRanges(regions: Array<{
139
+ provider: TerrainProvider;
140
+ tiles: Map<number, {
141
+ x: number | [number, number];
142
+ y: number | [number, number];
143
+ }>;
144
+ levels?: number[];
145
+ }>, defaultProvider: TerrainProvider, fallbackProvider?: TerrainProvider): HybridTerrainProvider;
137
146
  /** Represents a terrain region with provider and geographic bounds. */
138
147
  interface TerrainRegion {
139
148
  /** The terrain provider for this region. */
@@ -152,19 +161,20 @@ declare namespace HybridTerrainProvider {
152
161
  levels?: number[];
153
162
  }
154
163
  /**
155
- * Creates a HybridTerrainProvider from tile-coordinate based regions.
156
- * @param regions Array of regions with tile-coordinate bounds
157
- * @param defaultProvider Default terrain provider
158
- * @param fallbackProvider Optional fallback provider
164
+ * @namespace
165
+ * Utility functions for working with TerrainRegion objects.
159
166
  */
160
- function fromTileRanges(regions: Array<{
161
- provider: TerrainProvider;
162
- tiles: Map<number, {
163
- x: number | [number, number];
164
- y: number | [number, number];
165
- }>;
166
- levels?: number[];
167
- }>, defaultProvider: TerrainProvider, fallbackProvider?: TerrainProvider): HybridTerrainProvider;
167
+ namespace TerrainRegion {
168
+ /**
169
+ * Checks if a terrain region contains the specified tile.
170
+ * @param region The terrain region to check
171
+ * @param x The X coordinate of the tile
172
+ * @param y The Y coordinate of the tile
173
+ * @param level The zoom level of the tile
174
+ * @returns True if the region contains the tile, false otherwise
175
+ */
176
+ function contains(region: HybridTerrainProvider.TerrainRegion, x: number, y: number, level: number): boolean;
177
+ }
168
178
  }
169
179
 
170
180
  export { HybridTerrainProvider as H };
@@ -114,11 +114,6 @@ declare class HybridTerrainProvider implements TerrainProvider {
114
114
  * @returns Undefined if not supported by the terrain provider, otherwise true or false.
115
115
  */
116
116
  getTileDataAvailable(x: number, y: number, level: number): boolean | undefined;
117
- /**
118
- * Checks if a terrain region contains the specified tile.
119
- * @private
120
- */
121
- private _regionContains;
122
117
  }
123
118
  /**
124
119
  * @namespace
@@ -134,6 +129,20 @@ declare namespace HybridTerrainProvider {
134
129
  /** Optional fallback provider when data is not available from default provider. @default EllipsoidTerrainProvider */
135
130
  fallbackProvider?: TerrainProvider;
136
131
  }
132
+ /**
133
+ * A factory function which creates a HybridTerrainProvider from tile-coordinate based regions.
134
+ * @param regions Array of regions with tile-coordinate bounds
135
+ * @param defaultProvider Default terrain provider
136
+ * @param fallbackProvider Optional fallback provider
137
+ */
138
+ function fromTileRanges(regions: Array<{
139
+ provider: TerrainProvider;
140
+ tiles: Map<number, {
141
+ x: number | [number, number];
142
+ y: number | [number, number];
143
+ }>;
144
+ levels?: number[];
145
+ }>, defaultProvider: TerrainProvider, fallbackProvider?: TerrainProvider): HybridTerrainProvider;
137
146
  /** Represents a terrain region with provider and geographic bounds. */
138
147
  interface TerrainRegion {
139
148
  /** The terrain provider for this region. */
@@ -152,19 +161,20 @@ declare namespace HybridTerrainProvider {
152
161
  levels?: number[];
153
162
  }
154
163
  /**
155
- * Creates a HybridTerrainProvider from tile-coordinate based regions.
156
- * @param regions Array of regions with tile-coordinate bounds
157
- * @param defaultProvider Default terrain provider
158
- * @param fallbackProvider Optional fallback provider
164
+ * @namespace
165
+ * Utility functions for working with TerrainRegion objects.
159
166
  */
160
- function fromTileRanges(regions: Array<{
161
- provider: TerrainProvider;
162
- tiles: Map<number, {
163
- x: number | [number, number];
164
- y: number | [number, number];
165
- }>;
166
- levels?: number[];
167
- }>, defaultProvider: TerrainProvider, fallbackProvider?: TerrainProvider): HybridTerrainProvider;
167
+ namespace TerrainRegion {
168
+ /**
169
+ * Checks if a terrain region contains the specified tile.
170
+ * @param region The terrain region to check
171
+ * @param x The X coordinate of the tile
172
+ * @param y The Y coordinate of the tile
173
+ * @param level The zoom level of the tile
174
+ * @returns True if the region contains the tile, false otherwise
175
+ */
176
+ function contains(region: HybridTerrainProvider.TerrainRegion, x: number, y: number, level: number): boolean;
177
+ }
168
178
  }
169
179
 
170
180
  export { HybridTerrainProvider as H };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var L=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var K=(n,e)=>{for(var t in e)L(n,t,{get:e[t],enumerable:!0})},X=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Y(e))!U.call(n,r)&&r!==t&&L(n,r,{get:()=>e[r],enumerable:!(i=$(e,r))||i.enumerable});return n};var J=n=>X(L({},"__esModule",{value:!0}),n);var Q={};K(Q,{Collection:()=>_,Highlight:()=>M,HybridTerrainProvider:()=>D,SilhouetteHighlight:()=>p,SurfaceHighlight:()=>y,cloneViewer:()=>G,syncCamera:()=>x});module.exports=J(Q);var v=require("cesium");var j;(l=>{let n=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(c,u={}){if(!e)return;let{once:g=!0,prefix:C="[DEPRECATED]",includeStack:T=!0,removeInVersion:b}=u;if(g&&n.has(c))return;let P=`${C} ${c}`;b&&(P+=` This feature will be removed in ${b}.`),typeof console<"u"&&console.warn&&(T?(console.warn(P),console.trace("Deprecation stack trace:")):console.warn(P)),g&&n.add(c)}l.warn=t;function i(c,u,g={}){let C=((...T)=>(t(u,g),c(...T)));return Object.defineProperty(C,"name",{value:c.name,configurable:!0}),C}l.deprecate=i;function r(){n.clear()}l.clear=r;function o(){return n.size}l.getWarningCount=o;function a(c){return n.has(c)}l.hasShown=a})(j||={});var B=j;var h=require("cesium");var w=class n{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",h.Color.RED],["default",h.Color.BLUE],["fallback",h.Color.GRAY],["grid",h.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new _({collection:e.entities,tag:n.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(n.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new h.TileCoordinatesImageryProvider({tilingScheme:this._terrainProvider.tilingScheme,color:h.Color.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(a=>{this._collection.add(a.entity,n.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(h.Rectangle.northwest(e),t),o=i.positionToTileXY(h.Rectangle.southeast(e),t);if(!r||!o)throw new Error("Failed to calculate tile bounds");return{start:r,end:o}}_generateVisibleTiles(e,t,i){let r=[],a=Math.min(e.end.x-e.start.x+1,100),l=Math.min(e.end.y-e.start.y+1,100);for(let c=e.start.x;c<e.start.x+a;c++)for(let u=e.start.y;u<e.start.y+l;u++)try{let g=this._createTileEntity(c,u,t,i);g&&r.push({entity:g})}catch(g){console.warn(`Error creating tile (${c}, ${u}, ${t}):`,g)}return r}_createTileEntity(e,t,i,r){let o=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(o))return null;let a=this._getTileColor(e,t,i),l=n.createRectangle(o,a.withAlpha(.3));return l.properties?.addProperty("tileX",e),l.properties?.addProperty("tileY",t),l.properties?.addProperty("tileLevel",i),l}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||h.Color.TRANSPARENT;for(let r of this._terrainProvider.regions)if(this._terrainProvider._regionContains(r,e,t,i))return this._colors.get("custom")||h.Color.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||h.Color.BLUE:this._colors.get("fallback")||h.Color.GRAY}hide(){this._collection.remove(n.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",boundary:"Terrain Visualizer Boundary",grid:"Terrain Visualizer Tile Grid"};function e(r,o){return new h.Entity({rectangle:{coordinates:r,material:o,heightReference:h.HeightReference.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,o,a){let l=a?.tag||"terrain_region_visualization",c=a?.color||h.Color.RED,u=a?.maxTilesToShow||100,g=a?.show??!0,C=a?.alpha||.7,T=a?.tileAlpha||.2,b=new _({collection:o.entities,tag:l});if(g&&r.tiles&&r.tiles.size>0){let P=r.provider.tilingScheme,O=0;r.tiles.forEach((f,z)=>{let k=Array.isArray(f.x)?f.x:[f.x,f.x],F=Array.isArray(f.y)?f.y:[f.y,f.y];for(let S=k[0];S<=k[1]&&O<u;S++)for(let R=F[0];R<=F[1]&&O<u;R++){let q=P.tileXYToRectangle(S,R,z);b.add(e(q,c.withAlpha(T)),`${l}_tile`),O++}})}return b}i.visualize=t})(w||={});function A(n,e){let t=!1,i=Object.getOwnPropertyDescriptor(n,e);if(!i){let r=Object.getPrototypeOf(n);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var de=B.deprecate;var I=class n{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof v.EntityCollection)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)(0,v.defined)(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)(0,v.defined)(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)(0,v.defined)(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let o of r)if(e in o&&typeof o[e]!="function"){if(A(o,e))throw Error(`Cannot set read-only property '${String(e)}' on ${o.constructor.name}`);o[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,o)=>e(r,o))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(o=>o(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[n.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof v.EntityCollection?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof v.PrimitiveCollection?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof v.DataSourceCollection?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof v.ImageryLayerCollection&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},_=I;var m=require("cesium");var d=require("cesium"),p=class{_color=d.Color.RED;_silhouette;_composite;_stages;_entity;_currentObject;_currentOptions;constructor(e){this._stages=e.scene.postProcessStages,this._silhouette=d.PostProcessStageLibrary.createEdgeDetectionStage(),this._silhouette.uniforms.color=this._color,this._silhouette.uniforms.length=.01,this._silhouette.selected=[],this._composite=d.PostProcessStageLibrary.createSilhouetteStage([this._silhouette]),this._stages.add(this._composite)}get color(){return this._color}set color(e){this._color=e}get currentObject(){return this._currentObject}show(e,t){if((0,d.defined)(e)&&!(this._currentObject===e&&this._optionsEqual(this._currentOptions,t))){this._clearHighlights();try{if(e instanceof d.Cesium3DTileFeature)this._silhouette.uniforms.color=t?.color||this._color,this._silhouette.selected.push(e);else{if(!e.model)return;this._entity=e,e.model.silhouetteSize=new d.ConstantProperty(t?.width||2),e.model.silhouetteColor=new d.ConstantProperty(t?.color||this._color)}this._currentObject=e,this._currentOptions=t?{...t}:void 0}catch(i){console.error("Failed to highlight object:",i),this._currentObject=void 0,this._currentOptions=void 0}}}hide(){this._clearHighlights(),this._currentObject=void 0,this._currentOptions=void 0}destroy(){this.hide(),this._composite&&this._stages.remove(this._composite),this._currentObject=void 0,this._currentOptions=void 0}_optionsEqual(e,t){return!e&&!t?!0:!e||!t?!1:e.outline===t.outline&&e.width===t.width&&d.Color.equals(e.color||this._color,t.color||this._color)}_clearHighlights(){this._silhouette.selected.length>0&&(this._silhouette.selected=[]),this._entity?.model&&(this._entity.model.silhouetteColor=new d.ConstantProperty(d.Color.TRANSPARENT),this._entity.model.silhouetteSize=new d.ConstantProperty(0),this._entity=void 0)}};var s=require("cesium"),y=class{_color=s.Color.RED;_entity;_entities;_currentObject;_currentOptions;constructor(e){this._entities=e.entities,this._entity=this._entities.add(new s.Entity({id:`highlight-entity-${Math.random().toString(36).substring(2)}`,show:!1}))}get color(){return this._color}set color(e){this._color=e}get entity(){return this._entity}get currentObject(){return this._currentObject}show(e,t){if(!(!(0,s.defined)(e)||!this._entity)){if(this._currentObject===e&&this._optionsEqual(this._currentOptions,t))return this._entity;this._clearGeometries();try{if(e instanceof s.Entity&&(e.polygon||e.polyline||e.rectangle))this._update(e,t);else if(e instanceof s.GroundPrimitive)this._update(e,t);else{this._currentObject=void 0,this._currentOptions=void 0;return}return this._currentObject=e,this._currentOptions=t?{...t}:void 0,this._entity.show=!0,this._entity}catch(i){console.error("Failed to highlight object:",i),this._currentObject=void 0,this._currentOptions=void 0;return}}}hide(){this._entity&&(this._entity.show=!1),this._currentObject=void 0,this._currentOptions=void 0}destroy(){this._entities.contains(this._entity)&&this._entities.remove(this._entity),this._currentObject=void 0,this._currentOptions=void 0}_optionsEqual(e,t){return!e&&!t?!0:!e||!t?!1:e.outline===t.outline&&e.width===t.width&&s.Color.equals(e.color||this._color,t.color||this._color)}_clearGeometries(){this._entity.polygon=void 0,this._entity.polyline=void 0,this._entity.rectangle=void 0}_update(e,t={color:this._color,outline:!1,width:2}){if(e instanceof s.Entity){if(e.polygon)if(t.outline){let i=e.polygon.hierarchy?.getValue();if(i&&i.positions){let r;i.positions.length>0&&!s.Cartesian3.equals(i.positions[0],i.positions[i.positions.length-1])?r=[...i.positions,i.positions[0]]:r=i.positions,this._entity.polyline=new s.PolylineGraphics({positions:r,material:t.color,width:t.width||2,clampToGround:!0})}}else{let i=e.polygon.hierarchy?.getValue();i&&(this._entity.polygon=new s.PolygonGraphics({hierarchy:i,material:t.color,heightReference:s.HeightReference.CLAMP_TO_GROUND,classificationType:e.polygon.classificationType?.getValue()||s.ClassificationType.BOTH}))}else if(e.polyline){let i=e.polyline.positions?.getValue();if(i){let r=e.polyline.width?.getValue();this._entity.polyline=new s.PolylineGraphics({positions:i,material:t.color,width:r+(t.width||2),clampToGround:!0})}}else if(e.rectangle)if(t.outline){let i=e.rectangle.coordinates?.getValue();if(i){let r=[s.Cartesian3.fromRadians(i.west,i.north),s.Cartesian3.fromRadians(i.east,i.north),s.Cartesian3.fromRadians(i.east,i.south),s.Cartesian3.fromRadians(i.west,i.south),s.Cartesian3.fromRadians(i.west,i.north)];this._entity.polyline=new s.PolylineGraphics({positions:r,material:t.color,width:t.width||2,clampToGround:!0})}}else{let i=e.rectangle.coordinates?.getValue();i&&(this._entity.rectangle=new s.RectangleGraphics({coordinates:i,material:t.color,heightReference:s.HeightReference.CLAMP_TO_GROUND}))}}else if(e instanceof s.GroundPrimitive){let i=e.geometryInstances,r=Array.isArray(i)?i[0]:i;if(!r.geometry.attributes.position)return;let o=r.geometry.attributes.position.values,a=[];for(let l=0;l<o.length;l+=3)a.push(new s.Cartesian3(o[l],o[l+1],o[l+2]));t.outline?this._entity.polyline=new s.PolylineGraphics({positions:a,material:t.color,width:t.width||2,clampToGround:!0}):this._entity.polygon=new s.PolygonGraphics({hierarchy:new s.PolygonHierarchy(a),material:t.color,heightReference:s.HeightReference.CLAMP_TO_GROUND,classificationType:s.ClassificationType.BOTH})}}};var H=class n{static instances=new WeakMap;_surface;_silhouette;_color=m.Color.RED;constructor(e){this._surface=new y(e),this._silhouette=new p(e),this._surface.color=this._color,this._silhouette.color=this._color}get color(){return this._color}set color(e){this._color=e,this._surface.color=e,this._silhouette.color=e}static getInstance(e){let t=e.container;return n.instances.has(t)||n.instances.set(t,new n(e)),n.instances.get(t)}static releaseInstance(e){let t=e.container,i=n.instances.get(t);i&&(i.hide(),i._surface&&i._surface.destroy(),i._silhouette&&i._silhouette.destroy(),n.instances.delete(t))}show(e,t={color:this._color}){let i=this._getObject(e);if((0,m.defined)(i))return i instanceof m.Cesium3DTileFeature?this._silhouette.show(i,t):i instanceof m.Entity&&i.model?this._silhouette.show(i,t):this._surface.show(i,t)}_getObject(e){if((0,m.defined)(e)){if(e instanceof m.Entity||e instanceof m.Cesium3DTileFeature||e instanceof m.GroundPrimitive)return e;if(e.id instanceof m.Entity)return e.id;if(e.primitive instanceof m.GroundPrimitive)return e.primitive}}hide(){this._surface.hide(),this._silhouette.hide()}},M=H;var N=require("cesium"),E=class{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(e){this._defaultProvider=e.defaultProvider,this._fallbackProvider=e.fallbackProvider||new N.EllipsoidTerrainProvider,this._tilingScheme=e.defaultProvider.tilingScheme,this._regions=e.regions||[],this._availability=e.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(e,t,i){return this._defaultProvider.loadTileDataAvailability(e,t,i)}getLevelMaximumGeometricError(e){return this._defaultProvider.getLevelMaximumGeometricError(e)}requestTileGeometry(e,t,i,r){if(this._ready){for(let o of this._regions)if(this._regionContains(o,e,t,i))return o.provider.requestTileGeometry(e,t,i,r);return this._defaultProvider.getTileDataAvailable(e,t,i)?this._defaultProvider.requestTileGeometry(e,t,i,r):this._fallbackProvider.requestTileGeometry(e,t,i,r)}}getTileDataAvailable(e,t,i){for(let r of this._regions)if(this._regionContains(r,e,t,i)&&r.provider.getTileDataAvailable(e,t,i))return!0;return this._defaultProvider.getTileDataAvailable(e,t,i)}_regionContains(e,t,i,r){if(e.levels&&!e.levels.includes(r))return!1;if(e.tiles){let o=e.tiles.get(r);if(!o)return!1;let[a,l]=Array.isArray(o.x)?o.x:[o.x,o.x],[c,u]=Array.isArray(o.y)?o.y:[o.y,o.y];return t>=a&&t<=l&&i>=c&&i<=u}return!1}};(e=>{function n(t,i,r){return new e({regions:t.map(o=>({...o})),defaultProvider:i,fallbackProvider:r})}e.fromTileRanges=n})(E||={});var D=E;var W=require("cesium");var V=require("cesium");function x(n,e){if((0,V.defined)(n)&&(0,V.defined)(e)){let{camera:t}=n;e.camera.position=t.positionWC.clone(),e.camera.direction=t.directionWC.clone(),e.camera.up=t.upWC.clone()}}function G(n,e,t){let i={baseLayerPicker:n.baseLayerPicker!==void 0,geocoder:n.geocoder!==void 0,homeButton:n.homeButton!==void 0,sceneModePicker:n.sceneModePicker!==void 0,timeline:n.timeline!==void 0,navigationHelpButton:n.navigationHelpButton!==void 0,animation:n.animation!==void 0,fullscreenButton:n.fullscreenButton!==void 0,shouldAnimate:n.clock.shouldAnimate,terrainProvider:n.terrainProvider,requestRenderMode:n.scene.requestRenderMode,infoBox:n.infoBox!==void 0},r=new W.Viewer(e,{...i,...t});x(n,r);let o=n.imageryLayers;r.imageryLayers.removeAll();for(let c=0;c<o.length;c++){let u=o.get(c);r.imageryLayers.addImageryProvider(u.imageryProvider,c)}r.clock.startTime=n.clock.startTime.clone(),r.clock.stopTime=n.clock.stopTime.clone(),r.clock.currentTime=n.clock.currentTime.clone(),r.clock.multiplier=n.clock.multiplier,r.clock.clockStep=n.clock.clockStep,r.clock.clockRange=n.clock.clockRange,r.clock.shouldAnimate=n.clock.shouldAnimate,r.scene.globe.enableLighting=n.scene.globe.enableLighting,r.scene.globe.depthTestAgainstTerrain=n.scene.globe.depthTestAgainstTerrain,r.scene.screenSpaceCameraController.enableCollisionDetection=n.scene.screenSpaceCameraController.enableCollisionDetection;let a=n.scene.screenSpaceCameraController.tiltEventTypes;a&&(r.scene.screenSpaceCameraController.tiltEventTypes=Array.isArray(a)?[...a]:a);let l=n.scene.screenSpaceCameraController.zoomEventTypes;return l&&(r.scene.screenSpaceCameraController.zoomEventTypes=Array.isArray(l)?[...l]:l),r}
1
+ "use strict";var L=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var U=(n,e)=>{for(var t in e)L(n,t,{get:e[t],enumerable:!0})},K=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of $(e))!Y.call(n,r)&&r!==t&&L(n,r,{get:()=>e[r],enumerable:!(i=z(e,r))||i.enumerable});return n};var X=n=>K(L({},"__esModule",{value:!0}),n);var J={};U(J,{Collection:()=>P,Highlight:()=>M,HybridTerrainProvider:()=>E,SilhouetteHighlight:()=>_,SurfaceHighlight:()=>C,cloneViewer:()=>V,syncCamera:()=>O});module.exports=X(J);var g=require("cesium");var F;(l=>{let n=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(c,h={}){if(!e)return;let{once:v=!0,prefix:f="[DEPRECATED]",includeStack:p=!0,removeInVersion:b}=h;if(v&&n.has(c))return;let T=`${f} ${c}`;b&&(T+=` This feature will be removed in ${b}.`),typeof console<"u"&&console.warn&&(p?(console.warn(T),console.trace("Deprecation stack trace:")):console.warn(T)),v&&n.add(c)}l.warn=t;function i(c,h,v={}){let f=((...p)=>(t(h,v),c(...p)));return Object.defineProperty(f,"name",{value:c.name,configurable:!0}),f}l.deprecate=i;function r(){n.clear()}l.clear=r;function o(){return n.size}l.getWarningCount=o;function a(c){return n.has(c)}l.hasShown=a})(F||={});var j=F;var d=require("cesium");var B=require("cesium"),w=class n{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(e){this._defaultProvider=e.defaultProvider,this._fallbackProvider=e.fallbackProvider||new B.EllipsoidTerrainProvider,this._tilingScheme=e.defaultProvider.tilingScheme,this._regions=e.regions||[],this._availability=e.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(e,t,i){return this._defaultProvider.loadTileDataAvailability(e,t,i)}getLevelMaximumGeometricError(e){return this._defaultProvider.getLevelMaximumGeometricError(e)}requestTileGeometry(e,t,i,r){if(this._ready){for(let o of this._regions)if(n.TerrainRegion.contains(o,e,t,i))return o.provider.requestTileGeometry(e,t,i,r);return this._defaultProvider.getTileDataAvailable(e,t,i)?this._defaultProvider.requestTileGeometry(e,t,i,r):this._fallbackProvider.requestTileGeometry(e,t,i,r)}}getTileDataAvailable(e,t,i){for(let r of this._regions)if(n.TerrainRegion.contains(r,e,t,i)&&r.provider.getTileDataAvailable(e,t,i))return!0;return this._defaultProvider.getTileDataAvailable(e,t,i)}};(t=>{function n(i,r,o){return new t({regions:i.map(a=>({...a})),defaultProvider:r,fallbackProvider:o})}t.fromTileRanges=n;let e;(r=>{function i(o,a,l,c){if(o.levels&&!o.levels.includes(c))return!1;if(o.tiles){let h=o.tiles.get(c);if(!h)return!1;let[v,f]=Array.isArray(h.x)?h.x:[h.x,h.x],[p,b]=Array.isArray(h.y)?h.y:[h.y,h.y];return a>=v&&a<=f&&l>=p&&l<=b}return!1}r.contains=i})(e=t.TerrainRegion||={})})(w||={});var E=w;var x=class n{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",d.Color.RED],["default",d.Color.BLUE],["fallback",d.Color.GRAY],["grid",d.Color.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new P({collection:e.entities,tag:n.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(n.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new d.TileCoordinatesImageryProvider({tilingScheme:this._terrainProvider.tilingScheme,color:d.Color.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(a=>{this._collection.add(a.entity,n.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(d.Rectangle.northwest(e),t),o=i.positionToTileXY(d.Rectangle.southeast(e),t);if(!r||!o)throw new Error("Failed to calculate tile bounds");return{start:r,end:o}}_generateVisibleTiles(e,t,i){let r=[],a=Math.min(e.end.x-e.start.x+1,100),l=Math.min(e.end.y-e.start.y+1,100);for(let c=e.start.x;c<e.start.x+a;c++)for(let h=e.start.y;h<e.start.y+l;h++)try{let v=this._createTileEntity(c,h,t,i);v&&r.push({entity:v})}catch(v){console.warn(`Error creating tile (${c}, ${h}, ${t}):`,v)}return r}_createTileEntity(e,t,i,r){let o=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(o))return null;let a=this._getTileColor(e,t,i),l=n.createRectangle(o,a.withAlpha(.3));return l.properties?.addProperty("tileX",e),l.properties?.addProperty("tileY",t),l.properties?.addProperty("tileLevel",i),l}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||d.Color.TRANSPARENT;for(let r of this._terrainProvider.regions)if(E.TerrainRegion.contains(r,e,t,i))return this._colors.get("custom")||d.Color.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||d.Color.BLUE:this._colors.get("fallback")||d.Color.GRAY}hide(){this._collection.remove(n.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",grid:"Terrain Visualizer Tile Grid"};function e(r,o){return new d.Entity({rectangle:{coordinates:r,material:o,heightReference:d.HeightReference.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,o,a){let l=a?.tag||"terrain_region_visualization",c=a?.color||d.Color.RED,h=a?.maxTilesToShow||100,v=a?.show??!0,f=a?.tileAlpha||.2,p=new P({collection:o.entities,tag:l});if(v&&r.tiles&&r.tiles.size>0){let b=r.provider.tilingScheme,T=0;r.tiles.forEach((y,W)=>{let G=Array.isArray(y.x)?y.x:[y.x,y.x],k=Array.isArray(y.y)?y.y:[y.y,y.y];for(let S=G[0];S<=G[1]&&T<h;S++)for(let R=k[0];R<=k[1]&&T<h;R++){let q=b.tileXYToRectangle(S,R,W);p.add(e(q,c.withAlpha(f)),`${l}_tile`),T++}})}return p}i.visualize=t})(x||={});function A(n,e){let t=!1,i=Object.getOwnPropertyDescriptor(n,e);if(!i){let r=Object.getPrototypeOf(n);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var ue=j.deprecate;var I=class n{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof g.EntityCollection)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,n.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)(0,g.defined)(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)(0,g.defined)(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)(0,g.defined)(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let o of r)if(e in o&&typeof o[e]!="function"){if(A(o,e))throw Error(`Cannot set read-only property '${String(e)}' on ${o.constructor.name}`);o[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,o)=>e(r,o))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(o=>o(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[n.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof g.EntityCollection?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof g.PrimitiveCollection?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof g.DataSourceCollection?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof g.ImageryLayerCollection&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},P=I;var m=require("cesium");var u=require("cesium"),_=class{_color=u.Color.RED;_silhouette;_composite;_stages;_entity;_currentObject;_currentOptions;constructor(e){this._stages=e.scene.postProcessStages,this._silhouette=u.PostProcessStageLibrary.createEdgeDetectionStage(),this._silhouette.uniforms.color=this._color,this._silhouette.uniforms.length=.01,this._silhouette.selected=[],this._composite=u.PostProcessStageLibrary.createSilhouetteStage([this._silhouette]),this._stages.add(this._composite)}get color(){return this._color}set color(e){this._color=e}get currentObject(){return this._currentObject}show(e,t){if((0,u.defined)(e)&&!(this._currentObject===e&&this._optionsEqual(this._currentOptions,t))){this._clearHighlights();try{if(e instanceof u.Cesium3DTileFeature)this._silhouette.uniforms.color=t?.color||this._color,this._silhouette.selected.push(e);else{if(!e.model)return;this._entity=e,e.model.silhouetteSize=new u.ConstantProperty(t?.width||2),e.model.silhouetteColor=new u.ConstantProperty(t?.color||this._color)}this._currentObject=e,this._currentOptions=t?{...t}:void 0}catch(i){console.error("Failed to highlight object:",i),this._currentObject=void 0,this._currentOptions=void 0}}}hide(){this._clearHighlights(),this._currentObject=void 0,this._currentOptions=void 0}destroy(){this.hide(),this._composite&&this._stages.remove(this._composite),this._currentObject=void 0,this._currentOptions=void 0}_optionsEqual(e,t){return!e&&!t?!0:!e||!t?!1:e.outline===t.outline&&e.width===t.width&&u.Color.equals(e.color||this._color,t.color||this._color)}_clearHighlights(){this._silhouette.selected.length>0&&(this._silhouette.selected=[]),this._entity?.model&&(this._entity.model.silhouetteColor=new u.ConstantProperty(u.Color.TRANSPARENT),this._entity.model.silhouetteSize=new u.ConstantProperty(0),this._entity=void 0)}};var s=require("cesium"),C=class{_color=s.Color.RED;_entity;_entities;_currentObject;_currentOptions;constructor(e){this._entities=e.entities,this._entity=this._entities.add(new s.Entity({id:`highlight-entity-${Math.random().toString(36).substring(2)}`,show:!1}))}get color(){return this._color}set color(e){this._color=e}get entity(){return this._entity}get currentObject(){return this._currentObject}show(e,t){if(!(!(0,s.defined)(e)||!this._entity)){if(this._currentObject===e&&this._optionsEqual(this._currentOptions,t))return this._entity;this._clearGeometries();try{if(e instanceof s.Entity&&(e.polygon||e.polyline||e.rectangle))this._update(e,t);else if(e instanceof s.GroundPrimitive)this._update(e,t);else{this._currentObject=void 0,this._currentOptions=void 0;return}return this._currentObject=e,this._currentOptions=t?{...t}:void 0,this._entity.show=!0,this._entity}catch(i){console.error("Failed to highlight object:",i),this._currentObject=void 0,this._currentOptions=void 0;return}}}hide(){this._entity&&(this._entity.show=!1),this._currentObject=void 0,this._currentOptions=void 0}destroy(){this._entities.contains(this._entity)&&this._entities.remove(this._entity),this._currentObject=void 0,this._currentOptions=void 0}_optionsEqual(e,t){return!e&&!t?!0:!e||!t?!1:e.outline===t.outline&&e.width===t.width&&s.Color.equals(e.color||this._color,t.color||this._color)}_clearGeometries(){this._entity.polygon=void 0,this._entity.polyline=void 0,this._entity.rectangle=void 0}_update(e,t={color:this._color,outline:!1,width:2}){if(e instanceof s.Entity){if(e.polygon)if(t.outline){let i=e.polygon.hierarchy?.getValue();if(i&&i.positions){let r;i.positions.length>0&&!s.Cartesian3.equals(i.positions[0],i.positions[i.positions.length-1])?r=[...i.positions,i.positions[0]]:r=i.positions,this._entity.polyline=new s.PolylineGraphics({positions:r,material:t.color,width:t.width||2,clampToGround:!0})}}else{let i=e.polygon.hierarchy?.getValue();i&&(this._entity.polygon=new s.PolygonGraphics({hierarchy:i,material:t.color,heightReference:s.HeightReference.CLAMP_TO_GROUND,classificationType:e.polygon.classificationType?.getValue()||s.ClassificationType.BOTH}))}else if(e.polyline){let i=e.polyline.positions?.getValue();if(i){let r=e.polyline.width?.getValue();this._entity.polyline=new s.PolylineGraphics({positions:i,material:t.color,width:r+(t.width||2),clampToGround:!0})}}else if(e.rectangle)if(t.outline){let i=e.rectangle.coordinates?.getValue();if(i){let r=[s.Cartesian3.fromRadians(i.west,i.north),s.Cartesian3.fromRadians(i.east,i.north),s.Cartesian3.fromRadians(i.east,i.south),s.Cartesian3.fromRadians(i.west,i.south),s.Cartesian3.fromRadians(i.west,i.north)];this._entity.polyline=new s.PolylineGraphics({positions:r,material:t.color,width:t.width||2,clampToGround:!0})}}else{let i=e.rectangle.coordinates?.getValue();i&&(this._entity.rectangle=new s.RectangleGraphics({coordinates:i,material:t.color,heightReference:s.HeightReference.CLAMP_TO_GROUND}))}}else if(e instanceof s.GroundPrimitive){let i=e.geometryInstances,r=Array.isArray(i)?i[0]:i;if(!r.geometry.attributes.position)return;let o=r.geometry.attributes.position.values,a=[];for(let l=0;l<o.length;l+=3)a.push(new s.Cartesian3(o[l],o[l+1],o[l+2]));t.outline?this._entity.polyline=new s.PolylineGraphics({positions:a,material:t.color,width:t.width||2,clampToGround:!0}):this._entity.polygon=new s.PolygonGraphics({hierarchy:new s.PolygonHierarchy(a),material:t.color,heightReference:s.HeightReference.CLAMP_TO_GROUND,classificationType:s.ClassificationType.BOTH})}}};var H=class n{static instances=new WeakMap;_surface;_silhouette;_color=m.Color.RED;constructor(e){this._surface=new C(e),this._silhouette=new _(e),this._surface.color=this._color,this._silhouette.color=this._color}get color(){return this._color}set color(e){this._color=e,this._surface.color=e,this._silhouette.color=e}static getInstance(e){let t=e.container;return n.instances.has(t)||n.instances.set(t,new n(e)),n.instances.get(t)}static releaseInstance(e){let t=e.container,i=n.instances.get(t);i&&(i.hide(),i._surface&&i._surface.destroy(),i._silhouette&&i._silhouette.destroy(),n.instances.delete(t))}show(e,t={color:this._color}){let i=this._getObject(e);if((0,m.defined)(i))return i instanceof m.Cesium3DTileFeature?this._silhouette.show(i,t):i instanceof m.Entity&&i.model?this._silhouette.show(i,t):this._surface.show(i,t)}_getObject(e){if((0,m.defined)(e)){if(e instanceof m.Entity||e instanceof m.Cesium3DTileFeature||e instanceof m.GroundPrimitive)return e;if(e.id instanceof m.Entity)return e.id;if(e.primitive instanceof m.GroundPrimitive)return e.primitive}}hide(){this._surface.hide(),this._silhouette.hide()}},M=H;var N=require("cesium");var D=require("cesium");function O(n,e){if((0,D.defined)(n)&&(0,D.defined)(e)){let{camera:t}=n;e.camera.position=t.positionWC.clone(),e.camera.direction=t.directionWC.clone(),e.camera.up=t.upWC.clone()}}function V(n,e,t){let i={baseLayerPicker:n.baseLayerPicker!==void 0,geocoder:n.geocoder!==void 0,homeButton:n.homeButton!==void 0,sceneModePicker:n.sceneModePicker!==void 0,timeline:n.timeline!==void 0,navigationHelpButton:n.navigationHelpButton!==void 0,animation:n.animation!==void 0,fullscreenButton:n.fullscreenButton!==void 0,shouldAnimate:n.clock.shouldAnimate,terrainProvider:n.terrainProvider,requestRenderMode:n.scene.requestRenderMode,infoBox:n.infoBox!==void 0},r=new N.Viewer(e,{...i,...t});O(n,r);let o=n.imageryLayers;r.imageryLayers.removeAll();for(let c=0;c<o.length;c++){let h=o.get(c);r.imageryLayers.addImageryProvider(h.imageryProvider,c)}r.clock.startTime=n.clock.startTime.clone(),r.clock.stopTime=n.clock.stopTime.clone(),r.clock.currentTime=n.clock.currentTime.clone(),r.clock.multiplier=n.clock.multiplier,r.clock.clockStep=n.clock.clockStep,r.clock.clockRange=n.clock.clockRange,r.clock.shouldAnimate=n.clock.shouldAnimate,r.scene.globe.enableLighting=n.scene.globe.enableLighting,r.scene.globe.depthTestAgainstTerrain=n.scene.globe.depthTestAgainstTerrain,r.scene.screenSpaceCameraController.enableCollisionDetection=n.scene.screenSpaceCameraController.enableCollisionDetection;let a=n.scene.screenSpaceCameraController.tiltEventTypes;a&&(r.scene.screenSpaceCameraController.tiltEventTypes=Array.isArray(a)?[...a]:a);let l=n.scene.screenSpaceCameraController.zoomEventTypes;return l&&(r.scene.screenSpaceCameraController.zoomEventTypes=Array.isArray(l)?[...l]:l),r}
package/dist/index.d.cts CHANGED
@@ -2,5 +2,5 @@ export { C as Collection } from './index-iIlou-Sq.cjs';
2
2
  export { Highlight, SilhouetteHighlight, SurfaceHighlight } from './highlight/index.cjs';
3
3
  export { TerrainOptions, TerrainRegion, TerrainTiles } from './terrain/index.cjs';
4
4
  export { cloneViewer, syncCamera } from './viewer/index.cjs';
5
- export { H as HybridTerrainProvider } from './hybrid-terrain-provider-C2iCeaf-.cjs';
5
+ export { H as HybridTerrainProvider } from './hybrid-terrain-provider-CVTrsFR5.cjs';
6
6
  import 'cesium';
package/dist/index.d.ts CHANGED
@@ -2,5 +2,5 @@ export { C as Collection } from './index-iIlou-Sq.js';
2
2
  export { Highlight, SilhouetteHighlight, SurfaceHighlight } from './highlight/index.js';
3
3
  export { TerrainOptions, TerrainRegion, TerrainTiles } from './terrain/index.js';
4
4
  export { cloneViewer, syncCamera } from './viewer/index.js';
5
- export { H as HybridTerrainProvider } from './hybrid-terrain-provider-C2iCeaf-.js';
5
+ export { H as HybridTerrainProvider } from './hybrid-terrain-provider-CVTrsFR5.js';
6
6
  import 'cesium';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-RXMNSDKR.js";import{e as r}from"./chunk-EGWUHR3C.js";import{a as e,b as i,c as o}from"./chunk-PSCNWZUR.js";import{a as t}from"./chunk-6I4THOWX.js";import{a as p,b as m}from"./chunk-Z2COOTT4.js";export{r as Collection,o as Highlight,t as HybridTerrainProvider,e as SilhouetteHighlight,i as SurfaceHighlight,m as cloneViewer,p as syncCamera};
1
+ import"./chunk-RXMNSDKR.js";import{e}from"./chunk-R4DSXQCN.js";import{a as i,b as o,c as t}from"./chunk-PSCNWZUR.js";import{a as p,b as m}from"./chunk-Z2COOTT4.js";import"./chunk-6I6OKECI.js";import{a as r}from"./chunk-6ABRDFE5.js";export{e as Collection,t as Highlight,r as HybridTerrainProvider,i as SilhouetteHighlight,o as SurfaceHighlight,m as cloneViewer,p as syncCamera};
@@ -1 +1 @@
1
- "use strict";var l=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var g=(n,r)=>{for(var e in r)l(n,e,{get:r[e],enumerable:!0})},h=(n,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of T(r))!P.call(n,a)&&a!==e&&l(n,a,{get:()=>r[a],enumerable:!(i=f(r,a))||i.enumerable});return n};var y=n=>h(l({},"__esModule",{value:!0}),n);var c={};g(c,{HybridTerrainProvider:()=>u});module.exports=y(c);var d=require("cesium"),o=class{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(r){this._defaultProvider=r.defaultProvider,this._fallbackProvider=r.fallbackProvider||new d.EllipsoidTerrainProvider,this._tilingScheme=r.defaultProvider.tilingScheme,this._regions=r.regions||[],this._availability=r.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(r,e,i){return this._defaultProvider.loadTileDataAvailability(r,e,i)}getLevelMaximumGeometricError(r){return this._defaultProvider.getLevelMaximumGeometricError(r)}requestTileGeometry(r,e,i,a){if(this._ready){for(let t of this._regions)if(this._regionContains(t,r,e,i))return t.provider.requestTileGeometry(r,e,i,a);return this._defaultProvider.getTileDataAvailable(r,e,i)?this._defaultProvider.requestTileGeometry(r,e,i,a):this._fallbackProvider.requestTileGeometry(r,e,i,a)}}getTileDataAvailable(r,e,i){for(let a of this._regions)if(this._regionContains(a,r,e,i)&&a.provider.getTileDataAvailable(r,e,i))return!0;return this._defaultProvider.getTileDataAvailable(r,e,i)}_regionContains(r,e,i,a){if(r.levels&&!r.levels.includes(a))return!1;if(r.tiles){let t=r.tiles.get(a);if(!t)return!1;let[s,v]=Array.isArray(t.x)?t.x:[t.x,t.x],[b,m]=Array.isArray(t.y)?t.y:[t.y,t.y];return e>=s&&e<=v&&i>=b&&i<=m}return!1}};(r=>{function n(e,i,a){return new r({regions:e.map(t=>({...t})),defaultProvider:i,fallbackProvider:a})}r.fromTileRanges=n})(o||={});var u=o;
1
+ "use strict";var u=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var p=(t,r)=>{for(var e in r)u(t,e,{get:r[e],enumerable:!0})},_=(t,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of y(r))!h.call(t,a)&&a!==e&&u(t,a,{get:()=>r[a],enumerable:!(i=c(r,a))||i.enumerable});return t};var x=t=>_(u({},"__esModule",{value:!0}),t);var A={};p(A,{HybridTerrainProvider:()=>m});module.exports=x(A);var b=require("cesium"),l=class t{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(r){this._defaultProvider=r.defaultProvider,this._fallbackProvider=r.fallbackProvider||new b.EllipsoidTerrainProvider,this._tilingScheme=r.defaultProvider.tilingScheme,this._regions=r.regions||[],this._availability=r.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(r,e,i){return this._defaultProvider.loadTileDataAvailability(r,e,i)}getLevelMaximumGeometricError(r){return this._defaultProvider.getLevelMaximumGeometricError(r)}requestTileGeometry(r,e,i,a){if(this._ready){for(let n of this._regions)if(t.TerrainRegion.contains(n,r,e,i))return n.provider.requestTileGeometry(r,e,i,a);return this._defaultProvider.getTileDataAvailable(r,e,i)?this._defaultProvider.requestTileGeometry(r,e,i,a):this._fallbackProvider.requestTileGeometry(r,e,i,a)}}getTileDataAvailable(r,e,i){for(let a of this._regions)if(t.TerrainRegion.contains(a,r,e,i)&&a.provider.getTileDataAvailable(r,e,i))return!0;return this._defaultProvider.getTileDataAvailable(r,e,i)}};(e=>{function t(i,a,n){return new e({regions:i.map(d=>({...d})),defaultProvider:a,fallbackProvider:n})}e.fromTileRanges=t;let r;(a=>{function i(n,d,s,v){if(n.levels&&!n.levels.includes(v))return!1;if(n.tiles){let o=n.tiles.get(v);if(!o)return!1;let[f,T]=Array.isArray(o.x)?o.x:[o.x,o.x],[P,g]=Array.isArray(o.y)?o.y:[o.y,o.y];return d>=f&&d<=T&&s>=P&&s<=g}return!1}a.contains=i})(r=e.TerrainRegion||={})})(l||={});var m=l;
@@ -1,4 +1,4 @@
1
- import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-C2iCeaf-.cjs';
1
+ import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-CVTrsFR5.cjs';
2
2
  import 'cesium';
3
3
 
4
4
  type TerrainTiles = NonNullable<HybridTerrainProvider.TerrainRegion["tiles"]>;
@@ -1,4 +1,4 @@
1
- import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-C2iCeaf-.js';
1
+ import { H as HybridTerrainProvider } from '../hybrid-terrain-provider-CVTrsFR5.js';
2
2
  import 'cesium';
3
3
 
4
4
  type TerrainTiles = NonNullable<HybridTerrainProvider.TerrainRegion["tiles"]>;
@@ -1 +1 @@
1
- import{a}from"../chunk-6I4THOWX.js";export{a as HybridTerrainProvider};
1
+ import"../chunk-6I6OKECI.js";import{a}from"../chunk-6ABRDFE5.js";export{a as HybridTerrainProvider};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juun-roh/cesium-utils",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Solve common Cesium.js challenges: combine multiple terrain sources, tag and filter entity collections, and add visual highlights.",
5
5
  "keywords": [
6
6
  "cesium",
@@ -93,19 +93,19 @@
93
93
  },
94
94
  "devDependencies": {
95
95
  "@changesets/cli": "^2.29.7",
96
- "@commitlint/cli": "^19.8.1",
97
- "@commitlint/config-conventional": "^19.8.1",
98
- "@commitlint/cz-commitlint": "^19.8.1",
99
- "@commitlint/format": "^19.8.1",
100
- "@commitlint/types": "^19.8.1",
101
- "@eslint/js": "^9.36.0",
102
- "@types/node": "^24.5.2",
103
- "@typescript-eslint/eslint-plugin": "^8.44.0",
104
- "@typescript-eslint/parser": "^8.44.0",
96
+ "@commitlint/cli": "^20.1.0",
97
+ "@commitlint/config-conventional": "^20.0.0",
98
+ "@commitlint/cz-commitlint": "^20.1.0",
99
+ "@commitlint/format": "^20.0.0",
100
+ "@commitlint/types": "^20.0.0",
101
+ "@eslint/js": "^9.37.0",
102
+ "@types/node": "^24.7.0",
103
+ "@typescript-eslint/eslint-plugin": "^8.46.0",
104
+ "@typescript-eslint/parser": "^8.46.0",
105
105
  "@vitest/coverage-v8": "^3.2.4",
106
- "cesium": "^1.133.1",
107
- "eslint": "^9.36.0",
108
- "eslint-plugin-jsdoc": "^60.1.0",
106
+ "cesium": "^1.134.0",
107
+ "eslint": "^9.37.0",
108
+ "eslint-plugin-jsdoc": "^60.8.3",
109
109
  "eslint-plugin-prettier": "^5.5.4",
110
110
  "eslint-plugin-simple-import-sort": "^12.1.1",
111
111
  "eslint-plugin-unused-imports": "^4.2.0",
@@ -114,8 +114,8 @@
114
114
  "rimraf": "^6.0.1",
115
115
  "tsup": "^8.5.0",
116
116
  "typedoc": "^0.28.13",
117
- "typescript": "^5.9.2",
118
- "vite": "^7.1.6",
117
+ "typescript": "^5.9.3",
118
+ "vite": "^7.1.9",
119
119
  "vitest": "^3.2.4"
120
120
  },
121
121
  "scripts": {
@@ -1 +0,0 @@
1
- import{EllipsoidTerrainProvider as v}from"cesium";var n=class{_regions;_defaultProvider;_fallbackProvider;_tilingScheme;_ready=!1;_availability;constructor(r){this._defaultProvider=r.defaultProvider,this._fallbackProvider=r.fallbackProvider||new v,this._tilingScheme=r.defaultProvider.tilingScheme,this._regions=r.regions||[],this._availability=r.defaultProvider.availability,this._ready=!0}get ready(){return this._ready}get tilingScheme(){return this._tilingScheme}get availability(){return this._availability}get regions(){return[...this._regions]}get defaultProvider(){return this._defaultProvider}get fallbackProvider(){return this._fallbackProvider}get credit(){return this._defaultProvider?.credit}get errorEvent(){return this._defaultProvider.errorEvent}get hasWaterMask(){return this._defaultProvider.hasWaterMask}get hasVertexNormals(){return this._defaultProvider.hasVertexNormals}loadTileDataAvailability(r,e,i){return this._defaultProvider.loadTileDataAvailability(r,e,i)}getLevelMaximumGeometricError(r){return this._defaultProvider.getLevelMaximumGeometricError(r)}requestTileGeometry(r,e,i,t){if(this._ready){for(let a of this._regions)if(this._regionContains(a,r,e,i))return a.provider.requestTileGeometry(r,e,i,t);return this._defaultProvider.getTileDataAvailable(r,e,i)?this._defaultProvider.requestTileGeometry(r,e,i,t):this._fallbackProvider.requestTileGeometry(r,e,i,t)}}getTileDataAvailable(r,e,i){for(let t of this._regions)if(this._regionContains(t,r,e,i)&&t.provider.getTileDataAvailable(r,e,i))return!0;return this._defaultProvider.getTileDataAvailable(r,e,i)}_regionContains(r,e,i,t){if(r.levels&&!r.levels.includes(t))return!1;if(r.tiles){let a=r.tiles.get(t);if(!a)return!1;let[l,d]=Array.isArray(a.x)?a.x:[a.x,a.x],[u,s]=Array.isArray(a.y)?a.y:[a.y,a.y];return e>=l&&e<=d&&i>=u&&i<=s}return!1}};(r=>{function o(e,i,t){return new r({regions:e.map(a=>({...a})),defaultProvider:i,fallbackProvider:t})}r.fromTileRanges=o})(n||={});var b=n;export{b as a};
@@ -1 +0,0 @@
1
- var I;(h=>{let o=new Set,e=typeof process<"u"?process.env.CESIUM_UTILS_DISABLE_DEPRECATION_WARNINGS!=="true":!0;function t(a,l={}){if(!e)return;let{once:c=!0,prefix:u="[DEPRECATED]",includeStack:m=!0,removeInVersion:g}=l;if(c&&o.has(a))return;let p=`${u} ${a}`;g&&(p+=` This feature will be removed in ${g}.`),typeof console<"u"&&console.warn&&(m?(console.warn(p),console.trace("Deprecation stack trace:")):console.warn(p)),c&&o.add(a)}h.warn=t;function i(a,l,c={}){let u=((...m)=>(t(l,c),a(...m)));return Object.defineProperty(u,"name",{value:a.name,configurable:!0}),u}h.deprecate=i;function r(){o.clear()}h.clear=r;function n(){return o.size}h.getWarningCount=n;function s(a){return o.has(a)}h.hasShown=s})(I||={});var P=I;import{Color as d,Entity as V,HeightReference as j,Rectangle as R,TileCoordinatesImageryProvider as G}from"cesium";import{DataSourceCollection as O,defined as T,EntityCollection as S,ImageryLayerCollection as F,PrimitiveCollection as D}from"cesium";var b=class o{static symbol=Symbol("cesium-item-tag");tag;collection;_valuesCache=null;_tagMap=new Map;_eventListeners=new Map;_eventCleanupFunctions=[];constructor({collection:e,tag:t}){this.tag=t||"default",this.collection=e,this._setupCacheInvalidator(e)}[Symbol.iterator](){return this.values[Symbol.iterator]()}get values(){if(this._valuesCache!==null)return this._valuesCache;let e;if(this.collection instanceof S)e=this.collection.values;else{e=[];for(let t=0;t<this.collection.length;t++)e.push(this.collection.get(t))}return this._valuesCache=e,e}get length(){return this.values?.length||0}get tags(){return Array.from(this._tagMap.keys())}addEventListener(e,t){return this._eventListeners.has(e)||this._eventListeners.set(e,new Set),this._eventListeners.get(e)?.add(t),this}removeEventListener(e,t){return this._eventListeners.get(e)?.delete(t),this}add(e,t=this.tag,i){return Array.isArray(e)?e.forEach(r=>{this.add(r,t)}):(Object.defineProperty(e,o.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this.collection.add(e,i),this._addToTagMap(e,t),this._invalidateCache(),this._emit("add",{items:[e],tag:t})),this}contains(e){if(typeof e=="object")return this.collection.contains(e);let t=this._tagMap.get(e);return!!t&&t.size>0}remove(e){if(typeof e=="object"&&!Array.isArray(e)&&this.collection.remove(e)&&(this._removeFromTagMap(e),this._invalidateCache(),this._emit("remove",{items:[e]})),Array.isArray(e)){if(e.length===0)return this;for(let i of e)this.remove(i)}let t=this.get(e);if(t.length===0)return this;for(let i of t)this.remove(i);return this}removeAll(){this._tagMap.clear(),this.collection.removeAll(),this._invalidateCache(),this._emit("clear")}destroy(){this._eventCleanupFunctions.forEach(e=>e()),this._eventCleanupFunctions=[],this._tagMap.clear(),this._eventListeners.clear(),this._valuesCache=null}get(e){let t=this._tagMap.get(e);return t?Array.from(t):[]}first(e){let t=this._tagMap.get(e);if(t&&t.size>0)return t.values().next().value}update(e,t){let i=this.get(e);for(let r of i)this._removeFromTagMap(r),Object.defineProperty(r,o.symbol,{value:t,enumerable:!1,writable:!0,configurable:!0}),this._addToTagMap(r,t);return i.length>0&&this._emit("update",{items:i,tag:t}),i.length}show(e){let t=this.get(e);for(let i of t)T(i.show)&&(i.show=!0);return this}hide(e){let t=this.get(e);for(let i of t)T(i.show)&&(i.show=!1);return this}toggle(e){let t=this.get(e);for(let i of t)T(i.show)&&(i.show=!i.show);return this}setProperty(e,t,i=this.tag){let r=this.get(i);for(let n of r)if(e in n&&typeof n[e]!="function"){if(E(n,e))throw Error(`Cannot set read-only property '${String(e)}' on ${n.constructor.name}`);n[e]=t}return this}filter(e,t){return(t?this.get(t):this.values).filter(e)}forEach(e,t){(t?this.get(t):this.values).forEach((r,n)=>e(r,n))}map(e,t){return(t?this.get(t):this.values).map(e)}find(e,t){return(t?this.get(t):this.values).find(e)}_emit(e,t){let i=this._eventListeners.get(e);if(i){let r={type:e,...t};i.forEach(n=>n(r))}}_addToTagMap(e,t){this._tagMap.has(t)||this._tagMap.set(t,new Set),this._tagMap.get(t)?.add(e)}_removeFromTagMap(e){let t=e[o.symbol],i=this._tagMap.get(t);i&&(i.delete(e),i.size===0&&this._tagMap.delete(t))}_invalidateCache=()=>{this._valuesCache=null};_setupCacheInvalidator(e){e instanceof S?(e.collectionChanged.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.collectionChanged.removeEventListener(this._invalidateCache))):e instanceof D?(e.primitiveAdded.addEventListener(this._invalidateCache),e.primitiveRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.primitiveAdded.removeEventListener(this._invalidateCache),()=>e.primitiveRemoved.removeEventListener(this._invalidateCache))):e instanceof O?(e.dataSourceAdded.addEventListener(this._invalidateCache),e.dataSourceMoved.addEventListener(this._invalidateCache),e.dataSourceRemoved.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.dataSourceAdded.removeEventListener(this._invalidateCache),()=>e.dataSourceMoved.removeEventListener(this._invalidateCache),()=>e.dataSourceRemoved.removeEventListener(this._invalidateCache))):e instanceof F&&(e.layerAdded.addEventListener(this._invalidateCache),e.layerMoved.addEventListener(this._invalidateCache),e.layerRemoved.addEventListener(this._invalidateCache),e.layerShownOrHidden.addEventListener(this._invalidateCache),this._eventCleanupFunctions.push(()=>e.layerAdded.removeEventListener(this._invalidateCache),()=>e.layerMoved.removeEventListener(this._invalidateCache),()=>e.layerRemoved.removeEventListener(this._invalidateCache),()=>e.layerShownOrHidden.removeEventListener(this._invalidateCache)))}},w=b;var f=class o{_viewer;_collection;_terrainProvider;_visible=!1;_level=15;_tileCoordinatesLayer;_colors=new Map([["custom",d.RED],["default",d.BLUE],["fallback",d.GRAY],["grid",d.YELLOW]]);constructor(e,t){this._viewer=e,this._collection=new w({collection:e.entities,tag:o.tag.default}),t&&(t.colors&&Object.entries(t.colors).forEach(([i,r])=>{this._colors.set(i,r)}),t.tile!==void 0&&(this._visible=t.tile),t.activeLevel!==void 0&&(this._level=t.activeLevel),t.terrainProvider&&this.setTerrainProvider(t.terrainProvider))}setTerrainProvider(e){this._terrainProvider=e,this.update()}update(){this.clear(),this._visible&&this.show(this._level)}clear(){this._collection.remove(this._collection.tags)}show(e=15){if(!this._terrainProvider)return;this._collection.remove(o.tag.grid),this._level=e,this._ensureTileCoordinatesLayer();let t=this._getVisibleRectangle();if(!t||!this._isValidRectangle(t)){console.warn("Invalid visible rectangle detected, skipping grid display");return}this._displayTileGrid(t,e),this._visible=!0}_ensureTileCoordinatesLayer(){this._tileCoordinatesLayer||(this._tileCoordinatesLayer=this._viewer.imageryLayers.addImageryProvider(new G({tilingScheme:this._terrainProvider.tilingScheme,color:d.YELLOW})))}_isValidRectangle(e){return e&&Number.isFinite(e.west)&&Number.isFinite(e.south)&&Number.isFinite(e.east)&&Number.isFinite(e.north)&&e.west<=e.east&&e.south<=e.north}_displayTileGrid(e,t){let i=this._terrainProvider.tilingScheme;try{let r=this._calculateTileBounds(e,t,i);this._generateVisibleTiles(r,t,i).forEach(s=>{this._collection.add(s.entity,o.tag.grid)})}catch(r){console.error("Error displaying tile grid:",r)}}_calculateTileBounds(e,t,i){let r=i.positionToTileXY(R.northwest(e),t),n=i.positionToTileXY(R.southeast(e),t);if(!r||!n)throw new Error("Failed to calculate tile bounds");return{start:r,end:n}}_generateVisibleTiles(e,t,i){let r=[],s=Math.min(e.end.x-e.start.x+1,100),h=Math.min(e.end.y-e.start.y+1,100);for(let a=e.start.x;a<e.start.x+s;a++)for(let l=e.start.y;l<e.start.y+h;l++)try{let c=this._createTileEntity(a,l,t,i);c&&r.push({entity:c})}catch(c){console.warn(`Error creating tile (${a}, ${l}, ${t}):`,c)}return r}_createTileEntity(e,t,i,r){let n=r.tileXYToRectangle(e,t,i);if(!this._isValidRectangle(n))return null;let s=this._getTileColor(e,t,i),h=o.createRectangle(n,s.withAlpha(.3));return h.properties?.addProperty("tileX",e),h.properties?.addProperty("tileY",t),h.properties?.addProperty("tileLevel",i),h}_getTileColor(e,t,i){if(!this._terrainProvider)return this._colors.get("fallback")||d.TRANSPARENT;for(let r of this._terrainProvider.regions)if(this._terrainProvider._regionContains(r,e,t,i))return this._colors.get("custom")||d.RED;return this._terrainProvider.getTileDataAvailable(e,t,i)?this._colors.get("default")||d.BLUE:this._colors.get("fallback")||d.GRAY}hide(){this._collection.remove(o.tag.grid),this._tileCoordinatesLayer&&(this._viewer.imageryLayers.remove(this._tileCoordinatesLayer),this._tileCoordinatesLayer=void 0),this._visible=!1}setColors(e){Object.entries(e).forEach(([t,i])=>{this._colors.set(t,i)}),this.update()}flyTo(e,t){this._viewer.camera.flyTo({destination:e,...t,complete:()=>{this._visible&&this.update()}})}_getVisibleRectangle(){return this._viewer.camera.computeViewRectangle()}get level(){return this._level}set level(e){this._level=e,this._visible&&this.update()}get visible(){return this._visible}get collection(){return this._collection}get viewer(){return this._viewer}get colors(){return this._colors}get terrainProvider(){return this._terrainProvider}};(i=>{i.tag={default:"Terrain Visualizer",boundary:"Terrain Visualizer Boundary",grid:"Terrain Visualizer Tile Grid"};function e(r,n){return new V({rectangle:{coordinates:r,material:n,heightReference:j.CLAMP_TO_GROUND}})}i.createRectangle=e;function t(r,n,s){let h=s?.tag||"terrain_region_visualization",a=s?.color||d.RED,l=s?.maxTilesToShow||100,c=s?.show??!0,u=s?.alpha||.7,m=s?.tileAlpha||.2,g=new w({collection:n.entities,tag:h});if(c&&r.tiles&&r.tiles.size>0){let p=r.provider.tilingScheme,y=0;r.tiles.forEach((v,A)=>{let L=Array.isArray(v.x)?v.x:[v.x,v.x],x=Array.isArray(v.y)?v.y:[v.y,v.y];for(let C=L[0];C<=L[1]&&y<l;C++)for(let _=x[0];_<=x[1]&&y<l;_++){let M=p.tileXYToRectangle(C,_,A);g.add(e(M,a.withAlpha(m)),`${h}_tile`),y++}})}return g}i.visualize=t})(f||={});function E(o,e){let t=!1,i=Object.getOwnPropertyDescriptor(o,e);if(!i){let r=Object.getPrototypeOf(o);for(;r&&!i;)i=Object.getOwnPropertyDescriptor(r,e),r=Object.getPrototypeOf(r)}return i&&i.get&&!i.set&&(t=!0),t}var ee=P.deprecate;export{P as a,f as b,E as c,ee as d,w as e};