@flowmap.gl/layers 8.0.0-alpha.12 → 8.0.0-alpha.13
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-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts +76 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js +178 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts +3 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js +21 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts +3 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js +21 -0
- package/dist-es5/AnimatedFlowLinesLayer/index.d.ts +3 -0
- package/dist-es5/AnimatedFlowLinesLayer/index.d.ts.map +1 -0
- package/dist-es5/AnimatedFlowLinesLayer/index.js +8 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts +59 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.js +149 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts +3 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js +21 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts +3 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js +21 -0
- package/dist-es5/FlowCirclesLayer/index.d.ts +3 -0
- package/dist-es5/FlowCirclesLayer/index.d.ts.map +1 -0
- package/dist-es5/FlowCirclesLayer/index.js +8 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts +64 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.js +217 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts +3 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.js +21 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts +3 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.js +21 -0
- package/dist-es5/FlowLinesLayer/index.d.ts +3 -0
- package/dist-es5/FlowLinesLayer/index.d.ts.map +1 -0
- package/dist-es5/FlowLinesLayer/index.js +8 -0
- package/dist-es5/FlowmapLayer.d.ts +79 -0
- package/dist-es5/FlowmapLayer.d.ts.map +1 -0
- package/dist-es5/FlowmapLayer.js +476 -0
- package/dist-es5/index.d.ts +7 -0
- package/dist-es5/index.d.ts.map +1 -0
- package/dist-es5/index.js +26 -0
- package/dist-es5/types.d.ts +36 -0
- package/dist-es5/types.d.ts.map +1 -0
- package/dist-es5/types.js +23 -0
- package/package.json +6 -4
- package/tsconfig.es5.json +11 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright 2022 FlowmapBlue
|
|
5
|
+
* Copyright 2018-2020 Teralytics, modified by FlowmapBlue
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
exports.default = "#define SHADER_NAME flow-circles-layer-fragment-shader\n#define SOFT_OUTLINE 0.05\n#define EPS 0.05\nprecision highp float;\n\nuniform vec4 emptyColor;\nuniform float outlineEmptyMix;\n\nvarying vec4 vColor;\nvarying vec2 unitPosition;\nvarying float unitInRadius;\nvarying float unitOutRadius;\n\nfloat when_gt(float x, float y) {\n return max(sign(x - y), 0.0);\n}\n\nvoid main(void) {\n geometry.uv = unitPosition;\n float distToCenter = length(unitPosition);\n if (distToCenter > 1.0) {\n discard;\n }\n\n // See https://stackoverflow.com/questions/47285778\n vec4 ringColor = mix(\n emptyColor / 255., vColor,\n when_gt(unitInRadius, unitOutRadius)\n );\n vec4 outlineColor = mix(\n mix(vColor, emptyColor / 255., outlineEmptyMix),\n vColor,\n when_gt(unitInRadius, unitOutRadius)\n );\n \n float innerR = min(unitInRadius, unitOutRadius) * (1.0 - SOFT_OUTLINE);\n \n // Inner circle\n float step2 = innerR - 2.0 * EPS; \n float step3 = innerR - EPS;\n \n // Ring\n float step4 = innerR;\n // float step5 = 1.0 - SOFT_OUTLINE - EPS;\n // float step6 = 1.0 - SOFT_OUTLINE;\n float step5 = 1.0 - 5.0 * EPS;\n float step6 = 1.0;\n \n gl_FragColor = vColor;\n gl_FragColor = mix(gl_FragColor, emptyColor / 255., smoothstep(step2, step3, distToCenter));\n gl_FragColor = mix(gl_FragColor, ringColor, smoothstep(step3, step4, distToCenter));\n gl_FragColor = mix(gl_FragColor, outlineColor, smoothstep(step5, step6, distToCenter));\n // gl_FragColor = mix(gl_FragColor, emptyColor / 255., smoothstep(step6, 1.0, distToCenter));\n gl_FragColor.a *= smoothstep(0.0, SOFT_OUTLINE, 1.0 - distToCenter);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n";
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NpcmNsZXNMYXllckZyYWdtZW50Lmdsc2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0NpcmNsZXNMYXllci9GbG93Q2lyY2xlc0xheWVyRnJhZ21lbnQuZ2xzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsa0JBQWUsb3FEQXlEZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBgXFxcbiNkZWZpbmUgU0hBREVSX05BTUUgZmxvdy1jaXJjbGVzLWxheWVyLWZyYWdtZW50LXNoYWRlclxuI2RlZmluZSBTT0ZUX09VVExJTkUgMC4wNVxuI2RlZmluZSBFUFMgMC4wNVxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG51bmlmb3JtIHZlYzQgZW1wdHlDb2xvcjtcbnVuaWZvcm0gZmxvYXQgb3V0bGluZUVtcHR5TWl4O1xuXG52YXJ5aW5nIHZlYzQgdkNvbG9yO1xudmFyeWluZyB2ZWMyIHVuaXRQb3NpdGlvbjtcbnZhcnlpbmcgZmxvYXQgdW5pdEluUmFkaXVzO1xudmFyeWluZyBmbG9hdCB1bml0T3V0UmFkaXVzO1xuXG5mbG9hdCB3aGVuX2d0KGZsb2F0IHgsIGZsb2F0IHkpIHtcbiAgcmV0dXJuIG1heChzaWduKHggLSB5KSwgMC4wKTtcbn1cblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkudXYgPSB1bml0UG9zaXRpb247XG4gIGZsb2F0IGRpc3RUb0NlbnRlciA9IGxlbmd0aCh1bml0UG9zaXRpb24pO1xuICBpZiAoZGlzdFRvQ2VudGVyID4gMS4wKSB7XG4gICAgZGlzY2FyZDtcbiAgfVxuXG4gIC8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NzI4NTc3OFxuICB2ZWM0IHJpbmdDb2xvciA9IG1peChcbiAgICBlbXB0eUNvbG9yIC8gMjU1LiwgdkNvbG9yLFxuICAgIHdoZW5fZ3QodW5pdEluUmFkaXVzLCB1bml0T3V0UmFkaXVzKVxuICApO1xuICB2ZWM0IG91dGxpbmVDb2xvciA9IG1peChcbiAgICBtaXgodkNvbG9yLCBlbXB0eUNvbG9yIC8gMjU1Liwgb3V0bGluZUVtcHR5TWl4KSxcbiAgICB2Q29sb3IsXG4gICAgd2hlbl9ndCh1bml0SW5SYWRpdXMsIHVuaXRPdXRSYWRpdXMpXG4gICk7XG4gIFxuICBmbG9hdCBpbm5lclIgPSBtaW4odW5pdEluUmFkaXVzLCB1bml0T3V0UmFkaXVzKSAqICgxLjAgLSBTT0ZUX09VVExJTkUpO1xuICBcbiAgLy8gSW5uZXIgY2lyY2xlXG4gIGZsb2F0IHN0ZXAyID0gaW5uZXJSIC0gMi4wICogRVBTOyBcbiAgZmxvYXQgc3RlcDMgPSBpbm5lclIgLSBFUFM7XG4gIFxuICAvLyBSaW5nXG4gIGZsb2F0IHN0ZXA0ID0gaW5uZXJSO1xuICAvLyBmbG9hdCBzdGVwNSA9IDEuMCAtIFNPRlRfT1VUTElORSAtIEVQUztcbiAgLy8gZmxvYXQgc3RlcDYgPSAxLjAgLSBTT0ZUX09VVExJTkU7XG4gIGZsb2F0IHN0ZXA1ID0gMS4wIC0gNS4wICogRVBTO1xuICBmbG9hdCBzdGVwNiA9IDEuMDtcbiAgXG4gIGdsX0ZyYWdDb2xvciA9IHZDb2xvcjtcbiAgZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgZW1wdHlDb2xvciAvIDI1NS4sIHNtb290aHN0ZXAoc3RlcDIsIHN0ZXAzLCBkaXN0VG9DZW50ZXIpKTtcbiAgZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgcmluZ0NvbG9yLCBzbW9vdGhzdGVwKHN0ZXAzLCBzdGVwNCwgZGlzdFRvQ2VudGVyKSk7XG4gIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIG91dGxpbmVDb2xvciwgc21vb3Roc3RlcChzdGVwNSwgc3RlcDYsIGRpc3RUb0NlbnRlcikpO1xuICAvLyBnbF9GcmFnQ29sb3IgPSBtaXgoZ2xfRnJhZ0NvbG9yLCBlbXB0eUNvbG9yIC8gMjU1Liwgc21vb3Roc3RlcChzdGVwNiwgMS4wLCBkaXN0VG9DZW50ZXIpKTtcbiAgZ2xfRnJhZ0NvbG9yLmEgKj0gc21vb3Roc3RlcCgwLjAsIFNPRlRfT1VUTElORSwgMS4wIC0gZGlzdFRvQ2VudGVyKTtcbiAgREVDS0dMX0ZJTFRFUl9DT0xPUihnbF9GcmFnQ29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const _default: "#define SHADER_NAME flow-circles-layer-vertex-shader\n#define radiusScale 100\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceInRadius;\nattribute float instanceOutRadius;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform vec4 emptyColor;\nuniform float outlineEmptyMix;\n\nvarying vec4 vColor;\nvarying vec2 unitPosition;\nvarying float unitInRadius;\nvarying float unitOutRadius;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n\n float outerRadiusPixels = max(instanceInRadius, instanceOutRadius);\n unitInRadius = instanceInRadius / outerRadiusPixels; \n unitOutRadius = instanceOutRadius / outerRadiusPixels; \n\n // position on the containing square in [-1, 1] space\n unitPosition = positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n \n // Find the center of the point and add the current vertex\n vec3 offset = positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n \n // Apply opacity to instance color, or return instance picking color\n vColor = vec4(instanceColors.rgb / 255., instanceColors.a / 255. * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
2
|
+
export default _default;
|
|
3
|
+
//# sourceMappingURL=FlowCirclesLayerVertex.glsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowCirclesLayerVertex.glsl.d.ts","sourceRoot":"","sources":["../../src/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.ts"],"names":[],"mappings":";AAiBA,wBA4CE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright 2022 FlowmapBlue
|
|
5
|
+
* Copyright 2018-2020 Teralytics, modified by FlowmapBlue
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
exports.default = "#define SHADER_NAME flow-circles-layer-vertex-shader\n#define radiusScale 100\n\nattribute vec3 positions;\n\nattribute vec3 instancePositions;\nattribute vec3 instancePositions64Low;\nattribute float instanceInRadius;\nattribute float instanceOutRadius;\nattribute vec4 instanceColors;\nattribute vec3 instancePickingColors;\n\nuniform float opacity;\nuniform vec4 emptyColor;\nuniform float outlineEmptyMix;\n\nvarying vec4 vColor;\nvarying vec2 unitPosition;\nvarying float unitInRadius;\nvarying float unitOutRadius;\n\nvoid main(void) {\n geometry.worldPosition = instancePositions;\n\n float outerRadiusPixels = max(instanceInRadius, instanceOutRadius);\n unitInRadius = instanceInRadius / outerRadiusPixels; \n unitOutRadius = instanceOutRadius / outerRadiusPixels; \n\n // position on the containing square in [-1, 1] space\n unitPosition = positions.xy;\n geometry.uv = unitPosition;\n geometry.pickingColor = instancePickingColors;\n \n // Find the center of the point and add the current vertex\n vec3 offset = positions * project_pixel_size(outerRadiusPixels);\n DECKGL_FILTER_SIZE(offset, geometry);\n gl_Position = project_position_to_clipspace(instancePositions, instancePositions64Low, offset, geometry.position);\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n \n // Apply opacity to instance color, or return instance picking color\n vColor = vec4(instanceColors.rgb / 255., instanceColors.a / 255. * opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NpcmNsZXNMYXllclZlcnRleC5nbHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Zsb3dDaXJjbGVzTGF5ZXIvRmxvd0NpcmNsZXNMYXllclZlcnRleC5nbHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxrQkFBZSx3bERBNENkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGBcXFxuI2RlZmluZSBTSEFERVJfTkFNRSBmbG93LWNpcmNsZXMtbGF5ZXItdmVydGV4LXNoYWRlclxuI2RlZmluZSByYWRpdXNTY2FsZSAxMDBcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb25zO1xuXG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVBvc2l0aW9ucztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlUG9zaXRpb25zNjRMb3c7XG5hdHRyaWJ1dGUgZmxvYXQgaW5zdGFuY2VJblJhZGl1cztcbmF0dHJpYnV0ZSBmbG9hdCBpbnN0YW5jZU91dFJhZGl1cztcbmF0dHJpYnV0ZSB2ZWM0IGluc3RhbmNlQ29sb3JzO1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuXG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIHZlYzQgZW1wdHlDb2xvcjtcbnVuaWZvcm0gZmxvYXQgb3V0bGluZUVtcHR5TWl4O1xuXG52YXJ5aW5nIHZlYzQgdkNvbG9yO1xudmFyeWluZyB2ZWMyIHVuaXRQb3NpdGlvbjtcbnZhcnlpbmcgZmxvYXQgdW5pdEluUmFkaXVzO1xudmFyeWluZyBmbG9hdCB1bml0T3V0UmFkaXVzO1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uID0gaW5zdGFuY2VQb3NpdGlvbnM7XG5cbiAgZmxvYXQgb3V0ZXJSYWRpdXNQaXhlbHMgPSBtYXgoaW5zdGFuY2VJblJhZGl1cywgaW5zdGFuY2VPdXRSYWRpdXMpO1xuICB1bml0SW5SYWRpdXMgPSBpbnN0YW5jZUluUmFkaXVzIC8gb3V0ZXJSYWRpdXNQaXhlbHM7IFxuICB1bml0T3V0UmFkaXVzID0gaW5zdGFuY2VPdXRSYWRpdXMgLyBvdXRlclJhZGl1c1BpeGVsczsgXG5cbiAgLy8gcG9zaXRpb24gb24gdGhlIGNvbnRhaW5pbmcgc3F1YXJlIGluIFstMSwgMV0gc3BhY2VcbiAgdW5pdFBvc2l0aW9uID0gcG9zaXRpb25zLnh5O1xuICBnZW9tZXRyeS51diA9IHVuaXRQb3NpdGlvbjtcbiAgZ2VvbWV0cnkucGlja2luZ0NvbG9yID0gaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAvLyBGaW5kIHRoZSBjZW50ZXIgb2YgdGhlIHBvaW50IGFuZCBhZGQgdGhlIGN1cnJlbnQgdmVydGV4XG4gIHZlYzMgb2Zmc2V0ID0gcG9zaXRpb25zICogcHJvamVjdF9waXhlbF9zaXplKG91dGVyUmFkaXVzUGl4ZWxzKTtcbiAgREVDS0dMX0ZJTFRFUl9TSVpFKG9mZnNldCwgZ2VvbWV0cnkpO1xuICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKGluc3RhbmNlUG9zaXRpb25zLCBpbnN0YW5jZVBvc2l0aW9uczY0TG93LCBvZmZzZXQsIGdlb21ldHJ5LnBvc2l0aW9uKTtcbiAgREVDS0dMX0ZJTFRFUl9HTF9QT1NJVElPTihnbF9Qb3NpdGlvbiwgZ2VvbWV0cnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAvLyBBcHBseSBvcGFjaXR5IHRvIGluc3RhbmNlIGNvbG9yLCBvciByZXR1cm4gaW5zdGFuY2UgcGlja2luZyBjb2xvclxuICB2Q29sb3IgPSB2ZWM0KGluc3RhbmNlQ29sb3JzLnJnYiAvIDI1NS4sIGluc3RhbmNlQ29sb3JzLmEgLyAyNTUuICogb3BhY2l0eSk7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IodkNvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/FlowCirclesLayer/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var FlowCirclesLayer_1 = __importDefault(require("./FlowCirclesLayer"));
|
|
7
|
+
exports.default = FlowCirclesLayer_1.default;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0NpcmNsZXNMYXllci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQUFrRDtBQUVsRCxrQkFBZSwwQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGbG93Q2lyY2xlc0xheWVyIGZyb20gJy4vRmxvd0NpcmNsZXNMYXllcic7XG5cbmV4cG9ydCBkZWZhdWx0IEZsb3dDaXJjbGVzTGF5ZXI7XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Layer } from '@deck.gl/core';
|
|
2
|
+
import { FlowLinesLayerAttributes, RGBA } from '@flowmap.gl/data';
|
|
3
|
+
import { LayerProps } from '../types';
|
|
4
|
+
export interface Props<F> extends LayerProps {
|
|
5
|
+
id: string;
|
|
6
|
+
opacity?: number;
|
|
7
|
+
pickable?: boolean;
|
|
8
|
+
updateTriggers?: {
|
|
9
|
+
[key: string]: Record<string, unknown>;
|
|
10
|
+
};
|
|
11
|
+
data: F[] | FlowLinesLayerAttributes;
|
|
12
|
+
drawOutline: boolean;
|
|
13
|
+
outlineColor?: RGBA;
|
|
14
|
+
outlineThickness?: number;
|
|
15
|
+
thicknessUnit?: number;
|
|
16
|
+
getSourcePosition?: (d: F) => [number, number];
|
|
17
|
+
getTargetPosition?: (d: F) => [number, number];
|
|
18
|
+
getColor?: (d: F) => RGBA;
|
|
19
|
+
getThickness?: (d: F) => number;
|
|
20
|
+
getPickable?: (d: F, { index }: {
|
|
21
|
+
index: number;
|
|
22
|
+
}) => number;
|
|
23
|
+
getEndpointOffsets?: (d: F) => [number, number];
|
|
24
|
+
}
|
|
25
|
+
declare class FlowLinesLayer<F> extends Layer {
|
|
26
|
+
static layerName: string;
|
|
27
|
+
static defaultProps: {
|
|
28
|
+
getSourcePosition: {
|
|
29
|
+
type: string;
|
|
30
|
+
value: (d: any) => number[];
|
|
31
|
+
};
|
|
32
|
+
getTargetPosition: {
|
|
33
|
+
type: string;
|
|
34
|
+
value: (d: any) => number[];
|
|
35
|
+
};
|
|
36
|
+
getColor: {
|
|
37
|
+
type: string;
|
|
38
|
+
value: RGBA;
|
|
39
|
+
};
|
|
40
|
+
getThickness: {
|
|
41
|
+
type: string;
|
|
42
|
+
value: (d: any) => any;
|
|
43
|
+
};
|
|
44
|
+
getPickable: {
|
|
45
|
+
type: string;
|
|
46
|
+
value: (d: any) => number;
|
|
47
|
+
};
|
|
48
|
+
drawOutline: boolean;
|
|
49
|
+
thicknessUnit: number;
|
|
50
|
+
outlineThickness: number;
|
|
51
|
+
outlineColor: number[];
|
|
52
|
+
parameters: {
|
|
53
|
+
depthTest: boolean;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
constructor(props: Props<F>);
|
|
57
|
+
getShaders(): Record<string, unknown>;
|
|
58
|
+
initializeState(): void;
|
|
59
|
+
updateState({ props, oldProps, changeFlags }: Record<string, any>): void;
|
|
60
|
+
draw({ uniforms }: Record<string, any>): void;
|
|
61
|
+
_getModel(gl: WebGLRenderingContext): Record<string, any>;
|
|
62
|
+
}
|
|
63
|
+
export default FlowLinesLayer;
|
|
64
|
+
//# sourceMappingURL=FlowLinesLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowLinesLayer.d.ts","sourceRoot":"","sources":["../../src/FlowLinesLayer/FlowLinesLayer.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAC,KAAK,EAAqB,MAAM,eAAe,CAAC;AAKxD,OAAO,EAAC,wBAAwB,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,UAAU;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,EAAE,GAAG,wBAAwB,CAAC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAC,KAAK,EAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,KAAK,MAAM,CAAC;IACzD,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD;AAKD,cAAM,cAAc,CAAC,CAAC,CAAE,SAAQ,KAAK;IACnC,MAAM,CAAC,SAAS,SAAoB;IACpC,MAAM,CAAC,YAAY;;;uBACgC,GAAG;;;;uBACH,GAAG;;;;;;;;uBAER,GAAG;;;;uBACJ,GAAG;;;;;;;;;MAQ9C;gBAGU,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAI3B,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASrC,eAAe,IAAI,IAAI;IAwCvB,WAAW,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAatE,IAAI,CAAC,EAAC,QAAQ,EAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAc3C,SAAS,CAAC,EAAE,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA0F1D;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2022 FlowmapBlue
|
|
4
|
+
* Copyright 2018-2020 Teralytics, modified by FlowmapBlue
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
var __extends = (this && this.__extends) || (function () {
|
|
20
|
+
var extendStatics = function (d, b) {
|
|
21
|
+
extendStatics = Object.setPrototypeOf ||
|
|
22
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
23
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
24
|
+
return extendStatics(d, b);
|
|
25
|
+
};
|
|
26
|
+
return function (d, b) {
|
|
27
|
+
if (typeof b !== "function" && b !== null)
|
|
28
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
29
|
+
extendStatics(d, b);
|
|
30
|
+
function __() { this.constructor = d; }
|
|
31
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
32
|
+
};
|
|
33
|
+
})();
|
|
34
|
+
var __assign = (this && this.__assign) || function () {
|
|
35
|
+
__assign = Object.assign || function(t) {
|
|
36
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
37
|
+
s = arguments[i];
|
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
39
|
+
t[p] = s[p];
|
|
40
|
+
}
|
|
41
|
+
return t;
|
|
42
|
+
};
|
|
43
|
+
return __assign.apply(this, arguments);
|
|
44
|
+
};
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
var core_1 = require("@deck.gl/core");
|
|
50
|
+
var constants_1 = __importDefault(require("@luma.gl/constants"));
|
|
51
|
+
var core_2 = require("@luma.gl/core");
|
|
52
|
+
var FlowLinesLayerFragment_glsl_1 = __importDefault(require("./FlowLinesLayerFragment.glsl"));
|
|
53
|
+
var FlowLinesLayerVertex_glsl_1 = __importDefault(require("./FlowLinesLayerVertex.glsl"));
|
|
54
|
+
var DEFAULT_COLOR = [0, 132, 193, 255];
|
|
55
|
+
var INNER_SIDE_OUTLINE_THICKNESS = 1;
|
|
56
|
+
var FlowLinesLayer = /** @class */ (function (_super) {
|
|
57
|
+
__extends(FlowLinesLayer, _super);
|
|
58
|
+
// props!: Props;
|
|
59
|
+
function FlowLinesLayer(props) {
|
|
60
|
+
return _super.call(this, props) || this;
|
|
61
|
+
}
|
|
62
|
+
FlowLinesLayer.prototype.getShaders = function () {
|
|
63
|
+
return _super.prototype.getShaders.call(this, {
|
|
64
|
+
vs: FlowLinesLayerVertex_glsl_1.default,
|
|
65
|
+
fs: FlowLinesLayerFragment_glsl_1.default,
|
|
66
|
+
modules: [core_1.project32, core_1.picking],
|
|
67
|
+
shaderCache: this.context.shaderCache,
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
FlowLinesLayer.prototype.initializeState = function () {
|
|
71
|
+
var attributeManager = this.state.attributeManager;
|
|
72
|
+
attributeManager.addInstanced({
|
|
73
|
+
instanceSourcePositions: {
|
|
74
|
+
accessor: 'getSourcePosition',
|
|
75
|
+
size: 3,
|
|
76
|
+
transition: false,
|
|
77
|
+
type: constants_1.default.DOUBLE,
|
|
78
|
+
},
|
|
79
|
+
instanceTargetPositions: {
|
|
80
|
+
accessor: 'getTargetPosition',
|
|
81
|
+
size: 3,
|
|
82
|
+
transition: false,
|
|
83
|
+
type: constants_1.default.DOUBLE,
|
|
84
|
+
},
|
|
85
|
+
instanceThickness: {
|
|
86
|
+
accessor: 'getThickness',
|
|
87
|
+
size: 1,
|
|
88
|
+
transition: false,
|
|
89
|
+
},
|
|
90
|
+
instanceEndpointOffsets: {
|
|
91
|
+
accessor: 'getEndpointOffsets',
|
|
92
|
+
size: 2,
|
|
93
|
+
transition: false,
|
|
94
|
+
},
|
|
95
|
+
instanceColors: {
|
|
96
|
+
accessor: 'getColor',
|
|
97
|
+
size: 4,
|
|
98
|
+
type: constants_1.default.UNSIGNED_BYTE,
|
|
99
|
+
transition: false,
|
|
100
|
+
},
|
|
101
|
+
instancePickable: {
|
|
102
|
+
accessor: 'getPickable',
|
|
103
|
+
size: 1,
|
|
104
|
+
transition: false,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
FlowLinesLayer.prototype.updateState = function (_a) {
|
|
109
|
+
var props = _a.props, oldProps = _a.oldProps, changeFlags = _a.changeFlags;
|
|
110
|
+
_super.prototype.updateState.call(this, { props: props, oldProps: oldProps, changeFlags: changeFlags });
|
|
111
|
+
if (changeFlags.extensionsChanged) {
|
|
112
|
+
var gl = this.context.gl;
|
|
113
|
+
if (this.state.model) {
|
|
114
|
+
this.state.model.delete();
|
|
115
|
+
}
|
|
116
|
+
this.setState({ model: this._getModel(gl) });
|
|
117
|
+
this.getAttributeManager().invalidateAll();
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
FlowLinesLayer.prototype.draw = function (_a) {
|
|
121
|
+
var uniforms = _a.uniforms;
|
|
122
|
+
var gl = this.context.gl;
|
|
123
|
+
var _b = this.props, outlineColor = _b.outlineColor, thicknessUnit = _b.thicknessUnit;
|
|
124
|
+
gl.lineWidth(1);
|
|
125
|
+
this.state.model
|
|
126
|
+
.setUniforms(__assign(__assign({}, uniforms), { outlineColor: outlineColor.map(function (x) { return x / 255; }), thicknessUnit: thicknessUnit * 2.0, gap: 0.5 }))
|
|
127
|
+
.draw();
|
|
128
|
+
};
|
|
129
|
+
FlowLinesLayer.prototype._getModel = function (gl) {
|
|
130
|
+
var positions = [];
|
|
131
|
+
var pixelOffsets = [];
|
|
132
|
+
var _a = this.props, drawOutline = _a.drawOutline, outlineThickness = _a.outlineThickness;
|
|
133
|
+
if (drawOutline) {
|
|
134
|
+
// source_target_mix, perpendicular_offset_in_thickness_units, direction_of_travel_offset_in_thickness_units
|
|
135
|
+
// prettier-ignore
|
|
136
|
+
positions = positions.concat([
|
|
137
|
+
// Outline
|
|
138
|
+
0, 0, 0,
|
|
139
|
+
0, 1, 0,
|
|
140
|
+
1, 0, 0,
|
|
141
|
+
0, 1, 0,
|
|
142
|
+
1, 0, -3,
|
|
143
|
+
1, 1, -3,
|
|
144
|
+
1, 0, 0,
|
|
145
|
+
1, 2, -3,
|
|
146
|
+
1, 0, -3,
|
|
147
|
+
]);
|
|
148
|
+
var tout = outlineThickness;
|
|
149
|
+
var tin = INNER_SIDE_OUTLINE_THICKNESS; // the outline shouldn't cover the opposite arrow
|
|
150
|
+
// perpendicular_offset_in_pixels, direction_of_travel_offset_in_pixels, fill_outline_color_mix
|
|
151
|
+
// prettier-ignore
|
|
152
|
+
pixelOffsets = pixelOffsets.concat([
|
|
153
|
+
// Outline
|
|
154
|
+
-tin, -tout, 1,
|
|
155
|
+
tout, -tout, 1,
|
|
156
|
+
-tin, tout, 1,
|
|
157
|
+
tout, -tout, 1,
|
|
158
|
+
-tin, 0, 1,
|
|
159
|
+
tout, 0, 1,
|
|
160
|
+
-tin, 3 * tout, 1,
|
|
161
|
+
2 * tout, -tout, 1,
|
|
162
|
+
-tin, -tout, 1,
|
|
163
|
+
]);
|
|
164
|
+
}
|
|
165
|
+
// prettier-ignore
|
|
166
|
+
positions = positions.concat([
|
|
167
|
+
// Fill
|
|
168
|
+
0, 0, 0,
|
|
169
|
+
0, 1, 0,
|
|
170
|
+
1, 0, 0,
|
|
171
|
+
0, 1, 0,
|
|
172
|
+
1, 0, -3,
|
|
173
|
+
1, 1, -3,
|
|
174
|
+
1, 0, 0,
|
|
175
|
+
1, 2, -3,
|
|
176
|
+
1, 0, -3,
|
|
177
|
+
]);
|
|
178
|
+
// prettier-ignore
|
|
179
|
+
pixelOffsets = pixelOffsets.concat([
|
|
180
|
+
// Fill
|
|
181
|
+
0, 0, 0,
|
|
182
|
+
0, 0, 0,
|
|
183
|
+
0, 0, 0,
|
|
184
|
+
0, 0, 0,
|
|
185
|
+
0, 0, 0,
|
|
186
|
+
0, 0, 0,
|
|
187
|
+
0, 0, 0,
|
|
188
|
+
0, 0, 0,
|
|
189
|
+
0, 0, 0,
|
|
190
|
+
]);
|
|
191
|
+
return new core_2.Model(gl, __assign(__assign({ id: this.props.id }, this.getShaders()), { geometry: new core_2.Geometry({
|
|
192
|
+
drawType: constants_1.default.TRIANGLES,
|
|
193
|
+
attributes: {
|
|
194
|
+
positions: new Float32Array(positions),
|
|
195
|
+
normals: new Float32Array(pixelOffsets),
|
|
196
|
+
},
|
|
197
|
+
}), isInstanced: true, shaderCache: this.context.shaderCache }));
|
|
198
|
+
};
|
|
199
|
+
FlowLinesLayer.layerName = 'FlowLinesLayer';
|
|
200
|
+
FlowLinesLayer.defaultProps = {
|
|
201
|
+
getSourcePosition: { type: 'accessor', value: function (d) { return [0, 0]; } },
|
|
202
|
+
getTargetPosition: { type: 'accessor', value: function (d) { return [0, 0]; } },
|
|
203
|
+
getColor: { type: 'accessor', value: DEFAULT_COLOR },
|
|
204
|
+
getThickness: { type: 'accessor', value: function (d) { return d.count; } },
|
|
205
|
+
getPickable: { type: 'accessor', value: function (d) { return 1.0; } },
|
|
206
|
+
drawOutline: true,
|
|
207
|
+
thicknessUnit: 12,
|
|
208
|
+
outlineThickness: 1,
|
|
209
|
+
outlineColor: [255, 255, 255, 255],
|
|
210
|
+
parameters: {
|
|
211
|
+
depthTest: false,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
return FlowLinesLayer;
|
|
215
|
+
}(core_1.Layer));
|
|
216
|
+
exports.default = FlowLinesLayer;
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0xpbmVzTGF5ZXIvRmxvd0xpbmVzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsc0NBQXdEO0FBQ3hELGlFQUFvQztBQUNwQyxzQ0FBOEM7QUFDOUMsOEZBQTJEO0FBQzNELDBGQUF1RDtBQXNCdkQsSUFBTSxhQUFhLEdBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQyxJQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQztBQUV2QztJQUFnQyxrQ0FBSztJQWdCbkMsaUJBQWlCO0lBRWpCLHdCQUFZLEtBQWU7ZUFDekIsa0JBQU0sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELG1DQUFVLEdBQVY7UUFDRSxPQUFPLGlCQUFNLFVBQVUsWUFBQztZQUN0QixFQUFFLEVBQUUsbUNBQVk7WUFDaEIsRUFBRSxFQUFFLHFDQUFjO1lBQ2xCLE9BQU8sRUFBRSxDQUFDLGdCQUFTLEVBQUUsY0FBTyxDQUFDO1lBQzdCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHdDQUFlLEdBQWY7UUFDUyxJQUFBLGdCQUFnQixHQUFJLElBQUksQ0FBQyxLQUFLLGlCQUFkLENBQWU7UUFFdEMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO1lBQzVCLHVCQUF1QixFQUFFO2dCQUN2QixRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixJQUFJLEVBQUUsQ0FBQztnQkFDUCxVQUFVLEVBQUUsS0FBSztnQkFDakIsSUFBSSxFQUFFLG1CQUFFLENBQUMsTUFBTTthQUNoQjtZQUNELHVCQUF1QixFQUFFO2dCQUN2QixRQUFRLEVBQUUsbUJBQW1CO2dCQUM3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O1FBQ3BCLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBQyxDQUFNLElBQUssT0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBTixDQUFNLEVBQUM7UUFDaEUsaUJBQWlCLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFDLENBQU0sSUFBSyxPQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFOLENBQU0sRUFBQztRQUNoRSxRQUFRLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUM7UUFDbEQsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBQyxDQUFNLElBQUssT0FBQSxDQUFDLENBQUMsS0FBSyxFQUFQLENBQU8sRUFBQztRQUM1RCxXQUFXLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFDLENBQU0sSUFBSyxPQUFBLEdBQUcsRUFBSCxDQUFHLEVBQUM7UUFDdkQsV0FBVyxFQUFFLElBQUk7UUFDakIsYUFBYSxFQUFFLEVBQUU7UUFDakIsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDbEMsVUFBVSxFQUFFO1lBQ1YsU0FBUyxFQUFFLEtBQUs7U0FDakI7S0FDRixDQUFDO0lBNktKLHFCQUFDO0NBQUEsQUE1TEQsQ0FBZ0MsWUFBSyxHQTRMcEM7QUFFRCxrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHtMYXllciwgcGlja2luZywgcHJvamVjdDMyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCBHTCBmcm9tICdAbHVtYS5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtHZW9tZXRyeSwgTW9kZWx9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuaW1wb3J0IEZyYWdtZW50U2hhZGVyIGZyb20gJy4vRmxvd0xpbmVzTGF5ZXJGcmFnbWVudC5nbHNsJztcbmltcG9ydCBWZXJ0ZXhTaGFkZXIgZnJvbSAnLi9GbG93TGluZXNMYXllclZlcnRleC5nbHNsJztcbmltcG9ydCB7Rmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzLCBSR0JBfSBmcm9tICdAZmxvd21hcC5nbC9kYXRhJztcbmltcG9ydCB7TGF5ZXJQcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPEY+IGV4dGVuZHMgTGF5ZXJQcm9wcyB7XG4gIGlkOiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIHBpY2thYmxlPzogYm9vbGVhbjtcbiAgdXBkYXRlVHJpZ2dlcnM/OiB7W2tleTogc3RyaW5nXTogUmVjb3JkPHN0cmluZywgdW5rbm93bj59O1xuICBkYXRhOiBGW10gfCBGbG93TGluZXNMYXllckF0dHJpYnV0ZXM7XG4gIGRyYXdPdXRsaW5lOiBib29sZWFuO1xuICBvdXRsaW5lQ29sb3I/OiBSR0JBO1xuICBvdXRsaW5lVGhpY2tuZXNzPzogbnVtYmVyO1xuICB0aGlja25lc3NVbml0PzogbnVtYmVyO1xuICBnZXRTb3VyY2VQb3NpdGlvbj86IChkOiBGKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICBnZXRUYXJnZXRQb3NpdGlvbj86IChkOiBGKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICBnZXRDb2xvcj86IChkOiBGKSA9PiBSR0JBO1xuICBnZXRUaGlja25lc3M/OiAoZDogRikgPT4gbnVtYmVyO1xuICBnZXRQaWNrYWJsZT86IChkOiBGLCB7aW5kZXh9OiB7aW5kZXg6IG51bWJlcn0pID0+IG51bWJlcjsgLy8gPj0gMS4wIC0+IHRydWVcbiAgZ2V0RW5kcG9pbnRPZmZzZXRzPzogKGQ6IEYpID0+IFtudW1iZXIsIG51bWJlcl07XG59XG5cbmNvbnN0IERFRkFVTFRfQ09MT1I6IFJHQkEgPSBbMCwgMTMyLCAxOTMsIDI1NV07XG5jb25zdCBJTk5FUl9TSURFX09VVExJTkVfVEhJQ0tORVNTID0gMTtcblxuY2xhc3MgRmxvd0xpbmVzTGF5ZXI8Rj4gZXh0ZW5kcyBMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRmxvd0xpbmVzTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGdldFNvdXJjZVBvc2l0aW9uOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IChkOiBhbnkpID0+IFswLCAwXX0sXG4gICAgZ2V0VGFyZ2V0UG9zaXRpb246IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gWzAsIDBdfSxcbiAgICBnZXRDb2xvcjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiBERUZBVUxUX0NPTE9SfSxcbiAgICBnZXRUaGlja25lc3M6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gZC5jb3VudH0sIC8vIDAuLjAuNVxuICAgIGdldFBpY2thYmxlOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IChkOiBhbnkpID0+IDEuMH0sXG4gICAgZHJhd091dGxpbmU6IHRydWUsXG4gICAgdGhpY2tuZXNzVW5pdDogMTIsXG4gICAgb3V0bGluZVRoaWNrbmVzczogMSxcbiAgICBvdXRsaW5lQ29sb3I6IFsyNTUsIDI1NSwgMjU1LCAyNTVdLFxuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgfSxcbiAgfTtcbiAgLy8gcHJvcHMhOiBQcm9wcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogUHJvcHM8Rj4pIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0U2hhZGVycyh7XG4gICAgICB2czogVmVydGV4U2hhZGVyLFxuICAgICAgZnM6IEZyYWdtZW50U2hhZGVyLFxuICAgICAgbW9kdWxlczogW3Byb2plY3QzMiwgcGlja2luZ10sXG4gICAgICBzaGFkZXJDYWNoZTogdGhpcy5jb250ZXh0LnNoYWRlckNhY2hlLFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHthdHRyaWJ1dGVNYW5hZ2VyfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBhdHRyaWJ1dGVNYW5hZ2VyLmFkZEluc3RhbmNlZCh7XG4gICAgICBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFNvdXJjZVBvc2l0aW9uJyxcbiAgICAgICAgc2l6ZTogMyxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVRhcmdldFBvc2l0aW9uczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFRhcmdldFBvc2l0aW9uJyxcbiAgICAgICAgc2l6ZTogMyxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVRoaWNrbmVzczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFRoaWNrbmVzcycsXG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlRW5kcG9pbnRPZmZzZXRzOiB7XG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RW5kcG9pbnRPZmZzZXRzJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VDb2xvcnM6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRDb2xvcicsXG4gICAgICAgIHNpemU6IDQsXG4gICAgICAgIHR5cGU6IEdMLlVOU0lHTkVEX0JZVEUsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlUGlja2FibGU6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRQaWNrYWJsZScsXG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZVN0YXRlKHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfSk7XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5tb2RlbCkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVsLmRlbGV0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWw6IHRoaXMuX2dldE1vZGVsKGdsKX0pO1xuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCkuaW52YWxpZGF0ZUFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGRyYXcoe3VuaWZvcm1zfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgY29uc3Qge291dGxpbmVDb2xvciwgdGhpY2tuZXNzVW5pdH0gPSB0aGlzLnByb3BzO1xuICAgIGdsLmxpbmVXaWR0aCgxKTtcbiAgICB0aGlzLnN0YXRlLm1vZGVsXG4gICAgICAuc2V0VW5pZm9ybXMoe1xuICAgICAgICAuLi51bmlmb3JtcyxcbiAgICAgICAgb3V0bGluZUNvbG9yOiBvdXRsaW5lQ29sb3IubWFwKCh4OiBudW1iZXIpID0+IHggLyAyNTUpLFxuICAgICAgICB0aGlja25lc3NVbml0OiB0aGlja25lc3NVbml0ICogMi4wLFxuICAgICAgICBnYXA6IDAuNSxcbiAgICAgIH0pXG4gICAgICAuZHJhdygpO1xuICB9XG5cbiAgX2dldE1vZGVsKGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBsZXQgcG9zaXRpb25zOiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBwaXhlbE9mZnNldHM6IG51bWJlcltdID0gW107XG5cbiAgICBjb25zdCB7ZHJhd091dGxpbmUsIG91dGxpbmVUaGlja25lc3N9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoZHJhd091dGxpbmUpIHtcbiAgICAgIC8vIHNvdXJjZV90YXJnZXRfbWl4LCBwZXJwZW5kaWN1bGFyX29mZnNldF9pbl90aGlja25lc3NfdW5pdHMsIGRpcmVjdGlvbl9vZl90cmF2ZWxfb2Zmc2V0X2luX3RoaWNrbmVzc191bml0c1xuICAgICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMuY29uY2F0KFtcbiAgICAgICAgICAvLyBPdXRsaW5lXG4gICAgICAgICAgMCwgMCwgMCxcbiAgICAgICAgICAwLCAxLCAwLFxuICAgICAgICAgIDEsIDAsIDAsXG5cbiAgICAgICAgICAwLCAxLCAwLFxuICAgICAgICAgIDEsIDAsIC0zLFxuICAgICAgICAgIDEsIDEsIC0zLFxuXG4gICAgICAgICAgMSwgMCwgMCxcbiAgICAgICAgICAxLCAyLCAtMyxcbiAgICAgICAgICAxLCAwLCAtMyxcbiAgICAgICAgXSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHRvdXQgPSBvdXRsaW5lVGhpY2tuZXNzO1xuICAgICAgY29uc3QgdGluID0gSU5ORVJfU0lERV9PVVRMSU5FX1RISUNLTkVTUzsgLy8gdGhlIG91dGxpbmUgc2hvdWxkbid0IGNvdmVyIHRoZSBvcHBvc2l0ZSBhcnJvd1xuICAgICAgLy8gcGVycGVuZGljdWxhcl9vZmZzZXRfaW5fcGl4ZWxzLCBkaXJlY3Rpb25fb2ZfdHJhdmVsX29mZnNldF9pbl9waXhlbHMsIGZpbGxfb3V0bGluZV9jb2xvcl9taXhcbiAgICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgcGl4ZWxPZmZzZXRzID0gcGl4ZWxPZmZzZXRzLmNvbmNhdChbXG4gICAgICAgIC8vIE91dGxpbmVcbiAgICAgICAgLXRpbiwgLXRvdXQsIDEsXG4gICAgICAgIHRvdXQsIC10b3V0LCAxLFxuICAgICAgICAtdGluLCB0b3V0LCAxLFxuXG4gICAgICAgIHRvdXQsIC10b3V0LCAxLFxuICAgICAgICAtdGluLCAwLCAxLFxuICAgICAgICB0b3V0LCAwLCAxLFxuXG4gICAgICAgIC10aW4sIDMgKiB0b3V0LCAxLFxuICAgICAgICAyICogdG91dCwgLXRvdXQsIDEsXG4gICAgICAgIC10aW4sIC10b3V0LCAxLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcG9zaXRpb25zID0gcG9zaXRpb25zLmNvbmNhdChbXG4gICAgICAvLyBGaWxsXG4gICAgICAwLCAwLCAwLFxuICAgICAgMCwgMSwgMCxcbiAgICAgIDEsIDAsIDAsXG5cbiAgICAgIDAsIDEsIDAsXG4gICAgICAxLCAwLCAtMyxcbiAgICAgIDEsIDEsIC0zLFxuXG4gICAgICAxLCAwLCAwLFxuICAgICAgMSwgMiwgLTMsXG4gICAgICAxLCAwLCAtMyxcbiAgICBdKTtcblxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIHBpeGVsT2Zmc2V0cyA9IHBpeGVsT2Zmc2V0cy5jb25jYXQoW1xuICAgICAgLy8gRmlsbFxuICAgICAgMCwgMCwgMCxcbiAgICAgIDAsIDAsIDAsXG4gICAgICAwLCAwLCAwLFxuXG4gICAgICAwLCAwLCAwLFxuICAgICAgMCwgMCwgMCxcbiAgICAgIDAsIDAsIDAsXG5cbiAgICAgIDAsIDAsIDAsXG4gICAgICAwLCAwLCAwLFxuICAgICAgMCwgMCwgMCxcbiAgICBdKTtcblxuICAgIHJldHVybiBuZXcgTW9kZWwoZ2wsIHtcbiAgICAgIGlkOiB0aGlzLnByb3BzLmlkLFxuICAgICAgLi4udGhpcy5nZXRTaGFkZXJzKCksXG4gICAgICBnZW9tZXRyeTogbmV3IEdlb21ldHJ5KHtcbiAgICAgICAgZHJhd1R5cGU6IEdMLlRSSUFOR0xFUyxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIHBvc2l0aW9uczogbmV3IEZsb2F0MzJBcnJheShwb3NpdGlvbnMpLFxuICAgICAgICAgIG5vcm1hbHM6IG5ldyBGbG9hdDMyQXJyYXkocGl4ZWxPZmZzZXRzKSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgaXNJbnN0YW5jZWQ6IHRydWUsXG4gICAgICBzaGFkZXJDYWNoZTogdGhpcy5jb250ZXh0LnNoYWRlckNhY2hlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZsb3dMaW5lc0xheWVyO1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const _default: "#define SHADER_NAME flow-line-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\nvoid main(void) {\n if (vColor.a == 0.0) {\n discard;\n }\n\n geometry.uv = uv;\n gl_FragColor = vColor;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n";
|
|
2
|
+
export default _default;
|
|
3
|
+
//# sourceMappingURL=FlowLinesLayerFragment.glsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowLinesLayerFragment.glsl.d.ts","sourceRoot":"","sources":["../../src/FlowLinesLayer/FlowLinesLayerFragment.glsl.ts"],"names":[],"mappings":";AAiBA,wBAiBE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright 2022 FlowmapBlue
|
|
5
|
+
* Copyright 2018-2020 Teralytics, modified by FlowmapBlue
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
exports.default = "#define SHADER_NAME flow-line-layer-fragment-shader\n\nprecision highp float;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\nvoid main(void) {\n if (vColor.a == 0.0) {\n discard;\n }\n\n geometry.uv = uv;\n gl_FragColor = vColor;\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n";
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXJGcmFnbWVudC5nbHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0Zsb3dMaW5lc0xheWVyL0Zsb3dMaW5lc0xheWVyRnJhZ21lbnQuZ2xzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsa0JBQWUsaVNBaUJkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGBcXFxuI2RlZmluZSBTSEFERVJfTkFNRSBmbG93LWxpbmUtbGF5ZXItZnJhZ21lbnQtc2hhZGVyXG5cbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxudmFyeWluZyB2ZWM0IHZDb2xvcjtcbnZhcnlpbmcgdmVjMiB1djtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgaWYgKHZDb2xvci5hID09IDAuMCkge1xuICAgIGRpc2NhcmQ7XG4gIH1cblxuICBnZW9tZXRyeS51diA9IHV2O1xuICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZ2xfRnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const _default: "#define SHADER_NAME flow-line-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 normals;\nattribute vec4 instanceColors;\nattribute float instanceThickness; // 0..0.5\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec3 instancePickingColors;\nattribute vec2 instanceEndpointOffsets;\nattribute float instancePickable;\n\nuniform vec4 outlineColor;\nuniform float thicknessUnit;\nuniform float gap;\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n \n // Position\n vec4 source_commonspace; \n vec4 target_commonspace;\n vec4 source = project_position_to_clipspace(instanceSourcePositions, instanceSourcePositions64Low, vec3(0.), source_commonspace);\n vec4 target = project_position_to_clipspace(instanceTargetPositions, instanceTargetPositions64Low, vec3(0.), target_commonspace);\n\n // linear interpolation of source & target to pick right coord\n float sourceOrTarget = positions.x;\n geometry.position = mix(source_commonspace, target_commonspace, sourceOrTarget);\n uv = positions.xy;\n geometry.uv = uv;\n if (instancePickable > 0.5) {\n geometry.pickingColor = instancePickingColors;\n }\n \n // set the clamp limits in pixel size \n float lengthCommon = length(target_commonspace - source_commonspace); \n vec2 offsetDistances = project_pixel_size(positions.yz) * thicknessUnit;\n \n vec2 limitedOffsetDistances = clamp( \n project_pixel_size(positions.yz) * thicknessUnit,\n -lengthCommon*.8, lengthCommon*.8\n );\n float startOffsetCommon = project_pixel_size(instanceEndpointOffsets[0]);\n float endOffsetCommon = project_pixel_size(instanceEndpointOffsets[1]);\n float endpointOffset = mix(\n clamp(startOffsetCommon, 0.0, lengthCommon*.2),\n -clamp(endOffsetCommon, 0.0, lengthCommon*.2),\n positions.x\n );\n\n vec2 flowlineDir = normalize(target_commonspace.xy - source_commonspace.xy);\n vec2 perpendicularDir = vec2(-flowlineDir.y, flowlineDir.x);\n vec2 normalsCommon = project_pixel_size(normals.xy);\n float gapCommon = project_pixel_size(gap);\n vec3 offsetCommon = vec3(\n flowlineDir * (instanceThickness * limitedOffsetDistances[1] + normalsCommon.y + endpointOffset * 1.05) -\n perpendicularDir * (instanceThickness * limitedOffsetDistances[0] + gapCommon + normalsCommon.x),\n 0.0\n );\n \n DECKGL_FILTER_SIZE(offsetCommon, geometry);\n vec4 position_commonspace = mix(source_commonspace, target_commonspace, sourceOrTarget);\n vec4 offset_commonspace = vec4(offsetCommon, 0.0);\n gl_Position = project_common_position_to_clipspace(position_commonspace + offset_commonspace);\n \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n \n vec4 fillColor = vec4(instanceColors.rgb, instanceColors.a * opacity) / 255.;\n if (instancePickable <= 0.5) {\n vColor = mix(fillColor, vec4(outlineColor.xyz, instanceThickness), normals.z);\n } else {\n vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
2
|
+
export default _default;
|
|
3
|
+
//# sourceMappingURL=FlowLinesLayerVertex.glsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowLinesLayerVertex.glsl.d.ts","sourceRoot":"","sources":["../../src/FlowLinesLayer/FlowLinesLayerVertex.glsl.ts"],"names":[],"mappings":";AAiBA,wBAmFE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*
|
|
4
|
+
* Copyright 2022 FlowmapBlue
|
|
5
|
+
* Copyright 2018-2020 Teralytics, modified by FlowmapBlue
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
exports.default = "#define SHADER_NAME flow-line-layer-vertex-shader\n\nattribute vec3 positions;\nattribute vec3 normals;\nattribute vec4 instanceColors;\nattribute float instanceThickness; // 0..0.5\nattribute vec3 instanceSourcePositions;\nattribute vec3 instanceTargetPositions;\nattribute vec3 instanceSourcePositions64Low;\nattribute vec3 instanceTargetPositions64Low;\nattribute vec3 instancePickingColors;\nattribute vec2 instanceEndpointOffsets;\nattribute float instancePickable;\n\nuniform vec4 outlineColor;\nuniform float thicknessUnit;\nuniform float gap;\nuniform float opacity;\n\nvarying vec4 vColor;\nvarying vec2 uv;\n\nvoid main(void) {\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n \n // Position\n vec4 source_commonspace; \n vec4 target_commonspace;\n vec4 source = project_position_to_clipspace(instanceSourcePositions, instanceSourcePositions64Low, vec3(0.), source_commonspace);\n vec4 target = project_position_to_clipspace(instanceTargetPositions, instanceTargetPositions64Low, vec3(0.), target_commonspace);\n\n // linear interpolation of source & target to pick right coord\n float sourceOrTarget = positions.x;\n geometry.position = mix(source_commonspace, target_commonspace, sourceOrTarget);\n uv = positions.xy;\n geometry.uv = uv;\n if (instancePickable > 0.5) {\n geometry.pickingColor = instancePickingColors;\n }\n \n // set the clamp limits in pixel size \n float lengthCommon = length(target_commonspace - source_commonspace); \n vec2 offsetDistances = project_pixel_size(positions.yz) * thicknessUnit;\n \n vec2 limitedOffsetDistances = clamp( \n project_pixel_size(positions.yz) * thicknessUnit,\n -lengthCommon*.8, lengthCommon*.8\n );\n float startOffsetCommon = project_pixel_size(instanceEndpointOffsets[0]);\n float endOffsetCommon = project_pixel_size(instanceEndpointOffsets[1]);\n float endpointOffset = mix(\n clamp(startOffsetCommon, 0.0, lengthCommon*.2),\n -clamp(endOffsetCommon, 0.0, lengthCommon*.2),\n positions.x\n );\n\n vec2 flowlineDir = normalize(target_commonspace.xy - source_commonspace.xy);\n vec2 perpendicularDir = vec2(-flowlineDir.y, flowlineDir.x);\n vec2 normalsCommon = project_pixel_size(normals.xy);\n float gapCommon = project_pixel_size(gap);\n vec3 offsetCommon = vec3(\n flowlineDir * (instanceThickness * limitedOffsetDistances[1] + normalsCommon.y + endpointOffset * 1.05) -\n perpendicularDir * (instanceThickness * limitedOffsetDistances[0] + gapCommon + normalsCommon.x),\n 0.0\n );\n \n DECKGL_FILTER_SIZE(offsetCommon, geometry);\n vec4 position_commonspace = mix(source_commonspace, target_commonspace, sourceOrTarget);\n vec4 offset_commonspace = vec4(offsetCommon, 0.0);\n gl_Position = project_common_position_to_clipspace(position_commonspace + offset_commonspace);\n \n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n \n vec4 fillColor = vec4(instanceColors.rgb, instanceColors.a * opacity) / 255.;\n if (instancePickable <= 0.5) {\n vColor = mix(fillColor, vec4(outlineColor.xyz, instanceThickness), normals.z);\n } else {\n vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);\n }\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXJWZXJ0ZXguZ2xzbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GbG93TGluZXNMYXllci9GbG93TGluZXNMYXllclZlcnRleC5nbHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxrQkFBZSxxdUdBbUZkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGBcXFxuI2RlZmluZSBTSEFERVJfTkFNRSBmbG93LWxpbmUtbGF5ZXItdmVydGV4LXNoYWRlclxuXG5hdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbnM7XG5hdHRyaWJ1dGUgdmVjMyBub3JtYWxzO1xuYXR0cmlidXRlIHZlYzQgaW5zdGFuY2VDb2xvcnM7XG5hdHRyaWJ1dGUgZmxvYXQgaW5zdGFuY2VUaGlja25lc3M7ICAgIC8vIDAuLjAuNVxuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnM7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVRhcmdldFBvc2l0aW9ucztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlU291cmNlUG9zaXRpb25zNjRMb3c7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVRhcmdldFBvc2l0aW9uczY0TG93O1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuYXR0cmlidXRlIHZlYzIgaW5zdGFuY2VFbmRwb2ludE9mZnNldHM7XG5hdHRyaWJ1dGUgZmxvYXQgaW5zdGFuY2VQaWNrYWJsZTtcblxudW5pZm9ybSB2ZWM0IG91dGxpbmVDb2xvcjtcbnVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzVW5pdDtcbnVuaWZvcm0gZmxvYXQgZ2FwO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuXG52YXJ5aW5nIHZlYzQgdkNvbG9yO1xudmFyeWluZyB2ZWMyIHV2O1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uID0gaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnM7XG4gIGdlb21ldHJ5LndvcmxkUG9zaXRpb25BbHQgPSBpbnN0YW5jZVRhcmdldFBvc2l0aW9ucztcbiAgXG4gIC8vIFBvc2l0aW9uXG4gIHZlYzQgc291cmNlX2NvbW1vbnNwYWNlOyAgICBcbiAgdmVjNCB0YXJnZXRfY29tbW9uc3BhY2U7XG4gIHZlYzQgc291cmNlID0gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UoaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnMsIGluc3RhbmNlU291cmNlUG9zaXRpb25zNjRMb3csIHZlYzMoMC4pLCBzb3VyY2VfY29tbW9uc3BhY2UpO1xuICB2ZWM0IHRhcmdldCA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zLCBpbnN0YW5jZVRhcmdldFBvc2l0aW9uczY0TG93LCB2ZWMzKDAuKSwgdGFyZ2V0X2NvbW1vbnNwYWNlKTtcblxuICAvLyBsaW5lYXIgaW50ZXJwb2xhdGlvbiBvZiBzb3VyY2UgJiB0YXJnZXQgdG8gcGljayByaWdodCBjb29yZFxuICBmbG9hdCBzb3VyY2VPclRhcmdldCA9IHBvc2l0aW9ucy54O1xuICBnZW9tZXRyeS5wb3NpdGlvbiA9IG1peChzb3VyY2VfY29tbW9uc3BhY2UsIHRhcmdldF9jb21tb25zcGFjZSwgc291cmNlT3JUYXJnZXQpO1xuICB1diA9IHBvc2l0aW9ucy54eTtcbiAgZ2VvbWV0cnkudXYgPSB1djtcbiAgaWYgKGluc3RhbmNlUGlja2FibGUgPiAwLjUpIHtcbiAgICBnZW9tZXRyeS5waWNraW5nQ29sb3IgPSBpbnN0YW5jZVBpY2tpbmdDb2xvcnM7XG4gIH1cbiAgXG4gIC8vIHNldCB0aGUgY2xhbXAgbGltaXRzIGluIHBpeGVsIHNpemUgXG4gIGZsb2F0IGxlbmd0aENvbW1vbiA9IGxlbmd0aCh0YXJnZXRfY29tbW9uc3BhY2UgLSBzb3VyY2VfY29tbW9uc3BhY2UpOyAgICBcbiAgdmVjMiBvZmZzZXREaXN0YW5jZXMgPSBwcm9qZWN0X3BpeGVsX3NpemUocG9zaXRpb25zLnl6KSAqIHRoaWNrbmVzc1VuaXQ7XG4gIFxuICB2ZWMyIGxpbWl0ZWRPZmZzZXREaXN0YW5jZXMgPSBjbGFtcCggICBcbiAgICBwcm9qZWN0X3BpeGVsX3NpemUocG9zaXRpb25zLnl6KSAqIHRoaWNrbmVzc1VuaXQsXG4gICAgLWxlbmd0aENvbW1vbiouOCwgbGVuZ3RoQ29tbW9uKi44XG4gICk7XG4gIGZsb2F0IHN0YXJ0T2Zmc2V0Q29tbW9uID0gcHJvamVjdF9waXhlbF9zaXplKGluc3RhbmNlRW5kcG9pbnRPZmZzZXRzWzBdKTtcbiAgZmxvYXQgZW5kT2Zmc2V0Q29tbW9uID0gcHJvamVjdF9waXhlbF9zaXplKGluc3RhbmNlRW5kcG9pbnRPZmZzZXRzWzFdKTtcbiAgZmxvYXQgZW5kcG9pbnRPZmZzZXQgPSBtaXgoXG4gICAgY2xhbXAoc3RhcnRPZmZzZXRDb21tb24sIDAuMCwgbGVuZ3RoQ29tbW9uKi4yKSxcbiAgICAtY2xhbXAoZW5kT2Zmc2V0Q29tbW9uLCAwLjAsIGxlbmd0aENvbW1vbiouMiksXG4gICAgcG9zaXRpb25zLnhcbiAgKTtcblxuICB2ZWMyIGZsb3dsaW5lRGlyID0gbm9ybWFsaXplKHRhcmdldF9jb21tb25zcGFjZS54eSAtIHNvdXJjZV9jb21tb25zcGFjZS54eSk7XG4gIHZlYzIgcGVycGVuZGljdWxhckRpciA9IHZlYzIoLWZsb3dsaW5lRGlyLnksIGZsb3dsaW5lRGlyLngpO1xuICB2ZWMyIG5vcm1hbHNDb21tb24gPSBwcm9qZWN0X3BpeGVsX3NpemUobm9ybWFscy54eSk7XG4gIGZsb2F0IGdhcENvbW1vbiA9IHByb2plY3RfcGl4ZWxfc2l6ZShnYXApO1xuICB2ZWMzIG9mZnNldENvbW1vbiA9IHZlYzMoXG4gICAgZmxvd2xpbmVEaXIgKiAoaW5zdGFuY2VUaGlja25lc3MgKiBsaW1pdGVkT2Zmc2V0RGlzdGFuY2VzWzFdICsgbm9ybWFsc0NvbW1vbi55ICsgZW5kcG9pbnRPZmZzZXQgKiAxLjA1KSAtXG4gICAgcGVycGVuZGljdWxhckRpciAqIChpbnN0YW5jZVRoaWNrbmVzcyAqIGxpbWl0ZWRPZmZzZXREaXN0YW5jZXNbMF0gKyBnYXBDb21tb24gKyBub3JtYWxzQ29tbW9uLngpLFxuICAgIDAuMFxuICApO1xuICBcbiAgREVDS0dMX0ZJTFRFUl9TSVpFKG9mZnNldENvbW1vbiwgZ2VvbWV0cnkpO1xuICB2ZWM0IHBvc2l0aW9uX2NvbW1vbnNwYWNlID0gbWl4KHNvdXJjZV9jb21tb25zcGFjZSwgdGFyZ2V0X2NvbW1vbnNwYWNlLCBzb3VyY2VPclRhcmdldCk7XG4gIHZlYzQgb2Zmc2V0X2NvbW1vbnNwYWNlID0gdmVjNChvZmZzZXRDb21tb24sIDAuMCk7XG4gIGdsX1Bvc2l0aW9uID0gcHJvamVjdF9jb21tb25fcG9zaXRpb25fdG9fY2xpcHNwYWNlKHBvc2l0aW9uX2NvbW1vbnNwYWNlICsgb2Zmc2V0X2NvbW1vbnNwYWNlKTtcbiAgICAgIFxuICBERUNLR0xfRklMVEVSX0dMX1BPU0lUSU9OKGdsX1Bvc2l0aW9uLCBnZW9tZXRyeSk7XG4gIFxuICB2ZWM0IGZpbGxDb2xvciA9IHZlYzQoaW5zdGFuY2VDb2xvcnMucmdiLCBpbnN0YW5jZUNvbG9ycy5hICogb3BhY2l0eSkgLyAyNTUuO1xuICBpZiAoaW5zdGFuY2VQaWNrYWJsZSA8PSAwLjUpIHtcbiAgICB2Q29sb3IgPSBtaXgoZmlsbENvbG9yLCB2ZWM0KG91dGxpbmVDb2xvci54eXosIGluc3RhbmNlVGhpY2tuZXNzKSwgbm9ybWFscy56KTtcbiAgfSBlbHNlIHtcbiAgICB2Q29sb3IgPSBtaXgoZmlsbENvbG9yLCB2ZWM0KG91dGxpbmVDb2xvci54eXosIG91dGxpbmVDb2xvci53ICogZmlsbENvbG9yLncpLCBub3JtYWxzLnopO1xuICB9XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IodkNvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/FlowLinesLayer/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var FlowLinesLayer_1 = __importDefault(require("./FlowLinesLayer"));
|
|
7
|
+
exports.default = FlowLinesLayer_1.default;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0xpbmVzTGF5ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvRUFBOEM7QUFFOUMsa0JBQWUsd0JBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGbG93TGluZXNMYXllciBmcm9tICcuL0Zsb3dMaW5lc0xheWVyJztcblxuZXhwb3J0IGRlZmF1bHQgRmxvd0xpbmVzTGF5ZXI7XG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CompositeLayer } from '@deck.gl/core';
|
|
2
|
+
import { FlowLinesLayerAttributes, FlowmapData, FlowmapDataAccessors, FlowmapDataProvider, LayersData, FlowmapAggregateAccessors } from '@flowmap.gl/data';
|
|
3
|
+
import { FlowmapLayerPickingInfo, LayerProps } from './types';
|
|
4
|
+
export declare type FlowmapLayerProps<L, F> = {
|
|
5
|
+
data?: FlowmapData<L, F>;
|
|
6
|
+
dataProvider?: FlowmapDataProvider<L, F>;
|
|
7
|
+
locationTotalsEnabled?: boolean;
|
|
8
|
+
adaptiveScalesEnabled?: boolean;
|
|
9
|
+
animationEnabled?: boolean;
|
|
10
|
+
clusteringEnabled?: boolean;
|
|
11
|
+
clusteringLevel?: number;
|
|
12
|
+
fadeEnabled?: boolean;
|
|
13
|
+
fadeOpacityEnabled?: boolean;
|
|
14
|
+
clusteringAuto?: boolean;
|
|
15
|
+
darkMode?: boolean;
|
|
16
|
+
fadeAmount?: number;
|
|
17
|
+
colorScheme?: string | string[];
|
|
18
|
+
highlightColor?: string | number[];
|
|
19
|
+
maxTopFlowsDisplayNum?: number;
|
|
20
|
+
onHover?: (info: FlowmapLayerPickingInfo<L, F> | undefined, event: SourceEvent) => void;
|
|
21
|
+
onClick?: (info: FlowmapLayerPickingInfo<L, F>, event: SourceEvent) => void;
|
|
22
|
+
} & Partial<FlowmapDataAccessors<L, F>> & LayerProps;
|
|
23
|
+
declare enum HighlightType {
|
|
24
|
+
LOCATION = "location",
|
|
25
|
+
FLOW = "flow"
|
|
26
|
+
}
|
|
27
|
+
declare type HighlightedLocationObject = {
|
|
28
|
+
type: HighlightType.LOCATION;
|
|
29
|
+
coords: [number, number];
|
|
30
|
+
radius: number;
|
|
31
|
+
};
|
|
32
|
+
declare type HighlightedFlowObject = {
|
|
33
|
+
type: HighlightType.FLOW;
|
|
34
|
+
lineAttributes: FlowLinesLayerAttributes;
|
|
35
|
+
};
|
|
36
|
+
declare type HighlightedObject = HighlightedLocationObject | HighlightedFlowObject;
|
|
37
|
+
declare type State<L, F> = {
|
|
38
|
+
accessors: FlowmapAggregateAccessors<L, F>;
|
|
39
|
+
dataProvider: FlowmapDataProvider<L, F>;
|
|
40
|
+
layersData: LayersData | undefined;
|
|
41
|
+
highlightedObject: HighlightedObject | undefined;
|
|
42
|
+
pickingInfo: FlowmapLayerPickingInfo<L, F> | undefined;
|
|
43
|
+
};
|
|
44
|
+
export declare type SourceEvent = {
|
|
45
|
+
srcEvent: MouseEvent;
|
|
46
|
+
};
|
|
47
|
+
export default class FlowmapLayer<L, F> extends CompositeLayer {
|
|
48
|
+
static defaultProps: {
|
|
49
|
+
darkMode: boolean;
|
|
50
|
+
fadeAmount: number;
|
|
51
|
+
locationTotalsEnabled: boolean;
|
|
52
|
+
animationEnabled: boolean;
|
|
53
|
+
clusteringEnabled: boolean;
|
|
54
|
+
fadeEnabled: boolean;
|
|
55
|
+
fadeOpacityEnabled: boolean;
|
|
56
|
+
clusteringAuto: boolean;
|
|
57
|
+
clusteringLevel: undefined;
|
|
58
|
+
adaptiveScalesEnabled: boolean;
|
|
59
|
+
colorScheme: string;
|
|
60
|
+
highlightColor: string;
|
|
61
|
+
maxTopFlowsDisplayNum: number;
|
|
62
|
+
};
|
|
63
|
+
state: State<L, F> | undefined;
|
|
64
|
+
constructor(props: FlowmapLayerProps<L, F>);
|
|
65
|
+
initializeState(): void;
|
|
66
|
+
getPickingInfo({ info }: Record<string, any>): any;
|
|
67
|
+
private _updateAccessors;
|
|
68
|
+
private _getOrMakeDataProvider;
|
|
69
|
+
private _updateDataProvider;
|
|
70
|
+
shouldUpdateState(params: Record<string, any>): boolean;
|
|
71
|
+
updateState({ oldProps, props, changeFlags }: Record<string, any>): void;
|
|
72
|
+
private _getSettingsState;
|
|
73
|
+
private _getFlowmapState;
|
|
74
|
+
private _getFlowmapLayerPickingInfo;
|
|
75
|
+
private _getHighlightedObject;
|
|
76
|
+
renderLayers(): Array<any>;
|
|
77
|
+
}
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=FlowmapLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowmapLayer.d.ts","sourceRoot":"","sources":["../src/FlowmapLayer.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,OAAO,EAEL,wBAAwB,EACxB,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EAOnB,UAAU,EAIV,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,uBAAuB,EACvB,UAAU,EAGX,MAAM,SAAS,CAAC;AAEjB,oBAAY,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI;IACpC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,YAAY,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,CACR,IAAI,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,EAC/C,KAAK,EAAE,WAAW,KACf,IAAI,CAAC;IACV,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC7E,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACrC,UAAU,CAAC;AAEb,aAAK,aAAa;IAChB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,aAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC;IAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,aAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;IACzB,cAAc,EAAE,wBAAwB,CAAC;CAC1C,CAAC;AAEF,aAAK,iBAAiB,GAAG,yBAAyB,GAAG,qBAAqB,CAAC;AAE3E,aAAK,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI;IACjB,SAAS,EAAE,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,YAAY,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC,iBAAiB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACjD,WAAW,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;CACxD,CAAC;AAEF,oBAAY,WAAW,GAAG;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAC,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,cAAc;IAC5D,MAAM,CAAC,YAAY;;;;;;;;;;;;;;MAcjB;IACF,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;gBAEZ,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IAmCjD,eAAe;IAUf,cAAc,CAAC,EAAC,IAAI,EAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAe1C,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,mBAAmB;IAI3B,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IAavD,WAAW,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA8BtE,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,gBAAgB;YAYV,2BAA2B;IA4EzC,OAAO,CAAC,qBAAqB;IA6C7B,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC;CAiG3B"}
|