@deck.gl/aggregation-layers 8.10.0-alpha.4 → 8.10.0-alpha.6

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 (95) hide show
  1. package/dist/dist.dev.js +58 -709
  2. package/dist/es5/aggregation-layer.js +120 -134
  3. package/dist/es5/aggregation-layer.js.map +1 -1
  4. package/dist/es5/contour-layer/contour-layer.js +225 -234
  5. package/dist/es5/contour-layer/contour-layer.js.map +1 -1
  6. package/dist/es5/cpu-grid-layer/cpu-grid-layer.js +90 -100
  7. package/dist/es5/cpu-grid-layer/cpu-grid-layer.js.map +1 -1
  8. package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js +131 -140
  9. package/dist/es5/gpu-grid-layer/gpu-grid-cell-layer.js.map +1 -1
  10. package/dist/es5/gpu-grid-layer/gpu-grid-layer.js +285 -295
  11. package/dist/es5/gpu-grid-layer/gpu-grid-layer.js.map +1 -1
  12. package/dist/es5/grid-aggregation-layer.js +194 -209
  13. package/dist/es5/grid-aggregation-layer.js.map +1 -1
  14. package/dist/es5/grid-layer/grid-layer.js +59 -66
  15. package/dist/es5/grid-layer/grid-layer.js.map +1 -1
  16. package/dist/es5/heatmap-layer/heatmap-layer.js +471 -497
  17. package/dist/es5/heatmap-layer/heatmap-layer.js.map +1 -1
  18. package/dist/es5/heatmap-layer/triangle-layer.js +64 -69
  19. package/dist/es5/heatmap-layer/triangle-layer.js.map +1 -1
  20. package/dist/es5/hexagon-layer/hexagon-layer.js +129 -140
  21. package/dist/es5/hexagon-layer/hexagon-layer.js.map +1 -1
  22. package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js +153 -166
  23. package/dist/es5/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
  24. package/dist/es5/screen-grid-layer/screen-grid-layer.js +207 -220
  25. package/dist/es5/screen-grid-layer/screen-grid-layer.js.map +1 -1
  26. package/dist/es5/utils/bin-sorter.js +163 -173
  27. package/dist/es5/utils/bin-sorter.js.map +1 -1
  28. package/dist/es5/utils/cpu-aggregator.js +300 -323
  29. package/dist/es5/utils/cpu-aggregator.js.map +1 -1
  30. package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +483 -504
  31. package/dist/es5/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +1 -1
  32. package/dist/esm/aggregation-layer.js +2 -5
  33. package/dist/esm/aggregation-layer.js.map +1 -1
  34. package/dist/esm/contour-layer/contour-layer.js +2 -5
  35. package/dist/esm/contour-layer/contour-layer.js.map +1 -1
  36. package/dist/esm/cpu-grid-layer/cpu-grid-layer.js +2 -5
  37. package/dist/esm/cpu-grid-layer/cpu-grid-layer.js.map +1 -1
  38. package/dist/esm/cpu-grid-layer/grid-aggregator.js +1 -1
  39. package/dist/esm/cpu-grid-layer/grid-aggregator.js.map +1 -1
  40. package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js +15 -1
  41. package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-fragment.glsl.js.map +1 -1
  42. package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js +121 -1
  43. package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer-vertex.glsl.js.map +1 -1
  44. package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer.js +2 -5
  45. package/dist/esm/gpu-grid-layer/gpu-grid-cell-layer.js.map +1 -1
  46. package/dist/esm/gpu-grid-layer/gpu-grid-layer.js +3 -6
  47. package/dist/esm/gpu-grid-layer/gpu-grid-layer.js.map +1 -1
  48. package/dist/esm/grid-aggregation-layer.js +3 -6
  49. package/dist/esm/grid-aggregation-layer.js.map +1 -1
  50. package/dist/esm/grid-layer/grid-layer.js +3 -7
  51. package/dist/esm/grid-layer/grid-layer.js.map +1 -1
  52. package/dist/esm/heatmap-layer/heatmap-layer.js +7 -11
  53. package/dist/esm/heatmap-layer/heatmap-layer.js.map +1 -1
  54. package/dist/esm/heatmap-layer/max-fs.glsl.js +7 -1
  55. package/dist/esm/heatmap-layer/max-fs.glsl.js.map +1 -1
  56. package/dist/esm/heatmap-layer/max-vs.glsl.js +12 -1
  57. package/dist/esm/heatmap-layer/max-vs.glsl.js.map +1 -1
  58. package/dist/esm/heatmap-layer/triangle-layer-fragment.glsl.js +39 -1
  59. package/dist/esm/heatmap-layer/triangle-layer-fragment.glsl.js.map +1 -1
  60. package/dist/esm/heatmap-layer/triangle-layer-vertex.glsl.js +31 -1
  61. package/dist/esm/heatmap-layer/triangle-layer-vertex.glsl.js.map +1 -1
  62. package/dist/esm/heatmap-layer/triangle-layer.js +1 -3
  63. package/dist/esm/heatmap-layer/triangle-layer.js.map +1 -1
  64. package/dist/esm/heatmap-layer/weights-fs.glsl.js +19 -1
  65. package/dist/esm/heatmap-layer/weights-fs.glsl.js.map +1 -1
  66. package/dist/esm/heatmap-layer/weights-vs.glsl.js +23 -1
  67. package/dist/esm/heatmap-layer/weights-vs.glsl.js.map +1 -1
  68. package/dist/esm/hexagon-layer/hexagon-layer.js +3 -7
  69. package/dist/esm/hexagon-layer/hexagon-layer.js.map +1 -1
  70. package/dist/esm/screen-grid-layer/screen-grid-cell-layer.js +3 -7
  71. package/dist/esm/screen-grid-layer/screen-grid-cell-layer.js.map +1 -1
  72. package/dist/esm/screen-grid-layer/screen-grid-layer-fragment.glsl.js +17 -1
  73. package/dist/esm/screen-grid-layer/screen-grid-layer-fragment.glsl.js.map +1 -1
  74. package/dist/esm/screen-grid-layer/screen-grid-layer-vertex.glsl.js +64 -1
  75. package/dist/esm/screen-grid-layer/screen-grid-layer-vertex.glsl.js.map +1 -1
  76. package/dist/esm/screen-grid-layer/screen-grid-layer.js +5 -9
  77. package/dist/esm/screen-grid-layer/screen-grid-layer.js.map +1 -1
  78. package/dist/esm/utils/bin-sorter.js +7 -16
  79. package/dist/esm/utils/bin-sorter.js.map +1 -1
  80. package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js +20 -1
  81. package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-fs.glsl.js.map +1 -1
  82. package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js +34 -1
  83. package/dist/esm/utils/gpu-grid-aggregation/aggregate-all-vs.glsl.js.map +1 -1
  84. package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js +12 -1
  85. package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-fs.glsl.js.map +1 -1
  86. package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js +58 -1
  87. package/dist/esm/utils/gpu-grid-aggregation/aggregate-to-grid-vs.glsl.js.map +1 -1
  88. package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.js +14 -14
  89. package/dist/esm/utils/gpu-grid-aggregation/gpu-grid-aggregator.js.map +1 -1
  90. package/dist/esm/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js +17 -1
  91. package/dist/esm/utils/gpu-grid-aggregation/transform-mean-vs.glsl.js.map +1 -1
  92. package/dist/esm/utils/scale-utils.js +2 -2
  93. package/dist/esm/utils/scale-utils.js.map +1 -1
  94. package/dist.min.js +30 -27
  95. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/cpu-aggregator.js"],"names":["nop","dimensionSteps","defaultDimensions","key","accessor","pickingInfo","getBins","triggers","value","prop","updateTrigger","weight","aggregation","filterData","getDomain","lowerPercentile","upperPercentile","scaleType","getScaleFunc","domain","range","onSet","props","nullValue","defaultGetCellSize","cellSize","CPUAggregator","opts","state","layerData","dimensions","changeFlags","dimensionUpdaters","_getCellSize","getCellSize","_getAggregator","getAggregator","_addDimension","aggregationParams","oldProps","updateGetValueFuncs","reprojectNeeded","needsReProjectPoints","aggregationDirty","dataChanged","getAggregatedData","dimensionChanges","getDimensionChanges","forEach","f","setState","updateObject","result","hexagons","data","aggregator","normalizeResult","getSortedBins","getValue","getValueChanged","needUpdateDimensionStep","setDimensionState","updateTriggersChanged","all","getPosition","dimension","getDimensionUpdaters","sortedBins","scaleFunc","updater","getDimensionSortedBins","getDimensionValueDomain","getDimensionScale","attributeAccessor","getSubLayerDimensionAttribute","dimensionStep","Object","values","some","item","updaters","needUpdate","find","step","push","bind","length","_updateTriggers","updateTriggers","fromProp","Array","isArray","assign","undefined","dimensionUpdater","BinSorter","_filterData","valueDomain","getValueDomainByScale","dimensionRange","dimensionDomain","getScaleFunction","cell","bin","binMap","index","counts","cv","isValueInDomain","accessors","info","isPicked","picked","object","binInfo","points","filteredPoints","Boolean","dimensionKey","hasOwnProperty"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2018 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport BinSorter from './bin-sorter';\nimport {getScaleFunctionByScaleType} from './scale-utils';\nimport {getValueFunc, wrapGetValueFunc} from './aggregation-operation-utils';\n\nfunction nop() {}\n\nconst dimensionSteps = ['getBins', 'getDomain', 'getScaleFunc'];\nconst defaultDimensions = [\n {\n key: 'fillColor',\n accessor: 'getFillColor',\n pickingInfo: 'colorValue',\n getBins: {\n triggers: {\n value: {\n prop: 'getColorValue',\n updateTrigger: 'getColorValue'\n },\n weight: {\n prop: 'getColorWeight',\n updateTrigger: 'getColorWeight'\n },\n aggregation: {\n prop: 'colorAggregation'\n },\n filterData: {\n prop: '_filterData',\n updateTrigger: '_filterData'\n }\n }\n },\n getDomain: {\n triggers: {\n lowerPercentile: {\n prop: 'lowerPercentile'\n },\n upperPercentile: {\n prop: 'upperPercentile'\n },\n scaleType: {\n prop: 'colorScaleType'\n }\n }\n },\n getScaleFunc: {\n triggers: {\n domain: {prop: 'colorDomain'},\n range: {prop: 'colorRange'}\n },\n onSet: {\n props: 'onSetColorDomain'\n }\n },\n nullValue: [0, 0, 0, 0]\n },\n {\n key: 'elevation',\n accessor: 'getElevation',\n pickingInfo: 'elevationValue',\n getBins: {\n triggers: {\n value: {\n prop: 'getElevationValue',\n updateTrigger: 'getElevationValue'\n },\n weight: {\n prop: 'getElevationWeight',\n updateTrigger: 'getElevationWeight'\n },\n aggregation: {\n prop: 'elevationAggregation'\n },\n filterData: {\n prop: '_filterData',\n updateTrigger: '_filterData'\n }\n }\n },\n getDomain: {\n triggers: {\n lowerPercentile: {\n prop: 'elevationLowerPercentile'\n },\n upperPercentile: {\n prop: 'elevationUpperPercentile'\n },\n scaleType: {\n prop: 'elevationScaleType'\n }\n }\n },\n getScaleFunc: {\n triggers: {\n domain: {prop: 'elevationDomain'},\n range: {prop: 'elevationRange'}\n },\n onSet: {\n props: 'onSetElevationDomain'\n }\n },\n nullValue: -1\n }\n];\nconst defaultGetCellSize = props => props.cellSize;\nexport default class CPUAggregator {\n constructor(opts) {\n this.state = {\n layerData: {},\n dimensions: {\n // color: {\n // getValue: null,\n // domain: null,\n // sortedBins: null,\n // scaleFunc: nop\n // },\n // elevation: {\n // getValue: null,\n // domain: null,\n // sortedBins: null,\n // scaleFunc: nop\n // }\n }\n };\n this.changeFlags = {};\n this.dimensionUpdaters = {};\n\n this._getCellSize = opts.getCellSize || defaultGetCellSize;\n this._getAggregator = opts.getAggregator;\n this._addDimension(opts.dimensions || defaultDimensions);\n }\n\n static defaultDimensions() {\n return defaultDimensions;\n }\n\n updateState(opts, aggregationParams) {\n const {oldProps, props, changeFlags} = opts;\n this.updateGetValueFuncs(oldProps, props, changeFlags);\n const reprojectNeeded = this.needsReProjectPoints(oldProps, props, changeFlags);\n let aggregationDirty = false;\n if (changeFlags.dataChanged || reprojectNeeded) {\n // project data into bin and aggregate wegiths per bin\n this.getAggregatedData(props, aggregationParams);\n aggregationDirty = true;\n } else {\n const dimensionChanges = this.getDimensionChanges(oldProps, props, changeFlags) || [];\n // this here is layer\n dimensionChanges.forEach(f => typeof f === 'function' && f());\n aggregationDirty = true;\n }\n this.setState({aggregationDirty});\n\n return this.state;\n }\n\n // Update private state\n setState(updateObject) {\n this.state = {...this.state, ...updateObject};\n }\n\n // Update private state.dimensions\n setDimensionState(key, updateObject) {\n this.setState({\n dimensions: {\n ...this.state.dimensions,\n [key]: {...this.state.dimensions[key], ...updateObject}\n }\n });\n }\n\n normalizeResult(result = {}) {\n // support previous hexagonAggregator API\n if (result.hexagons) {\n return {data: result.hexagons, ...result};\n } else if (result.layerData) {\n return {data: result.layerData, ...result};\n }\n\n return result;\n }\n\n getAggregatedData(props, aggregationParams) {\n const aggregator = this._getAggregator(props);\n\n const result = aggregator(props, aggregationParams);\n this.setState({\n layerData: this.normalizeResult(result)\n });\n this.changeFlags = {\n layerData: true\n };\n this.getSortedBins(props);\n }\n\n updateGetValueFuncs(oldProps, props, changeFlags) {\n for (const key in this.dimensionUpdaters) {\n const {value, weight, aggregation} = this.dimensionUpdaters[key].getBins.triggers;\n let getValue = props[value.prop];\n const getValueChanged = this.needUpdateDimensionStep(\n this.dimensionUpdaters[key].getBins,\n oldProps,\n props,\n changeFlags\n );\n\n if (getValueChanged) {\n if (getValue) {\n getValue = wrapGetValueFunc(getValue, {data: props.data});\n } else {\n // If `getValue` is not provided from props, build it with aggregation and weight.\n getValue = getValueFunc(props[aggregation.prop], props[weight.prop], {data: props.data});\n }\n }\n\n if (getValue) {\n this.setDimensionState(key, {getValue});\n }\n }\n }\n\n needsReProjectPoints(oldProps, props, changeFlags) {\n return (\n this._getCellSize(oldProps) !== this._getCellSize(props) ||\n this._getAggregator(oldProps) !== this._getAggregator(props) ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPosition))\n );\n }\n\n // Adds dimensions\n addDimension(dimensions) {\n this._addDimension(dimensions);\n }\n\n _addDimension(dimensions = []) {\n dimensions.forEach(dimension => {\n const {key} = dimension;\n this.dimensionUpdaters[key] = this.getDimensionUpdaters(dimension);\n this.state.dimensions[key] = {\n getValue: null,\n domain: null,\n sortedBins: null,\n scaleFunc: nop\n };\n });\n }\n\n getDimensionUpdaters({key, accessor, pickingInfo, getBins, getDomain, getScaleFunc, nullValue}) {\n return {\n key,\n accessor,\n pickingInfo,\n getBins: {updater: this.getDimensionSortedBins, ...getBins},\n getDomain: {updater: this.getDimensionValueDomain, ...getDomain},\n getScaleFunc: {updater: this.getDimensionScale, ...getScaleFunc},\n attributeAccessor: this.getSubLayerDimensionAttribute(key, nullValue)\n };\n }\n\n needUpdateDimensionStep(dimensionStep, oldProps, props, changeFlags) {\n // whether need to update current dimension step\n // dimension step is the value, domain, scaleFunction of each dimension\n // each step is an object with properties links to layer prop and whether the prop is\n // controlled by updateTriggers\n // getBins: {\n // value: {\n // prop: 'getElevationValue',\n // updateTrigger: 'getElevationValue'\n // },\n // weight: {\n // prop: 'getElevationWeight',\n // updateTrigger: 'getElevationWeight'\n // },\n // aggregation: {\n // prop: 'elevationAggregation'\n // }\n // }\n return Object.values(dimensionStep.triggers).some(item => {\n if (item.updateTrigger) {\n // check based on updateTriggers change first\n // if data has changed, always update value\n return (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all ||\n changeFlags.updateTriggersChanged[item.updateTrigger]))\n );\n }\n // fallback to direct comparison\n return oldProps[item.prop] !== props[item.prop];\n });\n }\n\n getDimensionChanges(oldProps, props, changeFlags) {\n // const {dimensionUpdaters} = this.state;\n const updaters = [];\n\n // get dimension to be updated\n for (const key in this.dimensionUpdaters) {\n // return the first triggered updater for each dimension\n const needUpdate = dimensionSteps.find(step =>\n this.needUpdateDimensionStep(\n this.dimensionUpdaters[key][step],\n oldProps,\n props,\n changeFlags\n )\n );\n\n if (needUpdate) {\n updaters.push(\n this.dimensionUpdaters[key][needUpdate].updater.bind(\n this,\n props,\n this.dimensionUpdaters[key]\n )\n );\n }\n }\n\n return updaters.length ? updaters : null;\n }\n\n getUpdateTriggers(props) {\n const _updateTriggers = props.updateTriggers || {};\n const updateTriggers = {};\n\n for (const key in this.dimensionUpdaters) {\n const {accessor} = this.dimensionUpdaters[key];\n // fold dimension triggers into each accessor\n updateTriggers[accessor] = {};\n\n dimensionSteps.forEach(step => {\n Object.values(this.dimensionUpdaters[key][step].triggers).forEach(\n ({prop, updateTrigger}) => {\n if (updateTrigger) {\n // if prop is based on updateTrigger e.g. getColorValue, getColorWeight\n // and updateTriggers is passed in from layer prop\n // fold the updateTriggers into accessor\n const fromProp = _updateTriggers[updateTrigger];\n if (typeof fromProp === 'object' && !Array.isArray(fromProp)) {\n // if updateTrigger is an object spread it\n Object.assign(updateTriggers[accessor], fromProp);\n } else if (fromProp !== undefined) {\n updateTriggers[accessor][prop] = fromProp;\n }\n } else {\n // if prop is not based on updateTrigger\n updateTriggers[accessor][prop] = props[prop];\n }\n }\n );\n });\n }\n\n return updateTriggers;\n }\n\n getSortedBins(props) {\n for (const key in this.dimensionUpdaters) {\n this.getDimensionSortedBins(props, this.dimensionUpdaters[key]);\n }\n }\n\n getDimensionSortedBins(props, dimensionUpdater) {\n const {key} = dimensionUpdater;\n const {getValue} = this.state.dimensions[key];\n\n const sortedBins = new BinSorter(this.state.layerData.data || [], {\n getValue,\n filterData: props._filterData\n });\n this.setDimensionState(key, {sortedBins});\n this.getDimensionValueDomain(props, dimensionUpdater);\n }\n\n getDimensionValueDomain(props, dimensionUpdater) {\n const {getDomain, key} = dimensionUpdater;\n const {\n triggers: {lowerPercentile, upperPercentile, scaleType}\n } = getDomain;\n const valueDomain = this.state.dimensions[key].sortedBins.getValueDomainByScale(\n props[scaleType.prop],\n [props[lowerPercentile.prop], props[upperPercentile.prop]]\n );\n\n this.setDimensionState(key, {valueDomain});\n this.getDimensionScale(props, dimensionUpdater);\n }\n\n getDimensionScale(props, dimensionUpdater) {\n const {key, getScaleFunc, getDomain} = dimensionUpdater;\n const {domain, range} = getScaleFunc.triggers;\n const {scaleType} = getDomain.triggers;\n const {onSet} = getScaleFunc;\n const dimensionRange = props[range.prop];\n const dimensionDomain = props[domain.prop] || this.state.dimensions[key].valueDomain;\n const getScaleFunction = getScaleFunctionByScaleType(scaleType && props[scaleType.prop]);\n const scaleFunc = getScaleFunction(dimensionDomain, dimensionRange);\n\n if (typeof onSet === 'object' && typeof props[onSet.props] === 'function') {\n props[onSet.props](scaleFunc.domain());\n }\n\n this.setDimensionState(key, {scaleFunc});\n }\n\n getSubLayerDimensionAttribute(key, nullValue) {\n return cell => {\n const {sortedBins, scaleFunc} = this.state.dimensions[key];\n const bin = sortedBins.binMap[cell.index];\n\n if (bin && bin.counts === 0) {\n // no points left in bin after filtering\n return nullValue;\n }\n const cv = bin && bin.value;\n const domain = scaleFunc.domain();\n\n const isValueInDomain = cv >= domain[0] && cv <= domain[domain.length - 1];\n\n // if cell value is outside domain, set alpha to 0\n return isValueInDomain ? scaleFunc(cv) : nullValue;\n };\n }\n\n getSubLayerAccessors(props) {\n const accessors = {};\n for (const key in this.dimensionUpdaters) {\n const {accessor} = this.dimensionUpdaters[key];\n accessors[accessor] = this.getSubLayerDimensionAttribute(props, key);\n }\n\n return accessors;\n }\n\n getPickingInfo({info}) {\n const isPicked = info.picked && info.index > -1;\n let object = null;\n\n if (isPicked) {\n // const {sortedColorBins, sortedElevationBins} = this.state;\n\n const cell = this.state.layerData.data[info.index];\n\n const binInfo = {};\n for (const key in this.dimensionUpdaters) {\n const {pickingInfo} = this.dimensionUpdaters[key];\n const {sortedBins} = this.state.dimensions[key];\n const value = sortedBins.binMap[cell.index] && sortedBins.binMap[cell.index].value;\n binInfo[pickingInfo] = value;\n }\n\n object = Object.assign(binInfo, cell, {\n points: cell.filteredPoints || cell.points\n });\n }\n\n // override object with picked cell\n info.picked = Boolean(object);\n info.object = object;\n\n return info;\n }\n\n getAccessor(dimensionKey) {\n if (!this.dimensionUpdaters.hasOwnProperty(dimensionKey)) {\n return nop;\n }\n return this.dimensionUpdaters[dimensionKey].attributeAccessor;\n }\n}\n"],"file":"cpu-aggregator.js"}
1
+ {"version":3,"sources":["../../../src/utils/cpu-aggregator.js"],"names":["nop","dimensionSteps","defaultDimensions","key","accessor","pickingInfo","getBins","triggers","value","prop","updateTrigger","weight","aggregation","filterData","getDomain","lowerPercentile","upperPercentile","scaleType","getScaleFunc","domain","range","onSet","props","nullValue","defaultGetCellSize","cellSize","CPUAggregator","opts","state","layerData","dimensions","changeFlags","dimensionUpdaters","_getCellSize","getCellSize","_getAggregator","getAggregator","_addDimension","updateState","aggregationParams","oldProps","updateGetValueFuncs","reprojectNeeded","needsReProjectPoints","aggregationDirty","dataChanged","getAggregatedData","dimensionChanges","getDimensionChanges","forEach","f","setState","updateObject","setDimensionState","normalizeResult","result","hexagons","data","aggregator","getSortedBins","getValue","getValueChanged","needUpdateDimensionStep","updateTriggersChanged","all","getPosition","addDimension","dimension","getDimensionUpdaters","sortedBins","scaleFunc","updater","getDimensionSortedBins","getDimensionValueDomain","getDimensionScale","attributeAccessor","getSubLayerDimensionAttribute","dimensionStep","Object","values","some","item","updaters","needUpdate","find","step","push","bind","length","getUpdateTriggers","_updateTriggers","updateTriggers","fromProp","Array","isArray","assign","undefined","dimensionUpdater","BinSorter","_filterData","valueDomain","getValueDomainByScale","dimensionRange","dimensionDomain","getScaleFunction","cell","bin","binMap","index","counts","cv","isValueInDomain","getSubLayerAccessors","accessors","getPickingInfo","info","isPicked","picked","object","binInfo","points","filteredPoints","Boolean","getAccessor","dimensionKey","hasOwnProperty"],"mappings":"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","sourcesContent":["// Copyright (c) 2015 - 2018 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport BinSorter from './bin-sorter';\nimport {getScaleFunctionByScaleType} from './scale-utils';\nimport {getValueFunc, wrapGetValueFunc} from './aggregation-operation-utils';\n\nfunction nop() {}\n\nconst dimensionSteps = ['getBins', 'getDomain', 'getScaleFunc'];\nconst defaultDimensions = [\n {\n key: 'fillColor',\n accessor: 'getFillColor',\n pickingInfo: 'colorValue',\n getBins: {\n triggers: {\n value: {\n prop: 'getColorValue',\n updateTrigger: 'getColorValue'\n },\n weight: {\n prop: 'getColorWeight',\n updateTrigger: 'getColorWeight'\n },\n aggregation: {\n prop: 'colorAggregation'\n },\n filterData: {\n prop: '_filterData',\n updateTrigger: '_filterData'\n }\n }\n },\n getDomain: {\n triggers: {\n lowerPercentile: {\n prop: 'lowerPercentile'\n },\n upperPercentile: {\n prop: 'upperPercentile'\n },\n scaleType: {\n prop: 'colorScaleType'\n }\n }\n },\n getScaleFunc: {\n triggers: {\n domain: {prop: 'colorDomain'},\n range: {prop: 'colorRange'}\n },\n onSet: {\n props: 'onSetColorDomain'\n }\n },\n nullValue: [0, 0, 0, 0]\n },\n {\n key: 'elevation',\n accessor: 'getElevation',\n pickingInfo: 'elevationValue',\n getBins: {\n triggers: {\n value: {\n prop: 'getElevationValue',\n updateTrigger: 'getElevationValue'\n },\n weight: {\n prop: 'getElevationWeight',\n updateTrigger: 'getElevationWeight'\n },\n aggregation: {\n prop: 'elevationAggregation'\n },\n filterData: {\n prop: '_filterData',\n updateTrigger: '_filterData'\n }\n }\n },\n getDomain: {\n triggers: {\n lowerPercentile: {\n prop: 'elevationLowerPercentile'\n },\n upperPercentile: {\n prop: 'elevationUpperPercentile'\n },\n scaleType: {\n prop: 'elevationScaleType'\n }\n }\n },\n getScaleFunc: {\n triggers: {\n domain: {prop: 'elevationDomain'},\n range: {prop: 'elevationRange'}\n },\n onSet: {\n props: 'onSetElevationDomain'\n }\n },\n nullValue: -1\n }\n];\nconst defaultGetCellSize = props => props.cellSize;\nexport default class CPUAggregator {\n constructor(opts) {\n this.state = {\n layerData: {},\n dimensions: {\n // color: {\n // getValue: null,\n // domain: null,\n // sortedBins: null,\n // scaleFunc: nop\n // },\n // elevation: {\n // getValue: null,\n // domain: null,\n // sortedBins: null,\n // scaleFunc: nop\n // }\n }\n };\n this.changeFlags = {};\n this.dimensionUpdaters = {};\n\n this._getCellSize = opts.getCellSize || defaultGetCellSize;\n this._getAggregator = opts.getAggregator;\n this._addDimension(opts.dimensions || defaultDimensions);\n }\n\n static defaultDimensions() {\n return defaultDimensions;\n }\n\n updateState(opts, aggregationParams) {\n const {oldProps, props, changeFlags} = opts;\n this.updateGetValueFuncs(oldProps, props, changeFlags);\n const reprojectNeeded = this.needsReProjectPoints(oldProps, props, changeFlags);\n let aggregationDirty = false;\n if (changeFlags.dataChanged || reprojectNeeded) {\n // project data into bin and aggregate wegiths per bin\n this.getAggregatedData(props, aggregationParams);\n aggregationDirty = true;\n } else {\n const dimensionChanges = this.getDimensionChanges(oldProps, props, changeFlags) || [];\n // this here is layer\n dimensionChanges.forEach(f => typeof f === 'function' && f());\n aggregationDirty = true;\n }\n this.setState({aggregationDirty});\n\n return this.state;\n }\n\n // Update private state\n setState(updateObject) {\n this.state = {...this.state, ...updateObject};\n }\n\n // Update private state.dimensions\n setDimensionState(key, updateObject) {\n this.setState({\n dimensions: {\n ...this.state.dimensions,\n [key]: {...this.state.dimensions[key], ...updateObject}\n }\n });\n }\n\n normalizeResult(result = {}) {\n // support previous hexagonAggregator API\n if (result.hexagons) {\n return {data: result.hexagons, ...result};\n } else if (result.layerData) {\n return {data: result.layerData, ...result};\n }\n\n return result;\n }\n\n getAggregatedData(props, aggregationParams) {\n const aggregator = this._getAggregator(props);\n\n const result = aggregator(props, aggregationParams);\n this.setState({\n layerData: this.normalizeResult(result)\n });\n this.changeFlags = {\n layerData: true\n };\n this.getSortedBins(props);\n }\n\n updateGetValueFuncs(oldProps, props, changeFlags) {\n for (const key in this.dimensionUpdaters) {\n const {value, weight, aggregation} = this.dimensionUpdaters[key].getBins.triggers;\n let getValue = props[value.prop];\n const getValueChanged = this.needUpdateDimensionStep(\n this.dimensionUpdaters[key].getBins,\n oldProps,\n props,\n changeFlags\n );\n\n if (getValueChanged) {\n if (getValue) {\n getValue = wrapGetValueFunc(getValue, {data: props.data});\n } else {\n // If `getValue` is not provided from props, build it with aggregation and weight.\n getValue = getValueFunc(props[aggregation.prop], props[weight.prop], {data: props.data});\n }\n }\n\n if (getValue) {\n this.setDimensionState(key, {getValue});\n }\n }\n }\n\n needsReProjectPoints(oldProps, props, changeFlags) {\n return (\n this._getCellSize(oldProps) !== this._getCellSize(props) ||\n this._getAggregator(oldProps) !== this._getAggregator(props) ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getPosition))\n );\n }\n\n // Adds dimensions\n addDimension(dimensions) {\n this._addDimension(dimensions);\n }\n\n _addDimension(dimensions = []) {\n dimensions.forEach(dimension => {\n const {key} = dimension;\n this.dimensionUpdaters[key] = this.getDimensionUpdaters(dimension);\n this.state.dimensions[key] = {\n getValue: null,\n domain: null,\n sortedBins: null,\n scaleFunc: nop\n };\n });\n }\n\n getDimensionUpdaters({key, accessor, pickingInfo, getBins, getDomain, getScaleFunc, nullValue}) {\n return {\n key,\n accessor,\n pickingInfo,\n getBins: {updater: this.getDimensionSortedBins, ...getBins},\n getDomain: {updater: this.getDimensionValueDomain, ...getDomain},\n getScaleFunc: {updater: this.getDimensionScale, ...getScaleFunc},\n attributeAccessor: this.getSubLayerDimensionAttribute(key, nullValue)\n };\n }\n\n needUpdateDimensionStep(dimensionStep, oldProps, props, changeFlags) {\n // whether need to update current dimension step\n // dimension step is the value, domain, scaleFunction of each dimension\n // each step is an object with properties links to layer prop and whether the prop is\n // controlled by updateTriggers\n // getBins: {\n // value: {\n // prop: 'getElevationValue',\n // updateTrigger: 'getElevationValue'\n // },\n // weight: {\n // prop: 'getElevationWeight',\n // updateTrigger: 'getElevationWeight'\n // },\n // aggregation: {\n // prop: 'elevationAggregation'\n // }\n // }\n return Object.values(dimensionStep.triggers).some(item => {\n if (item.updateTrigger) {\n // check based on updateTriggers change first\n // if data has changed, always update value\n return (\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all ||\n changeFlags.updateTriggersChanged[item.updateTrigger]))\n );\n }\n // fallback to direct comparison\n return oldProps[item.prop] !== props[item.prop];\n });\n }\n\n getDimensionChanges(oldProps, props, changeFlags) {\n // const {dimensionUpdaters} = this.state;\n const updaters = [];\n\n // get dimension to be updated\n for (const key in this.dimensionUpdaters) {\n // return the first triggered updater for each dimension\n const needUpdate = dimensionSteps.find(step =>\n this.needUpdateDimensionStep(\n this.dimensionUpdaters[key][step],\n oldProps,\n props,\n changeFlags\n )\n );\n\n if (needUpdate) {\n updaters.push(\n this.dimensionUpdaters[key][needUpdate].updater.bind(\n this,\n props,\n this.dimensionUpdaters[key]\n )\n );\n }\n }\n\n return updaters.length ? updaters : null;\n }\n\n getUpdateTriggers(props) {\n const _updateTriggers = props.updateTriggers || {};\n const updateTriggers = {};\n\n for (const key in this.dimensionUpdaters) {\n const {accessor} = this.dimensionUpdaters[key];\n // fold dimension triggers into each accessor\n updateTriggers[accessor] = {};\n\n dimensionSteps.forEach(step => {\n Object.values(this.dimensionUpdaters[key][step].triggers).forEach(\n ({prop, updateTrigger}) => {\n if (updateTrigger) {\n // if prop is based on updateTrigger e.g. getColorValue, getColorWeight\n // and updateTriggers is passed in from layer prop\n // fold the updateTriggers into accessor\n const fromProp = _updateTriggers[updateTrigger];\n if (typeof fromProp === 'object' && !Array.isArray(fromProp)) {\n // if updateTrigger is an object spread it\n Object.assign(updateTriggers[accessor], fromProp);\n } else if (fromProp !== undefined) {\n updateTriggers[accessor][prop] = fromProp;\n }\n } else {\n // if prop is not based on updateTrigger\n updateTriggers[accessor][prop] = props[prop];\n }\n }\n );\n });\n }\n\n return updateTriggers;\n }\n\n getSortedBins(props) {\n for (const key in this.dimensionUpdaters) {\n this.getDimensionSortedBins(props, this.dimensionUpdaters[key]);\n }\n }\n\n getDimensionSortedBins(props, dimensionUpdater) {\n const {key} = dimensionUpdater;\n const {getValue} = this.state.dimensions[key];\n\n const sortedBins = new BinSorter(this.state.layerData.data || [], {\n getValue,\n filterData: props._filterData\n });\n this.setDimensionState(key, {sortedBins});\n this.getDimensionValueDomain(props, dimensionUpdater);\n }\n\n getDimensionValueDomain(props, dimensionUpdater) {\n const {getDomain, key} = dimensionUpdater;\n const {\n triggers: {lowerPercentile, upperPercentile, scaleType}\n } = getDomain;\n const valueDomain = this.state.dimensions[key].sortedBins.getValueDomainByScale(\n props[scaleType.prop],\n [props[lowerPercentile.prop], props[upperPercentile.prop]]\n );\n\n this.setDimensionState(key, {valueDomain});\n this.getDimensionScale(props, dimensionUpdater);\n }\n\n getDimensionScale(props, dimensionUpdater) {\n const {key, getScaleFunc, getDomain} = dimensionUpdater;\n const {domain, range} = getScaleFunc.triggers;\n const {scaleType} = getDomain.triggers;\n const {onSet} = getScaleFunc;\n const dimensionRange = props[range.prop];\n const dimensionDomain = props[domain.prop] || this.state.dimensions[key].valueDomain;\n const getScaleFunction = getScaleFunctionByScaleType(scaleType && props[scaleType.prop]);\n const scaleFunc = getScaleFunction(dimensionDomain, dimensionRange);\n\n if (typeof onSet === 'object' && typeof props[onSet.props] === 'function') {\n props[onSet.props](scaleFunc.domain());\n }\n\n this.setDimensionState(key, {scaleFunc});\n }\n\n getSubLayerDimensionAttribute(key, nullValue) {\n return cell => {\n const {sortedBins, scaleFunc} = this.state.dimensions[key];\n const bin = sortedBins.binMap[cell.index];\n\n if (bin && bin.counts === 0) {\n // no points left in bin after filtering\n return nullValue;\n }\n const cv = bin && bin.value;\n const domain = scaleFunc.domain();\n\n const isValueInDomain = cv >= domain[0] && cv <= domain[domain.length - 1];\n\n // if cell value is outside domain, set alpha to 0\n return isValueInDomain ? scaleFunc(cv) : nullValue;\n };\n }\n\n getSubLayerAccessors(props) {\n const accessors = {};\n for (const key in this.dimensionUpdaters) {\n const {accessor} = this.dimensionUpdaters[key];\n accessors[accessor] = this.getSubLayerDimensionAttribute(props, key);\n }\n\n return accessors;\n }\n\n getPickingInfo({info}) {\n const isPicked = info.picked && info.index > -1;\n let object = null;\n\n if (isPicked) {\n // const {sortedColorBins, sortedElevationBins} = this.state;\n\n const cell = this.state.layerData.data[info.index];\n\n const binInfo = {};\n for (const key in this.dimensionUpdaters) {\n const {pickingInfo} = this.dimensionUpdaters[key];\n const {sortedBins} = this.state.dimensions[key];\n const value = sortedBins.binMap[cell.index] && sortedBins.binMap[cell.index].value;\n binInfo[pickingInfo] = value;\n }\n\n object = Object.assign(binInfo, cell, {\n points: cell.filteredPoints || cell.points\n });\n }\n\n // override object with picked cell\n info.picked = Boolean(object);\n info.object = object;\n\n return info;\n }\n\n getAccessor(dimensionKey) {\n if (!this.dimensionUpdaters.hasOwnProperty(dimensionKey)) {\n return nop;\n }\n return this.dimensionUpdaters[dimensionKey].attributeAccessor;\n }\n}\n"],"file":"cpu-aggregator.js"}