@deck.gl/aggregation-layers 8.7.0-alpha.1 → 8.7.0-alpha.2

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 (71) hide show
  1. package/dist/dist.dev.js +61 -29
  2. package/dist/es5/aggregation-layer.js +109 -163
  3. package/dist/es5/aggregation-layer.js.map +1 -1
  4. package/dist/es5/contour-layer/contour-layer.js +240 -260
  5. package/dist/es5/contour-layer/contour-layer.js.map +1 -1
  6. package/dist/es5/contour-layer/contour-utils.js +65 -86
  7. package/dist/es5/contour-layer/contour-utils.js.map +1 -1
  8. package/dist/es5/contour-layer/marching-squares-codes.js +181 -106
  9. package/dist/es5/contour-layer/marching-squares-codes.js.map +1 -1
  10. package/dist/es5/contour-layer/marching-squares.js +56 -59
  11. package/dist/es5/contour-layer/marching-squares.js.map +1 -1
  12. package/dist/es5/cpu-grid-layer/cpu-grid-layer.js +85 -121
  13. package/dist/es5/cpu-grid-layer/cpu-grid-layer.js.map +1 -1
  14. package/dist/es5/cpu-grid-layer/grid-aggregator.js +93 -119
  15. package/dist/es5/cpu-grid-layer/grid-aggregator.js.map +1 -1
  16. package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js +131 -167
  17. package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js.map +1 -1
  18. package/dist/es5/gpu-grid-layer/gpu-grid-layer.js +319 -322
  19. package/dist/es5/gpu-grid-layer/gpu-grid-layer.js.map +1 -1
  20. package/dist/es5/grid-aggregation-layer.js +202 -230
  21. package/dist/es5/grid-aggregation-layer.js.map +1 -1
  22. package/dist/es5/grid-layer/grid-layer.js +61 -91
  23. package/dist/es5/grid-layer/grid-layer.js.map +1 -1
  24. package/dist/es5/heatmap-layer/heatmap-layer-utils.js +24 -59
  25. package/dist/es5/heatmap-layer/heatmap-layer-utils.js.map +1 -1
  26. package/dist/es5/heatmap-layer/heatmap-layer.js +515 -533
  27. package/dist/es5/heatmap-layer/heatmap-layer.js.map +1 -1
  28. package/dist/es5/heatmap-layer/triangle-layer.js +64 -91
  29. package/dist/es5/heatmap-layer/triangle-layer.js.map +1 -1
  30. package/dist/es5/hexagon-layer/hexagon-aggregator.js +59 -77
  31. package/dist/es5/hexagon-layer/hexagon-aggregator.js.map +1 -1
  32. package/dist/es5/hexagon-layer/hexagon-layer.js +121 -164
  33. package/dist/es5/hexagon-layer/hexagon-layer.js.map +1 -1
  34. package/dist/es5/index.js +12 -12
  35. package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js +168 -193
  36. package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
  37. package/dist/es5/screen-grid-layer/screen-grid-layer.js +235 -250
  38. package/dist/es5/screen-grid-layer/screen-grid-layer.js.map +1 -1
  39. package/dist/es5/utils/aggregation-operation-utils.js +16 -31
  40. package/dist/es5/utils/aggregation-operation-utils.js.map +1 -1
  41. package/dist/es5/utils/bin-sorter.js +118 -198
  42. package/dist/es5/utils/bin-sorter.js.map +1 -1
  43. package/dist/es5/utils/color-utils.js +8 -10
  44. package/dist/es5/utils/color-utils.js.map +1 -1
  45. package/dist/es5/utils/cpu-aggregator.js +323 -342
  46. package/dist/es5/utils/cpu-aggregator.js.map +1 -1
  47. package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js +20 -18
  48. package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator-constants.js.map +1 -1
  49. package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +545 -545
  50. package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +1 -1
  51. package/dist/es5/utils/grid-aggregation-utils.js +50 -44
  52. package/dist/es5/utils/grid-aggregation-utils.js.map +1 -1
  53. package/dist/es5/utils/prop-utils.js +2 -2
  54. package/dist/es5/utils/prop-utils.js.map +1 -1
  55. package/dist/es5/utils/resource-utils.js +32 -39
  56. package/dist/es5/utils/resource-utils.js.map +1 -1
  57. package/dist/es5/utils/scale-utils.js +36 -66
  58. package/dist/es5/utils/scale-utils.js.map +1 -1
  59. package/dist/esm/contour-layer/marching-squares-codes.js.map +1 -1
  60. package/dist/esm/heatmap-layer/heatmap-layer.js.map +1 -1
  61. package/dist/esm/heatmap-layer/triangle-layer.js.map +1 -1
  62. package/dist/esm/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
  63. package/dist/esm/utils/aggregation-operation-utils.js.map +1 -1
  64. package/dist/esm/utils/cpu-aggregator.js.map +1 -1
  65. package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +1 -1
  66. package/dist.min.js +1 -1
  67. package/package.json +2 -2
  68. package/src/contour-layer/marching-squares-codes.js +52 -10
  69. package/src/heatmap-layer/heatmap-layer.js +3 -9
  70. package/src/heatmap-layer/triangle-layer.js +2 -9
  71. package/src/utils/aggregation-operation-utils.js +4 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/contour-layer/marching-squares-codes.js"],"names":["HALF","ONE6TH","OFFSET","N","E","S","W","NE","NW","SE","SW","SW_TRIANGLE","SE_TRIANGLE","NE_TRIANGLE","NW_TRIANGLE","SW_TRAPEZOID","SE_TRAPEZOID","NE_TRAPEZOID","NW_TRAPEZOID","S_RECTANGLE","E_RECTANGLE","N_RECTANGLE","W_RECTANGLE","EW_RECTANGEL","SN_RECTANGEL","SQUARE","SW_PENTAGON","SE_PENTAGON","NE_PENTAGON","NW_PENTAGON","NW_N_PENTAGON","NE_E_PENTAGON","SE_S_PENTAGON","SW_W_PENTAGON","NW_W_PENTAGON","NE_N_PENTAGON","SE_E_PENTAGON","SW_S_PENTAGON","S_HEXAGON","E_HEXAGON","N_HEXAGON","W_HEXAGON","SW_NE_HEXAGON","NW_SE_HEXAGON","NE_HEPTAGON","SW_HEPTAGON","NW_HEPTAGON","SE_HEPTAGON","OCTAGON","ISOLINES_CODE_OFFSET_MAP","ternaryToIndex","ternary","parseInt","ISOBANDS_CODE_OFFSET_MAP"],"mappings":"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","sourcesContent":["// Code to Offsets Map needed to implement Marching Squares algorithm\n// Ref: https://en.wikipedia.org/wiki/Marching_squares\n\n// Table to map code to the intersection offsets\n// All offsets are relative to the center of marching cell (which is top right corner of grid-cell, and center of marching-square)\nconst HALF = 0.5;\nconst ONE6TH = 1 / 6;\nconst OFFSET = {\n N: [0, HALF], // NORTH\n E: [HALF, 0], // EAST\n S: [0, -HALF], // SOUTH\n W: [-HALF, 0], // WEST\n\n // CORNERS\n NE: [HALF, HALF],\n NW: [-HALF, HALF],\n SE: [HALF, -HALF],\n SW: [-HALF, -HALF]\n};\n\n// NOTE: vertices are ordered in CCW direction, starting from NW corner\n\n// Triangles\nconst SW_TRIANGLE = [OFFSET.W, OFFSET.SW, OFFSET.S];\nconst SE_TRIANGLE = [OFFSET.S, OFFSET.SE, OFFSET.E];\nconst NE_TRIANGLE = [OFFSET.E, OFFSET.NE, OFFSET.N];\nconst NW_TRIANGLE = [OFFSET.NW, OFFSET.W, OFFSET.N];\n\n// Trapezoids\nconst SW_TRAPEZOID = [[-HALF, ONE6TH], [-HALF, -ONE6TH], [-ONE6TH, -HALF], [ONE6TH, -HALF]];\nconst SE_TRAPEZOID = [[-ONE6TH, -HALF], [ONE6TH, -HALF], [HALF, -ONE6TH], [HALF, ONE6TH]];\nconst NE_TRAPEZOID = [[HALF, -ONE6TH], [HALF, ONE6TH], [ONE6TH, HALF], [-ONE6TH, HALF]];\nconst NW_TRAPEZOID = [[-HALF, ONE6TH], [-HALF, -ONE6TH], [ONE6TH, HALF], [-ONE6TH, HALF]];\n\n// Rectangles\nconst S_RECTANGLE = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.E];\nconst E_RECTANGLE = [OFFSET.S, OFFSET.SE, OFFSET.NE, OFFSET.N];\nconst N_RECTANGLE = [OFFSET.NW, OFFSET.W, OFFSET.E, OFFSET.NE];\nconst W_RECTANGLE = [OFFSET.NW, OFFSET.SW, OFFSET.S, OFFSET.N];\nconst EW_RECTANGEL = [[-HALF, ONE6TH], [-HALF, -ONE6TH], [HALF, -ONE6TH], [HALF, ONE6TH]];\nconst SN_RECTANGEL = [[-ONE6TH, -HALF], [ONE6TH, -HALF], [ONE6TH, HALF], [-ONE6TH, HALF]];\n\n// Square\nconst SQUARE = [OFFSET.NW, OFFSET.SW, OFFSET.SE, OFFSET.NE];\n\n// Pentagons\nconst SW_PENTAGON = [OFFSET.NW, OFFSET.SW, OFFSET.SE, OFFSET.E, OFFSET.N];\nconst SE_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.NE, OFFSET.N];\nconst NE_PENTAGON = [OFFSET.NW, OFFSET.W, OFFSET.S, OFFSET.SE, OFFSET.NE];\nconst NW_PENTAGON = [OFFSET.NW, OFFSET.SW, OFFSET.S, OFFSET.E, OFFSET.NE];\n\nconst NW_N_PENTAGON = [OFFSET.NW, OFFSET.W, [HALF, -ONE6TH], [HALF, ONE6TH], OFFSET.N];\nconst NE_E_PENTAGON = [[-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.E, OFFSET.NE, OFFSET.N];\nconst SE_S_PENTAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.S, OFFSET.SE, OFFSET.E];\nconst SW_W_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, [ONE6TH, HALF], [-ONE6TH, HALF]];\n\nconst NW_W_PENTAGON = [OFFSET.NW, OFFSET.W, [-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.N];\nconst NE_N_PENTAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.E, OFFSET.NE, OFFSET.N];\nconst SE_E_PENTAGON = [OFFSET.S, OFFSET.SE, OFFSET.E, [ONE6TH, HALF], [-ONE6TH, HALF]];\nconst SW_S_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, [HALF, -ONE6TH], [HALF, ONE6TH]];\n\n// Hexagon\nconst S_HEXAGON = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.E, [ONE6TH, HALF], [-ONE6TH, HALF]];\nconst E_HEXAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.S, OFFSET.SE, OFFSET.NE, OFFSET.N];\nconst N_HEXAGON = [OFFSET.NW, OFFSET.W, [-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.E, OFFSET.NE];\nconst W_HEXAGON = [OFFSET.NW, OFFSET.SW, OFFSET.S, [HALF, -ONE6TH], [HALF, ONE6TH], OFFSET.N];\nconst SW_NE_HEXAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, OFFSET.E, OFFSET.NE, OFFSET.N];\nconst NW_SE_HEXAGON = [OFFSET.NW, OFFSET.W, OFFSET.S, OFFSET.SE, OFFSET.E, OFFSET.N];\n\n// Heptagon (7-sided)\nconst NE_HEPTAGON = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n OFFSET.E,\n OFFSET.NE,\n OFFSET.N\n];\nconst SW_HEPTAGON = [\n OFFSET.W,\n OFFSET.SW,\n OFFSET.S,\n [HALF, -ONE6TH],\n [HALF, ONE6TH],\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\nconst NW_HEPTAGON = [\n OFFSET.NW,\n OFFSET.W,\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n [HALF, -ONE6TH],\n [HALF, ONE6TH],\n OFFSET.N\n];\nconst SE_HEPTAGON = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n OFFSET.S,\n OFFSET.SE,\n OFFSET.E,\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\n\n// Octagon\nconst OCTAGON = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n [HALF, -ONE6TH],\n [HALF, ONE6TH],\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\n\n// Note: above wiki page invertes white/black dots for generating the code, we don't\nexport const ISOLINES_CODE_OFFSET_MAP = {\n // key is equal to the code of 4 vertices (invert the code specified in wiki)\n // value can be an array or an Object\n // Array : [line] or [line, line], where each line is [start-point, end-point], and each point is [x, y]\n // Object : to handle saddle cases, whos output depends on mean value of all 4 corners\n // key: code of mean value (0 or 1)\n // value: Array , as above defines one or two line segments\n 0: [],\n 1: [[OFFSET.W, OFFSET.S]],\n 2: [[OFFSET.S, OFFSET.E]],\n 3: [[OFFSET.W, OFFSET.E]],\n 4: [[OFFSET.N, OFFSET.E]],\n 5: {\n 0: [[OFFSET.W, OFFSET.S], [OFFSET.N, OFFSET.E]],\n 1: [[OFFSET.W, OFFSET.N], [OFFSET.S, OFFSET.E]]\n },\n 6: [[OFFSET.N, OFFSET.S]],\n 7: [[OFFSET.W, OFFSET.N]],\n 8: [[OFFSET.W, OFFSET.N]],\n 9: [[OFFSET.N, OFFSET.S]],\n 10: {\n 0: [[OFFSET.W, OFFSET.N], [OFFSET.S, OFFSET.E]],\n 1: [[OFFSET.W, OFFSET.S], [OFFSET.N, OFFSET.E]]\n },\n 11: [[OFFSET.N, OFFSET.E]],\n 12: [[OFFSET.W, OFFSET.E]],\n 13: [[OFFSET.S, OFFSET.E]],\n 14: [[OFFSET.W, OFFSET.S]],\n 15: []\n};\n\nfunction ternaryToIndex(ternary) {\n return parseInt(ternary, 4);\n}\n\nexport const ISOBANDS_CODE_OFFSET_MAP = {\n // Below list of cases, follow the same order as in above mentioned wiki page.\n // Each case has its code on first commented line // T,TR,R,C\n // where T: Top, TR: Top-right, R: Right and C: current, each will be either 0, 1 or 2\n // final code is binary representation of above code , where takes 2 digits\n // for example: code 2-2-2-1 => 10-10-10-01 => 10101001 => 169\n\n // no contours\n [ternaryToIndex('0000')]: [],\n [ternaryToIndex('2222')]: [],\n\n // single triangle\n [ternaryToIndex('2221')]: [SW_TRIANGLE],\n [ternaryToIndex('2212')]: [SE_TRIANGLE],\n [ternaryToIndex('2122')]: [NE_TRIANGLE],\n [ternaryToIndex('1222')]: [NW_TRIANGLE],\n [ternaryToIndex('0001')]: [SW_TRIANGLE],\n [ternaryToIndex('0010')]: [SE_TRIANGLE],\n [ternaryToIndex('0100')]: [NE_TRIANGLE],\n [ternaryToIndex('1000')]: [NW_TRIANGLE],\n\n // single trapezoid\n [ternaryToIndex('2220')]: [SW_TRAPEZOID],\n [ternaryToIndex('2202')]: [SE_TRAPEZOID],\n [ternaryToIndex('2022')]: [NE_TRAPEZOID],\n [ternaryToIndex('0222')]: [NW_TRAPEZOID],\n [ternaryToIndex('0002')]: [SW_TRAPEZOID],\n [ternaryToIndex('0020')]: [SE_TRAPEZOID],\n [ternaryToIndex('0200')]: [NE_TRAPEZOID],\n [ternaryToIndex('2000')]: [NW_TRAPEZOID],\n\n // single rectangle\n [ternaryToIndex('0011')]: [S_RECTANGLE],\n [ternaryToIndex('0110')]: [E_RECTANGLE],\n [ternaryToIndex('1100')]: [N_RECTANGLE],\n [ternaryToIndex('1001')]: [W_RECTANGLE],\n [ternaryToIndex('2211')]: [S_RECTANGLE],\n [ternaryToIndex('2112')]: [E_RECTANGLE],\n [ternaryToIndex('1122')]: [N_RECTANGLE],\n [ternaryToIndex('1221')]: [W_RECTANGLE],\n [ternaryToIndex('2200')]: [EW_RECTANGEL],\n [ternaryToIndex('2002')]: [SN_RECTANGEL],\n [ternaryToIndex('0022')]: [EW_RECTANGEL],\n [ternaryToIndex('0220')]: [SN_RECTANGEL],\n\n // single square\n // 1111\n [ternaryToIndex('1111')]: [SQUARE],\n\n // single pentagon\n [ternaryToIndex('1211')]: [SW_PENTAGON],\n [ternaryToIndex('2111')]: [SE_PENTAGON],\n [ternaryToIndex('1112')]: [NE_PENTAGON],\n [ternaryToIndex('1121')]: [NW_PENTAGON],\n [ternaryToIndex('1011')]: [SW_PENTAGON],\n [ternaryToIndex('0111')]: [SE_PENTAGON],\n [ternaryToIndex('1110')]: [NE_PENTAGON],\n [ternaryToIndex('1101')]: [NW_PENTAGON],\n [ternaryToIndex('1200')]: [NW_N_PENTAGON],\n [ternaryToIndex('0120')]: [NE_E_PENTAGON],\n [ternaryToIndex('0012')]: [SE_S_PENTAGON],\n [ternaryToIndex('2001')]: [SW_W_PENTAGON],\n [ternaryToIndex('1022')]: [NW_N_PENTAGON],\n [ternaryToIndex('2102')]: [NE_E_PENTAGON],\n [ternaryToIndex('2210')]: [SE_S_PENTAGON],\n [ternaryToIndex('0221')]: [SW_W_PENTAGON],\n [ternaryToIndex('1002')]: [NW_W_PENTAGON],\n [ternaryToIndex('2100')]: [NE_N_PENTAGON],\n [ternaryToIndex('0210')]: [SE_E_PENTAGON],\n [ternaryToIndex('0021')]: [SW_S_PENTAGON],\n [ternaryToIndex('1220')]: [NW_W_PENTAGON],\n [ternaryToIndex('0122')]: [NE_N_PENTAGON],\n [ternaryToIndex('2012')]: [SE_E_PENTAGON],\n [ternaryToIndex('2201')]: [SW_S_PENTAGON],\n\n // single hexagon\n [ternaryToIndex('0211')]: [S_HEXAGON],\n [ternaryToIndex('2110')]: [E_HEXAGON],\n [ternaryToIndex('1102')]: [N_HEXAGON],\n [ternaryToIndex('1021')]: [W_HEXAGON],\n [ternaryToIndex('2011')]: [S_HEXAGON],\n [ternaryToIndex('0112')]: [E_HEXAGON],\n [ternaryToIndex('1120')]: [N_HEXAGON],\n [ternaryToIndex('1201')]: [W_HEXAGON],\n [ternaryToIndex('2101')]: [SW_NE_HEXAGON],\n [ternaryToIndex('0121')]: [SW_NE_HEXAGON],\n [ternaryToIndex('1012')]: [NW_SE_HEXAGON],\n [ternaryToIndex('1210')]: [NW_SE_HEXAGON],\n\n // 6-sided polygons based on mean weight\n // NOTE: merges mean value codes for extreme changes (as per above Wiki doc)\n [ternaryToIndex('0101')]: {\n 0: [SW_TRIANGLE, NE_TRIANGLE],\n 1: [SW_NE_HEXAGON],\n 2: [SW_NE_HEXAGON]\n },\n [ternaryToIndex('1010')]: {\n 0: [NW_TRIANGLE, SE_TRIANGLE],\n 1: [NW_SE_HEXAGON],\n 2: [NW_SE_HEXAGON]\n },\n [ternaryToIndex('2121')]: {\n 0: [SW_NE_HEXAGON],\n 1: [SW_NE_HEXAGON],\n 2: [SW_TRIANGLE, NE_TRIANGLE]\n },\n [ternaryToIndex('1212')]: {\n 0: [NW_SE_HEXAGON],\n 1: [NW_SE_HEXAGON],\n 2: [NW_TRIANGLE, SE_TRIANGLE]\n },\n\n // 7-sided polygons based on mean weight\n [ternaryToIndex('2120')]: {\n 0: [NE_HEPTAGON],\n 1: [NE_HEPTAGON],\n 2: [SW_TRAPEZOID, NE_TRIANGLE]\n },\n [ternaryToIndex('2021')]: {\n 0: [SW_HEPTAGON],\n 1: [SW_HEPTAGON],\n 2: [SW_TRIANGLE, NE_TRAPEZOID]\n },\n [ternaryToIndex('1202')]: {\n 0: [NW_HEPTAGON],\n 1: [NW_HEPTAGON],\n 2: [NW_TRIANGLE, SE_TRAPEZOID]\n },\n [ternaryToIndex('0212')]: {\n 0: [SE_HEPTAGON],\n 1: [SE_HEPTAGON],\n 2: [SE_TRIANGLE, NW_TRAPEZOID]\n },\n [ternaryToIndex('0102')]: {\n 0: [SW_TRAPEZOID, NE_TRIANGLE],\n 1: [NE_HEPTAGON],\n 2: [NE_HEPTAGON]\n },\n [ternaryToIndex('0201')]: {\n 0: [SW_TRIANGLE, NE_TRAPEZOID],\n 1: [SW_HEPTAGON],\n 2: [SW_HEPTAGON]\n },\n [ternaryToIndex('1020')]: {\n 0: [NW_TRIANGLE, SE_TRAPEZOID],\n 1: [NW_HEPTAGON],\n 2: [NW_HEPTAGON]\n },\n [ternaryToIndex('2010')]: {\n 0: [SE_TRIANGLE, NW_TRAPEZOID],\n 1: [SE_HEPTAGON],\n 2: [SE_HEPTAGON]\n },\n\n // 8-sided polygons based on mean weight\n [ternaryToIndex('2020')]: {\n 0: [NW_TRAPEZOID, SE_TRAPEZOID],\n 1: [OCTAGON],\n 2: [SW_TRAPEZOID, NE_TRAPEZOID]\n },\n [ternaryToIndex('0202')]: {\n 0: [NE_TRAPEZOID, SW_TRAPEZOID],\n 1: [OCTAGON],\n 2: [NW_TRAPEZOID, SE_TRAPEZOID]\n }\n};\n"],"file":"marching-squares-codes.js"}
1
+ {"version":3,"sources":["../../../src/contour-layer/marching-squares-codes.js"],"names":["HALF","ONE6TH","OFFSET","N","E","S","W","NE","NW","SE","SW","SW_TRIANGLE","SE_TRIANGLE","NE_TRIANGLE","NW_TRIANGLE","SW_TRAPEZOID","SE_TRAPEZOID","NE_TRAPEZOID","NW_TRAPEZOID","S_RECTANGLE","E_RECTANGLE","N_RECTANGLE","W_RECTANGLE","EW_RECTANGEL","SN_RECTANGEL","SQUARE","SW_PENTAGON","SE_PENTAGON","NE_PENTAGON","NW_PENTAGON","NW_N_PENTAGON","NE_E_PENTAGON","SE_S_PENTAGON","SW_W_PENTAGON","NW_W_PENTAGON","NE_N_PENTAGON","SE_E_PENTAGON","SW_S_PENTAGON","S_HEXAGON","E_HEXAGON","N_HEXAGON","W_HEXAGON","SW_NE_HEXAGON","NW_SE_HEXAGON","NE_HEPTAGON","SW_HEPTAGON","NW_HEPTAGON","SE_HEPTAGON","OCTAGON","ISOLINES_CODE_OFFSET_MAP","ternaryToIndex","ternary","parseInt","ISOBANDS_CODE_OFFSET_MAP"],"mappings":"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","sourcesContent":["// Code to Offsets Map needed to implement Marching Squares algorithm\n// Ref: https://en.wikipedia.org/wiki/Marching_squares\n\n// Table to map code to the intersection offsets\n// All offsets are relative to the center of marching cell (which is top right corner of grid-cell, and center of marching-square)\nconst HALF = 0.5;\nconst ONE6TH = 1 / 6;\nconst OFFSET = {\n N: [0, HALF], // NORTH\n E: [HALF, 0], // EAST\n S: [0, -HALF], // SOUTH\n W: [-HALF, 0], // WEST\n\n // CORNERS\n NE: [HALF, HALF],\n NW: [-HALF, HALF],\n SE: [HALF, -HALF],\n SW: [-HALF, -HALF]\n};\n\n// NOTE: vertices are ordered in CCW direction, starting from NW corner\n\n// Triangles\nconst SW_TRIANGLE = [OFFSET.W, OFFSET.SW, OFFSET.S];\nconst SE_TRIANGLE = [OFFSET.S, OFFSET.SE, OFFSET.E];\nconst NE_TRIANGLE = [OFFSET.E, OFFSET.NE, OFFSET.N];\nconst NW_TRIANGLE = [OFFSET.NW, OFFSET.W, OFFSET.N];\n\n// Trapezoids\nconst SW_TRAPEZOID = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF]\n];\nconst SE_TRAPEZOID = [\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n [HALF, -ONE6TH],\n [HALF, ONE6TH]\n];\nconst NE_TRAPEZOID = [\n [HALF, -ONE6TH],\n [HALF, ONE6TH],\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\nconst NW_TRAPEZOID = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\n\n// Rectangles\nconst S_RECTANGLE = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.E];\nconst E_RECTANGLE = [OFFSET.S, OFFSET.SE, OFFSET.NE, OFFSET.N];\nconst N_RECTANGLE = [OFFSET.NW, OFFSET.W, OFFSET.E, OFFSET.NE];\nconst W_RECTANGLE = [OFFSET.NW, OFFSET.SW, OFFSET.S, OFFSET.N];\nconst EW_RECTANGEL = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n [HALF, -ONE6TH],\n [HALF, ONE6TH]\n];\nconst SN_RECTANGEL = [\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\n\n// Square\nconst SQUARE = [OFFSET.NW, OFFSET.SW, OFFSET.SE, OFFSET.NE];\n\n// Pentagons\nconst SW_PENTAGON = [OFFSET.NW, OFFSET.SW, OFFSET.SE, OFFSET.E, OFFSET.N];\nconst SE_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.NE, OFFSET.N];\nconst NE_PENTAGON = [OFFSET.NW, OFFSET.W, OFFSET.S, OFFSET.SE, OFFSET.NE];\nconst NW_PENTAGON = [OFFSET.NW, OFFSET.SW, OFFSET.S, OFFSET.E, OFFSET.NE];\n\nconst NW_N_PENTAGON = [OFFSET.NW, OFFSET.W, [HALF, -ONE6TH], [HALF, ONE6TH], OFFSET.N];\nconst NE_E_PENTAGON = [[-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.E, OFFSET.NE, OFFSET.N];\nconst SE_S_PENTAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.S, OFFSET.SE, OFFSET.E];\nconst SW_W_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, [ONE6TH, HALF], [-ONE6TH, HALF]];\n\nconst NW_W_PENTAGON = [OFFSET.NW, OFFSET.W, [-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.N];\nconst NE_N_PENTAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.E, OFFSET.NE, OFFSET.N];\nconst SE_E_PENTAGON = [OFFSET.S, OFFSET.SE, OFFSET.E, [ONE6TH, HALF], [-ONE6TH, HALF]];\nconst SW_S_PENTAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, [HALF, -ONE6TH], [HALF, ONE6TH]];\n\n// Hexagon\nconst S_HEXAGON = [OFFSET.W, OFFSET.SW, OFFSET.SE, OFFSET.E, [ONE6TH, HALF], [-ONE6TH, HALF]];\nconst E_HEXAGON = [[-HALF, ONE6TH], [-HALF, -ONE6TH], OFFSET.S, OFFSET.SE, OFFSET.NE, OFFSET.N];\nconst N_HEXAGON = [OFFSET.NW, OFFSET.W, [-ONE6TH, -HALF], [ONE6TH, -HALF], OFFSET.E, OFFSET.NE];\nconst W_HEXAGON = [OFFSET.NW, OFFSET.SW, OFFSET.S, [HALF, -ONE6TH], [HALF, ONE6TH], OFFSET.N];\nconst SW_NE_HEXAGON = [OFFSET.W, OFFSET.SW, OFFSET.S, OFFSET.E, OFFSET.NE, OFFSET.N];\nconst NW_SE_HEXAGON = [OFFSET.NW, OFFSET.W, OFFSET.S, OFFSET.SE, OFFSET.E, OFFSET.N];\n\n// Heptagon (7-sided)\nconst NE_HEPTAGON = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n OFFSET.E,\n OFFSET.NE,\n OFFSET.N\n];\nconst SW_HEPTAGON = [\n OFFSET.W,\n OFFSET.SW,\n OFFSET.S,\n [HALF, -ONE6TH],\n [HALF, ONE6TH],\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\nconst NW_HEPTAGON = [\n OFFSET.NW,\n OFFSET.W,\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n [HALF, -ONE6TH],\n [HALF, ONE6TH],\n OFFSET.N\n];\nconst SE_HEPTAGON = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n OFFSET.S,\n OFFSET.SE,\n OFFSET.E,\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\n\n// Octagon\nconst OCTAGON = [\n [-HALF, ONE6TH],\n [-HALF, -ONE6TH],\n [-ONE6TH, -HALF],\n [ONE6TH, -HALF],\n [HALF, -ONE6TH],\n [HALF, ONE6TH],\n [ONE6TH, HALF],\n [-ONE6TH, HALF]\n];\n\n// Note: above wiki page invertes white/black dots for generating the code, we don't\nexport const ISOLINES_CODE_OFFSET_MAP = {\n // key is equal to the code of 4 vertices (invert the code specified in wiki)\n // value can be an array or an Object\n // Array : [line] or [line, line], where each line is [start-point, end-point], and each point is [x, y]\n // Object : to handle saddle cases, whos output depends on mean value of all 4 corners\n // key: code of mean value (0 or 1)\n // value: Array , as above defines one or two line segments\n 0: [],\n 1: [[OFFSET.W, OFFSET.S]],\n 2: [[OFFSET.S, OFFSET.E]],\n 3: [[OFFSET.W, OFFSET.E]],\n 4: [[OFFSET.N, OFFSET.E]],\n 5: {\n 0: [\n [OFFSET.W, OFFSET.S],\n [OFFSET.N, OFFSET.E]\n ],\n 1: [\n [OFFSET.W, OFFSET.N],\n [OFFSET.S, OFFSET.E]\n ]\n },\n 6: [[OFFSET.N, OFFSET.S]],\n 7: [[OFFSET.W, OFFSET.N]],\n 8: [[OFFSET.W, OFFSET.N]],\n 9: [[OFFSET.N, OFFSET.S]],\n 10: {\n 0: [\n [OFFSET.W, OFFSET.N],\n [OFFSET.S, OFFSET.E]\n ],\n 1: [\n [OFFSET.W, OFFSET.S],\n [OFFSET.N, OFFSET.E]\n ]\n },\n 11: [[OFFSET.N, OFFSET.E]],\n 12: [[OFFSET.W, OFFSET.E]],\n 13: [[OFFSET.S, OFFSET.E]],\n 14: [[OFFSET.W, OFFSET.S]],\n 15: []\n};\n\nfunction ternaryToIndex(ternary) {\n return parseInt(ternary, 4);\n}\n\nexport const ISOBANDS_CODE_OFFSET_MAP = {\n // Below list of cases, follow the same order as in above mentioned wiki page.\n // Each case has its code on first commented line // T,TR,R,C\n // where T: Top, TR: Top-right, R: Right and C: current, each will be either 0, 1 or 2\n // final code is binary representation of above code , where takes 2 digits\n // for example: code 2-2-2-1 => 10-10-10-01 => 10101001 => 169\n\n // no contours\n [ternaryToIndex('0000')]: [],\n [ternaryToIndex('2222')]: [],\n\n // single triangle\n [ternaryToIndex('2221')]: [SW_TRIANGLE],\n [ternaryToIndex('2212')]: [SE_TRIANGLE],\n [ternaryToIndex('2122')]: [NE_TRIANGLE],\n [ternaryToIndex('1222')]: [NW_TRIANGLE],\n [ternaryToIndex('0001')]: [SW_TRIANGLE],\n [ternaryToIndex('0010')]: [SE_TRIANGLE],\n [ternaryToIndex('0100')]: [NE_TRIANGLE],\n [ternaryToIndex('1000')]: [NW_TRIANGLE],\n\n // single trapezoid\n [ternaryToIndex('2220')]: [SW_TRAPEZOID],\n [ternaryToIndex('2202')]: [SE_TRAPEZOID],\n [ternaryToIndex('2022')]: [NE_TRAPEZOID],\n [ternaryToIndex('0222')]: [NW_TRAPEZOID],\n [ternaryToIndex('0002')]: [SW_TRAPEZOID],\n [ternaryToIndex('0020')]: [SE_TRAPEZOID],\n [ternaryToIndex('0200')]: [NE_TRAPEZOID],\n [ternaryToIndex('2000')]: [NW_TRAPEZOID],\n\n // single rectangle\n [ternaryToIndex('0011')]: [S_RECTANGLE],\n [ternaryToIndex('0110')]: [E_RECTANGLE],\n [ternaryToIndex('1100')]: [N_RECTANGLE],\n [ternaryToIndex('1001')]: [W_RECTANGLE],\n [ternaryToIndex('2211')]: [S_RECTANGLE],\n [ternaryToIndex('2112')]: [E_RECTANGLE],\n [ternaryToIndex('1122')]: [N_RECTANGLE],\n [ternaryToIndex('1221')]: [W_RECTANGLE],\n [ternaryToIndex('2200')]: [EW_RECTANGEL],\n [ternaryToIndex('2002')]: [SN_RECTANGEL],\n [ternaryToIndex('0022')]: [EW_RECTANGEL],\n [ternaryToIndex('0220')]: [SN_RECTANGEL],\n\n // single square\n // 1111\n [ternaryToIndex('1111')]: [SQUARE],\n\n // single pentagon\n [ternaryToIndex('1211')]: [SW_PENTAGON],\n [ternaryToIndex('2111')]: [SE_PENTAGON],\n [ternaryToIndex('1112')]: [NE_PENTAGON],\n [ternaryToIndex('1121')]: [NW_PENTAGON],\n [ternaryToIndex('1011')]: [SW_PENTAGON],\n [ternaryToIndex('0111')]: [SE_PENTAGON],\n [ternaryToIndex('1110')]: [NE_PENTAGON],\n [ternaryToIndex('1101')]: [NW_PENTAGON],\n [ternaryToIndex('1200')]: [NW_N_PENTAGON],\n [ternaryToIndex('0120')]: [NE_E_PENTAGON],\n [ternaryToIndex('0012')]: [SE_S_PENTAGON],\n [ternaryToIndex('2001')]: [SW_W_PENTAGON],\n [ternaryToIndex('1022')]: [NW_N_PENTAGON],\n [ternaryToIndex('2102')]: [NE_E_PENTAGON],\n [ternaryToIndex('2210')]: [SE_S_PENTAGON],\n [ternaryToIndex('0221')]: [SW_W_PENTAGON],\n [ternaryToIndex('1002')]: [NW_W_PENTAGON],\n [ternaryToIndex('2100')]: [NE_N_PENTAGON],\n [ternaryToIndex('0210')]: [SE_E_PENTAGON],\n [ternaryToIndex('0021')]: [SW_S_PENTAGON],\n [ternaryToIndex('1220')]: [NW_W_PENTAGON],\n [ternaryToIndex('0122')]: [NE_N_PENTAGON],\n [ternaryToIndex('2012')]: [SE_E_PENTAGON],\n [ternaryToIndex('2201')]: [SW_S_PENTAGON],\n\n // single hexagon\n [ternaryToIndex('0211')]: [S_HEXAGON],\n [ternaryToIndex('2110')]: [E_HEXAGON],\n [ternaryToIndex('1102')]: [N_HEXAGON],\n [ternaryToIndex('1021')]: [W_HEXAGON],\n [ternaryToIndex('2011')]: [S_HEXAGON],\n [ternaryToIndex('0112')]: [E_HEXAGON],\n [ternaryToIndex('1120')]: [N_HEXAGON],\n [ternaryToIndex('1201')]: [W_HEXAGON],\n [ternaryToIndex('2101')]: [SW_NE_HEXAGON],\n [ternaryToIndex('0121')]: [SW_NE_HEXAGON],\n [ternaryToIndex('1012')]: [NW_SE_HEXAGON],\n [ternaryToIndex('1210')]: [NW_SE_HEXAGON],\n\n // 6-sided polygons based on mean weight\n // NOTE: merges mean value codes for extreme changes (as per above Wiki doc)\n [ternaryToIndex('0101')]: {\n 0: [SW_TRIANGLE, NE_TRIANGLE],\n 1: [SW_NE_HEXAGON],\n 2: [SW_NE_HEXAGON]\n },\n [ternaryToIndex('1010')]: {\n 0: [NW_TRIANGLE, SE_TRIANGLE],\n 1: [NW_SE_HEXAGON],\n 2: [NW_SE_HEXAGON]\n },\n [ternaryToIndex('2121')]: {\n 0: [SW_NE_HEXAGON],\n 1: [SW_NE_HEXAGON],\n 2: [SW_TRIANGLE, NE_TRIANGLE]\n },\n [ternaryToIndex('1212')]: {\n 0: [NW_SE_HEXAGON],\n 1: [NW_SE_HEXAGON],\n 2: [NW_TRIANGLE, SE_TRIANGLE]\n },\n\n // 7-sided polygons based on mean weight\n [ternaryToIndex('2120')]: {\n 0: [NE_HEPTAGON],\n 1: [NE_HEPTAGON],\n 2: [SW_TRAPEZOID, NE_TRIANGLE]\n },\n [ternaryToIndex('2021')]: {\n 0: [SW_HEPTAGON],\n 1: [SW_HEPTAGON],\n 2: [SW_TRIANGLE, NE_TRAPEZOID]\n },\n [ternaryToIndex('1202')]: {\n 0: [NW_HEPTAGON],\n 1: [NW_HEPTAGON],\n 2: [NW_TRIANGLE, SE_TRAPEZOID]\n },\n [ternaryToIndex('0212')]: {\n 0: [SE_HEPTAGON],\n 1: [SE_HEPTAGON],\n 2: [SE_TRIANGLE, NW_TRAPEZOID]\n },\n [ternaryToIndex('0102')]: {\n 0: [SW_TRAPEZOID, NE_TRIANGLE],\n 1: [NE_HEPTAGON],\n 2: [NE_HEPTAGON]\n },\n [ternaryToIndex('0201')]: {\n 0: [SW_TRIANGLE, NE_TRAPEZOID],\n 1: [SW_HEPTAGON],\n 2: [SW_HEPTAGON]\n },\n [ternaryToIndex('1020')]: {\n 0: [NW_TRIANGLE, SE_TRAPEZOID],\n 1: [NW_HEPTAGON],\n 2: [NW_HEPTAGON]\n },\n [ternaryToIndex('2010')]: {\n 0: [SE_TRIANGLE, NW_TRAPEZOID],\n 1: [SE_HEPTAGON],\n 2: [SE_HEPTAGON]\n },\n\n // 8-sided polygons based on mean weight\n [ternaryToIndex('2020')]: {\n 0: [NW_TRAPEZOID, SE_TRAPEZOID],\n 1: [OCTAGON],\n 2: [SW_TRAPEZOID, NE_TRAPEZOID]\n },\n [ternaryToIndex('0202')]: {\n 0: [NE_TRAPEZOID, SW_TRAPEZOID],\n 1: [OCTAGON],\n 2: [NW_TRAPEZOID, SE_TRAPEZOID]\n }\n};\n"],"file":"marching-squares-codes.js"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -9,22 +7,16 @@ exports.getCode = getCode;
9
7
  exports.getVertices = getVertices;
10
8
  exports.CONTOUR_TYPE = void 0;
11
9
 
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
10
  var _core = require("@deck.gl/core");
15
11
 
16
12
  var _marchingSquaresCodes = require("./marching-squares-codes");
17
13
 
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
-
22
- var CONTOUR_TYPE = {
14
+ const CONTOUR_TYPE = {
23
15
  ISO_LINES: 1,
24
16
  ISO_BANDS: 2
25
17
  };
26
18
  exports.CONTOUR_TYPE = CONTOUR_TYPE;
27
- var DEFAULT_THRESHOLD_DATA = {
19
+ const DEFAULT_THRESHOLD_DATA = {
28
20
  zIndex: 0,
29
21
  zOffset: 0.005
30
22
  };
@@ -42,12 +34,14 @@ function getVertexCode(weight, threshold) {
42
34
  }
43
35
 
44
36
  function getCode(opts) {
45
- var cellWeights = opts.cellWeights,
46
- x = opts.x,
47
- y = opts.y,
48
- width = opts.width,
49
- height = opts.height;
50
- var threshold = opts.threshold;
37
+ const {
38
+ cellWeights,
39
+ x,
40
+ y,
41
+ width,
42
+ height
43
+ } = opts;
44
+ let threshold = opts.threshold;
51
45
 
52
46
  if (opts.thresholdValue) {
53
47
  _core.log.deprecated('thresholdValue', 'threshold')();
@@ -55,13 +49,13 @@ function getCode(opts) {
55
49
  threshold = opts.thresholdValue;
56
50
  }
57
51
 
58
- var isLeftBoundary = x < 0;
59
- var isRightBoundary = x >= width - 1;
60
- var isBottomBoundary = y < 0;
61
- var isTopBoundary = y >= height - 1;
62
- var isBoundary = isLeftBoundary || isRightBoundary || isBottomBoundary || isTopBoundary;
63
- var weights = {};
64
- var codes = {};
52
+ const isLeftBoundary = x < 0;
53
+ const isRightBoundary = x >= width - 1;
54
+ const isBottomBoundary = y < 0;
55
+ const isTopBoundary = y >= height - 1;
56
+ const isBoundary = isLeftBoundary || isRightBoundary || isBottomBoundary || isTopBoundary;
57
+ const weights = {};
58
+ const codes = {};
65
59
 
66
60
  if (isLeftBoundary || isTopBoundary) {
67
61
  codes.top = 0;
@@ -91,11 +85,13 @@ function getCode(opts) {
91
85
  codes.current = getVertexCode(weights.current, threshold);
92
86
  }
93
87
 
94
- var top = codes.top,
95
- topRight = codes.topRight,
96
- right = codes.right,
97
- current = codes.current;
98
- var code = -1;
88
+ const {
89
+ top,
90
+ topRight,
91
+ right,
92
+ current
93
+ } = codes;
94
+ let code = -1;
99
95
 
100
96
  if (Number.isFinite(threshold)) {
101
97
  code = top << 3 | topRight << 2 | right << 1 | current;
@@ -105,49 +101,50 @@ function getCode(opts) {
105
101
  code = top << 6 | topRight << 4 | right << 2 | current;
106
102
  }
107
103
 
108
- var meanCode = 0;
104
+ let meanCode = 0;
109
105
 
110
106
  if (!isBoundary) {
111
107
  meanCode = getVertexCode((weights.top + weights.topRight + weights.right + weights.current) / 4, threshold);
112
108
  }
113
109
 
114
110
  return {
115
- code: code,
116
- meanCode: meanCode
111
+ code,
112
+ meanCode
117
113
  };
118
114
  }
119
115
 
120
116
  function getVertices(opts) {
121
- var gridOrigin = opts.gridOrigin,
122
- cellSize = opts.cellSize,
123
- x = opts.x,
124
- y = opts.y,
125
- code = opts.code,
126
- meanCode = opts.meanCode,
127
- _opts$type = opts.type,
128
- type = _opts$type === void 0 ? CONTOUR_TYPE.ISO_LINES : _opts$type;
129
-
130
- var thresholdData = _objectSpread(_objectSpread({}, DEFAULT_THRESHOLD_DATA), opts.thresholdData);
131
-
132
- var offsets = type === CONTOUR_TYPE.ISO_BANDS ? _marchingSquaresCodes.ISOBANDS_CODE_OFFSET_MAP[code] : _marchingSquaresCodes.ISOLINES_CODE_OFFSET_MAP[code];
117
+ const {
118
+ gridOrigin,
119
+ cellSize,
120
+ x,
121
+ y,
122
+ code,
123
+ meanCode,
124
+ type = CONTOUR_TYPE.ISO_LINES
125
+ } = opts;
126
+ const thresholdData = { ...DEFAULT_THRESHOLD_DATA,
127
+ ...opts.thresholdData
128
+ };
129
+ let offsets = type === CONTOUR_TYPE.ISO_BANDS ? _marchingSquaresCodes.ISOBANDS_CODE_OFFSET_MAP[code] : _marchingSquaresCodes.ISOLINES_CODE_OFFSET_MAP[code];
133
130
 
134
131
  if (!Array.isArray(offsets)) {
135
132
  offsets = offsets[meanCode];
136
133
  }
137
134
 
138
- var vZ = thresholdData.zIndex * thresholdData.zOffset;
139
- var rX = (x + 1) * cellSize[0];
140
- var rY = (y + 1) * cellSize[1];
141
- var refVertexX = gridOrigin[0] + rX;
142
- var refVertexY = gridOrigin[1] + rY;
135
+ const vZ = thresholdData.zIndex * thresholdData.zOffset;
136
+ const rX = (x + 1) * cellSize[0];
137
+ const rY = (y + 1) * cellSize[1];
138
+ const refVertexX = gridOrigin[0] + rX;
139
+ const refVertexY = gridOrigin[1] + rY;
143
140
 
144
141
  if (type === CONTOUR_TYPE.ISO_BANDS) {
145
- var polygons = [];
146
- offsets.forEach(function (polygonOffsets) {
147
- var polygon = [];
148
- polygonOffsets.forEach(function (xyOffset) {
149
- var vX = refVertexX + xyOffset[0] * cellSize[0];
150
- var vY = refVertexY + xyOffset[1] * cellSize[1];
142
+ const polygons = [];
143
+ offsets.forEach(polygonOffsets => {
144
+ const polygon = [];
145
+ polygonOffsets.forEach(xyOffset => {
146
+ const vX = refVertexX + xyOffset[0] * cellSize[0];
147
+ const vY = refVertexY + xyOffset[1] * cellSize[1];
151
148
  polygon.push([vX, vY, vZ]);
152
149
  });
153
150
  polygons.push(polygon);
@@ -155,11 +152,11 @@ function getVertices(opts) {
155
152
  return polygons;
156
153
  }
157
154
 
158
- var lines = [];
159
- offsets.forEach(function (xyOffsets) {
160
- xyOffsets.forEach(function (offset) {
161
- var vX = refVertexX + offset[0] * cellSize[0];
162
- var vY = refVertexY + offset[1] * cellSize[1];
155
+ const lines = [];
156
+ offsets.forEach(xyOffsets => {
157
+ xyOffsets.forEach(offset => {
158
+ const vX = refVertexX + offset[0] * cellSize[0];
159
+ const vY = refVertexY + offset[1] * cellSize[1];
163
160
  lines.push([vX, vY, vZ]);
164
161
  });
165
162
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/contour-layer/marching-squares.js"],"names":["CONTOUR_TYPE","ISO_LINES","ISO_BANDS","DEFAULT_THRESHOLD_DATA","zIndex","zOffset","getVertexCode","weight","threshold","Array","isArray","getCode","opts","cellWeights","x","y","width","height","thresholdValue","log","deprecated","isLeftBoundary","isRightBoundary","isBottomBoundary","isTopBoundary","isBoundary","weights","codes","top","topRight","right","current","code","Number","isFinite","meanCode","getVertices","gridOrigin","cellSize","type","thresholdData","offsets","ISOBANDS_CODE_OFFSET_MAP","ISOLINES_CODE_OFFSET_MAP","vZ","rX","rY","refVertexX","refVertexY","polygons","forEach","polygonOffsets","polygon","xyOffset","vX","vY","push","lines","xyOffsets","offset"],"mappings":"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","sourcesContent":["// All utility methods needed to implement Marching Squares algorithm\n// Ref: https://en.wikipedia.org/wiki/Marching_squares\n\nimport {log} from '@deck.gl/core';\nimport {ISOLINES_CODE_OFFSET_MAP, ISOBANDS_CODE_OFFSET_MAP} from './marching-squares-codes';\n\nexport const CONTOUR_TYPE = {\n ISO_LINES: 1,\n ISO_BANDS: 2\n};\n\nconst DEFAULT_THRESHOLD_DATA = {\n zIndex: 0,\n zOffset: 0.005\n};\n\n// Utility methods\n\nfunction getVertexCode(weight, threshold) {\n // threshold must be a single value or a range (array of size 2)\n\n // Iso-bands\n if (Array.isArray(threshold)) {\n if (weight < threshold[0]) {\n return 0;\n }\n return weight < threshold[1] ? 1 : 2;\n }\n // Iso-lines\n return weight >= threshold ? 1 : 0;\n}\n\n// Returns marching square code for given cell\n/* eslint-disable complexity, max-statements*/\nexport function getCode(opts) {\n // Assumptions\n // Origin is on bottom-left , and X increase to right, Y to top\n // When processing one cell, we process 4 cells, by extending row to top and on column to right\n // to create a 2X2 cell grid\n const {cellWeights, x, y, width, height} = opts;\n let threshold = opts.threshold;\n if (opts.thresholdValue) {\n log.deprecated('thresholdValue', 'threshold')();\n threshold = opts.thresholdValue;\n }\n\n const isLeftBoundary = x < 0;\n const isRightBoundary = x >= width - 1;\n const isBottomBoundary = y < 0;\n const isTopBoundary = y >= height - 1;\n const isBoundary = isLeftBoundary || isRightBoundary || isBottomBoundary || isTopBoundary;\n\n const weights = {};\n const codes = {};\n\n // TOP\n if (isLeftBoundary || isTopBoundary) {\n codes.top = 0;\n } else {\n weights.top = cellWeights[(y + 1) * width + x];\n codes.top = getVertexCode(weights.top, threshold);\n }\n\n // TOP-RIGHT\n if (isRightBoundary || isTopBoundary) {\n codes.topRight = 0;\n } else {\n weights.topRight = cellWeights[(y + 1) * width + x + 1];\n codes.topRight = getVertexCode(weights.topRight, threshold);\n }\n\n // RIGHT\n if (isRightBoundary || isBottomBoundary) {\n codes.right = 0;\n } else {\n weights.right = cellWeights[y * width + x + 1];\n codes.right = getVertexCode(weights.right, threshold);\n }\n\n // CURRENT\n if (isLeftBoundary || isBottomBoundary) {\n codes.current = 0;\n } else {\n weights.current = cellWeights[y * width + x];\n codes.current = getVertexCode(weights.current, threshold);\n }\n\n const {top, topRight, right, current} = codes;\n let code = -1;\n if (Number.isFinite(threshold)) {\n code = (top << 3) | (topRight << 2) | (right << 1) | current;\n }\n if (Array.isArray(threshold)) {\n code = (top << 6) | (topRight << 4) | (right << 2) | current;\n }\n\n let meanCode = 0;\n // meanCode is only needed for saddle cases, and they should\n // only occur when we are not processing a cell on boundary\n // because when on a boundary either, bottom-row, top-row, left-column or right-column will have both 0 codes\n if (!isBoundary) {\n meanCode = getVertexCode(\n (weights.top + weights.topRight + weights.right + weights.current) / 4,\n threshold\n );\n }\n return {code, meanCode};\n}\n/* eslint-enable complexity, max-statements*/\n\n// Returns intersection vertices for given cellindex\n// [x, y] refers current marching cell, reference vertex is always top-right corner\nexport function getVertices(opts) {\n const {gridOrigin, cellSize, x, y, code, meanCode, type = CONTOUR_TYPE.ISO_LINES} = opts;\n const thresholdData = {...DEFAULT_THRESHOLD_DATA, ...opts.thresholdData};\n let offsets =\n type === CONTOUR_TYPE.ISO_BANDS\n ? ISOBANDS_CODE_OFFSET_MAP[code]\n : ISOLINES_CODE_OFFSET_MAP[code];\n\n // handle saddle cases\n if (!Array.isArray(offsets)) {\n offsets = offsets[meanCode];\n }\n\n // Reference vertex is at top-right move to top-right corner\n\n const vZ = thresholdData.zIndex * thresholdData.zOffset;\n const rX = (x + 1) * cellSize[0];\n const rY = (y + 1) * cellSize[1];\n\n const refVertexX = gridOrigin[0] + rX;\n const refVertexY = gridOrigin[1] + rY;\n\n // offsets format\n // ISO_LINES: [[1A, 1B], [2A, 2B]],\n // ISO_BANDS: [[1A, 1B, 1C, ...], [2A, 2B, 2C, ...]],\n\n // vertices format\n\n // ISO_LINES: [[x1A, y1A], [x1B, y1B], [x2A, x2B], ...],\n\n // ISO_BANDS: => confirms to SolidPolygonLayer's simple polygon format\n // [\n // [[x1A, y1A], [x1B, y1B], [x1C, y1C] ... ],\n // ...\n // ]\n\n if (type === CONTOUR_TYPE.ISO_BANDS) {\n const polygons = [];\n offsets.forEach(polygonOffsets => {\n const polygon = [];\n polygonOffsets.forEach(xyOffset => {\n const vX = refVertexX + xyOffset[0] * cellSize[0];\n const vY = refVertexY + xyOffset[1] * cellSize[1];\n polygon.push([vX, vY, vZ]);\n });\n polygons.push(polygon);\n });\n return polygons;\n }\n\n // default case is ISO_LINES\n const lines = [];\n offsets.forEach(xyOffsets => {\n xyOffsets.forEach(offset => {\n const vX = refVertexX + offset[0] * cellSize[0];\n const vY = refVertexY + offset[1] * cellSize[1];\n lines.push([vX, vY, vZ]);\n });\n });\n return lines;\n}\n"],"file":"marching-squares.js"}
1
+ {"version":3,"sources":["../../../src/contour-layer/marching-squares.js"],"names":["CONTOUR_TYPE","ISO_LINES","ISO_BANDS","DEFAULT_THRESHOLD_DATA","zIndex","zOffset","getVertexCode","weight","threshold","Array","isArray","getCode","opts","cellWeights","x","y","width","height","thresholdValue","log","deprecated","isLeftBoundary","isRightBoundary","isBottomBoundary","isTopBoundary","isBoundary","weights","codes","top","topRight","right","current","code","Number","isFinite","meanCode","getVertices","gridOrigin","cellSize","type","thresholdData","offsets","ISOBANDS_CODE_OFFSET_MAP","ISOLINES_CODE_OFFSET_MAP","vZ","rX","rY","refVertexX","refVertexY","polygons","forEach","polygonOffsets","polygon","xyOffset","vX","vY","push","lines","xyOffsets","offset"],"mappings":"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","sourcesContent":["// All utility methods needed to implement Marching Squares algorithm\n// Ref: https://en.wikipedia.org/wiki/Marching_squares\n\nimport {log} from '@deck.gl/core';\nimport {ISOLINES_CODE_OFFSET_MAP, ISOBANDS_CODE_OFFSET_MAP} from './marching-squares-codes';\n\nexport const CONTOUR_TYPE = {\n ISO_LINES: 1,\n ISO_BANDS: 2\n};\n\nconst DEFAULT_THRESHOLD_DATA = {\n zIndex: 0,\n zOffset: 0.005\n};\n\n// Utility methods\n\nfunction getVertexCode(weight, threshold) {\n // threshold must be a single value or a range (array of size 2)\n\n // Iso-bands\n if (Array.isArray(threshold)) {\n if (weight < threshold[0]) {\n return 0;\n }\n return weight < threshold[1] ? 1 : 2;\n }\n // Iso-lines\n return weight >= threshold ? 1 : 0;\n}\n\n// Returns marching square code for given cell\n/* eslint-disable complexity, max-statements*/\nexport function getCode(opts) {\n // Assumptions\n // Origin is on bottom-left , and X increase to right, Y to top\n // When processing one cell, we process 4 cells, by extending row to top and on column to right\n // to create a 2X2 cell grid\n const {cellWeights, x, y, width, height} = opts;\n let threshold = opts.threshold;\n if (opts.thresholdValue) {\n log.deprecated('thresholdValue', 'threshold')();\n threshold = opts.thresholdValue;\n }\n\n const isLeftBoundary = x < 0;\n const isRightBoundary = x >= width - 1;\n const isBottomBoundary = y < 0;\n const isTopBoundary = y >= height - 1;\n const isBoundary = isLeftBoundary || isRightBoundary || isBottomBoundary || isTopBoundary;\n\n const weights = {};\n const codes = {};\n\n // TOP\n if (isLeftBoundary || isTopBoundary) {\n codes.top = 0;\n } else {\n weights.top = cellWeights[(y + 1) * width + x];\n codes.top = getVertexCode(weights.top, threshold);\n }\n\n // TOP-RIGHT\n if (isRightBoundary || isTopBoundary) {\n codes.topRight = 0;\n } else {\n weights.topRight = cellWeights[(y + 1) * width + x + 1];\n codes.topRight = getVertexCode(weights.topRight, threshold);\n }\n\n // RIGHT\n if (isRightBoundary || isBottomBoundary) {\n codes.right = 0;\n } else {\n weights.right = cellWeights[y * width + x + 1];\n codes.right = getVertexCode(weights.right, threshold);\n }\n\n // CURRENT\n if (isLeftBoundary || isBottomBoundary) {\n codes.current = 0;\n } else {\n weights.current = cellWeights[y * width + x];\n codes.current = getVertexCode(weights.current, threshold);\n }\n\n const {top, topRight, right, current} = codes;\n let code = -1;\n if (Number.isFinite(threshold)) {\n code = (top << 3) | (topRight << 2) | (right << 1) | current;\n }\n if (Array.isArray(threshold)) {\n code = (top << 6) | (topRight << 4) | (right << 2) | current;\n }\n\n let meanCode = 0;\n // meanCode is only needed for saddle cases, and they should\n // only occur when we are not processing a cell on boundary\n // because when on a boundary either, bottom-row, top-row, left-column or right-column will have both 0 codes\n if (!isBoundary) {\n meanCode = getVertexCode(\n (weights.top + weights.topRight + weights.right + weights.current) / 4,\n threshold\n );\n }\n return {code, meanCode};\n}\n/* eslint-enable complexity, max-statements*/\n\n// Returns intersection vertices for given cellindex\n// [x, y] refers current marching cell, reference vertex is always top-right corner\nexport function getVertices(opts) {\n const {gridOrigin, cellSize, x, y, code, meanCode, type = CONTOUR_TYPE.ISO_LINES} = opts;\n const thresholdData = {...DEFAULT_THRESHOLD_DATA, ...opts.thresholdData};\n let offsets =\n type === CONTOUR_TYPE.ISO_BANDS\n ? ISOBANDS_CODE_OFFSET_MAP[code]\n : ISOLINES_CODE_OFFSET_MAP[code];\n\n // handle saddle cases\n if (!Array.isArray(offsets)) {\n offsets = offsets[meanCode];\n }\n\n // Reference vertex is at top-right move to top-right corner\n\n const vZ = thresholdData.zIndex * thresholdData.zOffset;\n const rX = (x + 1) * cellSize[0];\n const rY = (y + 1) * cellSize[1];\n\n const refVertexX = gridOrigin[0] + rX;\n const refVertexY = gridOrigin[1] + rY;\n\n // offsets format\n // ISO_LINES: [[1A, 1B], [2A, 2B]],\n // ISO_BANDS: [[1A, 1B, 1C, ...], [2A, 2B, 2C, ...]],\n\n // vertices format\n\n // ISO_LINES: [[x1A, y1A], [x1B, y1B], [x2A, x2B], ...],\n\n // ISO_BANDS: => confirms to SolidPolygonLayer's simple polygon format\n // [\n // [[x1A, y1A], [x1B, y1B], [x1C, y1C] ... ],\n // ...\n // ]\n\n if (type === CONTOUR_TYPE.ISO_BANDS) {\n const polygons = [];\n offsets.forEach(polygonOffsets => {\n const polygon = [];\n polygonOffsets.forEach(xyOffset => {\n const vX = refVertexX + xyOffset[0] * cellSize[0];\n const vY = refVertexY + xyOffset[1] * cellSize[1];\n polygon.push([vX, vY, vZ]);\n });\n polygons.push(polygon);\n });\n return polygons;\n }\n\n // default case is ISO_LINES\n const lines = [];\n offsets.forEach(xyOffsets => {\n xyOffsets.forEach(offset => {\n const vX = refVertexX + offset[0] * cellSize[0];\n const vY = refVertexY + offset[1] * cellSize[1];\n lines.push([vX, vY, vZ]);\n });\n });\n return lines;\n}\n"],"file":"marching-squares.js"}
@@ -7,18 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
10
  var _layers = require("@deck.gl/layers");
23
11
 
24
12
  var _colorUtils = require("../utils/color-utils");
@@ -29,13 +17,9 @@ var _cpuAggregator = _interopRequireDefault(require("../utils/cpu-aggregator"));
29
17
 
30
18
  var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer"));
31
19
 
32
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
33
-
34
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
35
-
36
20
  function nop() {}
37
21
 
38
- var defaultProps = {
22
+ const defaultProps = {
39
23
  colorDomain: null,
40
24
  colorRange: _colorUtils.defaultColorRange,
41
25
  getColorValue: {
@@ -106,9 +90,7 @@ var defaultProps = {
106
90
  },
107
91
  getPosition: {
108
92
  type: 'accessor',
109
- value: function value(x) {
110
- return x.position;
111
- }
93
+ value: x => x.position
112
94
  },
113
95
  extruded: false,
114
96
  material: true,
@@ -119,111 +101,93 @@ var defaultProps = {
119
101
  }
120
102
  };
121
103
 
122
- var CPUGridLayer = function (_AggregationLayer) {
123
- (0, _inherits2.default)(CPUGridLayer, _AggregationLayer);
104
+ class CPUGridLayer extends _aggregationLayer.default {
105
+ initializeState() {
106
+ const cpuAggregator = new _cpuAggregator.default({
107
+ getAggregator: props => props.gridAggregator,
108
+ getCellSize: props => props.cellSize
109
+ });
110
+ this.state = {
111
+ cpuAggregator,
112
+ aggregatorState: cpuAggregator.state
113
+ };
114
+ const attributeManager = this.getAttributeManager();
115
+ attributeManager.add({
116
+ positions: {
117
+ size: 3,
118
+ accessor: 'getPosition'
119
+ }
120
+ });
121
+ }
122
+
123
+ updateState(opts) {
124
+ super.updateState(opts);
125
+ this.setState({
126
+ aggregatorState: this.state.cpuAggregator.updateState(opts, {
127
+ viewport: this.context.viewport,
128
+ attributes: this.getAttributes(),
129
+ numInstances: this.getNumInstances(opts.props)
130
+ })
131
+ });
132
+ }
124
133
 
125
- var _super = _createSuper(CPUGridLayer);
134
+ getPickingInfo({
135
+ info
136
+ }) {
137
+ return this.state.cpuAggregator.getPickingInfo({
138
+ info
139
+ });
140
+ }
141
+
142
+ _onGetSublayerColor(cell) {
143
+ return this.state.cpuAggregator.getAccessor('fillColor')(cell);
144
+ }
145
+
146
+ _onGetSublayerElevation(cell) {
147
+ return this.state.cpuAggregator.getAccessor('elevation')(cell);
148
+ }
149
+
150
+ _getSublayerUpdateTriggers() {
151
+ return this.state.cpuAggregator.getUpdateTriggers(this.props);
152
+ }
126
153
 
127
- function CPUGridLayer() {
128
- (0, _classCallCheck2.default)(this, CPUGridLayer);
129
- return _super.apply(this, arguments);
154
+ renderLayers() {
155
+ const {
156
+ elevationScale,
157
+ extruded,
158
+ cellSize,
159
+ coverage,
160
+ material,
161
+ transitions
162
+ } = this.props;
163
+ const {
164
+ cpuAggregator
165
+ } = this.state;
166
+ const SubLayerClass = this.getSubLayerClass('grid-cell', _layers.GridCellLayer);
167
+
168
+ const updateTriggers = this._getSublayerUpdateTriggers();
169
+
170
+ return new SubLayerClass({
171
+ cellSize,
172
+ coverage,
173
+ material,
174
+ elevationScale,
175
+ extruded,
176
+ getFillColor: this._onGetSublayerColor.bind(this),
177
+ getElevation: this._onGetSublayerElevation.bind(this),
178
+ transitions: transitions && {
179
+ getFillColor: transitions.getColorValue || transitions.getColorWeight,
180
+ getElevation: transitions.getElevationValue || transitions.getElevationWeight
181
+ }
182
+ }, this.getSubLayerProps({
183
+ id: 'grid-cell',
184
+ updateTriggers
185
+ }), {
186
+ data: cpuAggregator.state.layerData.data
187
+ });
130
188
  }
131
189
 
132
- (0, _createClass2.default)(CPUGridLayer, [{
133
- key: "initializeState",
134
- value: function initializeState() {
135
- var cpuAggregator = new _cpuAggregator.default({
136
- getAggregator: function getAggregator(props) {
137
- return props.gridAggregator;
138
- },
139
- getCellSize: function getCellSize(props) {
140
- return props.cellSize;
141
- }
142
- });
143
- this.state = {
144
- cpuAggregator: cpuAggregator,
145
- aggregatorState: cpuAggregator.state
146
- };
147
- var attributeManager = this.getAttributeManager();
148
- attributeManager.add({
149
- positions: {
150
- size: 3,
151
- accessor: 'getPosition'
152
- }
153
- });
154
- }
155
- }, {
156
- key: "updateState",
157
- value: function updateState(opts) {
158
- (0, _get2.default)((0, _getPrototypeOf2.default)(CPUGridLayer.prototype), "updateState", this).call(this, opts);
159
- this.setState({
160
- aggregatorState: this.state.cpuAggregator.updateState(opts, {
161
- viewport: this.context.viewport,
162
- attributes: this.getAttributes(),
163
- numInstances: this.getNumInstances(opts.props)
164
- })
165
- });
166
- }
167
- }, {
168
- key: "getPickingInfo",
169
- value: function getPickingInfo(_ref) {
170
- var info = _ref.info;
171
- return this.state.cpuAggregator.getPickingInfo({
172
- info: info
173
- });
174
- }
175
- }, {
176
- key: "_onGetSublayerColor",
177
- value: function _onGetSublayerColor(cell) {
178
- return this.state.cpuAggregator.getAccessor('fillColor')(cell);
179
- }
180
- }, {
181
- key: "_onGetSublayerElevation",
182
- value: function _onGetSublayerElevation(cell) {
183
- return this.state.cpuAggregator.getAccessor('elevation')(cell);
184
- }
185
- }, {
186
- key: "_getSublayerUpdateTriggers",
187
- value: function _getSublayerUpdateTriggers() {
188
- return this.state.cpuAggregator.getUpdateTriggers(this.props);
189
- }
190
- }, {
191
- key: "renderLayers",
192
- value: function renderLayers() {
193
- var _this$props = this.props,
194
- elevationScale = _this$props.elevationScale,
195
- extruded = _this$props.extruded,
196
- cellSize = _this$props.cellSize,
197
- coverage = _this$props.coverage,
198
- material = _this$props.material,
199
- transitions = _this$props.transitions;
200
- var cpuAggregator = this.state.cpuAggregator;
201
- var SubLayerClass = this.getSubLayerClass('grid-cell', _layers.GridCellLayer);
202
-
203
- var updateTriggers = this._getSublayerUpdateTriggers();
204
-
205
- return new SubLayerClass({
206
- cellSize: cellSize,
207
- coverage: coverage,
208
- material: material,
209
- elevationScale: elevationScale,
210
- extruded: extruded,
211
- getFillColor: this._onGetSublayerColor.bind(this),
212
- getElevation: this._onGetSublayerElevation.bind(this),
213
- transitions: transitions && {
214
- getFillColor: transitions.getColorValue || transitions.getColorWeight,
215
- getElevation: transitions.getElevationValue || transitions.getElevationWeight
216
- }
217
- }, this.getSubLayerProps({
218
- id: 'grid-cell',
219
- updateTriggers: updateTriggers
220
- }), {
221
- data: cpuAggregator.state.layerData.data
222
- });
223
- }
224
- }]);
225
- return CPUGridLayer;
226
- }(_aggregationLayer.default);
190
+ }
227
191
 
228
192
  exports.default = CPUGridLayer;
229
193
  CPUGridLayer.layerName = 'CPUGridLayer';