@deck.gl/geo-layers 8.9.0-beta.3 → 8.9.0-beta.6

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.
Files changed (47) hide show
  1. package/dist/dist.dev.js +196 -1689
  2. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
  3. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  4. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  5. package/dist/es5/mvt-layer/mvt-layer.js +1 -0
  6. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  7. package/dist/es5/tile-3d-layer/tile-3d-layer.js +6 -11
  8. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  9. package/dist/es5/tile-layer/tile-layer.js +6 -12
  10. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  11. package/dist/es5/wms-layer/wms-layer.js +0 -4
  12. package/dist/es5/wms-layer/wms-layer.js.map +1 -1
  13. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  14. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  15. package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
  16. package/dist/esm/mvt-layer/mvt-layer.js +2 -1
  17. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  18. package/dist/esm/tile-3d-layer/tile-3d-layer.js +6 -11
  19. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  20. package/dist/esm/tile-layer/tile-layer.js +6 -12
  21. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  22. package/dist/esm/wms-layer/wms-layer.js +0 -4
  23. package/dist/esm/wms-layer/wms-layer.js.map +1 -1
  24. package/dist.min.js +65 -66
  25. package/package.json +2 -2
  26. package/src/geo-cell-layer/GeoCellLayer.ts +2 -2
  27. package/src/h3-layers/h3-hexagon-layer.ts +2 -6
  28. package/src/mesh-layer/mesh-layer.ts +3 -3
  29. package/src/mvt-layer/mvt-layer.ts +15 -11
  30. package/src/tile-3d-layer/tile-3d-layer.ts +9 -8
  31. package/src/tile-layer/tile-layer.ts +10 -9
  32. package/src/wms-layer/wms-layer.ts +6 -5
  33. package/typed/geo-cell-layer/GeoCellLayer.d.ts +2 -2
  34. package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
  35. package/typed/h3-layers/h3-hexagon-layer.d.ts +3 -3
  36. package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
  37. package/typed/mesh-layer/mesh-layer.d.ts +3 -3
  38. package/typed/mesh-layer/mesh-layer.d.ts.map +1 -1
  39. package/typed/mvt-layer/mvt-layer.d.ts +4 -4
  40. package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
  41. package/typed/tile-3d-layer/tile-3d-layer.d.ts +2 -1
  42. package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
  43. package/typed/tile-layer/tile-layer.d.ts +4 -2
  44. package/typed/tile-layer/tile-layer.d.ts.map +1 -1
  45. package/typed/wms-layer/wms-layer.d.ts +2 -1
  46. package/typed/wms-layer/wms-layer.d.ts.map +1 -1
  47. package/LICENSE +0 -19
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.ts"],"names":["Geometry","CompositeLayer","COORDINATE_SYSTEM","log","PointCloudLayer","ScenegraphLayer","default","MeshLayer","load","Tileset3D","TILE_TYPE","Tiles3DLoader","SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","onTilesetLoad","tileset3d","compare","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","initializeState","props","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","shouldUpdateState","changeFlags","somethingChanged","updateState","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","activateViewport","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","getPickingInfo","info","sourceLayer","sourceTile","picked","object","filterSubLayer","layer","viewportId","selected","viewportIds","includes","_updateAutoHighlight","layerCache","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","_onTileLoad","bind","_onTileUnload","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","tilesetChanged","_getSubLayer","oldLayer","content","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","getSubLayerProps","coordinateSystem","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","drawMode","getMeshGeometry","pbrMaterial","renderLayers","tiles","map","filter","Boolean","contentAttributes","Float32Array","texCoords","uvRegions"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n COORDINATE_SYSTEM,\n FilterContext,\n GetPickingInfoParams,\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n Viewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as MeshLayer} from '../mesh-layer/mesh-layer';\n\nimport {load} from '@loaders.gl/core';\nimport {MeshAttributes} from '@loaders.gl/schema';\nimport {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps: DefaultProps<Tile3DLayerProps> = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n // @ts-expect-error Disable async data loading (handling it in _loadTileSet)\n data: null,\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}, compare: false},\n onTileLoad: {type: 'function', value: tileHeader => {}, compare: false},\n onTileUnload: {type: 'function', value: tileHeader => {}, compare: false},\n onTileError: {type: 'function', value: (tile, message, url) => {}, compare: false},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255], compare: false}\n};\n\n/** All properties supported by Tile3DLayer */\nexport type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps<DataT>;\n\n/** Props added by the Tile3DLayer */\ntype _Tile3DLayerProps<DataT> = {\n /** Color Accessor for point clouds. **/\n getPointColor?: Accessor<DataT, Color>;\n\n /** Global radius of all points in pixels. **/\n pointSize?: number;\n\n /** A loader which is used to decode the fetched tiles.\n * @deprecated Use `loaders` instead\n */\n loader?: typeof Tiles3DLoader;\n\n /** Called when Tileset JSON file is loaded. **/\n onTilesetLoad?: (tile: Tileset3D) => void;\n\n /** Called when a tile in the tileset hierarchy is loaded. **/\n onTileLoad?: (tile: Tile3D) => void;\n\n /** Called when a tile is unloaded. **/\n onTileUnload?: (tile: Tile3D) => void;\n\n /** Called when a tile fails to load. **/\n onTileError?: (tile: Tile3D, url: string, message: string) => void;\n\n /** (Experimental) Accessor to change color of mesh based on properties. **/\n _getMeshColor?: (tile: Tile3D) => Color;\n};\n\n/** Render 3d tiles data formatted according to the [3D Tiles Specification](https://www.opengeospatial.org/standards/3DTiles) and [`ESRI I3S`](https://github.com/Esri/i3s-spec) */\nexport default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_Tile3DLayerProps<DataT>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'Tile3DLayer';\n\n state!: {\n activeViewports: {};\n frameNumber?: number;\n lastUpdatedViewports: {[viewportId: string]: Viewport} | null;\n layerMap: {[layerId: string]: any};\n tileset3d: Tileset3D | null;\n };\n\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded(): boolean {\n const {tileset3d} = this.state;\n return tileset3d !== null && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n if (props.data && props.data !== oldProps.data) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport: Viewport): void {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState!.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams) {\n const sourceTile = sourceLayer && (sourceLayer.props as any).tile;\n if (info.picked) {\n info.object = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n\n return info;\n }\n\n filterSubLayer({layer, viewport}: FilterContext): boolean {\n // All sublayers will have a tile prop\n const {tile} = layer.props as unknown as {tile: Tile3D};\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile;\n const layerCache = this.state.layerMap[sourceTile?.id];\n if (layerCache && layerCache.layer) {\n layerCache.layer.updateAutoHighlight(info);\n }\n }\n\n private async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n // @ts-ignore\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileError: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n private _onTileLoad(tileHeader: Tile3D): void {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n private _onTileUnload(tileHeader: Tile3D): void {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {\n if (!viewports) {\n return;\n }\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n private _getSubLayer(\n tileHeader: Tile3D,\n oldLayer?: Layer\n ): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n private _makePointCloudLayer(\n tileHeader: Tile3D,\n oldLayer?: PointCloudLayer<DataT>\n ): PointCloudLayer<DataT> | null {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =\n tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n // loaders.gl doesn't provide a type for tileset3d.tiles\n return (tileset3d.tiles as Tile3D[])\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes: MeshAttributes): MeshAttributes {\n const attributes: MeshAttributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n"],"file":"tile-3d-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.ts"],"names":["Geometry","CompositeLayer","COORDINATE_SYSTEM","log","PointCloudLayer","ScenegraphLayer","default","MeshLayer","load","Tileset3D","TILE_TYPE","Tiles3DLoader","SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","onTilesetLoad","tileset3d","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","initializeState","props","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","shouldUpdateState","changeFlags","somethingChanged","updateState","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","activateViewport","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","getPickingInfo","info","sourceLayer","sourceTile","picked","object","filterSubLayer","layer","viewportId","selected","viewportIds","includes","_updateAutoHighlight","layerCache","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","_onTileLoad","bind","_onTileUnload","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","tilesetChanged","_getSubLayer","oldLayer","content","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","getSubLayerProps","coordinateSystem","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","drawMode","getMeshGeometry","pbrMaterial","renderLayers","tiles","map","filter","Boolean","contentAttributes","Float32Array","texCoords","uvRegions"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n COORDINATE_SYSTEM,\n FilterContext,\n GetPickingInfoParams,\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n Viewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as MeshLayer} from '../mesh-layer/mesh-layer';\n\nimport {load} from '@loaders.gl/core';\nimport {MeshAttributes} from '@loaders.gl/schema';\nimport {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps: DefaultProps<Tile3DLayerProps> = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n // Disable async data loading (handling it in _loadTileSet)\n data: '',\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}},\n onTileLoad: {type: 'function', value: tileHeader => {}},\n onTileUnload: {type: 'function', value: tileHeader => {}},\n onTileError: {type: 'function', value: (tile, message, url) => {}},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255]}\n};\n\n/** All properties supported by Tile3DLayer */\nexport type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps;\n\n/** Props added by the Tile3DLayer */\ntype _Tile3DLayerProps<DataT> = {\n data: string;\n /** Color Accessor for point clouds. **/\n getPointColor?: Accessor<DataT, Color>;\n\n /** Global radius of all points in pixels. **/\n pointSize?: number;\n\n /** A loader which is used to decode the fetched tiles.\n * @deprecated Use `loaders` instead\n */\n loader?: typeof Tiles3DLoader;\n\n /** Called when Tileset JSON file is loaded. **/\n onTilesetLoad?: (tile: Tileset3D) => void;\n\n /** Called when a tile in the tileset hierarchy is loaded. **/\n onTileLoad?: (tile: Tile3D) => void;\n\n /** Called when a tile is unloaded. **/\n onTileUnload?: (tile: Tile3D) => void;\n\n /** Called when a tile fails to load. **/\n onTileError?: (tile: Tile3D, url: string, message: string) => void;\n\n /** (Experimental) Accessor to change color of mesh based on properties. **/\n _getMeshColor?: (tile: Tile3D) => Color;\n};\n\n/** Render 3d tiles data formatted according to the [3D Tiles Specification](https://www.opengeospatial.org/standards/3DTiles) and [`ESRI I3S`](https://github.com/Esri/i3s-spec) */\nexport default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_Tile3DLayerProps<DataT>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'Tile3DLayer';\n\n state!: {\n activeViewports: {};\n frameNumber?: number;\n lastUpdatedViewports: {[viewportId: string]: Viewport} | null;\n layerMap: {[layerId: string]: any};\n tileset3d: Tileset3D | null;\n };\n\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded(): boolean {\n const {tileset3d} = this.state;\n return tileset3d !== null && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n if (props.data && props.data !== oldProps.data) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport: Viewport): void {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState!.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams) {\n const sourceTile = sourceLayer && (sourceLayer.props as any).tile;\n if (info.picked) {\n info.object = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n\n return info;\n }\n\n filterSubLayer({layer, viewport}: FilterContext): boolean {\n // All sublayers will have a tile prop\n const {tile} = layer.props as unknown as {tile: Tile3D};\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile;\n const layerCache = this.state.layerMap[sourceTile?.id];\n if (layerCache && layerCache.layer) {\n layerCache.layer.updateAutoHighlight(info);\n }\n }\n\n private async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n // @ts-ignore\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileError: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n private _onTileLoad(tileHeader: Tile3D): void {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n private _onTileUnload(tileHeader: Tile3D): void {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {\n if (!viewports) {\n return;\n }\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n private _getSubLayer(\n tileHeader: Tile3D,\n oldLayer?: Layer\n ): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n private _makePointCloudLayer(\n tileHeader: Tile3D,\n oldLayer?: PointCloudLayer<DataT>\n ): PointCloudLayer<DataT> | null {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =\n tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n // loaders.gl doesn't provide a type for tileset3d.tiles\n return (tileset3d.tiles as Tile3D[])\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes: MeshAttributes): MeshAttributes {\n const attributes: MeshAttributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n"],"file":"tile-3d-layer.js"}
@@ -12,35 +12,29 @@ const defaultProps = {
12
12
  dataComparator: urlType.equal,
13
13
  renderSubLayers: {
14
14
  type: 'function',
15
- value: props => new GeoJsonLayer(props),
16
- compare: false
15
+ value: props => new GeoJsonLayer(props)
17
16
  },
18
17
  getTileData: {
19
18
  type: 'function',
20
19
  optional: true,
21
- value: null,
22
- compare: false
20
+ value: null
23
21
  },
24
22
  onViewportLoad: {
25
23
  type: 'function',
26
24
  optional: true,
27
- value: null,
28
- compare: false
25
+ value: null
29
26
  },
30
27
  onTileLoad: {
31
28
  type: 'function',
32
- value: tile => {},
33
- compare: false
29
+ value: tile => {}
34
30
  },
35
31
  onTileUnload: {
36
32
  type: 'function',
37
- value: tile => {},
38
- compare: false
33
+ value: tile => {}
39
34
  },
40
35
  onTileError: {
41
36
  type: 'function',
42
- value: err => console.error(err),
43
- compare: false
37
+ value: err => console.error(err)
44
38
  },
45
39
  extent: {
46
40
  type: 'array',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","TilesetClass","data","type","value","dataComparator","equal","renderSubLayers","props","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","sourceTile","picked","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","id","_offset","Boolean","clone","Object","keys","some","filterSubLayer","cullRect","isTileVisible"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = any> = CompositeLayerProps<any> & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.id}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","TilesetClass","data","type","value","dataComparator","equal","renderSubLayers","props","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","compare","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","sourceTile","picked","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","id","_offset","Boolean","clone","Object","keys","some","filterSubLayer","cullRect","isTileVisible"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = any> = CompositeLayerProps & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.id}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}
@@ -15,22 +15,18 @@ const defaultProps = {
15
15
  },
16
16
  onMetadataLoad: {
17
17
  type: 'function',
18
- compare: false,
19
18
  value: () => {}
20
19
  },
21
20
  onMetadataLoadError: {
22
21
  type: 'function',
23
- compare: false,
24
22
  value: console.error
25
23
  },
26
24
  onImageLoadStart: {
27
25
  type: 'function',
28
- compare: false,
29
26
  value: () => {}
30
27
  },
31
28
  onImageLoad: {
32
29
  type: 'function',
33
- compare: false,
34
30
  value: () => {}
35
31
  },
36
32
  onImageLoadError: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/wms-layer/wms-layer.ts"],"names":["CompositeLayer","COORDINATE_SYSTEM","_deepEqual","deepEqual","BitmapLayer","ImageSource","createImageSource","Proj4Projection","defaultProps","id","data","serviceType","srs","layers","type","compare","value","onMetadataLoad","onMetadataLoadError","console","error","onImageLoadStart","onImageLoad","onImageLoadError","requestId","projConverter","from","to","WMSLayer","shouldUpdateState","initializeState","state","_nextRequestId","lastRequestId","updateState","changeFlags","props","oldProps","viewport","context","dataChanged","imageSource","_createImageSource","_loadMetadata","debounce","loadImage","viewportChanged","finalizeState","renderLayers","bounds","image","lastRequestParameters","getSubLayerProps","_imageCoordinateSystem","LNGLAT","CARTESIAN","getFeatureInfoText","x","y","featureInfo","query_layers","info_format","url","loadOptions","Error","metadata","getMetadata","getCurrentLayer","reason","length","getBounds","width","height","getRequestId","resolution","requestParams","bbox","minX","minY","project","maxX","maxY","getImage","setState","raiseError","fn","ms","clearTimeout","_timeoutId","setTimeout"],"mappings":"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","sourcesContent":["// deck.gl, MIT license\n// Attributions:\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* eslint-disable camelcase */ // Some WMS parameters are not in camel case\n/* global setTimeout, clearTimeout */\n\nimport {\n Layer,\n CompositeLayer,\n CompositeLayerProps,\n UpdateParameters,\n DefaultProps,\n Viewport,\n COORDINATE_SYSTEM,\n _deepEqual as deepEqual\n} from '@deck.gl/core';\nimport {BitmapLayer} from '@deck.gl/layers';\nimport type {ImageSourceMetadata, ImageType, ImageServiceType} from '@loaders.gl/wms';\nimport {ImageSource, createImageSource} from '@loaders.gl/wms';\nimport {Proj4Projection} from '@math.gl/proj4';\n\n/** All props supported by the TileLayer */\nexport type WMSLayerProps = CompositeLayerProps<any> & _WMSLayerProps;\n\n/** Props added by the TileLayer */\ntype _WMSLayerProps = {\n serviceType?: ImageServiceType | 'auto';\n layers?: string[];\n srs?: 'EPSG:4326' | 'EPSG:3857' | 'auto';\n onMetadataLoad?: (metadata: ImageSourceMetadata) => void;\n onMetadataLoadError?: (error: Error) => void;\n onImageLoadStart?: (requestId: unknown) => void;\n onImageLoad?: (requestId: unknown) => void;\n onImageLoadError?: (requestId: unknown, error: Error) => void;\n};\n\nconst defaultProps: DefaultProps<WMSLayerProps> = {\n id: 'imagery-layer',\n data: '',\n serviceType: 'auto',\n srs: 'auto',\n layers: {type: 'array', compare: true, value: []},\n onMetadataLoad: {type: 'function', compare: false, value: () => {}},\n // eslint-disable-next-line\n onMetadataLoadError: {type: 'function', compare: false, value: console.error},\n onImageLoadStart: {type: 'function', compare: false, value: () => {}},\n onImageLoad: {type: 'function', compare: false, value: () => {}},\n onImageLoadError: {\n type: 'function',\n compare: false,\n // eslint-disable-next-line\n value: (requestId: unknown, error: Error) => console.error(error, requestId)\n }\n};\n\nconst projConverter = new Proj4Projection({from: 'EPSG:4326', to: 'EPSG:3857'});\n\n/**\n * The layer is used in Hex Tile layer in order to properly discard invisible elements during animation\n */\nexport class WMSLayer<ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_WMSLayerProps>\n> {\n static layerName = 'WMSLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n state!: {\n imageSource: ImageSource;\n image: ImageType;\n bounds: [number, number, number, number];\n lastRequestParameters: {\n bbox: [number, number, number, number];\n layers: string[];\n srs: 'EPSG:4326' | 'EPSG:3857';\n width: number;\n height: number;\n };\n lastRequestId: number;\n\n _nextRequestId: number;\n _timeoutId: any;\n };\n\n /** Lets deck.gl know that we want viewport change events */\n override shouldUpdateState(): boolean {\n return true;\n }\n\n override initializeState(): void {\n // intentionally empty, initialization is done in updateState\n this.state._nextRequestId = 0;\n this.state.lastRequestId = -1;\n }\n\n override updateState({changeFlags, props, oldProps}: UpdateParameters<this>): void {\n const {viewport} = this.context;\n\n // Check if data source has changed\n if (changeFlags.dataChanged || props.serviceType !== oldProps.serviceType) {\n this.state.imageSource = this._createImageSource(props);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadMetadata();\n this.debounce(() => this.loadImage(viewport, 'image source changed'), 0);\n } else if (!deepEqual(props.layers, oldProps.layers, 1)) {\n this.debounce(() => this.loadImage(viewport, 'layers changed'), 0);\n } else if (changeFlags.viewportChanged) {\n this.debounce(() => this.loadImage(viewport, 'viewport changed'));\n }\n }\n\n override finalizeState(): void {\n // TODO - we could cancel outstanding requests\n }\n\n override renderLayers(): Layer {\n // TODO - which bitmap layer is rendered should depend on the current viewport\n // Currently Studio only uses one viewport\n const {bounds, image, lastRequestParameters} = this.state;\n\n return (\n image &&\n new BitmapLayer({\n ...this.getSubLayerProps({id: 'bitmap'}),\n _imageCoordinateSystem:\n lastRequestParameters.srs === 'EPSG:4326'\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN,\n bounds,\n image\n })\n );\n }\n\n async getFeatureInfoText(x: number, y: number): Promise<string | null> {\n const {lastRequestParameters} = this.state;\n if (lastRequestParameters) {\n // @ts-expect-error Undocumented method\n const featureInfo = await this.state.imageSource.getFeatureInfoText?.({\n ...lastRequestParameters,\n query_layers: lastRequestParameters.layers,\n x,\n y,\n info_format: 'application/vnd.ogc.gml'\n });\n return featureInfo;\n }\n return '';\n }\n\n _createImageSource(props: WMSLayerProps): ImageSource {\n if (props.data instanceof ImageSource) {\n return props.data;\n }\n\n if (typeof props.data === 'string') {\n return createImageSource({\n url: props.data,\n loadOptions: props.loadOptions,\n type: props.serviceType\n });\n }\n\n throw new Error('invalid image source in props.data');\n }\n\n /** Run a getMetadata on the image service */\n async _loadMetadata(): Promise<void> {\n const {imageSource} = this.state;\n try {\n const metadata = await imageSource.getMetadata();\n\n // If a request takes a long time, it may no longer be expected\n if (this.state.imageSource === imageSource) {\n this.getCurrentLayer()?.props.onMetadataLoad(metadata);\n }\n } catch (error) {\n this.getCurrentLayer()?.props.onMetadataLoadError(error as Error);\n }\n }\n\n /** Load an image */\n async loadImage(viewport: Viewport, reason: string): Promise<void> {\n const {layers, serviceType} = this.props;\n\n // TODO - move to ImageSource?\n if (serviceType === 'wms' && layers.length === 0) {\n return;\n }\n\n const bounds = viewport.getBounds();\n const {width, height} = viewport;\n const requestId = this.getRequestId();\n let {srs} = this.props;\n if (srs === 'auto') {\n // BitmapLayer only supports LNGLAT or CARTESIAN (Web-Mercator)\n srs = viewport.resolution ? 'EPSG:4326' : 'EPSG:3857';\n }\n const requestParams = {\n width,\n height,\n bbox: bounds,\n layers,\n srs\n };\n if (srs === 'EPSG:3857') {\n const [minX, minY] = projConverter.project([bounds[0], bounds[1]]);\n const [maxX, maxY] = projConverter.project([bounds[2], bounds[3]]);\n requestParams.bbox = [minX, minY, maxX, maxY];\n }\n\n try {\n this.props.onImageLoadStart(requestId);\n\n const image = await this.state.imageSource.getImage(requestParams);\n\n // If a request takes a long time, later requests may have already loaded.\n if (this.state.lastRequestId < requestId) {\n this.getCurrentLayer()?.props.onImageLoad(requestId);\n // Not type safe...\n this.setState({\n image,\n bounds,\n lastRequestParameters: requestParams,\n lastRequestId: requestId\n });\n }\n } catch (error) {\n this.raiseError(error as Error, 'Load image');\n this.getCurrentLayer()?.props.onImageLoadError(requestId, error as Error);\n }\n }\n\n // HELPERS\n\n /** Global counter for issuing unique request ids */\n private getRequestId(): number {\n return this.state._nextRequestId++;\n }\n\n /** Runs an action in the future, cancels it if the new action is issued before it executes */\n private debounce(fn: Function, ms = 500): void {\n clearTimeout(this.state._timeoutId);\n this.state._timeoutId = setTimeout(() => fn(), ms);\n }\n}\n"],"file":"wms-layer.js"}
1
+ {"version":3,"sources":["../../../src/wms-layer/wms-layer.ts"],"names":["CompositeLayer","COORDINATE_SYSTEM","_deepEqual","deepEqual","BitmapLayer","ImageSource","createImageSource","Proj4Projection","defaultProps","id","data","serviceType","srs","layers","type","compare","value","onMetadataLoad","onMetadataLoadError","console","error","onImageLoadStart","onImageLoad","onImageLoadError","requestId","projConverter","from","to","WMSLayer","shouldUpdateState","initializeState","state","_nextRequestId","lastRequestId","updateState","changeFlags","props","oldProps","viewport","context","dataChanged","imageSource","_createImageSource","_loadMetadata","debounce","loadImage","viewportChanged","finalizeState","renderLayers","bounds","image","lastRequestParameters","getSubLayerProps","_imageCoordinateSystem","LNGLAT","CARTESIAN","getFeatureInfoText","x","y","featureInfo","query_layers","info_format","url","loadOptions","Error","metadata","getMetadata","getCurrentLayer","reason","length","getBounds","width","height","getRequestId","resolution","requestParams","bbox","minX","minY","project","maxX","maxY","getImage","setState","raiseError","fn","ms","clearTimeout","_timeoutId","setTimeout"],"mappings":"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","sourcesContent":["// deck.gl, MIT license\n// Attributions:\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* eslint-disable camelcase */ // Some WMS parameters are not in camel case\n/* global setTimeout, clearTimeout */\n\nimport {\n Layer,\n CompositeLayer,\n CompositeLayerProps,\n UpdateParameters,\n DefaultProps,\n Viewport,\n COORDINATE_SYSTEM,\n _deepEqual as deepEqual\n} from '@deck.gl/core';\nimport {BitmapLayer} from '@deck.gl/layers';\nimport type {ImageSourceMetadata, ImageType, ImageServiceType} from '@loaders.gl/wms';\nimport {ImageSource, createImageSource} from '@loaders.gl/wms';\nimport {Proj4Projection} from '@math.gl/proj4';\n\n/** All props supported by the TileLayer */\nexport type WMSLayerProps = CompositeLayerProps & _WMSLayerProps;\n\n/** Props added by the TileLayer */\ntype _WMSLayerProps = {\n data: string | ImageSource;\n serviceType?: ImageServiceType | 'auto';\n layers?: string[];\n srs?: 'EPSG:4326' | 'EPSG:3857' | 'auto';\n onMetadataLoad?: (metadata: ImageSourceMetadata) => void;\n onMetadataLoadError?: (error: Error) => void;\n onImageLoadStart?: (requestId: unknown) => void;\n onImageLoad?: (requestId: unknown) => void;\n onImageLoadError?: (requestId: unknown, error: Error) => void;\n};\n\nconst defaultProps: DefaultProps<WMSLayerProps> = {\n id: 'imagery-layer',\n data: '',\n serviceType: 'auto',\n srs: 'auto',\n layers: {type: 'array', compare: true, value: []},\n onMetadataLoad: {type: 'function', value: () => {}},\n // eslint-disable-next-line\n onMetadataLoadError: {type: 'function', value: console.error},\n onImageLoadStart: {type: 'function', value: () => {}},\n onImageLoad: {type: 'function', value: () => {}},\n onImageLoadError: {\n type: 'function',\n compare: false,\n // eslint-disable-next-line\n value: (requestId: unknown, error: Error) => console.error(error, requestId)\n }\n};\n\nconst projConverter = new Proj4Projection({from: 'EPSG:4326', to: 'EPSG:3857'});\n\n/**\n * The layer is used in Hex Tile layer in order to properly discard invisible elements during animation\n */\nexport class WMSLayer<ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_WMSLayerProps>\n> {\n static layerName = 'WMSLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n state!: {\n imageSource: ImageSource;\n image: ImageType;\n bounds: [number, number, number, number];\n lastRequestParameters: {\n bbox: [number, number, number, number];\n layers: string[];\n srs: 'EPSG:4326' | 'EPSG:3857';\n width: number;\n height: number;\n };\n lastRequestId: number;\n\n _nextRequestId: number;\n _timeoutId: any;\n };\n\n /** Lets deck.gl know that we want viewport change events */\n override shouldUpdateState(): boolean {\n return true;\n }\n\n override initializeState(): void {\n // intentionally empty, initialization is done in updateState\n this.state._nextRequestId = 0;\n this.state.lastRequestId = -1;\n }\n\n override updateState({changeFlags, props, oldProps}: UpdateParameters<this>): void {\n const {viewport} = this.context;\n\n // Check if data source has changed\n if (changeFlags.dataChanged || props.serviceType !== oldProps.serviceType) {\n this.state.imageSource = this._createImageSource(props);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadMetadata();\n this.debounce(() => this.loadImage(viewport, 'image source changed'), 0);\n } else if (!deepEqual(props.layers, oldProps.layers, 1)) {\n this.debounce(() => this.loadImage(viewport, 'layers changed'), 0);\n } else if (changeFlags.viewportChanged) {\n this.debounce(() => this.loadImage(viewport, 'viewport changed'));\n }\n }\n\n override finalizeState(): void {\n // TODO - we could cancel outstanding requests\n }\n\n override renderLayers(): Layer {\n // TODO - which bitmap layer is rendered should depend on the current viewport\n // Currently Studio only uses one viewport\n const {bounds, image, lastRequestParameters} = this.state;\n\n return (\n image &&\n new BitmapLayer({\n ...this.getSubLayerProps({id: 'bitmap'}),\n _imageCoordinateSystem:\n lastRequestParameters.srs === 'EPSG:4326'\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN,\n bounds,\n image\n })\n );\n }\n\n async getFeatureInfoText(x: number, y: number): Promise<string | null> {\n const {lastRequestParameters} = this.state;\n if (lastRequestParameters) {\n // @ts-expect-error Undocumented method\n const featureInfo = await this.state.imageSource.getFeatureInfoText?.({\n ...lastRequestParameters,\n query_layers: lastRequestParameters.layers,\n x,\n y,\n info_format: 'application/vnd.ogc.gml'\n });\n return featureInfo;\n }\n return '';\n }\n\n _createImageSource(props: WMSLayerProps): ImageSource {\n if (props.data instanceof ImageSource) {\n return props.data;\n }\n\n if (typeof props.data === 'string') {\n return createImageSource({\n url: props.data,\n loadOptions: props.loadOptions,\n type: props.serviceType\n });\n }\n\n throw new Error('invalid image source in props.data');\n }\n\n /** Run a getMetadata on the image service */\n async _loadMetadata(): Promise<void> {\n const {imageSource} = this.state;\n try {\n const metadata = await imageSource.getMetadata();\n\n // If a request takes a long time, it may no longer be expected\n if (this.state.imageSource === imageSource) {\n this.getCurrentLayer()?.props.onMetadataLoad(metadata);\n }\n } catch (error) {\n this.getCurrentLayer()?.props.onMetadataLoadError(error as Error);\n }\n }\n\n /** Load an image */\n async loadImage(viewport: Viewport, reason: string): Promise<void> {\n const {layers, serviceType} = this.props;\n\n // TODO - move to ImageSource?\n if (serviceType === 'wms' && layers.length === 0) {\n return;\n }\n\n const bounds = viewport.getBounds();\n const {width, height} = viewport;\n const requestId = this.getRequestId();\n let {srs} = this.props;\n if (srs === 'auto') {\n // BitmapLayer only supports LNGLAT or CARTESIAN (Web-Mercator)\n srs = viewport.resolution ? 'EPSG:4326' : 'EPSG:3857';\n }\n const requestParams = {\n width,\n height,\n bbox: bounds,\n layers,\n srs\n };\n if (srs === 'EPSG:3857') {\n const [minX, minY] = projConverter.project([bounds[0], bounds[1]]);\n const [maxX, maxY] = projConverter.project([bounds[2], bounds[3]]);\n requestParams.bbox = [minX, minY, maxX, maxY];\n }\n\n try {\n this.props.onImageLoadStart(requestId);\n\n const image = await this.state.imageSource.getImage(requestParams);\n\n // If a request takes a long time, later requests may have already loaded.\n if (this.state.lastRequestId < requestId) {\n this.getCurrentLayer()?.props.onImageLoad(requestId);\n // Not type safe...\n this.setState({\n image,\n bounds,\n lastRequestParameters: requestParams,\n lastRequestId: requestId\n });\n }\n } catch (error) {\n this.raiseError(error as Error, 'Load image');\n this.getCurrentLayer()?.props.onImageLoadError(requestId, error as Error);\n }\n }\n\n // HELPERS\n\n /** Global counter for issuing unique request ids */\n private getRequestId(): number {\n return this.state._nextRequestId++;\n }\n\n /** Runs an action in the future, cancels it if the new action is issued before it executes */\n private debounce(fn: Function, ms = 500): void {\n clearTimeout(this.state._timeoutId);\n this.state._timeoutId = setTimeout(() => fn(), ms);\n }\n}\n"],"file":"wms-layer.js"}