@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.8

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 (165) hide show
  1. package/dist/cjs/common/data-table/cell-size.js +40 -23
  2. package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
  3. package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
  4. package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
  5. package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
  6. package/dist/cjs/common/data-table/grid.js +2 -2
  7. package/dist/cjs/common/data-table/header-cell.js +123 -44
  8. package/dist/cjs/common/data-table/index.js +104 -31
  9. package/dist/cjs/common/file-uploader/file-upload.js +250 -40
  10. package/dist/cjs/common/histogram-plot.js +1 -1
  11. package/dist/cjs/common/icons/circle.js +54 -0
  12. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  13. package/dist/cjs/common/icons/index.js +22 -1
  14. package/dist/cjs/common/icons/line-string.js +60 -0
  15. package/dist/cjs/common/item-selector/item-selector.js +2 -2
  16. package/dist/cjs/common/portaled.js +3 -3
  17. package/dist/cjs/common/time-range-slider.js +2 -2
  18. package/dist/cjs/common/timeline-slider.js +2 -2
  19. package/dist/cjs/common/toolbar-item.js +24 -3
  20. package/dist/cjs/editor/editor.js +27 -9
  21. package/dist/cjs/editor/feature-action-panel.js +34 -12
  22. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  23. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  24. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
  25. package/dist/cjs/filters/time-widget.js +2 -2
  26. package/dist/cjs/index.js +33 -1
  27. package/dist/cjs/kepler-gl.js +20 -3
  28. package/dist/cjs/map/layer-hover-info.js +2 -2
  29. package/dist/cjs/map/map-control-toolbar.js +2 -2
  30. package/dist/cjs/map/map-control.js +14 -8
  31. package/dist/cjs/map/map-draw-panel.js +74 -15
  32. package/dist/cjs/map/theme-toggle-button.js +64 -0
  33. package/dist/cjs/map-container.js +17 -6
  34. package/dist/cjs/map-view-state-context.js +3 -3
  35. package/dist/cjs/modal-container.js +3 -2
  36. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  37. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  38. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  39. package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
  40. package/dist/cjs/modals/cloud-tile.js +82 -39
  41. package/dist/cjs/modals/data-table-modal.js +37 -25
  42. package/dist/cjs/modals/export-video-modal.js +28 -1
  43. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  44. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  45. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  46. package/dist/cjs/modals/hubble-utils.js +8 -3
  47. package/dist/cjs/modals/image-modal-container.js +2 -2
  48. package/dist/cjs/modals/load-data-modal.js +3 -3
  49. package/dist/cjs/modals/load-storage-map.js +9 -6
  50. package/dist/cjs/modals/save-map-modal.js +4 -3
  51. package/dist/cjs/modals/share-map-modal.js +5 -4
  52. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  53. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  54. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  55. package/dist/cjs/plot-container.js +12 -5
  56. package/dist/cjs/side-panel/common/dataset-info.js +2 -2
  57. package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
  58. package/dist/cjs/side-panel/layer-manager.js +11 -3
  59. package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
  60. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  61. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  62. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  63. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  64. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  65. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  66. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  67. package/dist/common/data-table/header-cell.d.ts +7 -5
  68. package/dist/common/data-table/index.d.ts +7 -24
  69. package/dist/common/histogram-plot.d.ts +24 -1
  70. package/dist/common/icons/{arrow-down-solid.d.ts → circle.d.ts} +2 -1
  71. package/dist/common/icons/draw-point.d.ts +10 -0
  72. package/dist/common/icons/index.d.ts +3 -0
  73. package/dist/common/icons/line-string.d.ts +10 -0
  74. package/dist/common/toolbar-item.d.ts +2 -0
  75. package/dist/editor/editor.d.ts +1 -0
  76. package/dist/editor/feature-action-panel.d.ts +1 -0
  77. package/dist/editor/feature-properties-editor.d.ts +8 -0
  78. package/dist/editor/filter-feature-badges.d.ts +12 -0
  79. package/dist/esm/common/data-table/cell-size.js +40 -23
  80. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  81. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  82. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  83. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  84. package/dist/esm/common/data-table/grid.js +2 -2
  85. package/dist/esm/common/data-table/header-cell.js +125 -46
  86. package/dist/esm/common/data-table/index.js +104 -31
  87. package/dist/esm/common/file-uploader/file-upload.js +251 -41
  88. package/dist/esm/common/histogram-plot.js +1 -1
  89. package/dist/esm/common/icons/circle.js +48 -0
  90. package/dist/esm/common/icons/draw-point.js +44 -0
  91. package/dist/esm/common/icons/index.js +4 -1
  92. package/dist/esm/common/icons/line-string.js +54 -0
  93. package/dist/esm/common/item-selector/item-selector.js +2 -2
  94. package/dist/esm/common/portaled.js +3 -3
  95. package/dist/esm/common/time-range-slider.js +2 -2
  96. package/dist/esm/common/timeline-slider.js +2 -2
  97. package/dist/esm/common/toolbar-item.js +24 -3
  98. package/dist/esm/editor/editor.js +27 -9
  99. package/dist/esm/editor/feature-action-panel.js +37 -15
  100. package/dist/esm/editor/feature-properties-editor.js +208 -0
  101. package/dist/esm/editor/filter-feature-badges.js +85 -0
  102. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
  103. package/dist/esm/filters/time-widget.js +2 -2
  104. package/dist/esm/index.js +5 -1
  105. package/dist/esm/kepler-gl.js +20 -3
  106. package/dist/esm/map/layer-hover-info.js +2 -2
  107. package/dist/esm/map/map-control-toolbar.js +2 -2
  108. package/dist/esm/map/map-control.js +14 -8
  109. package/dist/esm/map/map-draw-panel.js +72 -11
  110. package/dist/esm/map/theme-toggle-button.js +55 -0
  111. package/dist/esm/map-container.js +17 -6
  112. package/dist/esm/map-view-state-context.js +3 -3
  113. package/dist/esm/modal-container.js +3 -2
  114. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  115. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  116. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  117. package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
  118. package/dist/esm/modals/cloud-tile.js +82 -39
  119. package/dist/esm/modals/data-table-modal.js +38 -26
  120. package/dist/esm/modals/export-video-modal.js +29 -2
  121. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  122. package/dist/esm/modals/globe-export-video-container.js +20 -4
  123. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  124. package/dist/esm/modals/hubble-utils.js +8 -3
  125. package/dist/esm/modals/image-modal-container.js +2 -2
  126. package/dist/esm/modals/load-data-modal.js +3 -3
  127. package/dist/esm/modals/load-storage-map.js +8 -3
  128. package/dist/esm/modals/save-map-modal.js +4 -3
  129. package/dist/esm/modals/share-map-modal.js +5 -4
  130. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  131. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  132. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  133. package/dist/esm/plot-container.js +12 -5
  134. package/dist/esm/side-panel/common/dataset-info.js +2 -2
  135. package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
  136. package/dist/esm/side-panel/layer-manager.js +11 -3
  137. package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
  138. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  139. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  140. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  141. package/dist/index.d.ts +8 -0
  142. package/dist/kepler-gl.d.ts +3 -0
  143. package/dist/map/map-control.d.ts +6 -2
  144. package/dist/map/map-draw-panel.d.ts +1 -0
  145. package/dist/map/theme-toggle-button.d.ts +18 -0
  146. package/dist/map-container.d.ts +1 -0
  147. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  148. package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
  149. package/dist/modals/data-table-modal.d.ts +1 -0
  150. package/dist/modals/globe-export-video-container.d.ts +2 -0
  151. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  152. package/dist/modals/hubble-utils.d.ts +2 -1
  153. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  154. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  155. package/package.json +20 -21
  156. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  157. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  158. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  159. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  160. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  161. package/dist/esm/modals/storage-map-viewer.js +0 -93
  162. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  163. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  164. package/dist/modals/storage-map-viewer.d.ts +0 -21
  165. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -14,7 +14,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
14
14
 
15
15
  import React, { PureComponent } from 'react';
16
16
  import { Grid } from 'react-virtualized';
17
- import isEqual from 'lodash/isEqual';
17
+ import isEqual from 'es-toolkit/compat/isEqual';
18
18
  var GridHack = /*#__PURE__*/function (_PureComponent) {
19
19
  function GridHack() {
20
20
  var _this;
@@ -97,4 +97,4 @@ var GridHack = /*#__PURE__*/function (_PureComponent) {
97
97
  }]);
98
98
  }(PureComponent);
99
99
  export { GridHack as default };
100
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJHcmlkIiwiaXNFcXVhbCIsIkdyaWRIYWNrIiwiX1B1cmVDb21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImUiLCJzY3JvbGxMZWZ0IiwicHJvcHMiLCJ1bmRlZmluZWQiLCJkZWx0YVgiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIngiLCJncmlkIiwiX3RoaXMkZ3JpZCIsIl9zY3JvbGxpbmdDb250YWluZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX3ByZXZlbnRTY3JvbGxCYWNrIiwicGFzc2l2ZSIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJjZWxsU2l6ZUNhY2hlIiwiX3RoaXMkZ3JpZDIiLCJyZWNvbXB1dGVHcmlkU2l6ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiX3RoaXMkZ3JpZDMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJzZXRHcmlkUmVmIiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJlZiIsIl91cGRhdGVSZWYiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9kYXRhLXRhYmxlL2dyaWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7R3JpZCwgR3JpZFByb3BzfSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyaWRIYWNrIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxHcmlkUHJvcHM+IHtcbiAgZ3JpZDogR3JpZCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmVQcm9wcykge1xuICAgIC8qXG4gICAgICogVGhpcyBoYWNrIGV4aXN0cyBiZWNhdXNlIGluIHJlYWN0LXZpcnR1YWxpemVkIHRoZVxuICAgICAqIF9jb2x1bW5XaWR0aEdldHRlciBpcyBvbmx5IGNhbGxlZCBpbiB0aGUgY29uc3RydWN0b3JcbiAgICAgKiBldmVuIHRob3VnaCBpdCBpcyByZWFzc2lnbmVkIHdpdGggbmV3IHByb3BzIHJlc3VsdGluZyBpblxuICAgICAqIGEgbmV3IHdpZHRoIGZvciBjZWxscyBub3QgYmVpbmcgY2FsY3VsYXRlZCBzbyB3ZSBtdXN0XG4gICAgICogZm9yY2UgdHJpZ2dlciBhIHJlc2l6ZS5cbiAgICAgKlxuICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9idmF1Z2huL3JlYWN0LXZpcnR1YWxpemVkL2Jsb2IvbWFzdGVyL3NvdXJjZS9HcmlkL0dyaWQuanMjTDMyMlxuICAgICAqXG4gICAgICovXG4gICAgaWYgKCFpc0VxdWFsKHByZVByb3BzLmNlbGxTaXplQ2FjaGUsIHRoaXMucHJvcHMuY2VsbFNpemVDYWNoZSkpIHtcbiAgICAgIHRoaXMuZ3JpZD8ucmVjb21wdXRlR3JpZFNpemUoKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIF9zY3JvbGxpbmdDb250YWluZXIgbm90IHR5cGVkIGluIEdyaWRcbiAgICB0aGlzLmdyaWQ/Ll9zY3JvbGxpbmdDb250YWluZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5fcHJldmVudFNjcm9sbEJhY2ssIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBfcHJldmVudFNjcm9sbEJhY2sgPSBlID0+IHtcbiAgICBjb25zdCB7c2Nyb2xsTGVmdH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChzY3JvbGxMZWZ0ICE9PSB1bmRlZmluZWQgJiYgc2Nyb2xsTGVmdCA8PSAwICYmIGUuZGVsdGFYIDwgMCkge1xuICAgICAgLy8gUHJldmVudCBTY3JvbGwgT24gU2Nyb2xsYWJsZSBFbGVtZW50cywgYXZvaWQgYnJvd3NlciBiYWNrd2FyZCBuYXZpZ2F0aW9uXG4gICAgICAvLyBodHRwczovL2FsdmFyb3RyaWdvLmNvbS9ibG9nL3ByZXZlbnQtc2Nyb2xsLW9uLXNjcm9sbGFibGUtZWxlbWVudC1qcy9cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfTtcblxuICBfdXBkYXRlUmVmID0geCA9PiB7XG4gICAgaWYgKCF0aGlzLmdyaWQgJiYgeCkge1xuICAgICAgdGhpcy5ncmlkID0geDtcbiAgICAgIC8qXG4gICAgICAgKiBUaGlzIGhhY2sgZXhpc3RzIGJlY2F1c2Ugd2UgbmVlZCB0byBhZGQgd2hlZWwgZXZlbnQgbGlzdGVuZXIgdG8gdGhlIGRpdiByZW5kZXJlZCBieSBHcmlkXG4gICAgICAgKlxuICAgICAgICovXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIF9zY3JvbGxpbmdDb250YWluZXIgbm90IHR5cGVkIGluIEdyaWRcbiAgICAgIHRoaXMuZ3JpZD8uX3Njcm9sbGluZ0NvbnRhaW5lcj8uYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl9wcmV2ZW50U2Nyb2xsQmFjaywge1xuICAgICAgICBwYXNzaXZlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7c2V0R3JpZFJlZiwgLi4ucmVzdH0gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZFxuICAgICAgICByZWY9e3ggPT4ge1xuICAgICAgICAgIGlmIChzZXRHcmlkUmVmKSBzZXRHcmlkUmVmKHgpO1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZVJlZih4KTtcbiAgICAgICAgfX1cbiAgICAgICAga2V5PVwiZ3JpZC1oYWNrXCJcbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLE9BQU9BLEtBQUssSUFBR0MsYUFBYSxRQUFPLE9BQU87QUFDMUMsU0FBUUMsSUFBSSxRQUFrQixtQkFBbUI7QUFDakQsT0FBT0MsT0FBTyxNQUFNLGdCQUFnQjtBQUFDLElBRWhCQyxRQUFRLDBCQUFBQyxjQUFBO0VBQUEsU0FBQUQsU0FBQTtJQUFBLElBQUFFLEtBQUE7SUFBQUMsZUFBQSxPQUFBSCxRQUFBO0lBQUEsU0FBQUksSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUMsSUFBQSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtNQUFBRixJQUFBLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO0lBQUE7SUFBQVAsS0FBQSxHQUFBUSxVQUFBLE9BQUFWLFFBQUEsS0FBQVcsTUFBQSxDQUFBSixJQUFBO0lBQUFLLGVBQUEsQ0FBQVYsS0FBQSxVQUNQLElBQUk7SUFBQVUsZUFBQSxDQUFBVixLQUFBLHdCQXlCSCxVQUFBVyxDQUFDLEVBQUk7TUFDeEIsSUFBT0MsVUFBVSxHQUFJWixLQUFBLENBQUthLEtBQUssQ0FBeEJELFVBQVU7TUFDakIsSUFBSUEsVUFBVSxLQUFLRSxTQUFTLElBQUlGLFVBQVUsSUFBSSxDQUFDLElBQUlELENBQUMs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
100
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJHcmlkIiwiaXNFcXVhbCIsIkdyaWRIYWNrIiwiX1B1cmVDb21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiX2NhbGxTdXBlciIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImUiLCJzY3JvbGxMZWZ0IiwicHJvcHMiLCJ1bmRlZmluZWQiLCJkZWx0YVgiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIngiLCJncmlkIiwiX3RoaXMkZ3JpZCIsIl9zY3JvbGxpbmdDb250YWluZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX3ByZXZlbnRTY3JvbGxCYWNrIiwicGFzc2l2ZSIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImtleSIsInZhbHVlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJjZWxsU2l6ZUNhY2hlIiwiX3RoaXMkZ3JpZDIiLCJyZWNvbXB1dGVHcmlkU2l6ZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiX3RoaXMkZ3JpZDMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJzZXRHcmlkUmVmIiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJlZiIsIl91cGRhdGVSZWYiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbW1vbi9kYXRhLXRhYmxlL2dyaWQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge1B1cmVDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7R3JpZCwgR3JpZFByb3BzfSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdlcy10b29sa2l0L2NvbXBhdC9pc0VxdWFsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3JpZEhhY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEdyaWRQcm9wcz4ge1xuICBncmlkOiBHcmlkIHwgbnVsbCA9IG51bGw7XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzKSB7XG4gICAgLypcbiAgICAgKiBUaGlzIGhhY2sgZXhpc3RzIGJlY2F1c2UgaW4gcmVhY3QtdmlydHVhbGl6ZWQgdGhlXG4gICAgICogX2NvbHVtbldpZHRoR2V0dGVyIGlzIG9ubHkgY2FsbGVkIGluIHRoZSBjb25zdHJ1Y3RvclxuICAgICAqIGV2ZW4gdGhvdWdoIGl0IGlzIHJlYXNzaWduZWQgd2l0aCBuZXcgcHJvcHMgcmVzdWx0aW5nIGluXG4gICAgICogYSBuZXcgd2lkdGggZm9yIGNlbGxzIG5vdCBiZWluZyBjYWxjdWxhdGVkIHNvIHdlIG11c3RcbiAgICAgKiBmb3JjZSB0cmlnZ2VyIGEgcmVzaXplLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly9naXRodWIuY29tL2J2YXVnaG4vcmVhY3QtdmlydHVhbGl6ZWQvYmxvYi9tYXN0ZXIvc291cmNlL0dyaWQvR3JpZC5qcyNMMzIyXG4gICAgICpcbiAgICAgKi9cbiAgICBpZiAoIWlzRXF1YWwocHJlUHJvcHMuY2VsbFNpemVDYWNoZSwgdGhpcy5wcm9wcy5jZWxsU2l6ZUNhY2hlKSkge1xuICAgICAgdGhpcy5ncmlkPy5yZWNvbXB1dGVHcmlkU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgX3Njcm9sbGluZ0NvbnRhaW5lciBub3QgdHlwZWQgaW4gR3JpZFxuICAgIHRoaXMuZ3JpZD8uX3Njcm9sbGluZ0NvbnRhaW5lcj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl9wcmV2ZW50U2Nyb2xsQmFjaywge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIF9wcmV2ZW50U2Nyb2xsQmFjayA9IGUgPT4ge1xuICAgIGNvbnN0IHtzY3JvbGxMZWZ0fSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHNjcm9sbExlZnQgIT09IHVuZGVmaW5lZCAmJiBzY3JvbGxMZWZ0IDw9IDAgJiYgZS5kZWx0YVggPCAwKSB7XG4gICAgICAvLyBQcmV2ZW50IFNjcm9sbCBPbiBTY3JvbGxhYmxlIEVsZW1lbnRzLCBhdm9pZCBicm93c2VyIGJhY2t3YXJkIG5hdmlnYXRpb25cbiAgICAgIC8vIGh0dHBzOi8vYWx2YXJvdHJpZ28uY29tL2Jsb2cvcHJldmVudC1zY3JvbGwtb24tc2Nyb2xsYWJsZS1lbGVtZW50LWpzL1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIF91cGRhdGVSZWYgPSB4ID0+IHtcbiAgICBpZiAoIXRoaXMuZ3JpZCAmJiB4KSB7XG4gICAgICB0aGlzLmdyaWQgPSB4O1xuICAgICAgLypcbiAgICAgICAqIFRoaXMgaGFjayBleGlzdHMgYmVjYXVzZSB3ZSBuZWVkIHRvIGFkZCB3aGVlbCBldmVudCBsaXN0ZW5lciB0byB0aGUgZGl2IHJlbmRlcmVkIGJ5IEdyaWRcbiAgICAgICAqXG4gICAgICAgKi9cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgX3Njcm9sbGluZ0NvbnRhaW5lciBub3QgdHlwZWQgaW4gR3JpZFxuICAgICAgdGhpcy5ncmlkPy5fc2Nyb2xsaW5nQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMuX3ByZXZlbnRTY3JvbGxCYWNrLCB7XG4gICAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtzZXRHcmlkUmVmLCAuLi5yZXN0fSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkXG4gICAgICAgIHJlZj17eCA9PiB7XG4gICAgICAgICAgaWYgKHNldEdyaWRSZWYpIHNldEdyaWRSZWYoeCk7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlUmVmKHgpO1xuICAgICAgICB9fVxuICAgICAgICBrZXk9XCJncmlkLWhhY2tcIlxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7O0FBRUEsT0FBT0EsS0FBSyxJQUFHQyxhQUFhLFFBQU8sT0FBTztBQUMxQyxTQUFRQyxJQUFJLFFBQWtCLG1CQUFtQjtBQUNqRCxPQUFPQyxPQUFPLE1BQU0sMkJBQTJCO0FBQUMsSUFFM0JDLFFBQVEsMEJBQUFDLGNBQUE7RUFBQSxTQUFBRCxTQUFBO0lBQUEsSUFBQUUsS0FBQTtJQUFBQyxlQUFBLE9BQUFILFFBQUE7SUFBQSxTQUFBSSxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFBQyxJQUFBLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxHQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO01BQUFGLElBQUEsQ0FBQUUsSUFBQSxJQUFBSixTQUFBLENBQUFJLElBQUE7SUFBQTtJQUFBUCxLQUFBLEdBQUFRLFVBQUEsT0FBQVYsUUFBQSxLQUFBVyxNQUFBLENBQUFKLElBQUE7SUFBQUssZUFBQSxDQUFBVixLQUFBLFVBQ1AsSUFBSTtJQUFBVSxlQUFBLENBQUFWLEtBQUEsd0JBeUJILFVBQUFXLENBQUMsRUFBSTtNQUN4QixJQUFPQyxVQUFVLEdBQUlaLEtBQUEsQ0FBS2EsS0FBSyxDQUF4QkQsVUFBVTtNQUNqQixJQUFJQSxVQUFVLEtBQUtFLFNBQVMsSUFBSUYsVUFBVSxJQUFJLENBQUMs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
@@ -1,41 +1,95 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
4
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
4
- var _templateObject;
5
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
5
6
  // SPDX-License-Identifier: MIT
6
7
  // Copyright contributors to the kepler.gl project
7
8
 
8
- import React, { useState, useCallback } from 'react';
9
+ import React, { useState, useCallback, useEffect } from 'react';
9
10
  import styled from 'styled-components';
10
11
  import classnames from 'classnames';
11
12
  import Button from './button';
12
13
  import { ArrowUp, ArrowDown, VertThreeDots, Hash } from '../../common/icons';
13
14
  import { SORT_ORDER } from '@kepler.gl/constants';
14
15
  import OptionDropdown, { FormatterDropdown } from './option-dropdown';
15
- import { getFieldFormatLabels } from '@kepler.gl/utils';
16
+ import { ColumnStatsType, getFieldFormatLabels } from '@kepler.gl/utils';
16
17
  import FieldTokenFactory from '../../common/field-token';
17
- var StyledHeaderCell = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n border-bottom: 1px solid ", ";\n border-top: 1px solid ", ";\n padding-top: ", "px;\n padding-right: 0;\n padding-bottom: ", "px;\n padding-left: ", "px;\n align-items: center;\n justify-content: space-between;\n display: flex;\n flex-direction: row;\n background-color: ", ";\n\n .n-sort-idx {\n font-size: 9px;\n }\n .details {\n font-weight: 500;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n height: 100%;\n overflow: hidden;\n flex-grow: 1;\n\n .col-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n .col-name__left {\n display: flex;\n align-items: center;\n overflow: hidden;\n\n svg {\n margin-left: 6px;\n }\n }\n .col-name__name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n\n .more {\n margin-left: 5px;\n }\n\n .col-name__format svg {\n width: 10px;\n height: 10px;\n stroke-width: 1;\n }\n"])), function (props) {
18
+ import LoadingSpinner from '../loading-spinner';
19
+ import ColumnStatisticsCategorical from './column-statistics-categoric';
20
+ import ColumnStatisticsNumericFactory from './column-statistics-numeric';
21
+ import ColumnStatisticsTimeFactory from './column-statistics-time';
22
+ var StyledHeaderCell = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n border-bottom: 1px solid ", ";\n border-top: 1px solid ", ";\n border-right: ", ";\n padding-top: ", "px;\n padding-right: 0;\n padding-bottom: ", "px;\n padding-left: ", "px;\n align-items: ", ";\n justify-content: ", ";\n display: flex;\n flex-direction: ", ";\n background-color: ", ";\n overflow: hidden;\n\n .n-sort-idx {\n font-size: 9px;\n }\n .header-cell__top {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n height: ", "px;\n flex: 0 0 auto;\n box-sizing: border-box;\n padding-top: ", "px;\n padding-bottom: ", "px;\n padding-left: ", "px;\n }\n .details {\n font-weight: 500;\n font-size: ", "px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n height: 100%;\n overflow: hidden;\n flex-grow: 1;\n\n .col-name {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-left: 6px;\n min-width: 0;\n flex: 1;\n\n .col-name__left {\n display: flex;\n align-items: center;\n overflow: hidden;\n\n svg {\n margin-left: 6px;\n }\n }\n .col-name__name {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n\n .more {\n margin-left: 5px;\n }\n\n .col-name__format svg {\n width: 10px;\n height: 10px;\n stroke-width: 1;\n }\n"])), function (props) {
18
23
  return props.theme.headerCellBorderColor;
19
24
  }, function (props) {
20
25
  return props.theme.headerCellBorderColor;
26
+ }, function (props) {
27
+ return props.$hasStats ? "1px solid ".concat(props.theme.cellBorderColor) : 'none';
28
+ }, function (props) {
29
+ return props.$hasStats ? 0 : props.theme.headerPaddingTop;
30
+ }, function (props) {
31
+ return props.$hasStats ? 0 : props.theme.headerPaddingBottom;
32
+ }, function (props) {
33
+ return props.$hasStats ? 0 : props.theme.cellPaddingSide;
34
+ }, function (props) {
35
+ return props.$hasStats ? 'stretch' : 'center';
36
+ }, function (props) {
37
+ return props.$hasStats ? 'flex-start' : 'space-between';
38
+ }, function (props) {
39
+ return props.$hasStats ? 'column' : 'row';
40
+ }, function (props) {
41
+ return props.theme.headerCellBackground;
42
+ }, function (props) {
43
+ return props.theme.headerRowHeight;
21
44
  }, function (props) {
22
45
  return props.theme.headerPaddingTop;
23
46
  }, function (props) {
24
47
  return props.theme.headerPaddingBottom;
25
48
  }, function (props) {
26
- return props.theme.cellPaddingSide;
49
+ return props.$firstCell ? props.theme.cellPaddingSide + props.theme.edgeCellPaddingSide : props.theme.cellPaddingSide;
27
50
  }, function (props) {
28
- return props.theme.headerCellBackground;
51
+ return props.theme.cellFontSize;
52
+ });
53
+ var StyledBottomStats = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background-color: ", ";\n flex-grow: 1;\n min-height: 0;\n overflow: hidden;\n opacity: ", ";\n transition: opacity 0.5s ease-in-out;\n pointer-events: ", ";\n width: 100%;\n"])), function (props) {
54
+ return props.theme.headerCellStatsBackground;
55
+ }, function (props) {
56
+ return props.$showStats ? 1 : 0;
57
+ }, function (props) {
58
+ return props.$showStats ? 'auto' : 'none';
29
59
  });
30
- var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
31
- var HeaderCell = function HeaderCell(_ref) {
60
+ var StyledLoading = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n width: 100%;\n padding-top: 16px;\n display: flex;\n justify-content: center;\n"])));
61
+ var StyledStatsSpacer = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n height: ", "px;\n width: 100%;\n flex-grow: 0;\n"])), function (props) {
62
+ return props.theme.headerStatsControlHeight;
63
+ });
64
+ function HeaderCellFactory(FieldToken, ColumnStatisticsNumeric, ColumnStatisticsTime) {
65
+ var ColumnStatisticsSection = function ColumnStatisticsSection(_ref) {
66
+ var columnStats = _ref.columnStats,
67
+ type = _ref.type,
68
+ format = _ref.format;
69
+ switch (columnStats.type) {
70
+ case ColumnStatsType.numeric:
71
+ return /*#__PURE__*/React.createElement(ColumnStatisticsNumeric, _extends({}, columnStats, {
72
+ type: type
73
+ }));
74
+ case ColumnStatsType.categorical:
75
+ return /*#__PURE__*/React.createElement(ColumnStatisticsCategorical, columnStats);
76
+ case ColumnStatsType.time:
77
+ return /*#__PURE__*/React.createElement(ColumnStatisticsTime, _extends({}, columnStats, {
78
+ format: format
79
+ }));
80
+ default:
81
+ return /*#__PURE__*/React.createElement("div", null);
82
+ }
83
+ };
84
+ var HeaderCell = function HeaderCell(_ref2) {
32
85
  var _colMeta$column;
33
- var cellInfo = _ref.cellInfo,
34
- columns = _ref.columns,
35
- isPinned = _ref.isPinned,
36
- props = _ref.props,
37
- toggleMoreOptions = _ref.toggleMoreOptions,
38
- moreOptionsColumn = _ref.moreOptionsColumn;
86
+ var cellInfo = _ref2.cellInfo,
87
+ columns = _ref2.columns,
88
+ isPinned = _ref2.isPinned,
89
+ showStats = _ref2.showStats,
90
+ props = _ref2.props,
91
+ toggleMoreOptions = _ref2.toggleMoreOptions,
92
+ moreOptionsColumn = _ref2.moreOptionsColumn;
39
93
  var columnIndex = cellInfo.columnIndex,
40
94
  key = cellInfo.key,
41
95
  style = cellInfo.style;
@@ -44,47 +98,57 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
44
98
  sortTableColumn = props.sortTableColumn,
45
99
  pinTableColumn = props.pinTableColumn,
46
100
  copyTableColumn = props.copyTableColumn,
47
- setColumnDisplayFormat = props.setColumnDisplayFormat;
101
+ setColumnDisplayFormat = props.setColumnDisplayFormat,
102
+ hasStats = props.hasStats,
103
+ dataId = props.dataId,
104
+ loadColumnStats = props.loadColumnStats;
48
105
  var _useState = useState(false),
49
106
  _useState2 = _slicedToArray(_useState, 2),
50
107
  showFormatter = _useState2[0],
51
108
  setShowFormatter = _useState2[1];
52
109
  var column = columns[columnIndex];
53
- var isGhost = column.ghost;
54
- var isSorted = sortColumn[column];
110
+ var isGhost = Boolean(column.ghost);
111
+ var isSorted = isGhost ? false : sortColumn[column];
55
112
  var firstCell = columnIndex === 0;
56
- var isFormatted = Boolean((_colMeta$column = colMeta[column]) === null || _colMeta$column === void 0 ? void 0 : _colMeta$column.displayFormat);
57
- var formatLabels = isFormatted ? getFieldFormatLabels(colMeta[column].type) : [];
113
+ var _ref3 = colMeta[isGhost ? '' : column] || {},
114
+ columnStats = _ref3.columnStats,
115
+ isLoadingStats = _ref3.isLoadingStats,
116
+ type = _ref3.type,
117
+ format = _ref3.format;
118
+ var isFormatted = isGhost ? false : Boolean((_colMeta$column = colMeta[column]) === null || _colMeta$column === void 0 ? void 0 : _colMeta$column.displayFormat);
119
+ var formatLabels = isFormatted && !isGhost ? getFieldFormatLabels(colMeta[column].type) : [];
120
+ useEffect(function () {
121
+ if (!isGhost && !columnStats && !isLoadingStats && dataId && showStats && hasStats && loadColumnStats) {
122
+ loadColumnStats(dataId, column);
123
+ }
124
+ }, [isGhost, columnStats, isLoadingStats, column, dataId, showStats, hasStats, loadColumnStats]);
58
125
  var onSortTable = useCallback(function () {
59
- return sortTableColumn === null || sortTableColumn === void 0 ? void 0 : sortTableColumn(column);
60
- }, [sortTableColumn, column]);
126
+ if (!isGhost) sortTableColumn === null || sortTableColumn === void 0 || sortTableColumn(column);
127
+ }, [sortTableColumn, isGhost, column]);
61
128
  var onToggleOptionMenu = useCallback(function () {
62
- return toggleMoreOptions(column);
63
- }, [toggleMoreOptions, column]);
129
+ if (!isGhost) toggleMoreOptions(column);
130
+ }, [toggleMoreOptions, isGhost, column]);
64
131
  var onPin = useCallback(function () {
65
- return pinTableColumn(column);
66
- }, [pinTableColumn, column]);
132
+ if (!isGhost) pinTableColumn(column);
133
+ }, [pinTableColumn, isGhost, column]);
67
134
  var onCopy = useCallback(function () {
68
- return copyTableColumn(column);
69
- }, [copyTableColumn, column]);
135
+ if (!isGhost) copyTableColumn(column);
136
+ }, [copyTableColumn, isGhost, column]);
70
137
  var onSetDisplayFormat = useCallback(function (displayFormat) {
71
- setColumnDisplayFormat === null || setColumnDisplayFormat === void 0 || setColumnDisplayFormat(_defineProperty({}, column, displayFormat.format));
72
- }, [column, setColumnDisplayFormat]);
138
+ if (!isGhost) setColumnDisplayFormat === null || setColumnDisplayFormat === void 0 || setColumnDisplayFormat(_defineProperty({}, column, displayFormat.format));
139
+ }, [column, isGhost, setColumnDisplayFormat]);
73
140
  var onToggleDisplayFormat = useCallback(function () {
74
141
  setShowFormatter(!showFormatter);
75
142
  }, [showFormatter]);
76
- return /*#__PURE__*/React.createElement(StyledHeaderCell, {
77
- className: classnames('header-cell', _defineProperty(_defineProperty(_defineProperty({}, "column-".concat(columnIndex), true), 'pinned-header-cell', isPinned), 'first-cell', firstCell)),
78
- key: key,
79
- style: style,
143
+ var headerDetails = isGhost ? /*#__PURE__*/React.createElement("div", null) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("section", {
144
+ className: "details",
80
145
  onClick: function onClick(e) {
81
- e.shiftKey ? sortTableColumn(column) : null;
146
+ if (e.shiftKey && !isGhost) sortTableColumn === null || sortTableColumn === void 0 || sortTableColumn(column);
82
147
  },
83
- onDoubleClick: onSortTable,
84
- title: column
85
- }, isGhost ? /*#__PURE__*/React.createElement("div", null) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("section", {
86
- className: "details"
87
- }, /*#__PURE__*/React.createElement("div", {
148
+ onDoubleClick: onSortTable
149
+ }, /*#__PURE__*/React.createElement(FieldToken, {
150
+ type: colMeta[column].type
151
+ }), /*#__PURE__*/React.createElement("div", {
88
152
  className: "col-name"
89
153
  }, /*#__PURE__*/React.createElement("div", {
90
154
  className: "col-name__left"
@@ -117,9 +181,7 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
117
181
  onClick: onToggleOptionMenu
118
182
  }, /*#__PURE__*/React.createElement(VertThreeDots, {
119
183
  height: "14px"
120
- }))), /*#__PURE__*/React.createElement(FieldToken, {
121
- type: colMeta[column].type
122
- })), /*#__PURE__*/React.createElement("section", {
184
+ })))), /*#__PURE__*/React.createElement("section", {
123
185
  className: "options"
124
186
  }, /*#__PURE__*/React.createElement(OptionDropdown, {
125
187
  isOpened: moreOptionsColumn === column,
@@ -132,10 +194,27 @@ var HeaderCellFactory = function HeaderCellFactory(FieldToken) {
132
194
  pinTableColumn: onPin,
133
195
  copyTableColumn: onCopy,
134
196
  setDisplayFormat: setColumnDisplayFormat ? onSetDisplayFormat : undefined
135
- }))));
197
+ })));
198
+ return /*#__PURE__*/React.createElement(StyledHeaderCell, {
199
+ className: classnames('header-cell', _defineProperty(_defineProperty(_defineProperty({}, "column-".concat(columnIndex), true), 'pinned-header-cell', isPinned), 'first-cell', firstCell)),
200
+ key: key,
201
+ style: style,
202
+ $hasStats: Boolean(hasStats),
203
+ $firstCell: firstCell,
204
+ title: isGhost ? undefined : column
205
+ }, hasStats && !isGhost ? /*#__PURE__*/React.createElement("div", {
206
+ className: "header-cell__top"
207
+ }, headerDetails) : headerDetails, hasStats && !isGhost ? /*#__PURE__*/React.createElement(StyledStatsSpacer, null) : null, hasStats && !isGhost ? /*#__PURE__*/React.createElement(StyledBottomStats, {
208
+ className: "bottom-stats",
209
+ $showStats: showStats
210
+ }, isLoadingStats ? /*#__PURE__*/React.createElement(StyledLoading, null, /*#__PURE__*/React.createElement(LoadingSpinner, null)) : columnStats ? /*#__PURE__*/React.createElement(ColumnStatisticsSection, {
211
+ columnStats: columnStats,
212
+ type: type,
213
+ format: format
214
+ }) : null) : null);
136
215
  };
137
216
  return HeaderCell;
138
- };
139
- HeaderCellFactory.deps = [FieldTokenFactory];
217
+ }
218
+ HeaderCellFactory.deps = [FieldTokenFactory, ColumnStatisticsNumericFactory, ColumnStatisticsTimeFactory];
140
219
  export default HeaderCellFactory;
141
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJzdHlsZWQiLCJjbGFzc25hbWVzIiwiQnV0dG9uIiwiQXJyb3dVcCIsIkFycm93RG93biIsIlZlcnRUaHJlZURvdHMiLCJIYXNoIiwiU09SVF9PUkRFUiIsIk9wdGlvbkRyb3Bkb3duIiwiRm9ybWF0dGVyRHJvcGRvd24iLCJnZXRGaWVsZEZvcm1hdExhYmVscyIsIkZpZWxkVG9rZW5GYWN0b3J5IiwiU3R5bGVkSGVhZGVyQ2VsbCIsImRpdiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJwcm9wcyIsInRoZW1lIiwiaGVhZGVyQ2VsbEJvcmRlckNvbG9yIiwiaGVhZGVyUGFkZGluZ1RvcCIsImhlYWRlclBhZGRpbmdCb3R0b20iLCJjZWxsUGFkZGluZ1NpZGUiLCJoZWFkZXJDZWxsQmFja2dyb3VuZCIsIkhlYWRlckNlbGxGYWN0b3J5IiwiRmllbGRUb2tlbiIsIkhlYWRlckNlbGwiLCJfcmVmIiwiX2NvbE1ldGEkY29sdW1uIiwiY2VsbEluZm8iLCJjb2x1bW5zIiwiaXNQaW5uZWQiLCJ0b2dnbGVNb3JlT3B0aW9ucyIsIm1vcmVPcHRpb25zQ29sdW1uIiwiY29sdW1uSW5kZXgiLCJrZXkiLCJzdHlsZSIsImNvbE1ldGEiLCJzb3J0Q29sdW1uIiwic29ydFRhYmxlQ29sdW1uIiwicGluVGFibGVDb2x1bW4iLCJjb3B5VGFibGVDb2x1bW4iLCJzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd0Zvcm1hdHRlciIsInNldFNob3dGb3JtYXR0ZXIiLCJjb2x1bW4iLCJpc0dob3N0IiwiZ2hvc3QiLCJpc1NvcnRlZCIsImZpcnN0Q2VsbCIsImlzRm9ybWF0dGVkIiwiQm9vbGVhbiIsImRpc3BsYXlGb3JtYXQiLCJmb3JtYXRMYWJlbHMiLCJ0eXBlIiwib25Tb3J0VGFibGUiLCJvblRvZ2dsZU9wdGlvbk1lbnUiLCJvblBpbiIsIm9uQ29weSIsIm9uU2V0RGlzcGxheUZvcm1hdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImZvcm1hdCIsIm9uVG9nZ2xlRGlzcGxheUZvcm1hdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb25jYXQiLCJvbkNsaWNrIiwiZSIsInNoaWZ0S2V5Iiwib25Eb3VibGVDbGljayIsInRpdGxlIiwiRnJhZ21lbnQiLCJuYW1lIiwiQVNDRU5ESU5HIiwiaGVpZ2h0IiwibGVmdCIsInRvcCIsImlzT3BlbmVkIiwic2V0RGlzcGxheUZvcm1hdCIsIm9uQ2xvc2UiLCJtb2RlIiwidW5kZWZpbmVkIiwiZGVwcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9oZWFkZXItY2VsbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q1NTUHJvcGVydGllcywgdXNlU3RhdGUsIHVzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL2J1dHRvbic7XG5pbXBvcnQge0Fycm93VXAsIEFycm93RG93biwgVmVydFRocmVlRG90cywgSGFzaH0gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7U09SVF9PUkRFUn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IE9wdGlvbkRyb3Bkb3duLCB7Rm9ybWF0dGVyRHJvcGRvd259IGZyb20gJy4vb3B0aW9uLWRyb3Bkb3duJztcbmltcG9ydCB7Z2V0RmllbGRGb3JtYXRMYWJlbHN9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtDb2xNZXRhfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCBGaWVsZFRva2VuRmFjdG9yeSwge0ZpZWxkVG9rZW5Qcm9wc30gZnJvbSAnLi4vLi4vY29tbW9uL2ZpZWxkLXRva2VuJztcbmltcG9ydCB7RGF0YVRhYmxlUHJvcHN9IGZyb20gJy4vaW5kZXgnO1xuXG5jb25zdCBTdHlsZWRIZWFkZXJDZWxsID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyQ2VsbEJvcmRlckNvbG9yfTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyQ2VsbEJvcmRlckNvbG9yfTtcbiAgcGFkZGluZy10b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyUGFkZGluZ1RvcH1weDtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1ib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyUGFkZGluZ0JvdHRvbX1weDtcbiAgcGFkZGluZy1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxQYWRkaW5nU2lkZX1weDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCYWNrZ3JvdW5kfTtcblxuICAubi1zb3J0LWlkeCB7XG4gICAgZm9udC1zaXplOiA5cHg7XG4gIH1cbiAgLmRldGFpbHMge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAuY29sLW5hbWUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgICAgIC5jb2wtbmFtZV9fbGVmdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuY29sLW5hbWVfX25hbWUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubW9yZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgfVxuXG4gIC5jb2wtbmFtZV9fZm9ybWF0IHN2ZyB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICAgIHN0cm9rZS13aWR0aDogMTtcbiAgfVxuYDtcblxudHlwZSBDZWxsSW5mbyA9IHtcbiAgY29sdW1uSW5kZXg6IG51bWJlcjtcbiAgaXNTY3JvbGxpbmc6IGJvb2xlYW47XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAga2V5OiBzdHJpbmc7XG4gIHBhcmVudDogYW55O1xuICByb3dJbmRleDogbnVtYmVyO1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbn07XG5cbnR5cGUgSGVhZGVyQ2VsbFByb3BzID0ge1xuICAvLyBwYXNzZWQgZG93biBmcm9tIHJlYWN0IHZpcnR1YWxpemVkIEdyaWRcbiAgY2VsbEluZm86IENlbGxJbmZvO1xuICBjb2x1bW5zOiBEYXRhVGFibGVQcm9wc1snY29sdW1ucyddO1xuICBjb2xNZXRhPzogQ29sTWV0YTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBzaG93U3RhdHM/OiBib29sZWFuO1xuICBwcm9wczogRGF0YVRhYmxlUHJvcHM7XG4gIHRvZ2dsZU1vcmVPcHRpb25zOiAobW9yZU9wdGlvbnNDb2x1bW46IHN0cmluZykgPT4gdm9pZDtcbiAgbW9yZU9wdGlvbnNDb2x1bW46IG51bGwgfCBzdHJpbmc7XG4gIHN0eWxlOiBDU1NQcm9wZXJ0aWVzO1xufTtcblxuY29uc3QgSGVhZGVyQ2VsbEZhY3RvcnkgPSAoRmllbGRUb2tlbjogUmVhY3QuRkM8RmllbGRUb2tlblByb3BzPikgPT4ge1xuICBjb25zdCBIZWFkZXJDZWxsID0gKHtcbiAgICBjZWxsSW5mbyxcbiAgICBjb2x1bW5zLFxuICAgIGlzUGlubmVkLFxuICAgIHByb3BzLFxuICAgIHRvZ2dsZU1vcmVPcHRpb25zLFxuICAgIG1vcmVPcHRpb25zQ29sdW1uXG4gIH06IEhlYWRlckNlbGxQcm9wcykgPT4ge1xuICAgIGNvbnN0IHtjb2x1bW5JbmRleCwga2V5LCBzdHlsZX0gPSBjZWxsSW5mbztcbiAgICBjb25zdCB7XG4gICAgICBjb2xNZXRhLFxuICAgICAgc29ydENvbHVtbixcbiAgICAgIHNvcnRUYWJsZUNvbHVtbixcbiAgICAgIHBpblRhYmxlQ29sdW1uLFxuICAgICAgY29weVRhYmxlQ29sdW1uLFxuICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdFxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBbc2hvd0Zvcm1hdHRlciwgc2V0U2hvd0Zvcm1hdHRlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRleF07XG5cbiAgICBjb25zdCBpc0dob3N0ID0gY29sdW1uLmdob3N0O1xuICAgIGNvbnN0IGlzU29ydGVkID0gc29ydENvbHVtbltjb2x1bW5dO1xuICAgIGNvbnN0IGZpcnN0Q2VsbCA9IGNvbHVtbkluZGV4ID09PSAwO1xuICAgIGNvbnN0IGlzRm9ybWF0dGVkID0gQm9vbGVhbihjb2xNZXRhW2NvbHVtbl0/LmRpc3BsYXlGb3JtYXQpO1xuICAgIGNvbnN0IGZvcm1hdExhYmVscyA9IGlzRm9ybWF0dGVkID8gZ2V0RmllbGRGb3JtYXRMYWJlbHMoY29sTWV0YVtjb2x1bW5dLnR5cGUpIDogW107XG4gICAgY29uc3Qgb25Tb3J0VGFibGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzb3J0VGFibGVDb2x1bW4/Lihjb2x1bW4pLCBbc29ydFRhYmxlQ29sdW1uLCBjb2x1bW5dKTtcbiAgICBjb25zdCBvblRvZ2dsZU9wdGlvbk1lbnUgPSB1c2VDYWxsYmFjayhcbiAgICAgICgpID0+IHRvZ2dsZU1vcmVPcHRpb25zKGNvbHVtbiksXG4gICAgICBbdG9nZ2xlTW9yZU9wdGlvbnMsIGNvbHVtbl1cbiAgICApO1xuICAgIGNvbnN0IG9uUGluID0gdXNlQ2FsbGJhY2soKCkgPT4gcGluVGFibGVDb2x1bW4oY29sdW1uKSwgW3BpblRhYmxlQ29sdW1uLCBjb2x1bW5dKTtcbiAgICBjb25zdCBvbkNvcHkgPSB1c2VDYWxsYmFjaygoKSA9PiBjb3B5VGFibGVDb2x1bW4oY29sdW1uKSwgW2NvcHlUYWJsZUNvbHVtbiwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25TZXREaXNwbGF5Rm9ybWF0ID0gdXNlQ2FsbGJhY2soXG4gICAgICBkaXNwbGF5Rm9ybWF0ID0+IHtcbiAgICAgICAgc2V0Q29sdW1uRGlzcGxheUZvcm1hdD8uKHtbY29sdW1uXTogZGlzcGxheUZvcm1hdC5mb3JtYXR9KTtcbiAgICAgIH0sXG4gICAgICBbY29sdW1uLCBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0XVxuICAgICk7XG5cbiAgICBjb25zdCBvblRvZ2dsZURpc3BsYXlGb3JtYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBzZXRTaG93Rm9ybWF0dGVyKCFzaG93Rm9ybWF0dGVyKTtcbiAgICB9LCBbc2hvd0Zvcm1hdHRlcl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRIZWFkZXJDZWxsXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnaGVhZGVyLWNlbGwnLCB7XG4gICAgICAgICAgW2Bjb2x1bW4tJHtjb2x1bW5JbmRleH1gXTogdHJ1ZSxcbiAgICAgICAgICAncGlubmVkLWhlYWRlci1jZWxsJzogaXNQaW5uZWQsXG4gICAgICAgICAgJ2ZpcnN0LWNlbGwnOiBmaXJzdENlbGxcbiAgICAgICAgfSl9XG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgIGUuc2hpZnRLZXkgPyBzb3J0VGFibGVDb2x1bW4oY29sdW1uKSA6IG51bGw7XG4gICAgICAgIH19XG4gICAgICAgIG9uRG91YmxlQ2xpY2s9e29uU29ydFRhYmxlfVxuICAgICAgICB0aXRsZT17Y29sdW1ufVxuICAgICAgPlxuICAgICAgICB7aXNHaG9zdCA/IChcbiAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cImRldGFpbHNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW5hbWVfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW5hbWVfX25hbWVcIj57Y29sTWV0YVtjb2x1bW5dLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImNvbC1uYW1lX19zb3J0XCIgb25DbGljaz17b25Tb3J0VGFibGV9PlxuICAgICAgICAgICAgICAgICAgICB7aXNTb3J0ZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgaXNTb3J0ZWQgPT09IFNPUlRfT1JERVIuQVNDRU5ESU5HID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXAgaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fZm9ybWF0XCIgb25DbGljaz17b25Ub2dnbGVEaXNwbGF5Rm9ybWF0fT5cbiAgICAgICAgICAgICAgICAgICAge2lzRm9ybWF0dGVkID8gPEhhc2ggaGVpZ2h0PVwiMTRweFwiIC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlckRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgICAgbGVmdD17MH1cbiAgICAgICAgICAgICAgICAgICAgICB0b3A9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgaXNPcGVuZWQ9e2lzRm9ybWF0dGVkICYmIHNob3dGb3JtYXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD17Y29sTWV0YVtjb2x1bW5dLmRpc3BsYXlGb3JtYXR9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0RGlzcGxheUZvcm1hdD17b25TZXREaXNwbGF5Rm9ybWF0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dGb3JtYXR0ZXIoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdExhYmVscz17Zm9ybWF0TGFiZWxzfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJtb3JlXCIgb25DbGljaz17b25Ub2dnbGVPcHRpb25NZW51fT5cbiAgICAgICAgICAgICAgICAgIDxWZXJ0VGhyZWVEb3RzIGhlaWdodD1cIjE0cHhcIiAvPlxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPEZpZWxkVG9rZW4gdHlwZT17Y29sTWV0YVtjb2x1bW5dLnR5cGV9IC8+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cIm9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgPE9wdGlvbkRyb3Bkb3duXG4gICAgICAgICAgICAgICAgaXNPcGVuZWQ9e21vcmVPcHRpb25zQ29sdW1uID09PSBjb2x1bW59XG4gICAgICAgICAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgICAgICAgICAgY29sTWV0YT17Y29sTWV0YX1cbiAgICAgICAgICAgICAgICB0b2dnbGVNb3JlT3B0aW9ucz17dG9nZ2xlTW9yZU9wdGlvbnN9XG4gICAgICAgICAgICAgICAgc29ydFRhYmxlQ29sdW1uPXtcbiAgICAgICAgICAgICAgICAgIHNvcnRUYWJsZUNvbHVtbiA/IG1vZGUgPT4gc29ydFRhYmxlQ29sdW1uKGNvbHVtbiwgbW9kZSkgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGluVGFibGVDb2x1bW49e29uUGlufVxuICAgICAgICAgICAgICAgIGNvcHlUYWJsZUNvbHVtbj17b25Db3B5fVxuICAgICAgICAgICAgICAgIHNldERpc3BsYXlGb3JtYXQ9e3NldENvbHVtbkRpc3BsYXlGb3JtYXQgPyBvblNldERpc3BsYXlGb3JtYXQgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1N0eWxlZEhlYWRlckNlbGw+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIEhlYWRlckNlbGw7XG59O1xuSGVhZGVyQ2VsbEZhY3RvcnkuZGVwcyA9IFtGaWVsZFRva2VuRmFjdG9yeV07XG5leHBvcnQgZGVmYXVsdCBIZWFkZXJDZWxsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsT0FBT0EsS0FBSyxJQUFrQkMsUUFBUSxFQUFFQyxXQUFXLFFBQU8sT0FBTztBQUNqRSxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLFVBQVUsTUFBTSxZQUFZO0FBQ25DLE9BQU9DLE1BQU0sTUFBTSxVQUFVO0FBQzdCLFNBQVFDLE9BQU8sRUFBRUMsU0FBUyxFQUFFQyxhQUFhLEVBQUVDLElBQUksUUFBTyxvQkFBb0I7QUFDMUUsU0FBUUMsVUFBVSxRQUFPLHNCQUFzQjtBQUMvQyxPQUFPQyxjQUFjLElBQUdDLGlCQUFpQixRQUFPLG1CQUFtQjtBQUNuRSxTQUFRQyxvQkFBb0IsUUFBTyxrQkFBa0I7QUFFckQsT0FBT0MsaUJBQWlCLE1BQXlCLDBCQUEwQjtBQUczRSxJQUFNQyxnQkFBZ0IsR0FBR1osTUFBTSxDQUFDYSxHQUFHLENBQUFDLGVBQUEsS0FBQUEsZUFBQSxHQUFBQyxzQkFBQSx3akNBQ04sVUFBQUMsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDQyxxQkFBcUI7QUFBQSxHQUM3QyxVQUFBRixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNDLHFCQUFxQjtBQUFBLEdBQ25ELFVBQUFGLEtBQUs7RUFBQSxPQUFJQSxLQUFLLENBQUNDLEtBQUssQ0FBQ0UsZ0JBQWdCO0FBQUEsR0FFbEMsVUFBQUgsS0FBSztFQUFBLE9BQUlBLEtBQUssQ0FBQ0MsS0FBSyxDQUFDRyxtQkFBbUI7QUFBQSxHQUMxQyxVQUFBSixLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENBQUNJLGVBQWU7QUFBQSxHQUtoQyxVQUFBTCxLQUFLO0VBQUEsT0FBSUEsS0FBSyxDQUFDQyxLQUFLLENB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
220
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VFZmZlY3QiLCJzdHlsZWQiLCJjbGFzc25hbWVzIiwiQnV0dG9uIiwiQXJyb3dVcCIsIkFycm93RG93biIsIlZlcnRUaHJlZURvdHMiLCJIYXNoIiwiU09SVF9PUkRFUiIsIk9wdGlvbkRyb3Bkb3duIiwiRm9ybWF0dGVyRHJvcGRvd24iLCJDb2x1bW5TdGF0c1R5cGUiLCJnZXRGaWVsZEZvcm1hdExhYmVscyIsIkZpZWxkVG9rZW5GYWN0b3J5IiwiTG9hZGluZ1NwaW5uZXIiLCJDb2x1bW5TdGF0aXN0aWNzQ2F0ZWdvcmljYWwiLCJDb2x1bW5TdGF0aXN0aWNzTnVtZXJpY0ZhY3RvcnkiLCJDb2x1bW5TdGF0aXN0aWNzVGltZUZhY3RvcnkiLCJTdHlsZWRIZWFkZXJDZWxsIiwiZGl2IiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsInByb3BzIiwidGhlbWUiLCJoZWFkZXJDZWxsQm9yZGVyQ29sb3IiLCIkaGFzU3RhdHMiLCJjb25jYXQiLCJjZWxsQm9yZGVyQ29sb3IiLCJoZWFkZXJQYWRkaW5nVG9wIiwiaGVhZGVyUGFkZGluZ0JvdHRvbSIsImNlbGxQYWRkaW5nU2lkZSIsImhlYWRlckNlbGxCYWNrZ3JvdW5kIiwiaGVhZGVyUm93SGVpZ2h0IiwiJGZpcnN0Q2VsbCIsImVkZ2VDZWxsUGFkZGluZ1NpZGUiLCJjZWxsRm9udFNpemUiLCJTdHlsZWRCb3R0b21TdGF0cyIsIl90ZW1wbGF0ZU9iamVjdDIiLCJoZWFkZXJDZWxsU3RhdHNCYWNrZ3JvdW5kIiwiJHNob3dTdGF0cyIsIlN0eWxlZExvYWRpbmciLCJfdGVtcGxhdGVPYmplY3QzIiwiU3R5bGVkU3RhdHNTcGFjZXIiLCJfdGVtcGxhdGVPYmplY3Q0IiwiaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0IiwiSGVhZGVyQ2VsbEZhY3RvcnkiLCJGaWVsZFRva2VuIiwiQ29sdW1uU3RhdGlzdGljc051bWVyaWMiLCJDb2x1bW5TdGF0aXN0aWNzVGltZSIsIkNvbHVtblN0YXRpc3RpY3NTZWN0aW9uIiwiX3JlZiIsImNvbHVtblN0YXRzIiwidHlwZSIsImZvcm1hdCIsIm51bWVyaWMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJjYXRlZ29yaWNhbCIsInRpbWUiLCJIZWFkZXJDZWxsIiwiX3JlZjIiLCJfY29sTWV0YSRjb2x1bW4iLCJjZWxsSW5mbyIsImNvbHVtbnMiLCJpc1Bpbm5lZCIsInNob3dTdGF0cyIsInRvZ2dsZU1vcmVPcHRpb25zIiwibW9yZU9wdGlvbnNDb2x1bW4iLCJjb2x1bW5JbmRleCIsImtleSIsInN0eWxlIiwiY29sTWV0YSIsInNvcnRDb2x1bW4iLCJzb3J0VGFibGVDb2x1bW4iLCJwaW5UYWJsZUNvbHVtbiIsImNvcHlUYWJsZUNvbHVtbiIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJoYXNTdGF0cyIsImRhdGFJZCIsImxvYWRDb2x1bW5TdGF0cyIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNob3dGb3JtYXR0ZXIiLCJzZXRTaG93Rm9ybWF0dGVyIiwiY29sdW1uIiwiaXNHaG9zdCIsIkJvb2xlYW4iLCJnaG9zdCIsImlzU29ydGVkIiwiZmlyc3RDZWxsIiwiX3JlZjMiLCJpc0xvYWRpbmdTdGF0cyIsImlzRm9ybWF0dGVkIiwiZGlzcGxheUZvcm1hdCIsImZvcm1hdExhYmVscyIsIm9uU29ydFRhYmxlIiwib25Ub2dnbGVPcHRpb25NZW51Iiwib25QaW4iLCJvbkNvcHkiLCJvblNldERpc3BsYXlGb3JtYXQiLCJfZGVmaW5lUHJvcGVydHkiLCJvblRvZ2dsZURpc3BsYXlGb3JtYXQiLCJoZWFkZXJEZXRhaWxzIiwiRnJhZ21lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiZSIsInNoaWZ0S2V5Iiwib25Eb3VibGVDbGljayIsIm5hbWUiLCJBU0NFTkRJTkciLCJoZWlnaHQiLCJsZWZ0IiwidG9wIiwiaXNPcGVuZWQiLCJzZXREaXNwbGF5Rm9ybWF0Iiwib25DbG9zZSIsIm1vZGUiLCJ1bmRlZmluZWQiLCJ0aXRsZSIsImRlcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvaGVhZGVyLWNlbGwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NTU1Byb3BlcnRpZXMsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL2J1dHRvbic7XG5pbXBvcnQge0Fycm93VXAsIEFycm93RG93biwgVmVydFRocmVlRG90cywgSGFzaH0gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7U09SVF9PUkRFUn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IE9wdGlvbkRyb3Bkb3duLCB7Rm9ybWF0dGVyRHJvcGRvd259IGZyb20gJy4vb3B0aW9uLWRyb3Bkb3duJztcbmltcG9ydCB7Q29sdW1uU3RhdHNUeXBlLCBnZXRGaWVsZEZvcm1hdExhYmVsc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge0NvbE1ldGF9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IEZpZWxkVG9rZW5GYWN0b3J5LCB7RmllbGRUb2tlblByb3BzfSBmcm9tICcuLi8uLi9jb21tb24vZmllbGQtdG9rZW4nO1xuaW1wb3J0IHtEYXRhVGFibGVQcm9wc30gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnLi4vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCBDb2x1bW5TdGF0aXN0aWNzQ2F0ZWdvcmljYWwgZnJvbSAnLi9jb2x1bW4tc3RhdGlzdGljcy1jYXRlZ29yaWMnO1xuaW1wb3J0IENvbHVtblN0YXRpc3RpY3NOdW1lcmljRmFjdG9yeSwge1xuICBDb2x1bW5TdGF0aXN0aWNzTnVtZXJpY1Byb3BzXG59IGZyb20gJy4vY29sdW1uLXN0YXRpc3RpY3MtbnVtZXJpYyc7XG5pbXBvcnQgQ29sdW1uU3RhdGlzdGljc1RpbWVGYWN0b3J5LCB7Q29sdW1uU3RhdGlzdGljc1RpbWVQcm9wc30gZnJvbSAnLi9jb2x1bW4tc3RhdGlzdGljcy10aW1lJztcblxuY29uc3QgU3R5bGVkSGVhZGVyQ2VsbCA9IHN0eWxlZC5kaXY8eyRoYXNTdGF0cz86IGJvb2xlYW47ICRmaXJzdENlbGw/OiBib29sZWFufT5gXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCb3JkZXJDb2xvcn07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCb3JkZXJDb2xvcn07XG4gIGJvcmRlci1yaWdodDogJHtwcm9wcyA9PiAocHJvcHMuJGhhc1N0YXRzID8gYDFweCBzb2xpZCAke3Byb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn1gIDogJ25vbmUnKX07XG4gIHBhZGRpbmctdG9wOiAke3Byb3BzID0+IChwcm9wcy4kaGFzU3RhdHMgPyAwIDogcHJvcHMudGhlbWUuaGVhZGVyUGFkZGluZ1RvcCl9cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctYm90dG9tOiAke3Byb3BzID0+IChwcm9wcy4kaGFzU3RhdHMgPyAwIDogcHJvcHMudGhlbWUuaGVhZGVyUGFkZGluZ0JvdHRvbSl9cHg7XG4gIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiAocHJvcHMuJGhhc1N0YXRzID8gMCA6IHByb3BzLnRoZW1lLmNlbGxQYWRkaW5nU2lkZSl9cHg7XG4gIGFsaWduLWl0ZW1zOiAke3Byb3BzID0+IChwcm9wcy4kaGFzU3RhdHMgPyAnc3RyZXRjaCcgOiAnY2VudGVyJyl9O1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7cHJvcHMgPT4gKHByb3BzLiRoYXNTdGF0cyA/ICdmbGV4LXN0YXJ0JyA6ICdzcGFjZS1iZXR3ZWVuJyl9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogJHtwcm9wcyA9PiAocHJvcHMuJGhhc1N0YXRzID8gJ2NvbHVtbicgOiAncm93Jyl9O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhlYWRlckNlbGxCYWNrZ3JvdW5kfTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAubi1zb3J0LWlkeCB7XG4gICAgZm9udC1zaXplOiA5cHg7XG4gIH1cbiAgLmhlYWRlci1jZWxsX190b3Age1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyUm93SGVpZ2h0fXB4O1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZy10b3A6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyUGFkZGluZ1RvcH1weDtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJQYWRkaW5nQm90dG9tfXB4O1xuICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuJGZpcnN0Q2VsbFxuICAgICAgICA/IHByb3BzLnRoZW1lLmNlbGxQYWRkaW5nU2lkZSArIHByb3BzLnRoZW1lLmVkZ2VDZWxsUGFkZGluZ1NpZGVcbiAgICAgICAgOiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGV9cHg7XG4gIH1cbiAgLmRldGFpbHMge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxGb250U2l6ZX1weDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZmxleC1ncm93OiAxO1xuXG4gICAgLmNvbC1uYW1lIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIGZsZXg6IDE7XG5cbiAgICAgIC5jb2wtbmFtZV9fbGVmdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAuY29sLW5hbWVfX25hbWUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubW9yZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgfVxuXG4gIC5jb2wtbmFtZV9fZm9ybWF0IHN2ZyB7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMHB4O1xuICAgIHN0cm9rZS13aWR0aDogMTtcbiAgfVxuYDtcblxudHlwZSBTdHlsZWRCb3R0b21TdGF0c1Byb3BzID0ge1xuICAkc2hvd1N0YXRzPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFN0eWxlZEJvdHRvbVN0YXRzID0gc3R5bGVkLmRpdjxTdHlsZWRCb3R0b21TdGF0c1Byb3BzPmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsU3RhdHNCYWNrZ3JvdW5kfTtcbiAgZmxleC1ncm93OiAxO1xuICBtaW4taGVpZ2h0OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy4kc2hvd1N0YXRzID8gMSA6IDApfTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuICBwb2ludGVyLWV2ZW50czogJHtwcm9wcyA9PiAocHJvcHMuJHNob3dTdGF0cyA/ICdhdXRvJyA6ICdub25lJyl9O1xuICB3aWR0aDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlZExvYWRpbmcgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy10b3A6IDE2cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYDtcblxuY29uc3QgU3R5bGVkU3RhdHNTcGFjZXIgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0fXB4O1xuICB3aWR0aDogMTAwJTtcbiAgZmxleC1ncm93OiAwO1xuYDtcblxudHlwZSBDZWxsSW5mbyA9IHtcbiAgY29sdW1uSW5kZXg6IG51bWJlcjtcbiAgaXNTY3JvbGxpbmc6IGJvb2xlYW47XG4gIGlzVmlzaWJsZTogYm9vbGVhbjtcbiAga2V5OiBzdHJpbmc7XG4gIHBhcmVudDogYW55O1xuICByb3dJbmRleDogbnVtYmVyO1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbn07XG5cbmV4cG9ydCB0eXBlIEhlYWRlckNlbGxQcm9wcyA9IHtcbiAgLy8gcGFzc2VkIGRvd24gZnJvbSByZWFjdCB2aXJ0dWFsaXplZCBHcmlkXG4gIGNlbGxJbmZvOiBDZWxsSW5mbztcbiAgY29sdW1uczogRGF0YVRhYmxlUHJvcHNbJ2NvbHVtbnMnXTtcbiAgY29sTWV0YT86IENvbE1ldGE7XG4gIGlzUGlubmVkPzogYm9vbGVhbjtcbiAgc2hvd1N0YXRzPzogYm9vbGVhbjtcbiAgcHJvcHM6IERhdGFUYWJsZVByb3BzO1xuICB0b2dnbGVNb3JlT3B0aW9uczogKG1vcmVPcHRpb25zQ29sdW1uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG1vcmVPcHRpb25zQ29sdW1uOiBudWxsIHwgc3RyaW5nO1xuICBzdHlsZTogQ1NTUHJvcGVydGllcztcbn07XG5cbmZ1bmN0aW9uIEhlYWRlckNlbGxGYWN0b3J5KFxuICBGaWVsZFRva2VuOiBSZWFjdC5GQzxGaWVsZFRva2VuUHJvcHM+LFxuICBDb2x1bW5TdGF0aXN0aWNzTnVtZXJpYzogUmVhY3QuRkM8Q29sdW1uU3RhdGlzdGljc051bWVyaWNQcm9wcz4sXG4gIENvbHVtblN0YXRpc3RpY3NUaW1lOiBSZWFjdC5GQzxDb2x1bW5TdGF0aXN0aWNzVGltZVByb3BzPlxuKSB7XG4gIGNvbnN0IENvbHVtblN0YXRpc3RpY3NTZWN0aW9uOiBSZWFjdC5GQzx7XG4gICAgY29sdW1uU3RhdHM6IGFueTtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgZm9ybWF0Pzogc3RyaW5nO1xuICB9PiA9ICh7Y29sdW1uU3RhdHMsIHR5cGUsIGZvcm1hdH0pID0+IHtcbiAgICBzd2l0Y2ggKGNvbHVtblN0YXRzLnR5cGUpIHtcbiAgICAgIGNhc2UgQ29sdW1uU3RhdHNUeXBlLm51bWVyaWM6XG4gICAgICAgIHJldHVybiA8Q29sdW1uU3RhdGlzdGljc051bWVyaWMgey4uLmNvbHVtblN0YXRzfSB0eXBlPXt0eXBlfSAvPjtcbiAgICAgIGNhc2UgQ29sdW1uU3RhdHNUeXBlLmNhdGVnb3JpY2FsOlxuICAgICAgICByZXR1cm4gPENvbHVtblN0YXRpc3RpY3NDYXRlZ29yaWNhbCB7Li4uY29sdW1uU3RhdHN9IC8+O1xuICAgICAgY2FzZSBDb2x1bW5TdGF0c1R5cGUudGltZTpcbiAgICAgICAgcmV0dXJuIDxDb2x1bW5TdGF0aXN0aWNzVGltZSB7Li4uY29sdW1uU3RhdHN9IGZvcm1hdD17Zm9ybWF0fSAvPjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiA8ZGl2IC8+O1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBIZWFkZXJDZWxsID0gKHtcbiAgICBjZWxsSW5mbyxcbiAgICBjb2x1bW5zLFxuICAgIGlzUGlubmVkLFxuICAgIHNob3dTdGF0cyxcbiAgICBwcm9wcyxcbiAgICB0b2dnbGVNb3JlT3B0aW9ucyxcbiAgICBtb3JlT3B0aW9uc0NvbHVtblxuICB9OiBIZWFkZXJDZWxsUHJvcHMpID0+IHtcbiAgICBjb25zdCB7Y29sdW1uSW5kZXgsIGtleSwgc3R5bGV9ID0gY2VsbEluZm87XG4gICAgY29uc3Qge1xuICAgICAgY29sTWV0YSxcbiAgICAgIHNvcnRDb2x1bW4sXG4gICAgICBzb3J0VGFibGVDb2x1bW4sXG4gICAgICBwaW5UYWJsZUNvbHVtbixcbiAgICAgIGNvcHlUYWJsZUNvbHVtbixcbiAgICAgIHNldENvbHVtbkRpc3BsYXlGb3JtYXQsXG4gICAgICBoYXNTdGF0cyxcbiAgICAgIGRhdGFJZCxcbiAgICAgIGxvYWRDb2x1bW5TdGF0c1xuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBbc2hvd0Zvcm1hdHRlciwgc2V0U2hvd0Zvcm1hdHRlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JbmRleF07XG5cbiAgICBjb25zdCBpc0dob3N0ID0gQm9vbGVhbihjb2x1bW4uZ2hvc3QpO1xuICAgIGNvbnN0IGlzU29ydGVkID0gaXNHaG9zdCA/IGZhbHNlIDogc29ydENvbHVtbltjb2x1bW5dO1xuICAgIGNvbnN0IGZpcnN0Q2VsbCA9IGNvbHVtbkluZGV4ID09PSAwO1xuICAgIGNvbnN0IHtjb2x1bW5TdGF0cywgaXNMb2FkaW5nU3RhdHMsIHR5cGUsIGZvcm1hdH0gPSBjb2xNZXRhW2lzR2hvc3QgPyAnJyA6IGNvbHVtbl0gfHwge307XG4gICAgY29uc3QgaXNGb3JtYXR0ZWQgPSBpc0dob3N0ID8gZmFsc2UgOiBCb29sZWFuKGNvbE1ldGFbY29sdW1uXT8uZGlzcGxheUZvcm1hdCk7XG4gICAgY29uc3QgZm9ybWF0TGFiZWxzID0gaXNGb3JtYXR0ZWQgJiYgIWlzR2hvc3QgPyBnZXRGaWVsZEZvcm1hdExhYmVscyhjb2xNZXRhW2NvbHVtbl0udHlwZSkgOiBbXTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFpc0dob3N0ICYmXG4gICAgICAgICFjb2x1bW5TdGF0cyAmJlxuICAgICAgICAhaXNMb2FkaW5nU3RhdHMgJiZcbiAgICAgICAgZGF0YUlkICYmXG4gICAgICAgIHNob3dTdGF0cyAmJlxuICAgICAgICBoYXNTdGF0cyAmJlxuICAgICAgICBsb2FkQ29sdW1uU3RhdHNcbiAgICAgICkge1xuICAgICAgICBsb2FkQ29sdW1uU3RhdHMoZGF0YUlkLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGlzR2hvc3QsXG4gICAgICBjb2x1bW5TdGF0cyxcbiAgICAgIGlzTG9hZGluZ1N0YXRzLFxuICAgICAgY29sdW1uLFxuICAgICAgZGF0YUlkLFxuICAgICAgc2hvd1N0YXRzLFxuICAgICAgaGFzU3RhdHMsXG4gICAgICBsb2FkQ29sdW1uU3RhdHNcbiAgICBdKTtcblxuICAgIGNvbnN0IG9uU29ydFRhYmxlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKCFpc0dob3N0KSBzb3J0VGFibGVDb2x1bW4/Lihjb2x1bW4pO1xuICAgIH0sIFtzb3J0VGFibGVDb2x1bW4sIGlzR2hvc3QsIGNvbHVtbl0pO1xuICAgIGNvbnN0IG9uVG9nZ2xlT3B0aW9uTWVudSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmICghaXNHaG9zdCkgdG9nZ2xlTW9yZU9wdGlvbnMoY29sdW1uKTtcbiAgICB9LCBbdG9nZ2xlTW9yZU9wdGlvbnMsIGlzR2hvc3QsIGNvbHVtbl0pO1xuICAgIGNvbnN0IG9uUGluID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKCFpc0dob3N0KSBwaW5UYWJsZUNvbHVtbihjb2x1bW4pO1xuICAgIH0sIFtwaW5UYWJsZUNvbHVtbiwgaXNHaG9zdCwgY29sdW1uXSk7XG4gICAgY29uc3Qgb25Db3B5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKCFpc0dob3N0KSBjb3B5VGFibGVDb2x1bW4oY29sdW1uKTtcbiAgICB9LCBbY29weVRhYmxlQ29sdW1uLCBpc0dob3N0LCBjb2x1bW5dKTtcbiAgICBjb25zdCBvblNldERpc3BsYXlGb3JtYXQgPSB1c2VDYWxsYmFjayhcbiAgICAgIGRpc3BsYXlGb3JtYXQgPT4ge1xuICAgICAgICBpZiAoIWlzR2hvc3QpIHNldENvbHVtbkRpc3BsYXlGb3JtYXQ/Lih7W2NvbHVtbl06IGRpc3BsYXlGb3JtYXQuZm9ybWF0fSk7XG4gICAgICB9LFxuICAgICAgW2NvbHVtbiwgaXNHaG9zdCwgc2V0Q29sdW1uRGlzcGxheUZvcm1hdF1cbiAgICApO1xuXG4gICAgY29uc3Qgb25Ub2dnbGVEaXNwbGF5Rm9ybWF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgc2V0U2hvd0Zvcm1hdHRlcighc2hvd0Zvcm1hdHRlcik7XG4gICAgfSwgW3Nob3dGb3JtYXR0ZXJdKTtcblxuICAgIGNvbnN0IGhlYWRlckRldGFpbHMgPSBpc0dob3N0ID8gKFxuICAgICAgPGRpdiAvPlxuICAgICkgOiAoXG4gICAgICA8PlxuICAgICAgICA8c2VjdGlvblxuICAgICAgICAgIGNsYXNzTmFtZT1cImRldGFpbHNcIlxuICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgaWYgKGUuc2hpZnRLZXkgJiYgIWlzR2hvc3QpIHNvcnRUYWJsZUNvbHVtbj8uKGNvbHVtbik7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkRvdWJsZUNsaWNrPXtvblNvcnRUYWJsZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWVsZFRva2VuIHR5cGU9e2NvbE1ldGFbY29sdW1uXS50eXBlfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW5hbWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW5hbWVfX2xlZnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fbmFtZVwiPntjb2xNZXRhW2NvbHVtbl0ubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJjb2wtbmFtZV9fc29ydFwiIG9uQ2xpY2s9e29uU29ydFRhYmxlfT5cbiAgICAgICAgICAgICAgICB7aXNTb3J0ZWQgPyAoXG4gICAgICAgICAgICAgICAgICBpc1NvcnRlZCA9PT0gU09SVF9PUkRFUi5BU0NFTkRJTkcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxBcnJvd1VwIGhlaWdodD1cIjE0cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPEFycm93RG93biBoZWlnaHQ9XCIxNHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiY29sLW5hbWVfX2Zvcm1hdFwiIG9uQ2xpY2s9e29uVG9nZ2xlRGlzcGxheUZvcm1hdH0+XG4gICAgICAgICAgICAgICAge2lzRm9ybWF0dGVkID8gPEhhc2ggaGVpZ2h0PVwiMTRweFwiIC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVyRHJvcGRvd25cbiAgICAgICAgICAgICAgICAgIGxlZnQ9ezB9XG4gICAgICAgICAgICAgICAgICB0b3A9ezB9XG4gICAgICAgICAgICAgICAgICBpc09wZW5lZD17aXNGb3JtYXR0ZWQgJiYgc2hvd0Zvcm1hdHRlcn1cbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9e2NvbE1ldGFbY29sdW1uXS5kaXNwbGF5Rm9ybWF0fVxuICAgICAgICAgICAgICAgICAgc2V0RGlzcGxheUZvcm1hdD17b25TZXREaXNwbGF5Rm9ybWF0fVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0Zvcm1hdHRlcihmYWxzZSl9XG4gICAgICAgICAgICAgICAgICBmb3JtYXRMYWJlbHM9e2Zvcm1hdExhYmVsc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJtb3JlXCIgb25DbGljaz17b25Ub2dnbGVPcHRpb25NZW51fT5cbiAgICAgICAgICAgICAgPFZlcnRUaHJlZURvdHMgaGVpZ2h0PVwiMTRweFwiIC8+XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cIm9wdGlvbnNcIj5cbiAgICAgICAgICA8T3B0aW9uRHJvcGRvd25cbiAgICAgICAgICAgIGlzT3BlbmVkPXttb3JlT3B0aW9uc0NvbHVtbiA9PT0gY29sdW1ufVxuICAgICAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgICAgICBjb2xNZXRhPXtjb2xNZXRhfVxuICAgICAgICAgICAgdG9nZ2xlTW9yZU9wdGlvbnM9e3RvZ2dsZU1vcmVPcHRpb25zfVxuICAgICAgICAgICAgc29ydFRhYmxlQ29sdW1uPXtzb3J0VGFibGVDb2x1bW4gPyBtb2RlID0+IHNvcnRUYWJsZUNvbHVtbihjb2x1bW4sIG1vZGUpIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgcGluVGFibGVDb2x1bW49e29uUGlufVxuICAgICAgICAgICAgY29weVRhYmxlQ29sdW1uPXtvbkNvcHl9XG4gICAgICAgICAgICBzZXREaXNwbGF5Rm9ybWF0PXtzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0ID8gb25TZXREaXNwbGF5Rm9ybWF0IDogdW5kZWZpbmVkfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvPlxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEhlYWRlckNlbGxcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdoZWFkZXItY2VsbCcsIHtcbiAgICAgICAgICBbYGNvbHVtbi0ke2NvbHVtbkluZGV4fWBdOiB0cnVlLFxuICAgICAgICAgICdwaW5uZWQtaGVhZGVyLWNlbGwnOiBpc1Bpbm5lZCxcbiAgICAgICAgICAnZmlyc3QtY2VsbCc6IGZpcnN0Q2VsbFxuICAgICAgICB9KX1cbiAgICAgICAga2V5PXtrZXl9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgJGhhc1N0YXRzPXtCb29sZWFuKGhhc1N0YXRzKX1cbiAgICAgICAgJGZpcnN0Q2VsbD17Zmlyc3RDZWxsfVxuICAgICAgICB0aXRsZT17aXNHaG9zdCA/IHVuZGVmaW5lZCA6IGNvbHVtbn1cbiAgICAgID5cbiAgICAgICAge2hhc1N0YXRzICYmICFpc0dob3N0ID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyLWNlbGxfX3RvcFwiPntoZWFkZXJEZXRhaWxzfTwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIGhlYWRlckRldGFpbHNcbiAgICAgICAgKX1cbiAgICAgICAge2hhc1N0YXRzICYmICFpc0dob3N0ID8gPFN0eWxlZFN0YXRzU3BhY2VyIC8+IDogbnVsbH1cbiAgICAgICAge2hhc1N0YXRzICYmICFpc0dob3N0ID8gKFxuICAgICAgICAgIDxTdHlsZWRCb3R0b21TdGF0cyBjbGFzc05hbWU9XCJib3R0b20tc3RhdHNcIiAkc2hvd1N0YXRzPXtzaG93U3RhdHN9PlxuICAgICAgICAgICAge2lzTG9hZGluZ1N0YXRzID8gKFxuICAgICAgICAgICAgICA8U3R5bGVkTG9hZGluZz5cbiAgICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgICAgPC9TdHlsZWRMb2FkaW5nPlxuICAgICAgICAgICAgKSA6IGNvbHVtblN0YXRzID8gKFxuICAgICAgICAgICAgICA8Q29sdW1uU3RhdGlzdGljc1NlY3Rpb24gY29sdW1uU3RhdHM9e2NvbHVtblN0YXRzfSB0eXBlPXt0eXBlfSBmb3JtYXQ9e2Zvcm1hdH0gLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU3R5bGVkQm90dG9tU3RhdHM+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgPC9TdHlsZWRIZWFkZXJDZWxsPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBIZWFkZXJDZWxsO1xufVxuSGVhZGVyQ2VsbEZhY3RvcnkuZGVwcyA9IFtcbiAgRmllbGRUb2tlbkZhY3RvcnksXG4gIENvbHVtblN0YXRpc3RpY3NOdW1lcmljRmFjdG9yeSxcbiAgQ29sdW1uU3RhdGlzdGljc1RpbWVGYWN0b3J5XG5dO1xuZXhwb3J0IGRlZmF1bHQgSGVhZGVyQ2VsbEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPQSxLQUFLLElBQWtCQyxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsU0FBUyxRQUFPLE9BQU87QUFDNUUsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxVQUFVLE1BQU0sWUFBWTtBQUNuQyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixTQUFRQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsYUFBYSxFQUFFQyxJQUFJLFFBQU8sb0JBQW9CO0FBQzFFLFNBQVFDLFVBQVUsUUFBTyxzQkFBc0I7QUFDL0MsT0FBT0MsY0FBYyxJQUFHQyxpQkFBaUIsUUFBTyxtQkFBbUI7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