@deck.gl/carto 9.0.17 → 9.0.19

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.
@@ -1,135 +0,0 @@
1
- import {getResolution} from 'quadbin';
2
-
3
- import {Accessor, CompositeLayer, CompositeLayerProps, DefaultProps, Layer} from '@deck.gl/core';
4
- import {SolidPolygonLayer} from '@deck.gl/layers';
5
-
6
- import {HeatmapProps, heatmap} from './heatmap';
7
- import {RTTModifier, PostProcessModifier} from './post-process-utils';
8
- import QuadbinTileLayer, {QuadbinTileLayerProps} from './quadbin-tile-layer';
9
- import {TilejsonPropType} from './utils';
10
- import {TilejsonResult} from '../sources';
11
-
12
- // Modified polygon layer to draw offscreen and output value expected by heatmap
13
- class RTTSolidPolygonLayer extends RTTModifier(SolidPolygonLayer) {
14
- static layerName = 'RTTSolidPolygonLayer';
15
-
16
- getShaders(type) {
17
- const shaders = super.getShaders(type);
18
- shaders.inject = {
19
- 'vs:#decl': 'uniform float cellResolution;',
20
- 'vs:DECKGL_FILTER_COLOR': `
21
- const vec3 SHIFT = vec3(1.0, 256.0, 256.0 * 256.0);
22
- float value = 255.0 * dot(SHIFT, color.rgb);
23
-
24
- // Keep "power" delivered to screen constant when tiles update
25
- float relativeZoom = log2(project_uScale) - cellResolution + 3.5; // range 0-1
26
- float relativeArea = pow(2.0, -2.0 * relativeZoom); // range 0.25-1
27
- value *= relativeArea;
28
-
29
- // Pack float into 3 channels to pass to heatmap shader
30
- color = vec4(mod(vec3(value, floor(value / SHIFT.yz)), 256.0), 255.0) / 255.0;
31
- `
32
- };
33
- return shaders;
34
- }
35
-
36
- draw(this, opts: any) {
37
- const cell0 = this.props!.data[0];
38
- const cellResolution = Number(getResolution(cell0.id));
39
- for (const model of this.state.models) {
40
- model.setUniforms({cellResolution});
41
- }
42
-
43
- super.draw(opts);
44
- }
45
- }
46
-
47
- // Modify QuadbinTileLayer to apply heatmap post process effect
48
- const PostProcessQuadbinTileLayer = PostProcessModifier(QuadbinTileLayer, heatmap);
49
-
50
- function encodeWeight(w: number) {
51
- return [w % 256, Math.floor(w / 256), Math.floor(w / (256 * 256))];
52
- }
53
-
54
- const defaultProps: DefaultProps<QuadbinHeatmapTileLayerProps> = {
55
- data: TilejsonPropType,
56
- getWeight: {type: 'accessor', value: 1}
57
- };
58
-
59
- /** All properties supported by QuadbinHeatmapTileLayer. */
60
- export type QuadbinHeatmapTileLayerProps<DataT = unknown> = _QuadbinHeatmapTileLayerProps<DataT> &
61
- CompositeLayerProps & {
62
- data: null | TilejsonResult | Promise<TilejsonResult>;
63
- };
64
-
65
- /** Properties added by QuadbinHeatmapTileLayer. */
66
- type _QuadbinHeatmapTileLayerProps<DataT> = QuadbinTileLayerProps<DataT> &
67
- HeatmapProps & {
68
- /**
69
- * The weight of each object.
70
- *
71
- * @default 1
72
- */
73
- getWeight?: Accessor<DataT, number>;
74
- };
75
-
76
- class QuadbinHeatmapTileLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<
77
- ExtraProps & Required<_QuadbinHeatmapTileLayerProps<DataT>>
78
- > {
79
- static layerName = 'QuadbinHeatmapTileLayer';
80
- static defaultProps = defaultProps;
81
-
82
- renderLayers(): Layer {
83
- const {
84
- data,
85
- getWeight,
86
- colorDomain,
87
- colorRange,
88
- radiusPixels,
89
- _subLayerProps,
90
- updateTriggers,
91
- ...tileLayerProps
92
- } = this.props;
93
-
94
- // Inject modified polygon layer as sublayer into TileLayer
95
- const subLayerProps = {
96
- ..._subLayerProps,
97
- cell: {
98
- ..._subLayerProps?.cell,
99
- _subLayerProps: {
100
- ..._subLayerProps?.cell?._subLayerProps,
101
- fill: {
102
- ..._subLayerProps?.cell?._subLayerProps?.fill,
103
- type: RTTSolidPolygonLayer
104
- }
105
- }
106
- }
107
- };
108
-
109
- const getFillColor =
110
- typeof getWeight === 'function'
111
- ? (d, info) => encodeWeight(getWeight(d, info))
112
- : encodeWeight(getWeight);
113
-
114
- return new PostProcessQuadbinTileLayer(
115
- tileLayerProps as Omit<QuadbinTileLayerProps, 'data'>,
116
- this.getSubLayerProps({
117
- id: 'heatmap',
118
- data,
119
-
120
- getFillColor,
121
-
122
- colorDomain,
123
- colorRange,
124
- radiusPixels,
125
- _subLayerProps: subLayerProps,
126
-
127
- updateTriggers: {
128
- getPosition: updateTriggers.getWeight
129
- }
130
- })
131
- );
132
- }
133
- }
134
-
135
- export default QuadbinHeatmapTileLayer;