@deck.gl/geo-layers 9.0.0-beta.2 → 9.0.0-beta.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 (256) hide show
  1. package/dist/dist.dev.js +2798 -7198
  2. package/dist/geo-cell-layer/GeoCellLayer.js +51 -0
  3. package/{typed → dist}/geohash-layer/geohash-layer.d.ts +1 -1
  4. package/dist/geohash-layer/geohash-layer.d.ts.map +1 -0
  5. package/dist/geohash-layer/geohash-layer.js +19 -0
  6. package/dist/geohash-layer/geohash-utils.js +50 -0
  7. package/dist/great-circle-layer/great-circle-layer.js +12 -0
  8. package/{typed → dist}/h3-layers/h3-cluster-layer.d.ts +1 -1
  9. package/dist/h3-layers/h3-cluster-layer.d.ts.map +1 -0
  10. package/dist/h3-layers/h3-cluster-layer.js +47 -0
  11. package/dist/h3-layers/h3-hexagon-layer.js +204 -0
  12. package/dist/h3-layers/h3-utils.js +56 -0
  13. package/dist/index.cjs +3202 -0
  14. package/dist/index.cjs.map +7 -0
  15. package/dist/index.d.ts +31 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +36 -0
  18. package/dist/{esm/mesh-layer → mesh-layer}/mesh-layer-fragment.glsl.js +0 -1
  19. package/dist/{esm/mesh-layer → mesh-layer}/mesh-layer-vertex.glsl.js +0 -1
  20. package/dist/mesh-layer/mesh-layer.js +129 -0
  21. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts +1 -1
  22. package/{typed → dist}/mvt-layer/coordinate-transform.d.ts.map +1 -1
  23. package/dist/mvt-layer/coordinate-transform.js +41 -0
  24. package/dist/mvt-layer/find-index-binary.d.ts +11 -0
  25. package/dist/mvt-layer/find-index-binary.d.ts.map +1 -0
  26. package/dist/mvt-layer/find-index-binary.js +96 -0
  27. package/{typed → dist}/mvt-layer/mvt-layer.d.ts +8 -6
  28. package/dist/mvt-layer/mvt-layer.d.ts.map +1 -0
  29. package/dist/mvt-layer/mvt-layer.js +310 -0
  30. package/{typed → dist}/quadkey-layer/quadkey-layer.d.ts +1 -1
  31. package/dist/quadkey-layer/quadkey-layer.d.ts.map +1 -0
  32. package/dist/quadkey-layer/quadkey-layer.js +22 -0
  33. package/dist/quadkey-layer/quadkey-utils.js +26 -0
  34. package/dist/s2-layer/s2-geometry.js +123 -0
  35. package/{typed → dist}/s2-layer/s2-layer.d.ts +1 -1
  36. package/dist/s2-layer/s2-layer.d.ts.map +1 -0
  37. package/dist/s2-layer/s2-layer.js +38 -0
  38. package/dist/s2-layer/s2-utils.js +87 -0
  39. package/{typed → dist}/terrain-layer/terrain-layer.d.ts +4 -4
  40. package/dist/terrain-layer/terrain-layer.d.ts.map +1 -0
  41. package/dist/terrain-layer/terrain-layer.js +233 -0
  42. package/dist/tile-3d-layer/tile-3d-layer.js +302 -0
  43. package/{typed → dist}/tile-layer/tile-layer.d.ts +3 -3
  44. package/dist/tile-layer/tile-layer.d.ts.map +1 -0
  45. package/dist/tile-layer/tile-layer.js +204 -0
  46. package/dist/tileset-2d/index.d.ts +7 -0
  47. package/dist/tileset-2d/index.d.ts.map +1 -0
  48. package/dist/tileset-2d/index.js +4 -0
  49. package/dist/tileset-2d/memoize.js +41 -0
  50. package/{typed → dist}/tileset-2d/tile-2d-header.d.ts +3 -2
  51. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  52. package/dist/tileset-2d/tile-2d-header.js +135 -0
  53. package/dist/tileset-2d/tile-2d-traversal.d.ts +4 -0
  54. package/dist/tileset-2d/tile-2d-traversal.d.ts.map +1 -0
  55. package/dist/tileset-2d/tile-2d-traversal.js +182 -0
  56. package/{typed → dist}/tileset-2d/tileset-2d.d.ts +7 -7
  57. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  58. package/dist/tileset-2d/tileset-2d.js +456 -0
  59. package/dist/tileset-2d/types.js +1 -0
  60. package/{typed → dist}/tileset-2d/utils.d.ts +3 -3
  61. package/dist/tileset-2d/utils.d.ts.map +1 -0
  62. package/dist/tileset-2d/utils.js +234 -0
  63. package/dist/trips-layer/trips-layer.js +93 -0
  64. package/dist/wms-layer/utils.js +13 -0
  65. package/dist/wms-layer/wms-layer.js +192 -0
  66. package/dist.min.js +27 -162
  67. package/package.json +32 -18
  68. package/src/index.ts +5 -5
  69. package/src/mvt-layer/coordinate-transform.ts +1 -1
  70. package/src/mvt-layer/find-index-binary.ts +5 -9
  71. package/src/mvt-layer/mvt-layer.ts +25 -15
  72. package/src/terrain-layer/terrain-layer.ts +13 -3
  73. package/src/tile-layer/tile-layer.ts +8 -9
  74. package/src/tileset-2d/tile-2d-header.ts +2 -1
  75. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  76. package/src/tileset-2d/tileset-2d.ts +7 -3
  77. package/src/tileset-2d/utils.ts +2 -2
  78. package/src/wms-layer/wms-layer.ts +1 -1
  79. package/dist/es5/geo-cell-layer/GeoCellLayer.js +0 -118
  80. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +0 -1
  81. package/dist/es5/geohash-layer/geohash-layer.js +0 -67
  82. package/dist/es5/geohash-layer/geohash-layer.js.map +0 -1
  83. package/dist/es5/geohash-layer/geohash-utils.js +0 -77
  84. package/dist/es5/geohash-layer/geohash-utils.js.map +0 -1
  85. package/dist/es5/great-circle-layer/great-circle-layer.js +0 -48
  86. package/dist/es5/great-circle-layer/great-circle-layer.js.map +0 -1
  87. package/dist/es5/h3-layers/h3-cluster-layer.js +0 -162
  88. package/dist/es5/h3-layers/h3-cluster-layer.js.map +0 -1
  89. package/dist/es5/h3-layers/h3-hexagon-layer.js +0 -351
  90. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +0 -1
  91. package/dist/es5/h3-layers/h3-utils.js +0 -111
  92. package/dist/es5/h3-layers/h3-utils.js.map +0 -1
  93. package/dist/es5/index.js +0 -132
  94. package/dist/es5/index.js.map +0 -1
  95. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js +0 -9
  96. package/dist/es5/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  97. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +0 -9
  98. package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  99. package/dist/es5/mesh-layer/mesh-layer.js +0 -217
  100. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  101. package/dist/es5/mvt-layer/coordinate-transform.js +0 -83
  102. package/dist/es5/mvt-layer/coordinate-transform.js.map +0 -1
  103. package/dist/es5/mvt-layer/find-index-binary.js +0 -127
  104. package/dist/es5/mvt-layer/find-index-binary.js.map +0 -1
  105. package/dist/es5/mvt-layer/mvt-layer.js +0 -533
  106. package/dist/es5/mvt-layer/mvt-layer.js.map +0 -1
  107. package/dist/es5/quadkey-layer/quadkey-layer.js +0 -72
  108. package/dist/es5/quadkey-layer/quadkey-layer.js.map +0 -1
  109. package/dist/es5/quadkey-layer/quadkey-utils.js +0 -53
  110. package/dist/es5/quadkey-layer/quadkey-utils.js.map +0 -1
  111. package/dist/es5/s2-layer/s2-geometry.js +0 -158
  112. package/dist/es5/s2-layer/s2-geometry.js.map +0 -1
  113. package/dist/es5/s2-layer/s2-layer.js +0 -67
  114. package/dist/es5/s2-layer/s2-layer.js.map +0 -1
  115. package/dist/es5/s2-layer/s2-utils.js +0 -80
  116. package/dist/es5/s2-layer/s2-utils.js.map +0 -1
  117. package/dist/es5/terrain-layer/terrain-layer.js +0 -347
  118. package/dist/es5/terrain-layer/terrain-layer.js.map +0 -1
  119. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -511
  120. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  121. package/dist/es5/tile-layer/tile-layer.js +0 -363
  122. package/dist/es5/tile-layer/tile-layer.js.map +0 -1
  123. package/dist/es5/tileset-2d/index.js +0 -66
  124. package/dist/es5/tileset-2d/index.js.map +0 -1
  125. package/dist/es5/tileset-2d/memoize.js +0 -47
  126. package/dist/es5/tileset-2d/memoize.js.map +0 -1
  127. package/dist/es5/tileset-2d/tile-2d-header.js +0 -250
  128. package/dist/es5/tileset-2d/tile-2d-header.js.map +0 -1
  129. package/dist/es5/tileset-2d/tile-2d-traversal.js +0 -256
  130. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +0 -1
  131. package/dist/es5/tileset-2d/tileset-2d.js +0 -757
  132. package/dist/es5/tileset-2d/tileset-2d.js.map +0 -1
  133. package/dist/es5/tileset-2d/types.js +0 -2
  134. package/dist/es5/tileset-2d/types.js.map +0 -1
  135. package/dist/es5/tileset-2d/utils.js +0 -302
  136. package/dist/es5/tileset-2d/utils.js.map +0 -1
  137. package/dist/es5/trips-layer/trips-layer.js +0 -114
  138. package/dist/es5/trips-layer/trips-layer.js.map +0 -1
  139. package/dist/es5/wms-layer/utils.js +0 -18
  140. package/dist/es5/wms-layer/utils.js.map +0 -1
  141. package/dist/es5/wms-layer/wms-layer.js +0 -376
  142. package/dist/es5/wms-layer/wms-layer.js.map +0 -1
  143. package/dist/esm/geo-cell-layer/GeoCellLayer.js +0 -72
  144. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +0 -1
  145. package/dist/esm/geohash-layer/geohash-layer.js +0 -26
  146. package/dist/esm/geohash-layer/geohash-layer.js.map +0 -1
  147. package/dist/esm/geohash-layer/geohash-utils.js +0 -56
  148. package/dist/esm/geohash-layer/geohash-utils.js.map +0 -1
  149. package/dist/esm/great-circle-layer/great-circle-layer.js +0 -12
  150. package/dist/esm/great-circle-layer/great-circle-layer.js.map +0 -1
  151. package/dist/esm/h3-layers/h3-cluster-layer.js +0 -79
  152. package/dist/esm/h3-layers/h3-cluster-layer.js.map +0 -1
  153. package/dist/esm/h3-layers/h3-hexagon-layer.js +0 -280
  154. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +0 -1
  155. package/dist/esm/h3-layers/h3-utils.js +0 -54
  156. package/dist/esm/h3-layers/h3-utils.js.map +0 -1
  157. package/dist/esm/index.js +0 -17
  158. package/dist/esm/index.js.map +0 -1
  159. package/dist/esm/mesh-layer/mesh-layer-fragment.glsl.js.map +0 -1
  160. package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +0 -1
  161. package/dist/esm/mesh-layer/mesh-layer.js +0 -178
  162. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  163. package/dist/esm/mvt-layer/coordinate-transform.js +0 -49
  164. package/dist/esm/mvt-layer/coordinate-transform.js.map +0 -1
  165. package/dist/esm/mvt-layer/find-index-binary.js +0 -99
  166. package/dist/esm/mvt-layer/find-index-binary.js.map +0 -1
  167. package/dist/esm/mvt-layer/mvt-layer.js +0 -427
  168. package/dist/esm/mvt-layer/mvt-layer.js.map +0 -1
  169. package/dist/esm/quadkey-layer/quadkey-layer.js +0 -31
  170. package/dist/esm/quadkey-layer/quadkey-layer.js.map +0 -1
  171. package/dist/esm/quadkey-layer/quadkey-utils.js +0 -24
  172. package/dist/esm/quadkey-layer/quadkey-utils.js.map +0 -1
  173. package/dist/esm/s2-layer/s2-geometry.js +0 -126
  174. package/dist/esm/s2-layer/s2-geometry.js.map +0 -1
  175. package/dist/esm/s2-layer/s2-layer.js +0 -26
  176. package/dist/esm/s2-layer/s2-layer.js.map +0 -1
  177. package/dist/esm/s2-layer/s2-utils.js +0 -69
  178. package/dist/esm/s2-layer/s2-utils.js.map +0 -1
  179. package/dist/esm/terrain-layer/terrain-layer.js +0 -292
  180. package/dist/esm/terrain-layer/terrain-layer.js.map +0 -1
  181. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -438
  182. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  183. package/dist/esm/tile-layer/tile-layer.js +0 -299
  184. package/dist/esm/tile-layer/tile-layer.js.map +0 -1
  185. package/dist/esm/tileset-2d/index.js +0 -4
  186. package/dist/esm/tileset-2d/index.js.map +0 -1
  187. package/dist/esm/tileset-2d/memoize.js +0 -40
  188. package/dist/esm/tileset-2d/memoize.js.map +0 -1
  189. package/dist/esm/tileset-2d/tile-2d-header.js +0 -179
  190. package/dist/esm/tileset-2d/tile-2d-header.js.map +0 -1
  191. package/dist/esm/tileset-2d/tile-2d-traversal.js +0 -184
  192. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +0 -1
  193. package/dist/esm/tileset-2d/tileset-2d.js +0 -509
  194. package/dist/esm/tileset-2d/tileset-2d.js.map +0 -1
  195. package/dist/esm/tileset-2d/types.js +0 -2
  196. package/dist/esm/tileset-2d/types.js.map +0 -1
  197. package/dist/esm/tileset-2d/utils.js +0 -233
  198. package/dist/esm/tileset-2d/utils.js.map +0 -1
  199. package/dist/esm/trips-layer/trips-layer.js +0 -88
  200. package/dist/esm/trips-layer/trips-layer.js.map +0 -1
  201. package/dist/esm/wms-layer/utils.js +0 -9
  202. package/dist/esm/wms-layer/utils.js.map +0 -1
  203. package/dist/esm/wms-layer/wms-layer.js +0 -231
  204. package/dist/esm/wms-layer/wms-layer.js.map +0 -1
  205. package/typed/geohash-layer/geohash-layer.d.ts.map +0 -1
  206. package/typed/h3-layers/h3-cluster-layer.d.ts.map +0 -1
  207. package/typed/index.d.ts +0 -31
  208. package/typed/index.d.ts.map +0 -1
  209. package/typed/mvt-layer/find-index-binary.d.ts +0 -12
  210. package/typed/mvt-layer/find-index-binary.d.ts.map +0 -1
  211. package/typed/mvt-layer/mvt-layer.d.ts.map +0 -1
  212. package/typed/quadkey-layer/quadkey-layer.d.ts.map +0 -1
  213. package/typed/s2-layer/s2-layer.d.ts.map +0 -1
  214. package/typed/terrain-layer/terrain-layer.d.ts.map +0 -1
  215. package/typed/tile-layer/tile-layer.d.ts.map +0 -1
  216. package/typed/tileset-2d/index.d.ts +0 -7
  217. package/typed/tileset-2d/index.d.ts.map +0 -1
  218. package/typed/tileset-2d/tile-2d-header.d.ts.map +0 -1
  219. package/typed/tileset-2d/tile-2d-traversal.d.ts +0 -4
  220. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +0 -1
  221. package/typed/tileset-2d/tileset-2d.d.ts.map +0 -1
  222. package/typed/tileset-2d/utils.d.ts.map +0 -1
  223. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts +0 -0
  224. /package/{typed → dist}/geo-cell-layer/GeoCellLayer.d.ts.map +0 -0
  225. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts +0 -0
  226. /package/{typed → dist}/geohash-layer/geohash-utils.d.ts.map +0 -0
  227. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts +0 -0
  228. /package/{typed → dist}/great-circle-layer/great-circle-layer.d.ts.map +0 -0
  229. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts +0 -0
  230. /package/{typed → dist}/h3-layers/h3-hexagon-layer.d.ts.map +0 -0
  231. /package/{typed → dist}/h3-layers/h3-utils.d.ts +0 -0
  232. /package/{typed → dist}/h3-layers/h3-utils.d.ts.map +0 -0
  233. /package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts +0 -0
  234. /package/{typed → dist}/mesh-layer/mesh-layer-fragment.glsl.d.ts.map +0 -0
  235. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts +0 -0
  236. /package/{typed → dist}/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +0 -0
  237. /package/{typed → dist}/mesh-layer/mesh-layer.d.ts +0 -0
  238. /package/{typed → dist}/mesh-layer/mesh-layer.d.ts.map +0 -0
  239. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts +0 -0
  240. /package/{typed → dist}/quadkey-layer/quadkey-utils.d.ts.map +0 -0
  241. /package/{typed → dist}/s2-layer/s2-geometry.d.ts +0 -0
  242. /package/{typed → dist}/s2-layer/s2-geometry.d.ts.map +0 -0
  243. /package/{typed → dist}/s2-layer/s2-utils.d.ts +0 -0
  244. /package/{typed → dist}/s2-layer/s2-utils.d.ts.map +0 -0
  245. /package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts +0 -0
  246. /package/{typed → dist}/tile-3d-layer/tile-3d-layer.d.ts.map +0 -0
  247. /package/{typed → dist}/tileset-2d/memoize.d.ts +0 -0
  248. /package/{typed → dist}/tileset-2d/memoize.d.ts.map +0 -0
  249. /package/{typed → dist}/tileset-2d/types.d.ts +0 -0
  250. /package/{typed → dist}/tileset-2d/types.d.ts.map +0 -0
  251. /package/{typed → dist}/trips-layer/trips-layer.d.ts +0 -0
  252. /package/{typed → dist}/trips-layer/trips-layer.d.ts.map +0 -0
  253. /package/{typed → dist}/wms-layer/utils.d.ts +0 -0
  254. /package/{typed → dist}/wms-layer/utils.d.ts.map +0 -0
  255. /package/{typed → dist}/wms-layer/wms-layer.d.ts +0 -0
  256. /package/{typed → dist}/wms-layer/wms-layer.d.ts.map +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/h3-layers/h3-hexagon-layer.ts"],"names":["UPDATE_THRESHOLD_KM","mergeTriggers","getHexagon","coverage","trigger","undefined","defaultProps","PolygonLayer","highPrecision","type","min","max","value","centerHexagon","x","hexagon","extruded","H3HexagonLayer","state","initializeState","_checkH3Lib","edgeLengthKM","resolution","shouldUpdateState","changeFlags","_shouldUseHighPrecision","propsOrDataChanged","somethingChanged","updateState","props","dataChanged","updateTriggersChanged","dataProps","_calculateH3DataProps","setState","_updateVertices","context","viewport","hasPentagon","hasMultipleRes","data","iterable","objectInfo","object","index","hexId","hexResolution","Boolean","centerHex","hex","latitude","longitude","distance","unitsPerMeter","distanceScales","vertices","centerLat","centerLng","projectFlat","centerX","centerY","map","p","worldPosition","renderLayers","_renderPolygonLayer","_renderColumnLayer","_getForwardProps","elevationScale","material","wireframe","stroked","filled","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","getFillColor","getElevation","getLineColor","getLineWidth","transitions","updateTriggers","SubLayerClass","getSubLayerClass","forwardProps","getPolygon","getSubLayerProps","id","_normalize","_windingOrder","positionFormat","hexagonId","ColumnLayer","getPosition","flatShading","diskResolution","radius","getHexagonCentroid","bind","CompositeLayer","layerName"],"mappings":"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","sourcesContent":["import {\n getResolution,\n cellToLatLng,\n latLngToCell,\n isPentagon,\n gridDistance,\n getHexagonEdgeLengthAvg,\n H3Index\n} from 'h3-js';\nimport {\n AccessorFunction,\n CompositeLayer,\n createIterable,\n Layer,\n LayersList,\n UpdateParameters,\n WebMercatorViewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {ColumnLayer, PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\nimport {flattenPolygon, getHexagonCentroid, h3ToPolygon} from './h3-utils';\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\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: DefaultProps<H3HexagonLayerProps> = {\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: any) => x.hexagon},\n extruded: true\n};\n\n/** All properties supported by H3HexagonLayer */\nexport type H3HexagonLayerProps<DataT = unknown> = _H3HexagonLayerProps<DataT> &\n PolygonLayerProps<DataT>;\n\n/** Props added by the H3HexagonLayer */\ntype _H3HexagonLayerProps<DataT> = {\n /**\n * Whether or not draw hexagons with high precision.\n * @default 'auto'\n */\n highPrecision?: boolean | 'auto';\n /**\n * Coverage of hexagon in cell.\n * @default 1\n */\n coverage?: number;\n /**\n * Center hexagon that best represents the shape of the set. If not specified, the hexagon closest to the center of the viewport is used.\n */\n centerHexagon?: H3Index | null;\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `hexagon` property of data object.\n */\n getHexagon?: AccessorFunction<DataT, string>;\n /**\n * Whether to extrude polygons.\n * @default true\n */\n extruded?: boolean;\n};\n\n/**\n * Render hexagons from the [H3](https://h3geo.org/) geospatial indexing system.\n */\nexport default class H3HexagonLayer<\n DataT = any,\n ExtraPropsT extends {} = {}\n> extends CompositeLayer<ExtraPropsT & Required<H3HexagonLayerProps<DataT>>> {\n static defaultProps = defaultProps;\n static layerName = 'H3HexagonLayer';\n\n // See `main/bundle.ts`\n static _checkH3Lib = () => {};\n\n initializeState() {\n H3HexagonLayer._checkH3Lib();\n this.state = {\n edgeLengthKM: 0,\n resolution: -1\n };\n }\n\n state!: {\n centerHex?: H3Index;\n edgeLengthKM: number;\n hasMultipleRes?: boolean;\n hasPentagon?: boolean;\n resolution: number;\n vertices?: number[][];\n };\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return this._shouldUseHighPrecision()\n ? changeFlags.propsOrDataChanged\n : changeFlags.somethingChanged;\n }\n\n updateState({props, changeFlags}: UpdateParameters<this>): void {\n if (\n props.highPrecision !== true &&\n (changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged && changeFlags.updateTriggersChanged.getHexagon))\n ) {\n const dataProps = this._calculateH3DataProps();\n this.setState(dataProps);\n }\n\n this._updateVertices(this.context.viewport as WebMercatorViewport);\n }\n\n private _calculateH3DataProps() {\n let resolution = -1;\n let hasPentagon = false;\n let hasMultipleRes = false;\n\n const {iterable, objectInfo} = createIterable(this.props.data);\n for (const object of iterable) {\n objectInfo.index++;\n const hexId = this.props.getHexagon(object, objectInfo);\n // Take the resolution of the first hex\n const hexResolution = getResolution(hexId);\n if (resolution < 0) {\n resolution = hexResolution;\n if (!this.props.highPrecision) break;\n } else if (resolution !== hexResolution) {\n hasMultipleRes = true;\n break;\n }\n if (isPentagon(hexId)) {\n hasPentagon = true;\n break;\n }\n }\n\n return {\n resolution,\n edgeLengthKM: resolution >= 0 ? getHexagonEdgeLengthAvg(resolution, 'km') : 0,\n hasMultipleRes,\n hasPentagon\n };\n }\n\n private _shouldUseHighPrecision(): boolean {\n if (this.props.highPrecision === 'auto') {\n const {resolution, hasPentagon, hasMultipleRes} = this.state;\n const {viewport} = this.context;\n return (\n Boolean(viewport?.resolution) ||\n hasMultipleRes ||\n hasPentagon ||\n (resolution >= 0 && resolution <= 5)\n );\n }\n\n return this.props.highPrecision;\n }\n\n private _updateVertices(viewport: WebMercatorViewport): void {\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 || latLngToCell(viewport.latitude, viewport.longitude, resolution);\n if (centerHex === hex) {\n return;\n }\n if (centerHex) {\n try {\n const distance = gridDistance(centerHex, hex);\n if (distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {\n return;\n }\n } catch {\n // gridDistance throws if the distance could not be computed\n // due to the two indexes very far apart or on opposite sides of a pentagon.\n }\n }\n\n const {unitsPerMeter} = viewport.distanceScales;\n\n let vertices = h3ToPolygon(hex);\n const [centerLat, centerLng] = cellToLatLng(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(): Layer | null | LayersList {\n return this._shouldUseHighPrecision() ? this._renderPolygonLayer() : this._renderColumnLayer();\n }\n\n private _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 } as {\n getFillColor: any;\n getElevation: any;\n getLineColor: any;\n getLineWidth: any;\n getPolygon?: any;\n getPosition?: any;\n }\n };\n }\n\n private _renderPolygonLayer(): PolygonLayer {\n const {data, getHexagon, updateTriggers, coverage} = this.props;\n\n const SubLayerClass = this.getSubLayerClass('hexagon-cell-hifi', PolygonLayer);\n const forwardProps = this._getForwardProps();\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 flattenPolygon(h3ToPolygon(hexagonId, coverage));\n }\n }\n );\n }\n\n private _renderColumnLayer(): ColumnLayer {\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 flatShading: true,\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"],"file":"h3-hexagon-layer.js"}
@@ -1,111 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.normalizeLongitudes = normalizeLongitudes;
9
- exports.scalePolygon = scalePolygon;
10
- exports.getHexagonCentroid = getHexagonCentroid;
11
- exports.h3ToPolygon = h3ToPolygon;
12
- exports.flattenPolygon = flattenPolygon;
13
-
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
-
16
- var _h3Js = require("h3-js");
17
-
18
- var _core = require("@math.gl/core");
19
-
20
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
21
-
22
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
-
24
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
-
26
- function normalizeLongitudes(vertices, refLng) {
27
- refLng = refLng === undefined ? vertices[0][0] : refLng;
28
-
29
- var _iterator = _createForOfIteratorHelper(vertices),
30
- _step;
31
-
32
- try {
33
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
34
- var pt = _step.value;
35
- var deltaLng = pt[0] - refLng;
36
-
37
- if (deltaLng > 180) {
38
- pt[0] -= 360;
39
- } else if (deltaLng < -180) {
40
- pt[0] += 360;
41
- }
42
- }
43
- } catch (err) {
44
- _iterator.e(err);
45
- } finally {
46
- _iterator.f();
47
- }
48
- }
49
-
50
- function scalePolygon(hexId, vertices, factor) {
51
- var _cellToLatLng = (0, _h3Js.cellToLatLng)(hexId),
52
- _cellToLatLng2 = (0, _slicedToArray2.default)(_cellToLatLng, 2),
53
- lat = _cellToLatLng2[0],
54
- lng = _cellToLatLng2[1];
55
-
56
- var actualCount = vertices.length;
57
- normalizeLongitudes(vertices, lng);
58
- var vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
59
-
60
- for (var i = 0; i < vertexCount; i++) {
61
- vertices[i][0] = (0, _core.lerp)(lng, vertices[i][0], factor);
62
- vertices[i][1] = (0, _core.lerp)(lat, vertices[i][1], factor);
63
- }
64
- }
65
-
66
- function getHexagonCentroid(getHexagon, object, objectInfo) {
67
- var hexagonId = getHexagon(object, objectInfo);
68
-
69
- var _cellToLatLng3 = (0, _h3Js.cellToLatLng)(hexagonId),
70
- _cellToLatLng4 = (0, _slicedToArray2.default)(_cellToLatLng3, 2),
71
- lat = _cellToLatLng4[0],
72
- lng = _cellToLatLng4[1];
73
-
74
- return [lng, lat];
75
- }
76
-
77
- function h3ToPolygon(hexId) {
78
- var coverage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
79
- var vertices = (0, _h3Js.cellToBoundary)(hexId, true);
80
-
81
- if (coverage !== 1) {
82
- scalePolygon(hexId, vertices, coverage);
83
- } else {
84
- normalizeLongitudes(vertices);
85
- }
86
-
87
- return vertices;
88
- }
89
-
90
- function flattenPolygon(vertices) {
91
- var positions = new Float64Array(vertices.length * 2);
92
- var i = 0;
93
-
94
- var _iterator2 = _createForOfIteratorHelper(vertices),
95
- _step2;
96
-
97
- try {
98
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
99
- var pt = _step2.value;
100
- positions[i++] = pt[0];
101
- positions[i++] = pt[1];
102
- }
103
- } catch (err) {
104
- _iterator2.e(err);
105
- } finally {
106
- _iterator2.f();
107
- }
108
-
109
- return positions;
110
- }
111
- //# sourceMappingURL=h3-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/h3-layers/h3-utils.ts"],"names":["normalizeLongitudes","vertices","refLng","undefined","pt","deltaLng","scalePolygon","hexId","factor","lat","lng","actualCount","length","vertexCount","i","getHexagonCentroid","getHexagon","object","objectInfo","hexagonId","h3ToPolygon","coverage","flattenPolygon","positions","Float64Array"],"mappings":"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","sourcesContent":["import {CoordPair, H3IndexInput, cellToBoundary, cellToLatLng} from 'h3-js';\nimport {lerp} from '@math.gl/core';\n\n// normalize longitudes w.r.t center (refLng), when not provided first vertex\nexport function normalizeLongitudes(vertices: CoordPair[], refLng?: number): void {\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: H3IndexInput, vertices: CoordPair[], factor: number): void {\n const [lat, lng] = cellToLatLng(hexId);\n const actualCount = vertices.length;\n\n // normalize with respect to center\n normalizeLongitudes(vertices, lng);\n\n // `cellToBoundary` 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\n// gets hexagon centroid\nexport function getHexagonCentroid(getHexagon, object, objectInfo) {\n const hexagonId = getHexagon(object, objectInfo);\n const [lat, lng] = cellToLatLng(hexagonId);\n return [lng, lat];\n}\n\nexport function h3ToPolygon(hexId: H3IndexInput, coverage: number = 1): number[][] {\n const vertices = cellToBoundary(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 return vertices;\n}\n\nexport function flattenPolygon(vertices: number[][]): Float64Array {\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"],"file":"h3-utils.js"}
package/dist/es5/index.js DELETED
@@ -1,132 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "_WMSLayer", {
9
- enumerable: true,
10
- get: function get() {
11
- return _wmsLayer.WMSLayer;
12
- }
13
- });
14
- Object.defineProperty(exports, "GreatCircleLayer", {
15
- enumerable: true,
16
- get: function get() {
17
- return _greatCircleLayer.default;
18
- }
19
- });
20
- Object.defineProperty(exports, "S2Layer", {
21
- enumerable: true,
22
- get: function get() {
23
- return _s2Layer.default;
24
- }
25
- });
26
- Object.defineProperty(exports, "QuadkeyLayer", {
27
- enumerable: true,
28
- get: function get() {
29
- return _quadkeyLayer.default;
30
- }
31
- });
32
- Object.defineProperty(exports, "TileLayer", {
33
- enumerable: true,
34
- get: function get() {
35
- return _tileLayer.default;
36
- }
37
- });
38
- Object.defineProperty(exports, "TripsLayer", {
39
- enumerable: true,
40
- get: function get() {
41
- return _tripsLayer.default;
42
- }
43
- });
44
- Object.defineProperty(exports, "H3ClusterLayer", {
45
- enumerable: true,
46
- get: function get() {
47
- return _h3ClusterLayer.default;
48
- }
49
- });
50
- Object.defineProperty(exports, "H3HexagonLayer", {
51
- enumerable: true,
52
- get: function get() {
53
- return _h3HexagonLayer.default;
54
- }
55
- });
56
- Object.defineProperty(exports, "Tile3DLayer", {
57
- enumerable: true,
58
- get: function get() {
59
- return _tile3dLayer.default;
60
- }
61
- });
62
- Object.defineProperty(exports, "TerrainLayer", {
63
- enumerable: true,
64
- get: function get() {
65
- return _terrainLayer.default;
66
- }
67
- });
68
- Object.defineProperty(exports, "MVTLayer", {
69
- enumerable: true,
70
- get: function get() {
71
- return _mvtLayer.default;
72
- }
73
- });
74
- Object.defineProperty(exports, "GeohashLayer", {
75
- enumerable: true,
76
- get: function get() {
77
- return _geohashLayer.default;
78
- }
79
- });
80
- Object.defineProperty(exports, "_GeoCellLayer", {
81
- enumerable: true,
82
- get: function get() {
83
- return _GeoCellLayer.default;
84
- }
85
- });
86
- Object.defineProperty(exports, "_getURLFromTemplate", {
87
- enumerable: true,
88
- get: function get() {
89
- return _tileset2d.getURLFromTemplate;
90
- }
91
- });
92
- Object.defineProperty(exports, "_Tileset2D", {
93
- enumerable: true,
94
- get: function get() {
95
- return _tileset2d.Tileset2D;
96
- }
97
- });
98
- Object.defineProperty(exports, "_Tile2DHeader", {
99
- enumerable: true,
100
- get: function get() {
101
- return _tileset2d.Tile2DHeader;
102
- }
103
- });
104
-
105
- var _wmsLayer = require("./wms-layer/wms-layer");
106
-
107
- var _greatCircleLayer = _interopRequireDefault(require("./great-circle-layer/great-circle-layer"));
108
-
109
- var _s2Layer = _interopRequireDefault(require("./s2-layer/s2-layer"));
110
-
111
- var _quadkeyLayer = _interopRequireDefault(require("./quadkey-layer/quadkey-layer"));
112
-
113
- var _tileLayer = _interopRequireDefault(require("./tile-layer/tile-layer"));
114
-
115
- var _tripsLayer = _interopRequireDefault(require("./trips-layer/trips-layer"));
116
-
117
- var _h3ClusterLayer = _interopRequireDefault(require("./h3-layers/h3-cluster-layer"));
118
-
119
- var _h3HexagonLayer = _interopRequireDefault(require("./h3-layers/h3-hexagon-layer"));
120
-
121
- var _tile3dLayer = _interopRequireDefault(require("./tile-3d-layer/tile-3d-layer"));
122
-
123
- var _terrainLayer = _interopRequireDefault(require("./terrain-layer/terrain-layer"));
124
-
125
- var _mvtLayer = _interopRequireDefault(require("./mvt-layer/mvt-layer"));
126
-
127
- var _geohashLayer = _interopRequireDefault(require("./geohash-layer/geohash-layer"));
128
-
129
- var _GeoCellLayer = _interopRequireDefault(require("./geo-cell-layer/GeoCellLayer"));
130
-
131
- var _tileset2d = require("./tileset-2d");
132
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAqBA","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable max-len */\n\nexport {WMSLayer as _WMSLayer} from './wms-layer/wms-layer';\nexport {default as GreatCircleLayer} from './great-circle-layer/great-circle-layer';\nexport {default as S2Layer} from './s2-layer/s2-layer';\nexport {default as QuadkeyLayer} from './quadkey-layer/quadkey-layer';\nexport {default as TileLayer} from './tile-layer/tile-layer';\nexport {default as TripsLayer} from './trips-layer/trips-layer';\nexport {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';\nexport {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';\nexport {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';\nexport {default as TerrainLayer} from './terrain-layer/terrain-layer';\nexport {default as MVTLayer} from './mvt-layer/mvt-layer';\nexport {default as GeohashLayer} from './geohash-layer/geohash-layer';\n\nexport {default as _GeoCellLayer} from './geo-cell-layer/GeoCellLayer';\n\n// Types\nexport type {WMSLayerProps} from './wms-layer/wms-layer';\nexport type {H3ClusterLayerProps} from './h3-layers/h3-cluster-layer';\nexport type {H3HexagonLayerProps} from './h3-layers/h3-hexagon-layer';\nexport type {GreatCircleLayerProps} from './great-circle-layer/great-circle-layer';\nexport type {S2LayerProps} from './s2-layer/s2-layer';\nexport type {TileLayerProps} from './tile-layer/tile-layer';\nexport type {TripsLayerProps} from './trips-layer/trips-layer';\nexport type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';\nexport type {TerrainLayerProps} from './terrain-layer/terrain-layer';\nexport type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';\nexport type {MVTLayerProps} from './mvt-layer/mvt-layer';\nexport type {GeoCellLayerProps as _GeoCellLayerProps} from './geo-cell-layer/GeoCellLayer';\n\n// Tileset2D\n\nexport type {GeoBoundingBox, NonGeoBoundingBox} from './tileset-2d';\nexport type {TileLoadProps as _TileLoadProps} from './tileset-2d';\n\nexport {getURLFromTemplate as _getURLFromTemplate} from './tileset-2d';\nexport {Tileset2D as _Tileset2D} from './tileset-2d';\nexport {Tile2DHeader as _Tile2DHeader} from './tileset-2d';\n"],"file":"index.js"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = "#version 300 es\n#define SHADER_NAME simple-mesh-layer-fs\n\nprecision highp float;\n\nuniform bool hasTexture;\nuniform sampler2D sampler;\nuniform bool flatShading;\nuniform float opacity;\n\nin vec2 vTexCoord;\nin vec3 cameraPosition;\nin vec3 normals_commonspace;\nin vec4 position_commonspace;\nin vec4 vColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n \n#ifdef MODULE_PBR\n\n fragColor = vColor * pbr_filterColor(vec4(0));\n geometry.uv = pbr_vUV;\n fragColor.a *= opacity;\n\n#else\n\n geometry.uv = vTexCoord;\n\n vec3 normal;\n if (flatShading) {\n#ifdef DERIVATIVES_AVAILABLE\n normal = normalize(cross(dFdx(position_commonspace.xyz), dFdy(position_commonspace.xyz)));\n#else\n normal = vec3(0.0, 0.0, 1.0);\n#endif\n } else {\n normal = normals_commonspace;\n }\n\n vec4 color = hasTexture ? texture(sampler, vTexCoord) : vColor;\n vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, position_commonspace.xyz, normal);\n fragColor = vec4(lightColor, color.a * opacity);\n\n#endif\n\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
8
- exports.default = _default;
9
- //# sourceMappingURL=mesh-layer-fragment.glsl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"mesh-layer-fragment.glsl.js"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _default = "#version 300 es\n#define SHADER_NAME simple-mesh-layer-vs\nuniform float sizeScale;\nuniform bool composeModelMatrix;\nuniform bool pickFeatureIds;\nin vec3 positions;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\nin vec4 uvRegions;\nin vec3 featureIdsPickingColors;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin vec3 instanceModelMatrixCol0;\nin vec3 instanceModelMatrixCol1;\nin vec3 instanceModelMatrixCol2;\nout vec2 vTexCoord;\nout vec3 cameraPosition;\nout vec3 normals_commonspace;\nout vec4 position_commonspace;\nout vec4 vColor;\n\nvec2 applyUVRegion(vec2 uv) {\n #ifdef HAS_UV_REGIONS\n return fract(uv) * (uvRegions.zw - uvRegions.xy) + uvRegions.xy;\n #else\n return uv;\n #endif\n}\n\nvoid main(void) {\n vec2 uv = applyUVRegion(texCoords);\n geometry.uv = uv;\n\n if (pickFeatureIds) {\n geometry.pickingColor = featureIdsPickingColors;\n } else {\n geometry.pickingColor = instancePickingColors;\n }\n\n mat3 instanceModelMatrix = mat3(instanceModelMatrixCol0, instanceModelMatrixCol1, instanceModelMatrixCol2);\n\n vTexCoord = uv;\n cameraPosition = project_uCameraPosition;\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale;\n vec3 projectedPosition = project_position(positions);\n position_commonspace = vec4(projectedPosition, 1.0);\n gl_Position = project_common_position_to_clipspace(position_commonspace);\n\n geometry.position = position_commonspace;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n geometry.normal = normals_commonspace;\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n #ifdef MODULE_PBR\n pbr_vPosition = geometry.position.xyz;\n #ifdef HAS_NORMALS\n pbr_vNormal = geometry.normal;\n #endif\n\n #ifdef HAS_UV\n pbr_vUV = uv;\n #else\n pbr_vUV = vec2(0., 0.);\n #endif\n geometry.uv = pbr_vUV;\n #endif\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
8
- exports.default = _default;
9
- //# sourceMappingURL=mesh-layer-vertex.glsl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"mesh-layer-vertex.glsl.js"}
@@ -1,217 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _gltf = require("@luma.gl/gltf");
23
-
24
- var _shadertools = require("@luma.gl/shadertools");
25
-
26
- var _engine = require("@luma.gl/engine");
27
-
28
- var _constants = require("@luma.gl/constants");
29
-
30
- var _meshLayers = require("@deck.gl/mesh-layers");
31
-
32
- var _meshLayerVertex = _interopRequireDefault(require("./mesh-layer-vertex.glsl"));
33
-
34
- var _meshLayerFragment = _interopRequireDefault(require("./mesh-layer-fragment.glsl"));
35
-
36
- 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; }
37
-
38
- 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; }
39
-
40
- 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); }; }
41
-
42
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
43
-
44
- function validateGeometryAttributes(attributes) {
45
- var positionAttribute = attributes.positions || attributes.POSITION;
46
- var vertexCount = positionAttribute.value.length / positionAttribute.size;
47
- var hasColorAttribute = attributes.COLOR_0 || attributes.colors;
48
-
49
- if (!hasColorAttribute) {
50
- attributes.colors = {
51
- size: 4,
52
- value: new Uint8Array(vertexCount * 4).fill(255),
53
- normalized: true
54
- };
55
- }
56
- }
57
-
58
- var defaultProps = {
59
- pbrMaterial: {
60
- type: 'object',
61
- value: null
62
- },
63
- featureIds: {
64
- type: 'array',
65
- value: null,
66
- optional: true
67
- }
68
- };
69
-
70
- var MeshLayer = function (_SimpleMeshLayer) {
71
- (0, _inherits2.default)(MeshLayer, _SimpleMeshLayer);
72
-
73
- var _super = _createSuper(MeshLayer);
74
-
75
- function MeshLayer() {
76
- (0, _classCallCheck2.default)(this, MeshLayer);
77
- return _super.apply(this, arguments);
78
- }
79
-
80
- var _proto = MeshLayer.prototype;
81
-
82
- _proto.getShaders = function getShaders() {
83
- var shaders = (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "getShaders", this).call(this);
84
- var modules = shaders.modules;
85
- modules.push(_shadertools.pbr);
86
- return _objectSpread(_objectSpread({}, shaders), {}, {
87
- vs: _meshLayerVertex.default,
88
- fs: _meshLayerFragment.default
89
- });
90
- };
91
-
92
- _proto.initializeState = function initializeState() {
93
- var featureIds = this.props.featureIds;
94
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "initializeState", this).call(this);
95
- var attributeManager = this.getAttributeManager();
96
-
97
- if (featureIds) {
98
- attributeManager.add({
99
- featureIdsPickingColors: {
100
- type: 5121,
101
- size: 3,
102
- noAlloc: true,
103
- update: this.calculateFeatureIdsPickingColors
104
- }
105
- });
106
- }
107
- };
108
-
109
- _proto.updateState = function updateState(params) {
110
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "updateState", this).call(this, params);
111
- var props = params.props,
112
- oldProps = params.oldProps;
113
-
114
- if (props.pbrMaterial !== oldProps.pbrMaterial) {
115
- this.updatePbrMaterialUniforms(props.pbrMaterial);
116
- }
117
- };
118
-
119
- _proto.draw = function draw(opts) {
120
- var featureIds = this.props.featureIds;
121
-
122
- if (!this.state.model) {
123
- return;
124
- }
125
-
126
- this.state.model.setUniforms({
127
- u_Camera: this.state.model.uniforms.project_uCameraPosition,
128
- pickFeatureIds: Boolean(featureIds)
129
- });
130
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "draw", this).call(this, opts);
131
- };
132
-
133
- _proto.getModel = function getModel(mesh) {
134
- var _this$props = this.props,
135
- id = _this$props.id,
136
- pbrMaterial = _this$props.pbrMaterial;
137
- var parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);
138
- this.setState({
139
- parsedPBRMaterial: parsedPBRMaterial
140
- });
141
- var shaders = this.getShaders();
142
- validateGeometryAttributes(mesh.attributes);
143
- var model = new _engine.Model(this.context.device, _objectSpread(_objectSpread({}, this.getShaders()), {}, {
144
- id: id,
145
- geometry: mesh,
146
- bufferLayout: this.getAttributeManager().getBufferLayouts(),
147
- defines: _objectSpread(_objectSpread(_objectSpread({}, shaders.defines), parsedPBRMaterial === null || parsedPBRMaterial === void 0 ? void 0 : parsedPBRMaterial.defines), {}, {
148
- HAS_UV_REGIONS: mesh.attributes.uvRegions ? 1 : 0
149
- }),
150
- parameters: parsedPBRMaterial === null || parsedPBRMaterial === void 0 ? void 0 : parsedPBRMaterial.parameters,
151
- isInstanced: true
152
- }));
153
- return model;
154
- };
155
-
156
- _proto.updatePbrMaterialUniforms = function updatePbrMaterialUniforms(pbrMaterial) {
157
- var model = this.state.model;
158
-
159
- if (model) {
160
- var mesh = this.props.mesh;
161
- var parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);
162
- this.setState({
163
- parsedPBRMaterial: parsedPBRMaterial
164
- });
165
- model.setBindings(parsedPBRMaterial.bindings);
166
- model.setUniforms(parsedPBRMaterial.uniforms);
167
- }
168
- };
169
-
170
- _proto.parseMaterial = function parseMaterial(pbrMaterial, mesh) {
171
- var unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
172
- return (0, _gltf.parsePBRMaterial)(this.context.device, _objectSpread({
173
- unlit: unlit
174
- }, pbrMaterial), {
175
- NORMAL: mesh.attributes.normals,
176
- TEXCOORD_0: mesh.attributes.texCoords
177
- }, {
178
- pbrDebug: false,
179
- lights: true,
180
- useTangents: false
181
- });
182
- };
183
-
184
- _proto.calculateFeatureIdsPickingColors = function calculateFeatureIdsPickingColors(attribute) {
185
- var featureIds = this.props.featureIds;
186
- var value = new Uint8ClampedArray(featureIds.length * attribute.size);
187
- var pickingColor = [];
188
-
189
- for (var index = 0; index < featureIds.length; index++) {
190
- this.encodePickingColor(featureIds[index], pickingColor);
191
- value[index * 3] = pickingColor[0];
192
- value[index * 3 + 1] = pickingColor[1];
193
- value[index * 3 + 2] = pickingColor[2];
194
- }
195
-
196
- attribute.value = value;
197
- };
198
-
199
- _proto.finalizeState = function finalizeState(context) {
200
- var _this$state$parsedPBR;
201
-
202
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "finalizeState", this).call(this, context);
203
- (_this$state$parsedPBR = this.state.parsedPBRMaterial) === null || _this$state$parsedPBR === void 0 ? void 0 : _this$state$parsedPBR.generatedTextures.forEach(function (texture) {
204
- return texture.destroy();
205
- });
206
- this.setState({
207
- parsedPBRMaterial: null
208
- });
209
- };
210
-
211
- return MeshLayer;
212
- }(_meshLayers.SimpleMeshLayer);
213
-
214
- exports.default = MeshLayer;
215
- MeshLayer.layerName = 'MeshLayer';
216
- MeshLayer.defaultProps = defaultProps;
217
- //# sourceMappingURL=mesh-layer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mesh-layer/mesh-layer.ts"],"names":["validateGeometryAttributes","attributes","positionAttribute","positions","POSITION","vertexCount","value","length","size","hasColorAttribute","COLOR_0","colors","Uint8Array","fill","normalized","defaultProps","pbrMaterial","type","featureIds","optional","MeshLayer","getShaders","shaders","modules","push","pbr","vs","fs","initializeState","props","attributeManager","getAttributeManager","add","featureIdsPickingColors","noAlloc","update","calculateFeatureIdsPickingColors","updateState","params","oldProps","updatePbrMaterialUniforms","draw","opts","state","model","setUniforms","u_Camera","uniforms","project_uCameraPosition","pickFeatureIds","Boolean","getModel","mesh","id","parsedPBRMaterial","parseMaterial","setState","Model","context","device","geometry","bufferLayout","getBufferLayouts","defines","HAS_UV_REGIONS","uvRegions","parameters","isInstanced","setBindings","bindings","unlit","pbrMetallicRoughness","baseColorTexture","NORMAL","normals","TEXCOORD_0","texCoords","pbrDebug","lights","useTangents","attribute","Uint8ClampedArray","pickingColor","index","encodePickingColor","finalizeState","generatedTextures","forEach","texture","destroy","SimpleMeshLayer","layerName"],"mappings":"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","sourcesContent":["import type {NumericArray} from '@math.gl/core';\nimport {parsePBRMaterial, ParsedPBRMaterial} from '@luma.gl/gltf';\nimport {pbr} from '@luma.gl/shadertools';\nimport {Model} from '@luma.gl/engine';\nimport {GL} from '@luma.gl/constants';\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';\nimport {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nexport type Mesh = {\n attributes: MeshAttributes;\n indices?: MeshAttribute;\n};\n\nfunction validateGeometryAttributes(attributes: MeshAttributes) {\n const positionAttribute = attributes.positions || attributes.POSITION;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {\n size: 4,\n value: new Uint8Array(vertexCount * 4).fill(255),\n normalized: true\n };\n }\n}\n\nconst defaultProps: DefaultProps<MeshLayerProps> = {\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\n/** All properties supported by MeshLayer. */\nexport type MeshLayerProps<DataT = unknown> = _MeshLayerProps & SimpleMeshLayerProps<DataT>;\n\n/** Properties added by MeshLayer. */\ntype _MeshLayerProps = {\n /**\n * PBR material object. _lighting must be pbr for this to work\n */\n pbrMaterial?: any; // TODO add type when converting Tile3DLayer\n\n /**\n * List of feature ids.\n */\n featureIds?: NumericArray | null;\n};\n\nexport default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<\n DataT,\n Required<_MeshLayerProps> & ExtraProps\n> {\n static layerName = 'MeshLayer';\n static defaultProps = defaultProps;\n\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 const attributeManager = this.getAttributeManager();\n if (featureIds) {\n // attributeManager is always defined in a primitive layer\n attributeManager!.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState(params: UpdateParameters<this>) {\n super.updateState(params);\n\n const {props, oldProps} = params;\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 // eslint-disable-next-line camelcase\n u_Camera: this.state.model.uniforms.project_uCameraPosition,\n pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n protected getModel(mesh: Mesh): Model {\n const {id, pbrMaterial} = this.props;\n const parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);\n // Keep material to explicitly remove textures\n this.setState({parsedPBRMaterial});\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.device, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n bufferLayout: this.getAttributeManager()!.getBufferLayouts(),\n defines: {\n ...shaders.defines,\n ...parsedPBRMaterial?.defines,\n HAS_UV_REGIONS: mesh.attributes.uvRegions ? 1 : 0\n },\n parameters: parsedPBRMaterial?.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 parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh as Mesh);\n // Keep material to explicitly remove textures\n this.setState({parsedPBRMaterial});\n model.setBindings(parsedPBRMaterial.bindings);\n model.setUniforms(parsedPBRMaterial.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh: Mesh): ParsedPBRMaterial {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n\n return parsePBRMaterial(\n this.context.device,\n {unlit, ...pbrMaterial},\n {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n {\n pbrDebug: false,\n lights: true,\n useTangents: false\n }\n );\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n // This updater is only called if featureIds is not null\n const featureIds = this.props.featureIds!;\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 finalizeState(context: LayerContext) {\n super.finalizeState(context);\n this.state.parsedPBRMaterial?.generatedTextures.forEach(texture => texture.destroy());\n this.setState({parsedPBRMaterial: null});\n }\n}\n"],"file":"mesh-layer.js"}