@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.
Files changed (58) hide show
  1. package/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts +1 -1
  2. package/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts.map +1 -1
  3. package/dist/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js +2 -1
  4. package/dist/FlowLinesLayer/FlowLinesLayer.d.ts.map +1 -1
  5. package/dist/FlowLinesLayer/FlowLinesLayer.js +64 -56
  6. package/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts +1 -1
  7. package/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts.map +1 -1
  8. package/dist/FlowLinesLayer/FlowLinesLayerVertex.glsl.js +8 -6
  9. package/package.json +4 -6
  10. package/src/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.ts +1 -0
  11. package/src/FlowLinesLayer/FlowLinesLayer.ts +71 -65
  12. package/src/FlowLinesLayer/FlowLinesLayerVertex.glsl.ts +7 -5
  13. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts +0 -76
  14. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.d.ts.map +0 -1
  15. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayer.js +0 -178
  16. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts +0 -3
  17. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.d.ts.map +0 -1
  18. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerFragment.glsl.js +0 -21
  19. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts +0 -3
  20. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.d.ts.map +0 -1
  21. package/dist-es5/AnimatedFlowLinesLayer/AnimatedFlowLinesLayerVertex.glsl.js +0 -21
  22. package/dist-es5/AnimatedFlowLinesLayer/index.d.ts +0 -3
  23. package/dist-es5/AnimatedFlowLinesLayer/index.d.ts.map +0 -1
  24. package/dist-es5/AnimatedFlowLinesLayer/index.js +0 -8
  25. package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts +0 -59
  26. package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.d.ts.map +0 -1
  27. package/dist-es5/FlowCirclesLayer/FlowCirclesLayer.js +0 -149
  28. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts +0 -3
  29. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.d.ts.map +0 -1
  30. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerFragment.glsl.js +0 -21
  31. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts +0 -3
  32. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.d.ts.map +0 -1
  33. package/dist-es5/FlowCirclesLayer/FlowCirclesLayerVertex.glsl.js +0 -21
  34. package/dist-es5/FlowCirclesLayer/index.d.ts +0 -3
  35. package/dist-es5/FlowCirclesLayer/index.d.ts.map +0 -1
  36. package/dist-es5/FlowCirclesLayer/index.js +0 -8
  37. package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts +0 -64
  38. package/dist-es5/FlowLinesLayer/FlowLinesLayer.d.ts.map +0 -1
  39. package/dist-es5/FlowLinesLayer/FlowLinesLayer.js +0 -217
  40. package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts +0 -3
  41. package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.d.ts.map +0 -1
  42. package/dist-es5/FlowLinesLayer/FlowLinesLayerFragment.glsl.js +0 -21
  43. package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts +0 -3
  44. package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.d.ts.map +0 -1
  45. package/dist-es5/FlowLinesLayer/FlowLinesLayerVertex.glsl.js +0 -21
  46. package/dist-es5/FlowLinesLayer/index.d.ts +0 -3
  47. package/dist-es5/FlowLinesLayer/index.d.ts.map +0 -1
  48. package/dist-es5/FlowLinesLayer/index.js +0 -8
  49. package/dist-es5/FlowmapLayer.d.ts +0 -79
  50. package/dist-es5/FlowmapLayer.d.ts.map +0 -1
  51. package/dist-es5/FlowmapLayer.js +0 -476
  52. package/dist-es5/index.d.ts +0 -7
  53. package/dist-es5/index.d.ts.map +0 -1
  54. package/dist-es5/index.js +0 -26
  55. package/dist-es5/types.d.ts +0 -36
  56. package/dist-es5/types.d.ts.map +0 -1
  57. package/dist-es5/types.js +0 -23
  58. 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,wBAyDE"}
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0NpcmNsZXNMYXllckZyYWdtZW50Lmdsc2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0NpcmNsZXNMYXllci9GbG93Q2lyY2xlc0xheWVyRnJhZ21lbnQuZ2xzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlEZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIyIEZsb3dtYXBCbHVlXG4gKiBDb3B5cmlnaHQgMjAxOC0yMDIwIFRlcmFseXRpY3MsIG1vZGlmaWVkIGJ5IEZsb3dtYXBCbHVlXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBgXFxcbiNkZWZpbmUgU0hBREVSX05BTUUgZmxvdy1jaXJjbGVzLWxheWVyLWZyYWdtZW50LXNoYWRlclxuI2RlZmluZSBTT0ZUX09VVExJTkUgMC4wNVxuI2RlZmluZSBFUFMgMC4wNVxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuXG51bmlmb3JtIHZlYzQgZW1wdHlDb2xvcjtcbnVuaWZvcm0gZmxvYXQgb3V0bGluZUVtcHR5TWl4O1xuXG52YXJ5aW5nIHZlYzQgdkNvbG9yO1xudmFyeWluZyB2ZWMyIHVuaXRQb3NpdGlvbjtcbnZhcnlpbmcgZmxvYXQgdW5pdEluUmFkaXVzO1xudmFyeWluZyBmbG9hdCB1bml0T3V0UmFkaXVzO1xuXG5mbG9hdCB3aGVuX2d0KGZsb2F0IHgsIGZsb2F0IHkpIHtcbiAgcmV0dXJuIG1heChzaWduKHggLSB5KSwgMC4wKTtcbn1cblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2VvbWV0cnkudXYgPSB1bml0UG9zaXRpb247XG4gIGZsb2F0IGRpc3RUb0NlbnRlciA9IGxlbmd0aCh1bml0UG9zaXRpb24pO1xuICBpZiAoZGlzdFRvQ2VudGVyID4gMS4wKSB7XG4gICAgZGlzY2FyZDtcbiAgfVxuXG4gIC8vIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NzI4NTc3OFxuICB2ZWM0IHJpbmdDb2xvciA9IG1peChcbiAgICBlbXB0eUNvbG9yIC8gMjU1LiwgdkNvbG9yLFxuICAgIHdoZW5fZ3QodW5pdEluUmFkaXVzLCB1bml0T3V0UmFkaXVzKVxuICApO1xuICB2ZWM0IG91dGxpbmVDb2xvciA9IG1peChcbiAgICBtaXgodkNvbG9yLCBlbXB0eUNvbG9yIC8gMjU1Liwgb3V0bGluZUVtcHR5TWl4KSxcbiAgICB2Q29sb3IsXG4gICAgd2hlbl9ndCh1bml0SW5SYWRpdXMsIHVuaXRPdXRSYWRpdXMpXG4gICk7XG4gIFxuICBmbG9hdCBpbm5lclIgPSBtaW4odW5pdEluUmFkaXVzLCB1bml0T3V0UmFkaXVzKSAqICgxLjAgLSBTT0ZUX09VVExJTkUpO1xuICBcbiAgLy8gSW5uZXIgY2lyY2xlXG4gIGZsb2F0IHN0ZXAyID0gaW5uZXJSIC0gMi4wICogRVBTOyBcbiAgZmxvYXQgc3RlcDMgPSBpbm5lclIgLSBFUFM7XG4gIFxuICAvLyBSaW5nXG4gIGZsb2F0IHN0ZXA0ID0gaW5uZXJSO1xuICAvLyBmbG9hdCBzdGVwNSA9IDEuMCAtIFNPRlRfT1VUTElORSAtIEVQUztcbiAgLy8gZmxvYXQgc3RlcDYgPSAxLjAgLSBTT0ZUX09VVExJTkU7XG4gIGZsb2F0IHN0ZXA1ID0gMS4wIC0gNS4wICogRVBTO1xuICBmbG9hdCBzdGVwNiA9IDEuMDtcbiAgXG4gIGdsX0ZyYWdDb2xvciA9IHZDb2xvcjtcbiAgZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgZW1wdHlDb2xvciAvIDI1NS4sIHNtb290aHN0ZXAoc3RlcDIsIHN0ZXAzLCBkaXN0VG9DZW50ZXIpKTtcbiAgZ2xfRnJhZ0NvbG9yID0gbWl4KGdsX0ZyYWdDb2xvciwgcmluZ0NvbG9yLCBzbW9vdGhzdGVwKHN0ZXAzLCBzdGVwNCwgZGlzdFRvQ2VudGVyKSk7XG4gIGdsX0ZyYWdDb2xvciA9IG1peChnbF9GcmFnQ29sb3IsIG91dGxpbmVDb2xvciwgc21vb3Roc3RlcChzdGVwNSwgc3RlcDYsIGRpc3RUb0NlbnRlcikpO1xuICAvLyBnbF9GcmFnQ29sb3IgPSBtaXgoZ2xfRnJhZ0NvbG9yLCBlbXB0eUNvbG9yIC8gMjU1Liwgc21vb3Roc3RlcChzdGVwNiwgMS4wLCBkaXN0VG9DZW50ZXIpKTtcbiAgZ2xfRnJhZ0NvbG9yLmEgKj0gc21vb3Roc3RlcCgwLjAsIFNPRlRfT1VUTElORSwgMS4wIC0gZGlzdFRvQ2VudGVyKTtcbiAgREVDS0dMX0ZJTFRFUl9DT0xPUihnbF9GcmFnQ29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXX0=
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;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"}
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), thicknessUnit: thicknessUnit * 2.0, gap: 0.5 }))
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
- // prettier-ignore
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
- // perpendicular_offset_in_pixels, direction_of_travel_offset_in_pixels, fill_outline_color_mix
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
- // prettier-ignore
132
- positions = positions.concat([
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
- drawType: GL.TRIANGLES,
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvRmxvd0xpbmVzTGF5ZXIvRmxvd0xpbmVzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxjQUFjLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxZQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFzQnZELE1BQU0sYUFBYSxHQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFdkMsNEdBQTRHO0FBQzVHLGtCQUFrQjtBQUNsQixNQUFNLFNBQVMsR0FBRztJQUNoQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNSLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBR1IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ1AsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDUixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFHUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDUCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRyxJQUFJO0NBQ2YsQ0FBQztBQUNGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsU0FBUyxzQkFBc0IsQ0FBQyxJQUFZLEVBQUUsR0FBVztJQUN2RCwrRkFB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Q0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQztJQUNoRSxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQztJQUNoRSxRQUFRLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUM7SUFDbEQsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7SUFDNUQsV0FBVyxFQUFFLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBQztJQUN2RCxXQUFXLEVBQUUsSUFBSTtJQUNqQixhQUFhLEVBQUUsRUFBRTtJQUNqQixnQkFBZ0IsRUFBRSxDQUFDO0lBQ25CLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsQyxVQUFVLEVBQUU7UUFDVixTQUFTLEVBQUUsS0FBSztLQUNqQjtDQUNGLENBQUM7QUFvSEosZUFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjIgRmxvd21hcEJsdWVcbiAqIENvcHlyaWdodCAyMDE4LTIwMjAgVGVyYWx5dGljcywgbW9kaWZpZWQgYnkgRmxvd21hcEJsdWVcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKi9cblxuaW1wb3J0IHtMYXllciwgcGlja2luZywgcHJvamVjdDMyfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCBHTCBmcm9tICdAbHVtYS5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtHZW9tZXRyeSwgTW9kZWx9IGZyb20gJ0BsdW1hLmdsL2NvcmUnO1xuaW1wb3J0IEZyYWdtZW50U2hhZGVyIGZyb20gJy4vRmxvd0xpbmVzTGF5ZXJGcmFnbWVudC5nbHNsJztcbmltcG9ydCBWZXJ0ZXhTaGFkZXIgZnJvbSAnLi9GbG93TGluZXNMYXllclZlcnRleC5nbHNsJztcbmltcG9ydCB7Rmxvd0xpbmVzTGF5ZXJBdHRyaWJ1dGVzLCBSR0JBfSBmcm9tICdAZmxvd21hcC5nbC9kYXRhJztcbmltcG9ydCB7TGF5ZXJQcm9wc30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BzPEY+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 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";
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,wBAmFE"}
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
- 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
- }
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd0xpbmVzTGF5ZXJWZXJ0ZXguZ2xzbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GbG93TGluZXNMYXllci9GbG93TGluZXNMYXllclZlcnRleC5nbHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsZUFBZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtRmQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMiBGbG93bWFwQmx1ZVxuICogQ29weXJpZ2h0IDIwMTgtMjAyMCBUZXJhbHl0aWNzLCBtb2RpZmllZCBieSBGbG93bWFwQmx1ZVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYFxcXG4jZGVmaW5lIFNIQURFUl9OQU1FIGZsb3ctbGluZS1sYXllci12ZXJ0ZXgtc2hhZGVyXG5cbmF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9ucztcbmF0dHJpYnV0ZSB2ZWMzIG5vcm1hbHM7XG5hdHRyaWJ1dGUgdmVjNCBpbnN0YW5jZUNvbG9ycztcbmF0dHJpYnV0ZSBmbG9hdCBpbnN0YW5jZVRoaWNrbmVzczsgICAgLy8gMC4uMC41XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVNvdXJjZVBvc2l0aW9ucztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zO1xuYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnM2NExvdztcbmF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zNjRMb3c7XG5hdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZVBpY2tpbmdDb2xvcnM7XG5hdHRyaWJ1dGUgdmVjMiBpbnN0YW5jZUVuZHBvaW50T2Zmc2V0cztcbmF0dHJpYnV0ZSBmbG9hdCBpbnN0YW5jZVBpY2thYmxlO1xuXG51bmlmb3JtIHZlYzQgb3V0bGluZUNvbG9yO1xudW5pZm9ybSBmbG9hdCB0aGlja25lc3NVbml0O1xudW5pZm9ybSBmbG9hdCBnYXA7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG5cbnZhcnlpbmcgdmVjNCB2Q29sb3I7XG52YXJ5aW5nIHZlYzIgdXY7XG5cbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdlb21ldHJ5LndvcmxkUG9zaXRpb24gPSBpbnN0YW5jZVNvdXJjZVBvc2l0aW9ucztcbiAgZ2VvbWV0cnkud29ybGRQb3NpdGlvbkFsdCA9IGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zO1xuICBcbiAgLy8gUG9zaXRpb25cbiAgdmVjNCBzb3VyY2VfY29tbW9uc3BhY2U7ICAgIFxuICB2ZWM0IHRhcmdldF9jb21tb25zcGFjZTtcbiAgdmVjNCBzb3VyY2UgPSBwcm9qZWN0X3Bvc2l0aW9uX3RvX2NsaXBzcGFjZShpbnN0YW5jZVNvdXJjZVBvc2l0aW9ucywgaW5zdGFuY2VTb3VyY2VQb3NpdGlvbnM2NExvdywgdmVjMygwLiksIHNvdXJjZV9jb21tb25zcGFjZSk7XG4gIHZlYzQgdGFyZ2V0ID0gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UoaW5zdGFuY2VUYXJnZXRQb3NpdGlvbnMsIGluc3RhbmNlVGFyZ2V0UG9zaXRpb25zNjRMb3csIHZlYzMoMC4pLCB0YXJnZXRfY29tbW9uc3BhY2UpO1xuXG4gIC8vIGxpbmVhciBpbnRlcnBvbGF0aW9uIG9mIHNvdXJjZSAmIHRhcmdldCB0byBwaWNrIHJpZ2h0IGNvb3JkXG4gIGZsb2F0IHNvdXJjZU9yVGFyZ2V0ID0gcG9zaXRpb25zLng7XG4gIGdlb21ldHJ5LnBvc2l0aW9uID0gbWl4KHNvdXJjZV9jb21tb25zcGFjZSwgdGFyZ2V0X2NvbW1vbnNwYWNlLCBzb3VyY2VPclRhcmdldCk7XG4gIHV2ID0gcG9zaXRpb25zLnh5O1xuICBnZW9tZXRyeS51diA9IHV2O1xuICBpZiAoaW5zdGFuY2VQaWNrYWJsZSA+IDAuNSkge1xuICAgIGdlb21ldHJ5LnBpY2tpbmdDb2xvciA9IGluc3RhbmNlUGlja2luZ0NvbG9ycztcbiAgfVxuICBcbiAgLy8gc2V0IHRoZSBjbGFtcCBsaW1pdHMgaW4gcGl4ZWwgc2l6ZSBcbiAgZmxvYXQgbGVuZ3RoQ29tbW9uID0gbGVuZ3RoKHRhcmdldF9jb21tb25zcGFjZSAtIHNvdXJjZV9jb21tb25zcGFjZSk7ICAgIFxuICB2ZWMyIG9mZnNldERpc3RhbmNlcyA9IHByb2plY3RfcGl4ZWxfc2l6ZShwb3NpdGlvbnMueXopICogdGhpY2tuZXNzVW5pdDtcbiAgXG4gIHZlYzIgbGltaXRlZE9mZnNldERpc3RhbmNlcyA9IGNsYW1wKCAgIFxuICAgIHByb2plY3RfcGl4ZWxfc2l6ZShwb3NpdGlvbnMueXopICogdGhpY2tuZXNzVW5pdCxcbiAgICAtbGVuZ3RoQ29tbW9uKi44LCBsZW5ndGhDb21tb24qLjhcbiAgKTtcbiAgZmxvYXQgc3RhcnRPZmZzZXRDb21tb24gPSBwcm9qZWN0X3BpeGVsX3NpemUoaW5zdGFuY2VFbmRwb2ludE9mZnNldHNbMF0pO1xuICBmbG9hdCBlbmRPZmZzZXRDb21tb24gPSBwcm9qZWN0X3BpeGVsX3NpemUoaW5zdGFuY2VFbmRwb2ludE9mZnNldHNbMV0pO1xuICBmbG9hdCBlbmRwb2ludE9mZnNldCA9IG1peChcbiAgICBjbGFtcChzdGFydE9mZnNldENvbW1vbiwgMC4wLCBsZW5ndGhDb21tb24qLjIpLFxuICAgIC1jbGFtcChlbmRPZmZzZXRDb21tb24sIDAuMCwgbGVuZ3RoQ29tbW9uKi4yKSxcbiAgICBwb3NpdGlvbnMueFxuICApO1xuXG4gIHZlYzIgZmxvd2xpbmVEaXIgPSBub3JtYWxpemUodGFyZ2V0X2NvbW1vbnNwYWNlLnh5IC0gc291cmNlX2NvbW1vbnNwYWNlLnh5KTtcbiAgdmVjMiBwZXJwZW5kaWN1bGFyRGlyID0gdmVjMigtZmxvd2xpbmVEaXIueSwgZmxvd2xpbmVEaXIueCk7XG4gIHZlYzIgbm9ybWFsc0NvbW1vbiA9IHByb2plY3RfcGl4ZWxfc2l6ZShub3JtYWxzLnh5KTtcbiAgZmxvYXQgZ2FwQ29tbW9uID0gcHJvamVjdF9waXhlbF9zaXplKGdhcCk7XG4gIHZlYzMgb2Zmc2V0Q29tbW9uID0gdmVjMyhcbiAgICBmbG93bGluZURpciAqIChpbnN0YW5jZVRoaWNrbmVzcyAqIGxpbWl0ZWRPZmZzZXREaXN0YW5jZXNbMV0gKyBub3JtYWxzQ29tbW9uLnkgKyBlbmRwb2ludE9mZnNldCAqIDEuMDUpIC1cbiAgICBwZXJwZW5kaWN1bGFyRGlyICogKGluc3RhbmNlVGhpY2tuZXNzICogbGltaXRlZE9mZnNldERpc3RhbmNlc1swXSArIGdhcENvbW1vbiArIG5vcm1hbHNDb21tb24ueCksXG4gICAgMC4wXG4gICk7XG4gIFxuICBERUNLR0xfRklMVEVSX1NJWkUob2Zmc2V0Q29tbW9uLCBnZW9tZXRyeSk7XG4gIHZlYzQgcG9zaXRpb25fY29tbW9uc3BhY2UgPSBtaXgoc291cmNlX2NvbW1vbnNwYWNlLCB0YXJnZXRfY29tbW9uc3BhY2UsIHNvdXJjZU9yVGFyZ2V0KTtcbiAgdmVjNCBvZmZzZXRfY29tbW9uc3BhY2UgPSB2ZWM0KG9mZnNldENvbW1vbiwgMC4wKTtcbiAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0X2NvbW1vbl9wb3NpdGlvbl90b19jbGlwc3BhY2UocG9zaXRpb25fY29tbW9uc3BhY2UgKyBvZmZzZXRfY29tbW9uc3BhY2UpO1xuICAgICAgXG4gIERFQ0tHTF9GSUxURVJfR0xfUE9TSVRJT04oZ2xfUG9zaXRpb24sIGdlb21ldHJ5KTtcbiAgXG4gIHZlYzQgZmlsbENvbG9yID0gdmVjNChpbnN0YW5jZUNvbG9ycy5yZ2IsIGluc3RhbmNlQ29sb3JzLmEgKiBvcGFjaXR5KSAvIDI1NS47XG4gIGlmIChpbnN0YW5jZVBpY2thYmxlIDw9IDAuNSkge1xuICAgIHZDb2xvciA9IG1peChmaWxsQ29sb3IsIHZlYzQob3V0bGluZUNvbG9yLnh5eiwgaW5zdGFuY2VUaGlja25lc3MpLCBub3JtYWxzLnopO1xuICB9IGVsc2Uge1xuICAgIHZDb2xvciA9IG1peChmaWxsQ29sb3IsIHZlYzQob3V0bGluZUNvbG9yLnh5eiwgb3V0bGluZUNvbG9yLncgKiBmaWxsQ29sb3IudyksIG5vcm1hbHMueik7XG4gIH1cbiAgREVDS0dMX0ZJTFRFUl9DT0xPUih2Q29sb3IsIGdlb21ldHJ5KTtcbn1cbmA7XG4iXX0=
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.13",
4
- "main": "dist-es5/index.js",
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:esm": "rm -rf dist && tsc",
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": "4d38e29a88901c52c7c3e30114a090fd4d379ea3",
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
- // prettier-ignore
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
- // perpendicular_offset_in_pixels, direction_of_travel_offset_in_pixels, fill_outline_color_mix
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
- // prettier-ignore
191
- positions = positions.concat([
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
- drawType: GL.TRIANGLES,
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
- 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
- }
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