@flowmap.gl/layers 8.0.0-alpha.13 → 8.0.0-alpha.17
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/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts +1 -1
- package/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts.map +1 -1
- package/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js +2 -1
- package/dist/FlowLinesLayer/FlowLinesLayer.d.ts.map +1 -1
- package/dist/FlowLinesLayer/FlowLinesLayer.js +64 -56
- package/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts +1 -1
- package/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts.map +1 -1
- package/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.js +8 -6
- package/package.json +4 -6
- package/src/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.ts +1 -0
- package/src/FlowLinesLayer/FlowLinesLayer.ts +71 -65
- package/src/FlowLinesLayer/FlowLinesLayerVertex.glsl.ts +7 -5
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts +0 -76
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts.map +0 -1
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js +0 -178
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts +0 -3
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts.map +0 -1
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js +0 -21
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts +0 -3
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts.map +0 -1
- package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js +0 -21
- package/dist-es5/AnimatedFlowLinesLayer/index.d.ts +0 -3
- package/dist-es5/AnimatedFlowLinesLayer/index.d.ts.map +0 -1
- package/dist-es5/AnimatedFlowLinesLayer/index.js +0 -8
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts +0 -59
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts.map +0 -1
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.js +0 -149
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts +0 -3
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts.map +0 -1
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js +0 -21
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts +0 -3
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts.map +0 -1
- package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js +0 -21
- package/dist-es5/FlowCirclesLayer/index.d.ts +0 -3
- package/dist-es5/FlowCirclesLayer/index.d.ts.map +0 -1
- package/dist-es5/FlowCirclesLayer/index.js +0 -8
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts +0 -64
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts.map +0 -1
- package/dist-es5/FlowLinesLayer/FlowLinesLayer.js +0 -217
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts +0 -3
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts.map +0 -1
- package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.js +0 -21
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts +0 -3
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts.map +0 -1
- package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.js +0 -21
- package/dist-es5/FlowLinesLayer/index.d.ts +0 -3
- package/dist-es5/FlowLinesLayer/index.d.ts.map +0 -1
- package/dist-es5/FlowLinesLayer/index.js +0 -8
- package/dist-es5/FlowmapLayer.d.ts +0 -79
- package/dist-es5/FlowmapLayer.d.ts.map +0 -1
- package/dist-es5/FlowmapLayer.js +0 -476
- package/dist-es5/index.d.ts +0 -7
- package/dist-es5/index.d.ts.map +0 -1
- package/dist-es5/index.js +0 -26
- package/dist-es5/types.d.ts +0 -36
- package/dist-es5/types.d.ts.map +0 -1
- package/dist-es5/types.js +0 -23
- package/tsconfig.es5.json +0 -11
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
declare const _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";
|
|
1
|
+
declare const _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 = vColor.a;\n gl_FragColor.a *= smoothstep(0.0, SOFT_OUTLINE, 1.0 - distToCenter);\n DECKGL_FILTER_COLOR(gl_FragColor, geometry);\n}\n";
|
|
2
2
|
export default _default;
|
|
3
3
|
//# sourceMappingURL=FlowCirclesLayerFragment.glsl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowCirclesLayerFragment.glsl.d.ts","sourceRoot":"","sources":["../../src/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.ts"],"names":[],"mappings":";AAiBA,
|
|
1
|
+
{"version":3,"file":"FlowCirclesLayerFragment.glsl.d.ts","sourceRoot":"","sources":["../../src/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.ts"],"names":[],"mappings":";AAiBA,wBA0DE"}
|
|
@@ -69,8 +69,9 @@ void main(void) {
|
|
|
69
69
|
gl_FragColor = mix(gl_FragColor, ringColor, smoothstep(step3, step4, distToCenter));
|
|
70
70
|
gl_FragColor = mix(gl_FragColor, outlineColor, smoothstep(step5, step6, distToCenter));
|
|
71
71
|
// gl_FragColor = mix(gl_FragColor, emptyColor / 255., smoothstep(step6, 1.0, distToCenter));
|
|
72
|
+
gl_FragColor.a = vColor.a;
|
|
72
73
|
gl_FragColor.a *= smoothstep(0.0, SOFT_OUTLINE, 1.0 - distToCenter);
|
|
73
74
|
DECKGL_FILTER_COLOR(gl_FragColor, geometry);
|
|
74
75
|
}
|
|
75
76
|
`;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NpcmNsZXNMYXllckZyYWdtZW50Lmdsc2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0NpcmNsZXNMYXllci9GbG93Q2lyY2xlc0xheWVyRnJhZ21lbnQuZ2xzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwRGQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMiBGbG93bWFwQmx1ZVxuICogQ29weXJpZ2h0IDIwMTgtMjAyMCBUZXJhbHl0aWNzLCBtb2RpZmllZCBieSBGbG93bWFwQmx1ZVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYFxcXG4jZGVmaW5lIFNIQURFUl9OQU1FIGZsb3ctY2lyY2xlcy1sYXllci1mcmFnbWVudC1zaGFkZXJcbiNkZWZpbmUgU09GVF9PVVRMSU5FIDAuMDVcbiNkZWZpbmUgRVBTIDAuMDVcbnByZWNpc2lvbiBoaWdocCBmbG9hdDtcblxudW5pZm9ybSB2ZWM0IGVtcHR5Q29sb3I7XG51bmlmb3JtIGZsb2F0IG91dGxpbmVFbXB0eU1peDtcblxudmFyeWluZyB2ZWM0IHZDb2xvcjtcbnZhcnlpbmcgdmVjMiB1bml0UG9zaXRpb247XG52YXJ5aW5nIGZsb2F0IHVuaXRJblJhZGl1cztcbnZhcnlpbmcgZmxvYXQgdW5pdE91dFJhZGl1cztcblxuZmxvYXQgd2hlbl9ndChmbG9hdCB4LCBmbG9hdCB5KSB7XG4gIHJldHVybiBtYXgoc2lnbih4IC0geSksIDAuMCk7XG59XG5cbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdlb21ldHJ5LnV2ID0gdW5pdFBvc2l0aW9uO1xuICBmbG9hdCBkaXN0VG9DZW50ZXIgPSBsZW5ndGgodW5pdFBvc2l0aW9uKTtcbiAgaWYgKGRpc3RUb0NlbnRlciA+IDEuMCkge1xuICAgIGRpc2NhcmQ7XG4gIH1cblxuICAvLyBTZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDcyODU3NzhcbiAgdmVjNCByaW5nQ29sb3IgPSBtaXgoXG4gICAgZW1wdHlDb2xvciAvIDI1NS4sIHZDb2xvcixcbiAgICB3aGVuX2d0KHVuaXRJblJhZGl1cywgdW5pdE91dFJhZGl1cylcbiAgKTtcbiAgdmVjNCBvdXRsaW5lQ29sb3IgPSBtaXgoXG4gICAgbWl4KHZDb2xvciwgZW1wdHlDb2xvciAvIDI1NS4sIG91dGxpbmVFbXB0eU1peCksXG4gICAgdkNvbG9yLFxuICAgIHdoZW5fZ3QodW5pdEluUmFkaXVzLCB1bml0T3V0UmFkaXVzKVxuICApO1xuICBcbiAgZmxvYXQgaW5uZXJSID0gbWluKHVuaXRJblJhZGl1cywgdW5pdE91dFJhZGl1cykgKiAoMS4wIC0gU09GVF9PVVRMSU5FKTtcbiAgXG4gIC8vIElubmVyIGNpcmNsZVxuICBmbG9hdCBzdGVwMiA9IGlubmVyUiAtIDIuMCAqIEVQUzsgXG4gIGZsb2F0IHN0ZXAzID0gaW5uZXJSIC0gRVBTO1xuICBcbiAgLy8gUmluZ1xuICBmbG9hdCBzdGVwNCA9IGlubmVyUjtcbiAgLy8gZmxvYXQgc3RlcDUgPSAxLjAgLSBTT0ZUX09VVExJTkUgLSBFUFM7XG4gIC8vIGZsb2F0IHN0ZXA2ID0gMS4wIC0gU09GVF9PVVRMSU5FO1xuICBmbG9hdCBzdGVwNSA9IDEuMCAtIDUuMCAqIEVQUztcbiAgZmxvYXQgc3RlcDYgPSAxLjA7XG4gIFxuICBnbF9GcmFnQ29sb3IgPSB2Q29sb3I7XG4gIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIGVtcHR5Q29sb3IgLyAyNTUuLCBzbW9vdGhzdGVwKHN0ZXAyLCBzdGVwMywgZGlzdFRvQ2VudGVyKSk7XG4gIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIHJpbmdDb2xvciwgc21vb3Roc3RlcChzdGVwMywgc3RlcDQsIGRpc3RUb0NlbnRlcikpO1xuICBnbF9GcmFnQ29sb3IgPSBtaXgoZ2xfRnJhZ0NvbG9yLCBvdXRsaW5lQ29sb3IsIHNtb290aHN0ZXAoc3RlcDUsIHN0ZXA2LCBkaXN0VG9DZW50ZXIpKTtcbiAgLy8gZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgZW1wdHlDb2xvciAvIDI1NS4sIHNtb290aHN0ZXAoc3RlcDYsIDEuMCwgZGlzdFRvQ2VudGVyKSk7XG4gIGdsX0ZyYWdDb2xvci5hID0gdkNvbG9yLmE7XG4gIGdsX0ZyYWdDb2xvci5hICo9IHNtb290aHN0ZXAoMC4wLCBTT0ZUX09VVExJTkUsIDEuMCAtIGRpc3RUb0NlbnRlcik7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IoZ2xfRnJhZ0NvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19
|
|
@@ -1 +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;
|
|
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;AAsED,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;IAe3C,SAAS,CAAC,EAAE,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA8B1D;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -22,6 +22,61 @@ import FragmentShader from './FlowLinesLayerFragment.glsl';
|
|
|
22
22
|
import VertexShader from './FlowLinesLayerVertex.glsl';
|
|
23
23
|
const DEFAULT_COLOR = [0, 132, 193, 255];
|
|
24
24
|
const INNER_SIDE_OUTLINE_THICKNESS = 1;
|
|
25
|
+
// source_target_mix, perpendicular_offset_in_thickness_units, direction_of_travel_offset_in_thickness_units
|
|
26
|
+
// prettier-ignore
|
|
27
|
+
const POSITIONS = [
|
|
28
|
+
1, 0, 0,
|
|
29
|
+
1, 2, -3,
|
|
30
|
+
1, 1, -3,
|
|
31
|
+
1, 0, 0,
|
|
32
|
+
1, 1, -3,
|
|
33
|
+
0, 1, 0,
|
|
34
|
+
1, 0, 0,
|
|
35
|
+
0, 1, 0,
|
|
36
|
+
0, 0, 0, // 4
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
1
|
|
40
|
+
··
|
|
41
|
+
· ··
|
|
42
|
+
· ··
|
|
43
|
+
3 2 · ··
|
|
44
|
+
······························· ··
|
|
45
|
+
· ······· ···· ··
|
|
46
|
+
· ········ ····· ··
|
|
47
|
+
· ··············· ····· ··
|
|
48
|
+
· ········ ········
|
|
49
|
+
· ················
|
|
50
|
+
4 ························································ 0
|
|
51
|
+
|
|
52
|
+
*/
|
|
53
|
+
function getOutlinePixelOffsets(tout, tin) {
|
|
54
|
+
// perpendicular_offset_in_pixels, direction_of_travel_offset_in_pixels, fill_outline_color_mix
|
|
55
|
+
// prettier-ignore
|
|
56
|
+
return ([
|
|
57
|
+
-tin, 2 * tout, 1,
|
|
58
|
+
2 * tout, -tout, 1,
|
|
59
|
+
tout, -tout, 1,
|
|
60
|
+
-tin, 2 * tout, 1,
|
|
61
|
+
tout, -tout, 1,
|
|
62
|
+
tout, -tout, 1,
|
|
63
|
+
-tin, 2 * tout, 1,
|
|
64
|
+
tout, -tout, 1,
|
|
65
|
+
-tin, -tout, 1, // 4
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
// prettier-ignore
|
|
69
|
+
const ZEROES = [
|
|
70
|
+
0, 0, 0,
|
|
71
|
+
0, 0, 0,
|
|
72
|
+
0, 0, 0,
|
|
73
|
+
0, 0, 0,
|
|
74
|
+
0, 0, 0,
|
|
75
|
+
0, 0, 0,
|
|
76
|
+
0, 0, 0,
|
|
77
|
+
0, 0, 0,
|
|
78
|
+
0, 0, 0,
|
|
79
|
+
];
|
|
25
80
|
class FlowLinesLayer extends Layer {
|
|
26
81
|
// props!: Props;
|
|
27
82
|
constructor(props) {
|
|
@@ -89,7 +144,9 @@ class FlowLinesLayer extends Layer {
|
|
|
89
144
|
const { outlineColor, thicknessUnit } = this.props;
|
|
90
145
|
gl.lineWidth(1);
|
|
91
146
|
this.state.model
|
|
92
|
-
.setUniforms(Object.assign(Object.assign({}, uniforms), { outlineColor: outlineColor.map((x) => x / 255),
|
|
147
|
+
.setUniforms(Object.assign(Object.assign({}, uniforms), { outlineColor: outlineColor.map((x) => x / 255),
|
|
148
|
+
// outlineColor: [1, 0, 0, 1],
|
|
149
|
+
thicknessUnit: thicknessUnit * 2.0, gap: 0.5 }))
|
|
93
150
|
.draw();
|
|
94
151
|
}
|
|
95
152
|
_getModel(gl) {
|
|
@@ -98,64 +155,15 @@ class FlowLinesLayer extends Layer {
|
|
|
98
155
|
const { drawOutline, outlineThickness } = this.props;
|
|
99
156
|
if (drawOutline) {
|
|
100
157
|
// source_target_mix, perpendicular_offset_in_thickness_units, direction_of_travel_offset_in_thickness_units
|
|
101
|
-
|
|
102
|
-
positions = positions.concat([
|
|
103
|
-
// Outline
|
|
104
|
-
0, 0, 0,
|
|
105
|
-
0, 1, 0,
|
|
106
|
-
1, 0, 0,
|
|
107
|
-
0, 1, 0,
|
|
108
|
-
1, 0, -3,
|
|
109
|
-
1, 1, -3,
|
|
110
|
-
1, 0, 0,
|
|
111
|
-
1, 2, -3,
|
|
112
|
-
1, 0, -3,
|
|
113
|
-
]);
|
|
158
|
+
positions = positions.concat(POSITIONS);
|
|
114
159
|
const tout = outlineThickness;
|
|
115
160
|
const tin = INNER_SIDE_OUTLINE_THICKNESS; // the outline shouldn't cover the opposite arrow
|
|
116
|
-
|
|
117
|
-
// prettier-ignore
|
|
118
|
-
pixelOffsets = pixelOffsets.concat([
|
|
119
|
-
// Outline
|
|
120
|
-
-tin, -tout, 1,
|
|
121
|
-
tout, -tout, 1,
|
|
122
|
-
-tin, tout, 1,
|
|
123
|
-
tout, -tout, 1,
|
|
124
|
-
-tin, 0, 1,
|
|
125
|
-
tout, 0, 1,
|
|
126
|
-
-tin, 3 * tout, 1,
|
|
127
|
-
2 * tout, -tout, 1,
|
|
128
|
-
-tin, -tout, 1,
|
|
129
|
-
]);
|
|
161
|
+
pixelOffsets = pixelOffsets.concat(getOutlinePixelOffsets(tout, tin));
|
|
130
162
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
// Fill
|
|
134
|
-
0, 0, 0,
|
|
135
|
-
0, 1, 0,
|
|
136
|
-
1, 0, 0,
|
|
137
|
-
0, 1, 0,
|
|
138
|
-
1, 0, -3,
|
|
139
|
-
1, 1, -3,
|
|
140
|
-
1, 0, 0,
|
|
141
|
-
1, 2, -3,
|
|
142
|
-
1, 0, -3,
|
|
143
|
-
]);
|
|
144
|
-
// prettier-ignore
|
|
145
|
-
pixelOffsets = pixelOffsets.concat([
|
|
146
|
-
// Fill
|
|
147
|
-
0, 0, 0,
|
|
148
|
-
0, 0, 0,
|
|
149
|
-
0, 0, 0,
|
|
150
|
-
0, 0, 0,
|
|
151
|
-
0, 0, 0,
|
|
152
|
-
0, 0, 0,
|
|
153
|
-
0, 0, 0,
|
|
154
|
-
0, 0, 0,
|
|
155
|
-
0, 0, 0,
|
|
156
|
-
]);
|
|
163
|
+
positions = positions.concat(POSITIONS);
|
|
164
|
+
pixelOffsets = pixelOffsets.concat(ZEROES);
|
|
157
165
|
return new Model(gl, Object.assign(Object.assign({ id: this.props.id }, this.getShaders()), { geometry: new Geometry({
|
|
158
|
-
|
|
166
|
+
drawMode: GL.TRIANGLES,
|
|
159
167
|
attributes: {
|
|
160
168
|
positions: new Float32Array(positions),
|
|
161
169
|
normals: new Float32Array(pixelOffsets),
|
|
@@ -179,4 +187,4 @@ FlowLinesLayer.defaultProps = {
|
|
|
179
187
|
},
|
|
180
188
|
};
|
|
181
189
|
export default FlowLinesLayer;
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0xpbmVzTGF5ZXIvRmxvd0xpbmVzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxZQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFzQnZELE1BQU0sYUFBYSxHQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFdkMsTUFBTSxjQUFrQixTQUFRLEtBQUs7SUFnQm5DLGlCQUFpQjtJQUVqQixZQUFZLEtBQWU7UUFDekIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDdEIsRUFBRSxFQUFFLFlBQVk7WUFDaEIsRUFBRSxFQUFFLGNBQWM7WUFDbEIsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxFQUFDLGdCQUFnQixFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV0QyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7WUFDNUIsdUJBQXVCLEVBQUU7Z0JBQ3ZCLFFBQVEsRUFBRSxtQkFBbUI7Z0JB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Q0wsQ0FBQzs7QUExTE0sd0JBQVMsR0FBRyxnQkFBZ0IsQ0FBQztBQUM3QiwyQkFBWSxHQUFHO0lBQ3BCLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDO0lBQ2hFLGlCQUFpQixFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDO0lBQ2hFLFFBQVEsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBQztJQUNsRCxZQUFZLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQztJQUM1RCxXQUFXLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFDO0lBQ3ZELFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2xDLFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRSxLQUFLO0tBQ2pCO0NBQ0YsQ0FBQztBQStLSixlQUFlLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMiBGbG93bWFwQmx1ZVxuICogQ29weXJpZ2h0IDIwMTgtMjAyMCBUZXJhbHl0aWNzLCBtb2RpZmllZCBieSBGbG93bWFwQmx1ZVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuXG5pbXBvcnQge0xheWVyLCBwaWNraW5nLCBwcm9qZWN0MzJ9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IEdMIGZyb20gJ0BsdW1hLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0dlb21ldHJ5LCBNb2RlbH0gZnJvbSAnQGx1bWEuZ2wvY29yZSc7XG5pbXBvcnQgRnJhZ21lbnRTaGFkZXIgZnJvbSAnLi9GbG93TGluZXNMYXllckZyYWdtZW50Lmdsc2wnO1xuaW1wb3J0IFZlcnRleFNoYWRlciBmcm9tICcuL0Zsb3dMaW5lc0xheWVyVmVydGV4Lmdsc2wnO1xuaW1wb3J0IHtGbG93TGluZXNMYXllckF0dHJpYnV0ZXMsIFJHQkF9IGZyb20gJ0BmbG93bWFwLmdsL2RhdGEnO1xuaW1wb3J0IHtMYXllclByb3BzfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcHM8Rj4gZXh0ZW5kcyBMYXllclByb3BzIHtcbiAgaWQ6IHN0cmluZztcbiAgb3BhY2l0eT86IG51bWJlcjtcbiAgcGlja2FibGU/OiBib29sZWFuO1xuICB1cGRhdGVUcmlnZ2Vycz86IHtba2V5OiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn07XG4gIGRhdGE6IEZbXSB8IEZsb3dMaW5lc0xheWVyQXR0cmlidXRlcztcbiAgZHJhd091dGxpbmU6IGJvb2xlYW47XG4gIG91dGxpbmVDb2xvcj86IFJHQkE7XG4gIG91dGxpbmVUaGlja25lc3M/OiBudW1iZXI7XG4gIHRoaWNrbmVzc1VuaXQ/OiBudW1iZXI7XG4gIGdldFNvdXJjZVBvc2l0aW9uPzogKGQ6IEYpID0+IFtudW1iZXIsIG51bWJlcl07XG4gIGdldFRhcmdldFBvc2l0aW9uPzogKGQ6IEYpID0+IFtudW1iZXIsIG51bWJlcl07XG4gIGdldENvbG9yPzogKGQ6IEYpID0+IFJHQkE7XG4gIGdldFRoaWNrbmVzcz86IChkOiBGKSA9PiBudW1iZXI7XG4gIGdldFBpY2thYmxlPzogKGQ6IEYsIHtpbmRleH06IHtpbmRleDogbnVtYmVyfSkgPT4gbnVtYmVyOyAvLyA+PSAxLjAgLT4gdHJ1ZVxuICBnZXRFbmRwb2ludE9mZnNldHM/OiAoZDogRikgPT4gW251bWJlciwgbnVtYmVyXTtcbn1cblxuY29uc3QgREVGQVVMVF9DT0xPUjogUkdCQSA9IFswLCAxMzIsIDE5MywgMjU1XTtcbmNvbnN0IElOTkVSX1NJREVfT1VUTElORV9USElDS05FU1MgPSAxO1xuXG5jbGFzcyBGbG93TGluZXNMYXllcjxGPiBleHRlbmRzIExheWVyIHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdGbG93TGluZXNMYXllcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZ2V0U291cmNlUG9zaXRpb246IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gWzAsIDBdfSxcbiAgICBnZXRUYXJnZXRQb3NpdGlvbjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiAoZDogYW55KSA9PiBbMCwgMF19LFxuICAgIGdldENvbG9yOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IERFRkFVTFRfQ09MT1J9LFxuICAgIGdldFRoaWNrbmVzczoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiAoZDogYW55KSA9PiBkLmNvdW50fSwgLy8gMC4uMC41XG4gICAgZ2V0UGlja2FibGU6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gMS4wfSxcbiAgICBkcmF3T3V0bGluZTogdHJ1ZSxcbiAgICB0aGlja25lc3NVbml0OiAxMixcbiAgICBvdXRsaW5lVGhpY2tuZXNzOiAxLFxuICAgIG91dGxpbmVDb2xvcjogWzI1NSwgMjU1LCAyNTUsIDI1NV0sXG4gICAgcGFyYW1ldGVyczoge1xuICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICB9LFxuICB9O1xuICAvLyBwcm9wcyE6IFByb3BzO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wczxGPikge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxuXG4gIGdldFNoYWRlcnMoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiBzdXBlci5nZXRTaGFkZXJzKHtcbiAgICAgIHZzOiBWZXJ0ZXhTaGFkZXIsXG4gICAgICBmczogRnJhZ21lbnRTaGFkZXIsXG4gICAgICBtb2R1bGVzOiBbcHJvamVjdDMyLCBwaWNraW5nXSxcbiAgICAgIHNoYWRlckNhY2hlOiB0aGlzLmNvbnRleHQuc2hhZGVyQ2FjaGUsXG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoKTogdm9pZCB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZU1hbmFnZXJ9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGF0dHJpYnV0ZU1hbmFnZXIuYWRkSW5zdGFuY2VkKHtcbiAgICAgIGluc3RhbmNlU291cmNlUG9zaXRpb25zOiB7XG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0U291cmNlUG9zaXRpb24nLFxuICAgICAgICBzaXplOiAzLFxuICAgICAgICB0cmFuc2l0aW9uOiBmYWxzZSxcbiAgICAgICAgdHlwZTogR0wuRE9VQkxFLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zOiB7XG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0VGFyZ2V0UG9zaXRpb24nLFxuICAgICAgICBzaXplOiAzLFxuICAgICAgICB0cmFuc2l0aW9uOiBmYWxzZSxcbiAgICAgICAgdHlwZTogR0wuRE9VQkxFLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlVGhpY2tuZXNzOiB7XG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0VGhpY2tuZXNzJyxcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VFbmRwb2ludE9mZnNldHM6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRFbmRwb2ludE9mZnNldHMnLFxuICAgICAgICBzaXplOiAyLFxuICAgICAgICB0cmFuc2l0aW9uOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZUNvbG9yczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldENvbG9yJyxcbiAgICAgICAgc2l6ZTogNCxcbiAgICAgICAgdHlwZTogR0wuVU5TSUdORURfQllURSxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VQaWNrYWJsZToge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFBpY2thYmxlJyxcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU3RhdGUoe3Byb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3N9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgc3VwZXIudXBkYXRlU3RhdGUoe3Byb3BzLCBvbGRQcm9wcywgY2hhbmdlRmxhZ3N9KTtcblxuICAgIGlmIChjaGFuZ2VGbGFncy5leHRlbnNpb25zQ2hhbmdlZCkge1xuICAgICAgY29uc3Qge2dsfSA9IHRoaXMuY29udGV4dDtcbiAgICAgIGlmICh0aGlzLnN0YXRlLm1vZGVsKSB7XG4gICAgICAgIHRoaXMuc3RhdGUubW9kZWwuZGVsZXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKHttb2RlbDogdGhpcy5fZ2V0TW9kZWwoZ2wpfSk7XG4gICAgICB0aGlzLmdldEF0dHJpYnV0ZU1hbmFnZXIoKS5pbnZhbGlkYXRlQWxsKCk7XG4gICAgfVxuICB9XG5cbiAgZHJhdyh7dW5pZm9ybXN9OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgY29uc3Qge2dsfSA9IHRoaXMuY29udGV4dDtcbiAgICBjb25zdCB7b3V0bGluZUNvbG9yLCB0aGlja25lc3NVbml0fSA9IHRoaXMucHJvcHM7XG4gICAgZ2wubGluZVdpZHRoKDEpO1xuICAgIHRoaXMuc3RhdGUubW9kZWxcbiAgICAgIC5zZXRVbmlmb3Jtcyh7XG4gICAgICAgIC4uLnVuaWZvcm1zLFxuICAgICAgICBvdXRsaW5lQ29sb3I6IG91dGxpbmVDb2xvci5tYXAoKHg6IG51bWJlcikgPT4geCAvIDI1NSksXG4gICAgICAgIHRoaWNrbmVzc1VuaXQ6IHRoaWNrbmVzc1VuaXQgKiAyLjAsXG4gICAgICAgIGdhcDogMC41LFxuICAgICAgfSlcbiAgICAgIC5kcmF3KCk7XG4gIH1cblxuICBfZ2V0TW9kZWwoZ2w6IFdlYkdMUmVuZGVyaW5nQ29udGV4dCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGxldCBwb3NpdGlvbnM6IG51bWJlcltdID0gW107XG4gICAgbGV0IHBpeGVsT2Zmc2V0czogbnVtYmVyW10gPSBbXTtcblxuICAgIGNvbnN0IHtkcmF3T3V0bGluZSwgb3V0bGluZVRoaWNrbmVzc30gPSB0aGlzLnByb3BzO1xuICAgIGlmIChkcmF3T3V0bGluZSkge1xuICAgICAgLy8gc291cmNlX3RhcmdldF9taXgsIHBlcnBlbmRpY3VsYXJfb2Zmc2V0X2luX3RoaWNrbmVzc191bml0cywgZGlyZWN0aW9uX29mX3RyYXZlbF9vZmZzZXRfaW5fdGhpY2tuZXNzX3VuaXRzXG4gICAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9ucy5jb25jYXQoW1xuICAgICAgICAgIC8vIE91dGxpbmVcbiAgICAgICAgICAwLCAwLCAwLFxuICAgICAgICAgIDAsIDEsIDAsXG4gICAgICAgICAgMSwgMCwgMCxcblxuICAgICAgICAgIDAsIDEsIDAsXG4gICAgICAgICAgMSwgMCwgLTMsXG4gICAgICAgICAgMSwgMSwgLTMsXG5cbiAgICAgICAgICAxLCAwLCAwLFxuICAgICAgICAgIDEsIDIsIC0zLFxuICAgICAgICAgIDEsIDAsIC0zLFxuICAgICAgICBdLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdG91dCA9IG91dGxpbmVUaGlja25lc3M7XG4gICAgICBjb25zdCB0aW4gPSBJTk5FUl9TSURFX09VVExJTkVfVEhJQ0tORVNTOyAvLyB0aGUgb3V0bGluZSBzaG91bGRuJ3QgY292ZXIgdGhlIG9wcG9zaXRlIGFycm93XG4gICAgICAvLyBwZXJwZW5kaWN1bGFyX29mZnNldF9pbl9waXhlbHMsIGRpcmVjdGlvbl9vZl90cmF2ZWxfb2Zmc2V0X2luX3BpeGVscywgZmlsbF9vdXRsaW5lX2NvbG9yX21peFxuICAgICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICBwaXhlbE9mZnNldHMgPSBwaXhlbE9mZnNldHMuY29uY2F0KFtcbiAgICAgICAgLy8gT3V0bGluZVxuICAgICAgICAtdGluLCAtdG91dCwgMSxcbiAgICAgICAgdG91dCwgLXRvdXQsIDEsXG4gICAgICAgIC10aW4sIHRvdXQsIDEsXG5cbiAgICAgICAgdG91dCwgLXRvdXQsIDEsXG4gICAgICAgIC10aW4sIDAsIDEsXG4gICAgICAgIHRvdXQsIDAsIDEsXG5cbiAgICAgICAgLXRpbiwgMyAqIHRvdXQsIDEsXG4gICAgICAgIDIgKiB0b3V0LCAtdG91dCwgMSxcbiAgICAgICAgLXRpbiwgLXRvdXQsIDEsXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMuY29uY2F0KFtcbiAgICAgIC8vIEZpbGxcbiAgICAgIDAsIDAsIDAsXG4gICAgICAwLCAxLCAwLFxuICAgICAgMSwgMCwgMCxcblxuICAgICAgMCwgMSwgMCxcbiAgICAgIDEsIDAsIC0zLFxuICAgICAgMSwgMSwgLTMsXG5cbiAgICAgIDEsIDAsIDAsXG4gICAgICAxLCAyLCAtMyxcbiAgICAgIDEsIDAsIC0zLFxuICAgIF0pO1xuXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcGl4ZWxPZmZzZXRzID0gcGl4ZWxPZmZzZXRzLmNvbmNhdChbXG4gICAgICAvLyBGaWxsXG4gICAgICAwLCAwLCAwLFxuICAgICAgMCwgMCwgMCxcbiAgICAgIDAsIDAsIDAsXG5cbiAgICAgIDAsIDAsIDAsXG4gICAgICAwLCAwLCAwLFxuICAgICAgMCwgMCwgMCxcblxuICAgICAgMCwgMCwgMCxcbiAgICAgIDAsIDAsIDAsXG4gICAgICAwLCAwLCAwLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIG5ldyBNb2RlbChnbCwge1xuICAgICAgaWQ6IHRoaXMucHJvcHMuaWQsXG4gICAgICAuLi50aGlzLmdldFNoYWRlcnMoKSxcbiAgICAgIGdlb21ldHJ5OiBuZXcgR2VvbWV0cnkoe1xuICAgICAgICBkcmF3VHlwZTogR0wuVFJJQU5HTEVTLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgcG9zaXRpb25zOiBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9ucyksXG4gICAgICAgICAgbm9ybWFsczogbmV3IEZsb2F0MzJBcnJheShwaXhlbE9mZnNldHMpLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBpc0luc3RhbmNlZDogdHJ1ZSxcbiAgICAgIHNoYWRlckNhY2hlOiB0aGlzLmNvbnRleHQuc2hhZGVyQ2FjaGUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmxvd0xpbmVzTGF5ZXI7XG4iXX0=
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0xpbmVzTGF5ZXIvRmxvd0xpbmVzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxZQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFzQnZELE1BQU0sYUFBYSxHQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFdkMsNEdBQTRHO0FBQzVHLGtCQUFrQjtBQUNsQixNQUFNLFNBQVMsR0FBRztJQUNoQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNSLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBR1IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ1AsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDUixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFHUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRyxJQUFJO0NBQ2YsQ0FBQztBQUNGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsU0FBUyxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsR0FBVztJQUN2RCwrRkFBK0Y7SUFDL0Ysa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQztRQUVOLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNmLENBQUMsR0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVkLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNmLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFZCxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRyxJQUFJO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxrQkFBa0I7QUFDbEIsTUFBTSxNQUFNLEdBQUc7SUFDYixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDUixDQUFDO0FBRUYsTUFBTSxjQUFrQixTQUFRLEtBQUs7SUFnQm5DLGlCQUFpQjtJQUVqQixZQUFZLEtBQWU7UUFDekIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDdEIsRUFBRSxFQUFFLFlBQVk7WUFDaEIsRUFBRSxFQUFFLGNBQWM7WUFDbEIsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxFQUFDLGdCQUFnQixFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV0QyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7WUFDNUIsdUJBQXVCLEVBQUU7Z0JBQ3ZCLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLElBQUksRUFBRSxDQUFDO2dCQUNQLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU07YUFDaEI7WUFDRCx1QkFBdUIsRUFBRTtnQkFDdkIsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTTthQUNoQjtZQUNELGlCQUFpQixFQUFFO2dCQUNqQixRQUFRLEVBQUUsY0FBYztnQkFDeEIsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCx1QkFBdUIsRUFBRTtnQkFDdkIsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksRUFBRSxFQUFFLENBQUMsYUFBYTtnQkFDdEIsVUFBVSxFQUFFLEtBQUs7YUFDbEI7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLElBQUksRUFBRSxDQUFDO2dCQUNQLFVBQVUsRUFBRSxLQUFLO2FBQ2xCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFzQjtRQUM3RCxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO1FBRWxELElBQUksV0FBVyxDQUFDLGlCQUFpQixFQUFFO1lBQ2pDLE1BQU0sRUFBQyxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQzNCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsRUFBQyxRQUFRLEVBQXNCO1FBQ2xDLE1BQU0sRUFBQyxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzFCLE1BQU0sRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNqRCxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSzthQUNiLFdBQVcsaUNBQ1AsUUFBUSxLQUNYLFlBQVksRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3RELDhCQUE4QjtZQUM5QixhQUFhLEVBQUUsYUFBYSxHQUFHLEdBQUcsRUFDbEMsR0FBRyxFQUFFLEdBQUcsSUFDUjthQUNELElBQUksRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUF5QjtRQUNqQyxJQUFJLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxZQUFZLEdBQWEsRUFBRSxDQUFDO1FBRWhDLE1BQU0sRUFBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ25ELElBQUksV0FBVyxFQUFFO1lBQ2YsNEdBQTRHO1lBQzVHLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLDRCQUE0QixDQUFDLENBQUMsaURBQWlEO1lBQzNGLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFFLGdDQUNqQixFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUNwQixRQUFRLEVBQUUsSUFBSSxRQUFRLENBQUM7Z0JBQ3JCLFFBQVEsRUFBRSxFQUFFLENBQUMsU0FBUztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLFNBQVMsRUFBRSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUM7aUJBQ3hDO2FBQ0YsQ0FBQyxFQUNGLFdBQVcsRUFBRSxJQUFJLEVBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFDckMsQ0FBQztJQUNMLENBQUM7O0FBL0hNLHdCQUFTLEdBQUcsZ0JBQWdCLENBQUM7QUFDN0IsMkJBQVksR0FBRztJQUNwQixpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQztJQUNoRSxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQztJQUNoRSxRQUFRLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUM7SUFDbEQsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7SUFDNUQsV0FBVyxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBQztJQUN2RCxXQUFXLEVBQUUsSUFBSTtJQUNqQixhQUFhLEVBQUUsRUFBRTtJQUNqQixnQkFBZ0IsRUFBRSxDQUFDO0lBQ25CLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsQyxVQUFVLEVBQUU7UUFDVixTQUFTLEVBQUUsS0FBSztLQUNqQjtDQUNGLENBQUM7QUFvSEosZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHtMYXllciwgcGlja2luZywgcHJvamVjdDMyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCBHTCBmcm9tICdAbHVtYS5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtHZW9tZXRyeSwgTW9kZWx9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuaW1wb3J0IEZyYWdtZW50U2hhZGVyIGZyb20gJy4vRmxvd0xpbmVzTGF5ZXJGcmFnbWVudC5nbHNsJztcbmltcG9ydCBWZXJ0ZXhTaGFkZXIgZnJvbSAnLi9GbG93TGluZXNMYXllclZlcnRleC5nbHNsJztcbmltcG9ydCB7Rmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzLCBSR0JBfSBmcm9tICdAZmxvd21hcC5nbC9kYXRhJztcbmltcG9ydCB7TGF5ZXJQcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPEY+IGV4dGVuZHMgTGF5ZXJQcm9wcyB7XG4gIGlkOiBzdHJpbmc7XG4gIG9wYWNpdHk/OiBudW1iZXI7XG4gIHBpY2thYmxlPzogYm9vbGVhbjtcbiAgdXBkYXRlVHJpZ2dlcnM/OiB7W2tleTogc3RyaW5nXTogUmVjb3JkPHN0cmluZywgdW5rbm93bj59O1xuICBkYXRhOiBGW10gfCBGbG93TGluZXNMYXllckF0dHJpYnV0ZXM7XG4gIGRyYXdPdXRsaW5lOiBib29sZWFuO1xuICBvdXRsaW5lQ29sb3I/OiBSR0JBO1xuICBvdXRsaW5lVGhpY2tuZXNzPzogbnVtYmVyO1xuICB0aGlja25lc3NVbml0PzogbnVtYmVyO1xuICBnZXRTb3VyY2VQb3NpdGlvbj86IChkOiBGKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICBnZXRUYXJnZXRQb3NpdGlvbj86IChkOiBGKSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICBnZXRDb2xvcj86IChkOiBGKSA9PiBSR0JBO1xuICBnZXRUaGlja25lc3M/OiAoZDogRikgPT4gbnVtYmVyO1xuICBnZXRQaWNrYWJsZT86IChkOiBGLCB7aW5kZXh9OiB7aW5kZXg6IG51bWJlcn0pID0+IG51bWJlcjsgLy8gPj0gMS4wIC0+IHRydWVcbiAgZ2V0RW5kcG9pbnRPZmZzZXRzPzogKGQ6IEYpID0+IFtudW1iZXIsIG51bWJlcl07XG59XG5cbmNvbnN0IERFRkFVTFRfQ09MT1I6IFJHQkEgPSBbMCwgMTMyLCAxOTMsIDI1NV07XG5jb25zdCBJTk5FUl9TSURFX09VVExJTkVfVEhJQ0tORVNTID0gMTtcblxuLy8gc291cmNlX3RhcmdldF9taXgsIHBlcnBlbmRpY3VsYXJfb2Zmc2V0X2luX3RoaWNrbmVzc191bml0cywgZGlyZWN0aW9uX29mX3RyYXZlbF9vZmZzZXRfaW5fdGhpY2tuZXNzX3VuaXRzXG4vLyBwcmV0dGllci1pZ25vcmVcbmNvbnN0IFBPU0lUSU9OUyA9IFtcbiAgMSwgMCwgMCwgIC8vIDBcbiAgMSwgMiwgLTMsIC8vIDFcbiAgMSwgMSwgLTMsIC8vIDJcblxuXG4gIDEsIDAsIDAsICAvLyAwXG4gIDEsIDEsIC0zLCAvLyAyXG4gIDAsIDEsIDAsICAvLyAzXG5cblxuICAxLCAwLCAwLCAgLy8gMFxuICAwLCAxLCAwLCAgLy8gM1xuICAwLCAwLCAwLCAgLy8gNFxuXTtcbi8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrfCt1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrcgwrfCt1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrcgICAgwrfCt1xuICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgwrcgICAgICDCt8K3XG4gICAgICDCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCtyAgICAgICAgwrfCt1xuICAgICAgwrcgwrfCt8K3wrfCt8K3wrcgICAgICAgICAgICAgICAgICAgICAgIMK3wrfCt8K3ICAgICAgwrfCt1xuICAgICAgwrcgICAgICAgwrfCt8K3wrfCt8K3wrfCtyAgICAgICAgICAgICAgICAgICDCt8K3wrfCt8K3ICAgICDCt8K3XG4gICAgICDCtyAgICAgICAgICAgICAgIMK3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCtyAgICAgICAgwrfCt8K3wrfCtyAgIMK3wrdcbiAgICAgIMK3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICDCt8K3wrfCt8K3wrfCt8K3ICAgICAgwrfCt8K3wrfCt8K3wrfCt1xuICAgICAgwrcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgwrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrdcbiAgICA0IMK3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrfCt8K3wrcgIDBcblxuICovXG5cbmZ1bmN0aW9uIGdldE91dGxpbmVQaXhlbE9mZnNldHModG91dDogbnVtYmVyLCB0aW46IG51bWJlcikge1xuICAvLyBwZXJwZW5kaWN1bGFyX29mZnNldF9pbl9waXhlbHMsIGRpcmVjdGlvbl9vZl90cmF2ZWxfb2Zmc2V0X2luX3BpeGVscywgZmlsbF9vdXRsaW5lX2NvbG9yX21peFxuICAvLyBwcmV0dGllci1pZ25vcmVcbiAgcmV0dXJuIChbXG5cbiAgICAtdGluLCAyKnRvdXQsIDEsICAgLy8gMFxuICAgIDIqdG91dCwgLXRvdXQsIDEsICAvLyAxXG4gICAgdG91dCwgLXRvdXQsIDEsICAgLy8gMlxuXG4gICAgLXRpbiwgMip0b3V0LCAxLCAvLyAwXG4gICAgdG91dCwgLXRvdXQsIDEsICAvLyAyXG4gICAgdG91dCwgLXRvdXQsIDEsICAvLyAzXG5cbiAgICAtdGluLCAyKnRvdXQsIDEsIC8vIDBcbiAgICB0b3V0LCAtdG91dCwgMSwgIC8vIDNcbiAgICAtdGluLCAtdG91dCwgMSwgIC8vIDRcbiAgXSk7XG59XG5cbi8vIHByZXR0aWVyLWlnbm9yZVxuY29uc3QgWkVST0VTID0gW1xuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuICAwLCAwLCAwLFxuXTtcblxuY2xhc3MgRmxvd0xpbmVzTGF5ZXI8Rj4gZXh0ZW5kcyBMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnRmxvd0xpbmVzTGF5ZXInO1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGdldFNvdXJjZVBvc2l0aW9uOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IChkOiBhbnkpID0+IFswLCAwXX0sXG4gICAgZ2V0VGFyZ2V0UG9zaXRpb246IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gWzAsIDBdfSxcbiAgICBnZXRDb2xvcjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiBERUZBVUxUX0NPTE9SfSxcbiAgICBnZXRUaGlja25lc3M6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogKGQ6IGFueSkgPT4gZC5jb3VudH0sIC8vIDAuLjAuNVxuICAgIGdldFBpY2thYmxlOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IChkOiBhbnkpID0+IDEuMH0sXG4gICAgZHJhd091dGxpbmU6IHRydWUsXG4gICAgdGhpY2tuZXNzVW5pdDogMTIsXG4gICAgb3V0bGluZVRoaWNrbmVzczogMSxcbiAgICBvdXRsaW5lQ29sb3I6IFsyNTUsIDI1NSwgMjU1LCAyNTVdLFxuICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgIGRlcHRoVGVzdDogZmFsc2UsXG4gICAgfSxcbiAgfTtcbiAgLy8gcHJvcHMhOiBQcm9wcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogUHJvcHM8Rj4pIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0U2hhZGVycyh7XG4gICAgICB2czogVmVydGV4U2hhZGVyLFxuICAgICAgZnM6IEZyYWdtZW50U2hhZGVyLFxuICAgICAgbW9kdWxlczogW3Byb2plY3QzMiwgcGlja2luZ10sXG4gICAgICBzaGFkZXJDYWNoZTogdGhpcy5jb250ZXh0LnNoYWRlckNhY2hlLFxuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZVN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHthdHRyaWJ1dGVNYW5hZ2VyfSA9IHRoaXMuc3RhdGU7XG5cbiAgICBhdHRyaWJ1dGVNYW5hZ2VyLmFkZEluc3RhbmNlZCh7XG4gICAgICBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFNvdXJjZVBvc2l0aW9uJyxcbiAgICAgICAgc2l6ZTogMyxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVRhcmdldFBvc2l0aW9uczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFRhcmdldFBvc2l0aW9uJyxcbiAgICAgICAgc2l6ZTogMyxcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICAgIHR5cGU6IEdMLkRPVUJMRSxcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZVRoaWNrbmVzczoge1xuICAgICAgICBhY2Nlc3NvcjogJ2dldFRoaWNrbmVzcycsXG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlRW5kcG9pbnRPZmZzZXRzOiB7XG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RW5kcG9pbnRPZmZzZXRzJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgICAgdHJhbnNpdGlvbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VDb2xvcnM6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRDb2xvcicsXG4gICAgICAgIHNpemU6IDQsXG4gICAgICAgIHR5cGU6IEdMLlVOU0lHTkVEX0JZVEUsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlUGlja2FibGU6IHtcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRQaWNrYWJsZScsXG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIHRyYW5zaXRpb246IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZVN0YXRlKHtwcm9wcywgb2xkUHJvcHMsIGNoYW5nZUZsYWdzfSk7XG5cbiAgICBpZiAoY2hhbmdlRmxhZ3MuZXh0ZW5zaW9uc0NoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5tb2RlbCkge1xuICAgICAgICB0aGlzLnN0YXRlLm1vZGVsLmRlbGV0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWw6IHRoaXMuX2dldE1vZGVsKGdsKX0pO1xuICAgICAgdGhpcy5nZXRBdHRyaWJ1dGVNYW5hZ2VyKCkuaW52YWxpZGF0ZUFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGRyYXcoe3VuaWZvcm1zfTogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGNvbnN0IHtnbH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgY29uc3Qge291dGxpbmVDb2xvciwgdGhpY2tuZXNzVW5pdH0gPSB0aGlzLnByb3BzO1xuICAgIGdsLmxpbmVXaWR0aCgxKTtcbiAgICB0aGlzLnN0YXRlLm1vZGVsXG4gICAgICAuc2V0VW5pZm9ybXMoe1xuICAgICAgICAuLi51bmlmb3JtcyxcbiAgICAgICAgb3V0bGluZUNvbG9yOiBvdXRsaW5lQ29sb3IubWFwKCh4OiBudW1iZXIpID0+IHggLyAyNTUpLFxuICAgICAgICAvLyBvdXRsaW5lQ29sb3I6IFsxLCAwLCAwLCAxXSxcbiAgICAgICAgdGhpY2tuZXNzVW5pdDogdGhpY2tuZXNzVW5pdCAqIDIuMCxcbiAgICAgICAgZ2FwOiAwLjUsXG4gICAgICB9KVxuICAgICAgLmRyYXcoKTtcbiAgfVxuXG4gIF9nZXRNb2RlbChnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgbGV0IHBvc2l0aW9uczogbnVtYmVyW10gPSBbXTtcbiAgICBsZXQgcGl4ZWxPZmZzZXRzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgY29uc3Qge2RyYXdPdXRsaW5lLCBvdXRsaW5lVGhpY2tuZXNzfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKGRyYXdPdXRsaW5lKSB7XG4gICAgICAvLyBzb3VyY2VfdGFyZ2V0X21peCwgcGVycGVuZGljdWxhcl9vZmZzZXRfaW5fdGhpY2tuZXNzX3VuaXRzLCBkaXJlY3Rpb25fb2ZfdHJhdmVsX29mZnNldF9pbl90aGlja25lc3NfdW5pdHNcbiAgICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9ucy5jb25jYXQoUE9TSVRJT05TKTtcbiAgICAgIGNvbnN0IHRvdXQgPSBvdXRsaW5lVGhpY2tuZXNzO1xuICAgICAgY29uc3QgdGluID0gSU5ORVJfU0lERV9PVVRMSU5FX1RISUNLTkVTUzsgLy8gdGhlIG91dGxpbmUgc2hvdWxkbid0IGNvdmVyIHRoZSBvcHBvc2l0ZSBhcnJvd1xuICAgICAgcGl4ZWxPZmZzZXRzID0gcGl4ZWxPZmZzZXRzLmNvbmNhdChnZXRPdXRsaW5lUGl4ZWxPZmZzZXRzKHRvdXQsIHRpbikpO1xuICAgIH1cblxuICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9ucy5jb25jYXQoUE9TSVRJT05TKTtcbiAgICBwaXhlbE9mZnNldHMgPSBwaXhlbE9mZnNldHMuY29uY2F0KFpFUk9FUyk7XG5cbiAgICByZXR1cm4gbmV3IE1vZGVsKGdsLCB7XG4gICAgICBpZDogdGhpcy5wcm9wcy5pZCxcbiAgICAgIC4uLnRoaXMuZ2V0U2hhZGVycygpLFxuICAgICAgZ2VvbWV0cnk6IG5ldyBHZW9tZXRyeSh7XG4gICAgICAgIGRyYXdNb2RlOiBHTC5UUklBTkdMRVMsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBwb3NpdGlvbnM6IG5ldyBGbG9hdDMyQXJyYXkocG9zaXRpb25zKSxcbiAgICAgICAgICBub3JtYWxzOiBuZXcgRmxvYXQzMkFycmF5KHBpeGVsT2Zmc2V0cyksXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIGlzSW5zdGFuY2VkOiB0cnVlLFxuICAgICAgc2hhZGVyQ2FjaGU6IHRoaXMuY29udGV4dC5zaGFkZXJDYWNoZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBGbG93TGluZXNMYXllcjtcbiJdfQ==
|
|
@@ -1,3 +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
|
|
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 // vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);\n vColor = mix(fillColor, outlineColor, normals.z);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
2
2
|
export default _default;
|
|
3
3
|
//# sourceMappingURL=FlowLinesLayerVertex.glsl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowLinesLayerVertex.glsl.d.ts","sourceRoot":"","sources":["../../src/FlowLinesLayer/FlowLinesLayerVertex.glsl.ts"],"names":[],"mappings":";AAiBA,
|
|
1
|
+
{"version":3,"file":"FlowLinesLayerVertex.glsl.d.ts","sourceRoot":"","sources":["../../src/FlowLinesLayer/FlowLinesLayerVertex.glsl.ts"],"names":[],"mappings":";AAiBA,wBAqFE"}
|
|
@@ -91,12 +91,14 @@ void main(void) {
|
|
|
91
91
|
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
92
92
|
|
|
93
93
|
vec4 fillColor = vec4(instanceColors.rgb, instanceColors.a * opacity) / 255.;
|
|
94
|
-
if (instancePickable <= 0.5) {
|
|
95
|
-
|
|
96
|
-
} else {
|
|
97
|
-
|
|
98
|
-
}
|
|
94
|
+
// if (instancePickable <= 0.5) {
|
|
95
|
+
// vColor = mix(fillColor, vec4(outlineColor.xyz, instanceThickness), normals.z);
|
|
96
|
+
// } else {
|
|
97
|
+
// vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);
|
|
98
|
+
// }
|
|
99
|
+
// vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);
|
|
100
|
+
vColor = mix(fillColor, outlineColor, normals.z);
|
|
99
101
|
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
100
102
|
}
|
|
101
103
|
`;
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXJWZXJ0ZXguZ2xzbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GbG93TGluZXNMYXllci9GbG93TGluZXNMYXllclZlcnRleC5nbHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFGZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBgXFxcbiNkZWZpbmUgU0hBREVSX05BTUUgZmxvdy1saW5lLWxheWVyLXZlcnRleC1zaGFkZXJcblxuYXR0cmlidXRlIHZlYzMgcG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgbm9ybWFscztcbmF0dHJpYnV0ZSB2ZWM0IGluc3RhbmNlQ29sb3JzO1xuYXR0cmlidXRlIGZsb2F0IGluc3RhbmNlVGhpY2tuZXNzOyAgICAvLyAwLi4wLjVcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlU291cmNlUG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczY0TG93O1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM2NExvdztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlUGlja2luZ0NvbG9ycztcbmF0dHJpYnV0ZSB2ZWMyIGluc3RhbmNlRW5kcG9pbnRPZmZzZXRzO1xuYXR0cmlidXRlIGZsb2F0IGluc3RhbmNlUGlja2FibGU7XG5cbnVuaWZvcm0gdmVjNCBvdXRsaW5lQ29sb3I7XG51bmlmb3JtIGZsb2F0IHRoaWNrbmVzc1VuaXQ7XG51bmlmb3JtIGZsb2F0IGdhcDtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcblxudmFyeWluZyB2ZWM0IHZDb2xvcjtcbnZhcnlpbmcgdmVjMiB1djtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbiA9IGluc3RhbmNlU291cmNlUG9zaXRpb25zO1xuICBnZW9tZXRyeS53b3JsZFBvc2l0aW9uQWx0ID0gaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM7XG4gIFxuICAvLyBQb3NpdGlvblxuICB2ZWM0IHNvdXJjZV9jb21tb25zcGFjZTsgICAgXG4gIHZlYzQgdGFyZ2V0X2NvbW1vbnNwYWNlO1xuICB2ZWM0IHNvdXJjZSA9IHByb2plY3RfcG9zaXRpb25fdG9fY2xpcHNwYWNlKGluc3RhbmNlU291cmNlUG9zaXRpb25zLCBpbnN0YW5jZVNvdXJjZVBvc2l0aW9uczY0TG93LCB2ZWMzKDAuKSwgc291cmNlX2NvbW1vbnNwYWNlKTtcbiAgdmVjNCB0YXJnZXQgPSBwcm9qZWN0X3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShpbnN0YW5jZVRhcmdldFBvc2l0aW9ucywgaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnM2NExvdywgdmVjMygwLiksIHRhcmdldF9jb21tb25zcGFjZSk7XG5cbiAgLy8gbGluZWFyIGludGVycG9sYXRpb24gb2Ygc291cmNlICYgdGFyZ2V0IHRvIHBpY2sgcmlnaHQgY29vcmRcbiAgZmxvYXQgc291cmNlT3JUYXJnZXQgPSBwb3NpdGlvbnMueDtcbiAgZ2VvbWV0cnkucG9zaXRpb24gPSBtaXgoc291cmNlX2NvbW1vbnNwYWNlLCB0YXJnZXRfY29tbW9uc3BhY2UsIHNvdXJjZU9yVGFyZ2V0KTtcbiAgdXYgPSBwb3NpdGlvbnMueHk7XG4gIGdlb21ldHJ5LnV2ID0gdXY7XG4gIGlmIChpbnN0YW5jZVBpY2thYmxlID4gMC41KSB7XG4gICAgZ2VvbWV0cnkucGlja2luZ0NvbG9yID0gaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuICB9XG4gIFxuICAvLyBzZXQgdGhlIGNsYW1wIGxpbWl0cyBpbiBwaXhlbCBzaXplIFxuICBmbG9hdCBsZW5ndGhDb21tb24gPSBsZW5ndGgodGFyZ2V0X2NvbW1vbnNwYWNlIC0gc291cmNlX2NvbW1vbnNwYWNlKTsgICAgXG4gIHZlYzIgb2Zmc2V0RGlzdGFuY2VzID0gcHJvamVjdF9waXhlbF9zaXplKHBvc2l0aW9ucy55eikgKiB0aGlja25lc3NVbml0O1xuICBcbiAgdmVjMiBsaW1pdGVkT2Zmc2V0RGlzdGFuY2VzID0gY2xhbXAoICAgXG4gICAgcHJvamVjdF9waXhlbF9zaXplKHBvc2l0aW9ucy55eikgKiB0aGlja25lc3NVbml0LFxuICAgIC1sZW5ndGhDb21tb24qLjgsIGxlbmd0aENvbW1vbiouOFxuICApO1xuICBmbG9hdCBzdGFydE9mZnNldENvbW1vbiA9IHByb2plY3RfcGl4ZWxfc2l6ZShpbnN0YW5jZUVuZHBvaW50T2Zmc2V0c1swXSk7XG4gIGZsb2F0IGVuZE9mZnNldENvbW1vbiA9IHByb2plY3RfcGl4ZWxfc2l6ZShpbnN0YW5jZUVuZHBvaW50T2Zmc2V0c1sxXSk7XG4gIGZsb2F0IGVuZHBvaW50T2Zmc2V0ID0gbWl4KFxuICAgIGNsYW1wKHN0YXJ0T2Zmc2V0Q29tbW9uLCAwLjAsIGxlbmd0aENvbW1vbiouMiksXG4gICAgLWNsYW1wKGVuZE9mZnNldENvbW1vbiwgMC4wLCBsZW5ndGhDb21tb24qLjIpLFxuICAgIHBvc2l0aW9ucy54XG4gICk7XG5cbiAgdmVjMiBmbG93bGluZURpciA9IG5vcm1hbGl6ZSh0YXJnZXRfY29tbW9uc3BhY2UueHkgLSBzb3VyY2VfY29tbW9uc3BhY2UueHkpO1xuICB2ZWMyIHBlcnBlbmRpY3VsYXJEaXIgPSB2ZWMyKC1mbG93bGluZURpci55LCBmbG93bGluZURpci54KTtcbiAgdmVjMiBub3JtYWxzQ29tbW9uID0gcHJvamVjdF9waXhlbF9zaXplKG5vcm1hbHMueHkpO1xuICBmbG9hdCBnYXBDb21tb24gPSBwcm9qZWN0X3BpeGVsX3NpemUoZ2FwKTtcbiAgdmVjMyBvZmZzZXRDb21tb24gPSB2ZWMzKFxuICAgIGZsb3dsaW5lRGlyICogKGluc3RhbmNlVGhpY2tuZXNzICogbGltaXRlZE9mZnNldERpc3RhbmNlc1sxXSArIG5vcm1hbHNDb21tb24ueSArIGVuZHBvaW50T2Zmc2V0ICogMS4wNSkgLVxuICAgIHBlcnBlbmRpY3VsYXJEaXIgKiAoaW5zdGFuY2VUaGlja25lc3MgKiBsaW1pdGVkT2Zmc2V0RGlzdGFuY2VzWzBdICsgZ2FwQ29tbW9uICsgbm9ybWFsc0NvbW1vbi54KSxcbiAgICAwLjBcbiAgKTtcbiAgXG4gIERFQ0tHTF9GSUxURVJfU0laRShvZmZzZXRDb21tb24sIGdlb21ldHJ5KTtcbiAgdmVjNCBwb3NpdGlvbl9jb21tb25zcGFjZSA9IG1peChzb3VyY2VfY29tbW9uc3BhY2UsIHRhcmdldF9jb21tb25zcGFjZSwgc291cmNlT3JUYXJnZXQpO1xuICB2ZWM0IG9mZnNldF9jb21tb25zcGFjZSA9IHZlYzQob2Zmc2V0Q29tbW9uLCAwLjApO1xuICBnbF9Qb3NpdGlvbiA9IHByb2plY3RfY29tbW9uX3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShwb3NpdGlvbl9jb21tb25zcGFjZSArIG9mZnNldF9jb21tb25zcGFjZSk7XG4gICAgICBcbiAgREVDS0dMX0ZJTFRFUl9HTF9QT1NJVElPTihnbF9Qb3NpdGlvbiwgZ2VvbWV0cnkpO1xuICBcbiAgdmVjNCBmaWxsQ29sb3IgPSB2ZWM0KGluc3RhbmNlQ29sb3JzLnJnYiwgaW5zdGFuY2VDb2xvcnMuYSAqIG9wYWNpdHkpIC8gMjU1LjtcbiAgLy8gaWYgKGluc3RhbmNlUGlja2FibGUgPD0gMC41KSB7XG4gIC8vICAgdkNvbG9yID0gbWl4KGZpbGxDb2xvciwgdmVjNChvdXRsaW5lQ29sb3IueHl6LCBpbnN0YW5jZVRoaWNrbmVzcyksIG5vcm1hbHMueik7XG4gIC8vIH0gZWxzZSB7XG4gIC8vICAgdkNvbG9yID0gbWl4KGZpbGxDb2xvciwgdmVjNChvdXRsaW5lQ29sb3IueHl6LCBvdXRsaW5lQ29sb3IudyAqIGZpbGxDb2xvci53KSwgbm9ybWFscy56KTtcbiAgLy8gfVxuICAvLyB2Q29sb3IgPSBtaXgoZmlsbENvbG9yLCB2ZWM0KG91dGxpbmVDb2xvci54eXosIG91dGxpbmVDb2xvci53ICogZmlsbENvbG9yLncpLCBub3JtYWxzLnopO1xuICB2Q29sb3IgPSBtaXgoZmlsbENvbG9yLCBvdXRsaW5lQ29sb3IsIG5vcm1hbHMueik7XG4gIERFQ0tHTF9GSUxURVJfQ09MT1IodkNvbG9yLCBnZW9tZXRyeSk7XG59XG5gO1xuIl19
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowmap.gl/layers",
|
|
3
|
-
"version": "8.0.0-alpha.
|
|
4
|
-
"main": "dist
|
|
3
|
+
"version": "8.0.0-alpha.17",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"repository": "git@github.com:FlowmapBlue/flowmap.gl.git",
|
|
@@ -9,9 +9,7 @@
|
|
|
9
9
|
"license": "Apache-2.0",
|
|
10
10
|
"scripts": {
|
|
11
11
|
"dev": "tsc --watch",
|
|
12
|
-
"build
|
|
13
|
-
"build:es5": "rm -rf dist-es5 && tsc --project tsconfig.es5.json",
|
|
14
|
-
"build": "yarn build:es5 && yarn build:esm",
|
|
12
|
+
"build": "rm -rf dist && tsc",
|
|
15
13
|
"prepare": "yarn build"
|
|
16
14
|
},
|
|
17
15
|
"peerDependencies": {
|
|
@@ -20,7 +18,7 @@
|
|
|
20
18
|
"@luma.gl/constants": "^8.5.10",
|
|
21
19
|
"@luma.gl/core": "^8.5.10"
|
|
22
20
|
},
|
|
23
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "769242d2fa0f072568dcf3711e467a90f9a62cca",
|
|
24
22
|
"publishConfig": {
|
|
25
23
|
"access": "public"
|
|
26
24
|
}
|
|
@@ -69,6 +69,7 @@ void main(void) {
|
|
|
69
69
|
gl_FragColor = mix(gl_FragColor, ringColor, smoothstep(step3, step4, distToCenter));
|
|
70
70
|
gl_FragColor = mix(gl_FragColor, outlineColor, smoothstep(step5, step6, distToCenter));
|
|
71
71
|
// gl_FragColor = mix(gl_FragColor, emptyColor / 255., smoothstep(step6, 1.0, distToCenter));
|
|
72
|
+
gl_FragColor.a = vColor.a;
|
|
72
73
|
gl_FragColor.a *= smoothstep(0.0, SOFT_OUTLINE, 1.0 - distToCenter);
|
|
73
74
|
DECKGL_FILTER_COLOR(gl_FragColor, geometry);
|
|
74
75
|
}
|
|
@@ -45,6 +45,71 @@ export interface Props<F> extends LayerProps {
|
|
|
45
45
|
const DEFAULT_COLOR: RGBA = [0, 132, 193, 255];
|
|
46
46
|
const INNER_SIDE_OUTLINE_THICKNESS = 1;
|
|
47
47
|
|
|
48
|
+
// source_target_mix, perpendicular_offset_in_thickness_units, direction_of_travel_offset_in_thickness_units
|
|
49
|
+
// prettier-ignore
|
|
50
|
+
const POSITIONS = [
|
|
51
|
+
1, 0, 0, // 0
|
|
52
|
+
1, 2, -3, // 1
|
|
53
|
+
1, 1, -3, // 2
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
1, 0, 0, // 0
|
|
57
|
+
1, 1, -3, // 2
|
|
58
|
+
0, 1, 0, // 3
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
1, 0, 0, // 0
|
|
62
|
+
0, 1, 0, // 3
|
|
63
|
+
0, 0, 0, // 4
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
1
|
|
67
|
+
··
|
|
68
|
+
· ··
|
|
69
|
+
· ··
|
|
70
|
+
3 2 · ··
|
|
71
|
+
······························· ··
|
|
72
|
+
· ······· ···· ··
|
|
73
|
+
· ········ ····· ··
|
|
74
|
+
· ··············· ····· ··
|
|
75
|
+
· ········ ········
|
|
76
|
+
· ················
|
|
77
|
+
4 ························································ 0
|
|
78
|
+
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
function getOutlinePixelOffsets(tout: number, tin: number) {
|
|
82
|
+
// perpendicular_offset_in_pixels, direction_of_travel_offset_in_pixels, fill_outline_color_mix
|
|
83
|
+
// prettier-ignore
|
|
84
|
+
return ([
|
|
85
|
+
|
|
86
|
+
-tin, 2*tout, 1, // 0
|
|
87
|
+
2*tout, -tout, 1, // 1
|
|
88
|
+
tout, -tout, 1, // 2
|
|
89
|
+
|
|
90
|
+
-tin, 2*tout, 1, // 0
|
|
91
|
+
tout, -tout, 1, // 2
|
|
92
|
+
tout, -tout, 1, // 3
|
|
93
|
+
|
|
94
|
+
-tin, 2*tout, 1, // 0
|
|
95
|
+
tout, -tout, 1, // 3
|
|
96
|
+
-tin, -tout, 1, // 4
|
|
97
|
+
]);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// prettier-ignore
|
|
101
|
+
const ZEROES = [
|
|
102
|
+
0, 0, 0,
|
|
103
|
+
0, 0, 0,
|
|
104
|
+
0, 0, 0,
|
|
105
|
+
0, 0, 0,
|
|
106
|
+
0, 0, 0,
|
|
107
|
+
0, 0, 0,
|
|
108
|
+
0, 0, 0,
|
|
109
|
+
0, 0, 0,
|
|
110
|
+
0, 0, 0,
|
|
111
|
+
];
|
|
112
|
+
|
|
48
113
|
class FlowLinesLayer<F> extends Layer {
|
|
49
114
|
static layerName = 'FlowLinesLayer';
|
|
50
115
|
static defaultProps = {
|
|
@@ -137,6 +202,7 @@ class FlowLinesLayer<F> extends Layer {
|
|
|
137
202
|
.setUniforms({
|
|
138
203
|
...uniforms,
|
|
139
204
|
outlineColor: outlineColor.map((x: number) => x / 255),
|
|
205
|
+
// outlineColor: [1, 0, 0, 1],
|
|
140
206
|
thicknessUnit: thicknessUnit * 2.0,
|
|
141
207
|
gap: 0.5,
|
|
142
208
|
})
|
|
@@ -150,80 +216,20 @@ class FlowLinesLayer<F> extends Layer {
|
|
|
150
216
|
const {drawOutline, outlineThickness} = this.props;
|
|
151
217
|
if (drawOutline) {
|
|
152
218
|
// source_target_mix, perpendicular_offset_in_thickness_units, direction_of_travel_offset_in_thickness_units
|
|
153
|
-
|
|
154
|
-
positions = positions.concat([
|
|
155
|
-
// Outline
|
|
156
|
-
0, 0, 0,
|
|
157
|
-
0, 1, 0,
|
|
158
|
-
1, 0, 0,
|
|
159
|
-
|
|
160
|
-
0, 1, 0,
|
|
161
|
-
1, 0, -3,
|
|
162
|
-
1, 1, -3,
|
|
163
|
-
|
|
164
|
-
1, 0, 0,
|
|
165
|
-
1, 2, -3,
|
|
166
|
-
1, 0, -3,
|
|
167
|
-
],
|
|
168
|
-
);
|
|
169
|
-
|
|
219
|
+
positions = positions.concat(POSITIONS);
|
|
170
220
|
const tout = outlineThickness;
|
|
171
221
|
const tin = INNER_SIDE_OUTLINE_THICKNESS; // the outline shouldn't cover the opposite arrow
|
|
172
|
-
|
|
173
|
-
// prettier-ignore
|
|
174
|
-
pixelOffsets = pixelOffsets.concat([
|
|
175
|
-
// Outline
|
|
176
|
-
-tin, -tout, 1,
|
|
177
|
-
tout, -tout, 1,
|
|
178
|
-
-tin, tout, 1,
|
|
179
|
-
|
|
180
|
-
tout, -tout, 1,
|
|
181
|
-
-tin, 0, 1,
|
|
182
|
-
tout, 0, 1,
|
|
183
|
-
|
|
184
|
-
-tin, 3 * tout, 1,
|
|
185
|
-
2 * tout, -tout, 1,
|
|
186
|
-
-tin, -tout, 1,
|
|
187
|
-
]);
|
|
222
|
+
pixelOffsets = pixelOffsets.concat(getOutlinePixelOffsets(tout, tin));
|
|
188
223
|
}
|
|
189
224
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
// Fill
|
|
193
|
-
0, 0, 0,
|
|
194
|
-
0, 1, 0,
|
|
195
|
-
1, 0, 0,
|
|
196
|
-
|
|
197
|
-
0, 1, 0,
|
|
198
|
-
1, 0, -3,
|
|
199
|
-
1, 1, -3,
|
|
200
|
-
|
|
201
|
-
1, 0, 0,
|
|
202
|
-
1, 2, -3,
|
|
203
|
-
1, 0, -3,
|
|
204
|
-
]);
|
|
205
|
-
|
|
206
|
-
// prettier-ignore
|
|
207
|
-
pixelOffsets = pixelOffsets.concat([
|
|
208
|
-
// Fill
|
|
209
|
-
0, 0, 0,
|
|
210
|
-
0, 0, 0,
|
|
211
|
-
0, 0, 0,
|
|
212
|
-
|
|
213
|
-
0, 0, 0,
|
|
214
|
-
0, 0, 0,
|
|
215
|
-
0, 0, 0,
|
|
216
|
-
|
|
217
|
-
0, 0, 0,
|
|
218
|
-
0, 0, 0,
|
|
219
|
-
0, 0, 0,
|
|
220
|
-
]);
|
|
225
|
+
positions = positions.concat(POSITIONS);
|
|
226
|
+
pixelOffsets = pixelOffsets.concat(ZEROES);
|
|
221
227
|
|
|
222
228
|
return new Model(gl, {
|
|
223
229
|
id: this.props.id,
|
|
224
230
|
...this.getShaders(),
|
|
225
231
|
geometry: new Geometry({
|
|
226
|
-
|
|
232
|
+
drawMode: GL.TRIANGLES,
|
|
227
233
|
attributes: {
|
|
228
234
|
positions: new Float32Array(positions),
|
|
229
235
|
normals: new Float32Array(pixelOffsets),
|
|
@@ -91,11 +91,13 @@ void main(void) {
|
|
|
91
91
|
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
92
92
|
|
|
93
93
|
vec4 fillColor = vec4(instanceColors.rgb, instanceColors.a * opacity) / 255.;
|
|
94
|
-
if (instancePickable <= 0.5) {
|
|
95
|
-
|
|
96
|
-
} else {
|
|
97
|
-
|
|
98
|
-
}
|
|
94
|
+
// if (instancePickable <= 0.5) {
|
|
95
|
+
// vColor = mix(fillColor, vec4(outlineColor.xyz, instanceThickness), normals.z);
|
|
96
|
+
// } else {
|
|
97
|
+
// vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);
|
|
98
|
+
// }
|
|
99
|
+
// vColor = mix(fillColor, vec4(outlineColor.xyz, outlineColor.w * fillColor.w), normals.z);
|
|
100
|
+
vColor = mix(fillColor, outlineColor, normals.z);
|
|
99
101
|
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
100
102
|
}
|
|
101
103
|
`;
|
|
@@ -1,76 +0,0 @@
|
|
|
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
|
-
currentTime?: number;
|
|
16
|
-
thicknessUnit?: number;
|
|
17
|
-
animationTailLength?: number;
|
|
18
|
-
getSourcePosition?: (d: F) => [number, number];
|
|
19
|
-
getTargetPosition?: (d: F) => [number, number];
|
|
20
|
-
getStaggering?: (d: F, info: AccessorObjectInfo) => number;
|
|
21
|
-
getPickable?: (d: F, { index }: {
|
|
22
|
-
index: number;
|
|
23
|
-
}) => number;
|
|
24
|
-
getColor?: (d: F) => RGBA;
|
|
25
|
-
getThickness?: (d: F) => number;
|
|
26
|
-
getEndpointOffsets?: (d: F) => [number, number];
|
|
27
|
-
}
|
|
28
|
-
export interface AccessorObjectInfo {
|
|
29
|
-
index: number;
|
|
30
|
-
data: any;
|
|
31
|
-
target: any;
|
|
32
|
-
}
|
|
33
|
-
export default class AnimatedFlowLinesLayer<F> extends Layer {
|
|
34
|
-
static defaultProps: {
|
|
35
|
-
currentTime: number;
|
|
36
|
-
animationTailLength: number;
|
|
37
|
-
getSourcePosition: {
|
|
38
|
-
type: string;
|
|
39
|
-
value: (d: any) => number[];
|
|
40
|
-
};
|
|
41
|
-
getTargetPosition: {
|
|
42
|
-
type: string;
|
|
43
|
-
value: (d: any) => number[];
|
|
44
|
-
};
|
|
45
|
-
getPickable: {
|
|
46
|
-
type: string;
|
|
47
|
-
value: (d: any) => number;
|
|
48
|
-
};
|
|
49
|
-
getStaggering: {
|
|
50
|
-
type: string;
|
|
51
|
-
value: (d: any, { index }: {
|
|
52
|
-
index: number;
|
|
53
|
-
}) => number;
|
|
54
|
-
};
|
|
55
|
-
getColor: {
|
|
56
|
-
type: string;
|
|
57
|
-
value: RGBA;
|
|
58
|
-
};
|
|
59
|
-
getThickness: {
|
|
60
|
-
type: string;
|
|
61
|
-
value: number;
|
|
62
|
-
};
|
|
63
|
-
thicknessUnit: number;
|
|
64
|
-
parameters: {
|
|
65
|
-
depthTest: boolean;
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
constructor(props: Props<F>);
|
|
69
|
-
getShaders(): Record<string, unknown>;
|
|
70
|
-
initializeState(): void;
|
|
71
|
-
getNeedsRedraw(): boolean;
|
|
72
|
-
updateState({ props, oldProps, changeFlags }: Record<string, any>): void;
|
|
73
|
-
draw({ uniforms }: Record<string, any>): void;
|
|
74
|
-
_getModel(gl: WebGLRenderingContext): Record<string, unknown>;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=AnimatedFlowLinesLayer.d.ts.map
|