@carto/kepler.gl 0.0.81 → 0.0.82

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 (1747) hide show
  1. package/dist/actions/action-wrapper.d.ts +115 -0
  2. package/dist/actions/action-wrapper.js +5 -5
  3. package/dist/actions/actions.d.ts +195 -0
  4. package/dist/actions/actions.js +20 -15
  5. package/dist/actions/identity-actions.d.ts +61 -0
  6. package/dist/actions/identity-actions.js +15 -10
  7. package/dist/actions/index.d.ts +9 -0
  8. package/dist/actions/index.js +1 -1
  9. package/dist/actions/map-state-actions.d.ts +69 -0
  10. package/dist/actions/map-state-actions.js +15 -12
  11. package/dist/actions/map-style-actions.d.ts +146 -0
  12. package/dist/actions/map-style-actions.js +53 -29
  13. package/dist/actions/provider-actions.d.ts +153 -0
  14. package/dist/actions/provider-actions.js +73 -42
  15. package/dist/actions/ui-state-actions.d.ts +300 -0
  16. package/dist/actions/ui-state-actions.js +135 -67
  17. package/dist/actions/vis-state-actions.d.ts +821 -0
  18. package/dist/actions/vis-state-actions.js +26 -111
  19. package/dist/cloud-providers/index.d.ts +2 -0
  20. package/dist/cloud-providers/index.js +2 -2
  21. package/dist/cloud-providers/provider.d.ts +176 -0
  22. package/dist/cloud-providers/provider.js +15 -16
  23. package/dist/components/bottom-widget.d.ts +47 -0
  24. package/dist/components/bottom-widget.js +10 -7
  25. package/dist/components/common/action-panel.d.ts +27 -0
  26. package/dist/components/common/action-panel.js +5 -7
  27. package/dist/components/common/animation-control/animation-control.d.ts +24 -0
  28. package/dist/components/common/animation-control/animation-control.js +7 -6
  29. package/dist/components/common/animation-control/animation-controller.d.ts +16 -0
  30. package/dist/components/common/animation-control/animation-controller.js +51 -31
  31. package/dist/components/common/animation-control/animation-speed-slider.d.ts +12 -0
  32. package/dist/components/common/animation-control/animation-speed-slider.js +6 -9
  33. package/dist/components/common/animation-control/floating-time-display.d.ts +9 -0
  34. package/dist/components/common/animation-control/floating-time-display.js +7 -4
  35. package/dist/components/common/animation-control/playback-controls.d.ts +72 -0
  36. package/dist/components/common/animation-control/playback-controls.js +4 -5
  37. package/dist/components/common/animation-control/speed-control.d.ts +13 -0
  38. package/dist/components/common/animation-control/speed-control.js +1 -1
  39. package/dist/components/common/checkbox.d.ts +35 -0
  40. package/dist/components/common/checkbox.js +10 -27
  41. package/dist/components/common/color-legend.d.ts +43 -0
  42. package/dist/components/common/color-legend.js +11 -23
  43. package/dist/components/common/data-table/button.d.ts +8 -0
  44. package/dist/components/common/data-table/button.js +2 -2
  45. package/dist/components/common/data-table/canvas.d.ts +2 -0
  46. package/dist/components/common/data-table/canvas.js +1 -1
  47. package/dist/components/common/data-table/cell-size.d.ts +36 -0
  48. package/dist/components/common/data-table/cell-size.js +1 -1
  49. package/dist/components/common/data-table/grid.d.ts +7 -0
  50. package/dist/components/common/data-table/grid.js +18 -11
  51. package/dist/components/common/data-table/index.d.ts +143 -0
  52. package/dist/components/common/data-table/index.js +44 -47
  53. package/dist/components/common/data-table/option-dropdown.d.ts +14 -0
  54. package/dist/components/common/data-table/option-dropdown.js +2 -2
  55. package/dist/components/common/dataset-label.d.ts +10 -0
  56. package/dist/components/common/dataset-label.js +3 -3
  57. package/dist/components/common/error-boundary.d.ts +16 -0
  58. package/dist/components/common/error-boundary.js +4 -6
  59. package/dist/components/common/field-selector.d.ts +47 -0
  60. package/dist/components/common/field-selector.js +14 -48
  61. package/dist/components/common/field-token.d.ts +45 -0
  62. package/dist/components/common/field-token.js +2 -2
  63. package/dist/components/common/file-uploader/file-drop.d.ts +54 -0
  64. package/dist/components/common/file-uploader/file-drop.js +22 -21
  65. package/dist/components/common/file-uploader/file-upload-progress.d.ts +8 -0
  66. package/dist/components/common/file-uploader/file-upload-progress.js +7 -8
  67. package/dist/components/common/file-uploader/file-upload.d.ts +27 -0
  68. package/dist/components/common/file-uploader/file-upload.js +12 -14
  69. package/dist/components/common/file-uploader/upload-button.d.ts +8 -0
  70. package/dist/components/common/file-uploader/upload-button.js +37 -61
  71. package/dist/components/common/histogram-plot.d.ts +3 -0
  72. package/dist/components/common/histogram-plot.js +10 -5
  73. package/dist/components/common/icons/add.d.ts +9 -0
  74. package/dist/components/common/icons/add.js +4 -10
  75. package/dist/components/common/icons/anchor_window.d.ts +11 -0
  76. package/dist/components/common/icons/anchor_window.js +1 -6
  77. package/dist/components/common/icons/arrow-down-alt.d.ts +9 -0
  78. package/dist/components/common/icons/arrow-down-alt.js +4 -10
  79. package/dist/components/common/icons/arrow-down-solid.d.ts +9 -0
  80. package/dist/components/common/icons/arrow-down-solid.js +58 -0
  81. package/dist/components/common/icons/arrow-down.d.ts +9 -0
  82. package/dist/components/common/icons/arrow-down.js +4 -10
  83. package/dist/components/common/icons/arrow-left.d.ts +9 -0
  84. package/dist/components/common/icons/arrow-left.js +4 -10
  85. package/dist/components/common/icons/arrow-right.d.ts +9 -0
  86. package/dist/components/common/icons/arrow-right.js +4 -10
  87. package/dist/components/common/icons/arrow-up-alt.d.ts +9 -0
  88. package/dist/components/common/icons/arrow-up-alt.js +4 -10
  89. package/dist/components/common/icons/arrow-up-solid.d.ts +9 -0
  90. package/dist/components/common/icons/arrow-up-solid.js +4 -10
  91. package/dist/components/common/icons/arrow-up.d.ts +9 -0
  92. package/dist/components/common/icons/arrow-up.js +4 -10
  93. package/dist/components/common/icons/base.d.ts +29 -0
  94. package/dist/components/common/icons/base.js +7 -19
  95. package/dist/components/common/icons/bug.d.ts +9 -0
  96. package/dist/components/common/icons/bug.js +4 -10
  97. package/dist/components/common/icons/cancel.d.ts +9 -0
  98. package/dist/components/common/icons/cancel.js +4 -10
  99. package/dist/components/common/icons/checkmark.d.ts +10 -0
  100. package/dist/components/common/icons/checkmark.js +4 -10
  101. package/dist/components/common/icons/chevron-right.js +5 -6
  102. package/dist/components/common/icons/clipboard.d.ts +9 -0
  103. package/dist/components/common/icons/clipboard.js +4 -10
  104. package/dist/components/common/icons/clock.d.ts +9 -0
  105. package/dist/components/common/icons/clock.js +4 -10
  106. package/dist/components/common/icons/close.d.ts +9 -0
  107. package/dist/components/common/icons/close.js +4 -10
  108. package/dist/components/common/icons/code-alt.d.ts +9 -0
  109. package/dist/components/common/icons/code-alt.js +4 -10
  110. package/dist/components/common/icons/copy.d.ts +9 -0
  111. package/dist/components/common/icons/copy.js +4 -10
  112. package/dist/components/common/icons/crosshairs.d.ts +9 -0
  113. package/dist/components/common/icons/crosshairs.js +4 -10
  114. package/dist/components/common/icons/cube-3d.d.ts +9 -0
  115. package/dist/components/common/icons/cube-3d.js +4 -10
  116. package/dist/components/common/icons/cursor-click.d.ts +9 -0
  117. package/dist/components/common/icons/cursor-click.js +4 -10
  118. package/dist/components/common/icons/data-table.d.ts +10 -0
  119. package/dist/components/common/icons/data-table.js +4 -10
  120. package/dist/components/common/icons/db.d.ts +10 -0
  121. package/dist/components/common/icons/db.js +4 -10
  122. package/dist/components/common/icons/delete.d.ts +9 -0
  123. package/dist/components/common/icons/delete.js +4 -9
  124. package/dist/components/common/icons/docs.d.ts +9 -0
  125. package/dist/components/common/icons/docs.js +4 -10
  126. package/dist/components/common/icons/drag-n-drop.d.ts +9 -0
  127. package/dist/components/common/icons/drag-n-drop.js +4 -10
  128. package/dist/components/common/icons/draw-polygon.d.ts +10 -0
  129. package/dist/components/common/icons/draw-polygon.js +4 -13
  130. package/dist/components/common/icons/email.d.ts +9 -0
  131. package/dist/components/common/icons/email.js +4 -10
  132. package/dist/components/common/icons/expand.d.ts +9 -0
  133. package/dist/components/common/icons/expand.js +4 -10
  134. package/dist/components/common/icons/eye-seen.d.ts +9 -0
  135. package/dist/components/common/icons/eye-seen.js +4 -10
  136. package/dist/components/common/icons/eye-unseen.d.ts +9 -0
  137. package/dist/components/common/icons/eye-unseen.js +4 -10
  138. package/dist/components/common/icons/file-type.d.ts +8 -0
  139. package/dist/components/common/icons/file-type.js +1 -1
  140. package/dist/components/common/icons/file.d.ts +9 -0
  141. package/dist/components/common/icons/file.js +4 -10
  142. package/dist/components/common/icons/files.d.ts +9 -0
  143. package/dist/components/common/icons/files.js +3 -9
  144. package/dist/components/common/icons/filter-funnel.d.ts +9 -0
  145. package/dist/components/common/icons/filter-funnel.js +4 -10
  146. package/dist/components/common/icons/free-window.d.ts +11 -0
  147. package/dist/components/common/icons/free-window.js +1 -6
  148. package/dist/components/common/icons/gear.d.ts +9 -0
  149. package/dist/components/common/icons/gear.js +4 -10
  150. package/dist/components/common/icons/hash.d.ts +9 -0
  151. package/dist/components/common/icons/hash.js +4 -10
  152. package/dist/components/common/icons/histogram.d.ts +9 -0
  153. package/dist/components/common/icons/histogram.js +3 -8
  154. package/dist/components/common/icons/index.d.ts +78 -0
  155. package/dist/components/common/icons/index.js +15 -1
  156. package/dist/components/common/icons/info.d.ts +12 -0
  157. package/dist/components/common/icons/info.js +4 -10
  158. package/dist/components/common/icons/layers.d.ts +9 -0
  159. package/dist/components/common/icons/layers.js +4 -10
  160. package/dist/components/common/icons/left-arrow.d.ts +9 -0
  161. package/dist/components/common/icons/left-arrow.js +4 -10
  162. package/dist/components/common/icons/legend.d.ts +9 -0
  163. package/dist/components/common/icons/legend.js +4 -10
  164. package/dist/components/common/icons/line-chart.d.ts +9 -0
  165. package/dist/components/common/icons/line-chart.js +4 -9
  166. package/dist/components/common/icons/login.d.ts +9 -0
  167. package/dist/components/common/icons/login.js +4 -9
  168. package/dist/components/common/icons/logout.d.ts +9 -0
  169. package/dist/components/common/icons/logout.js +4 -9
  170. package/dist/components/common/icons/map-icon.d.ts +11 -0
  171. package/dist/components/common/icons/map-icon.js +4 -11
  172. package/dist/components/common/icons/map.d.ts +11 -0
  173. package/dist/components/common/icons/map.js +4 -11
  174. package/dist/components/common/icons/messages.d.ts +9 -0
  175. package/dist/components/common/icons/messages.js +4 -10
  176. package/dist/components/common/icons/minus.d.ts +9 -0
  177. package/dist/components/common/icons/minus.js +4 -10
  178. package/dist/components/common/icons/order-by-dataset.d.ts +12 -0
  179. package/dist/components/common/icons/order-by-dataset.js +51 -0
  180. package/dist/components/common/icons/order-by-list.d.ts +12 -0
  181. package/dist/components/common/icons/order-by-list.js +43 -0
  182. package/dist/components/common/icons/pause.d.ts +9 -0
  183. package/dist/components/common/icons/pause.js +4 -10
  184. package/dist/components/common/icons/picture.d.ts +9 -0
  185. package/dist/components/common/icons/picture.js +3 -9
  186. package/dist/components/common/icons/pin.d.ts +9 -0
  187. package/dist/components/common/icons/pin.js +12 -14
  188. package/dist/components/common/icons/play.d.ts +9 -0
  189. package/dist/components/common/icons/play.js +4 -10
  190. package/dist/components/common/icons/polygon.d.ts +10 -0
  191. package/dist/components/common/icons/polygon.js +4 -13
  192. package/dist/components/common/icons/rectangle.d.ts +10 -0
  193. package/dist/components/common/icons/rectangle.js +4 -13
  194. package/dist/components/common/icons/reduce.d.ts +9 -0
  195. package/dist/components/common/icons/reduce.js +4 -10
  196. package/dist/components/common/icons/reset.d.ts +9 -0
  197. package/dist/components/common/icons/reset.js +4 -10
  198. package/dist/components/common/icons/rocket.d.ts +9 -0
  199. package/dist/components/common/icons/rocket.js +4 -10
  200. package/dist/components/common/icons/save.d.ts +9 -0
  201. package/dist/components/common/icons/save.js +4 -10
  202. package/dist/components/common/icons/save2.d.ts +9 -0
  203. package/dist/components/common/icons/save2.js +4 -10
  204. package/dist/components/common/icons/search.d.ts +9 -0
  205. package/dist/components/common/icons/search.js +4 -10
  206. package/dist/components/common/icons/settings.d.ts +9 -0
  207. package/dist/components/common/icons/settings.js +4 -10
  208. package/dist/components/common/icons/share.d.ts +9 -0
  209. package/dist/components/common/icons/share.js +4 -10
  210. package/dist/components/common/icons/split.d.ts +9 -0
  211. package/dist/components/common/icons/split.js +4 -10
  212. package/dist/components/common/icons/square-select.d.ts +9 -0
  213. package/dist/components/common/icons/square-select.js +4 -10
  214. package/dist/components/common/icons/swap-horizontal.js +5 -6
  215. package/dist/components/common/icons/table.d.ts +9 -0
  216. package/dist/components/common/icons/table.js +4 -9
  217. package/dist/components/common/icons/trash.d.ts +9 -0
  218. package/dist/components/common/icons/trash.js +4 -10
  219. package/dist/components/common/icons/upload.d.ts +9 -0
  220. package/dist/components/common/icons/upload.js +4 -11
  221. package/dist/components/common/icons/vert-dots.d.ts +9 -0
  222. package/dist/components/common/icons/vert-dots.js +4 -10
  223. package/dist/components/common/icons/vert-three-dots.d.ts +9 -0
  224. package/dist/components/common/icons/vert-three-dots.js +4 -10
  225. package/dist/components/common/icons/warning.d.ts +10 -0
  226. package/dist/components/common/icons/warning.js +4 -10
  227. package/dist/components/common/image-preview.d.ts +15 -0
  228. package/dist/components/common/image-preview.js +1 -2
  229. package/dist/components/common/info-helper.d.ts +11 -0
  230. package/dist/components/common/info-helper.js +1 -7
  231. package/dist/components/common/item-selector/accessor.d.ts +7 -0
  232. package/dist/components/common/item-selector/accessor.js +1 -1
  233. package/dist/components/common/item-selector/chickleted-input.d.ts +21 -0
  234. package/dist/components/common/item-selector/chickleted-input.js +4 -24
  235. package/dist/components/common/item-selector/dropdown-list.d.ts +68 -0
  236. package/dist/components/common/item-selector/dropdown-list.js +30 -40
  237. package/dist/components/common/item-selector/item-selector-submenu.js +8 -9
  238. package/dist/components/common/item-selector/item-selector.d.ts +91 -0
  239. package/dist/components/common/item-selector/item-selector.js +33 -66
  240. package/dist/components/common/item-selector/typeahead.d.ts +115 -0
  241. package/dist/components/common/item-selector/typeahead.js +47 -72
  242. package/dist/components/common/line-chart.d.ts +34 -0
  243. package/dist/components/common/line-chart.js +9 -10
  244. package/dist/components/common/loading-spinner.d.ts +9 -0
  245. package/dist/components/common/loading-spinner.js +2 -4
  246. package/dist/components/common/logo.d.ts +8 -0
  247. package/dist/components/common/logo.js +5 -14
  248. package/dist/components/common/map-layer-selector.d.ts +13 -0
  249. package/dist/components/common/map-layer-selector.js +1 -2
  250. package/dist/components/common/modal.d.ts +49 -0
  251. package/dist/components/common/modal.js +7 -21
  252. package/dist/components/common/portaled.d.ts +527 -0
  253. package/dist/components/common/portaled.js +29 -28
  254. package/dist/components/common/progress-bar.d.ts +12 -0
  255. package/dist/components/common/progress-bar.js +1 -2
  256. package/dist/components/common/range-brush.d.ts +19 -0
  257. package/dist/components/common/range-brush.js +29 -30
  258. package/dist/components/common/range-plot.d.ts +35 -0
  259. package/dist/components/common/range-plot.js +2 -15
  260. package/dist/components/common/range-slider.d.ts +32 -0
  261. package/dist/components/common/range-slider.js +31 -46
  262. package/dist/components/common/slider/mouse-event.d.ts +27 -0
  263. package/dist/components/common/slider/mouse-event.js +49 -44
  264. package/dist/components/common/slider/slider-bar-handle.d.ts +29 -0
  265. package/dist/components/common/slider/slider-bar-handle.js +7 -16
  266. package/dist/components/common/slider/slider-handle.d.ts +33 -0
  267. package/dist/components/common/slider/slider-handle.js +12 -19
  268. package/dist/components/common/slider/slider.d.ts +70 -0
  269. package/dist/components/common/slider/slider.js +42 -62
  270. package/dist/components/common/styled-components.d.ts +119 -0
  271. package/dist/components/common/styled-components.js +21 -11
  272. package/dist/components/common/switch.d.ts +16 -0
  273. package/dist/components/common/switch.js +1 -16
  274. package/dist/components/common/time-range-slider-time-title.d.ts +9 -0
  275. package/dist/components/common/time-range-slider-time-title.js +1 -1
  276. package/dist/components/common/time-range-slider.d.ts +32 -0
  277. package/dist/components/common/time-range-slider.js +4 -22
  278. package/dist/components/common/time-slider-marker.d.ts +21 -0
  279. package/dist/components/common/time-slider-marker.js +2 -2
  280. package/dist/components/common/tippy-tooltip.d.ts +4 -0
  281. package/dist/components/common/tippy-tooltip.js +115 -0
  282. package/dist/components/common/toolbar-item.d.ts +14 -0
  283. package/dist/components/common/toolbar-item.js +8 -6
  284. package/dist/components/common/toolbar.d.ts +5 -0
  285. package/dist/components/common/toolbar.js +1 -1
  286. package/dist/components/common/vertical-toolbar.d.ts +3 -0
  287. package/dist/components/common/vertical-toolbar.js +1 -1
  288. package/dist/components/container.d.ts +39 -0
  289. package/dist/components/container.js +38 -31
  290. package/dist/components/context.d.ts +7 -0
  291. package/dist/components/context.js +1 -1
  292. package/dist/components/editor/constants.d.ts +17 -0
  293. package/dist/components/editor/constants.js +1 -1
  294. package/dist/components/editor/editor.d.ts +29 -0
  295. package/dist/components/editor/editor.js +26 -42
  296. package/dist/components/editor/feature-action-panel.d.ts +27 -0
  297. package/dist/components/editor/feature-action-panel.js +13 -18
  298. package/dist/components/editor/feature-styles.d.ts +24 -0
  299. package/dist/components/editor/feature-styles.js +3 -3
  300. package/dist/components/editor/handle-style.d.ts +38 -0
  301. package/dist/components/editor/handle-style.js +3 -3
  302. package/dist/components/filters/components.d.ts +1 -0
  303. package/dist/components/filters/components.js +1 -1
  304. package/dist/components/filters/filter-panels/filter-panel-with-field-select.d.ts +10 -0
  305. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +5 -8
  306. package/dist/components/filters/filter-panels/multi-select-filter-panel.d.ts +9 -0
  307. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +3 -10
  308. package/dist/components/filters/filter-panels/new-filter-panel.d.ts +12 -0
  309. package/dist/components/filters/filter-panels/new-filter-panel.js +4 -10
  310. package/dist/components/filters/filter-panels/polygon-filter-panel.d.ts +9 -0
  311. package/dist/components/filters/filter-panels/polygon-filter-panel.js +6 -11
  312. package/dist/components/filters/filter-panels/range-filter-panel.d.ts +9 -0
  313. package/dist/components/filters/filter-panels/range-filter-panel.js +3 -10
  314. package/dist/components/filters/filter-panels/single-select-filter-panel.d.ts +9 -0
  315. package/dist/components/filters/filter-panels/single-select-filter-panel.js +3 -10
  316. package/dist/components/filters/filter-panels/time-range-filter-panel.d.ts +8 -0
  317. package/dist/components/filters/filter-panels/time-range-filter-panel.js +6 -9
  318. package/dist/components/filters/filter-panels/types.d.ts +36 -0
  319. package/dist/components/filters/filter-panels/types.js +6 -0
  320. package/dist/components/filters/index.d.ts +5 -0
  321. package/dist/components/filters/index.js +1 -1
  322. package/dist/components/filters/multi-select-filter.d.ts +3 -0
  323. package/dist/components/filters/multi-select-filter.js +1 -1
  324. package/dist/components/filters/polygon-filter.d.ts +4 -0
  325. package/dist/components/filters/polygon-filter.js +3 -4
  326. package/dist/components/filters/range-filter.d.ts +8 -0
  327. package/dist/components/filters/range-filter.js +2 -2
  328. package/dist/components/filters/single-select-filter.d.ts +3 -0
  329. package/dist/components/filters/single-select-filter.js +1 -1
  330. package/dist/components/filters/time-range-filter.d.ts +28 -0
  331. package/dist/components/filters/time-range-filter.js +1 -1
  332. package/dist/components/filters/time-widget.d.ts +14 -0
  333. package/dist/components/filters/time-widget.js +2 -3
  334. package/dist/components/filters/types.d.ts +53 -0
  335. package/dist/components/filters/types.js +6 -0
  336. package/dist/components/geocoder/geocoder.d.ts +33 -0
  337. package/dist/components/geocoder/geocoder.js +17 -17
  338. package/dist/components/geocoder-panel.d.ts +28 -0
  339. package/dist/components/geocoder-panel.js +24 -31
  340. package/dist/components/index.d.ts +165 -0
  341. package/dist/components/index.js +98 -15
  342. package/dist/components/injector.d.ts +25 -0
  343. package/dist/components/injector.js +4 -4
  344. package/dist/components/kepler-gl.d.ts +302 -0
  345. package/dist/components/kepler-gl.js +60 -43
  346. package/dist/components/map/coordinate-info.d.ts +7 -0
  347. package/dist/components/map/coordinate-info.js +1 -1
  348. package/dist/components/map/layer-hover-info.d.ts +13 -0
  349. package/dist/components/map/layer-hover-info.js +1 -2
  350. package/dist/components/map/layer-selector-panel.d.ts +22 -0
  351. package/dist/components/map/layer-selector-panel.js +2 -2
  352. package/dist/components/map/locale-panel.d.ts +16 -0
  353. package/dist/components/map/locale-panel.js +17 -13
  354. package/dist/components/map/map-control-panel.d.ts +14 -0
  355. package/dist/components/map/map-control-panel.js +20 -5
  356. package/dist/components/map/map-control-toolbar.d.ts +2 -0
  357. package/dist/components/map/map-control-toolbar.js +1 -1
  358. package/dist/components/map/map-control-tooltip.d.ts +7 -0
  359. package/dist/components/map/map-control-tooltip.js +3 -3
  360. package/dist/components/map/map-control.d.ts +44 -0
  361. package/dist/components/map/map-control.js +2 -2
  362. package/dist/components/map/map-draw-panel.d.ts +21 -0
  363. package/dist/components/map/map-draw-panel.js +19 -13
  364. package/dist/components/map/map-legend-panel.d.ts +23 -0
  365. package/dist/components/map/map-legend-panel.js +101 -56
  366. package/dist/components/map/map-legend.d.ts +55 -0
  367. package/dist/components/map/map-legend.js +20 -12
  368. package/dist/components/map/map-popover.d.ts +37 -0
  369. package/dist/components/map/map-popover.js +7 -4
  370. package/dist/components/map/split-map-button.d.ts +19 -0
  371. package/dist/components/map/split-map-button.js +18 -15
  372. package/dist/components/map/toggle-3d-button.d.ts +16 -0
  373. package/dist/components/map/toggle-3d-button.js +19 -15
  374. package/dist/components/map-container.d.ts +58 -0
  375. package/dist/components/map-container.js +60 -73
  376. package/dist/components/maps-layout.d.ts +10 -0
  377. package/dist/components/maps-layout.js +6 -5
  378. package/dist/components/modal-container.d.ts +65 -0
  379. package/dist/components/modal-container.js +29 -54
  380. package/dist/components/modals/add-map-style-modal.d.ts +17 -0
  381. package/dist/components/modals/add-map-style-modal.js +10 -18
  382. package/dist/components/modals/cloud-tile.d.ts +15 -0
  383. package/dist/components/modals/cloud-tile.js +1 -1
  384. package/dist/components/modals/data-table-modal.d.ts +29 -0
  385. package/dist/components/modals/data-table-modal.js +33 -29
  386. package/dist/components/modals/delete-data-modal.d.ts +10 -0
  387. package/dist/components/modals/delete-data-modal.js +1 -1
  388. package/dist/components/modals/error-display.d.ts +6 -0
  389. package/dist/components/modals/error-display.js +1 -1
  390. package/dist/components/modals/export-data-modal.d.ts +25 -0
  391. package/dist/components/modals/export-data-modal.js +12 -28
  392. package/dist/components/modals/export-image-modal.d.ts +18 -0
  393. package/dist/components/modals/export-image-modal.js +2 -2
  394. package/dist/components/modals/export-map-modal/components.d.ts +8 -0
  395. package/dist/components/modals/export-map-modal/components.js +1 -1
  396. package/dist/components/modals/export-map-modal/export-html-map.d.ts +12 -0
  397. package/dist/components/modals/export-map-modal/export-html-map.js +1 -2
  398. package/dist/components/modals/export-map-modal/export-json-map.d.ts +9 -0
  399. package/dist/components/modals/export-map-modal/export-json-map.js +20 -9
  400. package/dist/components/modals/export-map-modal/export-map-modal.d.ts +27 -0
  401. package/dist/components/modals/export-map-modal/export-map-modal.js +6 -18
  402. package/dist/components/modals/image-modal-container.d.ts +18 -0
  403. package/dist/components/modals/image-modal-container.js +5 -5
  404. package/dist/components/modals/load-data-modal.d.ts +33 -0
  405. package/dist/components/modals/load-data-modal.js +4 -4
  406. package/dist/components/modals/load-storage-map.d.ts +26 -0
  407. package/dist/components/modals/load-storage-map.js +10 -12
  408. package/dist/components/modals/loading-dialog.d.ts +7 -0
  409. package/dist/components/modals/loading-dialog.js +1 -1
  410. package/dist/components/modals/modal-dialog.d.ts +2 -0
  411. package/dist/components/modals/modal-dialog.js +1 -1
  412. package/dist/components/modals/modal-tabs.d.ts +27 -0
  413. package/dist/components/modals/modal-tabs.js +2 -2
  414. package/dist/components/modals/overwrite-map-modal.d.ts +16 -0
  415. package/dist/components/modals/overwrite-map-modal.js +1 -1
  416. package/dist/components/modals/provider-modal-container.d.ts +23 -0
  417. package/dist/components/modals/provider-modal-container.js +8 -13
  418. package/dist/components/modals/save-map-modal.d.ts +29 -0
  419. package/dist/components/modals/save-map-modal.js +5 -6
  420. package/dist/components/modals/share-map-modal.d.ts +30 -0
  421. package/dist/components/modals/share-map-modal.js +19 -22
  422. package/dist/components/modals/status-panel.d.ts +13 -0
  423. package/dist/components/modals/status-panel.js +1 -1
  424. package/dist/components/modals/storage-map-viewer.d.ts +21 -0
  425. package/dist/components/modals/storage-map-viewer.js +5 -12
  426. package/dist/components/notification-panel/notification-item.d.ts +66 -0
  427. package/dist/components/notification-panel/notification-item.js +7 -18
  428. package/dist/components/notification-panel.d.ts +61 -0
  429. package/dist/components/notification-panel.js +6 -13
  430. package/dist/components/performance.d.ts +4 -0
  431. package/dist/components/performance.js +2 -1
  432. package/dist/components/plot-container.d.ts +24 -0
  433. package/dist/components/plot-container.js +35 -40
  434. package/dist/components/side-panel/cloud-storage-dropdown.d.ts +6 -0
  435. package/dist/components/side-panel/cloud-storage-dropdown.js +1 -1
  436. package/dist/components/side-panel/common/dataset-info.d.ts +3 -0
  437. package/dist/components/side-panel/common/dataset-info.js +1 -1
  438. package/dist/components/side-panel/common/dataset-tag.d.ts +3 -0
  439. package/dist/components/side-panel/common/dataset-tag.js +37 -13
  440. package/dist/components/side-panel/common/dataset-title.d.ts +8 -0
  441. package/dist/components/side-panel/common/dataset-title.js +49 -19
  442. package/dist/components/side-panel/common/source-data-catalog.d.ts +9 -0
  443. package/dist/components/side-panel/common/source-data-catalog.js +5 -3
  444. package/dist/components/side-panel/common/source-data-selector.d.ts +8 -0
  445. package/dist/components/side-panel/common/source-data-selector.js +18 -13
  446. package/dist/components/side-panel/common/types.d.ts +58 -0
  447. package/dist/components/side-panel/common/types.js +6 -0
  448. package/dist/components/side-panel/custom-panel.d.ts +9 -0
  449. package/dist/components/side-panel/custom-panel.js +1 -1
  450. package/dist/components/side-panel/filter-manager.d.ts +20 -0
  451. package/dist/components/side-panel/filter-manager.js +7 -15
  452. package/dist/components/side-panel/filter-panel/filter-panel-header.d.ts +21 -0
  453. package/dist/components/side-panel/filter-panel/filter-panel-header.js +3 -6
  454. package/dist/components/side-panel/filter-panel/filter-panel.d.ts +23 -0
  455. package/dist/components/side-panel/filter-panel/filter-panel.js +15 -31
  456. package/dist/components/side-panel/interaction-manager.d.ts +14 -0
  457. package/dist/components/side-panel/interaction-manager.js +1 -1
  458. package/dist/components/side-panel/interaction-panel/brush-config.d.ts +15 -0
  459. package/dist/components/side-panel/interaction-panel/brush-config.js +1 -1
  460. package/dist/components/side-panel/interaction-panel/interaction-panel.d.ts +19 -0
  461. package/dist/components/side-panel/interaction-panel/interaction-panel.js +9 -17
  462. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +28 -0
  463. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +15 -21
  464. package/dist/components/side-panel/interaction-panel/tooltip-config.d.ts +38 -0
  465. package/dist/components/side-panel/interaction-panel/tooltip-config.js +7 -3
  466. package/dist/components/side-panel/layer-manager.d.ts +46 -0
  467. package/dist/components/side-panel/layer-manager.js +87 -192
  468. package/dist/components/side-panel/layer-panel/add-layer-button.d.ts +10 -0
  469. package/dist/components/side-panel/layer-panel/add-layer-button.js +147 -0
  470. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.d.ts +8 -0
  471. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +2 -2
  472. package/dist/components/side-panel/layer-panel/color-palette.d.ts +13 -0
  473. package/dist/components/side-panel/layer-panel/color-palette.js +7 -15
  474. package/dist/components/side-panel/layer-panel/color-range-selector.d.ts +129 -0
  475. package/dist/components/side-panel/layer-panel/color-range-selector.js +105 -142
  476. package/dist/components/side-panel/layer-panel/color-selector.d.ts +101 -0
  477. package/dist/components/side-panel/layer-panel/color-selector.js +16 -37
  478. package/dist/components/side-panel/layer-panel/column-selector.d.ts +22 -0
  479. package/dist/components/side-panel/layer-panel/column-selector.js +3 -3
  480. package/dist/components/side-panel/layer-panel/custom-markers-config-group.d.ts +6 -0
  481. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +2 -2
  482. package/dist/components/side-panel/layer-panel/custom-palette.d.ts +38 -0
  483. package/dist/components/side-panel/layer-panel/custom-palette.js +55 -61
  484. package/dist/components/side-panel/layer-panel/custom-picker.d.ts +67 -0
  485. package/dist/components/side-panel/layer-panel/custom-picker.js +7 -16
  486. package/dist/components/side-panel/layer-panel/dataset-layer-group.d.ts +24 -0
  487. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +81 -0
  488. package/dist/components/side-panel/layer-panel/dataset-layer-section.d.ts +25 -0
  489. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +74 -0
  490. package/dist/components/side-panel/layer-panel/dataset-section.d.ts +26 -0
  491. package/dist/components/side-panel/layer-panel/dataset-section.js +91 -0
  492. package/dist/components/side-panel/layer-panel/dimension-scale-selector.d.ts +10 -0
  493. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +1 -1
  494. package/dist/components/side-panel/layer-panel/hex-column-config.d.ts +62 -0
  495. package/dist/components/side-panel/layer-panel/hex-column-config.js +4 -5
  496. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.d.ts +8 -0
  497. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +1 -1
  498. package/dist/components/side-panel/layer-panel/layer-column-config.d.ts +20 -0
  499. package/dist/components/side-panel/layer-panel/layer-column-config.js +2 -13
  500. package/dist/components/side-panel/layer-panel/layer-config-group.d.ts +37 -0
  501. package/dist/components/side-panel/layer-panel/layer-config-group.js +11 -13
  502. package/dist/components/side-panel/layer-panel/layer-configurator.d.ts +415 -0
  503. package/dist/components/side-panel/layer-panel/layer-configurator.js +70 -63
  504. package/dist/components/side-panel/layer-panel/layer-list.d.ts +20 -0
  505. package/dist/components/side-panel/layer-panel/layer-list.js +168 -0
  506. package/dist/components/side-panel/layer-panel/layer-panel-header.d.ts +43 -0
  507. package/dist/components/side-panel/layer-panel/layer-panel-header.js +10 -24
  508. package/dist/components/side-panel/layer-panel/layer-panel.d.ts +40 -0
  509. package/dist/components/side-panel/layer-panel/layer-panel.js +19 -38
  510. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.d.ts +17 -0
  511. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +2 -2
  512. package/dist/components/side-panel/layer-panel/layer-type-list-item.d.ts +11 -0
  513. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +1 -1
  514. package/dist/components/side-panel/layer-panel/layer-type-selector.d.ts +23 -0
  515. package/dist/components/side-panel/layer-panel/layer-type-selector.js +2 -8
  516. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.d.ts +23 -0
  517. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +3 -3
  518. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.d.ts +36 -0
  519. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +116 -0
  520. package/dist/components/side-panel/layer-panel/single-color-palette.d.ts +12 -0
  521. package/dist/components/side-panel/layer-panel/single-color-palette.js +27 -58
  522. package/dist/components/side-panel/layer-panel/text-label-panel.d.ts +18 -0
  523. package/dist/components/side-panel/layer-panel/text-label-panel.js +9 -16
  524. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.d.ts +35 -0
  525. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +22 -35
  526. package/dist/components/side-panel/layer-panel/vis-config-slider.d.ts +20 -0
  527. package/dist/components/side-panel/layer-panel/vis-config-slider.js +130 -34
  528. package/dist/components/side-panel/layer-panel/vis-config-switch.d.ts +16 -0
  529. package/dist/components/side-panel/layer-panel/vis-config-switch.js +1 -11
  530. package/dist/components/side-panel/map-manager.d.ts +21 -0
  531. package/dist/components/side-panel/map-manager.js +9 -17
  532. package/dist/components/side-panel/map-style-panel/map-layer-selector.d.ts +19 -0
  533. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +1 -1
  534. package/dist/components/side-panel/map-style-panel/map-style-selector.d.ts +16 -0
  535. package/dist/components/side-panel/map-style-panel/map-style-selector.js +1 -1
  536. package/dist/components/side-panel/panel-dropdown.d.ts +18 -0
  537. package/dist/components/side-panel/panel-dropdown.js +5 -13
  538. package/dist/components/side-panel/panel-header-action.d.ts +20 -0
  539. package/dist/components/side-panel/panel-header-action.js +5 -18
  540. package/dist/components/side-panel/panel-header.d.ts +78 -0
  541. package/dist/components/side-panel/panel-header.js +17 -29
  542. package/dist/components/side-panel/panel-tab.d.ts +20 -0
  543. package/dist/components/side-panel/panel-tab.js +1 -1
  544. package/dist/components/side-panel/panel-title.d.ts +4 -0
  545. package/dist/components/side-panel/panel-title.js +7 -2
  546. package/dist/components/side-panel/panel-toggle.d.ts +14 -0
  547. package/dist/components/side-panel/panel-toggle.js +2 -9
  548. package/dist/components/side-panel/side-bar.d.ts +76 -0
  549. package/dist/components/side-panel/side-bar.js +6 -14
  550. package/dist/components/side-panel.d.ts +134 -0
  551. package/dist/components/side-panel.js +19 -17
  552. package/dist/components/types.d.ts +44 -0
  553. package/dist/components/types.js +6 -0
  554. package/dist/connect/keplergl-connect.d.ts +5 -0
  555. package/dist/connect/keplergl-connect.js +1 -1
  556. package/dist/connect/with-local-selector.d.ts +6 -0
  557. package/dist/connect/with-local-selector.js +10 -13
  558. package/dist/constants/action-types.d.ts +111 -0
  559. package/dist/constants/action-types.js +8 -3
  560. package/dist/constants/color-palette.d.ts +491 -0
  561. package/dist/constants/color-palette.js +1 -1
  562. package/dist/constants/color-ranges.d.ts +24 -0
  563. package/dist/constants/color-ranges.js +3 -1
  564. package/dist/constants/custom-color-ranges.d.ts +37 -0
  565. package/dist/constants/custom-color-ranges.js +1 -1
  566. package/dist/constants/default-settings.d.ts +773 -0
  567. package/dist/constants/default-settings.js +25 -13
  568. package/dist/constants/index.d.ts +9 -0
  569. package/dist/constants/index.js +1 -1
  570. package/dist/constants/keyevent.d.ts +2 -0
  571. package/dist/constants/keyevent.js +1 -1
  572. package/dist/constants/tooltip.d.ts +165 -0
  573. package/dist/constants/tooltip.js +1 -1
  574. package/dist/constants/user-feedbacks.d.ts +5 -0
  575. package/dist/constants/user-feedbacks.js +1 -1
  576. package/dist/constants/user-guides.d.ts +9 -0
  577. package/dist/constants/user-guides.js +1 -1
  578. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.d.ts +13 -0
  579. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +13 -6
  580. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.d.ts +7 -0
  581. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +1 -1
  582. package/dist/deckgl-layers/3d-building-layer/types.d.ts +37 -0
  583. package/dist/deckgl-layers/3d-building-layer/types.js +6 -0
  584. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +4 -5
  585. package/dist/deckgl-layers/column-layer/enhanced-column-layer.d.ts +6 -0
  586. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +9 -9
  587. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +13 -0
  588. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +15 -14
  589. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.d.ts +13 -0
  590. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +15 -14
  591. package/dist/deckgl-layers/layer-utils/cluster-utils.js +4 -5
  592. package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +91 -0
  593. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +9 -10
  594. package/dist/deckgl-layers/layer-utils/shader-utils.d.ts +1 -0
  595. package/dist/deckgl-layers/layer-utils/shader-utils.js +1 -1
  596. package/dist/deckgl-layers/line-layer/line-layer.d.ts +12 -0
  597. package/dist/deckgl-layers/line-layer/line-layer.js +17 -15
  598. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.d.ts +8 -0
  599. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +18 -12
  600. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.d.ts +18 -0
  601. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +14 -5
  602. package/dist/index.d.ts +11 -0
  603. package/dist/index.js +2 -2
  604. package/dist/layers/aggregation-layer.d.ts +70 -0
  605. package/dist/layers/aggregation-layer.js +34 -24
  606. package/dist/layers/arc-layer/arc-layer-icon.d.ts +16 -0
  607. package/dist/layers/arc-layer/arc-layer-icon.js +4 -5
  608. package/dist/layers/arc-layer/arc-layer.d.ts +143 -0
  609. package/dist/layers/arc-layer/arc-layer.js +21 -19
  610. package/dist/layers/base-layer.d.ts +436 -0
  611. package/dist/layers/base-layer.js +96 -80
  612. package/dist/layers/cluster-layer/cluster-layer-icon.d.ts +16 -0
  613. package/dist/layers/cluster-layer/cluster-layer-icon.js +4 -5
  614. package/dist/layers/cluster-layer/cluster-layer.d.ts +39 -0
  615. package/dist/layers/cluster-layer/cluster-layer.js +4 -5
  616. package/dist/layers/default-layer-icon.d.ts +14 -0
  617. package/dist/layers/default-layer-icon.js +4 -5
  618. package/dist/layers/geojson-layer/geojson-layer-icon.d.ts +15 -0
  619. package/dist/layers/geojson-layer/geojson-layer-icon.js +4 -5
  620. package/dist/layers/geojson-layer/geojson-layer.d.ts +227 -0
  621. package/dist/layers/geojson-layer/geojson-layer.js +25 -15
  622. package/dist/layers/geojson-layer/geojson-utils.d.ts +44 -0
  623. package/dist/layers/geojson-layer/geojson-utils.js +19 -6
  624. package/dist/layers/grid-layer/grid-layer-icon.d.ts +15 -0
  625. package/dist/layers/grid-layer/grid-layer-icon.js +4 -5
  626. package/dist/layers/grid-layer/grid-layer.d.ts +74 -0
  627. package/dist/layers/grid-layer/grid-layer.js +5 -5
  628. package/dist/layers/grid-layer/grid-utils.d.ts +24 -0
  629. package/dist/layers/grid-layer/grid-utils.js +7 -7
  630. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.d.ts +16 -0
  631. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +4 -5
  632. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.d.ts +170 -0
  633. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +15 -8
  634. package/dist/layers/h3-hexagon-layer/h3-utils.d.ts +20 -0
  635. package/dist/layers/h3-hexagon-layer/h3-utils.js +2 -2
  636. package/dist/layers/heatmap-layer/heatmap-layer-icon.d.ts +15 -0
  637. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +4 -5
  638. package/dist/layers/heatmap-layer/heatmap-layer.d.ts +144 -0
  639. package/dist/layers/heatmap-layer/heatmap-layer.js +26 -32
  640. package/dist/layers/hexagon-layer/hexagon-layer-icon.d.ts +15 -0
  641. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +4 -5
  642. package/dist/layers/hexagon-layer/hexagon-layer.d.ts +78 -0
  643. package/dist/layers/hexagon-layer/hexagon-layer.js +5 -5
  644. package/dist/layers/hexagon-layer/hexagon-utils.d.ts +7 -0
  645. package/dist/layers/hexagon-layer/hexagon-utils.js +1 -1
  646. package/dist/layers/icon-layer/icon-info-modal.d.ts +3 -0
  647. package/dist/layers/icon-layer/icon-info-modal.js +3 -2
  648. package/dist/layers/icon-layer/icon-layer-icon.d.ts +15 -0
  649. package/dist/layers/icon-layer/icon-layer-icon.js +4 -5
  650. package/dist/layers/icon-layer/icon-layer.d.ts +119 -0
  651. package/dist/layers/icon-layer/icon-layer.js +24 -12
  652. package/dist/layers/index.d.ts +53 -0
  653. package/dist/layers/index.js +3 -3
  654. package/dist/layers/layer-factory.d.ts +150 -0
  655. package/dist/layers/layer-factory.js +54 -39
  656. package/dist/layers/layer-text-label.d.ts +7 -0
  657. package/dist/layers/layer-text-label.js +1 -3
  658. package/dist/layers/layer-update.d.ts +9 -0
  659. package/dist/layers/layer-update.js +1 -2
  660. package/dist/layers/line-layer/line-layer-icon.d.ts +15 -0
  661. package/dist/layers/line-layer/line-layer-icon.js +4 -5
  662. package/dist/layers/line-layer/line-layer.d.ts +136 -0
  663. package/dist/layers/line-layer/line-layer.js +28 -26
  664. package/dist/layers/mapbox-utils.d.ts +57 -0
  665. package/dist/layers/mapbox-utils.js +9 -14
  666. package/dist/layers/mapboxgl-layer.d.ts +87 -0
  667. package/dist/layers/mapboxgl-layer.js +19 -13
  668. package/dist/layers/point-layer/point-layer-icon.d.ts +15 -0
  669. package/dist/layers/point-layer/point-layer-icon.js +4 -5
  670. package/dist/layers/point-layer/point-layer.d.ts +272 -0
  671. package/dist/layers/point-layer/point-layer.js +31 -17
  672. package/dist/layers/s2-geometry-layer/s2-geometry-layer.d.ts +189 -0
  673. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +15 -11
  674. package/dist/layers/s2-geometry-layer/s2-layer-icon.d.ts +15 -0
  675. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +4 -5
  676. package/dist/layers/s2-geometry-layer/s2-utils.d.ts +7 -0
  677. package/dist/layers/s2-geometry-layer/s2-utils.js +7 -1
  678. package/dist/layers/scenegraph-layer/scenegraph-info-modal.d.ts +3 -0
  679. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +1 -1
  680. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.d.ts +15 -0
  681. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +4 -5
  682. package/dist/layers/scenegraph-layer/scenegraph-layer.d.ts +80 -0
  683. package/dist/layers/scenegraph-layer/scenegraph-layer.js +9 -6
  684. package/dist/layers/trip-layer/trip-info-modal.d.ts +3 -0
  685. package/dist/layers/trip-layer/trip-info-modal.js +1 -1
  686. package/dist/layers/trip-layer/trip-layer-icon.d.ts +15 -0
  687. package/dist/layers/trip-layer/trip-layer-icon.js +4 -5
  688. package/dist/layers/trip-layer/trip-layer.d.ts +157 -0
  689. package/dist/layers/trip-layer/trip-layer.js +21 -13
  690. package/dist/layers/trip-layer/trip-utils.d.ts +31 -0
  691. package/dist/layers/trip-layer/trip-utils.js +13 -14
  692. package/dist/layers/types.d.ts +15 -0
  693. package/dist/layers/types.js +1 -1
  694. package/dist/localization/formatted-message.d.ts +12 -0
  695. package/dist/localization/formatted-message.js +6 -7
  696. package/dist/localization/index.d.ts +5 -0
  697. package/dist/localization/index.js +2 -2
  698. package/dist/localization/locales.d.ts +27 -0
  699. package/dist/localization/locales.js +1 -1
  700. package/dist/localization/messages.d.ts +4 -0
  701. package/dist/localization/messages.js +37 -0
  702. package/dist/localization/translations/ca.d.ts +438 -0
  703. package/dist/localization/translations/ca.js +466 -0
  704. package/dist/localization/translations/cn.d.ts +441 -0
  705. package/dist/localization/translations/cn.js +469 -0
  706. package/dist/localization/translations/en.d.ts +466 -0
  707. package/dist/localization/translations/en.js +494 -0
  708. package/dist/localization/translations/es.d.ts +438 -0
  709. package/dist/localization/translations/es.js +466 -0
  710. package/dist/localization/translations/fi.d.ts +410 -0
  711. package/dist/localization/translations/fi.js +438 -0
  712. package/dist/localization/translations/ja.d.ts +439 -0
  713. package/dist/localization/translations/ja.js +467 -0
  714. package/dist/localization/translations/pt.d.ts +410 -0
  715. package/dist/localization/translations/pt.js +438 -0
  716. package/dist/localization/translations/ru.d.ts +447 -0
  717. package/dist/localization/translations/ru.js +475 -0
  718. package/dist/middleware/index.d.ts +8 -0
  719. package/dist/middleware/index.js +3 -3
  720. package/dist/processors/data-processor.d.ts +242 -0
  721. package/dist/processors/data-processor.js +44 -43
  722. package/dist/processors/file-handler.d.ts +28 -0
  723. package/dist/processors/file-handler.js +18 -17
  724. package/dist/processors/index.d.ts +3 -0
  725. package/dist/processors/index.js +12 -1
  726. package/dist/processors/types.d.ts +21 -0
  727. package/dist/processors/types.js +6 -0
  728. package/dist/reducers/combined-updaters.d.ts +52 -0
  729. package/dist/reducers/combined-updaters.js +3 -7
  730. package/dist/reducers/composer-helpers.d.ts +21 -0
  731. package/dist/reducers/composer-helpers.js +7 -7
  732. package/dist/reducers/composers.d.ts +12 -0
  733. package/dist/reducers/composers.js +2 -2
  734. package/dist/reducers/core.d.ts +65 -0
  735. package/dist/reducers/core.js +2 -6
  736. package/dist/reducers/index.d.ts +19 -0
  737. package/dist/reducers/index.js +14 -2
  738. package/dist/reducers/map-state-updaters.d.ts +96 -0
  739. package/dist/reducers/map-state-updaters.js +4 -11
  740. package/dist/reducers/map-state.d.ts +4 -0
  741. package/dist/reducers/map-state.js +3 -3
  742. package/dist/reducers/map-style-updaters.d.ts +204 -0
  743. package/dist/reducers/map-style-updaters.js +23 -37
  744. package/dist/reducers/map-style.d.ts +16 -0
  745. package/dist/reducers/map-style.js +3 -3
  746. package/dist/reducers/provider-state-updaters.d.ts +41 -0
  747. package/dist/reducers/provider-state-updaters.js +27 -72
  748. package/dist/reducers/provider-state.d.ts +4 -0
  749. package/dist/reducers/provider-state.js +3 -3
  750. package/dist/reducers/root.d.ts +24 -0
  751. package/dist/reducers/root.js +4 -4
  752. package/dist/reducers/types.d.ts +16 -0
  753. package/dist/reducers/types.js +6 -0
  754. package/dist/reducers/ui-state-updaters.d.ts +434 -0
  755. package/dist/reducers/ui-state-updaters.js +27 -38
  756. package/dist/reducers/ui-state.d.ts +3 -0
  757. package/dist/reducers/ui-state.js +5 -4
  758. package/dist/reducers/vis-state-merger.d.ts +110 -0
  759. package/dist/reducers/vis-state-merger.js +47 -43
  760. package/dist/reducers/vis-state-selectors.d.ts +10 -0
  761. package/dist/reducers/vis-state-selectors.js +1 -1
  762. package/dist/reducers/vis-state-updaters.d.ts +645 -0
  763. package/dist/reducers/vis-state-updaters.js +72 -126
  764. package/dist/reducers/vis-state.d.ts +4 -0
  765. package/dist/reducers/vis-state.js +4 -4
  766. package/dist/schemas/dataset-schema.d.ts +17 -0
  767. package/dist/schemas/dataset-schema.js +9 -12
  768. package/dist/schemas/index.d.ts +8 -0
  769. package/dist/schemas/index.js +2 -2
  770. package/dist/schemas/map-state-schema.d.ts +23 -0
  771. package/dist/schemas/map-state-schema.js +1 -1
  772. package/dist/schemas/map-style-schema.d.ts +38 -0
  773. package/dist/schemas/map-style-schema.js +5 -7
  774. package/dist/schemas/schema-manager.d.ts +271 -0
  775. package/dist/schemas/schema-manager.js +7 -5
  776. package/dist/schemas/schema-utils.d.ts +11 -0
  777. package/dist/schemas/schema-utils.js +1 -1
  778. package/dist/schemas/schema.d.ts +37 -0
  779. package/dist/schemas/schema.js +4 -4
  780. package/dist/schemas/versions.d.ts +5 -0
  781. package/dist/schemas/versions.js +1 -1
  782. package/dist/schemas/vis-state-schema.d.ts +214 -0
  783. package/dist/schemas/vis-state-schema.js +57 -77
  784. package/dist/styles/base.d.ts +1530 -0
  785. package/dist/styles/base.js +8 -4
  786. package/dist/styles/index.d.ts +2 -0
  787. package/dist/styles/index.js +1 -1
  788. package/dist/styles/media-breakpoints.d.ts +13 -0
  789. package/dist/styles/media-breakpoints.js +26 -7
  790. package/dist/tasks/tasks.d.ts +15 -0
  791. package/dist/tasks/tasks.js +12 -12
  792. package/dist/templates/export-map-html.d.ts +9 -0
  793. package/dist/templates/export-map-html.js +1 -1
  794. package/dist/utils/aggregate-utils.d.ts +3 -0
  795. package/dist/utils/aggregate-utils.js +1 -1
  796. package/dist/utils/color-utils.d.ts +44 -0
  797. package/dist/utils/color-utils.js +24 -9
  798. package/dist/utils/custom-scales.js +1 -1
  799. package/dist/utils/data-scale-utils.d.ts +23 -0
  800. package/dist/utils/data-scale-utils.js +1 -6
  801. package/dist/utils/data-utils.d.ts +115 -0
  802. package/dist/utils/data-utils.js +18 -39
  803. package/dist/utils/dataset-utils.d.ts +38 -0
  804. package/dist/utils/dataset-utils.js +4 -5
  805. package/dist/utils/dom-to-image.d.ts +73 -0
  806. package/dist/utils/dom-to-image.js +5 -5
  807. package/dist/utils/dom-utils.d.ts +20 -0
  808. package/dist/utils/dom-utils.js +1 -1
  809. package/dist/utils/export-utils.d.ts +56 -0
  810. package/dist/utils/export-utils.js +31 -25
  811. package/dist/utils/filter-utils.d.ts +267 -0
  812. package/dist/utils/filter-utils.js +40 -95
  813. package/dist/utils/gl-utils.d.ts +1 -0
  814. package/dist/utils/gl-utils.js +1 -1
  815. package/dist/utils/gpu-filter-utils.d.ts +28 -0
  816. package/dist/utils/gpu-filter-utils.js +13 -20
  817. package/dist/utils/index.d.ts +22 -0
  818. package/dist/utils/index.js +136 -38
  819. package/dist/utils/interaction-utils.d.ts +36 -0
  820. package/dist/utils/interaction-utils.js +10 -17
  821. package/dist/utils/layer-utils.d.ts +54 -0
  822. package/dist/utils/layer-utils.js +2 -3
  823. package/dist/utils/locale-utils.d.ts +2 -0
  824. package/dist/utils/locale-utils.js +5 -5
  825. package/dist/utils/map-info-utils.d.ts +1 -0
  826. package/dist/utils/map-info-utils.js +1 -1
  827. package/dist/utils/map-style-utils/mapbox-gl-style-editor.d.ts +64 -0
  828. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +18 -18
  829. package/dist/utils/map-style-utils/mapbox-utils.d.ts +3 -0
  830. package/dist/utils/map-style-utils/mapbox-utils.js +1 -1
  831. package/dist/utils/mapbox-utils.d.ts +7 -0
  832. package/dist/utils/mapbox-utils.js +1 -1
  833. package/dist/utils/notifications-utils.d.ts +54 -0
  834. package/dist/utils/notifications-utils.js +8 -8
  835. package/dist/utils/observe-dimensions.d.ts +15 -0
  836. package/dist/utils/observe-dimensions.js +8 -8
  837. package/dist/utils/projection-utils.d.ts +12 -0
  838. package/dist/utils/projection-utils.js +1 -1
  839. package/dist/utils/searcher-utils.d.ts +1 -0
  840. package/dist/utils/searcher-utils.js +1 -1
  841. package/dist/utils/split-map-utils.d.ts +29 -0
  842. package/dist/utils/split-map-utils.js +4 -4
  843. package/dist/utils/table-utils/data-container-interface.d.ts +115 -0
  844. package/dist/utils/table-utils/data-container-interface.js +6 -0
  845. package/dist/utils/table-utils/data-container-utils.d.ts +29 -0
  846. package/dist/utils/table-utils/data-container-utils.js +18 -7
  847. package/dist/utils/table-utils/data-row.d.ts +59 -0
  848. package/dist/utils/table-utils/data-row.js +61 -8
  849. package/dist/utils/table-utils/index.d.ts +1 -0
  850. package/dist/utils/table-utils/index.js +1 -1
  851. package/dist/utils/table-utils/indexed-data-container.d.ts +34 -0
  852. package/dist/utils/table-utils/indexed-data-container.js +18 -12
  853. package/dist/utils/table-utils/kepler-table.d.ts +168 -0
  854. package/dist/utils/table-utils/kepler-table.js +56 -22
  855. package/dist/utils/table-utils/row-data-container.d.ts +31 -0
  856. package/dist/utils/table-utils/row-data-container.js +11 -8
  857. package/dist/utils/utils.d.ts +98 -0
  858. package/dist/utils/utils.js +28 -4
  859. package/package.json +139 -60
  860. package/src/actions/action-wrapper.ts +183 -0
  861. package/src/actions/actions.ts +259 -0
  862. package/src/actions/identity-actions.ts +116 -0
  863. package/src/actions/map-state-actions.ts +116 -0
  864. package/src/actions/map-style-actions.ts +243 -0
  865. package/src/actions/provider-actions.ts +218 -0
  866. package/src/actions/ui-state-actions.ts +490 -0
  867. package/src/actions/vis-state-actions.ts +1279 -0
  868. package/src/cloud-providers/index.ts +22 -0
  869. package/src/cloud-providers/provider.ts +276 -0
  870. package/src/components/bottom-widget.tsx +277 -0
  871. package/src/components/common/action-panel.tsx +207 -0
  872. package/src/components/common/animation-control/animation-control.tsx +157 -0
  873. package/src/components/common/animation-control/animation-controller.ts +250 -0
  874. package/src/components/common/animation-control/animation-speed-slider.tsx +86 -0
  875. package/src/components/common/animation-control/floating-time-display.tsx +209 -0
  876. package/src/components/common/animation-control/playback-controls.tsx +316 -0
  877. package/src/components/common/animation-control/speed-control.tsx +71 -0
  878. package/src/components/common/checkbox.tsx +137 -0
  879. package/src/components/common/color-legend.tsx +203 -0
  880. package/src/components/common/data-table/button.tsx +54 -0
  881. package/src/components/common/data-table/cell-size.ts +185 -0
  882. package/src/components/common/data-table/grid.tsx +57 -0
  883. package/src/components/common/data-table/index.tsx +693 -0
  884. package/src/components/common/data-table/option-dropdown.tsx +122 -0
  885. package/src/components/common/dataset-label.tsx +48 -0
  886. package/src/components/common/error-boundary.tsx +47 -0
  887. package/src/components/common/field-selector.tsx +242 -0
  888. package/src/components/common/field-token.tsx +60 -0
  889. package/src/components/common/file-uploader/file-drop.tsx +209 -0
  890. package/src/components/common/file-uploader/file-upload-progress.tsx +123 -0
  891. package/src/components/common/file-uploader/file-upload.tsx +319 -0
  892. package/src/components/common/file-uploader/upload-button.tsx +89 -0
  893. package/src/components/common/histogram-plot.tsx +125 -0
  894. package/src/components/common/icons/add.tsx +37 -0
  895. package/src/components/common/icons/anchor_window.tsx +49 -0
  896. package/src/components/common/icons/arrow-down-alt.tsx +37 -0
  897. package/src/components/common/icons/arrow-down-solid.tsx +37 -0
  898. package/src/components/common/icons/arrow-down.tsx +40 -0
  899. package/src/components/common/icons/arrow-left.tsx +42 -0
  900. package/src/components/common/icons/arrow-right.tsx +40 -0
  901. package/src/components/common/icons/arrow-up-alt.tsx +40 -0
  902. package/src/components/common/icons/arrow-up-solid.tsx +37 -0
  903. package/src/components/common/icons/arrow-up.tsx +40 -0
  904. package/src/components/common/icons/base.tsx +95 -0
  905. package/src/components/common/icons/bug.tsx +40 -0
  906. package/src/components/common/icons/cancel.tsx +37 -0
  907. package/src/components/common/icons/checkmark.tsx +39 -0
  908. package/src/components/common/icons/chevron-right.js +2 -2
  909. package/src/components/common/icons/clipboard.tsx +40 -0
  910. package/src/components/common/icons/clock.tsx +38 -0
  911. package/src/components/common/icons/close.tsx +43 -0
  912. package/src/components/common/icons/code-alt.tsx +37 -0
  913. package/src/components/common/icons/copy.tsx +38 -0
  914. package/src/components/common/icons/crosshairs.tsx +37 -0
  915. package/src/components/common/icons/cube-3d.tsx +39 -0
  916. package/src/components/common/icons/cursor-click.tsx +43 -0
  917. package/src/components/common/icons/data-table.tsx +40 -0
  918. package/src/components/common/icons/db.tsx +40 -0
  919. package/src/components/common/icons/delete.tsx +39 -0
  920. package/src/components/common/icons/docs.tsx +40 -0
  921. package/src/components/common/icons/drag-n-drop.tsx +38 -0
  922. package/src/components/common/icons/draw-polygon.tsx +51 -0
  923. package/src/components/common/icons/email.tsx +39 -0
  924. package/src/components/common/icons/expand.tsx +39 -0
  925. package/src/components/common/icons/eye-seen.tsx +38 -0
  926. package/src/components/common/icons/eye-unseen.tsx +38 -0
  927. package/src/components/common/icons/file-type.tsx +71 -0
  928. package/src/components/common/icons/file.tsx +37 -0
  929. package/src/components/common/icons/files.tsx +37 -0
  930. package/src/components/common/icons/filter-funnel.tsx +37 -0
  931. package/src/components/common/icons/free-window.tsx +48 -0
  932. package/src/components/common/icons/gear.tsx +40 -0
  933. package/src/components/common/icons/hash.tsx +37 -0
  934. package/src/components/common/icons/histogram.tsx +42 -0
  935. package/src/components/common/icons/index.tsx +98 -0
  936. package/src/components/common/icons/info.tsx +48 -0
  937. package/src/components/common/icons/layers.tsx +37 -0
  938. package/src/components/common/icons/left-arrow.tsx +37 -0
  939. package/src/components/common/icons/legend.tsx +37 -0
  940. package/src/components/common/icons/line-chart.tsx +40 -0
  941. package/src/components/common/icons/login.tsx +41 -0
  942. package/src/components/common/icons/logout.tsx +38 -0
  943. package/src/components/common/icons/map-icon.tsx +62 -0
  944. package/src/components/common/icons/map.tsx +62 -0
  945. package/src/components/common/icons/messages.tsx +37 -0
  946. package/src/components/common/icons/minus.tsx +39 -0
  947. package/src/components/common/icons/order-by-dataset.tsx +49 -0
  948. package/src/components/common/icons/order-by-list.tsx +39 -0
  949. package/src/components/common/icons/pause.tsx +37 -0
  950. package/src/components/common/icons/picture.tsx +37 -0
  951. package/src/components/common/icons/pin.tsx +42 -0
  952. package/src/components/common/icons/play.tsx +37 -0
  953. package/src/components/common/icons/polygon.tsx +65 -0
  954. package/src/components/common/icons/rectangle.tsx +66 -0
  955. package/src/components/common/icons/reduce.tsx +42 -0
  956. package/src/components/common/icons/reset.tsx +37 -0
  957. package/src/components/common/icons/rocket.tsx +37 -0
  958. package/src/components/common/icons/save.tsx +38 -0
  959. package/src/components/common/icons/save2.tsx +42 -0
  960. package/src/components/common/icons/search.tsx +38 -0
  961. package/src/components/common/icons/settings.tsx +39 -0
  962. package/src/components/common/icons/share.tsx +37 -0
  963. package/src/components/common/icons/split.tsx +57 -0
  964. package/src/components/common/icons/square-select.tsx +38 -0
  965. package/src/components/common/icons/swap-horizontal.js +1 -1
  966. package/src/components/common/icons/table.tsx +41 -0
  967. package/src/components/common/icons/trash.tsx +45 -0
  968. package/src/components/common/icons/upload.tsx +37 -0
  969. package/src/components/common/icons/vert-dots.tsx +44 -0
  970. package/src/components/common/icons/vert-three-dots.tsx +39 -0
  971. package/src/components/common/icons/warning.tsx +40 -0
  972. package/src/components/common/image-preview.tsx +118 -0
  973. package/src/components/common/info-helper.tsx +91 -0
  974. package/src/components/common/item-selector/accessor.ts +45 -0
  975. package/src/components/common/item-selector/chickleted-input.tsx +153 -0
  976. package/src/components/common/item-selector/dropdown-list.tsx +269 -0
  977. package/src/components/common/item-selector/item-selector-submenu.js +2 -1
  978. package/src/components/common/item-selector/item-selector.d.ts +24 -27
  979. package/src/components/common/item-selector/item-selector.tsx +373 -0
  980. package/src/components/common/item-selector/typeahead.tsx +533 -0
  981. package/src/components/common/line-chart.tsx +170 -0
  982. package/src/components/common/loading-spinner.tsx +75 -0
  983. package/src/components/common/logo.tsx +88 -0
  984. package/src/components/common/map-layer-selector.tsx +64 -0
  985. package/src/components/common/modal.tsx +238 -0
  986. package/src/components/common/portaled.tsx +311 -0
  987. package/src/components/common/progress-bar.tsx +74 -0
  988. package/src/components/common/range-brush.tsx +276 -0
  989. package/src/components/common/range-plot.tsx +145 -0
  990. package/src/components/common/range-slider.tsx +320 -0
  991. package/src/components/common/slider/mouse-event.ts +122 -0
  992. package/src/components/common/slider/slider-bar-handle.tsx +106 -0
  993. package/src/components/common/slider/slider-handle.tsx +210 -0
  994. package/src/components/common/slider/slider.tsx +234 -0
  995. package/src/components/common/styled-components.tsx +714 -0
  996. package/src/components/common/switch.tsx +47 -0
  997. package/src/components/common/time-range-slider-time-title.tsx +87 -0
  998. package/src/components/common/time-range-slider.tsx +171 -0
  999. package/src/components/common/time-slider-marker.tsx +187 -0
  1000. package/src/components/common/tippy-tooltip.tsx +130 -0
  1001. package/src/components/common/toolbar-item.tsx +99 -0
  1002. package/src/components/common/toolbar.tsx +49 -0
  1003. package/src/components/common/vertical-toolbar.tsx +35 -0
  1004. package/src/components/container.d.ts +8 -0
  1005. package/src/components/container.tsx +189 -0
  1006. package/src/components/context.ts +32 -0
  1007. package/src/components/editor/editor.tsx +234 -0
  1008. package/src/components/editor/feature-action-panel.tsx +155 -0
  1009. package/src/components/editor/feature-styles.ts +76 -0
  1010. package/src/components/editor/handle-style.ts +89 -0
  1011. package/src/components/filters/filter-panels/filter-panel-with-field-select.tsx +118 -0
  1012. package/src/components/filters/filter-panels/multi-select-filter-panel.tsx +63 -0
  1013. package/src/components/filters/filter-panels/new-filter-panel.tsx +100 -0
  1014. package/src/components/filters/filter-panels/polygon-filter-panel.tsx +84 -0
  1015. package/src/components/filters/filter-panels/range-filter-panel.tsx +63 -0
  1016. package/src/components/filters/filter-panels/single-select-filter-panel.tsx +63 -0
  1017. package/src/components/filters/filter-panels/time-range-filter-panel.tsx +92 -0
  1018. package/src/components/filters/filter-panels/types.ts +40 -0
  1019. package/src/components/filters/multi-select-filter.tsx +37 -0
  1020. package/src/components/filters/polygon-filter.tsx +74 -0
  1021. package/src/components/filters/range-filter.tsx +44 -0
  1022. package/src/components/filters/single-select-filter.tsx +50 -0
  1023. package/src/components/filters/time-range-filter.tsx +76 -0
  1024. package/src/components/filters/time-widget.tsx +240 -0
  1025. package/src/components/filters/types.ts +78 -0
  1026. package/src/components/geocoder/geocoder.tsx +307 -0
  1027. package/src/components/geocoder-panel.tsx +199 -0
  1028. package/src/components/index.ts +269 -0
  1029. package/src/components/injector.d.ts +33 -0
  1030. package/src/components/injector.tsx +171 -0
  1031. package/src/components/kepler-gl.d.ts +1 -2
  1032. package/src/components/kepler-gl.tsx +585 -0
  1033. package/src/components/map/coordinate-info.tsx +58 -0
  1034. package/src/components/map/layer-hover-info.tsx +192 -0
  1035. package/src/components/map/layer-selector-panel.tsx +122 -0
  1036. package/src/components/map/locale-panel.tsx +110 -0
  1037. package/src/components/map/map-control-panel.tsx +142 -0
  1038. package/src/components/map/map-control-tooltip.tsx +45 -0
  1039. package/src/components/map/map-control.tsx +138 -0
  1040. package/src/components/map/map-draw-panel.tsx +145 -0
  1041. package/src/components/map/map-legend-panel.tsx +167 -0
  1042. package/src/components/map/map-legend.tsx +284 -0
  1043. package/src/components/map/map-popover.tsx +268 -0
  1044. package/src/components/map/split-map-button.tsx +98 -0
  1045. package/src/components/map/toggle-3d-button.tsx +90 -0
  1046. package/src/components/map-container.tsx +549 -0
  1047. package/src/components/maps-layout.tsx +45 -0
  1048. package/src/components/modal-container.tsx +555 -0
  1049. package/src/components/modals/add-map-style-modal.tsx +304 -0
  1050. package/src/components/modals/cloud-tile.tsx +181 -0
  1051. package/src/components/modals/data-table-modal.tsx +241 -0
  1052. package/src/components/modals/delete-data-modal.tsx +55 -0
  1053. package/src/components/modals/error-display.tsx +43 -0
  1054. package/src/components/modals/export-data-modal.tsx +201 -0
  1055. package/src/components/modals/export-image-modal.tsx +155 -0
  1056. package/src/components/modals/export-map-modal/export-html-map.tsx +164 -0
  1057. package/src/components/modals/export-map-modal/export-json-map.tsx +112 -0
  1058. package/src/components/modals/export-map-modal/export-map-modal.tsx +109 -0
  1059. package/src/components/modals/image-modal-container.tsx +86 -0
  1060. package/src/components/modals/load-data-modal.tsx +120 -0
  1061. package/src/components/modals/load-storage-map.tsx +414 -0
  1062. package/src/components/modals/loading-dialog.tsx +77 -0
  1063. package/src/components/modals/modal-tabs.tsx +137 -0
  1064. package/src/components/modals/overwrite-map-modal.tsx +113 -0
  1065. package/src/components/modals/provider-modal-container.tsx +62 -0
  1066. package/src/components/modals/save-map-modal.tsx +277 -0
  1067. package/src/components/modals/share-map-modal.tsx +217 -0
  1068. package/src/components/modals/status-panel.tsx +106 -0
  1069. package/src/components/modals/storage-map-viewer.tsx +190 -0
  1070. package/src/components/notification-panel/notification-item.tsx +143 -0
  1071. package/src/components/notification-panel.tsx +75 -0
  1072. package/src/components/performance.tsx +105 -0
  1073. package/src/components/plot-container.tsx +243 -0
  1074. package/src/components/side-panel/common/dataset-info.tsx +46 -0
  1075. package/src/components/side-panel/common/dataset-tag.tsx +86 -0
  1076. package/src/components/side-panel/common/dataset-title.tsx +187 -0
  1077. package/src/components/side-panel/common/source-data-catalog.tsx +67 -0
  1078. package/src/components/side-panel/common/source-data-selector.tsx +90 -0
  1079. package/src/components/side-panel/common/types.ts +76 -0
  1080. package/src/components/side-panel/filter-manager.tsx +120 -0
  1081. package/src/components/side-panel/filter-panel/filter-panel-header.tsx +96 -0
  1082. package/src/components/side-panel/filter-panel/filter-panel.tsx +125 -0
  1083. package/src/components/side-panel/interaction-manager.tsx +59 -0
  1084. package/src/components/side-panel/interaction-panel/brush-config.tsx +58 -0
  1085. package/src/components/side-panel/interaction-panel/interaction-panel.tsx +124 -0
  1086. package/src/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.tsx +243 -0
  1087. package/src/components/side-panel/interaction-panel/tooltip-config.tsx +238 -0
  1088. package/src/components/side-panel/layer-manager.tsx +242 -0
  1089. package/src/components/side-panel/layer-panel/add-layer-button.tsx +208 -0
  1090. package/src/components/side-panel/layer-panel/color-dimension-scale-selector.tsx +33 -0
  1091. package/src/components/side-panel/layer-panel/color-palette.tsx +98 -0
  1092. package/src/components/side-panel/layer-panel/color-range-selector.tsx +388 -0
  1093. package/src/components/side-panel/layer-panel/color-selector.tsx +200 -0
  1094. package/src/components/side-panel/layer-panel/column-selector.tsx +102 -0
  1095. package/src/components/side-panel/layer-panel/custom-markers-config-group.tsx +30 -0
  1096. package/src/components/side-panel/layer-panel/custom-palette.tsx +301 -0
  1097. package/src/components/side-panel/layer-panel/custom-picker.tsx +99 -0
  1098. package/src/components/side-panel/layer-panel/dataset-layer-group.tsx +99 -0
  1099. package/src/components/side-panel/layer-panel/dataset-layer-section.tsx +100 -0
  1100. package/src/components/side-panel/layer-panel/dataset-section.tsx +125 -0
  1101. package/src/components/side-panel/layer-panel/dimension-scale-selector.tsx +64 -0
  1102. package/src/components/side-panel/layer-panel/hex-column-config.tsx +53 -0
  1103. package/src/components/side-panel/layer-panel/layer-column-config.tsx +115 -0
  1104. package/src/components/side-panel/layer-panel/layer-config-group.tsx +259 -0
  1105. package/src/components/side-panel/layer-panel/layer-configurator.tsx +1419 -0
  1106. package/src/components/side-panel/layer-panel/layer-list.tsx +193 -0
  1107. package/src/components/side-panel/layer-panel/layer-panel-header.tsx +273 -0
  1108. package/src/components/side-panel/layer-panel/layer-panel.tsx +197 -0
  1109. package/src/components/side-panel/layer-panel/layer-type-dropdown-list.tsx +118 -0
  1110. package/src/components/side-panel/layer-panel/layer-type-list-item.tsx +92 -0
  1111. package/src/components/side-panel/layer-panel/layer-type-selector.tsx +115 -0
  1112. package/src/components/side-panel/layer-panel/layer-visibility-by-zoom.tsx +123 -0
  1113. package/src/components/side-panel/layer-panel/panel-view-list-toggle.tsx +132 -0
  1114. package/src/components/side-panel/layer-panel/single-color-palette.tsx +94 -0
  1115. package/src/components/side-panel/layer-panel/text-label-panel.tsx +189 -0
  1116. package/src/components/side-panel/layer-panel/vis-config-by-field-selector.tsx +187 -0
  1117. package/src/components/side-panel/layer-panel/vis-config-slider.tsx +237 -0
  1118. package/src/components/side-panel/layer-panel/vis-config-switch.tsx +86 -0
  1119. package/src/components/side-panel/map-manager.tsx +123 -0
  1120. package/src/components/side-panel/map-style-panel/map-layer-selector.tsx +145 -0
  1121. package/src/components/side-panel/map-style-panel/map-style-selector.tsx +122 -0
  1122. package/src/components/side-panel/panel-dropdown.tsx +54 -0
  1123. package/src/components/side-panel/panel-header-action.tsx +114 -0
  1124. package/src/components/side-panel/panel-header.tsx +386 -0
  1125. package/src/components/side-panel/panel-tab.tsx +79 -0
  1126. package/src/components/side-panel/panel-title.tsx +35 -0
  1127. package/src/components/side-panel/panel-toggle.tsx +72 -0
  1128. package/src/components/side-panel/side-bar.tsx +141 -0
  1129. package/src/components/side-panel.tsx +261 -0
  1130. package/src/components/types.ts +41 -0
  1131. package/src/connect/keplergl-connect.ts +48 -0
  1132. package/src/connect/with-local-selector.tsx +70 -0
  1133. package/src/constants/action-types.ts +188 -0
  1134. package/src/constants/color-ranges.ts +87 -0
  1135. package/src/constants/default-settings.ts +1051 -0
  1136. package/src/deckgl-layers/3d-building-layer/3d-building-layer.ts +63 -0
  1137. package/src/deckgl-layers/3d-building-layer/3d-building-utils.ts +211 -0
  1138. package/src/deckgl-layers/3d-building-layer/types.ts +29 -0
  1139. package/src/deckgl-layers/column-layer/enhanced-column-layer.ts +63 -0
  1140. package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.ts +70 -0
  1141. package/src/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.ts +70 -0
  1142. package/src/deckgl-layers/layer-utils/cluster-utils.ts +78 -0
  1143. package/src/deckgl-layers/layer-utils/cpu-aggregator.ts +671 -0
  1144. package/src/deckgl-layers/layer-utils/shader-utils.ts +41 -0
  1145. package/src/deckgl-layers/line-layer/line-layer.ts +126 -0
  1146. package/src/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.ts +68 -0
  1147. package/src/deckgl-layers/svg-icon-layer/svg-icon-layer.ts +102 -0
  1148. package/src/index.ts +52 -0
  1149. package/src/layers/aggregation-layer.ts +400 -0
  1150. package/src/layers/arc-layer/arc-layer-icon.tsx +67 -0
  1151. package/src/layers/arc-layer/arc-layer.ts +294 -0
  1152. package/src/layers/base-layer.ts +1744 -0
  1153. package/src/layers/cluster-layer/cluster-layer.ts +162 -0
  1154. package/src/layers/geojson-layer/geojson-layer-icon.tsx +68 -0
  1155. package/src/layers/geojson-layer/geojson-layer.ts +462 -0
  1156. package/src/layers/geojson-layer/geojson-utils.ts +200 -0
  1157. package/src/layers/grid-layer/grid-layer-icon.tsx +53 -0
  1158. package/src/layers/grid-layer/grid-layer.ts +154 -0
  1159. package/src/layers/grid-layer/grid-utils.ts +84 -0
  1160. package/src/layers/h3-hexagon-layer/h3-hexagon-layer.ts +340 -0
  1161. package/src/layers/h3-hexagon-layer/h3-utils.ts +67 -0
  1162. package/src/layers/heatmap-layer/heatmap-layer.ts +255 -0
  1163. package/src/layers/hexagon-layer/hexagon-layer.ts +157 -0
  1164. package/src/layers/hexagon-layer/hexagon-utils.ts +64 -0
  1165. package/src/layers/icon-layer/icon-info-modal.tsx +155 -0
  1166. package/src/layers/icon-layer/icon-layer.ts +396 -0
  1167. package/src/layers/index.ts +81 -0
  1168. package/src/layers/layer-factory.ts +707 -0
  1169. package/src/layers/layer-text-label.ts +62 -0
  1170. package/src/layers/layer-update.ts +70 -0
  1171. package/src/layers/line-layer/line-layer.ts +223 -0
  1172. package/src/layers/mapbox-utils.ts +204 -0
  1173. package/src/layers/mapboxgl-layer.ts +176 -0
  1174. package/src/layers/point-layer/point-layer.ts +507 -0
  1175. package/src/layers/s2-geometry-layer/s2-geometry-layer.ts +369 -0
  1176. package/src/layers/s2-geometry-layer/s2-utils.ts +42 -0
  1177. package/src/layers/scenegraph-layer/scenegraph-layer.ts +237 -0
  1178. package/src/layers/trip-layer/trip-layer.ts +356 -0
  1179. package/src/layers/trip-layer/trip-utils.ts +177 -0
  1180. package/src/localization/formatted-message.tsx +42 -0
  1181. package/src/localization/index.ts +29 -0
  1182. package/src/localization/locales.ts +53 -0
  1183. package/src/localization/messages.ts +40 -0
  1184. package/src/localization/translations/ca.ts +476 -0
  1185. package/src/localization/translations/cn.ts +477 -0
  1186. package/src/localization/translations/en.ts +504 -0
  1187. package/src/localization/translations/es.ts +477 -0
  1188. package/src/localization/translations/fi.ts +448 -0
  1189. package/src/localization/translations/ja.ts +477 -0
  1190. package/src/localization/translations/pt.ts +449 -0
  1191. package/src/localization/translations/ru.ts +488 -0
  1192. package/src/middleware/index.ts +35 -0
  1193. package/src/processors/data-processor.ts +723 -0
  1194. package/src/processors/file-handler.ts +250 -0
  1195. package/src/processors/index.ts +23 -0
  1196. package/src/processors/types.ts +22 -0
  1197. package/src/reducers/combined-updaters.ts +215 -0
  1198. package/src/reducers/composer-helpers.ts +75 -0
  1199. package/src/reducers/core.ts +111 -0
  1200. package/src/reducers/index.ts +116 -0
  1201. package/src/reducers/map-state-updaters.ts +271 -0
  1202. package/src/reducers/map-state.ts +47 -0
  1203. package/src/reducers/map-style-updaters.ts +638 -0
  1204. package/src/reducers/map-style.ts +53 -0
  1205. package/src/reducers/provider-state-updaters.ts +454 -0
  1206. package/src/reducers/provider-state.ts +53 -0
  1207. package/src/reducers/root.ts +230 -0
  1208. package/src/reducers/types.ts +18 -0
  1209. package/src/reducers/ui-state-updaters.ts +925 -0
  1210. package/src/reducers/ui-state.ts +75 -0
  1211. package/src/reducers/vis-state-merger.ts +625 -0
  1212. package/src/reducers/vis-state-selectors.ts +35 -0
  1213. package/src/reducers/vis-state-updaters.ts +2567 -0
  1214. package/src/reducers/vis-state.ts +157 -0
  1215. package/src/schemas/dataset-schema.ts +141 -0
  1216. package/src/schemas/index.ts +52 -0
  1217. package/src/schemas/schema-manager.ts +445 -0
  1218. package/src/schemas/schema.ts +122 -0
  1219. package/src/schemas/vis-state-schema.ts +761 -0
  1220. package/src/styles/base.ts +1642 -0
  1221. package/src/styles/media-breakpoints.ts +56 -0
  1222. package/src/tasks/tasks.ts +92 -0
  1223. package/src/typedefs/deckgl.d.ts +25 -0
  1224. package/src/utils/aggregate-utils.ts +71 -0
  1225. package/src/utils/color-utils.ts +135 -0
  1226. package/src/utils/data-scale-utils.ts +73 -0
  1227. package/src/utils/data-utils.ts +459 -0
  1228. package/src/utils/dataset-utils.ts +261 -0
  1229. package/src/utils/dom-to-image.ts +533 -0
  1230. package/src/utils/dom-utils.ts +354 -0
  1231. package/src/utils/export-utils.ts +265 -0
  1232. package/src/utils/filter-utils.ts +1181 -0
  1233. package/src/utils/gpu-filter-utils.ts +249 -0
  1234. package/src/utils/index.ts +72 -0
  1235. package/src/utils/interaction-utils.ts +212 -0
  1236. package/src/utils/layer-utils.ts +248 -0
  1237. package/src/utils/map-style-utils/mapbox-gl-style-editor.ts +227 -0
  1238. package/src/utils/notifications-utils.ts +89 -0
  1239. package/src/utils/observe-dimensions.ts +127 -0
  1240. package/src/utils/split-map-utils.ts +104 -0
  1241. package/src/utils/table-utils/data-container-interface.ts +140 -0
  1242. package/src/utils/table-utils/data-container-utils.ts +90 -0
  1243. package/src/utils/table-utils/data-row.ts +110 -0
  1244. package/src/utils/table-utils/indexed-data-container.ts +184 -0
  1245. package/src/utils/table-utils/kepler-table.ts +638 -0
  1246. package/src/utils/table-utils/row-data-container.ts +178 -0
  1247. package/src/utils/utils.ts +228 -0
  1248. package/actions.js +0 -21
  1249. package/cloud-providers.js +0 -21
  1250. package/components.js +0 -21
  1251. package/constants.js +0 -21
  1252. package/dist/components/common/icons/arrow-down-solid .js +0 -64
  1253. package/dist/localization/en.js +0 -494
  1254. package/layers.js +0 -21
  1255. package/localization.js +0 -21
  1256. package/middleware.js +0 -21
  1257. package/processors.js +0 -21
  1258. package/reducers.js +0 -21
  1259. package/schemas.js +0 -21
  1260. package/src/actions/action-wrapper.js +0 -183
  1261. package/src/actions/actions.d.ts +0 -104
  1262. package/src/actions/actions.js +0 -178
  1263. package/src/actions/identity-actions.d.ts +0 -53
  1264. package/src/actions/identity-actions.js +0 -83
  1265. package/src/actions/index.d.ts +0 -23
  1266. package/src/actions/map-state-actions.d.ts +0 -46
  1267. package/src/actions/map-state-actions.js +0 -90
  1268. package/src/actions/map-style-actions.d.ts +0 -116
  1269. package/src/actions/map-style-actions.js +0 -135
  1270. package/src/actions/provider-actions.d.ts +0 -203
  1271. package/src/actions/provider-actions.js +0 -94
  1272. package/src/actions/ui-state-actions.d.ts +0 -200
  1273. package/src/actions/ui-state-actions.js +0 -272
  1274. package/src/actions/vis-state-actions.d.ts +0 -502
  1275. package/src/actions/vis-state-actions.js +0 -919
  1276. package/src/cloud-providers/index.d.ts +0 -53
  1277. package/src/cloud-providers/index.js +0 -21
  1278. package/src/cloud-providers/provider.js +0 -233
  1279. package/src/components/bottom-widget.d.ts +0 -33
  1280. package/src/components/bottom-widget.js +0 -235
  1281. package/src/components/common/action-panel.d.ts +0 -24
  1282. package/src/components/common/action-panel.js +0 -177
  1283. package/src/components/common/animation-control/animation-control.js +0 -155
  1284. package/src/components/common/animation-control/animation-controller.js +0 -224
  1285. package/src/components/common/animation-control/animation-speed-slider.js +0 -79
  1286. package/src/components/common/animation-control/floating-time-display.js +0 -192
  1287. package/src/components/common/animation-control/playback-controls.js +0 -278
  1288. package/src/components/common/animation-control/speed-control.js +0 -71
  1289. package/src/components/common/checkbox.js +0 -128
  1290. package/src/components/common/color-legend.js +0 -198
  1291. package/src/components/common/data-table/button.js +0 -47
  1292. package/src/components/common/data-table/cell-size.js +0 -180
  1293. package/src/components/common/data-table/grid.js +0 -55
  1294. package/src/components/common/data-table/index.js +0 -620
  1295. package/src/components/common/data-table/option-dropdown.js +0 -110
  1296. package/src/components/common/dataset-label.js +0 -40
  1297. package/src/components/common/error-boundary.js +0 -43
  1298. package/src/components/common/field-selector.js +0 -233
  1299. package/src/components/common/field-token.js +0 -56
  1300. package/src/components/common/file-uploader/file-drop.d.ts +0 -19
  1301. package/src/components/common/file-uploader/file-drop.js +0 -196
  1302. package/src/components/common/file-uploader/file-upload-progress.d.ts +0 -11
  1303. package/src/components/common/file-uploader/file-upload-progress.js +0 -110
  1304. package/src/components/common/file-uploader/file-upload.d.ts +0 -22
  1305. package/src/components/common/file-uploader/file-upload.js +0 -301
  1306. package/src/components/common/file-uploader/upload-button.d.ts.wip +0 -11
  1307. package/src/components/common/file-uploader/upload-button.js +0 -83
  1308. package/src/components/common/histogram-plot.js +0 -102
  1309. package/src/components/common/icons/add.js +0 -43
  1310. package/src/components/common/icons/anchor_window.js +0 -53
  1311. package/src/components/common/icons/arrow-down-alt.js +0 -43
  1312. package/src/components/common/icons/arrow-down-solid .js +0 -43
  1313. package/src/components/common/icons/arrow-down.js +0 -46
  1314. package/src/components/common/icons/arrow-left.js +0 -48
  1315. package/src/components/common/icons/arrow-right.js +0 -46
  1316. package/src/components/common/icons/arrow-up-alt.js +0 -46
  1317. package/src/components/common/icons/arrow-up-solid.js +0 -43
  1318. package/src/components/common/icons/arrow-up.js +0 -46
  1319. package/src/components/common/icons/base.js +0 -90
  1320. package/src/components/common/icons/bug.js +0 -46
  1321. package/src/components/common/icons/cancel.js +0 -43
  1322. package/src/components/common/icons/checkmark.js +0 -45
  1323. package/src/components/common/icons/clipboard.js +0 -46
  1324. package/src/components/common/icons/clock.js +0 -44
  1325. package/src/components/common/icons/close.js +0 -49
  1326. package/src/components/common/icons/code-alt.js +0 -43
  1327. package/src/components/common/icons/copy.js +0 -44
  1328. package/src/components/common/icons/crosshairs.js +0 -43
  1329. package/src/components/common/icons/cube-3d.js +0 -45
  1330. package/src/components/common/icons/cursor-click.js +0 -49
  1331. package/src/components/common/icons/data-table.js +0 -45
  1332. package/src/components/common/icons/db.js +0 -45
  1333. package/src/components/common/icons/delete.js +0 -44
  1334. package/src/components/common/icons/docs.js +0 -46
  1335. package/src/components/common/icons/drag-n-drop.js +0 -44
  1336. package/src/components/common/icons/draw-polygon.js +0 -60
  1337. package/src/components/common/icons/email.js +0 -45
  1338. package/src/components/common/icons/expand.js +0 -45
  1339. package/src/components/common/icons/eye-seen.js +0 -44
  1340. package/src/components/common/icons/eye-unseen.js +0 -44
  1341. package/src/components/common/icons/file-type.js +0 -57
  1342. package/src/components/common/icons/file.js +0 -43
  1343. package/src/components/common/icons/files.js +0 -42
  1344. package/src/components/common/icons/filter-funnel.js +0 -43
  1345. package/src/components/common/icons/free-window.js +0 -53
  1346. package/src/components/common/icons/gear.js +0 -45
  1347. package/src/components/common/icons/hash.js +0 -43
  1348. package/src/components/common/icons/histogram.js +0 -47
  1349. package/src/components/common/icons/index.js +0 -96
  1350. package/src/components/common/icons/info.js +0 -54
  1351. package/src/components/common/icons/layers.js +0 -43
  1352. package/src/components/common/icons/left-arrow.js +0 -43
  1353. package/src/components/common/icons/legend.js +0 -43
  1354. package/src/components/common/icons/line-chart.js +0 -45
  1355. package/src/components/common/icons/login.js +0 -46
  1356. package/src/components/common/icons/logout.js +0 -43
  1357. package/src/components/common/icons/map-icon.js +0 -69
  1358. package/src/components/common/icons/map.js +0 -69
  1359. package/src/components/common/icons/messages.js +0 -43
  1360. package/src/components/common/icons/minus.js +0 -45
  1361. package/src/components/common/icons/pause.js +0 -43
  1362. package/src/components/common/icons/picture.js +0 -43
  1363. package/src/components/common/icons/pin.js +0 -43
  1364. package/src/components/common/icons/play.js +0 -43
  1365. package/src/components/common/icons/polygon.js +0 -74
  1366. package/src/components/common/icons/rectangle.js +0 -75
  1367. package/src/components/common/icons/reduce.js +0 -48
  1368. package/src/components/common/icons/reset.js +0 -43
  1369. package/src/components/common/icons/rocket.js +0 -43
  1370. package/src/components/common/icons/save.js +0 -44
  1371. package/src/components/common/icons/save2.js +0 -47
  1372. package/src/components/common/icons/search.js +0 -44
  1373. package/src/components/common/icons/settings.js +0 -45
  1374. package/src/components/common/icons/share.js +0 -43
  1375. package/src/components/common/icons/split.js +0 -63
  1376. package/src/components/common/icons/square-select.js +0 -44
  1377. package/src/components/common/icons/table.js +0 -46
  1378. package/src/components/common/icons/trash.js +0 -51
  1379. package/src/components/common/icons/upload.js +0 -44
  1380. package/src/components/common/icons/vert-dots.js +0 -50
  1381. package/src/components/common/icons/vert-three-dots.js +0 -45
  1382. package/src/components/common/icons/warning.js +0 -46
  1383. package/src/components/common/image-preview.js +0 -111
  1384. package/src/components/common/info-helper.js +0 -84
  1385. package/src/components/common/item-selector/accessor.js +0 -45
  1386. package/src/components/common/item-selector/chickleted-input.js +0 -143
  1387. package/src/components/common/item-selector/dropdown-list.js +0 -258
  1388. package/src/components/common/item-selector/item-selector.js +0 -360
  1389. package/src/components/common/item-selector/typeahead.js +0 -507
  1390. package/src/components/common/line-chart.js +0 -134
  1391. package/src/components/common/loading-spinner.js +0 -64
  1392. package/src/components/common/logo.js +0 -92
  1393. package/src/components/common/map-layer-selector.d.ts +0 -10
  1394. package/src/components/common/map-layer-selector.js +0 -54
  1395. package/src/components/common/modal.js +0 -233
  1396. package/src/components/common/portaled.js +0 -264
  1397. package/src/components/common/progress-bar.d.ts +0 -13
  1398. package/src/components/common/progress-bar.js +0 -49
  1399. package/src/components/common/range-brush.js +0 -256
  1400. package/src/components/common/range-plot.js +0 -139
  1401. package/src/components/common/range-slider.js +0 -299
  1402. package/src/components/common/slider/mouse-event.js +0 -97
  1403. package/src/components/common/slider/slider-bar-handle.js +0 -97
  1404. package/src/components/common/slider/slider-handle.js +0 -181
  1405. package/src/components/common/slider/slider.js +0 -213
  1406. package/src/components/common/styled-components.js +0 -657
  1407. package/src/components/common/switch.js +0 -50
  1408. package/src/components/common/time-range-slider-time-title.js +0 -76
  1409. package/src/components/common/time-range-slider.js +0 -163
  1410. package/src/components/common/time-slider-marker.js +0 -168
  1411. package/src/components/common/toolbar-item.d.ts +0 -14
  1412. package/src/components/common/toolbar-item.js +0 -83
  1413. package/src/components/common/toolbar.js +0 -45
  1414. package/src/components/common/vertical-toolbar.js +0 -35
  1415. package/src/components/container.js +0 -173
  1416. package/src/components/context.d.ts +0 -10
  1417. package/src/components/context.js +0 -32
  1418. package/src/components/editor/editor.js +0 -218
  1419. package/src/components/editor/feature-action-panel.js +0 -143
  1420. package/src/components/editor/feature-styles.js +0 -75
  1421. package/src/components/editor/handle-style.js +0 -89
  1422. package/src/components/filters/filter-panels/filter-panel-types.d.ts +0 -28
  1423. package/src/components/filters/filter-panels/filter-panel-with-field-select.js +0 -124
  1424. package/src/components/filters/filter-panels/multi-select-filter-panel.js +0 -75
  1425. package/src/components/filters/filter-panels/new-filter-panel.js +0 -99
  1426. package/src/components/filters/filter-panels/polygon-filter-panel.js +0 -96
  1427. package/src/components/filters/filter-panels/range-filter-panel.js +0 -75
  1428. package/src/components/filters/filter-panels/single-select-filter-panel.js +0 -75
  1429. package/src/components/filters/filter-panels/time-range-filter-panel.js +0 -95
  1430. package/src/components/filters/multi-select-filter.js +0 -36
  1431. package/src/components/filters/polygon-filter.d.ts +0 -13
  1432. package/src/components/filters/polygon-filter.js +0 -73
  1433. package/src/components/filters/range-filter.js +0 -43
  1434. package/src/components/filters/single-select-filter.js +0 -49
  1435. package/src/components/filters/time-range-filter.js +0 -68
  1436. package/src/components/filters/time-widget.js +0 -228
  1437. package/src/components/geocoder/geocoder.d.ts +0 -33
  1438. package/src/components/geocoder/geocoder.js +0 -272
  1439. package/src/components/geocoder-panel.js +0 -191
  1440. package/src/components/index.js +0 -254
  1441. package/src/components/injector.js +0 -161
  1442. package/src/components/kepler-gl.js +0 -518
  1443. package/src/components/map/coordinate-info.js +0 -53
  1444. package/src/components/map/layer-hover-info.d.ts +0 -12
  1445. package/src/components/map/layer-hover-info.js +0 -185
  1446. package/src/components/map/layer-selector-panel.d.ts +0 -16
  1447. package/src/components/map/layer-selector-panel.js +0 -106
  1448. package/src/components/map/locale-panel.d.ts +0 -12
  1449. package/src/components/map/locale-panel.js +0 -91
  1450. package/src/components/map/map-control-panel.d.ts +0 -11
  1451. package/src/components/map/map-control-panel.js +0 -98
  1452. package/src/components/map/map-control-tooltip.d.ts +0 -8
  1453. package/src/components/map/map-control-tooltip.js +0 -40
  1454. package/src/components/map/map-control.d.ts +0 -37
  1455. package/src/components/map/map-control.js +0 -100
  1456. package/src/components/map/map-draw-panel.d.ts +0 -16
  1457. package/src/components/map/map-draw-panel.js +0 -125
  1458. package/src/components/map/map-legend-panel.d.ts +0 -20
  1459. package/src/components/map/map-legend-panel.js +0 -100
  1460. package/src/components/map/map-legend.d.ts +0 -58
  1461. package/src/components/map/map-legend.js +0 -228
  1462. package/src/components/map/map-popover.d.ts +0 -28
  1463. package/src/components/map/map-popover.js +0 -250
  1464. package/src/components/map/split-map-button.d.ts +0 -19
  1465. package/src/components/map/split-map-button.js +0 -82
  1466. package/src/components/map/toggle-3d-button.d.ts +0 -16
  1467. package/src/components/map/toggle-3d-button.js +0 -75
  1468. package/src/components/map-container.d.ts +0 -18
  1469. package/src/components/map-container.js +0 -499
  1470. package/src/components/maps-layout.d.ts +0 -5
  1471. package/src/components/maps-layout.js +0 -40
  1472. package/src/components/modal-container.d.ts +0 -37
  1473. package/src/components/modal-container.js +0 -543
  1474. package/src/components/modals/add-map-style-modal.js +0 -298
  1475. package/src/components/modals/cloud-tile.js +0 -147
  1476. package/src/components/modals/data-table-modal.js +0 -217
  1477. package/src/components/modals/delete-data-modal.js +0 -48
  1478. package/src/components/modals/error-display.js +0 -39
  1479. package/src/components/modals/export-data-modal.js +0 -193
  1480. package/src/components/modals/export-image-modal.d.ts +0 -21
  1481. package/src/components/modals/export-image-modal.js +0 -144
  1482. package/src/components/modals/export-map-modal/export-html-map.d.ts +0 -21
  1483. package/src/components/modals/export-map-modal/export-html-map.js +0 -145
  1484. package/src/components/modals/export-map-modal/export-json-map.js +0 -100
  1485. package/src/components/modals/export-map-modal/export-map-modal.js +0 -114
  1486. package/src/components/modals/image-modal-container.d.ts +0 -13
  1487. package/src/components/modals/image-modal-container.js +0 -76
  1488. package/src/components/modals/load-data-modal.d.ts +0 -30
  1489. package/src/components/modals/load-data-modal.js +0 -94
  1490. package/src/components/modals/load-storage-map.js +0 -381
  1491. package/src/components/modals/loading-dialog.js +0 -69
  1492. package/src/components/modals/modal-tabs.js +0 -126
  1493. package/src/components/modals/overwrite-map-modal.d.ts +0 -18
  1494. package/src/components/modals/overwrite-map-modal.js +0 -97
  1495. package/src/components/modals/provider-modal-container.d.ts +0 -12
  1496. package/src/components/modals/provider-modal-container.js +0 -60
  1497. package/src/components/modals/save-map-modal.d.ts +0 -32
  1498. package/src/components/modals/save-map-modal.js +0 -244
  1499. package/src/components/modals/share-map-modal.js +0 -208
  1500. package/src/components/modals/status-panel.js +0 -95
  1501. package/src/components/modals/storage-map-viewer.js +0 -177
  1502. package/src/components/notification-panel/notification-item.js +0 -132
  1503. package/src/components/notification-panel.js +0 -72
  1504. package/src/components/performance.js +0 -103
  1505. package/src/components/plot-container.js +0 -228
  1506. package/src/components/side-panel/common/dataset-info.js +0 -45
  1507. package/src/components/side-panel/common/dataset-tag.js +0 -55
  1508. package/src/components/side-panel/common/dataset-title.js +0 -146
  1509. package/src/components/side-panel/common/source-data-catalog.js +0 -61
  1510. package/src/components/side-panel/common/source-data-selector.js +0 -79
  1511. package/src/components/side-panel/filter-manager.js +0 -105
  1512. package/src/components/side-panel/filter-panel/filter-panel-header.js +0 -83
  1513. package/src/components/side-panel/filter-panel/filter-panel.js +0 -126
  1514. package/src/components/side-panel/interaction-manager.js +0 -46
  1515. package/src/components/side-panel/interaction-panel/brush-config.js +0 -51
  1516. package/src/components/side-panel/interaction-panel/interaction-panel.js +0 -115
  1517. package/src/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +0 -199
  1518. package/src/components/side-panel/interaction-panel/tooltip-config.js +0 -190
  1519. package/src/components/side-panel/layer-manager.js +0 -290
  1520. package/src/components/side-panel/layer-panel/color-dimension-scale-selector.js +0 -33
  1521. package/src/components/side-panel/layer-panel/color-palette.js +0 -90
  1522. package/src/components/side-panel/layer-panel/color-range-selector.js +0 -359
  1523. package/src/components/side-panel/layer-panel/color-selector.js +0 -196
  1524. package/src/components/side-panel/layer-panel/column-selector.js +0 -70
  1525. package/src/components/side-panel/layer-panel/custom-markers-config-group.js +0 -30
  1526. package/src/components/side-panel/layer-panel/custom-palette.js +0 -296
  1527. package/src/components/side-panel/layer-panel/custom-picker.js +0 -88
  1528. package/src/components/side-panel/layer-panel/dimension-scale-selector.js +0 -48
  1529. package/src/components/side-panel/layer-panel/hex-column-config.js +0 -45
  1530. package/src/components/side-panel/layer-panel/layer-column-config.js +0 -113
  1531. package/src/components/side-panel/layer-panel/layer-config-group.js +0 -237
  1532. package/src/components/side-panel/layer-panel/layer-configurator.js +0 -1412
  1533. package/src/components/side-panel/layer-panel/layer-panel-header.js +0 -236
  1534. package/src/components/side-panel/layer-panel/layer-panel.js +0 -171
  1535. package/src/components/side-panel/layer-panel/layer-type-dropdown-list.js +0 -105
  1536. package/src/components/side-panel/layer-panel/layer-type-list-item.js +0 -83
  1537. package/src/components/side-panel/layer-panel/layer-type-selector.js +0 -89
  1538. package/src/components/side-panel/layer-panel/layer-visibility-by-zoom.js +0 -123
  1539. package/src/components/side-panel/layer-panel/single-color-palette.js +0 -98
  1540. package/src/components/side-panel/layer-panel/text-label-panel.js +0 -179
  1541. package/src/components/side-panel/layer-panel/vis-config-by-field-selector.js +0 -163
  1542. package/src/components/side-panel/layer-panel/vis-config-slider.js +0 -82
  1543. package/src/components/side-panel/layer-panel/vis-config-switch.js +0 -87
  1544. package/src/components/side-panel/map-manager.js +0 -114
  1545. package/src/components/side-panel/map-style-panel/map-layer-selector.js +0 -128
  1546. package/src/components/side-panel/map-style-panel/map-style-selector.js +0 -111
  1547. package/src/components/side-panel/panel-dropdown.js +0 -53
  1548. package/src/components/side-panel/panel-header-action.js +0 -106
  1549. package/src/components/side-panel/panel-header.js +0 -321
  1550. package/src/components/side-panel/panel-tab.js +0 -62
  1551. package/src/components/side-panel/panel-title.js +0 -32
  1552. package/src/components/side-panel/panel-toggle.js +0 -70
  1553. package/src/components/side-panel/side-bar.js +0 -136
  1554. package/src/components/side-panel.d.ts +0 -33
  1555. package/src/components/side-panel.js +0 -253
  1556. package/src/connect/keplergl-connect.js +0 -47
  1557. package/src/connect/with-local-selector.d.ts +0 -11
  1558. package/src/connect/with-local-selector.js +0 -67
  1559. package/src/constants/action-types.d.ts +0 -135
  1560. package/src/constants/action-types.js +0 -184
  1561. package/src/constants/color-ranges.js +0 -72
  1562. package/src/constants/default-settings.js +0 -994
  1563. package/src/deckgl-layers/3d-building-layer/3d-building-layer.js +0 -56
  1564. package/src/deckgl-layers/3d-building-layer/3d-building-utils.js +0 -192
  1565. package/src/deckgl-layers/column-layer/enhanced-column-layer.js +0 -63
  1566. package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +0 -70
  1567. package/src/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +0 -70
  1568. package/src/deckgl-layers/layer-utils/cluster-utils.js +0 -76
  1569. package/src/deckgl-layers/layer-utils/cpu-aggregator.js +0 -583
  1570. package/src/deckgl-layers/layer-utils/shader-utils.js +0 -41
  1571. package/src/deckgl-layers/line-layer/line-layer.js +0 -122
  1572. package/src/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +0 -57
  1573. package/src/deckgl-layers/svg-icon-layer/svg-icon-layer.js +0 -85
  1574. package/src/index.js +0 -52
  1575. package/src/layers/aggregation-layer.js +0 -356
  1576. package/src/layers/arc-layer/arc-layer-icon.js +0 -67
  1577. package/src/layers/arc-layer/arc-layer.js +0 -221
  1578. package/src/layers/base-layer.js +0 -1545
  1579. package/src/layers/cluster-layer/cluster-layer.js +0 -125
  1580. package/src/layers/geojson-layer/geojson-layer-icon.js +0 -68
  1581. package/src/layers/geojson-layer/geojson-layer.js +0 -344
  1582. package/src/layers/geojson-layer/geojson-utils.js +0 -179
  1583. package/src/layers/grid-layer/grid-layer-icon.js +0 -53
  1584. package/src/layers/grid-layer/grid-layer.js +0 -95
  1585. package/src/layers/grid-layer/grid-utils.js +0 -71
  1586. package/src/layers/h3-hexagon-layer/h3-hexagon-layer.js +0 -264
  1587. package/src/layers/h3-hexagon-layer/h3-utils.js +0 -65
  1588. package/src/layers/heatmap-layer/heatmap-layer.js +0 -226
  1589. package/src/layers/hexagon-layer/hexagon-layer.js +0 -95
  1590. package/src/layers/hexagon-layer/hexagon-utils.js +0 -63
  1591. package/src/layers/icon-layer/icon-info-modal.js +0 -155
  1592. package/src/layers/icon-layer/icon-layer.js +0 -324
  1593. package/src/layers/index.d.ts +0 -128
  1594. package/src/layers/index.js +0 -76
  1595. package/src/layers/layer-factory.d.ts +0 -149
  1596. package/src/layers/layer-factory.js +0 -487
  1597. package/src/layers/layer-text-label.js +0 -62
  1598. package/src/layers/layer-update.js +0 -71
  1599. package/src/layers/line-layer/line-layer.js +0 -161
  1600. package/src/layers/mapbox-utils.js +0 -195
  1601. package/src/layers/mapboxgl-layer.js +0 -154
  1602. package/src/layers/point-layer/point-layer.js +0 -412
  1603. package/src/layers/s2-geometry-layer/s2-geometry-layer.js +0 -265
  1604. package/src/layers/s2-geometry-layer/s2-utils.js +0 -36
  1605. package/src/layers/scenegraph-layer/scenegraph-layer.js +0 -182
  1606. package/src/layers/trip-layer/trip-layer.js +0 -295
  1607. package/src/layers/trip-layer/trip-utils.js +0 -169
  1608. package/src/localization/en.js +0 -504
  1609. package/src/localization/formatted-message.js +0 -33
  1610. package/src/localization/index.js +0 -32
  1611. package/src/localization/locales.js +0 -46
  1612. package/src/middleware/index.js +0 -34
  1613. package/src/processors/data-processor.d.ts +0 -57
  1614. package/src/processors/data-processor.js +0 -684
  1615. package/src/processors/file-handler.d.ts +0 -46
  1616. package/src/processors/file-handler.js +0 -220
  1617. package/src/processors/index.js +0 -22
  1618. package/src/reducers/combined-updaters.d.ts +0 -26
  1619. package/src/reducers/combined-updaters.js +0 -198
  1620. package/src/reducers/composer-helpers.d.ts +0 -32
  1621. package/src/reducers/composer-helpers.js +0 -70
  1622. package/src/reducers/core.d.ts +0 -25
  1623. package/src/reducers/core.js +0 -97
  1624. package/src/reducers/index.d.ts +0 -118
  1625. package/src/reducers/index.js +0 -53
  1626. package/src/reducers/map-state-updaters.d.ts +0 -64
  1627. package/src/reducers/map-state-updaters.js +0 -224
  1628. package/src/reducers/map-state.js +0 -47
  1629. package/src/reducers/map-style-updaters.d.ts +0 -76
  1630. package/src/reducers/map-style-updaters.js +0 -541
  1631. package/src/reducers/map-style.js +0 -53
  1632. package/src/reducers/provider-state-updaters.d.ts +0 -88
  1633. package/src/reducers/provider-state-updaters.js +0 -428
  1634. package/src/reducers/provider-state.js +0 -53
  1635. package/src/reducers/root.js +0 -230
  1636. package/src/reducers/types.d.ts +0 -10
  1637. package/src/reducers/ui-state-updaters.d.ts +0 -198
  1638. package/src/reducers/ui-state-updaters.js +0 -766
  1639. package/src/reducers/ui-state.js +0 -73
  1640. package/src/reducers/vis-state-merger.d.ts +0 -78
  1641. package/src/reducers/vis-state-merger.js +0 -557
  1642. package/src/reducers/vis-state-selectors.js +0 -35
  1643. package/src/reducers/vis-state-updaters.d.ts +0 -534
  1644. package/src/reducers/vis-state-updaters.js +0 -2137
  1645. package/src/reducers/vis-state.js +0 -155
  1646. package/src/schemas/dataset-schema.js +0 -141
  1647. package/src/schemas/index.d.ts +0 -24
  1648. package/src/schemas/index.js +0 -42
  1649. package/src/schemas/schema-manager.d.ts +0 -229
  1650. package/src/schemas/schema-manager.js +0 -228
  1651. package/src/schemas/schema.d.ts +0 -47
  1652. package/src/schemas/schema.js +0 -90
  1653. package/src/schemas/versions.d.ts +0 -23
  1654. package/src/schemas/vis-state-schema.js +0 -754
  1655. package/src/styles/base.js +0 -1620
  1656. package/src/styles/media-breakpoints.js +0 -47
  1657. package/src/tasks/tasks.js +0 -92
  1658. package/src/typedefs/README.md +0 -3
  1659. package/src/typedefs/deck.gl__core.d.ts +0 -64
  1660. package/src/typedefs/deck.gl__mesh-layers.d.ts +0 -33
  1661. package/src/utils/aggregate-utils.js +0 -71
  1662. package/src/utils/color-utils.js +0 -115
  1663. package/src/utils/data-scale-utils.d.ts +0 -26
  1664. package/src/utils/data-scale-utils.js +0 -61
  1665. package/src/utils/data-utils.d.ts +0 -46
  1666. package/src/utils/data-utils.js +0 -447
  1667. package/src/utils/dataset-utils.d.ts +0 -10
  1668. package/src/utils/dataset-utils.js +0 -255
  1669. package/src/utils/dom-to-image.js +0 -533
  1670. package/src/utils/dom-utils.js +0 -354
  1671. package/src/utils/export-utils.js +0 -247
  1672. package/src/utils/filter-utils.d.ts +0 -192
  1673. package/src/utils/filter-utils.js +0 -1114
  1674. package/src/utils/gpu-filter-utils.d.ts +0 -28
  1675. package/src/utils/gpu-filter-utils.js +0 -253
  1676. package/src/utils/index.d.ts +0 -5
  1677. package/src/utils/index.js +0 -57
  1678. package/src/utils/interaction-utils.d.ts +0 -36
  1679. package/src/utils/interaction-utils.js +0 -185
  1680. package/src/utils/layer-utils.d.ts +0 -78
  1681. package/src/utils/layer-utils.js +0 -206
  1682. package/src/utils/map-style-utils/mapbox-gl-style-editor.js +0 -201
  1683. package/src/utils/notifications-utils.js +0 -83
  1684. package/src/utils/observe-dimensions.d.ts +0 -18
  1685. package/src/utils/observe-dimensions.js +0 -115
  1686. package/src/utils/split-map-utils.js +0 -104
  1687. package/src/utils/table-utils/data-container-interface.d.ts +0 -140
  1688. package/src/utils/table-utils/data-container-utils.d.ts +0 -43
  1689. package/src/utils/table-utils/data-container-utils.js +0 -61
  1690. package/src/utils/table-utils/data-row.d.ts +0 -65
  1691. package/src/utils/table-utils/data-row.js +0 -54
  1692. package/src/utils/table-utils/index.d.ts +0 -1
  1693. package/src/utils/table-utils/indexed-data-container.d.ts +0 -26
  1694. package/src/utils/table-utils/indexed-data-container.js +0 -152
  1695. package/src/utils/table-utils/kepler-table.d.ts +0 -114
  1696. package/src/utils/table-utils/kepler-table.js +0 -508
  1697. package/src/utils/table-utils/row-data-container.d.ts +0 -30
  1698. package/src/utils/table-utils/row-data-container.js +0 -151
  1699. package/src/utils/utils.js +0 -202
  1700. package/styles.js +0 -21
  1701. /package/src/actions/{index.js → index.ts} +0 -0
  1702. /package/src/components/common/data-table/{canvas.js → canvas.tsx} +0 -0
  1703. /package/src/components/editor/{constants.js → constants.ts} +0 -0
  1704. /package/src/components/filters/{components.js → components.ts} +0 -0
  1705. /package/src/components/filters/{index.js → index.ts} +0 -0
  1706. /package/src/components/map/{map-control-toolbar.js → map-control-toolbar.tsx} +0 -0
  1707. /package/src/components/modals/export-map-modal/{components.js → components.tsx} +0 -0
  1708. /package/src/components/modals/{modal-dialog.js → modal-dialog.tsx} +0 -0
  1709. /package/src/components/side-panel/{cloud-storage-dropdown.js → cloud-storage-dropdown.tsx} +0 -0
  1710. /package/src/components/side-panel/{custom-panel.js → custom-panel.tsx} +0 -0
  1711. /package/src/components/side-panel/layer-panel/{layer-aggregation-resolution.js → layer-aggregation-resolution.tsx} +0 -0
  1712. /package/src/constants/{color-palette.js → color-palette.ts} +0 -0
  1713. /package/src/constants/{custom-color-ranges.js → custom-color-ranges.ts} +0 -0
  1714. /package/src/constants/{index.js → index.ts} +0 -0
  1715. /package/src/constants/{keyevent.js → keyevent.ts} +0 -0
  1716. /package/src/constants/{tooltip.js → tooltip.ts} +0 -0
  1717. /package/src/constants/{user-feedbacks.js → user-feedbacks.ts} +0 -0
  1718. /package/src/constants/{user-guides.js → user-guides.ts} +0 -0
  1719. /package/src/layers/cluster-layer/{cluster-layer-icon.js → cluster-layer-icon.tsx} +0 -0
  1720. /package/src/layers/{default-layer-icon.js → default-layer-icon.tsx} +0 -0
  1721. /package/src/layers/h3-hexagon-layer/{h3-hexagon-layer-icon.js → h3-hexagon-layer-icon.tsx} +0 -0
  1722. /package/src/layers/heatmap-layer/{heatmap-layer-icon.js → heatmap-layer-icon.tsx} +0 -0
  1723. /package/src/layers/hexagon-layer/{hexagon-layer-icon.js → hexagon-layer-icon.tsx} +0 -0
  1724. /package/src/layers/icon-layer/{icon-layer-icon.js → icon-layer-icon.tsx} +0 -0
  1725. /package/src/layers/line-layer/{line-layer-icon.js → line-layer-icon.tsx} +0 -0
  1726. /package/src/layers/point-layer/{point-layer-icon.js → point-layer-icon.tsx} +0 -0
  1727. /package/src/layers/s2-geometry-layer/{s2-layer-icon.js → s2-layer-icon.tsx} +0 -0
  1728. /package/src/layers/scenegraph-layer/{scenegraph-info-modal.js → scenegraph-info-modal.tsx} +0 -0
  1729. /package/src/layers/scenegraph-layer/{scenegraph-layer-icon.js → scenegraph-layer-icon.tsx} +0 -0
  1730. /package/src/layers/trip-layer/{trip-info-modal.js → trip-info-modal.tsx} +0 -0
  1731. /package/src/layers/trip-layer/{trip-layer-icon.js → trip-layer-icon.tsx} +0 -0
  1732. /package/src/layers/{types.js → types.ts} +0 -0
  1733. /package/src/reducers/{composers.js → composers.ts} +0 -0
  1734. /package/src/schemas/{map-state-schema.js → map-state-schema.ts} +0 -0
  1735. /package/src/schemas/{map-style-schema.js → map-style-schema.ts} +0 -0
  1736. /package/src/schemas/{schema-utils.js → schema-utils.ts} +0 -0
  1737. /package/src/schemas/{versions.js → versions.ts} +0 -0
  1738. /package/src/styles/{index.js → index.ts} +0 -0
  1739. /package/src/templates/{export-map-html.js → export-map-html.ts} +0 -0
  1740. /package/src/utils/{gl-utils.js → gl-utils.ts} +0 -0
  1741. /package/src/utils/{locale-utils.js → locale-utils.ts} +0 -0
  1742. /package/src/utils/{map-info-utils.js → map-info-utils.ts} +0 -0
  1743. /package/src/utils/map-style-utils/{mapbox-utils.js → mapbox-utils.ts} +0 -0
  1744. /package/src/utils/{mapbox-utils.js → mapbox-utils.ts} +0 -0
  1745. /package/src/utils/{projection-utils.js → projection-utils.ts} +0 -0
  1746. /package/src/utils/{searcher-utils.js → searcher-utils.ts} +0 -0
  1747. /package/src/utils/table-utils/{index.js → index.ts} +0 -0
@@ -0,0 +1,1744 @@
1
+ // Copyright (c) 2022 Uber Technologies, Inc.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ // of this software and associated documentation files (the "Software"), to deal
5
+ // in the Software without restriction, including without limitation the rights
6
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ // copies of the Software, and to permit persons to whom the Software is
8
+ // furnished to do so, subject to the following conditions:
9
+ //
10
+ // The above copyright notice and this permission notice shall be included in
11
+ // all copies or substantial portions of the Software.
12
+ //
13
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ // THE SOFTWARE.
20
+
21
+ import {console as Console} from 'global/window';
22
+ import keymirror from 'keymirror';
23
+ import {CollisionFilterExtension, DataFilterExtension} from '@deck.gl/extensions';
24
+ import {COORDINATE_SYSTEM, Layer as DeckLayer} from '@deck.gl/core';
25
+ import {_PointLabelLayer as PointLabelLayer} from '@deck.gl/carto';
26
+ import DefaultLayerIcon from './default-layer-icon';
27
+ import {diffUpdateTriggers} from './layer-update';
28
+ import {rgb} from 'd3-color';
29
+
30
+ import {
31
+ ALL_FIELD_TYPES,
32
+ NO_VALUE_COLOR,
33
+ SCALE_TYPES,
34
+ CHANNEL_SCALES,
35
+ FIELD_OPTS,
36
+ SCALE_FUNC,
37
+ CHANNEL_SCALE_SUPPORTED_FIELDS,
38
+ MAX_GPU_FILTERS,
39
+ UNKNOWN_COLOR,
40
+ ZOOM_LEVEL_LIMITS
41
+ } from 'constants/default-settings';
42
+ import {ColorRange, COLOR_RANGES, hexColor} from 'constants/color-ranges';
43
+ import {DataVizColors} from 'constants/custom-color-ranges';
44
+ import {
45
+ LAYER_VIS_CONFIGS,
46
+ DEFAULT_TEXT_LABEL,
47
+ DEFAULT_COLOR_UI,
48
+ DEFAULT_HIGHLIGHT_COLOR,
49
+ DEFAULT_LAYER_LABEL,
50
+ LayerVisConfig,
51
+ LayerVisConfigSettings
52
+ } from './layer-factory';
53
+
54
+ import {generateHashId, isPlainObject} from 'utils/utils';
55
+
56
+ import {getLatLngBounds, notNullorUndefined} from 'utils/data-utils';
57
+ import {getSampleData} from 'utils/table-utils/data-container-utils';
58
+
59
+ import {hexToRgb, getColorGroupByName, reverseColorRange, checkColorOrFallback} from 'utils/color-utils';
60
+ import {getMaskExtensionProps} from 'utils/layer-utils';
61
+ import {scaleOrdinal} from 'd3-scale';
62
+
63
+ import {RGBColor, RGBAColor, MapState, Filter, Datasets, ValueOf, NestedPartial} from 'reducers';
64
+ import {LayerTextLabel, ColorUI} from './layer-factory';
65
+ import {KeplerTable} from '../utils';
66
+ import {DataContainerInterface} from 'utils/table-utils/data-container-interface';
67
+ import {Field, GpuFilter} from 'utils/table-utils/kepler-table';
68
+ import React from 'react';
69
+
70
+ export type LayerColumn = {value: string | null; fieldIdx: number; optional?: boolean};
71
+
72
+ export type LayerColumns = {
73
+ [key: string]: LayerColumn;
74
+ };
75
+ export type VisualChannelDomain = number[] | string[];
76
+ export type VisualChannelField = Field | null;
77
+ export type VisualChannelScale = keyof typeof SCALE_TYPES;
78
+
79
+ export type LayerBaseConfig = {
80
+ dataId: string | null;
81
+ label: string;
82
+ color: RGBColor;
83
+
84
+ columns: LayerColumns;
85
+ isVisible: boolean;
86
+ isConfigActive: boolean;
87
+ highlightColor: RGBColor | RGBAColor;
88
+ hidden: boolean;
89
+
90
+ visConfig: LayerVisConfig;
91
+ textLabel: LayerTextLabel[];
92
+
93
+ colorUI: {
94
+ color: ColorUI;
95
+ colorRange: ColorUI;
96
+ };
97
+ animation: {
98
+ enabled: boolean;
99
+ domain?: null;
100
+ };
101
+ };
102
+
103
+ export type LayerColorConfig = {
104
+ colorField: VisualChannelField;
105
+ colorDomain: VisualChannelDomain;
106
+ colorScale: VisualChannelScale;
107
+ };
108
+ export type LayerSizeConfig = {
109
+ // color by size, domain is set by filters, field, scale type
110
+ sizeDomain: VisualChannelDomain;
111
+ sizeScale: VisualChannelScale;
112
+ sizeField: VisualChannelField;
113
+ };
114
+ export type LayerHeightConfig = {
115
+ heightField: VisualChannelField;
116
+ heightDomain: VisualChannelDomain;
117
+ heightScale: VisualChannelScale;
118
+ };
119
+ export type LayerStrokeColorConfig = {
120
+ strokeColorField: VisualChannelField;
121
+ strokeColorDomain: VisualChannelDomain;
122
+ strokeColorScale: VisualChannelScale;
123
+ };
124
+ export type LayerCoverageConfig = {
125
+ coverageField: VisualChannelField;
126
+ coverageDomain: VisualChannelDomain;
127
+ coverageScale: VisualChannelScale;
128
+ };
129
+ export type LayerRadiusConfig = {
130
+ radiusField: VisualChannelField;
131
+ radiusDomain: VisualChannelDomain;
132
+ radiusScale: VisualChannelScale;
133
+ };
134
+ export type LayerWeightConfig = {
135
+ weightField: VisualChannelField;
136
+ };
137
+
138
+ export type VisualChannels = {[key: string]: VisualChannel};
139
+
140
+ export type VisualChannelAggregation = 'colorAggregation' | 'sizeAggregation';
141
+
142
+ export type VisualChannel = {
143
+ property: string;
144
+ field: string;
145
+ scale: string;
146
+ domain: string;
147
+ range: string;
148
+ key: string;
149
+ channelScaleType: string;
150
+ nullValue?: any;
151
+ defaultMeasure?: any;
152
+ accessor?: string;
153
+ condition?: (config: any) => boolean;
154
+ getAttributeValue?: (config: any) => (d: any) => any;
155
+
156
+ // TODO: define defaultValue
157
+ defaultValue?: any;
158
+ // TODO: define fixed
159
+ fixed?: any;
160
+
161
+ supportedFieldTypes?: Array<keyof typeof ALL_FIELD_TYPES>;
162
+
163
+ aggregation?: VisualChannelAggregation;
164
+ };
165
+
166
+ export type VisualChannelDescription = {
167
+ label: string;
168
+ measure: string;
169
+ };
170
+
171
+ export type ColumnPairs = {[key: string]: {pair: string; fieldPairKey: string}};
172
+
173
+ type ColumnValidator = (column: LayerColumn, columns: LayerColumns, allFields: Field[]) => boolean;
174
+
175
+ export type UpdateTriggers = {
176
+ [key: string]: UpdateTrigger;
177
+ };
178
+ export type UpdateTrigger = {
179
+ [key: string]: {};
180
+ };
181
+ export type LayerBounds = [number, number, number, number];
182
+ export type FindDefaultLayerPropsReturnValue = {props: any[]; foundLayers?: any[]};
183
+ /**
184
+ * Approx. number of points to sample in a large data set
185
+ */
186
+ export const LAYER_ID_LENGTH = 6;
187
+
188
+ // Note, this is is SVG of solid circle encoded as data-uri
189
+ const FALLBACK_ICON =
190
+ 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';
191
+
192
+ const MAX_SAMPLE_SIZE = 5000;
193
+ const defaultDomain: [number, number] = [0, 1];
194
+ const dataFilterExtension = new DataFilterExtension({filterSize: MAX_GPU_FILTERS});
195
+ const collisionFilterExtension = new CollisionFilterExtension();
196
+
197
+ const defaultDataAccessor = dc => d => d;
198
+ const defaultGetFieldValue = (field, d) => field.valueAccessor(d);
199
+ const scaleIdentity = v => v;
200
+
201
+ export const OVERLAY_TYPE = keymirror({
202
+ deckgl: null,
203
+ mapboxgl: null
204
+ });
205
+
206
+ export const layerColors = Object.values(DataVizColors).map(hexToRgb);
207
+ function* generateColor(): Generator<RGBColor> {
208
+ let index = 0;
209
+ while (index < layerColors.length + 1) {
210
+ if (index === layerColors.length) {
211
+ index = 0;
212
+ }
213
+ yield layerColors[index++];
214
+ }
215
+ }
216
+
217
+ export const colorMaker = generateColor();
218
+
219
+ class Layer {
220
+ id: string;
221
+ meta: {};
222
+ visConfigSettings: {
223
+ [key: string]: ValueOf<LayerVisConfigSettings>;
224
+ };
225
+ config: LayerBaseConfig;
226
+ // TODO: define _oldDataUpdateTriggers
227
+ _oldDataUpdateTriggers: any;
228
+
229
+ legendSettings: Record<string, unknown>;
230
+ _interactivitySettings: Record<string, unknown>;
231
+
232
+ constructor(
233
+ props: {
234
+ id?: string;
235
+ } & Partial<LayerBaseConfig> = {}
236
+ ) {
237
+ this.id = props.id || generateHashId(LAYER_ID_LENGTH);
238
+ // meta
239
+ this.meta = {};
240
+
241
+ // legendSettings
242
+ this.legendSettings = {};
243
+
244
+ // visConfigSettings
245
+ this.visConfigSettings = {};
246
+
247
+ // interactivitySettings
248
+ this._interactivitySettings = {};
249
+
250
+ this.config = this.getDefaultLayerConfig({
251
+ columns: this.getLayerColumns(),
252
+ ...props
253
+ });
254
+ }
255
+
256
+ get layerIcon(): React.ElementType {
257
+ return DefaultLayerIcon;
258
+ }
259
+
260
+ get overlayType(): keyof typeof OVERLAY_TYPE {
261
+ return OVERLAY_TYPE.deckgl;
262
+ }
263
+
264
+ get type(): string | null {
265
+ return null;
266
+ }
267
+
268
+ get name() {
269
+ return this.type;
270
+ }
271
+
272
+ get isAggregated() {
273
+ return false;
274
+ }
275
+
276
+ get requiredLayerColumns(): string[] {
277
+ return [];
278
+ }
279
+
280
+ get optionalColumns(): string[] {
281
+ return [];
282
+ }
283
+
284
+ get noneLayerDataAffectingProps() {
285
+ return ['label', 'opacity', 'thickness', 'isVisible', 'hidden'];
286
+ }
287
+
288
+ get visualChannels(): VisualChannels {
289
+ return {
290
+ color: {
291
+ property: 'color',
292
+ field: 'colorField',
293
+ scale: 'colorScale',
294
+ domain: 'colorDomain',
295
+ range: 'colorRange',
296
+ key: 'color',
297
+ channelScaleType: CHANNEL_SCALES.color,
298
+ nullValue: NO_VALUE_COLOR,
299
+ defaultValue: config => config.color
300
+ },
301
+ size: {
302
+ property: 'size',
303
+ field: 'sizeField',
304
+ scale: 'sizeScale',
305
+ domain: 'sizeDomain',
306
+ range: 'sizeRange',
307
+ key: 'size',
308
+ channelScaleType: CHANNEL_SCALES.size,
309
+ nullValue: 0,
310
+ defaultValue: 1
311
+ }
312
+ };
313
+ }
314
+
315
+ get columnValidators(): {[key: string]: ColumnValidator} {
316
+ return {};
317
+ }
318
+ /*
319
+ * Column pairs maps layer column to a specific field pairs,
320
+ * By default, it is set to null
321
+ */
322
+ get columnPairs(): ColumnPairs | null {
323
+ return null;
324
+ }
325
+
326
+ /*
327
+ * Default point column pairs, can be used for point based layers: point, icon etc.
328
+ */
329
+ get defaultPointColumnPairs(): ColumnPairs {
330
+ return {
331
+ lat: {pair: 'lng', fieldPairKey: 'lat'},
332
+ lng: {pair: 'lat', fieldPairKey: 'lng'}
333
+ };
334
+ }
335
+
336
+ /*
337
+ * Default link column pairs, can be used for link based layers: arc, line etc
338
+ */
339
+ get defaultLinkColumnPairs(): ColumnPairs {
340
+ return {
341
+ lat0: {pair: 'lng0', fieldPairKey: 'lat'},
342
+ lng0: {pair: 'lat0', fieldPairKey: 'lng'},
343
+ lat1: {pair: 'lng1', fieldPairKey: 'lat'},
344
+ lng1: {pair: 'lat1', fieldPairKey: 'lng'}
345
+ };
346
+ }
347
+
348
+ /**
349
+ * Return a React component for to render layer instructions in a modal
350
+ * @returns {object} - an object
351
+ * @example
352
+ * return {
353
+ * id: 'iconInfo',
354
+ * template: IconInfoModal,
355
+ * modalProps: {
356
+ * title: 'How to draw icons'
357
+ * };
358
+ * }
359
+ */
360
+ get layerInfoModal(): any {
361
+ return null;
362
+ }
363
+
364
+ get interactivitySettings() {
365
+ return (this as any)._interactivitySettings;
366
+ }
367
+
368
+ set interactivitySettings(interactivitySettings) {
369
+ (this as any)._interactivitySettings = interactivitySettings;
370
+ }
371
+
372
+ get hasTooltip() {
373
+ return Boolean(
374
+ this.interactivitySettings?.hover?.fields.length ||
375
+ this.interactivitySettings?.click?.fields.length
376
+ );
377
+ }
378
+
379
+ get hasInteractivity() {
380
+ return Boolean(this.hasTooltip && this.interactivitySettings?.enabled);
381
+ }
382
+
383
+ /*
384
+ * Given a dataset, automatically find props to create layer based on it
385
+ * and return the props and previous found layers.
386
+ * By default, no layers will be found
387
+ */
388
+ static findDefaultLayerProps(
389
+ dataset: KeplerTable,
390
+ foundLayers?: any[]
391
+ ): FindDefaultLayerPropsReturnValue {
392
+ return {props: [], foundLayers};
393
+ }
394
+
395
+ /**
396
+ * Given a array of preset required column names
397
+ * found field that has the same name to set as layer column
398
+ *
399
+ * @param {object} defaultFields
400
+ * @param {object[]} allFields
401
+ * @returns {object[] | null} all possible required layer column pairs
402
+ */
403
+ static findDefaultColumnField(defaultFields, allFields) {
404
+ // find all matched fields for each required col
405
+ const requiredColumns = Object.keys(defaultFields).reduce((prev, key) => {
406
+ const requiredFields = allFields.filter(
407
+ f => f.name === defaultFields[key] || defaultFields[key].includes(f.name)
408
+ );
409
+
410
+ prev[key] = requiredFields.length
411
+ ? requiredFields.map(f => ({
412
+ value: f.name,
413
+ fieldIdx: f.fieldIdx
414
+ }))
415
+ : null;
416
+ return prev;
417
+ }, {});
418
+
419
+ if (!Object.values(requiredColumns).every(Boolean)) {
420
+ // if any field missing, return null
421
+ return null;
422
+ }
423
+
424
+ return this.getAllPossibleColumnParis(requiredColumns);
425
+ }
426
+
427
+ static getAllPossibleColumnParis(requiredColumns) {
428
+ // for multiple matched field for one required column, return multiple
429
+ // combinations, e. g. if column a has 2 matched, column b has 3 matched
430
+ // 6 possible column pairs will be returned
431
+ const allKeys = Object.keys(requiredColumns);
432
+ const pointers = allKeys.map((k, i) => (i === allKeys.length - 1 ? -1 : 0));
433
+ const countPerKey = allKeys.map(k => requiredColumns[k].length);
434
+ // TODO: Better typings
435
+ const pairs: any[] = [];
436
+
437
+ /* eslint-disable no-loop-func */
438
+ while (incrementPointers(pointers, countPerKey, pointers.length - 1)) {
439
+ const newPair = pointers.reduce((prev, cuur, i) => {
440
+ prev[allKeys[i]] = requiredColumns[allKeys[i]][cuur];
441
+ return prev;
442
+ }, {});
443
+
444
+ pairs.push(newPair);
445
+ }
446
+ /* eslint-enable no-loop-func */
447
+
448
+ // recursively increment pointers
449
+ function incrementPointers(pts, counts, index) {
450
+ if (index === 0 && pts[0] === counts[0] - 1) {
451
+ // nothing to increment
452
+ return false;
453
+ }
454
+
455
+ if (pts[index] + 1 < counts[index]) {
456
+ pts[index] = pts[index] + 1;
457
+ return true;
458
+ }
459
+
460
+ pts[index] = 0;
461
+ return incrementPointers(pts, counts, index - 1);
462
+ }
463
+
464
+ return pairs;
465
+ }
466
+
467
+ static hexToRgb(c) {
468
+ return hexToRgb(c);
469
+ }
470
+
471
+ getDefaultLayerConfig(
472
+ props: Partial<LayerBaseConfig> = {}
473
+ ): LayerBaseConfig & Partial<LayerColorConfig & LayerSizeConfig> {
474
+ return {
475
+ dataId: props.dataId || null,
476
+ ...{visibilityByZoom: {
477
+ min: (props as any).visibilityByZoom?.min || ZOOM_LEVEL_LIMITS.min,
478
+ max: (props as any).visibilityByZoom?.max || ZOOM_LEVEL_LIMITS.max
479
+ }}, // TODO: Clean up
480
+ label: props.label || DEFAULT_LAYER_LABEL,
481
+ color: props.color || colorMaker.next().value,
482
+ columns: props.columns || {},
483
+ isVisible: props.isVisible || false,
484
+ isConfigActive: props.isConfigActive || false,
485
+ highlightColor: props.highlightColor || DEFAULT_HIGHLIGHT_COLOR,
486
+ hidden: props.hidden || false,
487
+
488
+ // TODO: refactor this into separate visual Channel config
489
+ // color by field, domain is set by filters, field, scale type
490
+ colorField: null,
491
+ colorDomain: [0, 1],
492
+ colorScale: SCALE_TYPES.quantile,
493
+
494
+ // color by size, domain is set by filters, field, scale type
495
+ sizeDomain: [0, 1],
496
+ sizeScale: SCALE_TYPES.linear,
497
+ sizeField: null,
498
+ ...{radiusField: null}, // TODO: Clean up
499
+
500
+ visConfig: {},
501
+
502
+ textLabel: [DEFAULT_TEXT_LABEL],
503
+
504
+ colorUI: {
505
+ color: DEFAULT_COLOR_UI,
506
+ colorRange: DEFAULT_COLOR_UI
507
+ },
508
+ animation: {enabled: false}
509
+ };
510
+ }
511
+
512
+ /**
513
+ * Get the description of a visualChannel config
514
+ * @param key
515
+ * @returns
516
+ */
517
+ getVisualChannelDescription(key: string): VisualChannelDescription {
518
+ // e.g. label: Color, measure: Vehicle Type
519
+ const channel = this.visualChannels[key];
520
+ if (!channel) return {label: '', measure: ''};
521
+ const rangeSettings = this.visConfigSettings[channel.range];
522
+ const fieldSettings = this.config[channel.field];
523
+ const label = rangeSettings?.label;
524
+ return {
525
+ label: typeof label === 'function' ? label(this.config) : label,
526
+ measure: fieldSettings
527
+ ? fieldSettings.displayName || fieldSettings.name
528
+ : channel.defaultMeasure
529
+ };
530
+ }
531
+
532
+ /**
533
+ * Assign a field to layer column, return column config
534
+ * @param key - Column Key
535
+ * @param field - Selected field
536
+ * @returns {{}} - Column config
537
+ */
538
+ assignColumn(key: string, field: Field): LayerColumns {
539
+ // field value could be null for optional columns
540
+ const update = field
541
+ ? {
542
+ value: field.name,
543
+ fieldIdx: field.fieldIdx
544
+ }
545
+ : {value: null, fieldIdx: -1};
546
+
547
+ return {
548
+ ...this.config.columns,
549
+ [key]: {
550
+ ...this.config.columns[key],
551
+ ...update
552
+ }
553
+ };
554
+ }
555
+
556
+ /**
557
+ * Assign a field pair to column config, return column config
558
+ * @param key - Column Key
559
+ * @param pair - field Pair
560
+ * @returns {object} - Column config
561
+ */
562
+ assignColumnPairs(key, pair) {
563
+ if (!this.columnPairs || !this.columnPairs?.[key]) {
564
+ // should not end in this state
565
+ return this.config.columns;
566
+ }
567
+
568
+ const {pair: partnerKey, fieldPairKey} = this.columnPairs?.[key];
569
+ const {fieldPairKey: partnerFieldPairKey} = this.columnPairs?.[partnerKey];
570
+
571
+ return {
572
+ ...this.config.columns,
573
+ [key]: pair[fieldPairKey],
574
+ [partnerKey]: pair[partnerFieldPairKey]
575
+ };
576
+ }
577
+
578
+ /**
579
+ * Calculate a radius zoom multiplier to render points, so they are visible in all zoom level
580
+ * @param {object} mapState
581
+ * @param {number} mapState.zoom - actual zoom
582
+ * @param {number | void} mapState.zoomOffset - zoomOffset when render in the plot container for export image
583
+ * @returns {number}
584
+ */
585
+ getZoomFactor({zoom, zoomOffset = 0}) {
586
+ return Math.pow(2, Math.max(14 - zoom + zoomOffset, 0));
587
+ }
588
+
589
+ /**
590
+ * Calculate a elevation zoom multiplier to render points, so they are visible in all zoom level
591
+ * @param {object} mapState
592
+ * @param {number} mapState.zoom - actual zoom
593
+ * @param {number | void} mapState.zoomOffset - zoomOffset when render in the plot container for export image
594
+ * @returns {number}
595
+ */
596
+ getElevationZoomFactor({zoom, zoomOffset = 0}: {zoom: number; zoomOffset?: number}) {
597
+ return this.config.visConfig.enableElevationZoomFactor
598
+ ? Math.pow(2, Math.max(8 - zoom + zoomOffset, 0))
599
+ : 1;
600
+ }
601
+
602
+ formatLayerData(datasets: Datasets, oldLayerData?: any) {
603
+ return {};
604
+ }
605
+
606
+ renderLayer(...args: any[]): any[] {
607
+ return [];
608
+ }
609
+
610
+ getHoverData(object, dataContainer: DataContainerInterface, fields: Field[]) {
611
+ if (!object) {
612
+ return null;
613
+ }
614
+
615
+ // By default, each entry of layerData should have an index of a row in the original data container.
616
+ // Each layer can implement its own getHoverData method
617
+ return dataContainer.row(object.index);
618
+ }
619
+
620
+ /**
621
+ * When change layer type, try to copy over layer configs as much as possible
622
+ * @param configToCopy - config to copy over
623
+ * @param visConfigSettings - visConfig settings of config to copy
624
+ */
625
+ assignConfigToLayer(configToCopy, visConfigSettings) {
626
+ // don't deep merge visualChannel field
627
+ // don't deep merge color range, reversed: is not a key by default
628
+ const shallowCopy = ['colorRange', 'strokeColorRange'].concat(
629
+ Object.values(this.visualChannels).map(v => v.field)
630
+ );
631
+
632
+ // don't copy over domain and animation
633
+ const notToCopy = ['animation'].concat(Object.values(this.visualChannels).map(v => v.domain));
634
+ // if range is for the same property group copy it, otherwise, not to copy
635
+ Object.values(this.visualChannels).forEach(v => {
636
+ if (
637
+ configToCopy.visConfig[v.range] &&
638
+ this.visConfigSettings[v.range] &&
639
+ visConfigSettings[v.range].group !== this.visConfigSettings[v.range].group
640
+ ) {
641
+ notToCopy.push(v.range);
642
+ }
643
+ });
644
+
645
+ // don't copy over visualChannel range
646
+ const currentConfig = this.config;
647
+ const copied = this.copyLayerConfig(currentConfig, configToCopy, {
648
+ shallowCopy,
649
+ notToCopy
650
+ });
651
+ this.updateLayerConfig(copied);
652
+ // validate visualChannel field type and scale types
653
+ Object.keys(this.visualChannels).forEach(channel => {
654
+ this.validateVisualChannel(channel);
655
+ });
656
+ }
657
+
658
+ /*
659
+ * Recursively copy config over to an empty layer
660
+ * when received saved config, or copy config over from a different layer type
661
+ * make sure to only copy over value to existing keys
662
+ * @param {object} currentConfig - existing config to be override
663
+ * @param {object} configToCopy - new Config to copy over
664
+ * @param {string[]} shallowCopy - array of properties to not to be deep copied
665
+ * @param {string[]} notToCopy - array of properties not to copy
666
+ * @returns {object} - copied config
667
+ */
668
+ copyLayerConfig(
669
+ currentConfig,
670
+ configToCopy,
671
+ {shallowCopy = [], notToCopy = []}: {shallowCopy?: string[]; notToCopy?: string[]} = {}
672
+ ) {
673
+ const copied = {};
674
+ Object.keys(currentConfig).forEach(key => {
675
+ if (
676
+ isPlainObject(currentConfig[key]) &&
677
+ isPlainObject(configToCopy[key]) &&
678
+ !shallowCopy.includes(key) &&
679
+ !notToCopy.includes(key)
680
+ ) {
681
+ // recursively assign object value
682
+ copied[key] = this.copyLayerConfig(currentConfig[key], configToCopy[key], {
683
+ shallowCopy,
684
+ notToCopy
685
+ });
686
+ } else if (notNullorUndefined(configToCopy[key]) && !notToCopy.includes(key)) {
687
+ // copy
688
+ copied[key] = configToCopy[key];
689
+ } else {
690
+ // keep existing
691
+ copied[key] = currentConfig[key];
692
+ }
693
+ });
694
+
695
+ return copied;
696
+ }
697
+
698
+ registerVisConfig(layerVisConfigs: {
699
+ [key: string]: keyof LayerVisConfigSettings | ValueOf<LayerVisConfigSettings>;
700
+ }) {
701
+ Object.keys(layerVisConfigs).forEach(item => {
702
+ const configItem = layerVisConfigs[item];
703
+ if (typeof configItem === 'string' && LAYER_VIS_CONFIGS[configItem]) {
704
+ // if assigned one of default LAYER_CONFIGS
705
+ this.config.visConfig[item] = LAYER_VIS_CONFIGS[configItem].defaultValue;
706
+ this.visConfigSettings[item] = LAYER_VIS_CONFIGS[configItem];
707
+ } else if (
708
+ typeof configItem === 'object' &&
709
+ ['type', 'defaultValue'].every(p => configItem.hasOwnProperty(p))
710
+ ) {
711
+ // if provided customized visConfig, and has type && defaultValue
712
+ // TODO: further check if customized visConfig is valid
713
+ this.config.visConfig[item] = configItem.defaultValue;
714
+ this.visConfigSettings[item] = configItem;
715
+ }
716
+ });
717
+ }
718
+
719
+ getLayerColumns() {
720
+ const columnValidators = this.columnValidators;
721
+ const required = this.requiredLayerColumns.reduce(
722
+ (accu, key) => ({
723
+ ...accu,
724
+ [key]: columnValidators[key]
725
+ ? {value: null, fieldIdx: -1, validator: columnValidators[key]}
726
+ : {value: null, fieldIdx: -1}
727
+ }),
728
+ {}
729
+ );
730
+ const optional = this.optionalColumns.reduce(
731
+ (accu, key) => ({
732
+ ...accu,
733
+ [key]: {value: null, fieldIdx: -1, optional: true}
734
+ }),
735
+ {}
736
+ );
737
+
738
+ return {...required, ...optional};
739
+ }
740
+
741
+ updateLayerConfig<LayerConfig extends LayerBaseConfig = LayerBaseConfig>(
742
+ newConfig: Partial<LayerConfig>
743
+ ): Layer {
744
+ this.config = {...this.config, ...newConfig};
745
+ return this;
746
+ }
747
+
748
+ updateLayerVisConfig(newVisConfig) {
749
+ this.config.visConfig = {...this.config.visConfig, ...newVisConfig};
750
+ return this;
751
+ }
752
+
753
+ updateLayerColorUI(prop: string, newConfig: NestedPartial<ColorUI>): Layer {
754
+ const {colorUI: previous, visConfig} = this.config;
755
+
756
+ if (!isPlainObject(newConfig) || typeof prop !== 'string') {
757
+ return this;
758
+ }
759
+
760
+ const colorUIProp = Object.entries(newConfig).reduce((accu, [key, value]) => {
761
+ return {
762
+ ...accu,
763
+ [key]: isPlainObject(accu[key]) && isPlainObject(value) ? {...accu[key], ...value} : value
764
+ };
765
+ }, previous[prop] || DEFAULT_COLOR_UI);
766
+
767
+ const colorUI = {
768
+ ...previous,
769
+ [prop]: colorUIProp
770
+ };
771
+
772
+ this.updateLayerConfig({colorUI});
773
+ // if colorUI[prop] is colorRange. If type is hexColor then it's also a range
774
+ const isColorRange =
775
+ visConfig[prop] && (visConfig[prop].colors || visConfig[prop].type === hexColor);
776
+
777
+ if (isColorRange) {
778
+ this.updateColorUIByColorRange(newConfig, prop);
779
+ this.updateColorRangeByColorUI(newConfig, previous, prop);
780
+ this.updateCustomPalette(newConfig, previous, prop);
781
+ }
782
+
783
+ return this;
784
+ }
785
+
786
+ updateCustomPalette(newConfig, previous, prop) {
787
+ if (!newConfig.colorRangeConfig || !newConfig.colorRangeConfig.custom) {
788
+ return;
789
+ }
790
+
791
+ const {colorUI, visConfig} = this.config;
792
+
793
+ if (!visConfig[prop]) return;
794
+ const {colors} = visConfig[prop];
795
+ const customPalette = {
796
+ ...colorUI[prop].customPalette,
797
+ name: 'Custom Palette',
798
+ colors: [...colors]
799
+ };
800
+ this.updateLayerConfig({
801
+ colorUI: {
802
+ ...colorUI,
803
+ [prop]: {
804
+ ...colorUI[prop],
805
+ customPalette
806
+ }
807
+ }
808
+ });
809
+ }
810
+ /**
811
+ * if open dropdown and prop is color range
812
+ * Automatically set colorRangeConfig's step, reversed and type
813
+ * @param {*} newConfig
814
+ * @param {*} prop
815
+ */
816
+ updateColorUIByColorRange(newConfig, prop) {
817
+ if (typeof newConfig.showDropdown !== 'number') return;
818
+
819
+ const {colorUI, visConfig} = this.config;
820
+ this.updateLayerConfig({
821
+ colorUI: {
822
+ ...colorUI,
823
+ [prop]: {
824
+ ...colorUI[prop],
825
+ colorRangeConfig: {
826
+ ...colorUI[prop].colorRangeConfig,
827
+ type: visConfig[prop].type,
828
+ steps: visConfig[prop].colors?.length,
829
+ reversed: Boolean(visConfig[prop].reversed),
830
+ hexColumn: this.getHexColumn(prop),
831
+ isHexColumn: this.isColoredByColorColumn(prop)
832
+ }
833
+ }
834
+ }
835
+ });
836
+ }
837
+
838
+ // eslint-disable-next-line complexity
839
+ updateColorRangeByColorUI(newConfig, previous, prop) {
840
+ // only update colorRange if changes in UI is made to 'reversed', 'steps' or steps
841
+ const shouldUpdate =
842
+ newConfig.colorRangeConfig &&
843
+ ['reversed', 'steps'].some(
844
+ key =>
845
+ newConfig.colorRangeConfig.hasOwnProperty(key) &&
846
+ newConfig.colorRangeConfig[key] !==
847
+ (previous[prop] || DEFAULT_COLOR_UI).colorRangeConfig[key]
848
+ );
849
+ if (!shouldUpdate) return;
850
+
851
+ const {colorUI, visConfig} = this.config;
852
+ const {steps, reversed} = colorUI[prop].colorRangeConfig;
853
+ const colorRange = visConfig[prop];
854
+ // find based on step or reversed
855
+ let update;
856
+ if (newConfig.colorRangeConfig.hasOwnProperty('steps')) {
857
+ const group = getColorGroupByName(colorRange);
858
+
859
+ if (group) {
860
+ const sameGroup = COLOR_RANGES.filter(cr => getColorGroupByName(cr) === group);
861
+
862
+ update = sameGroup.find(cr => cr.colors.length === steps);
863
+
864
+ if (update && colorRange.reversed) {
865
+ update = reverseColorRange(true, update);
866
+ }
867
+
868
+ if (update && colorRange.colorMap) {
869
+ update = this.updateColorMap(prop, colorRange.colorMap, update);
870
+ }
871
+ }
872
+ }
873
+
874
+ if (newConfig.colorRangeConfig.hasOwnProperty('reversed')) {
875
+ update = reverseColorRange(reversed, update || colorRange);
876
+ }
877
+
878
+ if (update) {
879
+ this.updateLayerVisConfig({[prop]: update});
880
+ }
881
+ }
882
+
883
+ updateColorMap(prop, colorMap, colorRange) {
884
+ // @ts-ignore
885
+ const {field, domain} = Object.values(this.visualChannels).find(value => value.range === prop);
886
+ const type = this.config[field]?.type;
887
+
888
+ if (type === 'string' || type === 'boolean' || type === 'date') {
889
+ return this.updateCategoryColorMap(colorMap, this.config[domain], colorRange);
890
+ }
891
+
892
+ // If no type or type is not string, boolean or date
893
+ return this.updateNumericColorMap(colorMap, this.config[domain], colorRange);
894
+ }
895
+
896
+ updateCategoryColorMap(colorMap, domain, colorRange) {
897
+ const colors = colorRange.colors;
898
+ const assignedCategories = [];
899
+ if (colorRange.type === hexColor) {
900
+ return {
901
+ ...colorRange,
902
+ colorMap: []
903
+ };
904
+ }
905
+ const newColorMap = colorMap.slice(0, colors.length).map((cMap, index) => {
906
+ assignedCategories.push(cMap[0]);
907
+ return [cMap[0], colors[index]];
908
+ });
909
+ const unassignedColors = colors.slice(newColorMap.length, colors.length);
910
+
911
+ for (const color of unassignedColors) {
912
+ const category = domain.find(d => !assignedCategories.includes(d));
913
+ if (!category) {
914
+ break;
915
+ }
916
+ assignedCategories.push(category);
917
+ newColorMap.push([category, color]);
918
+ }
919
+ return {
920
+ ...colorRange,
921
+ colorMap: newColorMap
922
+ };
923
+ }
924
+
925
+ updateNumericColorMap(colorMap, domain, update) {
926
+ const colors = update.colors;
927
+ let newColorMap = colorMap.slice(0, colors.length);
928
+
929
+ newColorMap = newColorMap.map((cMap, index) => {
930
+ const value = index === newColorMap.length - 1 ? null : cMap[0];
931
+ return [value, colors[index]];
932
+ });
933
+ const unassignedColors = colors.slice(newColorMap.length, colors.length);
934
+
935
+ if (unassignedColors.length > 0) {
936
+ const colorMapValues = colorMap.map(c => c[0]).filter(c => typeof c === 'number');
937
+ const maxValue = Math.max(...colorMapValues, domain[domain.length - 1]);
938
+ const prevValue = newColorMap[newColorMap.length - 2][0];
939
+ const step = (maxValue - prevValue) / (unassignedColors.length + 1);
940
+ newColorMap[newColorMap.length - 1][0] = prevValue + step;
941
+
942
+ for (const [i, color] of unassignedColors.entries()) {
943
+ const value = i === unassignedColors.length - 1 ? null : prevValue + (step * (i + 2));
944
+ newColorMap.push([value, color]);
945
+ }
946
+ }
947
+ return {
948
+ ...update,
949
+ colorMap: newColorMap
950
+ };
951
+ }
952
+
953
+ /**
954
+ * Check whether layer has all columns
955
+ * @returns yes or no
956
+ */
957
+ hasAllColumns(): boolean {
958
+ const {columns} = this.config;
959
+ return (
960
+ columns &&
961
+ Object.values(columns).every(v => {
962
+ return Boolean(v.optional || (v.value && v.fieldIdx > -1));
963
+ })
964
+ );
965
+ }
966
+
967
+ /**
968
+ * Check whether layer has data
969
+ *
970
+ * @param {Array | Object} layerData
971
+ * @returns {boolean} yes or no
972
+ */
973
+ hasLayerData(layerData) {
974
+ if (!layerData) {
975
+ return false;
976
+ }
977
+ return Boolean(layerData.data && layerData.data.length);
978
+ }
979
+
980
+ isValidToSave(): boolean {
981
+ return Boolean(this.type && this.hasAllColumns());
982
+ }
983
+
984
+ shouldRenderLayer(data): boolean {
985
+ return (
986
+ Boolean(this.type) &&
987
+ this.hasAllColumns() &&
988
+ this.hasLayerData(data) &&
989
+ typeof this.renderLayer === 'function'
990
+ );
991
+ }
992
+
993
+ getColorScale(colorScale: string, colorDomain: VisualChannelDomain, colorRange: ColorRange) {
994
+ if (colorRange.type === hexColor) {
995
+ return (_, color) => {
996
+ const {r, g, b} = rgb(color);
997
+ return [r, g, b].some(isNaN) ? UNKNOWN_COLOR : [r, g, b];
998
+ };
999
+ } else if (Array.isArray(colorRange.colorMap)) {
1000
+ const cMap = new Map();
1001
+ colorRange.colorMap.forEach(([k, v]) => {
1002
+ cMap.set(k, typeof v === 'string' ? hexToRgb(v) : v);
1003
+ });
1004
+
1005
+ const scale = SCALE_FUNC[colorScale]()
1006
+ .domain(cMap.keys())
1007
+ .range(cMap.values())
1008
+ .unknown(UNKNOWN_COLOR);
1009
+ return scale;
1010
+ }
1011
+ return this.getVisChannelScale(colorScale, colorDomain, colorRange.colors.map(hexToRgb));
1012
+ }
1013
+
1014
+ getCustomMarkersScale(range, fallbackIcon) {
1015
+ let unknownValue = fallbackIcon || FALLBACK_ICON;
1016
+ if (!range) {
1017
+ return () => unknownValue;
1018
+ }
1019
+
1020
+ const mapping = new Map();
1021
+
1022
+ if (range.othersMarker) {
1023
+ unknownValue = range.othersMarker;
1024
+ }
1025
+ for (const {value, markerUrl} of range.markerMap) {
1026
+ if (markerUrl) {
1027
+ mapping.set(value, markerUrl);
1028
+ }
1029
+ }
1030
+
1031
+ // @ts-ignore d3 scale
1032
+ const scale = scaleOrdinal()
1033
+ .domain(Array.from(mapping.keys()))
1034
+ .range(Array.from(mapping.values()))
1035
+ .unknown(unknownValue);
1036
+ return scale;
1037
+ }
1038
+
1039
+ /**
1040
+ * Mapping from visual channels to deck.gl accesors
1041
+ * @param {Object} param Parameters
1042
+ * @param {Function} param.dataAccessor Access kepler.gl layer data from deck.gl layer
1043
+ * @param {import('utils/table-utils/data-container-interface').DataContainerInterface} param.dataContainer DataContainer to use use with dataAccessor
1044
+ * @return {Object} attributeAccessors - deck.gl layer attribute accessors
1045
+ */
1046
+ getAttributeAccessors({
1047
+ dataAccessor = defaultDataAccessor,
1048
+ dataContainer
1049
+ }: {
1050
+ dataAccessor?: typeof defaultDataAccessor;
1051
+ dataContainer: DataContainerInterface;
1052
+ }) {
1053
+ const attributeAccessors: {[key: string]: any} = {};
1054
+
1055
+ // eslint-disable-next-line complexity
1056
+ Object.keys(this.visualChannels).forEach(channel => {
1057
+ const {
1058
+ field,
1059
+ fixed,
1060
+ scale,
1061
+ domain,
1062
+ range,
1063
+ accessor,
1064
+ defaultValue,
1065
+ getAttributeValue,
1066
+ nullValue,
1067
+ channelScaleType,
1068
+ aggregation
1069
+ } = this.visualChannels[channel];
1070
+
1071
+ const shouldGetScale = Boolean(
1072
+ (scale || channelScaleType === CHANNEL_SCALES.identity) && this.config[field]
1073
+ );
1074
+
1075
+ if (shouldGetScale) {
1076
+ const isFixed = fixed && this.config.visConfig[fixed];
1077
+ // It's important to declare as const all the parameters that we are going to be use in the getEncodedChannelValue call
1078
+ // otherwise, the oldLayerData parameter in formatLayerData method will be wrong (you can check the formatLayerData TileLayer method in Builder as example)
1079
+ const fieldConfig = this.config[field];
1080
+ const aggregationValue = this.config.visConfig[aggregation];
1081
+
1082
+ const scaleFunction =
1083
+ channelScaleType === CHANNEL_SCALES.identity
1084
+ ? scaleIdentity
1085
+ : channelScaleType === CHANNEL_SCALES.color
1086
+ ? this.getColorScale(
1087
+ this.config[scale],
1088
+ this.config[domain],
1089
+ this.config.visConfig[range]
1090
+ )
1091
+ : channelScaleType === CHANNEL_SCALES.customMarker
1092
+ ? this.getCustomMarkersScale(
1093
+ this.config.visConfig[range],
1094
+ this.config.visConfig.customMarkersUrl
1095
+ )
1096
+ : this.getVisChannelScale(
1097
+ this.config[scale],
1098
+ this.config[domain],
1099
+ this.config.visConfig[range],
1100
+ isFixed
1101
+ );
1102
+
1103
+ attributeAccessors[accessor] = d =>
1104
+ this.getEncodedChannelValue({
1105
+ channel,
1106
+ dataContainer,
1107
+ scale: scaleFunction,
1108
+ data: dataAccessor(dataContainer)(d),
1109
+ field: fieldConfig,
1110
+ aggregation: aggregationValue,
1111
+ nullValue
1112
+ });
1113
+ } else if (typeof getAttributeValue === 'function') {
1114
+ attributeAccessors[accessor] = getAttributeValue(this.config);
1115
+ } else {
1116
+ attributeAccessors[accessor] =
1117
+ typeof defaultValue === 'function' ? defaultValue(this.config) : defaultValue;
1118
+ }
1119
+
1120
+ if (!(accessor in attributeAccessors)) {
1121
+ Console.warn(`Failed to provide accessor function for ${accessor || channel}`);
1122
+ }
1123
+ });
1124
+
1125
+ return attributeAccessors;
1126
+ }
1127
+
1128
+ getVisChannelScale(
1129
+ scale: string,
1130
+ domain: VisualChannelDomain,
1131
+ range: any,
1132
+ fixed?: boolean
1133
+ ): () => any | null {
1134
+ if (scale === SCALE_TYPES.ordinal) {
1135
+ return SCALE_FUNC[scale]()
1136
+ .domain(domain.slice(0, range.length) as any)
1137
+ .range(range)
1138
+ .unknown(UNKNOWN_COLOR) as any;
1139
+ }
1140
+
1141
+ // for `count` aggregation, we domain is actually `[0, Infinity]` so it doesn't make sense
1142
+ // to use it, so skip specyfying this domains
1143
+ const domainIsInfinite = domain && (domain[0] === 0 && domain[1] === Infinity);
1144
+ const scaleFactory = SCALE_FUNC[fixed ? 'linear' : scale];
1145
+ // @ts-ignore d3-scale type
1146
+ let result = scaleFactory();
1147
+ if (domain && !domainIsInfinite) {
1148
+ result = result.domain(domain);
1149
+ }
1150
+ return result.range(fixed ? domain : range);
1151
+ }
1152
+
1153
+ /**
1154
+ * Get longitude and latitude bounds of the data.
1155
+ * @param {import('utils/table-utils/data-container-interface').DataContainerInterface} dataContainer DataContainer to calculate bounds for.
1156
+ * @param {(d: {index: number}, dc: import('utils/table-utils/data-container-interface').DataContainerInterface) => number[]} getPosition Access kepler.gl layer data from deck.gl layer
1157
+ * @return {number[]|null} bounds of the data.
1158
+ */
1159
+ getPointsBounds(dataContainer, getPosition) {
1160
+ // no need to loop through the entire dataset
1161
+ // get a sample of data to calculate bounds
1162
+ const sampleData =
1163
+ dataContainer.numRows() > MAX_SAMPLE_SIZE
1164
+ ? getSampleData(dataContainer, MAX_SAMPLE_SIZE)
1165
+ : dataContainer;
1166
+
1167
+ const points = sampleData.mapIndex(getPosition);
1168
+
1169
+ const latBounds = getLatLngBounds(points, 1, [-90, 90]);
1170
+ const lngBounds = getLatLngBounds(points, 0, [-180, 180]);
1171
+
1172
+ if (!latBounds || !lngBounds) {
1173
+ return null;
1174
+ }
1175
+
1176
+ return [lngBounds[0], latBounds[0], lngBounds[1], latBounds[1]];
1177
+ }
1178
+
1179
+ getChangedTriggers(dataUpdateTriggers) {
1180
+ const triggerChanged = diffUpdateTriggers(dataUpdateTriggers, this._oldDataUpdateTriggers);
1181
+ this._oldDataUpdateTriggers = dataUpdateTriggers;
1182
+
1183
+ return triggerChanged;
1184
+ }
1185
+
1186
+ getEncodedChannelValue({
1187
+ channel,
1188
+ scale,
1189
+ data,
1190
+ field,
1191
+ dataContainer,
1192
+ // In builder we overwrite the getValue function and we use the _aggregation parameter in spatial index layers as the QuadkeyLayer.
1193
+ aggregation,
1194
+ nullValue = NO_VALUE_COLOR as RGBAColor,
1195
+ getValue = defaultGetFieldValue
1196
+ }: {
1197
+ channel: string;
1198
+ scale: (...value) => any;
1199
+ data: any[];
1200
+ field: VisualChannelField;
1201
+ dataContainer: any;
1202
+ aggregation: any;
1203
+ nullValue?: RGBAColor;
1204
+ getValue?: typeof defaultGetFieldValue;
1205
+ }) {
1206
+ const {type} = field;
1207
+ const value = getValue(field, data);
1208
+ const channelConfig = this.config.visConfig[this.visualChannels[channel].range];
1209
+ const channelField = this.config[this.visualChannels[channel].field];
1210
+ let colorColumnValue: any;
1211
+
1212
+ if (channelConfig?.type === hexColor) {
1213
+ const columnField = {
1214
+ id: channelField.colorColumn,
1215
+ name: channelField.colorColumn,
1216
+ fieldIdx: channelField.colorColumnIdx,
1217
+ valueAccessor: d => {
1218
+ return dataContainer.valueAt(d.index, channelField.colorColumnIdx);
1219
+ }
1220
+ };
1221
+
1222
+ colorColumnValue = getValue(columnField, data);
1223
+ } else if (!notNullorUndefined(value)) {
1224
+ return nullValue;
1225
+ }
1226
+
1227
+ let attributeValue;
1228
+ if (type === ALL_FIELD_TYPES.timestamp) {
1229
+ // shouldn't need to convert here
1230
+ // scale Function should take care of it
1231
+ attributeValue = scale(new Date(value), colorColumnValue);
1232
+ } else {
1233
+ attributeValue = scale(value, colorColumnValue);
1234
+ }
1235
+
1236
+ if (!notNullorUndefined(attributeValue)) {
1237
+ attributeValue = nullValue;
1238
+ }
1239
+
1240
+ return attributeValue;
1241
+ }
1242
+
1243
+ updateMeta(meta) {
1244
+ this.meta = {...this.meta, ...meta};
1245
+ }
1246
+
1247
+ updateLayerLegend(settings) {
1248
+ (this as any).legendSettings = settings;
1249
+ }
1250
+
1251
+ // @ts-expect-error
1252
+ getDataUpdateTriggers({filteredIndex, id, allData}: KeplerTable): any {
1253
+ const {columns} = this.config;
1254
+
1255
+ return {
1256
+ getData: {datasetId: id, allData, columns, filteredIndex},
1257
+ getMeta: {datasetId: id, allData, columns},
1258
+ ...(this.config.textLabel || []).reduce(
1259
+ (accu, tl, i) => ({
1260
+ ...accu,
1261
+ [`getLabelCharacterSet-${i}`]: tl.field ? tl.field.name : null
1262
+ }),
1263
+ {}
1264
+ )
1265
+ };
1266
+ }
1267
+
1268
+ updateData(datasets, oldLayerData) {
1269
+ if (!this.config.dataId) {
1270
+ return {};
1271
+ }
1272
+ const dataset = this.getDataset(datasets);
1273
+ const {dataContainer} = dataset;
1274
+
1275
+ this.updateVisualChannelFields(dataset);
1276
+ this.updateHexColorDomain(dataset);
1277
+
1278
+ const getPosition = this.getPositionAccessor(dataContainer);
1279
+ const dataUpdateTriggers = this.getDataUpdateTriggers(dataset);
1280
+ const triggerChanged = this.getChangedTriggers(dataUpdateTriggers);
1281
+
1282
+ if (triggerChanged && triggerChanged.getMeta) {
1283
+ this.updateLayerMeta(dataContainer, getPosition);
1284
+ }
1285
+
1286
+ let data = [];
1287
+
1288
+ if (!(triggerChanged && triggerChanged.getData) && oldLayerData && oldLayerData.data) {
1289
+ // same data
1290
+ data = oldLayerData.data;
1291
+ } else {
1292
+ data = this.calculateDataAttribute(dataset, getPosition);
1293
+ }
1294
+
1295
+ return {data, triggerChanged};
1296
+ }
1297
+
1298
+ /**
1299
+ * Update styled fields to match ones from new dataset.
1300
+ *
1301
+ * @param {Object} dataset
1302
+ */
1303
+ updateVisualChannelFields(dataset) {
1304
+ for (const {field, range} of Object.values(this.visualChannels)) {
1305
+ const oldField = this.config[field];
1306
+ const isUsingHexColorCode = this.config.visConfig[range]?.hexColor;
1307
+ if (!oldField) {
1308
+ return;
1309
+ }
1310
+ let newDataSetField = dataset.fields.find(fd => fd.name === oldField.name) || null;
1311
+ if (isUsingHexColorCode) {
1312
+ newDataSetField = {
1313
+ ...newDataSetField,
1314
+ colorColumn: newDataSetField.colorColumn || oldField.colorColumn,
1315
+ colorColumnIdx: newDataSetField.colorColumnIdx || oldField.colorColumnIdx
1316
+ };
1317
+ }
1318
+ this.updateLayerConfig({[field]: newDataSetField});
1319
+ }
1320
+ }
1321
+
1322
+ /**
1323
+ * helper function to update one layer domain when state.data changed
1324
+ * if state.data change is due ot update filter, newFiler will be passed
1325
+ * called by updateAllLayerDomainData
1326
+ * @param datasets
1327
+ * @param newFilter
1328
+ * @returns layer
1329
+ */
1330
+ updateLayerDomain(datasets: Datasets, newFilter?: Filter): Layer {
1331
+ const table = this.getDataset(datasets);
1332
+ if (!table) {
1333
+ return this;
1334
+ }
1335
+ Object.values(this.visualChannels).forEach(channel => {
1336
+ const {scale} = channel;
1337
+ const scaleType = this.config[scale];
1338
+
1339
+ // ordinal domain is based on dataContainer, if only filter changed
1340
+ // no need to update ordinal domain
1341
+ if (!newFilter || scaleType !== SCALE_TYPES.ordinal) {
1342
+ const {domain} = channel;
1343
+ const updatedDomain = this.calculateLayerDomain(table, channel);
1344
+ this.updateLayerConfig({[domain]: updatedDomain});
1345
+ }
1346
+ });
1347
+
1348
+ return this;
1349
+ }
1350
+
1351
+ getDataset(datasets) {
1352
+ return this.config.dataId ? datasets[this.config.dataId] : null;
1353
+ }
1354
+
1355
+ /**
1356
+ * Validate visual channel field and scales based on supported field & scale type
1357
+ * @param channel
1358
+ */
1359
+ validateVisualChannel(channel: string) {
1360
+ this.validateFieldType(channel);
1361
+ this.validateScale(channel);
1362
+ }
1363
+
1364
+ /**
1365
+ * Validate field type based on channelScaleType
1366
+ */
1367
+ validateFieldType(channel: string) {
1368
+ const visualChannel = this.visualChannels[channel];
1369
+ const {field, channelScaleType, supportedFieldTypes} = visualChannel;
1370
+
1371
+ if (this.config[field]) {
1372
+ // if field is selected, check if field type is supported
1373
+ const channelSupportedFieldTypes =
1374
+ supportedFieldTypes || CHANNEL_SCALE_SUPPORTED_FIELDS[channelScaleType];
1375
+
1376
+ if (!channelSupportedFieldTypes.includes(this.config[field].type)) {
1377
+ // field type is not supported, set it back to null
1378
+ // set scale back to default
1379
+ this.updateLayerConfig({[field]: null});
1380
+ }
1381
+ }
1382
+ }
1383
+
1384
+ /**
1385
+ * Validate scale type based on aggregation
1386
+ */
1387
+ validateScale(channel) {
1388
+ const visualChannel = this.visualChannels[channel];
1389
+ const {scale, range} = visualChannel;
1390
+ if (
1391
+ !scale ||
1392
+ (this.isColoredByColorColumn(range) && this.config[scale] === SCALE_TYPES.identity)
1393
+ ) {
1394
+ // visualChannel doesn't have scale
1395
+ return;
1396
+ }
1397
+ const scaleOptions = this.getScaleOptions(channel);
1398
+ // check if current selected scale is
1399
+ // supported, if not, change to default
1400
+ if (!scaleOptions.includes(this.config[scale])) {
1401
+ this.updateLayerConfig({[scale]: scaleOptions[0]});
1402
+ }
1403
+ }
1404
+
1405
+ /**
1406
+ * Get scale options based on current field
1407
+ * @param {string} channel
1408
+ * @returns {string[]}
1409
+ */
1410
+ getScaleOptions(channel) {
1411
+ const visualChannel = this.visualChannels[channel];
1412
+ const {field, scale, channelScaleType} = visualChannel;
1413
+
1414
+ return this.config[field]
1415
+ ? FIELD_OPTS[this.config[field].type].scale[channelScaleType]
1416
+ : [this.getDefaultLayerConfig()[scale]];
1417
+ }
1418
+
1419
+ updateLayerVisualChannel(dataset: KeplerTable, channel: string) {
1420
+ const visualChannel = this.visualChannels[channel];
1421
+ this.validateVisualChannel(channel);
1422
+ // calculate layer channel domain
1423
+ const updatedDomain = this.calculateLayerDomain(dataset, visualChannel);
1424
+ this.updateLayerConfig({[visualChannel.domain]: updatedDomain});
1425
+ }
1426
+
1427
+ getVisualChannelUpdateTriggers(): UpdateTriggers {
1428
+ const updateTriggers: UpdateTriggers = {};
1429
+ Object.values(this.visualChannels).forEach(visualChannel => {
1430
+ // field range scale domain
1431
+ const {accessor, field, scale, domain, range, defaultValue, fixed} = visualChannel;
1432
+
1433
+ if (accessor) {
1434
+ updateTriggers[accessor] = {
1435
+ [field]: this.config[field],
1436
+ [scale]: this.config[scale],
1437
+ [domain]: this.config[domain],
1438
+ [range]: this.config.visConfig[range],
1439
+ defaultValue:
1440
+ typeof defaultValue === 'function' ? defaultValue(this.config) : defaultValue,
1441
+ ...(fixed ? {[fixed]: this.config.visConfig[fixed]} : {})
1442
+ };
1443
+ }
1444
+ });
1445
+ return updateTriggers;
1446
+ }
1447
+
1448
+ calculateLayerDomain(dataset, visualChannel) {
1449
+ const {scale} = visualChannel;
1450
+ const field = this.config[visualChannel.field];
1451
+ if (!field || !scale) {
1452
+ // if colorField or sizeField were set back to null
1453
+ return defaultDomain;
1454
+ }
1455
+
1456
+ const scaleType = this.config[scale];
1457
+ const dataSetField = dataset.fields.find(f => f.name === field.name);
1458
+ if (!scaleType || !dataSetField) {
1459
+ // if new dataset doesn't contain previously set field
1460
+ return defaultDomain;
1461
+ }
1462
+
1463
+ return dataset.getColumnLayerDomain(dataSetField, scaleType) || defaultDomain;
1464
+ }
1465
+
1466
+ updateHexColorDomain(dataset) {
1467
+ if (!dataset) {
1468
+ return this;
1469
+ }
1470
+ Object.values(this.visualChannels).forEach(channel => {
1471
+ const channelConfig = this.config.visConfig[channel.range];
1472
+ const field = this.config[channel.field];
1473
+
1474
+ if (channelConfig?.type === hexColor && field?.colorColumn) {
1475
+ const dataSetField = dataset.fields.find(f => f.name === field.colorColumn);
1476
+ const colors = dataset
1477
+ .getColumnLayerDomain(dataSetField, SCALE_TYPES.ordinal)
1478
+ .map(c => checkColorOrFallback(c));
1479
+ this.updateLayerVisConfig({
1480
+ [channel.range]: {...channelConfig, colors}
1481
+ });
1482
+ }
1483
+ });
1484
+
1485
+ return this;
1486
+ }
1487
+
1488
+ calculateHexColumnLegend(datasets) {
1489
+ const dataset = this.getDataset(datasets);
1490
+ if (!datasets) {
1491
+ return;
1492
+ }
1493
+
1494
+ const legendSettings = Object.keys(this.visualChannels).reduce((legends, channel) => {
1495
+ const {range, field: channelField} = this.visualChannels[channel];
1496
+ const channelConfig = this.config.visConfig[range];
1497
+ const field = this.config[channelField];
1498
+
1499
+ if (channelConfig?.type === hexColor && field?.colorColumn) {
1500
+ const dataSetField = dataset.fields.find(f => f.name === field.colorColumn);
1501
+ const legend = dataset.calculateLegend(field, dataSetField);
1502
+ legends[channel] = legend;
1503
+ }
1504
+ return legends;
1505
+ }, {});
1506
+ this.updateLayerLegend(legendSettings);
1507
+ }
1508
+
1509
+ hasHoveredObject(objectInfo) {
1510
+ return this.isLayerHovered(objectInfo) && objectInfo.object ? objectInfo.object : null;
1511
+ }
1512
+
1513
+ isLayerHovered(objectInfo): boolean {
1514
+ return objectInfo?.picked && objectInfo?.layer?.props?.id === this.id;
1515
+ }
1516
+
1517
+ getRadiusScaleByZoom(mapState: MapState, fixedRadius?: boolean) {
1518
+ const radiusChannel = Object.values(this.visualChannels).find(vc => vc.property === 'radius');
1519
+
1520
+ if (!radiusChannel) {
1521
+ return 1;
1522
+ }
1523
+
1524
+ const field = radiusChannel.field;
1525
+ const {radius} = this.config.visConfig;
1526
+
1527
+ // @ts-ignore
1528
+ return (this.config[field] ? 1 : radius) * this.getZoomFactor(mapState);
1529
+ }
1530
+
1531
+ getRadiusScale() {
1532
+ const radiusChannel = Object.values(this.visualChannels).find(vc => vc.property === 'radius');
1533
+
1534
+ if (!radiusChannel || this.config[radiusChannel.field]) {
1535
+ return 1;
1536
+ }
1537
+
1538
+ return this.config.visConfig.radius;
1539
+ }
1540
+
1541
+ getMaxMarkerSize() {
1542
+ const {radiusField, sizeField, visConfig} = this.config as any;
1543
+ const {radiusRange, radius} = visConfig;
1544
+ const field = radiusField || sizeField;
1545
+ return Math.ceil((field && radiusRange ? radiusRange[1] : radius));
1546
+ }
1547
+
1548
+ shouldCalculateLayerData(props: string[]) {
1549
+ return props.some(p => !this.noneLayerDataAffectingProps.includes(p));
1550
+ }
1551
+
1552
+ getBrushingExtensionProps(interactionConfig, brushingTarget?) {
1553
+ const {brush} = interactionConfig;
1554
+
1555
+ return {
1556
+ // brushing
1557
+ autoHighlight: !brush.enabled,
1558
+ brushingRadius: brush.config.size * 1000,
1559
+ brushingTarget: brushingTarget || 'source',
1560
+ brushingEnabled: brush.enabled
1561
+ };
1562
+ }
1563
+
1564
+ getDefaultDeckLayerProps({
1565
+ idx,
1566
+ gpuFilter,
1567
+ mapState,
1568
+ visible,
1569
+ maskPolygon
1570
+ }: {
1571
+ idx: number;
1572
+ gpuFilter: GpuFilter;
1573
+ mapState: MapState;
1574
+ visible: boolean;
1575
+ maskPolygon: any;
1576
+ }) {
1577
+ const maskExtensionProps = getMaskExtensionProps(maskPolygon);
1578
+ return {
1579
+ ...maskExtensionProps,
1580
+ id: this.id,
1581
+ idx,
1582
+ coordinateSystem: COORDINATE_SYSTEM.LNGLAT,
1583
+ pickable: this.hasInteractivity,
1584
+ wrapLongitude: true,
1585
+ parameters: {depthTest: Boolean(mapState.dragRotate || this.config.visConfig.enable3d)},
1586
+ hidden: this.config.hidden,
1587
+ visibilityByZoom: (this.config as any).visibilityByZoom,
1588
+ // visconfig
1589
+ opacity: this.config.visConfig.opacity,
1590
+ highlightColor: this.config.highlightColor,
1591
+ // data filtering
1592
+ extensions: [dataFilterExtension, ...maskExtensionProps.extensions],
1593
+ filterRange: gpuFilter ? gpuFilter.filterRange : undefined,
1594
+ // layer should be visible and if splitMap, shown in to one of panel
1595
+ visible: this.config.isVisible && visible
1596
+ };
1597
+ }
1598
+
1599
+ getDefaultHoverLayerProps() {
1600
+ return {
1601
+ id: `${this.id}-hovered`,
1602
+ pickable: false,
1603
+ wrapLongitude: true,
1604
+ coordinateSystem: COORDINATE_SYSTEM.LNGLAT
1605
+ };
1606
+ }
1607
+
1608
+ renderTextLabelLayer(
1609
+ {getPosition, getRadius, radiusScale, updateTriggers, sharedProps},
1610
+ renderOpts
1611
+ ) {
1612
+ const {data} = renderOpts;
1613
+ const {textLabel, visibilityByZoom} = this.config as any;
1614
+ const extensions = [...sharedProps.extensions, collisionFilterExtension];
1615
+
1616
+ if (!data || !data.textLabels || !data.textLabels[0] || !data.textLabels[0].getText) {
1617
+ return [];
1618
+ }
1619
+
1620
+ const [mainLabel, secondaryLabel] = textLabel;
1621
+ const {
1622
+ alignment,
1623
+ anchor,
1624
+ color: getColor,
1625
+ field: mainField,
1626
+ outlineColor,
1627
+ size: sizeScale
1628
+ } = mainLabel;
1629
+ const {
1630
+ color: getSecondaryColor,
1631
+ field: secondaryField,
1632
+ outlineColor: secondaryOutlineColor,
1633
+ size: secondarySizeScale
1634
+ } = secondaryLabel || {};
1635
+
1636
+ return [
1637
+ new PointLabelLayer({
1638
+ ...sharedProps,
1639
+
1640
+ // Recreate layer when labels change otherwise rendering breaks
1641
+ // TODO could be more efficient with updateTriggers?
1642
+ id: `${this.id}-${mainField?.name}-${secondaryField?.name}-label`,
1643
+ data: data.data,
1644
+ visibilityByZoom,
1645
+ extensions,
1646
+
1647
+ characterSet: 'auto',
1648
+ collisionEnabled: true,
1649
+ collisionGroup: `${this.id}-labels`,
1650
+
1651
+ getText: data.textLabels[0].getText,
1652
+ getColor,
1653
+ sizeScale,
1654
+ outlineColor,
1655
+
1656
+ ...(secondaryField && {
1657
+ getSecondaryText: data.textLabels[1].getText,
1658
+ getSecondaryColor,
1659
+ secondarySizeScale,
1660
+ secondaryOutlineColor
1661
+ }),
1662
+
1663
+ // Position
1664
+ getPosition,
1665
+ getRadius,
1666
+ radiusScale,
1667
+ getTextAnchor: anchor,
1668
+ getAlignmentBaseline: alignment,
1669
+
1670
+ // Style
1671
+ fontFamily: 'Inter, sans',
1672
+ fontSettings: {sdf: true},
1673
+ fontWeight: 500,
1674
+ outlineWidth: 4,
1675
+ parameters: {
1676
+ // text will always show on top of all layers
1677
+ depthTest: false
1678
+ },
1679
+
1680
+ getFilterValue: data.getFilterValue,
1681
+ updateTriggers: {
1682
+ ...updateTriggers,
1683
+ getText: mainField?.name,
1684
+ getColor: (mainField as any)?.color,
1685
+ getTextAnchor: mainLabel.anchor,
1686
+ getAlignmentBaseline: mainLabel.alignment,
1687
+ getSecondaryText: secondaryField?.name
1688
+ }
1689
+ })
1690
+ ];
1691
+ }
1692
+
1693
+ /**
1694
+ * Create deck.gl `IconLayer` "autoPack" mode accessor for custom markers.
1695
+ *
1696
+ * @param {*} iconUrlAccessor deck.gl accessor (or value) that resolves to URL of icon for given row
1697
+ * @returns deck.gl accessor that returns UnpackedIcon ready to consume by IconLayer
1698
+ */
1699
+ getCustomMarkerIconAccessor(iconUrlAccessor, mask = true) {
1700
+ const maxIconSize = this.getMaxMarkerSize();
1701
+
1702
+ return d => {
1703
+ const wantedUrl =
1704
+ (typeof iconUrlAccessor === 'function') ? iconUrlAccessor(d) : iconUrlAccessor;
1705
+ const iconOk = Boolean(wantedUrl);
1706
+ mask = iconOk ? mask : true;
1707
+ const url = iconOk ? wantedUrl : FALLBACK_ICON;
1708
+ return {
1709
+ id: `${url}@@${maxIconSize}@${mask ? 'm' : 'c'}`,
1710
+ url,
1711
+ width: maxIconSize,
1712
+ height: maxIconSize,
1713
+ mask
1714
+ };
1715
+ };
1716
+ }
1717
+
1718
+ calculateDataAttribute(keplerTable: KeplerTable, getPosition): any {
1719
+ // implemented in subclasses
1720
+ return [];
1721
+ }
1722
+
1723
+ updateLayerMeta(dataContainer: DataContainerInterface, getPosition) {
1724
+ // implemented in subclasses
1725
+ }
1726
+
1727
+ getPositionAccessor(dataContainer?: DataContainerInterface): (...args: any[]) => any {
1728
+ // implemented in subclasses
1729
+ return () => null;
1730
+ }
1731
+
1732
+ getHexColumn(range) {
1733
+ const field = Object.values(this.visualChannels)?.find(value => value.range === range)?.field;
1734
+ if (field) {
1735
+ return this.config[field]?.colorColumn;
1736
+ }
1737
+ }
1738
+
1739
+ isColoredByColorColumn(range) {
1740
+ return this.config.visConfig[range]?.hexColor;
1741
+ }
1742
+ }
1743
+
1744
+ export default Layer;