@kepler.gl/components 3.3.0-alpha.5 → 3.3.0-alpha.7
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.
- package/dist/cjs/annotations/annotation-node.js +145 -0
- package/dist/cjs/annotations/annotation-overlay.js +168 -0
- package/dist/cjs/annotations/annotation-panel.js +361 -0
- package/dist/cjs/annotations/annotation-text.js +149 -0
- package/dist/cjs/annotations/annotation-utils.js +197 -0
- package/dist/cjs/annotations/index.js +53 -0
- package/dist/cjs/annotations/lexical-editor/clickable-link-plugin.js +71 -0
- package/dist/cjs/annotations/lexical-editor/floating-link-editor.js +193 -0
- package/dist/cjs/annotations/lexical-editor/index.js +78 -0
- package/dist/cjs/annotations/lexical-editor/lexical-constants.js +22 -0
- package/dist/cjs/annotations/lexical-editor/lexical-nodes.js +13 -0
- package/dist/cjs/annotations/lexical-editor/lexical-rich-text-editor.js +121 -0
- package/dist/cjs/annotations/lexical-editor/lexical-theme.js +25 -0
- package/dist/cjs/annotations/lexical-editor/lexical-toolbar.js +292 -0
- package/dist/cjs/annotations/lexical-editor/lexical-utils.js +45 -0
- package/dist/cjs/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
- package/dist/cjs/bottom-widget.js +183 -0
- package/dist/cjs/common/action-panel.js +133 -0
- package/dist/cjs/common/animation-control/animation-control.js +100 -0
- package/dist/cjs/common/animation-control/animation-controller.js +271 -0
- package/dist/cjs/common/animation-control/animation-speed-slider.js +63 -0
- package/dist/cjs/common/animation-control/animation-window-control.js +59 -0
- package/dist/cjs/common/animation-control/export-video-control.js +43 -0
- package/dist/cjs/common/animation-control/floating-time-display.js +131 -0
- package/dist/cjs/common/animation-control/play-control.js +50 -0
- package/dist/cjs/common/animation-control/playback-controls.js +164 -0
- package/dist/cjs/common/animation-control/reset-control.js +41 -0
- package/dist/cjs/common/animation-control/speed-control.js +51 -0
- package/dist/cjs/common/animation-control/window-action-control.js +57 -0
- package/dist/cjs/common/checkbox.js +101 -0
- package/dist/cjs/common/color-legend.js +272 -0
- package/dist/cjs/common/column-stats-chart.js +312 -0
- package/dist/cjs/common/data-table/button.js +38 -0
- package/dist/cjs/common/data-table/canvas.js +26 -0
- package/dist/cjs/common/data-table/cell-size.js +200 -0
- package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
- package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
- package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
- package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
- package/dist/cjs/common/data-table/display-format.js +125 -0
- package/dist/cjs/common/data-table/grid.js +106 -0
- package/dist/cjs/common/data-table/header-cell.js +227 -0
- package/dist/cjs/common/data-table/index.js +543 -0
- package/dist/cjs/common/data-table/option-dropdown.js +159 -0
- package/dist/cjs/common/dataset-label.js +27 -0
- package/dist/cjs/common/dnd-layer-items.js +22 -0
- package/dist/cjs/common/error-boundary.js +59 -0
- package/dist/cjs/common/field-selector.js +172 -0
- package/dist/cjs/common/field-token.js +43 -0
- package/dist/cjs/common/file-uploader/file-drop.js +180 -0
- package/dist/cjs/common/file-uploader/file-upload-progress.js +84 -0
- package/dist/cjs/common/file-uploader/file-upload.js +241 -0
- package/dist/cjs/common/file-uploader/upload-button.js +58 -0
- package/dist/cjs/common/flex-container.js +15 -0
- package/dist/cjs/common/histogram-plot.js +282 -0
- package/dist/cjs/common/icon-button.js +25 -0
- package/dist/cjs/common/icons/3d-models/airplane.js +103 -0
- package/dist/cjs/common/icons/3d-models/bicycle.js +425 -0
- package/dist/cjs/common/icons/3d-models/boeing.js +118 -0
- package/dist/cjs/common/icons/3d-models/car.js +109 -0
- package/dist/cjs/common/icons/3d-models/cargoship.js +245 -0
- package/dist/cjs/common/icons/3d-models/evtol.js +133 -0
- package/dist/cjs/common/icons/3d-models/glider.js +61 -0
- package/dist/cjs/common/icons/3d-models/helicopter.js +109 -0
- package/dist/cjs/common/icons/3d-models/scooter.js +158 -0
- package/dist/cjs/common/icons/3d-models/semitruck.js +176 -0
- package/dist/cjs/common/icons/3d-models/truck.js +121 -0
- package/dist/cjs/common/icons/add.js +40 -0
- package/dist/cjs/common/icons/anchor_window.js +41 -0
- package/dist/cjs/common/icons/annotation-text.js +55 -0
- package/dist/cjs/common/icons/arrow-down-alt.js +40 -0
- package/dist/cjs/common/icons/arrow-down-full.js +49 -0
- package/dist/cjs/common/icons/arrow-down-small.js +53 -0
- package/dist/cjs/common/icons/arrow-down.js +50 -0
- package/dist/cjs/common/icons/arrow-left.js +43 -0
- package/dist/cjs/common/icons/arrow-right.js +40 -0
- package/dist/cjs/common/icons/arrow-up-alt.js +41 -0
- package/dist/cjs/common/icons/arrow-up-solid.js +40 -0
- package/dist/cjs/common/icons/arrow-up.js +40 -0
- package/dist/cjs/common/icons/base-map.js +56 -0
- package/dist/cjs/common/icons/base.js +78 -0
- package/dist/cjs/common/icons/bug.js +70 -0
- package/dist/cjs/common/icons/calendar.js +48 -0
- package/dist/cjs/common/icons/cancel.js +40 -0
- package/dist/cjs/common/icons/checkmark.js +46 -0
- package/dist/cjs/common/icons/clipboard.js +41 -0
- package/dist/cjs/common/icons/clock.js +42 -0
- package/dist/cjs/common/icons/close.js +46 -0
- package/dist/cjs/common/icons/cloud.js +50 -0
- package/dist/cjs/common/icons/code-alt.js +43 -0
- package/dist/cjs/common/icons/copy.js +51 -0
- package/dist/cjs/common/icons/crosshairs.js +43 -0
- package/dist/cjs/common/icons/cube-3d.js +54 -0
- package/dist/cjs/common/icons/cursor-click.js +44 -0
- package/dist/cjs/common/icons/cursor-point.js +50 -0
- package/dist/cjs/common/icons/data-table.js +76 -0
- package/dist/cjs/common/icons/db.js +58 -0
- package/dist/cjs/common/icons/delete.js +52 -0
- package/dist/cjs/common/icons/docs.js +56 -0
- package/dist/cjs/common/icons/docs2.js +50 -0
- package/dist/cjs/common/icons/drag-n-drop.js +42 -0
- package/dist/cjs/common/icons/draggable-dots.js +84 -0
- package/dist/cjs/common/icons/draw-point.js +50 -0
- package/dist/cjs/common/icons/draw-polygon.js +60 -0
- package/dist/cjs/common/icons/edit.js +48 -0
- package/dist/cjs/common/icons/effects/brightness-contrast.js +69 -0
- package/dist/cjs/common/icons/effects/color-halftone.js +108 -0
- package/dist/cjs/common/icons/effects/distance-fog.js +78 -0
- package/dist/cjs/common/icons/effects/dot-screen.js +103 -0
- package/dist/cjs/common/icons/effects/edge-work.js +62 -0
- package/dist/cjs/common/icons/effects/hexagonal-pixelate.js +129 -0
- package/dist/cjs/common/icons/effects/hue-saturation.js +60 -0
- package/dist/cjs/common/icons/effects/ink.js +59 -0
- package/dist/cjs/common/icons/effects/light-and-shadow.js +48 -0
- package/dist/cjs/common/icons/effects/magic-wand.js +60 -0
- package/dist/cjs/common/icons/effects/magnify.js +67 -0
- package/dist/cjs/common/icons/effects/noise.js +113 -0
- package/dist/cjs/common/icons/effects/sepia.js +60 -0
- package/dist/cjs/common/icons/effects/surface-fog.js +85 -0
- package/dist/cjs/common/icons/effects/tilt-shift.js +69 -0
- package/dist/cjs/common/icons/effects/triangle-blur.js +64 -0
- package/dist/cjs/common/icons/effects/vibrance.js +60 -0
- package/dist/cjs/common/icons/effects/vignette.js +53 -0
- package/dist/cjs/common/icons/effects/zoom-blur.js +88 -0
- package/dist/cjs/common/icons/email.js +44 -0
- package/dist/cjs/common/icons/expand.js +42 -0
- package/dist/cjs/common/icons/eye-seen.js +49 -0
- package/dist/cjs/common/icons/eye-unseen.js +47 -0
- package/dist/cjs/common/icons/file-type.js +35 -0
- package/dist/cjs/common/icons/file.js +40 -0
- package/dist/cjs/common/icons/files.js +41 -0
- package/dist/cjs/common/icons/filter-funnel.js +50 -0
- package/dist/cjs/common/icons/folder.js +50 -0
- package/dist/cjs/common/icons/free-window.js +44 -0
- package/dist/cjs/common/icons/gear.js +42 -0
- package/dist/cjs/common/icons/globe.js +53 -0
- package/dist/cjs/common/icons/hash.js +40 -0
- package/dist/cjs/common/icons/help.js +50 -0
- package/dist/cjs/common/icons/histogram.js +41 -0
- package/dist/cjs/common/icons/horizontal-resize-handle.js +58 -0
- package/dist/cjs/common/icons/index.js +838 -0
- package/dist/cjs/common/icons/info.js +53 -0
- package/dist/cjs/common/icons/layers.js +54 -0
- package/dist/cjs/common/icons/left-arrow.js +43 -0
- package/dist/cjs/common/icons/legend.js +68 -0
- package/dist/cjs/common/icons/line-chart.js +40 -0
- package/dist/cjs/common/icons/line-string.js +60 -0
- package/dist/cjs/common/icons/location-marker.js +58 -0
- package/dist/cjs/common/icons/login.js +43 -0
- package/dist/cjs/common/icons/logout.js +42 -0
- package/dist/cjs/common/icons/map-icon.js +47 -0
- package/dist/cjs/common/icons/map-pin.js +56 -0
- package/dist/cjs/common/icons/messages.js +54 -0
- package/dist/cjs/common/icons/minus.js +40 -0
- package/dist/cjs/common/icons/moon.js +58 -0
- package/dist/cjs/common/icons/order-by-dataset.js +46 -0
- package/dist/cjs/common/icons/order-by-list.js +38 -0
- package/dist/cjs/common/icons/pause.js +60 -0
- package/dist/cjs/common/icons/picture.js +59 -0
- package/dist/cjs/common/icons/pin.js +52 -0
- package/dist/cjs/common/icons/play.js +50 -0
- package/dist/cjs/common/icons/pointer-click.js +58 -0
- package/dist/cjs/common/icons/polygon.js +62 -0
- package/dist/cjs/common/icons/rectangle.js +63 -0
- package/dist/cjs/common/icons/reduce.js +43 -0
- package/dist/cjs/common/icons/reset.js +56 -0
- package/dist/cjs/common/icons/save.js +57 -0
- package/dist/cjs/common/icons/save2.js +54 -0
- package/dist/cjs/common/icons/search.js +42 -0
- package/dist/cjs/common/icons/settings.js +60 -0
- package/dist/cjs/common/icons/share.js +70 -0
- package/dist/cjs/common/icons/speed.js +52 -0
- package/dist/cjs/common/icons/split.js +68 -0
- package/dist/cjs/common/icons/square-select.js +42 -0
- package/dist/cjs/common/icons/sun.js +74 -0
- package/dist/cjs/common/icons/sunrise.js +70 -0
- package/dist/cjs/common/icons/sunset.js +70 -0
- package/dist/cjs/common/icons/timeline-marker.js +55 -0
- package/dist/cjs/common/icons/trash.js +54 -0
- package/dist/cjs/common/icons/vert-dots.js +78 -0
- package/dist/cjs/common/icons/vert-three-dots.js +53 -0
- package/dist/cjs/common/icons/warning-sign.js +60 -0
- package/dist/cjs/common/icons/warning.js +54 -0
- package/dist/cjs/common/icons/zoom-in.js +47 -0
- package/dist/cjs/common/icons/zoom-out.js +47 -0
- package/dist/cjs/common/image-preview.js +64 -0
- package/dist/cjs/common/index.js +282 -0
- package/dist/cjs/common/info-helper.js +61 -0
- package/dist/cjs/common/item-selector/accessor.js +37 -0
- package/dist/cjs/common/item-selector/chickleted-input.js +157 -0
- package/dist/cjs/common/item-selector/dropdown-list.js +257 -0
- package/dist/cjs/common/item-selector/dropdown-select.js +84 -0
- package/dist/cjs/common/item-selector/item-selector.js +254 -0
- package/dist/cjs/common/item-selector/typeahead.js +435 -0
- package/dist/cjs/common/layout-splitter.js +230 -0
- package/dist/cjs/common/line-chart.js +286 -0
- package/dist/cjs/common/link-renderer.js +20 -0
- package/dist/cjs/common/loading-spinner.js +50 -0
- package/dist/cjs/common/logo.js +68 -0
- package/dist/cjs/common/map-layer-selector.js +38 -0
- package/dist/cjs/common/modal.js +170 -0
- package/dist/cjs/common/portaled.js +287 -0
- package/dist/cjs/common/progress-bar.js +47 -0
- package/dist/cjs/common/radius-legend.js +131 -0
- package/dist/cjs/common/range-brush.js +265 -0
- package/dist/cjs/common/range-plot.js +217 -0
- package/dist/cjs/common/range-slider-timeline-panel.js +42 -0
- package/dist/cjs/common/range-slider-timeline.js +112 -0
- package/dist/cjs/common/range-slider.js +371 -0
- package/dist/cjs/common/slider/mouse-event.js +104 -0
- package/dist/cjs/common/slider/slider-bar-handle.js +90 -0
- package/dist/cjs/common/slider/slider-handle.js +136 -0
- package/dist/cjs/common/slider/slider.js +251 -0
- package/dist/cjs/common/styled-components.js +447 -0
- package/dist/cjs/common/switch.js +21 -0
- package/dist/cjs/common/sync-timeline-control.js +61 -0
- package/dist/cjs/common/time-range-slider-time-title.js +62 -0
- package/dist/cjs/common/time-range-slider.js +143 -0
- package/dist/cjs/common/time-slider-marker.js +115 -0
- package/dist/cjs/common/timeline-helpers.js +57 -0
- package/dist/cjs/common/timeline-slider.js +140 -0
- package/dist/cjs/common/tippy-tooltip.js +134 -0
- package/dist/cjs/common/toolbar-item.js +81 -0
- package/dist/cjs/common/toolbar.js +27 -0
- package/dist/cjs/common/vertical-toolbar.js +16 -0
- package/dist/cjs/connect/keplergl-connect.js +44 -0
- package/dist/cjs/connect/with-local-selector.js +85 -0
- package/dist/cjs/container.js +180 -0
- package/dist/cjs/context.js +43 -0
- package/dist/cjs/dnd-context.js +174 -0
- package/dist/cjs/editor/editor.js +218 -0
- package/dist/cjs/editor/feature-action-panel.js +169 -0
- package/dist/cjs/editor/feature-properties-editor.js +215 -0
- package/dist/cjs/editor/filter-feature-badges.js +92 -0
- package/dist/cjs/effects/compact-color-picker.js +110 -0
- package/dist/cjs/effects/effect-configurator.js +473 -0
- package/dist/cjs/effects/effect-list.js +129 -0
- package/dist/cjs/effects/effect-manager.js +126 -0
- package/dist/cjs/effects/effect-panel-header.js +196 -0
- package/dist/cjs/effects/effect-panel.js +86 -0
- package/dist/cjs/effects/effect-time-configurator.js +313 -0
- package/dist/cjs/effects/effect-time-selector.js +152 -0
- package/dist/cjs/effects/effect-time-slider.js +198 -0
- package/dist/cjs/effects/effect-type-dropdown-list.js +65 -0
- package/dist/cjs/effects/effect-type-list-item.js +98 -0
- package/dist/cjs/effects/effect-type-selector.js +76 -0
- package/dist/cjs/effects/side-panel-title.js +37 -0
- package/dist/cjs/effects/surface-fog-section.js +262 -0
- package/dist/cjs/effects/timezone-selector.js +57 -0
- package/dist/cjs/filter-animation-controller.js +76 -0
- package/dist/cjs/filters/components.js +14 -0
- package/dist/cjs/filters/filter-panels/filter-panel-with-field-select.js +77 -0
- package/dist/cjs/filters/filter-panels/filter-synced-dataset-panel.js +260 -0
- package/dist/cjs/filters/filter-panels/multi-select-filter-panel.js +48 -0
- package/dist/cjs/filters/filter-panels/new-filter-panel.js +66 -0
- package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +67 -0
- package/dist/cjs/filters/filter-panels/range-filter-panel.js +53 -0
- package/dist/cjs/filters/filter-panels/single-select-filter-panel.js +48 -0
- package/dist/cjs/filters/filter-panels/time-range-filter-panel.js +129 -0
- package/dist/cjs/filters/filter-panels/time-synced-field-selector.js +28 -0
- package/dist/cjs/filters/filter-panels/types.js +6 -0
- package/dist/cjs/filters/index.js +63 -0
- package/dist/cjs/filters/multi-select-filter.js +31 -0
- package/dist/cjs/filters/polygon-filter.js +76 -0
- package/dist/cjs/filters/range-filter.js +35 -0
- package/dist/cjs/filters/single-select-filter.js +40 -0
- package/dist/cjs/filters/time-range-filter.js +69 -0
- package/dist/cjs/filters/time-widget-settings.js +311 -0
- package/dist/cjs/filters/time-widget-top.js +80 -0
- package/dist/cjs/filters/time-widget.js +376 -0
- package/dist/cjs/filters/types.js +6 -0
- package/dist/cjs/geocoder/geocoder.js +327 -0
- package/dist/cjs/geocoder-panel.js +172 -0
- package/dist/cjs/hooks/use-cloud-list-provider.js +46 -0
- package/dist/cjs/hooks/use-dnd-effects.js +69 -0
- package/dist/cjs/hooks/use-dnd-layers.js +141 -0
- package/dist/cjs/hooks/use-feature-flags.js +17 -0
- package/dist/cjs/hooks/use-fetch-raster-tile-metadata.js +120 -0
- package/dist/cjs/hooks/use-fetch-vector-tile-metadata.js +133 -0
- package/dist/cjs/hooks/use-legend-position.js +176 -0
- package/dist/cjs/hooks/use-on-click-outside.js +36 -0
- package/dist/cjs/index.js +2929 -0
- package/dist/cjs/injector.js +151 -0
- package/dist/cjs/kepler-gl.js +681 -0
- package/dist/cjs/layer-animation-controller.js +53 -0
- package/dist/cjs/loading-indicator.js +76 -0
- package/dist/cjs/map/annotations/annotation-control.js +55 -0
- package/dist/cjs/map/attribution.js +391 -0
- package/dist/cjs/map/coordinate-info.js +42 -0
- package/dist/cjs/map/effects/effect-control.js +51 -0
- package/dist/cjs/map/layer-hover-info.js +318 -0
- package/dist/cjs/map/lazy-tippy.js +60 -0
- package/dist/cjs/map/locale-panel.js +76 -0
- package/dist/cjs/map/map-control-panel.js +140 -0
- package/dist/cjs/map/map-control-toolbar.js +18 -0
- package/dist/cjs/map/map-control-tooltip.js +34 -0
- package/dist/cjs/map/map-control.js +87 -0
- package/dist/cjs/map/map-draw-panel.js +150 -0
- package/dist/cjs/map/map-legend-panel.js +289 -0
- package/dist/cjs/map/map-legend.js +509 -0
- package/dist/cjs/map/map-navigation-control.js +159 -0
- package/dist/cjs/map/map-popover-content.js +28 -0
- package/dist/cjs/map/map-popover.js +189 -0
- package/dist/cjs/map/map-scale.js +162 -0
- package/dist/cjs/map/split-map-button.js +176 -0
- package/dist/cjs/map/theme-toggle-button.js +64 -0
- package/dist/cjs/map/toggle-3d-button.js +122 -0
- package/dist/cjs/map-container.js +1333 -0
- package/dist/cjs/map-view-state-context.js +98 -0
- package/dist/cjs/maps-layout.js +102 -0
- package/dist/cjs/modal-container.js +457 -0
- package/dist/cjs/modals/add-map-style-modal.js +262 -0
- package/dist/cjs/modals/cloud-components/cloud-header.js +59 -0
- package/dist/cjs/modals/cloud-components/cloud-item.js +107 -0
- package/dist/cjs/modals/cloud-components/cloud-item.spec.js +164 -0
- package/dist/cjs/modals/cloud-components/cloud-maps.js +48 -0
- package/dist/cjs/modals/cloud-components/cloud-maps.spec.js +98 -0
- package/dist/cjs/modals/cloud-components/provider-select.js +30 -0
- package/dist/cjs/modals/cloud-tile.js +216 -0
- package/dist/cjs/modals/data-table-modal.js +227 -0
- package/dist/cjs/modals/delete-data-modal.js +41 -0
- package/dist/cjs/modals/error-display.js +32 -0
- package/dist/cjs/modals/export-data-modal.js +163 -0
- package/dist/cjs/modals/export-image-modal.js +188 -0
- package/dist/cjs/modals/export-map-modal/components.js +34 -0
- package/dist/cjs/modals/export-map-modal/export-html-map.js +128 -0
- package/dist/cjs/modals/export-map-modal/export-json-map.js +81 -0
- package/dist/cjs/modals/export-map-modal/export-map-modal.js +84 -0
- package/dist/cjs/modals/export-video-modal.js +440 -0
- package/dist/cjs/modals/export-video-modal.spec.js +732 -0
- package/dist/cjs/modals/fog-height-animation.js +97 -0
- package/dist/cjs/modals/globe-export-video-container.js +642 -0
- package/dist/cjs/modals/globe-export-video-preview.js +166 -0
- package/dist/cjs/modals/hubble-utils.js +452 -0
- package/dist/cjs/modals/hubble-utils.spec.js +397 -0
- package/dist/cjs/modals/image-modal-container.js +57 -0
- package/dist/cjs/modals/load-data-modal.js +97 -0
- package/dist/cjs/modals/load-storage-map.js +79 -0
- package/dist/cjs/modals/load-storage-map.spec.js +216 -0
- package/dist/cjs/modals/loading-dialog.js +37 -0
- package/dist/cjs/modals/modal-dialog.js +16 -0
- package/dist/cjs/modals/modal-tabs.js +74 -0
- package/dist/cjs/modals/overwrite-map-modal.js +83 -0
- package/dist/cjs/modals/save-map-modal.js +179 -0
- package/dist/cjs/modals/save-map-modal.spec.js +195 -0
- package/dist/cjs/modals/share-map-modal.js +168 -0
- package/dist/cjs/modals/share-map-modal.spec.js +173 -0
- package/dist/cjs/modals/status-panel.js +65 -0
- package/dist/cjs/modals/swipe-composite-utils.js +126 -0
- package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
- package/dist/cjs/modals/swipe-export-settings.js +372 -0
- package/dist/cjs/modals/swipe-export-video-container.js +653 -0
- package/dist/cjs/modals/swipe-export-video-preview.js +395 -0
- package/dist/cjs/modals/tilesets-modals/common.js +6 -0
- package/dist/cjs/modals/tilesets-modals/load-data-footer.js +55 -0
- package/dist/cjs/modals/tilesets-modals/load-tileset.js +168 -0
- package/dist/cjs/modals/tilesets-modals/tileset-bitmap-form.js +283 -0
- package/dist/cjs/modals/tilesets-modals/tileset-icon.js +39 -0
- package/dist/cjs/modals/tilesets-modals/tileset-raster-form.js +287 -0
- package/dist/cjs/modals/tilesets-modals/tileset-tile3d-form.js +388 -0
- package/dist/cjs/modals/tilesets-modals/tileset-vector-form.js +261 -0
- package/dist/cjs/modals/tilesets-modals/tileset-wms-form.js +206 -0
- package/dist/cjs/notification-panel/notification-item.js +119 -0
- package/dist/cjs/notification-panel.js +39 -0
- package/dist/cjs/plot-container.js +311 -0
- package/dist/cjs/side-panel/add-by-dataset-button.js +128 -0
- package/dist/cjs/side-panel/common/dataset-info.js +34 -0
- package/dist/cjs/side-panel/common/dataset-tag.js +62 -0
- package/dist/cjs/side-panel/common/dataset-title.js +143 -0
- package/dist/cjs/side-panel/common/source-data-catalog.js +49 -0
- package/dist/cjs/side-panel/common/source-data-selector-content.js +64 -0
- package/dist/cjs/side-panel/common/source-data-selector.js +41 -0
- package/dist/cjs/side-panel/common/source-selector.js +56 -0
- package/dist/cjs/side-panel/common/types.js +6 -0
- package/dist/cjs/side-panel/custom-panel.js +39 -0
- package/dist/cjs/side-panel/filter-manager.js +202 -0
- package/dist/cjs/side-panel/filter-panel/add-filter-button.js +27 -0
- package/dist/cjs/side-panel/filter-panel/filter-panel-header.js +67 -0
- package/dist/cjs/side-panel/filter-panel/filter-panel.js +92 -0
- package/dist/cjs/side-panel/interaction-manager.js +45 -0
- package/dist/cjs/side-panel/interaction-panel/brush-config.js +41 -0
- package/dist/cjs/side-panel/interaction-panel/geocoder-config.js +45 -0
- package/dist/cjs/side-panel/interaction-panel/interaction-panel.js +121 -0
- package/dist/cjs/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +164 -0
- package/dist/cjs/side-panel/interaction-panel/tooltip-config.js +149 -0
- package/dist/cjs/side-panel/layer-manager.js +232 -0
- package/dist/cjs/side-panel/layer-panel/add-layer-button.js +27 -0
- package/dist/cjs/side-panel/layer-panel/aggr-scale-selector.js +37 -0
- package/dist/cjs/side-panel/layer-panel/channel-by-value-selector.js +71 -0
- package/dist/cjs/side-panel/layer-panel/color-breaks-panel.js +193 -0
- package/dist/cjs/side-panel/layer-panel/color-palette-preset.js +45 -0
- package/dist/cjs/side-panel/layer-panel/color-palette.js +74 -0
- package/dist/cjs/side-panel/layer-panel/color-range-selector.js +242 -0
- package/dist/cjs/side-panel/layer-panel/color-scale-selector.js +295 -0
- package/dist/cjs/side-panel/layer-panel/color-selector.js +186 -0
- package/dist/cjs/side-panel/layer-panel/column-selector.js +59 -0
- package/dist/cjs/side-panel/layer-panel/custom-palette.js +787 -0
- package/dist/cjs/side-panel/layer-panel/custom-picker.js +83 -0
- package/dist/cjs/side-panel/layer-panel/dataset-layer-group.js +68 -0
- package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +109 -0
- package/dist/cjs/side-panel/layer-panel/dataset-section.js +74 -0
- package/dist/cjs/side-panel/layer-panel/dimension-scale-selector.js +91 -0
- package/dist/cjs/side-panel/layer-panel/how-to-button.js +27 -0
- package/dist/cjs/side-panel/layer-panel/layer-color-selector.js +105 -0
- package/dist/cjs/side-panel/layer-panel/layer-column-config.js +85 -0
- package/dist/cjs/side-panel/layer-panel/layer-column-mode-config.js +192 -0
- package/dist/cjs/side-panel/layer-panel/layer-config-group.js +143 -0
- package/dist/cjs/side-panel/layer-panel/layer-configurator.js +1116 -0
- package/dist/cjs/side-panel/layer-panel/layer-error-message.js +29 -0
- package/dist/cjs/side-panel/layer-panel/layer-group-header.js +178 -0
- package/dist/cjs/side-panel/layer-panel/layer-list.js +330 -0
- package/dist/cjs/side-panel/layer-panel/layer-panel-header.js +311 -0
- package/dist/cjs/side-panel/layer-panel/layer-panel.js +171 -0
- package/dist/cjs/side-panel/layer-panel/layer-type-dropdown-list.js +77 -0
- package/dist/cjs/side-panel/layer-panel/layer-type-list-item.js +71 -0
- package/dist/cjs/side-panel/layer-panel/layer-type-selector.js +57 -0
- package/dist/cjs/side-panel/layer-panel/raster-tile-colormap-list-item.js +60 -0
- package/dist/cjs/side-panel/layer-panel/raster-tile-layer-configurator.js +457 -0
- package/dist/cjs/side-panel/layer-panel/scenegraph-model-selector.js +122 -0
- package/dist/cjs/side-panel/layer-panel/single-color-palette.js +85 -0
- package/dist/cjs/side-panel/layer-panel/text-label-panel.js +173 -0
- package/dist/cjs/side-panel/layer-panel/vector-tile-layer-configurator.js +93 -0
- package/dist/cjs/side-panel/layer-panel/vis-config-by-field-selector.js +60 -0
- package/dist/cjs/side-panel/layer-panel/vis-config-slider.js +167 -0
- package/dist/cjs/side-panel/layer-panel/vis-config-switch.js +55 -0
- package/dist/cjs/side-panel/map-manager.js +108 -0
- package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +334 -0
- package/dist/cjs/side-panel/map-style-panel/map-layer-group-color-picker.js +76 -0
- package/dist/cjs/side-panel/map-style-panel/map-layer-group-item.js +94 -0
- package/dist/cjs/side-panel/map-style-panel/map-layer-selector.js +74 -0
- package/dist/cjs/side-panel/map-style-panel/map-style-selector.js +97 -0
- package/dist/cjs/side-panel/panel-header-action.js +73 -0
- package/dist/cjs/side-panel/panel-header.js +309 -0
- package/dist/cjs/side-panel/panel-tab.js +55 -0
- package/dist/cjs/side-panel/panel-title.js +40 -0
- package/dist/cjs/side-panel/panel-toggle.js +47 -0
- package/dist/cjs/side-panel/panel-view-list-toggle.js +97 -0
- package/dist/cjs/side-panel/side-bar.js +126 -0
- package/dist/cjs/side-panel.js +235 -0
- package/dist/cjs/types.js +6 -0
- package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
- package/dist/common/data-table/column-statistics-components.d.ts +31 -0
- package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
- package/dist/common/data-table/column-statistics-time.d.ts +19 -0
- package/dist/common/data-table/header-cell.d.ts +7 -5
- package/dist/common/data-table/index.d.ts +7 -24
- package/dist/common/histogram-plot.d.ts +24 -1
- package/dist/common/icons/draw-point.d.ts +10 -0
- package/dist/common/icons/index.d.ts +2 -0
- package/dist/common/icons/line-string.d.ts +10 -0
- package/dist/common/toolbar-item.d.ts +2 -0
- package/dist/editor/editor.d.ts +1 -0
- package/dist/editor/feature-action-panel.d.ts +1 -0
- package/dist/editor/feature-properties-editor.d.ts +8 -0
- package/dist/editor/filter-feature-badges.d.ts +12 -0
- package/dist/esm/annotations/annotation-node.js +138 -0
- package/dist/esm/annotations/annotation-overlay.js +161 -0
- package/dist/esm/annotations/annotation-panel.js +355 -0
- package/dist/esm/annotations/annotation-text.js +142 -0
- package/dist/esm/annotations/annotation-utils.js +185 -0
- package/dist/esm/annotations/index.js +9 -0
- package/dist/esm/annotations/lexical-editor/clickable-link-plugin.js +64 -0
- package/dist/esm/annotations/lexical-editor/floating-link-editor.js +186 -0
- package/dist/esm/annotations/lexical-editor/index.js +9 -0
- package/dist/esm/annotations/lexical-editor/lexical-constants.js +16 -0
- package/dist/esm/annotations/lexical-editor/lexical-nodes.js +7 -0
- package/dist/esm/annotations/lexical-editor/lexical-rich-text-editor.js +114 -0
- package/dist/esm/annotations/lexical-editor/lexical-theme.js +19 -0
- package/dist/esm/annotations/lexical-editor/lexical-toolbar.js +285 -0
- package/dist/esm/annotations/lexical-editor/lexical-utils.js +37 -0
- package/dist/esm/annotations/lexical-editor/use-lexical-toolbar.js +248 -0
- package/dist/esm/bottom-widget.js +176 -0
- package/dist/esm/common/action-panel.js +126 -0
- package/dist/esm/common/animation-control/animation-control.js +95 -0
- package/dist/esm/common/animation-control/animation-controller.js +266 -0
- package/dist/esm/common/animation-control/animation-speed-slider.js +56 -0
- package/dist/esm/common/animation-control/animation-window-control.js +50 -0
- package/dist/esm/common/animation-control/export-video-control.js +36 -0
- package/dist/esm/common/animation-control/floating-time-display.js +124 -0
- package/dist/esm/common/animation-control/play-control.js +43 -0
- package/dist/esm/common/animation-control/playback-controls.js +157 -0
- package/dist/esm/common/animation-control/reset-control.js +34 -0
- package/dist/esm/common/animation-control/speed-control.js +46 -0
- package/dist/esm/common/animation-control/window-action-control.js +48 -0
- package/dist/esm/common/checkbox.js +94 -0
- package/dist/esm/common/color-legend.js +261 -0
- package/dist/esm/common/column-stats-chart.js +305 -0
- package/dist/esm/common/data-table/button.js +33 -0
- package/dist/esm/common/data-table/canvas.js +22 -0
- package/dist/esm/common/data-table/cell-size.js +194 -0
- package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
- package/dist/esm/common/data-table/column-statistics-components.js +59 -0
- package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
- package/dist/esm/common/data-table/column-statistics-time.js +60 -0
- package/dist/esm/common/data-table/display-format.js +118 -0
- package/dist/esm/common/data-table/grid.js +100 -0
- package/dist/esm/common/data-table/header-cell.js +220 -0
- package/dist/esm/common/data-table/index.js +536 -0
- package/dist/esm/common/data-table/option-dropdown.js +152 -0
- package/dist/esm/common/dataset-label.js +22 -0
- package/dist/esm/common/dnd-layer-items.js +16 -0
- package/dist/esm/common/error-boundary.js +55 -0
- package/dist/esm/common/field-selector.js +164 -0
- package/dist/esm/common/field-token.js +38 -0
- package/dist/esm/common/file-uploader/file-drop.js +170 -0
- package/dist/esm/common/file-uploader/file-upload-progress.js +77 -0
- package/dist/esm/common/file-uploader/file-upload.js +234 -0
- package/dist/esm/common/file-uploader/upload-button.js +51 -0
- package/dist/esm/common/flex-container.js +10 -0
- package/dist/esm/common/histogram-plot.js +275 -0
- package/dist/esm/common/icon-button.js +20 -0
- package/dist/esm/common/icons/3d-models/airplane.js +97 -0
- package/dist/esm/common/icons/3d-models/bicycle.js +419 -0
- package/dist/esm/common/icons/3d-models/boeing.js +112 -0
- package/dist/esm/common/icons/3d-models/car.js +103 -0
- package/dist/esm/common/icons/3d-models/cargoship.js +239 -0
- package/dist/esm/common/icons/3d-models/evtol.js +127 -0
- package/dist/esm/common/icons/3d-models/glider.js +55 -0
- package/dist/esm/common/icons/3d-models/helicopter.js +103 -0
- package/dist/esm/common/icons/3d-models/scooter.js +152 -0
- package/dist/esm/common/icons/3d-models/semitruck.js +170 -0
- package/dist/esm/common/icons/3d-models/truck.js +115 -0
- package/dist/esm/common/icons/add.js +34 -0
- package/dist/esm/common/icons/anchor_window.js +36 -0
- package/dist/esm/common/icons/annotation-text.js +49 -0
- package/dist/esm/common/icons/arrow-down-alt.js +34 -0
- package/dist/esm/common/icons/arrow-down-full.js +43 -0
- package/dist/esm/common/icons/arrow-down-small.js +47 -0
- package/dist/esm/common/icons/arrow-down.js +44 -0
- package/dist/esm/common/icons/arrow-left.js +37 -0
- package/dist/esm/common/icons/arrow-right.js +34 -0
- package/dist/esm/common/icons/arrow-up-alt.js +35 -0
- package/dist/esm/common/icons/arrow-up-solid.js +34 -0
- package/dist/esm/common/icons/arrow-up.js +34 -0
- package/dist/esm/common/icons/base-map.js +49 -0
- package/dist/esm/common/icons/base.js +72 -0
- package/dist/esm/common/icons/bug.js +64 -0
- package/dist/esm/common/icons/calendar.js +42 -0
- package/dist/esm/common/icons/cancel.js +34 -0
- package/dist/esm/common/icons/checkmark.js +40 -0
- package/dist/esm/common/icons/clipboard.js +35 -0
- package/dist/esm/common/icons/clock.js +36 -0
- package/dist/esm/common/icons/close.js +40 -0
- package/dist/esm/common/icons/cloud.js +44 -0
- package/dist/esm/common/icons/code-alt.js +37 -0
- package/dist/esm/common/icons/copy.js +45 -0
- package/dist/esm/common/icons/crosshairs.js +37 -0
- package/dist/esm/common/icons/cube-3d.js +48 -0
- package/dist/esm/common/icons/cursor-click.js +38 -0
- package/dist/esm/common/icons/cursor-point.js +44 -0
- package/dist/esm/common/icons/data-table.js +70 -0
- package/dist/esm/common/icons/db.js +52 -0
- package/dist/esm/common/icons/delete.js +46 -0
- package/dist/esm/common/icons/docs.js +50 -0
- package/dist/esm/common/icons/docs2.js +44 -0
- package/dist/esm/common/icons/drag-n-drop.js +36 -0
- package/dist/esm/common/icons/draggable-dots.js +78 -0
- package/dist/esm/common/icons/draw-point.js +44 -0
- package/dist/esm/common/icons/draw-polygon.js +54 -0
- package/dist/esm/common/icons/edit.js +42 -0
- package/dist/esm/common/icons/effects/brightness-contrast.js +63 -0
- package/dist/esm/common/icons/effects/color-halftone.js +102 -0
- package/dist/esm/common/icons/effects/distance-fog.js +72 -0
- package/dist/esm/common/icons/effects/dot-screen.js +97 -0
- package/dist/esm/common/icons/effects/edge-work.js +56 -0
- package/dist/esm/common/icons/effects/hexagonal-pixelate.js +123 -0
- package/dist/esm/common/icons/effects/hue-saturation.js +54 -0
- package/dist/esm/common/icons/effects/ink.js +53 -0
- package/dist/esm/common/icons/effects/light-and-shadow.js +42 -0
- package/dist/esm/common/icons/effects/magic-wand.js +54 -0
- package/dist/esm/common/icons/effects/magnify.js +61 -0
- package/dist/esm/common/icons/effects/noise.js +107 -0
- package/dist/esm/common/icons/effects/sepia.js +54 -0
- package/dist/esm/common/icons/effects/surface-fog.js +79 -0
- package/dist/esm/common/icons/effects/tilt-shift.js +63 -0
- package/dist/esm/common/icons/effects/triangle-blur.js +58 -0
- package/dist/esm/common/icons/effects/vibrance.js +54 -0
- package/dist/esm/common/icons/effects/vignette.js +47 -0
- package/dist/esm/common/icons/effects/zoom-blur.js +82 -0
- package/dist/esm/common/icons/email.js +38 -0
- package/dist/esm/common/icons/expand.js +36 -0
- package/dist/esm/common/icons/eye-seen.js +43 -0
- package/dist/esm/common/icons/eye-unseen.js +41 -0
- package/dist/esm/common/icons/file-type.js +30 -0
- package/dist/esm/common/icons/file.js +34 -0
- package/dist/esm/common/icons/files.js +37 -0
- package/dist/esm/common/icons/filter-funnel.js +44 -0
- package/dist/esm/common/icons/folder.js +44 -0
- package/dist/esm/common/icons/free-window.js +39 -0
- package/dist/esm/common/icons/gear.js +36 -0
- package/dist/esm/common/icons/globe.js +47 -0
- package/dist/esm/common/icons/hash.js +34 -0
- package/dist/esm/common/icons/help.js +44 -0
- package/dist/esm/common/icons/histogram.js +37 -0
- package/dist/esm/common/icons/horizontal-resize-handle.js +52 -0
- package/dist/esm/common/icons/index.js +126 -0
- package/dist/esm/common/icons/info.js +47 -0
- package/dist/esm/common/icons/layers.js +48 -0
- package/dist/esm/common/icons/left-arrow.js +37 -0
- package/dist/esm/common/icons/legend.js +62 -0
- package/dist/esm/common/icons/line-chart.js +34 -0
- package/dist/esm/common/icons/line-string.js +54 -0
- package/dist/esm/common/icons/location-marker.js +52 -0
- package/dist/esm/common/icons/login.js +37 -0
- package/dist/esm/common/icons/logout.js +36 -0
- package/dist/esm/common/icons/map-icon.js +40 -0
- package/dist/esm/common/icons/map-pin.js +50 -0
- package/dist/esm/common/icons/messages.js +48 -0
- package/dist/esm/common/icons/minus.js +34 -0
- package/dist/esm/common/icons/moon.js +52 -0
- package/dist/esm/common/icons/order-by-dataset.js +41 -0
- package/dist/esm/common/icons/order-by-list.js +33 -0
- package/dist/esm/common/icons/pause.js +54 -0
- package/dist/esm/common/icons/picture.js +55 -0
- package/dist/esm/common/icons/pin.js +46 -0
- package/dist/esm/common/icons/play.js +44 -0
- package/dist/esm/common/icons/pointer-click.js +52 -0
- package/dist/esm/common/icons/polygon.js +56 -0
- package/dist/esm/common/icons/rectangle.js +57 -0
- package/dist/esm/common/icons/reduce.js +37 -0
- package/dist/esm/common/icons/reset.js +50 -0
- package/dist/esm/common/icons/save.js +51 -0
- package/dist/esm/common/icons/save2.js +48 -0
- package/dist/esm/common/icons/search.js +36 -0
- package/dist/esm/common/icons/settings.js +54 -0
- package/dist/esm/common/icons/share.js +64 -0
- package/dist/esm/common/icons/speed.js +46 -0
- package/dist/esm/common/icons/split.js +62 -0
- package/dist/esm/common/icons/square-select.js +36 -0
- package/dist/esm/common/icons/sun.js +68 -0
- package/dist/esm/common/icons/sunrise.js +64 -0
- package/dist/esm/common/icons/sunset.js +64 -0
- package/dist/esm/common/icons/timeline-marker.js +49 -0
- package/dist/esm/common/icons/trash.js +48 -0
- package/dist/esm/common/icons/vert-dots.js +72 -0
- package/dist/esm/common/icons/vert-three-dots.js +47 -0
- package/dist/esm/common/icons/warning-sign.js +54 -0
- package/dist/esm/common/icons/warning.js +48 -0
- package/dist/esm/common/icons/zoom-in.js +41 -0
- package/dist/esm/common/icons/zoom-out.js +41 -0
- package/dist/esm/common/image-preview.js +59 -0
- package/dist/esm/common/index.js +8 -0
- package/dist/esm/common/info-helper.js +56 -0
- package/dist/esm/common/item-selector/accessor.js +31 -0
- package/dist/esm/common/item-selector/chickleted-input.js +150 -0
- package/dist/esm/common/item-selector/dropdown-list.js +251 -0
- package/dist/esm/common/item-selector/dropdown-select.js +79 -0
- package/dist/esm/common/item-selector/item-selector.js +247 -0
- package/dist/esm/common/item-selector/typeahead.js +428 -0
- package/dist/esm/common/layout-splitter.js +224 -0
- package/dist/esm/common/line-chart.js +279 -0
- package/dist/esm/common/link-renderer.js +13 -0
- package/dist/esm/common/loading-spinner.js +43 -0
- package/dist/esm/common/logo.js +63 -0
- package/dist/esm/common/map-layer-selector.js +33 -0
- package/dist/esm/common/modal.js +163 -0
- package/dist/esm/common/portaled.js +280 -0
- package/dist/esm/common/progress-bar.js +43 -0
- package/dist/esm/common/radius-legend.js +124 -0
- package/dist/esm/common/range-brush.js +258 -0
- package/dist/esm/common/range-plot.js +210 -0
- package/dist/esm/common/range-slider-timeline-panel.js +35 -0
- package/dist/esm/common/range-slider-timeline.js +105 -0
- package/dist/esm/common/range-slider.js +364 -0
- package/dist/esm/common/slider/mouse-event.js +98 -0
- package/dist/esm/common/slider/slider-bar-handle.js +84 -0
- package/dist/esm/common/slider/slider-handle.js +130 -0
- package/dist/esm/common/slider/slider.js +245 -0
- package/dist/esm/common/styled-components.js +441 -0
- package/dist/esm/common/switch.js +16 -0
- package/dist/esm/common/sync-timeline-control.js +54 -0
- package/dist/esm/common/time-range-slider-time-title.js +57 -0
- package/dist/esm/common/time-range-slider.js +135 -0
- package/dist/esm/common/time-slider-marker.js +105 -0
- package/dist/esm/common/timeline-helpers.js +48 -0
- package/dist/esm/common/timeline-slider.js +133 -0
- package/dist/esm/common/tippy-tooltip.js +127 -0
- package/dist/esm/common/toolbar-item.js +76 -0
- package/dist/esm/common/toolbar.js +22 -0
- package/dist/esm/common/vertical-toolbar.js +11 -0
- package/dist/esm/connect/keplergl-connect.js +38 -0
- package/dist/esm/connect/with-local-selector.js +78 -0
- package/dist/esm/container.js +171 -0
- package/dist/esm/context.js +35 -0
- package/dist/esm/dnd-context.js +167 -0
- package/dist/esm/editor/editor.js +211 -0
- package/dist/esm/editor/feature-action-panel.js +161 -0
- package/dist/esm/editor/feature-properties-editor.js +208 -0
- package/dist/esm/editor/filter-feature-badges.js +85 -0
- package/dist/esm/effects/compact-color-picker.js +103 -0
- package/dist/esm/effects/effect-configurator.js +465 -0
- package/dist/esm/effects/effect-list.js +122 -0
- package/dist/esm/effects/effect-manager.js +119 -0
- package/dist/esm/effects/effect-panel-header.js +188 -0
- package/dist/esm/effects/effect-panel.js +79 -0
- package/dist/esm/effects/effect-time-configurator.js +306 -0
- package/dist/esm/effects/effect-time-selector.js +145 -0
- package/dist/esm/effects/effect-time-slider.js +190 -0
- package/dist/esm/effects/effect-type-dropdown-list.js +57 -0
- package/dist/esm/effects/effect-type-list-item.js +89 -0
- package/dist/esm/effects/effect-type-selector.js +69 -0
- package/dist/esm/effects/side-panel-title.js +32 -0
- package/dist/esm/effects/surface-fog-section.js +254 -0
- package/dist/esm/effects/timezone-selector.js +50 -0
- package/dist/esm/filter-animation-controller.js +67 -0
- package/dist/esm/filters/components.js +9 -0
- package/dist/esm/filters/filter-panels/filter-panel-with-field-select.js +68 -0
- package/dist/esm/filters/filter-panels/filter-synced-dataset-panel.js +253 -0
- package/dist/esm/filters/filter-panels/multi-select-filter-panel.js +39 -0
- package/dist/esm/filters/filter-panels/new-filter-panel.js +56 -0
- package/dist/esm/filters/filter-panels/polygon-filter-panel.js +58 -0
- package/dist/esm/filters/filter-panels/range-filter-panel.js +44 -0
- package/dist/esm/filters/filter-panels/single-select-filter-panel.js +39 -0
- package/dist/esm/filters/filter-panels/time-range-filter-panel.js +120 -0
- package/dist/esm/filters/filter-panels/time-synced-field-selector.js +23 -0
- package/dist/esm/filters/filter-panels/types.js +3 -0
- package/dist/esm/filters/index.js +12 -0
- package/dist/esm/filters/multi-select-filter.js +24 -0
- package/dist/esm/filters/polygon-filter.js +67 -0
- package/dist/esm/filters/range-filter.js +28 -0
- package/dist/esm/filters/single-select-filter.js +33 -0
- package/dist/esm/filters/time-range-filter.js +61 -0
- package/dist/esm/filters/time-widget-settings.js +304 -0
- package/dist/esm/filters/time-widget-top.js +73 -0
- package/dist/esm/filters/time-widget.js +369 -0
- package/dist/esm/filters/types.js +3 -0
- package/dist/esm/geocoder/geocoder.js +318 -0
- package/dist/esm/geocoder-panel.js +164 -0
- package/dist/esm/hooks/use-cloud-list-provider.js +37 -0
- package/dist/esm/hooks/use-dnd-effects.js +62 -0
- package/dist/esm/hooks/use-dnd-layers.js +136 -0
- package/dist/esm/hooks/use-feature-flags.js +11 -0
- package/dist/esm/hooks/use-fetch-raster-tile-metadata.js +113 -0
- package/dist/esm/hooks/use-fetch-vector-tile-metadata.js +128 -0
- package/dist/esm/hooks/use-legend-position.js +170 -0
- package/dist/esm/hooks/use-on-click-outside.js +29 -0
- package/dist/esm/index.js +282 -0
- package/dist/esm/injector.js +141 -0
- package/dist/esm/kepler-gl.js +668 -0
- package/dist/esm/layer-animation-controller.js +44 -0
- package/dist/esm/loading-indicator.js +69 -0
- package/dist/esm/map/annotations/annotation-control.js +46 -0
- package/dist/esm/map/attribution.js +382 -0
- package/dist/esm/map/coordinate-info.js +36 -0
- package/dist/esm/map/effects/effect-control.js +42 -0
- package/dist/esm/map/layer-hover-info.js +312 -0
- package/dist/esm/map/lazy-tippy.js +53 -0
- package/dist/esm/map/locale-panel.js +67 -0
- package/dist/esm/map/map-control-panel.js +133 -0
- package/dist/esm/map/map-control-toolbar.js +13 -0
- package/dist/esm/map/map-control-tooltip.js +27 -0
- package/dist/esm/map/map-control.js +83 -0
- package/dist/esm/map/map-draw-panel.js +143 -0
- package/dist/esm/map/map-legend-panel.js +282 -0
- package/dist/esm/map/map-legend.js +496 -0
- package/dist/esm/map/map-navigation-control.js +152 -0
- package/dist/esm/map/map-popover-content.js +21 -0
- package/dist/esm/map/map-popover.js +181 -0
- package/dist/esm/map/map-scale.js +155 -0
- package/dist/esm/map/split-map-button.js +167 -0
- package/dist/esm/map/theme-toggle-button.js +55 -0
- package/dist/esm/map/toggle-3d-button.js +113 -0
- package/dist/esm/map-container.js +1303 -0
- package/dist/esm/map-view-state-context.js +89 -0
- package/dist/esm/maps-layout.js +95 -0
- package/dist/esm/modal-container.js +454 -0
- package/dist/esm/modals/add-map-style-modal.js +256 -0
- package/dist/esm/modals/cloud-components/cloud-header.js +52 -0
- package/dist/esm/modals/cloud-components/cloud-item.js +100 -0
- package/dist/esm/modals/cloud-components/cloud-item.spec.js +163 -0
- package/dist/esm/modals/cloud-components/cloud-maps.js +43 -0
- package/dist/esm/modals/cloud-components/cloud-maps.spec.js +94 -0
- package/dist/esm/modals/cloud-components/provider-select.js +25 -0
- package/dist/esm/modals/cloud-tile.js +209 -0
- package/dist/esm/modals/data-table-modal.js +220 -0
- package/dist/esm/modals/delete-data-modal.js +36 -0
- package/dist/esm/modals/error-display.js +23 -0
- package/dist/esm/modals/export-data-modal.js +155 -0
- package/dist/esm/modals/export-image-modal.js +181 -0
- package/dist/esm/modals/export-map-modal/components.js +29 -0
- package/dist/esm/modals/export-map-modal/export-html-map.js +123 -0
- package/dist/esm/modals/export-map-modal/export-json-map.js +74 -0
- package/dist/esm/modals/export-map-modal/export-map-modal.js +77 -0
- package/dist/esm/modals/export-video-modal.js +427 -0
- package/dist/esm/modals/export-video-modal.spec.js +731 -0
- package/dist/esm/modals/fog-height-animation.js +90 -0
- package/dist/esm/modals/globe-export-video-container.js +636 -0
- package/dist/esm/modals/globe-export-video-preview.js +159 -0
- package/dist/esm/modals/hubble-utils.js +434 -0
- package/dist/esm/modals/hubble-utils.spec.js +396 -0
- package/dist/esm/modals/image-modal-container.js +48 -0
- package/dist/esm/modals/load-data-modal.js +89 -0
- package/dist/esm/modals/load-storage-map.js +70 -0
- package/dist/esm/modals/load-storage-map.spec.js +212 -0
- package/dist/esm/modals/loading-dialog.js +32 -0
- package/dist/esm/modals/modal-dialog.js +9 -0
- package/dist/esm/modals/modal-tabs.js +67 -0
- package/dist/esm/modals/overwrite-map-modal.js +76 -0
- package/dist/esm/modals/save-map-modal.js +172 -0
- package/dist/esm/modals/save-map-modal.spec.js +196 -0
- package/dist/esm/modals/share-map-modal.js +160 -0
- package/dist/esm/modals/share-map-modal.spec.js +172 -0
- package/dist/esm/modals/status-panel.js +60 -0
- package/dist/esm/modals/swipe-composite-utils.js +119 -0
- package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
- package/dist/esm/modals/swipe-export-settings.js +366 -0
- package/dist/esm/modals/swipe-export-video-container.js +646 -0
- package/dist/esm/modals/swipe-export-video-preview.js +388 -0
- package/dist/esm/modals/tilesets-modals/common.js +3 -0
- package/dist/esm/modals/tilesets-modals/load-data-footer.js +48 -0
- package/dist/esm/modals/tilesets-modals/load-tileset.js +161 -0
- package/dist/esm/modals/tilesets-modals/tileset-bitmap-form.js +275 -0
- package/dist/esm/modals/tilesets-modals/tileset-icon.js +34 -0
- package/dist/esm/modals/tilesets-modals/tileset-raster-form.js +279 -0
- package/dist/esm/modals/tilesets-modals/tileset-tile3d-form.js +380 -0
- package/dist/esm/modals/tilesets-modals/tileset-vector-form.js +253 -0
- package/dist/esm/modals/tilesets-modals/tileset-wms-form.js +199 -0
- package/dist/esm/notification-panel/notification-item.js +112 -0
- package/dist/esm/notification-panel.js +34 -0
- package/dist/esm/plot-container.js +304 -0
- package/dist/esm/side-panel/add-by-dataset-button.js +121 -0
- package/dist/esm/side-panel/common/dataset-info.js +29 -0
- package/dist/esm/side-panel/common/dataset-tag.js +57 -0
- package/dist/esm/side-panel/common/dataset-title.js +136 -0
- package/dist/esm/side-panel/common/source-data-catalog.js +44 -0
- package/dist/esm/side-panel/common/source-data-selector-content.js +55 -0
- package/dist/esm/side-panel/common/source-data-selector.js +34 -0
- package/dist/esm/side-panel/common/source-selector.js +49 -0
- package/dist/esm/side-panel/common/types.js +3 -0
- package/dist/esm/side-panel/custom-panel.js +32 -0
- package/dist/esm/side-panel/filter-manager.js +195 -0
- package/dist/esm/side-panel/filter-panel/add-filter-button.js +20 -0
- package/dist/esm/side-panel/filter-panel/filter-panel-header.js +60 -0
- package/dist/esm/side-panel/filter-panel/filter-panel.js +85 -0
- package/dist/esm/side-panel/interaction-manager.js +38 -0
- package/dist/esm/side-panel/interaction-panel/brush-config.js +36 -0
- package/dist/esm/side-panel/interaction-panel/geocoder-config.js +40 -0
- package/dist/esm/side-panel/interaction-panel/interaction-panel.js +114 -0
- package/dist/esm/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +157 -0
- package/dist/esm/side-panel/interaction-panel/tooltip-config.js +142 -0
- package/dist/esm/side-panel/layer-manager.js +225 -0
- package/dist/esm/side-panel/layer-panel/add-layer-button.js +20 -0
- package/dist/esm/side-panel/layer-panel/aggr-scale-selector.js +29 -0
- package/dist/esm/side-panel/layer-panel/channel-by-value-selector.js +61 -0
- package/dist/esm/side-panel/layer-panel/color-breaks-panel.js +186 -0
- package/dist/esm/side-panel/layer-panel/color-palette-preset.js +40 -0
- package/dist/esm/side-panel/layer-panel/color-palette.js +67 -0
- package/dist/esm/side-panel/layer-panel/color-range-selector.js +236 -0
- package/dist/esm/side-panel/layer-panel/color-scale-selector.js +288 -0
- package/dist/esm/side-panel/layer-panel/color-selector.js +179 -0
- package/dist/esm/side-panel/layer-panel/column-selector.js +52 -0
- package/dist/esm/side-panel/layer-panel/custom-palette.js +783 -0
- package/dist/esm/side-panel/layer-panel/custom-picker.js +77 -0
- package/dist/esm/side-panel/layer-panel/dataset-layer-group.js +59 -0
- package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +102 -0
- package/dist/esm/side-panel/layer-panel/dataset-section.js +68 -0
- package/dist/esm/side-panel/layer-panel/dimension-scale-selector.js +82 -0
- package/dist/esm/side-panel/layer-panel/how-to-button.js +22 -0
- package/dist/esm/side-panel/layer-panel/layer-color-selector.js +94 -0
- package/dist/esm/side-panel/layer-panel/layer-column-config.js +76 -0
- package/dist/esm/side-panel/layer-panel/layer-column-mode-config.js +184 -0
- package/dist/esm/side-panel/layer-panel/layer-config-group.js +134 -0
- package/dist/esm/side-panel/layer-panel/layer-configurator.js +1107 -0
- package/dist/esm/side-panel/layer-panel/layer-error-message.js +24 -0
- package/dist/esm/side-panel/layer-panel/layer-group-header.js +171 -0
- package/dist/esm/side-panel/layer-panel/layer-list.js +323 -0
- package/dist/esm/side-panel/layer-panel/layer-panel-header.js +302 -0
- package/dist/esm/side-panel/layer-panel/layer-panel.js +164 -0
- package/dist/esm/side-panel/layer-panel/layer-type-dropdown-list.js +69 -0
- package/dist/esm/side-panel/layer-panel/layer-type-list-item.js +63 -0
- package/dist/esm/side-panel/layer-panel/layer-type-selector.js +50 -0
- package/dist/esm/side-panel/layer-panel/raster-tile-colormap-list-item.js +55 -0
- package/dist/esm/side-panel/layer-panel/raster-tile-layer-configurator.js +450 -0
- package/dist/esm/side-panel/layer-panel/scenegraph-model-selector.js +115 -0
- package/dist/esm/side-panel/layer-panel/single-color-palette.js +78 -0
- package/dist/esm/side-panel/layer-panel/text-label-panel.js +166 -0
- package/dist/esm/side-panel/layer-panel/vector-tile-layer-configurator.js +86 -0
- package/dist/esm/side-panel/layer-panel/vis-config-by-field-selector.js +53 -0
- package/dist/esm/side-panel/layer-panel/vis-config-slider.js +160 -0
- package/dist/esm/side-panel/layer-panel/vis-config-switch.js +50 -0
- package/dist/esm/side-panel/map-manager.js +99 -0
- package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +327 -0
- package/dist/esm/side-panel/map-style-panel/map-layer-group-color-picker.js +69 -0
- package/dist/esm/side-panel/map-style-panel/map-layer-group-item.js +87 -0
- package/dist/esm/side-panel/map-style-panel/map-layer-selector.js +69 -0
- package/dist/esm/side-panel/map-style-panel/map-style-selector.js +92 -0
- package/dist/esm/side-panel/panel-header-action.js +68 -0
- package/dist/esm/side-panel/panel-header.js +303 -0
- package/dist/esm/side-panel/panel-tab.js +49 -0
- package/dist/esm/side-panel/panel-title.js +35 -0
- package/dist/esm/side-panel/panel-toggle.js +40 -0
- package/dist/esm/side-panel/panel-view-list-toggle.js +90 -0
- package/dist/esm/side-panel/side-bar.js +119 -0
- package/dist/esm/side-panel.js +227 -0
- package/dist/esm/types.js +3 -0
- package/dist/index.d.ts +9 -1
- package/dist/kepler-gl.d.ts +3 -0
- package/dist/map/map-control.d.ts +6 -2
- package/dist/map/map-draw-panel.d.ts +1 -0
- package/dist/map/theme-toggle-button.d.ts +18 -0
- package/dist/map-container.d.ts +1 -0
- package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
- package/dist/modals/data-table-modal.d.ts +1 -0
- package/dist/modals/globe-export-video-container.d.ts +2 -0
- package/dist/modals/globe-export-video-preview.d.ts +3 -0
- package/dist/modals/hubble-utils.d.ts +18 -1
- package/dist/modals/swipe-composite-utils.d.ts +1 -1
- package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
- package/package.json +39 -24
- package/dist/annotations/annotation-node.js +0 -145
- package/dist/annotations/annotation-overlay.js +0 -168
- package/dist/annotations/annotation-panel.js +0 -361
- package/dist/annotations/annotation-text.js +0 -149
- package/dist/annotations/annotation-utils.js +0 -197
- package/dist/annotations/index.js +0 -53
- package/dist/annotations/lexical-editor/clickable-link-plugin.js +0 -71
- package/dist/annotations/lexical-editor/floating-link-editor.js +0 -193
- package/dist/annotations/lexical-editor/index.js +0 -78
- package/dist/annotations/lexical-editor/lexical-constants.js +0 -22
- package/dist/annotations/lexical-editor/lexical-nodes.js +0 -13
- package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +0 -121
- package/dist/annotations/lexical-editor/lexical-theme.js +0 -25
- package/dist/annotations/lexical-editor/lexical-toolbar.js +0 -292
- package/dist/annotations/lexical-editor/lexical-utils.js +0 -45
- package/dist/annotations/lexical-editor/use-lexical-toolbar.js +0 -253
- package/dist/bottom-widget.js +0 -183
- package/dist/common/action-panel.js +0 -133
- package/dist/common/animation-control/animation-control.js +0 -100
- package/dist/common/animation-control/animation-controller.js +0 -271
- package/dist/common/animation-control/animation-speed-slider.js +0 -63
- package/dist/common/animation-control/animation-window-control.js +0 -59
- package/dist/common/animation-control/export-video-control.js +0 -43
- package/dist/common/animation-control/floating-time-display.js +0 -131
- package/dist/common/animation-control/play-control.js +0 -50
- package/dist/common/animation-control/playback-controls.js +0 -164
- package/dist/common/animation-control/reset-control.js +0 -41
- package/dist/common/animation-control/speed-control.js +0 -51
- package/dist/common/animation-control/window-action-control.js +0 -57
- package/dist/common/checkbox.js +0 -101
- package/dist/common/color-legend.js +0 -272
- package/dist/common/column-stats-chart.js +0 -312
- package/dist/common/data-table/button.js +0 -38
- package/dist/common/data-table/canvas.js +0 -26
- package/dist/common/data-table/cell-size.js +0 -183
- package/dist/common/data-table/display-format.js +0 -125
- package/dist/common/data-table/grid.js +0 -106
- package/dist/common/data-table/header-cell.js +0 -148
- package/dist/common/data-table/index.js +0 -470
- package/dist/common/data-table/option-dropdown.js +0 -159
- package/dist/common/dataset-label.js +0 -27
- package/dist/common/dnd-layer-items.js +0 -22
- package/dist/common/error-boundary.js +0 -59
- package/dist/common/field-selector.js +0 -172
- package/dist/common/field-token.js +0 -43
- package/dist/common/file-uploader/file-drop.js +0 -180
- package/dist/common/file-uploader/file-upload-progress.js +0 -84
- package/dist/common/file-uploader/file-upload.js +0 -241
- package/dist/common/file-uploader/upload-button.js +0 -58
- package/dist/common/flex-container.js +0 -15
- package/dist/common/histogram-plot.js +0 -282
- package/dist/common/icon-button.js +0 -25
- package/dist/common/icons/3d-models/airplane.js +0 -103
- package/dist/common/icons/3d-models/bicycle.js +0 -425
- package/dist/common/icons/3d-models/boeing.js +0 -118
- package/dist/common/icons/3d-models/car.js +0 -109
- package/dist/common/icons/3d-models/cargoship.js +0 -245
- package/dist/common/icons/3d-models/evtol.js +0 -133
- package/dist/common/icons/3d-models/glider.js +0 -61
- package/dist/common/icons/3d-models/helicopter.js +0 -109
- package/dist/common/icons/3d-models/scooter.js +0 -158
- package/dist/common/icons/3d-models/semitruck.js +0 -176
- package/dist/common/icons/3d-models/truck.js +0 -121
- package/dist/common/icons/add.js +0 -40
- package/dist/common/icons/anchor_window.js +0 -41
- package/dist/common/icons/annotation-text.js +0 -55
- package/dist/common/icons/arrow-down-alt.js +0 -40
- package/dist/common/icons/arrow-down-full.js +0 -49
- package/dist/common/icons/arrow-down-small.js +0 -53
- package/dist/common/icons/arrow-down-solid.d.ts +0 -9
- package/dist/common/icons/arrow-down-solid.js +0 -40
- package/dist/common/icons/arrow-down.js +0 -50
- package/dist/common/icons/arrow-left.js +0 -43
- package/dist/common/icons/arrow-right.js +0 -40
- package/dist/common/icons/arrow-up-alt.js +0 -41
- package/dist/common/icons/arrow-up-solid.js +0 -40
- package/dist/common/icons/arrow-up.js +0 -40
- package/dist/common/icons/base-map.js +0 -56
- package/dist/common/icons/base.js +0 -78
- package/dist/common/icons/bug.js +0 -70
- package/dist/common/icons/calendar.js +0 -48
- package/dist/common/icons/cancel.js +0 -40
- package/dist/common/icons/checkmark.js +0 -46
- package/dist/common/icons/clipboard.js +0 -41
- package/dist/common/icons/clock.js +0 -42
- package/dist/common/icons/close.js +0 -46
- package/dist/common/icons/cloud.js +0 -50
- package/dist/common/icons/code-alt.js +0 -43
- package/dist/common/icons/copy.js +0 -51
- package/dist/common/icons/crosshairs.js +0 -43
- package/dist/common/icons/cube-3d.js +0 -54
- package/dist/common/icons/cursor-click.js +0 -44
- package/dist/common/icons/cursor-point.js +0 -50
- package/dist/common/icons/data-table.js +0 -76
- package/dist/common/icons/db.js +0 -58
- package/dist/common/icons/delete.js +0 -52
- package/dist/common/icons/docs.js +0 -56
- package/dist/common/icons/docs2.js +0 -50
- package/dist/common/icons/drag-n-drop.js +0 -42
- package/dist/common/icons/draggable-dots.js +0 -84
- package/dist/common/icons/draw-polygon.js +0 -60
- package/dist/common/icons/edit.js +0 -48
- package/dist/common/icons/effects/brightness-contrast.js +0 -69
- package/dist/common/icons/effects/color-halftone.js +0 -108
- package/dist/common/icons/effects/distance-fog.js +0 -78
- package/dist/common/icons/effects/dot-screen.js +0 -103
- package/dist/common/icons/effects/edge-work.js +0 -62
- package/dist/common/icons/effects/hexagonal-pixelate.js +0 -129
- package/dist/common/icons/effects/hue-saturation.js +0 -60
- package/dist/common/icons/effects/ink.js +0 -59
- package/dist/common/icons/effects/light-and-shadow.js +0 -48
- package/dist/common/icons/effects/magic-wand.js +0 -60
- package/dist/common/icons/effects/magnify.js +0 -67
- package/dist/common/icons/effects/noise.js +0 -113
- package/dist/common/icons/effects/sepia.js +0 -60
- package/dist/common/icons/effects/surface-fog.js +0 -85
- package/dist/common/icons/effects/tilt-shift.js +0 -69
- package/dist/common/icons/effects/triangle-blur.js +0 -64
- package/dist/common/icons/effects/vibrance.js +0 -60
- package/dist/common/icons/effects/vignette.js +0 -53
- package/dist/common/icons/effects/zoom-blur.js +0 -88
- package/dist/common/icons/email.js +0 -44
- package/dist/common/icons/expand.js +0 -42
- package/dist/common/icons/eye-seen.js +0 -49
- package/dist/common/icons/eye-unseen.js +0 -47
- package/dist/common/icons/file-type.js +0 -35
- package/dist/common/icons/file.js +0 -40
- package/dist/common/icons/files.js +0 -41
- package/dist/common/icons/filter-funnel.js +0 -50
- package/dist/common/icons/folder.js +0 -50
- package/dist/common/icons/free-window.js +0 -44
- package/dist/common/icons/gear.js +0 -42
- package/dist/common/icons/globe.js +0 -53
- package/dist/common/icons/hash.js +0 -40
- package/dist/common/icons/help.js +0 -50
- package/dist/common/icons/histogram.js +0 -41
- package/dist/common/icons/horizontal-resize-handle.js +0 -58
- package/dist/common/icons/index.js +0 -824
- package/dist/common/icons/info.js +0 -53
- package/dist/common/icons/layers.js +0 -54
- package/dist/common/icons/left-arrow.js +0 -43
- package/dist/common/icons/legend.js +0 -68
- package/dist/common/icons/line-chart.js +0 -40
- package/dist/common/icons/location-marker.js +0 -58
- package/dist/common/icons/login.js +0 -43
- package/dist/common/icons/logout.js +0 -42
- package/dist/common/icons/map-icon.js +0 -47
- package/dist/common/icons/map-pin.js +0 -56
- package/dist/common/icons/messages.js +0 -54
- package/dist/common/icons/minus.js +0 -40
- package/dist/common/icons/moon.js +0 -58
- package/dist/common/icons/order-by-dataset.js +0 -46
- package/dist/common/icons/order-by-list.js +0 -38
- package/dist/common/icons/pause.js +0 -60
- package/dist/common/icons/picture.js +0 -59
- package/dist/common/icons/pin.js +0 -52
- package/dist/common/icons/play.js +0 -50
- package/dist/common/icons/pointer-click.js +0 -58
- package/dist/common/icons/polygon.js +0 -62
- package/dist/common/icons/rectangle.js +0 -63
- package/dist/common/icons/reduce.js +0 -43
- package/dist/common/icons/reset.js +0 -56
- package/dist/common/icons/save.js +0 -57
- package/dist/common/icons/save2.js +0 -54
- package/dist/common/icons/search.js +0 -42
- package/dist/common/icons/settings.js +0 -60
- package/dist/common/icons/share.js +0 -70
- package/dist/common/icons/speed.js +0 -52
- package/dist/common/icons/split.js +0 -68
- package/dist/common/icons/square-select.js +0 -42
- package/dist/common/icons/sun.js +0 -74
- package/dist/common/icons/sunrise.js +0 -70
- package/dist/common/icons/sunset.js +0 -70
- package/dist/common/icons/timeline-marker.js +0 -55
- package/dist/common/icons/trash.js +0 -54
- package/dist/common/icons/vert-dots.js +0 -78
- package/dist/common/icons/vert-three-dots.js +0 -53
- package/dist/common/icons/warning-sign.js +0 -60
- package/dist/common/icons/warning.js +0 -54
- package/dist/common/icons/zoom-in.js +0 -47
- package/dist/common/icons/zoom-out.js +0 -47
- package/dist/common/image-preview.js +0 -64
- package/dist/common/index.js +0 -282
- package/dist/common/info-helper.js +0 -61
- package/dist/common/item-selector/accessor.js +0 -37
- package/dist/common/item-selector/chickleted-input.js +0 -157
- package/dist/common/item-selector/dropdown-list.js +0 -257
- package/dist/common/item-selector/dropdown-select.js +0 -84
- package/dist/common/item-selector/item-selector.js +0 -254
- package/dist/common/item-selector/typeahead.js +0 -435
- package/dist/common/layout-splitter.js +0 -230
- package/dist/common/line-chart.js +0 -286
- package/dist/common/link-renderer.js +0 -20
- package/dist/common/loading-spinner.js +0 -50
- package/dist/common/logo.js +0 -68
- package/dist/common/map-layer-selector.js +0 -38
- package/dist/common/modal.js +0 -170
- package/dist/common/portaled.js +0 -287
- package/dist/common/progress-bar.js +0 -47
- package/dist/common/radius-legend.js +0 -131
- package/dist/common/range-brush.js +0 -265
- package/dist/common/range-plot.js +0 -217
- package/dist/common/range-slider-timeline-panel.js +0 -42
- package/dist/common/range-slider-timeline.js +0 -112
- package/dist/common/range-slider.js +0 -371
- package/dist/common/slider/mouse-event.js +0 -104
- package/dist/common/slider/slider-bar-handle.js +0 -90
- package/dist/common/slider/slider-handle.js +0 -136
- package/dist/common/slider/slider.js +0 -251
- package/dist/common/styled-components.js +0 -447
- package/dist/common/switch.js +0 -21
- package/dist/common/sync-timeline-control.js +0 -61
- package/dist/common/time-range-slider-time-title.js +0 -62
- package/dist/common/time-range-slider.js +0 -143
- package/dist/common/time-slider-marker.js +0 -115
- package/dist/common/timeline-helpers.js +0 -57
- package/dist/common/timeline-slider.js +0 -140
- package/dist/common/tippy-tooltip.js +0 -134
- package/dist/common/toolbar-item.js +0 -60
- package/dist/common/toolbar.js +0 -27
- package/dist/common/vertical-toolbar.js +0 -16
- package/dist/connect/keplergl-connect.js +0 -44
- package/dist/connect/with-local-selector.js +0 -85
- package/dist/container.js +0 -180
- package/dist/context.js +0 -43
- package/dist/dnd-context.js +0 -174
- package/dist/editor/editor.js +0 -200
- package/dist/editor/feature-action-panel.js +0 -147
- package/dist/effects/compact-color-picker.js +0 -110
- package/dist/effects/effect-configurator.js +0 -473
- package/dist/effects/effect-list.js +0 -129
- package/dist/effects/effect-manager.js +0 -126
- package/dist/effects/effect-panel-header.js +0 -196
- package/dist/effects/effect-panel.js +0 -86
- package/dist/effects/effect-time-configurator.js +0 -313
- package/dist/effects/effect-time-selector.js +0 -152
- package/dist/effects/effect-time-slider.js +0 -198
- package/dist/effects/effect-type-dropdown-list.js +0 -65
- package/dist/effects/effect-type-list-item.js +0 -98
- package/dist/effects/effect-type-selector.js +0 -76
- package/dist/effects/side-panel-title.js +0 -37
- package/dist/effects/surface-fog-section.js +0 -262
- package/dist/effects/timezone-selector.js +0 -57
- package/dist/filter-animation-controller.js +0 -76
- package/dist/filters/components.js +0 -14
- package/dist/filters/filter-panels/filter-panel-with-field-select.js +0 -77
- package/dist/filters/filter-panels/filter-synced-dataset-panel.js +0 -260
- package/dist/filters/filter-panels/multi-select-filter-panel.js +0 -48
- package/dist/filters/filter-panels/new-filter-panel.js +0 -66
- package/dist/filters/filter-panels/polygon-filter-panel.js +0 -67
- package/dist/filters/filter-panels/range-filter-panel.js +0 -53
- package/dist/filters/filter-panels/single-select-filter-panel.js +0 -48
- package/dist/filters/filter-panels/time-range-filter-panel.js +0 -129
- package/dist/filters/filter-panels/time-synced-field-selector.js +0 -28
- package/dist/filters/filter-panels/types.js +0 -6
- package/dist/filters/index.js +0 -63
- package/dist/filters/multi-select-filter.js +0 -31
- package/dist/filters/polygon-filter.js +0 -76
- package/dist/filters/range-filter.js +0 -35
- package/dist/filters/single-select-filter.js +0 -40
- package/dist/filters/time-range-filter.js +0 -69
- package/dist/filters/time-widget-settings.js +0 -311
- package/dist/filters/time-widget-top.js +0 -80
- package/dist/filters/time-widget.js +0 -376
- package/dist/filters/types.js +0 -6
- package/dist/geocoder/geocoder.js +0 -327
- package/dist/geocoder-panel.js +0 -172
- package/dist/hooks/use-cloud-list-provider.js +0 -46
- package/dist/hooks/use-dnd-effects.js +0 -69
- package/dist/hooks/use-dnd-layers.js +0 -141
- package/dist/hooks/use-feature-flags.js +0 -17
- package/dist/hooks/use-fetch-raster-tile-metadata.js +0 -120
- package/dist/hooks/use-fetch-vector-tile-metadata.js +0 -133
- package/dist/hooks/use-legend-position.js +0 -176
- package/dist/hooks/use-on-click-outside.js +0 -36
- package/dist/index.js +0 -2890
- package/dist/injector.js +0 -151
- package/dist/kepler-gl.js +0 -664
- package/dist/layer-animation-controller.js +0 -53
- package/dist/loading-indicator.js +0 -76
- package/dist/map/annotations/annotation-control.js +0 -55
- package/dist/map/attribution.js +0 -391
- package/dist/map/coordinate-info.js +0 -42
- package/dist/map/effects/effect-control.js +0 -51
- package/dist/map/layer-hover-info.js +0 -318
- package/dist/map/lazy-tippy.js +0 -60
- package/dist/map/locale-panel.js +0 -76
- package/dist/map/map-control-panel.js +0 -140
- package/dist/map/map-control-toolbar.js +0 -18
- package/dist/map/map-control-tooltip.js +0 -34
- package/dist/map/map-control.js +0 -81
- package/dist/map/map-draw-panel.js +0 -100
- package/dist/map/map-legend-panel.js +0 -289
- package/dist/map/map-legend.js +0 -509
- package/dist/map/map-navigation-control.js +0 -159
- package/dist/map/map-popover-content.js +0 -28
- package/dist/map/map-popover.js +0 -189
- package/dist/map/map-scale.js +0 -162
- package/dist/map/split-map-button.js +0 -176
- package/dist/map/toggle-3d-button.js +0 -122
- package/dist/map-container.js +0 -1322
- package/dist/map-view-state-context.js +0 -98
- package/dist/maps-layout.js +0 -102
- package/dist/modal-container.js +0 -456
- package/dist/modals/add-map-style-modal.js +0 -262
- package/dist/modals/cloud-components/cloud-header.js +0 -59
- package/dist/modals/cloud-components/cloud-item.js +0 -59
- package/dist/modals/cloud-components/cloud-item.spec.js +0 -92
- package/dist/modals/cloud-components/cloud-maps.js +0 -47
- package/dist/modals/cloud-components/cloud-maps.spec.js +0 -98
- package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
- package/dist/modals/cloud-components/provider-loading.js +0 -20
- package/dist/modals/cloud-components/provider-select.js +0 -30
- package/dist/modals/cloud-tile.js +0 -202
- package/dist/modals/data-table-modal.js +0 -215
- package/dist/modals/delete-data-modal.js +0 -41
- package/dist/modals/error-display.js +0 -32
- package/dist/modals/export-data-modal.js +0 -163
- package/dist/modals/export-image-modal.js +0 -188
- package/dist/modals/export-map-modal/components.js +0 -34
- package/dist/modals/export-map-modal/export-html-map.js +0 -128
- package/dist/modals/export-map-modal/export-json-map.js +0 -81
- package/dist/modals/export-map-modal/export-map-modal.js +0 -84
- package/dist/modals/export-video-modal.js +0 -413
- package/dist/modals/export-video-modal.spec.js +0 -686
- package/dist/modals/fog-height-animation.js +0 -97
- package/dist/modals/globe-export-video-container.js +0 -626
- package/dist/modals/globe-export-video-preview.js +0 -152
- package/dist/modals/hubble-utils.js +0 -422
- package/dist/modals/hubble-utils.spec.js +0 -397
- package/dist/modals/image-modal-container.js +0 -57
- package/dist/modals/load-data-modal.js +0 -97
- package/dist/modals/load-storage-map.js +0 -79
- package/dist/modals/load-storage-map.spec.js +0 -216
- package/dist/modals/loading-dialog.js +0 -37
- package/dist/modals/modal-dialog.js +0 -16
- package/dist/modals/modal-tabs.js +0 -74
- package/dist/modals/overwrite-map-modal.js +0 -83
- package/dist/modals/save-map-modal.js +0 -179
- package/dist/modals/save-map-modal.spec.js +0 -195
- package/dist/modals/share-map-modal.js +0 -168
- package/dist/modals/share-map-modal.spec.js +0 -173
- package/dist/modals/status-panel.js +0 -65
- package/dist/modals/storage-map-viewer.d.ts +0 -21
- package/dist/modals/storage-map-viewer.js +0 -98
- package/dist/modals/swipe-composite-utils.js +0 -118
- package/dist/modals/swipe-export-settings.js +0 -372
- package/dist/modals/swipe-export-video-container.js +0 -653
- package/dist/modals/swipe-export-video-preview.js +0 -401
- package/dist/modals/tilesets-modals/common.js +0 -6
- package/dist/modals/tilesets-modals/load-data-footer.js +0 -55
- package/dist/modals/tilesets-modals/load-tileset.js +0 -168
- package/dist/modals/tilesets-modals/tileset-bitmap-form.js +0 -283
- package/dist/modals/tilesets-modals/tileset-icon.js +0 -39
- package/dist/modals/tilesets-modals/tileset-raster-form.js +0 -287
- package/dist/modals/tilesets-modals/tileset-tile3d-form.js +0 -388
- package/dist/modals/tilesets-modals/tileset-vector-form.js +0 -261
- package/dist/modals/tilesets-modals/tileset-wms-form.js +0 -206
- package/dist/notification-panel/notification-item.js +0 -119
- package/dist/notification-panel.js +0 -39
- package/dist/plot-container.js +0 -311
- package/dist/side-panel/add-by-dataset-button.js +0 -128
- package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
- package/dist/side-panel/cloud-storage-dropdown.js +0 -40
- package/dist/side-panel/common/dataset-info.js +0 -34
- package/dist/side-panel/common/dataset-tag.js +0 -62
- package/dist/side-panel/common/dataset-title.js +0 -143
- package/dist/side-panel/common/source-data-catalog.js +0 -49
- package/dist/side-panel/common/source-data-selector-content.js +0 -64
- package/dist/side-panel/common/source-data-selector.js +0 -41
- package/dist/side-panel/common/source-selector.js +0 -56
- package/dist/side-panel/common/types.js +0 -6
- package/dist/side-panel/custom-panel.js +0 -39
- package/dist/side-panel/filter-manager.js +0 -202
- package/dist/side-panel/filter-panel/add-filter-button.js +0 -27
- package/dist/side-panel/filter-panel/filter-panel-header.js +0 -67
- package/dist/side-panel/filter-panel/filter-panel.js +0 -92
- package/dist/side-panel/interaction-manager.js +0 -45
- package/dist/side-panel/interaction-panel/brush-config.js +0 -41
- package/dist/side-panel/interaction-panel/geocoder-config.js +0 -45
- package/dist/side-panel/interaction-panel/interaction-panel.js +0 -121
- package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +0 -164
- package/dist/side-panel/interaction-panel/tooltip-config.js +0 -149
- package/dist/side-panel/layer-manager.js +0 -224
- package/dist/side-panel/layer-panel/add-layer-button.js +0 -27
- package/dist/side-panel/layer-panel/aggr-scale-selector.js +0 -37
- package/dist/side-panel/layer-panel/channel-by-value-selector.js +0 -71
- package/dist/side-panel/layer-panel/color-breaks-panel.js +0 -193
- package/dist/side-panel/layer-panel/color-palette-preset.js +0 -45
- package/dist/side-panel/layer-panel/color-palette.js +0 -74
- package/dist/side-panel/layer-panel/color-range-selector.js +0 -242
- package/dist/side-panel/layer-panel/color-scale-selector.js +0 -295
- package/dist/side-panel/layer-panel/color-selector.js +0 -186
- package/dist/side-panel/layer-panel/column-selector.js +0 -59
- package/dist/side-panel/layer-panel/custom-palette.js +0 -787
- package/dist/side-panel/layer-panel/custom-picker.js +0 -83
- package/dist/side-panel/layer-panel/dataset-layer-group.js +0 -68
- package/dist/side-panel/layer-panel/dataset-layer-section.js +0 -101
- package/dist/side-panel/layer-panel/dataset-section.js +0 -74
- package/dist/side-panel/layer-panel/dimension-scale-selector.js +0 -91
- package/dist/side-panel/layer-panel/how-to-button.js +0 -27
- package/dist/side-panel/layer-panel/layer-color-selector.js +0 -105
- package/dist/side-panel/layer-panel/layer-column-config.js +0 -85
- package/dist/side-panel/layer-panel/layer-column-mode-config.js +0 -192
- package/dist/side-panel/layer-panel/layer-config-group.js +0 -143
- package/dist/side-panel/layer-panel/layer-configurator.js +0 -1073
- package/dist/side-panel/layer-panel/layer-error-message.js +0 -29
- package/dist/side-panel/layer-panel/layer-group-header.js +0 -178
- package/dist/side-panel/layer-panel/layer-list.js +0 -330
- package/dist/side-panel/layer-panel/layer-panel-header.js +0 -311
- package/dist/side-panel/layer-panel/layer-panel.js +0 -171
- package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +0 -77
- package/dist/side-panel/layer-panel/layer-type-list-item.js +0 -71
- package/dist/side-panel/layer-panel/layer-type-selector.js +0 -57
- package/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +0 -60
- package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +0 -457
- package/dist/side-panel/layer-panel/scenegraph-model-selector.js +0 -122
- package/dist/side-panel/layer-panel/single-color-palette.js +0 -85
- package/dist/side-panel/layer-panel/text-label-panel.js +0 -173
- package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +0 -93
- package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +0 -60
- package/dist/side-panel/layer-panel/vis-config-slider.js +0 -167
- package/dist/side-panel/layer-panel/vis-config-switch.js +0 -55
- package/dist/side-panel/map-manager.js +0 -108
- package/dist/side-panel/map-style-panel/globe-config-panel.js +0 -269
- package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +0 -76
- package/dist/side-panel/map-style-panel/map-layer-group-item.js +0 -94
- package/dist/side-panel/map-style-panel/map-layer-selector.js +0 -74
- package/dist/side-panel/map-style-panel/map-style-selector.js +0 -97
- package/dist/side-panel/panel-header-action.js +0 -73
- package/dist/side-panel/panel-header.js +0 -309
- package/dist/side-panel/panel-tab.js +0 -55
- package/dist/side-panel/panel-title.js +0 -40
- package/dist/side-panel/panel-toggle.js +0 -47
- package/dist/side-panel/panel-view-list-toggle.js +0 -97
- package/dist/side-panel/side-bar.js +0 -126
- package/dist/side-panel.js +0 -235
- package/dist/types.js +0 -6
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
4
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
5
|
+
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
6
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
7
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
8
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
|
|
9
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
10
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
11
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
12
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
13
|
+
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; }
|
|
14
|
+
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) { _defineProperty(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; }
|
|
15
|
+
// SPDX-License-Identifier: MIT
|
|
16
|
+
// Copyright contributors to the kepler.gl project
|
|
17
|
+
|
|
18
|
+
import React, { Component, createRef, useMemo } from 'react';
|
|
19
|
+
import { ScrollSync, AutoSizer } from 'react-virtualized';
|
|
20
|
+
import styled, { withTheme } from 'styled-components';
|
|
21
|
+
import classnames from 'classnames';
|
|
22
|
+
import { createSelector } from 'reselect';
|
|
23
|
+
import get from 'lodash/get';
|
|
24
|
+
import debounce from 'lodash/debounce';
|
|
25
|
+
import { ArrowDown } from '../icons';
|
|
26
|
+
import LoadingSpinner from '../loading-spinner';
|
|
27
|
+
import Grid from './grid';
|
|
28
|
+
import HeaderCellFactory from './header-cell';
|
|
29
|
+
import { parseFieldValue, getColumnFormatter } from '@kepler.gl/utils';
|
|
30
|
+
import { adjustCellsToContainer } from './cell-size';
|
|
31
|
+
import { ALL_FIELD_TYPES } from '@kepler.gl/constants';
|
|
32
|
+
var defaultHeaderRowHeight = 55;
|
|
33
|
+
var defaultHeaderStatsControlHeight = 40;
|
|
34
|
+
var defaultRowHeight = 32;
|
|
35
|
+
var STATS_TOGGLE_DURATION = '0.5s';
|
|
36
|
+
var overscanColumnCount = 10;
|
|
37
|
+
var overscanRowCount = 10;
|
|
38
|
+
// The default scrollbar width can range anywhere from 12px to 17px
|
|
39
|
+
var browserScrollBarWidth = 17;
|
|
40
|
+
var fieldToAlignRight = _defineProperty(_defineProperty({}, ALL_FIELD_TYPES.integer, true), ALL_FIELD_TYPES.real, true);
|
|
41
|
+
var pinnedClassList = {
|
|
42
|
+
header: 'pinned-columns--header pinned-grid-container',
|
|
43
|
+
rows: 'pinned-columns--rows pinned-grid-container'
|
|
44
|
+
};
|
|
45
|
+
var unpinnedClassList = {
|
|
46
|
+
header: 'unpinned-columns--header unpinned-grid-container',
|
|
47
|
+
rows: 'unpinned-columns--rows unpinned-grid-container'
|
|
48
|
+
};
|
|
49
|
+
export var Container = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n font-size: ", "px;\n flex-grow: 1;\n color: ", ";\n width: 100%;\n position: relative;\n .ReactVirtualized__Grid:focus,\n .ReactVirtualized__Grid:active {\n outline: 0;\n }\n .body-grid {\n ", "\n }\n\n .cell {\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n *:focus {\n outline: 0;\n }\n\n .results-table-wrapper {\n position: relative;\n min-height: 100%;\n max-height: 100%;\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n overflow: hidden;\n\n .scroll-in-ui-thread.pinned-columns--header {\n overflow: hidden;\n border-bottom: 1px solid ", ";\n padding-bottom: ", "px;\n }\n .scroll-in-ui-thread.unpinned-columns--header {\n width: 100vw;\n overflow: hidden;\n border-bottom: 1px solid ", ";\n // leave room for scrollbar\n padding-bottom: ", "px;\n }\n\n .scroll-in-ui-thread::after {\n content: '';\n height: 100%;\n left: 0;\n position: absolute;\n pointer-events: none;\n top: 0;\n width: 100%;\n }\n\n .grid-row {\n position: relative;\n display: flex;\n flex-direction: row;\n }\n .grid-column {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n }\n .pinned-grid-container {\n flex: 0 0 75px;\n z-index: 10;\n position: absolute;\n left: 0;\n top: 0;\n border-right: 2px solid ", ";\n }\n .even-row {\n background-color: ", ";\n }\n .odd-row {\n background-color: ", ";\n }\n .cell,\n .header-cell {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n text-align: center;\n overflow: hidden;\n // header border is rendered by header container\n border-bottom: 0;\n .n-sort-idx {\n font-size: 9px;\n }\n }\n .cell {\n justify-content: center;\n align-items: flex-start;\n border-bottom: 1px solid ", ";\n border-right: 1px solid ", ";\n white-space: nowrap;\n overflow: auto;\n padding: 0 ", "px;\n font-size: ", "px;\n\n .result-link {\n text-decoration: none;\n }\n }\n .header-cell {\n justify-content: ", ";\n align-items: ", ";\n }\n .cell.end-cell {\n border-right: none;\n padding-right: ", "px;\n }\n .header-cell.end-cell {\n border-right: ", ";\n padding-right: ", "px;\n }\n .cell.first-cell {\n padding-left: ", "px;\n }\n .header-cell.first-cell {\n padding-left: ", "px;\n }\n .cell.bottom-cell {\n border-bottom: none;\n }\n .cell.align-right {\n align-items: flex-end;\n }\n }\n\n &:focus {\n outline: none;\n }\n"])), function (props) {
|
|
50
|
+
return props.theme.cellFontSize;
|
|
51
|
+
}, function (props) {
|
|
52
|
+
return props.theme.dataTableTextColor;
|
|
53
|
+
}, function (props) {
|
|
54
|
+
return props.$hasCustomScrollBarStyle && props.theme.modalScrollBar;
|
|
55
|
+
}, function (props) {
|
|
56
|
+
return props.theme.cellBorderColor;
|
|
57
|
+
}, browserScrollBarWidth, function (props) {
|
|
58
|
+
return props.theme.cellBorderColor;
|
|
59
|
+
}, browserScrollBarWidth, function (props) {
|
|
60
|
+
return props.theme.pinnedGridBorderColor;
|
|
61
|
+
}, function (props) {
|
|
62
|
+
return props.theme.evenRowBackground;
|
|
63
|
+
}, function (props) {
|
|
64
|
+
return props.theme.oddRowBackground;
|
|
65
|
+
}, function (props) {
|
|
66
|
+
return props.theme.cellBorderColor;
|
|
67
|
+
}, function (props) {
|
|
68
|
+
return props.theme.cellBorderColor;
|
|
69
|
+
}, function (props) {
|
|
70
|
+
return props.theme.cellPaddingSide;
|
|
71
|
+
}, function (props) {
|
|
72
|
+
return props.theme.cellFontSize;
|
|
73
|
+
}, function (props) {
|
|
74
|
+
return props.$hasStats ? 'flex-start' : 'center';
|
|
75
|
+
}, function (props) {
|
|
76
|
+
return props.$hasStats ? 'stretch' : 'flex-start';
|
|
77
|
+
}, function (props) {
|
|
78
|
+
return props.theme.cellPaddingSide + props.theme.edgeCellPaddingSide;
|
|
79
|
+
}, function (props) {
|
|
80
|
+
return props.$hasStats ? "1px solid ".concat(props.theme.cellBorderColor) : 'none';
|
|
81
|
+
}, function (props) {
|
|
82
|
+
return props.$hasStats ? 0 : props.theme.cellPaddingSide + props.theme.edgeCellPaddingSide;
|
|
83
|
+
}, function (props) {
|
|
84
|
+
return props.theme.cellPaddingSide + props.theme.edgeCellPaddingSide;
|
|
85
|
+
}, function (props) {
|
|
86
|
+
return props.$hasStats ? 0 : props.theme.cellPaddingSide + props.theme.edgeCellPaddingSide;
|
|
87
|
+
});
|
|
88
|
+
var StyledTableLoading = styled.div.attrs({
|
|
89
|
+
className: 'data-table-loading'
|
|
90
|
+
})(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: 240px;\n"])));
|
|
91
|
+
var defaultColumnWidth = 200;
|
|
92
|
+
var columnWidthFunction = function columnWidthFunction(columns, cellSizeCache, ghost) {
|
|
93
|
+
return function (_ref) {
|
|
94
|
+
var index = _ref.index;
|
|
95
|
+
return (columns[index] || {}).ghost ? ghost : cellSizeCache[columns[index]] || defaultColumnWidth;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
var GEOMETRY_FIELD_TYPES = {
|
|
99
|
+
geojson: true,
|
|
100
|
+
geoarrow: true
|
|
101
|
+
};
|
|
102
|
+
var MAX_GEOMETRY_CELL_CHARS = 512;
|
|
103
|
+
var MAX_GEOMETRY_ARRAY_LENGTH = 8;
|
|
104
|
+
function formatGeometryForTable(value) {
|
|
105
|
+
if (typeof value === 'string') {
|
|
106
|
+
return value.length > MAX_GEOMETRY_CELL_CHARS ? "".concat(value.slice(0, MAX_GEOMETRY_CELL_CHARS), "\u2026") : value;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
var text = JSON.stringify(value, function (_key, val) {
|
|
110
|
+
return Array.isArray(val) && val.length > MAX_GEOMETRY_ARRAY_LENGTH ? "[\u2026".concat(val.length, "]") : val;
|
|
111
|
+
});
|
|
112
|
+
if (!text) {
|
|
113
|
+
return '';
|
|
114
|
+
}
|
|
115
|
+
return text.length > MAX_GEOMETRY_CELL_CHARS ? "".concat(text.slice(0, MAX_GEOMETRY_CELL_CHARS), "\u2026") : text;
|
|
116
|
+
} catch (_unused) {
|
|
117
|
+
return '{geojson}';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/*
|
|
121
|
+
* This is an accessor method used to generalize getting a cell from a data row
|
|
122
|
+
*/
|
|
123
|
+
var defaultGetRowCell = function defaultGetRowCell(_ref2, formatter) {
|
|
124
|
+
var dataContainer = _ref2.dataContainer,
|
|
125
|
+
columns = _ref2.columns,
|
|
126
|
+
column = _ref2.column,
|
|
127
|
+
colMeta = _ref2.colMeta,
|
|
128
|
+
rowIndex = _ref2.rowIndex,
|
|
129
|
+
sortOrder = _ref2.sortOrder;
|
|
130
|
+
var rowIdx = sortOrder && sortOrder.length ? get(sortOrder, rowIndex) : rowIndex;
|
|
131
|
+
var type = colMeta[column].type;
|
|
132
|
+
var value = dataContainer === null || dataContainer === void 0 ? void 0 : dataContainer.valueAt(rowIdx, columns.indexOf(column));
|
|
133
|
+
if (value === null || value === undefined || value === '') {
|
|
134
|
+
return '';
|
|
135
|
+
}
|
|
136
|
+
if (GEOMETRY_FIELD_TYPES[type]) {
|
|
137
|
+
return formatGeometryForTable(value);
|
|
138
|
+
}
|
|
139
|
+
return formatter ? formatter(value) : parseFieldValue(value, type);
|
|
140
|
+
};
|
|
141
|
+
var StyledStatsControl = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n height: ", "px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: stretch;\n position: absolute;\n top: ", "px;\n font-family: ", ";\n font-size: ", "px;\n color: ", ";\n background-color: ", ";\n &:hover {\n cursor: pointer;\n }\n\n > div {\n padding: 0px 24px;\n display: flex;\n align-items: center;\n\n svg {\n margin-left: 12px;\n transition: transform ", " ease-in-out;\n transform: rotate(", "deg);\n }\n }\n"])), function (props) {
|
|
142
|
+
return props.theme.headerStatsControlHeight;
|
|
143
|
+
}, function (props) {
|
|
144
|
+
return props.top;
|
|
145
|
+
}, function (props) {
|
|
146
|
+
return props.theme.fontFamily;
|
|
147
|
+
}, function (props) {
|
|
148
|
+
return props.theme.cellFontSize;
|
|
149
|
+
}, function (props) {
|
|
150
|
+
return props.theme.activeColor;
|
|
151
|
+
}, function (props) {
|
|
152
|
+
return props.theme.headerCellStatsControlBackground;
|
|
153
|
+
}, STATS_TOGGLE_DURATION, function (props) {
|
|
154
|
+
return props.$showStats ? 180 : 0;
|
|
155
|
+
});
|
|
156
|
+
var StatsControl = function StatsControl(_ref3) {
|
|
157
|
+
var top = _ref3.top,
|
|
158
|
+
showStats = _ref3.showStats,
|
|
159
|
+
toggleShowStats = _ref3.toggleShowStats;
|
|
160
|
+
return /*#__PURE__*/React.createElement(StyledStatsControl, {
|
|
161
|
+
top: top,
|
|
162
|
+
$showStats: showStats,
|
|
163
|
+
onClick: toggleShowStats,
|
|
164
|
+
onDoubleClick: function onDoubleClick(event) {
|
|
165
|
+
return event.stopPropagation();
|
|
166
|
+
}
|
|
167
|
+
}, /*#__PURE__*/React.createElement("div", null, showStats ? 'Hide Column Stats' : 'Show Column Stats', /*#__PURE__*/React.createElement(ArrowDown, {
|
|
168
|
+
height: "18px"
|
|
169
|
+
})));
|
|
170
|
+
};
|
|
171
|
+
export var TableSection = function TableSection(_ref4) {
|
|
172
|
+
var classList = _ref4.classList,
|
|
173
|
+
isPinned = _ref4.isPinned,
|
|
174
|
+
columns = _ref4.columns,
|
|
175
|
+
headerGridProps = _ref4.headerGridProps,
|
|
176
|
+
fixedWidth = _ref4.fixedWidth,
|
|
177
|
+
_ref4$fixedHeight = _ref4.fixedHeight,
|
|
178
|
+
fixedHeight = _ref4$fixedHeight === void 0 ? undefined : _ref4$fixedHeight,
|
|
179
|
+
_onScroll = _ref4.onScroll,
|
|
180
|
+
scrollTop = _ref4.scrollTop,
|
|
181
|
+
dataGridProps = _ref4.dataGridProps,
|
|
182
|
+
columnWidth = _ref4.columnWidth,
|
|
183
|
+
_ref4$setGridRef = _ref4.setGridRef,
|
|
184
|
+
setGridRef = _ref4$setGridRef === void 0 ? undefined : _ref4$setGridRef,
|
|
185
|
+
headerCellRender = _ref4.headerCellRender,
|
|
186
|
+
dataCellRender = _ref4.dataCellRender,
|
|
187
|
+
_ref4$scrollLeft = _ref4.scrollLeft,
|
|
188
|
+
scrollLeft = _ref4$scrollLeft === void 0 ? 0 : _ref4$scrollLeft,
|
|
189
|
+
headerVisibleHeight = _ref4.headerVisibleHeight,
|
|
190
|
+
headerBodyOffset = _ref4.headerBodyOffset;
|
|
191
|
+
var headerGridHeight = headerGridProps.height;
|
|
192
|
+
var visibleHeight = headerVisibleHeight !== null && headerVisibleHeight !== void 0 ? headerVisibleHeight : headerGridHeight;
|
|
193
|
+
var bodyOffset = headerBodyOffset !== null && headerBodyOffset !== void 0 ? headerBodyOffset : visibleHeight;
|
|
194
|
+
var headerStyle = useMemo(function () {
|
|
195
|
+
return {
|
|
196
|
+
height: "".concat(visibleHeight, "px"),
|
|
197
|
+
overflow: 'hidden',
|
|
198
|
+
transition: "height ".concat(STATS_TOGGLE_DURATION, " ease-in-out")
|
|
199
|
+
};
|
|
200
|
+
}, [visibleHeight]);
|
|
201
|
+
var contentStyle = useMemo(function () {
|
|
202
|
+
return {
|
|
203
|
+
top: "".concat(visibleHeight, "px"),
|
|
204
|
+
transition: "top ".concat(STATS_TOGGLE_DURATION, " ease-in-out")
|
|
205
|
+
};
|
|
206
|
+
}, [visibleHeight]);
|
|
207
|
+
return /*#__PURE__*/React.createElement(AutoSizer, null, function (_ref5) {
|
|
208
|
+
var width = _ref5.width,
|
|
209
|
+
height = _ref5.height;
|
|
210
|
+
var gridDimension = {
|
|
211
|
+
columnCount: columns.length,
|
|
212
|
+
columnWidth: columnWidth,
|
|
213
|
+
width: fixedWidth || width
|
|
214
|
+
};
|
|
215
|
+
var headerGridWidth = fixedWidth || width;
|
|
216
|
+
var dataGridHeight = fixedHeight || height;
|
|
217
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
218
|
+
className: classnames('scroll-in-ui-thread', classList === null || classList === void 0 ? void 0 : classList.header),
|
|
219
|
+
style: headerStyle
|
|
220
|
+
}, /*#__PURE__*/React.createElement(Grid, _extends({
|
|
221
|
+
cellRenderer: headerCellRender
|
|
222
|
+
}, headerGridProps, gridDimension, {
|
|
223
|
+
height: headerGridHeight + browserScrollBarWidth,
|
|
224
|
+
width: headerGridWidth,
|
|
225
|
+
scrollLeft: scrollLeft,
|
|
226
|
+
onScroll: function onScroll(args) {
|
|
227
|
+
return _onScroll === null || _onScroll === void 0 ? void 0 : _onScroll(_objectSpread(_objectSpread({}, args), {}, {
|
|
228
|
+
scrollTop: scrollTop !== null && scrollTop !== void 0 ? scrollTop : 0
|
|
229
|
+
}));
|
|
230
|
+
}
|
|
231
|
+
}))), /*#__PURE__*/React.createElement("div", {
|
|
232
|
+
className: classnames('scroll-in-ui-thread', classList === null || classList === void 0 ? void 0 : classList.rows),
|
|
233
|
+
style: contentStyle
|
|
234
|
+
}, /*#__PURE__*/React.createElement(Grid, _extends({
|
|
235
|
+
cellRenderer: dataCellRender
|
|
236
|
+
}, dataGridProps, gridDimension, {
|
|
237
|
+
className: isPinned ? 'pinned-grid' : 'body-grid',
|
|
238
|
+
height: dataGridHeight - bodyOffset,
|
|
239
|
+
onScroll: _onScroll,
|
|
240
|
+
scrollLeft: scrollLeft,
|
|
241
|
+
scrollTop: scrollTop,
|
|
242
|
+
setGridRef: setGridRef
|
|
243
|
+
}))));
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
var DUMMY_STYLE = {};
|
|
247
|
+
DataTableFactory.deps = [HeaderCellFactory];
|
|
248
|
+
function DataTableFactory(HeaderCell) {
|
|
249
|
+
var DataTable = /*#__PURE__*/function (_Component) {
|
|
250
|
+
function DataTable() {
|
|
251
|
+
var _this;
|
|
252
|
+
_classCallCheck(this, DataTable);
|
|
253
|
+
for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
|
|
254
|
+
args[_key2] = arguments[_key2];
|
|
255
|
+
}
|
|
256
|
+
_this = _callSuper(this, DataTable, [].concat(args));
|
|
257
|
+
_defineProperty(_this, "pinnedGrid", null);
|
|
258
|
+
_defineProperty(_this, "unpinnedGrid", null);
|
|
259
|
+
_defineProperty(_this, "hasMounted", false);
|
|
260
|
+
_defineProperty(_this, "state", {
|
|
261
|
+
cellSizeCache: {},
|
|
262
|
+
moreOptionsColumn: null,
|
|
263
|
+
showStats: true
|
|
264
|
+
});
|
|
265
|
+
_defineProperty(_this, "root", /*#__PURE__*/createRef());
|
|
266
|
+
_defineProperty(_this, "columns", function (props) {
|
|
267
|
+
return props.columns;
|
|
268
|
+
});
|
|
269
|
+
_defineProperty(_this, "pinnedColumns", function (props) {
|
|
270
|
+
return props.pinnedColumns;
|
|
271
|
+
});
|
|
272
|
+
_defineProperty(_this, "unpinnedColumns", createSelector(_this.columns, _this.pinnedColumns, function (columns, pinnedColumns) {
|
|
273
|
+
return !Array.isArray(pinnedColumns) ? columns : columns.filter(function (c) {
|
|
274
|
+
return !pinnedColumns.includes(c);
|
|
275
|
+
});
|
|
276
|
+
}));
|
|
277
|
+
_defineProperty(_this, "toggleMoreOptions", function (moreOptionsColumn) {
|
|
278
|
+
if (_this.hasMounted) _this.setState({
|
|
279
|
+
moreOptionsColumn: _this.state.moreOptionsColumn === moreOptionsColumn ? null : moreOptionsColumn
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
_defineProperty(_this, "toggleShowStats", function () {
|
|
283
|
+
if (_this.hasMounted) _this.setState({
|
|
284
|
+
showStats: !_this.state.showStats
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
_defineProperty(_this, "getCellSizeCache", function () {
|
|
288
|
+
var _this$props = _this.props,
|
|
289
|
+
_this$props$cellSizeC = _this$props.cellSizeCache,
|
|
290
|
+
propsCache = _this$props$cellSizeC === void 0 ? {} : _this$props$cellSizeC,
|
|
291
|
+
fixedWidth = _this$props.fixedWidth,
|
|
292
|
+
_this$props$pinnedCol = _this$props.pinnedColumns,
|
|
293
|
+
pinnedColumns = _this$props$pinnedCol === void 0 ? [] : _this$props$pinnedCol;
|
|
294
|
+
var unpinnedColumns = _this.unpinnedColumns(_this.props);
|
|
295
|
+
var width = fixedWidth ? fixedWidth : _this.root.current ? _this.root.current.clientWidth : 0;
|
|
296
|
+
|
|
297
|
+
// pin column border is 2 pixel vs 1 pixel
|
|
298
|
+
var adjustWidth = pinnedColumns.length ? width - 1 : width;
|
|
299
|
+
var _ref6 = adjustCellsToContainer(adjustWidth, propsCache, pinnedColumns, unpinnedColumns),
|
|
300
|
+
cellSizeCache = _ref6.cellSizeCache,
|
|
301
|
+
ghost = _ref6.ghost;
|
|
302
|
+
return {
|
|
303
|
+
cellSizeCache: cellSizeCache,
|
|
304
|
+
ghost: ghost
|
|
305
|
+
};
|
|
306
|
+
});
|
|
307
|
+
_defineProperty(_this, "doScaleCellsToWidth", function () {
|
|
308
|
+
if (!_this.hasMounted) return;
|
|
309
|
+
var propsCache = _this.props.cellSizeCache || {};
|
|
310
|
+
// Column widths are measured after first paint; skip until they exist.
|
|
311
|
+
if (!Object.keys(propsCache).length) return;
|
|
312
|
+
_this.setState(_this.getCellSizeCache());
|
|
313
|
+
});
|
|
314
|
+
_defineProperty(_this, "scaleCellsToWidth", debounce(_this.doScaleCellsToWidth, 300));
|
|
315
|
+
_defineProperty(_this, "renderDataCell", function (columns, isPinned, props) {
|
|
316
|
+
var _this$props$getRowCel;
|
|
317
|
+
var getRowCell = (_this$props$getRowCel = _this.props.getRowCell) !== null && _this$props$getRowCel !== void 0 ? _this$props$getRowCel : defaultGetRowCell;
|
|
318
|
+
var DataCellRenderer = function DataCellRenderer(cellInfo) {
|
|
319
|
+
var columnIndex = cellInfo.columnIndex,
|
|
320
|
+
key = cellInfo.key,
|
|
321
|
+
style = cellInfo.style,
|
|
322
|
+
rowIndex = cellInfo.rowIndex;
|
|
323
|
+
var dataContainer = props.dataContainer,
|
|
324
|
+
colMeta = props.colMeta;
|
|
325
|
+
var column = columns[columnIndex];
|
|
326
|
+
var isGhost = column.ghost;
|
|
327
|
+
var formatter = isGhost ? null : getColumnFormatter(colMeta[column]);
|
|
328
|
+
var rowCell = isGhost ? '' : getRowCell(_objectSpread(_objectSpread({}, props), {}, {
|
|
329
|
+
column: column,
|
|
330
|
+
rowIndex: rowIndex
|
|
331
|
+
}), formatter);
|
|
332
|
+
var type = isGhost ? null : colMeta[column].type;
|
|
333
|
+
var lastRowIndex = dataContainer ? dataContainer.numRows() - 1 : 0;
|
|
334
|
+
var endCell = columnIndex === columns.length - 1;
|
|
335
|
+
var firstCell = columnIndex === 0;
|
|
336
|
+
var bottomCell = rowIndex === lastRowIndex;
|
|
337
|
+
var alignRight = fieldToAlignRight[Number(type)];
|
|
338
|
+
var cell = /*#__PURE__*/React.createElement("div", {
|
|
339
|
+
className: classnames('cell', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, rowIndex % 2 === 0 ? 'even-row' : 'odd-row', true), "row-".concat(rowIndex), true), 'pinned-cell', isPinned), 'first-cell', firstCell), 'end-cell', endCell), 'bottom-cell', bottomCell), 'align-right', alignRight)),
|
|
340
|
+
key: key,
|
|
341
|
+
style: style,
|
|
342
|
+
title: isGhost ? undefined : rowCell
|
|
343
|
+
}, "".concat(rowCell).concat(endCell ? '\n' : '\t'));
|
|
344
|
+
return cell;
|
|
345
|
+
};
|
|
346
|
+
return DataCellRenderer;
|
|
347
|
+
});
|
|
348
|
+
return _this;
|
|
349
|
+
}
|
|
350
|
+
_inherits(DataTable, _Component);
|
|
351
|
+
return _createClass(DataTable, [{
|
|
352
|
+
key: "componentDidMount",
|
|
353
|
+
value: function componentDidMount() {
|
|
354
|
+
this.hasMounted = true;
|
|
355
|
+
window.addEventListener('resize', this.scaleCellsToWidth);
|
|
356
|
+
this.doScaleCellsToWidth();
|
|
357
|
+
}
|
|
358
|
+
}, {
|
|
359
|
+
key: "componentDidUpdate",
|
|
360
|
+
value: function componentDidUpdate(prevProps) {
|
|
361
|
+
if (this.props.cellSizeCache !== prevProps.cellSizeCache || this.props.pinnedColumns !== prevProps.pinnedColumns) {
|
|
362
|
+
this.doScaleCellsToWidth();
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}, {
|
|
366
|
+
key: "componentWillUnmount",
|
|
367
|
+
value: function componentWillUnmount() {
|
|
368
|
+
this.hasMounted = false;
|
|
369
|
+
window.removeEventListener('resize', this.scaleCellsToWidth);
|
|
370
|
+
}
|
|
371
|
+
}, {
|
|
372
|
+
key: "renderHeaderCell",
|
|
373
|
+
value: function renderHeaderCell(columns, isPinned, props, toggleMoreOptions, moreOptionsColumn) {
|
|
374
|
+
var _this2 = this;
|
|
375
|
+
var HeaderCellRenderer = function HeaderCellRenderer(cellInfo) {
|
|
376
|
+
return /*#__PURE__*/React.createElement(HeaderCell, {
|
|
377
|
+
cellInfo: cellInfo,
|
|
378
|
+
key: cellInfo.columnIndex,
|
|
379
|
+
columns: columns,
|
|
380
|
+
isPinned: isPinned,
|
|
381
|
+
showStats: _this2.state.showStats,
|
|
382
|
+
props: props,
|
|
383
|
+
toggleMoreOptions: toggleMoreOptions,
|
|
384
|
+
moreOptionsColumn: moreOptionsColumn
|
|
385
|
+
// pass dummy style to prevent warnings from react-virtualized Grid
|
|
386
|
+
,
|
|
387
|
+
style: DUMMY_STYLE
|
|
388
|
+
});
|
|
389
|
+
};
|
|
390
|
+
return HeaderCellRenderer;
|
|
391
|
+
}
|
|
392
|
+
}, {
|
|
393
|
+
key: "render",
|
|
394
|
+
value: function render() {
|
|
395
|
+
var _this3 = this;
|
|
396
|
+
var _this$props2 = this.props,
|
|
397
|
+
dataContainer = _this$props2.dataContainer,
|
|
398
|
+
_this$props2$pinnedCo = _this$props2.pinnedColumns,
|
|
399
|
+
pinnedColumns = _this$props2$pinnedCo === void 0 ? [] : _this$props2$pinnedCo,
|
|
400
|
+
_this$props2$theme = _this$props2.theme,
|
|
401
|
+
theme = _this$props2$theme === void 0 ? {} : _this$props2$theme,
|
|
402
|
+
fixedWidth = _this$props2.fixedWidth,
|
|
403
|
+
_this$props2$fixedHei = _this$props2.fixedHeight,
|
|
404
|
+
fixedHeight = _this$props2$fixedHei === void 0 ? 0 : _this$props2$fixedHei,
|
|
405
|
+
hasStats = _this$props2.hasStats,
|
|
406
|
+
hasCustomScrollBarStyle = _this$props2.hasCustomScrollBarStyle;
|
|
407
|
+
var unpinnedColumns = this.unpinnedColumns(this.props);
|
|
408
|
+
var _this$state = this.state,
|
|
409
|
+
_this$state$cellSizeC = _this$state.cellSizeCache,
|
|
410
|
+
cellSizeCache = _this$state$cellSizeC === void 0 ? {} : _this$state$cellSizeC,
|
|
411
|
+
moreOptionsColumn = _this$state.moreOptionsColumn,
|
|
412
|
+
ghost = _this$state.ghost,
|
|
413
|
+
showStats = _this$state.showStats;
|
|
414
|
+
var unpinnedColumnsGhost = ghost ? [].concat(_toConsumableArray(unpinnedColumns), [{
|
|
415
|
+
ghost: true
|
|
416
|
+
}]) : unpinnedColumns;
|
|
417
|
+
var pinnedColumnsWidth = pinnedColumns.reduce(function (acc, val) {
|
|
418
|
+
return acc + get(cellSizeCache, val, 0);
|
|
419
|
+
}, 0);
|
|
420
|
+
var hasPinnedColumns = Boolean(pinnedColumns.length);
|
|
421
|
+
var _theme$headerRowHeigh = theme.headerRowHeight,
|
|
422
|
+
headerRowHeight = _theme$headerRowHeigh === void 0 ? defaultHeaderRowHeight : _theme$headerRowHeigh,
|
|
423
|
+
_theme$headerStatsCon = theme.headerStatsControlHeight,
|
|
424
|
+
headerStatsControlHeight = _theme$headerStatsCon === void 0 ? defaultHeaderStatsControlHeight : _theme$headerStatsCon,
|
|
425
|
+
_theme$headerRowWStat = theme.headerRowWStatsHeight,
|
|
426
|
+
headerRowWStatsHeight = _theme$headerRowWStat === void 0 ? defaultHeaderRowHeight : _theme$headerRowWStat,
|
|
427
|
+
_theme$rowHeight = theme.rowHeight,
|
|
428
|
+
rowHeight = _theme$rowHeight === void 0 ? defaultRowHeight : _theme$rowHeight;
|
|
429
|
+
var collapsedHeaderHeight = hasStats ? headerRowHeight + headerStatsControlHeight : headerRowHeight;
|
|
430
|
+
var expandedHeaderHeight = hasStats ? headerRowWStatsHeight : headerRowHeight;
|
|
431
|
+
var visibleHeaderHeight = showStats ? expandedHeaderHeight : collapsedHeaderHeight;
|
|
432
|
+
var headerGridProps = {
|
|
433
|
+
cellSizeCache: cellSizeCache,
|
|
434
|
+
className: 'header-grid',
|
|
435
|
+
height: expandedHeaderHeight,
|
|
436
|
+
rowCount: 1,
|
|
437
|
+
rowHeight: expandedHeaderHeight
|
|
438
|
+
};
|
|
439
|
+
var dataGridProps = {
|
|
440
|
+
cellSizeCache: cellSizeCache,
|
|
441
|
+
overscanColumnCount: overscanColumnCount,
|
|
442
|
+
overscanRowCount: overscanRowCount,
|
|
443
|
+
rowCount: dataContainer ? dataContainer.numRows() : 0,
|
|
444
|
+
rowHeight: rowHeight
|
|
445
|
+
};
|
|
446
|
+
return /*#__PURE__*/React.createElement(Container, {
|
|
447
|
+
className: "data-table-container",
|
|
448
|
+
ref: this.root,
|
|
449
|
+
$hasCustomScrollBarStyle: hasCustomScrollBarStyle,
|
|
450
|
+
$hasStats: Boolean(hasStats)
|
|
451
|
+
}, Object.keys(cellSizeCache).length ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ScrollSync, null, function (_ref7) {
|
|
452
|
+
var _onScroll2 = _ref7.onScroll,
|
|
453
|
+
scrollLeft = _ref7.scrollLeft,
|
|
454
|
+
scrollTop = _ref7.scrollTop;
|
|
455
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
456
|
+
className: "results-table-wrapper"
|
|
457
|
+
}, hasPinnedColumns && /*#__PURE__*/React.createElement("div", {
|
|
458
|
+
key: "pinned-columns",
|
|
459
|
+
className: "pinned-columns grid-row"
|
|
460
|
+
}, /*#__PURE__*/React.createElement(TableSection, {
|
|
461
|
+
classList: pinnedClassList,
|
|
462
|
+
isPinned: true,
|
|
463
|
+
columns: pinnedColumns,
|
|
464
|
+
headerGridProps: headerGridProps,
|
|
465
|
+
headerVisibleHeight: visibleHeaderHeight,
|
|
466
|
+
headerBodyOffset: visibleHeaderHeight,
|
|
467
|
+
fixedWidth: pinnedColumnsWidth,
|
|
468
|
+
onScroll: function onScroll(args) {
|
|
469
|
+
return _onScroll2(_objectSpread(_objectSpread({}, args), {}, {
|
|
470
|
+
scrollLeft: scrollLeft
|
|
471
|
+
}));
|
|
472
|
+
},
|
|
473
|
+
scrollTop: scrollTop,
|
|
474
|
+
scrollLeft: scrollLeft,
|
|
475
|
+
dataGridProps: dataGridProps,
|
|
476
|
+
setGridRef: function setGridRef(pinnedGrid) {
|
|
477
|
+
return _this3.pinnedGrid = pinnedGrid;
|
|
478
|
+
},
|
|
479
|
+
columnWidth: columnWidthFunction(pinnedColumns, cellSizeCache),
|
|
480
|
+
headerCellRender: _this3.renderHeaderCell(pinnedColumns, true, _this3.props, _this3.toggleMoreOptions, moreOptionsColumn),
|
|
481
|
+
dataCellRender: _this3.renderDataCell(pinnedColumns, true, _this3.props)
|
|
482
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
483
|
+
key: "unpinned-columns",
|
|
484
|
+
style: {
|
|
485
|
+
marginLeft: "".concat(hasPinnedColumns ? "".concat(pinnedColumnsWidth, "px") : '0')
|
|
486
|
+
},
|
|
487
|
+
className: "unpinned-columns grid-column"
|
|
488
|
+
}, /*#__PURE__*/React.createElement(TableSection, {
|
|
489
|
+
classList: unpinnedClassList,
|
|
490
|
+
isPinned: false,
|
|
491
|
+
columns: unpinnedColumnsGhost,
|
|
492
|
+
headerGridProps: headerGridProps,
|
|
493
|
+
headerVisibleHeight: visibleHeaderHeight,
|
|
494
|
+
headerBodyOffset: visibleHeaderHeight,
|
|
495
|
+
fixedWidth: fixedWidth,
|
|
496
|
+
fixedHeight: fixedHeight,
|
|
497
|
+
onScroll: _onScroll2,
|
|
498
|
+
scrollTop: scrollTop,
|
|
499
|
+
scrollLeft: scrollLeft,
|
|
500
|
+
dataGridProps: dataGridProps,
|
|
501
|
+
setGridRef: function setGridRef(unpinnedGrid) {
|
|
502
|
+
return _this3.unpinnedGrid = unpinnedGrid;
|
|
503
|
+
},
|
|
504
|
+
columnWidth: columnWidthFunction(unpinnedColumnsGhost, cellSizeCache, ghost),
|
|
505
|
+
headerCellRender: _this3.renderHeaderCell(unpinnedColumnsGhost, false, _this3.props, _this3.toggleMoreOptions, moreOptionsColumn),
|
|
506
|
+
dataCellRender: _this3.renderDataCell(unpinnedColumnsGhost, false, _this3.props)
|
|
507
|
+
})));
|
|
508
|
+
}), hasStats ? /*#__PURE__*/React.createElement(StatsControl, {
|
|
509
|
+
top: headerRowHeight,
|
|
510
|
+
showStats: showStats,
|
|
511
|
+
toggleShowStats: this.toggleShowStats
|
|
512
|
+
}) : null) : /*#__PURE__*/React.createElement(StyledTableLoading, {
|
|
513
|
+
role: "status",
|
|
514
|
+
"aria-label": "Loading data table"
|
|
515
|
+
}, /*#__PURE__*/React.createElement(LoadingSpinner, {
|
|
516
|
+
size: 48
|
|
517
|
+
})));
|
|
518
|
+
}
|
|
519
|
+
}]);
|
|
520
|
+
}(Component);
|
|
521
|
+
_defineProperty(DataTable, "defaultProps", {
|
|
522
|
+
dataContainer: null,
|
|
523
|
+
pinnedColumns: [],
|
|
524
|
+
colMeta: {},
|
|
525
|
+
cellSizeCache: {},
|
|
526
|
+
sortColumn: {},
|
|
527
|
+
fixedWidth: null,
|
|
528
|
+
fixedHeight: null,
|
|
529
|
+
theme: {},
|
|
530
|
+
hasStats: false,
|
|
531
|
+
hasCustomScrollBarStyle: true
|
|
532
|
+
});
|
|
533
|
+
return withTheme(DataTable);
|
|
534
|
+
}
|
|
535
|
+
export default DataTableFactory;
|
|
536
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNyZWF0ZVJlZiIsInVzZU1lbW8iLCJTY3JvbGxTeW5jIiwiQXV0b1NpemVyIiwic3R5bGVkIiwid2l0aFRoZW1lIiwiY2xhc3NuYW1lcyIsImNyZWF0ZVNlbGVjdG9yIiwiZ2V0IiwiZGVib3VuY2UiLCJBcnJvd0Rvd24iLCJMb2FkaW5nU3Bpbm5lciIsIkdyaWQiLCJIZWFkZXJDZWxsRmFjdG9yeSIsInBhcnNlRmllbGRWYWx1ZSIsImdldENvbHVtbkZvcm1hdHRlciIsImFkanVzdENlbGxzVG9Db250YWluZXIiLCJBTExfRklFTERfVFlQRVMiLCJkZWZhdWx0SGVhZGVyUm93SGVpZ2h0IiwiZGVmYXVsdEhlYWRlclN0YXRzQ29udHJvbEhlaWdodCIsImRlZmF1bHRSb3dIZWlnaHQiLCJTVEFUU19UT0dHTEVfRFVSQVRJT04iLCJvdmVyc2NhbkNvbHVtbkNvdW50Iiwib3ZlcnNjYW5Sb3dDb3VudCIsImJyb3dzZXJTY3JvbGxCYXJXaWR0aCIsImZpZWxkVG9BbGlnblJpZ2h0IiwiX2RlZmluZVByb3BlcnR5IiwiaW50ZWdlciIsInJlYWwiLCJwaW5uZWRDbGFzc0xpc3QiLCJoZWFkZXIiLCJyb3dzIiwidW5waW5uZWRDbGFzc0xpc3QiLCJDb250YWluZXIiLCJkaXYiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsIiwicHJvcHMiLCJ0aGVtZSIsImNlbGxGb250U2l6ZSIsImRhdGFUYWJsZVRleHRDb2xvciIsIiRoYXNDdXN0b21TY3JvbGxCYXJTdHlsZSIsIm1vZGFsU2Nyb2xsQmFyIiwiY2VsbEJvcmRlckNvbG9yIiwicGlubmVkR3JpZEJvcmRlckNvbG9yIiwiZXZlblJvd0JhY2tncm91bmQiLCJvZGRSb3dCYWNrZ3JvdW5kIiwiY2VsbFBhZGRpbmdTaWRlIiwiJGhhc1N0YXRzIiwiZWRnZUNlbGxQYWRkaW5nU2lkZSIsImNvbmNhdCIsIlN0eWxlZFRhYmxlTG9hZGluZyIsImF0dHJzIiwiY2xhc3NOYW1lIiwiX3RlbXBsYXRlT2JqZWN0MiIsImRlZmF1bHRDb2x1bW5XaWR0aCIsImNvbHVtbldpZHRoRnVuY3Rpb24iLCJjb2x1bW5zIiwiY2VsbFNpemVDYWNoZSIsImdob3N0IiwiX3JlZiIsImluZGV4IiwiR0VPTUVUUllfRklFTERfVFlQRVMiLCJnZW9qc29uIiwiZ2VvYXJyb3ciLCJNQVhfR0VPTUVUUllfQ0VMTF9DSEFSUyIsIk1BWF9HRU9NRVRSWV9BUlJBWV9MRU5HVEgiLCJmb3JtYXRHZW9tZXRyeUZvclRhYmxlIiwidmFsdWUiLCJsZW5ndGgiLCJzbGljZSIsInRleHQiLCJKU09OIiwic3RyaW5naWZ5IiwiX2tleSIsInZhbCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnVzZWQiLCJkZWZhdWx0R2V0Um93Q2VsbCIsIl9yZWYyIiwiZm9ybWF0dGVyIiwiZGF0YUNvbnRhaW5lciIsImNvbHVtbiIsImNvbE1ldGEiLCJyb3dJbmRleCIsInNvcnRPcmRlciIsInJvd0lkeCIsInR5cGUiLCJ2YWx1ZUF0IiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsIlN0eWxlZFN0YXRzQ29udHJvbCIsIl90ZW1wbGF0ZU9iamVjdDMiLCJoZWFkZXJTdGF0c0NvbnRyb2xIZWlnaHQiLCJ0b3AiLCJmb250RmFtaWx5IiwiYWN0aXZlQ29sb3IiLCJoZWFkZXJDZWxsU3RhdHNDb250cm9sQmFja2dyb3VuZCIsIiRzaG93U3RhdHMiLCJTdGF0c0NvbnRyb2wiLCJfcmVmMyIsInNob3dTdGF0cyIsInRvZ2dsZVNob3dTdGF0cyIsImNyZWF0ZUVsZW1lbnQiLCJvbkNsaWNrIiwib25Eb3VibGVDbGljayIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwiaGVpZ2h0IiwiVGFibGVTZWN0aW9uIiwiX3JlZjQiLCJjbGFzc0xpc3QiLCJpc1Bpbm5lZCIsImhlYWRlckdyaWRQcm9wcyIsImZpeGVkV2lkdGgiLCJfcmVmNCRmaXhlZEhlaWdodCIsImZpeGVkSGVpZ2h0Iiwib25TY3JvbGwiLCJzY3JvbGxUb3AiLCJkYXRhR3JpZFByb3BzIiwiY29sdW1uV2lkdGgiLCJfcmVmNCRzZXRHcmlkUmVmIiwic2V0R3JpZFJlZiIsImhlYWRlckNlbGxSZW5kZXIiLCJkYXRhQ2VsbFJlbmRlciIsIl9yZWY0JHNjcm9sbExlZnQiLCJzY3JvbGxMZWZ0IiwiaGVhZGVyVmlzaWJsZUhlaWdodCIsImhlYWRlckJvZHlPZmZzZXQiLCJoZWFkZXJHcmlkSGVpZ2h0IiwidmlzaWJsZUhlaWdodCIsImJvZHlPZmZzZXQiLCJoZWFkZXJTdHlsZSIsIm92ZXJmbG93IiwidHJhbnNpdGlvbiIsImNvbnRlbnRTdHlsZSIsIl9yZWY1Iiwid2lkdGgiLCJncmlkRGltZW5zaW9uIiwiY29sdW1uQ291bnQiLCJoZWFkZXJHcmlkV2lkdGgiLCJkYXRhR3JpZEhlaWdodCIsIkZyYWdtZW50Iiwic3R5bGUiLCJfZXh0ZW5kcyIsImNlbGxSZW5kZXJlciIsImFyZ3MiLCJfb2JqZWN0U3ByZWFkIiwiRFVNTVlfU1RZTEUiLCJEYXRhVGFibGVGYWN0b3J5IiwiZGVwcyIsIkhlYWRlckNlbGwiLCJEYXRhVGFibGUiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJfbGVuIiwiYXJndW1lbnRzIiwiX2tleTIiLCJfY2FsbFN1cGVyIiwibW9yZU9wdGlvbnNDb2x1bW4iLCJwaW5uZWRDb2x1bW5zIiwiZmlsdGVyIiwiYyIsImluY2x1ZGVzIiwiaGFzTW91bnRlZCIsInNldFN0YXRlIiwic3RhdGUiLCJfdGhpcyRwcm9wcyIsIl90aGlzJHByb3BzJGNlbGxTaXplQyIsInByb3BzQ2FjaGUiLCJfdGhpcyRwcm9wcyRwaW5uZWRDb2wiLCJ1bnBpbm5lZENvbHVtbnMiLCJyb290IiwiY3VycmVudCIsImNsaWVudFdpZHRoIiwiYWRqdXN0V2lkdGgiLCJfcmVmNiIsIk9iamVjdCIsImtleXMiLCJnZXRDZWxsU2l6ZUNhY2hlIiwiZG9TY2FsZUNlbGxzVG9XaWR0aCIsIl90aGlzJHByb3BzJGdldFJvd0NlbCIsImdldFJvd0NlbGwiLCJEYXRhQ2VsbFJlbmRlcmVyIiwiY2VsbEluZm8iLCJjb2x1bW5JbmRleCIsImtleSIsImlzR2hvc3QiLCJyb3dDZWxsIiwibGFzdFJvd0luZGV4IiwibnVtUm93cyIsImVuZENlbGwiLCJmaXJzdENlbGwiLCJib3R0b21DZWxsIiwiYWxpZ25SaWdodCIsIk51bWJlciIsImNlbGwiLCJ0aXRsZSIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImNvbXBvbmVudERpZE1vdW50Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInNjYWxlQ2VsbHNUb1dpZHRoIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVuZGVySGVhZGVyQ2VsbCIsInRvZ2dsZU1vcmVPcHRpb25zIiwiX3RoaXMyIiwiSGVhZGVyQ2VsbFJlbmRlcmVyIiwicmVuZGVyIiwiX3RoaXMzIiwiX3RoaXMkcHJvcHMyIiwiX3RoaXMkcHJvcHMyJHBpbm5lZENvIiwiX3RoaXMkcHJvcHMyJHRoZW1lIiwiX3RoaXMkcHJvcHMyJGZpeGVkSGVpIiwiaGFzU3RhdHMiLCJoYXNDdXN0b21TY3JvbGxCYXJTdHlsZSIsIl90aGlzJHN0YXRlIiwiX3RoaXMkc3RhdGUkY2VsbFNpemVDIiwidW5waW5uZWRDb2x1bW5zR2hvc3QiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJwaW5uZWRDb2x1bW5zV2lkdGgiLCJyZWR1Y2UiLCJhY2MiLCJoYXNQaW5uZWRDb2x1bW5zIiwiQm9vbGVhbiIsIl90aGVtZSRoZWFkZXJSb3dIZWlnaCIsImhlYWRlclJvd0hlaWdodCIsIl90aGVtZSRoZWFkZXJTdGF0c0NvbiIsIl90aGVtZSRoZWFkZXJSb3dXU3RhdCIsImhlYWRlclJvd1dTdGF0c0hlaWdodCIsIl90aGVtZSRyb3dIZWlnaHQiLCJyb3dIZWlnaHQiLCJjb2xsYXBzZWRIZWFkZXJIZWlnaHQiLCJleHBhbmRlZEhlYWRlckhlaWdodCIsInZpc2libGVIZWFkZXJIZWlnaHQiLCJyb3dDb3VudCIsInJlZiIsIl9yZWY3IiwicGlubmVkR3JpZCIsInJlbmRlckRhdGFDZWxsIiwibWFyZ2luTGVmdCIsInVucGlubmVkR3JpZCIsInJvbGUiLCJzaXplIiwic29ydENvbHVtbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vZGF0YS10YWJsZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWYsIHVzZU1lbW99IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7U2Nyb2xsU3luYywgQXV0b1NpemVyLCBPblNjcm9sbFBhcmFtcywgR3JpZFByb3BzLCBJbmRleH0gZnJvbSAncmVhY3QtdmlydHVhbGl6ZWQnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQge0Fycm93RG93bn0gZnJvbSAnLi4vaWNvbnMnO1xuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJy4uL2xvYWRpbmctc3Bpbm5lcic7XG5cbmltcG9ydCB7Q2VsbFNpemVDYWNoZX0gZnJvbSAnLi9jZWxsLXNpemUnO1xuXG5pbXBvcnQgR3JpZCBmcm9tICcuL2dyaWQnO1xuaW1wb3J0IEhlYWRlckNlbGxGYWN0b3J5IGZyb20gJy4vaGVhZGVyLWNlbGwnO1xuXG5pbXBvcnQge0NvbE1ldGF9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtwYXJzZUZpZWxkVmFsdWUsIGdldENvbHVtbkZvcm1hdHRlciwgRGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2FkanVzdENlbGxzVG9Db250YWluZXJ9IGZyb20gJy4vY2VsbC1zaXplJztcblxuaW1wb3J0IHtBTExfRklFTERfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuY29uc3QgZGVmYXVsdEhlYWRlclJvd0hlaWdodCA9IDU1O1xuY29uc3QgZGVmYXVsdEhlYWRlclN0YXRzQ29udHJvbEhlaWdodCA9IDQwO1xuY29uc3QgZGVmYXVsdFJvd0hlaWdodCA9IDMyO1xuY29uc3QgU1RBVFNfVE9HR0xFX0RVUkFUSU9OID0gJzAuNXMnO1xuY29uc3Qgb3ZlcnNjYW5Db2x1bW5Db3VudCA9IDEwO1xuY29uc3Qgb3ZlcnNjYW5Sb3dDb3VudCA9IDEwO1xuLy8gVGhlIGRlZmF1bHQgc2Nyb2xsYmFyIHdpZHRoIGNhbiByYW5nZSBhbnl3aGVyZSBmcm9tIDEycHggdG8gMTdweFxuY29uc3QgYnJvd3NlclNjcm9sbEJhcldpZHRoID0gMTc7XG5jb25zdCBmaWVsZFRvQWxpZ25SaWdodCA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogdHJ1ZSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogdHJ1ZVxufTtcblxuY29uc3QgcGlubmVkQ2xhc3NMaXN0ID0ge1xuICBoZWFkZXI6ICdwaW5uZWQtY29sdW1ucy0taGVhZGVyIHBpbm5lZC1ncmlkLWNvbnRhaW5lcicsXG4gIHJvd3M6ICdwaW5uZWQtY29sdW1ucy0tcm93cyBwaW5uZWQtZ3JpZC1jb250YWluZXInXG59O1xuXG5jb25zdCB1bnBpbm5lZENsYXNzTGlzdCA9IHtcbiAgaGVhZGVyOiAndW5waW5uZWQtY29sdW1ucy0taGVhZGVyIHVucGlubmVkLWdyaWQtY29udGFpbmVyJyxcbiAgcm93czogJ3VucGlubmVkLWNvbHVtbnMtLXJvd3MgdW5waW5uZWQtZ3JpZC1jb250YWluZXInXG59O1xuXG50eXBlIENvbnRhaW5lclByb3BzID0ge1xuICAkaGFzQ3VzdG9tU2Nyb2xsQmFyU3R5bGU/OiBib29sZWFuO1xuICAkaGFzU3RhdHM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXY8Q29udGFpbmVyUHJvcHM+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuY2VsbEZvbnRTaXplfXB4O1xuICBmbGV4LWdyb3c6IDE7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRhdGFUYWJsZVRleHRDb2xvcn07XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC5SZWFjdFZpcnR1YWxpemVkX19HcmlkOmZvY3VzLFxuICAuUmVhY3RWaXJ0dWFsaXplZF9fR3JpZDphY3RpdmUge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbiAgLmJvZHktZ3JpZCB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy4kaGFzQ3VzdG9tU2Nyb2xsQmFyU3R5bGUgJiYgcHJvcHMudGhlbWUubW9kYWxTY3JvbGxCYXJ9XG4gIH1cblxuICAuY2VsbCB7XG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAqOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5cbiAgLnJlc3VsdHMtdGFibGUtd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAuc2Nyb2xsLWluLXVpLXRocmVhZC5waW5uZWQtY29sdW1ucy0taGVhZGVyIHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsQm9yZGVyQ29sb3J9O1xuICAgICAgcGFkZGluZy1ib3R0b206ICR7YnJvd3NlclNjcm9sbEJhcldpZHRofXB4O1xuICAgIH1cbiAgICAuc2Nyb2xsLWluLXVpLXRocmVhZC51bnBpbm5lZC1jb2x1bW5zLS1oZWFkZXIge1xuICAgICAgd2lkdGg6IDEwMHZ3O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxCb3JkZXJDb2xvcn07XG4gICAgICAvLyBsZWF2ZSByb29tIGZvciBzY3JvbGxiYXJcbiAgICAgIHBhZGRpbmctYm90dG9tOiAke2Jyb3dzZXJTY3JvbGxCYXJXaWR0aH1weDtcbiAgICB9XG5cbiAgICAuc2Nyb2xsLWluLXVpLXRocmVhZDo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZ3JpZC1yb3cge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgfVxuICAgIC5ncmlkLWNvbHVtbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIH1cbiAgICAucGlubmVkLWdyaWQtY29udGFpbmVyIHtcbiAgICAgIGZsZXg6IDAgMCA3NXB4O1xuICAgICAgei1pbmRleDogMTA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5waW5uZWRHcmlkQm9yZGVyQ29sb3J9O1xuICAgIH1cbiAgICAuZXZlbi1yb3cge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ldmVuUm93QmFja2dyb3VuZH07XG4gICAgfVxuICAgIC5vZGQtcm93IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUub2RkUm93QmFja2dyb3VuZH07XG4gICAgfVxuICAgIC5jZWxsLFxuICAgIC5oZWFkZXItY2VsbCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIC8vIGhlYWRlciBib3JkZXIgaXMgcmVuZGVyZWQgYnkgaGVhZGVyIGNvbnRhaW5lclxuICAgICAgYm9yZGVyLWJvdHRvbTogMDtcbiAgICAgIC5uLXNvcnQtaWR4IHtcbiAgICAgICAgZm9udC1zaXplOiA5cHg7XG4gICAgICB9XG4gICAgfVxuICAgIC5jZWxsIHtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsQm9yZGVyQ29sb3J9O1xuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsQm9yZGVyQ29sb3J9O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgcGFkZGluZzogMCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmNlbGxQYWRkaW5nU2lkZX1weDtcbiAgICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsRm9udFNpemV9cHg7XG5cbiAgICAgIC5yZXN1bHQtbGluayB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLmhlYWRlci1jZWxsIHtcbiAgICAgIGp1c3RpZnktY29udGVudDogJHtwcm9wcyA9PiAocHJvcHMuJGhhc1N0YXRzID8gJ2ZsZXgtc3RhcnQnIDogJ2NlbnRlcicpfTtcbiAgICAgIGFsaWduLWl0ZW1zOiAke3Byb3BzID0+IChwcm9wcy4kaGFzU3RhdHMgPyAnc3RyZXRjaCcgOiAnZmxleC1zdGFydCcpfTtcbiAgICB9XG4gICAgLmNlbGwuZW5kLWNlbGwge1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgcGFkZGluZy1yaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuaGVhZGVyLWNlbGwuZW5kLWNlbGwge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAke3Byb3BzID0+XG4gICAgICAgIHByb3BzLiRoYXNTdGF0cyA/IGAxcHggc29saWQgJHtwcm9wcy50aGVtZS5jZWxsQm9yZGVyQ29sb3J9YCA6ICdub25lJ307XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+XG4gICAgICAgIHByb3BzLiRoYXNTdGF0cyA/IDAgOiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuY2VsbC5maXJzdC1jZWxsIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsUGFkZGluZ1NpZGUgKyBwcm9wcy50aGVtZS5lZGdlQ2VsbFBhZGRpbmdTaWRlfXB4O1xuICAgIH1cbiAgICAuaGVhZGVyLWNlbGwuZmlyc3QtY2VsbCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT5cbiAgICAgICAgcHJvcHMuJGhhc1N0YXRzID8gMCA6IHByb3BzLnRoZW1lLmNlbGxQYWRkaW5nU2lkZSArIHByb3BzLnRoZW1lLmVkZ2VDZWxsUGFkZGluZ1NpZGV9cHg7XG4gICAgfVxuICAgIC5jZWxsLmJvdHRvbS1jZWxsIHtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuICAgIC5jZWxsLmFsaWduLXJpZ2h0IHtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICB9XG4gIH1cblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRUYWJsZUxvYWRpbmcgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnZGF0YS10YWJsZS1sb2FkaW5nJ1xufSlgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZ3JvdzogMTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAyNDBweDtcbmA7XG5cbmNvbnN0IGRlZmF1bHRDb2x1bW5XaWR0aCA9IDIwMDtcblxuZXhwb3J0IHR5cGUgU29ydENvbHVtbiA9IHtcbiAgY29sdW1uPzogc3RyaW5nO1xuICBtb2RlPzogc3RyaW5nO1xufTtcblxuY29uc3QgY29sdW1uV2lkdGhGdW5jdGlvbiA9XG4gIChjb2x1bW5zLCBjZWxsU2l6ZUNhY2hlLCBnaG9zdD8pID0+XG4gICh7aW5kZXh9KSA9PiB7XG4gICAgcmV0dXJuIChjb2x1bW5zW2luZGV4XSB8fCB7fSkuZ2hvc3RcbiAgICAgID8gZ2hvc3RcbiAgICAgIDogY2VsbFNpemVDYWNoZVtjb2x1bW5zW2luZGV4XV0gfHwgZGVmYXVsdENvbHVtbldpZHRoO1xuICB9O1xuXG5jb25zdCBHRU9NRVRSWV9GSUVMRF9UWVBFUzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gIGdlb2pzb246IHRydWUsXG4gIGdlb2Fycm93OiB0cnVlXG59O1xuY29uc3QgTUFYX0dFT01FVFJZX0NFTExfQ0hBUlMgPSA1MTI7XG5jb25zdCBNQVhfR0VPTUVUUllfQVJSQVlfTEVOR1RIID0gODtcblxuZnVuY3Rpb24gZm9ybWF0R2VvbWV0cnlGb3JUYWJsZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IE1BWF9HRU9NRVRSWV9DRUxMX0NIQVJTXG4gICAgICA/IGAke3ZhbHVlLnNsaWNlKDAsIE1BWF9HRU9NRVRSWV9DRUxMX0NIQVJTKX3igKZgXG4gICAgICA6IHZhbHVlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgdGV4dCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlLCAoX2tleSwgdmFsKSA9PlxuICAgICAgQXJyYXkuaXNBcnJheSh2YWwpICYmIHZhbC5sZW5ndGggPiBNQVhfR0VPTUVUUllfQVJSQVlfTEVOR1RIID8gYFvigKYke3ZhbC5sZW5ndGh9XWAgOiB2YWxcbiAgICApO1xuICAgIGlmICghdGV4dCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dC5sZW5ndGggPiBNQVhfR0VPTUVUUllfQ0VMTF9DSEFSU1xuICAgICAgPyBgJHt0ZXh0LnNsaWNlKDAsIE1BWF9HRU9NRVRSWV9DRUxMX0NIQVJTKX3igKZgXG4gICAgICA6IHRleHQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAne2dlb2pzb259JztcbiAgfVxufVxuXG5pbnRlcmZhY2UgR2V0Um93Q2VsbFByb3BzIHtcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGw7XG4gIGNvbHVtbnM6IChzdHJpbmcgJiB7Z2hvc3Q/OiBib29sZWFufSlbXTtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGNvbE1ldGE7XG4gIHJvd0luZGV4OiBudW1iZXI7XG4gIHNvcnRPcmRlcj86IG51bWJlcltdIHwgbnVsbDtcbn1cblxuLypcbiAqIFRoaXMgaXMgYW4gYWNjZXNzb3IgbWV0aG9kIHVzZWQgdG8gZ2VuZXJhbGl6ZSBnZXR0aW5nIGEgY2VsbCBmcm9tIGEgZGF0YSByb3dcbiAqL1xuY29uc3QgZGVmYXVsdEdldFJvd0NlbGwgPSAoXG4gIHtkYXRhQ29udGFpbmVyLCBjb2x1bW5zLCBjb2x1bW4sIGNvbE1ldGEsIHJvd0luZGV4LCBzb3J0T3JkZXJ9OiBHZXRSb3dDZWxsUHJvcHMsXG4gIGZvcm1hdHRlclxuKSA9PiB7XG4gIGNvbnN0IHJvd0lkeCA9IHNvcnRPcmRlciAmJiBzb3J0T3JkZXIubGVuZ3RoID8gZ2V0KHNvcnRPcmRlciwgcm93SW5kZXgpIDogcm93SW5kZXg7XG4gIGNvbnN0IHt0eXBlfSA9IGNvbE1ldGFbY29sdW1uXTtcblxuICBjb25zdCB2YWx1ZSA9IGRhdGFDb250YWluZXI/LnZhbHVlQXQocm93SWR4LCBjb2x1bW5zLmluZGV4T2YoY29sdW1uKSk7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoR0VPTUVUUllfRklFTERfVFlQRVNbdHlwZV0pIHtcbiAgICByZXR1cm4gZm9ybWF0R2VvbWV0cnlGb3JUYWJsZSh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlciA/IGZvcm1hdHRlcih2YWx1ZSkgOiBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIHR5cGUpO1xufTtcblxuY29uc3QgU3R5bGVkU3RhdHNDb250cm9sID0gc3R5bGVkLmRpdjx7JHNob3dTdGF0cz86IGJvb2xlYW47IHRvcDogbnVtYmVyfT5gXG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJTdGF0c0NvbnRyb2xIZWlnaHR9cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAke3Byb3BzID0+IHByb3BzLnRvcH1weDtcbiAgZm9udC1mYW1pbHk6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udEZhbWlseX07XG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5jZWxsRm9udFNpemV9cHg7XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5oZWFkZXJDZWxsU3RhdHNDb250cm9sQmFja2dyb3VuZH07XG4gICY6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gID4gZGl2IHtcbiAgICBwYWRkaW5nOiAwcHggMjRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBzdmcge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEycHg7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJHtTVEFUU19UT0dHTEVfRFVSQVRJT059IGVhc2UtaW4tb3V0O1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtwcm9wcyA9PiAocHJvcHMuJHNob3dTdGF0cyA/IDE4MCA6IDApfWRlZyk7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBTdGF0c0NvbnRyb2wgPSAoe1xuICB0b3AsXG4gIHNob3dTdGF0cyxcbiAgdG9nZ2xlU2hvd1N0YXRzXG59OiB7XG4gIHRvcDogbnVtYmVyO1xuICBzaG93U3RhdHM/OiBib29sZWFuO1xuICB0b2dnbGVTaG93U3RhdHM6ICgpID0+IHZvaWQ7XG59KSA9PiAoXG4gIDxTdHlsZWRTdGF0c0NvbnRyb2xcbiAgICB0b3A9e3RvcH1cbiAgICAkc2hvd1N0YXRzPXtzaG93U3RhdHN9XG4gICAgb25DbGljaz17dG9nZ2xlU2hvd1N0YXRzfVxuICAgIG9uRG91YmxlQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfVxuICA+XG4gICAgPGRpdj5cbiAgICAgIHtzaG93U3RhdHMgPyAnSGlkZSBDb2x1bW4gU3RhdHMnIDogJ1Nob3cgQ29sdW1uIFN0YXRzJ31cbiAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkU3RhdHNDb250cm9sPlxuKTtcblxuaW50ZXJmYWNlIFRhYmxlU2VjdGlvblByb3BzIHtcbiAgY2xhc3NMaXN0Pzoge1xuICAgIGhlYWRlcjogc3RyaW5nO1xuICAgIHJvd3M6IHN0cmluZztcbiAgfTtcbiAgaXNQaW5uZWQ/OiBib29sZWFuO1xuICBjb2x1bW5zOiAoc3RyaW5nICYge2dob3N0PzogYm9vbGVhbn0pW107XG4gIGhlYWRlckdyaWRQcm9wcz87XG4gIGZpeGVkV2lkdGg/OiBudW1iZXIgfCBudWxsO1xuICBmaXhlZEhlaWdodD86IG51bWJlciB8IG51bGw7XG4gIG9uU2Nyb2xsPzogKHBhcmFtczogT25TY3JvbGxQYXJhbXMpID0+IHZvaWQ7XG4gIHNjcm9sbFRvcD86IG51bWJlcjtcbiAgZGF0YUdyaWRQcm9wczoge1xuICAgIHJvd0hlaWdodDogbnVtYmVyIHwgKChwYXJhbXM6IEluZGV4KSA9PiBudW1iZXIpO1xuICAgIHJvd0NvdW50OiBudW1iZXI7XG4gIH0gJiBQYXJ0aWFsPEdyaWRQcm9wcz47XG4gIGNvbHVtbldpZHRoPztcbiAgc2V0R3JpZFJlZj86IChyZWY6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZDtcbiAgaGVhZGVyQ2VsbFJlbmRlcj87XG4gIGRhdGFDZWxsUmVuZGVyPztcbiAgc2Nyb2xsTGVmdD86IG51bWJlcjtcbiAgaGVhZGVyVmlzaWJsZUhlaWdodD86IG51bWJlcjtcbiAgaGVhZGVyQm9keU9mZnNldD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRhYmxlU2VjdGlvbiA9ICh7XG4gIGNsYXNzTGlzdCxcbiAgaXNQaW5uZWQsXG4gIGNvbHVtbnMsXG4gIGhlYWRlckdyaWRQcm9wcyxcbiAgZml4ZWRXaWR0aCxcbiAgZml4ZWRIZWlnaHQgPSB1bmRlZmluZWQsXG4gIG9uU2Nyb2xsLFxuICBzY3JvbGxUb3AsXG4gIGRhdGFHcmlkUHJvcHMsXG4gIGNvbHVtbldpZHRoLFxuICBzZXRHcmlkUmVmID0gdW5kZWZpbmVkLFxuICBoZWFkZXJDZWxsUmVuZGVyLFxuICBkYXRhQ2VsbFJlbmRlcixcbiAgc2Nyb2xsTGVmdCA9IDAsXG4gIGhlYWRlclZpc2libGVIZWlnaHQsXG4gIGhlYWRlckJvZHlPZmZzZXRcbn06IFRhYmxlU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGhlYWRlckdyaWRIZWlnaHQgPSBoZWFkZXJHcmlkUHJvcHMuaGVpZ2h0O1xuICBjb25zdCB2aXNpYmxlSGVpZ2h0ID0gaGVhZGVyVmlzaWJsZUhlaWdodCA/PyBoZWFkZXJHcmlkSGVpZ2h0O1xuICBjb25zdCBib2R5T2Zmc2V0ID0gaGVhZGVyQm9keU9mZnNldCA/PyB2aXNpYmxlSGVpZ2h0O1xuXG4gIGNvbnN0IGhlYWRlclN0eWxlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgaGVpZ2h0OiBgJHt2aXNpYmxlSGVpZ2h0fXB4YCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyBhcyBjb25zdCxcbiAgICAgIHRyYW5zaXRpb246IGBoZWlnaHQgJHtTVEFUU19UT0dHTEVfRFVSQVRJT059IGVhc2UtaW4tb3V0YFxuICAgIH0pLFxuICAgIFt2aXNpYmxlSGVpZ2h0XVxuICApO1xuICBjb25zdCBjb250ZW50U3R5bGUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0b3A6IGAke3Zpc2libGVIZWlnaHR9cHhgLFxuICAgICAgdHJhbnNpdGlvbjogYHRvcCAke1NUQVRTX1RPR0dMRV9EVVJBVElPTn0gZWFzZS1pbi1vdXRgXG4gICAgfSksXG4gICAgW3Zpc2libGVIZWlnaHRdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b1NpemVyPlxuICAgICAgeyh7d2lkdGgsIGhlaWdodH0pID0+IHtcbiAgICAgICAgY29uc3QgZ3JpZERpbWVuc2lvbiA9IHtcbiAgICAgICAgICBjb2x1bW5Db3VudDogY29sdW1ucy5sZW5ndGgsXG4gICAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgICAgd2lkdGg6IGZpeGVkV2lkdGggfHwgd2lkdGhcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaGVhZGVyR3JpZFdpZHRoID0gZml4ZWRXaWR0aCB8fCB3aWR0aDtcbiAgICAgICAgY29uc3QgZGF0YUdyaWRIZWlnaHQgPSBmaXhlZEhlaWdodCB8fCBoZWlnaHQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ3Njcm9sbC1pbi11aS10aHJlYWQnLCBjbGFzc0xpc3Q/LmhlYWRlcil9XG4gICAgICAgICAgICAgIHN0eWxlPXtoZWFkZXJTdHlsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI9e2hlYWRlckNlbGxSZW5kZXJ9XG4gICAgICAgICAgICAgICAgey4uLmhlYWRlckdyaWRQcm9wc31cbiAgICAgICAgICAgICAgICB7Li4uZ3JpZERpbWVuc2lvbn1cbiAgICAgICAgICAgICAgICBoZWlnaHQ9e2hlYWRlckdyaWRIZWlnaHQgKyBicm93c2VyU2Nyb2xsQmFyV2lkdGh9XG4gICAgICAgICAgICAgICAgd2lkdGg9e2hlYWRlckdyaWRXaWR0aH1cbiAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0PXtzY3JvbGxMZWZ0fVxuICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXthcmdzID0+IG9uU2Nyb2xsPy4oey4uLmFyZ3MsIHNjcm9sbFRvcDogc2Nyb2xsVG9wID8/IDB9KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ3Njcm9sbC1pbi11aS10aHJlYWQnLCBjbGFzc0xpc3Q/LnJvd3MpfVxuICAgICAgICAgICAgICBzdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcj17ZGF0YUNlbGxSZW5kZXJ9XG4gICAgICAgICAgICAgICAgey4uLmRhdGFHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgey4uLmdyaWREaW1lbnNpb259XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtpc1Bpbm5lZCA/ICdwaW5uZWQtZ3JpZCcgOiAnYm9keS1ncmlkJ31cbiAgICAgICAgICAgICAgICBoZWlnaHQ9e2RhdGFHcmlkSGVpZ2h0IC0gYm9keU9mZnNldH1cbiAgICAgICAgICAgICAgICBvblNjcm9sbD17b25TY3JvbGx9XG4gICAgICAgICAgICAgICAgc2Nyb2xsTGVmdD17c2Nyb2xsTGVmdH1cbiAgICAgICAgICAgICAgICBzY3JvbGxUb3A9e3Njcm9sbFRvcH1cbiAgICAgICAgICAgICAgICBzZXRHcmlkUmVmPXtzZXRHcmlkUmVmfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvQXV0b1NpemVyPlxuICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhVGFibGVQcm9wcyB7XG4gIGRhdGFJZD86IHN0cmluZztcbiAgaGFzU3RhdHM/OiBib29sZWFuO1xuICBjZWxsU2l6ZUNhY2hlPzogQ2VsbFNpemVDYWNoZTtcbiAgcGlubmVkQ29sdW1ucz86IHN0cmluZ1tdO1xuICBjb2x1bW5zOiAoc3RyaW5nICYge2dob3N0PzogYm9vbGVhbn0pW107XG4gIGZpeGVkV2lkdGg/OiBudW1iZXIgfCBudWxsO1xuICB0aGVtZT86IGFueTtcbiAgZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSB8IG51bGw7XG4gIGZpeGVkSGVpZ2h0PzogbnVtYmVyIHwgbnVsbDtcbiAgY29sTWV0YTogQ29sTWV0YTtcbiAgc29ydENvbHVtbjogU29ydENvbHVtbjtcbiAgc29ydFRhYmxlQ29sdW1uOiAoY29sdW1uOiBzdHJpbmcsIG1vZGU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHBpblRhYmxlQ29sdW1uOiAoY29sdW1uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHNldENvbHVtbkRpc3BsYXlGb3JtYXQ/OiAoZm9ybWF0czoge1trZXk6IHN0cmluZ106IHN0cmluZ30pID0+IHZvaWQ7XG4gIGNvcHlUYWJsZUNvbHVtbjogKGNvbHVtbjogc3RyaW5nKSA9PiB2b2lkO1xuICBzb3J0T3JkZXI/OiBudW1iZXJbXSB8IG51bGw7XG4gIHNob3dTdGF0cz86IGJvb2xlYW47XG4gIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlPzogYm9vbGVhbjtcbiAgZ2V0Um93Q2VsbD86IChyZW5kZXJEYXRhQ2VsbFByb3BzOiBHZXRSb3dDZWxsUHJvcHMsIGZvcm1hdHRlcjogYW55KSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gIGxvYWRDb2x1bW5TdGF0cz86IChkYXRhSWQ6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBEYXRhVGFibGVTdGF0ZSB7XG4gIGNlbGxTaXplQ2FjaGU/OiBDZWxsU2l6ZUNhY2hlO1xuICBtb3JlT3B0aW9uc0NvbHVtbj87XG4gIGdob3N0PztcbiAgc2hvd1N0YXRzPzogYm9vbGVhbjtcbn1cblxuY29uc3QgRFVNTVlfU1RZTEUgPSB7fTtcblxuRGF0YVRhYmxlRmFjdG9yeS5kZXBzID0gW0hlYWRlckNlbGxGYWN0b3J5XTtcbmZ1bmN0aW9uIERhdGFUYWJsZUZhY3RvcnkoXG4gIEhlYWRlckNlbGw6IFJldHVyblR5cGU8dHlwZW9mIEhlYWRlckNlbGxGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxEYXRhVGFibGVQcm9wcz4ge1xuICBjbGFzcyBEYXRhVGFibGUgZXh0ZW5kcyBDb21wb25lbnQ8RGF0YVRhYmxlUHJvcHMsIERhdGFUYWJsZVN0YXRlPiB7XG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGRhdGFDb250YWluZXI6IG51bGwsXG4gICAgICBwaW5uZWRDb2x1bW5zOiBbXSxcbiAgICAgIGNvbE1ldGE6IHt9LFxuICAgICAgY2VsbFNpemVDYWNoZToge30sXG4gICAgICBzb3J0Q29sdW1uOiB7fSxcbiAgICAgIGZpeGVkV2lkdGg6IG51bGwsXG4gICAgICBmaXhlZEhlaWdodDogbnVsbCxcbiAgICAgIHRoZW1lOiB7fSxcbiAgICAgIGhhc1N0YXRzOiBmYWxzZSxcbiAgICAgIGhhc0N1c3RvbVNjcm9sbEJhclN0eWxlOiB0cnVlXG4gICAgfTtcblxuICAgIHBpbm5lZEdyaWQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgdW5waW5uZWRHcmlkOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGhhc01vdW50ZWQgPSBmYWxzZTtcblxuICAgIHN0YXRlOiBEYXRhVGFibGVTdGF0ZSA9IHtcbiAgICAgIGNlbGxTaXplQ2FjaGU6IHt9LFxuICAgICAgbW9yZU9wdGlvbnNDb2x1bW46IG51bGwsXG4gICAgICBzaG93U3RhdHM6IHRydWVcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLmhhc01vdW50ZWQgPSB0cnVlO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgpO1xuICAgICAgdGhpcy5kb1NjYWxlQ2VsbHNUb1dpZHRoKCk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnByb3BzLmNlbGxTaXplQ2FjaGUgIT09IHByZXZQcm9wcy5jZWxsU2l6ZUNhY2hlIHx8XG4gICAgICAgIHRoaXMucHJvcHMucGlubmVkQ29sdW1ucyAhPT0gcHJldlByb3BzLnBpbm5lZENvbHVtbnNcbiAgICAgICkge1xuICAgICAgICB0aGlzLmRvU2NhbGVDZWxsc1RvV2lkdGgoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMuaGFzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2NhbGVDZWxsc1RvV2lkdGgpO1xuICAgIH1cblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgY29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLmNvbHVtbnM7XG4gICAgcGlubmVkQ29sdW1ucyA9IChwcm9wczogRGF0YVRhYmxlUHJvcHMpID0+IHByb3BzLnBpbm5lZENvbHVtbnM7XG4gICAgdW5waW5uZWRDb2x1bW5zID0gY3JlYXRlU2VsZWN0b3IodGhpcy5jb2x1bW5zLCB0aGlzLnBpbm5lZENvbHVtbnMsIChjb2x1bW5zLCBwaW5uZWRDb2x1bW5zKSA9PlxuICAgICAgIUFycmF5LmlzQXJyYXkocGlubmVkQ29sdW1ucykgPyBjb2x1bW5zIDogY29sdW1ucy5maWx0ZXIoYyA9PiAhcGlubmVkQ29sdW1ucy5pbmNsdWRlcyhjKSlcbiAgICApO1xuXG4gICAgdG9nZ2xlTW9yZU9wdGlvbnMgPSBtb3JlT3B0aW9uc0NvbHVtbiA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNNb3VudGVkKVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBtb3JlT3B0aW9uc0NvbHVtbjpcbiAgICAgICAgICAgIHRoaXMuc3RhdGUubW9yZU9wdGlvbnNDb2x1bW4gPT09IG1vcmVPcHRpb25zQ29sdW1uID8gbnVsbCA6IG1vcmVPcHRpb25zQ29sdW1uXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdG9nZ2xlU2hvd1N0YXRzID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzTW91bnRlZCkgdGhpcy5zZXRTdGF0ZSh7c2hvd1N0YXRzOiAhdGhpcy5zdGF0ZS5zaG93U3RhdHN9KTtcbiAgICB9O1xuICAgIGdldENlbGxTaXplQ2FjaGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCB7Y2VsbFNpemVDYWNoZTogcHJvcHNDYWNoZSA9IHt9LCBmaXhlZFdpZHRoLCBwaW5uZWRDb2x1bW5zID0gW119ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1ucyA9IHRoaXMudW5waW5uZWRDb2x1bW5zKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCB3aWR0aCA9IGZpeGVkV2lkdGggPyBmaXhlZFdpZHRoIDogdGhpcy5yb290LmN1cnJlbnQgPyB0aGlzLnJvb3QuY3VycmVudC5jbGllbnRXaWR0aCA6IDA7XG5cbiAgICAgIC8vIHBpbiBjb2x1bW4gYm9yZGVyIGlzIDIgcGl4ZWwgdnMgMSBwaXhlbFxuICAgICAgY29uc3QgYWRqdXN0V2lkdGggPSBwaW5uZWRDb2x1bW5zLmxlbmd0aCA/IHdpZHRoIC0gMSA6IHdpZHRoO1xuICAgICAgY29uc3Qge2NlbGxTaXplQ2FjaGUsIGdob3N0fSA9IGFkanVzdENlbGxzVG9Db250YWluZXIoXG4gICAgICAgIGFkanVzdFdpZHRoLFxuICAgICAgICBwcm9wc0NhY2hlLFxuICAgICAgICBwaW5uZWRDb2x1bW5zLFxuICAgICAgICB1bnBpbm5lZENvbHVtbnNcbiAgICAgICkgYXMge2NlbGxTaXplQ2FjaGU6IENlbGxTaXplQ2FjaGU7IGdob3N0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgZ2hvc3RcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGRvU2NhbGVDZWxsc1RvV2lkdGggPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaGFzTW91bnRlZCkgcmV0dXJuO1xuICAgICAgY29uc3QgcHJvcHNDYWNoZSA9IHRoaXMucHJvcHMuY2VsbFNpemVDYWNoZSB8fCB7fTtcbiAgICAgIC8vIENvbHVtbiB3aWR0aHMgYXJlIG1lYXN1cmVkIGFmdGVyIGZpcnN0IHBhaW50OyBza2lwIHVudGlsIHRoZXkgZXhpc3QuXG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHByb3BzQ2FjaGUpLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLmdldENlbGxTaXplQ2FjaGUoKSk7XG4gICAgfTtcblxuICAgIHNjYWxlQ2VsbHNUb1dpZHRoID0gZGVib3VuY2UodGhpcy5kb1NjYWxlQ2VsbHNUb1dpZHRoLCAzMDApO1xuXG4gICAgcmVuZGVyRGF0YUNlbGwgPSAoY29sdW1ucywgaXNQaW5uZWQsIHByb3BzOiBEYXRhVGFibGVQcm9wcykgPT4ge1xuICAgICAgY29uc3QgZ2V0Um93Q2VsbCA9IHRoaXMucHJvcHMuZ2V0Um93Q2VsbCA/PyBkZWZhdWx0R2V0Um93Q2VsbDtcbiAgICAgIGNvbnN0IERhdGFDZWxsUmVuZGVyZXIgPSBjZWxsSW5mbyA9PiB7XG4gICAgICAgIGNvbnN0IHtjb2x1bW5JbmRleCwga2V5LCBzdHlsZSwgcm93SW5kZXh9ID0gY2VsbEluZm87XG4gICAgICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBjb2xNZXRhfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2NvbHVtbkluZGV4XTtcbiAgICAgICAgY29uc3QgaXNHaG9zdCA9IGNvbHVtbi5naG9zdDtcblxuICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBpc0dob3N0ID8gbnVsbCA6IGdldENvbHVtbkZvcm1hdHRlcihjb2xNZXRhW2NvbHVtbl0pO1xuICAgICAgICBjb25zdCByb3dDZWxsID0gaXNHaG9zdCA/ICcnIDogZ2V0Um93Q2VsbCh7Li4ucHJvcHMsIGNvbHVtbiwgcm93SW5kZXh9LCBmb3JtYXR0ZXIpO1xuICAgICAgICBjb25zdCB0eXBlID0gaXNHaG9zdCA/IG51bGwgOiBjb2xNZXRhW2NvbHVtbl0udHlwZTtcblxuICAgICAgICBjb25zdCBsYXN0Um93SW5kZXggPSBkYXRhQ29udGFpbmVyID8gZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkgLSAxIDogMDtcblxuICAgICAgICBjb25zdCBlbmRDZWxsID0gY29sdW1uSW5kZXggPT09IGNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgZmlyc3RDZWxsID0gY29sdW1uSW5kZXggPT09IDA7XG4gICAgICAgIGNvbnN0IGJvdHRvbUNlbGwgPSByb3dJbmRleCA9PT0gbGFzdFJvd0luZGV4O1xuICAgICAgICBjb25zdCBhbGlnblJpZ2h0ID0gZmllbGRUb0FsaWduUmlnaHRbTnVtYmVyKHR5cGUpXTtcblxuICAgICAgICBjb25zdCBjZWxsID0gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnY2VsbCcsIHtcbiAgICAgICAgICAgICAgW3Jvd0luZGV4ICUgMiA9PT0gMCA/ICdldmVuLXJvdycgOiAnb2RkLXJvdyddOiB0cnVlLFxuICAgICAgICAgICAgICBbYHJvdy0ke3Jvd0luZGV4fWBdOiB0cnVlLFxuICAgICAgICAgICAgICAncGlubmVkLWNlbGwnOiBpc1Bpbm5lZCxcbiAgICAgICAgICAgICAgJ2ZpcnN0LWNlbGwnOiBmaXJzdENlbGwsXG4gICAgICAgICAgICAgICdlbmQtY2VsbCc6IGVuZENlbGwsXG4gICAgICAgICAgICAgICdib3R0b20tY2VsbCc6IGJvdHRvbUNlbGwsXG4gICAgICAgICAgICAgICdhbGlnbi1yaWdodCc6IGFsaWduUmlnaHRcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgICAgICB0aXRsZT17aXNHaG9zdCA/IHVuZGVmaW5lZCA6IHJvd0NlbGx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2Ake3Jvd0NlbGx9JHtlbmRDZWxsID8gJ1xcbicgOiAnXFx0J31gfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBjZWxsO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBEYXRhQ2VsbFJlbmRlcmVyO1xuICAgIH07XG5cbiAgICByZW5kZXJIZWFkZXJDZWxsKGNvbHVtbnMsIGlzUGlubmVkLCBwcm9wcywgdG9nZ2xlTW9yZU9wdGlvbnMsIG1vcmVPcHRpb25zQ29sdW1uKSB7XG4gICAgICBjb25zdCBIZWFkZXJDZWxsUmVuZGVyZXIgPSBjZWxsSW5mbyA9PiAoXG4gICAgICAgIDxIZWFkZXJDZWxsXG4gICAgICAgICAgY2VsbEluZm89e2NlbGxJbmZvfVxuICAgICAgICAgIGtleT17Y2VsbEluZm8uY29sdW1uSW5kZXh9XG4gICAgICAgICAgY29sdW1ucz17Y29sdW1uc31cbiAgICAgICAgICBpc1Bpbm5lZD17aXNQaW5uZWR9XG4gICAgICAgICAgc2hvd1N0YXRzPXt0aGlzLnN0YXRlLnNob3dTdGF0c31cbiAgICAgICAgICBwcm9wcz17cHJvcHN9XG4gICAgICAgICAgdG9nZ2xlTW9yZU9wdGlvbnM9e3RvZ2dsZU1vcmVPcHRpb25zfVxuICAgICAgICAgIG1vcmVPcHRpb25zQ29sdW1uPXttb3JlT3B0aW9uc0NvbHVtbn1cbiAgICAgICAgICAvLyBwYXNzIGR1bW15IHN0eWxlIHRvIHByZXZlbnQgd2FybmluZ3MgZnJvbSByZWFjdC12aXJ0dWFsaXplZCBHcmlkXG4gICAgICAgICAgc3R5bGU9e0RVTU1ZX1NUWUxFfVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICAgIHJldHVybiBIZWFkZXJDZWxsUmVuZGVyZXI7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YUNvbnRhaW5lcixcbiAgICAgICAgcGlubmVkQ29sdW1ucyA9IFtdLFxuICAgICAgICB0aGVtZSA9IHt9LFxuICAgICAgICBmaXhlZFdpZHRoLFxuICAgICAgICBmaXhlZEhlaWdodCA9IDAsXG4gICAgICAgIGhhc1N0YXRzLFxuICAgICAgICBoYXNDdXN0b21TY3JvbGxCYXJTdHlsZVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB1bnBpbm5lZENvbHVtbnMgPSB0aGlzLnVucGlubmVkQ29sdW1ucyh0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3Qge2NlbGxTaXplQ2FjaGUgPSB7fSwgbW9yZU9wdGlvbnNDb2x1bW4sIGdob3N0LCBzaG93U3RhdHN9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIGNvbnN0IHVucGlubmVkQ29sdW1uc0dob3N0ID0gZ2hvc3RcbiAgICAgICAgPyBbLi4udW5waW5uZWRDb2x1bW5zLCB7Z2hvc3Q6IHRydWV9IGFzIHN0cmluZyAmIHtnaG9zdDogYm9vbGVhbn1dXG4gICAgICAgIDogdW5waW5uZWRDb2x1bW5zO1xuICAgICAgY29uc3QgcGlubmVkQ29sdW1uc1dpZHRoID0gcGlubmVkQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHZhbCkgPT4gYWNjICsgKGdldChjZWxsU2l6ZUNhY2hlLCB2YWwsIDApIGFzIG51bWJlciksXG4gICAgICAgIDBcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGhhc1Bpbm5lZENvbHVtbnMgPSBCb29sZWFuKHBpbm5lZENvbHVtbnMubGVuZ3RoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaGVhZGVyUm93SGVpZ2h0ID0gZGVmYXVsdEhlYWRlclJvd0hlaWdodCxcbiAgICAgICAgaGVhZGVyU3RhdHNDb250cm9sSGVpZ2h0ID0gZGVmYXVsdEhlYWRlclN0YXRzQ29udHJvbEhlaWdodCxcbiAgICAgICAgaGVhZGVyUm93V1N0YXRzSGVpZ2h0ID0gZGVmYXVsdEhlYWRlclJvd0hlaWdodCxcbiAgICAgICAgcm93SGVpZ2h0ID0gZGVmYXVsdFJvd0hlaWdodFxuICAgICAgfSA9IHRoZW1lO1xuXG4gICAgICBjb25zdCBjb2xsYXBzZWRIZWFkZXJIZWlnaHQgPSBoYXNTdGF0c1xuICAgICAgICA/IGhlYWRlclJvd0hlaWdodCArIGhlYWRlclN0YXRzQ29udHJvbEhlaWdodFxuICAgICAgICA6IGhlYWRlclJvd0hlaWdodDtcbiAgICAgIGNvbnN0IGV4cGFuZGVkSGVhZGVySGVpZ2h0ID0gaGFzU3RhdHMgPyBoZWFkZXJSb3dXU3RhdHNIZWlnaHQgOiBoZWFkZXJSb3dIZWlnaHQ7XG4gICAgICBjb25zdCB2aXNpYmxlSGVhZGVySGVpZ2h0ID0gc2hvd1N0YXRzID8gZXhwYW5kZWRIZWFkZXJIZWlnaHQgOiBjb2xsYXBzZWRIZWFkZXJIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IGhlYWRlckdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnaGVhZGVyLWdyaWQnLFxuICAgICAgICBoZWlnaHQ6IGV4cGFuZGVkSGVhZGVySGVpZ2h0LFxuICAgICAgICByb3dDb3VudDogMSxcbiAgICAgICAgcm93SGVpZ2h0OiBleHBhbmRlZEhlYWRlckhlaWdodFxuICAgICAgfTtcblxuICAgICAgY29uc3QgZGF0YUdyaWRQcm9wcyA9IHtcbiAgICAgICAgY2VsbFNpemVDYWNoZSxcbiAgICAgICAgb3ZlcnNjYW5Db2x1bW5Db3VudCxcbiAgICAgICAgb3ZlcnNjYW5Sb3dDb3VudCxcbiAgICAgICAgcm93Q291bnQ6IGRhdGFDb250YWluZXIgPyBkYXRhQ29udGFpbmVyLm51bVJvd3MoKSA6IDAsXG4gICAgICAgIHJvd0hlaWdodFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbnRhaW5lclxuICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGEtdGFibGUtY29udGFpbmVyXCJcbiAgICAgICAgICByZWY9e3RoaXMucm9vdH1cbiAgICAgICAgICAkaGFzQ3VzdG9tU2Nyb2xsQmFyU3R5bGU9e2hhc0N1c3RvbVNjcm9sbEJhclN0eWxlfVxuICAgICAgICAgICRoYXNTdGF0cz17Qm9vbGVhbihoYXNTdGF0cyl9XG4gICAgICAgID5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoY2VsbFNpemVDYWNoZSkubGVuZ3RoID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPFNjcm9sbFN5bmM+XG4gICAgICAgICAgICAgICAgeyh7b25TY3JvbGwsIHNjcm9sbExlZnQsIHNjcm9sbFRvcH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVzdWx0cy10YWJsZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2hhc1Bpbm5lZENvbHVtbnMgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9XCJwaW5uZWQtY29sdW1uc1wiIGNsYXNzTmFtZT1cInBpbm5lZC1jb2x1bW5zIGdyaWQtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0xpc3Q9e3Bpbm5lZENsYXNzTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Bpbm5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3Bpbm5lZENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyR3JpZFByb3BzPXtoZWFkZXJHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyVmlzaWJsZUhlaWdodD17dmlzaWJsZUhlYWRlckhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCb2R5T2Zmc2V0PXt2aXNpYmxlSGVhZGVySGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkV2lkdGg9e3Bpbm5lZENvbHVtbnNXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjcm9sbD17YXJncyA9PiBvblNjcm9sbCh7Li4uYXJncywgc2Nyb2xsTGVmdH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcD17c2Nyb2xsVG9wfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ9e3Njcm9sbExlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUdyaWRQcm9wcz17ZGF0YUdyaWRQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRHcmlkUmVmPXtwaW5uZWRHcmlkID0+ICh0aGlzLnBpbm5lZEdyaWQgPSBwaW5uZWRHcmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aD17Y29sdW1uV2lkdGhGdW5jdGlvbihwaW5uZWRDb2x1bW5zLCBjZWxsU2l6ZUNhY2hlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsUmVuZGVyPXt0aGlzLnJlbmRlckhlYWRlckNlbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRDb2x1bW5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZU1vcmVPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wdGlvbnNDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFDZWxsUmVuZGVyPXt0aGlzLnJlbmRlckRhdGFDZWxsKHBpbm5lZENvbHVtbnMsIHRydWUsIHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9XCJ1bnBpbm5lZC1jb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6IGAke2hhc1Bpbm5lZENvbHVtbnMgPyBgJHtwaW5uZWRDb2x1bW5zV2lkdGh9cHhgIDogJzAnfWBcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ1bnBpbm5lZC1jb2x1bW5zIGdyaWQtY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVTZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTGlzdD17dW5waW5uZWRDbGFzc0xpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGlubmVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucz17dW5waW5uZWRDb2x1bW5zR2hvc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckdyaWRQcm9wcz17aGVhZGVyR3JpZFByb3BzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJWaXNpYmxlSGVpZ2h0PXt2aXNpYmxlSGVhZGVySGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJCb2R5T2Zmc2V0PXt2aXNpYmxlSGVhZGVySGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZFdpZHRoPXtmaXhlZFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZEhlaWdodD17Zml4ZWRIZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXtvblNjcm9sbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wPXtzY3JvbGxUb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ9e3Njcm9sbExlZnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFHcmlkUHJvcHM9e2RhdGFHcmlkUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldEdyaWRSZWY9e3VucGlubmVkR3JpZCA9PiAodGhpcy51bnBpbm5lZEdyaWQgPSB1bnBpbm5lZEdyaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5XaWR0aD17Y29sdW1uV2lkdGhGdW5jdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBpbm5lZENvbHVtbnNHaG9zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsU2l6ZUNhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdob3N0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGxSZW5kZXI9e3RoaXMucmVuZGVySGVhZGVyQ2VsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBpbm5lZENvbHVtbnNHaG9zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTW9yZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wdGlvbnNDb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUNlbGxSZW5kZXI9e3RoaXMucmVuZGVyRGF0YUNlbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5waW5uZWRDb2x1bW5zR2hvc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvU2Nyb2xsU3luYz5cbiAgICAgICAgICAgICAge2hhc1N0YXRzID8gKFxuICAgICAgICAgICAgICAgIDxTdGF0c0NvbnRyb2xcbiAgICAgICAgICAgICAgICAgIHRvcD17aGVhZGVyUm93SGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgc2hvd1N0YXRzPXtzaG93U3RhdHN9XG4gICAgICAgICAgICAgICAgICB0b2dnbGVTaG93U3RhdHM9e3RoaXMudG9nZ2xlU2hvd1N0YXRzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTdHlsZWRUYWJsZUxvYWRpbmcgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGFiZWw9XCJMb2FkaW5nIGRhdGEgdGFibGVcIj5cbiAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIHNpemU9ezQ4fSAvPlxuICAgICAgICAgICAgPC9TdHlsZWRUYWJsZUxvYWRpbmc+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aXRoVGhlbWUoRGF0YVRhYmxlIGFzIFJlYWN0LkNvbXBvbmVudFR5cGU8RGF0YVRhYmxlUHJvcHM+KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGF0YVRhYmxl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
|