@deck.gl/geo-layers 8.6.0 → 8.6.4

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 (40) hide show
  1. package/dist/dist.dev.js +15 -15
  2. package/dist/es5/great-circle-layer/great-circle-layer.js +1 -26
  3. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  4. package/dist/es5/h3-layers/h3-cluster-layer.js +87 -149
  5. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  6. package/dist/es5/h3-layers/h3-hexagon-layer.js +226 -321
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +9 -9
  9. package/dist/es5/mesh-layer/mesh-layer.js +125 -151
  10. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  11. package/dist/es5/mvt-layer/coordinate-transform.js +19 -45
  12. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  13. package/dist/es5/mvt-layer/find-index-binary.js +26 -45
  14. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  15. package/dist/es5/mvt-layer/mvt-layer.js +282 -374
  16. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/es5/s2-layer/s2-geometry.js +32 -43
  18. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-layer.js +69 -104
  20. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-utils.js +28 -27
  22. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  23. package/dist/es5/terrain-layer/terrain-layer.js +208 -254
  24. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  25. package/dist/es5/tile-3d-layer/tile-3d-layer.js +329 -382
  26. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  27. package/dist/es5/tile-layer/tile-2d-header.js +119 -183
  28. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-traversal.js +115 -178
  30. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-layer.js +214 -258
  32. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  33. package/dist/es5/tile-layer/tileset-2d.js +290 -435
  34. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  35. package/dist/es5/tile-layer/utils.js +61 -110
  36. package/dist/es5/tile-layer/utils.js.map +1 -1
  37. package/dist/es5/trips-layer/trips-layer.js +44 -81
  38. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  39. package/dist.min.js +1 -1
  40. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","props","oldProps","dataChanged","updateTriggers","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","resolution","hasPentagon","hasMultipleRes","data","iterable","index","hexResolution","edgeLengthKM","UNITS","km","state","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","projectFlat","centerX","centerY","map","p","worldPosition","_renderPolygonLayer","_renderColumnLayer","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","SubLayerClass","getSubLayerClass","forwardProps","_getForwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","ColumnLayer","getPosition","diskResolution","radius","bind","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n UNITS\n} from 'h3-js';\nimport {lerp} from 'math.gl';\nimport {CompositeLayer, createIterable} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1, flatten) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n if (flatten) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n }\n\n return vertices;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n// not supported\ndelete defaultProps.getLineDashArray;\n\n/**\n * A subclass of HexagonLayer that uses H3 hexagonIds in data objects\n * rather than centroid lat/longs. The shape of each hexagon is determined\n * based on a single \"center\" hexagon, which can be selected by passing in\n * a center lat/lon pair. If not provided, the map center will be used.\n *\n * Also sets the `hexagonId` field in the onHover/onClick callback's info\n * objects. Since this is calculated using math, hexagonId will be present\n * even when no corresponding hexagon is in the data set. You can check\n * index !== -1 to see if picking matches an actual object.\n */\nexport default class H3HexagonLayer extends CompositeLayer {\n shouldUpdateState({changeFlags}) {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps(props);\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _calculateH3DataProps(props) {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, UNITS.km) : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n _shouldUseHighPrecision() {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n viewport.resolution || hasMultipleRes || hasPentagon || (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return h3ToPolygon(hexagonId, coverage, true);\n }\n }\n );\n }\n\n _renderColumnLayer() {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n\nH3HexagonLayer.defaultProps = defaultProps;\nH3HexagonLayer.layerName = 'H3HexagonLayer';\n"],"file":"h3-hexagon-layer.js"}
1
+ {"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.js"],"names":["UPDATE_THRESHOLD_KM","normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flatten","positions","Float64Array","mergeTriggers","trigger","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","getLineDashArray","H3HexagonLayer","CompositeLayer","shouldUpdateState","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","updateState","props","oldProps","dataChanged","updateTriggers","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","resolution","hasPentagon","hasMultipleRes","iterable","data","index","hexResolution","edgeLengthKM","UNITS","km","state","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","centerLat","centerLng","centerX","centerY","projectFlat","map","p","worldPosition","renderLayers","_renderPolygonLayer","_renderColumnLayer","_getForwardProps","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","SubLayerClass","getSubLayerClass","forwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","ColumnLayer","getPosition","diskResolution","radius","bind","layerName"],"mappings":"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","sourcesContent":["import {\n h3ToGeoBoundary,\n h3GetResolution,\n h3ToGeo,\n geoToH3,\n h3IsPentagon,\n h3Distance,\n edgeLength,\n UNITS\n} from 'h3-js';\nimport {lerp} from 'math.gl';\nimport {CompositeLayer, createIterable} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer} from '@deck.gl/layers';\n\n// There is a cost to updating the instanced geometries when using highPrecision: false\n// This constant defines the distance between two hexagons that leads to \"significant\n// distortion.\" Smaller value makes the column layer more sensitive to viewport change.\nconst UPDATE_THRESHOLD_KM = 10;\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices, refLng) {\n refLng = refLng === undefined ? vertices[0][0] : refLng;\n for (const pt of vertices) {\n const deltaLng = pt[0] - refLng;\n if (deltaLng > 180) {\n pt[0] -= 360;\n } else if (deltaLng < -180) {\n pt[0] += 360;\n }\n }\n}\n\n// scale polygon vertices w.r.t center (hexId)\nexport function scalePolygon(hexId, vertices, factor) {\n const [lat, lng] = h3ToGeo(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),\n // if so skip scaling the last vertex\n const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;\n for (let i = 0; i < vertexCount; i++) {\n vertices[i][0] = lerp(lng, vertices[i][0], factor);\n vertices[i][1] = lerp(lat, vertices[i][1], factor);\n }\n}\n\nfunction getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = h3ToGeo(hexagonId);\n return [lng, lat];\n}\n\nfunction h3ToPolygon(hexId, coverage = 1, flatten) {\n const vertices = h3ToGeoBoundary(hexId, true);\n\n if (coverage !== 1) {\n // scale and normalize vertices w.r.t to center\n scalePolygon(hexId, vertices, coverage);\n } else {\n // normalize w.r.t to start vertex\n normalizeLongitudes(vertices);\n }\n\n if (flatten) {\n const positions = new Float64Array(vertices.length * 2);\n let i = 0;\n for (const pt of vertices) {\n positions[i++] = pt[0];\n positions[i++] = pt[1];\n }\n return positions;\n }\n\n return vertices;\n}\n\nfunction mergeTriggers(getHexagon, coverage) {\n let trigger;\n if (getHexagon === undefined || getHexagon === null) {\n trigger = coverage;\n } else if (typeof getHexagon === 'object') {\n trigger = {...getHexagon, coverage};\n } else {\n trigger = {getHexagon, coverage};\n }\n return trigger;\n}\n\nconst defaultProps = {\n ...PolygonLayer.defaultProps,\n highPrecision: 'auto',\n coverage: {type: 'number', min: 0, max: 1, value: 1},\n centerHexagon: null,\n getHexagon: {type: 'accessor', value: x => x.hexagon},\n extruded: true\n};\n\n// not supported\ndelete defaultProps.getLineDashArray;\n\n/**\n * A subclass of HexagonLayer that uses H3 hexagonIds in data objects\n * rather than centroid lat/longs. The shape of each hexagon is determined\n * based on a single \"center\" hexagon, which can be selected by passing in\n * a center lat/lon pair. If not provided, the map center will be used.\n *\n * Also sets the `hexagonId` field in the onHover/onClick callback's info\n * objects. Since this is calculated using math, hexagonId will be present\n * even when no corresponding hexagon is in the data set. You can check\n * index !== -1 to see if picking matches an actual object.\n */\nexport default class H3HexagonLayer extends CompositeLayer {\n shouldUpdateState({changeFlags}) {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}) {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggers && changeFlags.updateTriggers.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps(props);\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport);\n }\n\n _calculateH3DataProps(props) {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = h3GetResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (h3IsPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? edgeLength(resolution, UNITS.km) : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n _shouldUseHighPrecision() {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n viewport.resolution || hasMultipleRes || hasPentagon || (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n _updateVertices(viewport) {\n if (this._shouldUseHighPrecision()) {\n return;\n }\n const {resolution, edgeLengthKM, centerHex} = this.state;\n if (resolution < 0) {\n return;\n }\n const hex =\n this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n const distance = h3Distance(centerHex, hex);\n // h3Distance returns a negative number if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = h3ToGeo(hex);\n\n const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);\n vertices = vertices.map(p => {\n const worldPosition = viewport.projectFlat(p);\n return [\n (worldPosition[0] - centerX) / unitsPerMeter[0],\n (worldPosition[1] - centerY) / unitsPerMeter[1]\n ];\n });\n\n this.setState({centerHex: hex, vertices});\n }\n\n renderLayers() {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n _getForwardProps() {\n const {\n elevationScale,\n material,\n coverage,\n extruded,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n getFillColor,\n getElevation,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers\n } = this.props;\n\n return {\n elevationScale,\n extruded,\n coverage,\n wireframe,\n stroked,\n filled,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n material,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth,\n transitions,\n updateTriggers: {\n getFillColor: updateTriggers.getFillColor,\n getElevation: updateTriggers.getElevation,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n };\n }\n\n _renderPolygonLayer() {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\n\n forwardProps.updateTriggers.getPolygon = mergeTriggers(updateTriggers.getHexagon, coverage);\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell-hifi',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n _normalize: false,\n _windingOrder: 'CCW',\n positionFormat: 'XY',\n getPolygon: (object, objectInfo) => {\n const hexagonId = getHexagon(object, objectInfo);\n return h3ToPolygon(hexagonId, coverage, true);\n }\n }\n );\n }\n\n _renderColumnLayer() {\n const {data, getHexagon, updateTriggers} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell', ColumnLayer);\n const forwardProps = this._getForwardProps();\n forwardProps.updateTriggers.getPosition = updateTriggers.getHexagon;\n\n return new SubLayerClass(\n forwardProps,\n this.getSubLayerProps({\n id: 'hexagon-cell',\n updateTriggers: forwardProps.updateTriggers\n }),\n {\n data,\n diskResolution: 6, // generate an extruded hexagon as the base geometry\n radius: 1,\n vertices: this.state.vertices,\n getPosition: getHexagonCentroid.bind(null, getHexagon)\n }\n );\n }\n}\n\nH3HexagonLayer.defaultProps = defaultProps;\nH3HexagonLayer.layerName = 'H3HexagonLayer';\n"],"file":"h3-hexagon-layer.js"}
package/dist/es5/index.js CHANGED
@@ -7,55 +7,55 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  Object.defineProperty(exports, "GreatCircleLayer", {
9
9
  enumerable: true,
10
- get: function get() {
10
+ get: function () {
11
11
  return _greatCircleLayer.default;
12
12
  }
13
13
  });
14
14
  Object.defineProperty(exports, "S2Layer", {
15
15
  enumerable: true,
16
- get: function get() {
16
+ get: function () {
17
17
  return _s2Layer.default;
18
18
  }
19
19
  });
20
20
  Object.defineProperty(exports, "TileLayer", {
21
21
  enumerable: true,
22
- get: function get() {
22
+ get: function () {
23
23
  return _tileLayer.default;
24
24
  }
25
25
  });
26
26
  Object.defineProperty(exports, "TripsLayer", {
27
27
  enumerable: true,
28
- get: function get() {
28
+ get: function () {
29
29
  return _tripsLayer.default;
30
30
  }
31
31
  });
32
32
  Object.defineProperty(exports, "H3ClusterLayer", {
33
33
  enumerable: true,
34
- get: function get() {
34
+ get: function () {
35
35
  return _h3ClusterLayer.default;
36
36
  }
37
37
  });
38
38
  Object.defineProperty(exports, "H3HexagonLayer", {
39
39
  enumerable: true,
40
- get: function get() {
40
+ get: function () {
41
41
  return _h3HexagonLayer.default;
42
42
  }
43
43
  });
44
44
  Object.defineProperty(exports, "Tile3DLayer", {
45
45
  enumerable: true,
46
- get: function get() {
46
+ get: function () {
47
47
  return _tile3dLayer.default;
48
48
  }
49
49
  });
50
50
  Object.defineProperty(exports, "TerrainLayer", {
51
51
  enumerable: true,
52
- get: function get() {
52
+ get: function () {
53
53
  return _terrainLayer.default;
54
54
  }
55
55
  });
56
56
  Object.defineProperty(exports, "MVTLayer", {
57
57
  enumerable: true,
58
- get: function get() {
58
+ get: function () {
59
59
  return _mvtLayer.default;
60
60
  }
61
61
  });
@@ -7,20 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
10
  var _experimental = require("@luma.gl/experimental");
25
11
 
26
12
  var _core = require("@luma.gl/core");
@@ -31,16 +17,8 @@ var _meshLayerVertex = _interopRequireDefault(require("./mesh-layer-vertex.glsl"
31
17
 
32
18
  var _meshLayerFragment = _interopRequireDefault(require("./mesh-layer-fragment.glsl"));
33
19
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
35
-
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
37
-
38
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
39
-
40
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
41
-
42
20
  function validateGeometryAttributes(attributes) {
43
- var hasColorAttribute = attributes.COLOR_0 || attributes.colors;
21
+ const hasColorAttribute = attributes.COLOR_0 || attributes.colors;
44
22
 
45
23
  if (!hasColorAttribute) {
46
24
  attributes.colors = {
@@ -57,7 +35,7 @@ function validateGeometryAttributes(attributes) {
57
35
  }
58
36
  }
59
37
 
60
- var defaultProps = {
38
+ const defaultProps = {
61
39
  pbrMaterial: {
62
40
  type: 'object',
63
41
  value: null
@@ -69,142 +47,138 @@ var defaultProps = {
69
47
  }
70
48
  };
71
49
 
72
- var _MeshLayer = function (_SimpleMeshLayer) {
73
- (0, _inherits2.default)(_MeshLayer, _SimpleMeshLayer);
74
-
75
- var _super = _createSuper(_MeshLayer);
76
-
77
- function _MeshLayer() {
78
- (0, _classCallCheck2.default)(this, _MeshLayer);
79
- return _super.apply(this, arguments);
50
+ class _MeshLayer extends _meshLayers.SimpleMeshLayer {
51
+ getShaders() {
52
+ const shaders = super.getShaders();
53
+ const modules = shaders.modules;
54
+ modules.push(_core.pbr);
55
+ return { ...shaders,
56
+ vs: _meshLayerVertex.default,
57
+ fs: _meshLayerFragment.default
58
+ };
80
59
  }
81
60
 
82
- (0, _createClass2.default)(_MeshLayer, [{
83
- key: "getShaders",
84
- value: function getShaders() {
85
- var shaders = (0, _get2.default)((0, _getPrototypeOf2.default)(_MeshLayer.prototype), "getShaders", this).call(this);
86
- var modules = shaders.modules;
87
- modules.push(_core.pbr);
88
- return _objectSpread(_objectSpread({}, shaders), {}, {
89
- vs: _meshLayerVertex.default,
90
- fs: _meshLayerFragment.default
61
+ initializeState() {
62
+ const {
63
+ featureIds
64
+ } = this.props;
65
+ super.initializeState();
66
+
67
+ if (featureIds) {
68
+ this.state.attributeManager.add({
69
+ featureIdsPickingColors: {
70
+ type: 5121,
71
+ size: 3,
72
+ noAlloc: true,
73
+ update: this.calculateFeatureIdsPickingColors
74
+ }
91
75
  });
92
76
  }
93
- }, {
94
- key: "initializeState",
95
- value: function initializeState() {
96
- var featureIds = this.props.featureIds;
97
- (0, _get2.default)((0, _getPrototypeOf2.default)(_MeshLayer.prototype), "initializeState", this).call(this);
98
-
99
- if (featureIds) {
100
- this.state.attributeManager.add({
101
- featureIdsPickingColors: {
102
- type: 5121,
103
- size: 3,
104
- noAlloc: true,
105
- update: this.calculateFeatureIdsPickingColors
106
- }
107
- });
108
- }
109
- }
110
- }, {
111
- key: "updateState",
112
- value: function updateState(_ref) {
113
- var props = _ref.props,
114
- oldProps = _ref.oldProps,
115
- changeFlags = _ref.changeFlags;
116
- (0, _get2.default)((0, _getPrototypeOf2.default)(_MeshLayer.prototype), "updateState", this).call(this, {
117
- props: props,
118
- oldProps: oldProps,
119
- changeFlags: changeFlags
120
- });
77
+ }
121
78
 
122
- if (props.pbrMaterial !== oldProps.pbrMaterial) {
123
- this.updatePbrMaterialUniforms(props.pbrMaterial);
124
- }
125
- }
126
- }, {
127
- key: "draw",
128
- value: function draw(opts) {
129
- var featureIds = this.props.featureIds;
130
-
131
- if (!this.state.model) {
132
- return;
133
- }
134
-
135
- this.state.model.setUniforms({
136
- u_Camera: this.state.model.getUniforms().project_uCameraPosition,
137
- u_pickFeatureIds: Boolean(featureIds)
138
- });
139
- (0, _get2.default)((0, _getPrototypeOf2.default)(_MeshLayer.prototype), "draw", this).call(this, opts);
79
+ updateState({
80
+ props,
81
+ oldProps,
82
+ changeFlags
83
+ }) {
84
+ super.updateState({
85
+ props,
86
+ oldProps,
87
+ changeFlags
88
+ });
89
+
90
+ if (props.pbrMaterial !== oldProps.pbrMaterial) {
91
+ this.updatePbrMaterialUniforms(props.pbrMaterial);
140
92
  }
141
- }, {
142
- key: "getModel",
143
- value: function getModel(mesh) {
144
- var _this$props = this.props,
145
- id = _this$props.id,
146
- pbrMaterial = _this$props.pbrMaterial;
147
- var materialParser = this.parseMaterial(pbrMaterial, mesh);
148
- var shaders = this.getShaders();
149
- validateGeometryAttributes(mesh.attributes);
150
- var model = new _core.Model(this.context.gl, _objectSpread(_objectSpread({}, this.getShaders()), {}, {
151
- id: id,
152
- geometry: mesh,
153
- defines: _objectSpread(_objectSpread({}, shaders.defines), materialParser === null || materialParser === void 0 ? void 0 : materialParser.defines),
154
- parameters: materialParser === null || materialParser === void 0 ? void 0 : materialParser.parameters,
155
- isInstanced: true
156
- }));
157
- return model;
158
- }
159
- }, {
160
- key: "updatePbrMaterialUniforms",
161
- value: function updatePbrMaterialUniforms(pbrMaterial) {
162
- var model = this.state.model;
163
-
164
- if (model) {
165
- var mesh = this.props.mesh;
166
- var materialParser = this.parseMaterial(pbrMaterial, mesh);
167
- model.setUniforms(materialParser.uniforms);
168
- }
93
+ }
94
+
95
+ draw(opts) {
96
+ const {
97
+ featureIds
98
+ } = this.props;
99
+
100
+ if (!this.state.model) {
101
+ return;
169
102
  }
170
- }, {
171
- key: "parseMaterial",
172
- value: function parseMaterial(pbrMaterial, mesh) {
173
- var unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
174
- var materialParser = new _experimental.GLTFMaterialParser(this.context.gl, {
175
- attributes: {
176
- NORMAL: mesh.attributes.normals,
177
- TEXCOORD_0: mesh.attributes.texCoords
178
- },
179
- material: _objectSpread({
180
- unlit: unlit
181
- }, pbrMaterial),
182
- pbrDebug: false,
183
- imageBasedLightingEnvironment: null,
184
- lights: true,
185
- useTangents: false
186
- });
187
- return materialParser;
103
+
104
+ this.state.model.setUniforms({
105
+ u_Camera: this.state.model.getUniforms().project_uCameraPosition,
106
+ u_pickFeatureIds: Boolean(featureIds)
107
+ });
108
+ super.draw(opts);
109
+ }
110
+
111
+ getModel(mesh) {
112
+ const {
113
+ id,
114
+ pbrMaterial
115
+ } = this.props;
116
+ const materialParser = this.parseMaterial(pbrMaterial, mesh);
117
+ const shaders = this.getShaders();
118
+ validateGeometryAttributes(mesh.attributes);
119
+ const model = new _core.Model(this.context.gl, { ...this.getShaders(),
120
+ id,
121
+ geometry: mesh,
122
+ defines: { ...shaders.defines,
123
+ ...(materialParser === null || materialParser === void 0 ? void 0 : materialParser.defines)
124
+ },
125
+ parameters: materialParser === null || materialParser === void 0 ? void 0 : materialParser.parameters,
126
+ isInstanced: true
127
+ });
128
+ return model;
129
+ }
130
+
131
+ updatePbrMaterialUniforms(pbrMaterial) {
132
+ const {
133
+ model
134
+ } = this.state;
135
+
136
+ if (model) {
137
+ const {
138
+ mesh
139
+ } = this.props;
140
+ const materialParser = this.parseMaterial(pbrMaterial, mesh);
141
+ model.setUniforms(materialParser.uniforms);
188
142
  }
189
- }, {
190
- key: "calculateFeatureIdsPickingColors",
191
- value: function calculateFeatureIdsPickingColors(attribute) {
192
- var featureIds = this.props.featureIds;
193
- var value = new Uint8ClampedArray(featureIds.length * attribute.size);
194
- var pickingColor = [];
195
-
196
- for (var index = 0; index < featureIds.length; index++) {
197
- this.encodePickingColor(featureIds[index], pickingColor);
198
- value[index * 3] = pickingColor[0];
199
- value[index * 3 + 1] = pickingColor[1];
200
- value[index * 3 + 2] = pickingColor[2];
201
- }
202
-
203
- attribute.value = value;
143
+ }
144
+
145
+ parseMaterial(pbrMaterial, mesh) {
146
+ const unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
147
+ const materialParser = new _experimental.GLTFMaterialParser(this.context.gl, {
148
+ attributes: {
149
+ NORMAL: mesh.attributes.normals,
150
+ TEXCOORD_0: mesh.attributes.texCoords
151
+ },
152
+ material: {
153
+ unlit,
154
+ ...pbrMaterial
155
+ },
156
+ pbrDebug: false,
157
+ imageBasedLightingEnvironment: null,
158
+ lights: true,
159
+ useTangents: false
160
+ });
161
+ return materialParser;
162
+ }
163
+
164
+ calculateFeatureIdsPickingColors(attribute) {
165
+ const {
166
+ featureIds
167
+ } = this.props;
168
+ const value = new Uint8ClampedArray(featureIds.length * attribute.size);
169
+ const pickingColor = [];
170
+
171
+ for (let index = 0; index < featureIds.length; index++) {
172
+ this.encodePickingColor(featureIds[index], pickingColor);
173
+ value[index * 3] = pickingColor[0];
174
+ value[index * 3 + 1] = pickingColor[1];
175
+ value[index * 3 + 2] = pickingColor[2];
204
176
  }
205
- }]);
206
- return _MeshLayer;
207
- }(_meshLayers.SimpleMeshLayer);
177
+
178
+ attribute.value = value;
179
+ }
180
+
181
+ }
208
182
 
209
183
  exports.default = _MeshLayer;
210
184
  _MeshLayer.layerName = '_MeshLayer';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mesh-layer/mesh-layer.js"],"names":["validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","uvRegions","defaultProps","pbrMaterial","type","featureIds","optional","_MeshLayer","shaders","modules","push","pbr","vs","fs","props","state","attributeManager","add","featureIdsPickingColors","size","noAlloc","update","calculateFeatureIdsPickingColors","oldProps","changeFlags","updatePbrMaterialUniforms","opts","model","setUniforms","u_Camera","getUniforms","project_uCameraPosition","u_pickFeatureIds","Boolean","mesh","id","materialParser","parseMaterial","getShaders","Model","context","gl","geometry","defines","parameters","isInstanced","uniforms","unlit","pbrMetallicRoughness","baseColorTexture","GLTFMaterialParser","NORMAL","normals","TEXCOORD_0","texCoords","material","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","attribute","Uint8ClampedArray","length","pickingColor","index","encodePickingColor","SimpleMeshLayer","layerName"],"mappings":"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","sourcesContent":["import {GLTFMaterialParser} from '@luma.gl/experimental';\nimport {Model, pbr} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nfunction validateGeometryAttributes(attributes) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};\n }\n if (!attributes.uvRegions) {\n attributes.uvRegions = {constant: true, value: new Float32Array([0, 0, 1, 1])};\n }\n}\n\nconst defaultProps = {\n // PBR material object. _lighting must be pbr for this to work\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\nexport default class _MeshLayer extends SimpleMeshLayer {\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n if (featureIds) {\n this.state.attributeManager.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState({props, oldProps, changeFlags}) {\n super.updateState({props, oldProps, changeFlags});\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n u_Camera: this.state.model.getUniforms().project_uCameraPosition,\n u_pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n getModel(mesh) {\n const {id, pbrMaterial} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.gl, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n defines: {...shaders.defines, ...materialParser?.defines},\n parameters: materialParser?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n model.setUniforms(materialParser.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh) {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n const materialParser = new GLTFMaterialParser(this.context.gl, {\n attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n material: {unlit, ...pbrMaterial},\n pbrDebug: false,\n imageBasedLightingEnvironment: null,\n lights: true,\n useTangents: false\n });\n return materialParser;\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n const {featureIds} = this.props;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n}\n\n_MeshLayer.layerName = '_MeshLayer';\n_MeshLayer.defaultProps = defaultProps;\n"],"file":"mesh-layer.js"}
1
+ {"version":3,"sources":["../../../src/mesh-layer/mesh-layer.js"],"names":["validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","uvRegions","defaultProps","pbrMaterial","type","featureIds","optional","_MeshLayer","SimpleMeshLayer","getShaders","shaders","modules","push","pbr","vs","fs","initializeState","props","state","attributeManager","add","featureIdsPickingColors","size","noAlloc","update","calculateFeatureIdsPickingColors","updateState","oldProps","changeFlags","updatePbrMaterialUniforms","draw","opts","model","setUniforms","u_Camera","getUniforms","project_uCameraPosition","u_pickFeatureIds","Boolean","getModel","mesh","id","materialParser","parseMaterial","Model","context","gl","geometry","defines","parameters","isInstanced","uniforms","unlit","pbrMetallicRoughness","baseColorTexture","GLTFMaterialParser","NORMAL","normals","TEXCOORD_0","texCoords","material","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","attribute","Uint8ClampedArray","length","pickingColor","index","encodePickingColor","layerName"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AAEA,SAASA,0BAAT,CAAoCC,UAApC,EAAgD;AAC9C,QAAMC,iBAAiB,GAAGD,UAAU,CAACE,OAAX,IAAsBF,UAAU,CAACG,MAA3D;;AACA,MAAI,CAACF,iBAAL,EAAwB;AACtBD,IAAAA,UAAU,CAACG,MAAX,GAAoB;AAACC,MAAAA,QAAQ,EAAE,IAAX;AAAiBC,MAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAjB;AAAxB,KAApB;AACD;;AACD,MAAI,CAACN,UAAU,CAACO,SAAhB,EAA2B;AACzBP,IAAAA,UAAU,CAACO,SAAX,GAAuB;AAACH,MAAAA,QAAQ,EAAE,IAAX;AAAiBC,MAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAjB;AAAxB,KAAvB;AACD;AACF;;AAED,MAAME,YAAY,GAAG;AAEnBC,EAAAA,WAAW,EAAE;AAACC,IAAAA,IAAI,EAAE,QAAP;AAAiBL,IAAAA,KAAK,EAAE;AAAxB,GAFM;AAGnBM,EAAAA,UAAU,EAAE;AAACD,IAAAA,IAAI,EAAE,OAAP;AAAgBL,IAAAA,KAAK,EAAE,IAAvB;AAA6BO,IAAAA,QAAQ,EAAE;AAAvC;AAHO,CAArB;;AAMe,MAAMC,UAAN,SAAyBC,2BAAzB,CAAyC;AACtDC,EAAAA,UAAU,GAAG;AACX,UAAMC,OAAO,GAAG,MAAMD,UAAN,EAAhB;AACA,UAAME,OAAO,GAAGD,OAAO,CAACC,OAAxB;AACAA,IAAAA,OAAO,CAACC,IAAR,CAAaC,SAAb;AACA,WAAO,EAAC,GAAGH,OAAJ;AAAaI,MAAAA,EAAE,EAAFA,wBAAb;AAAiBC,MAAAA,EAAE,EAAFA;AAAjB,KAAP;AACD;;AAEDC,EAAAA,eAAe,GAAG;AAChB,UAAM;AAACX,MAAAA;AAAD,QAAe,KAAKY,KAA1B;AACA,UAAMD,eAAN;;AAEA,QAAIX,UAAJ,EAAgB;AACd,WAAKa,KAAL,CAAWC,gBAAX,CAA4BC,GAA5B,CAAgC;AAC9BC,QAAAA,uBAAuB,EAAE;AACvBjB,UAAAA,IAAI,MADmB;AAEvBkB,UAAAA,IAAI,EAAE,CAFiB;AAGvBC,UAAAA,OAAO,EAAE,IAHc;AAIvBC,UAAAA,MAAM,EAAE,KAAKC;AAJU;AADK,OAAhC;AAQD;AACF;;AAEDC,EAAAA,WAAW,CAAC;AAACT,IAAAA,KAAD;AAAQU,IAAAA,QAAR;AAAkBC,IAAAA;AAAlB,GAAD,EAAiC;AAC1C,UAAMF,WAAN,CAAkB;AAACT,MAAAA,KAAD;AAAQU,MAAAA,QAAR;AAAkBC,MAAAA;AAAlB,KAAlB;;AACA,QAAIX,KAAK,CAACd,WAAN,KAAsBwB,QAAQ,CAACxB,WAAnC,EAAgD;AAC9C,WAAK0B,yBAAL,CAA+BZ,KAAK,CAACd,WAArC;AACD;AACF;;AAED2B,EAAAA,IAAI,CAACC,IAAD,EAAO;AACT,UAAM;AAAC1B,MAAAA;AAAD,QAAe,KAAKY,KAA1B;;AACA,QAAI,CAAC,KAAKC,KAAL,CAAWc,KAAhB,EAAuB;AACrB;AACD;;AACD,SAAKd,KAAL,CAAWc,KAAX,CAAiBC,WAAjB,CAA6B;AAE3BC,MAAAA,QAAQ,EAAE,KAAKhB,KAAL,CAAWc,KAAX,CAAiBG,WAAjB,GAA+BC,uBAFd;AAG3BC,MAAAA,gBAAgB,EAAEC,OAAO,CAACjC,UAAD;AAHE,KAA7B;AAMA,UAAMyB,IAAN,CAAWC,IAAX;AACD;;AAEDQ,EAAAA,QAAQ,CAACC,IAAD,EAAO;AACb,UAAM;AAACC,MAAAA,EAAD;AAAKtC,MAAAA;AAAL,QAAoB,KAAKc,KAA/B;AACA,UAAMyB,cAAc,GAAG,KAAKC,aAAL,CAAmBxC,WAAnB,EAAgCqC,IAAhC,CAAvB;AACA,UAAM9B,OAAO,GAAG,KAAKD,UAAL,EAAhB;AACAhB,IAAAA,0BAA0B,CAAC+C,IAAI,CAAC9C,UAAN,CAA1B;AACA,UAAMsC,KAAK,GAAG,IAAIY,WAAJ,CAAU,KAAKC,OAAL,CAAaC,EAAvB,EAA2B,EACvC,GAAG,KAAKrC,UAAL,EADoC;AAEvCgC,MAAAA,EAFuC;AAGvCM,MAAAA,QAAQ,EAAEP,IAH6B;AAIvCQ,MAAAA,OAAO,EAAE,EAAC,GAAGtC,OAAO,CAACsC,OAAZ;AAAqB,YAAGN,cAAH,aAAGA,cAAH,uBAAGA,cAAc,CAAEM,OAAnB;AAArB,OAJ8B;AAKvCC,MAAAA,UAAU,EAAEP,cAAF,aAAEA,cAAF,uBAAEA,cAAc,CAAEO,UALW;AAMvCC,MAAAA,WAAW,EAAE;AAN0B,KAA3B,CAAd;AASA,WAAOlB,KAAP;AACD;;AAEDH,EAAAA,yBAAyB,CAAC1B,WAAD,EAAc;AACrC,UAAM;AAAC6B,MAAAA;AAAD,QAAU,KAAKd,KAArB;;AACA,QAAIc,KAAJ,EAAW;AACT,YAAM;AAACQ,QAAAA;AAAD,UAAS,KAAKvB,KAApB;AACA,YAAMyB,cAAc,GAAG,KAAKC,aAAL,CAAmBxC,WAAnB,EAAgCqC,IAAhC,CAAvB;AACAR,MAAAA,KAAK,CAACC,WAAN,CAAkBS,cAAc,CAACS,QAAjC;AACD;AACF;;AAEDR,EAAAA,aAAa,CAACxC,WAAD,EAAcqC,IAAd,EAAoB;AAC/B,UAAMY,KAAK,GAAGd,OAAO,CACnBnC,WAAW,CAACkD,oBAAZ,IAAoClD,WAAW,CAACkD,oBAAZ,CAAiCC,gBADlD,CAArB;AAGA,UAAMZ,cAAc,GAAG,IAAIa,gCAAJ,CAAuB,KAAKV,OAAL,CAAaC,EAApC,EAAwC;AAC7DpD,MAAAA,UAAU,EAAE;AAAC8D,QAAAA,MAAM,EAAEhB,IAAI,CAAC9C,UAAL,CAAgB+D,OAAzB;AAAkCC,QAAAA,UAAU,EAAElB,IAAI,CAAC9C,UAAL,CAAgBiE;AAA9D,OADiD;AAE7DC,MAAAA,QAAQ,EAAE;AAACR,QAAAA,KAAD;AAAQ,WAAGjD;AAAX,OAFmD;AAG7D0D,MAAAA,QAAQ,EAAE,KAHmD;AAI7DC,MAAAA,6BAA6B,EAAE,IAJ8B;AAK7DC,MAAAA,MAAM,EAAE,IALqD;AAM7DC,MAAAA,WAAW,EAAE;AANgD,KAAxC,CAAvB;AAQA,WAAOtB,cAAP;AACD;;AAEDjB,EAAAA,gCAAgC,CAACwC,SAAD,EAAY;AAC1C,UAAM;AAAC5D,MAAAA;AAAD,QAAe,KAAKY,KAA1B;AACA,UAAMlB,KAAK,GAAG,IAAImE,iBAAJ,CAAsB7D,UAAU,CAAC8D,MAAX,GAAoBF,SAAS,CAAC3C,IAApD,CAAd;AAEA,UAAM8C,YAAY,GAAG,EAArB;;AACA,SAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGhE,UAAU,CAAC8D,MAAvC,EAA+CE,KAAK,EAApD,EAAwD;AACtD,WAAKC,kBAAL,CAAwBjE,UAAU,CAACgE,KAAD,CAAlC,EAA2CD,YAA3C;AAEArE,MAAAA,KAAK,CAACsE,KAAK,GAAG,CAAT,CAAL,GAAmBD,YAAY,CAAC,CAAD,CAA/B;AACArE,MAAAA,KAAK,CAACsE,KAAK,GAAG,CAAR,GAAY,CAAb,CAAL,GAAuBD,YAAY,CAAC,CAAD,CAAnC;AACArE,MAAAA,KAAK,CAACsE,KAAK,GAAG,CAAR,GAAY,CAAb,CAAL,GAAuBD,YAAY,CAAC,CAAD,CAAnC;AACD;;AAEDH,IAAAA,SAAS,CAAClE,KAAV,GAAkBA,KAAlB;AACD;;AApGqD;;;AAuGxDQ,UAAU,CAACgE,SAAX,GAAuB,YAAvB;AACAhE,UAAU,CAACL,YAAX,GAA0BA,YAA1B","sourcesContent":["import {GLTFMaterialParser} from '@luma.gl/experimental';\nimport {Model, pbr} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport {SimpleMeshLayer} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nfunction validateGeometryAttributes(attributes) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};\n }\n if (!attributes.uvRegions) {\n attributes.uvRegions = {constant: true, value: new Float32Array([0, 0, 1, 1])};\n }\n}\n\nconst defaultProps = {\n // PBR material object. _lighting must be pbr for this to work\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\nexport default class _MeshLayer extends SimpleMeshLayer {\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n if (featureIds) {\n this.state.attributeManager.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState({props, oldProps, changeFlags}) {\n super.updateState({props, oldProps, changeFlags});\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n u_Camera: this.state.model.getUniforms().project_uCameraPosition,\n u_pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n getModel(mesh) {\n const {id, pbrMaterial} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.gl, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n defines: {...shaders.defines, ...materialParser?.defines},\n parameters: materialParser?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n model.setUniforms(materialParser.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh) {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n const materialParser = new GLTFMaterialParser(this.context.gl, {\n attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n material: {unlit, ...pbrMaterial},\n pbrDebug: false,\n imageBasedLightingEnvironment: null,\n lights: true,\n useTangents: false\n });\n return materialParser;\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n const {featureIds} = this.props;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n}\n\n_MeshLayer.layerName = '_MeshLayer';\n_MeshLayer.defaultProps = defaultProps;\n"],"file":"mesh-layer.js"}
@@ -1,49 +1,29 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.transform = transform;
9
7
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
-
14
8
  var _math = require("math.gl");
15
9
 
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
17
-
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
19
-
20
- var availableTransformations = {
21
- Point: Point,
22
- MultiPoint: MultiPoint,
23
- LineString: LineString,
24
- MultiLineString: MultiLineString,
25
- Polygon: Polygon,
26
- MultiPolygon: MultiPolygon
10
+ const availableTransformations = {
11
+ Point,
12
+ MultiPoint,
13
+ LineString,
14
+ MultiLineString,
15
+ Polygon,
16
+ MultiPolygon
27
17
  };
28
18
 
29
- function Point(_ref, _ref2, viewport) {
30
- var _ref3 = (0, _slicedToArray2.default)(_ref, 2),
31
- pointX = _ref3[0],
32
- pointY = _ref3[1];
33
-
34
- var _ref4 = (0, _slicedToArray2.default)(_ref2, 2),
35
- nw = _ref4[0],
36
- se = _ref4[1];
37
-
38
- var x = (0, _math.lerp)(nw[0], se[0], pointX);
39
- var y = (0, _math.lerp)(nw[1], se[1], pointY);
19
+ function Point([pointX, pointY], [nw, se], viewport) {
20
+ const x = (0, _math.lerp)(nw[0], se[0], pointX);
21
+ const y = (0, _math.lerp)(nw[1], se[1], pointY);
40
22
  return viewport.unprojectFlat([x, y]);
41
23
  }
42
24
 
43
25
  function getPoints(geometry, bbox, viewport) {
44
- return geometry.map(function (g) {
45
- return Point(g, bbox, viewport);
46
- });
26
+ return geometry.map(g => Point(g, bbox, viewport));
47
27
  }
48
28
 
49
29
  function MultiPoint(multiPoint, bbox, viewport) {
@@ -55,29 +35,23 @@ function LineString(line, bbox, viewport) {
55
35
  }
56
36
 
57
37
  function MultiLineString(multiLineString, bbox, viewport) {
58
- return multiLineString.map(function (lineString) {
59
- return LineString(lineString, bbox, viewport);
60
- });
38
+ return multiLineString.map(lineString => LineString(lineString, bbox, viewport));
61
39
  }
62
40
 
63
41
  function Polygon(polygon, bbox, viewport) {
64
- return polygon.map(function (polygonRing) {
65
- return getPoints(polygonRing, bbox, viewport);
66
- });
42
+ return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));
67
43
  }
68
44
 
69
45
  function MultiPolygon(multiPolygon, bbox, viewport) {
70
- return multiPolygon.map(function (polygon) {
71
- return Polygon(polygon, bbox, viewport);
72
- });
46
+ return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));
73
47
  }
74
48
 
75
49
  function transform(geometry, bbox, viewport) {
76
- var nw = viewport.projectFlat([bbox.west, bbox.north]);
77
- var se = viewport.projectFlat([bbox.east, bbox.south]);
78
- var projectedBbox = [nw, se];
79
- return _objectSpread(_objectSpread({}, geometry), {}, {
50
+ const nw = viewport.projectFlat([bbox.west, bbox.north]);
51
+ const se = viewport.projectFlat([bbox.east, bbox.south]);
52
+ const projectedBbox = [nw, se];
53
+ return { ...geometry,
80
54
  coordinates: availableTransformations[geometry.type](geometry.coordinates, projectedBbox, viewport)
81
- });
55
+ };
82
56
  }
83
57
  //# sourceMappingURL=coordinate-transform.js.map