@carto/kepler.gl 0.0.86-alpha.deck9.1 → 0.0.86

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 (423) hide show
  1. package/dist/actions/action-wrapper.js +41 -36
  2. package/dist/actions/actions.js +21 -15
  3. package/dist/actions/identity-actions.js +20 -14
  4. package/dist/actions/index.js +16 -16
  5. package/dist/actions/map-state-actions.js +18 -12
  6. package/dist/actions/map-style-actions.js +46 -30
  7. package/dist/actions/provider-actions.js +73 -49
  8. package/dist/actions/ui-state-actions.js +113 -73
  9. package/dist/actions/vis-state-actions.js +148 -152
  10. package/dist/cloud-providers/index.js +7 -6
  11. package/dist/cloud-providers/provider.js +279 -189
  12. package/dist/components/bottom-widget.js +117 -105
  13. package/dist/components/common/action-panel.js +74 -122
  14. package/dist/components/common/animation-control/animation-control.js +54 -69
  15. package/dist/components/common/animation-control/animation-controller.js +160 -134
  16. package/dist/components/common/animation-control/animation-speed-slider.js +54 -47
  17. package/dist/components/common/animation-control/floating-time-display.js +100 -120
  18. package/dist/components/common/animation-control/playback-controls.js +144 -147
  19. package/dist/components/common/animation-control/speed-control.js +23 -31
  20. package/dist/components/common/checkbox.js +70 -56
  21. package/dist/components/common/color-legend.js +110 -83
  22. package/dist/components/common/data-table/button.js +23 -31
  23. package/dist/components/common/data-table/canvas.js +5 -11
  24. package/dist/components/common/data-table/cell-size.js +61 -51
  25. package/dist/components/common/data-table/grid.js +59 -40
  26. package/dist/components/common/data-table/index.js +348 -464
  27. package/dist/components/common/data-table/option-dropdown.js +33 -50
  28. package/dist/components/common/dataset-label.js +13 -17
  29. package/dist/components/common/error-boundary.js +45 -27
  30. package/dist/components/common/field-selector.js +139 -99
  31. package/dist/components/common/field-token.js +9 -24
  32. package/dist/components/common/file-uploader/file-drop.js +115 -96
  33. package/dist/components/common/file-uploader/file-upload-progress.js +45 -68
  34. package/dist/components/common/file-uploader/file-upload.js +187 -215
  35. package/dist/components/common/file-uploader/upload-button.js +22 -35
  36. package/dist/components/common/histogram-plot.js +58 -47
  37. package/dist/components/common/icons/add.js +27 -14
  38. package/dist/components/common/icons/anchor_window.js +18 -16
  39. package/dist/components/common/icons/arrow-down-alt.js +27 -14
  40. package/dist/components/common/icons/arrow-down-solid.js +27 -14
  41. package/dist/components/common/icons/arrow-down.js +27 -14
  42. package/dist/components/common/icons/arrow-left.js +30 -17
  43. package/dist/components/common/icons/arrow-right.js +27 -14
  44. package/dist/components/common/icons/arrow-up-alt.js +28 -15
  45. package/dist/components/common/icons/arrow-up-solid.js +27 -14
  46. package/dist/components/common/icons/arrow-up.js +27 -14
  47. package/dist/components/common/icons/base.js +57 -39
  48. package/dist/components/common/icons/bug.js +29 -16
  49. package/dist/components/common/icons/cancel.js +27 -14
  50. package/dist/components/common/icons/checkmark.js +31 -18
  51. package/dist/components/common/icons/chevron-right.js +33 -20
  52. package/dist/components/common/icons/clipboard.js +28 -15
  53. package/dist/components/common/icons/clock.js +29 -16
  54. package/dist/components/common/icons/close.js +32 -19
  55. package/dist/components/common/icons/code-alt.js +29 -16
  56. package/dist/components/common/icons/copy.js +31 -18
  57. package/dist/components/common/icons/crosshairs.js +29 -16
  58. package/dist/components/common/icons/cube-3d.js +31 -18
  59. package/dist/components/common/icons/cursor-click.js +31 -18
  60. package/dist/components/common/icons/data-table.js +28 -15
  61. package/dist/components/common/icons/db.js +28 -15
  62. package/dist/components/common/icons/delete.js +29 -16
  63. package/dist/components/common/icons/docs.js +43 -30
  64. package/dist/components/common/icons/drag-n-drop.js +29 -16
  65. package/dist/components/common/icons/draw-polygon.js +46 -33
  66. package/dist/components/common/icons/email.js +31 -18
  67. package/dist/components/common/icons/expand.js +29 -16
  68. package/dist/components/common/icons/eye-seen.js +29 -16
  69. package/dist/components/common/icons/eye-unseen.js +29 -16
  70. package/dist/components/common/icons/file-type.js +19 -35
  71. package/dist/components/common/icons/file.js +27 -14
  72. package/dist/components/common/icons/files.js +26 -14
  73. package/dist/components/common/icons/filter-funnel.js +27 -14
  74. package/dist/components/common/icons/free-window.js +18 -16
  75. package/dist/components/common/icons/gear.js +29 -16
  76. package/dist/components/common/icons/hash.js +27 -14
  77. package/dist/components/common/icons/histogram.js +27 -15
  78. package/dist/components/common/icons/index.js +156 -156
  79. package/dist/components/common/icons/info.js +38 -25
  80. package/dist/components/common/icons/layers.js +27 -14
  81. package/dist/components/common/icons/left-arrow.js +29 -16
  82. package/dist/components/common/icons/legend.js +27 -14
  83. package/dist/components/common/icons/line-chart.js +27 -14
  84. package/dist/components/common/icons/login.js +30 -17
  85. package/dist/components/common/icons/logout.js +29 -16
  86. package/dist/components/common/icons/map-icon.js +32 -18
  87. package/dist/components/common/icons/map.js +32 -18
  88. package/dist/components/common/icons/messages.js +27 -14
  89. package/dist/components/common/icons/minus.js +27 -14
  90. package/dist/components/common/icons/order-by-dataset.js +17 -15
  91. package/dist/components/common/icons/order-by-list.js +9 -7
  92. package/dist/components/common/icons/pause.js +27 -14
  93. package/dist/components/common/icons/picture.js +26 -14
  94. package/dist/components/common/icons/pin.js +30 -17
  95. package/dist/components/common/icons/play.js +27 -14
  96. package/dist/components/common/icons/polygon.js +48 -35
  97. package/dist/components/common/icons/rectangle.js +49 -36
  98. package/dist/components/common/icons/reduce.js +30 -17
  99. package/dist/components/common/icons/reset.js +27 -14
  100. package/dist/components/common/icons/rocket.js +27 -14
  101. package/dist/components/common/icons/save.js +29 -16
  102. package/dist/components/common/icons/save2.js +33 -20
  103. package/dist/components/common/icons/search.js +29 -16
  104. package/dist/components/common/icons/settings.js +29 -16
  105. package/dist/components/common/icons/share.js +27 -14
  106. package/dist/components/common/icons/split.js +55 -42
  107. package/dist/components/common/icons/square-select.js +29 -16
  108. package/dist/components/common/icons/swap-horizontal.js +31 -18
  109. package/dist/components/common/icons/table.js +27 -14
  110. package/dist/components/common/icons/trash.js +29 -16
  111. package/dist/components/common/icons/upload.js +27 -14
  112. package/dist/components/common/icons/vert-dots.js +65 -52
  113. package/dist/components/common/icons/vert-three-dots.js +40 -27
  114. package/dist/components/common/icons/warning.js +39 -26
  115. package/dist/components/common/image-preview.js +33 -71
  116. package/dist/components/common/info-helper.js +29 -36
  117. package/dist/components/common/item-selector/accessor.js +13 -7
  118. package/dist/components/common/item-selector/chickleted-input.js +56 -72
  119. package/dist/components/common/item-selector/dropdown-list.js +214 -182
  120. package/dist/components/common/item-selector/item-selector-submenu.js +55 -34
  121. package/dist/components/common/item-selector/item-selector.js +194 -183
  122. package/dist/components/common/item-selector/typeahead.js +248 -236
  123. package/dist/components/common/line-chart.js +58 -80
  124. package/dist/components/common/loading-spinner.js +31 -46
  125. package/dist/components/common/logo.js +48 -61
  126. package/dist/components/common/map-layer-selector.js +25 -31
  127. package/dist/components/common/modal.js +106 -167
  128. package/dist/components/common/portaled.js +189 -169
  129. package/dist/components/common/progress-bar.js +24 -27
  130. package/dist/components/common/range-brush.js +215 -176
  131. package/dist/components/common/range-plot.js +63 -52
  132. package/dist/components/common/range-slider.js +231 -206
  133. package/dist/components/common/slider/mouse-event.js +66 -59
  134. package/dist/components/common/slider/slider-bar-handle.js +61 -51
  135. package/dist/components/common/slider/slider-handle.js +102 -127
  136. package/dist/components/common/slider/slider.js +162 -143
  137. package/dist/components/common/styled-components.js +256 -518
  138. package/dist/components/common/switch.js +11 -11
  139. package/dist/components/common/time-range-slider-time-title.js +32 -49
  140. package/dist/components/common/time-range-slider.js +45 -56
  141. package/dist/components/common/time-slider-marker.js +52 -71
  142. package/dist/components/common/tippy-tooltip.js +59 -89
  143. package/dist/components/common/toolbar-item.js +45 -53
  144. package/dist/components/common/toolbar.js +18 -24
  145. package/dist/components/common/vertical-toolbar.js +6 -13
  146. package/dist/components/container.js +119 -87
  147. package/dist/components/context.js +8 -6
  148. package/dist/components/editor/constants.js +4 -4
  149. package/dist/components/editor/editor.js +157 -122
  150. package/dist/components/editor/feature-action-panel.js +59 -52
  151. package/dist/components/editor/feature-styles.js +29 -46
  152. package/dist/components/editor/handle-style.js +29 -38
  153. package/dist/components/filters/components.js +4 -8
  154. package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +43 -33
  155. package/dist/components/filters/filter-panels/multi-select-filter-panel.js +21 -20
  156. package/dist/components/filters/filter-panels/new-filter-panel.js +31 -24
  157. package/dist/components/filters/filter-panels/polygon-filter-panel.js +31 -26
  158. package/dist/components/filters/filter-panels/range-filter-panel.js +21 -20
  159. package/dist/components/filters/filter-panels/single-select-filter-panel.js +21 -20
  160. package/dist/components/filters/filter-panels/time-range-filter-panel.js +31 -28
  161. package/dist/components/filters/index.js +10 -10
  162. package/dist/components/filters/multi-select-filter.js +9 -11
  163. package/dist/components/filters/polygon-filter.js +41 -26
  164. package/dist/components/filters/range-filter.js +7 -9
  165. package/dist/components/filters/single-select-filter.js +13 -11
  166. package/dist/components/filters/time-range-filter.js +14 -16
  167. package/dist/components/filters/time-widget.js +84 -125
  168. package/dist/components/geocoder/geocoder.js +177 -158
  169. package/dist/components/geocoder-panel.js +87 -66
  170. package/dist/components/index.js +329 -328
  171. package/dist/components/injector.js +63 -44
  172. package/dist/components/kepler-gl.js +361 -325
  173. package/dist/components/map/coordinate-info.js +16 -18
  174. package/dist/components/map/layer-hover-info.js +86 -108
  175. package/dist/components/map/layer-selector-panel.js +48 -50
  176. package/dist/components/map/locale-panel.js +44 -38
  177. package/dist/components/map/map-control-panel.js +47 -70
  178. package/dist/components/map/map-control-toolbar.js +6 -9
  179. package/dist/components/map/map-control-tooltip.js +8 -10
  180. package/dist/components/map/map-control.js +27 -35
  181. package/dist/components/map/map-draw-panel.js +48 -38
  182. package/dist/components/map/map-legend-panel.js +50 -47
  183. package/dist/components/map/map-legend.js +116 -133
  184. package/dist/components/map/map-popover.js +100 -155
  185. package/dist/components/map/split-map-button.js +34 -30
  186. package/dist/components/map/toggle-3d-button.js +27 -25
  187. package/dist/components/map-container.js +359 -313
  188. package/dist/components/maps-layout.js +26 -16
  189. package/dist/components/modal-container.js +355 -359
  190. package/dist/components/modals/add-map-style-modal.js +194 -233
  191. package/dist/components/modals/cloud-tile.js +67 -96
  192. package/dist/components/modals/data-table-modal.js +152 -155
  193. package/dist/components/modals/delete-data-modal.js +20 -20
  194. package/dist/components/modals/error-display.js +7 -9
  195. package/dist/components/modals/export-data-modal.js +140 -118
  196. package/dist/components/modals/export-image-modal.js +69 -82
  197. package/dist/components/modals/export-map-modal/components.js +18 -20
  198. package/dist/components/modals/export-map-modal/export-html-map.js +74 -82
  199. package/dist/components/modals/export-map-modal/export-json-map.js +45 -65
  200. package/dist/components/modals/export-map-modal/export-map-modal.js +47 -42
  201. package/dist/components/modals/image-modal-container.js +21 -20
  202. package/dist/components/modals/load-data-modal.js +30 -28
  203. package/dist/components/modals/load-storage-map.js +178 -277
  204. package/dist/components/modals/loading-dialog.js +19 -41
  205. package/dist/components/modals/modal-dialog.js +6 -4
  206. package/dist/components/modals/modal-tabs.js +48 -83
  207. package/dist/components/modals/overwrite-map-modal.js +30 -41
  208. package/dist/components/modals/provider-modal-container.js +42 -23
  209. package/dist/components/modals/save-map-modal.js +83 -107
  210. package/dist/components/modals/share-map-modal.js +95 -101
  211. package/dist/components/modals/status-panel.js +43 -63
  212. package/dist/components/modals/storage-map-viewer.js +70 -133
  213. package/dist/components/notification-panel/notification-item.js +97 -94
  214. package/dist/components/notification-panel.js +43 -35
  215. package/dist/components/performance.js +53 -49
  216. package/dist/components/plot-container.js +169 -151
  217. package/dist/components/side-panel/cloud-storage-dropdown.js +15 -13
  218. package/dist/components/side-panel/common/dataset-info.js +12 -16
  219. package/dist/components/side-panel/common/dataset-tag.js +27 -48
  220. package/dist/components/side-panel/common/dataset-title.js +116 -119
  221. package/dist/components/side-panel/common/source-data-catalog.js +32 -31
  222. package/dist/components/side-panel/common/source-data-selector.js +77 -52
  223. package/dist/components/side-panel/custom-panel.js +8 -6
  224. package/dist/components/side-panel/filter-manager.js +62 -48
  225. package/dist/components/side-panel/filter-panel/filter-panel-header.js +25 -35
  226. package/dist/components/side-panel/filter-panel/filter-panel.js +64 -46
  227. package/dist/components/side-panel/interaction-manager.js +18 -20
  228. package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
  229. package/dist/components/side-panel/interaction-panel/interaction-panel.js +95 -76
  230. package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +143 -118
  231. package/dist/components/side-panel/interaction-panel/tooltip-config.js +76 -95
  232. package/dist/components/side-panel/layer-manager.js +115 -105
  233. package/dist/components/side-panel/layer-panel/add-layer-button.js +54 -92
  234. package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
  235. package/dist/components/side-panel/layer-panel/color-palette.js +37 -50
  236. package/dist/components/side-panel/layer-panel/color-range-selector.js +207 -196
  237. package/dist/components/side-panel/layer-panel/color-selector.js +110 -104
  238. package/dist/components/side-panel/layer-panel/column-selector.js +22 -34
  239. package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
  240. package/dist/components/side-panel/layer-panel/custom-palette.js +205 -248
  241. package/dist/components/side-panel/layer-panel/custom-picker.js +69 -51
  242. package/dist/components/side-panel/layer-panel/dataset-layer-group.js +42 -37
  243. package/dist/components/side-panel/layer-panel/dataset-layer-section.js +27 -31
  244. package/dist/components/side-panel/layer-panel/dataset-section.js +35 -45
  245. package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +13 -14
  246. package/dist/components/side-panel/layer-panel/hex-column-config.js +55 -32
  247. package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
  248. package/dist/components/side-panel/layer-panel/layer-column-config.js +46 -42
  249. package/dist/components/side-panel/layer-panel/layer-config-group.js +144 -178
  250. package/dist/components/side-panel/layer-panel/layer-configurator.js +830 -826
  251. package/dist/components/side-panel/layer-panel/layer-list.js +94 -101
  252. package/dist/components/side-panel/layer-panel/layer-panel-header.js +82 -124
  253. package/dist/components/side-panel/layer-panel/layer-panel.js +105 -111
  254. package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +58 -67
  255. package/dist/components/side-panel/layer-panel/layer-type-list-item.js +32 -47
  256. package/dist/components/side-panel/layer-panel/layer-type-selector.js +41 -30
  257. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +43 -42
  258. package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +57 -55
  259. package/dist/components/side-panel/layer-panel/single-color-palette.js +33 -48
  260. package/dist/components/side-panel/layer-panel/text-label-panel.js +116 -81
  261. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +102 -88
  262. package/dist/components/side-panel/layer-panel/vis-config-slider.js +85 -99
  263. package/dist/components/side-panel/layer-panel/vis-config-switch.js +29 -38
  264. package/dist/components/side-panel/map-manager.js +89 -70
  265. package/dist/components/side-panel/map-style-panel/map-layer-selector.js +60 -72
  266. package/dist/components/side-panel/map-style-panel/map-style-selector.js +42 -64
  267. package/dist/components/side-panel/panel-dropdown.js +37 -21
  268. package/dist/components/side-panel/panel-header-action.js +65 -60
  269. package/dist/components/side-panel/panel-header.js +184 -165
  270. package/dist/components/side-panel/panel-tab.js +29 -35
  271. package/dist/components/side-panel/panel-title.js +18 -15
  272. package/dist/components/side-panel/panel-toggle.js +31 -30
  273. package/dist/components/side-panel/side-bar.js +91 -100
  274. package/dist/components/side-panel.js +123 -108
  275. package/dist/connect/keplergl-connect.js +26 -17
  276. package/dist/connect/with-local-selector.js +63 -31
  277. package/dist/constants/action-types.js +115 -113
  278. package/dist/constants/color-palette.js +16 -14
  279. package/dist/constants/color-ranges.js +28 -23
  280. package/dist/constants/custom-color-ranges.js +12 -12
  281. package/dist/constants/default-settings.js +254 -323
  282. package/dist/constants/index.js +63 -63
  283. package/dist/constants/keyevent.js +4 -4
  284. package/dist/constants/tooltip.js +5 -5
  285. package/dist/constants/user-feedbacks.js +5 -9
  286. package/dist/constants/user-guides.js +10 -10
  287. package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +63 -37
  288. package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +56 -52
  289. package/dist/deckgl-layers/cluster-layer/cluster-layer.js +168 -165
  290. package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +43 -24
  291. package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +40 -27
  292. package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +40 -27
  293. package/dist/deckgl-layers/layer-utils/cluster-utils.js +68 -60
  294. package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +282 -276
  295. package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
  296. package/dist/deckgl-layers/line-layer/line-layer.js +70 -62
  297. package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +51 -37
  298. package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +85 -65
  299. package/dist/index.js +16 -15
  300. package/dist/layers/aggregation-layer.js +331 -299
  301. package/dist/layers/arc-layer/arc-layer-icon.js +41 -27
  302. package/dist/layers/arc-layer/arc-layer.js +201 -174
  303. package/dist/layers/base-layer.js +1544 -1371
  304. package/dist/layers/cluster-layer/cluster-layer-icon.js +44 -30
  305. package/dist/layers/cluster-layer/cluster-layer.js +103 -89
  306. package/dist/layers/default-layer-icon.js +53 -39
  307. package/dist/layers/geojson-layer/geojson-layer-icon.js +55 -42
  308. package/dist/layers/geojson-layer/geojson-layer.js +353 -292
  309. package/dist/layers/geojson-layer/geojson-utils.js +36 -31
  310. package/dist/layers/grid-layer/grid-layer-icon.js +100 -87
  311. package/dist/layers/grid-layer/grid-layer.js +61 -51
  312. package/dist/layers/grid-layer/grid-utils.js +9 -13
  313. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +35 -21
  314. package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +260 -225
  315. package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
  316. package/dist/layers/heatmap-layer/heatmap-layer-icon.js +52 -39
  317. package/dist/layers/heatmap-layer/heatmap-layer.js +171 -140
  318. package/dist/layers/hexagon-layer/hexagon-layer-icon.js +64 -51
  319. package/dist/layers/hexagon-layer/hexagon-layer.js +63 -49
  320. package/dist/layers/hexagon-layer/hexagon-utils.js +14 -15
  321. package/dist/layers/icon-layer/icon-info-modal.js +75 -82
  322. package/dist/layers/icon-layer/icon-layer-icon.js +37 -24
  323. package/dist/layers/icon-layer/icon-layer.js +303 -274
  324. package/dist/layers/index.js +29 -43
  325. package/dist/layers/layer-factory.js +41 -25
  326. package/dist/layers/layer-text-label.js +23 -21
  327. package/dist/layers/layer-update.js +18 -16
  328. package/dist/layers/line-layer/line-layer-icon.js +43 -30
  329. package/dist/layers/line-layer/line-layer.js +142 -123
  330. package/dist/layers/mapbox-utils.js +62 -61
  331. package/dist/layers/mapboxgl-layer.js +169 -124
  332. package/dist/layers/point-layer/point-layer-icon.js +59 -45
  333. package/dist/layers/point-layer/point-layer.js +386 -355
  334. package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +238 -208
  335. package/dist/layers/s2-geometry-layer/s2-layer-icon.js +35 -21
  336. package/dist/layers/s2-geometry-layer/s2-utils.js +8 -9
  337. package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +25 -24
  338. package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +115 -102
  339. package/dist/layers/scenegraph-layer/scenegraph-layer.js +172 -148
  340. package/dist/layers/trip-layer/trip-info-modal.js +30 -50
  341. package/dist/layers/trip-layer/trip-layer-icon.js +53 -40
  342. package/dist/layers/trip-layer/trip-layer.js +307 -239
  343. package/dist/layers/trip-layer/trip-utils.js +50 -34
  344. package/dist/layers/types.js +2 -2
  345. package/dist/localization/formatted-message.js +10 -8
  346. package/dist/localization/index.js +7 -7
  347. package/dist/localization/locales.js +9 -6
  348. package/dist/localization/messages.js +10 -13
  349. package/dist/localization/translations/ca.js +13 -11
  350. package/dist/localization/translations/cn.js +13 -11
  351. package/dist/localization/translations/en.js +13 -11
  352. package/dist/localization/translations/es.js +13 -11
  353. package/dist/localization/translations/fi.js +13 -11
  354. package/dist/localization/translations/ja.js +13 -11
  355. package/dist/localization/translations/pt.js +13 -11
  356. package/dist/localization/translations/ru.js +13 -11
  357. package/dist/middleware/index.js +5 -3
  358. package/dist/processors/data-processor.js +201 -164
  359. package/dist/processors/file-handler.js +233 -111
  360. package/dist/processors/index.js +4 -4
  361. package/dist/reducers/combined-updaters.js +41 -41
  362. package/dist/reducers/composer-helpers.js +45 -20
  363. package/dist/reducers/composers.js +8 -9
  364. package/dist/reducers/core.js +35 -31
  365. package/dist/reducers/index.js +22 -21
  366. package/dist/reducers/map-state-updaters.js +47 -65
  367. package/dist/reducers/map-state.js +15 -23
  368. package/dist/reducers/map-style-updaters.js +159 -233
  369. package/dist/reducers/map-style.js +16 -30
  370. package/dist/reducers/provider-state-updaters.js +229 -217
  371. package/dist/reducers/provider-state.js +17 -29
  372. package/dist/reducers/root.js +58 -86
  373. package/dist/reducers/ui-state-updaters.js +218 -337
  374. package/dist/reducers/ui-state.js +16 -45
  375. package/dist/reducers/vis-state-merger.js +209 -205
  376. package/dist/reducers/vis-state-selectors.js +19 -5
  377. package/dist/reducers/vis-state-updaters.js +876 -1003
  378. package/dist/reducers/vis-state.js +16 -75
  379. package/dist/schemas/dataset-schema.js +108 -84
  380. package/dist/schemas/index.js +29 -28
  381. package/dist/schemas/map-state-schema.js +18 -21
  382. package/dist/schemas/map-style-schema.js +55 -47
  383. package/dist/schemas/schema-manager.js +161 -147
  384. package/dist/schemas/schema-utils.js +9 -8
  385. package/dist/schemas/schema.js +87 -72
  386. package/dist/schemas/versions.js +3 -3
  387. package/dist/schemas/vis-state-schema.js +583 -441
  388. package/dist/styles/base.js +1021 -1217
  389. package/dist/styles/index.js +3 -3
  390. package/dist/styles/media-breakpoints.js +18 -23
  391. package/dist/tasks/tasks.js +39 -36
  392. package/dist/templates/export-map-html.js +4 -233
  393. package/dist/utils/aggregate-utils.js +16 -13
  394. package/dist/utils/color-utils.js +37 -29
  395. package/dist/utils/custom-scales.js +3 -3
  396. package/dist/utils/data-scale-utils.js +13 -6
  397. package/dist/utils/data-utils.js +83 -60
  398. package/dist/utils/dataset-utils.js +77 -48
  399. package/dist/utils/dom-to-image.js +163 -108
  400. package/dist/utils/dom-utils.js +105 -88
  401. package/dist/utils/export-utils.js +103 -116
  402. package/dist/utils/filter-utils.js +374 -379
  403. package/dist/utils/gl-utils.js +15 -16
  404. package/dist/utils/gpu-filter-utils.js +73 -54
  405. package/dist/utils/index.js +48 -47
  406. package/dist/utils/interaction-utils.js +46 -53
  407. package/dist/utils/layer-utils.js +78 -89
  408. package/dist/utils/locale-utils.js +16 -24
  409. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +76 -67
  410. package/dist/utils/map-style-utils/mapbox-utils.js +3 -4
  411. package/dist/utils/mapbox-utils.js +4 -3
  412. package/dist/utils/notifications-utils.js +38 -33
  413. package/dist/utils/observe-dimensions.js +54 -42
  414. package/dist/utils/projection-utils.js +11 -14
  415. package/dist/utils/split-map-utils.js +33 -30
  416. package/dist/utils/table-utils/data-container-utils.js +14 -15
  417. package/dist/utils/table-utils/data-row.js +65 -58
  418. package/dist/utils/table-utils/index.js +2 -2
  419. package/dist/utils/table-utils/indexed-data-container.js +173 -105
  420. package/dist/utils/table-utils/kepler-table.js +386 -362
  421. package/dist/utils/table-utils/row-data-container.js +164 -99
  422. package/dist/utils/utils.js +30 -29
  423. package/package.json +1 -1
@@ -4,8 +4,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.pointVisConfigs = exports.iconRequiredColumns = exports.iconPosAccessor = exports.iconOptionalColumns = exports.iconAccessor = exports.default = exports.SVG_ICON_URL = void 0;
7
+ exports.pointVisConfigs = exports.iconRequiredColumns = exports.iconPosAccessor = exports.iconOptionalColumns = exports.iconAccessor = exports["default"] = exports.SVG_ICON_URL = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
9
16
  var _window = _interopRequireDefault(require("global/window"));
10
17
  var _extensions = require("@deck.gl/extensions");
11
18
  var _svgIconLayer = _interopRequireDefault(require("../../deckgl-layers/svg-icon-layer/svg-icon-layer"));
@@ -14,7 +21,11 @@ var _defaultSettings = require("../../constants/default-settings");
14
21
  var _iconInfoModal = _interopRequireDefault(require("./icon-info-modal"));
15
22
  var _baseLayer = _interopRequireDefault(require("../base-layer"));
16
23
  var _layerTextLabel = require("../layer-text-label");
17
- // Copyright (c) 2022 Uber Technologies, Inc.
24
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
27
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
28
+ function _superPropGet(t, e, o, r) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & r ? t.prototype : t), e, o); return 2 & r && "function" == typeof p ? function (t) { return p.apply(o, t); } : p; } // Copyright (c) 2022 Uber Technologies, Inc.
18
29
  //
19
30
  // Permission is hereby granted, free of charge, to any person obtaining a copy
20
31
  // of this software and associated documentation files (the "Software"), to deal
@@ -33,28 +44,29 @@ var _layerTextLabel = require("../layer-text-label");
33
44
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34
45
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
35
46
  // THE SOFTWARE.
36
-
37
- const brushingExtension = new _extensions.BrushingExtension();
38
- const SVG_ICON_URL = exports.SVG_ICON_URL = `${_defaultSettings.CLOUDFRONT}/icons/svg-icons.json`;
39
- const iconPosAccessor = _ref => {
40
- let {
41
- lat,
42
- lng,
43
- altitude
44
- } = _ref;
45
- return dc => d => [dc.valueAt(d.index, lng.fieldIdx), dc.valueAt(d.index, lat.fieldIdx), (altitude === null || altitude === void 0 ? void 0 : altitude.fieldIdx) > -1 ? dc.valueAt(d.index, altitude.fieldIdx) : 0];
47
+ var brushingExtension = new _extensions.BrushingExtension();
48
+ var SVG_ICON_URL = exports.SVG_ICON_URL = "".concat(_defaultSettings.CLOUDFRONT, "/icons/svg-icons.json");
49
+ var iconPosAccessor = exports.iconPosAccessor = function iconPosAccessor(_ref) {
50
+ var lat = _ref.lat,
51
+ lng = _ref.lng,
52
+ altitude = _ref.altitude;
53
+ return function (dc) {
54
+ return function (d) {
55
+ return [dc.valueAt(d.index, lng.fieldIdx), dc.valueAt(d.index, lat.fieldIdx), (altitude === null || altitude === void 0 ? void 0 : altitude.fieldIdx) > -1 ? dc.valueAt(d.index, altitude.fieldIdx) : 0];
56
+ };
57
+ };
46
58
  };
47
- exports.iconPosAccessor = iconPosAccessor;
48
- const iconAccessor = _ref2 => {
49
- let {
50
- icon
51
- } = _ref2;
52
- return dc => d => dc.valueAt(d.index, icon.fieldIdx);
59
+ var iconAccessor = exports.iconAccessor = function iconAccessor(_ref2) {
60
+ var icon = _ref2.icon;
61
+ return function (dc) {
62
+ return function (d) {
63
+ return dc.valueAt(d.index, icon.fieldIdx);
64
+ };
65
+ };
53
66
  };
54
- exports.iconAccessor = iconAccessor;
55
- const iconRequiredColumns = exports.iconRequiredColumns = ['lat', 'lng', 'icon'];
56
- const iconOptionalColumns = exports.iconOptionalColumns = ['altitude'];
57
- const pointVisConfigs = exports.pointVisConfigs = {
67
+ var iconRequiredColumns = exports.iconRequiredColumns = ['lat', 'lng', 'icon'];
68
+ var iconOptionalColumns = exports.iconOptionalColumns = ['altitude'];
69
+ var pointVisConfigs = exports.pointVisConfigs = {
58
70
  radius: 'radius',
59
71
  fixedRadius: 'fixedRadius',
60
72
  opacity: 'opacity',
@@ -63,275 +75,292 @@ const pointVisConfigs = exports.pointVisConfigs = {
63
75
  };
64
76
  function flatterIconPositions(icon) {
65
77
  // had to flip y, since @luma modal has changed
66
- return icon.mesh.cells.reduce((prev, cell) => {
67
- cell.forEach(p => {
68
- prev.push(...[icon.mesh.positions[p][0], -icon.mesh.positions[p][1], icon.mesh.positions[p][2]]);
78
+ return icon.mesh.cells.reduce(function (prev, cell) {
79
+ cell.forEach(function (p) {
80
+ prev.push.apply(prev, [icon.mesh.positions[p][0], -icon.mesh.positions[p][1], icon.mesh.positions[p][2]]);
69
81
  });
70
82
  return prev;
71
83
  }, []);
72
84
  }
73
- class IconLayer extends _baseLayer.default {
74
- constructor() {
75
- let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
76
- super(props);
77
- (0, _defineProperty2.default)(this, "getIconAccessor", void 0);
78
- (0, _defineProperty2.default)(this, "_layerInfoModal", void 0);
79
- (0, _defineProperty2.default)(this, "iconGeometry", void 0);
80
- this.registerVisConfig(pointVisConfigs);
81
- this.getPositionAccessor = dataContainer => iconPosAccessor(this.config.columns)(dataContainer);
82
- this.getIconAccessor = dataContainer => iconAccessor(this.config.columns)(dataContainer);
83
-
84
- // prepare layer info modal
85
- this._layerInfoModal = (0, _iconInfoModal.default)();
86
- this.iconGeometry = props.iconGeometry || null;
87
- this.getSvgIcons();
88
- }
89
- get type() {
90
- return 'icon';
91
- }
92
- get requiredLayerColumns() {
93
- return iconRequiredColumns;
94
- }
95
- get optionalColumns() {
96
- return iconOptionalColumns;
97
- }
98
- get columnPairs() {
99
- return this.defaultPointColumnPairs;
100
- }
101
- get layerIcon() {
102
- return _iconLayerIcon.default;
103
- }
104
- get visualChannels() {
105
- return {
106
- color: {
107
- ...super.visualChannels.color,
108
- accessor: 'getFillColor',
109
- defaultValue: config => config.color
110
- },
111
- size: {
112
- ...super.visualChannels.size,
113
- property: 'radius',
114
- range: 'radiusRange',
115
- channelScaleType: 'radius',
116
- accessor: 'getRadius',
117
- defaultValue: 1
118
- }
85
+ var IconLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
86
+ function IconLayer() {
87
+ var _this;
88
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
89
+ (0, _classCallCheck2["default"])(this, IconLayer);
90
+ _this = _callSuper(this, IconLayer, [props]);
91
+ _this.registerVisConfig(pointVisConfigs);
92
+ _this.getPositionAccessor = function (dataContainer) {
93
+ return iconPosAccessor(_this.config.columns)(dataContainer);
119
94
  };
120
- }
121
- get layerInfoModal() {
122
- return {
123
- id: 'iconInfo',
124
- template: this._layerInfoModal,
125
- modalProps: {
126
- title: 'modal.iconInfo.title'
127
- }
95
+ _this.getIconAccessor = function (dataContainer) {
96
+ return iconAccessor(_this.config.columns)(dataContainer);
128
97
  };
98
+
99
+ // prepare layer info modal
100
+ _this._layerInfoModal = (0, _iconInfoModal["default"])();
101
+ _this.iconGeometry = props.iconGeometry || null;
102
+ _this.getSvgIcons();
103
+ return _this;
129
104
  }
130
- getSvgIcons() {
131
- var _this = this;
132
- const fetchConfig = {
133
- method: 'GET',
134
- mode: 'cors',
135
- cache: 'no-cache'
136
- };
137
- if (_window.default.fetch) {
138
- _window.default.fetch(SVG_ICON_URL, fetchConfig).then(response => response.json()).then(function () {
139
- let parsed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
140
- const {
141
- svgIcons = []
142
- } = parsed;
143
- _this.iconGeometry = svgIcons.reduce((accu, curr) => ({
144
- ...accu,
145
- [curr.id]: flatterIconPositions(curr)
146
- }), {});
147
- _this._layerInfoModal = (0, _iconInfoModal.default)(svgIcons);
148
- });
105
+ (0, _inherits2["default"])(IconLayer, _Layer);
106
+ return (0, _createClass2["default"])(IconLayer, [{
107
+ key: "type",
108
+ get: function get() {
109
+ return 'icon';
149
110
  }
150
- }
151
- static findDefaultLayerProps(_ref3) {
152
- let {
153
- fieldPairs = [],
154
- fields = []
155
- } = _ref3;
156
- const notFound = {
157
- props: []
158
- };
159
- if (!fieldPairs.length || !fields.length) {
160
- return notFound;
111
+ }, {
112
+ key: "requiredLayerColumns",
113
+ get: function get() {
114
+ return iconRequiredColumns;
161
115
  }
162
- const iconFields = fields.filter(_ref4 => {
163
- let {
164
- name
165
- } = _ref4;
166
- return name.replace(/[_,.]+/g, ' ').trim().split(' ').some(seg => _defaultSettings.ICON_FIELDS.icon.some(t => t.includes(seg)));
167
- });
168
- if (!iconFields.length) {
169
- return notFound;
116
+ }, {
117
+ key: "optionalColumns",
118
+ get: function get() {
119
+ return iconOptionalColumns;
170
120
  }
171
-
172
- // create icon layers for first point pair
173
- const ptPair = fieldPairs[0];
174
- const props = iconFields.map(iconField => ({
175
- label: iconField.name.replace(/[_,.]+/g, ' ').trim(),
176
- columns: {
177
- lat: ptPair.pair.lat,
178
- lng: ptPair.pair.lng,
179
- icon: {
180
- value: iconField.name,
181
- fieldIdx: iconField.fieldIdx
121
+ }, {
122
+ key: "columnPairs",
123
+ get: function get() {
124
+ return this.defaultPointColumnPairs;
125
+ }
126
+ }, {
127
+ key: "layerIcon",
128
+ get: function get() {
129
+ return _iconLayerIcon["default"];
130
+ }
131
+ }, {
132
+ key: "visualChannels",
133
+ get: function get() {
134
+ return {
135
+ color: _objectSpread(_objectSpread({}, _superPropGet(IconLayer, "visualChannels", this, 1).color), {}, {
136
+ accessor: 'getFillColor',
137
+ defaultValue: function defaultValue(config) {
138
+ return config.color;
139
+ }
140
+ }),
141
+ size: _objectSpread(_objectSpread({}, _superPropGet(IconLayer, "visualChannels", this, 1).size), {}, {
142
+ property: 'radius',
143
+ range: 'radiusRange',
144
+ channelScaleType: 'radius',
145
+ accessor: 'getRadius',
146
+ defaultValue: 1
147
+ })
148
+ };
149
+ }
150
+ }, {
151
+ key: "layerInfoModal",
152
+ get: function get() {
153
+ return {
154
+ id: 'iconInfo',
155
+ template: this._layerInfoModal,
156
+ modalProps: {
157
+ title: 'modal.iconInfo.title'
182
158
  }
183
- },
184
- isVisible: true
185
- }));
186
- return {
187
- props
188
- };
189
- }
190
- calculateDataAttribute(_ref5, getPosition) {
191
- let {
192
- dataContainer,
193
- filteredIndex
194
- } = _ref5;
195
- const getIcon = this.getIconAccessor(dataContainer);
196
- const data = [];
197
- for (let i = 0; i < filteredIndex.length; i++) {
198
- const index = filteredIndex[i];
199
- const rowIndex = {
200
- index
201
159
  };
202
- const pos = getPosition(rowIndex);
203
- const icon = getIcon(rowIndex);
204
-
205
- // if doesn't have point lat or lng, do not add the point
206
- // deck.gl can't handle position = null
207
- if (pos.every(Number.isFinite) && typeof icon === 'string') {
208
- data.push({
209
- index,
210
- icon
160
+ }
161
+ }, {
162
+ key: "getSvgIcons",
163
+ value: function getSvgIcons() {
164
+ var _this2 = this;
165
+ var fetchConfig = {
166
+ method: 'GET',
167
+ mode: 'cors',
168
+ cache: 'no-cache'
169
+ };
170
+ if (_window["default"].fetch) {
171
+ _window["default"].fetch(SVG_ICON_URL, fetchConfig).then(function (response) {
172
+ return response.json();
173
+ }).then(function () {
174
+ var parsed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
175
+ var _parsed$svgIcons = parsed.svgIcons,
176
+ svgIcons = _parsed$svgIcons === void 0 ? [] : _parsed$svgIcons;
177
+ _this2.iconGeometry = svgIcons.reduce(function (accu, curr) {
178
+ return _objectSpread(_objectSpread({}, accu), {}, (0, _defineProperty2["default"])({}, curr.id, flatterIconPositions(curr)));
179
+ }, {});
180
+ _this2._layerInfoModal = (0, _iconInfoModal["default"])(svgIcons);
211
181
  });
212
182
  }
213
183
  }
214
- return data;
215
- }
216
- formatLayerData(datasets, oldLayerData) {
217
- if (this.config.dataId === null) {
218
- return {};
184
+ }, {
185
+ key: "calculateDataAttribute",
186
+ value: function calculateDataAttribute(_ref3, getPosition) {
187
+ var dataContainer = _ref3.dataContainer,
188
+ filteredIndex = _ref3.filteredIndex;
189
+ var getIcon = this.getIconAccessor(dataContainer);
190
+ var data = [];
191
+ for (var i = 0; i < filteredIndex.length; i++) {
192
+ var index = filteredIndex[i];
193
+ var rowIndex = {
194
+ index: index
195
+ };
196
+ var pos = getPosition(rowIndex);
197
+ var icon = getIcon(rowIndex);
198
+
199
+ // if doesn't have point lat or lng, do not add the point
200
+ // deck.gl can't handle position = null
201
+ if (pos.every(Number.isFinite) && typeof icon === 'string') {
202
+ data.push({
203
+ index: index,
204
+ icon: icon
205
+ });
206
+ }
207
+ }
208
+ return data;
219
209
  }
220
- const {
221
- textLabel
222
- } = this.config;
223
- const {
224
- gpuFilter,
225
- dataContainer
226
- } = datasets[this.config.dataId];
227
- const getPosition = this.getPositionAccessor(dataContainer);
228
- const {
229
- data,
230
- triggerChanged
231
- } = this.updateData(datasets, oldLayerData);
210
+ }, {
211
+ key: "formatLayerData",
212
+ value: function formatLayerData(datasets, oldLayerData) {
213
+ if (this.config.dataId === null) {
214
+ return {};
215
+ }
216
+ var textLabel = this.config.textLabel;
217
+ var _datasets$this$config = datasets[this.config.dataId],
218
+ gpuFilter = _datasets$this$config.gpuFilter,
219
+ dataContainer = _datasets$this$config.dataContainer;
220
+ var getPosition = this.getPositionAccessor(dataContainer);
221
+ var _this$updateData = this.updateData(datasets, oldLayerData),
222
+ data = _this$updateData.data,
223
+ triggerChanged = _this$updateData.triggerChanged;
232
224
 
233
- // get all distinct characters in the text labels
234
- const textLabels = (0, _layerTextLabel.formatTextLabelData)({
235
- textLabel,
236
- // @ts-expect-error
237
- triggerChanged,
238
- oldLayerData,
239
- data,
240
- dataContainer
241
- });
242
- const accessors = this.getAttributeAccessors({
243
- dataContainer
244
- });
245
- return {
246
- data,
247
- getPosition,
248
- getFilterValue: gpuFilter.filterValueAccessor(dataContainer)(),
249
- textLabels,
250
- ...accessors
251
- };
252
- }
253
- updateLayerMeta(dataContainer, getPosition) {
254
- const bounds = this.getPointsBounds(dataContainer, getPosition);
255
- this.updateMeta({
256
- bounds
257
- });
258
- }
259
- renderLayer(opts) {
260
- var _this$config$columns$;
261
- const {
262
- data,
263
- gpuFilter,
264
- objectHovered,
265
- interactionConfig
266
- } = opts;
267
- const radiusScale = this.getRadiusScale();
268
- const layerProps = {
269
- radiusScale,
270
- radiusUnits: 'pixels',
271
- radiusMaxPixels: 500
272
- };
273
- const updateTriggers = {
274
- getPosition: this.config.columns,
275
- getFilterValue: gpuFilter.filterValueUpdateTriggers,
276
- ...this.getVisualChannelUpdateTriggers()
277
- };
278
- const defaultLayerProps = this.getDefaultDeckLayerProps(opts);
279
- const brushingProps = this.getBrushingExtensionProps(interactionConfig);
280
- const getPixelOffset = (0, _layerTextLabel.getTextOffsetByRadius)(radiusScale, data.getRadius);
281
- const extensions = [...defaultLayerProps.extensions, brushingExtension];
225
+ // get all distinct characters in the text labels
226
+ var textLabels = (0, _layerTextLabel.formatTextLabelData)({
227
+ textLabel: textLabel,
228
+ // @ts-expect-error
229
+ triggerChanged: triggerChanged,
230
+ oldLayerData: oldLayerData,
231
+ data: data,
232
+ dataContainer: dataContainer
233
+ });
234
+ var accessors = this.getAttributeAccessors({
235
+ dataContainer: dataContainer
236
+ });
237
+ return _objectSpread({
238
+ data: data,
239
+ getPosition: getPosition,
240
+ getFilterValue: gpuFilter.filterValueAccessor(dataContainer)(),
241
+ textLabels: textLabels
242
+ }, accessors);
243
+ }
244
+ }, {
245
+ key: "updateLayerMeta",
246
+ value: function updateLayerMeta(dataContainer, getPosition) {
247
+ var bounds = this.getPointsBounds(dataContainer, getPosition);
248
+ this.updateMeta({
249
+ bounds: bounds
250
+ });
251
+ }
252
+ }, {
253
+ key: "renderLayer",
254
+ value: function renderLayer(opts) {
255
+ var _this$config$columns$,
256
+ _this3 = this;
257
+ var data = opts.data,
258
+ gpuFilter = opts.gpuFilter,
259
+ objectHovered = opts.objectHovered,
260
+ interactionConfig = opts.interactionConfig;
261
+ var radiusScale = this.getRadiusScale();
262
+ var layerProps = {
263
+ radiusScale: radiusScale,
264
+ radiusUnits: 'pixels',
265
+ radiusMaxPixels: 500
266
+ };
267
+ var updateTriggers = _objectSpread({
268
+ getPosition: this.config.columns,
269
+ getFilterValue: gpuFilter.filterValueUpdateTriggers
270
+ }, this.getVisualChannelUpdateTriggers());
271
+ var defaultLayerProps = this.getDefaultDeckLayerProps(opts);
272
+ var brushingProps = this.getBrushingExtensionProps(interactionConfig);
273
+ var getPixelOffset = (0, _layerTextLabel.getTextOffsetByRadius)(radiusScale, data.getRadius);
274
+ var extensions = [].concat((0, _toConsumableArray2["default"])(defaultLayerProps.extensions), [brushingExtension]);
282
275
 
283
- // shared Props between layer and label layer
284
- const sharedProps = {
285
- getFilterValue: data.getFilterValue,
286
- extensions,
287
- filterRange: defaultLayerProps.filterRange,
288
- ...brushingProps
289
- };
290
- const labelLayers = [...this.renderTextLabelLayer({
291
- getPosition: data.getPosition,
292
- sharedProps,
276
+ // shared Props between layer and label layer
277
+ var sharedProps = _objectSpread({
278
+ getFilterValue: data.getFilterValue,
279
+ extensions: extensions,
280
+ filterRange: defaultLayerProps.filterRange
281
+ }, brushingProps);
282
+ var labelLayers = (0, _toConsumableArray2["default"])(this.renderTextLabelLayer({
283
+ getPosition: data.getPosition,
284
+ sharedProps: sharedProps,
285
+ // @ts-expect-error
286
+ getPixelOffset: getPixelOffset,
287
+ updateTriggers: updateTriggers
288
+ }, opts));
289
+ var hoveredObject = this.hasHoveredObject(objectHovered);
290
+ var parameters = {
291
+ // icons will be flat on the map when the altitude column is not used
292
+ depthTest: ((_this$config$columns$ = this.config.columns.altitude) === null || _this$config$columns$ === void 0 ? void 0 : _this$config$columns$.fieldIdx) > -1
293
+ };
294
+ return !this.iconGeometry ? [] : [
293
295
  // @ts-expect-error
294
- getPixelOffset,
295
- updateTriggers
296
- }, opts)];
297
- const hoveredObject = this.hasHoveredObject(objectHovered);
298
- const parameters = {
299
- // icons will be flat on the map when the altitude column is not used
300
- depthTest: ((_this$config$columns$ = this.config.columns.altitude) === null || _this$config$columns$ === void 0 ? void 0 : _this$config$columns$.fieldIdx) > -1
301
- };
302
- return !this.iconGeometry ? [] : [
303
- // @ts-expect-error
304
- new _svgIconLayer.default({
305
- ...defaultLayerProps,
306
- ...brushingProps,
307
- ...layerProps,
308
- ...data,
309
- parameters,
310
- getIconGeometry: id => {
311
- var _this$iconGeometry;
312
- return (_this$iconGeometry = this.iconGeometry) === null || _this$iconGeometry === void 0 ? void 0 : _this$iconGeometry[id];
313
- },
314
- // update triggers
315
- updateTriggers,
316
- extensions
317
- }), ...(hoveredObject ? [
318
- // @ts-expect-error SvgIconLayerProps needs getIcon Field
319
- new _svgIconLayer.default({
320
- ...this.getDefaultHoverLayerProps(),
321
- ...layerProps,
322
- data: [hoveredObject],
323
- parameters,
324
- getPosition: data.getPosition,
325
- getRadius: data.getRadius,
326
- getFillColor: this.config.highlightColor,
327
- getIconGeometry: id => {
328
- var _this$iconGeometry2;
329
- return (_this$iconGeometry2 = this.iconGeometry) === null || _this$iconGeometry2 === void 0 ? void 0 : _this$iconGeometry2[id];
296
+ new _svgIconLayer["default"](_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, defaultLayerProps), brushingProps), layerProps), data), {}, {
297
+ parameters: parameters,
298
+ getIconGeometry: function getIconGeometry(id) {
299
+ var _this3$iconGeometry;
300
+ return (_this3$iconGeometry = _this3.iconGeometry) === null || _this3$iconGeometry === void 0 ? void 0 : _this3$iconGeometry[id];
301
+ },
302
+ // update triggers
303
+ updateTriggers: updateTriggers,
304
+ extensions: extensions
305
+ }))].concat((0, _toConsumableArray2["default"])(hoveredObject ? [
306
+ // @ts-expect-error SvgIconLayerProps needs getIcon Field
307
+ new _svgIconLayer["default"](_objectSpread(_objectSpread(_objectSpread({}, this.getDefaultHoverLayerProps()), layerProps), {}, {
308
+ data: [hoveredObject],
309
+ parameters: parameters,
310
+ getPosition: data.getPosition,
311
+ getRadius: data.getRadius,
312
+ getFillColor: this.config.highlightColor,
313
+ getIconGeometry: function getIconGeometry(id) {
314
+ var _this3$iconGeometry2;
315
+ return (_this3$iconGeometry2 = _this3.iconGeometry) === null || _this3$iconGeometry2 === void 0 ? void 0 : _this3$iconGeometry2[id];
316
+ }
317
+ }))] : []), (0, _toConsumableArray2["default"])(labelLayers));
318
+ }
319
+ }], [{
320
+ key: "findDefaultLayerProps",
321
+ value: function findDefaultLayerProps(_ref4) {
322
+ var _ref4$fieldPairs = _ref4.fieldPairs,
323
+ fieldPairs = _ref4$fieldPairs === void 0 ? [] : _ref4$fieldPairs,
324
+ _ref4$fields = _ref4.fields,
325
+ fields = _ref4$fields === void 0 ? [] : _ref4$fields;
326
+ var notFound = {
327
+ props: []
328
+ };
329
+ if (!fieldPairs.length || !fields.length) {
330
+ return notFound;
330
331
  }
331
- })] : []),
332
- // text label layer
333
- ...labelLayers];
334
- }
335
- }
336
- exports.default = IconLayer;
337
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZXh0ZW5zaW9ucyIsIl9zdmdJY29uTGF5ZXIiLCJfaWNvbkxheWVySWNvbiIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfaWNvbkluZm9Nb2RhbCIsIl9iYXNlTGF5ZXIiLCJfbGF5ZXJUZXh0TGFiZWwiLCJicnVzaGluZ0V4dGVuc2lvbiIsIkJydXNoaW5nRXh0ZW5zaW9uIiwiU1ZHX0lDT05fVVJMIiwiZXhwb3J0cyIsIkNMT1VERlJPTlQiLCJpY29uUG9zQWNjZXNzb3IiLCJfcmVmIiwibGF0IiwibG5nIiwiYWx0aXR1ZGUiLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImljb25BY2Nlc3NvciIsIl9yZWYyIiwiaWNvbiIsImljb25SZXF1aXJlZENvbHVtbnMiLCJpY29uT3B0aW9uYWxDb2x1bW5zIiwicG9pbnRWaXNDb25maWdzIiwicmFkaXVzIiwiZml4ZWRSYWRpdXMiLCJvcGFjaXR5IiwiY29sb3JSYW5nZSIsInJhZGl1c1JhbmdlIiwiZmxhdHRlckljb25Qb3NpdGlvbnMiLCJtZXNoIiwiY2VsbHMiLCJyZWR1Y2UiLCJwcmV2IiwiY2VsbCIsImZvckVhY2giLCJwIiwicHVzaCIsInBvc2l0aW9ucyIsIkljb25MYXllciIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZhdWx0IiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJnZXRJY29uQWNjZXNzb3IiLCJfbGF5ZXJJbmZvTW9kYWwiLCJJY29uSW5mb01vZGFsRmFjdG9yeSIsImljb25HZW9tZXRyeSIsImdldFN2Z0ljb25zIiwidHlwZSIsInJlcXVpcmVkTGF5ZXJDb2x1bW5zIiwib3B0aW9uYWxDb2x1bW5zIiwiY29sdW1uUGFpcnMiLCJkZWZhdWx0UG9pbnRDb2x1bW5QYWlycyIsImxheWVySWNvbiIsIkljb25MYXllckljb24iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJkZWZhdWx0VmFsdWUiLCJzaXplIiwicHJvcGVydHkiLCJyYW5nZSIsImNoYW5uZWxTY2FsZVR5cGUiLCJsYXllckluZm9Nb2RhbCIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJfdGhpcyIsImZldGNoQ29uZmlnIiwibWV0aG9kIiwibW9kZSIsImNhY2hlIiwid2luZG93IiwiZmV0Y2giLCJ0aGVuIiwicmVzcG9uc2UiLCJqc29uIiwicGFyc2VkIiwic3ZnSWNvbnMiLCJhY2N1IiwiY3VyciIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsIl9yZWYzIiwiZmllbGRQYWlycyIsImZpZWxkcyIsIm5vdEZvdW5kIiwiaWNvbkZpZWxkcyIsImZpbHRlciIsIl9yZWY0IiwibmFtZSIsInJlcGxhY2UiLCJ0cmltIiwic3BsaXQiLCJzb21lIiwic2VnIiwiSUNPTl9GSUVMRFMiLCJ0IiwiaW5jbHVkZXMiLCJwdFBhaXIiLCJtYXAiLCJpY29uRmllbGQiLCJsYWJlbCIsInBhaXIiLCJ2YWx1ZSIsImlzVmlzaWJsZSIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJfcmVmNSIsImdldFBvc2l0aW9uIiwiZmlsdGVyZWRJbmRleCIsImdldEljb24iLCJkYXRhIiwiaSIsInJvd0luZGV4IiwicG9zIiwiZXZlcnkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiZGF0YUlkIiwidGV4dExhYmVsIiwiZ3B1RmlsdGVyIiwidHJpZ2dlckNoYW5nZWQiLCJ1cGRhdGVEYXRhIiwidGV4dExhYmVscyIsImZvcm1hdFRleHRMYWJlbERhdGEiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJ1cGRhdGVMYXllck1ldGEiLCJib3VuZHMiLCJnZXRQb2ludHNCb3VuZHMiLCJ1cGRhdGVNZXRhIiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiX3RoaXMkY29uZmlnJGNvbHVtbnMkIiwib2JqZWN0SG92ZXJlZCIsImludGVyYWN0aW9uQ29uZmlnIiwicmFkaXVzU2NhbGUiLCJnZXRSYWRpdXNTY2FsZSIsImxheWVyUHJvcHMiLCJyYWRpdXNVbml0cyIsInJhZGl1c01heFBpeGVscyIsInVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsImRlZmF1bHRMYXllclByb3BzIiwiZ2V0RGVmYXVsdERlY2tMYXllclByb3BzIiwiYnJ1c2hpbmdQcm9wcyIsImdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMiLCJnZXRQaXhlbE9mZnNldCIsImdldFRleHRPZmZzZXRCeVJhZGl1cyIsImdldFJhZGl1cyIsImV4dGVuc2lvbnMiLCJzaGFyZWRQcm9wcyIsImZpbHRlclJhbmdlIiwibGFiZWxMYXllcnMiLCJyZW5kZXJUZXh0TGFiZWxMYXllciIsImhvdmVyZWRPYmplY3QiLCJoYXNIb3ZlcmVkT2JqZWN0IiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsIlN2Z0ljb25MYXllciIsImdldEljb25HZW9tZXRyeSIsIl90aGlzJGljb25HZW9tZXRyeSIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJnZXRGaWxsQ29sb3IiLCJoaWdobGlnaHRDb2xvciIsIl90aGlzJGljb25HZW9tZXRyeTIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGF5ZXJzL2ljb24tbGF5ZXIvaWNvbi1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgd2luZG93IGZyb20gJ2dsb2JhbC93aW5kb3cnO1xuaW1wb3J0IHtCcnVzaGluZ0V4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5cbmltcG9ydCBTdmdJY29uTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy9zdmctaWNvbi1sYXllci9zdmctaWNvbi1sYXllcic7XG5pbXBvcnQgSWNvbkxheWVySWNvbiBmcm9tICcuL2ljb24tbGF5ZXItaWNvbic7XG5pbXBvcnQge0lDT05fRklFTERTLCBDTE9VREZST05UfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQgSWNvbkluZm9Nb2RhbEZhY3RvcnkgZnJvbSAnLi9pY29uLWluZm8tbW9kYWwnO1xuaW1wb3J0IExheWVyLCB7TGF5ZXJCYXNlQ29uZmlnLCBMYXllckNvbHVtbn0gZnJvbSAnLi4vYmFzZS1sYXllcic7XG5pbXBvcnQge2dldFRleHRPZmZzZXRCeVJhZGl1cywgZm9ybWF0VGV4dExhYmVsRGF0YX0gZnJvbSAnLi4vbGF5ZXItdGV4dC1sYWJlbCc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5pbXBvcnQge1xuICBWaXNDb25maWdCb29sZWFuLFxuICBWaXNDb25maWdDb2xvclJhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIFZpc0NvbmZpZ1JhbmdlXG59IGZyb20gJy4uL2xheWVyLWZhY3RvcnknO1xuaW1wb3J0IHtDb2xvclJhbmdlfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29sb3ItcmFuZ2VzJztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uLy4uL3JlZHVjZXJzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyQ29sdW1uc0NvbmZpZyA9IHtcbiAgbGF0OiBMYXllckNvbHVtbjtcbiAgbG5nOiBMYXllckNvbHVtbjtcbiAgYWx0aXR1ZGU6IExheWVyQ29sdW1uO1xuICBpY29uOiBMYXllckNvbHVtbjtcbn07XG5cbnR5cGUgSWNvbkdlb21ldHJ5ID0ge30gfCBudWxsO1xuXG5leHBvcnQgdHlwZSBJY29uTGF5ZXJWaXNDb25maWdTZXR0aW5ncyA9IHtcbiAgcmFkaXVzOiBWaXNDb25maWdOdW1iZXI7XG4gIGZpeGVkUmFkaXVzOiBWaXNDb25maWdCb29sZWFuO1xuICBvcGFjaXR5OiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBWaXNDb25maWdSYW5nZTtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25MYXllclZpc0NvbmZpZyA9IHtcbiAgcmFkaXVzOiBudW1iZXI7XG4gIGZpeGVkUmFkaXVzOiBib29sZWFuO1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2U7XG4gIHJhZGl1c1JhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xufTtcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbHVtbnM6IEljb25MYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogSWNvbkxheWVyVmlzQ29uZmlnfVxuPjtcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyRGF0YSA9IHtpbmRleDogbnVtYmVyOyBpY29uOiBzdHJpbmd9O1xuXG5jb25zdCBicnVzaGluZ0V4dGVuc2lvbiA9IG5ldyBCcnVzaGluZ0V4dGVuc2lvbigpO1xuXG5leHBvcnQgY29uc3QgU1ZHX0lDT05fVVJMID0gYCR7Q0xPVURGUk9OVH0vaWNvbnMvc3ZnLWljb25zLmpzb25gO1xuXG5leHBvcnQgY29uc3QgaWNvblBvc0FjY2Vzc29yID0gKHtsYXQsIGxuZywgYWx0aXR1ZGV9OiBJY29uTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PiAoXG4gIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlXG4pID0+IGQgPT4gW1xuICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxuZy5maWVsZElkeCksXG4gIGRjLnZhbHVlQXQoZC5pbmRleCwgbGF0LmZpZWxkSWR4KSxcbiAgYWx0aXR1ZGU/LmZpZWxkSWR4ID4gLTEgPyBkYy52YWx1ZUF0KGQuaW5kZXgsIGFsdGl0dWRlLmZpZWxkSWR4KSA6IDBcbl07XG5cbmV4cG9ydCBjb25zdCBpY29uQWNjZXNzb3IgPSAoe2ljb259OiBJY29uTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PiAoZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IGQgPT5cbiAgZGMudmFsdWVBdChkLmluZGV4LCBpY29uLmZpZWxkSWR4KTtcblxuZXhwb3J0IGNvbnN0IGljb25SZXF1aXJlZENvbHVtbnM6IFsnbGF0JywgJ2xuZycsICdpY29uJ10gPSBbJ2xhdCcsICdsbmcnLCAnaWNvbiddO1xuZXhwb3J0IGNvbnN0IGljb25PcHRpb25hbENvbHVtbnM6IFsnYWx0aXR1ZGUnXSA9IFsnYWx0aXR1ZGUnXTtcblxuZXhwb3J0IGNvbnN0IHBvaW50VmlzQ29uZmlnczoge1xuICByYWRpdXM6ICdyYWRpdXMnO1xuICBmaXhlZFJhZGl1czogJ2ZpeGVkUmFkaXVzJztcbiAgb3BhY2l0eTogJ29wYWNpdHknO1xuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZSc7XG4gIHJhZGl1c1JhbmdlOiAncmFkaXVzUmFuZ2UnO1xufSA9IHtcbiAgcmFkaXVzOiAncmFkaXVzJyxcbiAgZml4ZWRSYWRpdXM6ICdmaXhlZFJhZGl1cycsXG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJ1xufTtcblxuZnVuY3Rpb24gZmxhdHRlckljb25Qb3NpdGlvbnMoaWNvbikge1xuICAvLyBoYWQgdG8gZmxpcCB5LCBzaW5jZSBAbHVtYSBtb2RhbCBoYXMgY2hhbmdlZFxuICByZXR1cm4gaWNvbi5tZXNoLmNlbGxzLnJlZHVjZSgocHJldiwgY2VsbCkgPT4ge1xuICAgIGNlbGwuZm9yRWFjaChwID0+IHtcbiAgICAgIHByZXYucHVzaChcbiAgICAgICAgLi4uW2ljb24ubWVzaC5wb3NpdGlvbnNbcF1bMF0sIC1pY29uLm1lc2gucG9zaXRpb25zW3BdWzFdLCBpY29uLm1lc2gucG9zaXRpb25zW3BdWzJdXVxuICAgICAgKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJldjtcbiAgfSwgW10pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJY29uTGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGdldEljb25BY2Nlc3NvcjogKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IChkOiBhbnkpID0+IGFueTtcbiAgX2xheWVySW5mb01vZGFsOiAoKSA9PiBKU1guRWxlbWVudDtcbiAgaWNvbkdlb21ldHJ5OiBJY29uR2VvbWV0cnk7XG5cbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogSWNvbkxheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBJY29uTGF5ZXJDb25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvcHM6IHtcbiAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgaWNvbkdlb21ldHJ5PzogSWNvbkdlb21ldHJ5O1xuICAgIH0gJiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4gPSB7fVxuICApIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKHBvaW50VmlzQ29uZmlncyk7XG4gICAgdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yID0gKGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+XG4gICAgICBpY29uUG9zQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG4gICAgdGhpcy5nZXRJY29uQWNjZXNzb3IgPSBkYXRhQ29udGFpbmVyID0+IGljb25BY2Nlc3Nvcih0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcblxuICAgIC8vIHByZXBhcmUgbGF5ZXIgaW5mbyBtb2RhbFxuICAgIHRoaXMuX2xheWVySW5mb01vZGFsID0gSWNvbkluZm9Nb2RhbEZhY3RvcnkoKTtcbiAgICB0aGlzLmljb25HZW9tZXRyeSA9IHByb3BzLmljb25HZW9tZXRyeSB8fCBudWxsO1xuICAgIHRoaXMuZ2V0U3ZnSWNvbnMoKTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6ICdpY29uJyB7XG4gICAgcmV0dXJuICdpY29uJztcbiAgfVxuXG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gaWNvblJlcXVpcmVkQ29sdW1ucztcbiAgfVxuXG4gIGdldCBvcHRpb25hbENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGljb25PcHRpb25hbENvbHVtbnM7XG4gIH1cblxuICBnZXQgY29sdW1uUGFpcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvaW50Q29sdW1uUGFpcnM7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBJY29uTGF5ZXJJY29uO1xuICB9XG5cbiAgZ2V0IHZpc3VhbENoYW5uZWxzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjoge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRGaWxsQ29sb3InLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIC4uLnN1cGVyLnZpc3VhbENoYW5uZWxzLnNpemUsXG4gICAgICAgIHByb3BlcnR5OiAncmFkaXVzJyxcbiAgICAgICAgcmFuZ2U6ICdyYWRpdXNSYW5nZScsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6ICdyYWRpdXMnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFJhZGl1cycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXQgbGF5ZXJJbmZvTW9kYWwoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiAnaWNvbkluZm8nLFxuICAgICAgdGVtcGxhdGU6IHRoaXMuX2xheWVySW5mb01vZGFsLFxuICAgICAgbW9kYWxQcm9wczoge1xuICAgICAgICB0aXRsZTogJ21vZGFsLmljb25JbmZvLnRpdGxlJ1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXRTdmdJY29ucygpIHtcbiAgICBjb25zdCBmZXRjaENvbmZpZyA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBtb2RlOiAnY29ycycsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG5cbiAgICBpZiAod2luZG93LmZldGNoKSB7XG4gICAgICB3aW5kb3dcbiAgICAgICAgLmZldGNoKFNWR19JQ09OX1VSTCwgZmV0Y2hDb25maWcpXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKHBhcnNlZDoge3N2Z0ljb25zPzogYW55W119ID0ge30pID0+IHtcbiAgICAgICAgICBjb25zdCB7c3ZnSWNvbnMgPSBbXX0gPSBwYXJzZWQ7XG4gICAgICAgICAgdGhpcy5pY29uR2VvbWV0cnkgPSBzdmdJY29ucy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgICAgW2N1cnIuaWRdOiBmbGF0dGVySWNvblBvc2l0aW9ucyhjdXJyKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLl9sYXllckluZm9Nb2RhbCA9IEljb25JbmZvTW9kYWxGYWN0b3J5KHN2Z0ljb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyh7ZmllbGRQYWlycyA9IFtdLCBmaWVsZHMgPSBbXX06IEtlcGxlclRhYmxlKSB7XG4gICAgY29uc3Qgbm90Rm91bmQgPSB7cHJvcHM6IFtdfTtcbiAgICBpZiAoIWZpZWxkUGFpcnMubGVuZ3RoIHx8ICFmaWVsZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbm90Rm91bmQ7XG4gICAgfVxuXG4gICAgY29uc3QgaWNvbkZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKHtuYW1lfSkgPT5cbiAgICAgIG5hbWVcbiAgICAgICAgLnJlcGxhY2UoL1tfLC5dKy9nLCAnICcpXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLnNvbWUoc2VnID0+IElDT05fRklFTERTLmljb24uc29tZSh0ID0+IHQuaW5jbHVkZXMoc2VnKSkpXG4gICAgKTtcblxuICAgIGlmICghaWNvbkZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBub3RGb3VuZDtcbiAgICB9XG5cbiAgICAvLyBjcmVhdGUgaWNvbiBsYXllcnMgZm9yIGZpcnN0IHBvaW50IHBhaXJcbiAgICBjb25zdCBwdFBhaXIgPSBmaWVsZFBhaXJzWzBdO1xuXG4gICAgY29uc3QgcHJvcHMgPSBpY29uRmllbGRzLm1hcChpY29uRmllbGQgPT4gKHtcbiAgICAgIGxhYmVsOiBpY29uRmllbGQubmFtZS5yZXBsYWNlKC9bXywuXSsvZywgJyAnKS50cmltKCksXG4gICAgICBjb2x1bW5zOiB7XG4gICAgICAgIGxhdDogcHRQYWlyLnBhaXIubGF0LFxuICAgICAgICBsbmc6IHB0UGFpci5wYWlyLmxuZyxcbiAgICAgICAgaWNvbjoge1xuICAgICAgICAgIHZhbHVlOiBpY29uRmllbGQubmFtZSxcbiAgICAgICAgICBmaWVsZElkeDogaWNvbkZpZWxkLmZpZWxkSWR4XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBpc1Zpc2libGU6IHRydWVcbiAgICB9KSk7XG5cbiAgICByZXR1cm4ge3Byb3BzfTtcbiAgfVxuXG4gIGNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUoe2RhdGFDb250YWluZXIsIGZpbHRlcmVkSW5kZXh9OiBLZXBsZXJUYWJsZSwgZ2V0UG9zaXRpb24pIHtcbiAgICBjb25zdCBnZXRJY29uID0gdGhpcy5nZXRJY29uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG4gICAgY29uc3QgZGF0YTogSWNvbkxheWVyRGF0YVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbHRlcmVkSW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZmlsdGVyZWRJbmRleFtpXTtcbiAgICAgIGNvbnN0IHJvd0luZGV4ID0ge2luZGV4fTtcbiAgICAgIGNvbnN0IHBvcyA9IGdldFBvc2l0aW9uKHJvd0luZGV4KTtcbiAgICAgIGNvbnN0IGljb24gPSBnZXRJY29uKHJvd0luZGV4KTtcblxuICAgICAgLy8gaWYgZG9lc24ndCBoYXZlIHBvaW50IGxhdCBvciBsbmcsIGRvIG5vdCBhZGQgdGhlIHBvaW50XG4gICAgICAvLyBkZWNrLmdsIGNhbid0IGhhbmRsZSBwb3NpdGlvbiA9IG51bGxcbiAgICAgIGlmIChwb3MuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiB0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YS5wdXNoKHtcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBpY29uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGF0YUlkID09PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHt0ZXh0TGFiZWx9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3Qge2dwdUZpbHRlciwgZGF0YUNvbnRhaW5lcn0gPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuXG4gICAgY29uc3QgZ2V0UG9zaXRpb24gPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG5cbiAgICBjb25zdCB7ZGF0YSwgdHJpZ2dlckNoYW5nZWR9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgLy8gZ2V0IGFsbCBkaXN0aW5jdCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0IGxhYmVsc1xuICAgIGNvbnN0IHRleHRMYWJlbHMgPSBmb3JtYXRUZXh0TGFiZWxEYXRhKHtcbiAgICAgIHRleHRMYWJlbCxcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHRyaWdnZXJDaGFuZ2VkLFxuICAgICAgb2xkTGF5ZXJEYXRhLFxuICAgICAgZGF0YSxcbiAgICAgIGRhdGFDb250YWluZXJcbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQ29udGFpbmVyfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGdldFBvc2l0aW9uLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKCksXG4gICAgICB0ZXh0TGFiZWxzLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbikge1xuICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuZ2V0UG9pbnRzQm91bmRzKGRhdGFDb250YWluZXIsIGdldFBvc2l0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZU1ldGEoe2JvdW5kc30pO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG9iamVjdEhvdmVyZWQsIGludGVyYWN0aW9uQ29uZmlnfSA9IG9wdHM7XG5cbiAgICBjb25zdCByYWRpdXNTY2FsZSA9IHRoaXMuZ2V0UmFkaXVzU2NhbGUoKTtcbiAgICBjb25zdCBsYXllclByb3BzID0ge3JhZGl1c1NjYWxlLCByYWRpdXNVbml0czogJ3BpeGVscycsIHJhZGl1c01heFBpeGVsczogNTAwfTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgZ2V0UG9zaXRpb246IHRoaXMuY29uZmlnLmNvbHVtbnMsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3QgYnJ1c2hpbmdQcm9wcyA9IHRoaXMuZ2V0QnJ1c2hpbmdFeHRlbnNpb25Qcm9wcyhpbnRlcmFjdGlvbkNvbmZpZyk7XG4gICAgY29uc3QgZ2V0UGl4ZWxPZmZzZXQgPSBnZXRUZXh0T2Zmc2V0QnlSYWRpdXMocmFkaXVzU2NhbGUsIGRhdGEuZ2V0UmFkaXVzKTtcbiAgICBjb25zdCBleHRlbnNpb25zID0gWy4uLmRlZmF1bHRMYXllclByb3BzLmV4dGVuc2lvbnMsIGJydXNoaW5nRXh0ZW5zaW9uXTtcblxuICAgIC8vIHNoYXJlZCBQcm9wcyBiZXR3ZWVuIGxheWVyIGFuZCBsYWJlbCBsYXllclxuICAgIGNvbnN0IHNoYXJlZFByb3BzID0ge1xuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGRhdGEuZ2V0RmlsdGVyVmFsdWUsXG4gICAgICBleHRlbnNpb25zLFxuICAgICAgZmlsdGVyUmFuZ2U6IGRlZmF1bHRMYXllclByb3BzLmZpbHRlclJhbmdlLFxuICAgICAgLi4uYnJ1c2hpbmdQcm9wc1xuICAgIH07XG5cbiAgICBjb25zdCBsYWJlbExheWVycyA9IFtcbiAgICAgIC4uLnRoaXMucmVuZGVyVGV4dExhYmVsTGF5ZXIoXG4gICAgICAgIHtcbiAgICAgICAgICBnZXRQb3NpdGlvbjogZGF0YS5nZXRQb3NpdGlvbixcbiAgICAgICAgICBzaGFyZWRQcm9wcyxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgZ2V0UGl4ZWxPZmZzZXQsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcnNcbiAgICAgICAgfSxcbiAgICAgICAgb3B0c1xuICAgICAgKVxuICAgIF07XG4gICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICAvLyBpY29ucyB3aWxsIGJlIGZsYXQgb24gdGhlIG1hcCB3aGVuIHRoZSBhbHRpdHVkZSBjb2x1bW4gaXMgbm90IHVzZWRcbiAgICAgIGRlcHRoVGVzdDogdGhpcy5jb25maWcuY29sdW1ucy5hbHRpdHVkZT8uZmllbGRJZHggPiAtMVxuICAgIH07XG5cbiAgICByZXR1cm4gIXRoaXMuaWNvbkdlb21ldHJ5XG4gICAgICA/IFtdXG4gICAgICA6IFtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgICAgbmV3IFN2Z0ljb25MYXllcih7XG4gICAgICAgICAgICAuLi5kZWZhdWx0TGF5ZXJQcm9wcyxcbiAgICAgICAgICAgIC4uLmJydXNoaW5nUHJvcHMsXG4gICAgICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICBnZXRJY29uR2VvbWV0cnk6IGlkID0+IHRoaXMuaWNvbkdlb21ldHJ5Py5baWRdLFxuXG4gICAgICAgICAgICAvLyB1cGRhdGUgdHJpZ2dlcnNcbiAgICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgICAgICAgZXh0ZW5zaW9uc1xuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgLi4uKGhvdmVyZWRPYmplY3RcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgU3ZnSWNvbkxheWVyUHJvcHMgbmVlZHMgZ2V0SWNvbiBGaWVsZFxuICAgICAgICAgICAgICAgIG5ldyBTdmdJY29uTGF5ZXIoe1xuICAgICAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgICAgICAuLi5sYXllclByb3BzLFxuICAgICAgICAgICAgICAgICAgZGF0YTogW2hvdmVyZWRPYmplY3RdLFxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICAgIGdldFBvc2l0aW9uOiBkYXRhLmdldFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgZ2V0UmFkaXVzOiBkYXRhLmdldFJhZGl1cyxcbiAgICAgICAgICAgICAgICAgIGdldEZpbGxDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgICAgICBnZXRJY29uR2VvbWV0cnk6IGlkID0+IHRoaXMuaWNvbkdlb21ldHJ5Py5baWRdXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXSksXG5cbiAgICAgICAgICAvLyB0ZXh0IGxhYmVsIGxheWVyXG4gICAgICAgICAgLi4ubGFiZWxMYXllcnNcbiAgICAgICAgXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQW9CQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFB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
332
+ var iconFields = fields.filter(function (_ref5) {
333
+ var name = _ref5.name;
334
+ return name.replace(/[_,.]+/g, ' ').trim().split(' ').some(function (seg) {
335
+ return _defaultSettings.ICON_FIELDS.icon.some(function (t) {
336
+ return t.includes(seg);
337
+ });
338
+ });
339
+ });
340
+ if (!iconFields.length) {
341
+ return notFound;
342
+ }
343
+
344
+ // create icon layers for first point pair
345
+ var ptPair = fieldPairs[0];
346
+ var props = iconFields.map(function (iconField) {
347
+ return {
348
+ label: iconField.name.replace(/[_,.]+/g, ' ').trim(),
349
+ columns: {
350
+ lat: ptPair.pair.lat,
351
+ lng: ptPair.pair.lng,
352
+ icon: {
353
+ value: iconField.name,
354
+ fieldIdx: iconField.fieldIdx
355
+ }
356
+ },
357
+ isVisible: true
358
+ };
359
+ });
360
+ return {
361
+ props: props
362
+ };
363
+ }
364
+ }]);
365
+ }(_baseLayer["default"]);
366
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luZG93IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZXh0ZW5zaW9ucyIsIl9zdmdJY29uTGF5ZXIiLCJfaWNvbkxheWVySWNvbiIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfaWNvbkluZm9Nb2RhbCIsIl9iYXNlTGF5ZXIiLCJfbGF5ZXJUZXh0TGFiZWwiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJicnVzaGluZ0V4dGVuc2lvbiIsIkJydXNoaW5nRXh0ZW5zaW9uIiwiU1ZHX0lDT05fVVJMIiwiZXhwb3J0cyIsImNvbmNhdCIsIkNMT1VERlJPTlQiLCJpY29uUG9zQWNjZXNzb3IiLCJfcmVmIiwibGF0IiwibG5nIiwiYWx0aXR1ZGUiLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImljb25BY2Nlc3NvciIsIl9yZWYyIiwiaWNvbiIsImljb25SZXF1aXJlZENvbHVtbnMiLCJpY29uT3B0aW9uYWxDb2x1bW5zIiwicG9pbnRWaXNDb25maWdzIiwicmFkaXVzIiwiZml4ZWRSYWRpdXMiLCJvcGFjaXR5IiwiY29sb3JSYW5nZSIsInJhZGl1c1JhbmdlIiwiZmxhdHRlckljb25Qb3NpdGlvbnMiLCJtZXNoIiwiY2VsbHMiLCJyZWR1Y2UiLCJwcmV2IiwiY2VsbCIsInBvc2l0aW9ucyIsIkljb25MYXllciIsIl9MYXllciIsIl90aGlzIiwicHJvcHMiLCJ1bmRlZmluZWQiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbmZpZyIsImNvbHVtbnMiLCJnZXRJY29uQWNjZXNzb3IiLCJfbGF5ZXJJbmZvTW9kYWwiLCJJY29uSW5mb01vZGFsRmFjdG9yeSIsImljb25HZW9tZXRyeSIsImdldFN2Z0ljb25zIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJnZXQiLCJkZWZhdWx0UG9pbnRDb2x1bW5QYWlycyIsIkljb25MYXllckljb24iLCJjb2xvciIsImFjY2Vzc29yIiwiZGVmYXVsdFZhbHVlIiwic2l6ZSIsInByb3BlcnR5IiwicmFuZ2UiLCJjaGFubmVsU2NhbGVUeXBlIiwiaWQiLCJ0ZW1wbGF0ZSIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsInZhbHVlIiwiX3RoaXMyIiwiZmV0Y2hDb25maWciLCJtZXRob2QiLCJtb2RlIiwiY2FjaGUiLCJ3aW5kb3ciLCJmZXRjaCIsInRoZW4iLCJyZXNwb25zZSIsImpzb24iLCJwYXJzZWQiLCJfcGFyc2VkJHN2Z0ljb25zIiwic3ZnSWNvbnMiLCJhY2N1IiwiY3VyciIsImNhbGN1bGF0ZURhdGFBdHRyaWJ1dGUiLCJfcmVmMyIsImdldFBvc2l0aW9uIiwiZmlsdGVyZWRJbmRleCIsImdldEljb24iLCJkYXRhIiwiaSIsInJvd0luZGV4IiwicG9zIiwiZXZlcnkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImZvcm1hdExheWVyRGF0YSIsImRhdGFzZXRzIiwib2xkTGF5ZXJEYXRhIiwiZGF0YUlkIiwidGV4dExhYmVsIiwiX2RhdGFzZXRzJHRoaXMkY29uZmlnIiwiZ3B1RmlsdGVyIiwiX3RoaXMkdXBkYXRlRGF0YSIsInVwZGF0ZURhdGEiLCJ0cmlnZ2VyQ2hhbmdlZCIsInRleHRMYWJlbHMiLCJmb3JtYXRUZXh0TGFiZWxEYXRhIiwiYWNjZXNzb3JzIiwiZ2V0QXR0cmlidXRlQWNjZXNzb3JzIiwiZ2V0RmlsdGVyVmFsdWUiLCJmaWx0ZXJWYWx1ZUFjY2Vzc29yIiwidXBkYXRlTGF5ZXJNZXRhIiwiYm91bmRzIiwiZ2V0UG9pbnRzQm91bmRzIiwidXBkYXRlTWV0YSIsInJlbmRlckxheWVyIiwib3B0cyIsIl90aGlzJGNvbmZpZyRjb2x1bW5zJCIsIl90aGlzMyIsIm9iamVjdEhvdmVyZWQiLCJpbnRlcmFjdGlvbkNvbmZpZyIsInJhZGl1c1NjYWxlIiwiZ2V0UmFkaXVzU2NhbGUiLCJsYXllclByb3BzIiwicmFkaXVzVW5pdHMiLCJyYWRpdXNNYXhQaXhlbHMiLCJ1cGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJnZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsImJydXNoaW5nUHJvcHMiLCJnZXRCcnVzaGluZ0V4dGVuc2lvblByb3BzIiwiZ2V0UGl4ZWxPZmZzZXQiLCJnZXRUZXh0T2Zmc2V0QnlSYWRpdXMiLCJnZXRSYWRpdXMiLCJleHRlbnNpb25zIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInNoYXJlZFByb3BzIiwiZmlsdGVyUmFuZ2UiLCJsYWJlbExheWVycyIsInJlbmRlclRleHRMYWJlbExheWVyIiwiaG92ZXJlZE9iamVjdCIsImhhc0hvdmVyZWRPYmplY3QiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiU3ZnSWNvbkxheWVyIiwiZ2V0SWNvbkdlb21ldHJ5IiwiX3RoaXMzJGljb25HZW9tZXRyeSIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJnZXRGaWxsQ29sb3IiLCJoaWdobGlnaHRDb2xvciIsIl90aGlzMyRpY29uR2VvbWV0cnkyIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiX3JlZjQiLCJfcmVmNCRmaWVsZFBhaXJzIiwiZmllbGRQYWlycyIsIl9yZWY0JGZpZWxkcyIsImZpZWxkcyIsIm5vdEZvdW5kIiwiaWNvbkZpZWxkcyIsIl9yZWY1IiwibmFtZSIsInJlcGxhY2UiLCJ0cmltIiwic3BsaXQiLCJzb21lIiwic2VnIiwiSUNPTl9GSUVMRFMiLCJpbmNsdWRlcyIsInB0UGFpciIsIm1hcCIsImljb25GaWVsZCIsImxhYmVsIiwicGFpciIsImlzVmlzaWJsZSIsIkxheWVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xheWVycy9pY29uLWxheWVyL2ljb24tbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHdpbmRvdyBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCB7QnJ1c2hpbmdFeHRlbnNpb259IGZyb20gJ0BkZWNrLmdsL2V4dGVuc2lvbnMnO1xuXG5pbXBvcnQgU3ZnSWNvbkxheWVyIGZyb20gJ2RlY2tnbC1sYXllcnMvc3ZnLWljb24tbGF5ZXIvc3ZnLWljb24tbGF5ZXInO1xuaW1wb3J0IEljb25MYXllckljb24gZnJvbSAnLi9pY29uLWxheWVyLWljb24nO1xuaW1wb3J0IHtJQ09OX0ZJRUxEUywgQ0xPVURGUk9OVH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IEljb25JbmZvTW9kYWxGYWN0b3J5IGZyb20gJy4vaWNvbi1pbmZvLW1vZGFsJztcbmltcG9ydCBMYXllciwge0xheWVyQmFzZUNvbmZpZywgTGF5ZXJDb2x1bW59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtnZXRUZXh0T2Zmc2V0QnlSYWRpdXMsIGZvcm1hdFRleHRMYWJlbERhdGF9IGZyb20gJy4uL2xheWVyLXRleHQtbGFiZWwnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuLi8uLi91dGlscy90YWJsZS11dGlscy9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdSYW5nZVxufSBmcm9tICcuLi9sYXllci1mYWN0b3J5JztcbmltcG9ydCB7Q29sb3JSYW5nZX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbG9yLXJhbmdlcyc7XG5pbXBvcnQge01lcmdlfSBmcm9tICcuLi8uLi9yZWR1Y2Vycyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIEljb25MYXllckNvbHVtbnNDb25maWcgPSB7XG4gIGxhdDogTGF5ZXJDb2x1bW47XG4gIGxuZzogTGF5ZXJDb2x1bW47XG4gIGFsdGl0dWRlOiBMYXllckNvbHVtbjtcbiAgaWNvbjogTGF5ZXJDb2x1bW47XG59O1xuXG50eXBlIEljb25HZW9tZXRyeSA9IHt9IHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgSWNvbkxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIHJhZGl1czogVmlzQ29uZmlnTnVtYmVyO1xuICBmaXhlZFJhZGl1czogVmlzQ29uZmlnQm9vbGVhbjtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiBWaXNDb25maWdDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBJY29uTGF5ZXJWaXNDb25maWcgPSB7XG4gIHJhZGl1czogbnVtYmVyO1xuICBmaXhlZFJhZGl1czogYm9vbGVhbjtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICByYWRpdXNSYW5nZTogW251bWJlciwgbnVtYmVyXTtcbn07XG5cbmV4cG9ydCB0eXBlIEljb25MYXllckNvbmZpZyA9IE1lcmdlPFxuICBMYXllckJhc2VDb25maWcsXG4gIHtjb2x1bW5zOiBJY29uTGF5ZXJDb2x1bW5zQ29uZmlnOyB2aXNDb25maWc6IEljb25MYXllclZpc0NvbmZpZ31cbj47XG5cbmV4cG9ydCB0eXBlIEljb25MYXllckRhdGEgPSB7aW5kZXg6IG51bWJlcjsgaWNvbjogc3RyaW5nfTtcblxuY29uc3QgYnJ1c2hpbmdFeHRlbnNpb24gPSBuZXcgQnJ1c2hpbmdFeHRlbnNpb24oKTtcblxuZXhwb3J0IGNvbnN0IFNWR19JQ09OX1VSTCA9IGAke0NMT1VERlJPTlR9L2ljb25zL3N2Zy1pY29ucy5qc29uYDtcblxuZXhwb3J0IGNvbnN0IGljb25Qb3NBY2Nlc3NvciA9ICh7bGF0LCBsbmcsIGFsdGl0dWRlfTogSWNvbkxheWVyQ29sdW1uc0NvbmZpZykgPT4gKFxuICBkYzogRGF0YUNvbnRhaW5lckludGVyZmFjZVxuKSA9PiBkID0+IFtcbiAgZGMudmFsdWVBdChkLmluZGV4LCBsbmcuZmllbGRJZHgpLFxuICBkYy52YWx1ZUF0KGQuaW5kZXgsIGxhdC5maWVsZElkeCksXG4gIGFsdGl0dWRlPy5maWVsZElkeCA+IC0xID8gZGMudmFsdWVBdChkLmluZGV4LCBhbHRpdHVkZS5maWVsZElkeCkgOiAwXG5dO1xuXG5leHBvcnQgY29uc3QgaWNvbkFjY2Vzc29yID0gKHtpY29ufTogSWNvbkxheWVyQ29sdW1uc0NvbmZpZykgPT4gKGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBkID0+XG4gIGRjLnZhbHVlQXQoZC5pbmRleCwgaWNvbi5maWVsZElkeCk7XG5cbmV4cG9ydCBjb25zdCBpY29uUmVxdWlyZWRDb2x1bW5zOiBbJ2xhdCcsICdsbmcnLCAnaWNvbiddID0gWydsYXQnLCAnbG5nJywgJ2ljb24nXTtcbmV4cG9ydCBjb25zdCBpY29uT3B0aW9uYWxDb2x1bW5zOiBbJ2FsdGl0dWRlJ10gPSBbJ2FsdGl0dWRlJ107XG5cbmV4cG9ydCBjb25zdCBwb2ludFZpc0NvbmZpZ3M6IHtcbiAgcmFkaXVzOiAncmFkaXVzJztcbiAgZml4ZWRSYWRpdXM6ICdmaXhlZFJhZGl1cyc7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnO1xuICByYWRpdXNSYW5nZTogJ3JhZGl1c1JhbmdlJztcbn0gPSB7XG4gIHJhZGl1czogJ3JhZGl1cycsXG4gIGZpeGVkUmFkaXVzOiAnZml4ZWRSYWRpdXMnLFxuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgcmFkaXVzUmFuZ2U6ICdyYWRpdXNSYW5nZSdcbn07XG5cbmZ1bmN0aW9uIGZsYXR0ZXJJY29uUG9zaXRpb25zKGljb24pIHtcbiAgLy8gaGFkIHRvIGZsaXAgeSwgc2luY2UgQGx1bWEgbW9kYWwgaGFzIGNoYW5nZWRcbiAgcmV0dXJuIGljb24ubWVzaC5jZWxscy5yZWR1Y2UoKHByZXYsIGNlbGwpID0+IHtcbiAgICBjZWxsLmZvckVhY2gocCA9PiB7XG4gICAgICBwcmV2LnB1c2goXG4gICAgICAgIC4uLltpY29uLm1lc2gucG9zaXRpb25zW3BdWzBdLCAtaWNvbi5tZXNoLnBvc2l0aW9uc1twXVsxXSwgaWNvbi5tZXNoLnBvc2l0aW9uc1twXVsyXV1cbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIFtdKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWNvbkxheWVyIGV4dGVuZHMgTGF5ZXIge1xuICBnZXRJY29uQWNjZXNzb3I6IChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiAoZDogYW55KSA9PiBhbnk7XG4gIF9sYXllckluZm9Nb2RhbDogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGljb25HZW9tZXRyeTogSWNvbkdlb21ldHJ5O1xuXG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IEljb25MYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIGNvbmZpZzogSWNvbkxheWVyQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3BzOiB7XG4gICAgICBpZD86IHN0cmluZztcbiAgICAgIGljb25HZW9tZXRyeT86IEljb25HZW9tZXRyeTtcbiAgICB9ICYgUGFydGlhbDxMYXllckJhc2VDb25maWc+ID0ge31cbiAgKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhwb2ludFZpc0NvbmZpZ3MpO1xuICAgIHRoaXMuZ2V0UG9zaXRpb25BY2Nlc3NvciA9IChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PlxuICAgICAgaWNvblBvc0FjY2Vzc29yKHRoaXMuY29uZmlnLmNvbHVtbnMpKGRhdGFDb250YWluZXIpO1xuICAgIHRoaXMuZ2V0SWNvbkFjY2Vzc29yID0gZGF0YUNvbnRhaW5lciA9PiBpY29uQWNjZXNzb3IodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG5cbiAgICAvLyBwcmVwYXJlIGxheWVyIGluZm8gbW9kYWxcbiAgICB0aGlzLl9sYXllckluZm9Nb2RhbCA9IEljb25JbmZvTW9kYWxGYWN0b3J5KCk7XG4gICAgdGhpcy5pY29uR2VvbWV0cnkgPSBwcm9wcy5pY29uR2VvbWV0cnkgfHwgbnVsbDtcbiAgICB0aGlzLmdldFN2Z0ljb25zKCk7XG4gIH1cblxuICBnZXQgdHlwZSgpOiAnaWNvbicge1xuICAgIHJldHVybiAnaWNvbic7XG4gIH1cblxuICBnZXQgcmVxdWlyZWRMYXllckNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGljb25SZXF1aXJlZENvbHVtbnM7XG4gIH1cblxuICBnZXQgb3B0aW9uYWxDb2x1bW5zKCkge1xuICAgIHJldHVybiBpY29uT3B0aW9uYWxDb2x1bW5zO1xuICB9XG5cbiAgZ2V0IGNvbHVtblBhaXJzKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb2ludENvbHVtblBhaXJzO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gSWNvbkxheWVySWNvbjtcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4uc3VwZXIudmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0RmlsbENvbG9yJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBjb25maWcgPT4gY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICAuLi5zdXBlci52aXN1YWxDaGFubmVscy5zaXplLFxuICAgICAgICBwcm9wZXJ0eTogJ3JhZGl1cycsXG4gICAgICAgIHJhbmdlOiAncmFkaXVzUmFuZ2UnLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiAncmFkaXVzJyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRSYWRpdXMnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IDFcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogJ2ljb25JbmZvJyxcbiAgICAgIHRlbXBsYXRlOiB0aGlzLl9sYXllckluZm9Nb2RhbCxcbiAgICAgIG1vZGFsUHJvcHM6IHtcbiAgICAgICAgdGl0bGU6ICdtb2RhbC5pY29uSW5mby50aXRsZSdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0U3ZnSWNvbnMoKSB7XG4gICAgY29uc3QgZmV0Y2hDb25maWcgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgbW9kZTogJ2NvcnMnLFxuICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICB9O1xuXG4gICAgaWYgKHdpbmRvdy5mZXRjaCkge1xuICAgICAgd2luZG93XG4gICAgICAgIC5mZXRjaChTVkdfSUNPTl9VUkwsIGZldGNoQ29uZmlnKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5qc29uKCkpXG4gICAgICAgIC50aGVuKChwYXJzZWQ6IHtzdmdJY29ucz86IGFueVtdfSA9IHt9KSA9PiB7XG4gICAgICAgICAgY29uc3Qge3N2Z0ljb25zID0gW119ID0gcGFyc2VkO1xuICAgICAgICAgIHRoaXMuaWNvbkdlb21ldHJ5ID0gc3ZnSWNvbnMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3UsIGN1cnIpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIFtjdXJyLmlkXTogZmxhdHRlckljb25Qb3NpdGlvbnMoY3VycilcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5fbGF5ZXJJbmZvTW9kYWwgPSBJY29uSW5mb01vZGFsRmFjdG9yeShzdmdJY29ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoe2ZpZWxkUGFpcnMgPSBbXSwgZmllbGRzID0gW119OiBLZXBsZXJUYWJsZSkge1xuICAgIGNvbnN0IG5vdEZvdW5kID0ge3Byb3BzOiBbXX07XG4gICAgaWYgKCFmaWVsZFBhaXJzLmxlbmd0aCB8fCAhZmllbGRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5vdEZvdW5kO1xuICAgIH1cblxuICAgIGNvbnN0IGljb25GaWVsZHMgPSBmaWVsZHMuZmlsdGVyKCh7bmFtZX0pID0+XG4gICAgICBuYW1lXG4gICAgICAgIC5yZXBsYWNlKC9bXywuXSsvZywgJyAnKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5zb21lKHNlZyA9PiBJQ09OX0ZJRUxEUy5pY29uLnNvbWUodCA9PiB0LmluY2x1ZGVzKHNlZykpKVxuICAgICk7XG5cbiAgICBpZiAoIWljb25GaWVsZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbm90Rm91bmQ7XG4gICAgfVxuXG4gICAgLy8gY3JlYXRlIGljb24gbGF5ZXJzIGZvciBmaXJzdCBwb2ludCBwYWlyXG4gICAgY29uc3QgcHRQYWlyID0gZmllbGRQYWlyc1swXTtcblxuICAgIGNvbnN0IHByb3BzID0gaWNvbkZpZWxkcy5tYXAoaWNvbkZpZWxkID0+ICh7XG4gICAgICBsYWJlbDogaWNvbkZpZWxkLm5hbWUucmVwbGFjZSgvW18sLl0rL2csICcgJykudHJpbSgpLFxuICAgICAgY29sdW1uczoge1xuICAgICAgICBsYXQ6IHB0UGFpci5wYWlyLmxhdCxcbiAgICAgICAgbG5nOiBwdFBhaXIucGFpci5sbmcsXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICB2YWx1ZTogaWNvbkZpZWxkLm5hbWUsXG4gICAgICAgICAgZmllbGRJZHg6IGljb25GaWVsZC5maWVsZElkeFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIHtwcm9wc307XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fTogS2VwbGVyVGFibGUsIGdldFBvc2l0aW9uKSB7XG4gICAgY29uc3QgZ2V0SWNvbiA9IHRoaXMuZ2V0SWNvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGNvbnN0IGRhdGE6IEljb25MYXllckRhdGFbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWx0ZXJlZEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbHRlcmVkSW5kZXhbaV07XG4gICAgICBjb25zdCByb3dJbmRleCA9IHtpbmRleH07XG4gICAgICBjb25zdCBwb3MgPSBnZXRQb3NpdGlvbihyb3dJbmRleCk7XG4gICAgICBjb25zdCBpY29uID0gZ2V0SWNvbihyb3dJbmRleCk7XG5cbiAgICAgIC8vIGlmIGRvZXNuJ3QgaGF2ZSBwb2ludCBsYXQgb3IgbG5nLCBkbyBub3QgYWRkIHRoZSBwb2ludFxuICAgICAgLy8gZGVjay5nbCBjYW4ndCBoYW5kbGUgcG9zaXRpb24gPSBudWxsXG4gICAgICBpZiAocG9zLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkgJiYgdHlwZW9mIGljb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRhdGEucHVzaCh7XG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgaWNvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB7dGV4dExhYmVsfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHtncHVGaWx0ZXIsIGRhdGFDb250YWluZXJ9ID0gZGF0YXNldHNbdGhpcy5jb25maWcuZGF0YUlkXTtcblxuICAgIGNvbnN0IGdldFBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuXG4gICAgY29uc3Qge2RhdGEsIHRyaWdnZXJDaGFuZ2VkfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcblxuICAgIC8vIGdldCBhbGwgZGlzdGluY3QgY2hhcmFjdGVycyBpbiB0aGUgdGV4dCBsYWJlbHNcbiAgICBjb25zdCB0ZXh0TGFiZWxzID0gZm9ybWF0VGV4dExhYmVsRGF0YSh7XG4gICAgICB0ZXh0TGFiZWwsXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICB0cmlnZ2VyQ2hhbmdlZCxcbiAgICAgIG9sZExheWVyRGF0YSxcbiAgICAgIGRhdGEsXG4gICAgICBkYXRhQ29udGFpbmVyXG4gICAgfSk7XG5cbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFjY2Vzc29ycyh7ZGF0YUNvbnRhaW5lcn0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRQb3NpdGlvbixcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVBY2Nlc3NvcihkYXRhQ29udGFpbmVyKSgpLFxuICAgICAgdGV4dExhYmVscyxcbiAgICAgIC4uLmFjY2Vzc29yc1xuICAgIH07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lciwgZ2V0UG9zaXRpb24pIHtcbiAgICBjb25zdCBib3VuZHMgPSB0aGlzLmdldFBvaW50c0JvdW5kcyhkYXRhQ29udGFpbmVyLCBnZXRQb3NpdGlvbik7XG4gICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHN9KTtcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBvYmplY3RIb3ZlcmVkLCBpbnRlcmFjdGlvbkNvbmZpZ30gPSBvcHRzO1xuXG4gICAgY29uc3QgcmFkaXVzU2NhbGUgPSB0aGlzLmdldFJhZGl1c1NjYWxlKCk7XG4gICAgY29uc3QgbGF5ZXJQcm9wcyA9IHtyYWRpdXNTY2FsZSwgcmFkaXVzVW5pdHM6ICdwaXhlbHMnLCByYWRpdXNNYXhQaXhlbHM6IDUwMH07XG5cbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHtcbiAgICAgIGdldFBvc2l0aW9uOiB0aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzLFxuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKVxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuICAgIGNvbnN0IGJydXNoaW5nUHJvcHMgPSB0aGlzLmdldEJydXNoaW5nRXh0ZW5zaW9uUHJvcHMoaW50ZXJhY3Rpb25Db25maWcpO1xuICAgIGNvbnN0IGdldFBpeGVsT2Zmc2V0ID0gZ2V0VGV4dE9mZnNldEJ5UmFkaXVzKHJhZGl1c1NjYWxlLCBkYXRhLmdldFJhZGl1cyk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9IFsuLi5kZWZhdWx0TGF5ZXJQcm9wcy5leHRlbnNpb25zLCBicnVzaGluZ0V4dGVuc2lvbl07XG5cbiAgICAvLyBzaGFyZWQgUHJvcHMgYmV0d2VlbiBsYXllciBhbmQgbGFiZWwgbGF5ZXJcbiAgICBjb25zdCBzaGFyZWRQcm9wcyA9IHtcbiAgICAgIGdldEZpbHRlclZhbHVlOiBkYXRhLmdldEZpbHRlclZhbHVlLFxuICAgICAgZXh0ZW5zaW9ucyxcbiAgICAgIGZpbHRlclJhbmdlOiBkZWZhdWx0TGF5ZXJQcm9wcy5maWx0ZXJSYW5nZSxcbiAgICAgIC4uLmJydXNoaW5nUHJvcHNcbiAgICB9O1xuXG4gICAgY29uc3QgbGFiZWxMYXllcnMgPSBbXG4gICAgICAuLi50aGlzLnJlbmRlclRleHRMYWJlbExheWVyKFxuICAgICAgICB7XG4gICAgICAgICAgZ2V0UG9zaXRpb246IGRhdGEuZ2V0UG9zaXRpb24sXG4gICAgICAgICAgc2hhcmVkUHJvcHMsXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIGdldFBpeGVsT2Zmc2V0LFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIH0sXG4gICAgICAgIG9wdHNcbiAgICAgIClcbiAgICBdO1xuICAgIGNvbnN0IGhvdmVyZWRPYmplY3QgPSB0aGlzLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SG92ZXJlZCk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgLy8gaWNvbnMgd2lsbCBiZSBmbGF0IG9uIHRoZSBtYXAgd2hlbiB0aGUgYWx0aXR1ZGUgY29sdW1uIGlzIG5vdCB1c2VkXG4gICAgICBkZXB0aFRlc3Q6IHRoaXMuY29uZmlnLmNvbHVtbnMuYWx0aXR1ZGU/LmZpZWxkSWR4ID4gLTFcbiAgICB9O1xuXG4gICAgcmV0dXJuICF0aGlzLmljb25HZW9tZXRyeVxuICAgICAgPyBbXVxuICAgICAgOiBbXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIG5ldyBTdmdJY29uTGF5ZXIoe1xuICAgICAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgICAgICAuLi5icnVzaGluZ1Byb3BzLFxuICAgICAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICAgICAgZ2V0SWNvbkdlb21ldHJ5OiBpZCA9PiB0aGlzLmljb25HZW9tZXRyeT8uW2lkXSxcblxuICAgICAgICAgICAgLy8gdXBkYXRlIHRyaWdnZXJzXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2VycyxcbiAgICAgICAgICAgIGV4dGVuc2lvbnNcbiAgICAgICAgICB9KSxcblxuICAgICAgICAgIC4uLihob3ZlcmVkT2JqZWN0XG4gICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFN2Z0ljb25MYXllclByb3BzIG5lZWRzIGdldEljb24gRmllbGRcbiAgICAgICAgICAgICAgICBuZXcgU3ZnSWNvbkxheWVyKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpLFxuICAgICAgICAgICAgICAgICAgLi4ubGF5ZXJQcm9wcyxcbiAgICAgICAgICAgICAgICAgIGRhdGE6IFtob3ZlcmVkT2JqZWN0XSxcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgICBnZXRQb3NpdGlvbjogZGF0YS5nZXRQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgIGdldFJhZGl1czogZGF0YS5nZXRSYWRpdXMsXG4gICAgICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgICAgICAgZ2V0SWNvbkdlb21ldHJ5OiBpZCA9PiB0aGlzLmljb25HZW9tZXRyeT8uW2lkXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogW10pLFxuXG4gICAgICAgICAgLy8gdGV4dCBsYWJlbCBsYXllclxuICAgICAgICAgIC4uLmxhYmVsTGF5ZXJzXG4gICAgICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLGFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFQLE9BQUE7QUFBK0UsU0FBQVEsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUs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