@deck.gl/geo-layers 8.6.3 → 8.7.0-alpha.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tileset-2d.js"],"names":["TILE_STATE_UNKNOWN","TILE_STATE_VISIBLE","TILE_STATE_PLACEHOLDER","TILE_STATE_HIDDEN","TILE_STATE_SELECTED","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","Tileset2D","constructor","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","setOptions","tiles","selectedTiles","isLoaded","every","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","finalize","values","isLoading","abort","clear","reloadAll","tileId","keys","get","includes","delete","setNeedsReload","update","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","Matrix4","isModelMatrixNew","equals","_modelMatrix","_modelMatrixInverse","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","tileSize","extent","zoomOffset","getTileMetadata","x","y","z","bbox","getParentIndex","tileIndex","_updateTileStates","abortCandidates","ongoingRequestCount","isVisible","Boolean","state","isSelected","push","length","shift","parent","children","_getNearestAncestor","refinementStrategy","getPlaceholderInAncestors","needsPlaceholder","getPlaceholderInChildren","maxCacheSize","Infinity","overflown","size","onTileUnload","Array","from","sort","t1","t2","create","needsReload","Tile2DHeader","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","t","max","child"],"mappings":"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","sourcesContent":["import Tile2DHeader from './tile-2d-header';\nimport {getTileIndices, tileToBoundingBox} from './utils';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4} from 'math.gl';\n\nconst TILE_STATE_UNKNOWN = 0;\nconst TILE_STATE_VISIBLE = 1;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\nconst TILE_STATE_PLACEHOLDER = 3;\nconst TILE_STATE_HIDDEN = 4;\n// tiles that should be displayed in the current viewport\nconst TILE_STATE_SELECTED = 5;\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nconst DEFAULT_CACHE_SCALE = 5;\n\n/**\n * Manages loading and purging of tiles data. This class caches recently visited tiles\n * and only create new tiles if they are present.\n */\n\nexport default class Tileset2D {\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts) {\n this.opts = opts;\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: opts.maxRequests > 0\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles() {\n return this._selectedTiles;\n }\n\n get isLoaded() {\n return this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n setOptions(opts) {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize() {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll() {\n for (const tileId of this._cache.keys()) {\n const tile = this._cache.get(tileId);\n if (!this._selectedTiles.includes(tile)) {\n this._cache.delete(tileId);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n * @param {*} viewport\n * @param {*} onUpdate\n * @param {*} modelMatrix\n */\n update(viewport, {zRange, modelMatrix} = {}) {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (!viewport.equals(this._viewport) || isModelMatrixNew) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrix && modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrix && modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n /* Public interface for subclassing */\n\n // Returns array of {x, y, z}\n getTileIndices({viewport, maxZoom, minZoom, zRange, modelMatrix, modelMatrixInverse}) {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n // Add custom metadata to tiles\n getTileMetadata({x, y, z}) {\n const {tileSize} = this.opts;\n return {bbox: tileToBoundingBox(this._viewport, x, y, z, tileSize)};\n }\n\n // Returns {x, y, z} of the parent tile\n getParentIndex(tileIndex) {\n // Perf: mutate the input object to avoid GC\n tileIndex.x = Math.floor(tileIndex.x / 2);\n tileIndex.y = Math.floor(tileIndex.y / 2);\n tileIndex.z -= 1;\n return tileIndex;\n }\n\n // Returns true if any tile's visibility changed\n updateTileStates() {\n this._updateTileStates(this.selectedTiles);\n\n const {maxRequests} = this.opts;\n\n const abortCandidates = [];\n let ongoingRequestCount = 0;\n let changed = false;\n for (const tile of this._cache.values()) {\n const isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n if (tile.isVisible !== isVisible) {\n changed = true;\n tile.isVisible = isVisible;\n }\n\n // isSelected used in request scheduler\n tile.isSelected = tile.state === TILE_STATE_SELECTED;\n\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected) {\n abortCandidates.push(tile);\n }\n }\n }\n\n if (maxRequests > 0) {\n while (ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift();\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n return changed;\n }\n\n /* Private methods */\n\n // This needs to be called every time some tiles have been added/removed from cache\n _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n tile.children.length = 0;\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile.x, tile.y, tile.z);\n tile.parent = parent;\n if (parent) {\n parent.children.push(tile);\n }\n }\n }\n\n // A selected tile is always visible.\n // Never show two overlapping tiles.\n // If a selected tile is loading, try showing a cached ancester with the closest z\n // If a selected tile is loading, and no ancester is shown - try showing cached\n // descendants with the closest z\n _updateTileStates(selectedTiles) {\n const {_cache} = this;\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.state = TILE_STATE_UNKNOWN;\n }\n\n // For all the selected && pending tiles:\n // - pick the closest ancestor as placeholder\n // - if no ancestor is visible, pick the closest children as placeholder\n for (const tile of selectedTiles) {\n tile.state = TILE_STATE_SELECTED;\n }\n\n if (refinementStrategy === STRATEGY_NEVER) {\n return;\n }\n for (const tile of selectedTiles) {\n getPlaceholderInAncestors(tile, refinementStrategy);\n }\n for (const tile of selectedTiles) {\n if (needsPlaceholder(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n _resizeCache() {\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [tileId, tile] of _cache) {\n if (!tile.isVisible) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(tileId);\n this.opts.onTileUnload(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n this._tiles = Array.from(this._cache.values())\n // sort by zoom level so that smaller tiles are displayed on top\n .sort((t1, t2) => t1.z - t2.z);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n _getTile({x, y, z}, create) {\n const tileId = `${x},${y},${z}`;\n let tile = this._cache.get(tileId);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader({x, y, z});\n Object.assign(tile, this.getTileMetadata(tile));\n needsReload = true;\n this._cache.set(tileId, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (needsReload) {\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(x, y, z) {\n const {_minZoom = 0} = this;\n let index = {x, y, z};\n\n while (index.z > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n// A selected tile needs placeholder from its children if\n// - it is not loaded\n// - none of its ancestors is visible and loaded\nfunction needsPlaceholder(tile) {\n let t = tile;\n while (t) {\n if (t.state & (TILE_STATE_VISIBLE === 0)) {\n return true;\n }\n if (t.isLoaded) {\n return false;\n }\n t = t.parent;\n }\n return true;\n}\n\nfunction getPlaceholderInAncestors(tile, refinementStrategy) {\n let parent;\n let state = TILE_STATE_PLACEHOLDER;\n while ((parent = tile.parent)) {\n if (tile.isLoaded) {\n // If a tile is loaded, mark all its ancestors as hidden\n state = TILE_STATE_HIDDEN;\n if (refinementStrategy === STRATEGY_DEFAULT) {\n return;\n }\n }\n parent.state = Math.max(parent.state, state);\n tile = parent;\n }\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n child.state = Math.max(child.state, TILE_STATE_PLACEHOLDER);\n if (!child.isLoaded) {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tileset-2d.js"],"names":["TILE_STATE_UNKNOWN","TILE_STATE_VISIBLE","TILE_STATE_PLACEHOLDER","TILE_STATE_HIDDEN","TILE_STATE_SELECTED","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","Tileset2D","constructor","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","setOptions","tiles","selectedTiles","isLoaded","every","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","finalize","values","isLoading","abort","clear","reloadAll","tileId","keys","get","includes","delete","setNeedsReload","update","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","Matrix4","isModelMatrixNew","equals","_modelMatrix","_modelMatrixInverse","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","tileSize","extent","zoomOffset","getTileMetadata","x","y","z","bbox","getParentIndex","tileIndex","_updateTileStates","abortCandidates","ongoingRequestCount","isVisible","Boolean","state","isSelected","push","length","shift","parent","children","_getNearestAncestor","refinementStrategy","getPlaceholderInAncestors","needsPlaceholder","getPlaceholderInChildren","maxCacheSize","Infinity","overflown","size","onTileUnload","Array","from","sort","t1","t2","create","needsReload","Tile2DHeader","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","t","max","child"],"mappings":"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","sourcesContent":["import Tile2DHeader from './tile-2d-header';\nimport {getTileIndices, tileToBoundingBox} from './utils';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4} from 'math.gl';\n\nconst TILE_STATE_UNKNOWN = 0;\nconst TILE_STATE_VISIBLE = 1;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\nconst TILE_STATE_PLACEHOLDER = 3;\nconst TILE_STATE_HIDDEN = 4;\n// tiles that should be displayed in the current viewport\nconst TILE_STATE_SELECTED = 5;\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nconst DEFAULT_CACHE_SCALE = 5;\n\n/**\n * Manages loading and purging of tiles data. This class caches recently visited tiles\n * and only create new tiles if they are present.\n */\n\nexport default class Tileset2D {\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts) {\n this.opts = opts;\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: opts.maxRequests > 0\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles() {\n return this._selectedTiles;\n }\n\n get isLoaded() {\n return this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n setOptions(opts) {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize() {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll() {\n for (const tileId of this._cache.keys()) {\n const tile = this._cache.get(tileId);\n if (!this._selectedTiles.includes(tile)) {\n this._cache.delete(tileId);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n * @param {*} viewport\n * @param {*} onUpdate\n * @param {*} modelMatrix\n */\n update(viewport, {zRange, modelMatrix} = {}) {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (!viewport.equals(this._viewport) || isModelMatrixNew) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrix && modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrix && modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n /* Public interface for subclassing */\n\n // Returns array of {x, y, z}\n getTileIndices({viewport, maxZoom, minZoom, zRange, modelMatrix, modelMatrixInverse}) {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n // Add custom metadata to tiles\n getTileMetadata({x, y, z}) {\n const {tileSize} = this.opts;\n return {bbox: tileToBoundingBox(this._viewport, x, y, z, tileSize)};\n }\n\n // Returns {x, y, z} of the parent tile\n getParentIndex(tileIndex) {\n // Perf: mutate the input object to avoid GC\n tileIndex.x = Math.floor(tileIndex.x / 2);\n tileIndex.y = Math.floor(tileIndex.y / 2);\n tileIndex.z -= 1;\n return tileIndex;\n }\n\n // Returns true if any tile's visibility changed\n updateTileStates() {\n this._updateTileStates(this.selectedTiles);\n\n const {maxRequests} = this.opts;\n\n const abortCandidates = [];\n let ongoingRequestCount = 0;\n let changed = false;\n for (const tile of this._cache.values()) {\n const isVisible = Boolean(tile.state & TILE_STATE_VISIBLE);\n if (tile.isVisible !== isVisible) {\n changed = true;\n tile.isVisible = isVisible;\n }\n\n // isSelected used in request scheduler\n tile.isSelected = tile.state === TILE_STATE_SELECTED;\n\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected) {\n abortCandidates.push(tile);\n }\n }\n }\n\n if (maxRequests > 0) {\n while (ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift();\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n return changed;\n }\n\n /* Private methods */\n\n // This needs to be called every time some tiles have been added/removed from cache\n _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n tile.children.length = 0;\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile.x, tile.y, tile.z);\n tile.parent = parent;\n if (parent) {\n parent.children.push(tile);\n }\n }\n }\n\n // A selected tile is always visible.\n // Never show two overlapping tiles.\n // If a selected tile is loading, try showing a cached ancester with the closest z\n // If a selected tile is loading, and no ancester is shown - try showing cached\n // descendants with the closest z\n _updateTileStates(selectedTiles) {\n const {_cache} = this;\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.state = TILE_STATE_UNKNOWN;\n }\n\n // For all the selected && pending tiles:\n // - pick the closest ancestor as placeholder\n // - if no ancestor is visible, pick the closest children as placeholder\n for (const tile of selectedTiles) {\n tile.state = TILE_STATE_SELECTED;\n }\n\n if (refinementStrategy === STRATEGY_NEVER) {\n return;\n }\n for (const tile of selectedTiles) {\n getPlaceholderInAncestors(tile, refinementStrategy);\n }\n for (const tile of selectedTiles) {\n if (needsPlaceholder(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n _resizeCache() {\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [tileId, tile] of _cache) {\n if (!tile.isVisible) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(tileId);\n this.opts.onTileUnload(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n this._tiles = Array.from(this._cache.values())\n // sort by zoom level so that smaller tiles are displayed on top\n .sort((t1, t2) => t1.z - t2.z);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n _getTile({x, y, z}, create) {\n const tileId = `${x},${y},${z}`;\n let tile = this._cache.get(tileId);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader({x, y, z});\n Object.assign(tile, this.getTileMetadata(tile));\n needsReload = true;\n this._cache.set(tileId, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (needsReload) {\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(x, y, z) {\n const {_minZoom = 0} = this;\n let index = {x, y, z};\n\n while (index.z > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n// A selected tile needs placeholder from its children if\n// - it is not loaded\n// - none of its ancestors is visible and loaded\nfunction needsPlaceholder(tile) {\n let t = tile;\n while (t) {\n if (t.state & (TILE_STATE_VISIBLE === 0)) {\n return true;\n }\n if (t.isLoaded) {\n return false;\n }\n t = t.parent;\n }\n return true;\n}\n\nfunction getPlaceholderInAncestors(tile, refinementStrategy) {\n let parent;\n let state = TILE_STATE_PLACEHOLDER;\n while ((parent = tile.parent)) {\n if (tile.isLoaded) {\n // If a tile is loaded, mark all its ancestors as hidden\n state = TILE_STATE_HIDDEN;\n if (refinementStrategy === STRATEGY_DEFAULT) {\n return;\n }\n }\n parent.state = Math.max(parent.state, state);\n tile = parent;\n }\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n child.state = Math.max(child.state, TILE_STATE_PLACEHOLDER);\n if (!child.isLoaded) {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","setState","data","tileJSON","isLoaded","state","tileset","updateState","props","oldProps","context","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","renderSubLayers","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","Array","isArray","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from 'math.gl';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
1
+ {"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","setState","data","tileJSON","isLoaded","state","tileset","updateState","props","oldProps","context","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","x","y","z","mimeType","mvt","coordinates","viewport","resolution","tileIndex","gis","format","renderSubLayers","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","index","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","Array","isArray","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","undefined","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from 'math.gl';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n this.setState({\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary, fetch} = this.props;\n const {signal, x, y, z} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: {x, y, z}\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {tile} = props;\n const worldScale = Math.pow(2, tile.z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * tile.x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - tile.y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.props.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.props.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.props.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.props.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/s2-layer/s2-utils.js"],"names":["toHilbertQuadkey","FromHilbertQuadKey","IJToST","STToUV","FaceUVToXYZ","XYZToLngLat","Long","getIdFromToken","token","paddedToken","padEnd","fromString","MAX_RESOLUTION","getGeoBounds","face","ij","level","offsets","resolution","Math","max","ceil","pow","result","Float64Array","ptIndex","prevLng","i","offset","slice","nextOffset","stepI","stepJ","j","st","uv","xyz","lngLat","abs","deltaLng","getS2QuadKey","indexOf","toString","getS2Polygon","key","s2cell"],"mappings":"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","sourcesContent":["// s2-geometry is a pure JavaScript port of Google/Niantic's S2 Geometry library\n// which is perfect since it works in the browser.\nimport {\n toHilbertQuadkey,\n FromHilbertQuadKey,\n IJToST,\n STToUV,\n FaceUVToXYZ,\n XYZToLngLat\n} from './s2-geometry';\nimport Long from 'long';\n\n/**\n * Given an S2 token this function convert the token to 64 bit id\n https://github.com/google/s2-geometry-library-java/blob/c04b68bf3197a9c34082327eeb3aec7ab7c85da1/src/com/google/common/geometry/S2CellId.java#L439\n * */\nfunction getIdFromToken(token) {\n // pad token with zeros to make the length 16\n const paddedToken = token.padEnd(16, '0');\n return Long.fromString(paddedToken, 16);\n}\n\nconst MAX_RESOLUTION = 100;\n\n/* Adapted from s2-geometry's S2Cell.getCornerLatLngs */\n/* eslint-disable max-statements */\nfunction getGeoBounds({face, ij, level}) {\n const offsets = [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]];\n\n // The S2 cell edge is curved: http://s2geometry.io/\n // This is more prominent at lower levels\n // resolution is the number of segments to generate per edge.\n // We exponentially reduce resolution as level increases so it doesn't affect perf\n // when there are a large number of cells\n const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));\n const result = new Float64Array(4 * resolution * 2 + 2);\n let ptIndex = 0;\n let prevLng = 0;\n\n for (let i = 0; i < 4; i++) {\n const offset = offsets[i].slice(0);\n const nextOffset = offsets[i + 1];\n const stepI = (nextOffset[0] - offset[0]) / resolution;\n const stepJ = (nextOffset[1] - offset[1]) / resolution;\n\n for (let j = 0; j < resolution; j++) {\n offset[0] += stepI;\n offset[1] += stepJ;\n // Cell can be represented by coordinates IJ, ST, UV, XYZ\n // http://s2geometry.io/devguide/s2cell_hierarchy#coordinate-systems\n const st = IJToST(ij, level, offset);\n const uv = STToUV(st);\n const xyz = FaceUVToXYZ(face, uv);\n const lngLat = XYZToLngLat(xyz);\n\n // Adjust longitude for Web Mercator projection\n if (Math.abs(lngLat[1]) > 89.999) {\n lngLat[0] = prevLng;\n }\n const deltaLng = lngLat[0] - prevLng;\n lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;\n\n result[ptIndex++] = lngLat[0];\n result[ptIndex++] = lngLat[1];\n prevLng = lngLat[0];\n }\n }\n // close the loop\n result[ptIndex++] = result[0];\n result[ptIndex++] = result[1];\n return result;\n}\n/* eslint-enable max-statements */\n\nexport function getS2QuadKey(token) {\n if (typeof token === 'string') {\n if (token.indexOf('/') > 0) {\n // is Hilbert quad key\n return token;\n }\n // is S2 token\n token = getIdFromToken(token);\n }\n // is Long id\n return toHilbertQuadkey(token.toString());\n}\n\n/**\n * Get a polygon with corner coordinates for an s2 cell\n * @param {*} cell - This can be an S2 key or token\n * @return {Array} - a simple polygon in array format: [[lng, lat], ...]\n * - each coordinate is an array [lng, lat]\n * - the polygon is closed, i.e. last coordinate is a copy of the first coordinate\n */\nexport function getS2Polygon(token) {\n const key = getS2QuadKey(token);\n const s2cell = FromHilbertQuadKey(key);\n\n return getGeoBounds(s2cell);\n}\n"],"file":"s2-utils.js"}
1
+ {"version":3,"sources":["../../../src/s2-layer/s2-utils.js"],"names":["toHilbertQuadkey","FromHilbertQuadKey","IJToST","STToUV","FaceUVToXYZ","XYZToLngLat","Long","getIdFromToken","token","paddedToken","padEnd","fromString","MAX_RESOLUTION","getGeoBounds","face","ij","level","offsets","resolution","Math","max","ceil","pow","result","Float64Array","ptIndex","prevLng","i","offset","slice","nextOffset","stepI","stepJ","j","st","uv","xyz","lngLat","abs","deltaLng","getS2QuadKey","indexOf","toString","getS2Polygon","key","s2cell"],"mappings":"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","sourcesContent":["// s2-geometry is a pure JavaScript port of Google/Niantic's S2 Geometry library\n// which is perfect since it works in the browser.\nimport {\n toHilbertQuadkey,\n FromHilbertQuadKey,\n IJToST,\n STToUV,\n FaceUVToXYZ,\n XYZToLngLat\n} from './s2-geometry';\nimport Long from 'long';\n\n/**\n * Given an S2 token this function convert the token to 64 bit id\n https://github.com/google/s2-geometry-library-java/blob/c04b68bf3197a9c34082327eeb3aec7ab7c85da1/src/com/google/common/geometry/S2CellId.java#L439\n * */\nfunction getIdFromToken(token) {\n // pad token with zeros to make the length 16\n const paddedToken = token.padEnd(16, '0');\n return Long.fromString(paddedToken, 16);\n}\n\nconst MAX_RESOLUTION = 100;\n\n/* Adapted from s2-geometry's S2Cell.getCornerLatLngs */\n/* eslint-disable max-statements */\nfunction getGeoBounds({face, ij, level}) {\n const offsets = [\n [0, 0],\n [0, 1],\n [1, 1],\n [1, 0],\n [0, 0]\n ];\n\n // The S2 cell edge is curved: http://s2geometry.io/\n // This is more prominent at lower levels\n // resolution is the number of segments to generate per edge.\n // We exponentially reduce resolution as level increases so it doesn't affect perf\n // when there are a large number of cells\n const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));\n const result = new Float64Array(4 * resolution * 2 + 2);\n let ptIndex = 0;\n let prevLng = 0;\n\n for (let i = 0; i < 4; i++) {\n const offset = offsets[i].slice(0);\n const nextOffset = offsets[i + 1];\n const stepI = (nextOffset[0] - offset[0]) / resolution;\n const stepJ = (nextOffset[1] - offset[1]) / resolution;\n\n for (let j = 0; j < resolution; j++) {\n offset[0] += stepI;\n offset[1] += stepJ;\n // Cell can be represented by coordinates IJ, ST, UV, XYZ\n // http://s2geometry.io/devguide/s2cell_hierarchy#coordinate-systems\n const st = IJToST(ij, level, offset);\n const uv = STToUV(st);\n const xyz = FaceUVToXYZ(face, uv);\n const lngLat = XYZToLngLat(xyz);\n\n // Adjust longitude for Web Mercator projection\n if (Math.abs(lngLat[1]) > 89.999) {\n lngLat[0] = prevLng;\n }\n const deltaLng = lngLat[0] - prevLng;\n lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;\n\n result[ptIndex++] = lngLat[0];\n result[ptIndex++] = lngLat[1];\n prevLng = lngLat[0];\n }\n }\n // close the loop\n result[ptIndex++] = result[0];\n result[ptIndex++] = result[1];\n return result;\n}\n/* eslint-enable max-statements */\n\nexport function getS2QuadKey(token) {\n if (typeof token === 'string') {\n if (token.indexOf('/') > 0) {\n // is Hilbert quad key\n return token;\n }\n // is S2 token\n token = getIdFromToken(token);\n }\n // is Long id\n return toHilbertQuadkey(token.toString());\n}\n\n/**\n * Get a polygon with corner coordinates for an s2 cell\n * @param {*} cell - This can be an S2 key or token\n * @return {Array} - a simple polygon in array format: [[lng, lat], ...]\n * - each coordinate is an array [lng, lat]\n * - the polygon is closed, i.e. last coordinate is a copy of the first coordinate\n */\nexport function getS2Polygon(token) {\n const key = getS2QuadKey(token);\n const s2cell = FromHilbertQuadKey(key);\n\n return getGeoBounds(s2cell);\n}\n"],"file":"s2-utils.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["Geometry","COORDINATE_SYSTEM","CompositeLayer","PointCloudLayer","ScenegraphLayer","default","_MeshLayer","log","load","Tileset3D","TILE_TYPE","Tiles3DLoader","SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","initializeState","props","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","shouldUpdateState","changeFlags","somethingChanged","updateState","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","activateViewport","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","getPickingInfo","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","filterSubLayer","layer","viewportId","selected","viewportIds","includes","_updateAutoHighlight","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","_onTileLoad","bind","_onTileUnload","onTileLoadFail","setState","viewports","timeline","context","frameNumber","update","values","tilesetChanged","_getSubLayer","oldLayer","content","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","getSubLayerProps","coordinateSystem","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","drawMode","getMeshGeometry","pbrMaterial","renderLayers","tiles","map","layerCache","filter","Boolean","contentAttributes","Float32Array","texCoords","uvRegions","layerName"],"mappings":"AACA,SAAQA,QAAR,QAAuB,eAAvB;AACA,SAAQC,iBAAR,EAA2BC,cAA3B,QAAgD,eAAhD;AACA,SAAQC,eAAR,QAA8B,iBAA9B;AACA,SAAQC,eAAR,QAA8B,sBAA9B;AACA,SAAQC,OAAO,IAAIC,UAAnB,QAAoC,0BAApC;AACA,SAAQC,GAAR,QAAkB,eAAlB;AAEA,SAAQC,IAAR,QAAmB,kBAAnB;AACA,SAAQC,SAAR,EAAmBC,SAAnB,QAAmC,mBAAnC;AACA,SAAQC,aAAR,QAA4B,sBAA5B;AAEA,MAAMC,WAAW,GAAG,CAAC,CAAD,CAApB;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,aAAa,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,GAAV;AAA1B,GADI;AAEnBC,EAAAA,SAAS,EAAE,GAFQ;AAInBC,EAAAA,IAAI,EAAE,IAJa;AAKnBC,EAAAA,MAAM,EAAER,aALW;AAOnBS,EAAAA,aAAa,EAAE;AAACL,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAEK,SAAS,IAAI,CAAE,CAAzC;AAA2CC,IAAAA,OAAO,EAAE;AAApD,GAPI;AAQnBC,EAAAA,UAAU,EAAE;AAACR,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAEQ,UAAU,IAAI,CAAE,CAA1C;AAA4CF,IAAAA,OAAO,EAAE;AAArD,GARO;AASnBG,EAAAA,YAAY,EAAE;AAACV,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAEQ,UAAU,IAAI,CAAE,CAA1C;AAA4CF,IAAAA,OAAO,EAAE;AAArD,GATK;AAUnBI,EAAAA,WAAW,EAAE;AAACX,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,CAACW,IAAD,EAAOC,OAAP,EAAgBC,GAAhB,KAAwB,CAAE,CAApD;AAAsDP,IAAAA,OAAO,EAAE;AAA/D,GAVM;AAWnBQ,EAAAA,aAAa,EAAE;AAACf,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAEQ,UAAU,IAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAxC;AAAyDF,IAAAA,OAAO,EAAE;AAAlE;AAXI,CAArB;AAcA,eAAe,MAAMS,WAAN,SAA0B7B,cAA1B,CAAyC;AACtD8B,EAAAA,eAAe,GAAG;AAChB,QAAI,oBAAoB,KAAKC,KAA7B,EAAoC;AAClC1B,MAAAA,GAAG,CAAC2B,OAAJ,CAAY,gBAAZ,EAA8B,aAA9B;AACD;;AAED,SAAKC,KAAL,GAAa;AACXC,MAAAA,QAAQ,EAAE,EADC;AAEXf,MAAAA,SAAS,EAAE,IAFA;AAGXgB,MAAAA,eAAe,EAAE,EAHN;AAIXC,MAAAA,oBAAoB,EAAE;AAJX,KAAb;AAMD;;AAED,MAAIC,QAAJ,GAAe;AACb,UAAM;AAAClB,MAAAA;AAAD,QAAc,KAAKc,KAAzB;AACA,WAAOd,SAAS,IAAIA,SAAS,CAACkB,QAAV,EAApB;AACD;;AAEDC,EAAAA,iBAAiB,CAAC;AAACC,IAAAA;AAAD,GAAD,EAAgB;AAC/B,WAAOA,WAAW,CAACC,gBAAnB;AACD;;AAEDC,EAAAA,WAAW,CAAC;AAACV,IAAAA,KAAD;AAAQW,IAAAA,QAAR;AAAkBH,IAAAA;AAAlB,GAAD,EAAiC;AAC1C,QAAIR,KAAK,CAACf,IAAN,IAAce,KAAK,CAACf,IAAN,KAAe0B,QAAQ,CAAC1B,IAA1C,EAAgD;AAC9C,WAAK2B,YAAL,CAAkBZ,KAAK,CAACf,IAAxB;AACD;;AAED,QAAIuB,WAAW,CAACK,eAAhB,EAAiC;AAC/B,YAAM;AAACT,QAAAA;AAAD,UAAoB,KAAKF,KAA/B;AACA,YAAMY,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAYZ,eAAZ,EAA6Ba,MAArD;;AACA,UAAIH,eAAJ,EAAqB;AACnB,aAAKI,cAAL,CAAoBd,eAApB;;AACA,aAAKF,KAAL,CAAWG,oBAAX,GAAkCD,eAAlC;AACA,aAAKF,KAAL,CAAWE,eAAX,GAA6B,EAA7B;AACD;AACF;;AACD,QAAII,WAAW,CAACW,YAAhB,EAA8B;AAC5B,YAAM;AAAChB,QAAAA;AAAD,UAAa,KAAKD,KAAxB;;AACA,WAAK,MAAMkB,GAAX,IAAkBjB,QAAlB,EAA4B;AAC1BA,QAAAA,QAAQ,CAACiB,GAAD,CAAR,CAAcC,WAAd,GAA4B,IAA5B;AACD;AACF;AACF;;AAEDC,EAAAA,gBAAgB,CAACC,QAAD,EAAW;AACzB,UAAM;AAACnB,MAAAA,eAAD;AAAkBC,MAAAA;AAAlB,QAA0C,KAAKH,KAArD;AACA,SAAKsB,aAAL,CAAmBD,QAAnB,GAA8BA,QAA9B;AAEAnB,IAAAA,eAAe,CAACmB,QAAQ,CAACE,EAAV,CAAf,GAA+BF,QAA/B;AACA,UAAMG,YAAY,GAAGrB,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAGkB,QAAQ,CAACE,EAAZ,CAAzC;;AACA,QAAI,CAACC,YAAD,IAAiB,CAACH,QAAQ,CAACI,MAAT,CAAgBD,YAAhB,CAAtB,EAAqD;AACnD,WAAKE,cAAL,CAAoB;AAACf,QAAAA,eAAe,EAAE;AAAlB,OAApB;AACA,WAAKgB,cAAL;AACD;AACF;;AAEDC,EAAAA,cAAc,CAAC;AAACC,IAAAA,IAAD;AAAOC,IAAAA;AAAP,GAAD,EAAsB;AAClC,UAAM;AAAC7B,MAAAA;AAAD,QAAa,KAAKD,KAAxB;AACA,UAAM+B,OAAO,GAAGD,WAAW,IAAIA,WAAW,CAACP,EAA3C;;AACA,QAAIQ,OAAJ,EAAa;AAEX,YAAMC,MAAM,GAAGD,OAAO,CAACE,SAAR,CAAkB,KAAKV,EAAL,CAAQR,MAAR,GAAiB,CAAnC,CAAf;AACA,YAAMmB,MAAM,GAAGF,MAAM,CAACC,SAAP,CAAiBD,MAAM,CAACG,OAAP,CAAe,GAAf,IAAsB,CAAvC,CAAf;AACAN,MAAAA,IAAI,CAACO,MAAL,GAAcnC,QAAQ,CAACiC,MAAD,CAAR,IAAoBjC,QAAQ,CAACiC,MAAD,CAAR,CAAiB1C,IAAnD;AACD;;AAED,WAAOqC,IAAP;AACD;;AAEDQ,EAAAA,cAAc,CAAC;AAACC,IAAAA,KAAD;AAAQjB,IAAAA;AAAR,GAAD,EAAoB;AAChC,UAAM;AAAC7B,MAAAA;AAAD,QAAS8C,KAAK,CAACxC,KAArB;AACA,UAAM;AAACyB,MAAAA,EAAE,EAAEgB;AAAL,QAAmBlB,QAAzB;AACA,WAAO7B,IAAI,CAACgD,QAAL,IAAiBhD,IAAI,CAACiD,WAAL,CAAiBC,QAAjB,CAA0BH,UAA1B,CAAxB;AACD;;AAEDI,EAAAA,oBAAoB,CAACd,IAAD,EAAO;AACzB,QAAIA,IAAI,CAACC,WAAT,EAAsB;AACpBD,MAAAA,IAAI,CAACC,WAAL,CAAiBc,mBAAjB,CAAqCf,IAArC;AACD;AACF;;AAED,QAAMnB,YAAN,CAAmBmC,UAAnB,EAA+B;AAC7B,UAAM;AAACC,MAAAA,WAAW,GAAG;AAAf,QAAqB,KAAKhD,KAAhC;AAGA,QAAId,MAAM,GAAG,KAAKc,KAAL,CAAWd,MAAX,IAAqB,KAAKc,KAAL,CAAWiD,OAA7C;;AACA,QAAIC,KAAK,CAACC,OAAN,CAAcjE,MAAd,CAAJ,EAA2B;AACzBA,MAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf;AACD;;AAED,UAAMkE,OAAO,GAAG;AAACJ,MAAAA,WAAW,EAAE,EAAC,GAAGA;AAAJ;AAAd,KAAhB;;AACA,QAAI9D,MAAM,CAACmE,OAAX,EAAoB;AAClB,YAAMC,cAAc,GAAG,MAAMpE,MAAM,CAACmE,OAAP,CAAeN,UAAf,EAA2BC,WAA3B,CAA7B;;AAEA,UAAIM,cAAc,CAACC,OAAnB,EAA4B;AAC1BH,QAAAA,OAAO,CAACJ,WAAR,CAAoBQ,KAApB,GAA4B,EAC1B,GAAGJ,OAAO,CAACJ,WAAR,CAAoBQ,KADG;AAE1BD,UAAAA,OAAO,EAAED,cAAc,CAACC;AAFE,SAA5B;AAID;;AACDxC,MAAAA,MAAM,CAAC0C,MAAP,CAAcL,OAAd,EAAuBE,cAAvB;AACD;;AACD,UAAMI,WAAW,GAAG,MAAMnF,IAAI,CAACwE,UAAD,EAAa7D,MAAb,EAAqBkE,OAAO,CAACJ,WAA7B,CAA9B;AAEA,UAAM5D,SAAS,GAAG,IAAIZ,SAAJ,CAAckF,WAAd,EAA2B;AAC3CpE,MAAAA,UAAU,EAAE,KAAKqE,WAAL,CAAiBC,IAAjB,CAAsB,IAAtB,CAD+B;AAE3CpE,MAAAA,YAAY,EAAE,KAAKqE,aAAL,CAAmBD,IAAnB,CAAwB,IAAxB,CAF6B;AAG3CE,MAAAA,cAAc,EAAE,KAAK9D,KAAL,CAAWP,WAHgB;AAI3C,SAAG2D;AAJwC,KAA3B,CAAlB;AAOA,SAAKW,QAAL,CAAc;AACZ3E,MAAAA,SADY;AAEZe,MAAAA,QAAQ,EAAE;AAFE,KAAd;;AAKA,SAAKe,cAAL,CAAoB,KAAKhB,KAAL,CAAWE,eAA/B;;AACA,SAAKJ,KAAL,CAAWb,aAAX,CAAyBC,SAAzB;AACD;;AAEDuE,EAAAA,WAAW,CAACpE,UAAD,EAAa;AACtB,UAAM;AAACc,MAAAA;AAAD,QAAyB,KAAKH,KAApC;AACA,SAAKF,KAAL,CAAWV,UAAX,CAAsBC,UAAtB;;AACA,SAAK2B,cAAL,CAAoBb,oBAApB;;AACA,SAAKwB,cAAL;AACD;;AAEDgC,EAAAA,aAAa,CAACtE,UAAD,EAAa;AAExB,WAAO,KAAKW,KAAL,CAAWC,QAAX,CAAoBZ,UAAU,CAACkC,EAA/B,CAAP;AACA,SAAKzB,KAAL,CAAWR,YAAX,CAAwBD,UAAxB;AACD;;AAED2B,EAAAA,cAAc,CAAC8C,SAAD,EAAY;AACxB,UAAM;AAAC5E,MAAAA;AAAD,QAAc,KAAKc,KAAzB;AACA,UAAM;AAAC+D,MAAAA;AAAD,QAAa,KAAKC,OAAxB;AACA,UAAMpD,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAYgD,SAAZ,EAAuB/C,MAA/C;;AACA,QAAI,CAACgD,QAAD,IAAa,CAACnD,eAAd,IAAiC,CAAC1B,SAAtC,EAAiD;AAC/C;AACD;;AACD,UAAM+E,WAAW,GAAG/E,SAAS,CAACgF,MAAV,CAAiBrD,MAAM,CAACsD,MAAP,CAAcL,SAAd,CAAjB,CAApB;AACA,UAAMM,cAAc,GAAG,KAAKpE,KAAL,CAAWiE,WAAX,KAA2BA,WAAlD;;AACA,QAAIG,cAAJ,EAAoB;AAClB,WAAKP,QAAL,CAAc;AAACI,QAAAA;AAAD,OAAd;AACD;AACF;;AAEDI,EAAAA,YAAY,CAAChF,UAAD,EAAaiF,QAAb,EAAuB;AACjC,QAAI,CAACjF,UAAU,CAACkF,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED,YAAQlF,UAAU,CAACT,IAAnB;AACE,WAAKL,SAAS,CAACiG,UAAf;AACE,eAAO,KAAKC,oBAAL,CAA0BpF,UAA1B,EAAsCiF,QAAtC,CAAP;;AACF,WAAK/F,SAAS,CAACmG,UAAf;AACE,eAAO,KAAKC,iBAAL,CAAuBtF,UAAvB,EAAmCiF,QAAnC,CAAP;;AACF,WAAK/F,SAAS,CAACqG,IAAf;AACE,eAAO,KAAKC,oBAAL,CAA0BxF,UAA1B,EAAsCiF,QAAtC,CAAP;;AACF;AACE,cAAM,IAAIQ,KAAJ,uDAAyDzF,UAAU,CAACkF,OAAX,CAAmB3F,IAA5E,EAAN;AARJ;AAUD;;AAED6F,EAAAA,oBAAoB,CAACpF,UAAD,EAAaiF,QAAb,EAAuB;AACzC,UAAM;AACJS,MAAAA,UADI;AAEJC,MAAAA,UAFI;AAGJC,MAAAA,YAHI;AAIJC,MAAAA,kBAJI;AAKJC,MAAAA;AALI,QAMF9F,UAAU,CAACkF,OANf;AAOA,UAAM;AAACa,MAAAA,SAAD;AAAYC,MAAAA,OAAZ;AAAqBC,MAAAA;AAArB,QAA+BP,UAArC;;AAEA,QAAI,CAACK,SAAL,EAAgB;AACd,aAAO,IAAP;AACD;;AACD,UAAMrG,IAAI,GAAIuF,QAAQ,IAAIA,QAAQ,CAACxE,KAAT,CAAef,IAA5B,IAAqC;AAChDwG,MAAAA,MAAM,EAAE;AACNC,QAAAA,WAAW,EAAER;AADP,OADwC;AAIhDD,MAAAA,UAAU,EAAE;AACVU,QAAAA,QAAQ,EAAEL,SADA;AAEVM,QAAAA,MAAM,EAAEL,OAFE;AAGVM,QAAAA,OAAO,EAAEL;AAHC;AAJoC,KAAlD;AAWA,UAAM;AAACxG,MAAAA,SAAD;AAAYH,MAAAA;AAAZ,QAA6B,KAAKmB,KAAxC;AACA,UAAM8F,aAAa,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,EAAoC7H,eAApC,CAAtB;AACA,WAAO,IAAI4H,aAAJ,CACL;AACE9G,MAAAA;AADF,KADK,EAIL,KAAKgH,gBAAL,CAAsB;AACpBvE,MAAAA,EAAE,EAAE;AADgB,KAAtB,CAJK,EAOL;AACEA,MAAAA,EAAE,YAAK,KAAKA,EAAV,yBAA2BlC,UAAU,CAACkC,EAAtC,CADJ;AAEE/B,MAAAA,IAAI,EAAEH,UAFR;AAGEN,MAAAA,IAHF;AAIEgH,MAAAA,gBAAgB,EAAEjI,iBAAiB,CAACkI,aAJtC;AAKEC,MAAAA,gBAAgB,EAAEf,kBALpB;AAMEC,MAAAA,WANF;AAOEe,MAAAA,QAAQ,EAAEjB,YAAY,IAAItG,aAP5B;AAQEwH,MAAAA,OAAO,EAAE;AARX,KAPK,CAAP;AAkBD;;AAEDxB,EAAAA,iBAAiB,CAACtF,UAAD,EAAa;AAC5B,UAAM;AAAC+G,MAAAA,IAAD;AAAOC,MAAAA,SAAP;AAAkBnB,MAAAA,kBAAlB;AAAsCC,MAAAA;AAAtC,QAAqD9F,UAAU,CAACkF,OAAtE;AAEA,UAAMqB,aAAa,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,EAAoC5H,eAApC,CAAtB;AAEA,WAAO,IAAI2H,aAAJ,CACL;AACEU,MAAAA,SAAS,EAAE;AADb,KADK,EAIL,KAAKR,gBAAL,CAAsB;AACpBvE,MAAAA,EAAE,EAAE;AADgB,KAAtB,CAJK,EAOL;AACEA,MAAAA,EAAE,YAAK,KAAKA,EAAV,yBAA2BlC,UAAU,CAACkC,EAAtC,CADJ;AAEE/B,MAAAA,IAAI,EAAEH,UAFR;AAGEN,MAAAA,IAAI,EAAEsH,SAAS,IAAI5H,WAHrB;AAIE8H,MAAAA,UAAU,EAAEH,IAJd;AAMEL,MAAAA,gBAAgB,EAAEjI,iBAAiB,CAACkI,aANtC;AAOEC,MAAAA,gBAAgB,EAAEf,kBAPpB;AAQEC,MAAAA,WARF;AASEqB,MAAAA,kBAAkB,EAAEC,QAAQ,IAAIA,QAAQ,CAACtB,WAT3C;AAUEuB,MAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAVf;AAWEP,MAAAA,OAAO,EAAE;AAXX,KAPK,CAAP;AAqBD;;AAEDtB,EAAAA,oBAAoB,CAACxF,UAAD,EAAaiF,QAAb,EAAuB;AACzC,UAAMC,OAAO,GAAGlF,UAAU,CAACkF,OAA3B;AACA,UAAM;AAACQ,MAAAA,UAAD;AAAa4B,MAAAA,OAAb;AAAsBxB,MAAAA,WAAtB;AAAmCD,MAAAA,kBAAnC;AAAuD0B,MAAAA,QAAvD;AAAiEC,MAAAA;AAAjE,QAA+EtC,OAArF;AACA,UAAM;AAAC5E,MAAAA;AAAD,QAAkB,KAAKG,KAA7B;AAEA,UAAMgH,QAAQ,GACXxC,QAAQ,IAAIA,QAAQ,CAACxE,KAAT,CAAeiH,IAA5B,IACA,IAAIlJ,QAAJ,CAAa;AACXmJ,MAAAA,QAAQ,GADG;AAEXjC,MAAAA,UAAU,EAAEkC,eAAe,CAAClC,UAAD,CAFhB;AAGX4B,MAAAA;AAHW,KAAb,CAFF;AAQA,UAAMf,aAAa,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8B1H,UAA9B,CAAtB;AAEA,WAAO,IAAIyH,aAAJ,CACL,KAAKE,gBAAL,CAAsB;AACpBvE,MAAAA,EAAE,EAAE;AADgB,KAAtB,CADK,EAIL;AACEA,MAAAA,EAAE,YAAK,KAAKA,EAAV,mBAAqBlC,UAAU,CAACkC,EAAhC,CADJ;AAEE/B,MAAAA,IAAI,EAAEH,UAFR;AAGE0H,MAAAA,IAAI,EAAED,QAHR;AAIE/H,MAAAA,IAAI,EAAEN,WAJR;AAKEyH,MAAAA,QAAQ,EAAEvG,aAAa,CAACN,UAAD,CALzB;AAME6H,MAAAA,WAAW,EAAEN,QANf;AAOEzB,MAAAA,WAPF;AAQEc,MAAAA,gBAAgB,EAAEf,kBARpB;AASEa,MAAAA,gBAAgB,EAAEjI,iBAAiB,CAACkI,aATtC;AAUEa,MAAAA,UAVF;AAWEV,MAAAA,OAAO,EAAE;AAXX,KAJK,CAAP;AAkBD;;AAEDgB,EAAAA,YAAY,GAAG;AACb,UAAM;AAACjI,MAAAA,SAAD;AAAYe,MAAAA;AAAZ,QAAwB,KAAKD,KAAnC;;AACA,QAAI,CAACd,SAAL,EAAgB;AACd,aAAO,IAAP;AACD;;AAED,WAAOA,SAAS,CAACkI,KAAV,CACJC,GADI,CACA7H,IAAI,IAAI;AACX,YAAM8H,UAAU,GAAIrH,QAAQ,CAACT,IAAI,CAAC+B,EAAN,CAAR,GAAoBtB,QAAQ,CAACT,IAAI,CAAC+B,EAAN,CAAR,IAAqB;AAAC/B,QAAAA;AAAD,OAA7D;AACA,UAAI;AAAC8C,QAAAA;AAAD,UAAUgF,UAAd;;AACA,UAAI9H,IAAI,CAACgD,QAAT,EAAmB;AAEjB,YAAI,CAACF,KAAL,EAAY;AAEVA,UAAAA,KAAK,GAAG,KAAK+B,YAAL,CAAkB7E,IAAlB,CAAR;AACD,SAHD,MAGO,IAAI8H,UAAU,CAACnG,WAAf,EAA4B;AAEjCmB,UAAAA,KAAK,GAAG,KAAK+B,YAAL,CAAkB7E,IAAlB,EAAwB8C,KAAxB,CAAR;AACAgF,UAAAA,UAAU,CAACnG,WAAX,GAAyB,KAAzB;AACD;AACF;;AACDmG,MAAAA,UAAU,CAAChF,KAAX,GAAmBA,KAAnB;AACA,aAAOA,KAAP;AACD,KAjBI,EAkBJiF,MAlBI,CAkBGC,OAlBH,CAAP;AAmBD;;AA3SqD;;AA8SxD,SAASP,eAAT,CAAyBQ,iBAAzB,EAA4C;AAC1C,QAAM1C,UAAU,GAAG,EAAnB;AACAA,EAAAA,UAAU,CAACK,SAAX,GAAuB,EACrB,GAAGqC,iBAAiB,CAACrC,SADA;AAErBvG,IAAAA,KAAK,EAAE,IAAI6I,YAAJ,CAAiBD,iBAAiB,CAACrC,SAAlB,CAA4BvG,KAA7C;AAFc,GAAvB;;AAIA,MAAI4I,iBAAiB,CAACpC,OAAtB,EAA+B;AAC7BN,IAAAA,UAAU,CAACM,OAAX,GAAqBoC,iBAAiB,CAACpC,OAAvC;AACD;;AACD,MAAIoC,iBAAiB,CAACE,SAAtB,EAAiC;AAC/B5C,IAAAA,UAAU,CAAC4C,SAAX,GAAuBF,iBAAiB,CAACE,SAAzC;AACD;;AACD,MAAIF,iBAAiB,CAACnC,MAAtB,EAA8B;AAC5BP,IAAAA,UAAU,CAACO,MAAX,GAAoBmC,iBAAiB,CAACnC,MAAtC;AACD;;AACD,MAAImC,iBAAiB,CAACG,SAAtB,EAAiC;AAC/B7C,IAAAA,UAAU,CAAC6C,SAAX,GAAuBH,iBAAiB,CAACG,SAAzC;AACD;;AACD,SAAO7C,UAAP;AACD;;AAEDnF,WAAW,CAACiI,SAAZ,GAAwB,aAAxB;AACAjI,WAAW,CAAClB,YAAZ,GAA2BA,YAA3B","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\nimport {COORDINATE_SYSTEM, CompositeLayer} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as _MeshLayer} from '../mesh-layer/mesh-layer';\nimport {log} from '@deck.gl/core';\n\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n data: null,\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}, compare: false},\n onTileLoad: {type: 'function', value: tileHeader => {}, compare: false},\n onTileUnload: {type: 'function', value: tileHeader => {}, compare: false},\n onTileError: {type: 'function', value: (tile, message, url) => {}, compare: false},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}\n};\n\nexport default class Tile3DLayer extends CompositeLayer {\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded() {\n const {tileset3d} = this.state;\n return tileset3d && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (props.data && props.data !== oldProps.data) {\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport) {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}) {\n const {layerMap} = this.state;\n const layerId = sourceLayer && sourceLayer.id;\n if (layerId) {\n // layerId: this.id-[scenegraph|pointcloud]-tileId\n const substr = layerId.substring(this.id.length + 1);\n const tileId = substr.substring(substr.indexOf('-') + 1);\n info.object = layerMap[tileId] && layerMap[tileId].tile;\n }\n\n return info;\n }\n\n filterSubLayer({layer, viewport}) {\n const {tile} = layer.props;\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileLoadFail: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n _onTileLoad(tileHeader) {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tileHeader) {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n _updateTileset(viewports) {\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n const frameNumber = tileset3d.update(Object.values(viewports));\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n }\n\n _getSubLayer(tileHeader, oldLayer) {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader, oldLayer);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n _makePointCloudLayer(tileHeader, oldLayer) {\n const {\n attributes,\n pointCount,\n constantRGBA,\n cartographicOrigin,\n modelMatrix\n } = tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n _make3DModelLayer(tileHeader) {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n _makeSimpleMeshLayer(tileHeader, oldLayer) {\n const content = tileHeader.content;\n const {attributes, indices, modelMatrix, cartographicOrigin, material, featureIds} = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', _MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers() {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n return tileset3d.tiles\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes) {\n const attributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n\nTile3DLayer.layerName = 'Tile3DLayer';\nTile3DLayer.defaultProps = defaultProps;\n"],"file":"tile-3d-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.js"],"names":["Geometry","COORDINATE_SYSTEM","CompositeLayer","PointCloudLayer","ScenegraphLayer","default","_MeshLayer","log","load","Tileset3D","TILE_TYPE","Tiles3DLoader","SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","initializeState","props","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","shouldUpdateState","changeFlags","somethingChanged","updateState","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","activateViewport","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","getPickingInfo","info","sourceLayer","layerId","substr","substring","tileId","indexOf","object","filterSubLayer","layer","viewportId","selected","viewportIds","includes","_updateAutoHighlight","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","_onTileLoad","bind","_onTileUnload","onTileLoadFail","setState","viewports","timeline","context","frameNumber","update","values","tilesetChanged","_getSubLayer","oldLayer","content","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","getSubLayerProps","coordinateSystem","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","drawMode","getMeshGeometry","pbrMaterial","renderLayers","tiles","map","layerCache","filter","Boolean","contentAttributes","Float32Array","texCoords","uvRegions","layerName"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\nimport {COORDINATE_SYSTEM, CompositeLayer} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as _MeshLayer} from '../mesh-layer/mesh-layer';\nimport {log} from '@deck.gl/core';\n\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n data: null,\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}, compare: false},\n onTileLoad: {type: 'function', value: tileHeader => {}, compare: false},\n onTileUnload: {type: 'function', value: tileHeader => {}, compare: false},\n onTileError: {type: 'function', value: (tile, message, url) => {}, compare: false},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}\n};\n\nexport default class Tile3DLayer extends CompositeLayer {\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded() {\n const {tileset3d} = this.state;\n return tileset3d && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (props.data && props.data !== oldProps.data) {\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport) {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}) {\n const {layerMap} = this.state;\n const layerId = sourceLayer && sourceLayer.id;\n if (layerId) {\n // layerId: this.id-[scenegraph|pointcloud]-tileId\n const substr = layerId.substring(this.id.length + 1);\n const tileId = substr.substring(substr.indexOf('-') + 1);\n info.object = layerMap[tileId] && layerMap[tileId].tile;\n }\n\n return info;\n }\n\n filterSubLayer({layer, viewport}) {\n const {tile} = layer.props;\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileLoadFail: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n _onTileLoad(tileHeader) {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tileHeader) {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n _updateTileset(viewports) {\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n const frameNumber = tileset3d.update(Object.values(viewports));\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n }\n\n _getSubLayer(tileHeader, oldLayer) {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader, oldLayer);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n _makePointCloudLayer(tileHeader, oldLayer) {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =\n tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n _make3DModelLayer(tileHeader) {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n _makeSimpleMeshLayer(tileHeader, oldLayer) {\n const content = tileHeader.content;\n const {attributes, indices, modelMatrix, cartographicOrigin, material, featureIds} = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', _MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers() {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n return tileset3d.tiles\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes) {\n const attributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n\nTile3DLayer.layerName = 'Tile3DLayer';\nTile3DLayer.defaultProps = defaultProps;\n"],"file":"tile-3d-layer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-2d-header.js"],"names":["log","Tile2DHeader","constructor","x","y","z","isVisible","isSelected","parent","children","content","_loaderId","_isLoaded","_isCancelled","_needsReload","data","isLoading","_loader","then","isLoaded","Boolean","needsReload","byteLength","result","Number","isFinite","error","_loadData","getData","requestScheduler","onLoad","onError","bbox","loaderId","_abortController","AbortController","signal","requestToken","scheduleRequest","tile","done","tileData","err","undefined","loadData","opts","setNeedsReload","abort"],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport {log} from '@deck.gl/core';\n\nexport default class Tile2DHeader {\n constructor({x, y, z}) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n\n this._loaderId = 0;\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n }\n\n get data() {\n return this.isLoading ? this._loader.then(() => this.data) : this.content;\n }\n\n get isLoaded() {\n return this._isLoaded && !this._needsReload;\n }\n\n get isLoading() {\n return Boolean(this._loader) && !this._isCancelled;\n }\n\n get needsReload() {\n return this._needsReload || this._isCancelled;\n }\n\n get byteLength() {\n const result = this.content ? this.content.byteLength : 0;\n if (!Number.isFinite(result)) {\n log.error('byteLength not defined in tile data')();\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n async _loadData({getData, requestScheduler, onLoad, onError}) {\n const {x, y, z, bbox} = this;\n const loaderId = this._loaderId;\n\n this._abortController = new AbortController(); // eslint-disable-line no-undef\n const {signal} = this._abortController;\n\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData = null;\n let error;\n try {\n tileData = await getData({x, y, z, bbox, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n }\n\n // If loadData has been called with a newer version, discard the result from this operation\n if (loaderId !== this._loaderId) {\n return;\n }\n // Clear the `isLoading` flag\n this._loader = undefined;\n // Rewrite tile content with the result of getTileData if successful, or `null` in case of\n // error or cancellation\n this.content = tileData;\n // If cancelled, do not invoke the callbacks\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n return;\n }\n this._isLoaded = true;\n this._isCancelled = false;\n\n if (error) {\n onError(error, this);\n } else {\n onLoad(this);\n }\n }\n /* eslint-enable max-statements */\n\n loadData(opts) {\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n this._loaderId++;\n this._loader = this._loadData(opts);\n return this._loader;\n }\n\n setNeedsReload() {\n if (this.isLoading) {\n this.abort();\n this._loader = undefined;\n }\n this._needsReload = true;\n }\n\n abort() {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController.abort();\n }\n}\n"],"file":"tile-2d-header.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-2d-header.js"],"names":["log","Tile2DHeader","constructor","x","y","z","isVisible","isSelected","parent","children","content","_loaderId","_isLoaded","_isCancelled","_needsReload","data","isLoading","_loader","then","isLoaded","Boolean","needsReload","byteLength","result","Number","isFinite","error","_loadData","getData","requestScheduler","onLoad","onError","bbox","loaderId","_abortController","AbortController","signal","requestToken","scheduleRequest","tile","done","tileData","err","undefined","loadData","opts","setNeedsReload","abort"],"mappings":"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","sourcesContent":["/* eslint-env browser */\nimport {log} from '@deck.gl/core';\n\nexport default class Tile2DHeader {\n constructor({x, y, z}) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.isVisible = false;\n this.isSelected = false;\n this.parent = null;\n this.children = [];\n\n this.content = null;\n\n this._loaderId = 0;\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n }\n\n get data() {\n return this.isLoading ? this._loader.then(() => this.data) : this.content;\n }\n\n get isLoaded() {\n return this._isLoaded && !this._needsReload;\n }\n\n get isLoading() {\n return Boolean(this._loader) && !this._isCancelled;\n }\n\n get needsReload() {\n return this._needsReload || this._isCancelled;\n }\n\n get byteLength() {\n const result = this.content ? this.content.byteLength : 0;\n if (!Number.isFinite(result)) {\n log.error('byteLength not defined in tile data')();\n }\n return result;\n }\n\n /* eslint-disable max-statements */\n async _loadData({getData, requestScheduler, onLoad, onError}) {\n const {x, y, z, bbox} = this;\n const loaderId = this._loaderId;\n\n this._abortController = new AbortController(); // eslint-disable-line no-undef\n const {signal} = this._abortController;\n\n const requestToken = await requestScheduler.scheduleRequest(this, tile => {\n return tile.isSelected ? 1 : -1;\n });\n\n if (!requestToken) {\n this._isCancelled = true;\n return;\n }\n // A tile can be cancelled while being scheduled\n if (this._isCancelled) {\n requestToken.done();\n return;\n }\n\n let tileData = null;\n let error;\n try {\n tileData = await getData({x, y, z, bbox, signal});\n } catch (err) {\n error = err || true;\n } finally {\n requestToken.done();\n }\n\n // If loadData has been called with a newer version, discard the result from this operation\n if (loaderId !== this._loaderId) {\n return;\n }\n // Clear the `isLoading` flag\n this._loader = undefined;\n // Rewrite tile content with the result of getTileData if successful, or `null` in case of\n // error or cancellation\n this.content = tileData;\n // If cancelled, do not invoke the callbacks\n // Consider it loaded if we tried to cancel but `getTileData` still returned data\n if (this._isCancelled && !tileData) {\n this._isLoaded = false;\n return;\n }\n this._isLoaded = true;\n this._isCancelled = false;\n\n if (error) {\n onError(error, this);\n } else {\n onLoad(this);\n }\n }\n /* eslint-enable max-statements */\n\n loadData(opts) {\n this._isLoaded = false;\n this._isCancelled = false;\n this._needsReload = false;\n this._loaderId++;\n this._loader = this._loadData(opts);\n return this._loader;\n }\n\n setNeedsReload() {\n if (this.isLoading) {\n this.abort();\n this._loader = undefined;\n }\n this._needsReload = true;\n }\n\n abort() {\n if (this.isLoaded) {\n return;\n }\n\n this._isCancelled = true;\n this._abortController.abort();\n }\n}\n"],"file":"tile-2d-header.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-2d-traversal.js"],"names":["CullingVolume","Plane","AxisAlignedBoundingBox","makeOrientedBoundingBoxFromPoints","lngLatToWorld","osmTile2lngLat","TILE_SIZE","MAX_MAPS","REF_POINTS_5","REF_POINTS_9","concat","REF_POINTS_11","OSMNode","constructor","x","y","z","children","_children","update","params","viewport","cullingVolume","elevationBounds","minZ","maxZ","bounds","offset","project","boundingVolume","getBoundingVolume","insideBounds","isInside","computeVisibility","childVisible","distance","distanceTo","cameraPosition","scale","height","Math","floor","log2","selected","child","getSelected","result","push","node","minX","minY","maxX","maxY","pow","extent","zRange","worldOffset","refPoints","refPointPositions","p","lngLat","originX","originY","getOSMTileIndices","resolution","projectPosition","planes","Object","values","getFrustumPlanes","map","normal","clone","negate","unitsPerMeter","distanceScales","elevationMin","elevationMax","pitch","minLng","minLat","maxLng","maxLat","topLeft","bottomRight","root","traversalParams","subViewports","length"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport {\n CullingVolume,\n Plane,\n AxisAlignedBoundingBox,\n makeOrientedBoundingBoxFromPoints\n} from '@math.gl/culling';\nimport {lngLatToWorld} from '@math.gl/web-mercator';\nimport {osmTile2lngLat} from './utils';\n\nconst TILE_SIZE = 512;\n// number of world copies to check\nconst MAX_MAPS = 3;\n// for calculating bounding volume of a tile in a non-web-mercator viewport\nconst REF_POINTS_5 = [[0.5, 0.5], [0, 0], [0, 1], [1, 0], [1, 1]]; // 4 corners and center\nconst REF_POINTS_9 = REF_POINTS_5.concat([[0, 0.5], [0.5, 0], [1, 0.5], [0.5, 1]]); // 4 corners, center and 4 mid points\nconst REF_POINTS_11 = REF_POINTS_9.concat([[0.25, 0.5], [0.75, 0.5]]); // 2 additional points on equator for top tile\n\nclass OSMNode {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n get children() {\n if (!this._children) {\n const x = this.x * 2;\n const y = this.y * 2;\n const z = this.z + 1;\n this._children = [\n new OSMNode(x, y, z),\n new OSMNode(x, y + 1, z),\n new OSMNode(x + 1, y, z),\n new OSMNode(x + 1, y + 1, z)\n ];\n }\n return this._children;\n }\n\n update(params) {\n const {viewport, cullingVolume, elevationBounds, minZ, maxZ, bounds, offset, project} = params;\n const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);\n\n // First, check if this tile is visible\n if (bounds && !this.insideBounds(bounds)) {\n return false;\n }\n\n const isInside = cullingVolume.computeVisibility(boundingVolume);\n if (isInside < 0) {\n return false;\n }\n\n // Avoid loading overlapping tiles - if a descendant is requested, do not request the ancester\n if (!this.childVisible) {\n let {z} = this;\n if (z < maxZ && z >= minZ) {\n // Adjust LOD\n // If the tile is far enough from the camera, accept a lower zoom level\n const distance =\n (boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale) / viewport.height;\n z += Math.floor(Math.log2(distance));\n }\n if (z >= maxZ) {\n // LOD is acceptable\n this.selected = true;\n return true;\n }\n }\n\n // LOD is not enough, recursively test child tiles\n this.selected = false;\n this.childVisible = true;\n for (const child of this.children) {\n child.update(params);\n }\n return true;\n }\n\n getSelected(result = []) {\n if (this.selected) {\n result.push(this);\n }\n if (this._children) {\n for (const node of this._children) {\n node.getSelected(result);\n }\n }\n return result;\n }\n\n insideBounds([minX, minY, maxX, maxY]) {\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n\n return (\n this.x * extent < maxX &&\n this.y * extent < maxY &&\n (this.x + 1) * extent > minX &&\n (this.y + 1) * extent > minY\n );\n }\n\n getBoundingVolume(zRange, worldOffset, project) {\n if (project) {\n // Custom projection\n // Estimate bounding box from sample points\n // At low zoom level we need more samples to calculate the bounding volume correctly\n const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;\n\n // Convert from tile-relative coordinates to common space\n const refPointPositions = [];\n for (const p of refPoints) {\n const lngLat = osmTile2lngLat(this.x + p[0], this.y + p[1], this.z);\n lngLat[2] = zRange[0];\n refPointPositions.push(project(lngLat));\n\n if (zRange[0] !== zRange[1]) {\n // Account for the elevation volume\n lngLat[2] = zRange[1];\n refPointPositions.push(project(lngLat));\n }\n }\n\n return makeOrientedBoundingBoxFromPoints(refPointPositions);\n }\n\n // Use WebMercator projection\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n const originX = this.x * extent + worldOffset * TILE_SIZE;\n // deck's common space is y-flipped\n const originY = TILE_SIZE - (this.y + 1) * extent;\n\n return new AxisAlignedBoundingBox(\n [originX, originY, zRange[0]],\n [originX + extent, originY + extent, zRange[1]]\n );\n }\n}\n\nexport function getOSMTileIndices(viewport, maxZ, zRange, bounds) {\n const project = viewport.resolution ? viewport.projectPosition : null;\n\n // Get the culling volume of the current camera\n const planes = Object.values(viewport.getFrustumPlanes()).map(\n ({normal, distance}) => new Plane(normal.clone().negate(), distance)\n );\n const cullingVolume = new CullingVolume(planes);\n\n // Project zRange from meters to common space\n const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];\n const elevationMin = (zRange && zRange[0] * unitsPerMeter) || 0;\n const elevationMax = (zRange && zRange[1] * unitsPerMeter) || 0;\n\n // Always load at the current zoom level if pitch is small\n const minZ = viewport.pitch <= 60 ? maxZ : 0;\n\n // Map extent to OSM position\n if (bounds) {\n const [minLng, minLat, maxLng, maxLat] = bounds;\n const topLeft = lngLatToWorld([minLng, maxLat]);\n const bottomRight = lngLatToWorld([maxLng, minLat]);\n bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];\n }\n\n const root = new OSMNode(0, 0, 0);\n const traversalParams = {\n viewport,\n project,\n cullingVolume,\n elevationBounds: [elevationMin, elevationMax],\n minZ,\n maxZ,\n bounds,\n // num. of worlds from the center. For repeated maps\n offset: 0\n };\n\n root.update(traversalParams);\n\n if (viewport.subViewports && viewport.subViewports.length > 1) {\n // Check worlds in repeated maps\n traversalParams.offset = -1;\n while (root.update(traversalParams)) {\n if (--traversalParams.offset < -MAX_MAPS) {\n break;\n }\n }\n traversalParams.offset = 1;\n while (root.update(traversalParams)) {\n if (++traversalParams.offset > MAX_MAPS) {\n break;\n }\n }\n }\n\n return root.getSelected();\n}\n"],"file":"tile-2d-traversal.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-2d-traversal.js"],"names":["CullingVolume","Plane","AxisAlignedBoundingBox","makeOrientedBoundingBoxFromPoints","lngLatToWorld","osmTile2lngLat","TILE_SIZE","MAX_MAPS","REF_POINTS_5","REF_POINTS_9","concat","REF_POINTS_11","OSMNode","constructor","x","y","z","children","_children","update","params","viewport","cullingVolume","elevationBounds","minZ","maxZ","bounds","offset","project","boundingVolume","getBoundingVolume","insideBounds","isInside","computeVisibility","childVisible","distance","distanceTo","cameraPosition","scale","height","Math","floor","log2","selected","child","getSelected","result","push","node","minX","minY","maxX","maxY","pow","extent","zRange","worldOffset","refPoints","refPointPositions","p","lngLat","originX","originY","getOSMTileIndices","resolution","projectPosition","planes","Object","values","getFrustumPlanes","map","normal","clone","negate","unitsPerMeter","distanceScales","elevationMin","elevationMax","pitch","minLng","minLat","maxLng","maxLat","topLeft","bottomRight","root","traversalParams","subViewports","length"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport {\n CullingVolume,\n Plane,\n AxisAlignedBoundingBox,\n makeOrientedBoundingBoxFromPoints\n} from '@math.gl/culling';\nimport {lngLatToWorld} from '@math.gl/web-mercator';\nimport {osmTile2lngLat} from './utils';\n\nconst TILE_SIZE = 512;\n// number of world copies to check\nconst MAX_MAPS = 3;\n// for calculating bounding volume of a tile in a non-web-mercator viewport\nconst REF_POINTS_5 = [\n [0.5, 0.5],\n [0, 0],\n [0, 1],\n [1, 0],\n [1, 1]\n]; // 4 corners and center\nconst REF_POINTS_9 = REF_POINTS_5.concat([\n [0, 0.5],\n [0.5, 0],\n [1, 0.5],\n [0.5, 1]\n]); // 4 corners, center and 4 mid points\nconst REF_POINTS_11 = REF_POINTS_9.concat([\n [0.25, 0.5],\n [0.75, 0.5]\n]); // 2 additional points on equator for top tile\n\nclass OSMNode {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n get children() {\n if (!this._children) {\n const x = this.x * 2;\n const y = this.y * 2;\n const z = this.z + 1;\n this._children = [\n new OSMNode(x, y, z),\n new OSMNode(x, y + 1, z),\n new OSMNode(x + 1, y, z),\n new OSMNode(x + 1, y + 1, z)\n ];\n }\n return this._children;\n }\n\n update(params) {\n const {viewport, cullingVolume, elevationBounds, minZ, maxZ, bounds, offset, project} = params;\n const boundingVolume = this.getBoundingVolume(elevationBounds, offset, project);\n\n // First, check if this tile is visible\n if (bounds && !this.insideBounds(bounds)) {\n return false;\n }\n\n const isInside = cullingVolume.computeVisibility(boundingVolume);\n if (isInside < 0) {\n return false;\n }\n\n // Avoid loading overlapping tiles - if a descendant is requested, do not request the ancester\n if (!this.childVisible) {\n let {z} = this;\n if (z < maxZ && z >= minZ) {\n // Adjust LOD\n // If the tile is far enough from the camera, accept a lower zoom level\n const distance =\n (boundingVolume.distanceTo(viewport.cameraPosition) * viewport.scale) / viewport.height;\n z += Math.floor(Math.log2(distance));\n }\n if (z >= maxZ) {\n // LOD is acceptable\n this.selected = true;\n return true;\n }\n }\n\n // LOD is not enough, recursively test child tiles\n this.selected = false;\n this.childVisible = true;\n for (const child of this.children) {\n child.update(params);\n }\n return true;\n }\n\n getSelected(result = []) {\n if (this.selected) {\n result.push(this);\n }\n if (this._children) {\n for (const node of this._children) {\n node.getSelected(result);\n }\n }\n return result;\n }\n\n insideBounds([minX, minY, maxX, maxY]) {\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n\n return (\n this.x * extent < maxX &&\n this.y * extent < maxY &&\n (this.x + 1) * extent > minX &&\n (this.y + 1) * extent > minY\n );\n }\n\n getBoundingVolume(zRange, worldOffset, project) {\n if (project) {\n // Custom projection\n // Estimate bounding box from sample points\n // At low zoom level we need more samples to calculate the bounding volume correctly\n const refPoints = this.z < 1 ? REF_POINTS_11 : this.z < 2 ? REF_POINTS_9 : REF_POINTS_5;\n\n // Convert from tile-relative coordinates to common space\n const refPointPositions = [];\n for (const p of refPoints) {\n const lngLat = osmTile2lngLat(this.x + p[0], this.y + p[1], this.z);\n lngLat[2] = zRange[0];\n refPointPositions.push(project(lngLat));\n\n if (zRange[0] !== zRange[1]) {\n // Account for the elevation volume\n lngLat[2] = zRange[1];\n refPointPositions.push(project(lngLat));\n }\n }\n\n return makeOrientedBoundingBoxFromPoints(refPointPositions);\n }\n\n // Use WebMercator projection\n const scale = Math.pow(2, this.z);\n const extent = TILE_SIZE / scale;\n const originX = this.x * extent + worldOffset * TILE_SIZE;\n // deck's common space is y-flipped\n const originY = TILE_SIZE - (this.y + 1) * extent;\n\n return new AxisAlignedBoundingBox(\n [originX, originY, zRange[0]],\n [originX + extent, originY + extent, zRange[1]]\n );\n }\n}\n\nexport function getOSMTileIndices(viewport, maxZ, zRange, bounds) {\n const project = viewport.resolution ? viewport.projectPosition : null;\n\n // Get the culling volume of the current camera\n const planes = Object.values(viewport.getFrustumPlanes()).map(\n ({normal, distance}) => new Plane(normal.clone().negate(), distance)\n );\n const cullingVolume = new CullingVolume(planes);\n\n // Project zRange from meters to common space\n const unitsPerMeter = viewport.distanceScales.unitsPerMeter[2];\n const elevationMin = (zRange && zRange[0] * unitsPerMeter) || 0;\n const elevationMax = (zRange && zRange[1] * unitsPerMeter) || 0;\n\n // Always load at the current zoom level if pitch is small\n const minZ = viewport.pitch <= 60 ? maxZ : 0;\n\n // Map extent to OSM position\n if (bounds) {\n const [minLng, minLat, maxLng, maxLat] = bounds;\n const topLeft = lngLatToWorld([minLng, maxLat]);\n const bottomRight = lngLatToWorld([maxLng, minLat]);\n bounds = [topLeft[0], TILE_SIZE - topLeft[1], bottomRight[0], TILE_SIZE - bottomRight[1]];\n }\n\n const root = new OSMNode(0, 0, 0);\n const traversalParams = {\n viewport,\n project,\n cullingVolume,\n elevationBounds: [elevationMin, elevationMax],\n minZ,\n maxZ,\n bounds,\n // num. of worlds from the center. For repeated maps\n offset: 0\n };\n\n root.update(traversalParams);\n\n if (viewport.subViewports && viewport.subViewports.length > 1) {\n // Check worlds in repeated maps\n traversalParams.offset = -1;\n while (root.update(traversalParams)) {\n if (--traversalParams.offset < -MAX_MAPS) {\n break;\n }\n }\n traversalParams.offset = 1;\n while (root.update(traversalParams)) {\n if (++traversalParams.offset > MAX_MAPS) {\n break;\n }\n }\n }\n\n return root.getSelected();\n}\n"],"file":"tile-2d-traversal.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-layer.js"],"names":["CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","data","dataComparator","equals","renderSubLayers","type","value","props","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","isVisible","setNeedsUpdate","fetch","signal","url","propName","getHighlightedObjectIndex","getPickingInfo","info","sourceLayer","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","highlightedObjectIndex","content","id","x","y","z","_offset","Boolean","clone","filterSubLayer","layerName"],"mappings":"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","sourcesContent":["import {CompositeLayer, _flatten as flatten} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nimport Tileset2D, {STRATEGY_DEFAULT} from './tileset-2d';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\nexport default class TileLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state.tileset?.finalize();\n }\n\n get isLoaded() {\n const {tileset} = this.state;\n return tileset.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new Tileset2D(this._getTilesetOptions(props));\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions(props));\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(props) {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset() {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad() {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile) {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileError(error, tile) {\n this.props.onTileError(error);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileUnload(tile) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url = getURLFromTemplate(data, tile);\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(props) {\n return this.props.renderSubLayers(props);\n }\n\n getHighlightedObjectIndex() {\n return -1;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers() {\n return this.state.tileset.tiles.map(tile => {\n const highlightedObjectIndex = this.getHighlightedObjectIndex(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.x}-${tile.y}-${tile.z}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = flatten(layers, Boolean).map(layer =>\n layer.clone({\n tile,\n highlightedObjectIndex\n })\n );\n } else if (\n tile.layers[0] &&\n tile.layers[0].props.highlightedObjectIndex !== highlightedObjectIndex\n ) {\n tile.layers = tile.layers.map(layer => layer.clone({highlightedObjectIndex}));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n\nTileLayer.layerName = 'TileLayer';\nTileLayer.defaultProps = defaultProps;\n"],"file":"tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-layer.js"],"names":["CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","data","dataComparator","equals","renderSubLayers","type","value","props","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","isVisible","setNeedsUpdate","fetch","signal","url","propName","getHighlightedObjectIndex","getPickingInfo","info","sourceLayer","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","highlightedObjectIndex","content","id","x","y","z","_offset","Boolean","clone","filterSubLayer","layerName"],"mappings":"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","sourcesContent":["import {CompositeLayer, _flatten as flatten} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nimport Tileset2D, {STRATEGY_DEFAULT} from './tileset-2d';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\nexport default class TileLayer extends CompositeLayer {\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state.tileset?.finalize();\n }\n\n get isLoaded() {\n const {tileset} = this.state;\n return tileset.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}) {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new Tileset2D(this._getTilesetOptions(props));\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions(props));\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(props) {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset() {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad() {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile) {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileError(error, tile) {\n this.props.onTileError(error);\n tile.layers = null;\n\n if (tile.isVisible) {\n this.setNeedsUpdate();\n }\n }\n\n _onTileUnload(tile) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url = getURLFromTemplate(data, tile);\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(props) {\n return this.props.renderSubLayers(props);\n }\n\n getHighlightedObjectIndex() {\n return -1;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers() {\n return this.state.tileset.tiles.map(tile => {\n const highlightedObjectIndex = this.getHighlightedObjectIndex(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.x}-${tile.y}-${tile.z}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = flatten(layers, Boolean).map(layer =>\n layer.clone({\n tile,\n highlightedObjectIndex\n })\n );\n } else if (\n tile.layers[0] &&\n tile.layers[0].props.highlightedObjectIndex !== highlightedObjectIndex\n ) {\n tile.layers = tile.layers.map(layer => layer.clone({highlightedObjectIndex}));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n\nTileLayer.layerName = 'TileLayer';\nTileLayer.defaultProps = defaultProps;\n"],"file":"tile-layer.js"}