@deck.gl/extensions 8.9.8 → 8.9.9
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.
- package/dist/dist.dev.js +19 -7
- package/dist/es5/terrain/height-map-builder.js +6 -0
- package/dist/es5/terrain/height-map-builder.js.map +1 -1
- package/dist/es5/terrain/shader-module.js +1 -1
- package/dist/es5/terrain/shader-module.js.map +1 -1
- package/dist/es5/terrain/terrain-cover.js +12 -8
- package/dist/es5/terrain/terrain-cover.js.map +1 -1
- package/dist/es5/utils/projection-utils.js +2 -0
- package/dist/es5/utils/projection-utils.js.map +1 -1
- package/dist/esm/terrain/height-map-builder.js +6 -0
- package/dist/esm/terrain/height-map-builder.js.map +1 -1
- package/dist/esm/terrain/shader-module.js +1 -1
- package/dist/esm/terrain/shader-module.js.map +1 -1
- package/dist/esm/terrain/terrain-cover.js +12 -8
- package/dist/esm/terrain/terrain-cover.js.map +1 -1
- package/dist/esm/utils/projection-utils.js +2 -0
- package/dist/esm/utils/projection-utils.js.map +1 -1
- package/dist.min.js +17 -16
- package/package.json +2 -2
- package/src/terrain/height-map-builder.ts +5 -0
- package/src/terrain/shader-module.ts +1 -0
- package/src/terrain/terrain-cover.ts +24 -19
- package/src/utils/projection-utils.ts +2 -0
- package/typed/terrain/height-map-builder.d.ts.map +1 -1
- package/typed/terrain/shader-module.d.ts.map +1 -1
- package/typed/terrain/terrain-cover.d.ts.map +1 -1
- package/typed/utils/projection-utils.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/terrain/terrain-cover.ts"],"names":["createRenderTarget","joinLayerBounds","makeViewport","getRenderBounds","TerrainCover","constructor","targetLayer","tile","getTile","id","isActive","Boolean","getCurrentLayer","shouldUpdate","viewport","layers","layerNeedsRedraw","sizeChanged","_updateViewport","layersChanged","_updateLayers","needsRedraw","getIntersectingLayers","length","i","map","layer","shouldRedraw","targetBounds","getBounds","targetBoundsCommon","newZoom","Math","ceil","zoom","bounds","oldZoom","renderViewport","newBounds","oldBounds","some","x","getRenderFramebuffer","fbo","context","gl","getPickingFramebuffer","props","pickable","pickingFbo","filterLayers","filter","includes","delete","texture","sourceTile","intersect","bbox","parent","b1","b2","west","east","south","north","left","right","top","bottom"],"mappings":"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","sourcesContent":["import {Framebuffer} from '@luma.gl/core';\n\nimport type {Layer, Viewport} from '@deck.gl/core';\n\nimport {createRenderTarget} from './utils';\nimport {joinLayerBounds, makeViewport, getRenderBounds, Bounds} from '../utils/projection-utils';\n\n// TODO - import from loaders when Tileset2D is split out\ntype GeoBoundingBox = {west: number; north: number; east: number; south: number};\ntype NonGeoBoundingBox = {left: number; top: number; right: number; bottom: number};\ntype Tile2DHeader = {\n bbox: GeoBoundingBox | NonGeoBoundingBox;\n};\n\n/**\n * Manages the lifecycle of the terrain cover (draped textures over a terrain mesh).\n * One terrain cover is created for each unique terrain layer (primitive layer with operation:terrain).\n * It is updated when the terrain source layer's mesh changes or when any of the terrainDrawMode:drape\n * layers requires redraw.\n * During the draw call of a terrain layer, the drape texture is overlaid on top of the layer's own color.\n */\nexport class TerrainCover {\n isDirty: boolean = true;\n /** The terrain layer that this instance belongs to */\n targetLayer: Layer;\n /** Viewport used to draw into the texture */\n renderViewport: Viewport | null = null;\n /** Bounds of the terrain cover texture, in cartesian space */\n bounds: Bounds | null = null;\n\n private fbo?: Framebuffer;\n private pickingFbo?: Framebuffer;\n private layers: string[] = [];\n private tile: Tile2DHeader | null;\n /** Cached version of targetLayer.getBounds() */\n private targetBounds: [number[], number[]] | null = null;\n /** targetBounds in cartesian space */\n private targetBoundsCommon: Bounds | null = null;\n\n constructor(targetLayer: Layer) {\n this.targetLayer = targetLayer;\n this.tile = getTile(targetLayer);\n }\n\n get id() {\n return this.targetLayer.id;\n }\n\n /** returns true if the target layer is still in use (i.e. not finalized) */\n get isActive(): boolean {\n return Boolean(this.targetLayer.getCurrentLayer());\n }\n\n shouldUpdate({\n targetLayer,\n viewport,\n layers,\n layerNeedsRedraw\n }: {\n targetLayer?: Layer;\n viewport?: Viewport;\n layers?: Layer[];\n layerNeedsRedraw?: Record<string, boolean>;\n }): boolean {\n if (targetLayer) {\n this.targetLayer = targetLayer;\n }\n const sizeChanged = viewport ? this._updateViewport(viewport) : false;\n\n let layersChanged = layers ? this._updateLayers(layers) : false;\n\n if (layerNeedsRedraw) {\n for (const id of this.layers) {\n if (layerNeedsRedraw[id]) {\n layersChanged = true;\n // console.log('layer needs redraw', id);\n break;\n }\n }\n }\n\n return layersChanged || sizeChanged;\n }\n\n /** Compare layers with the last version. Only rerender if necessary. */\n private _updateLayers(layers: Layer[]): boolean {\n let needsRedraw = false;\n layers = this.tile ? getIntersectingLayers(this.tile, layers) : layers;\n\n if (layers.length !== this.layers.length) {\n needsRedraw = true;\n // console.log('layers count changed', this.layers.length, '>>', layers.length);\n } else {\n for (let i = 0; i < layers.length; i++) {\n const id = layers[i].id;\n if (id !== this.layers[i]) {\n needsRedraw = true;\n // console.log('layer added/removed', id);\n break;\n }\n }\n }\n if (needsRedraw) {\n this.layers = layers.map(layer => layer.id);\n }\n return needsRedraw;\n }\n\n /** Compare viewport and terrain bounds with the last version. Only rerender if necesary. */\n private _updateViewport(viewport: Viewport): boolean {\n const targetLayer = this.targetLayer;\n let shouldRedraw = false;\n\n if (this.targetBounds !== targetLayer.getBounds()) {\n // console.log('bounds changed', this.bounds, '>>', newBounds);\n shouldRedraw = true;\n this.targetBounds = targetLayer.getBounds();\n this.targetBoundsCommon = joinLayerBounds([targetLayer], viewport);\n }\n\n if (!this.targetBoundsCommon) {\n return false;\n }\n\n const newZoom = Math.ceil(viewport.zoom + 0.5);\n // If the terrain layer is bound to a tile, always render a texture that cover the whole tile.\n // Otherwise, use the smaller of layer bounds and the viewport bounds.\n if (this.tile) {\n this.bounds = this.targetBoundsCommon;\n } else {\n const oldZoom = this.renderViewport?.zoom;\n shouldRedraw = shouldRedraw || newZoom !== oldZoom;\n const newBounds = getRenderBounds(this.targetBoundsCommon, viewport);\n const oldBounds = this.bounds;\n shouldRedraw = shouldRedraw || !oldBounds || newBounds.some((x, i) => x !== oldBounds[i]);\n this.bounds = newBounds;\n }\n\n if (shouldRedraw) {\n this.renderViewport = makeViewport({\n bounds: this.bounds,\n zoom: newZoom,\n viewport\n });\n }\n\n return shouldRedraw;\n }\n\n getRenderFramebuffer(): Framebuffer | null {\n if (!this.renderViewport || this.layers.length === 0) {\n return null;\n }\n if (!this.fbo) {\n this.fbo = createRenderTarget(this.targetLayer.context.gl, {id: this.id});\n }\n return this.fbo;\n }\n\n getPickingFramebuffer(): Framebuffer | null {\n if (!this.renderViewport || (this.layers.length === 0 && !this.targetLayer.props.pickable)) {\n return null;\n }\n if (!this.pickingFbo) {\n this.pickingFbo = createRenderTarget(this.targetLayer.context.gl, {id: `${this.id}-picking`});\n }\n return this.pickingFbo;\n }\n\n filterLayers(layers: Layer[]) {\n return layers.filter(({id}) => this.layers.includes(id));\n }\n\n delete() {\n const {fbo, pickingFbo} = this;\n if (fbo) {\n fbo.texture.delete();\n fbo.delete();\n }\n if (pickingFbo) {\n pickingFbo.texture.delete();\n pickingFbo.delete();\n }\n }\n}\n\n/**\n * Remove layers that do not overlap with the current terrain cover.\n * This implementation only has effect when a TileLayer is overlaid on top of a TileLayer\n */\nfunction getIntersectingLayers(sourceTile: Tile2DHeader, layers: Layer[]): Layer[] {\n return layers.filter(layer => {\n const tile = getTile(layer);\n if (tile) {\n return intersect(sourceTile.bbox, tile.bbox);\n }\n return true;\n });\n}\n\n/** If layer is the descendent of a TileLayer, return the corresponding tile. */\nfunction getTile(layer: Layer): Tile2DHeader | null {\n while (layer) {\n // @ts-expect-error tile may not exist\n const {tile} = layer.props;\n if (tile) {\n return tile;\n }\n layer = layer.parent as Layer;\n }\n return null;\n}\n\nfunction intersect(\n b1: GeoBoundingBox | NonGeoBoundingBox,\n b2: GeoBoundingBox | NonGeoBoundingBox\n): boolean {\n if ('west' in b1 && 'west' in b2) {\n return b1.west < b2.east && b2.west < b1.east && b1.south < b2.north && b2.south < b1.north;\n }\n if ('left' in b1 && 'left' in b2) {\n return b1.left < b2.right && b2.left < b1.right && b1.top < b2.bottom && b2.top < b1.bottom;\n }\n return false;\n}\n"],"file":"terrain-cover.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/terrain/terrain-cover.ts"],"names":["createRenderTarget","joinLayerBounds","makeViewport","getRenderBounds","TerrainCover","constructor","targetLayer","tile","getTile","id","isActive","Boolean","getCurrentLayer","shouldUpdate","viewport","layers","layerNeedsRedraw","sizeChanged","_updateViewport","layersChanged","_updateLayers","needsRedraw","getIntersectingLayers","length","i","map","layer","shouldRedraw","targetBounds","boundingBox","bottomLeftCommon","projectPosition","topRightCommon","targetBoundsCommon","getBounds","newZoom","Math","ceil","zoom","bounds","oldZoom","renderViewport","newBounds","oldBounds","some","x","getRenderFramebuffer","fbo","context","gl","getPickingFramebuffer","props","pickable","pickingFbo","filterLayers","filter","includes","delete","texture","sourceTile","intersect","parent","b1","b2"],"mappings":"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","sourcesContent":["import {Framebuffer} from '@luma.gl/core';\n\nimport type {Layer, Viewport} from '@deck.gl/core';\n\nimport {createRenderTarget} from './utils';\nimport {joinLayerBounds, makeViewport, getRenderBounds, Bounds} from '../utils/projection-utils';\n\ntype TileHeader = {\n boundingBox: [min: number[], max: number[]];\n};\n\n/**\n * Manages the lifecycle of the terrain cover (draped textures over a terrain mesh).\n * One terrain cover is created for each unique terrain layer (primitive layer with operation:terrain).\n * It is updated when the terrain source layer's mesh changes or when any of the terrainDrawMode:drape\n * layers requires redraw.\n * During the draw call of a terrain layer, the drape texture is overlaid on top of the layer's own color.\n */\nexport class TerrainCover {\n isDirty: boolean = true;\n /** The terrain layer that this instance belongs to */\n targetLayer: Layer;\n /** Viewport used to draw into the texture */\n renderViewport: Viewport | null = null;\n /** Bounds of the terrain cover texture, in cartesian space */\n bounds: Bounds | null = null;\n\n private fbo?: Framebuffer;\n private pickingFbo?: Framebuffer;\n private layers: string[] = [];\n private tile: TileHeader | null;\n /** Cached version of targetLayer.getBounds() */\n private targetBounds: [number[], number[]] | null = null;\n /** targetBounds in cartesian space */\n private targetBoundsCommon: Bounds | null = null;\n\n constructor(targetLayer: Layer) {\n this.targetLayer = targetLayer;\n this.tile = getTile(targetLayer);\n }\n\n get id() {\n return this.targetLayer.id;\n }\n\n /** returns true if the target layer is still in use (i.e. not finalized) */\n get isActive(): boolean {\n return Boolean(this.targetLayer.getCurrentLayer());\n }\n\n shouldUpdate({\n targetLayer,\n viewport,\n layers,\n layerNeedsRedraw\n }: {\n targetLayer?: Layer;\n viewport?: Viewport;\n layers?: Layer[];\n layerNeedsRedraw?: Record<string, boolean>;\n }): boolean {\n if (targetLayer) {\n this.targetLayer = targetLayer;\n }\n const sizeChanged = viewport ? this._updateViewport(viewport) : false;\n\n let layersChanged = layers ? this._updateLayers(layers) : false;\n\n if (layerNeedsRedraw) {\n for (const id of this.layers) {\n if (layerNeedsRedraw[id]) {\n layersChanged = true;\n // console.log('layer needs redraw', id);\n break;\n }\n }\n }\n\n return layersChanged || sizeChanged;\n }\n\n /** Compare layers with the last version. Only rerender if necessary. */\n private _updateLayers(layers: Layer[]): boolean {\n let needsRedraw = false;\n layers = this.tile ? getIntersectingLayers(this.tile, layers) : layers;\n\n if (layers.length !== this.layers.length) {\n needsRedraw = true;\n // console.log('layers count changed', this.layers.length, '>>', layers.length);\n } else {\n for (let i = 0; i < layers.length; i++) {\n const id = layers[i].id;\n if (id !== this.layers[i]) {\n needsRedraw = true;\n // console.log('layer added/removed', id);\n break;\n }\n }\n }\n if (needsRedraw) {\n this.layers = layers.map(layer => layer.id);\n }\n return needsRedraw;\n }\n\n /** Compare viewport and terrain bounds with the last version. Only rerender if necesary. */\n private _updateViewport(viewport: Viewport): boolean {\n const targetLayer = this.targetLayer;\n let shouldRedraw = false;\n\n if (this.tile && 'boundingBox' in this.tile) {\n if (!this.targetBounds) {\n shouldRedraw = true;\n this.targetBounds = this.tile.boundingBox;\n\n const bottomLeftCommon = viewport.projectPosition(this.targetBounds[0]);\n const topRightCommon = viewport.projectPosition(this.targetBounds[1]);\n this.targetBoundsCommon = [\n bottomLeftCommon[0],\n bottomLeftCommon[1],\n topRightCommon[0],\n topRightCommon[1]\n ];\n }\n } else if (this.targetBounds !== targetLayer.getBounds()) {\n // console.log('bounds changed', this.bounds, '>>', newBounds);\n shouldRedraw = true;\n this.targetBounds = targetLayer.getBounds();\n this.targetBoundsCommon = joinLayerBounds([targetLayer], viewport);\n }\n\n if (!this.targetBoundsCommon) {\n return false;\n }\n\n const newZoom = Math.ceil(viewport.zoom + 0.5);\n // If the terrain layer is bound to a tile, always render a texture that cover the whole tile.\n // Otherwise, use the smaller of layer bounds and the viewport bounds.\n if (this.tile) {\n this.bounds = this.targetBoundsCommon;\n } else {\n const oldZoom = this.renderViewport?.zoom;\n shouldRedraw = shouldRedraw || newZoom !== oldZoom;\n const newBounds = getRenderBounds(this.targetBoundsCommon, viewport);\n const oldBounds = this.bounds;\n shouldRedraw = shouldRedraw || !oldBounds || newBounds.some((x, i) => x !== oldBounds[i]);\n this.bounds = newBounds;\n }\n\n if (shouldRedraw) {\n this.renderViewport = makeViewport({\n bounds: this.bounds,\n zoom: newZoom,\n viewport\n });\n }\n\n return shouldRedraw;\n }\n\n getRenderFramebuffer(): Framebuffer | null {\n if (!this.renderViewport || this.layers.length === 0) {\n return null;\n }\n if (!this.fbo) {\n this.fbo = createRenderTarget(this.targetLayer.context.gl, {id: this.id});\n }\n return this.fbo;\n }\n\n getPickingFramebuffer(): Framebuffer | null {\n if (!this.renderViewport || (this.layers.length === 0 && !this.targetLayer.props.pickable)) {\n return null;\n }\n if (!this.pickingFbo) {\n this.pickingFbo = createRenderTarget(this.targetLayer.context.gl, {id: `${this.id}-picking`});\n }\n return this.pickingFbo;\n }\n\n filterLayers(layers: Layer[]) {\n return layers.filter(({id}) => this.layers.includes(id));\n }\n\n delete() {\n const {fbo, pickingFbo} = this;\n if (fbo) {\n fbo.texture.delete();\n fbo.delete();\n }\n if (pickingFbo) {\n pickingFbo.texture.delete();\n pickingFbo.delete();\n }\n }\n}\n\n/**\n * Remove layers that do not overlap with the current terrain cover.\n * This implementation only has effect when a TileLayer is overlaid on top of a TileLayer\n */\nfunction getIntersectingLayers(sourceTile: TileHeader, layers: Layer[]): Layer[] {\n return layers.filter(layer => {\n const tile = getTile(layer);\n if (tile) {\n return intersect(sourceTile.boundingBox, tile.boundingBox);\n }\n return true;\n });\n}\n\n/** If layer is the descendent of a TileLayer, return the corresponding tile. */\nfunction getTile(layer: Layer): TileHeader | null {\n while (layer) {\n // @ts-expect-error tile may not exist\n const {tile} = layer.props;\n if (tile) {\n return tile;\n }\n layer = layer.parent as Layer;\n }\n return null;\n}\n\nfunction intersect(b1?: [number[], number[]], b2?: [number[], number[]]): boolean {\n if (b1 && b2) {\n return b1[0][0] < b2[1][0] && b2[0][0] < b1[1][0] && b1[0][1] < b2[1][1] && b2[0][1] < b1[1][1];\n }\n return false;\n}\n"],"file":"terrain-cover.js"}
|
|
@@ -69,6 +69,7 @@ export function makeViewport(opts) {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
return isGeospatial ? new WebMercatorViewport({
|
|
72
|
+
id: viewport.id,
|
|
72
73
|
x: border,
|
|
73
74
|
y: border,
|
|
74
75
|
width,
|
|
@@ -78,6 +79,7 @@ export function makeViewport(opts) {
|
|
|
78
79
|
zoom,
|
|
79
80
|
orthographic: true
|
|
80
81
|
}) : new OrthographicViewport({
|
|
82
|
+
id: viewport.id,
|
|
81
83
|
x: border,
|
|
82
84
|
y: border,
|
|
83
85
|
width,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/projection-utils.ts"],"names":["WebMercatorViewport","OrthographicViewport","joinLayerBounds","layers","viewport","bounds","Infinity","layer","layerBounds","getBounds","bottomLeftCommon","projectPosition","autoOffset","topRightCommon","Math","min","max","Number","isFinite","MAX_VIEWPORT_SIZE","makeViewport","opts","border","isGeospatial","centerWorld","unprojectPosition","width","height","zoom","undefined","scale","log2","round","abs","maxSize","r","x","y","longitude","latitude","orthographic","target","flipY","getViewportBounds","zRange","viewportBoundsWorld","length","minZ","maxZ","bounds0","z","bounds1","viewportBottomLeftCommon","slice","viewportTopRightCommon","getRenderBounds","viewportBounds","paddedBounds","doubleBounds","dx","dy","centerX","centerY"],"mappings":"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","sourcesContent":["import {WebMercatorViewport, OrthographicViewport} from '@deck.gl/core';\nimport type {Layer, Viewport} from '@deck.gl/core';\n\n/** Bounds in CARTESIAN coordinates */\nexport type Bounds = [minX: number, minY: number, maxX: number, maxY: number];\n\n/*\n * Compute the union of bounds from multiple layers\n * Returns bounds in CARTESIAN coordinates\n */\nexport function joinLayerBounds(\n /** The layers to combine */\n layers: Layer[],\n /** A Viewport instance that is used to determine the type of the view */\n viewport: Viewport\n): Bounds | null {\n // Join the bounds of layer data\n const bounds: Bounds = [Infinity, Infinity, -Infinity, -Infinity];\n for (const layer of layers) {\n const layerBounds = layer.getBounds();\n if (layerBounds) {\n const bottomLeftCommon = layer.projectPosition(layerBounds[0], {viewport, autoOffset: false});\n const topRightCommon = layer.projectPosition(layerBounds[1], {viewport, autoOffset: false});\n\n bounds[0] = Math.min(bounds[0], bottomLeftCommon[0]);\n bounds[1] = Math.min(bounds[1], bottomLeftCommon[1]);\n bounds[2] = Math.max(bounds[2], topRightCommon[0]);\n bounds[3] = Math.max(bounds[3], topRightCommon[1]);\n }\n }\n\n if (Number.isFinite(bounds[0])) {\n return bounds;\n }\n return null;\n}\n\nconst MAX_VIEWPORT_SIZE = 2048;\n\n/** Construct a viewport that just covers the target bounds. Used for rendering to common space indexed texture. */\nexport function makeViewport(opts: {\n /** The cartesian bounds of layers that will render into this texture */\n bounds: Bounds;\n /** Target width. If not specified, will be deduced from zoom */\n width?: number;\n /** Target height. If not specified, will be deduced from zoom */\n height?: number;\n /** Target zoom. If not specified, will be deduced from width and height */\n zoom?: number;\n /** Border around the viewport in pixels */\n border?: number;\n /** A viewport used to determine the output type */\n viewport: Viewport;\n}): Viewport | null {\n const {bounds, viewport, border = 0} = opts;\n const {isGeospatial} = viewport;\n\n if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {\n return null;\n }\n\n const centerWorld = viewport.unprojectPosition([\n (bounds[0] + bounds[2]) / 2,\n (bounds[1] + bounds[3]) / 2,\n 0\n ]);\n\n let {width, height, zoom} = opts;\n if (zoom === undefined) {\n // Use width and height to determine zoom\n width = width! - border * 2;\n height = height! - border * 2;\n const scale = Math.min(width / (bounds[2] - bounds[0]), height / (bounds[3] - bounds[1]));\n zoom = Math.min(Math.log2(scale), 20);\n } else if (!width || !height) {\n // Use zoom to determine width and height\n const scale = 2 ** zoom;\n width = Math.round(Math.abs(bounds[2] - bounds[0]) * scale);\n height = Math.round(Math.abs(bounds[3] - bounds[1]) * scale);\n const maxSize = MAX_VIEWPORT_SIZE - border * 2;\n if (width > maxSize || height > maxSize) {\n const r = maxSize / Math.max(width, height);\n width = Math.round(width * r);\n height = Math.round(height * r);\n zoom += Math.log2(r);\n }\n }\n\n // TODO - find a more generic way to construct this viewport\n // Geospatial viewports may not be web-mercator\n return isGeospatial\n ? new WebMercatorViewport({\n x: border,\n y: border,\n width,\n height,\n longitude: centerWorld[0],\n latitude: centerWorld[1],\n zoom,\n orthographic: true\n })\n : new OrthographicViewport({\n x: border,\n y: border,\n width,\n height,\n target: centerWorld,\n zoom,\n flipY: false\n });\n}\n\n/** Returns viewport bounds in CARTESIAN coordinates */\nexport function getViewportBounds(viewport: Viewport, zRange?: [number, number]): Bounds {\n // Viewport bounds in world coordinates\n let viewportBoundsWorld: Bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n viewportBoundsWorld = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n viewportBoundsWorld = viewport.getBounds();\n }\n\n // Viewport bounds in cartesian coordinates\n const viewportBottomLeftCommon = viewport.projectPosition(viewportBoundsWorld.slice(0, 2));\n const viewportTopRightCommon = viewport.projectPosition(viewportBoundsWorld.slice(2, 4));\n return [\n viewportBottomLeftCommon[0],\n viewportBottomLeftCommon[1],\n viewportTopRightCommon[0],\n viewportTopRightCommon[1]\n ];\n}\n\n/*\n * Determine the common space bounds that best cover the given data for the given viewport\n * Returns bounds in CARTESIAN coordinates\n */\nexport function getRenderBounds(\n layerBounds: Bounds,\n viewport: Viewport,\n zRange?: [number, number]\n): Bounds {\n if (!layerBounds) {\n return [0, 0, 1, 1];\n }\n\n const viewportBounds = getViewportBounds(viewport, zRange);\n // Expand viewport bounds by 2X. Heurestically chosen to avoid masking\n // errors when mask is partially out of view\n const paddedBounds = doubleBounds(viewportBounds);\n\n // When bounds of the layers are smaller than the viewport bounds simply use\n // mask bounds, so as to maximize resolution & avoid rerenders\n if (\n layerBounds[2] - layerBounds[0] <= paddedBounds[2] - paddedBounds[0] &&\n layerBounds[3] - layerBounds[1] <= paddedBounds[3] - paddedBounds[1]\n ) {\n return layerBounds;\n }\n\n // As viewport shrinks, to avoid pixelation along mask edges\n // we need to reduce the bounds and only render the visible portion\n // of the mask.\n // We pad the viewport bounds to capture the section\n // of the mask just outside the viewport to correctly maskByInstance.\n // Intersect mask & padded viewport bounds\n return [\n Math.max(layerBounds[0], paddedBounds[0]),\n Math.max(layerBounds[1], paddedBounds[1]),\n Math.min(layerBounds[2], paddedBounds[2]),\n Math.min(layerBounds[3], paddedBounds[3])\n ];\n}\n\nfunction doubleBounds(bounds: Bounds): Bounds {\n const dx = bounds[2] - bounds[0];\n const dy = bounds[3] - bounds[1];\n const centerX = (bounds[0] + bounds[2]) / 2;\n const centerY = (bounds[1] + bounds[3]) / 2;\n return [centerX - dx, centerY - dy, centerX + dx, centerY + dy];\n}\n"],"file":"projection-utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/projection-utils.ts"],"names":["WebMercatorViewport","OrthographicViewport","joinLayerBounds","layers","viewport","bounds","Infinity","layer","layerBounds","getBounds","bottomLeftCommon","projectPosition","autoOffset","topRightCommon","Math","min","max","Number","isFinite","MAX_VIEWPORT_SIZE","makeViewport","opts","border","isGeospatial","centerWorld","unprojectPosition","width","height","zoom","undefined","scale","log2","round","abs","maxSize","r","id","x","y","longitude","latitude","orthographic","target","flipY","getViewportBounds","zRange","viewportBoundsWorld","length","minZ","maxZ","bounds0","z","bounds1","viewportBottomLeftCommon","slice","viewportTopRightCommon","getRenderBounds","viewportBounds","paddedBounds","doubleBounds","dx","dy","centerX","centerY"],"mappings":"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","sourcesContent":["import {WebMercatorViewport, OrthographicViewport} from '@deck.gl/core';\nimport type {Layer, Viewport} from '@deck.gl/core';\n\n/** Bounds in CARTESIAN coordinates */\nexport type Bounds = [minX: number, minY: number, maxX: number, maxY: number];\n\n/*\n * Compute the union of bounds from multiple layers\n * Returns bounds in CARTESIAN coordinates\n */\nexport function joinLayerBounds(\n /** The layers to combine */\n layers: Layer[],\n /** A Viewport instance that is used to determine the type of the view */\n viewport: Viewport\n): Bounds | null {\n // Join the bounds of layer data\n const bounds: Bounds = [Infinity, Infinity, -Infinity, -Infinity];\n for (const layer of layers) {\n const layerBounds = layer.getBounds();\n if (layerBounds) {\n const bottomLeftCommon = layer.projectPosition(layerBounds[0], {viewport, autoOffset: false});\n const topRightCommon = layer.projectPosition(layerBounds[1], {viewport, autoOffset: false});\n\n bounds[0] = Math.min(bounds[0], bottomLeftCommon[0]);\n bounds[1] = Math.min(bounds[1], bottomLeftCommon[1]);\n bounds[2] = Math.max(bounds[2], topRightCommon[0]);\n bounds[3] = Math.max(bounds[3], topRightCommon[1]);\n }\n }\n\n if (Number.isFinite(bounds[0])) {\n return bounds;\n }\n return null;\n}\n\nconst MAX_VIEWPORT_SIZE = 2048;\n\n/** Construct a viewport that just covers the target bounds. Used for rendering to common space indexed texture. */\nexport function makeViewport(opts: {\n /** The cartesian bounds of layers that will render into this texture */\n bounds: Bounds;\n /** Target width. If not specified, will be deduced from zoom */\n width?: number;\n /** Target height. If not specified, will be deduced from zoom */\n height?: number;\n /** Target zoom. If not specified, will be deduced from width and height */\n zoom?: number;\n /** Border around the viewport in pixels */\n border?: number;\n /** A viewport used to determine the output type */\n viewport: Viewport;\n}): Viewport | null {\n const {bounds, viewport, border = 0} = opts;\n const {isGeospatial} = viewport;\n\n if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {\n return null;\n }\n\n const centerWorld = viewport.unprojectPosition([\n (bounds[0] + bounds[2]) / 2,\n (bounds[1] + bounds[3]) / 2,\n 0\n ]);\n\n let {width, height, zoom} = opts;\n if (zoom === undefined) {\n // Use width and height to determine zoom\n width = width! - border * 2;\n height = height! - border * 2;\n const scale = Math.min(width / (bounds[2] - bounds[0]), height / (bounds[3] - bounds[1]));\n zoom = Math.min(Math.log2(scale), 20);\n } else if (!width || !height) {\n // Use zoom to determine width and height\n const scale = 2 ** zoom;\n width = Math.round(Math.abs(bounds[2] - bounds[0]) * scale);\n height = Math.round(Math.abs(bounds[3] - bounds[1]) * scale);\n const maxSize = MAX_VIEWPORT_SIZE - border * 2;\n if (width > maxSize || height > maxSize) {\n const r = maxSize / Math.max(width, height);\n width = Math.round(width * r);\n height = Math.round(height * r);\n zoom += Math.log2(r);\n }\n }\n\n // TODO - find a more generic way to construct this viewport\n // Geospatial viewports may not be web-mercator\n return isGeospatial\n ? new WebMercatorViewport({\n id: viewport.id,\n x: border,\n y: border,\n width,\n height,\n longitude: centerWorld[0],\n latitude: centerWorld[1],\n zoom,\n orthographic: true\n })\n : new OrthographicViewport({\n id: viewport.id,\n x: border,\n y: border,\n width,\n height,\n target: centerWorld,\n zoom,\n flipY: false\n });\n}\n\n/** Returns viewport bounds in CARTESIAN coordinates */\nexport function getViewportBounds(viewport: Viewport, zRange?: [number, number]): Bounds {\n // Viewport bounds in world coordinates\n let viewportBoundsWorld: Bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n viewportBoundsWorld = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n viewportBoundsWorld = viewport.getBounds();\n }\n\n // Viewport bounds in cartesian coordinates\n const viewportBottomLeftCommon = viewport.projectPosition(viewportBoundsWorld.slice(0, 2));\n const viewportTopRightCommon = viewport.projectPosition(viewportBoundsWorld.slice(2, 4));\n return [\n viewportBottomLeftCommon[0],\n viewportBottomLeftCommon[1],\n viewportTopRightCommon[0],\n viewportTopRightCommon[1]\n ];\n}\n\n/*\n * Determine the common space bounds that best cover the given data for the given viewport\n * Returns bounds in CARTESIAN coordinates\n */\nexport function getRenderBounds(\n layerBounds: Bounds,\n viewport: Viewport,\n zRange?: [number, number]\n): Bounds {\n if (!layerBounds) {\n return [0, 0, 1, 1];\n }\n\n const viewportBounds = getViewportBounds(viewport, zRange);\n // Expand viewport bounds by 2X. Heurestically chosen to avoid masking\n // errors when mask is partially out of view\n const paddedBounds = doubleBounds(viewportBounds);\n\n // When bounds of the layers are smaller than the viewport bounds simply use\n // mask bounds, so as to maximize resolution & avoid rerenders\n if (\n layerBounds[2] - layerBounds[0] <= paddedBounds[2] - paddedBounds[0] &&\n layerBounds[3] - layerBounds[1] <= paddedBounds[3] - paddedBounds[1]\n ) {\n return layerBounds;\n }\n\n // As viewport shrinks, to avoid pixelation along mask edges\n // we need to reduce the bounds and only render the visible portion\n // of the mask.\n // We pad the viewport bounds to capture the section\n // of the mask just outside the viewport to correctly maskByInstance.\n // Intersect mask & padded viewport bounds\n return [\n Math.max(layerBounds[0], paddedBounds[0]),\n Math.max(layerBounds[1], paddedBounds[1]),\n Math.min(layerBounds[2], paddedBounds[2]),\n Math.min(layerBounds[3], paddedBounds[3])\n ];\n}\n\nfunction doubleBounds(bounds: Bounds): Bounds {\n const dx = bounds[2] - bounds[0];\n const dy = bounds[3] - bounds[1];\n const centerX = (bounds[0] + bounds[2]) / 2;\n const centerY = (bounds[1] + bounds[3]) / 2;\n return [centerX - dx, centerY - dy, centerX + dx, centerY + dy];\n}\n"],"file":"projection-utils.js"}
|
package/dist.min.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['deck'] = factory();
|
|
6
6
|
else root['deck'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var Ti=Object.create;var oe=Object.defineProperty;var wi=Object.getOwnPropertyDescriptor;var Mi=Object.getOwnPropertyNames;var Ai=Object.getPrototypeOf,Ri=Object.prototype.hasOwnProperty;var O=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),Si=(t,r)=>{for(var e in r)oe(t,e,{get:r[e],enumerable:!0})},ie=(t,r,e,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Mi(r))!Ri.call(t,i)&&i!==e&&oe(t,i,{get:()=>r[i],enumerable:!(n=wi(r,i))||n.enumerable});return t},j=(t,r,e)=>(ie(t,r,"default"),e&&ie(e,r,"default")),u=(t,r,e)=>(e=t!=null?Ti(Ai(t)):{},ie(r||!t||!t.__esModule?oe(e,"default",{value:t,enumerable:!0}):e,t)),Fi=t=>ie(oe({},"__esModule",{value:!0}),t);var y=O((Ma,ht)=>{ht.exports=globalThis.deck});var x=O((Ra,gt)=>{function ki(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}gt.exports=ki});var b=O((Sa,xt)=>{function Pt(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function Ci(t,r,e){return r&&Pt(t.prototype,r),e&&Pt(t,e),t}xt.exports=Ci});var bt=O((Fa,Ne)=>{function Le(t,r){return Ne.exports=Le=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Le(t,r)}Ne.exports=Le});var w=O((ka,Ot)=>{var Ii=bt();function Li(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),r&&Ii(t,r)}Ot.exports=Li});var Et=O((Ca,se)=>{function ae(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?se.exports=ae=function(e){return typeof e}:se.exports=ae=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ae(t)}se.exports=ae});var fe=O((Ia,Tt)=>{function Ni(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}Tt.exports=Ni});var M=O((La,wt)=>{var Bi=Et(),Di=fe();function ji(t,r){return r&&(Bi(r)==="object"||typeof r=="function")?r:Di(t)}wt.exports=ji});var T=O((Na,De)=>{function Be(t){return De.exports=Be=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Be(t)}De.exports=Be});var P=O((Ba,Mt)=>{function Vi(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}Mt.exports=Vi});var R=O((Ua,Gt)=>{Gt.exports=globalThis.luma});var ir=O((Wa,nr)=>{function ro(t){if(Array.isArray(t))return t}nr.exports=ro});var ar=O((Ha,or)=>{function no(t,r){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]"){var e=[],n=!0,i=!1,o=void 0;try{for(var a=t[Symbol.iterator](),
|
|
7
|
+
"use strict";var __exports__=(()=>{var Ti=Object.create;var oe=Object.defineProperty;var wi=Object.getOwnPropertyDescriptor;var Mi=Object.getOwnPropertyNames;var Ai=Object.getPrototypeOf,Ri=Object.prototype.hasOwnProperty;var O=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),Si=(t,r)=>{for(var e in r)oe(t,e,{get:r[e],enumerable:!0})},ie=(t,r,e,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Mi(r))!Ri.call(t,i)&&i!==e&&oe(t,i,{get:()=>r[i],enumerable:!(n=wi(r,i))||n.enumerable});return t},j=(t,r,e)=>(ie(t,r,"default"),e&&ie(e,r,"default")),u=(t,r,e)=>(e=t!=null?Ti(Ai(t)):{},ie(r||!t||!t.__esModule?oe(e,"default",{value:t,enumerable:!0}):e,t)),Fi=t=>ie(oe({},"__esModule",{value:!0}),t);var y=O((Ma,ht)=>{ht.exports=globalThis.deck});var x=O((Ra,gt)=>{function ki(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}gt.exports=ki});var b=O((Sa,xt)=>{function Pt(t,r){for(var e=0;e<r.length;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function Ci(t,r,e){return r&&Pt(t.prototype,r),e&&Pt(t,e),t}xt.exports=Ci});var bt=O((Fa,Ne)=>{function Le(t,r){return Ne.exports=Le=Object.setPrototypeOf||function(n,i){return n.__proto__=i,n},Le(t,r)}Ne.exports=Le});var w=O((ka,Ot)=>{var Ii=bt();function Li(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),r&&Ii(t,r)}Ot.exports=Li});var Et=O((Ca,se)=>{function ae(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?se.exports=ae=function(e){return typeof e}:se.exports=ae=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ae(t)}se.exports=ae});var fe=O((Ia,Tt)=>{function Ni(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}Tt.exports=Ni});var M=O((La,wt)=>{var Bi=Et(),Di=fe();function ji(t,r){return r&&(Bi(r)==="object"||typeof r=="function")?r:Di(t)}wt.exports=ji});var T=O((Na,De)=>{function Be(t){return De.exports=Be=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Be(t)}De.exports=Be});var P=O((Ba,Mt)=>{function Vi(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}Mt.exports=Vi});var R=O((Ua,Gt)=>{Gt.exports=globalThis.luma});var ir=O((Wa,nr)=>{function ro(t){if(Array.isArray(t))return t}nr.exports=ro});var ar=O((Ha,or)=>{function no(t,r){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]"){var e=[],n=!0,i=!1,o=void 0;try{for(var a=t[Symbol.iterator](),f;!(n=(f=a.next()).done)&&(e.push(f.value),!(r&&e.length===r));n=!0);}catch(s){i=!0,o=s}finally{try{!n&&a.return!=null&&a.return()}finally{if(i)throw o}}return e}}or.exports=no});var fr=O((Ka,sr)=>{function io(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}sr.exports=io});var qe=O((Ya,lr)=>{var oo=ir(),ao=ar(),so=fr();function fo(t,r){return oo(t)||ao(t,r)||so()}lr.exports=fo});var Jr=O((Zs,Xr)=>{var Go=T();function Wo(t,r){for(;!Object.prototype.hasOwnProperty.call(t,r)&&(t=Go(t),t!==null););return t}Xr.exports=Wo});var rt=O((Xs,be)=>{var Ho=Jr();function xe(t,r,e){return typeof Reflect<"u"&&Reflect.get?be.exports=xe=Reflect.get:be.exports=xe=function(i,o,a){var f=Ho(i,o);if(f){var s=Object.getOwnPropertyDescriptor(f,o);return s.get?s.get.call(a):s.value}},xe(t,r,e||t)}be.exports=xe});var re={};Si(re,{BrushingExtension:()=>le,ClipExtension:()=>Pe,CollisionFilterExtension:()=>we,DataFilterExtension:()=>ve,FillStyleExtension:()=>ge,Fp64Extension:()=>$e,MaskExtension:()=>Me,PathStyleExtension:()=>he,_TerrainExtension:()=>Ce,project64:()=>me});var C={},yt=u(y());j(C,u(y()));if(!yt.Layer)throw new Error("@deck.gl/core is not found");j(re,C);var St=u(x()),Ft=u(b()),kt=u(w()),Ct=u(M()),je=u(T()),Ve=u(P()),It=u(y());var At=u(y()),zi=`
|
|
8
8
|
uniform bool brushing_enabled;
|
|
9
9
|
uniform int brushing_target;
|
|
10
10
|
uniform vec2 brushing_mousePos;
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
if (brushing_enabled && brushing_isVisible < 0.5) {
|
|
68
68
|
discard;
|
|
69
69
|
}
|
|
70
|
-
`},Rt={name:"brushing",dependencies:[At.project],vs:zi,fs:Ui,inject:Gi,getUniforms:function(r){if(!r||!("viewport"in r))return{};var e=r.brushingEnabled,n=e===void 0?!0:e,i=r.brushingRadius,o=i===void 0?1e4:i,a=r.brushingTarget,
|
|
70
|
+
`},Rt={name:"brushing",dependencies:[At.project],vs:zi,fs:Ui,inject:Gi,getUniforms:function(r){if(!r||!("viewport"in r))return{};var e=r.brushingEnabled,n=e===void 0?!0:e,i=r.brushingRadius,o=i===void 0?1e4:i,a=r.brushingTarget,f=a===void 0?"source":a,s=r.mousePosition,l=r.viewport;return{brushing_enabled:Boolean(n&&s&&l.containsPixel(s)),brushing_radius:o,brushing_target:qi[f]||0,brushing_mousePos:s?l.unproject([s.x-l.x,s.y-l.y]):[0,0]}}};function Wi(t){var r=Hi();return function(){var n=(0,je.default)(t),i;if(r){var o=(0,je.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Ct.default)(this,i)}}function Hi(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Ki={getBrushingTarget:{type:"accessor",value:[0,0]},brushingTarget:"source",brushingEnabled:!0,brushingRadius:1e4},le=function(t){(0,kt.default)(e,t);var r=Wi(e);function e(){return(0,St.default)(this,e),r.apply(this,arguments)}return(0,Ft.default)(e,[{key:"getShaders",value:function(){return{modules:[Rt]}}},{key:"initializeState",value:function(i,o){var a=this,f=this.getAttributeManager();f&&f.add({brushingTargets:{size:2,accessor:"getBrushingTarget",shaderAttributes:{brushingTargets:{divisor:0},instanceBrushingTargets:{divisor:1}}}}),this.state.onMouseMove=function(){var s;(s=a.getCurrentLayer())===null||s===void 0||s.setNeedsRedraw()},i.deck&&i.deck.eventManager.on({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}},{key:"finalizeState",value:function(i,o){i.deck&&i.deck.eventManager.off({pointermove:this.state.onMouseMove,pointerleave:this.state.onMouseMove})}}]),e}(It.LayerExtension);(0,Ve.default)(le,"defaultProps",Ki);(0,Ve.default)(le,"extensionName","BrushingExtension");var Jt=u(x()),Qt=u(b()),er=u(w()),tr=u(M()),Ue=u(T()),ce=u(P()),rr=u(y());var Bt=u(P());function Lt(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function Nt(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Lt(Object(e),!0).forEach(function(n){(0,Bt.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Lt(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}var Dt=`
|
|
71
71
|
uniform DATAFILTER_TYPE filter_min;
|
|
72
72
|
uniform DATAFILTER_TYPE filter_softMin;
|
|
73
73
|
uniform DATAFILTER_TYPE filter_softMax;
|
|
@@ -125,7 +125,7 @@ void dataFilter_setValue(DATAFILTER_TYPE valueFromMin, DATAFILTER_TYPE valueFrom
|
|
|
125
125
|
`,jt=`
|
|
126
126
|
uniform bool filter_transformColor;
|
|
127
127
|
varying float dataFilter_value;
|
|
128
|
-
`;function Vt(t){if(!t||!("extensions"in t))return{};var r=t.filterRange,e=r===void 0?[-1,1]:r,n=t.filterEnabled,i=n===void 0?!0:n,o=t.filterTransformSize,a=o===void 0?!0:o,
|
|
128
|
+
`;function Vt(t){if(!t||!("extensions"in t))return{};var r=t.filterRange,e=r===void 0?[-1,1]:r,n=t.filterEnabled,i=n===void 0?!0:n,o=t.filterTransformSize,a=o===void 0?!0:o,f=t.filterTransformColor,s=f===void 0?!0:f,l=t.filterSoftRange||e;return Nt(Nt({},Number.isFinite(e[0])?{filter_min:e[0],filter_softMin:l[0],filter_softMax:l[1],filter_max:e[1]}:{filter_min:e.map(function(c){return c[0]}),filter_softMin:l.map(function(c){return c[0]}),filter_softMax:l.map(function(c){return c[1]}),filter_max:e.map(function(c){return c[1]})}),{},{filter_enabled:i,filter_useSoftMargin:Boolean(t.filterSoftRange),filter_transformSize:i&&a,filter_transformColor:i&&s})}function Yi(t){if(!t||!("extensions"in t))return{};var r=Vt(t);if(Number.isFinite(r.filter_min)){var e=Math.fround(r.filter_min);r.filter_min-=e,r.filter_softMin-=e,r.filter_min64High=e;var n=Math.fround(r.filter_max);r.filter_max-=n,r.filter_softMax-=n,r.filter_max64High=n}else{var i=r.filter_min.map(Math.fround);r.filter_min=r.filter_min.map(function(a,f){return a-i[f]}),r.filter_softMin=r.filter_softMin.map(function(a,f){return a-i[f]}),r.filter_min64High=i;var o=r.filter_max.map(Math.fround);r.filter_max=r.filter_max.map(function(a,f){return a-o[f]}),r.filter_softMax=r.filter_softMax.map(function(a,f){return a-o[f]}),r.filter_max64High=o}return r}var zt={"vs:#main-start":`
|
|
129
129
|
#ifdef DATAFILTER_DOUBLE
|
|
130
130
|
dataFilter_setValue(
|
|
131
131
|
DATAFILTER_ATTRIB - filter_min64High + DATAFILTER_ATTRIB_64LOW,
|
|
@@ -188,7 +188,7 @@ void main() {
|
|
|
188
188
|
}
|
|
189
189
|
gl_FragColor = vColor;
|
|
190
190
|
}
|
|
191
|
-
`;function Ht(t){return Boolean(t.getExtension("EXT_float_blend")&&(t.getExtension("EXT_color_buffer_float")||t.getExtension("WEBGL_color_buffer_float")))}function Kt(t,r){return r?new L.Framebuffer(t,{width:1,height:1,attachments:(0,ze.default)({},36064,new L.Texture2D(t,{format:(0,L.isWebGL2)(t)?34836:6408,type:5126,mipmaps:!1}))}):new L.Framebuffer(t,{width:256,height:64,depth:!1})}function Yt(t,r,e){return r.defines.NON_INSTANCED_MODEL=1,e&&(r.defines.FLOAT_TARGET=1),new L.Model(t,$i({id:"data-filter-aggregation-model",vertexCount:1,isInstanced:!1,drawMode:0,vs:Zi,fs:Xi},r))}var $t={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};var pe=u(R());function Zt(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function ue(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Zt(Object(e),!0).forEach(function(n){(0,ce.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Zt(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Qi(t){var r=eo();return function(){var n=(0,Ue.default)(t),i;if(r){var o=(0,Ue.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,tr.default)(this,i)}}function eo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var to={getFilterValue:{type:"accessor",value:0},onFilteredItemsChange:{type:"function",value:null,optional:!0},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterTransformSize:!0,filterTransformColor:!0},Xt={1:"float",2:"vec2",3:"vec3",4:"vec4"},ve=function(t){(0,er.default)(e,t);var r=Qi(e);function e(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=n.filterSize,o=i===void 0?1:i,a=n.fp64,
|
|
191
|
+
`;function Ht(t){return Boolean(t.getExtension("EXT_float_blend")&&(t.getExtension("EXT_color_buffer_float")||t.getExtension("WEBGL_color_buffer_float")))}function Kt(t,r){return r?new L.Framebuffer(t,{width:1,height:1,attachments:(0,ze.default)({},36064,new L.Texture2D(t,{format:(0,L.isWebGL2)(t)?34836:6408,type:5126,mipmaps:!1}))}):new L.Framebuffer(t,{width:256,height:64,depth:!1})}function Yt(t,r,e){return r.defines.NON_INSTANCED_MODEL=1,e&&(r.defines.FLOAT_TARGET=1),new L.Model(t,$i({id:"data-filter-aggregation-model",vertexCount:1,isInstanced:!1,drawMode:0,vs:Zi,fs:Xi},r))}var $t={blend:!0,blendFunc:[1,1,1,1],blendEquation:[32774,32774],depthTest:!1};var pe=u(R());function Zt(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function ue(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Zt(Object(e),!0).forEach(function(n){(0,ce.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Zt(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Qi(t){var r=eo();return function(){var n=(0,Ue.default)(t),i;if(r){var o=(0,Ue.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,tr.default)(this,i)}}function eo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var to={getFilterValue:{type:"accessor",value:0},onFilteredItemsChange:{type:"function",value:null,optional:!0},filterEnabled:!0,filterRange:[-1,1],filterSoftRange:null,filterTransformSize:!0,filterTransformColor:!0},Xt={1:"float",2:"vec2",3:"vec3",4:"vec4"},ve=function(t){(0,er.default)(e,t);var r=Qi(e);function e(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=n.filterSize,o=i===void 0?1:i,a=n.fp64,f=a===void 0?!1:a,s=n.countItems,l=s===void 0?!1:s;if((0,Jt.default)(this,e),!Xt[o])throw new Error("filterSize out of range");return r.call(this,{filterSize:o,fp64:f,countItems:l})}return(0,Qt.default)(e,[{key:"getShaders",value:function(i){var o=i.opts,a=o.filterSize,f=o.fp64;return{modules:[f?qt:Ut],defines:{DATAFILTER_TYPE:Xt[a],DATAFILTER_DOUBLE:Boolean(f)}}}},{key:"initializeState",value:function(i,o){var a=this.getAttributeManager();a&&a.add({filterValues:{size:o.opts.filterSize,type:o.opts.fp64?5130:5126,accessor:"getFilterValue",shaderAttributes:{filterValues:{divisor:0},instanceFilterValues:{divisor:1}}}});var f=this.context.gl;if(a&&o.opts.countItems){var s=Ht(f);a.add({filterIndices:{size:s?1:2,vertexOffset:1,type:5121,normalized:!0,accessor:function(v,_){var m=_.index,d=v&&v.__source?v.__source.index:m;return s?(d+1)%255:[(d+1)%255,Math.floor(d/255)%255]},shaderAttributes:{filterPrevIndices:{vertexOffset:0},filterIndices:{vertexOffset:1}}}});var l=Kt(f,s),c=Yt(f,o.getShaders.call(this,o),s);this.setState({filterFBO:l,filterModel:c})}}},{key:"updateState",value:function(i){var o=i.props,a=i.oldProps;if(this.state.filterModel){var f=this.getAttributeManager(),s=f.attributes.filterValues.needsUpdate()||o.filterEnabled!==a.filterEnabled||o.filterRange!==a.filterRange||o.filterSoftRange!==a.filterSoftRange;s&&this.setState({filterNeedsUpdate:s})}}},{key:"draw",value:function(i,o){var a=this.state,f=a.filterFBO,s=a.filterModel,l=a.filterNeedsUpdate,c=this.props.onFilteredItemsChange;if(l&&c&&s){var p=this.getAttributeManager(),v=p.attributes,_=v.filterValues,m=v.filterIndices;s.setVertexCount(this.getNumInstances());var d=this.context.gl;(0,pe.clear)(d,{framebuffer:f,color:[0,0,0,0]}),s.updateModuleSettings(i.moduleParameters).setAttributes(ue(ue({},_.getShaderAttributes()),m&&m.getShaderAttributes())).draw({framebuffer:f,parameters:ue(ue({},$t),{},{viewport:[0,0,f.width,f.height]})});for(var h=(0,pe.readPixelsToArray)(f),g=0,A=0;A<h.length;A++)g+=h[A];c({id:this.id,count:g}),this.state.filterNeedsUpdate=!1}}},{key:"finalizeState",value:function(){var i=this.state,o=i.filterFBO,a=i.filterModel;o&&(o.color.delete(),o.delete(),a.delete())}}]),e}(rr.LayerExtension);(0,ce.default)(ve,"defaultProps",to);(0,ce.default)(ve,"extensionName","DataFilterExtension");var dr=u(x()),mr=u(b()),hr=u(w()),yr=u(M()),Ye=u(T()),gr=u(P()),J=u(y());function _e(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=Math.fround(t),i=t-n;return r[e]=n,r[e+1]=i,r}function Ge(t){return t-Math.fround(t)}function We(t){for(var r=new Float32Array(32),e=0;e<4;++e)for(var n=0;n<4;++n){var i=e*4+n;_e(t[n*4+e],r,i*2)}return r}var ur=`uniform float ONE;
|
|
192
192
|
vec2 split(float a) {
|
|
193
193
|
const float SPLIT = 4097.0;
|
|
194
194
|
float t = a * SPLIT;
|
|
@@ -957,7 +957,7 @@ void mat4_vec4_mul_fp64(vec2 b[16], vec2 a[4], out vec2 out_val[4]) {
|
|
|
957
957
|
vec4_dot_fp64(a, tmp, out_val[i]);
|
|
958
958
|
}
|
|
959
959
|
}
|
|
960
|
-
`;var lo={ONE:1};function uo(){return lo}var pr={name:"fp64-arithmetic",vs:ur,fs:null,getUniforms:uo,fp64ify:_e,fp64LowPart:Ge,fp64ifyMatrix4:We},Z={name:"fp64",vs:cr,fs:null,dependencies:[pr],fp64ify:_e,fp64LowPart:Ge,fp64ifyMatrix4:We};var os=1/Math.PI*180,as=1/180*Math.PI,X={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function He(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function U(t,r,e){var n=X.EPSILON;e&&(X.EPSILON=e);try{if(t===r)return!0;if(He(t)&&He(r)){if(t.length!==r.length)return!1;for(var i=0;i<t.length;++i)if(!U(t[i],r[i]))return!1;return!0}return t&&t.equals?t.equals(r):r&&r.equals?r.equals(t):typeof t=="number"&&typeof r=="number"?Math.abs(t-r)<=X.EPSILON*Math.max(1,Math.abs(t),Math.abs(r)):!1}finally{X.EPSILON=n}}var Ke=typeof Float32Array<"u"?Float32Array:Array;var fs=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var t=0,r=arguments.length;r--;)t+=arguments[r]*arguments[r];return Math.sqrt(t)});function po(){var t=new Ke(3);return Ke!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function vo(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return Math.hypot(e,n,i)}var vr=vo;var cs=function(){var t=po();return function(r,e,n,i,o,a){var s
|
|
960
|
+
`;var lo={ONE:1};function uo(){return lo}var pr={name:"fp64-arithmetic",vs:ur,fs:null,getUniforms:uo,fp64ify:_e,fp64LowPart:Ge,fp64ifyMatrix4:We},Z={name:"fp64",vs:cr,fs:null,dependencies:[pr],fp64ify:_e,fp64LowPart:Ge,fp64ifyMatrix4:We};var os=1/Math.PI*180,as=1/180*Math.PI,X={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function He(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function U(t,r,e){var n=X.EPSILON;e&&(X.EPSILON=e);try{if(t===r)return!0;if(He(t)&&He(r)){if(t.length!==r.length)return!1;for(var i=0;i<t.length;++i)if(!U(t[i],r[i]))return!1;return!0}return t&&t.equals?t.equals(r):r&&r.equals?r.equals(t):typeof t=="number"&&typeof r=="number"?Math.abs(t-r)<=X.EPSILON*Math.max(1,Math.abs(t),Math.abs(r)):!1}finally{X.EPSILON=n}}var Ke=typeof Float32Array<"u"?Float32Array:Array;var fs=Math.PI/180;Math.hypot||(Math.hypot=function(){for(var t=0,r=arguments.length;r--;)t+=arguments[r]*arguments[r];return Math.sqrt(t)});function po(){var t=new Ke(3);return Ke!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function vo(t,r){var e=r[0]-t[0],n=r[1]-t[1],i=r[2]-t[2];return Math.hypot(e,n,i)}var vr=vo;var cs=function(){var t=po();return function(r,e,n,i,o,a){var f,s;for(e||(e=3),n||(n=0),i?s=Math.min(i*e+n,r.length):s=r.length,f=n;f<s;f+=e)t[0]=r[f],t[1]=r[f+1],t[2]=r[f+2],o(t,t,a),r[f]=t[0],r[f+1]=t[1],r[f+2]=t[2];return r}}();var de=u(y());var _r=`
|
|
961
961
|
const vec2 WORLD_SCALE_FP64 = vec2(81.4873275756836, 0.0000032873668232014097);
|
|
962
962
|
|
|
963
963
|
uniform vec2 project_uViewProjectionMatrixFP64[16];
|
|
@@ -1099,7 +1099,7 @@ attribute float instanceOffsets;
|
|
|
1099
1099
|
if (isInside == 0.0) {
|
|
1100
1100
|
discard;
|
|
1101
1101
|
}
|
|
1102
|
-
`}};function bo(t){var r=Oo();return function(){var n=(0,Ze.default)(t),i;if(r){var o=(0,Ze.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Tr.default)(this,i)}}function Oo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Eo={getDashArray:{type:"accessor",value:[0,0]},getOffset:{type:"accessor",value:0},dashJustified:!1,dashGapPickable:!1},he=function(t){(0,Er.default)(e,t);var r=bo(e);function e(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=n.dash,o=i===void 0?!1:i,a=n.offset,
|
|
1102
|
+
`}};function bo(t){var r=Oo();return function(){var n=(0,Ze.default)(t),i;if(r){var o=(0,Ze.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Tr.default)(this,i)}}function Oo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Eo={getDashArray:{type:"accessor",value:[0,0]},getOffset:{type:"accessor",value:0},dashJustified:!1,dashGapPickable:!1},he=function(t){(0,Er.default)(e,t);var r=bo(e);function e(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=n.dash,o=i===void 0?!1:i,a=n.offset,f=a===void 0?!1:a,s=n.highPrecisionDash,l=s===void 0?!1:s;return(0,br.default)(this,e),r.call(this,{dash:o||l,offset:f,highPrecisionDash:l})}return(0,Or.default)(e,[{key:"isEnabled",value:function(i){return"pathTesselator"in i.state}},{key:"getShaders",value:function(i){if(!i.isEnabled(this))return null;var o={};return i.opts.dash&&(o=(0,Q._mergeShaders)(o,Pr)),i.opts.offset&&(o=(0,Q._mergeShaders)(o,xr)),o}},{key:"initializeState",value:function(i,o){var a=this.getAttributeManager();!a||!o.isEnabled(this)||(o.opts.dash&&a.addInstanced({instanceDashArrays:{size:2,accessor:"getDashArray"}}),o.opts.highPrecisionDash&&a.addInstanced({instanceDashOffsets:{size:1,accessor:"getPath",transform:o.getDashOffsets.bind(this)}}),o.opts.offset&&a.addInstanced({instanceOffsets:{size:1,accessor:"getOffset"}}))}},{key:"updateState",value:function(i,o){if(o.isEnabled(this)){var a={};o.opts.dash&&(a.dashAlignMode=this.props.dashJustified?1:0,a.dashGapPickable=Boolean(this.props.dashGapPickable)),this.state.model.setUniforms(a)}}},{key:"getDashOffsets",value:function(i){for(var o=[0],a=this.props.positionFormat==="XY"?2:3,f=Array.isArray(i[0]),s=f?i.length:i.length/a,l,c,p=0;p<s-1;p++)l=f?i[p]:i.slice(p*a,p*a+a),l=this.projectPosition(l),p>0&&(o[p]=o[p-1]+vr(c,l)),c=l;return o}}]),e}(Q.LayerExtension);(0,Xe.default)(he,"defaultProps",Eo);(0,Xe.default)(he,"extensionName","PathStyleExtension");var Mr=u(x()),Ar=u(b()),Rr=u(w()),Sr=u(M()),Je=u(T()),ye=u(P()),Fr=u(y()),kr=u(R());var ee=u(y()),To=`
|
|
1103
1103
|
#ifdef NON_INSTANCED_MODEL
|
|
1104
1104
|
#define FILL_PATTERN_FRAME_ATTRIB fillPatternFrames
|
|
1105
1105
|
#define FILL_PATTERN_SCALE_ATTRIB fillPatternScales
|
|
@@ -1154,7 +1154,7 @@ const float FILL_UV_SCALE = 512.0 / 40000000.0;
|
|
|
1154
1154
|
color.rgb = patternColor.rgb;
|
|
1155
1155
|
}
|
|
1156
1156
|
}
|
|
1157
|
-
`};function Ao(t,r){if(!t)return{};if("fillPatternTexture"in t){var e=t.fillPatternTexture;return{fill_patternTexture:e,fill_patternTextureSize:[e.width,e.height]}}if("viewport"in t){var n=t.fillPatternMask,i=n===void 0?!0:n,o=t.fillPatternEnabled,a=o===void 0?!0:o,
|
|
1157
|
+
`};function Ao(t,r){if(!t)return{};if("fillPatternTexture"in t){var e=t.fillPatternTexture;return{fill_patternTexture:e,fill_patternTextureSize:[e.width,e.height]}}if("viewport"in t){var n=t.fillPatternMask,i=n===void 0?!0:n,o=t.fillPatternEnabled,a=o===void 0?!0:o,f=r,s=f.project_uCommonOrigin,l=[(0,ee.fp64LowPart)(s[0]),(0,ee.fp64LowPart)(s[1])];return{fill_uvCoordinateOrigin:s.slice(0,2),fill_uvCoordinateOrigin64Low:l,fill_patternMask:i,fill_patternEnabled:a}}return{}}var wr={name:"fill-pattern",vs:To,fs:wo,inject:Mo,dependencies:[ee.project],getUniforms:Ao};function Ro(t){var r=So();return function(){var n=(0,Je.default)(t),i;if(r){var o=(0,Je.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Sr.default)(this,i)}}function So(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Fo={fillPatternEnabled:!0,fillPatternAtlas:{type:"image",value:null,async:!0,parameters:(0,ye.default)({},10241,9729)},fillPatternMapping:{type:"object",value:{},async:!0},fillPatternMask:!0,getFillPattern:{type:"accessor",value:function(r){return r.pattern}},getFillPatternScale:{type:"accessor",value:1},getFillPatternOffset:{type:"accessor",value:[0,0]}},ge=function(t){(0,Rr.default)(e,t);var r=Ro(e);function e(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=n.pattern,o=i===void 0?!1:i;return(0,Mr.default)(this,e),r.call(this,{pattern:o})}return(0,Ar.default)(e,[{key:"isEnabled",value:function(i){return i.getAttributeManager()!==null&&!("pathTesselator"in i.state)}},{key:"getShaders",value:function(i){return i.isEnabled(this)?{modules:[i.opts.pattern&&wr].filter(Boolean)}:null}},{key:"initializeState",value:function(i,o){if(o.isEnabled(this)){var a=this.getAttributeManager();o.opts.pattern&&a.add({fillPatternFrames:{size:4,accessor:"getFillPattern",transform:o.getPatternFrame.bind(this),shaderAttributes:{fillPatternFrames:{divisor:0},instanceFillPatternFrames:{divisor:1}}},fillPatternScales:{size:1,accessor:"getFillPatternScale",defaultValue:1,shaderAttributes:{fillPatternScales:{divisor:0},instanceFillPatternScales:{divisor:1}}},fillPatternOffsets:{size:2,accessor:"getFillPatternOffset",shaderAttributes:{fillPatternOffsets:{divisor:0},instanceFillPatternOffsets:{divisor:1}}}}),this.setState({emptyTexture:new kr.Texture2D(this.context.gl,{data:new Uint8Array(4),width:1,height:1})})}}},{key:"updateState",value:function(i,o){var a=i.props,f=i.oldProps;o.isEnabled(this)&&a.fillPatternMapping&&a.fillPatternMapping!==f.fillPatternMapping&&this.getAttributeManager().invalidate("getFillPattern")}},{key:"draw",value:function(i,o){if(o.isEnabled(this)){var a=this.props.fillPatternAtlas;this.setModuleParameters({fillPatternTexture:a||this.state.emptyTexture})}}},{key:"finalizeState",value:function(){var i=this.state,o=i.patternTexture,a=i.emptyTexture;o?.delete(),a?.delete()}},{key:"getPatternFrame",value:function(i){var o=this.getCurrentLayer().props.fillPatternMapping,a=o&&o[i];return a?[a.x,a.y,a.width,a.height]:[0,0,0,0]}}]),e}(Fr.LayerExtension);(0,ye.default)(ge,"defaultProps",Fo);(0,ye.default)(ge,"extensionName","FillStyleExtension");var Cr=u(x()),Ir=u(b()),Lr=u(w()),Nr=u(M()),Qe=u(T()),et=u(P()),Br=u(y());function ko(t){var r=Co();return function(){var n=(0,Qe.default)(t),i;if(r){var o=(0,Qe.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Nr.default)(this,i)}}function Co(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Io={clipBounds:[0,0,1,1],clipByInstance:void 0},Dr=`
|
|
1158
1158
|
uniform vec4 clip_bounds;
|
|
1159
1159
|
|
|
1160
1160
|
bool clip_isInBounds(vec2 position) {
|
|
@@ -1176,7 +1176,7 @@ varying vec2 clip_commonPosition;
|
|
|
1176
1176
|
varying vec2 clip_commonPosition;
|
|
1177
1177
|
`,"fs:DECKGL_FILTER_COLOR":`
|
|
1178
1178
|
if (!clip_isInBounds(clip_commonPosition)) discard;
|
|
1179
|
-
`},Pe=function(t){(0,Lr.default)(e,t);var r=ko(e);function e(){return(0,Cr.default)(this,e),r.apply(this,arguments)}return(0,Ir.default)(e,[{key:"getShaders",value:function(){var i="instancePositions"in this.getAttributeManager().attributes;return this.props.clipByInstance!==void 0&&(i=Boolean(this.props.clipByInstance)),this.state.clipByInstance=i,i?{modules:[Lo],inject:No}:{modules:[Bo],inject:Do}}},{key:"draw",value:function(i){var o=i.uniforms,a=this.props.clipBounds;if(this.state.clipByInstance)o.clip_bounds=a;else{var
|
|
1179
|
+
`},Pe=function(t){(0,Lr.default)(e,t);var r=ko(e);function e(){return(0,Cr.default)(this,e),r.apply(this,arguments)}return(0,Ir.default)(e,[{key:"getShaders",value:function(){var i="instancePositions"in this.getAttributeManager().attributes;return this.props.clipByInstance!==void 0&&(i=Boolean(this.props.clipByInstance)),this.state.clipByInstance=i,i?{modules:[Lo],inject:No}:{modules:[Bo],inject:Do}}},{key:"draw",value:function(i){var o=i.uniforms,a=this.props.clipBounds;if(this.state.clipByInstance)o.clip_bounds=a;else{var f=this.projectPosition([a[0],a[1],0]),s=this.projectPosition([a[2],a[3],0]);o.clip_bounds=[Math.min(f[0],s[0]),Math.min(f[1],s[1]),Math.max(f[0],s[0]),Math.max(f[1],s[1])]}}}]),e}(Br.LayerExtension);(0,et.default)(Pe,"defaultProps",Io);(0,et.default)(Pe,"extensionName","ClipExtension");var Pn=u(x()),xn=u(b()),bn=u(w()),On=u(M()),at=u(T()),st=u(P()),En=u(y());var jr=u(y()),jo=`
|
|
1180
1180
|
#ifdef NON_INSTANCED_MODEL
|
|
1181
1181
|
attribute float collisionPriorities;
|
|
1182
1182
|
#else
|
|
@@ -1248,10 +1248,10 @@ float collision_isVisible(vec2 texCoords, vec3 pickingColor) {
|
|
|
1248
1248
|
}
|
|
1249
1249
|
`,"vs:DECKGL_FILTER_COLOR":`
|
|
1250
1250
|
color.a *= collision_fade;
|
|
1251
|
-
`},zo=function(r,e){if(!r||!("dummyCollisionMap"in r))return{};var n=r.collisionFBO,i=r.drawToCollisionMap,o=r.dummyCollisionMap;return{collision_sort:Boolean(i),collision_texture:!i&&n?n:o}},Vr={name:"collision",dependencies:[jr.project],vs:jo,inject:Vo,getUniforms:zo};var mn=u(x()),hn=u(b()),E=u(P()),B=u(R());var yn=u(y());var qr=u(P()),Gr=u(x()),Wr=u(b()),Hr=u(w()),Kr=u(M()),tt=u(T()),Yr=u(R()),$r=u(y());function zr(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function Ur(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?zr(Object(e),!0).forEach(function(n){(0,qr.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):zr(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Uo(t){var r=qo();return function(){var n=(0,tt.default)(t),i;if(r){var o=(0,tt.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Kr.default)(this,i)}}function qo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Zr=function(t){(0,Hr.default)(e,t);var r=Uo(e);function e(){return(0,Gr.default)(this,e),r.apply(this,arguments)}return(0,Wr.default)(e,[{key:"renderCollisionMap",value:function(i,o){var a=this,
|
|
1252
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,
|
|
1253
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,
|
|
1254
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,
|
|
1251
|
+
`},zo=function(r,e){if(!r||!("dummyCollisionMap"in r))return{};var n=r.collisionFBO,i=r.drawToCollisionMap,o=r.dummyCollisionMap;return{collision_sort:Boolean(i),collision_texture:!i&&n?n:o}},Vr={name:"collision",dependencies:[jr.project],vs:jo,inject:Vo,getUniforms:zo};var mn=u(x()),hn=u(b()),E=u(P()),B=u(R());var yn=u(y());var qr=u(P()),Gr=u(x()),Wr=u(b()),Hr=u(w()),Kr=u(M()),tt=u(T()),Yr=u(R()),$r=u(y());function zr(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function Ur(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?zr(Object(e),!0).forEach(function(n){(0,qr.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):zr(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Uo(t){var r=qo();return function(){var n=(0,tt.default)(t),i;if(r){var o=(0,tt.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Kr.default)(this,i)}}function qo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Zr=function(t){(0,Hr.default)(e,t);var r=Uo(e);function e(){return(0,Gr.default)(this,e),r.apply(this,arguments)}return(0,Wr.default)(e,[{key:"renderCollisionMap",value:function(i,o){var a=this,f=this.gl,s=1;return(0,Yr.withParameters)(f,{scissorTest:!0,scissor:[s,s,i.width-2*s,i.height-2*s],clearColor:[0,0,0,0],blend:!1,depthTest:!0,depthRange:[0,1]},function(){return a.render(Ur(Ur({},o),{},{target:i,pass:"collision"}))})}},{key:"getModuleParameters",value:function(){return{drawToCollisionMap:!0,pickingActive:1,pickingAttribute:!1,lightSources:{}}}}]),e}($r._LayersPass);var pn=u(x()),vn=u(b()),F=u(P()),it=u(y()),_n=u(R());var tn=u(x()),rn=u(b()),nt=u(fe()),nn=u(rt()),on=u(w()),an=u(M()),Oe=u(T()),N=u(P()),q=u(R()),sn=u(y());function Qr(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function en(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Qr(Object(e),!0).forEach(function(n){(0,N.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Qr(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Ko(t){var r=Yo();return function(){var n=(0,Oe.default)(t),i;if(r){var o=(0,Oe.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,an.default)(this,i)}}function Yo(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var fn=function(t){(0,on.default)(e,t);var r=Ko(e);function e(n,i){var o,a;(0,tn.default)(this,e),a=r.call(this,n,i),(0,N.default)((0,nt.default)(a),"maskMap",void 0),(0,N.default)((0,nt.default)(a),"fbo",void 0);var f=i.mapSize,s=f===void 0?2048:f;return a.maskMap=new q.Texture2D(n,{width:s,height:s,parameters:(o={},(0,N.default)(o,10241,9729),(0,N.default)(o,10240,9729),(0,N.default)(o,10242,33071),(0,N.default)(o,10243,33071),o)}),a.fbo=new q.Framebuffer(n,{id:"maskmap",width:s,height:s,attachments:(0,N.default)({},36064,a.maskMap)}),a}return(0,rn.default)(e,[{key:"render",value:function(i){var o=this,a=this.gl,f=[!1,!1,!1,!1];return f[i.channel]=!0,(0,q.withParameters)(a,{clearColor:[255,255,255,255],blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:f,depthTest:!1},function(){return(0,nn.default)((0,Oe.default)(e.prototype),"render",o).call(o,en(en({},i),{},{target:o.fbo,pass:"mask"}))})}},{key:"shouldDrawLayer",value:function(i){return i.props.operation.includes("mask")}},{key:"delete",value:function(){this.fbo.delete(),this.maskMap.delete()}}]),e}(sn._LayersPass);var un=u(qe()),Ee=u(y());function $o(t,r){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=Zo(t))||r&&t&&typeof t.length=="number"){e&&(t=e);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
1252
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,f;return{s:function(){e=e.call(t)},n:function(){var l=e.next();return o=l.done,l},e:function(l){a=!0,f=l},f:function(){try{!o&&e.return!=null&&e.return()}finally{if(a)throw f}}}}function Zo(t,r){if(t){if(typeof t=="string")return ln(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return ln(t,r)}}function ln(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}function G(t,r){var e=[1/0,1/0,-1/0,-1/0],n=$o(t),i;try{for(n.s();!(i=n.n()).done;){var o=i.value,a=o.getBounds();if(a){var f=o.projectPosition(a[0],{viewport:r,autoOffset:!1}),s=o.projectPosition(a[1],{viewport:r,autoOffset:!1});e[0]=Math.min(e[0],f[0]),e[1]=Math.min(e[1],f[1]),e[2]=Math.max(e[2],s[0]),e[3]=Math.max(e[3],s[1])}}}catch(l){n.e(l)}finally{n.f()}return Number.isFinite(e[0])?e:null}var Xo=2048;function W(t){var r=t.bounds,e=t.viewport,n=t.border,i=n===void 0?0:n,o=e.isGeospatial;if(r[2]<=r[0]||r[3]<=r[1])return null;var a=e.unprojectPosition([(r[0]+r[2])/2,(r[1]+r[3])/2,0]),f=t.width,s=t.height,l=t.zoom;if(l===void 0){f=f-i*2,s=s-i*2;var c=Math.min(f/(r[2]-r[0]),s/(r[3]-r[1]));l=Math.min(Math.log2(c),20)}else if(!f||!s){var p=Math.pow(2,l);f=Math.round(Math.abs(r[2]-r[0])*p),s=Math.round(Math.abs(r[3]-r[1])*p);var v=Xo-i*2;if(f>v||s>v){var _=v/Math.max(f,s);f=Math.round(f*_),s=Math.round(s*_),l+=Math.log2(_)}}return o?new Ee.WebMercatorViewport({id:e.id,x:i,y:i,width:f,height:s,longitude:a[0],latitude:a[1],zoom:l,orthographic:!0}):new Ee.OrthographicViewport({id:e.id,x:i,y:i,width:f,height:s,target:a,zoom:l,flipY:!1})}function Jo(t,r){var e;if(r&&r.length===2){var n=(0,un.default)(r,2),i=n[0],o=n[1],a=t.getBounds({z:i}),f=t.getBounds({z:o});e=[Math.min(a[0],f[0]),Math.min(a[1],f[1]),Math.max(a[2],f[2]),Math.max(a[3],f[3])]}else e=t.getBounds();var s=t.projectPosition(e.slice(0,2)),l=t.projectPosition(e.slice(2,4));return[s[0],s[1],l[0],l[1]]}function H(t,r,e){if(!t)return[0,0,1,1];var n=Jo(r,e),i=Qo(n);return t[2]-t[0]<=i[2]-i[0]&&t[3]-t[1]<=i[3]-i[1]?t:[Math.max(t[0],i[0]),Math.max(t[1],i[1]),Math.min(t[2],i[2]),Math.min(t[3],i[3])]}function Qo(t){var r=t[2]-t[0],e=t[3]-t[1],n=(t[0]+t[2])/2,i=(t[1]+t[3])/2;return[n-r,i-e,n+r,i+e]}function ea(t,r){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=ta(t))||r&&t&&typeof t.length=="number"){e&&(t=e);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
1253
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,f;return{s:function(){e=e.call(t)},n:function(){var l=e.next();return o=l.done,l},e:function(l){a=!0,f=l},f:function(){try{!o&&e.return!=null&&e.return()}finally{if(a)throw f}}}}function ta(t,r){if(t){if(typeof t=="string")return cn(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return cn(t,r)}}function cn(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}var Te=function(){function t(){(0,pn.default)(this,t),(0,F.default)(this,"id","mask-effect"),(0,F.default)(this,"props",null),(0,F.default)(this,"useInPicking",!0),(0,F.default)(this,"order",0),(0,F.default)(this,"dummyMaskMap",void 0),(0,F.default)(this,"channels",[]),(0,F.default)(this,"masks",null),(0,F.default)(this,"maskPass",void 0),(0,F.default)(this,"maskMap",void 0),(0,F.default)(this,"lastViewport",void 0)}return(0,vn.default)(t,[{key:"preRender",value:function(e,n){var i=n.layers,o=n.layerFilter,a=n.viewports,f=n.onViewportActive,s=n.views,l=n.isPicking,c=!1;if(this.dummyMaskMap||(this.dummyMaskMap=new _n.Texture2D(e,{width:1,height:1})),l)return{didRender:c};var p=i.filter(function(g){return g.props.visible&&g.props.operation.includes("mask")});if(p.length===0)return this.masks=null,this.channels.length=0,{didRender:c};this.masks={},this.maskPass||(this.maskPass=new fn(e,{id:"default-mask"}),this.maskMap=this.maskPass.maskMap);var v=this._sortMaskChannels(p),_=a[0],m=!this.lastViewport||!this.lastViewport.equals(_);if(_.resolution!==void 0)return it.log.warn("MaskExtension is not supported in GlobeView")(),{didRender:c};for(var d in v){var h=this._renderChannel(v[d],{layerFilter:o,onViewportActive:f,views:s,viewport:_,viewportChanged:m});c||(c=h)}return{didRender:c}}},{key:"_renderChannel",value:function(e,n){var i=n.layerFilter,o=n.onViewportActive,a=n.views,f=n.viewport,s=n.viewportChanged,l=!1,c=this.channels[e.index];if(!c)return l;var p=e===c||e.layers.length!==c.layers.length||e.layers.some(function(h,g){return h!==c.layers[g]||h.props.transitions})||e.layerBounds.some(function(h,g){return h!==c.layerBounds[g]});if(e.bounds=c.bounds,e.maskBounds=c.maskBounds,this.channels[e.index]=e,p||s){this.lastViewport=f;var v=G(e.layers,f);if(e.bounds=v&&H(v,f),p||!U(e.bounds,c.bounds)){var _=this.maskPass,m=this.maskMap,d=v&&W({bounds:e.bounds,viewport:f,width:m.width,height:m.height,border:1});e.maskBounds=d?d.getBounds():[0,0,1,1],_.render({pass:"mask",channel:e.index,layers:e.layers,layerFilter:i,viewports:d?[d]:[],onViewportActive:o,views:a,moduleParameters:{devicePixelRatio:1}}),l=!0}}return this.masks[e.id]={index:e.index,bounds:e.maskBounds,coordinateOrigin:e.coordinateOrigin,coordinateSystem:e.coordinateSystem},l}},{key:"_sortMaskChannels",value:function(e){var n=this,i={},o=0,a=ea(e),f;try{var s=function(){var d=f.value,h=d.root.id,g=i[h];if(!g){if(++o>4)return it.log.warn("Too many mask layers. The max supported is 4")(),"continue";g={id:h,index:n.channels.findIndex(function(A){return A?.id===h}),layers:[],layerBounds:[],coordinateOrigin:d.root.props.coordinateOrigin,coordinateSystem:d.root.props.coordinateSystem},i[h]=g}g.layers.push(d),g.layerBounds.push(d.getBounds())};for(a.s();!(f=a.n()).done;)var l=s()}catch(m){a.e(m)}finally{a.f()}for(var c=0;c<4;c++){var p=this.channels[c];(!p||!(p.id in i))&&(this.channels[c]=null)}for(var v in i){var _=i[v];_.index<0&&(_.index=this.channels.findIndex(function(m){return!m}),this.channels[_.index]=_)}return i}},{key:"getModuleParameters",value:function(){return{maskMap:this.masks?this.maskMap:this.dummyMaskMap,maskChannels:this.masks}}},{key:"cleanup",value:function(){this.dummyMaskMap&&(this.dummyMaskMap.delete(),this.dummyMaskMap=void 0),this.maskPass&&(this.maskPass.delete(),this.maskPass=void 0,this.maskMap=void 0),this.lastViewport=void 0,this.masks=null,this.channels.length=0}}]),t}();function ra(t,r){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=na(t))||r&&t&&typeof t.length=="number"){e&&(t=e);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
1254
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,f;return{s:function(){e=e.call(t)},n:function(){var l=e.next();return o=l.done,l},e:function(l){a=!0,f=l},f:function(){try{!o&&e.return!=null&&e.return()}finally{if(a)throw f}}}}function na(t,r){if(t){if(typeof t=="string")return dn(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return dn(t,r)}}function dn(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}var ot=2,gn=function(){function t(){(0,mn.default)(this,t),(0,E.default)(this,"id","collision-filter-effect"),(0,E.default)(this,"props",null),(0,E.default)(this,"useInPicking",!0),(0,E.default)(this,"order",1),(0,E.default)(this,"channels",{}),(0,E.default)(this,"collisionFilterPass",void 0),(0,E.default)(this,"collisionFBOs",{}),(0,E.default)(this,"dummyCollisionMap",void 0),(0,E.default)(this,"lastViewport",void 0)}return(0,hn.default)(t,[{key:"preRender",value:function(e,n){var i,o=n.effects,a=n.layers,f=n.layerFilter,s=n.viewports,l=n.onViewportActive,c=n.views,p=n.isPicking,v=n.preRenderStats,_=v===void 0?{}:v;if(this.dummyCollisionMap||(this.dummyCollisionMap=new B.Texture2D(e,{width:1,height:1})),!p){var m=a.filter(function(Ie){var mt=Ie.props,Oi=mt.visible,Ei=mt.collisionEnabled;return Oi&&Ei});if(m.length===0){this.channels={};return}this.collisionFilterPass||(this.collisionFilterPass=new Zr(e,{id:"default-collision-filter"}));var d=o?.filter(function(Ie){return Ie.constructor===Te}),h=(i=_["mask-effect"])===null||i===void 0?void 0:i.didRender,g=this._groupByCollisionGroup(e,m),A=s[0],ne=!this.lastViewport||!this.lastViewport.equals(A)||h;for(var $ in g){var xi=this.collisionFBOs[$],bi=g[$];xi.resize({width:e.canvas.width/ot,height:e.canvas.height/ot}),this._render(bi,{effects:d,layerFilter:f,onViewportActive:l,views:c,viewport:A,viewportChanged:ne})}}}},{key:"_render",value:function(e,n){var i=n.effects,o=n.layerFilter,a=n.onViewportActive,f=n.views,s=n.viewport,l=n.viewportChanged,c=e.collisionGroup,p=this.channels[c];if(p){var v=l||e===p||!(0,yn._deepEqual)(p.layers,e.layers,1)||e.layerBounds.some(function(m,d){return!U(m,p.layerBounds[d])})||e.allLayersLoaded!==p.allLayersLoaded||e.layers.some(function(m){return m.props.transitions});if(this.channels[c]=e,v){this.lastViewport=s;var _=this.collisionFBOs[c];this.collisionFilterPass.renderCollisionMap(_,{pass:"collision-filter",isPicking:!0,layers:e.layers,effects:i,layerFilter:o,viewports:s?[s]:[],onViewportActive:a,views:f,moduleParameters:{dummyCollisionMap:this.dummyCollisionMap,devicePixelRatio:(0,B.cssToDeviceRatio)(_.gl)/ot}})}}}},{key:"_groupByCollisionGroup",value:function(e,n){var i={},o=ra(n),a;try{for(o.s();!(a=o.n()).done;){var f=a.value,s=f.props.collisionGroup,l=i[s];l||(l={collisionGroup:s,layers:[],layerBounds:[],allLayersLoaded:!0},i[s]=l),l.layers.push(f),l.layerBounds.push(f.getBounds()),f.isLoaded||(l.allLayersLoaded=!1)}}catch(h){o.e(h)}finally{o.f()}for(var c=0,p=Object.keys(i);c<p.length;c++){var v=p[c];this.collisionFBOs[v]||this.createFBO(e,v),this.channels[v]||(this.channels[v]=i[v])}for(var _=0,m=Object.keys(this.collisionFBOs);_<m.length;_++){var d=m[_];i[d]||this.destroyFBO(d)}return i}},{key:"getModuleParameters",value:function(e){var n=e.props.collisionGroup,i=this.collisionFBOs,o=this.dummyCollisionMap;return{collisionFBO:i[n],dummyCollisionMap:o}}},{key:"cleanup",value:function(){this.dummyCollisionMap&&(this.dummyCollisionMap.delete(),this.dummyCollisionMap=void 0),this.channels={};for(var e=0,n=Object.keys(this.collisionFBOs);e<n.length;e++){var i=n[e];this.destroyFBO(i)}this.collisionFBOs={},this.lastViewport=void 0}},{key:"createFBO",value:function(e,n){var i,o,a=e.canvas,f=a.width,s=a.height,l=new B.Texture2D(e,{width:f,height:s,parameters:(i={},(0,E.default)(i,10241,9728),(0,E.default)(i,10240,9728),(0,E.default)(i,10242,33071),(0,E.default)(i,10243,33071),i)}),c=new B.Renderbuffer(e,{format:33189,width:f,height:s});this.collisionFBOs[n]=new B.Framebuffer(e,{id:"Collision-".concat(n),width:f,height:s,attachments:(o={},(0,E.default)(o,36064,l),(0,E.default)(o,36096,c),o)})}},{key:"destroyFBO",value:function(e){for(var n=this.collisionFBOs[e],i=0,o=Object.values(n.attachments);i<o.length;i++){var a=o[i];a.delete()}n.delete(),delete this.collisionFBOs[e]}}]),t}();function ia(t){var r=oa();return function(){var n=(0,at.default)(t),i;if(r){var o=(0,at.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,On.default)(this,i)}}function oa(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var aa={getCollisionPriority:{type:"accessor",value:0},collisionEnabled:!0,collisionGroup:{type:"string",value:"default"},collisionTestProps:{}},we=function(t){(0,bn.default)(e,t);var r=ia(e);function e(){return(0,Pn.default)(this,e),r.apply(this,arguments)}return(0,xn.default)(e,[{key:"getShaders",value:function(){return{modules:[Vr]}}},{key:"draw",value:function(i){var o=i.uniforms,a=i.context,f=i.moduleParameters,s=this.props.collisionEnabled,l=f.collisionFBO,c=f.drawToCollisionMap,p=s&&Boolean(l);o.collision_enabled=p,c&&(this.props=this.clone(this.props.collisionTestProps).props)}},{key:"initializeState",value:function(i,o){var a;if(this.getAttributeManager()!==null){(a=this.context.deck)===null||a===void 0||a._addDefaultEffect(new gn);var f=this.getAttributeManager();f.add({collisionPriorities:{size:1,accessor:"getCollisionPriority",shaderAttributes:{collisionPriorities:{divisor:0},instanceCollisionPriorities:{divisor:1}}}})}}},{key:"getNeedsPickingBuffer",value:function(){return this.props.collisionEnabled}}]),e}(En.LayerExtension);(0,st.default)(we,"defaultProps",aa);(0,st.default)(we,"extensionName","CollisionFilterExtension");var Mn=u(x()),An=u(b()),Rn=u(w()),Sn=u(M()),ft=u(T()),lt=u(P()),V=u(y());var Tn=u(y()),sa=`
|
|
1255
1255
|
uniform vec4 mask_bounds;
|
|
1256
1256
|
uniform bool mask_maskByInstance;
|
|
1257
1257
|
vec2 mask_getCoords(vec4 position) {
|
|
@@ -1306,7 +1306,7 @@ varying vec2 mask_texCoords;
|
|
|
1306
1306
|
|
|
1307
1307
|
if (!mask) discard;
|
|
1308
1308
|
}
|
|
1309
|
-
`},ua=function(r){return r&&"maskMap"in r?{mask_texture:r.maskMap}:{}},wn={name:"mask",dependencies:[Tn.project],vs:sa,fs:fa,inject:la,getUniforms:ua};function ca(t){var r=pa();return function(){var n=(0,ft.default)(t),i;if(r){var o=(0,ft.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Sn.default)(this,i)}}function pa(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var va={maskId:"",maskByInstance:void 0,maskInverted:!1},Me=function(t){(0,Rn.default)(e,t);var r=ca(e);function e(){return(0,Mn.default)(this,e),r.apply(this,arguments)}return(0,An.default)(e,[{key:"initializeState",value:function(){var i;(i=this.context.deck)===null||i===void 0||i._addDefaultEffect(new Te)}},{key:"getShaders",value:function(){var i="instancePositions"in this.getAttributeManager().attributes;return this.props.maskByInstance!==void 0&&(i=Boolean(this.props.maskByInstance)),this.state.maskByInstance=i,{modules:[wn]}}},{key:"draw",value:function(i){var o=i.uniforms,a=i.context,
|
|
1309
|
+
`},ua=function(r){return r&&"maskMap"in r?{mask_texture:r.maskMap}:{}},wn={name:"mask",dependencies:[Tn.project],vs:sa,fs:fa,inject:la,getUniforms:ua};function ca(t){var r=pa();return function(){var n=(0,ft.default)(t),i;if(r){var o=(0,ft.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Sn.default)(this,i)}}function pa(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var va={maskId:"",maskByInstance:void 0,maskInverted:!1},Me=function(t){(0,Rn.default)(e,t);var r=ca(e);function e(){return(0,Mn.default)(this,e),r.apply(this,arguments)}return(0,An.default)(e,[{key:"initializeState",value:function(){var i;(i=this.context.deck)===null||i===void 0||i._addDefaultEffect(new Te)}},{key:"getShaders",value:function(){var i="instancePositions"in this.getAttributeManager().attributes;return this.props.maskByInstance!==void 0&&(i=Boolean(this.props.maskByInstance)),this.state.maskByInstance=i,{modules:[wn]}}},{key:"draw",value:function(i){var o=i.uniforms,a=i.context,f=i.moduleParameters;o.mask_maskByInstance=this.state.maskByInstance;var s=this.props,l=s.maskId,c=s.maskInverted,p=f.maskChannels,v=a.viewport;if(p&&p[l]){var _=p[l],m=_.index,d=_.bounds,h=_.coordinateOrigin,g=p[l].coordinateSystem;o.mask_enabled=!0,o.mask_channel=m,o.mask_inverted=c,g===V.COORDINATE_SYSTEM.DEFAULT&&(g=v.isGeospatial?V.COORDINATE_SYSTEM.LNGLAT:V.COORDINATE_SYSTEM.CARTESIAN);var A={modelMatrix:null,fromCoordinateOrigin:h,fromCoordinateSystem:g},ne=this.projectPosition([d[0],d[1],0],A),$=this.projectPosition([d[2],d[3],0],A);o.mask_bounds=[ne[0],ne[1],$[0],$[1]]}else l&&V.log.warn("Could not find a mask layer with id: ".concat(l))(),o.mask_enabled=!1}}]),e}(V.LayerExtension);(0,lt.default)(Me,"defaultProps",va);(0,lt.default)(Me,"extensionName","MaskExtension");var mi=u(x()),hi=u(b()),yi=u(w()),gi=u(M()),_t=u(T()),dt=u(P()),Pi=u(y());var ci=u(qe()),pi=u(x()),vi=u(b()),S=u(P()),ke=u(R()),_i=u(y());var kn=u(y()),I={NONE:0,WRITE_HEIGHT_MAP:1,USE_HEIGHT_MAP:2,USE_COVER:3,USE_COVER_ONLY:4,SKIP:5},Fn=Object.keys(I).map(function(t){return"const float TERRAIN_MODE_".concat(t," = ").concat(I[t],".0;")}).join(`
|
|
1310
1310
|
`),Ae={name:"terrain",dependencies:[kn.project],inject:{"vs:#decl":`
|
|
1311
1311
|
uniform float terrain_mode;
|
|
1312
1312
|
uniform sampler2D terrain_map;
|
|
@@ -1323,6 +1323,7 @@ commonPos = geometry.position.xyz;
|
|
|
1323
1323
|
if (terrain_mode == TERRAIN_MODE_WRITE_HEIGHT_MAP) {
|
|
1324
1324
|
vec2 texCoords = (commonPos.xy - terrain_bounds.xy) / terrain_bounds.zw;
|
|
1325
1325
|
position = vec4(texCoords * 2.0 - 1.0, 0.0, 1.0);
|
|
1326
|
+
commonPos.z += project_uCommonOrigin.z;
|
|
1326
1327
|
}
|
|
1327
1328
|
if (terrain_mode == TERRAIN_MODE_USE_HEIGHT_MAP) {
|
|
1328
1329
|
vec3 anchor = geometry.worldPosition;
|
|
@@ -1358,8 +1359,8 @@ if ((terrain_mode == TERRAIN_MODE_USE_COVER) || (terrain_mode == TERRAIN_MODE_US
|
|
|
1358
1359
|
}
|
|
1359
1360
|
return;
|
|
1360
1361
|
}
|
|
1361
|
-
`},getUniforms:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;if("dummyHeightMap"in r){var n=r.drawToTerrainHeightMap,i=r.heightMap,o=r.heightMapBounds,a=r.dummyHeightMap,
|
|
1362
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,s;return{s:function(){e=e.call(t)},n:function(){var l=e.next();return o=l.done,l},e:function(l){a=!0,s=l},f:function(){try{!o&&e.return!=null&&e.return()}finally{if(a)throw s}}}}function da(t,r){if(t){if(typeof t=="string")return Ln(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Ln(t,r)}}function Ln(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}var Dn=function(){function t(r){(0,Nn.default)(this,t),(0,k.default)(this,"isDirty",!0),(0,k.default)(this,"targetLayer",void 0),(0,k.default)(this,"renderViewport",null),(0,k.default)(this,"bounds",null),(0,k.default)(this,"fbo",void 0),(0,k.default)(this,"pickingFbo",void 0),(0,k.default)(this,"layers",[]),(0,k.default)(this,"tile",void 0),(0,k.default)(this,"targetBounds",null),(0,k.default)(this,"targetBoundsCommon",null),this.targetLayer=r,this.tile=jn(r)}return(0,Bn.default)(t,[{key:"id",get:function(){return this.targetLayer.id}},{key:"isActive",get:function(){return Boolean(this.targetLayer.getCurrentLayer())}},{key:"shouldUpdate",value:function(e){var n=e.targetLayer,i=e.viewport,o=e.layers,a=e.layerNeedsRedraw;n&&(this.targetLayer=n);var s=i?this._updateViewport(i):!1,f=o?this._updateLayers(o):!1;if(a){var l=_a(this.layers),c;try{for(l.s();!(c=l.n()).done;){var p=c.value;if(a[p]){f=!0;break}}}catch(v){l.e(v)}finally{l.f()}}return f||s}},{key:"_updateLayers",value:function(e){var n=!1;if(e=this.tile?ma(this.tile,e):e,e.length!==this.layers.length)n=!0;else for(var i=0;i<e.length;i++){var o=e[i].id;if(o!==this.layers[i]){n=!0;break}}return n&&(this.layers=e.map(function(a){return a.id})),n}},{key:"_updateViewport",value:function(e){var n=this.targetLayer,i=!1;if(this.targetBounds!==n.getBounds()&&(i=!0,this.targetBounds=n.getBounds(),this.targetBoundsCommon=G([n],e)),!this.targetBoundsCommon)return!1;var o=Math.ceil(e.zoom+.5);if(this.tile)this.bounds=this.targetBoundsCommon;else{var a,s=(a=this.renderViewport)===null||a===void 0?void 0:a.zoom;i=i||o!==s;var f=H(this.targetBoundsCommon,e),l=this.bounds;i=i||!l||f.some(function(c,p){return c!==l[p]}),this.bounds=f}return i&&(this.renderViewport=W({bounds:this.bounds,zoom:o,viewport:e})),i}},{key:"getRenderFramebuffer",value:function(){return!this.renderViewport||this.layers.length===0?null:(this.fbo||(this.fbo=te(this.targetLayer.context.gl,{id:this.id})),this.fbo)}},{key:"getPickingFramebuffer",value:function(){return!this.renderViewport||this.layers.length===0&&!this.targetLayer.props.pickable?null:(this.pickingFbo||(this.pickingFbo=te(this.targetLayer.context.gl,{id:"".concat(this.id,"-picking")})),this.pickingFbo)}},{key:"filterLayers",value:function(e){var n=this;return e.filter(function(i){var o=i.id;return n.layers.includes(o)})}},{key:"delete",value:function(){var e=this.fbo,n=this.pickingFbo;e&&(e.texture.delete(),e.delete()),n&&(n.texture.delete(),n.delete())}}]),t}();function ma(t,r){return r.filter(function(e){var n=jn(e);return n?ha(t.bbox,n.bbox):!0})}function jn(t){for(;t;){var r=t.props.tile;if(r)return r;t=t.parent}return null}function ha(t,r){return"west"in t&&"west"in r?t.west<r.east&&r.west<t.east&&t.south<r.north&&r.south<t.north:"left"in t&&"left"in r?t.left<r.right&&r.left<t.right&&t.top<r.bottom&&r.top<t.bottom:!1}var zn=u(P()),Un=u(x()),qn=u(b()),Gn=u(w()),Wn=u(M()),ut=u(T()),ct=u(R()),Hn=u(y());function Vn(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function Re(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Vn(Object(e),!0).forEach(function(n){(0,zn.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Vn(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function ya(t){var r=ga();return function(){var n=(0,ut.default)(t),i;if(r){var o=(0,ut.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Wn.default)(this,i)}}function ga(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Kn=function(t){(0,Gn.default)(e,t);var r=ya(e);function e(){return(0,Un.default)(this,e),r.apply(this,arguments)}return(0,qn.default)(e,[{key:"getRenderableLayers",value:function(i,o){for(var a=o.layers,s=[],f=this._getDrawLayerParams(i,o,!0),l=0;l<a.length;l++){var c=a[l];!c.isComposite&&f[l].shouldDrawLayer&&s.push(c)}return s}},{key:"renderHeightMap",value:function(i,o){var a=this,s=i.getRenderFramebuffer(),f=i.renderViewport;!s||!f||(s.resize(f),(0,ct.withParameters)(this.gl,{clearColor:[0,0,0,0],blend:!0,blendFunc:[1,1],blendEquation:32776,depthTest:!1},function(){return a.render(Re(Re({},o),{},{target:s,pass:"terrain-height-map",layers:o.layers,viewports:[f],effects:[]}))}))}},{key:"renderTerrainCover",value:function(i,o){var a=this,s=i.getRenderFramebuffer(),f=i.renderViewport;if(!(!s||!f)){var l=i.filterLayers(o.layers);s.resize(f),(0,ct.withParameters)(this.gl,{depthTest:!1},function(){return a.render(Re(Re({},o),{},{target:s,pass:"terrain-cover-".concat(i.id),layers:l,effects:[],viewports:[f]}))})}}}]),e}(Hn._LayersPass);var Zn=u(x()),Xn=u(b()),Jn=u(fe()),Qn=u(rt()),ei=u(w()),ti=u(M()),Se=u(T()),pt=u(P()),ri=u(y()),ni=u(R());function Yn(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function $n(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Yn(Object(e),!0).forEach(function(n){(0,pt.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Yn(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Pa(t){var r=xa();return function(){var n=(0,Se.default)(t),i;if(r){var o=(0,Se.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,ti.default)(this,i)}}function xa(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var ii=function(t){(0,ei.default)(e,t);var r=Pa(e);function e(){var n;(0,Zn.default)(this,e);for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];return n=r.call.apply(r,[this].concat(o)),(0,pt.default)((0,Jn.default)(n),"drawParameters",{}),n}return(0,Xn.default)(e,[{key:"getRenderableLayers",value:function(i,o){var a=o.layers,s=[];this.drawParameters={},this._resetColorEncoder(o.pickZ);for(var f=this._getDrawLayerParams(i,o),l=0;l<a.length;l++){var c=a[l];!c.isComposite&&f[l].shouldDrawLayer&&(s.push(c),this.drawParameters[c.id]=f[l].layerParameters)}return s}},{key:"renderTerrainCover",value:function(i,o){var a=this,s=i.getPickingFramebuffer(),f=i.renderViewport;if(!(!s||!f)){var l=i.filterLayers(o.layers),c=i.targetLayer;c.props.pickable&&l.unshift(c),s.resize(f),(0,ni.withParameters)(this.gl,{depthTest:!1},function(){return a.render($n($n({},o),{},{pickingFBO:s,pass:"terrain-cover-picking-".concat(i.id),layers:l,effects:[],viewports:[f],cullRect:void 0,deviceRect:f,pickZ:!1}))})}}},{key:"getLayerParameters",value:function(i,o,a){if(this.drawParameters[i.id])return this.drawParameters[i.id];var s=(0,Qn.default)((0,Se.default)(e.prototype),"getLayerParameters",this).call(this,i,o,a);return s.blend=!0,s}}]),e}(ri._PickLayersPass);var ai=u(x()),si=u(b()),D=u(P()),fi=u(R());var oi=2048,vt=function(){function t(r){(0,ai.default)(this,t),(0,D.default)(this,"renderViewport",null),(0,D.default)(this,"bounds",null),(0,D.default)(this,"fbo",void 0),(0,D.default)(this,"gl",void 0),(0,D.default)(this,"layers",[]),(0,D.default)(this,"layersBounds",[]),(0,D.default)(this,"layersBoundsCommon",null),(0,D.default)(this,"lastViewport",null),this.gl=r}return(0,si.default)(t,[{key:"getRenderFramebuffer",value:function(){return this.renderViewport?(this.fbo||(this.fbo=te(this.gl,{id:"height-map",float:!0})),this.fbo):null}},{key:"shouldUpdate",value:function(e){var n=this,i=e.layers,o=e.viewport,a=i.length!==this.layers.length||i.some(function(v,_){return v!==n.layers[_]||v.props.transitions||v.getBounds()!==n.layersBounds[_]});a&&(this.layers=i,this.layersBounds=i.map(function(v){return v.getBounds()}),this.layersBoundsCommon=G(i,o));var s=!this.lastViewport||!o.equals(this.lastViewport);if(!this.layersBoundsCommon)this.renderViewport=null;else if(a||s){var f=H(this.layersBoundsCommon,o);this.bounds=f,this.lastViewport=o;var l=o.scale,c=(f[2]-f[0])*l,p=(f[3]-f[1])*l;return this.renderViewport=c>0||p>0?W({bounds:[o.center[0]-1,o.center[1]-1,o.center[0]+1,o.center[1]+1],zoom:o.zoom,width:Math.min(c,oi),height:Math.min(p,oi),viewport:o}):null,!0}return!1}},{key:"delete",value:function(){this.fbo&&(this.fbo.color.delete(),this.fbo.delete())}}],[{key:"isSupported",value:function(e){return fi.Framebuffer.isSupported(e,{colorBufferFloat:!0})}}]),t}();function li(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function Fe(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?li(Object(e),!0).forEach(function(n){(0,S.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):li(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Y(t,r){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=ba(t))||r&&t&&typeof t.length=="number"){e&&(t=e);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
1363
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,
|
|
1362
|
+
`},getUniforms:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;if("dummyHeightMap"in r){var n=r.drawToTerrainHeightMap,i=r.heightMap,o=r.heightMapBounds,a=r.dummyHeightMap,f=r.terrainCover,s=r.useTerrainHeightMap,l=r.terrainSkipRender,c=e.project_uCommonOrigin,p=l?I.SKIP:I.NONE,v=a,_=null;if(n)p=I.WRITE_HEIGHT_MAP,_=o;else if(s&&i)p=I.USE_HEIGHT_MAP,v=i,_=o;else if(f){var m=r.pickingActive;v=m?f.getPickingFramebuffer():f.getRenderFramebuffer(),m&&(p=I.SKIP),v?(p=p===I.SKIP?I.USE_COVER_ONLY:I.USE_COVER,_=f.bounds):v=a}return{terrain_mode:p,terrain_map:v,terrain_bounds:_?[_[0]-c[0],_[1]-c[1],_[2]-_[0],_[3]-_[1]]:[0,0,0,0]}}return null}};var Nn=u(x()),Bn=u(b()),k=u(P());var z=u(P()),K=u(R());function Cn(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function In(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Cn(Object(e),!0).forEach(function(n){(0,z.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Cn(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function te(t,r){var e;return new K.Framebuffer(t,{id:r.id,attachments:(0,z.default)({},36064,new K.Texture2D(t,In(In({},r.float&&{format:(0,K.isWebGL2)(t)?34836:6408,type:5126}),{},{mipmaps:!1,parameters:(e={},(0,z.default)(e,10241,9729),(0,z.default)(e,10240,9729),(0,z.default)(e,10242,33071),(0,z.default)(e,10243,33071),e)})))})}function _a(t,r){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=da(t))||r&&t&&typeof t.length=="number"){e&&(t=e);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
1363
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,f;return{s:function(){e=e.call(t)},n:function(){var l=e.next();return o=l.done,l},e:function(l){a=!0,f=l},f:function(){try{!o&&e.return!=null&&e.return()}finally{if(a)throw f}}}}function da(t,r){if(t){if(typeof t=="string")return Ln(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return Ln(t,r)}}function Ln(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}var Dn=function(){function t(r){(0,Nn.default)(this,t),(0,k.default)(this,"isDirty",!0),(0,k.default)(this,"targetLayer",void 0),(0,k.default)(this,"renderViewport",null),(0,k.default)(this,"bounds",null),(0,k.default)(this,"fbo",void 0),(0,k.default)(this,"pickingFbo",void 0),(0,k.default)(this,"layers",[]),(0,k.default)(this,"tile",void 0),(0,k.default)(this,"targetBounds",null),(0,k.default)(this,"targetBoundsCommon",null),this.targetLayer=r,this.tile=jn(r)}return(0,Bn.default)(t,[{key:"id",get:function(){return this.targetLayer.id}},{key:"isActive",get:function(){return Boolean(this.targetLayer.getCurrentLayer())}},{key:"shouldUpdate",value:function(e){var n=e.targetLayer,i=e.viewport,o=e.layers,a=e.layerNeedsRedraw;n&&(this.targetLayer=n);var f=i?this._updateViewport(i):!1,s=o?this._updateLayers(o):!1;if(a){var l=_a(this.layers),c;try{for(l.s();!(c=l.n()).done;){var p=c.value;if(a[p]){s=!0;break}}}catch(v){l.e(v)}finally{l.f()}}return s||f}},{key:"_updateLayers",value:function(e){var n=!1;if(e=this.tile?ma(this.tile,e):e,e.length!==this.layers.length)n=!0;else for(var i=0;i<e.length;i++){var o=e[i].id;if(o!==this.layers[i]){n=!0;break}}return n&&(this.layers=e.map(function(a){return a.id})),n}},{key:"_updateViewport",value:function(e){var n=this.targetLayer,i=!1;if(this.tile&&"boundingBox"in this.tile){if(!this.targetBounds){i=!0,this.targetBounds=this.tile.boundingBox;var o=e.projectPosition(this.targetBounds[0]),a=e.projectPosition(this.targetBounds[1]);this.targetBoundsCommon=[o[0],o[1],a[0],a[1]]}}else this.targetBounds!==n.getBounds()&&(i=!0,this.targetBounds=n.getBounds(),this.targetBoundsCommon=G([n],e));if(!this.targetBoundsCommon)return!1;var f=Math.ceil(e.zoom+.5);if(this.tile)this.bounds=this.targetBoundsCommon;else{var s,l=(s=this.renderViewport)===null||s===void 0?void 0:s.zoom;i=i||f!==l;var c=H(this.targetBoundsCommon,e),p=this.bounds;i=i||!p||c.some(function(v,_){return v!==p[_]}),this.bounds=c}return i&&(this.renderViewport=W({bounds:this.bounds,zoom:f,viewport:e})),i}},{key:"getRenderFramebuffer",value:function(){return!this.renderViewport||this.layers.length===0?null:(this.fbo||(this.fbo=te(this.targetLayer.context.gl,{id:this.id})),this.fbo)}},{key:"getPickingFramebuffer",value:function(){return!this.renderViewport||this.layers.length===0&&!this.targetLayer.props.pickable?null:(this.pickingFbo||(this.pickingFbo=te(this.targetLayer.context.gl,{id:"".concat(this.id,"-picking")})),this.pickingFbo)}},{key:"filterLayers",value:function(e){var n=this;return e.filter(function(i){var o=i.id;return n.layers.includes(o)})}},{key:"delete",value:function(){var e=this.fbo,n=this.pickingFbo;e&&(e.texture.delete(),e.delete()),n&&(n.texture.delete(),n.delete())}}]),t}();function ma(t,r){return r.filter(function(e){var n=jn(e);return n?ha(t.boundingBox,n.boundingBox):!0})}function jn(t){for(;t;){var r=t.props.tile;if(r)return r;t=t.parent}return null}function ha(t,r){return t&&r?t[0][0]<r[1][0]&&r[0][0]<t[1][0]&&t[0][1]<r[1][1]&&r[0][1]<t[1][1]:!1}var zn=u(P()),Un=u(x()),qn=u(b()),Gn=u(w()),Wn=u(M()),ut=u(T()),ct=u(R()),Hn=u(y());function Vn(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function Re(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Vn(Object(e),!0).forEach(function(n){(0,zn.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Vn(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function ya(t){var r=ga();return function(){var n=(0,ut.default)(t),i;if(r){var o=(0,ut.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Wn.default)(this,i)}}function ga(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Kn=function(t){(0,Gn.default)(e,t);var r=ya(e);function e(){return(0,Un.default)(this,e),r.apply(this,arguments)}return(0,qn.default)(e,[{key:"getRenderableLayers",value:function(i,o){for(var a=o.layers,f=[],s=this._getDrawLayerParams(i,o,!0),l=0;l<a.length;l++){var c=a[l];!c.isComposite&&s[l].shouldDrawLayer&&f.push(c)}return f}},{key:"renderHeightMap",value:function(i,o){var a=this,f=i.getRenderFramebuffer(),s=i.renderViewport;!f||!s||(f.resize(s),(0,ct.withParameters)(this.gl,{clearColor:[0,0,0,0],blend:!0,blendFunc:[1,1],blendEquation:32776,depthTest:!1},function(){return a.render(Re(Re({},o),{},{target:f,pass:"terrain-height-map",layers:o.layers,viewports:[s],effects:[]}))}))}},{key:"renderTerrainCover",value:function(i,o){var a=this,f=i.getRenderFramebuffer(),s=i.renderViewport;if(!(!f||!s)){var l=i.filterLayers(o.layers);f.resize(s),(0,ct.withParameters)(this.gl,{depthTest:!1},function(){return a.render(Re(Re({},o),{},{target:f,pass:"terrain-cover-".concat(i.id),layers:l,effects:[],viewports:[s]}))})}}}]),e}(Hn._LayersPass);var Zn=u(x()),Xn=u(b()),Jn=u(fe()),Qn=u(rt()),ei=u(w()),ti=u(M()),Se=u(T()),pt=u(P()),ri=u(y()),ni=u(R());function Yn(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function $n(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?Yn(Object(e),!0).forEach(function(n){(0,pt.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):Yn(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Pa(t){var r=xa();return function(){var n=(0,Se.default)(t),i;if(r){var o=(0,Se.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,ti.default)(this,i)}}function xa(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var ii=function(t){(0,ei.default)(e,t);var r=Pa(e);function e(){var n;(0,Zn.default)(this,e);for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];return n=r.call.apply(r,[this].concat(o)),(0,pt.default)((0,Jn.default)(n),"drawParameters",{}),n}return(0,Xn.default)(e,[{key:"getRenderableLayers",value:function(i,o){var a=o.layers,f=[];this.drawParameters={},this._resetColorEncoder(o.pickZ);for(var s=this._getDrawLayerParams(i,o),l=0;l<a.length;l++){var c=a[l];!c.isComposite&&s[l].shouldDrawLayer&&(f.push(c),this.drawParameters[c.id]=s[l].layerParameters)}return f}},{key:"renderTerrainCover",value:function(i,o){var a=this,f=i.getPickingFramebuffer(),s=i.renderViewport;if(!(!f||!s)){var l=i.filterLayers(o.layers),c=i.targetLayer;c.props.pickable&&l.unshift(c),f.resize(s),(0,ni.withParameters)(this.gl,{depthTest:!1},function(){return a.render($n($n({},o),{},{pickingFBO:f,pass:"terrain-cover-picking-".concat(i.id),layers:l,effects:[],viewports:[s],cullRect:void 0,deviceRect:s,pickZ:!1}))})}}},{key:"getLayerParameters",value:function(i,o,a){if(this.drawParameters[i.id])return this.drawParameters[i.id];var f=(0,Qn.default)((0,Se.default)(e.prototype),"getLayerParameters",this).call(this,i,o,a);return f.blend=!0,f}}]),e}(ri._PickLayersPass);var ai=u(x()),si=u(b()),D=u(P()),fi=u(R());var oi=2048,vt=function(){function t(r){(0,ai.default)(this,t),(0,D.default)(this,"renderViewport",null),(0,D.default)(this,"bounds",null),(0,D.default)(this,"fbo",void 0),(0,D.default)(this,"gl",void 0),(0,D.default)(this,"layers",[]),(0,D.default)(this,"layersBounds",[]),(0,D.default)(this,"layersBoundsCommon",null),(0,D.default)(this,"lastViewport",null),this.gl=r}return(0,si.default)(t,[{key:"getRenderFramebuffer",value:function(){return this.renderViewport?(this.fbo||(this.fbo=te(this.gl,{id:"height-map",float:!0})),this.fbo):null}},{key:"shouldUpdate",value:function(e){var n=this,i=e.layers,o=e.viewport,a=i.length!==this.layers.length||i.some(function(v,_){return v!==n.layers[_]||v.props.transitions||v.getBounds()!==n.layersBounds[_]});a&&(this.layers=i,this.layersBounds=i.map(function(v){return v.getBounds()}),this.layersBoundsCommon=G(i,o));var f=!this.lastViewport||!o.equals(this.lastViewport);if(!this.layersBoundsCommon)this.renderViewport=null;else if(a||f){var s=H(this.layersBoundsCommon,o);if(s[2]<=s[0]||s[3]<=s[1])return this.renderViewport=null,!1;this.bounds=s,this.lastViewport=o;var l=o.scale,c=(s[2]-s[0])*l,p=(s[3]-s[1])*l;return this.renderViewport=c>0||p>0?W({bounds:[o.center[0]-1,o.center[1]-1,o.center[0]+1,o.center[1]+1],zoom:o.zoom,width:Math.min(c,oi),height:Math.min(p,oi),viewport:o}):null,!0}return!1}},{key:"delete",value:function(){this.fbo&&(this.fbo.color.delete(),this.fbo.delete())}}],[{key:"isSupported",value:function(e){return fi.Framebuffer.isSupported(e,{colorBufferFloat:!0})}}]),t}();function li(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function Fe(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?li(Object(e),!0).forEach(function(n){(0,S.default)(t,n,e[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):li(Object(e)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})}return t}function Y(t,r){var e=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=ba(t))||r&&t&&typeof t.length=="number"){e&&(t=e);var n=0,i=function(){};return{s:i,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
1364
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,a=!1,f;return{s:function(){e=e.call(t)},n:function(){var l=e.next();return o=l.done,l},e:function(l){a=!0,f=l},f:function(){try{!o&&e.return!=null&&e.return()}finally{if(a)throw f}}}}function ba(t,r){if(t){if(typeof t=="string")return ui(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return ui(t,r)}}function ui(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}var di=function(){function t(){(0,pi.default)(this,t),(0,S.default)(this,"id","terrain-effect"),(0,S.default)(this,"props",null),(0,S.default)(this,"useInPicking",!0),(0,S.default)(this,"isPicking",!1),(0,S.default)(this,"isDrapingEnabled",!1),(0,S.default)(this,"dummyHeightMap",void 0),(0,S.default)(this,"heightMap",void 0),(0,S.default)(this,"terrainPass",void 0),(0,S.default)(this,"terrainPickingPass",void 0),(0,S.default)(this,"terrainCovers",new Map)}return(0,vi.default)(t,[{key:"initialize",value:function(e){this.dummyHeightMap=new ke.Texture2D(e,{width:1,height:1,data:new Uint8Array([0,0,0,0])}),this.terrainPass=new Kn(e,{id:"terrain"}),this.terrainPickingPass=new ii(e,{id:"terrain-picking"}),vt.isSupported(e)?this.heightMap=new vt(e):_i.log.warn("Terrain offset mode is not supported by this browser")(),ke.ProgramManager.getDefaultProgramManager(e).addDefaultModule(Ae)}},{key:"preRender",value:function(e,n){if(!this.dummyHeightMap){this.initialize(e);var i=Y(n.layers),o;try{for(i.s();!(o=i.n()).done;){var a=o.value;a.props.operation.includes("terrain")&&a.setChangeFlags({extensionsChanged:!0})}}catch(d){i.e(d)}finally{i.f()}}if(n.pickZ){this.isDrapingEnabled=!1;return}var f=n.viewports,s=n.isPicking,l=s===void 0?!1:s;this.isPicking=l,this.isDrapingEnabled=!0;var c=f[0],p=(l?this.terrainPickingPass:this.terrainPass).getRenderableLayers(c,n),v=p.filter(function(d){return d.props.operation.includes("terrain")});if(v.length!==0){if(!l){var _=p.filter(function(d){return d.state.terrainDrawMode==="offset"});_.length>0&&this._updateHeightMap(v,c,n)}var m=p.filter(function(d){return d.state.terrainDrawMode==="drape"});this._updateTerrainCovers(v,m,c,n)}}},{key:"getModuleParameters",value:function(e){var n,i,o=e.state.terrainDrawMode;return{heightMap:(n=this.heightMap)===null||n===void 0?void 0:n.getRenderFramebuffer(),heightMapBounds:(i=this.heightMap)===null||i===void 0?void 0:i.bounds,dummyHeightMap:this.dummyHeightMap,terrainCover:this.isDrapingEnabled?this.terrainCovers.get(e.id):null,useTerrainHeightMap:o==="offset",terrainSkipRender:o==="drape"||!e.props.operation.includes("draw")}}},{key:"cleanup",value:function(){this.dummyHeightMap&&(this.dummyHeightMap.delete(),this.dummyHeightMap=void 0),this.heightMap&&(this.heightMap.delete(),this.heightMap=void 0);var e=Y(this.terrainCovers.values()),n;try{for(e.s();!(n=e.n()).done;){var i=n.value;i.delete()}}catch(o){e.e(o)}finally{e.f()}this.terrainCovers.clear()}},{key:"_updateHeightMap",value:function(e,n,i){if(this.heightMap){var o=this.heightMap.shouldUpdate({layers:e,viewport:n});o&&this.terrainPass.renderHeightMap(this.heightMap,Fe(Fe({},i),{},{layers:e,moduleParameters:{heightMapBounds:this.heightMap.bounds,dummyHeightMap:this.dummyHeightMap,devicePixelRatio:1,drawToTerrainHeightMap:!0}}))}}},{key:"_updateTerrainCovers",value:function(e,n,i,o){var a={},f=Y(n),s;try{for(f.s();!(s=f.n()).done;){var l=s.value;l.state.terrainCoverNeedsRedraw&&(a[l.id]=!0,l.state.terrainCoverNeedsRedraw=!1)}}catch(h){f.e(h)}finally{f.f()}var c=Y(this.terrainCovers.values()),p;try{for(c.s();!(p=c.n()).done;){var v=p.value;v.isDirty=v.isDirty||v.shouldUpdate({layerNeedsRedraw:a})}}catch(h){c.e(h)}finally{c.f()}var _=Y(e),m;try{for(_.s();!(m=_.n()).done;){var d=m.value;this._updateTerrainCover(d,n,i,o)}}catch(h){_.e(h)}finally{_.f()}this.isPicking||this._pruneTerrainCovers()}},{key:"_updateTerrainCover",value:function(e,n,i,o){var a=this.isPicking?this.terrainPickingPass:this.terrainPass,f=this.terrainCovers.get(e.id);f||(f=new Dn(e),this.terrainCovers.set(e.id,f));try{var s=f.shouldUpdate({targetLayer:e,viewport:i,layers:n});(this.isPicking||f.isDirty||s)&&(a.renderTerrainCover(f,Fe(Fe({},o),{},{layers:n,moduleParameters:{dummyHeightMap:this.dummyHeightMap,terrainSkipRender:!1,devicePixelRatio:1}})),f.isDirty=!1)}catch(l){e.raiseError(l,"Error rendering terrain cover ".concat(f.id))}}},{key:"_pruneTerrainCovers",value:function(){var e=[],n=Y(this.terrainCovers),i;try{for(n.s();!(i=n.n()).done;){var o=(0,ci.default)(i.value,2),a=o[0],f=o[1];f.isActive||e.push(a)}}catch(p){n.e(p)}finally{n.f()}for(var s=0,l=e;s<l.length;s++){var c=l[s];this.terrainCovers.delete(c)}}}]),t}();function Oa(t){var r=Ea();return function(){var n=(0,_t.default)(t),i;if(r){var o=(0,_t.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,gi.default)(this,i)}}function Ea(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Ta={terrainDrawMode:void 0},Ce=function(t){(0,yi.default)(e,t);var r=Oa(e);function e(){return(0,mi.default)(this,e),r.apply(this,arguments)}return(0,hi.default)(e,[{key:"getShaders",value:function(){return{modules:[Ae]}}},{key:"initializeState",value:function(){var i;(i=this.context.deck)===null||i===void 0||i._addDefaultEffect(new di)}},{key:"updateState",value:function(i){var o=i.props,a=i.oldProps;if(!(this.state.terrainDrawMode&&o.terrainDrawMode===a.terrainDrawMode&&o.extruded===a.extruded)){var f=o.terrainDrawMode;if(!f){var s,l=this.props.extruded,c=(s=this.getAttributeManager())===null||s===void 0?void 0:s.attributes,p=c&&"instancePositions"in c;f=l||p?"offset":"drape"}this.setState({terrainDrawMode:f})}}},{key:"onNeedsRedraw",value:function(){var i=this.state;i.terrainDrawMode==="drape"&&(i.terrainCoverNeedsRedraw=!0)}}]),e}(Pi.LayerExtension);(0,dt.default)(Ce,"defaultProps",Ta);(0,dt.default)(Ce,"extensionName","TerrainExtension");return Fi(re);})();
|
|
1364
1365
|
return __exports__;
|
|
1365
1366
|
});
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/extensions",
|
|
3
3
|
"description": "Plug-and-play functionalities for deck.gl layers",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "8.9.
|
|
5
|
+
"version": "8.9.9",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"@math.gl/web-mercator": "^3.6.2",
|
|
41
41
|
"gl-matrix": "^3.0.0"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "84804c8413f59f27e5d8fefd828192b06e839bfa"
|
|
44
44
|
}
|
|
@@ -80,6 +80,11 @@ export class HeightMapBuilder {
|
|
|
80
80
|
this.renderViewport = null;
|
|
81
81
|
} else if (layersChanged || viewportChanged) {
|
|
82
82
|
const bounds = getRenderBounds(this.layersBoundsCommon, viewport);
|
|
83
|
+
if (bounds[2] <= bounds[0] || bounds[3] <= bounds[1]) {
|
|
84
|
+
this.renderViewport = null;
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
83
88
|
this.bounds = bounds;
|
|
84
89
|
this.lastViewport = viewport;
|
|
85
90
|
|