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

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 +1449 -1449
  2. package/dist/es5/great-circle-layer/great-circle-layer.js +26 -1
  3. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  4. package/dist/es5/h3-layers/h3-cluster-layer.js +149 -87
  5. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  6. package/dist/es5/h3-layers/h3-hexagon-layer.js +321 -226
  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 +151 -125
  10. package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
  11. package/dist/es5/mvt-layer/coordinate-transform.js +45 -19
  12. package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
  13. package/dist/es5/mvt-layer/find-index-binary.js +45 -26
  14. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  15. package/dist/es5/mvt-layer/mvt-layer.js +374 -282
  16. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/es5/s2-layer/s2-geometry.js +43 -32
  18. package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
  19. package/dist/es5/s2-layer/s2-layer.js +104 -69
  20. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  21. package/dist/es5/s2-layer/s2-utils.js +27 -28
  22. package/dist/es5/s2-layer/s2-utils.js.map +1 -1
  23. package/dist/es5/terrain-layer/terrain-layer.js +254 -208
  24. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  25. package/dist/es5/tile-3d-layer/tile-3d-layer.js +382 -329
  26. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  27. package/dist/es5/tile-layer/tile-2d-header.js +183 -119
  28. package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
  29. package/dist/es5/tile-layer/tile-2d-traversal.js +178 -115
  30. package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
  31. package/dist/es5/tile-layer/tile-layer.js +258 -214
  32. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  33. package/dist/es5/tile-layer/tileset-2d.js +435 -290
  34. package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
  35. package/dist/es5/tile-layer/utils.js +110 -61
  36. package/dist/es5/tile-layer/utils.js.map +1 -1
  37. package/dist/es5/trips-layer/trips-layer.js +81 -44
  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","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"}
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"}
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 () {
10
+ get: function get() {
11
11
  return _greatCircleLayer.default;
12
12
  }
13
13
  });
14
14
  Object.defineProperty(exports, "S2Layer", {
15
15
  enumerable: true,
16
- get: function () {
16
+ get: function get() {
17
17
  return _s2Layer.default;
18
18
  }
19
19
  });
20
20
  Object.defineProperty(exports, "TileLayer", {
21
21
  enumerable: true,
22
- get: function () {
22
+ get: function get() {
23
23
  return _tileLayer.default;
24
24
  }
25
25
  });
26
26
  Object.defineProperty(exports, "TripsLayer", {
27
27
  enumerable: true,
28
- get: function () {
28
+ get: function get() {
29
29
  return _tripsLayer.default;
30
30
  }
31
31
  });
32
32
  Object.defineProperty(exports, "H3ClusterLayer", {
33
33
  enumerable: true,
34
- get: function () {
34
+ get: function get() {
35
35
  return _h3ClusterLayer.default;
36
36
  }
37
37
  });
38
38
  Object.defineProperty(exports, "H3HexagonLayer", {
39
39
  enumerable: true,
40
- get: function () {
40
+ get: function get() {
41
41
  return _h3HexagonLayer.default;
42
42
  }
43
43
  });
44
44
  Object.defineProperty(exports, "Tile3DLayer", {
45
45
  enumerable: true,
46
- get: function () {
46
+ get: function get() {
47
47
  return _tile3dLayer.default;
48
48
  }
49
49
  });
50
50
  Object.defineProperty(exports, "TerrainLayer", {
51
51
  enumerable: true,
52
- get: function () {
52
+ get: function get() {
53
53
  return _terrainLayer.default;
54
54
  }
55
55
  });
56
56
  Object.defineProperty(exports, "MVTLayer", {
57
57
  enumerable: true,
58
- get: function () {
58
+ get: function get() {
59
59
  return _mvtLayer.default;
60
60
  }
61
61
  });
@@ -7,6 +7,20 @@ 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
+
10
24
  var _experimental = require("@luma.gl/experimental");
11
25
 
12
26
  var _core = require("@luma.gl/core");
@@ -17,8 +31,16 @@ var _meshLayerVertex = _interopRequireDefault(require("./mesh-layer-vertex.glsl"
17
31
 
18
32
  var _meshLayerFragment = _interopRequireDefault(require("./mesh-layer-fragment.glsl"));
19
33
 
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
+
20
42
  function validateGeometryAttributes(attributes) {
21
- const hasColorAttribute = attributes.COLOR_0 || attributes.colors;
43
+ var hasColorAttribute = attributes.COLOR_0 || attributes.colors;
22
44
 
23
45
  if (!hasColorAttribute) {
24
46
  attributes.colors = {
@@ -35,7 +57,7 @@ function validateGeometryAttributes(attributes) {
35
57
  }
36
58
  }
37
59
 
38
- const defaultProps = {
60
+ var defaultProps = {
39
61
  pbrMaterial: {
40
62
  type: 'object',
41
63
  value: null
@@ -47,138 +69,142 @@ const defaultProps = {
47
69
  }
48
70
  };
49
71
 
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
- };
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);
59
80
  }
60
81
 
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
- }
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
75
91
  });
76
92
  }
77
- }
78
-
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);
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
+ }
92
109
  }
93
- }
94
-
95
- draw(opts) {
96
- const {
97
- featureIds
98
- } = this.props;
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
+ });
99
121
 
100
- if (!this.state.model) {
101
- return;
122
+ if (props.pbrMaterial !== oldProps.pbrMaterial) {
123
+ this.updatePbrMaterialUniforms(props.pbrMaterial);
124
+ }
102
125
  }
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);
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);
142
140
  }
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];
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;
176
158
  }
177
-
178
- attribute.value = value;
179
- }
180
-
181
- }
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
+ }
169
+ }
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;
188
+ }
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;
204
+ }
205
+ }]);
206
+ return _MeshLayer;
207
+ }(_meshLayers.SimpleMeshLayer);
182
208
 
183
209
  exports.default = _MeshLayer;
184
210
  _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","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":"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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","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,29 +1,49 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.transform = transform;
7
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
8
14
  var _math = require("math.gl");
9
15
 
10
- const availableTransformations = {
11
- Point,
12
- MultiPoint,
13
- LineString,
14
- MultiLineString,
15
- Polygon,
16
- MultiPolygon
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
17
27
  };
18
28
 
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);
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);
22
40
  return viewport.unprojectFlat([x, y]);
23
41
  }
24
42
 
25
43
  function getPoints(geometry, bbox, viewport) {
26
- return geometry.map(g => Point(g, bbox, viewport));
44
+ return geometry.map(function (g) {
45
+ return Point(g, bbox, viewport);
46
+ });
27
47
  }
28
48
 
29
49
  function MultiPoint(multiPoint, bbox, viewport) {
@@ -35,23 +55,29 @@ function LineString(line, bbox, viewport) {
35
55
  }
36
56
 
37
57
  function MultiLineString(multiLineString, bbox, viewport) {
38
- return multiLineString.map(lineString => LineString(lineString, bbox, viewport));
58
+ return multiLineString.map(function (lineString) {
59
+ return LineString(lineString, bbox, viewport);
60
+ });
39
61
  }
40
62
 
41
63
  function Polygon(polygon, bbox, viewport) {
42
- return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));
64
+ return polygon.map(function (polygonRing) {
65
+ return getPoints(polygonRing, bbox, viewport);
66
+ });
43
67
  }
44
68
 
45
69
  function MultiPolygon(multiPolygon, bbox, viewport) {
46
- return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));
70
+ return multiPolygon.map(function (polygon) {
71
+ return Polygon(polygon, bbox, viewport);
72
+ });
47
73
  }
48
74
 
49
75
  function transform(geometry, bbox, viewport) {
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,
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), {}, {
54
80
  coordinates: availableTransformations[geometry.type](geometry.coordinates, projectedBbox, viewport)
55
- };
81
+ });
56
82
  }
57
83
  //# sourceMappingURL=coordinate-transform.js.map