@kepler.gl/components 3.0.0-alpha.0 → 3.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (631) hide show
  1. package/dist/bottom-widget.d.ts +11 -38
  2. package/dist/bottom-widget.js +42 -118
  3. package/dist/common/action-panel.d.ts +2 -2
  4. package/dist/common/action-panel.js +3 -23
  5. package/dist/common/animation-control/animation-control.d.ts +19 -18
  6. package/dist/common/animation-control/animation-control.js +58 -100
  7. package/dist/common/animation-control/animation-controller.d.ts +6 -2
  8. package/dist/common/animation-control/animation-controller.js +49 -55
  9. package/dist/common/animation-control/animation-speed-slider.js +1 -21
  10. package/dist/common/animation-control/animation-window-control.js +3 -21
  11. package/dist/common/animation-control/floating-time-display.d.ts +2 -2
  12. package/dist/common/animation-control/floating-time-display.js +1 -21
  13. package/dist/common/animation-control/play-control.d.ts +2 -2
  14. package/dist/common/animation-control/play-control.js +3 -21
  15. package/dist/common/animation-control/playback-controls.d.ts +7 -7
  16. package/dist/common/animation-control/playback-controls.js +5 -25
  17. package/dist/common/animation-control/reset-control.d.ts +2 -2
  18. package/dist/common/animation-control/reset-control.js +3 -21
  19. package/dist/common/animation-control/speed-control.d.ts +2 -2
  20. package/dist/common/animation-control/speed-control.js +1 -21
  21. package/dist/common/animation-control/window-action-control.d.ts +2 -2
  22. package/dist/common/animation-control/window-action-control.js +3 -21
  23. package/dist/common/checkbox.d.ts +2 -2
  24. package/dist/common/checkbox.js +2 -22
  25. package/dist/common/color-legend.d.ts +3 -3
  26. package/dist/common/color-legend.js +10 -36
  27. package/dist/common/data-table/button.d.ts +1 -1
  28. package/dist/common/data-table/button.js +1 -21
  29. package/dist/common/data-table/canvas.js +1 -21
  30. package/dist/common/data-table/cell-size.js +43 -32
  31. package/dist/common/data-table/display-format.d.ts +25 -0
  32. package/dist/common/data-table/display-format.js +149 -0
  33. package/dist/common/data-table/grid.d.ts +5 -2
  34. package/dist/common/data-table/grid.js +44 -24
  35. package/dist/common/data-table/header-cell.d.ts +4 -1
  36. package/dist/common/data-table/header-cell.js +65 -48
  37. package/dist/common/data-table/index.d.ts +27 -34
  38. package/dist/common/data-table/index.js +147 -81
  39. package/dist/common/data-table/option-dropdown.d.ts +17 -3
  40. package/dist/common/data-table/option-dropdown.js +85 -32
  41. package/dist/common/dataset-label.d.ts +2 -2
  42. package/dist/common/dataset-label.js +2 -22
  43. package/dist/common/error-boundary.d.ts +6 -2
  44. package/dist/common/error-boundary.js +1 -21
  45. package/dist/common/field-selector.d.ts +10 -3
  46. package/dist/common/field-selector.js +4 -22
  47. package/dist/common/field-token.d.ts +12 -0
  48. package/dist/common/field-token.js +6 -22
  49. package/dist/common/file-uploader/file-drop.d.ts +3 -2
  50. package/dist/common/file-uploader/file-drop.js +1 -21
  51. package/dist/common/file-uploader/file-upload-progress.js +1 -21
  52. package/dist/common/file-uploader/file-upload.d.ts +2 -6
  53. package/dist/common/file-uploader/file-upload.js +1 -21
  54. package/dist/common/file-uploader/upload-button.d.ts +1 -0
  55. package/dist/common/file-uploader/upload-button.js +1 -21
  56. package/dist/common/flex-container.d.ts +3 -0
  57. package/dist/common/flex-container.js +23 -0
  58. package/dist/common/histogram-plot.d.ts +2 -2
  59. package/dist/common/histogram-plot.js +17 -31
  60. package/dist/common/icon-button.d.ts +3 -2
  61. package/dist/common/icon-button.js +1 -21
  62. package/dist/common/icons/add.d.ts +2 -2
  63. package/dist/common/icons/add.js +1 -21
  64. package/dist/common/icons/anchor_window.d.ts +2 -2
  65. package/dist/common/icons/anchor_window.js +6 -22
  66. package/dist/common/icons/arrow-down-alt.d.ts +2 -2
  67. package/dist/common/icons/arrow-down-alt.js +1 -21
  68. package/dist/common/icons/arrow-down-small.d.ts +14 -0
  69. package/dist/common/icons/arrow-down-small.js +72 -0
  70. package/dist/common/icons/arrow-down-solid.d.ts +2 -2
  71. package/dist/common/icons/arrow-down-solid.js +1 -21
  72. package/dist/common/icons/arrow-down.d.ts +2 -2
  73. package/dist/common/icons/arrow-down.js +1 -21
  74. package/dist/common/icons/arrow-left.d.ts +2 -2
  75. package/dist/common/icons/arrow-left.js +1 -21
  76. package/dist/common/icons/arrow-right.d.ts +2 -2
  77. package/dist/common/icons/arrow-right.js +1 -21
  78. package/dist/common/icons/arrow-up-alt.d.ts +2 -2
  79. package/dist/common/icons/arrow-up-alt.js +1 -21
  80. package/dist/common/icons/arrow-up-solid.d.ts +2 -2
  81. package/dist/common/icons/arrow-up-solid.js +1 -21
  82. package/dist/common/icons/arrow-up.d.ts +2 -2
  83. package/dist/common/icons/arrow-up.js +1 -21
  84. package/dist/common/icons/base.d.ts +1 -1
  85. package/dist/common/icons/base.js +1 -21
  86. package/dist/common/icons/bug.d.ts +2 -2
  87. package/dist/common/icons/bug.js +1 -21
  88. package/dist/common/icons/calendar.d.ts +10 -0
  89. package/dist/common/icons/calendar.js +66 -0
  90. package/dist/common/icons/cancel.d.ts +2 -2
  91. package/dist/common/icons/cancel.js +1 -21
  92. package/dist/common/icons/checkmark.d.ts +2 -2
  93. package/dist/common/icons/checkmark.js +1 -21
  94. package/dist/common/icons/clipboard.d.ts +2 -2
  95. package/dist/common/icons/clipboard.js +1 -21
  96. package/dist/common/icons/clock.d.ts +2 -2
  97. package/dist/common/icons/clock.js +1 -21
  98. package/dist/common/icons/close.d.ts +2 -2
  99. package/dist/common/icons/close.js +1 -21
  100. package/dist/common/icons/code-alt.d.ts +2 -2
  101. package/dist/common/icons/code-alt.js +1 -21
  102. package/dist/common/icons/copy.d.ts +2 -2
  103. package/dist/common/icons/copy.js +1 -21
  104. package/dist/common/icons/crosshairs.d.ts +2 -2
  105. package/dist/common/icons/crosshairs.js +1 -21
  106. package/dist/common/icons/cube-3d.d.ts +2 -2
  107. package/dist/common/icons/cube-3d.js +1 -21
  108. package/dist/common/icons/cursor-click.d.ts +2 -2
  109. package/dist/common/icons/cursor-click.js +1 -21
  110. package/dist/common/icons/cursor-point.d.ts +14 -0
  111. package/dist/common/icons/cursor-point.js +69 -0
  112. package/dist/common/icons/data-table.d.ts +2 -2
  113. package/dist/common/icons/data-table.js +1 -21
  114. package/dist/common/icons/db.d.ts +2 -2
  115. package/dist/common/icons/db.js +1 -21
  116. package/dist/common/icons/delete.d.ts +2 -2
  117. package/dist/common/icons/delete.js +1 -21
  118. package/dist/common/icons/docs.d.ts +2 -2
  119. package/dist/common/icons/docs.js +1 -21
  120. package/dist/common/icons/drag-n-drop.d.ts +2 -2
  121. package/dist/common/icons/drag-n-drop.js +1 -21
  122. package/dist/common/icons/draw-polygon.d.ts +2 -2
  123. package/dist/common/icons/draw-polygon.js +1 -21
  124. package/dist/common/icons/effects/brightness-contrast.d.ts +14 -0
  125. package/dist/common/icons/effects/brightness-contrast.js +88 -0
  126. package/dist/common/icons/effects/color-halftone.d.ts +14 -0
  127. package/dist/common/icons/effects/color-halftone.js +127 -0
  128. package/dist/common/icons/effects/dot-screen.d.ts +14 -0
  129. package/dist/common/icons/effects/dot-screen.js +122 -0
  130. package/dist/common/icons/effects/edge-work.d.ts +14 -0
  131. package/dist/common/icons/effects/edge-work.js +81 -0
  132. package/dist/common/icons/effects/hexagonal-pixelate.d.ts +14 -0
  133. package/dist/common/icons/effects/hexagonal-pixelate.js +148 -0
  134. package/dist/common/icons/effects/hue-saturation.d.ts +14 -0
  135. package/dist/common/icons/effects/hue-saturation.js +79 -0
  136. package/dist/common/icons/effects/ink.d.ts +14 -0
  137. package/dist/common/icons/effects/ink.js +78 -0
  138. package/dist/common/icons/effects/light-and-shadow.d.ts +14 -0
  139. package/dist/common/icons/effects/light-and-shadow.js +67 -0
  140. package/dist/common/icons/effects/magic-wand.d.ts +14 -0
  141. package/dist/common/icons/effects/magic-wand.js +79 -0
  142. package/dist/common/icons/effects/magnify.d.ts +14 -0
  143. package/dist/common/icons/effects/magnify.js +86 -0
  144. package/dist/common/icons/effects/noise.d.ts +14 -0
  145. package/dist/common/icons/effects/noise.js +132 -0
  146. package/dist/common/icons/effects/sepia.d.ts +14 -0
  147. package/dist/common/icons/effects/sepia.js +79 -0
  148. package/dist/common/icons/effects/tilt-shift.d.ts +14 -0
  149. package/dist/common/icons/effects/tilt-shift.js +88 -0
  150. package/dist/common/icons/effects/triangle-blur.d.ts +14 -0
  151. package/dist/common/icons/effects/triangle-blur.js +83 -0
  152. package/dist/common/icons/effects/vibrance.d.ts +14 -0
  153. package/dist/common/icons/effects/vibrance.js +79 -0
  154. package/dist/common/icons/effects/vignette.d.ts +14 -0
  155. package/dist/common/icons/effects/vignette.js +72 -0
  156. package/dist/common/icons/effects/zoom-blur.d.ts +14 -0
  157. package/dist/common/icons/effects/zoom-blur.js +107 -0
  158. package/dist/common/icons/email.d.ts +2 -2
  159. package/dist/common/icons/email.js +1 -21
  160. package/dist/common/icons/expand.d.ts +2 -2
  161. package/dist/common/icons/expand.js +1 -21
  162. package/dist/common/icons/eye-seen.d.ts +2 -2
  163. package/dist/common/icons/eye-seen.js +1 -21
  164. package/dist/common/icons/eye-unseen.d.ts +2 -2
  165. package/dist/common/icons/eye-unseen.js +1 -21
  166. package/dist/common/icons/file-type.d.ts +2 -2
  167. package/dist/common/icons/file-type.js +1 -21
  168. package/dist/common/icons/file.d.ts +2 -2
  169. package/dist/common/icons/file.js +1 -21
  170. package/dist/common/icons/files.d.ts +1 -1
  171. package/dist/common/icons/files.js +1 -21
  172. package/dist/common/icons/filter-funnel.d.ts +2 -2
  173. package/dist/common/icons/filter-funnel.js +1 -21
  174. package/dist/common/icons/free-window.d.ts +2 -2
  175. package/dist/common/icons/free-window.js +6 -22
  176. package/dist/common/icons/gear.d.ts +2 -2
  177. package/dist/common/icons/gear.js +1 -21
  178. package/dist/common/icons/globe.d.ts +15 -0
  179. package/dist/common/icons/globe.js +72 -0
  180. package/dist/common/icons/hash.d.ts +2 -2
  181. package/dist/common/icons/hash.js +1 -21
  182. package/dist/common/icons/histogram.d.ts +1 -1
  183. package/dist/common/icons/histogram.js +1 -21
  184. package/dist/common/icons/index.d.ts +26 -0
  185. package/dist/common/icons/index.js +209 -21
  186. package/dist/common/icons/info.d.ts +2 -2
  187. package/dist/common/icons/info.js +1 -21
  188. package/dist/common/icons/layers.d.ts +2 -2
  189. package/dist/common/icons/layers.js +1 -21
  190. package/dist/common/icons/left-arrow.d.ts +2 -2
  191. package/dist/common/icons/left-arrow.js +1 -21
  192. package/dist/common/icons/legend.d.ts +2 -2
  193. package/dist/common/icons/legend.js +1 -21
  194. package/dist/common/icons/line-chart.d.ts +2 -2
  195. package/dist/common/icons/line-chart.js +1 -21
  196. package/dist/common/icons/location-marker.d.ts +14 -0
  197. package/dist/common/icons/location-marker.js +77 -0
  198. package/dist/common/icons/login.d.ts +2 -2
  199. package/dist/common/icons/login.js +1 -21
  200. package/dist/common/icons/logout.d.ts +2 -2
  201. package/dist/common/icons/logout.js +1 -21
  202. package/dist/common/icons/map-icon.d.ts +2 -2
  203. package/dist/common/icons/map-icon.js +1 -21
  204. package/dist/common/icons/map.d.ts +2 -2
  205. package/dist/common/icons/map.js +1 -21
  206. package/dist/common/icons/messages.d.ts +2 -2
  207. package/dist/common/icons/messages.js +1 -21
  208. package/dist/common/icons/minus.d.ts +2 -2
  209. package/dist/common/icons/minus.js +1 -21
  210. package/dist/common/icons/moon.d.ts +14 -0
  211. package/dist/common/icons/moon.js +77 -0
  212. package/dist/common/icons/order-by-dataset.d.ts +2 -2
  213. package/dist/common/icons/order-by-dataset.js +6 -22
  214. package/dist/common/icons/order-by-list.d.ts +2 -2
  215. package/dist/common/icons/order-by-list.js +6 -22
  216. package/dist/common/icons/pause.d.ts +2 -2
  217. package/dist/common/icons/pause.js +1 -21
  218. package/dist/common/icons/picture.d.ts +1 -1
  219. package/dist/common/icons/picture.js +1 -21
  220. package/dist/common/icons/pin.d.ts +2 -2
  221. package/dist/common/icons/pin.js +1 -21
  222. package/dist/common/icons/play.d.ts +2 -2
  223. package/dist/common/icons/play.js +1 -21
  224. package/dist/common/icons/polygon.d.ts +2 -2
  225. package/dist/common/icons/polygon.js +1 -21
  226. package/dist/common/icons/rectangle.d.ts +2 -2
  227. package/dist/common/icons/rectangle.js +1 -21
  228. package/dist/common/icons/reduce.d.ts +2 -2
  229. package/dist/common/icons/reduce.js +1 -21
  230. package/dist/common/icons/reset.d.ts +2 -2
  231. package/dist/common/icons/reset.js +1 -21
  232. package/dist/common/icons/rocket.d.ts +2 -2
  233. package/dist/common/icons/rocket.js +1 -21
  234. package/dist/common/icons/save.d.ts +2 -2
  235. package/dist/common/icons/save.js +1 -21
  236. package/dist/common/icons/save2.d.ts +2 -2
  237. package/dist/common/icons/save2.js +1 -21
  238. package/dist/common/icons/search.d.ts +2 -2
  239. package/dist/common/icons/search.js +1 -21
  240. package/dist/common/icons/settings.d.ts +2 -2
  241. package/dist/common/icons/settings.js +1 -21
  242. package/dist/common/icons/share.d.ts +2 -2
  243. package/dist/common/icons/share.js +1 -21
  244. package/dist/common/icons/split.d.ts +2 -2
  245. package/dist/common/icons/split.js +1 -21
  246. package/dist/common/icons/square-select.d.ts +2 -2
  247. package/dist/common/icons/square-select.js +1 -21
  248. package/dist/common/icons/sun.d.ts +14 -0
  249. package/dist/common/icons/sun.js +93 -0
  250. package/dist/common/icons/sunrise.d.ts +14 -0
  251. package/dist/common/icons/sunrise.js +89 -0
  252. package/dist/common/icons/sunset.d.ts +14 -0
  253. package/dist/common/icons/sunset.js +89 -0
  254. package/dist/common/icons/trash.d.ts +2 -2
  255. package/dist/common/icons/trash.js +1 -21
  256. package/dist/common/icons/vert-dots.d.ts +2 -2
  257. package/dist/common/icons/vert-dots.js +1 -21
  258. package/dist/common/icons/vert-three-dots.d.ts +2 -2
  259. package/dist/common/icons/vert-three-dots.js +1 -21
  260. package/dist/common/icons/warning-sign.d.ts +2 -2
  261. package/dist/common/icons/warning-sign.js +1 -21
  262. package/dist/common/icons/warning.d.ts +2 -2
  263. package/dist/common/icons/warning.js +1 -21
  264. package/dist/common/image-preview.d.ts +2 -2
  265. package/dist/common/image-preview.js +1 -21
  266. package/dist/common/index.d.ts +1 -1
  267. package/dist/common/index.js +7 -21
  268. package/dist/common/info-helper.d.ts +2 -2
  269. package/dist/common/info-helper.js +1 -21
  270. package/dist/common/item-selector/accessor.js +5 -22
  271. package/dist/common/item-selector/chickleted-input.d.ts +1 -0
  272. package/dist/common/item-selector/chickleted-input.js +104 -44
  273. package/dist/common/item-selector/dropdown-list.d.ts +30 -8
  274. package/dist/common/item-selector/dropdown-list.js +150 -46
  275. package/dist/common/item-selector/item-selector.d.ts +5 -3
  276. package/dist/common/item-selector/item-selector.js +16 -24
  277. package/dist/common/item-selector/typeahead.d.ts +16 -12
  278. package/dist/common/item-selector/typeahead.js +23 -32
  279. package/dist/common/line-chart.d.ts +2 -2
  280. package/dist/common/line-chart.js +1 -21
  281. package/dist/common/loading-spinner.js +1 -21
  282. package/dist/common/logo.d.ts +2 -2
  283. package/dist/common/logo.js +1 -21
  284. package/dist/common/map-layer-selector.d.ts +2 -2
  285. package/dist/common/map-layer-selector.js +2 -23
  286. package/dist/common/modal.d.ts +24 -11
  287. package/dist/common/modal.js +25 -28
  288. package/dist/common/portaled.d.ts +526 -2
  289. package/dist/common/portaled.js +1 -21
  290. package/dist/common/progress-bar.d.ts +2 -2
  291. package/dist/common/progress-bar.js +1 -21
  292. package/dist/common/range-brush.js +1 -21
  293. package/dist/common/range-plot.d.ts +6 -2
  294. package/dist/common/range-plot.js +3 -22
  295. package/dist/common/range-slider.d.ts +6 -2
  296. package/dist/common/range-slider.js +8 -22
  297. package/dist/common/slider/mouse-event.js +6 -22
  298. package/dist/common/slider/slider-bar-handle.d.ts +2 -2
  299. package/dist/common/slider/slider-bar-handle.js +1 -21
  300. package/dist/common/slider/slider-handle.d.ts +1 -1
  301. package/dist/common/slider/slider-handle.js +1 -21
  302. package/dist/common/slider/slider.d.ts +7 -5
  303. package/dist/common/slider/slider.js +7 -24
  304. package/dist/common/styled-components.d.ts +8 -3
  305. package/dist/common/styled-components.js +161 -68
  306. package/dist/common/switch.d.ts +3 -2
  307. package/dist/common/switch.js +1 -21
  308. package/dist/common/time-range-slider-time-title.d.ts +2 -2
  309. package/dist/common/time-range-slider-time-title.js +1 -21
  310. package/dist/common/time-range-slider.d.ts +6 -3
  311. package/dist/common/time-range-slider.js +32 -33
  312. package/dist/common/time-slider-marker.d.ts +1 -1
  313. package/dist/common/time-slider-marker.js +2 -22
  314. package/dist/common/timeline-slider.d.ts +13 -0
  315. package/dist/common/timeline-slider.js +153 -0
  316. package/dist/common/tippy-tooltip.d.ts +4 -2
  317. package/dist/common/tippy-tooltip.js +22 -30
  318. package/dist/common/toolbar-item.d.ts +1 -1
  319. package/dist/common/toolbar-item.js +5 -23
  320. package/dist/common/toolbar.js +1 -21
  321. package/dist/common/vertical-toolbar.js +1 -21
  322. package/dist/connect/keplergl-connect.d.ts +5 -1
  323. package/dist/connect/keplergl-connect.js +6 -22
  324. package/dist/connect/with-local-selector.js +1 -21
  325. package/dist/container.js +1 -21
  326. package/dist/context.d.ts +11 -0
  327. package/dist/context.js +20 -24
  328. package/dist/dnd-context.d.ts +13 -0
  329. package/dist/dnd-context.js +157 -0
  330. package/dist/editor/editor.d.ts +11 -10
  331. package/dist/editor/editor.js +96 -122
  332. package/dist/editor/feature-action-panel.d.ts +8 -6
  333. package/dist/editor/feature-action-panel.js +57 -55
  334. package/dist/effects/compact-color-picker.d.ts +10 -0
  335. package/dist/effects/compact-color-picker.js +130 -0
  336. package/dist/effects/effect-configurator.d.ts +17 -0
  337. package/dist/effects/effect-configurator.js +302 -0
  338. package/dist/effects/effect-list.d.ts +15 -0
  339. package/dist/effects/effect-list.js +153 -0
  340. package/dist/effects/effect-manager.d.ts +22 -0
  341. package/dist/effects/effect-manager.js +142 -0
  342. package/dist/effects/effect-panel-header.d.ts +45 -0
  343. package/dist/effects/effect-panel-header.js +206 -0
  344. package/dist/effects/effect-panel.d.ts +24 -0
  345. package/dist/effects/effect-panel.js +149 -0
  346. package/dist/effects/effect-time-configurator.d.ts +20 -0
  347. package/dist/effects/effect-time-configurator.js +340 -0
  348. package/dist/effects/effect-time-selector.d.ts +16 -0
  349. package/dist/effects/effect-time-selector.js +181 -0
  350. package/dist/effects/effect-time-slider.d.ts +34 -0
  351. package/dist/effects/effect-time-slider.js +220 -0
  352. package/dist/effects/effect-type-dropdown-list.d.ts +18 -0
  353. package/dist/effects/effect-type-dropdown-list.js +77 -0
  354. package/dist/effects/effect-type-list-item.d.ts +22 -0
  355. package/dist/effects/effect-type-list-item.js +105 -0
  356. package/dist/effects/effect-type-selector.d.ts +30 -0
  357. package/dist/effects/effect-type-selector.js +92 -0
  358. package/dist/effects/side-panel-title.d.ts +7 -0
  359. package/dist/effects/side-panel-title.js +47 -0
  360. package/dist/effects/timezone-selector.d.ts +19 -0
  361. package/dist/effects/timezone-selector.js +71 -0
  362. package/dist/filter-animation-controller.d.ts +17 -0
  363. package/dist/filter-animation-controller.js +73 -0
  364. package/dist/filters/components.js +1 -21
  365. package/dist/filters/filter-panels/filter-panel-with-field-select.js +7 -23
  366. package/dist/filters/filter-panels/multi-select-filter-panel.js +7 -23
  367. package/dist/filters/filter-panels/new-filter-panel.js +6 -22
  368. package/dist/filters/filter-panels/polygon-filter-panel.js +7 -23
  369. package/dist/filters/filter-panels/range-filter-panel.js +7 -23
  370. package/dist/filters/filter-panels/single-select-filter-panel.js +7 -23
  371. package/dist/filters/filter-panels/time-range-filter-panel.js +24 -27
  372. package/dist/filters/filter-panels/types.d.ts +2 -1
  373. package/dist/filters/filter-panels/types.js +0 -20
  374. package/dist/filters/index.d.ts +2 -0
  375. package/dist/filters/index.js +17 -21
  376. package/dist/filters/multi-select-filter.js +6 -22
  377. package/dist/filters/polygon-filter.js +18 -24
  378. package/dist/filters/range-filter.js +9 -23
  379. package/dist/filters/single-select-filter.js +6 -22
  380. package/dist/filters/time-range-filter.d.ts +2 -1
  381. package/dist/filters/time-range-filter.js +15 -27
  382. package/dist/filters/time-widget-top.d.ts +8 -0
  383. package/dist/filters/time-widget-top.js +103 -0
  384. package/dist/filters/time-widget.d.ts +3 -7
  385. package/dist/filters/time-widget.js +34 -111
  386. package/dist/filters/types.d.ts +7 -3
  387. package/dist/filters/types.js +0 -20
  388. package/dist/geocoder/geocoder.d.ts +1 -3
  389. package/dist/geocoder/geocoder.js +10 -27
  390. package/dist/geocoder-panel.d.ts +9 -3
  391. package/dist/geocoder-panel.js +29 -38
  392. package/dist/hooks/use-cloud-list-provider.d.ts +11 -0
  393. package/dist/hooks/use-cloud-list-provider.js +57 -0
  394. package/dist/hooks/use-dnd-effects.d.ts +9 -0
  395. package/dist/hooks/use-dnd-effects.js +88 -0
  396. package/dist/hooks/use-dnd-layers.d.ts +9 -0
  397. package/dist/hooks/use-dnd-layers.js +95 -0
  398. package/dist/hooks/use-feature-flags.d.ts +5 -0
  399. package/dist/hooks/use-feature-flags.js +21 -0
  400. package/dist/index.d.ts +78 -21
  401. package/dist/index.js +695 -116
  402. package/dist/injector.d.ts +4 -4
  403. package/dist/injector.js +1 -21
  404. package/dist/kepler-gl.d.ts +59 -17
  405. package/dist/kepler-gl.js +88 -53
  406. package/dist/layer-animation-controller.d.ts +13 -0
  407. package/dist/layer-animation-controller.js +58 -0
  408. package/dist/map/coordinate-info.js +6 -22
  409. package/dist/map/effects/effect-control.d.ts +16 -0
  410. package/dist/map/effects/effect-control.js +63 -0
  411. package/dist/map/layer-hover-info.d.ts +2 -2
  412. package/dist/map/layer-hover-info.js +26 -30
  413. package/dist/map/layer-selector-panel.js +6 -22
  414. package/dist/map/lazy-tippy.js +1 -21
  415. package/dist/map/locale-panel.d.ts +1 -1
  416. package/dist/map/locale-panel.js +6 -22
  417. package/dist/map/map-control-panel.d.ts +6 -0
  418. package/dist/map/map-control-panel.js +64 -28
  419. package/dist/map/map-control-toolbar.js +2 -22
  420. package/dist/map/map-control-tooltip.js +6 -22
  421. package/dist/map/map-control.d.ts +15 -7
  422. package/dist/map/map-control.js +5 -26
  423. package/dist/map/map-draw-panel.d.ts +2 -2
  424. package/dist/map/map-draw-panel.js +6 -29
  425. package/dist/map/map-legend-panel.d.ts +12 -1
  426. package/dist/map/map-legend-panel.js +31 -34
  427. package/dist/map/map-legend.d.ts +1 -1
  428. package/dist/map/map-legend.js +1 -21
  429. package/dist/map/map-popover-content.d.ts +28 -0
  430. package/dist/map/map-popover-content.js +35 -0
  431. package/dist/map/map-popover.d.ts +11 -14
  432. package/dist/map/map-popover.js +93 -34
  433. package/dist/map/split-map-button.js +6 -22
  434. package/dist/map/toggle-3d-button.js +6 -22
  435. package/dist/map-container.d.ts +33 -9
  436. package/dist/map-container.js +544 -194
  437. package/dist/map-view-state-context.d.ts +17 -0
  438. package/dist/map-view-state-context.js +117 -0
  439. package/dist/maps-layout.d.ts +5 -2
  440. package/dist/maps-layout.js +6 -22
  441. package/dist/modal-container.d.ts +4 -8
  442. package/dist/modal-container.js +19 -76
  443. package/dist/modals/add-map-style-modal.d.ts +1 -3
  444. package/dist/modals/add-map-style-modal.js +15 -73
  445. package/dist/modals/cloud-components/cloud-header.d.ts +8 -0
  446. package/dist/modals/cloud-components/cloud-header.js +65 -0
  447. package/dist/modals/cloud-components/cloud-item.d.ts +5 -0
  448. package/dist/modals/cloud-components/cloud-item.js +72 -0
  449. package/dist/modals/cloud-components/cloud-item.spec.d.ts +1 -0
  450. package/dist/modals/cloud-components/cloud-item.spec.js +105 -0
  451. package/dist/modals/cloud-components/cloud-maps.d.ts +8 -0
  452. package/dist/modals/cloud-components/cloud-maps.js +63 -0
  453. package/dist/modals/cloud-components/cloud-maps.spec.d.ts +1 -0
  454. package/dist/modals/cloud-components/cloud-maps.spec.js +112 -0
  455. package/dist/modals/cloud-components/provider-loading.d.ts +2 -0
  456. package/dist/modals/cloud-components/provider-loading.js +29 -0
  457. package/dist/modals/cloud-components/provider-select.d.ts +7 -0
  458. package/dist/modals/cloud-components/provider-select.js +40 -0
  459. package/dist/modals/cloud-tile.d.ts +8 -8
  460. package/dist/modals/cloud-tile.js +184 -75
  461. package/dist/modals/data-table-modal.d.ts +11 -2
  462. package/dist/modals/data-table-modal.js +74 -43
  463. package/dist/modals/delete-data-modal.js +1 -21
  464. package/dist/modals/error-display.js +15 -26
  465. package/dist/modals/export-data-modal.d.ts +1 -3
  466. package/dist/modals/export-data-modal.js +1 -21
  467. package/dist/modals/export-image-modal.d.ts +1 -3
  468. package/dist/modals/export-image-modal.js +1 -21
  469. package/dist/modals/export-map-modal/components.d.ts +2 -2
  470. package/dist/modals/export-map-modal/components.js +1 -21
  471. package/dist/modals/export-map-modal/export-html-map.js +1 -21
  472. package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
  473. package/dist/modals/export-map-modal/export-json-map.js +1 -21
  474. package/dist/modals/export-map-modal/export-map-modal.d.ts +2 -2
  475. package/dist/modals/export-map-modal/export-map-modal.js +6 -22
  476. package/dist/modals/image-modal-container.d.ts +2 -3
  477. package/dist/modals/image-modal-container.js +12 -34
  478. package/dist/modals/load-data-modal.d.ts +0 -5
  479. package/dist/modals/load-data-modal.js +1 -21
  480. package/dist/modals/load-storage-map.d.ts +3 -24
  481. package/dist/modals/load-storage-map.js +69 -282
  482. package/dist/modals/load-storage-map.spec.d.ts +1 -0
  483. package/dist/modals/load-storage-map.spec.js +237 -0
  484. package/dist/modals/loading-dialog.js +1 -21
  485. package/dist/modals/modal-dialog.js +6 -22
  486. package/dist/modals/modal-tabs.d.ts +1 -1
  487. package/dist/modals/modal-tabs.js +1 -21
  488. package/dist/modals/overwrite-map-modal.d.ts +2 -2
  489. package/dist/modals/overwrite-map-modal.js +39 -32
  490. package/dist/modals/save-map-modal.d.ts +3 -5
  491. package/dist/modals/save-map-modal.js +99 -119
  492. package/dist/modals/save-map-modal.spec.d.ts +1 -0
  493. package/dist/modals/save-map-modal.spec.js +218 -0
  494. package/dist/modals/share-map-modal.d.ts +1 -5
  495. package/dist/modals/share-map-modal.js +57 -81
  496. package/dist/modals/share-map-modal.spec.d.ts +1 -0
  497. package/dist/modals/share-map-modal.spec.js +202 -0
  498. package/dist/modals/status-panel.js +1 -21
  499. package/dist/modals/storage-map-viewer.d.ts +1 -1
  500. package/dist/modals/storage-map-viewer.js +1 -21
  501. package/dist/notification-panel/notification-item.d.ts +7 -10
  502. package/dist/notification-panel/notification-item.js +44 -32
  503. package/dist/notification-panel.js +1 -21
  504. package/dist/plot-container.js +20 -28
  505. package/dist/side-panel/add-by-dataset-button.d.ts +12 -0
  506. package/dist/side-panel/add-by-dataset-button.js +153 -0
  507. package/dist/side-panel/cloud-storage-dropdown.d.ts +2 -2
  508. package/dist/side-panel/cloud-storage-dropdown.js +6 -22
  509. package/dist/side-panel/common/dataset-info.d.ts +10 -3
  510. package/dist/side-panel/common/dataset-info.js +1 -21
  511. package/dist/side-panel/common/dataset-tag.d.ts +15 -1
  512. package/dist/side-panel/common/dataset-tag.js +13 -30
  513. package/dist/side-panel/common/dataset-title.d.ts +16 -2
  514. package/dist/side-panel/common/dataset-title.js +70 -124
  515. package/dist/side-panel/common/source-data-catalog.d.ts +22 -3
  516. package/dist/side-panel/common/source-data-catalog.js +1 -21
  517. package/dist/side-panel/common/source-data-selector.js +6 -22
  518. package/dist/side-panel/common/types.d.ts +7 -27
  519. package/dist/side-panel/common/types.js +0 -20
  520. package/dist/side-panel/custom-panel.d.ts +6 -7
  521. package/dist/side-panel/custom-panel.js +6 -22
  522. package/dist/side-panel/filter-manager.d.ts +18 -6
  523. package/dist/side-panel/filter-manager.js +175 -84
  524. package/dist/side-panel/filter-panel/add-filter-button.d.ts +8 -0
  525. package/dist/side-panel/filter-panel/add-filter-button.js +34 -0
  526. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +6 -3
  527. package/dist/side-panel/filter-panel/filter-panel-header.js +3 -23
  528. package/dist/side-panel/filter-panel/filter-panel.js +1 -21
  529. package/dist/side-panel/interaction-manager.d.ts +6 -3
  530. package/dist/side-panel/interaction-manager.js +24 -27
  531. package/dist/side-panel/interaction-panel/brush-config.d.ts +2 -2
  532. package/dist/side-panel/interaction-panel/brush-config.js +1 -21
  533. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +5 -2
  534. package/dist/side-panel/interaction-panel/interaction-panel.js +11 -24
  535. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +11 -9
  536. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +69 -67
  537. package/dist/side-panel/interaction-panel/tooltip-config.d.ts +2 -3
  538. package/dist/side-panel/interaction-panel/tooltip-config.js +48 -57
  539. package/dist/side-panel/layer-manager.d.ts +13 -10
  540. package/dist/side-panel/layer-manager.js +72 -57
  541. package/dist/side-panel/layer-panel/add-layer-button.d.ts +3 -5
  542. package/dist/side-panel/layer-panel/add-layer-button.js +14 -156
  543. package/dist/side-panel/layer-panel/color-palette.js +1 -21
  544. package/dist/side-panel/layer-panel/color-range-selector.d.ts +1 -1
  545. package/dist/side-panel/layer-panel/color-range-selector.js +1 -21
  546. package/dist/side-panel/layer-panel/color-selector.d.ts +15 -24
  547. package/dist/side-panel/layer-panel/color-selector.js +174 -146
  548. package/dist/side-panel/layer-panel/column-selector.js +1 -21
  549. package/dist/side-panel/layer-panel/custom-palette.d.ts +7 -2
  550. package/dist/side-panel/layer-panel/custom-palette.js +5 -24
  551. package/dist/side-panel/layer-panel/custom-picker.d.ts +9 -36
  552. package/dist/side-panel/layer-panel/custom-picker.js +1 -21
  553. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
  554. package/dist/side-panel/layer-panel/dataset-layer-group.js +7 -22
  555. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +3 -2
  556. package/dist/side-panel/layer-panel/dataset-layer-section.js +4 -23
  557. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -3
  558. package/dist/side-panel/layer-panel/dataset-section.js +5 -26
  559. package/dist/side-panel/layer-panel/dimension-scale-selector.js +6 -22
  560. package/dist/side-panel/layer-panel/how-to-button.js +1 -21
  561. package/dist/side-panel/layer-panel/layer-color-selector.d.ts +42 -0
  562. package/dist/side-panel/layer-panel/layer-color-selector.js +118 -0
  563. package/dist/side-panel/layer-panel/layer-column-config.d.ts +15 -9
  564. package/dist/side-panel/layer-panel/layer-column-config.js +34 -32
  565. package/dist/side-panel/layer-panel/layer-config-group.d.ts +11 -2
  566. package/dist/side-panel/layer-panel/layer-config-group.js +18 -30
  567. package/dist/side-panel/layer-panel/layer-configurator.d.ts +10 -35
  568. package/dist/side-panel/layer-panel/layer-configurator.js +75 -132
  569. package/dist/side-panel/layer-panel/layer-error-message.d.ts +6 -0
  570. package/dist/side-panel/layer-panel/layer-error-message.js +38 -0
  571. package/dist/side-panel/layer-panel/layer-list.d.ts +4 -3
  572. package/dist/side-panel/layer-panel/layer-list.js +111 -108
  573. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +22 -10
  574. package/dist/side-panel/layer-panel/layer-panel-header.js +105 -86
  575. package/dist/side-panel/layer-panel/layer-panel.d.ts +3 -1
  576. package/dist/side-panel/layer-panel/layer-panel.js +23 -30
  577. package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +1 -21
  578. package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +12 -3
  579. package/dist/side-panel/layer-panel/layer-type-list-item.js +11 -23
  580. package/dist/side-panel/layer-panel/layer-type-selector.d.ts +2 -1
  581. package/dist/side-panel/layer-panel/layer-type-selector.js +4 -22
  582. package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
  583. package/dist/side-panel/layer-panel/single-color-palette.js +1 -21
  584. package/dist/side-panel/layer-panel/text-label-panel.d.ts +4 -2
  585. package/dist/side-panel/layer-panel/text-label-panel.js +61 -34
  586. package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -3
  587. package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +1 -21
  588. package/dist/side-panel/layer-panel/vis-config-slider.js +1 -21
  589. package/dist/side-panel/layer-panel/vis-config-switch.js +1 -21
  590. package/dist/side-panel/map-manager.d.ts +13 -6
  591. package/dist/side-panel/map-manager.js +55 -64
  592. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +14 -0
  593. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +96 -0
  594. package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +29 -0
  595. package/dist/side-panel/map-style-panel/map-layer-group-item.js +111 -0
  596. package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +16 -12
  597. package/dist/side-panel/map-style-panel/map-layer-selector.js +33 -70
  598. package/dist/side-panel/map-style-panel/map-style-selector.d.ts +11 -4
  599. package/dist/side-panel/map-style-panel/map-style-selector.js +53 -39
  600. package/dist/side-panel/panel-dropdown.d.ts +3 -2
  601. package/dist/side-panel/panel-dropdown.js +1 -21
  602. package/dist/side-panel/panel-header-action.d.ts +4 -2
  603. package/dist/side-panel/panel-header-action.js +10 -23
  604. package/dist/side-panel/panel-header.d.ts +13 -8
  605. package/dist/side-panel/panel-header.js +2 -21
  606. package/dist/side-panel/panel-tab.d.ts +2 -2
  607. package/dist/side-panel/panel-tab.js +1 -21
  608. package/dist/side-panel/panel-title.d.ts +6 -3
  609. package/dist/side-panel/panel-title.js +30 -33
  610. package/dist/side-panel/panel-toggle.d.ts +1 -1
  611. package/dist/side-panel/panel-toggle.js +1 -21
  612. package/dist/side-panel/{layer-panel/panel-view-list-toggle.d.ts → panel-view-list-toggle.d.ts} +19 -8
  613. package/dist/side-panel/panel-view-list-toggle.js +123 -0
  614. package/dist/side-panel/side-bar.d.ts +15 -16
  615. package/dist/side-panel/side-bar.js +7 -25
  616. package/dist/side-panel.d.ts +2 -117
  617. package/dist/side-panel.js +19 -54
  618. package/dist/types.d.ts +14 -9
  619. package/dist/types.js +0 -20
  620. package/package.json +48 -38
  621. package/dist/editor/constants.d.ts +0 -17
  622. package/dist/editor/constants.js +0 -47
  623. package/dist/editor/feature-styles.d.ts +0 -37
  624. package/dist/editor/feature-styles.js +0 -92
  625. package/dist/editor/handle-style.d.ts +0 -42
  626. package/dist/editor/handle-style.js +0 -100
  627. package/dist/hooks/useFeatureFlags.d.ts +0 -2
  628. package/dist/hooks/useFeatureFlags.js +0 -38
  629. package/dist/modals/provider-modal-container.d.ts +0 -22
  630. package/dist/modals/provider-modal-container.js +0 -101
  631. package/dist/side-panel/layer-panel/panel-view-list-toggle.js +0 -143
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = exports.NumberFormatConfig = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
19
+
20
+ var _utils = require("@kepler.gl/utils");
21
+
22
+ var _constants = require("@kepler.gl/constants");
23
+
24
+ var _styledComponents2 = require("../../common/styled-components");
25
+
26
+ var _optionDropdown = require("./option-dropdown");
27
+
28
+ var _templateObject, _templateObject2, _templateObject3;
29
+
30
+ var StyledConfigPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n box-shadow: 0 10px 18px 0 rgb(0 0 0 / 36%);\n flex-grow: 1;\n"])), function (props) {
31
+ return props.theme.headerCellBackground;
32
+ });
33
+
34
+ var StyledConfigPanelContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 20px;\n min-width: 230px;\n max-height: 400px;\n overflow: overlay;\n"])));
35
+
36
+ var StyledTableConfigGroup = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n\n input {\n cursor: pointer !important;\n width: 184px;\n height: 22px;\n }\n"])));
37
+
38
+ var NumberFormatConfig = function NumberFormatConfig(_ref) {
39
+ var title = _ref.title,
40
+ id = _ref.id,
41
+ defaultFormat = _ref.defaultFormat,
42
+ options = _ref.options,
43
+ columns = _ref.columns,
44
+ setColumnDisplayFormat = _ref.setColumnDisplayFormat,
45
+ onClose = _ref.onClose;
46
+
47
+ var _useState = (0, _react.useState)(false),
48
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
49
+ showFormatter = _useState2[0],
50
+ setShowFormatter = _useState2[1];
51
+
52
+ var _useState3 = (0, _react.useState)(defaultFormat),
53
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
54
+ format = _useState4[0],
55
+ setFormat = _useState4[1];
56
+
57
+ var onSetDisplayFormat = (0, _react.useCallback)(function (option) {
58
+ setFormat(option.label);
59
+ var formats = columns.reduce(function (prev, col) {
60
+ prev[col.name] = option.format;
61
+ return prev;
62
+ }, {});
63
+ setColumnDisplayFormat(formats);
64
+ onClose();
65
+ }, [columns, setColumnDisplayFormat, onClose]);
66
+ return /*#__PURE__*/_react["default"].createElement(StyledTableConfigGroup, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.InputLight, {
67
+ id: id,
68
+ type: "text",
69
+ value: title,
70
+ "data-tip": format,
71
+ readOnly: true,
72
+ onClick: function onClick() {
73
+ return setShowFormatter(true);
74
+ }
75
+ }), /*#__PURE__*/_react["default"].createElement(_optionDropdown.FormatterDropdown, {
76
+ left: -185,
77
+ top: 10,
78
+ isOpened: showFormatter,
79
+ displayFormat: format,
80
+ setDisplayFormat: onSetDisplayFormat,
81
+ onClose: function onClose() {
82
+ return setShowFormatter(false);
83
+ },
84
+ formatLabels: options
85
+ }));
86
+ };
87
+
88
+ exports.NumberFormatConfig = NumberFormatConfig;
89
+
90
+ function DataTableConfigFactory() {
91
+ var getColumnsByFieldType = function getColumnsByFieldType(columns, colMeta, fieldType) {
92
+ var result = [];
93
+ columns.forEach(function (colName) {
94
+ var _colMeta$colName;
95
+
96
+ if (((_colMeta$colName = colMeta[colName]) === null || _colMeta$colName === void 0 ? void 0 : _colMeta$colName.type) === fieldType) {
97
+ result.push(colMeta[colName]);
98
+ }
99
+ });
100
+ return result;
101
+ };
102
+
103
+ var DataTableConfig = function DataTableConfig(_ref2) {
104
+ var columns = _ref2.columns,
105
+ colMeta = _ref2.colMeta,
106
+ setColumnDisplayFormat = _ref2.setColumnDisplayFormat,
107
+ onClose = _ref2.onClose;
108
+ var formatConfigs = [{
109
+ title: '# Set Integer Number Format',
110
+ id: 'input-iteger-format',
111
+ displayType: _constants.ALL_FIELD_TYPES.integer
112
+ }, {
113
+ title: '# Set Float Number Format',
114
+ id: 'input-float-format',
115
+ displayType: _constants.ALL_FIELD_TYPES.real
116
+ }, {
117
+ title: '# Set Timestamp Format',
118
+ id: 'input-datetime-format',
119
+ displayType: _constants.ALL_FIELD_TYPES.timestamp
120
+ }, {
121
+ title: '# Set Date Format',
122
+ id: 'input-date-format',
123
+ displayType: _constants.ALL_FIELD_TYPES.date
124
+ }, {
125
+ title: '# Set Boolean Format',
126
+ id: 'input-bool-format',
127
+ displayType: _constants.ALL_FIELD_TYPES["boolean"]
128
+ }];
129
+ return /*#__PURE__*/_react["default"].createElement(StyledConfigPanel, null, /*#__PURE__*/_react["default"].createElement(StyledConfigPanelContent, null, formatConfigs.map(function (config, index) {
130
+ return /*#__PURE__*/_react["default"].createElement(NumberFormatConfig, {
131
+ title: "".concat(config.title),
132
+ key: index,
133
+ id: config.id,
134
+ defaultFormat: 'None',
135
+ colMeta: colMeta,
136
+ options: (0, _utils.getFieldFormatLabels)("".concat(config.displayType)),
137
+ columns: getColumnsByFieldType(columns, colMeta, "".concat(config.displayType)),
138
+ setColumnDisplayFormat: setColumnDisplayFormat,
139
+ onClose: onClose
140
+ });
141
+ })));
142
+ };
143
+
144
+ return DataTableConfig;
145
+ }
146
+
147
+ var _default = DataTableConfigFactory;
148
+ exports["default"] = _default;
149
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9kaXNwbGF5LWZvcm1hdC50c3giXSwibmFtZXMiOlsiU3R5bGVkQ29uZmlnUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwiaGVhZGVyQ2VsbEJhY2tncm91bmQiLCJTdHlsZWRDb25maWdQYW5lbENvbnRlbnQiLCJTdHlsZWRUYWJsZUNvbmZpZ0dyb3VwIiwiTnVtYmVyRm9ybWF0Q29uZmlnIiwidGl0bGUiLCJpZCIsImRlZmF1bHRGb3JtYXQiLCJvcHRpb25zIiwiY29sdW1ucyIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJvbkNsb3NlIiwic2hvd0Zvcm1hdHRlciIsInNldFNob3dGb3JtYXR0ZXIiLCJmb3JtYXQiLCJzZXRGb3JtYXQiLCJvblNldERpc3BsYXlGb3JtYXQiLCJvcHRpb24iLCJsYWJlbCIsImZvcm1hdHMiLCJyZWR1Y2UiLCJwcmV2IiwiY29sIiwibmFtZSIsIkRhdGFUYWJsZUNvbmZpZ0ZhY3RvcnkiLCJnZXRDb2x1bW5zQnlGaWVsZFR5cGUiLCJjb2xNZXRhIiwiZmllbGRUeXBlIiwicmVzdWx0IiwiZm9yRWFjaCIsImNvbE5hbWUiLCJ0eXBlIiwicHVzaCIsIkRhdGFUYWJsZUNvbmZpZyIsImZvcm1hdENvbmZpZ3MiLCJkaXNwbGF5VHlwZSIsIkFMTF9GSUVMRF9UWVBFUyIsImludGVnZXIiLCJyZWFsIiwidGltZXN0YW1wIiwiZGF0ZSIsIm1hcCIsImNvbmZpZyIsImluZGV4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFHQTs7QUFDQTs7OztBQUVBLElBQU1BLGlCQUFpQixHQUFHQyw2QkFBT0MsR0FBVixvTEFDRCxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlDLG9CQUFoQjtBQUFBLENBREosQ0FBdkI7O0FBS0EsSUFBTUMsd0JBQXdCLEdBQUdMLDZCQUFPQyxHQUFW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LEVBQUVvQixPQUxYO0FBTUUsUUFBQSxPQUFPLEVBQUUsMkNBQXdCZ0IsTUFBTSxDQUFDUCxXQUEvQixFQU5YO0FBT0UsUUFBQSxPQUFPLEVBQUVWLHFCQUFxQixDQUFDaEIsT0FBRCxFQUFVaUIsT0FBVixZQUFzQmdCLE1BQU0sQ0FBQ1AsV0FBN0IsRUFQaEM7QUFRRSxRQUFBLHNCQUFzQixFQUFFekIsc0JBUjFCO0FBU0UsUUFBQSxPQUFPLEVBQUVDO0FBVFgsUUFEaUI7QUFBQSxLQUFsQixDQURILENBREYsQ0FERjtBQW1CRCxHQWhERDs7QUFpREEsU0FBT3NCLGVBQVA7QUFDRDs7ZUFFY1Qsc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge2dldEZpZWxkRm9ybWF0TGFiZWxzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7QUxMX0ZJRUxEX1RZUEVTLCBUb29sdGlwRm9ybWF0fSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0NvbE1ldGEsIENvbE1ldGFQcm9wc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7SW5wdXRMaWdodH0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVyRHJvcGRvd259IGZyb20gJy4vb3B0aW9uLWRyb3Bkb3duJztcblxuY29uc3QgU3R5bGVkQ29uZmlnUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCYWNrZ3JvdW5kfTtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDE4cHggMCByZ2IoMCAwIDAgLyAzNiUpO1xuICBmbGV4LWdyb3c6IDE7XG5gO1xuY29uc3QgU3R5bGVkQ29uZmlnUGFuZWxDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMjBweDtcbiAgbWluLXdpZHRoOiAyMzBweDtcbiAgbWF4LWhlaWdodDogNDAwcHg7XG4gIG92ZXJmbG93OiBvdmVybGF5O1xuYDtcblxuY29uc3QgU3R5bGVkVGFibGVDb25maWdHcm91cCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgaW5wdXQge1xuICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAxODRweDtcbiAgICBoZWlnaHQ6IDIycHg7XG4gIH1cbmA7XG5cbmV4cG9ydCB0eXBlIERhdGFUYWJsZUNvbmZpZ1Byb3BzID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuICBkZWZhdWx0Rm9ybWF0OiBzdHJpbmc7XG4gIG9wdGlvbnM6IFRvb2x0aXBGb3JtYXRbXTtcbiAgY29sdW1uczoge25hbWU6IHN0cmluZ31bXTtcbiAgY29sTWV0YTogQ29sTWV0YTtcbiAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdDogKGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IE51bWJlckZvcm1hdENvbmZpZzogUmVhY3QuRkM8RGF0YVRhYmxlQ29uZmlnUHJvcHM+ID0gKHtcbiAgdGl0bGUsXG4gIGlkLFxuICBkZWZhdWx0Rm9ybWF0LFxuICBvcHRpb25zLFxuICBjb2x1bW5zLFxuICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0LFxuICBvbkNsb3NlXG59OiBEYXRhVGFibGVDb25maWdQcm9wcykgPT4ge1xuICBjb25zdCBbc2hvd0Zvcm1hdHRlciwgc2V0U2hvd0Zvcm1hdHRlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmb3JtYXQsIHNldEZvcm1hdF0gPSB1c2VTdGF0ZShkZWZhdWx0Rm9ybWF0KTtcblxuICBjb25zdCBvblNldERpc3BsYXlGb3JtYXQgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBUb29sdGlwRm9ybWF0KSA9PiB7XG4gICAgICBzZXRGb3JtYXQob3B0aW9uLmxhYmVsKTtcbiAgICAgIGNvbnN0IGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0gY29sdW1ucy5yZWR1Y2UoKHByZXYsIGNvbCkgPT4ge1xuICAgICAgICBwcmV2W2NvbC5uYW1lXSA9IG9wdGlvbi5mb3JtYXQ7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSwge30pO1xuICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdChmb3JtYXRzKTtcbiAgICAgIG9uQ2xvc2UoKTtcbiAgICB9LFxuICAgIFtjb2x1bW5zLCBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0LCBvbkNsb3NlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFRhYmxlQ29uZmlnR3JvdXA+XG4gICAgICA8SW5wdXRMaWdodFxuICAgICAgICBpZD17aWR9XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgdmFsdWU9e3RpdGxlfVxuICAgICAgICBkYXRhLXRpcD17Zm9ybWF0fVxuICAgICAgICByZWFkT25seVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Rm9ybWF0dGVyKHRydWUpfVxuICAgICAgLz5cbiAgICAgIDxGb3JtYXR0ZXJEcm9wZG93blxuICAgICAgICBsZWZ0PXstMTg1fVxuICAgICAgICB0b3A9ezEwfVxuICAgICAgICBpc09wZW5lZD17c2hvd0Zvcm1hdHRlcn1cbiAgICAgICAgZGlzcGxheUZvcm1hdD17Zm9ybWF0fVxuICAgICAgICBzZXREaXNwbGF5Rm9ybWF0PXtvblNldERpc3BsYXlGb3JtYXR9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dGb3JtYXR0ZXIoZmFsc2UpfVxuICAgICAgICBmb3JtYXRMYWJlbHM9e29wdGlvbnN9XG4gICAgICAvPlxuICAgIDwvU3R5bGVkVGFibGVDb25maWdHcm91cD5cbiAgKTtcbn07XG5cbmZ1bmN0aW9uIERhdGFUYWJsZUNvbmZpZ0ZhY3RvcnkoKSB7XG4gIGNvbnN0IGdldENvbHVtbnNCeUZpZWxkVHlwZSA9IChjb2x1bW5zOiBzdHJpbmdbXSwgY29sTWV0YTogQ29sTWV0YSwgZmllbGRUeXBlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IENvbE1ldGFQcm9wc1tdID0gW107XG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbE5hbWUgPT4ge1xuICAgICAgaWYgKGNvbE1ldGFbY29sTmFtZV0/LnR5cGUgPT09IGZpZWxkVHlwZSkge1xuICAgICAgICByZXN1bHQucHVzaChjb2xNZXRhW2NvbE5hbWVdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGNvbnN0IERhdGFUYWJsZUNvbmZpZyA9ICh7Y29sdW1ucywgY29sTWV0YSwgc2V0Q29sdW1uRGlzcGxheUZvcm1hdCwgb25DbG9zZX0pID0+IHtcbiAgICBjb25zdCBmb3JtYXRDb25maWdzID0gW1xuICAgICAge1xuICAgICAgICB0aXRsZTogJyMgU2V0IEludGVnZXIgTnVtYmVyIEZvcm1hdCcsXG4gICAgICAgIGlkOiAnaW5wdXQtaXRlZ2VyLWZvcm1hdCcsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlclxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICcjIFNldCBGbG9hdCBOdW1iZXIgRm9ybWF0JyxcbiAgICAgICAgaWQ6ICdpbnB1dC1mbG9hdC1mb3JtYXQnLFxuICAgICAgICBkaXNwbGF5VHlwZTogQUxMX0ZJRUxEX1RZUEVTLnJlYWxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnIyBTZXQgVGltZXN0YW1wIEZvcm1hdCcsXG4gICAgICAgIGlkOiAnaW5wdXQtZGF0ZXRpbWUtZm9ybWF0JyxcbiAgICAgICAgZGlzcGxheVR5cGU6IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnIyBTZXQgRGF0ZSBGb3JtYXQnLFxuICAgICAgICBpZDogJ2lucHV0LWRhdGUtZm9ybWF0JyxcbiAgICAgICAgZGlzcGxheVR5cGU6IEFMTF9GSUVMRF9UWVBFUy5kYXRlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aXRsZTogJyMgU2V0IEJvb2xlYW4gRm9ybWF0JyxcbiAgICAgICAgaWQ6ICdpbnB1dC1ib29sLWZvcm1hdCcsXG4gICAgICAgIGRpc3BsYXlUeXBlOiBBTExfRklFTERfVFlQRVMuYm9vbGVhblxuICAgICAgfVxuICAgIF07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZENvbmZpZ1BhbmVsPlxuICAgICAgICA8U3R5bGVkQ29uZmlnUGFuZWxDb250ZW50PlxuICAgICAgICAgIHtmb3JtYXRDb25maWdzLm1hcCgoY29uZmlnLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE51bWJlckZvcm1hdENvbmZpZ1xuICAgICAgICAgICAgICB0aXRsZT17YCR7Y29uZmlnLnRpdGxlfWB9XG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGlkPXtjb25maWcuaWR9XG4gICAgICAgICAgICAgIGRlZmF1bHRGb3JtYXQ9eydOb25lJ31cbiAgICAgICAgICAgICAgY29sTWV0YT17Y29sTWV0YX1cbiAgICAgICAgICAgICAgb3B0aW9ucz17Z2V0RmllbGRGb3JtYXRMYWJlbHMoYCR7Y29uZmlnLmRpc3BsYXlUeXBlfWApfVxuICAgICAgICAgICAgICBjb2x1bW5zPXtnZXRDb2x1bW5zQnlGaWVsZFR5cGUoY29sdW1ucywgY29sTWV0YSwgYCR7Y29uZmlnLmRpc3BsYXlUeXBlfWApfVxuICAgICAgICAgICAgICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PXtzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0fVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TdHlsZWRDb25maWdQYW5lbENvbnRlbnQ+XG4gICAgICA8L1N0eWxlZENvbmZpZ1BhbmVsPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBEYXRhVGFibGVDb25maWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGFUYWJsZUNvbmZpZ0ZhY3Rvcnk7XG4iXX0=
@@ -1,7 +1,10 @@
1
- import { PureComponent } from 'react';
1
+ import React, { PureComponent } from 'react';
2
2
  import { Grid, GridProps } from 'react-virtualized';
3
3
  export default class GridHack extends PureComponent<GridProps> {
4
4
  grid: Grid | null;
5
5
  componentDidUpdate(preProps: any): void;
6
- render(): JSX.Element;
6
+ componentWillUnmount(): void;
7
+ _preventScrollBack: (e: any) => false | undefined;
8
+ _updateRef: (x: any) => void;
9
+ render(): React.JSX.Element;
7
10
  }
@@ -1,23 +1,3 @@
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
1
  "use strict";
22
2
 
23
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
@@ -73,6 +53,35 @@ var GridHack = /*#__PURE__*/function (_PureComponent) {
73
53
 
74
54
  _this = _super.call.apply(_super, [this].concat(args));
75
55
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "grid", null);
56
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_preventScrollBack", function (e) {
57
+ var scrollLeft = _this.props.scrollLeft;
58
+
59
+ if (scrollLeft !== undefined && scrollLeft <= 0 && e.deltaX < 0) {
60
+ // Prevent Scroll On Scrollable Elements, avoid browser backward navigation
61
+ // https://alvarotrigo.com/blog/prevent-scroll-on-scrollable-element-js/
62
+ e.preventDefault();
63
+ e.stopPropagation();
64
+ return false;
65
+ }
66
+
67
+ return;
68
+ });
69
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_updateRef", function (x) {
70
+ if (!_this.grid && x) {
71
+ var _this$grid, _this$grid$_scrolling;
72
+
73
+ _this.grid = x;
74
+ /*
75
+ * This hack exists because we need to add wheel event listener to the div rendered by Grid
76
+ *
77
+ */
78
+ // @ts-expect-error _scrollingContainer not typed in Grid
79
+
80
+ (_this$grid = _this.grid) === null || _this$grid === void 0 ? void 0 : (_this$grid$_scrolling = _this$grid._scrollingContainer) === null || _this$grid$_scrolling === void 0 ? void 0 : _this$grid$_scrolling.addEventListener('wheel', _this._preventScrollBack, {
81
+ passive: false
82
+ });
83
+ }
84
+ });
76
85
  return _this;
77
86
  }
78
87
 
@@ -90,11 +99,21 @@ var GridHack = /*#__PURE__*/function (_PureComponent) {
90
99
  *
91
100
  */
92
101
  if (!(0, _lodash["default"])(preProps.cellSizeCache, this.props.cellSizeCache)) {
93
- var _this$grid;
102
+ var _this$grid2;
94
103
 
95
- (_this$grid = this.grid) === null || _this$grid === void 0 ? void 0 : _this$grid.recomputeGridSize();
104
+ (_this$grid2 = this.grid) === null || _this$grid2 === void 0 ? void 0 : _this$grid2.recomputeGridSize();
96
105
  }
97
106
  }
107
+ }, {
108
+ key: "componentWillUnmount",
109
+ value: function componentWillUnmount() {
110
+ var _this$grid3, _this$grid3$_scrollin;
111
+
112
+ // @ts-expect-error _scrollingContainer not typed in Grid
113
+ (_this$grid3 = this.grid) === null || _this$grid3 === void 0 ? void 0 : (_this$grid3$_scrollin = _this$grid3._scrollingContainer) === null || _this$grid3$_scrollin === void 0 ? void 0 : _this$grid3$_scrollin.removeEventListener('wheel', this._preventScrollBack, {
114
+ passive: false
115
+ });
116
+ }
98
117
  }, {
99
118
  key: "render",
100
119
  value: function render() {
@@ -106,7 +125,8 @@ var GridHack = /*#__PURE__*/function (_PureComponent) {
106
125
  return /*#__PURE__*/_react["default"].createElement(_reactVirtualized.Grid, (0, _extends2["default"])({
107
126
  ref: function ref(x) {
108
127
  if (setGridRef) setGridRef(x);
109
- _this2.grid = x;
128
+
129
+ _this2._updateRef(x);
110
130
  },
111
131
  key: "grid-hack"
112
132
  }, rest));
@@ -116,4 +136,4 @@ var GridHack = /*#__PURE__*/function (_PureComponent) {
116
136
  }(_react.PureComponent);
117
137
 
118
138
  exports["default"] = GridHack;
119
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9ncmlkLnRzeCJdLCJuYW1lcyI6WyJHcmlkSGFjayIsInByZVByb3BzIiwiY2VsbFNpemVDYWNoZSIsInByb3BzIiwiZ3JpZCIsInJlY29tcHV0ZUdyaWRTaXplIiwic2V0R3JpZFJlZiIsInJlc3QiLCJ4IiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7Ozs7OztJQUVxQkEsUTs7Ozs7Ozs7Ozs7Ozs7OzZGQUNDLEk7Ozs7OztXQUVwQiw0QkFBbUJDLFFBQW5CLEVBQTZCO0FBQzNCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0ksVUFBSSxDQUFDLHdCQUFRQSxRQUFRLENBQUNDLGFBQWpCLEVBQWdDLEtBQUtDLEtBQUwsQ0FBV0QsYUFBM0MsQ0FBTCxFQUFnRTtBQUFBOztBQUM5RCwyQkFBS0UsSUFBTCwwREFBV0MsaUJBQVg7QUFDRDtBQUNGOzs7V0FFRCxrQkFBUztBQUFBOztBQUFBLHdCQUN1QixLQUFLRixLQUQ1QjtBQUFBLFVBQ0FHLFVBREEsZUFDQUEsVUFEQTtBQUFBLFVBQ2VDLElBRGY7QUFFUCwwQkFDRSxnQ0FBQyxzQkFBRDtBQUNFLFFBQUEsR0FBRyxFQUFFLGFBQUFDLENBQUMsRUFBSTtBQUNSLGNBQUlGLFVBQUosRUFBZ0JBLFVBQVUsQ0FBQ0UsQ0FBRCxDQUFWO0FBQ2hCLFVBQUEsTUFBSSxDQUFDSixJQUFMLEdBQVlJLENBQVo7QUFDRCxTQUpIO0FBS0UsUUFBQSxHQUFHLEVBQUM7QUFMTixTQU1NRCxJQU5OLEVBREY7QUFVRDs7O0VBL0JtQ0Usb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0dyaWQsIEdyaWRQcm9wc30gZnJvbSAncmVhY3QtdmlydHVhbGl6ZWQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLmlzZXF1YWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcmlkSGFjayBleHRlbmRzIFB1cmVDb21wb25lbnQ8R3JpZFByb3BzPiB7XG4gIGdyaWQ6IEdyaWQgfCBudWxsID0gbnVsbDtcblxuICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMpIHtcbiAgICAvKlxuICAgICAqIFRoaXMgaGFjayBleGlzdHMgYmVjYXVzZSBpbiByZWFjdC12aXJ0dWFsaXplZCB0aGVcbiAgICAgKiBfY29sdW1uV2lkdGhHZXR0ZXIgaXMgb25seSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yXG4gICAgICogZXZlbiB0aG91Z2ggaXQgaXMgcmVhc3NpZ25lZCB3aXRoIG5ldyBwcm9wcyByZXN1bHRpbmcgaW5cbiAgICAgKiBhIG5ldyB3aWR0aCBmb3IgY2VsbHMgbm90IGJlaW5nIGNhbGN1bGF0ZWQgc28gd2UgbXVzdFxuICAgICAqIGZvcmNlIHRyaWdnZXIgYSByZXNpemUuXG4gICAgICpcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vYnZhdWdobi9yZWFjdC12aXJ0dWFsaXplZC9ibG9iL21hc3Rlci9zb3VyY2UvR3JpZC9HcmlkLmpzI0wzMjJcbiAgICAgKlxuICAgICAqL1xuICAgIGlmICghaXNFcXVhbChwcmVQcm9wcy5jZWxsU2l6ZUNhY2hlLCB0aGlzLnByb3BzLmNlbGxTaXplQ2FjaGUpKSB7XG4gICAgICB0aGlzLmdyaWQ/LnJlY29tcHV0ZUdyaWRTaXplKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtzZXRHcmlkUmVmLCAuLi5yZXN0fSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkXG4gICAgICAgIHJlZj17eCA9PiB7XG4gICAgICAgICAgaWYgKHNldEdyaWRSZWYpIHNldEdyaWRSZWYoeCk7XG4gICAgICAgICAgdGhpcy5ncmlkID0geDtcbiAgICAgICAgfX1cbiAgICAgICAga2V5PVwiZ3JpZC1oYWNrXCJcbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9ncmlkLnRzeCJdLCJuYW1lcyI6WyJHcmlkSGFjayIsImUiLCJzY3JvbGxMZWZ0IiwicHJvcHMiLCJ1bmRlZmluZWQiLCJkZWx0YVgiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIngiLCJncmlkIiwiX3Njcm9sbGluZ0NvbnRhaW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJfcHJldmVudFNjcm9sbEJhY2siLCJwYXNzaXZlIiwicHJlUHJvcHMiLCJjZWxsU2l6ZUNhY2hlIiwicmVjb21wdXRlR3JpZFNpemUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0R3JpZFJlZiIsInJlc3QiLCJfdXBkYXRlUmVmIiwiUHVyZUNvbXBvbmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFDQTs7QUFDQTs7Ozs7O0lBRXFCQSxROzs7Ozs7Ozs7Ozs7Ozs7NkZBQ0MsSTsyR0F5QkMsVUFBQUMsQ0FBQyxFQUFJO0FBQUEsVUFDakJDLFVBRGlCLEdBQ0gsTUFBS0MsS0FERixDQUNqQkQsVUFEaUI7O0FBRXhCLFVBQUlBLFVBQVUsS0FBS0UsU0FBZixJQUE0QkYsVUFBVSxJQUFJLENBQTFDLElBQStDRCxDQUFDLENBQUNJLE1BQUYsR0FBVyxDQUE5RCxFQUFpRTtBQUMvRDtBQUNBO0FBQ0FKLFFBQUFBLENBQUMsQ0FBQ0ssY0FBRjtBQUNBTCxRQUFBQSxDQUFDLENBQUNNLGVBQUY7QUFDQSxlQUFPLEtBQVA7QUFDRDs7QUFDRDtBQUNELEs7bUdBRVksVUFBQUMsQ0FBQyxFQUFJO0FBQ2hCLFVBQUksQ0FBQyxNQUFLQyxJQUFOLElBQWNELENBQWxCLEVBQXFCO0FBQUE7O0FBQ25CLGNBQUtDLElBQUwsR0FBWUQsQ0FBWjtBQUNBO0FBQ047QUFDQTtBQUNBO0FBQ007O0FBQ0EsNEJBQUtDLElBQUwsbUZBQVdDLG1CQUFYLGdGQUFnQ0MsZ0JBQWhDLENBQWlELE9BQWpELEVBQTBELE1BQUtDLGtCQUEvRCxFQUFtRjtBQUNqRkMsVUFBQUEsT0FBTyxFQUFFO0FBRHdFLFNBQW5GO0FBR0Q7QUFDRixLOzs7Ozs7V0EvQ0QsNEJBQW1CQyxRQUFuQixFQUE2QjtBQUMzQjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNJLFVBQUksQ0FBQyx3QkFBUUEsUUFBUSxDQUFDQyxhQUFqQixFQUFnQyxLQUFLWixLQUFMLENBQVdZLGFBQTNDLENBQUwsRUFBZ0U7QUFBQTs7QUFDOUQsNEJBQUtOLElBQUwsNERBQVdPLGlCQUFYO0FBQ0Q7QUFDRjs7O1dBRUQsZ0NBQXVCO0FBQUE7O0FBQ3JCO0FBQ0EsMEJBQUtQLElBQUwscUZBQVdDLG1CQUFYLGdGQUFnQ08sbUJBQWhDLENBQW9ELE9BQXBELEVBQTZELEtBQUtMLGtCQUFsRSxFQUFzRjtBQUNwRkMsUUFBQUEsT0FBTyxFQUFFO0FBRDJFLE9BQXRGO0FBR0Q7OztXQTRCRCxrQkFBUztBQUFBOztBQUFBLHdCQUN1QixLQUFLVixLQUQ1QjtBQUFBLFVBQ0FlLFVBREEsZUFDQUEsVUFEQTtBQUFBLFVBQ2VDLElBRGY7QUFFUCwwQkFDRSxnQ0FBQyxzQkFBRDtBQUNFLFFBQUEsR0FBRyxFQUFFLGFBQUFYLENBQUMsRUFBSTtBQUNSLGNBQUlVLFVBQUosRUFBZ0JBLFVBQVUsQ0FBQ1YsQ0FBRCxDQUFWOztBQUNoQixVQUFBLE1BQUksQ0FBQ1ksVUFBTCxDQUFnQlosQ0FBaEI7QUFDRCxTQUpIO0FBS0UsUUFBQSxHQUFHLEVBQUM7QUFMTixTQU1NVyxJQU5OLEVBREY7QUFVRDs7O0VBaEVtQ0Usb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0dyaWQsIEdyaWRQcm9wc30gZnJvbSAncmVhY3QtdmlydHVhbGl6ZWQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoLmlzZXF1YWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcmlkSGFjayBleHRlbmRzIFB1cmVDb21wb25lbnQ8R3JpZFByb3BzPiB7XG4gIGdyaWQ6IEdyaWQgfCBudWxsID0gbnVsbDtcblxuICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMpIHtcbiAgICAvKlxuICAgICAqIFRoaXMgaGFjayBleGlzdHMgYmVjYXVzZSBpbiByZWFjdC12aXJ0dWFsaXplZCB0aGVcbiAgICAgKiBfY29sdW1uV2lkdGhHZXR0ZXIgaXMgb25seSBjYWxsZWQgaW4gdGhlIGNvbnN0cnVjdG9yXG4gICAgICogZXZlbiB0aG91Z2ggaXQgaXMgcmVhc3NpZ25lZCB3aXRoIG5ldyBwcm9wcyByZXN1bHRpbmcgaW5cbiAgICAgKiBhIG5ldyB3aWR0aCBmb3IgY2VsbHMgbm90IGJlaW5nIGNhbGN1bGF0ZWQgc28gd2UgbXVzdFxuICAgICAqIGZvcmNlIHRyaWdnZXIgYSByZXNpemUuXG4gICAgICpcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vYnZhdWdobi9yZWFjdC12aXJ0dWFsaXplZC9ibG9iL21hc3Rlci9zb3VyY2UvR3JpZC9HcmlkLmpzI0wzMjJcbiAgICAgKlxuICAgICAqL1xuICAgIGlmICghaXNFcXVhbChwcmVQcm9wcy5jZWxsU2l6ZUNhY2hlLCB0aGlzLnByb3BzLmNlbGxTaXplQ2FjaGUpKSB7XG4gICAgICB0aGlzLmdyaWQ/LnJlY29tcHV0ZUdyaWRTaXplKCk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBfc2Nyb2xsaW5nQ29udGFpbmVyIG5vdCB0eXBlZCBpbiBHcmlkXG4gICAgdGhpcy5ncmlkPy5fc2Nyb2xsaW5nQ29udGFpbmVyPy5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMuX3ByZXZlbnRTY3JvbGxCYWNrLCB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgX3ByZXZlbnRTY3JvbGxCYWNrID0gZSA9PiB7XG4gICAgY29uc3Qge3Njcm9sbExlZnR9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoc2Nyb2xsTGVmdCAhPT0gdW5kZWZpbmVkICYmIHNjcm9sbExlZnQgPD0gMCAmJiBlLmRlbHRhWCA8IDApIHtcbiAgICAgIC8vIFByZXZlbnQgU2Nyb2xsIE9uIFNjcm9sbGFibGUgRWxlbWVudHMsIGF2b2lkIGJyb3dzZXIgYmFja3dhcmQgbmF2aWdhdGlvblxuICAgICAgLy8gaHR0cHM6Ly9hbHZhcm90cmlnby5jb20vYmxvZy9wcmV2ZW50LXNjcm9sbC1vbi1zY3JvbGxhYmxlLWVsZW1lbnQtanMvXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH07XG5cbiAgX3VwZGF0ZVJlZiA9IHggPT4ge1xuICAgIGlmICghdGhpcy5ncmlkICYmIHgpIHtcbiAgICAgIHRoaXMuZ3JpZCA9IHg7XG4gICAgICAvKlxuICAgICAgICogVGhpcyBoYWNrIGV4aXN0cyBiZWNhdXNlIHdlIG5lZWQgdG8gYWRkIHdoZWVsIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBkaXYgcmVuZGVyZWQgYnkgR3JpZFxuICAgICAgICpcbiAgICAgICAqL1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBfc2Nyb2xsaW5nQ29udGFpbmVyIG5vdCB0eXBlZCBpbiBHcmlkXG4gICAgICB0aGlzLmdyaWQ/Ll9zY3JvbGxpbmdDb250YWluZXI/LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5fcHJldmVudFNjcm9sbEJhY2ssIHtcbiAgICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge3NldEdyaWRSZWYsIC4uLnJlc3R9ID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWRcbiAgICAgICAgcmVmPXt4ID0+IHtcbiAgICAgICAgICBpZiAoc2V0R3JpZFJlZikgc2V0R3JpZFJlZih4KTtcbiAgICAgICAgICB0aGlzLl91cGRhdGVSZWYoeCk7XG4gICAgICAgIH19XG4gICAgICAgIGtleT1cImdyaWQtaGFja1wiXG4gICAgICAgIHsuLi5yZXN0fVxuICAgICAgLz5cbiAgICApO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  import React, { CSSProperties } from 'react';
2
+ import { ColMeta } from '@kepler.gl/types';
2
3
  import FieldTokenFactory, { FieldTokenProps } from '../../common/field-token';
3
4
  import { DataTableProps } from './index';
4
5
  declare type CellInfo = {
@@ -13,13 +14,15 @@ declare type CellInfo = {
13
14
  declare type HeaderCellProps = {
14
15
  cellInfo: CellInfo;
15
16
  columns: DataTableProps['columns'];
17
+ colMeta?: ColMeta;
16
18
  isPinned?: boolean;
19
+ showStats?: boolean;
17
20
  props: DataTableProps;
18
21
  toggleMoreOptions: (moreOptionsColumn: string) => void;
19
22
  moreOptionsColumn: null | string;
20
23
  };
21
24
  declare const HeaderCellFactory: {
22
- (FieldToken: React.FC<FieldTokenProps>): ({ cellInfo, columns, isPinned, props, toggleMoreOptions, moreOptionsColumn }: HeaderCellProps) => JSX.Element;
25
+ (FieldToken: React.FC<FieldTokenProps>): ({ cellInfo, columns, isPinned, props, toggleMoreOptions, moreOptionsColumn }: HeaderCellProps) => React.JSX.Element;
23
26
  deps: (typeof FieldTokenFactory)[];
24
27
  };
25
28
  export default HeaderCellFactory;
@@ -1,27 +1,9 @@
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
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
24
4
 
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
25
7
  Object.defineProperty(exports, "__esModule", {
26
8
  value: true
27
9
  });
@@ -29,9 +11,11 @@ exports["default"] = void 0;
29
11
 
30
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
31
13
 
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
32
16
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
33
17
 
34
- var _react = _interopRequireDefault(require("react"));
18
+ var _react = _interopRequireWildcard(require("react"));
35
19
 
36
20
  var _styledComponents = _interopRequireDefault(require("styled-components"));
37
21
 
@@ -41,15 +25,17 @@ var _button = _interopRequireDefault(require("./button"));
41
25
 
42
26
  var _icons = require("../../common/icons");
43
27
 
44
- var _optionDropdown = _interopRequireDefault(require("./option-dropdown"));
45
-
46
28
  var _constants = require("@kepler.gl/constants");
47
29
 
30
+ var _optionDropdown = _interopRequireWildcard(require("./option-dropdown"));
31
+
32
+ var _utils = require("@kepler.gl/utils");
33
+
48
34
  var _fieldToken = _interopRequireDefault(require("../../common/field-token"));
49
35
 
50
36
  var _templateObject;
51
37
 
52
- var StyledHeaderCell = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border-bottom: 1px solid ", ";\n border-top: 1px solid ", ";\n padding-top: ", "px;\n padding-right: 0;\n padding-bottom: ", "px;\n padding-left: ", "px;\n align-items: center;\n justify-content: space-between;\n display: flex;\n flex-direction: row;\n background-color: ", ";\n\n &:hover {\n .more {\n color: ", ";\n }\n }\n .n-sort-idx {\n font-size: 9px;\n }\n .details {\n font-weight: 500;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n height: 100%;\n overflow: hidden;\n flex-grow: 1;\n\n .col-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n\n .col-name__left {\n display: flex;\n align-items: center;\n overflow: hidden;\n svg {\n margin-left: 6px;\n }\n }\n .col-name__name {\n overflow: hidden;\n white-space: nowrap;\n }\n }\n }\n\n .more {\n color: transparent;\n margin-left: 5px;\n }\n"])), function (props) {
38
+ var StyledHeaderCell = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border-bottom: 1px solid ", ";\n border-top: 1px solid ", ";\n padding-top: ", "px;\n padding-right: 0;\n padding-bottom: ", "px;\n padding-left: ", "px;\n align-items: center;\n justify-content: space-between;\n display: flex;\n flex-direction: row;\n background-color: ", ";\n\n .n-sort-idx {\n font-size: 9px;\n }\n .details {\n font-weight: 500;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n height: 100%;\n overflow: hidden;\n flex-grow: 1;\n\n .col-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n .col-name__left {\n display: flex;\n align-items: center;\n overflow: hidden;\n\n svg {\n margin-left: 6px;\n }\n }\n .col-name__name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n\n .more {\n margin-left: 5px;\n }\n\n .col-name__format svg {\n width: 10px;\n height: 10px;\n stroke-width: 1;\n }\n"])), function (props) {
53
39
  return props.theme.headerCellBorderColor;
54
40
  }, function (props) {
55
41
  return props.theme.headerCellBorderColor;
@@ -61,13 +47,11 @@ var StyledHeaderCell = _styledComponents["default"].div(_templateObject || (_tem
61
47
  return props.theme.cellPaddingSide;
62
48
  }, function (props) {
63
49
  return props.theme.headerCellBackground;
64
- }, function (props) {
65
- return props.theme.headerCellIconColor;
66
50
  });
67
51
 
68
52
  var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
69
53
  var HeaderCell = function HeaderCell(_ref) {
70
- var _classnames;
54
+ var _colMeta$column, _classnames;
71
55
 
72
56
  var cellInfo = _ref.cellInfo,
73
57
  columns = _ref.columns,
@@ -79,15 +63,41 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
79
63
  key = cellInfo.key,
80
64
  style = cellInfo.style;
81
65
  var colMeta = props.colMeta,
82
- _props$sortColumn = props.sortColumn,
83
- sortColumn = _props$sortColumn === void 0 ? {} : _props$sortColumn,
66
+ sortColumn = props.sortColumn,
84
67
  _sortTableColumn = props.sortTableColumn,
85
- _pinTableColumn = props.pinTableColumn,
86
- _copyTableColumn = props.copyTableColumn;
68
+ pinTableColumn = props.pinTableColumn,
69
+ copyTableColumn = props.copyTableColumn,
70
+ setColumnDisplayFormat = props.setColumnDisplayFormat;
71
+
72
+ var _useState = (0, _react.useState)(false),
73
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
74
+ showFormatter = _useState2[0],
75
+ setShowFormatter = _useState2[1];
76
+
87
77
  var column = columns[columnIndex];
88
78
  var isGhost = column.ghost;
89
79
  var isSorted = sortColumn[column];
90
80
  var firstCell = columnIndex === 0;
81
+ var isFormatted = Boolean((_colMeta$column = colMeta[column]) === null || _colMeta$column === void 0 ? void 0 : _colMeta$column.displayFormat);
82
+ var formatLabels = isFormatted ? (0, _utils.getFieldFormatLabels)(colMeta[column].type) : [];
83
+ var onSortTable = (0, _react.useCallback)(function () {
84
+ return _sortTableColumn(column);
85
+ }, [_sortTableColumn, column]);
86
+ var onToggleOptionMenu = (0, _react.useCallback)(function () {
87
+ return toggleMoreOptions(column);
88
+ }, [toggleMoreOptions, column]);
89
+ var onPin = (0, _react.useCallback)(function () {
90
+ return pinTableColumn(column);
91
+ }, [pinTableColumn, column]);
92
+ var onCopy = (0, _react.useCallback)(function () {
93
+ return copyTableColumn(column);
94
+ }, [copyTableColumn, column]);
95
+ var onSetDisplayFormat = (0, _react.useCallback)(function (displayFormat) {
96
+ setColumnDisplayFormat((0, _defineProperty2["default"])({}, column, displayFormat.format));
97
+ }, [column, setColumnDisplayFormat]);
98
+ var onToggleDisplayFormat = (0, _react.useCallback)(function () {
99
+ setShowFormatter(!showFormatter);
100
+ }, [showFormatter]);
91
101
  return /*#__PURE__*/_react["default"].createElement(StyledHeaderCell, {
92
102
  className: (0, _classnames2["default"])('header-cell', (_classnames = {}, (0, _defineProperty2["default"])(_classnames, "column-".concat(columnIndex), true), (0, _defineProperty2["default"])(_classnames, 'pinned-header-cell', isPinned), (0, _defineProperty2["default"])(_classnames, 'first-cell', firstCell), _classnames)),
93
103
  key: key,
@@ -95,9 +105,7 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
95
105
  onClick: function onClick(e) {
96
106
  e.shiftKey ? _sortTableColumn(column) : null;
97
107
  },
98
- onDoubleClick: function onDoubleClick() {
99
- return _sortTableColumn(column);
100
- },
108
+ onDoubleClick: onSortTable,
101
109
  title: column
102
110
  }, isGhost ? /*#__PURE__*/_react["default"].createElement("div", null) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("section", {
103
111
  className: "details"
@@ -109,18 +117,29 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
109
117
  className: "col-name__name"
110
118
  }, colMeta[column].name), /*#__PURE__*/_react["default"].createElement(_button["default"], {
111
119
  className: "col-name__sort",
112
- onClick: function onClick() {
113
- return _sortTableColumn(column);
114
- }
120
+ onClick: onSortTable
115
121
  }, isSorted ? isSorted === _constants.SORT_ORDER.ASCENDING ? /*#__PURE__*/_react["default"].createElement(_icons.ArrowUp, {
116
122
  height: "14px"
117
123
  }) : /*#__PURE__*/_react["default"].createElement(_icons.ArrowDown, {
118
124
  height: "14px"
119
- }) : null)), /*#__PURE__*/_react["default"].createElement(_button["default"], {
125
+ }) : null), /*#__PURE__*/_react["default"].createElement(_button["default"], {
126
+ className: "col-name__format",
127
+ onClick: onToggleDisplayFormat
128
+ }, isFormatted ? /*#__PURE__*/_react["default"].createElement(_icons.Hash, {
129
+ height: "14px"
130
+ }) : null, /*#__PURE__*/_react["default"].createElement(_optionDropdown.FormatterDropdown, {
131
+ left: 0,
132
+ top: 0,
133
+ isOpened: isFormatted && showFormatter,
134
+ displayFormat: colMeta[column].displayFormat,
135
+ setDisplayFormat: onSetDisplayFormat,
136
+ onClose: function onClose() {
137
+ return setShowFormatter(false);
138
+ },
139
+ formatLabels: formatLabels
140
+ }))), /*#__PURE__*/_react["default"].createElement(_button["default"], {
120
141
  className: "more",
121
- onClick: function onClick() {
122
- return toggleMoreOptions(column);
123
- }
142
+ onClick: onToggleOptionMenu
124
143
  }, /*#__PURE__*/_react["default"].createElement(_icons.VertThreeDots, {
125
144
  height: "14px"
126
145
  }))), /*#__PURE__*/_react["default"].createElement(FieldToken, {
@@ -130,16 +149,14 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
130
149
  }, /*#__PURE__*/_react["default"].createElement(_optionDropdown["default"], {
131
150
  isOpened: moreOptionsColumn === column,
132
151
  column: column,
152
+ colMeta: colMeta,
133
153
  toggleMoreOptions: toggleMoreOptions,
134
154
  sortTableColumn: function sortTableColumn(mode) {
135
155
  return _sortTableColumn(column, mode);
136
156
  },
137
- pinTableColumn: function pinTableColumn() {
138
- return _pinTableColumn(column);
139
- },
140
- copyTableColumn: function copyTableColumn() {
141
- return _copyTableColumn(column);
142
- }
157
+ pinTableColumn: onPin,
158
+ copyTableColumn: onCopy,
159
+ setDisplayFormat: onSetDisplayFormat
143
160
  }))));
144
161
  };
145
162
 
@@ -149,4 +166,4 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
149
166
  HeaderCellFactory.deps = [_fieldToken["default"]];
150
167
  var _default = HeaderCellFactory;
151
168
  exports["default"] = _default;
152
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9oZWFkZXItY2VsbC50c3giXSwibmFtZXMiOlsiU3R5bGVkSGVhZGVyQ2VsbCIsInN0eWxlZCIsImRpdiIsInByb3BzIiwidGhlbWUiLCJoZWFkZXJDZWxsQm9yZGVyQ29sb3IiLCJoZWFkZXJQYWRkaW5nVG9wIiwiaGVhZGVyUGFkZGluZ0JvdHRvbSIsImNlbGxQYWRkaW5nU2lkZSIsImhlYWRlckNlbGxCYWNrZ3JvdW5kIiwiaGVhZGVyQ2VsbEljb25Db2xvciIsIkhlYWRlckNlbGxGYWN0b3J5IiwiRmllbGRUb2tlbiIsIkhlYWRlckNlbGwiLCJjZWxsSW5mbyIsImNvbHVtbnMiLCJpc1Bpbm5lZCIsInRvZ2dsZU1vcmVPcHRpb25zIiwibW9yZU9wdGlvbnNDb2x1bW4iLCJjb2x1bW5JbmRleCIsImtleSIsInN0eWxlIiwiY29sTWV0YSIsInNvcnRDb2x1bW4iLCJzb3J0VGFibGVDb2x1bW4iLCJwaW5UYWJsZUNvbHVtbiIsImNvcHlUYWJsZUNvbHVtbiIsImNvbHVtbiIsImlzR2hvc3QiLCJnaG9zdCIsImlzU29ydGVkIiwiZmlyc3RDZWxsIiwiZSIsInNoaWZ0S2V5IiwibmFtZSIsIlNPUlRfT1JERVIiLCJBU0NFTkRJTkciLCJ0eXBlIiwibW9kZSIsImRlcHMiLCJGaWVsZFRva2VuRmFjdG9yeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBR0EsSUFBTUEsZ0JBQWdCLEdBQUdDLDZCQUFPQyxHQUFWLGduQ0FDTyxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlDLHFCQUFoQjtBQUFBLENBRFosRUFFSSxVQUFBRixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlDLHFCQUFoQjtBQUFBLENBRlQsRUFHTCxVQUFBRixLQUFLO0FBQUEsU0FBSUEsS0FBSyxD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Q2U3QixpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge0NTU1Byb3BlcnRpZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJy4vYnV0dG9uJztcbmltcG9ydCB7QXJyb3dVcCwgQXJyb3dEb3duLCBWZXJ0VGhyZWVEb3RzfSBmcm9tICcuLi8uLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IE9wdGlvbkRyb3Bkb3duIGZyb20gJy4vb3B0aW9uLWRyb3Bkb3duJztcbmltcG9ydCB7U09SVF9PUkRFUn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IEZpZWxkVG9rZW5GYWN0b3J5LCB7RmllbGRUb2tlblByb3BzfSBmcm9tICcuLi8uLi9jb21tb24vZmllbGQtdG9rZW4nO1xuaW1wb3J0IHtEYXRhVGFibGVQcm9wc30gZnJvbSAnLi9pbmRleCc7XG5cbmNvbnN0IFN0eWxlZEhlYWRlckNlbGwgPSBzdHlsZWQuZGl2YFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsQm9yZGVyQ29sb3J9O1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsQm9yZGVyQ29sb3J9O1xuICBwYWRkaW5nLXRvcDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJQYWRkaW5nVG9wfXB4O1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJQYWRkaW5nQm90dG9tfXB4O1xuICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbFBhZGRpbmdTaWRlfXB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyQ2VsbEJhY2tncm91bmR9O1xuXG4gICY6aG92ZXIge1xuICAgIC5tb3JlIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxJY29uQ29sb3J9O1xuICAgIH1cbiAgfVxuICAubi1zb3J0LWlkeCB7XG4gICAgZm9udC1zaXplOiA5cHg7XG4gIH1cbiAgLmRldGFpbHMge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAuY29sLW5hbWUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIC5jb2wtbmFtZV9fbGVmdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvbC1uYW1lX19uYW1lIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubW9yZSB7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIH1cbmA7XG5cbnR5cGUgQ2VsbEluZm8gPSB7XG4gIGNvbHVtbkluZGV4OiBudW1iZXI7XG4gIGlzU2Nyb2xsaW5nOiBib29sZWFuO1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIGtleTogc3RyaW5nO1xuICBwYXJlbnQ6IGFueTtcbiAgcm93SW5kZXg6IG51bWJlcjtcbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG59O1xuXG50eXBlIEhlYWRlckNlbGxQcm9wcyA9IHtcbiAgLy8gcGFzc2VkIGRvd24gZnJvbSByZWFjdCB2aXJ0dWFsaXplZCBHcmlkXG4gIGNlbGxJbmZvOiBDZWxsSW5mbztcbiAgY29sdW1uczogRGF0YVRhYmxlUHJvcHNbJ2NvbHVtbnMnXTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBwcm9wczogRGF0YVRhYmxlUHJvcHM7XG4gIHRvZ2dsZU1vcmVPcHRpb25zOiAobW9yZU9wdGlvbnNDb2x1bW46IHN0cmluZykgPT4gdm9pZDtcbiAgbW9yZU9wdGlvbnNDb2x1bW46IG51bGwgfCBzdHJpbmc7XG59O1xuXG5jb25zdCBIZWFkZXJDZWxsRmFjdG9yeSA9IChGaWVsZFRva2VuOiBSZWFjdC5GQzxGaWVsZFRva2VuUHJvcHM+KSA9PiB7XG4gIGNvbnN0IEhlYWRlckNlbGwgPSAoe1xuICAgIGNlbGxJbmZvLFxuICAgIGNvbHVtbnMsXG4gICAgaXNQaW5uZWQsXG4gICAgcHJvcHMsXG4gICAgdG9nZ2xlTW9yZU9wdGlvbnMsXG4gICAgbW9yZU9wdGlvbnNDb2x1bW5cbiAgfTogSGVhZGVyQ2VsbFByb3BzKSA9PiB7XG4gICAgY29uc3Qge2NvbHVtbkluZGV4LCBrZXksIHN0eWxlfSA9IGNlbGxJbmZvO1xuICAgIGNvbnN0IHtjb2xNZXRhLCBzb3J0Q29sdW1uID0ge30sIHNvcnRUYWJsZUNvbHVtbiwgcGluVGFibGVDb2x1bW4sIGNvcHlUYWJsZUNvbHVtbn0gPSBwcm9wcztcbiAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2NvbHVtbkluZGV4XTtcblxuICAgIGNvbnN0IGlzR2hvc3QgPSBjb2x1bW4uZ2hvc3Q7XG4gICAgY29uc3QgaXNTb3J0ZWQgPSBzb3J0Q29sdW1uW2NvbHVtbl07XG4gICAgY29uc3QgZmlyc3RDZWxsID0gY29sdW1uSW5kZXggPT09IDA7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRIZWFkZXJDZWxsXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnaGVhZGVyLWNlbGwnLCB7XG4gICAgICAgICAgW2Bjb2x1bW4tJHtjb2x1bW5JbmRleH1gXTogdHJ1ZSxcbiAgICAgICAgICAncGlubmVkLWhlYWRlci1jZWxsJzogaXNQaW5uZWQsXG4gICAgICAgICAgJ2ZpcnN0LWNlbGwnOiBmaXJzdENlbGxcbiAgICAgICAgfSl9XG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgIGUuc2hpZnRLZXkgPyBzb3J0VGFibGVDb2x1bW4oY29sdW1uKSA6IG51bGw7XG4gICAgICAgIH19XG4gICAgICAgIG9uRG91YmxlQ2xpY2s9eygpID0+IHNvcnRUYWJsZUNvbHVtbihjb2x1bW4pfVxuICAgICAgICB0aXRsZT17Y29sdW1ufVxuICAgICAgPlxuICAgICAgICB7aXNHaG9zdCA/IChcbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cImRldGFpbHNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW5hbWVfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW5hbWVfX25hbWVcIj57Y29sTWV0YVtjb2x1bW5dLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImNvbC1uYW1lX19zb3J0XCIgb25DbGljaz17KCkgPT4gc29ydFRhYmxlQ29sdW1uKGNvbHVtbil9PlxuICAgICAgICAgICAgICAgICAgICB7aXNTb3J0ZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgaXNTb3J0ZWQgPT09IFNPUlRfT1JERVIuQVNDRU5ESU5HID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXAgaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwibW9yZVwiIG9uQ2xpY2s9eygpID0+IHRvZ2dsZU1vcmVPcHRpb25zKGNvbHVtbil9PlxuICAgICAgICAgICAgICAgICAgPFZlcnRUaHJlZURvdHMgaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8RmllbGRUb2tlbiB0eXBlPXtjb2xNZXRhW2NvbHVtbl0udHlwZX0gLz5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwib3B0aW9uc1wiPlxuICAgICAgICAgICAgICA8T3B0aW9uRHJvcGRvd25cbiAgICAgICAgICAgICAgICBpc09wZW5lZD17bW9yZU9wdGlvbnNDb2x1bW4gPT09IGNvbHVtbn1cbiAgICAgICAgICAgICAgICBjb2x1bW49e2NvbHVtbn1cbiAgICAgICAgICAgICAgICB0b2dnbGVNb3JlT3B0aW9ucz17dG9nZ2xlTW9yZU9wdGlvbnN9XG4gICAgICAgICAgICAgICAgc29ydFRhYmxlQ29sdW1uPXttb2RlID0+IHNvcnRUYWJsZUNvbHVtbihjb2x1bW4sIG1vZGUpfVxuICAgICAgICAgICAgICAgIHBpblRhYmxlQ29sdW1uPXsoKSA9PiBwaW5UYWJsZUNvbHVtbihjb2x1bW4pfVxuICAgICAgICAgICAgICAgIGNvcHlUYWJsZUNvbHVtbj17KCkgPT4gY29weVRhYmxlQ29sdW1uKGNvbHVtbil9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZEhlYWRlckNlbGw+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIEhlYWRlckNlbGw7XG59O1xuSGVhZGVyQ2VsbEZhY3RvcnkuZGVwcyA9IFtGaWVsZFRva2VuRmFjdG9yeV07XG5leHBvcnQgZGVmYXVsdCBIZWFkZXJDZWxsRmFjdG9yeTtcbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9oZWFkZXItY2VsbC50c3giXSwibmFtZXMiOlsiU3R5bGVkSGVhZGVyQ2VsbCIsInN0eWxlZCIsImRpdiIsInByb3BzIiwidGhlbWUiLCJoZWFkZXJDZWxsQm9yZGVyQ29sb3IiLCJoZWFkZXJQYWRkaW5nVG9wIiwiaGVhZGVyUGFkZGluZ0JvdHRvbSIsImNlbGxQYWRkaW5nU2lkZSIsImhlYWRlckNlbGxCYWNrZ3JvdW5kIiwiSGVhZGVyQ2VsbEZhY3RvcnkiLCJGaWVsZFRva2VuIiwiSGVhZGVyQ2VsbCIsImNlbGxJbmZvIiwiY29sdW1ucyIsImlzUGlubmVkIiwidG9nZ2xlTW9yZU9wdGlvbnMiLCJtb3JlT3B0aW9uc0NvbHVtbiIsImNvbHVtbkluZGV4Iiwia2V5Iiwic3R5bGUiLCJjb2xNZXRhIiwic29ydENvbHVtbiIsInNvcnRUYWJsZUNvbHVtbiIsInBpblRhYmxlQ29sdW1uIiwiY29weVRhYmxlQ29sdW1uIiwic2V0Q29sdW1uRGlzcGxheUZvcm1hdCIsInNob3dGb3JtYXR0ZXIiLCJzZXRTaG93Rm9ybWF0dGVyIiwiY29sdW1uIiwiaXNHaG9zdCIsImdob3N0IiwiaXNTb3J0ZWQiLCJmaXJzdENlbGwiLCJpc0Zvcm1hdHRlZCIsIkJvb2xlYW4iLCJkaXNwbGF5Rm9ybWF0IiwiZm9ybWF0TGFiZWxzIiwidHlwZSIsIm9uU29ydFRhYmxlIiwib25Ub2dnbGVPcHRpb25NZW51Iiwib25QaW4iLCJvbkNvcHkiLCJvblNldERpc3BsYXlGb3JtYXQiLCJmb3JtYXQiLCJvblRvZ2dsZURpc3BsYXlGb3JtYXQiLCJlIiwic2hpZnRLZXkiLCJuYW1lIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIm1vZGUiLCJkZXBzIiwiRmllbGRUb2tlbkZhY3RvcnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FB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QUF0QixNQURGLENBekJGLENBREYsZUE4QkUsZ0NBQUMsVUFBRDtBQUFZLE1BQUEsSUFBSSxFQUFFbkIsT0FBTyxDQUFDUSxNQUFELENBQVAsQ0FBZ0JTO0FBQWxDLE1BOUJGLENBREYsZUFrQ0U7QUFBUyxNQUFBLFNBQVMsRUFBQztBQUFuQixvQkFDRSxnQ0FBQywwQkFBRDtBQUNFLE1BQUEsUUFBUSxFQUFFckIsaUJBQWlCLEtBQUtZLE1BRGxDO0FBRUUsTUFBQSxNQUFNLEVBQUVBLE1BRlY7QUFHRSxNQUFBLE9BQU8sRUFBRVIsT0FIWDtBQUlFLE1BQUEsaUJBQWlCLEVBQUVMLGlCQUpyQjtBQUtFLE1BQUEsZUFBZSxFQUFFLHlCQUFBbUMsSUFBSTtBQUFBLGVBQUk1QixnQkFBZSxDQUFDTSxNQUFELEVBQVNzQixJQUFULENBQW5CO0FBQUEsT0FMdkI7QUFNRSxNQUFBLGNBQWMsRUFBRVYsS0FObEI7QUFPRSxNQUFBLGVBQWUsRUFBRUMsTUFQbkI7QUFRRSxNQUFBLGdCQUFnQixFQUFFQztBQVJwQixNQURGLENBbENGLENBakJKLENBREY7QUFvRUQsR0EvR0Q7O0FBZ0hBLFNBQU8vQixVQUFQO0FBQ0QsQ0FsSEQ7O0FBbUhBRixpQkFBaUIsQ0FBQzBDLElBQWxCLEdBQXlCLENBQUNDLHNCQUFELENBQXpCO2VBQ2UzQyxpQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NTU1Byb3BlcnRpZXMsIHVzZVN0YXRlLCB1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IHtBcnJvd1VwLCBBcnJvd0Rvd24sIFZlcnRUaHJlZURvdHMsIEhhc2h9IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge1NPUlRfT1JERVJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBPcHRpb25Ecm9wZG93biwge0Zvcm1hdHRlckRyb3Bkb3dufSBmcm9tICcuL29wdGlvbi1kcm9wZG93bic7XG5pbXBvcnQge2dldEZpZWxkRm9ybWF0TGFiZWxzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Q29sTWV0YX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQgRmllbGRUb2tlbkZhY3RvcnksIHtGaWVsZFRva2VuUHJvcHN9IGZyb20gJy4uLy4uL2NvbW1vbi9maWVsZC10b2tlbic7XG5pbXBvcnQge0RhdGFUYWJsZVByb3BzfSBmcm9tICcuL2luZGV4JztcblxuY29uc3QgU3R5bGVkSGVhZGVyQ2VsbCA9IHN0eWxlZC5kaXZgXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCb3JkZXJDb2xvcn07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCb3JkZXJDb2xvcn07XG4gIHBhZGRpbmctdG9wOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclBhZGRpbmdUb3B9cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlclBhZGRpbmdCb3R0b219cHg7XG4gIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGV9cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsQmFja2dyb3VuZH07XG5cbiAgLm4tc29ydC1pZHgge1xuICAgIGZvbnQtc2l6ZTogOXB4O1xuICB9XG4gIC5kZXRhaWxzIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZmxleC1ncm93OiAxO1xuXG4gICAgLmNvbC1uYW1lIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgICAuY29sLW5hbWVfX2xlZnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNvbC1uYW1lX19uYW1lIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1vcmUge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIH1cblxuICAuY29sLW5hbWVfX2Zvcm1hdCBzdmcge1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgICBzdHJva2Utd2lkdGg6IDE7XG4gIH1cbmA7XG5cbnR5cGUgQ2VsbEluZm8gPSB7XG4gIGNvbHVtbkluZGV4OiBudW1iZXI7XG4gIGlzU2Nyb2xsaW5nOiBib29sZWFuO1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIGtleTogc3RyaW5nO1xuICBwYXJlbnQ6IGFueTtcbiAgcm93SW5kZXg6IG51bWJlcjtcbiAgc3R5bGU6IENTU1Byb3BlcnRpZXM7XG59O1xuXG50eXBlIEhlYWRlckNlbGxQcm9wcyA9IHtcbiAgLy8gcGFzc2VkIGRvd24gZnJvbSByZWFjdCB2aXJ0dWFsaXplZCBHcmlkXG4gIGNlbGxJbmZvOiBDZWxsSW5mbztcbiAgY29sdW1uczogRGF0YVRhYmxlUHJvcHNbJ2NvbHVtbnMnXTtcbiAgY29sTWV0YT86IENvbE1ldGE7XG4gIGlzUGlubmVkPzogYm9vbGVhbjtcbiAgc2hvd1N0YXRzPzogYm9vbGVhbjtcbiAgcHJvcHM6IERhdGFUYWJsZVByb3BzO1xuICB0b2dnbGVNb3JlT3B0aW9uczogKG1vcmVPcHRpb25zQ29sdW1uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG1vcmVPcHRpb25zQ29sdW1uOiBudWxsIHwgc3RyaW5nO1xufTtcblxuY29uc3QgSGVhZGVyQ2VsbEZhY3RvcnkgPSAoRmllbGRUb2tlbjogUmVhY3QuRkM8RmllbGRUb2tlblByb3BzPikgPT4ge1xuICBjb25zdCBIZWFkZXJDZWxsID0gKHtcbiAgICBjZWxsSW5mbyxcbiAgICBjb2x1bW5zLFxuICAgIGlzUGlubmVkLFxuICAgIHByb3BzLFxuICAgIHRvZ2dsZU1vcmVPcHRpb25zLFxuICAgIG1vcmVPcHRpb25zQ29sdW1uXG4gIH06IEhlYWRlckNlbGxQcm9wcykgPT4ge1xuICAgIGNvbnN0IHtjb2x1bW5JbmRleCwga2V5LCBzdHlsZX0gPSBjZWxsSW5mbztcbiAgICBjb25zdCB7XG4gICAgICBjb2xNZXRhLFxuICAgICAgc29ydENvbHVtbixcbiAgICAgIHNvcnRUYWJsZUNvbHVtbixcbiAgICAgIHBpblRhYmxlQ29sdW1uLFxuICAgICAgY29weVRhYmxlQ29sdW1uLFxuICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBbc2hvd0Zvcm1hdHRlciwgc2V0U2hvd0Zvcm1hdHRlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRleF07XG5cbiAgICBjb25zdCBpc0dob3N0ID0gY29sdW1uLmdob3N0O1xuICAgIGNvbnN0IGlzU29ydGVkID0gc29ydENvbHVtbltjb2x1bW5dO1xuICAgIGNvbnN0IGZpcnN0Q2VsbCA9IGNvbHVtbkluZGV4ID09PSAwO1xuICAgIGNvbnN0IGlzRm9ybWF0dGVkID0gQm9vbGVhbihjb2xNZXRhW2NvbHVtbl0/LmRpc3BsYXlGb3JtYXQpO1xuICAgIGNvbnN0IGZvcm1hdExhYmVscyA9IGlzRm9ybWF0dGVkID8gZ2V0RmllbGRGb3JtYXRMYWJlbHMoY29sTWV0YVtjb2x1bW5dLnR5cGUpIDogW107XG4gICAgY29uc3Qgb25Tb3J0VGFibGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzb3J0VGFibGVDb2x1bW4oY29sdW1uKSwgW3NvcnRUYWJsZUNvbHVtbiwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25Ub2dnbGVPcHRpb25NZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4gdG9nZ2xlTW9yZU9wdGlvbnMoY29sdW1uKSwgW1xuICAgICAgdG9nZ2xlTW9yZU9wdGlvbnMsXG4gICAgICBjb2x1bW5cbiAgICBdKTtcbiAgICBjb25zdCBvblBpbiA9IHVzZUNhbGxiYWNrKCgpID0+IHBpblRhYmxlQ29sdW1uKGNvbHVtbiksIFtwaW5UYWJsZUNvbHVtbiwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25Db3B5ID0gdXNlQ2FsbGJhY2soKCkgPT4gY29weVRhYmxlQ29sdW1uKGNvbHVtbiksIFtjb3B5VGFibGVDb2x1bW4sIGNvbHVtbl0pO1xuICAgIGNvbnN0IG9uU2V0RGlzcGxheUZvcm1hdCA9IHVzZUNhbGxiYWNrKFxuICAgICAgZGlzcGxheUZvcm1hdCA9PiB7XG4gICAgICAgIHNldENvbHVtbkRpc3BsYXlGb3JtYXQoe1tjb2x1bW5dOiBkaXNwbGF5Rm9ybWF0LmZvcm1hdH0pO1xuICAgICAgfSxcbiAgICAgIFtjb2x1bW4sIHNldENvbHVtbkRpc3BsYXlGb3JtYXRdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uVG9nZ2xlRGlzcGxheUZvcm1hdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIHNldFNob3dGb3JtYXR0ZXIoIXNob3dGb3JtYXR0ZXIpO1xuICAgIH0sIFtzaG93Rm9ybWF0dGVyXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEhlYWRlckNlbGxcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdoZWFkZXItY2VsbCcsIHtcbiAgICAgICAgICBbYGNvbHVtbi0ke2NvbHVtbkluZGV4fWBdOiB0cnVlLFxuICAgICAgICAgICdwaW5uZWQtaGVhZGVyLWNlbGwnOiBpc1Bpbm5lZCxcbiAgICAgICAgICAnZmlyc3QtY2VsbCc6IGZpcnN0Q2VsbFxuICAgICAgICB9KX1cbiAgICAgICAga2V5PXtrZXl9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5zaGlmdEtleSA/IHNvcnRUYWJsZUNvbHVtbihjb2x1bW4pIDogbnVsbDtcbiAgICAgICAgfX1cbiAgICAgICAgb25Eb3VibGVDbGljaz17b25Tb3J0VGFibGV9XG4gICAgICAgIHRpdGxlPXtjb2x1bW59XG4gICAgICA+XG4gICAgICAgIHtpc0dob3N0ID8gKFxuICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwiZGV0YWlsc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fbmFtZVwiPntjb2xNZXRhW2NvbHVtbl0ubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiY29sLW5hbWVfX3NvcnRcIiBvbkNsaWNrPXtvblNvcnRUYWJsZX0+XG4gICAgICAgICAgICAgICAgICAgIHtpc1NvcnRlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICBpc1NvcnRlZCA9PT0gU09SVF9PUkRFUi5BU0NFTkRJTkcgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8QXJyb3dVcCBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93RG93biBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImNvbC1uYW1lX19mb3JtYXRcIiBvbkNsaWNrPXtvblRvZ2dsZURpc3BsYXlGb3JtYXR9PlxuICAgICAgICAgICAgICAgICAgICB7aXNGb3JtYXR0ZWQgPyA8SGFzaCBoZWlnaHQ9XCIxNHB4XCIgLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVyRHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICBsZWZ0PXswfVxuICAgICAgICAgICAgICAgICAgICAgIHRvcD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBpc09wZW5lZD17aXNGb3JtYXR0ZWQgJiYgc2hvd0Zvcm1hdHRlcn1cbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PXtjb2xNZXRhW2NvbHVtbl0uZGlzcGxheUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgICAgICBzZXREaXNwbGF5Rm9ybWF0PXtvblNldERpc3BsYXlGb3JtYXR9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0Zvcm1hdHRlcihmYWxzZSl9XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0TGFiZWxzPXtmb3JtYXRMYWJlbHN9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cIm1vcmVcIiBvbkNsaWNrPXtvblRvZ2dsZU9wdGlvbk1lbnV9PlxuICAgICAgICAgICAgICAgICAgPFZlcnRUaHJlZURvdHMgaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8RmllbGRUb2tlbiB0eXBlPXtjb2xNZXRhW2NvbHVtbl0udHlwZX0gLz5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwib3B0aW9uc1wiPlxuICAgICAgICAgICAgICA8T3B0aW9uRHJvcGRvd25cbiAgICAgICAgICAgICAgICBpc09wZW5lZD17bW9yZU9wdGlvbnNDb2x1bW4gPT09IGNvbHVtbn1cbiAgICAgICAgICAgICAgICBjb2x1bW49e2NvbHVtbn1cbiAgICAgICAgICAgICAgICBjb2xNZXRhPXtjb2xNZXRhfVxuICAgICAgICAgICAgICAgIHRvZ2dsZU1vcmVPcHRpb25zPXt0b2dnbGVNb3JlT3B0aW9uc31cbiAgICAgICAgICAgICAgICBzb3J0VGFibGVDb2x1bW49e21vZGUgPT4gc29ydFRhYmxlQ29sdW1uKGNvbHVtbiwgbW9kZSl9XG4gICAgICAgICAgICAgICAgcGluVGFibGVDb2x1bW49e29uUGlufVxuICAgICAgICAgICAgICAgIGNvcHlUYWJsZUNvbHVtbj17b25Db3B5fVxuICAgICAgICAgICAgICAgIHNldERpc3BsYXlGb3JtYXQ9e29uU2V0RGlzcGxheUZvcm1hdH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvU3R5bGVkSGVhZGVyQ2VsbD5cbiAgICApO1xuICB9O1xuICByZXR1cm4gSGVhZGVyQ2VsbDtcbn07XG5IZWFkZXJDZWxsRmFjdG9yeS5kZXBzID0gW0ZpZWxkVG9rZW5GYWN0b3J5XTtcbmV4cG9ydCBkZWZhdWx0IEhlYWRlckNlbGxGYWN0b3J5O1xuIl19