@anov/3d-ability 0.0.141 → 0.0.143

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 (257) hide show
  1. package/dist/business/Animation/motion/index.js +56 -35
  2. package/dist/business/Animation/motion/index.js.map +1 -1
  3. package/dist/business/Animation/type.js +2 -2
  4. package/dist/business/Area/Fence/FenceBase.js +187 -146
  5. package/dist/business/Area/Fence/FenceBase.js.map +1 -1
  6. package/dist/business/Area/Fence/fence_base_01.js +112 -120
  7. package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
  8. package/dist/business/Area/Fence/fence_feeting_01.js +130 -218
  9. package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
  10. package/dist/business/Area/Fence/fence_roll_01.js +130 -140
  11. package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
  12. package/dist/business/Area/FillArea/FillAreaBase.js +126 -87
  13. package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
  14. package/dist/business/Area/FillArea/fillArea_face_01.js +98 -72
  15. package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
  16. package/dist/business/Area/FillArea/fillArea_line_01.js +94 -66
  17. package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
  18. package/dist/business/Area/index.js +483 -267
  19. package/dist/business/Area/index.js.map +1 -1
  20. package/dist/business/Area/tool.js +26 -14
  21. package/dist/business/Area/tool.js.map +1 -1
  22. package/dist/business/Base/ObjectLayer.js +46 -21
  23. package/dist/business/Base/ObjectLayer.js.map +1 -1
  24. package/dist/business/Batch/index.js +234 -189
  25. package/dist/business/Batch/index.js.map +1 -1
  26. package/dist/business/Box/index.js +81 -52
  27. package/dist/business/Box/index.js.map +1 -1
  28. package/dist/business/Cylinder/index.js +79 -51
  29. package/dist/business/Cylinder/index.js.map +1 -1
  30. package/dist/business/Flyline/bubble/CircleBubble.js +9 -1
  31. package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
  32. package/dist/business/Flyline/bubble/index.js +21 -7
  33. package/dist/business/Flyline/bubble/index.js.map +1 -1
  34. package/dist/business/Flyline/index.js +162 -96
  35. package/dist/business/Flyline/index.js.map +1 -1
  36. package/dist/business/Flyline/line/ArcLine.js +291 -208
  37. package/dist/business/Flyline/line/ArcLine.js.map +1 -1
  38. package/dist/business/Flyline/line/index.js +22 -8
  39. package/dist/business/Flyline/line/index.js.map +1 -1
  40. package/dist/business/HeatMap/HeatMap.js +467 -380
  41. package/dist/business/HeatMap/HeatMap.js.map +1 -1
  42. package/dist/business/HeatMap/core.js +525 -405
  43. package/dist/business/HeatMap/core.js.map +1 -1
  44. package/dist/business/HeatMap/shader.js +3 -69
  45. package/dist/business/HeatMap/shader.js.map +1 -1
  46. package/dist/business/InfoPanel/index.js +242 -201
  47. package/dist/business/InfoPanel/index.js.map +1 -1
  48. package/dist/business/Line/index.js +88 -55
  49. package/dist/business/Line/index.js.map +1 -1
  50. package/dist/business/Mark/KeyframeAnimation.js +176 -145
  51. package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
  52. package/dist/business/Mark/index.js +294 -196
  53. package/dist/business/Mark/index.js.map +1 -1
  54. package/dist/business/Mark/shader/tanhao.js +3 -36
  55. package/dist/business/Mark/shader/tanhao.js.map +1 -1
  56. package/dist/business/Mark/type.js +1 -1
  57. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +551 -377
  58. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
  59. package/dist/business/MaterialSwitch/inject.js +58 -92
  60. package/dist/business/MaterialSwitch/inject.js.map +1 -1
  61. package/dist/business/MaterialSwitch/shader/finalFade.js +2 -74
  62. package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
  63. package/dist/business/MaterialSwitch/shader/ground.js +16 -95
  64. package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
  65. package/dist/business/MaterialSwitch/shader/groundBase64.js +3 -9
  66. package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
  67. package/dist/business/MaterialSwitch/shader/realFade.js +9 -48
  68. package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
  69. package/dist/business/Plane/index.js +78 -51
  70. package/dist/business/Plane/index.js.map +1 -1
  71. package/dist/business/Poi/index.js +336 -248
  72. package/dist/business/Poi/index.js.map +1 -1
  73. package/dist/business/Poi/link/Cylinder.js +89 -56
  74. package/dist/business/Poi/link/Cylinder.js.map +1 -1
  75. package/dist/business/Poi/link/Pyramid.js +165 -104
  76. package/dist/business/Poi/link/Pyramid.js.map +1 -1
  77. package/dist/business/Poi/link/index.js +114 -54
  78. package/dist/business/Poi/link/index.js.map +1 -1
  79. package/dist/business/Poi/panel/index.js +373 -315
  80. package/dist/business/Poi/panel/index.js.map +1 -1
  81. package/dist/business/Poi/panel/utils.js +10 -5
  82. package/dist/business/Poi/panel/utils.js.map +1 -1
  83. package/dist/business/Poi/particle/DoubleCircle.js +107 -71
  84. package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
  85. package/dist/business/Poi/particle/DynamicCircle.js +111 -75
  86. package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
  87. package/dist/business/Poi/particle/SingleCircle.js +98 -62
  88. package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
  89. package/dist/business/Poi/particle/index.js +117 -49
  90. package/dist/business/Poi/particle/index.js.map +1 -1
  91. package/dist/business/Poi/shader/circle.js +3 -31
  92. package/dist/business/Poi/shader/circle.js.map +1 -1
  93. package/dist/business/Poi/shader/cylinder.js +3 -37
  94. package/dist/business/Poi/shader/cylinder.js.map +1 -1
  95. package/dist/business/Poi/shader/doubleCircle.js +3 -55
  96. package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
  97. package/dist/business/Poi/shader/dynamicCircle.js +3 -67
  98. package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
  99. package/dist/business/Poi/title/Border.js +27 -7
  100. package/dist/business/Poi/title/Border.js.map +1 -1
  101. package/dist/business/Poi/title/Ellipse.js +27 -7
  102. package/dist/business/Poi/title/Ellipse.js.map +1 -1
  103. package/dist/business/Poi/title/index.js +292 -208
  104. package/dist/business/Poi/title/index.js.map +1 -1
  105. package/dist/business/Poi/tools.js +17 -18
  106. package/dist/business/Poi/tools.js.map +1 -1
  107. package/dist/business/Sphere/index.js +72 -47
  108. package/dist/business/Sphere/index.js.map +1 -1
  109. package/dist/business/Spline/index.js +245 -190
  110. package/dist/business/Spline/index.js.map +1 -1
  111. package/dist/business/SplitBuilding/index.js +536 -327
  112. package/dist/business/SplitBuilding/index.js.map +1 -1
  113. package/dist/business/SplitBuilding/type.js +2 -2
  114. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +275 -218
  115. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
  116. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +177 -132
  117. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
  118. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +1 -51
  119. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
  120. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +1 -6
  121. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
  122. package/dist/business/TrafficComponents/base.js +55 -32
  123. package/dist/business/TrafficComponents/base.js.map +1 -1
  124. package/dist/business/TrafficComponents/utils.d.ts +1 -1
  125. package/dist/business/TrafficComponents/utils.js +25 -26
  126. package/dist/business/TrafficComponents/utils.js.map +1 -1
  127. package/dist/business/Utils/Curve.js +56 -40
  128. package/dist/business/Utils/Curve.js.map +1 -1
  129. package/dist/business/Utils/constant.js +1 -1
  130. package/dist/business/Utils/constant.js.map +1 -1
  131. package/dist/business/Utils/defineProps.js +14 -13
  132. package/dist/business/Utils/defineProps.js.map +1 -1
  133. package/dist/business/Utils/round-curve.js +153 -127
  134. package/dist/business/Utils/round-curve.js.map +1 -1
  135. package/dist/business/VideoPanel/index.js +319 -258
  136. package/dist/business/VideoPanel/index.js.map +1 -1
  137. package/dist/business/Water/index.js +108 -78
  138. package/dist/business/Water/index.js.map +1 -1
  139. package/dist/business/Water/types.js +1 -1
  140. package/dist/business/Water/types.js.map +1 -1
  141. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +449 -383
  142. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  143. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +142 -107
  144. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
  145. package/dist/core/Controls/FirstViewControl/index.js +96 -84
  146. package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
  147. package/dist/core/Controls/ThirdViewControl/action/input.js +98 -77
  148. package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
  149. package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
  150. package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
  151. package/dist/core/Controls/ThirdViewControl/index.js +28 -19
  152. package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
  153. package/dist/core/Controls/ThirdViewControl/player/animation.js +155 -126
  154. package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
  155. package/dist/core/Controls/ThirdViewControl/player/camera.js +63 -47
  156. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  157. package/dist/core/Controls/ThirdViewControl/player/control.js +49 -39
  158. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  159. package/dist/core/Controls/ThirdViewControl/player.js +91 -66
  160. package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
  161. package/dist/core/Controls/base.js +30 -14
  162. package/dist/core/Controls/base.js.map +1 -1
  163. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +131 -92
  164. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
  165. package/dist/core/Debug/PerformanceInfo/Performance.js +47 -22
  166. package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
  167. package/dist/core/Light/PointLight/PointLightExt.js +21 -4
  168. package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
  169. package/dist/core/Material/FinirMaterial/FinirMaterial.js +57 -37
  170. package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
  171. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +153 -116
  172. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
  173. package/dist/core/Material/PristineGridMaterial/shader/fragment.js +1 -95
  174. package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
  175. package/dist/core/Material/PristineGridMaterial/shader/vertex.js +1 -26
  176. package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
  177. package/dist/core/Material/SurfaceMaterial/index.js +172 -76
  178. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  179. package/dist/core/Material/decorators.js +11 -6
  180. package/dist/core/Material/decorators.js.map +1 -1
  181. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +12 -16
  182. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
  183. package/dist/core/PostEffects/addBrightnessContrastPass.js +13 -17
  184. package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
  185. package/dist/core/PostEffects/bloomPass.js +10 -17
  186. package/dist/core/PostEffects/bloomPass.js.map +1 -1
  187. package/dist/core/PostEffects/bloomSelect.js +43 -60
  188. package/dist/core/PostEffects/bloomSelect.js.map +1 -1
  189. package/dist/core/PostEffects/colorifyPass.js +13 -17
  190. package/dist/core/PostEffects/colorifyPass.js.map +1 -1
  191. package/dist/core/PostEffects/index.js +22 -28
  192. package/dist/core/PostEffects/index.js.map +1 -1
  193. package/dist/core/PostEffects/outlinePass.js +50 -37
  194. package/dist/core/PostEffects/outlinePass.js.map +1 -1
  195. package/dist/core/PostEffects/postprocessing.js +12 -14
  196. package/dist/core/PostEffects/postprocessing.js.map +1 -1
  197. package/dist/core/PostEffects/saoPass.js +10 -15
  198. package/dist/core/PostEffects/saoPass.js.map +1 -1
  199. package/dist/core/PostEffects/shader/colorify.js +3 -22
  200. package/dist/core/PostEffects/shader/colorify.js.map +1 -1
  201. package/dist/core/PostEffects/shader/gammaCorrectionShader.js +3 -27
  202. package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
  203. package/dist/core/PostEffects/shader/mapping.js +3 -66
  204. package/dist/core/PostEffects/shader/mapping.js.map +1 -1
  205. package/dist/core/PostEffects/shader/thermalMaging.js +3 -28
  206. package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
  207. package/dist/core/SceneEffect/grow/grow.js +101 -85
  208. package/dist/core/SceneEffect/grow/grow.js.map +1 -1
  209. package/dist/core/SceneEffect/grow/style_down.js +77 -60
  210. package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
  211. package/dist/core/SceneEffect/grow/style_up.js +81 -64
  212. package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
  213. package/dist/core/SceneEffect/grow/type.js +2 -2
  214. package/dist/core/SceneEffect/grow/type.js.map +1 -1
  215. package/dist/core/WeatherSystem/DynamicWeatherSystem.js +76 -51
  216. package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
  217. package/dist/core/WeatherSystem/hdr/index.js +105 -69
  218. package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
  219. package/dist/core/WeatherSystem/index.js +124 -77
  220. package/dist/core/WeatherSystem/index.js.map +1 -1
  221. package/dist/core/WeatherSystem/objects/fog/index.js +80 -52
  222. package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
  223. package/dist/core/WeatherSystem/objects/rain/index.js +84 -72
  224. package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
  225. package/dist/core/WeatherSystem/objects/rain/lineRain.js +118 -88
  226. package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
  227. package/dist/core/WeatherSystem/objects/rain/plane.js +146 -116
  228. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  229. package/dist/core/WeatherSystem/objects/rain/point.js +148 -100
  230. package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
  231. package/dist/core/WeatherSystem/objects/sky/cloud.js +104 -71
  232. package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
  233. package/dist/core/WeatherSystem/objects/sky/index.js +84 -66
  234. package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
  235. package/dist/core/WeatherSystem/objects/sky/outline.js +45 -25
  236. package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
  237. package/dist/core/WeatherSystem/shaders/cloud.js +3 -74
  238. package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
  239. package/dist/core/WeatherSystem/shaders/fog.js +3 -103
  240. package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
  241. package/dist/core/WeatherSystem/shaders/rain.js +7 -206
  242. package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
  243. package/dist/core/WeatherSystem/shaders/sky.js +3 -87
  244. package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
  245. package/dist/core/WeatherSystem/sky/index.js +135 -104
  246. package/dist/core/WeatherSystem/sky/index.js.map +1 -1
  247. package/dist/core/WeatherSystem/utils/constant.js +38 -44
  248. package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
  249. package/dist/core/WeatherSystem/utils/math.js +25 -18
  250. package/dist/core/WeatherSystem/utils/math.js.map +1 -1
  251. package/dist/core/WeatherSystem/utils/type.js +1 -1
  252. package/dist/core/WeatherSystem/utils/type.js.map +1 -1
  253. package/dist/core/WeatherSystem/weather/index.js +141 -96
  254. package/dist/core/WeatherSystem/weather/index.js.map +1 -1
  255. package/dist/utils/index.js +1 -1
  256. package/dist/utils/index.js.map +1 -1
  257. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["HeatmapConfig","defaultRadius","defaultRenderer","defaultGradient","defaultMaxOpacity","defaultMinOpacity","defaultBlur","defaultXField","defaultYField","defaultValueField","plugins","Store","constructor","config","_defineProperty","_xField","xField","_yField","yField","_valueField","valueField","radius","_cfgRadius","_organiseData","dataPoint","forceRender","x","y","radi","_radi","store","_data","max","_max","min","_min","value","storedVal","setDataMax","setDataMin","_unOrganizeData","unorganizedData","data","push","_onExtremaChange","_coordinator","emit","addData","args","length","dataArr","dataLen","organisedEntry","setData","dataPoints","pointsLen","i","getInternalData","removeData","setCoordinator","coordinator","getData","getValueAt","point","_renderer","shadowCtx","img","getImageData","Math","abs","Canvas2dRenderer","_width","_height","container","shadowCanvas","document","createElement","canvas","_renderBoundaries","computed","getComputedStyle","className","width","replace","height","getContext","ctx","style","cssText","position","appendChild","_palette","_getColorPalette","_templates","_setStyles","_config$gradient","gradientConfig","gradient","paletteCanvas","paletteCtx","createLinearGradient","key","addColorStop","fillStyle","fillRect","_getPointTemplate","blurFactor","tplCanvas","tplCtx","beginPath","arc","PI","fill","createRadialGradient","_prepareData","renderData","data2","xValues","Object","keys","xValuesLen","xValue","yValues","yValuesLen","yValue","renderPartial","_drawAlpha","_colorize","renderAll","_clear","_updateGradient","updateConfig","setDimensions","clearRect","_blur","blur","backgroundColor","_opacity","opacity","_maxOpacity","maxOpacity","_minOpacity","minOpacity","_useGradientOpacity","useGradientOpacity","rectX","rectY","tpl","templateAlpha","globalAlpha","drawImage","maxWidth","maxHeight","imgData","len","palette","alpha","offset","finalAlpha","newImg","ImageData","putImageData","getDataURL","toDataURL","Coordinator","cStore","on","evtName","callback","scope","call","Heatmap","_config","_objectSpread","plugin","pluginToLoad","Error","Renderer","renderer","_store","_connect","onExtremaChange","configure","repaint","create","register","pluginKey"],"sources":["../../../src/business/HeatMap/core.ts"],"sourcesContent":["const HeatmapConfig = {\n defaultRadius: 40,\n defaultRenderer: 'canvas2d',\n defaultGradient: { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' },\n defaultMaxOpacity: 1,\n defaultMinOpacity: 0,\n defaultBlur: 0.85,\n defaultXField: 'x',\n defaultYField: 'y',\n defaultValueField: 'value',\n plugins: {},\n}\n\ninterface IPoint {\n x: number\n y: number\n value: number\n radius: number\n min?: number\n max?: number\n}\n\ninterface IConfig {\n radius?: number\n xField?: string\n yField?: string\n valueField?: string\n defaultXField: string\n defaultYField: string\n defaultValueField: string\n}\n\nclass Store {\n private _coordinator: any = {}\n private _data: any[] = []\n private _radi: any[] = []\n private _min = 10\n private _max = 1\n private _xField: string\n private _yField: string\n private _valueField: string\n private _cfgRadius?: number\n\n constructor(config: IConfig) {\n this._xField = config.xField || config.defaultXField\n this._yField = config.yField || config.defaultYField\n this._valueField = config.valueField || config.defaultValueField\n\n if (config.radius)\n this._cfgRadius = config.radius\n }\n\n private _organiseData(dataPoint: any, forceRender: boolean): false | IPoint {\n const x = dataPoint[this._xField]\n const y = dataPoint[this._yField]\n const radi = this._radi\n const store = this._data\n const max = this._max\n const min = this._min\n const value = dataPoint[this._valueField] || 1\n const radius = dataPoint.radius || this._cfgRadius || HeatmapConfig.defaultRadius\n\n if (!store[x]) {\n store[x] = []\n radi[x] = []\n }\n\n if (!store[x][y]) {\n store[x][y] = value\n radi[x][y] = radius\n }\n else {\n store[x][y] += value\n }\n const storedVal = store[x][y]\n\n if (storedVal > max) {\n if (!forceRender)\n this._max = storedVal\n else\n this.setDataMax(storedVal)\n\n return false\n }\n else if (storedVal < min) {\n if (!forceRender)\n this._min = storedVal\n else\n this.setDataMin(storedVal)\n\n return false\n }\n else {\n return {\n x,\n y,\n value,\n radius,\n min,\n max,\n }\n }\n }\n\n private _unOrganizeData() {\n const unorganizedData = []\n const data = this._data\n const radi = this._radi\n\n for (const x in data) {\n for (const y in data[x]) {\n unorganizedData.push({\n x,\n y,\n radius: radi[x][y],\n value: data[x][y],\n })\n }\n }\n return {\n min: this._min,\n max: this._max,\n data: unorganizedData,\n }\n }\n\n private _onExtremaChange() {\n this._coordinator.emit('extremachange', {\n min: this._min,\n max: this._max,\n })\n }\n\n addData(...args: any[]) {\n if (args[0].length > 0) {\n const dataArr = args[0]\n let dataLen = dataArr.length\n while (dataLen--)\n this.addData(dataArr[dataLen])\n }\n else {\n // add to store\n const organisedEntry = this._organiseData(args[0], true)\n if (organisedEntry) {\n // if it's the first datapoint initialize the extremas with it\n if (this._data.length === 0)\n this._min = this._max = organisedEntry.value\n\n this._coordinator.emit('renderpartial', {\n min: this._min,\n max: this._max,\n data: [organisedEntry],\n })\n }\n }\n return this\n }\n\n setData(data: any) {\n const dataPoints = data.data\n const pointsLen = dataPoints.length\n\n // reset data arrays\n this._data = []\n this._radi = []\n\n for (let i = 0; i < pointsLen; i++)\n this._organiseData(dataPoints[i], false)\n\n this._max = data.max\n this._min = data.min || 0\n\n this._onExtremaChange()\n this._coordinator.emit('renderall', this.getInternalData())\n return this\n }\n\n removeData() {\n // TODO: implement\n }\n\n setDataMax(max: number) {\n this._max = max\n this._onExtremaChange()\n this._coordinator.emit('renderall', this.getInternalData())\n return this\n }\n\n setDataMin(min: number) {\n this._min = min\n this._onExtremaChange()\n this._coordinator.emit('renderall', this.getInternalData())\n return this\n }\n\n setCoordinator(coordinator: any) {\n this._coordinator = coordinator\n }\n\n getInternalData() {\n return {\n max: this._max,\n min: this._min,\n data: this._data,\n radi: this._radi,\n }\n }\n\n getData() {\n return this._unOrganizeData()\n }\n\n getValueAt(point: { x: number; y: number }) {\n const shadowCtx = (this as any)._renderer?.shadowCtx\n if (!shadowCtx)\n return null\n\n const img = shadowCtx.getImageData(point.x, point.y, 1, 1)\n const data = img.data[3]\n const max = this._max\n const min = this._min\n\n const value = (Math.abs(max! - min!) * (data / 255)) >> 0\n return value\n }\n}\n\nclass Canvas2dRenderer {\n private shadowCanvas: HTMLCanvasElement\n private canvas: HTMLCanvasElement\n private _renderBoundaries: number[]\n private _width: number\n private _height: number\n private shadowCtx: CanvasRenderingContext2D\n private ctx: CanvasRenderingContext2D\n private _palette: Uint8ClampedArray\n private _templates: { [key: string]: HTMLCanvasElement }\n private _blur: number\n private _opacity: number\n private _maxOpacity: number\n private _minOpacity: number\n private _useGradientOpacity: boolean\n private _min?: number\n private _max?: number\n\n constructor(config: any) {\n const container = config.container\n this.shadowCanvas = document.createElement('canvas')\n this.canvas = config.canvas || document.createElement('canvas')\n this._renderBoundaries = [10000, 10000, 0, 0]\n\n const computed = getComputedStyle(config.container) || {}\n\n this.canvas.className = 'heatmap-canvas'\n\n this._width = this.canvas.width = this.shadowCanvas.width = config.width || +(computed as any).width?.replace(/px/, '') || 0\n this._height = this.canvas.height = this.shadowCanvas.height = config.height || +(computed as any).height?.replace(/px/, '') || 0\n\n this.shadowCtx = this.shadowCanvas.getContext('2d')!\n this.ctx = this.canvas.getContext('2d')!\n\n this.canvas.style.cssText = this.shadowCanvas.style.cssText = 'position:absolute;left:0;top:0;'\n\n container.style.position = 'relative'\n container.appendChild(this.canvas)\n\n this._palette = this._getColorPalette(config)\n this._templates = {}\n\n this._setStyles(config)\n }\n\n private _getColorPalette(config: any) {\n const gradientConfig = config.gradient ?? config.defaultGradient\n const paletteCanvas = document.createElement('canvas')\n const paletteCtx = paletteCanvas.getContext('2d')!\n\n paletteCanvas.width = 256\n paletteCanvas.height = 1\n\n const gradient = paletteCtx.createLinearGradient(0, 0, 256, 1)\n for (const key in gradientConfig)\n gradient.addColorStop(+key, gradientConfig[key])\n\n paletteCtx.fillStyle = gradient\n paletteCtx.fillRect(0, 0, 256, 1)\n\n return paletteCtx.getImageData(0, 0, 256, 1).data\n }\n\n private _getPointTemplate(radius: number, blurFactor: number) {\n const tplCanvas = document.createElement('canvas')\n const tplCtx = tplCanvas.getContext('2d')!\n const x = radius\n const y = radius\n tplCanvas.width = tplCanvas.height = radius * 2\n\n if (blurFactor === 1) {\n tplCtx.beginPath()\n tplCtx.arc(x, y, radius, 0, 2 * Math.PI, false)\n tplCtx.fillStyle = 'rgba(0,0,0,1)'\n tplCtx.fill()\n }\n else {\n const gradient = tplCtx.createRadialGradient(x, y, radius * blurFactor, x, y, radius)\n gradient.addColorStop(0, 'rgba(0,0,0,1)')\n gradient.addColorStop(1, 'rgba(0,0,0,0)')\n tplCtx.fillStyle = gradient\n tplCtx.fillRect(0, 0, 2 * radius, 2 * radius)\n }\n\n return tplCanvas\n }\n\n private _prepareData(data: any) {\n const renderData = []\n const min = data.min\n const max = data.max\n const radi = data.radi\n const data2 = data.data\n\n const xValues = Object.keys(data2)\n let xValuesLen = xValues.length\n\n while (xValuesLen--) {\n const xValue = xValues[xValuesLen]\n const yValues = Object.keys(data2[xValue])\n let yValuesLen = yValues.length\n while (yValuesLen--) {\n const yValue = yValues[yValuesLen]\n const value = data2[xValue][yValue]\n const radius = radi[xValue][yValue]\n renderData.push({\n x: xValue,\n y: yValue,\n value,\n radius,\n })\n }\n }\n\n return {\n min,\n max,\n data: renderData,\n }\n }\n\n renderPartial(data: any) {\n if (data.data.length > 0) {\n this._drawAlpha(data)\n this._colorize()\n }\n }\n\n renderAll(data: any) {\n this._clear()\n if (data.data.length > 0) {\n this._drawAlpha(this._prepareData(data))\n this._colorize()\n }\n }\n\n private _updateGradient(config: any) {\n this._palette = this._getColorPalette(config)\n }\n\n updateConfig(config: any) {\n if (config.gradient)\n this._updateGradient(config)\n\n this._setStyles(config)\n }\n\n setDimensions(width: number, height: number) {\n this._width = width\n this._height = height\n this.canvas.width = this.shadowCanvas.width = width\n this.canvas.height = this.shadowCanvas.height = height\n }\n\n private _clear() {\n this.shadowCtx.clearRect(0, 0, this._width, this._height)\n this.ctx.clearRect(0, 0, this._width, this._height)\n }\n\n private _setStyles(config: any) {\n this._blur = (config.blur === 0) ? 0 : (config.blur || config.defaultBlur)\n\n if (config.backgroundColor)\n this.canvas.style.backgroundColor = config.backgroundColor\n\n this._width = this.canvas.width = this.shadowCanvas.width = config.width || this._width\n this._height = this.canvas.height = this.shadowCanvas.height = config.height || this._height\n\n this._opacity = (config.opacity || 0) * 255\n this._maxOpacity = (config.maxOpacity || config.defaultMaxOpacity) * 255\n this._minOpacity = (config.minOpacity || config.defaultMinOpacity) * 255\n this._useGradientOpacity = !!config.useGradientOpacity\n }\n\n private _drawAlpha(data: any) {\n this._min = data.min\n this._max = data.max\n const data2 = data.data || []\n let dataLen = data2.length\n // on a point basis?\n const blur = 1 - this._blur\n\n while (dataLen--) {\n const point = data2[dataLen]\n\n const x = point.x\n const y = point.y\n const radius = point.radius\n // if value is bigger than max\n // use max as value\n const value = Math.min(point.value, this._max!)\n const rectX = x - radius\n const rectY = y - radius\n const shadowCtx = this.shadowCtx\n\n let tpl\n if (!this._templates[radius])\n this._templates[radius] = tpl = this._getPointTemplate(radius, blur)\n else\n tpl = this._templates[radius]\n\n // value from minimum / value range\n // => [0, 1]\n const templateAlpha = (value - this._min!) / (this._max! - this._min!)\n // this fixes #176: small values are not visible because globalAlpha < .01 cannot be read from imageData\n shadowCtx.globalAlpha = templateAlpha < 0.01 ? 0.01 : templateAlpha\n\n shadowCtx.drawImage(tpl, rectX, rectY)\n\n // update renderBoundaries\n if (rectX < this._renderBoundaries[0])\n this._renderBoundaries[0] = rectX\n\n if (rectY < this._renderBoundaries[1])\n this._renderBoundaries[1] = rectY\n\n if (rectX + 2 * radius > this._renderBoundaries[2])\n this._renderBoundaries[2] = rectX + 2 * radius\n\n if (rectY + 2 * radius > this._renderBoundaries[3])\n this._renderBoundaries[3] = rectY + 2 * radius\n }\n }\n\n private _colorize() {\n let x = this._renderBoundaries[0]\n let y = this._renderBoundaries[1]\n let width = this._renderBoundaries[2] - x\n let height = this._renderBoundaries[3] - y\n const maxWidth = this._width\n const maxHeight = this._height\n const opacity = this._opacity\n const maxOpacity = this._maxOpacity\n const minOpacity = this._minOpacity\n const useGradientOpacity = this._useGradientOpacity\n\n if (x < 0)\n x = 0\n\n if (y < 0)\n y = 0\n\n if (x + width > maxWidth)\n width = maxWidth - x\n\n if (y + height > maxHeight)\n height = maxHeight - y\n\n const img = this.shadowCtx.getImageData(x, y, width, height)\n const imgData = img.data\n const len = imgData.length\n const palette = this._palette\n\n for (let i = 3; i < len; i += 4) {\n const alpha = imgData[i]\n const offset = alpha * 4\n\n if (!offset)\n continue\n\n let finalAlpha\n if (opacity > 0) {\n finalAlpha = opacity\n }\n else {\n if (alpha < maxOpacity) {\n if (alpha < minOpacity)\n finalAlpha = minOpacity\n else\n finalAlpha = alpha\n }\n else {\n finalAlpha = maxOpacity\n }\n }\n\n imgData[i - 3] = palette[offset]\n imgData[i - 2] = palette[offset + 1]\n imgData[i - 1] = palette[offset + 2]\n imgData[i] = useGradientOpacity ? palette[offset + 3] : finalAlpha\n }\n\n // 创建新的ImageData对象\n const newImg = new ImageData(imgData, width, height)\n this.ctx.putImageData(newImg, x, y)\n\n this._renderBoundaries = [1000, 1000, 0, 0]\n }\n\n getValueAt(point: { x: number; y: number }) {\n const shadowCtx = this.shadowCtx\n const img = shadowCtx.getImageData(point.x, point.y, 1, 1)\n const data = img.data[3]\n const max = this._max\n const min = this._min\n\n const value = (Math.abs(max! - min!) * (data / 255)) >> 0\n return value\n }\n\n getDataURL() {\n return this.canvas.toDataURL()\n }\n}\n\nclass Coordinator {\n private cStore: { [key: string]: ((data: any) => void)[] }\n\n constructor() {\n this.cStore = {}\n }\n\n on(evtName: string, callback: (data: any) => void, scope?: any) {\n const cStore = this.cStore\n\n if (!cStore[evtName])\n cStore[evtName] = []\n\n cStore[evtName].push((data: any) => {\n return callback.call(scope, data)\n })\n }\n\n emit(evtName: string, data: any) {\n const cStore = this.cStore\n if (cStore[evtName]) {\n const len = cStore[evtName].length\n for (let i = 0; i < len; i++) {\n const callback = cStore[evtName][i]\n callback(data)\n }\n }\n }\n}\n\nclass Heatmap {\n private _config: any\n private _coordinator: Coordinator\n public _renderer: any\n private _store: Store\n\n constructor(config: any) {\n this._config = { ...HeatmapConfig, ...config }\n this._coordinator = new Coordinator()\n\n if (config.plugin) {\n const pluginToLoad = config.plugin\n if (!HeatmapConfig.plugins[pluginToLoad]) {\n throw new Error(`Plugin '${pluginToLoad}' not found. Maybe it was not registered.`)\n }\n else {\n const plugin = HeatmapConfig.plugins[pluginToLoad]\n // set plugin renderer and store\n const Renderer = plugin.renderer\n const Store = plugin.store\n this._renderer = new Renderer(config)\n this._store = new Store(config)\n }\n }\n else {\n this._renderer = new Canvas2dRenderer(config)\n this._store = new Store(config)\n }\n\n this._connect()\n }\n\n private _connect() {\n const renderer = this._renderer\n const coordinator = this._coordinator\n const store = this._store\n\n coordinator.on('renderpartial', renderer.renderPartial, renderer)\n coordinator.on('renderall', renderer.renderAll, renderer)\n coordinator.on('extremachange', (data: any) => {\n this._config.onExtremaChange\n && this._config.onExtremaChange({\n min: data.min,\n max: data.max,\n gradient: this._config.gradient || this._config.defaultGradient,\n })\n })\n store.setCoordinator(coordinator)\n }\n\n addData(...args: any[]) {\n if (args.length === 1)\n this._store.addData(args[0])\n else\n this._store.addData(...args as [any])\n\n return this\n }\n\n removeData(...args: any[]) {\n if (this._store.removeData)\n this._store.removeData()\n\n return this\n }\n\n setData(...args: any[]) {\n if (args.length === 1)\n this._store.setData(args[0])\n else\n this._store.setData(...args as [any])\n\n return this\n }\n\n setDataMax(...args: any[]) {\n if (args.length === 1)\n this._store.setDataMax(args[0])\n else\n this._store.setDataMax(...args as [any])\n\n return this\n }\n\n setDataMin(...args: any[]) {\n if (args.length === 1)\n this._store.setDataMin(args[0])\n else\n this._store.setDataMin(...args as [any])\n\n return this\n }\n\n configure(config: any) {\n this._config = { ...this._config, ...config }\n this._renderer.updateConfig(this._config)\n this._coordinator.emit('renderall', this._store.getInternalData())\n return this\n }\n\n repaint() {\n this._coordinator.emit('renderall', this._store.getInternalData())\n return this\n }\n\n getData() {\n return this._store.getData()\n }\n\n getDataURL() {\n return this._renderer.getDataURL()\n }\n\n getValueAt(point: { x: number; y: number }) {\n if (this._store.getValueAt)\n return this._store.getValueAt(point)\n else if (this._renderer.getValueAt)\n return this._renderer.getValueAt(point)\n else\n return null\n }\n}\n\nexport default {\n create(config: any) {\n return new Heatmap(config)\n },\n register(pluginKey: string, plugin: any) {\n HeatmapConfig.plugins[pluginKey] = plugin\n },\n}"],"mappings":"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"}
1
+ {"version":3,"names":["HeatmapConfig","defaultRadius","defaultRenderer","defaultGradient","defaultMaxOpacity","defaultMinOpacity","defaultBlur","defaultXField","defaultYField","defaultValueField","plugins","Store","config","_classCallCheck","_defineProperty","_xField","xField","_yField","yField","_valueField","valueField","radius","_cfgRadius","_createClass","key","value","_organiseData","dataPoint","forceRender","x","y","radi","_radi","store","_data","max","_max","min","_min","storedVal","setDataMax","setDataMin","_unOrganizeData","unorganizedData","data","push","_onExtremaChange","_coordinator","emit","addData","_len","arguments","length","args","Array","_key","dataArr","dataLen","organisedEntry","setData","dataPoints","pointsLen","i","getInternalData","removeData","setCoordinator","coordinator","getData","getValueAt","point","_renderer","shadowCtx","img","getImageData","Math","abs","Canvas2dRenderer","_width","_height","container","shadowCanvas","document","createElement","canvas","_renderBoundaries","computed","getComputedStyle","className","width","replace","height","getContext","ctx","style","cssText","position","appendChild","_palette","_getColorPalette","_templates","_setStyles","_config$gradient","gradientConfig","gradient","paletteCanvas","paletteCtx","createLinearGradient","addColorStop","fillStyle","fillRect","_getPointTemplate","blurFactor","tplCanvas","tplCtx","beginPath","arc","PI","fill","createRadialGradient","_prepareData","renderData","data2","xValues","Object","keys","xValuesLen","xValue","yValues","yValuesLen","yValue","renderPartial","_drawAlpha","_colorize","renderAll","_clear","_updateGradient","updateConfig","setDimensions","clearRect","_blur","blur","backgroundColor","_opacity","opacity","_maxOpacity","maxOpacity","_minOpacity","minOpacity","_useGradientOpacity","useGradientOpacity","rectX","rectY","tpl","templateAlpha","globalAlpha","drawImage","maxWidth","maxHeight","imgData","len","palette","alpha","offset","finalAlpha","newImg","ImageData","putImageData","getDataURL","toDataURL","Coordinator","cStore","on","evtName","callback","scope","call","Heatmap","_config","_objectSpread","plugin","pluginToLoad","Error","concat","Renderer","renderer","_store","_connect","_this","onExtremaChange","_this$_store","_len2","_key3","apply","_toConsumableArray","_this$_store2","_len3","_key4","_this$_store3","_len4","_key5","_this$_store4","_len5","_key6","configure","repaint","create","register","pluginKey"],"sources":["../../../src/business/HeatMap/core.ts"],"sourcesContent":["const HeatmapConfig = {\n defaultRadius: 40,\n defaultRenderer: 'canvas2d',\n defaultGradient: { 0.25: 'rgb(0,0,255)', 0.55: 'rgb(0,255,0)', 0.85: 'yellow', 1.0: 'rgb(255,0,0)' },\n defaultMaxOpacity: 1,\n defaultMinOpacity: 0,\n defaultBlur: 0.85,\n defaultXField: 'x',\n defaultYField: 'y',\n defaultValueField: 'value',\n plugins: {},\n}\n\ninterface IPoint {\n x: number\n y: number\n value: number\n radius: number\n min?: number\n max?: number\n}\n\ninterface IConfig {\n radius?: number\n xField?: string\n yField?: string\n valueField?: string\n defaultXField: string\n defaultYField: string\n defaultValueField: string\n}\n\nclass Store {\n private _coordinator: any = {}\n private _data: any[] = []\n private _radi: any[] = []\n private _min = 10\n private _max = 1\n private _xField: string\n private _yField: string\n private _valueField: string\n private _cfgRadius?: number\n\n constructor(config: IConfig) {\n this._xField = config.xField || config.defaultXField\n this._yField = config.yField || config.defaultYField\n this._valueField = config.valueField || config.defaultValueField\n\n if (config.radius)\n this._cfgRadius = config.radius\n }\n\n private _organiseData(dataPoint: any, forceRender: boolean): false | IPoint {\n const x = dataPoint[this._xField]\n const y = dataPoint[this._yField]\n const radi = this._radi\n const store = this._data\n const max = this._max\n const min = this._min\n const value = dataPoint[this._valueField] || 1\n const radius = dataPoint.radius || this._cfgRadius || HeatmapConfig.defaultRadius\n\n if (!store[x]) {\n store[x] = []\n radi[x] = []\n }\n\n if (!store[x][y]) {\n store[x][y] = value\n radi[x][y] = radius\n }\n else {\n store[x][y] += value\n }\n const storedVal = store[x][y]\n\n if (storedVal > max) {\n if (!forceRender)\n this._max = storedVal\n else\n this.setDataMax(storedVal)\n\n return false\n }\n else if (storedVal < min) {\n if (!forceRender)\n this._min = storedVal\n else\n this.setDataMin(storedVal)\n\n return false\n }\n else {\n return {\n x,\n y,\n value,\n radius,\n min,\n max,\n }\n }\n }\n\n private _unOrganizeData() {\n const unorganizedData = []\n const data = this._data\n const radi = this._radi\n\n for (const x in data) {\n for (const y in data[x]) {\n unorganizedData.push({\n x,\n y,\n radius: radi[x][y],\n value: data[x][y],\n })\n }\n }\n return {\n min: this._min,\n max: this._max,\n data: unorganizedData,\n }\n }\n\n private _onExtremaChange() {\n this._coordinator.emit('extremachange', {\n min: this._min,\n max: this._max,\n })\n }\n\n addData(...args: any[]) {\n if (args[0].length > 0) {\n const dataArr = args[0]\n let dataLen = dataArr.length\n while (dataLen--)\n this.addData(dataArr[dataLen])\n }\n else {\n // add to store\n const organisedEntry = this._organiseData(args[0], true)\n if (organisedEntry) {\n // if it's the first datapoint initialize the extremas with it\n if (this._data.length === 0)\n this._min = this._max = organisedEntry.value\n\n this._coordinator.emit('renderpartial', {\n min: this._min,\n max: this._max,\n data: [organisedEntry],\n })\n }\n }\n return this\n }\n\n setData(data: any) {\n const dataPoints = data.data\n const pointsLen = dataPoints.length\n\n // reset data arrays\n this._data = []\n this._radi = []\n\n for (let i = 0; i < pointsLen; i++)\n this._organiseData(dataPoints[i], false)\n\n this._max = data.max\n this._min = data.min || 0\n\n this._onExtremaChange()\n this._coordinator.emit('renderall', this.getInternalData())\n return this\n }\n\n removeData() {\n // TODO: implement\n }\n\n setDataMax(max: number) {\n this._max = max\n this._onExtremaChange()\n this._coordinator.emit('renderall', this.getInternalData())\n return this\n }\n\n setDataMin(min: number) {\n this._min = min\n this._onExtremaChange()\n this._coordinator.emit('renderall', this.getInternalData())\n return this\n }\n\n setCoordinator(coordinator: any) {\n this._coordinator = coordinator\n }\n\n getInternalData() {\n return {\n max: this._max,\n min: this._min,\n data: this._data,\n radi: this._radi,\n }\n }\n\n getData() {\n return this._unOrganizeData()\n }\n\n getValueAt(point: { x: number; y: number }) {\n const shadowCtx = (this as any)._renderer?.shadowCtx\n if (!shadowCtx)\n return null\n\n const img = shadowCtx.getImageData(point.x, point.y, 1, 1)\n const data = img.data[3]\n const max = this._max\n const min = this._min\n\n const value = (Math.abs(max! - min!) * (data / 255)) >> 0\n return value\n }\n}\n\nclass Canvas2dRenderer {\n private shadowCanvas: HTMLCanvasElement\n private canvas: HTMLCanvasElement\n private _renderBoundaries: number[]\n private _width: number\n private _height: number\n private shadowCtx: CanvasRenderingContext2D\n private ctx: CanvasRenderingContext2D\n private _palette: Uint8ClampedArray\n private _templates: { [key: string]: HTMLCanvasElement }\n private _blur: number\n private _opacity: number\n private _maxOpacity: number\n private _minOpacity: number\n private _useGradientOpacity: boolean\n private _min?: number\n private _max?: number\n\n constructor(config: any) {\n const container = config.container\n this.shadowCanvas = document.createElement('canvas')\n this.canvas = config.canvas || document.createElement('canvas')\n this._renderBoundaries = [10000, 10000, 0, 0]\n\n const computed = getComputedStyle(config.container) || {}\n\n this.canvas.className = 'heatmap-canvas'\n\n this._width = this.canvas.width = this.shadowCanvas.width = config.width || +(computed as any).width?.replace(/px/, '') || 0\n this._height = this.canvas.height = this.shadowCanvas.height = config.height || +(computed as any).height?.replace(/px/, '') || 0\n\n this.shadowCtx = this.shadowCanvas.getContext('2d')!\n this.ctx = this.canvas.getContext('2d')!\n\n this.canvas.style.cssText = this.shadowCanvas.style.cssText = 'position:absolute;left:0;top:0;'\n\n container.style.position = 'relative'\n container.appendChild(this.canvas)\n\n this._palette = this._getColorPalette(config)\n this._templates = {}\n\n this._setStyles(config)\n }\n\n private _getColorPalette(config: any) {\n const gradientConfig = config.gradient ?? config.defaultGradient\n const paletteCanvas = document.createElement('canvas')\n const paletteCtx = paletteCanvas.getContext('2d')!\n\n paletteCanvas.width = 256\n paletteCanvas.height = 1\n\n const gradient = paletteCtx.createLinearGradient(0, 0, 256, 1)\n for (const key in gradientConfig)\n gradient.addColorStop(+key, gradientConfig[key])\n\n paletteCtx.fillStyle = gradient\n paletteCtx.fillRect(0, 0, 256, 1)\n\n return paletteCtx.getImageData(0, 0, 256, 1).data\n }\n\n private _getPointTemplate(radius: number, blurFactor: number) {\n const tplCanvas = document.createElement('canvas')\n const tplCtx = tplCanvas.getContext('2d')!\n const x = radius\n const y = radius\n tplCanvas.width = tplCanvas.height = radius * 2\n\n if (blurFactor === 1) {\n tplCtx.beginPath()\n tplCtx.arc(x, y, radius, 0, 2 * Math.PI, false)\n tplCtx.fillStyle = 'rgba(0,0,0,1)'\n tplCtx.fill()\n }\n else {\n const gradient = tplCtx.createRadialGradient(x, y, radius * blurFactor, x, y, radius)\n gradient.addColorStop(0, 'rgba(0,0,0,1)')\n gradient.addColorStop(1, 'rgba(0,0,0,0)')\n tplCtx.fillStyle = gradient\n tplCtx.fillRect(0, 0, 2 * radius, 2 * radius)\n }\n\n return tplCanvas\n }\n\n private _prepareData(data: any) {\n const renderData = []\n const min = data.min\n const max = data.max\n const radi = data.radi\n const data2 = data.data\n\n const xValues = Object.keys(data2)\n let xValuesLen = xValues.length\n\n while (xValuesLen--) {\n const xValue = xValues[xValuesLen]\n const yValues = Object.keys(data2[xValue])\n let yValuesLen = yValues.length\n while (yValuesLen--) {\n const yValue = yValues[yValuesLen]\n const value = data2[xValue][yValue]\n const radius = radi[xValue][yValue]\n renderData.push({\n x: xValue,\n y: yValue,\n value,\n radius,\n })\n }\n }\n\n return {\n min,\n max,\n data: renderData,\n }\n }\n\n renderPartial(data: any) {\n if (data.data.length > 0) {\n this._drawAlpha(data)\n this._colorize()\n }\n }\n\n renderAll(data: any) {\n this._clear()\n if (data.data.length > 0) {\n this._drawAlpha(this._prepareData(data))\n this._colorize()\n }\n }\n\n private _updateGradient(config: any) {\n this._palette = this._getColorPalette(config)\n }\n\n updateConfig(config: any) {\n if (config.gradient)\n this._updateGradient(config)\n\n this._setStyles(config)\n }\n\n setDimensions(width: number, height: number) {\n this._width = width\n this._height = height\n this.canvas.width = this.shadowCanvas.width = width\n this.canvas.height = this.shadowCanvas.height = height\n }\n\n private _clear() {\n this.shadowCtx.clearRect(0, 0, this._width, this._height)\n this.ctx.clearRect(0, 0, this._width, this._height)\n }\n\n private _setStyles(config: any) {\n this._blur = (config.blur === 0) ? 0 : (config.blur || config.defaultBlur)\n\n if (config.backgroundColor)\n this.canvas.style.backgroundColor = config.backgroundColor\n\n this._width = this.canvas.width = this.shadowCanvas.width = config.width || this._width\n this._height = this.canvas.height = this.shadowCanvas.height = config.height || this._height\n\n this._opacity = (config.opacity || 0) * 255\n this._maxOpacity = (config.maxOpacity || config.defaultMaxOpacity) * 255\n this._minOpacity = (config.minOpacity || config.defaultMinOpacity) * 255\n this._useGradientOpacity = !!config.useGradientOpacity\n }\n\n private _drawAlpha(data: any) {\n this._min = data.min\n this._max = data.max\n const data2 = data.data || []\n let dataLen = data2.length\n // on a point basis?\n const blur = 1 - this._blur\n\n while (dataLen--) {\n const point = data2[dataLen]\n\n const x = point.x\n const y = point.y\n const radius = point.radius\n // if value is bigger than max\n // use max as value\n const value = Math.min(point.value, this._max!)\n const rectX = x - radius\n const rectY = y - radius\n const shadowCtx = this.shadowCtx\n\n let tpl\n if (!this._templates[radius])\n this._templates[radius] = tpl = this._getPointTemplate(radius, blur)\n else\n tpl = this._templates[radius]\n\n // value from minimum / value range\n // => [0, 1]\n const templateAlpha = (value - this._min!) / (this._max! - this._min!)\n // this fixes #176: small values are not visible because globalAlpha < .01 cannot be read from imageData\n shadowCtx.globalAlpha = templateAlpha < 0.01 ? 0.01 : templateAlpha\n\n shadowCtx.drawImage(tpl, rectX, rectY)\n\n // update renderBoundaries\n if (rectX < this._renderBoundaries[0])\n this._renderBoundaries[0] = rectX\n\n if (rectY < this._renderBoundaries[1])\n this._renderBoundaries[1] = rectY\n\n if (rectX + 2 * radius > this._renderBoundaries[2])\n this._renderBoundaries[2] = rectX + 2 * radius\n\n if (rectY + 2 * radius > this._renderBoundaries[3])\n this._renderBoundaries[3] = rectY + 2 * radius\n }\n }\n\n private _colorize() {\n let x = this._renderBoundaries[0]\n let y = this._renderBoundaries[1]\n let width = this._renderBoundaries[2] - x\n let height = this._renderBoundaries[3] - y\n const maxWidth = this._width\n const maxHeight = this._height\n const opacity = this._opacity\n const maxOpacity = this._maxOpacity\n const minOpacity = this._minOpacity\n const useGradientOpacity = this._useGradientOpacity\n\n if (x < 0)\n x = 0\n\n if (y < 0)\n y = 0\n\n if (x + width > maxWidth)\n width = maxWidth - x\n\n if (y + height > maxHeight)\n height = maxHeight - y\n\n const img = this.shadowCtx.getImageData(x, y, width, height)\n const imgData = img.data\n const len = imgData.length\n const palette = this._palette\n\n for (let i = 3; i < len; i += 4) {\n const alpha = imgData[i]\n const offset = alpha * 4\n\n if (!offset)\n continue\n\n let finalAlpha\n if (opacity > 0) {\n finalAlpha = opacity\n }\n else {\n if (alpha < maxOpacity) {\n if (alpha < minOpacity)\n finalAlpha = minOpacity\n else\n finalAlpha = alpha\n }\n else {\n finalAlpha = maxOpacity\n }\n }\n\n imgData[i - 3] = palette[offset]\n imgData[i - 2] = palette[offset + 1]\n imgData[i - 1] = palette[offset + 2]\n imgData[i] = useGradientOpacity ? palette[offset + 3] : finalAlpha\n }\n\n // 创建新的ImageData对象\n const newImg = new ImageData(imgData, width, height)\n this.ctx.putImageData(newImg, x, y)\n\n this._renderBoundaries = [1000, 1000, 0, 0]\n }\n\n getValueAt(point: { x: number; y: number }) {\n const shadowCtx = this.shadowCtx\n const img = shadowCtx.getImageData(point.x, point.y, 1, 1)\n const data = img.data[3]\n const max = this._max\n const min = this._min\n\n const value = (Math.abs(max! - min!) * (data / 255)) >> 0\n return value\n }\n\n getDataURL() {\n return this.canvas.toDataURL()\n }\n}\n\nclass Coordinator {\n private cStore: { [key: string]: ((data: any) => void)[] }\n\n constructor() {\n this.cStore = {}\n }\n\n on(evtName: string, callback: (data: any) => void, scope?: any) {\n const cStore = this.cStore\n\n if (!cStore[evtName])\n cStore[evtName] = []\n\n cStore[evtName].push((data: any) => {\n return callback.call(scope, data)\n })\n }\n\n emit(evtName: string, data: any) {\n const cStore = this.cStore\n if (cStore[evtName]) {\n const len = cStore[evtName].length\n for (let i = 0; i < len; i++) {\n const callback = cStore[evtName][i]\n callback(data)\n }\n }\n }\n}\n\nclass Heatmap {\n private _config: any\n private _coordinator: Coordinator\n public _renderer: any\n private _store: Store\n\n constructor(config: any) {\n this._config = { ...HeatmapConfig, ...config }\n this._coordinator = new Coordinator()\n\n if (config.plugin) {\n const pluginToLoad = config.plugin\n if (!HeatmapConfig.plugins[pluginToLoad]) {\n throw new Error(`Plugin '${pluginToLoad}' not found. Maybe it was not registered.`)\n }\n else {\n const plugin = HeatmapConfig.plugins[pluginToLoad]\n // set plugin renderer and store\n const Renderer = plugin.renderer\n const Store = plugin.store\n this._renderer = new Renderer(config)\n this._store = new Store(config)\n }\n }\n else {\n this._renderer = new Canvas2dRenderer(config)\n this._store = new Store(config)\n }\n\n this._connect()\n }\n\n private _connect() {\n const renderer = this._renderer\n const coordinator = this._coordinator\n const store = this._store\n\n coordinator.on('renderpartial', renderer.renderPartial, renderer)\n coordinator.on('renderall', renderer.renderAll, renderer)\n coordinator.on('extremachange', (data: any) => {\n this._config.onExtremaChange\n && this._config.onExtremaChange({\n min: data.min,\n max: data.max,\n gradient: this._config.gradient || this._config.defaultGradient,\n })\n })\n store.setCoordinator(coordinator)\n }\n\n addData(...args: any[]) {\n if (args.length === 1)\n this._store.addData(args[0])\n else\n this._store.addData(...args as [any])\n\n return this\n }\n\n removeData(...args: any[]) {\n if (this._store.removeData)\n this._store.removeData()\n\n return this\n }\n\n setData(...args: any[]) {\n if (args.length === 1)\n this._store.setData(args[0])\n else\n this._store.setData(...args as [any])\n\n return this\n }\n\n setDataMax(...args: any[]) {\n if (args.length === 1)\n this._store.setDataMax(args[0])\n else\n this._store.setDataMax(...args as [any])\n\n return this\n }\n\n setDataMin(...args: any[]) {\n if (args.length === 1)\n this._store.setDataMin(args[0])\n else\n this._store.setDataMin(...args as [any])\n\n return this\n }\n\n configure(config: any) {\n this._config = { ...this._config, ...config }\n this._renderer.updateConfig(this._config)\n this._coordinator.emit('renderall', this._store.getInternalData())\n return this\n }\n\n repaint() {\n this._coordinator.emit('renderall', this._store.getInternalData())\n return this\n }\n\n getData() {\n return this._store.getData()\n }\n\n getDataURL() {\n return this._renderer.getDataURL()\n }\n\n getValueAt(point: { x: number; y: number }) {\n if (this._store.getValueAt)\n return this._store.getValueAt(point)\n else if (this._renderer.getValueAt)\n return this._renderer.getValueAt(point)\n else\n return null\n }\n}\n\nexport default {\n create(config: any) {\n return new Heatmap(config)\n },\n register(pluginKey: string, plugin: any) {\n HeatmapConfig.plugins[pluginKey] = plugin\n },\n}"],"mappings":"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"}
@@ -1,70 +1,4 @@
1
- export const heightVertexShader = /* glsl */`
2
- varying vec2 vUv;
3
- varying vec3 vWorldPosition;
4
- uniform float uHeight;
5
- uniform sampler2D map;
6
-
7
- void main() {
8
- vUv = uv;
9
- vec4 worldPosition = modelMatrix * vec4(position, 1.0);
10
- vWorldPosition = worldPosition.xyz;
11
- float h = texture2D(map, vUv).a * uHeight;
12
- // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);
13
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, position.z, 1.0);
14
- }
15
- `;
16
- const pixelGraphFunc = /* glsl */`
17
- vec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {
18
- vec2 pixelSize = vec2(1.0) / granularity;
19
- vec2 cell = floor(vUv / pixelSize);
20
- vec2 cellUv = fract(vUv / pixelSize);
21
-
22
- vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);
23
-
24
- vec2 pointCenter = vec2(0.5, 0.5);
25
- vec2 rotatedUv = cellUv - pointCenter;
26
- vec2 rotated = vec2(
27
- (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,
28
- (rotatedUv.x + rotatedUv.y) * 0.7071067811865476
29
- );
30
-
31
- float dist = abs(rotated.x) + abs(rotated.y);
32
-
33
- float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;
34
- float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);
35
-
36
- if (dist > pointSize || intensity < 0.05) {
37
- discard;
38
- }
39
-
40
- return texColor;
41
- }
42
- `;
43
- export const heightFragmentShader = /* glsl */`
44
- uniform sampler2D map;
45
- uniform float granularity;
46
- uniform float threshold;
47
- uniform vec2 uRange;
48
- varying vec2 vUv;
49
- varying vec3 vWorldPosition;
50
- uniform float uOpacity;
51
- uniform bool isPixel;
52
-
53
- ${pixelGraphFunc}
54
-
55
- void main() {
56
- vec4 texColor = isPixel ?
57
- createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) :
58
- texture2D(map, vUv);
59
-
60
- float a = texColor.a * uOpacity;
61
- gl_FragColor = texColor;
62
- gl_FragColor.a = min(a, 1.0);
63
-
64
- // if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y ||
65
- // vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {
66
- // discard;
67
- // }
68
- }
69
- `;
1
+ export var heightVertexShader = /* glsl */"\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, position.z, 1.0);\n }\n";
2
+ var pixelGraphFunc = /* glsl */"\nvec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {\n vec2 pixelSize = vec2(1.0) / granularity;\n vec2 cell = floor(vUv / pixelSize);\n vec2 cellUv = fract(vUv / pixelSize);\n\n vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);\n\n vec2 pointCenter = vec2(0.5, 0.5);\n vec2 rotatedUv = cellUv - pointCenter;\n vec2 rotated = vec2(\n (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,\n (rotatedUv.x + rotatedUv.y) * 0.7071067811865476\n );\n\n float dist = abs(rotated.x) + abs(rotated.y);\n\n float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;\n float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);\n\n if (dist > pointSize || intensity < 0.05) {\n discard;\n }\n\n return texColor;\n}\n";
3
+ export var heightFragmentShader = /* glsl */"\n uniform sampler2D map;\n uniform float granularity;\n uniform float threshold;\n uniform vec2 uRange;\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uOpacity;\n uniform bool isPixel;\n\n ".concat(pixelGraphFunc, "\n\n void main() {\n vec4 texColor = isPixel ? \n createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) : \n texture2D(map, vUv);\n \n float a = texColor.a * uOpacity;\n gl_FragColor = texColor;\n gl_FragColor.a = min(a, 1.0); \n\n // if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y || \n // vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {\n // discard;\n // }\n }\n");
70
4
  //# sourceMappingURL=shader.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["heightVertexShader","pixelGraphFunc","heightFragmentShader"],"sources":["../../../src/business/HeatMap/shader.ts"],"sourcesContent":["export const heightVertexShader = /* glsl */ `\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, position.z, 1.0);\n }\n`\n\nconst pixelGraphFunc = /* glsl */ `\nvec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {\n vec2 pixelSize = vec2(1.0) / granularity;\n vec2 cell = floor(vUv / pixelSize);\n vec2 cellUv = fract(vUv / pixelSize);\n\n vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);\n\n vec2 pointCenter = vec2(0.5, 0.5);\n vec2 rotatedUv = cellUv - pointCenter;\n vec2 rotated = vec2(\n (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,\n (rotatedUv.x + rotatedUv.y) * 0.7071067811865476\n );\n\n float dist = abs(rotated.x) + abs(rotated.y);\n\n float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;\n float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);\n\n if (dist > pointSize || intensity < 0.05) {\n discard;\n }\n\n return texColor;\n}\n`\n\nexport const heightFragmentShader = /* glsl */ `\n uniform sampler2D map;\n uniform float granularity;\n uniform float threshold;\n uniform vec2 uRange;\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uOpacity;\n uniform bool isPixel;\n\n ${pixelGraphFunc}\n\n void main() {\n vec4 texColor = isPixel ? \n createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) : \n texture2D(map, vUv);\n \n float a = texColor.a * uOpacity;\n gl_FragColor = texColor;\n gl_FragColor.a = min(a, 1.0); \n\n // if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y || \n // vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {\n // discard;\n // }\n }\n`\n"],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,GAAG,UAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,cAAc,GAAG,UAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAG,UAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAID,cAAe;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC"}
1
+ {"version":3,"names":["heightVertexShader","pixelGraphFunc","heightFragmentShader","concat"],"sources":["../../../src/business/HeatMap/shader.ts"],"sourcesContent":["export const heightVertexShader = /* glsl */ `\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uHeight;\n uniform sampler2D map;\n\n void main() {\n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vWorldPosition = worldPosition.xyz;\n float h = texture2D(map, vUv).a * uHeight;\n // gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition.x, worldPosition.y, h, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x, position.y, position.z, 1.0);\n }\n`\n\nconst pixelGraphFunc = /* glsl */ `\nvec4 createPixelGraphEffect(sampler2D map, vec2 vUv, float granularity, float threshold, vec2 range, vec3 worldPos) {\n vec2 pixelSize = vec2(1.0) / granularity;\n vec2 cell = floor(vUv / pixelSize);\n vec2 cellUv = fract(vUv / pixelSize);\n\n vec4 texColor = texture2D(map, (cell + 0.5) * pixelSize);\n\n vec2 pointCenter = vec2(0.5, 0.5);\n vec2 rotatedUv = cellUv - pointCenter;\n vec2 rotated = vec2(\n (rotatedUv.x - rotatedUv.y) * 0.7071067811865476,\n (rotatedUv.x + rotatedUv.y) * 0.7071067811865476\n );\n\n float dist = abs(rotated.x) + abs(rotated.y);\n\n float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;\n float pointSize = 0.3 * smoothstep(0.0, threshold, intensity);\n\n if (dist > pointSize || intensity < 0.05) {\n discard;\n }\n\n return texColor;\n}\n`\n\nexport const heightFragmentShader = /* glsl */ `\n uniform sampler2D map;\n uniform float granularity;\n uniform float threshold;\n uniform vec2 uRange;\n varying vec2 vUv;\n varying vec3 vWorldPosition;\n uniform float uOpacity;\n uniform bool isPixel;\n\n ${pixelGraphFunc}\n\n void main() {\n vec4 texColor = isPixel ? \n createPixelGraphEffect(map, vUv, granularity, threshold, uRange, vWorldPosition) : \n texture2D(map, vUv);\n \n float a = texColor.a * uOpacity;\n gl_FragColor = texColor;\n gl_FragColor.a = min(a, 1.0); \n\n // if(vWorldPosition.x < uRange.x || vWorldPosition.x > uRange.y || \n // vWorldPosition.z < uRange.x || vWorldPosition.z > uRange.y) {\n // discard;\n // }\n }\n`\n"],"mappings":"AAAA,OAAO,IAAMA,kBAAkB,GAAG,kgBAcjC;AAED,IAAMC,cAAc,GAAG,u1BA0BtB;AAED,OAAO,IAAMC,oBAAoB,GAAG,wOAAAC,MAAA,CAUhCF,cAAc,ofAgBjB"}