@kepler.gl/deckgl-layers 3.3.0-alpha.1 → 3.3.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/3d-building-layer/3d-building-layer.js +66 -0
- package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
- package/dist/cjs/3d-building-layer/types.js +6 -0
- package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
- package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
- package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
- package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
- package/dist/cjs/globe/atmosphere-layer.js +341 -0
- package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
- package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
- package/dist/cjs/globe/globe-layers.js +574 -0
- package/dist/cjs/globe/globe-stars-layer.js +99 -0
- package/dist/cjs/globe/globe-stars-layer.spec.js +42 -0
- package/dist/cjs/globe/globe-view.js +404 -0
- package/dist/cjs/globe/index.js +140 -0
- package/dist/cjs/globe/mvt-label-layer.js +190 -0
- package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
- package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
- package/dist/cjs/index.js +163 -0
- package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
- package/dist/cjs/layer-utils/cluster-utils.js +95 -0
- package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
- package/dist/cjs/layer-utils/globe-cell-utils.js +203 -0
- package/dist/cjs/layer-utils/globe-cell-utils.spec.js +118 -0
- package/dist/cjs/layer-utils/shader-utils.js +38 -0
- package/dist/cjs/line-layer/line-layer.js +95 -0
- package/dist/cjs/raster/images.js +271 -0
- package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
- package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
- package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
- package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
- package/dist/cjs/raster/types.js +6 -0
- package/dist/cjs/raster/util.js +139 -0
- package/dist/cjs/raster/webgl/color/colormap.js +45 -0
- package/dist/cjs/raster/webgl/color/filter.js +58 -0
- package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
- package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
- package/dist/cjs/raster/webgl/color/saturation.js +42 -0
- package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
- package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
- package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
- package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
- package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
- package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
- package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
- package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
- package/dist/{raster → cjs/raster}/webgl/texture/mask.js +5 -2
- package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
- package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
- package/dist/cjs/raster/webgl/types.js +6 -0
- package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
- package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
- package/dist/cjs/wms/wms-layer.js +624 -0
- package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
- package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
- package/dist/esm/3d-building-layer/types.js +3 -0
- package/dist/esm/cluster-layer/cluster-layer.js +286 -0
- package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
- package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
- package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
- package/dist/esm/globe/atmosphere-layer.js +335 -0
- package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
- package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
- package/dist/esm/globe/globe-layers.js +566 -0
- package/dist/esm/globe/globe-stars-layer.js +92 -0
- package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
- package/dist/esm/globe/globe-view.js +398 -0
- package/dist/esm/globe/index.js +26 -0
- package/dist/esm/globe/mvt-label-layer.js +187 -0
- package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
- package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/layer-utils/aggregation-utils.js +172 -0
- package/dist/esm/layer-utils/cluster-utils.js +89 -0
- package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
- package/dist/esm/layer-utils/globe-cell-utils.js +197 -0
- package/dist/esm/layer-utils/globe-cell-utils.spec.js +115 -0
- package/dist/esm/layer-utils/shader-utils.js +32 -0
- package/dist/esm/line-layer/line-layer.js +91 -0
- package/dist/esm/raster/images.js +267 -0
- package/dist/esm/raster/pipeline-validation-patch.js +94 -0
- package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
- package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
- package/dist/esm/raster/raster-processing-uniforms.js +118 -0
- package/dist/esm/raster/types.js +3 -0
- package/dist/esm/raster/util.js +134 -0
- package/dist/esm/raster/webgl/color/colormap.js +39 -0
- package/dist/esm/raster/webgl/color/filter.js +52 -0
- package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
- package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
- package/dist/esm/raster/webgl/color/saturation.js +36 -0
- package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
- package/dist/esm/raster/webgl/index.js +26 -0
- package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
- package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
- package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
- package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
- package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
- package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
- package/dist/esm/raster/webgl/texture/mask.js +47 -0
- package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
- package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
- package/dist/esm/raster/webgl/types.js +3 -0
- package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
- package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
- package/dist/esm/wms/wms-layer.js +619 -0
- package/dist/globe/atmosphere-layer.d.ts +58 -0
- package/dist/globe/enhanced-multi-icon-layer.d.ts +6 -0
- package/dist/globe/globe-depth-disk-layer.d.ts +19 -0
- package/dist/globe/globe-layers.d.ts +108 -0
- package/dist/globe/globe-stars-layer.d.ts +10 -0
- package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
- package/dist/globe/globe-view.d.ts +23 -0
- package/dist/globe/index.d.ts +8 -0
- package/dist/globe/mvt-label-layer.d.ts +7928 -0
- package/dist/grid-layer/enhanced-cpu-grid-layer.d.ts +138 -56
- package/dist/hexagon-layer/enhanced-hexagon-layer.d.ts +138 -56
- package/dist/index.d.ts +1 -0
- package/dist/layer-utils/cluster-utils.d.ts +6 -1
- package/dist/layer-utils/globe-cell-utils.d.ts +30 -0
- package/dist/layer-utils/globe-cell-utils.spec.d.ts +1 -0
- package/dist/raster/images.d.ts +10 -1
- package/dist/raster/raster-layer/raster-layer.d.ts +4 -0
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.d.ts +4 -0
- package/dist/svg-icon-layer/scatterplot-icon-layer.d.ts +4 -1
- package/dist/wms/wms-layer.d.ts +27 -0
- package/package.json +22 -13
- package/dist/3d-building-layer/3d-building-layer.js +0 -66
- package/dist/3d-building-layer/3d-building-utils.js +0 -166
- package/dist/3d-building-layer/types.js +0 -6
- package/dist/cluster-layer/cluster-layer.js +0 -293
- package/dist/column-layer/enhanced-column-layer.js +0 -135
- package/dist/deckgl-extensions/filter-shader-module.js +0 -26
- package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -90
- package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -108
- package/dist/index.js +0 -152
- package/dist/layer-utils/aggregation-utils.js +0 -181
- package/dist/layer-utils/cluster-utils.js +0 -93
- package/dist/layer-utils/cpu-aggregator.js +0 -798
- package/dist/layer-utils/shader-utils.js +0 -38
- package/dist/line-layer/line-layer.js +0 -95
- package/dist/raster/images.js +0 -259
- package/dist/raster/pipeline-validation-patch.js +0 -101
- package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
- package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-layer/raster-layer.js +0 -237
- package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
- package/dist/raster/raster-mesh-layer/matrix.js +0 -18
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
- package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -271
- package/dist/raster/raster-processing-uniforms.js +0 -124
- package/dist/raster/types.js +0 -6
- package/dist/raster/util.js +0 -139
- package/dist/raster/webgl/color/colormap.js +0 -45
- package/dist/raster/webgl/color/filter.js +0 -58
- package/dist/raster/webgl/color/gamma-contrast.js +0 -68
- package/dist/raster/webgl/color/linear-rescale.js +0 -35
- package/dist/raster/webgl/color/saturation.js +0 -42
- package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
- package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
- package/dist/raster/webgl/spectral-indices/evi.js +0 -26
- package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
- package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
- package/dist/raster/webgl/spectral-indices/savi.js +0 -21
- package/dist/raster/webgl/texture/combine-bands.js +0 -65
- package/dist/raster/webgl/texture/reorder-bands.js +0 -72
- package/dist/raster/webgl/texture/rgba-image.js +0 -34
- package/dist/raster/webgl/types.js +0 -6
- package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -51
- package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
- package/dist/wms/wms-layer.js +0 -424
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
5
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
6
|
+
import _get from "@babel/runtime/helpers/esm/get";
|
|
7
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
8
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
12
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
13
|
+
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
14
|
+
// SPDX-License-Identifier: MIT
|
|
15
|
+
// Copyright contributors to the kepler.gl project
|
|
16
|
+
|
|
17
|
+
import { WebMercatorViewport } from '@deck.gl/core';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* deck.gl's aggregation cell layers (GridCellLayer / HexagonCellLayer) position
|
|
21
|
+
* each cell in flat mercator "common space" (a 2D XY plane) and then draw it with
|
|
22
|
+
* `project_common_position_to_clipspace`, which only multiplies by the
|
|
23
|
+
* view-projection matrix. Under `_GlobeView` this leaves the cells on the flat XY
|
|
24
|
+
* plane that passes through the center of the globe instead of on its surface
|
|
25
|
+
* (the base ColumnLayer works on the globe because it feeds real lng/lat through
|
|
26
|
+
* `project_position` -> `project_globe_`; the aggregation cell shaders skip that).
|
|
27
|
+
*
|
|
28
|
+
* To fix this we remap the already-computed flat common-space vertex position back
|
|
29
|
+
* to lng/lat (inverse Web Mercator) and then onto the sphere with the same math
|
|
30
|
+
* `project_globe_` uses for geographic layers. Because we remap every vertex of the
|
|
31
|
+
* cell footprint (not just the centroid), the flat quad/hexagon naturally curves
|
|
32
|
+
* onto the surface. Elevation (extruded cells, stored in `geometry.position.z` in
|
|
33
|
+
* common units) is added along the radius so columns rise radially off the globe.
|
|
34
|
+
*
|
|
35
|
+
* The remap is gated by a `globeMode` uniform so 2D/3D mercator rendering is
|
|
36
|
+
* byte-for-byte unchanged.
|
|
37
|
+
*
|
|
38
|
+
* `WORLD_SCALE`, `PI`, `GLOBE_RADIUS` and `project.commonOrigin` are all provided
|
|
39
|
+
* by deck.gl's project shader module which these layers include.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
// deck.gl 9 / luma 9 sets custom uniforms via UBO-backed shader modules (there is
|
|
43
|
+
// no Model.setUniforms). This minimal module exposes the globe-mode flag.
|
|
44
|
+
var globeCellUniforms = {
|
|
45
|
+
name: 'globeCell',
|
|
46
|
+
vs: "layout(std140) uniform globeCellUniforms {\n float globeMode;\n} globeCellProps;\n",
|
|
47
|
+
uniformTypes: {
|
|
48
|
+
globeMode: 'f32'
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
var GLOBE_CELL_DECL = /* glsl */"\n// Inverse of deck.gl project_mercator_: flat common XY -> lng/lat (degrees).\nvec2 kepler_commonToLngLat(vec2 commonXY) {\n float lng = degrees(commonXY.x / WORLD_SCALE - PI);\n float lat = degrees(2.0 * atan(exp(commonXY.y / WORLD_SCALE - PI)) - PI * 0.5);\n return vec2(lng, lat);\n}\n\n// Same math as deck.gl project_globe_. elevationCommon is in common units already\n// (GLOBE_RADIUS space), matching how project_globe_ scales z off EARTH_RADIUS.\nvec3 kepler_lngLatToGlobe(vec2 lngLat, float elevationCommon) {\n float lambda = radians(lngLat.x);\n float phi = radians(lngLat.y);\n float cosPhi = cos(phi);\n float D = GLOBE_RADIUS + elevationCommon;\n return vec3(\n sin(lambda) * cosPhi,\n -cos(lambda) * cosPhi,\n sin(phi)\n ) * D;\n}\n";
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Rewrites a grid/hexagon cell vertex shader so that, in globe mode, the final
|
|
55
|
+
* clip-space position is derived from the sphere surface instead of the flat XY
|
|
56
|
+
* plane. In 2D/3D mode the original path is kept unchanged.
|
|
57
|
+
*/
|
|
58
|
+
export function addGlobeCellProjection(vs, type) {
|
|
59
|
+
var decl = "".concat(GLOBE_CELL_DECL, "\nvoid main(void) {");
|
|
60
|
+
var withDecl = vs.includes('void main(void) {') ? vs.replace('void main(void) {', decl) : vs;
|
|
61
|
+
var target = 'gl_Position = project_common_position_to_clipspace(geometry.position);';
|
|
62
|
+
if (!withDecl.includes(target)) {
|
|
63
|
+
// Shader shape changed in a deck.gl update; leave the original so we don't crash.
|
|
64
|
+
// eslint-disable-next-line no-console
|
|
65
|
+
console.error("Cannot edit ".concat(type, " globe cell shader"));
|
|
66
|
+
return withDecl;
|
|
67
|
+
}
|
|
68
|
+
return withDecl.replace(target, "if (globeCellProps.globeMode > 0.5) {\n vec2 lngLat = kepler_commonToLngLat(geometry.position.xy + project.commonOrigin.xy);\n vec3 globePos = kepler_lngLatToGlobe(lngLat, geometry.position.z);\n geometry.position = vec4(globePos, 1.0);\n }\n gl_Position = project_common_position_to_clipspace(geometry.position);");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* deck.gl 9's Grid/Hexagon aggregation compute bin positions and the cell layer's
|
|
73
|
+
* "common space" from `this.context.viewport`. Under `_GlobeView` that common space
|
|
74
|
+
* is the globe's 3D-projected space (projectFlat is identity on lng/lat, positions
|
|
75
|
+
* bin off the sphere-projected XY), which both mis-bins data and — combined with the
|
|
76
|
+
* flat cell shader — drops cells onto the plane through the globe center.
|
|
77
|
+
*
|
|
78
|
+
* We sidestep this by running `_updateBinOptions` with a WebMercatorViewport that
|
|
79
|
+
* matches the current globe camera. That makes binning, `cellOriginCommon` /
|
|
80
|
+
* `cellSizeCommon` (or `radiusCommon` / `hexOriginCommon`) and the cell shader's
|
|
81
|
+
* flat position all live in genuine Web Mercator common space, which the cell shader
|
|
82
|
+
* remap (`addGlobeCellProjection`) then curves back onto the sphere. In 2D/3D mode
|
|
83
|
+
* this is a no-op.
|
|
84
|
+
*
|
|
85
|
+
* `callSuper` runs deck.gl's original `_updateBinOptions` while the viewport is
|
|
86
|
+
* temporarily swapped. The swap is synchronous and restored in `finally`.
|
|
87
|
+
*/
|
|
88
|
+
export function runBinOptionsWithMercatorViewport(layer, callSuper) {
|
|
89
|
+
var _layer$context;
|
|
90
|
+
var viewport = (_layer$context = layer.context) === null || _layer$context === void 0 ? void 0 : _layer$context.viewport;
|
|
91
|
+
var isGlobe = Boolean(viewport === null || viewport === void 0 ? void 0 : viewport.resolution);
|
|
92
|
+
if (!isGlobe) {
|
|
93
|
+
callSuper();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
var mercatorViewport = new WebMercatorViewport({
|
|
97
|
+
width: viewport.width,
|
|
98
|
+
height: viewport.height,
|
|
99
|
+
longitude: viewport.longitude,
|
|
100
|
+
latitude: viewport.latitude,
|
|
101
|
+
zoom: viewport.zoom
|
|
102
|
+
});
|
|
103
|
+
var originalViewport = layer.context.viewport;
|
|
104
|
+
layer.context.viewport = mercatorViewport;
|
|
105
|
+
try {
|
|
106
|
+
callSuper();
|
|
107
|
+
} finally {
|
|
108
|
+
layer.context.viewport = originalViewport;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Wraps a deck.gl aggregation cell layer class (GridCellLayer / HexagonCellLayer)
|
|
114
|
+
* with a subclass that injects the globe surface remap into its vertex shader.
|
|
115
|
+
*
|
|
116
|
+
* We create the subclass dynamically from whatever default class deck.gl provides
|
|
117
|
+
* to `getSubLayerClass` so we don't have to import the (non-public) cell layer
|
|
118
|
+
* classes directly. Results are cached per base class so deck.gl sees a stable
|
|
119
|
+
* layer class across renders (layers are recreated every frame) and shader
|
|
120
|
+
* compilation / sublayer diffing stays stable.
|
|
121
|
+
*/
|
|
122
|
+
var globeCellClassCache = new WeakMap();
|
|
123
|
+
/**
|
|
124
|
+
* deck.gl's GridCellLayer / HexagonCellLayer bind the `colorRange` palette
|
|
125
|
+
* texture only when the `colorRange` *prop* changes. ColumnLayer (the parent)
|
|
126
|
+
* destroys and recreates `fillModel` whenever `extensionsChanged` fires —
|
|
127
|
+
* which happens when Light & Shadow registers the shadow shader module.
|
|
128
|
+
* The new model starts with empty bindings, the colorRange check is a no-op,
|
|
129
|
+
* and luma.gl skips the draw: "Binding colorRange not found in …-cells-fill-cached".
|
|
130
|
+
* Recreating the Kepler layer "fixes" it because initialize/update then sees a
|
|
131
|
+
* colorRange change against empty oldProps and binds the texture again.
|
|
132
|
+
*
|
|
133
|
+
* Re-bind the existing texture onto whatever fillModel is current. Harmless
|
|
134
|
+
* when the parent already bound it; required after a model rebuild.
|
|
135
|
+
*/
|
|
136
|
+
function bindColorRangeTexture(layer, moduleName) {
|
|
137
|
+
var _layer$state, _layer$state2;
|
|
138
|
+
var model = (_layer$state = layer.state) === null || _layer$state === void 0 ? void 0 : _layer$state.fillModel;
|
|
139
|
+
var colorTexture = (_layer$state2 = layer.state) === null || _layer$state2 === void 0 ? void 0 : _layer$state2.colorTexture;
|
|
140
|
+
if (model !== null && model !== void 0 && model.shaderInputs && colorTexture) {
|
|
141
|
+
model.shaderInputs.setProps(_defineProperty({}, moduleName, {
|
|
142
|
+
colorRange: colorTexture
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export function makeGlobeCellLayerClass(BaseCellLayer, type) {
|
|
147
|
+
var cached = globeCellClassCache.get(BaseCellLayer);
|
|
148
|
+
if (cached) {
|
|
149
|
+
return cached;
|
|
150
|
+
}
|
|
151
|
+
var GlobeCellLayer = /*#__PURE__*/function (_ref) {
|
|
152
|
+
function GlobeCellLayer() {
|
|
153
|
+
_classCallCheck(this, GlobeCellLayer);
|
|
154
|
+
return _callSuper(this, GlobeCellLayer, arguments);
|
|
155
|
+
}
|
|
156
|
+
_inherits(GlobeCellLayer, _ref);
|
|
157
|
+
return _createClass(GlobeCellLayer, [{
|
|
158
|
+
key: "getShaders",
|
|
159
|
+
value: function getShaders() {
|
|
160
|
+
var shaders = _superPropGet(GlobeCellLayer, "getShaders", this, 3)([]);
|
|
161
|
+
return _objectSpread(_objectSpread({}, shaders), {}, {
|
|
162
|
+
vs: addGlobeCellProjection(shaders.vs, type),
|
|
163
|
+
modules: [].concat(_toConsumableArray(shaders.modules || []), [globeCellUniforms])
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}, {
|
|
167
|
+
key: "updateState",
|
|
168
|
+
value: function updateState(params) {
|
|
169
|
+
_superPropGet(GlobeCellLayer, "updateState", this, 3)([params]);
|
|
170
|
+
bindColorRangeTexture(this, type);
|
|
171
|
+
}
|
|
172
|
+
}, {
|
|
173
|
+
key: "draw",
|
|
174
|
+
value: function draw(opts) {
|
|
175
|
+
var globeMode = this.context.viewport.resolution ? 1.0 : 0.0;
|
|
176
|
+
// GridCellLayer / HexagonCellLayer render through a single fillModel and set
|
|
177
|
+
// their own module props in draw(); set ours first so it merges (setProps is
|
|
178
|
+
// per-module). deck.gl 9 has no Model.setUniforms — uniforms go through
|
|
179
|
+
// shaderInputs UBO modules.
|
|
180
|
+
var model = this.state.fillModel;
|
|
181
|
+
if (model !== null && model !== void 0 && model.shaderInputs) {
|
|
182
|
+
model.shaderInputs.setProps({
|
|
183
|
+
globeCell: {
|
|
184
|
+
globeMode: globeMode
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
bindColorRangeTexture(this, type);
|
|
189
|
+
_superPropGet(GlobeCellLayer, "draw", this, 3)([opts]);
|
|
190
|
+
}
|
|
191
|
+
}]);
|
|
192
|
+
}(BaseCellLayer);
|
|
193
|
+
GlobeCellLayer.layerName = "Globe".concat(type, "CellLayer");
|
|
194
|
+
globeCellClassCache.set(BaseCellLayer, GlobeCellLayer);
|
|
195
|
+
return GlobeCellLayer;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXZWJNZXJjYXRvclZpZXdwb3J0IiwiZ2xvYmVDZWxsVW5pZm9ybXMiLCJuYW1lIiwidnMiLCJ1bmlmb3JtVHlwZXMiLCJnbG9iZU1vZGUiLCJHTE9CRV9DRUxMX0RFQ0wiLCJhZGRHbG9iZUNlbGxQcm9qZWN0aW9uIiwidHlwZSIsImRlY2wiLCJjb25jYXQiLCJ3aXRoRGVjbCIsImluY2x1ZGVzIiwicmVwbGFjZSIsInRhcmdldCIsImNvbnNvbGUiLCJlcnJvciIsInJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydCIsImxheWVyIiwiY2FsbFN1cGVyIiwiX2xheWVyJGNvbnRleHQiLCJ2aWV3cG9ydCIsImNvbnRleHQiLCJpc0dsb2JlIiwiQm9vbGVhbiIsInJlc29sdXRpb24iLCJtZXJjYXRvclZpZXdwb3J0Iiwid2lkdGgiLCJoZWlnaHQiLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsInpvb20iLCJvcmlnaW5hbFZpZXdwb3J0IiwiZ2xvYmVDZWxsQ2xhc3NDYWNoZSIsIldlYWtNYXAiLCJiaW5kQ29sb3JSYW5nZVRleHR1cmUiLCJtb2R1bGVOYW1lIiwiX2xheWVyJHN0YXRlIiwiX2xheWVyJHN0YXRlMiIsIm1vZGVsIiwic3RhdGUiLCJmaWxsTW9kZWwiLCJjb2xvclRleHR1cmUiLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNvbG9yUmFuZ2UiLCJtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyIsIkJhc2VDZWxsTGF5ZXIiLCJjYWNoZWQiLCJnZXQiLCJHbG9iZUNlbGxMYXllciIsIl9yZWYiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwiYXJndW1lbnRzIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJnZXRTaGFkZXJzIiwic2hhZGVycyIsIl9zdXBlclByb3BHZXQiLCJfb2JqZWN0U3ByZWFkIiwibW9kdWxlcyIsIl90b0NvbnN1bWFibGVBcnJheSIsInVwZGF0ZVN0YXRlIiwicGFyYW1zIiwiZHJhdyIsIm9wdHMiLCJnbG9iZUNlbGwiLCJsYXllck5hbWUiLCJzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5ZXItdXRpbHMvZ2xvYmUtY2VsbC11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1dlYk1lcmNhdG9yVmlld3BvcnR9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuXG4vKipcbiAqIGRlY2suZ2wncyBhZ2dyZWdhdGlvbiBjZWxsIGxheWVycyAoR3JpZENlbGxMYXllciAvIEhleGFnb25DZWxsTGF5ZXIpIHBvc2l0aW9uXG4gKiBlYWNoIGNlbGwgaW4gZmxhdCBtZXJjYXRvciBcImNvbW1vbiBzcGFjZVwiIChhIDJEIFhZIHBsYW5lKSBhbmQgdGhlbiBkcmF3IGl0IHdpdGhcbiAqIGBwcm9qZWN0X2NvbW1vbl9wb3NpdGlvbl90b19jbGlwc3BhY2VgLCB3aGljaCBvbmx5IG11bHRpcGxpZXMgYnkgdGhlXG4gKiB2aWV3LXByb2plY3Rpb24gbWF0cml4LiBVbmRlciBgX0dsb2JlVmlld2AgdGhpcyBsZWF2ZXMgdGhlIGNlbGxzIG9uIHRoZSBmbGF0IFhZXG4gKiBwbGFuZSB0aGF0IHBhc3NlcyB0aHJvdWdoIHRoZSBjZW50ZXIgb2YgdGhlIGdsb2JlIGluc3RlYWQgb2Ygb24gaXRzIHN1cmZhY2VcbiAqICh0aGUgYmFzZSBDb2x1bW5MYXllciB3b3JrcyBvbiB0aGUgZ2xvYmUgYmVjYXVzZSBpdCBmZWVkcyByZWFsIGxuZy9sYXQgdGhyb3VnaFxuICogYHByb2plY3RfcG9zaXRpb25gIC0+IGBwcm9qZWN0X2dsb2JlX2A7IHRoZSBhZ2dyZWdhdGlvbiBjZWxsIHNoYWRlcnMgc2tpcCB0aGF0KS5cbiAqXG4gKiBUbyBmaXggdGhpcyB3ZSByZW1hcCB0aGUgYWxyZWFkeS1jb21wdXRlZCBmbGF0IGNvbW1vbi1zcGFjZSB2ZXJ0ZXggcG9zaXRpb24gYmFja1xuICogdG8gbG5nL2xhdCAoaW52ZXJzZSBXZWIgTWVyY2F0b3IpIGFuZCB0aGVuIG9udG8gdGhlIHNwaGVyZSB3aXRoIHRoZSBzYW1lIG1hdGhcbiAqIGBwcm9qZWN0X2dsb2JlX2AgdXNlcyBmb3IgZ2VvZ3JhcGhpYyBsYXllcnMuIEJlY2F1c2Ugd2UgcmVtYXAgZXZlcnkgdmVydGV4IG9mIHRoZVxuICogY2VsbCBmb290cHJpbnQgKG5vdCBqdXN0IHRoZSBjZW50cm9pZCksIHRoZSBmbGF0IHF1YWQvaGV4YWdvbiBuYXR1cmFsbHkgY3VydmVzXG4gKiBvbnRvIHRoZSBzdXJmYWNlLiBFbGV2YXRpb24gKGV4dHJ1ZGVkIGNlbGxzLCBzdG9yZWQgaW4gYGdlb21ldHJ5LnBvc2l0aW9uLnpgIGluXG4gKiBjb21tb24gdW5pdHMpIGlzIGFkZGVkIGFsb25nIHRoZSByYWRpdXMgc28gY29sdW1ucyByaXNlIHJhZGlhbGx5IG9mZiB0aGUgZ2xvYmUuXG4gKlxuICogVGhlIHJlbWFwIGlzIGdhdGVkIGJ5IGEgYGdsb2JlTW9kZWAgdW5pZm9ybSBzbyAyRC8zRCBtZXJjYXRvciByZW5kZXJpbmcgaXNcbiAqIGJ5dGUtZm9yLWJ5dGUgdW5jaGFuZ2VkLlxuICpcbiAqIGBXT1JMRF9TQ0FMRWAsIGBQSWAsIGBHTE9CRV9SQURJVVNgIGFuZCBgcHJvamVjdC5jb21tb25PcmlnaW5gIGFyZSBhbGwgcHJvdmlkZWRcbiAqIGJ5IGRlY2suZ2wncyBwcm9qZWN0IHNoYWRlciBtb2R1bGUgd2hpY2ggdGhlc2UgbGF5ZXJzIGluY2x1ZGUuXG4gKi9cblxuLy8gZGVjay5nbCA5IC8gbHVtYSA5IHNldHMgY3VzdG9tIHVuaWZvcm1zIHZpYSBVQk8tYmFja2VkIHNoYWRlciBtb2R1bGVzICh0aGVyZSBpc1xuLy8gbm8gTW9kZWwuc2V0VW5pZm9ybXMpLiBUaGlzIG1pbmltYWwgbW9kdWxlIGV4cG9zZXMgdGhlIGdsb2JlLW1vZGUgZmxhZy5cbmNvbnN0IGdsb2JlQ2VsbFVuaWZvcm1zID0ge1xuICBuYW1lOiAnZ2xvYmVDZWxsJyxcbiAgdnM6IGBsYXlvdXQoc3RkMTQwKSB1bmlmb3JtIGdsb2JlQ2VsbFVuaWZvcm1zIHtcbiAgZmxvYXQgZ2xvYmVNb2RlO1xufSBnbG9iZUNlbGxQcm9wcztcbmAsXG4gIHVuaWZvcm1UeXBlczoge1xuICAgIGdsb2JlTW9kZTogJ2YzMidcbiAgfVxufSBhcyBjb25zdDtcblxuY29uc3QgR0xPQkVfQ0VMTF9ERUNMID0gLyogZ2xzbCAqLyBgXG4vLyBJbnZlcnNlIG9mIGRlY2suZ2wgcHJvamVjdF9tZXJjYXRvcl86IGZsYXQgY29tbW9uIFhZIC0+IGxuZy9sYXQgKGRlZ3JlZXMpLlxudmVjMiBrZXBsZXJfY29tbW9uVG9MbmdMYXQodmVjMiBjb21tb25YWSkge1xuICBmbG9hdCBsbmcgPSBkZWdyZWVzKGNvbW1vblhZLnggLyBXT1JMRF9TQ0FMRSAtIFBJKTtcbiAgZmxvYXQgbGF0ID0gZGVncmVlcygyLjAgKiBhdGFuKGV4cChjb21tb25YWS55IC8gV09STERfU0NBTEUgLSBQSSkpIC0gUEkgKiAwLjUpO1xuICByZXR1cm4gdmVjMihsbmcsIGxhdCk7XG59XG5cbi8vIFNhbWUgbWF0aCBhcyBkZWNrLmdsIHByb2plY3RfZ2xvYmVfLiBlbGV2YXRpb25Db21tb24gaXMgaW4gY29tbW9uIHVuaXRzIGFscmVhZHlcbi8vIChHTE9CRV9SQURJVVMgc3BhY2UpLCBtYXRjaGluZyBob3cgcHJvamVjdF9nbG9iZV8gc2NhbGVzIHogb2ZmIEVBUlRIX1JBRElVUy5cbnZlYzMga2VwbGVyX2xuZ0xhdFRvR2xvYmUodmVjMiBsbmdMYXQsIGZsb2F0IGVsZXZhdGlvbkNvbW1vbikge1xuICBmbG9hdCBsYW1iZGEgPSByYWRpYW5zKGxuZ0xhdC54KTtcbiAgZmxvYXQgcGhpID0gcmFkaWFucyhsbmdMYXQueSk7XG4gIGZsb2F0IGNvc1BoaSA9IGNvcyhwaGkpO1xuICBmbG9hdCBEID0gR0xPQkVfUkFESVVTICsgZWxldmF0aW9uQ29tbW9uO1xuICByZXR1cm4gdmVjMyhcbiAgICBzaW4obGFtYmRhKSAqIGNvc1BoaSxcbiAgICAtY29zKGxhbWJkYSkgKiBjb3NQaGksXG4gICAgc2luKHBoaSlcbiAgKSAqIEQ7XG59XG5gO1xuXG4vKipcbiAqIFJld3JpdGVzIGEgZ3JpZC9oZXhhZ29uIGNlbGwgdmVydGV4IHNoYWRlciBzbyB0aGF0LCBpbiBnbG9iZSBtb2RlLCB0aGUgZmluYWxcbiAqIGNsaXAtc3BhY2UgcG9zaXRpb24gaXMgZGVyaXZlZCBmcm9tIHRoZSBzcGhlcmUgc3VyZmFjZSBpbnN0ZWFkIG9mIHRoZSBmbGF0IFhZXG4gKiBwbGFuZS4gSW4gMkQvM0QgbW9kZSB0aGUgb3JpZ2luYWwgcGF0aCBpcyBrZXB0IHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEdsb2JlQ2VsbFByb2plY3Rpb24odnM6IHN0cmluZywgdHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZGVjbCA9IGAke0dMT0JFX0NFTExfREVDTH1cXG52b2lkIG1haW4odm9pZCkge2A7XG4gIGNvbnN0IHdpdGhEZWNsID0gdnMuaW5jbHVkZXMoJ3ZvaWQgbWFpbih2b2lkKSB7JykgPyB2cy5yZXBsYWNlKCd2b2lkIG1haW4odm9pZCkgeycsIGRlY2wpIDogdnM7XG5cbiAgY29uc3QgdGFyZ2V0ID0gJ2dsX1Bvc2l0aW9uID0gcHJvamVjdF9jb21tb25fcG9zaXRpb25fdG9fY2xpcHNwYWNlKGdlb21ldHJ5LnBvc2l0aW9uKTsnO1xuICBpZiAoIXdpdGhEZWNsLmluY2x1ZGVzKHRhcmdldCkpIHtcbiAgICAvLyBTaGFkZXIgc2hhcGUgY2hhbmdlZCBpbiBhIGRlY2suZ2wgdXBkYXRlOyBsZWF2ZSB0aGUgb3JpZ2luYWwgc28gd2UgZG9uJ3QgY3Jhc2guXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKGBDYW5ub3QgZWRpdCAke3R5cGV9IGdsb2JlIGNlbGwgc2hhZGVyYCk7XG4gICAgcmV0dXJuIHdpdGhEZWNsO1xuICB9XG5cbiAgcmV0dXJuIHdpdGhEZWNsLnJlcGxhY2UoXG4gICAgdGFyZ2V0LFxuICAgIGBpZiAoZ2xvYmVDZWxsUHJvcHMuZ2xvYmVNb2RlID4gMC41KSB7XG4gICAgICB2ZWMyIGxuZ0xhdCA9IGtlcGxlcl9jb21tb25Ub0xuZ0xhdChnZW9tZXRyeS5wb3NpdGlvbi54eSArIHByb2plY3QuY29tbW9uT3JpZ2luLnh5KTtcbiAgICAgIHZlYzMgZ2xvYmVQb3MgPSBrZXBsZXJfbG5nTGF0VG9HbG9iZShsbmdMYXQsIGdlb21ldHJ5LnBvc2l0aW9uLnopO1xuICAgICAgZ2VvbWV0cnkucG9zaXRpb24gPSB2ZWM0KGdsb2JlUG9zLCAxLjApO1xuICAgIH1cbiAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfY29tbW9uX3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShnZW9tZXRyeS5wb3NpdGlvbik7YFxuICApO1xufVxuXG4vKipcbiAqIGRlY2suZ2wgOSdzIEdyaWQvSGV4YWdvbiBhZ2dyZWdhdGlvbiBjb21wdXRlIGJpbiBwb3NpdGlvbnMgYW5kIHRoZSBjZWxsIGxheWVyJ3NcbiAqIFwiY29tbW9uIHNwYWNlXCIgZnJvbSBgdGhpcy5jb250ZXh0LnZpZXdwb3J0YC4gVW5kZXIgYF9HbG9iZVZpZXdgIHRoYXQgY29tbW9uIHNwYWNlXG4gKiBpcyB0aGUgZ2xvYmUncyAzRC1wcm9qZWN0ZWQgc3BhY2UgKHByb2plY3RGbGF0IGlzIGlkZW50aXR5IG9uIGxuZy9sYXQsIHBvc2l0aW9uc1xuICogYmluIG9mZiB0aGUgc3BoZXJlLXByb2plY3RlZCBYWSksIHdoaWNoIGJvdGggbWlzLWJpbnMgZGF0YSBhbmQg4oCUIGNvbWJpbmVkIHdpdGggdGhlXG4gKiBmbGF0IGNlbGwgc2hhZGVyIOKAlCBkcm9wcyBjZWxscyBvbnRvIHRoZSBwbGFuZSB0aHJvdWdoIHRoZSBnbG9iZSBjZW50ZXIuXG4gKlxuICogV2Ugc2lkZXN0ZXAgdGhpcyBieSBydW5uaW5nIGBfdXBkYXRlQmluT3B0aW9uc2Agd2l0aCBhIFdlYk1lcmNhdG9yVmlld3BvcnQgdGhhdFxuICogbWF0Y2hlcyB0aGUgY3VycmVudCBnbG9iZSBjYW1lcmEuIFRoYXQgbWFrZXMgYmlubmluZywgYGNlbGxPcmlnaW5Db21tb25gIC9cbiAqIGBjZWxsU2l6ZUNvbW1vbmAgKG9yIGByYWRpdXNDb21tb25gIC8gYGhleE9yaWdpbkNvbW1vbmApIGFuZCB0aGUgY2VsbCBzaGFkZXInc1xuICogZmxhdCBwb3NpdGlvbiBhbGwgbGl2ZSBpbiBnZW51aW5lIFdlYiBNZXJjYXRvciBjb21tb24gc3BhY2UsIHdoaWNoIHRoZSBjZWxsIHNoYWRlclxuICogcmVtYXAgKGBhZGRHbG9iZUNlbGxQcm9qZWN0aW9uYCkgdGhlbiBjdXJ2ZXMgYmFjayBvbnRvIHRoZSBzcGhlcmUuIEluIDJELzNEIG1vZGVcbiAqIHRoaXMgaXMgYSBuby1vcC5cbiAqXG4gKiBgY2FsbFN1cGVyYCBydW5zIGRlY2suZ2wncyBvcmlnaW5hbCBgX3VwZGF0ZUJpbk9wdGlvbnNgIHdoaWxlIHRoZSB2aWV3cG9ydCBpc1xuICogdGVtcG9yYXJpbHkgc3dhcHBlZC4gVGhlIHN3YXAgaXMgc3luY2hyb25vdXMgYW5kIHJlc3RvcmVkIGluIGBmaW5hbGx5YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkJpbk9wdGlvbnNXaXRoTWVyY2F0b3JWaWV3cG9ydChsYXllcjogYW55LCBjYWxsU3VwZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgY29uc3Qgdmlld3BvcnQgPSBsYXllci5jb250ZXh0Py52aWV3cG9ydDtcbiAgY29uc3QgaXNHbG9iZSA9IEJvb2xlYW4odmlld3BvcnQ/LnJlc29sdXRpb24pO1xuICBpZiAoIWlzR2xvYmUpIHtcbiAgICBjYWxsU3VwZXIoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtZXJjYXRvclZpZXdwb3J0ID0gbmV3IFdlYk1lcmNhdG9yVmlld3BvcnQoe1xuICAgIHdpZHRoOiB2aWV3cG9ydC53aWR0aCxcbiAgICBoZWlnaHQ6IHZpZXdwb3J0LmhlaWdodCxcbiAgICBsb25naXR1ZGU6IHZpZXdwb3J0LmxvbmdpdHVkZSxcbiAgICBsYXRpdHVkZTogdmlld3BvcnQubGF0aXR1ZGUsXG4gICAgem9vbTogdmlld3BvcnQuem9vbVxuICB9KTtcblxuICBjb25zdCBvcmlnaW5hbFZpZXdwb3J0ID0gbGF5ZXIuY29udGV4dC52aWV3cG9ydDtcbiAgbGF5ZXIuY29udGV4dC52aWV3cG9ydCA9IG1lcmNhdG9yVmlld3BvcnQ7XG4gIHRyeSB7XG4gICAgY2FsbFN1cGVyKCk7XG4gIH0gZmluYWxseSB7XG4gICAgbGF5ZXIuY29udGV4dC52aWV3cG9ydCA9IG9yaWdpbmFsVmlld3BvcnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwcyBhIGRlY2suZ2wgYWdncmVnYXRpb24gY2VsbCBsYXllciBjbGFzcyAoR3JpZENlbGxMYXllciAvIEhleGFnb25DZWxsTGF5ZXIpXG4gKiB3aXRoIGEgc3ViY2xhc3MgdGhhdCBpbmplY3RzIHRoZSBnbG9iZSBzdXJmYWNlIHJlbWFwIGludG8gaXRzIHZlcnRleCBzaGFkZXIuXG4gKlxuICogV2UgY3JlYXRlIHRoZSBzdWJjbGFzcyBkeW5hbWljYWxseSBmcm9tIHdoYXRldmVyIGRlZmF1bHQgY2xhc3MgZGVjay5nbCBwcm92aWRlc1xuICogdG8gYGdldFN1YkxheWVyQ2xhc3NgIHNvIHdlIGRvbid0IGhhdmUgdG8gaW1wb3J0IHRoZSAobm9uLXB1YmxpYykgY2VsbCBsYXllclxuICogY2xhc3NlcyBkaXJlY3RseS4gUmVzdWx0cyBhcmUgY2FjaGVkIHBlciBiYXNlIGNsYXNzIHNvIGRlY2suZ2wgc2VlcyBhIHN0YWJsZVxuICogbGF5ZXIgY2xhc3MgYWNyb3NzIHJlbmRlcnMgKGxheWVycyBhcmUgcmVjcmVhdGVkIGV2ZXJ5IGZyYW1lKSBhbmQgc2hhZGVyXG4gKiBjb21waWxhdGlvbiAvIHN1YmxheWVyIGRpZmZpbmcgc3RheXMgc3RhYmxlLlxuICovXG5jb25zdCBnbG9iZUNlbGxDbGFzc0NhY2hlID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBvYmplY3Q+KCk7XG5cbnR5cGUgTGF5ZXJDb25zdHJ1Y3RvciA9IHtuZXcgKC4uLmFyZ3M6IGFueVtdKTogYW55OyBsYXllck5hbWU/OiBzdHJpbmd9O1xuXG4vKipcbiAqIGRlY2suZ2wncyBHcmlkQ2VsbExheWVyIC8gSGV4YWdvbkNlbGxMYXllciBiaW5kIHRoZSBgY29sb3JSYW5nZWAgcGFsZXR0ZVxuICogdGV4dHVyZSBvbmx5IHdoZW4gdGhlIGBjb2xvclJhbmdlYCAqcHJvcCogY2hhbmdlcy4gQ29sdW1uTGF5ZXIgKHRoZSBwYXJlbnQpXG4gKiBkZXN0cm95cyBhbmQgcmVjcmVhdGVzIGBmaWxsTW9kZWxgIHdoZW5ldmVyIGBleHRlbnNpb25zQ2hhbmdlZGAgZmlyZXMg4oCUXG4gKiB3aGljaCBoYXBwZW5zIHdoZW4gTGlnaHQgJiBTaGFkb3cgcmVnaXN0ZXJzIHRoZSBzaGFkb3cgc2hhZGVyIG1vZHVsZS5cbiAqIFRoZSBuZXcgbW9kZWwgc3RhcnRzIHdpdGggZW1wdHkgYmluZGluZ3MsIHRoZSBjb2xvclJhbmdlIGNoZWNrIGlzIGEgbm8tb3AsXG4gKiBhbmQgbHVtYS5nbCBza2lwcyB0aGUgZHJhdzogXCJCaW5kaW5nIGNvbG9yUmFuZ2Ugbm90IGZvdW5kIGluIOKApi1jZWxscy1maWxsLWNhY2hlZFwiLlxuICogUmVjcmVhdGluZyB0aGUgS2VwbGVyIGxheWVyIFwiZml4ZXNcIiBpdCBiZWNhdXNlIGluaXRpYWxpemUvdXBkYXRlIHRoZW4gc2VlcyBhXG4gKiBjb2xvclJhbmdlIGNoYW5nZSBhZ2FpbnN0IGVtcHR5IG9sZFByb3BzIGFuZCBiaW5kcyB0aGUgdGV4dHVyZSBhZ2Fpbi5cbiAqXG4gKiBSZS1iaW5kIHRoZSBleGlzdGluZyB0ZXh0dXJlIG9udG8gd2hhdGV2ZXIgZmlsbE1vZGVsIGlzIGN1cnJlbnQuIEhhcm1sZXNzXG4gKiB3aGVuIHRoZSBwYXJlbnQgYWxyZWFkeSBib3VuZCBpdDsgcmVxdWlyZWQgYWZ0ZXIgYSBtb2RlbCByZWJ1aWxkLlxuICovXG5mdW5jdGlvbiBiaW5kQ29sb3JSYW5nZVRleHR1cmUobGF5ZXI6IGFueSwgbW9kdWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IG1vZGVsID0gbGF5ZXIuc3RhdGU/LmZpbGxNb2RlbDtcbiAgY29uc3QgY29sb3JUZXh0dXJlID0gbGF5ZXIuc3RhdGU/LmNvbG9yVGV4dHVyZTtcbiAgaWYgKG1vZGVsPy5zaGFkZXJJbnB1dHMgJiYgY29sb3JUZXh0dXJlKSB7XG4gICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtbbW9kdWxlTmFtZV06IHtjb2xvclJhbmdlOiBjb2xvclRleHR1cmV9fSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VHbG9iZUNlbGxMYXllckNsYXNzPFQgZXh0ZW5kcyBMYXllckNvbnN0cnVjdG9yPihcbiAgQmFzZUNlbGxMYXllcjogVCxcbiAgdHlwZTogc3RyaW5nXG4pOiBUIHtcbiAgY29uc3QgY2FjaGVkID0gZ2xvYmVDZWxsQ2xhc3NDYWNoZS5nZXQoQmFzZUNlbGxMYXllcik7XG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkIGFzIFQ7XG4gIH1cblxuICBjbGFzcyBHbG9iZUNlbGxMYXllciBleHRlbmRzIChCYXNlQ2VsbExheWVyIGFzIHtuZXcgKC4uLmFyZ3M6IGFueVtdKTogYW55fSkge1xuICAgIGdldFNoYWRlcnMoKSB7XG4gICAgICBjb25zdCBzaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc2hhZGVycyxcbiAgICAgICAgdnM6IGFkZEdsb2JlQ2VsbFByb2plY3Rpb24oc2hhZGVycy52cywgdHlwZSksXG4gICAgICAgIG1vZHVsZXM6IFsuLi4oc2hhZGVycy5tb2R1bGVzIHx8IFtdKSwgZ2xvYmVDZWxsVW5pZm9ybXNdXG4gICAgICB9O1xuICAgIH1cblxuICAgIHVwZGF0ZVN0YXRlKHBhcmFtczogYW55KSB7XG4gICAgICBzdXBlci51cGRhdGVTdGF0ZShwYXJhbXMpO1xuICAgICAgYmluZENvbG9yUmFuZ2VUZXh0dXJlKHRoaXMsIHR5cGUpO1xuICAgIH1cblxuICAgIGRyYXcob3B0czogYW55KSB7XG4gICAgICBjb25zdCBnbG9iZU1vZGUgPSAodGhpcy5jb250ZXh0LnZpZXdwb3J0IGFzIGFueSkucmVzb2x1dGlvbiA/IDEuMCA6IDAuMDtcbiAgICAgIC8vIEdyaWRDZWxsTGF5ZXIgLyBIZXhhZ29uQ2VsbExheWVyIHJlbmRlciB0aHJvdWdoIGEgc2luZ2xlIGZpbGxNb2RlbCBhbmQgc2V0XG4gICAgICAvLyB0aGVpciBvd24gbW9kdWxlIHByb3BzIGluIGRyYXcoKTsgc2V0IG91cnMgZmlyc3Qgc28gaXQgbWVyZ2VzIChzZXRQcm9wcyBpc1xuICAgICAgLy8gcGVyLW1vZHVsZSkuIGRlY2suZ2wgOSBoYXMgbm8gTW9kZWwuc2V0VW5pZm9ybXMg4oCUIHVuaWZvcm1zIGdvIHRocm91Z2hcbiAgICAgIC8vIHNoYWRlcklucHV0cyBVQk8gbW9kdWxlcy5cbiAgICAgIGNvbnN0IG1vZGVsID0gKHRoaXMuc3RhdGUgYXMgYW55KS5maWxsTW9kZWw7XG4gICAgICBpZiAobW9kZWw/LnNoYWRlcklucHV0cykge1xuICAgICAgICBtb2RlbC5zaGFkZXJJbnB1dHMuc2V0UHJvcHMoe2dsb2JlQ2VsbDoge2dsb2JlTW9kZX19KTtcbiAgICAgIH1cbiAgICAgIGJpbmRDb2xvclJhbmdlVGV4dHVyZSh0aGlzLCB0eXBlKTtcbiAgICAgIHN1cGVyLmRyYXcob3B0cyk7XG4gICAgfVxuICB9XG4gIChHbG9iZUNlbGxMYXllciBhcyB1bmtub3duIGFzIHtsYXllck5hbWU6IHN0cmluZ30pLmxheWVyTmFtZSA9IGBHbG9iZSR7dHlwZX1DZWxsTGF5ZXJgO1xuICBnbG9iZUNlbGxDbGFzc0NhY2hlLnNldChCYXNlQ2VsbExheWVyLCBHbG9iZUNlbGxMYXllcik7XG4gIHJldHVybiBHbG9iZUNlbGxMYXllciBhcyB1bmtub3duIGFzIFQ7XG59XG4iXSwi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
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
|
+
// SPDX-License-Identifier: MIT
|
|
5
|
+
// Copyright contributors to the kepler.gl project
|
|
6
|
+
|
|
7
|
+
import { makeGlobeCellLayerClass } from './globe-cell-utils';
|
|
8
|
+
function makeFakeCellLayerClass() {
|
|
9
|
+
return /*#__PURE__*/function () {
|
|
10
|
+
function FakeCellLayer() {
|
|
11
|
+
_classCallCheck(this, FakeCellLayer);
|
|
12
|
+
_defineProperty(this, "state", {});
|
|
13
|
+
_defineProperty(this, "context", {
|
|
14
|
+
viewport: {}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return _createClass(FakeCellLayer, [{
|
|
18
|
+
key: "getShaders",
|
|
19
|
+
value: function getShaders() {
|
|
20
|
+
return {
|
|
21
|
+
vs: 'void main(void) { gl_Position = project_common_position_to_clipspace(geometry.position); }',
|
|
22
|
+
modules: []
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// deck.gl ColumnLayer recreates fillModel on extensionsChanged and does not
|
|
27
|
+
// copy over the colorRange texture binding. GridCellLayer / HexagonCellLayer
|
|
28
|
+
// only bind that texture when the colorRange *prop* changes.
|
|
29
|
+
}, {
|
|
30
|
+
key: "updateState",
|
|
31
|
+
value: function updateState(_params) {
|
|
32
|
+
this.state.fillModel = {
|
|
33
|
+
shaderInputs: {
|
|
34
|
+
setProps: jest.fn()
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}, {
|
|
39
|
+
key: "draw",
|
|
40
|
+
value: function draw(_opts) {
|
|
41
|
+
// no-op stub so GlobeCellLayer.draw can call super.draw()
|
|
42
|
+
}
|
|
43
|
+
}]);
|
|
44
|
+
}();
|
|
45
|
+
}
|
|
46
|
+
describe('globe-cell-utils colorRange rebind', function () {
|
|
47
|
+
test('rebinds colorRange onto a rebuilt fillModel (grid)', function () {
|
|
48
|
+
var _layer$state$fillMode;
|
|
49
|
+
var GlobeGridCell = makeGlobeCellLayerClass(makeFakeCellLayerClass(), 'grid');
|
|
50
|
+
var layer = new GlobeGridCell();
|
|
51
|
+
layer.state.colorTexture = {
|
|
52
|
+
id: 'color-range-tex'
|
|
53
|
+
};
|
|
54
|
+
layer.updateState({
|
|
55
|
+
changeFlags: {
|
|
56
|
+
extensionsChanged: true
|
|
57
|
+
},
|
|
58
|
+
props: {
|
|
59
|
+
colorRange: ['#fff']
|
|
60
|
+
},
|
|
61
|
+
oldProps: {
|
|
62
|
+
colorRange: ['#fff']
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
expect((_layer$state$fillMode = layer.state.fillModel) === null || _layer$state$fillMode === void 0 ? void 0 : _layer$state$fillMode.shaderInputs.setProps).toHaveBeenCalledWith({
|
|
66
|
+
grid: {
|
|
67
|
+
colorRange: layer.state.colorTexture
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
test('rebinds colorRange onto a rebuilt fillModel (hexagon)', function () {
|
|
72
|
+
var _layer$state$fillMode2;
|
|
73
|
+
var GlobeHexCell = makeGlobeCellLayerClass(makeFakeCellLayerClass(), 'hexagon');
|
|
74
|
+
var layer = new GlobeHexCell();
|
|
75
|
+
layer.state.colorTexture = {
|
|
76
|
+
id: 'color-range-tex'
|
|
77
|
+
};
|
|
78
|
+
layer.updateState({
|
|
79
|
+
changeFlags: {
|
|
80
|
+
extensionsChanged: true
|
|
81
|
+
},
|
|
82
|
+
props: {
|
|
83
|
+
colorRange: ['#fff']
|
|
84
|
+
},
|
|
85
|
+
oldProps: {
|
|
86
|
+
colorRange: ['#fff']
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
expect((_layer$state$fillMode2 = layer.state.fillModel) === null || _layer$state$fillMode2 === void 0 ? void 0 : _layer$state$fillMode2.shaderInputs.setProps).toHaveBeenCalledWith({
|
|
90
|
+
hexagon: {
|
|
91
|
+
colorRange: layer.state.colorTexture
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
test('draw also rebinds colorRange so the first frame after rebuild is valid', function () {
|
|
96
|
+
var GlobeGridCell = makeGlobeCellLayerClass(makeFakeCellLayerClass(), 'grid');
|
|
97
|
+
var layer = new GlobeGridCell();
|
|
98
|
+
var setProps = jest.fn();
|
|
99
|
+
layer.state.colorTexture = {
|
|
100
|
+
id: 'color-range-tex'
|
|
101
|
+
};
|
|
102
|
+
layer.state.fillModel = {
|
|
103
|
+
shaderInputs: {
|
|
104
|
+
setProps: setProps
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
layer.draw({});
|
|
108
|
+
expect(setProps).toHaveBeenCalledWith({
|
|
109
|
+
grid: {
|
|
110
|
+
colorRange: layer.state.colorTexture
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyIsIm1ha2VGYWtlQ2VsbExheWVyQ2xhc3MiLCJGYWtlQ2VsbExheWVyIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnR5Iiwidmlld3BvcnQiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsImdldFNoYWRlcnMiLCJ2cyIsIm1vZHVsZXMiLCJ1cGRhdGVTdGF0ZSIsIl9wYXJhbXMiLCJzdGF0ZSIsImZpbGxNb2RlbCIsInNoYWRlcklucHV0cyIsInNldFByb3BzIiwiamVzdCIsImZuIiwiZHJhdyIsIl9vcHRzIiwiZGVzY3JpYmUiLCJ0ZXN0IiwiX2xheWVyJHN0YXRlJGZpbGxNb2RlIiwiR2xvYmVHcmlkQ2VsbCIsImxheWVyIiwiY29sb3JUZXh0dXJlIiwiaWQiLCJjaGFuZ2VGbGFncyIsImV4dGVuc2lvbnNDaGFuZ2VkIiwicHJvcHMiLCJjb2xvclJhbmdlIiwib2xkUHJvcHMiLCJleHBlY3QiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsImdyaWQiLCJfbGF5ZXIkc3RhdGUkZmlsbE1vZGUyIiwiR2xvYmVIZXhDZWxsIiwiaGV4YWdvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllci11dGlscy9nbG9iZS1jZWxsLXV0aWxzLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHttYWtlR2xvYmVDZWxsTGF5ZXJDbGFzc30gZnJvbSAnLi9nbG9iZS1jZWxsLXV0aWxzJztcblxuZnVuY3Rpb24gbWFrZUZha2VDZWxsTGF5ZXJDbGFzcygpIHtcbiAgcmV0dXJuIGNsYXNzIEZha2VDZWxsTGF5ZXIge1xuICAgIHN0YXRlOiB7XG4gICAgICBmaWxsTW9kZWw/OiB7c2hhZGVySW5wdXRzOiB7c2V0UHJvcHM6IGplc3QuTW9ja319O1xuICAgICAgY29sb3JUZXh0dXJlPzoge2lkOiBzdHJpbmd9O1xuICAgIH0gPSB7fTtcbiAgICBjb250ZXh0ID0ge3ZpZXdwb3J0OiB7fX07XG5cbiAgICBnZXRTaGFkZXJzKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdnM6ICd2b2lkIG1haW4odm9pZCkgeyBnbF9Qb3NpdGlvbiA9IHByb2plY3RfY29tbW9uX3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShnZW9tZXRyeS5wb3NpdGlvbik7IH0nLFxuICAgICAgICBtb2R1bGVzOiBbXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBkZWNrLmdsIENvbHVtbkxheWVyIHJlY3JlYXRlcyBmaWxsTW9kZWwgb24gZXh0ZW5zaW9uc0NoYW5nZWQgYW5kIGRvZXMgbm90XG4gICAgLy8gY29weSBvdmVyIHRoZSBjb2xvclJhbmdlIHRleHR1cmUgYmluZGluZy4gR3JpZENlbGxMYXllciAvIEhleGFnb25DZWxsTGF5ZXJcbiAgICAvLyBvbmx5IGJpbmQgdGhhdCB0ZXh0dXJlIHdoZW4gdGhlIGNvbG9yUmFuZ2UgKnByb3AqIGNoYW5nZXMuXG4gICAgdXBkYXRlU3RhdGUoX3BhcmFtcz86IHVua25vd24pIHtcbiAgICAgIHRoaXMuc3RhdGUuZmlsbE1vZGVsID0ge3NoYWRlcklucHV0czoge3NldFByb3BzOiBqZXN0LmZuKCl9fTtcbiAgICB9XG5cbiAgICBkcmF3KF9vcHRzPzogdW5rbm93bikge1xuICAgICAgLy8gbm8tb3Agc3R1YiBzbyBHbG9iZUNlbGxMYXllci5kcmF3IGNhbiBjYWxsIHN1cGVyLmRyYXcoKVxuICAgIH1cbiAgfTtcbn1cblxuZGVzY3JpYmUoJ2dsb2JlLWNlbGwtdXRpbHMgY29sb3JSYW5nZSByZWJpbmQnLCAoKSA9PiB7XG4gIHRlc3QoJ3JlYmluZHMgY29sb3JSYW5nZSBvbnRvIGEgcmVidWlsdCBmaWxsTW9kZWwgKGdyaWQpJywgKCkgPT4ge1xuICAgIGNvbnN0IEdsb2JlR3JpZENlbGwgPSBtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyhtYWtlRmFrZUNlbGxMYXllckNsYXNzKCksICdncmlkJyk7XG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgR2xvYmVHcmlkQ2VsbCgpO1xuICAgIGxheWVyLnN0YXRlLmNvbG9yVGV4dHVyZSA9IHtpZDogJ2NvbG9yLXJhbmdlLXRleCd9O1xuXG4gICAgbGF5ZXIudXBkYXRlU3RhdGUoe1xuICAgICAgY2hhbmdlRmxhZ3M6IHtleHRlbnNpb25zQ2hhbmdlZDogdHJ1ZX0sXG4gICAgICBwcm9wczoge2NvbG9yUmFuZ2U6IFsnI2ZmZiddfSxcbiAgICAgIG9sZFByb3BzOiB7Y29sb3JSYW5nZTogWycjZmZmJ119XG4gICAgfSk7XG5cbiAgICBleHBlY3QobGF5ZXIuc3RhdGUuZmlsbE1vZGVsPy5zaGFkZXJJbnB1dHMuc2V0UHJvcHMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgIGdyaWQ6IHtjb2xvclJhbmdlOiBsYXllci5zdGF0ZS5jb2xvclRleHR1cmV9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3JlYmluZHMgY29sb3JSYW5nZSBvbnRvIGEgcmVidWlsdCBmaWxsTW9kZWwgKGhleGFnb24pJywgKCkgPT4ge1xuICAgIGNvbnN0IEdsb2JlSGV4Q2VsbCA9IG1ha2VHbG9iZUNlbGxMYXllckNsYXNzKG1ha2VGYWtlQ2VsbExheWVyQ2xhc3MoKSwgJ2hleGFnb24nKTtcbiAgICBjb25zdCBsYXllciA9IG5ldyBHbG9iZUhleENlbGwoKTtcbiAgICBsYXllci5zdGF0ZS5jb2xvclRleHR1cmUgPSB7aWQ6ICdjb2xvci1yYW5nZS10ZXgnfTtcblxuICAgIGxheWVyLnVwZGF0ZVN0YXRlKHtcbiAgICAgIGNoYW5nZUZsYWdzOiB7ZXh0ZW5zaW9uc0NoYW5nZWQ6IHRydWV9LFxuICAgICAgcHJvcHM6IHtjb2xvclJhbmdlOiBbJyNmZmYnXX0sXG4gICAgICBvbGRQcm9wczoge2NvbG9yUmFuZ2U6IFsnI2ZmZiddfVxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGxheWVyLnN0YXRlLmZpbGxNb2RlbD8uc2hhZGVySW5wdXRzLnNldFByb3BzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICBoZXhhZ29uOiB7Y29sb3JSYW5nZTogbGF5ZXIuc3RhdGUuY29sb3JUZXh0dXJlfVxuICAgIH0pO1xuICB9KTtcblxuICB0ZXN0KCdkcmF3IGFsc28gcmViaW5kcyBjb2xvclJhbmdlIHNvIHRoZSBmaXJzdCBmcmFtZSBhZnRlciByZWJ1aWxkIGlzIHZhbGlkJywgKCkgPT4ge1xuICAgIGNvbnN0IEdsb2JlR3JpZENlbGwgPSBtYWtlR2xvYmVDZWxsTGF5ZXJDbGFzcyhtYWtlRmFrZUNlbGxMYXllckNsYXNzKCksICdncmlkJyk7XG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgR2xvYmVHcmlkQ2VsbCgpO1xuICAgIGNvbnN0IHNldFByb3BzID0gamVzdC5mbigpO1xuICAgIGxheWVyLnN0YXRlLmNvbG9yVGV4dHVyZSA9IHtpZDogJ2NvbG9yLXJhbmdlLXRleCd9O1xuICAgIGxheWVyLnN0YXRlLmZpbGxNb2RlbCA9IHtzaGFkZXJJbnB1dHM6IHtzZXRQcm9wc319O1xuXG4gICAgbGF5ZXIuZHJhdyh7fSk7XG5cbiAgICBleHBlY3Qoc2V0UHJvcHMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgIGdyaWQ6IHtjb2xvclJhbmdlOiBsYXllci5zdGF0ZS5jb2xvclRleHR1cmV9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsdUJBQXVCLFFBQU8sb0JBQW9CO0FBRTFELFNBQVNDLHNCQUFzQkEsQ0FBQSxFQUFHO0VBQ2hDO0lBQUEsU0FBQUMsY0FBQTtNQUFBQyxlQUFBLE9BQUFELGFBQUE7TUFBQUUsZUFBQSxnQkFJTSxDQUFDLENBQUM7TUFBQUEsZUFBQSxrQkFDSTtRQUFDQyxRQUFRLEVBQUUsQ0FBQztNQUFDLENBQUM7SUFBQTtJQUFBLE9BQUFDLFlBQUEsQ0FBQUosYUFBQTtNQUFBSyxHQUFBO01BQUFDLEtBQUEsRUFFeEIsU0FBQUMsVUFBVUEsQ0FBQSxFQUFHO1FBQ1gsT0FBTztVQUNMQyxFQUFFLEVBQUUsNEZBQTRGO1VBQ2hHQyxPQUFPLEVBQUU7UUFDWCxDQUFDO01BQ0g7O01BRUE7TUFDQTtNQUNBO0lBQUE7TUFBQUosR0FBQTtNQUFBQyxLQUFBLEVBQ0EsU0FBQUksV0FBV0EsQ0FBQ0MsT0FBaUIsRUFBRTtRQUM3QixJQUFJLENBQUNDLEtBQUssQ0FBQ0MsU0FBUyxHQUFHO1VBQUNDLFlBQVksRUFBRTtZQUFDQyxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsRUFBRSxDQUFDO1VBQUM7UUFBQyxDQUFDO01BQzlEO0lBQUM7TUFBQVosR0FBQTtNQUFBQyxLQUFBLEVBRUQsU0FBQVksSUFBSUEsQ0FBQ0MsS0FBZSxFQUFFO1FBQ3BCO01BQUE7SUFDRDtFQUFBO0FBRUw7QUFFQUMsUUFBUSxDQUFDLG9DQUFvQyxFQUFFLFlBQU07RUFDbkRDLElBQUksQ0FBQyxvREFBb0QsRUFBRSxZQUFNO0lBQUEsSUFBQUMscUJBQUE7SUFDL0QsSUFBTUMsYUFBYSxHQUFHekIsdUJBQXVCLENBQUNDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDL0UsSUFBTXlCLEtBQUssR0FBRyxJQUFJRCxhQUFhLENBQUMsQ0FBQztJQUNqQ0MsS0FBSyxDQUFDWixLQUFLLENBQUNhLFlBQVksR0FBRztNQUFDQyxFQUFFLEVBQUU7SUFBaUIsQ0FBQztJQUVsREYsS0FBSyxDQUFDZCxXQUFXLENBQUM7TUFDaEJpQixXQUFXLEVBQUU7UUFBQ0MsaUJBQWlCLEVBQUU7TUFBSSxDQUFDO01BQ3RDQyxLQUFLLEVBQUU7UUFBQ0MsVUFBVSxFQUFFLENBQUMsTUFBTTtNQUFDLENBQUM7TUFDN0JDLFFBQVEsRUFBRTtRQUFDRCxVQUFVLEVBQUUsQ0FBQyxNQUFNO01BQUM7SUFDakMsQ0FBQyxDQUFDO0lBRUZFLE1BQU0sRUFBQVYscUJBQUEsR0FBQ0UsS0FBSyxDQUFDWixLQUFLLENBQUNDLFNBQVMsY0FBQVMscUJBQUEsdUJBQXJCQSxxQkFBQSxDQUF1QlIsWUFBWSxDQUFDQyxRQUFRLENBQUMsQ0FBQ2tCLG9CQUFvQixDQUFDO01BQ3hFQyxJQUFJLEVBQUU7UUFBQ0osVUFBVSxFQUFFTixLQUFLLENBQUNaLEtBQUssQ0FBQ2E7TUFBWTtJQUM3QyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFFRkosSUFBSSxDQUFDLHVEQUF1RCxFQUFFLFlBQU07SUFBQSxJQUFBYyxzQkFBQTtJQUNsRSxJQUFNQyxZQUFZLEdBQUd0Qyx1QkFBdUIsQ0FBQ0Msc0JBQXNCLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztJQUNqRixJQUFNeUIsS0FBSyxHQUFHLElBQUlZLFlBQVksQ0FBQyxDQUFDO0lBQ2hDWixLQUFLLENBQUNaLEtBQUssQ0FBQ2EsWUFBWSxHQUFHO01BQUNDLEVBQUUsRUFBRTtJQUFpQixDQUFDO0lBRWxERixLQUFLLENBQUNkLFdBQVcsQ0FBQztNQUNoQmlCLFdBQVcsRUFBRTtRQUFDQyxpQkFBaUIsRUFBRTtNQUFJLENBQUM7TUFDdENDLEtBQUssRUFBRTtRQUFDQyxVQUFVLEVBQUUsQ0FBQyxNQUFNO01BQUMsQ0FBQztNQUM3QkMsUUFBUSxFQUFFO1FBQUNELFVBQVUsRUFBRSxDQUFDLE1BQU07TUFBQztJQUNqQyxDQUFDLENBQUM7SUFFRkUsTUFBTSxFQUFBRyxzQkFBQSxHQUFDWCxLQUFLLENBQUNaLEtBQUssQ0FBQ0MsU0FBUyxjQUFBc0Isc0JBQUEsdUJBQXJCQSxzQkFBQSxDQUF1QnJCLFlBQVksQ0FBQ0MsUUFBUSxDQUFDLENBQUNrQixvQkFBb0IsQ0FBQztNQUN4RUksT0FBTyxFQUFFO1FBQUNQLFVBQVUsRUFBRU4sS0FBSyxDQUFDWixLQUFLLENBQUNhO01BQVk7SUFDaEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZKLElBQUksQ0FBQyx3RUFBd0UsRUFBRSxZQUFNO0lBQ25GLElBQU1FLGFBQWEsR0FBR3pCLHVCQUF1QixDQUFDQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQy9FLElBQU15QixLQUFLLEdBQUcsSUFBSUQsYUFBYSxDQUFDLENBQUM7SUFDakMsSUFBTVIsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCTyxLQUFLLENBQUNaLEtBQUssQ0FBQ2EsWUFBWSxHQUFHO01BQUNDLEVBQUUsRUFBRTtJQUFpQixDQUFDO0lBQ2xERixLQUFLLENBQUNaLEtBQUssQ0FBQ0MsU0FBUyxHQUFHO01BQUNDLFlBQVksRUFBRTtRQUFDQyxRQUFRLEVBQVJBO01BQVE7SUFBQyxDQUFDO0lBRWxEUyxLQUFLLENBQUNOLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVkYyxNQUFNLENBQUNqQixRQUFRLENBQUMsQ0FBQ2tCLG9CQUFvQixDQUFDO01BQ3BDQyxJQUFJLEVBQUU7UUFBQ0osVUFBVSxFQUFFTixLQUFLLENBQUNaLEtBQUssQ0FBQ2E7TUFBWTtJQUM3QyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Copyright contributors to the kepler.gl project
|
|
3
|
+
|
|
4
|
+
import { console as Console } from 'global/window';
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* Amendment to default layer vertex shader
|
|
8
|
+
* @param {string} vs
|
|
9
|
+
* @param {string} type
|
|
10
|
+
* @param {string} originalText
|
|
11
|
+
* @param {string} testToReplace
|
|
12
|
+
* @return {string} output shader
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
15
|
+
export function editShader(vs, type, originalText, testToReplace) {
|
|
16
|
+
if (!vs.includes(originalText)) {
|
|
17
|
+
// Here we call Console.error when we fail to edit deck.gl shader
|
|
18
|
+
// This should be caught by layer test
|
|
19
|
+
Console.error("Cannot edit ".concat(type, " layer shader"));
|
|
20
|
+
return vs;
|
|
21
|
+
}
|
|
22
|
+
return vs.replace(originalText, testToReplace);
|
|
23
|
+
}
|
|
24
|
+
export function insertBefore(vs, type, insertBeforeText, textToInsert) {
|
|
25
|
+
var at = vs.indexOf(insertBeforeText);
|
|
26
|
+
if (at < 0) {
|
|
27
|
+
Console.error("Cannot edit ".concat(type, " layer shader"));
|
|
28
|
+
return vs;
|
|
29
|
+
}
|
|
30
|
+
return vs.slice(0, at) + textToInsert + vs.slice(at);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25zb2xlIiwiQ29uc29sZSIsImVkaXRTaGFkZXIiLCJ2cyIsInR5cGUiLCJvcmlnaW5hbFRleHQiLCJ0ZXN0VG9SZXBsYWNlIiwiaW5jbHVkZXMiLCJlcnJvciIsImNvbmNhdCIsInJlcGxhY2UiLCJpbnNlcnRCZWZvcmUiLCJpbnNlcnRCZWZvcmVUZXh0IiwidGV4dFRvSW5zZXJ0IiwiYXQiLCJpbmRleE9mIiwic2xpY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5ZXItdXRpbHMvc2hhZGVyLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Y29uc29sZSBhcyBDb25zb2xlfSBmcm9tICdnbG9iYWwvd2luZG93JztcblxuLypcbiAqIEFtZW5kbWVudCB0byBkZWZhdWx0IGxheWVyIHZlcnRleCBzaGFkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSB2c1xuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXN0VG9SZXBsYWNlXG4gKiBAcmV0dXJuIHtzdHJpbmd9IG91dHB1dCBzaGFkZXJcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlZGl0U2hhZGVyKHZzOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgb3JpZ2luYWxUZXh0OiBzdHJpbmcsIHRlc3RUb1JlcGxhY2U6IHN0cmluZykge1xuICBpZiAoIXZzLmluY2x1ZGVzKG9yaWdpbmFsVGV4dCkpIHtcbiAgICAvLyBIZXJlIHdlIGNhbGwgQ29uc29sZS5lcnJvciB3aGVuIHdlIGZhaWwgdG8gZWRpdCBkZWNrLmdsIHNoYWRlclxuICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhdWdodCBieSBsYXllciB0ZXN0XG4gICAgQ29uc29sZS5lcnJvcihgQ2Fubm90IGVkaXQgJHt0eXBlfSBsYXllciBzaGFkZXJgKTtcbiAgICByZXR1cm4gdnM7XG4gIH1cblxuICByZXR1cm4gdnMucmVwbGFjZShvcmlnaW5hbFRleHQsIHRlc3RUb1JlcGxhY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKFxuICB2czogc3RyaW5nLFxuICB0eXBlOiBzdHJpbmcsXG4gIGluc2VydEJlZm9yZVRleHQ6IHN0cmluZyxcbiAgdGV4dFRvSW5zZXJ0OiBzdHJpbmdcbikge1xuICBjb25zdCBhdCA9IHZzLmluZGV4T2YoaW5zZXJ0QmVmb3JlVGV4dCk7XG4gIGlmIChhdCA8IDApIHtcbiAgICBDb25zb2xlLmVycm9yKGBDYW5ub3QgZWRpdCAke3R5cGV9IGxheWVyIHNoYWRlcmApO1xuICAgIHJldHVybiB2cztcbiAgfVxuXG4gIHJldHVybiB2cy5zbGljZSgwLCBhdCkgKyB0ZXh0VG9JbnNlcnQgKyB2cy5zbGljZShhdCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsT0FBTyxJQUFJQyxPQUFPLFFBQU8sZUFBZTs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQyxVQUFVQSxDQUFDQyxFQUFVLEVBQUVDLElBQVksRUFBRUMsWUFBb0IsRUFBRUMsYUFBcUIsRUFBRTtFQUNoRyxJQUFJLENBQUNILEVBQUUsQ0FBQ0ksUUFBUSxDQUFDRixZQUFZLENBQUMsRUFBRTtJQUM5QjtJQUNBO0lBQ0FKLE9BQU8sQ0FBQ08sS0FBSyxnQkFBQUMsTUFBQSxDQUFnQkwsSUFBSSxrQkFBZSxDQUFDO0lBQ2pELE9BQU9ELEVBQUU7RUFDWDtFQUVBLE9BQU9BLEVBQUUsQ0FBQ08sT0FBTyxDQUFDTCxZQUFZLEVBQUVDLGFBQWEsQ0FBQztBQUNoRDtBQUVBLE9BQU8sU0FBU0ssWUFBWUEsQ0FDMUJSLEVBQVUsRUFDVkMsSUFBWSxFQUNaUSxnQkFBd0IsRUFDeEJDLFlBQW9CLEVBQ3BCO0VBQ0EsSUFBTUMsRUFBRSxHQUFHWCxFQUFFLENBQUNZLE9BQU8sQ0FBQ0gsZ0JBQWdCLENBQUM7RUFDdkMsSUFBSUUsRUFBRSxHQUFHLENBQUMsRUFBRTtJQUNWYixPQUFPLENBQUNPLEtBQUssZ0JBQUFDLE1BQUEsQ0FBZ0JMLElBQUksa0JBQWUsQ0FBQztJQUNqRCxPQUFPRCxFQUFFO0VBQ1g7RUFFQSxPQUFPQSxFQUFFLENBQUNhLEtBQUssQ0FBQyxDQUFDLEVBQUVGLEVBQUUsQ0FBQyxHQUFHRCxZQUFZLEdBQUdWLEVBQUUsQ0FBQ2EsS0FBSyxDQUFDRixFQUFFLENBQUM7QUFDdEQiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
5
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
6
|
+
import _get from "@babel/runtime/helpers/esm/get";
|
|
7
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
8
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
9
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
10
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
|
+
function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
// SPDX-License-Identifier: MIT
|
|
15
|
+
// Copyright contributors to the kepler.gl project
|
|
16
|
+
|
|
17
|
+
import { LineLayer } from '@deck.gl/layers';
|
|
18
|
+
import { editShader } from '../';
|
|
19
|
+
var elevationScaleUniforms = {
|
|
20
|
+
name: 'elevationScale',
|
|
21
|
+
vs: "uniform elevationScaleUniforms {\n float elevationScale;\n} elevationScaleProps;\n",
|
|
22
|
+
uniformTypes: {
|
|
23
|
+
elevationScale: 'f32'
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var defaultProps = _objectSpread(_objectSpread({}, LineLayer.defaultProps), {}, {
|
|
27
|
+
getTargetColor: function getTargetColor(x) {
|
|
28
|
+
return x.color || [0, 0, 0, 255];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
function addInstanceColorShader(vs) {
|
|
32
|
+
var targetColorVs = editShader(vs, 'line target color vs', 'in vec4 instanceColors;', 'in vec4 instanceColors; in vec4 instanceTargetColors;');
|
|
33
|
+
return editShader(targetColorVs, 'line color vs', 'vColor = vec4(instanceColors.rgb, instanceColors.a * layer.opacity);', "vec4 color = mix(instanceColors, instanceTargetColors, positions.x);" + "vColor = vec4(color.rgb, color.a * layer.opacity);");
|
|
34
|
+
}
|
|
35
|
+
function addElevationScale(vs) {
|
|
36
|
+
return editShader(vs, 'line elevation scale vs - multiply by elevation scale', "geometry.worldPosition = instanceSourcePositions;\ngeometry.worldPositionAlt = instanceTargetPositions;\nvec3 source_world = instanceSourcePositions;\nvec3 target_world = instanceTargetPositions;", "vec3 source_world = instanceSourcePositions;\nvec3 target_world = instanceTargetPositions;\nsource_world.z *= elevationScaleProps.elevationScale;\ntarget_world.z *= elevationScaleProps.elevationScale;\ngeometry.worldPosition = source_world;\ngeometry.worldPositionAlt = target_world;");
|
|
37
|
+
}
|
|
38
|
+
var EnhancedLineLayer = /*#__PURE__*/function (_LineLayer) {
|
|
39
|
+
function EnhancedLineLayer() {
|
|
40
|
+
_classCallCheck(this, EnhancedLineLayer);
|
|
41
|
+
return _callSuper(this, EnhancedLineLayer, arguments);
|
|
42
|
+
}
|
|
43
|
+
_inherits(EnhancedLineLayer, _LineLayer);
|
|
44
|
+
return _createClass(EnhancedLineLayer, [{
|
|
45
|
+
key: "getShaders",
|
|
46
|
+
value: function getShaders() {
|
|
47
|
+
var shaders = _superPropGet(EnhancedLineLayer, "getShaders", this, 3)([]);
|
|
48
|
+
var vs = addInstanceColorShader(shaders.vs);
|
|
49
|
+
vs = addElevationScale(vs);
|
|
50
|
+
return _objectSpread(_objectSpread({}, shaders), {}, {
|
|
51
|
+
vs: vs,
|
|
52
|
+
modules: [].concat(_toConsumableArray(shaders.modules || []), [elevationScaleUniforms])
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}, {
|
|
56
|
+
key: "draw",
|
|
57
|
+
value: function draw(opts) {
|
|
58
|
+
var model = this.state.model;
|
|
59
|
+
if (model) {
|
|
60
|
+
var _this$props$elevation;
|
|
61
|
+
model.shaderInputs.setProps({
|
|
62
|
+
elevationScale: {
|
|
63
|
+
elevationScale: (_this$props$elevation = this.props.elevationScale) !== null && _this$props$elevation !== void 0 ? _this$props$elevation : 1
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
_superPropGet(EnhancedLineLayer, "draw", this, 3)([opts]);
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
key: "initializeState",
|
|
71
|
+
value: function initializeState() {
|
|
72
|
+
var _this$props$colorForm;
|
|
73
|
+
_superPropGet(EnhancedLineLayer, "initializeState", this, 3)([]);
|
|
74
|
+
var _ref = this.state,
|
|
75
|
+
attributeManager = _ref.attributeManager;
|
|
76
|
+
attributeManager.addInstanced({
|
|
77
|
+
instanceTargetColors: {
|
|
78
|
+
size: (_this$props$colorForm = this.props.colorFormat) === null || _this$props$colorForm === void 0 ? void 0 : _this$props$colorForm.length,
|
|
79
|
+
type: 'unorm8',
|
|
80
|
+
transition: true,
|
|
81
|
+
accessor: 'getTargetColor',
|
|
82
|
+
defaultValue: [0, 0, 0, 255]
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}]);
|
|
87
|
+
}(LineLayer);
|
|
88
|
+
export { EnhancedLineLayer as default };
|
|
89
|
+
EnhancedLineLayer.layerName = 'EnhancedLineLayer';
|
|
90
|
+
EnhancedLineLayer.defaultProps = defaultProps;
|
|
91
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMaW5lTGF5ZXIiLCJlZGl0U2hhZGVyIiwiZWxldmF0aW9uU2NhbGVVbmlmb3JtcyIsIm5hbWUiLCJ2cyIsInVuaWZvcm1UeXBlcyIsImVsZXZhdGlvblNjYWxlIiwiZGVmYXVsdFByb3BzIiwiX29iamVjdFNwcmVhZCIsImdldFRhcmdldENvbG9yIiwieCIsImNvbG9yIiwiYWRkSW5zdGFuY2VDb2xvclNoYWRlciIsInRhcmdldENvbG9yVnMiLCJhZGRFbGV2YXRpb25TY2FsZSIsIkVuaGFuY2VkTGluZUxheWVyIiwiX0xpbmVMYXllciIsIl9jbGFzc0NhbGxDaGVjayIsIl9jYWxsU3VwZXIiLCJhcmd1bWVudHMiLCJfaW5oZXJpdHMiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsImdldFNoYWRlcnMiLCJzaGFkZXJzIiwiX3N1cGVyUHJvcEdldCIsIm1vZHVsZXMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJkcmF3Iiwib3B0cyIsIm1vZGVsIiwic3RhdGUiLCJfdGhpcyRwcm9wcyRlbGV2YXRpb24iLCJzaGFkZXJJbnB1dHMiLCJzZXRQcm9wcyIsInByb3BzIiwiaW5pdGlhbGl6ZVN0YXRlIiwiX3RoaXMkcHJvcHMkY29sb3JGb3JtIiwiX3JlZiIsImF0dHJpYnV0ZU1hbmFnZXIiLCJhZGRJbnN0YW5jZWQiLCJpbnN0YW5jZVRhcmdldENvbG9ycyIsInNpemUiLCJjb2xvckZvcm1hdCIsImxlbmd0aCIsInR5cGUiLCJ0cmFuc2l0aW9uIiwiYWNjZXNzb3IiLCJkZWZhdWx0VmFsdWUiLCJkZWZhdWx0IiwibGF5ZXJOYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpbmUtbGF5ZXIvbGluZS1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0xpbmVMYXllciwgTGluZUxheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQgdHlwZSB7Q29sb3IsIEF0dHJpYnV0ZU1hbmFnZXJ9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtlZGl0U2hhZGVyfSBmcm9tICcuLi8nO1xuXG50eXBlIFJHQkFDb2xvciA9IENvbG9yO1xuXG5jb25zdCBlbGV2YXRpb25TY2FsZVVuaWZvcm1zID0ge1xuICBuYW1lOiAnZWxldmF0aW9uU2NhbGUnLFxuICB2czogYHVuaWZvcm0gZWxldmF0aW9uU2NhbGVVbmlmb3JtcyB7XG4gIGZsb2F0IGVsZXZhdGlvblNjYWxlO1xufSBlbGV2YXRpb25TY2FsZVByb3BzO1xuYCxcbiAgdW5pZm9ybVR5cGVzOiB7XG4gICAgZWxldmF0aW9uU2NhbGU6ICdmMzInXG4gIH1cbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uTGluZUxheWVyLmRlZmF1bHRQcm9wcyxcbiAgZ2V0VGFyZ2V0Q29sb3I6IHggPT4geC5jb2xvciB8fCBbMCwgMCwgMCwgMjU1XVxufTtcblxuZnVuY3Rpb24gYWRkSW5zdGFuY2VDb2xvclNoYWRlcih2cykge1xuICBjb25zdCB0YXJnZXRDb2xvclZzID0gZWRpdFNoYWRlcihcbiAgICB2cyxcbiAgICAnbGluZSB0YXJnZXQgY29sb3IgdnMnLFxuICAgICdpbiB2ZWM0IGluc3RhbmNlQ29sb3JzOycsXG4gICAgJ2luIHZlYzQgaW5zdGFuY2VDb2xvcnM7IGluIHZlYzQgaW5zdGFuY2VUYXJnZXRDb2xvcnM7J1xuICApO1xuXG4gIHJldHVybiBlZGl0U2hhZGVyKFxuICAgIHRhcmdldENvbG9yVnMsXG4gICAgJ2xpbmUgY29sb3IgdnMnLFxuICAgICd2Q29sb3IgPSB2ZWM0KGluc3RhbmNlQ29sb3JzLnJnYiwgaW5zdGFuY2VDb2xvcnMuYSAqIGxheWVyLm9wYWNpdHkpOycsXG4gICAgYHZlYzQgY29sb3IgPSBtaXgoaW5zdGFuY2VDb2xvcnMsIGluc3RhbmNlVGFyZ2V0Q29sb3JzLCBwb3NpdGlvbnMueCk7YCArXG4gICAgICBgdkNvbG9yID0gdmVjNChjb2xvci5yZ2IsIGNvbG9yLmEgKiBsYXllci5vcGFjaXR5KTtgXG4gICk7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZXZhdGlvblNjYWxlKHZzKSB7XG4gIHJldHVybiBlZGl0U2hhZGVyKFxuICAgIHZzLFxuICAgICdsaW5lIGVsZXZhdGlvbiBzY2FsZSB2cyAtIG11bHRpcGx5IGJ5IGVsZXZhdGlvbiBzY2FsZScsXG4gICAgYGdlb21ldHJ5LndvcmxkUG9zaXRpb24gPSBpbnN0YW5jZVNvdXJjZVBvc2l0aW9ucztcbmdlb21ldHJ5LndvcmxkUG9zaXRpb25BbHQgPSBpbnN0YW5jZVRhcmdldFBvc2l0aW9ucztcbnZlYzMgc291cmNlX3dvcmxkID0gaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnM7XG52ZWMzIHRhcmdldF93b3JsZCA9IGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zO2AsXG4gICAgYHZlYzMgc291cmNlX3dvcmxkID0gaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnM7XG52ZWMzIHRhcmdldF93b3JsZCA9IGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zO1xuc291cmNlX3dvcmxkLnogKj0gZWxldmF0aW9uU2NhbGVQcm9wcy5lbGV2YXRpb25TY2FsZTtcbnRhcmdldF93b3JsZC56ICo9IGVsZXZhdGlvblNjYWxlUHJvcHMuZWxldmF0aW9uU2NhbGU7XG5nZW9tZXRyeS53b3JsZFBvc2l0aW9uID0gc291cmNlX3dvcmxkO1xuZ2VvbWV0cnkud29ybGRQb3NpdGlvbkFsdCA9IHRhcmdldF93b3JsZDtgXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuaGFuY2VkTGluZUxheWVyIGV4dGVuZHMgTGluZUxheWVyPFxuICBhbnksXG4gIExpbmVMYXllclByb3BzPGFueT4gJiB7ZWxldmF0aW9uU2NhbGU6IG51bWJlcjsgZ2V0VGFyZ2V0Q29sb3I6IFJHQkFDb2xvcn1cbj4ge1xuICBnZXRTaGFkZXJzKCkge1xuICAgIGNvbnN0IHNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG5cbiAgICBsZXQgdnMgPSBhZGRJbnN0YW5jZUNvbG9yU2hhZGVyKHNoYWRlcnMudnMpO1xuICAgIHZzID0gYWRkRWxldmF0aW9uU2NhbGUodnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNoYWRlcnMsXG4gICAgICB2cyxcbiAgICAgIG1vZHVsZXM6IFsuLi4oc2hhZGVycy5tb2R1bGVzIHx8IFtdKSwgZWxldmF0aW9uU2NhbGVVbmlmb3Jtc11cbiAgICB9O1xuICB9XG5cbiAgZHJhdyhvcHRzKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgbW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgICAgZWxldmF0aW9uU2NhbGU6IHtcbiAgICAgICAgICBlbGV2YXRpb25TY2FsZTogdGhpcy5wcm9wcy5lbGV2YXRpb25TY2FsZSA/PyAxXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBzdXBlci5kcmF3KG9wdHMpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgIHN1cGVyLmluaXRpYWxpemVTdGF0ZSgpO1xuICAgIGNvbnN0IHthdHRyaWJ1dGVNYW5hZ2VyfSA9IHRoaXMuc3RhdGUgYXMge2F0dHJpYnV0ZU1hbmFnZXI6IEF0dHJpYnV0ZU1hbmFnZXJ9O1xuICAgIGF0dHJpYnV0ZU1hbmFnZXIuYWRkSW5zdGFuY2VkKHtcbiAgICAgIGluc3RhbmNlVGFyZ2V0Q29sb3JzOiB7XG4gICAgICAgIHNpemU6IHRoaXMucHJvcHMuY29sb3JGb3JtYXQ/Lmxlbmd0aCxcbiAgICAgICAgdHlwZTogJ3Vub3JtOCcsXG4gICAgICAgIHRyYW5zaXRpb246IHRydWUsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0VGFyZ2V0Q29sb3InLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IFswLCAwLCAwLCAyNTVdXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuRW5oYW5jZWRMaW5lTGF5ZXIubGF5ZXJOYW1lID0gJ0VuaGFuY2VkTGluZUxheWVyJztcbkVuaGFuY2VkTGluZUxheWVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsU0FBUyxRQUF1QixpQkFBaUI7QUFFekQsU0FBUUMsVUFBVSxRQUFPLEtBQUs7QUFJOUIsSUFBTUMsc0JBQXNCLEdBQUc7RUFDN0JDLElBQUksRUFBRSxnQkFBZ0I7RUFDdEJDLEVBQUUsdUZBR0g7RUFDQ0MsWUFBWSxFQUFFO0lBQ1pDLGNBQWMsRUFBRTtFQUNsQjtBQUNGLENBQUM7QUFFRCxJQUFNQyxZQUFZLEdBQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUNiUixTQUFTLENBQUNPLFlBQVk7RUFDekJFLGNBQWMsRUFBRSxTQUFoQkEsY0FBY0EsQ0FBRUMsQ0FBQztJQUFBLE9BQUlBLENBQUMsQ0FBQ0MsS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQUE7QUFBQSxFQUMvQztBQUVELFNBQVNDLHNCQUFzQkEsQ0FBQ1IsRUFBRSxFQUFFO0VBQ2xDLElBQU1TLGFBQWEsR0FBR1osVUFBVSxDQUM5QkcsRUFBRSxFQUNGLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsdURBQ0YsQ0FBQztFQUVELE9BQU9ILFVBQVUsQ0FDZlksYUFBYSxFQUNiLGVBQWUsRUFDZixzRUFBc0UsRUFDdEUsNkhBRUYsQ0FBQztBQUNIO0FBRUEsU0FBU0MsaUJBQWlCQSxDQUFDVixFQUFFLEVBQUU7RUFDN0IsT0FBT0gsVUFBVSxDQUNmRyxFQUFFLEVBQ0YsdURBQXVELHNlQVd6RCxDQUFDO0FBQ0g7QUFBQyxJQUVvQlcsaUJBQWlCLDBCQUFBQyxVQUFBO0VBQUEsU0FBQUQsa0JBQUE7SUFBQUUsZUFBQSxPQUFBRixpQkFBQTtJQUFBLE9BQUFHLFVBQUEsT0FBQUgsaUJBQUEsRUFBQUksU0FBQTtFQUFBO0VBQUFDLFNBQUEsQ0FBQUwsaUJBQUEsRUFBQUMsVUFBQTtFQUFBLE9BQUFLLFlBQUEsQ0FBQU4saUJBQUE7SUFBQU8sR0FBQTtJQUFBQyxLQUFBLEVBSXBDLFNBQUFDLFVBQVVBLENBQUEsRUFBRztNQUNYLElBQU1DLE9BQU8sR0FBQUMsYUFBQSxDQUFBWCxpQkFBQSw0QkFBcUI7TUFFbEMsSUFBSVgsRUFBRSxHQUFHUSxzQkFBc0IsQ0FBQ2EsT0FBTyxDQUFDckIsRUFBRSxDQUFDO01BQzNDQSxFQUFFLEdBQUdVLGlCQUFpQixDQUFDVixFQUFFLENBQUM7TUFFMUIsT0FBQUksYUFBQSxDQUFBQSxhQUFBLEtBQ0tpQixPQUFPO1FBQ1ZyQixFQUFFLEVBQUZBLEVBQUU7UUFDRnVCLE9BQU8sS0FBQUMsTUFBQSxDQUFBQyxrQkFBQSxDQUFPSixPQUFPLENBQUNFLE9BQU8sSUFBSSxFQUFFLElBQUd6QixzQkFBc0I7TUFBQztJQUVqRTtFQUFDO0lBQUFvQixHQUFBO0lBQUFDLEtBQUEsRUFFRCxTQUFBTyxJQUFJQSxDQUFDQyxJQUFJLEVBQUU7TUFDVCxJQUFNQyxLQUFLLEdBQUcsSUFBSSxDQUFDQyxLQUFLLENBQUNELEtBQUs7TUFDOUIsSUFBSUEsS0FBSyxFQUFFO1FBQUEsSUFBQUUscUJBQUE7UUFDVEYsS0FBSyxDQUFDRyxZQUFZLENBQUNDLFFBQVEsQ0FBQztVQUMxQjlCLGNBQWMsRUFBRTtZQUNkQSxjQUFjLEdBQUE0QixxQkFBQSxHQUFFLElBQUksQ0FBQ0csS0FBSyxDQUFDL0IsY0FBYyxjQUFBNEIscUJBQUEsY0FBQUEscUJBQUEsR0FBSTtVQUMvQztRQUNGLENBQUMsQ0FBQztNQUNKO01BQ0FSLGFBQUEsQ0FBQVgsaUJBQUEsb0JBQVdnQixJQUFJO0lBQ2pCO0VBQUM7SUFBQVQsR0FBQTtJQUFBQyxLQUFBLEVBRUQsU0FBQWUsZUFBZUEsQ0FBQSxFQUFHO01BQUEsSUFBQUMscUJBQUE7TUFDaEJiLGFBQUEsQ0FBQVgsaUJBQUE7TUFDQSxJQUFBeUIsSUFBQSxHQUEyQixJQUFJLENBQUNQLEtBQUs7UUFBOUJRLGdCQUFnQixHQUFBRCxJQUFBLENBQWhCQyxnQkFBZ0I7TUFDdkJBLGdCQUFnQixDQUFDQyxZQUFZLENBQUM7UUFDNUJDLG9CQUFvQixFQUFFO1VBQ3BCQyxJQUFJLEdBQUFMLHFCQUFBLEdBQUUsSUFBSSxDQUFDRixLQUFLLENBQUNRLFdBQVcsY0FBQU4scUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3Qk8sTUFBTTtVQUNwQ0MsSUFBSSxFQUFFLFFBQVE7VUFDZEMsVUFBVSxFQUFFLElBQUk7VUFDaEJDLFFBQVEsRUFBRSxnQkFBZ0I7VUFDMUJDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUc7UUFDN0I7TUFDRixDQUFDLENBQUM7SUFDSjtFQUFDO0FBQUEsRUF6QzRDbEQsU0FBUztBQUFBLFNBQW5DZSxpQkFBaUIsSUFBQW9DLE9BQUE7QUE0Q3RDcEMsaUJBQWlCLENBQUNxQyxTQUFTLEdBQUcsbUJBQW1CO0FBQ2pEckMsaUJBQWlCLENBQUNSLFlBQVksR0FBR0EsWUFBWSIsImlnbm9yZUxpc3QiOltdfQ==
|