@kepler.gl/components 3.3.0-alpha.1 → 3.3.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/common/action-panel.js +1 -1
  2. package/dist/common/color-legend.d.ts +1 -1
  3. package/dist/common/data-table/canvas.d.ts +1 -1
  4. package/dist/common/data-table/index.d.ts +1 -1
  5. package/dist/common/dnd-layer-items.d.ts +4 -0
  6. package/dist/common/dnd-layer-items.js +6 -2
  7. package/dist/common/error-boundary.d.ts +1 -1
  8. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  9. package/dist/common/flex-container.d.ts +15 -7
  10. package/dist/common/icon-button.d.ts +53 -6
  11. package/dist/common/icons/arrow-down-full.d.ts +2 -1
  12. package/dist/common/icons/arrow-down-full.js +1 -1
  13. package/dist/common/icons/folder.d.ts +10 -0
  14. package/dist/common/icons/folder.js +51 -0
  15. package/dist/common/icons/index.d.ts +1 -0
  16. package/dist/common/icons/index.js +8 -1
  17. package/dist/common/icons/timeline-marker.d.ts +2 -1
  18. package/dist/common/icons/timeline-marker.js +1 -1
  19. package/dist/common/item-selector/dropdown-list.d.ts +1 -1
  20. package/dist/common/item-selector/dropdown-list.js +1 -1
  21. package/dist/common/item-selector/dropdown-select.d.ts +13 -7
  22. package/dist/common/item-selector/item-selector.d.ts +1 -1
  23. package/dist/common/item-selector/item-selector.js +1 -1
  24. package/dist/common/item-selector/typeahead.d.ts +4 -4
  25. package/dist/common/item-selector/typeahead.js +1 -3
  26. package/dist/common/layout-splitter.d.ts +45 -0
  27. package/dist/common/layout-splitter.js +231 -0
  28. package/dist/common/line-chart.d.ts +7 -3
  29. package/dist/common/line-chart.js +179 -59
  30. package/dist/common/modal.d.ts +11 -5
  31. package/dist/common/modal.js +1 -1
  32. package/dist/common/portaled.d.ts +17 -17
  33. package/dist/common/range-slider.js +1 -3
  34. package/dist/common/slider/mouse-event.d.ts +1 -1
  35. package/dist/common/slider/mouse-event.js +1 -2
  36. package/dist/common/slider/slider-bar-handle.d.ts +1 -1
  37. package/dist/common/slider/slider-bar-handle.js +1 -1
  38. package/dist/common/slider/slider-handle.d.ts +3 -3
  39. package/dist/common/slider/slider-handle.js +1 -1
  40. package/dist/common/slider/slider.d.ts +4 -4
  41. package/dist/common/slider/slider.js +1 -1
  42. package/dist/common/styled-components.d.ts +627 -177
  43. package/dist/common/vertical-toolbar.d.ts +12 -2
  44. package/dist/container.d.ts +3 -2
  45. package/dist/container.js +2 -2
  46. package/dist/context.d.ts +1 -1
  47. package/dist/context.js +1 -1
  48. package/dist/dnd-context.d.ts +4 -3
  49. package/dist/dnd-context.js +64 -9
  50. package/dist/effects/compact-color-picker.d.ts +1 -1
  51. package/dist/effects/effect-configurator.d.ts +2 -4
  52. package/dist/effects/effect-time-configurator.js +1 -1
  53. package/dist/effects/effect-type-list-item.d.ts +1 -1
  54. package/dist/filters/components.d.ts +7 -5
  55. package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
  56. package/dist/geocoder-panel.d.ts +2 -2
  57. package/dist/geocoder-panel.js +6 -7
  58. package/dist/hooks/use-dnd-layers.d.ts +4 -3
  59. package/dist/hooks/use-dnd-layers.js +103 -42
  60. package/dist/index.d.ts +3 -2
  61. package/dist/index.js +38 -9
  62. package/dist/injector.d.ts +1 -1
  63. package/dist/kepler-gl.d.ts +167 -27
  64. package/dist/kepler-gl.js +3 -2
  65. package/dist/loading-indicator.d.ts +1 -1
  66. package/dist/map/layer-hover-info.d.ts +7 -3
  67. package/dist/map/layer-hover-info.js +58 -22
  68. package/dist/map/map-control-panel.js +3 -2
  69. package/dist/map/map-control-toolbar.d.ts +29 -4
  70. package/dist/map/map-control.d.ts +11 -4
  71. package/dist/map/map-control.js +7 -6
  72. package/dist/map/map-legend-panel.d.ts +11 -2
  73. package/dist/map/map-legend-panel.js +19 -2
  74. package/dist/map/map-legend.d.ts +19 -2
  75. package/dist/map/map-legend.js +141 -27
  76. package/dist/map/split-map-button.d.ts +6 -1
  77. package/dist/map/split-map-button.js +113 -19
  78. package/dist/map-container.js +20 -3
  79. package/dist/maps-layout.d.ts +3 -0
  80. package/dist/maps-layout.js +86 -26
  81. package/dist/modal-container.d.ts +1 -1
  82. package/dist/modals/cloud-tile.d.ts +1 -2
  83. package/dist/modals/export-map-modal/components.d.ts +9 -5
  84. package/dist/modals/export-video-modal.d.ts +3 -0
  85. package/dist/modals/export-video-modal.js +79 -46
  86. package/dist/modals/export-video-modal.spec.js +2 -2
  87. package/dist/modals/hubble-utils.d.ts +16 -0
  88. package/dist/modals/hubble-utils.js +98 -1
  89. package/dist/modals/modal-dialog.d.ts +1 -1
  90. package/dist/modals/share-map-modal.d.ts +2 -4
  91. package/dist/modals/swipe-composite-utils.d.ts +10 -0
  92. package/dist/modals/swipe-composite-utils.js +108 -0
  93. package/dist/modals/swipe-export-settings.d.ts +24 -0
  94. package/dist/modals/swipe-export-settings.js +370 -0
  95. package/dist/modals/swipe-export-video-container.d.ts +122 -0
  96. package/dist/modals/swipe-export-video-container.js +630 -0
  97. package/dist/modals/swipe-export-video-preview.d.ts +68 -0
  98. package/dist/modals/swipe-export-video-preview.js +339 -0
  99. package/dist/modals/tilesets-modals/tileset-raster-form.js +1 -5
  100. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
  101. package/dist/side-panel/layer-manager.d.ts +5 -4
  102. package/dist/side-panel/layer-manager.js +16 -4
  103. package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
  104. package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
  105. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +2 -1
  106. package/dist/side-panel/layer-panel/dataset-layer-group.js +1 -1
  107. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +2 -1
  108. package/dist/side-panel/layer-panel/dataset-layer-section.js +1 -1
  109. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
  110. package/dist/side-panel/layer-panel/layer-configurator.js +130 -82
  111. package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
  112. package/dist/side-panel/layer-panel/layer-group-header.js +179 -0
  113. package/dist/side-panel/layer-panel/layer-list.d.ts +9 -4
  114. package/dist/side-panel/layer-panel/layer-list.js +197 -40
  115. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +2 -10
  116. package/dist/side-panel/panel-tab.d.ts +1 -3
  117. package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
  118. package/dist/side-panel/side-bar.d.ts +1 -6
  119. package/dist/side-panel.d.ts +1 -1
  120. package/dist/types.d.ts +2 -2
  121. package/dist/types.js +1 -1
  122. package/package.json +29 -35
  123. package/dist/map/layer-selector-panel.d.ts +0 -21
  124. package/dist/map/layer-selector-panel.js +0 -85
  125. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
  126. package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
@@ -23,9 +23,6 @@ declare function SidebarFactory(CollapseButton: ReturnType<typeof CollapseButton
23
23
  forceUpdate(callback?: (() => void) | undefined): void;
24
24
  readonly props: Readonly<SideBarProps>;
25
25
  state: Readonly<{}>;
26
- refs: {
27
- [key: string]: React.ReactInstance;
28
- };
29
26
  componentDidMount?(): void;
30
27
  shouldComponentUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): boolean;
31
28
  componentWillUnmount?(): void;
@@ -47,9 +44,6 @@ declare function SidebarFactory(CollapseButton: ReturnType<typeof CollapseButton
47
44
  forceUpdate(callback?: (() => void) | undefined): void;
48
45
  readonly props: Readonly<SideBarProps>;
49
46
  state: Readonly<{}>;
50
- refs: {
51
- [key: string]: React.ReactInstance;
52
- };
53
47
  componentDidMount?(): void;
54
48
  shouldComponentUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): boolean;
55
49
  componentWillUnmount?(): void;
@@ -71,6 +65,7 @@ declare function SidebarFactory(CollapseButton: ReturnType<typeof CollapseButton
71
65
  shouldShowCollapseButton: boolean;
72
66
  };
73
67
  contextType?: React.Context<any> | undefined;
68
+ propTypes?: any;
74
69
  };
75
70
  declare namespace SidebarFactory {
76
71
  var deps: (() => ({ onClick, isOpen }: CollapseButtonProps) => React.JSX.Element)[];
@@ -8,7 +8,7 @@ import InteractionManagerFactory from './side-panel/interaction-manager';
8
8
  import MapManagerFactory from './side-panel/map-manager';
9
9
  import CustomPanelsFactory from './side-panel/custom-panel';
10
10
  import { SidePanelProps } from './types';
11
- export declare const StyledSidePanelContent: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
11
+ export declare const StyledSidePanelContent: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
12
12
  /**
13
13
  * Vertical sidebar containing input components for the rendering layers
14
14
  */
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import React, { HTMLAttributes, PropsWithChildren } from 'react';
2
2
  import { MapStyle } from '@kepler.gl/reducers';
3
3
  import { Layer, LayerClassesType } from '@kepler.gl/layers';
4
- import { Filter, InteractionConfig, UiState } from '@kepler.gl/types';
4
+ import { Filter, InteractionConfig, UiState, LayerOrder } from '@kepler.gl/types';
5
5
  import { MapStyleActions, VisStateActions, MapStateActions, UIStateActions } from '@kepler.gl/actions';
6
6
  import { Datasets } from '@kepler.gl/table';
7
7
  export type BaseComponentProps = PropsWithChildren<HTMLAttributes<unknown>>;
@@ -20,7 +20,7 @@ export type SidePanelProps = {
20
20
  overlayBlending?: string;
21
21
  layers: Layer[];
22
22
  layerClasses: LayerClassesType;
23
- layerOrder: string[];
23
+ layerOrder: LayerOrder;
24
24
  mapStyle: MapStyle;
25
25
  mapInfo: {
26
26
  title?: string;
package/dist/types.js CHANGED
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0hUTUxBdHRyaWJ1dGVzLCBQcm9wc1dpdGhDaGlsZHJlbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge0xheWVyLCBMYXllckNsYXNzZXNUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0ZpbHRlciwgSW50ZXJhY3Rpb25Db25maWcsIFVpU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBNYXBTdHlsZUFjdGlvbnMsXG4gIFZpc1N0YXRlQWN0aW9ucyxcbiAgTWFwU3RhdGVBY3Rpb25zLFxuICBVSVN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbmV4cG9ydCB0eXBlIEJhc2VDb21wb25lbnRQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPEhUTUxBdHRyaWJ1dGVzPHVua25vd24+PjtcblxuZXhwb3J0IHR5cGUgU2lkZVBhbmVsSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbkNvbXBvbmVudDogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+O1xuICBjb21wb25lbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55Pjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpZGVQYW5lbFByb3BzID0ge1xuICBhcHBOYW1lOiBzdHJpbmc7XG4gIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgZmlsdGVyczogRmlsdGVyW107XG4gIGludGVyYWN0aW9uQ29uZmlnOiBJbnRlcmFjdGlvbkNvbmZpZztcbiAgbGF5ZXJCbGVuZGluZzogc3RyaW5nO1xuICBvdmVybGF5QmxlbmRpbmc/OiBzdHJpbmc7XG4gIGxheWVyczogTGF5ZXJbXTtcbiAgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlO1xuICBsYXllck9yZGVyOiBzdHJpbmdbXTtcbiAgbWFwU3R5bGU6IE1hcFN0eWxlO1xuICBtYXBJbmZvOiB7dGl0bGU/OiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nfTtcbiAgd2lkdGg6IG51bWJlcjtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xuICB1aVN0YXRlQWN0aW9uczogdHlwZW9mIFVJU3RhdGVBY3Rpb25zO1xuICB2aXNTdGF0ZUFjdGlvbnM6IHR5cGVvZiBWaXNTdGF0ZUFjdGlvbnM7XG4gIG1hcFN0YXRlQWN0aW9uczogdHlwZW9mIE1hcFN0YXRlQWN0aW9ucztcbiAgbWFwU3R5bGVBY3Rpb25zOiB0eXBlb2YgTWFwU3R5bGVBY3Rpb25zO1xuICB1aVN0YXRlOiBVaVN0YXRlO1xuICBhdmFpbGFibGVQcm92aWRlcnM6IHtbazogc3RyaW5nXToge2hhc1NoYXJlPzogYm9vbGVhbjsgaGFzU3RvcmFnZT86IGJvb2xlYW59fTtcbiAgbWFwU2F2ZWQ/OiBzdHJpbmcgfCBudWxsO1xuICBwYW5lbHM/OiBTaWRlUGFuZWxJdGVtW107XG4gIG9uU2F2ZU1hcD86ICgpID0+IHZvaWQ7XG4gIHZlcnNpb246IHN0cmluZztcbn07XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0hUTUxBdHRyaWJ1dGVzLCBQcm9wc1dpdGhDaGlsZHJlbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge0xheWVyLCBMYXllckNsYXNzZXNUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0ZpbHRlciwgSW50ZXJhY3Rpb25Db25maWcsIFVpU3RhdGUsIExheWVyT3JkZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5pbXBvcnQge1xuICBNYXBTdHlsZUFjdGlvbnMsXG4gIFZpc1N0YXRlQWN0aW9ucyxcbiAgTWFwU3RhdGVBY3Rpb25zLFxuICBVSVN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbmV4cG9ydCB0eXBlIEJhc2VDb21wb25lbnRQcm9wcyA9IFByb3BzV2l0aENoaWxkcmVuPEhUTUxBdHRyaWJ1dGVzPHVua25vd24+PjtcblxuZXhwb3J0IHR5cGUgU2lkZVBhbmVsSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgaWNvbkNvbXBvbmVudDogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+O1xuICBjb21wb25lbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55Pjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpZGVQYW5lbFByb3BzID0ge1xuICBhcHBOYW1lOiBzdHJpbmc7XG4gIGFwcFdlYnNpdGU6IHN0cmluZztcbiAgZmlsdGVyczogRmlsdGVyW107XG4gIGludGVyYWN0aW9uQ29uZmlnOiBJbnRlcmFjdGlvbkNvbmZpZztcbiAgbGF5ZXJCbGVuZGluZzogc3RyaW5nO1xuICBvdmVybGF5QmxlbmRpbmc/OiBzdHJpbmc7XG4gIGxheWVyczogTGF5ZXJbXTtcbiAgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlO1xuICBsYXllck9yZGVyOiBMYXllck9yZGVyO1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG4gIG1hcEluZm86IHt0aXRsZT86IHN0cmluZzsgZGVzY3JpcHRpb24/OiBzdHJpbmd9O1xuICB3aWR0aDogbnVtYmVyO1xuICBkYXRhc2V0czogRGF0YXNldHM7XG4gIHVpU3RhdGVBY3Rpb25zOiB0eXBlb2YgVUlTdGF0ZUFjdGlvbnM7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgbWFwU3RhdGVBY3Rpb25zOiB0eXBlb2YgTWFwU3RhdGVBY3Rpb25zO1xuICBtYXBTdHlsZUFjdGlvbnM6IHR5cGVvZiBNYXBTdHlsZUFjdGlvbnM7XG4gIHVpU3RhdGU6IFVpU3RhdGU7XG4gIGF2YWlsYWJsZVByb3ZpZGVyczoge1trOiBzdHJpbmddOiB7aGFzU2hhcmU/OiBib29sZWFuOyBoYXNTdG9yYWdlPzogYm9vbGVhbn19O1xuICBtYXBTYXZlZD86IHN0cmluZyB8IG51bGw7XG4gIHBhbmVscz86IFNpZGVQYW5lbEl0ZW1bXTtcbiAgb25TYXZlTWFwPzogKCkgPT4gdm9pZDtcbiAgdmVyc2lvbjogc3RyaW5nO1xufTtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/components",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.3.0-alpha.1",
4
+ "version": "3.3.0-alpha.2",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -39,23 +39,23 @@
39
39
  "@dnd-kit/sortable": "^8.0.0",
40
40
  "@dnd-kit/utilities": "^3.2.2",
41
41
  "@emotion/is-prop-valid": "^1.2.1",
42
- "@floating-ui/react": "0.25.1",
42
+ "@floating-ui/react": "^0.27.0",
43
43
  "@hubble.gl/core": "2.0.0-alpha.4",
44
44
  "@hubble.gl/react": "2.0.0-alpha.4",
45
- "@kepler.gl/actions": "3.3.0-alpha.1",
46
- "@kepler.gl/cloud-providers": "3.3.0-alpha.1",
47
- "@kepler.gl/common-utils": "3.3.0-alpha.1",
48
- "@kepler.gl/constants": "3.3.0-alpha.1",
49
- "@kepler.gl/effects": "3.3.0-alpha.1",
50
- "@kepler.gl/layers": "3.3.0-alpha.1",
51
- "@kepler.gl/localization": "3.3.0-alpha.1",
52
- "@kepler.gl/processors": "3.3.0-alpha.1",
53
- "@kepler.gl/reducers": "3.3.0-alpha.1",
54
- "@kepler.gl/schemas": "3.3.0-alpha.1",
55
- "@kepler.gl/styles": "3.3.0-alpha.1",
56
- "@kepler.gl/table": "3.3.0-alpha.1",
57
- "@kepler.gl/types": "3.3.0-alpha.1",
58
- "@kepler.gl/utils": "3.3.0-alpha.1",
45
+ "@kepler.gl/actions": "3.3.0-alpha.2",
46
+ "@kepler.gl/cloud-providers": "3.3.0-alpha.2",
47
+ "@kepler.gl/common-utils": "3.3.0-alpha.2",
48
+ "@kepler.gl/constants": "3.3.0-alpha.2",
49
+ "@kepler.gl/effects": "3.3.0-alpha.2",
50
+ "@kepler.gl/layers": "3.3.0-alpha.2",
51
+ "@kepler.gl/localization": "3.3.0-alpha.2",
52
+ "@kepler.gl/processors": "3.3.0-alpha.2",
53
+ "@kepler.gl/reducers": "3.3.0-alpha.2",
54
+ "@kepler.gl/schemas": "3.3.0-alpha.2",
55
+ "@kepler.gl/styles": "3.3.0-alpha.2",
56
+ "@kepler.gl/table": "3.3.0-alpha.2",
57
+ "@kepler.gl/types": "3.3.0-alpha.2",
58
+ "@kepler.gl/utils": "3.3.0-alpha.2",
59
59
  "@lexical/link": "^0.9.0",
60
60
  "@lexical/react": "^0.9.0",
61
61
  "@lexical/selection": "^0.9.0",
@@ -73,14 +73,11 @@
73
73
  "@types/d3-selection": "^3.0.2",
74
74
  "@types/exenv": "^1.2.0",
75
75
  "@types/lodash": "4.17.5",
76
- "@types/react": "^18.0.28",
76
+ "@types/react": "^19.0.0",
77
77
  "@types/react-copy-to-clipboard": "^5.0.2",
78
- "@types/react-dom": "^18.0.11",
79
- "@types/react-lifecycles-compat": "^3.0.1",
78
+ "@types/react-dom": "^19.0.0",
80
79
  "@types/react-modal": "^3.16.3",
81
- "@types/react-redux": "^7.1.23",
82
80
  "@types/react-virtualized": "^9.21.30",
83
- "@types/react-vis": "1.11.7",
84
81
  "@types/styled-components": "^5.1.32",
85
82
  "@vis.gl/react-maplibre": "8.1.1",
86
83
  "classnames": "^2.2.1",
@@ -105,25 +102,22 @@
105
102
  "moment": "^2.10.6",
106
103
  "moment-timezone": "^0.5.35",
107
104
  "prop-types": "^15.6.0",
108
- "react": "^18.2.0",
105
+ "react": "^19.0.0",
109
106
  "react-color": "^2.19.3",
110
- "react-copy-to-clipboard": "^5.0.2",
111
- "react-date-picker": "^10.2.0",
112
- "react-dom": "^18.2.0",
113
- "react-intl": "^6.3.0",
107
+ "react-copy-to-clipboard": "^5.1.1",
108
+ "react-date-picker": "^11.0.0",
109
+ "react-dom": "^19.0.0",
110
+ "react-intl": "^7.0.0",
114
111
  "react-json-pretty": "^2.2.0",
115
- "react-lifecycles-compat": "^3.0.4",
116
112
  "react-map-gl": "^8.1.1",
117
- "react-modal": "^3.12.1",
118
- "react-redux": "^8.0.5",
119
- "react-sortable-hoc": "^1.8.3",
120
- "react-time-picker": "^6.2.0",
113
+ "react-modal": "^3.16.3",
114
+ "react-redux": "^9.1.0",
115
+ "react-time-picker": "^7.0.0",
121
116
  "react-tooltip": "^4.2.17",
122
117
  "react-virtualized": "9.22.6",
123
- "react-vis": "1.11.7",
124
- "redux": "^4.2.1",
125
- "reselect": "^4.1.0",
126
- "styled-components": "6.1.8",
118
+ "redux": "^5.0.0",
119
+ "reselect": "^5.0.0",
120
+ "styled-components": "6.4.3",
127
121
  "suncalc": "^1.9.0",
128
122
  "viewport-mercator-project": "^6.0.0"
129
123
  },
@@ -1,21 +0,0 @@
1
- import React from 'react';
2
- import MapControlTooltipFactory from './map-control-tooltip';
3
- import MapControlPanelFactory from './map-control-panel';
4
- import { Layer } from '@kepler.gl/layers';
5
- import { MapControls } from '@kepler.gl/types';
6
- export type LayerSelectorPanelProps = {
7
- onMapToggleLayer: (layerId: string) => void;
8
- onToggleMapControl: (control: string) => void;
9
- layers: ReadonlyArray<Layer>;
10
- layersToRender: {
11
- [key: string]: boolean;
12
- };
13
- isSplit: boolean;
14
- mapControls: MapControls;
15
- readOnly: boolean;
16
- };
17
- declare function LayerSelectorPanelFactory(MapControlTooltip: ReturnType<typeof MapControlTooltipFactory>, MapControlPanel: ReturnType<typeof MapControlPanelFactory>): React.NamedExoticComponent<LayerSelectorPanelProps>;
18
- declare namespace LayerSelectorPanelFactory {
19
- var deps: (typeof MapControlPanelFactory | typeof MapControlTooltipFactory)[];
20
- }
21
- export default LayerSelectorPanelFactory;
@@ -1,85 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _classnames = _interopRequireDefault(require("classnames"));
11
- var _styledComponents = require("../common/styled-components");
12
- var _icons = require("../common/icons");
13
- var _mapLayerSelector = _interopRequireDefault(require("../common/map-layer-selector"));
14
- var _mapControlTooltip = _interopRequireDefault(require("./map-control-tooltip"));
15
- var _mapControlPanel = _interopRequireDefault(require("./map-control-panel"));
16
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
- // SPDX-License-Identifier: MIT
19
- // Copyright contributors to the kepler.gl project
20
-
21
- LayerSelectorPanelFactory.deps = [_mapControlTooltip["default"], _mapControlPanel["default"]];
22
- function LayerSelectorPanelFactory(MapControlTooltip, MapControlPanel) {
23
- /** @type {import('./layer-selector-panel').LayerSelectorPanelComponent} */
24
- var LayerSelectorPanel = function LayerSelectorPanel(_ref) {
25
- var onMapToggleLayer = _ref.onMapToggleLayer,
26
- onToggleMapControl = _ref.onToggleMapControl,
27
- layers = _ref.layers,
28
- layersToRender = _ref.layersToRender,
29
- isSplit = _ref.isSplit,
30
- mapControls = _ref.mapControls,
31
- readOnly = _ref.readOnly;
32
- var visibleLayers = (mapControls === null || mapControls === void 0 ? void 0 : mapControls.visibleLayers) || {};
33
- var _ref2 = visibleLayers || {},
34
- isActive = _ref2.active,
35
- show = _ref2.show,
36
- disableClose = _ref2.disableClose;
37
- var legendLayers = (0, _react.useMemo)(function () {
38
- return layers.filter(function (_ref3) {
39
- var config = _ref3.config;
40
- return config.isVisible;
41
- }).map(function (_ref4) {
42
- var id = _ref4.id,
43
- config = _ref4.config;
44
- return {
45
- id: id,
46
- name: config.label,
47
- // layer
48
- isVisible: layersToRender[id]
49
- };
50
- });
51
- }, [layers, layersToRender]);
52
- var isVisible = (0, _react.useMemo)(function () {
53
- return isSplit && show && readOnly !== true;
54
- }, [isSplit, show, readOnly]);
55
- var onToggleMenuPanel = (0, _react.useCallback)(function (event) {
56
- event.preventDefault();
57
- onToggleMapControl('visibleLayers');
58
- }, [onToggleMapControl]);
59
- return isVisible ? !isActive ? /*#__PURE__*/_react["default"].createElement(_styledComponents.MapControlButton, {
60
- key: 1,
61
- onClick: onToggleMenuPanel,
62
- className: (0, _classnames["default"])('map-control-button', 'toggle-layer', {
63
- isActive: isActive
64
- }),
65
- "data-tip": true,
66
- "data-for": "toggle-layer"
67
- }, /*#__PURE__*/_react["default"].createElement(_icons.Layers, {
68
- height: "16px"
69
- }), /*#__PURE__*/_react["default"].createElement(MapControlTooltip, {
70
- id: "toggle-layer",
71
- message: isActive ? 'tooltip.hideLayerPanel' : 'tooltip.showLayerPanel'
72
- })) : /*#__PURE__*/_react["default"].createElement(MapControlPanel, {
73
- header: "header.visibleLayers",
74
- onClick: onToggleMenuPanel,
75
- disableClose: disableClose
76
- }, /*#__PURE__*/_react["default"].createElement(_mapLayerSelector["default"], {
77
- layers: legendLayers,
78
- onMapToggleLayer: onMapToggleLayer
79
- })) : null;
80
- };
81
- LayerSelectorPanel.displayName = 'LayerSelectorPanel';
82
- return /*#__PURE__*/_react["default"].memo(LayerSelectorPanel);
83
- }
84
- var _default = exports["default"] = LayerSelectorPanelFactory;
85
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pY29ucyIsIl9tYXBMYXllclNlbGVjdG9yIiwiX21hcENvbnRyb2xUb29sdGlwIiwiX21hcENvbnRyb2xQYW5lbCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkxheWVyU2VsZWN0b3JQYW5lbEZhY3RvcnkiLCJkZXBzIiwiTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IiwiTWFwQ29udHJvbFBhbmVsRmFjdG9yeSIsIk1hcENvbnRyb2xUb29sdGlwIiwiTWFwQ29udHJvbFBhbmVsIiwiTGF5ZXJTZWxlY3RvclBhbmVsIiwiX3JlZiIsIm9uTWFwVG9nZ2xlTGF5ZXIiLCJvblRvZ2dsZU1hcENvbnRyb2wiLCJsYXllcnMiLCJsYXllcnNUb1JlbmRlciIsImlzU3BsaXQiLCJtYXBDb250cm9scyIsInJlYWRPbmx5IiwidmlzaWJsZUxheWVycyIsIl9yZWYyIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJzaG93IiwiZGlzYWJsZUNsb3NlIiwibGVnZW5kTGF5ZXJzIiwidXNlTWVtbyIsImZpbHRlciIsIl9yZWYzIiwiY29uZmlnIiwiaXNWaXNpYmxlIiwibWFwIiwiX3JlZjQiLCJpZCIsIm5hbWUiLCJsYWJlbCIsIm9uVG9nZ2xlTWVudVBhbmVsIiwidXNlQ2FsbGJhY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIk1hcENvbnRyb2xCdXR0b24iLCJrZXkiLCJvbkNsaWNrIiwiY2xhc3NOYW1lIiwiY2xhc3NuYW1lcyIsIkxheWVycyIsImhlaWdodCIsIm1lc3NhZ2UiLCJoZWFkZXIiLCJkaXNwbGF5TmFtZSIsIlJlYWN0IiwibWVtbyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAvbGF5ZXItc2VsZWN0b3ItcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IHtNYXBDb250cm9sQnV0dG9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtMYXllcnN9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTWFwTGF5ZXJTZWxlY3RvciBmcm9tICcuLi9jb21tb24vbWFwLWxheWVyLXNlbGVjdG9yJztcbmltcG9ydCBNYXBDb250cm9sVG9vbHRpcEZhY3RvcnkgZnJvbSAnLi9tYXAtY29udHJvbC10b29sdGlwJztcbmltcG9ydCBNYXBDb250cm9sUGFuZWxGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtcGFuZWwnO1xuaW1wb3J0IHtMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtNYXBDb250cm9sSXRlbSwgTWFwQ29udHJvbHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5MYXllclNlbGVjdG9yUGFuZWxGYWN0b3J5LmRlcHMgPSBbTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5LCBNYXBDb250cm9sUGFuZWxGYWN0b3J5XTtcblxuZXhwb3J0IHR5cGUgTGF5ZXJTZWxlY3RvclBhbmVsUHJvcHMgPSB7XG4gIG9uTWFwVG9nZ2xlTGF5ZXI6IChsYXllcklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlTWFwQ29udHJvbDogKGNvbnRyb2w6IHN0cmluZykgPT4gdm9pZDtcbiAgbGF5ZXJzOiBSZWFkb25seUFycmF5PExheWVyPjtcbiAgbGF5ZXJzVG9SZW5kZXI6IHtba2V5OiBzdHJpbmddOiBib29sZWFufTtcbiAgaXNTcGxpdDogYm9vbGVhbjtcbiAgbWFwQ29udHJvbHM6IE1hcENvbnRyb2xzO1xuICByZWFkT25seTogYm9vbGVhbjtcbn07XG5cbmZ1bmN0aW9uIExheWVyU2VsZWN0b3JQYW5lbEZhY3RvcnkoXG4gIE1hcENvbnRyb2xUb29sdGlwOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sVG9vbHRpcEZhY3Rvcnk+LFxuICBNYXBDb250cm9sUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xQYW5lbEZhY3Rvcnk+XG4pIHtcbiAgLyoqIEB0eXBlIHtpbXBvcnQoJy4vbGF5ZXItc2VsZWN0b3ItcGFuZWwnKS5MYXllclNlbGVjdG9yUGFuZWxDb21wb25lbnR9ICovXG4gIGNvbnN0IExheWVyU2VsZWN0b3JQYW5lbDogUmVhY3QuRkM8TGF5ZXJTZWxlY3RvclBhbmVsUHJvcHM+ID0gKHtcbiAgICBvbk1hcFRvZ2dsZUxheWVyLFxuICAgIG9uVG9nZ2xlTWFwQ29udHJvbCxcbiAgICBsYXllcnMsXG4gICAgbGF5ZXJzVG9SZW5kZXIsXG4gICAgaXNTcGxpdCxcbiAgICBtYXBDb250cm9scyxcbiAgICByZWFkT25seVxuICB9KSA9PiB7XG4gICAgY29uc3QgdmlzaWJsZUxheWVycyA9IG1hcENvbnRyb2xzPy52aXNpYmxlTGF5ZXJzIHx8ICh7fSBhcyBNYXBDb250cm9sSXRlbSk7XG4gICAgY29uc3Qge2FjdGl2ZTogaXNBY3RpdmUsIHNob3csIGRpc2FibGVDbG9zZX0gPSB2aXNpYmxlTGF5ZXJzIHx8IHt9O1xuXG4gICAgY29uc3QgbGVnZW5kTGF5ZXJzID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGxheWVyc1xuICAgICAgICAgIC5maWx0ZXIoKHtjb25maWd9KSA9PiBjb25maWcuaXNWaXNpYmxlKVxuICAgICAgICAgIC5tYXAoKHtpZCwgY29uZmlnfSkgPT4gKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgbmFtZTogY29uZmlnLmxhYmVsLFxuICAgICAgICAgICAgLy8gbGF5ZXJcbiAgICAgICAgICAgIGlzVmlzaWJsZTogbGF5ZXJzVG9SZW5kZXJbaWRdXG4gICAgICAgICAgfSkpLFxuICAgICAgW2xheWVycywgbGF5ZXJzVG9SZW5kZXJdXG4gICAgKTtcblxuICAgIGNvbnN0IGlzVmlzaWJsZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBpc1NwbGl0ICYmIHNob3cgJiYgcmVhZE9ubHkgIT09IHRydWUsXG4gICAgICBbaXNTcGxpdCwgc2hvdywgcmVhZE9ubHldXG4gICAgKTtcblxuICAgIGNvbnN0IG9uVG9nZ2xlTWVudVBhbmVsID0gdXNlQ2FsbGJhY2soXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbCgndmlzaWJsZUxheWVycycpO1xuICAgICAgfSxcbiAgICAgIFtvblRvZ2dsZU1hcENvbnRyb2xdXG4gICAgKTtcblxuICAgIHJldHVybiBpc1Zpc2libGUgPyAoXG4gICAgICAhaXNBY3RpdmUgPyAoXG4gICAgICAgIDxNYXBDb250cm9sQnV0dG9uXG4gICAgICAgICAga2V5PXsxfVxuICAgICAgICAgIG9uQ2xpY2s9e29uVG9nZ2xlTWVudVBhbmVsfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnbWFwLWNvbnRyb2wtYnV0dG9uJywgJ3RvZ2dsZS1sYXllcicsIHtpc0FjdGl2ZX0pfVxuICAgICAgICAgIGRhdGEtdGlwXG4gICAgICAgICAgZGF0YS1mb3I9XCJ0b2dnbGUtbGF5ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPExheWVycyBoZWlnaHQ9XCIxNnB4XCIgLz5cbiAgICAgICAgICA8TWFwQ29udHJvbFRvb2x0aXBcbiAgICAgICAgICAgIGlkPVwidG9nZ2xlLWxheWVyXCJcbiAgICAgICAgICAgIG1lc3NhZ2U9e2lzQWN0aXZlID8gJ3Rvb2x0aXAuaGlkZUxheWVyUGFuZWwnIDogJ3Rvb2x0aXAuc2hvd0xheWVyUGFuZWwnfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTWFwQ29udHJvbEJ1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIDxNYXBDb250cm9sUGFuZWxcbiAgICAgICAgICBoZWFkZXI9XCJoZWFkZXIudmlzaWJsZUxheWVyc1wiXG4gICAgICAgICAgb25DbGljaz17b25Ub2dnbGVNZW51UGFuZWx9XG4gICAgICAgICAgZGlzYWJsZUNsb3NlPXtkaXNhYmxlQ2xvc2V9XG4gICAgICAgID5cbiAgICAgICAgICA8TWFwTGF5ZXJTZWxlY3RvciBsYXllcnM9e2xlZ2VuZExheWVyc30gb25NYXBUb2dnbGVMYXllcj17b25NYXBUb2dnbGVMYXllcn0gLz5cbiAgICAgICAgPC9NYXBDb250cm9sUGFuZWw+XG4gICAgICApXG4gICAgKSA6IG51bGw7XG4gIH07XG5cbiAgTGF5ZXJTZWxlY3RvclBhbmVsLmRpc3BsYXlOYW1lID0gJ0xheWVyU2VsZWN0b3JQYW5lbCc7XG5cbiAgcmV0dXJuIFJlYWN0Lm1lbW8oTGF5ZXJTZWxlY3RvclBhbmVsKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF5ZXJTZWxlY3RvclBhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxpQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElB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
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { ZoomStopsConfig } from '@kepler.gl/types';
3
- type Props = {
4
- config: ZoomStopsConfig;
5
- property: string;
6
- label: string;
7
- unit: string;
8
- onChange: (update: Record<string, ZoomStopsConfig>) => void;
9
- };
10
- declare const VisConfigByZoomInput: React.FC<Props>;
11
- export default VisConfigByZoomInput;
@@ -1,220 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
- var _classnames = _interopRequireDefault(require("classnames"));
14
- var _react = _interopRequireWildcard(require("react"));
15
- var _reactSortableHoc = require("react-sortable-hoc");
16
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
- var _commonUtils = require("@kepler.gl/common-utils");
18
- var _common = require("../../common");
19
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // SPDX-License-Identifier: MIT
20
- // Copyright contributors to the kepler.gl project
21
- // @ts-expect-error - react-sortable-hoc libdef does not match true exports
22
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
23
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
24
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
- var SliderInput = (0, _styledComponents["default"])(_common.Input)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: 48px;\n margin: 0 4px 0 8px;\n font-size: ", ";\n"])), function (props) {
27
- return props.theme.list1Size;
28
- });
29
- var StyledInputRow = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n width: 100%;\n justify-content: space-between;\n .layer__drag-handle {\n visibility: ", ";\n }\n .side-panel-panel__label {\n margin-bottom: 0;\n text-transform: none;\n }\n"])), function (props) {
30
- return props.isEditing ? 'visible' : 'hidden';
31
- });
32
- var StyledTrash = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: flex;\n align-items: center;\n margin-left: 8px;\n visibility: ", ";\n\n &:hover {\n cursor: pointer;\n color: ", ";\n }\n"])), function (props) {
33
- return props.theme.subtextColor;
34
- }, function (props) {
35
- return props.isEditing ? 'visible' : 'hidden';
36
- }, function (props) {
37
- return props.theme.subtextColorActive;
38
- });
39
- var StyledDragHandle = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n opacity: 0;\n"])));
40
- var dragHandleActive = (0, _styledComponents.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n .layer__drag-handle {\n color: ", ";\n opacity: 1;\n cursor: move;\n }\n"])), function (props) {
41
- return props.theme.textColorHl;
42
- });
43
- var StyledSortableItem = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n padding: 4px 0;\n z-index: ", ";\n margin-left: -6px;\n\n &:not(.sorting) {\n &:hover {\n ", ";\n }\n }\n\n &.sorting-colors {\n background-color: ", ";\n ", ";\n }\n"])), function (props) {
44
- return props.theme.dropdownWrapperZ + 1;
45
- }, dragHandleActive, function (props) {
46
- return props.theme.panelBackgroundHover;
47
- }, dragHandleActive);
48
- var SortableContainer = (0, _reactSortableHoc.sortableContainer)(function (_ref) {
49
- var children = _ref.children;
50
- return /*#__PURE__*/_react["default"].createElement("div", null, children);
51
- });
52
- var DragHandle = (0, _reactSortableHoc.sortableHandle)(function (_ref2) {
53
- var className = _ref2.className,
54
- children = _ref2.children;
55
- return /*#__PURE__*/_react["default"].createElement(StyledDragHandle, {
56
- className: className
57
- }, children);
58
- });
59
- var SortableItem = (0, _reactSortableHoc.sortableElement)(function (_ref3) {
60
- var children = _ref3.children,
61
- isSorting = _ref3.isSorting;
62
- return /*#__PURE__*/_react["default"].createElement(StyledSortableItem, {
63
- className: (0, _classnames["default"])('custom-palette__sortable-items', {
64
- sorting: isSorting
65
- })
66
- }, children);
67
- });
68
- function stringToNumber(val) {
69
- return val === '' ? null : Number(val);
70
- }
71
- var InputRow = function InputRow(_ref4) {
72
- var idx = _ref4.idx,
73
- stop = _ref4.stop,
74
- value = _ref4.value,
75
- isSorting = _ref4.isSorting,
76
- isEditing = _ref4.isEditing,
77
- _onChange = _ref4.onChange,
78
- onRemove = _ref4.onRemove;
79
- return /*#__PURE__*/_react["default"].createElement(SortableItem, {
80
- key: idx,
81
- index: idx,
82
- isSorting: isSorting
83
- }, /*#__PURE__*/_react["default"].createElement(StyledInputRow, {
84
- isEditing: isEditing
85
- }, /*#__PURE__*/_react["default"].createElement(DragHandle, {
86
- className: "layer__drag-handle"
87
- }, /*#__PURE__*/_react["default"].createElement(_common.Icons.VertDots, {
88
- height: "20px"
89
- })), /*#__PURE__*/_react["default"].createElement(_common.PanelLabel, null, "zoom"), /*#__PURE__*/_react["default"].createElement(SliderInput, {
90
- className: "vis-config-zoom__input__stop",
91
- type: "number",
92
- id: "".concat(idx, "-stop"),
93
- key: "".concat(idx, "-stop"),
94
- value: stop,
95
- onChange: function onChange(e) {
96
- return _onChange([stringToNumber(e.target.value), value]);
97
- },
98
- disabled: !isEditing
99
- }), /*#__PURE__*/_react["default"].createElement(SliderInput, {
100
- className: "vis-config-zoom__input__value",
101
- type: "number",
102
- id: "".concat(idx, "-value"),
103
- key: "".concat(idx, "-value"),
104
- value: value,
105
- onChange: function onChange(e) {
106
- return _onChange([stop, stringToNumber(e.target.value)]);
107
- },
108
- disabled: !isEditing
109
- }), /*#__PURE__*/_react["default"].createElement(_common.PanelLabel, null, "px"), /*#__PURE__*/_react["default"].createElement(StyledTrash, {
110
- isEditing: isEditing
111
- }, /*#__PURE__*/_react["default"].createElement(_common.Icons.Trash, {
112
- onClick: onRemove,
113
- height: "16px"
114
- }))));
115
- };
116
- function insertStop(stops) {
117
- var newStops = null;
118
- var i = 0;
119
- while (!newStops && i < stops.length) {
120
- if (stops[i][0] + 1 < stops[i + 1][0]) {
121
- var st = stops[i][0] + 1;
122
- var value = (stops[i][1] + stops[i + 1][1]) / 2;
123
- newStops = [].concat((0, _toConsumableArray2["default"])(stops.slice(0, i + 1)), [[st, value]], (0, _toConsumableArray2["default"])(stops.slice(i + 1)));
124
- } else {
125
- i++;
126
- }
127
- }
128
- if (!newStops) {
129
- newStops = [].concat((0, _toConsumableArray2["default"])(stops.slice(0, i)), [[stops[i][0], (stops[i][1] + stops[i + 1][1]) / 2]], (0, _toConsumableArray2["default"])(stops.slice(i)));
130
- }
131
- return newStops;
132
- }
133
- var VisConfigByZoomInputContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n margin: 8px 8px 12px 8px;\n\n .bottom-action {\n margin-top: 8px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n }\n\n .bottom-action.editing {\n justify-content: space-between;\n }\n"])), function (props) {
134
- return props.isEditing ? props.theme.AZURE950 : 'transparent';
135
- });
136
- var VisConfigByZoomInput = function VisConfigByZoomInput(_ref5) {
137
- var _ref5$config = _ref5.config,
138
- config = _ref5$config === void 0 ? {} : _ref5$config,
139
- property = _ref5.property,
140
- onChange = _ref5.onChange;
141
- var _useState = (0, _react.useState)(config.stops || []),
142
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
143
- stopsState = _useState2[0],
144
- setStops = _useState2[1];
145
- var _useState3 = (0, _react.useState)(false),
146
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
147
- isSorting = _useState4[0],
148
- toggleSorting = _useState4[1];
149
- var _useState5 = (0, _react.useState)(false),
150
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
151
- isEditing = _useState6[0],
152
- toggleEditing = _useState6[1];
153
- var onConfirm = (0, _react.useCallback)(function () {
154
- onChange((0, _defineProperty2["default"])({}, property, _objectSpread(_objectSpread({}, config), {}, {
155
- stops: stopsState
156
- })));
157
- toggleEditing(false);
158
- }, [property, config, stopsState, onChange, toggleEditing]);
159
- var addStop = (0, _react.useCallback)(function () {
160
- return setStops(insertStop(stopsState));
161
- }, [setStops, stopsState]);
162
- var removeStop = (0, _react.useCallback)(function (i) {
163
- return setStops([].concat((0, _toConsumableArray2["default"])(stopsState.slice(0, i)), (0, _toConsumableArray2["default"])(stopsState.slice(i + 1))));
164
- }, [setStops, stopsState]);
165
- var onSortEnd = (0, _react.useCallback)(function (_ref6) {
166
- var oldIndex = _ref6.oldIndex,
167
- newIndex = _ref6.newIndex;
168
- var newStopsState = (0, _commonUtils.arrayMove)(stopsState, oldIndex, newIndex);
169
- setStops(newStopsState);
170
- toggleSorting(false);
171
- }, [stopsState, setStops, toggleSorting]);
172
- var onSortStart = (0, _react.useCallback)(function () {
173
- toggleSorting(true);
174
- }, [toggleSorting]);
175
- return /*#__PURE__*/_react["default"].createElement(VisConfigByZoomInputContainer, {
176
- isEditing: isEditing
177
- }, /*#__PURE__*/_react["default"].createElement(SortableContainer, {
178
- className: "custom-palette-container",
179
- onSortEnd: onSortEnd,
180
- onSortStart: onSortStart,
181
- lockAxis: "y",
182
- helperClass: "sorting-colors",
183
- useDragHandle: true
184
- }, stopsState.map(function (stop, idx) {
185
- return /*#__PURE__*/_react["default"].createElement(InputRow, {
186
- isEditing: isEditing,
187
- key: "input-".concat(idx),
188
- idx: idx,
189
- stop: stop[0],
190
- value: stop[1],
191
- isSorting: isSorting,
192
- onChange: function onChange(v) {
193
- return setStops(Object.assign((0, _toConsumableArray2["default"])(stopsState || []), (0, _defineProperty2["default"])({}, idx, v)));
194
- },
195
- onRemove: function onRemove() {
196
- return removeStop(idx);
197
- }
198
- });
199
- })), isEditing ? /*#__PURE__*/_react["default"].createElement("div", {
200
- className: "bottom-action editing"
201
- }, /*#__PURE__*/_react["default"].createElement(_common.Button, {
202
- secondary: true,
203
- onClick: addStop,
204
- small: true
205
- }, /*#__PURE__*/_react["default"].createElement(_common.Icons.Add, {
206
- height: "16px"
207
- }), " Add Stop"), /*#__PURE__*/_react["default"].createElement(_common.Button, {
208
- onClick: onConfirm,
209
- small: true
210
- }, "Confirm")) : /*#__PURE__*/_react["default"].createElement("div", {
211
- className: "bottom-action"
212
- }, /*#__PURE__*/_react["default"].createElement(_common.Button, {
213
- onClick: function onClick() {
214
- return toggleEditing(true);
215
- },
216
- small: true
217
- }, "Edit")));
218
- };
219
- var _default = exports["default"] = VisConfigByZoomInput;
220
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVhY3RTb3J0YWJsZUhvYyIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2NvbW1vblV0aWxzIiwiX2NvbW1vbiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIlNsaWRlcklucHV0Iiwic3R5bGVkIiwiSW5wdXQiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJsaXN0MVNpemUiLCJTdHlsZWRJbnB1dFJvdyIsImRpdiIsImlzRWRpdGluZyIsIlN0eWxlZFRyYXNoIiwic3VidGV4dENvbG9yIiwic3VidGV4dENvbG9yQWN0aXZlIiwiU3R5bGVkRHJhZ0hhbmRsZSIsImRyYWdIYW5kbGVBY3RpdmUiLCJjc3MiLCJ0ZXh0Q29sb3JIbCIsIlN0eWxlZFNvcnRhYmxlSXRlbSIsImRyb3Bkb3duV3JhcHBlcloiLCJwYW5lbEJhY2tncm91bmRIb3ZlciIsIlNvcnRhYmxlQ29udGFpbmVyIiwic29ydGFibGVDb250YWluZXIiLCJfcmVmIiwiY2hpbGRyZW4iLCJjcmVhdGVFbGVtZW50IiwiRHJhZ0hhbmRsZSIsInNvcnRhYmxlSGFuZGxlIiwiX3JlZjIiLCJjbGFzc05hbWUiLCJTb3J0YWJsZUl0ZW0iLCJzb3J0YWJsZUVsZW1lbnQiLCJfcmVmMyIsImlzU29ydGluZyIsImNsYXNzbmFtZXMiLCJzb3J0aW5nIiwic3RyaW5nVG9OdW1iZXIiLCJ2YWwiLCJOdW1iZXIiLCJJbnB1dFJvdyIsIl9yZWY0IiwiaWR4Iiwic3RvcCIsInZhbHVlIiwib25DaGFuZ2UiLCJvblJlbW92ZSIsImtleSIsImluZGV4IiwiSWNvbnMiLCJWZXJ0RG90cyIsImhlaWdodCIsIlBhbmVsTGFiZWwiLCJ0eXBlIiwiaWQiLCJjb25jYXQiLCJ0YXJnZXQiLCJkaXNhYmxlZCIsIlRyYXNoIiwib25DbGljayIsImluc2VydFN0b3AiLCJzdG9wcyIsIm5ld1N0b3BzIiwic3QiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwic2xpY2UiLCJWaXNDb25maWdCeVpvb21JbnB1dENvbnRhaW5lciIsIkFaVVJFOTUwIiwiVmlzQ29uZmlnQnlab29tSW5wdXQiLCJfcmVmNSIsIl9yZWY1JGNvbmZpZyIsImNvbmZpZyIsInByb3BlcnR5IiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic3RvcHNTdGF0ZSIsInNldFN0b3BzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJ0b2dnbGVTb3J0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b2dnbGVFZGl0aW5nIiwib25Db25maXJtIiwidXNlQ2FsbGJhY2siLCJhZGRTdG9wIiwicmVtb3ZlU3RvcCIsIm9uU29ydEVuZCIsIl9yZWY2Iiwib2xkSW5kZXgiLCJuZXdJbmRleCIsIm5ld1N0b3BzU3RhdGUiLCJhcnJheU1vdmUiLCJvblNvcnRTdGFydCIsImxvY2tBeGlzIiwiaGVscGVyQ2xhc3MiLCJ1c2VEcmFnSGFuZGxlIiwibWFwIiwidiIsImFzc2lnbiIsIkJ1dHRvbiIsInNlY29uZGFyeSIsInNtYWxsIiwiQWRkIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvcmFkaXVzLWJ5LXpvb20taW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG4vLyBAdHMtZXhwZWN0LWVycm9yIC0gcmVhY3Qtc29ydGFibGUtaG9jIGxpYmRlZiBkb2VzIG5vdCBtYXRjaCB0cnVlIGV4cG9ydHNcbmltcG9ydCB7c29ydGFibGVDb250YWluZXIsIHNvcnRhYmxlRWxlbWVudCwgc29ydGFibGVIYW5kbGV9IGZyb20gJ3JlYWN0LXNvcnRhYmxlLWhvYyc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7Wm9vbVN0b3BzLCBab29tU3RvcHNDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHthcnJheU1vdmV9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuaW1wb3J0IHtJY29ucywgSW5wdXQsIFBhbmVsTGFiZWwsIEJ1dHRvbn0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuY29uc3QgU2xpZGVySW5wdXQgPSBzdHlsZWQoSW5wdXQpYFxuICB3aWR0aDogNDhweDtcbiAgbWFyZ2luOiAwIDRweCAwIDhweDtcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxpc3QxU2l6ZX07XG5gO1xuXG50eXBlIFN0eWxlZElucHV0Um93UHJvcHMgPSB7XG4gIGlzRWRpdGluZz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRJbnB1dFJvdyA9IHN0eWxlZC5kaXY8U3R5bGVkSW5wdXRSb3dQcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIC5sYXllcl9fZHJhZy1oYW5kbGUge1xuICAgIHZpc2liaWxpdHk6ICR7cHJvcHMgPT4gKHByb3BzLmlzRWRpdGluZyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKX07XG4gIH1cbiAgLnNpZGUtcGFuZWwtcGFuZWxfX2xhYmVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICB9XG5gO1xuXG50eXBlIFN0eWxlZFRyYXNoUHJvcHMgPSB7XG4gIGlzRWRpdGluZz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBTdHlsZWRUcmFzaCA9IHN0eWxlZC5kaXY8U3R5bGVkVHJhc2hQcm9wcz5gXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvcn07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIHZpc2liaWxpdHk6ICR7cHJvcHMgPT4gKHByb3BzLmlzRWRpdGluZyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKX07XG5cbiAgJjpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnN1YnRleHRDb2xvckFjdGl2ZX07XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZERyYWdIYW5kbGUgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvcGFjaXR5OiAwO1xuYDtcblxuY29uc3QgZHJhZ0hhbmRsZUFjdGl2ZSA9IGNzc2BcbiAgLmxheWVyX19kcmFnLWhhbmRsZSB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIG9wYWNpdHk6IDE7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRTb3J0YWJsZUl0ZW0gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA0cHggMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJaICsgMX07XG4gIG1hcmdpbi1sZWZ0OiAtNnB4O1xuXG4gICY6bm90KC5zb3J0aW5nKSB7XG4gICAgJjpob3ZlciB7XG4gICAgICAke2RyYWdIYW5kbGVBY3RpdmV9O1xuICAgIH1cbiAgfVxuXG4gICYuc29ydGluZy1jb2xvcnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kSG92ZXJ9O1xuICAgICR7ZHJhZ0hhbmRsZUFjdGl2ZX07XG4gIH1cbmA7XG5cbmNvbnN0IFNvcnRhYmxlQ29udGFpbmVyID0gc29ydGFibGVDb250YWluZXIoKHtjaGlsZHJlbn0pID0+IDxkaXY+e2NoaWxkcmVufTwvZGl2Pik7XG5jb25zdCBEcmFnSGFuZGxlID0gc29ydGFibGVIYW5kbGUoKHtjbGFzc05hbWUsIGNoaWxkcmVufSkgPT4gKFxuICA8U3R5bGVkRHJhZ0hhbmRsZSBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2NoaWxkcmVufTwvU3R5bGVkRHJhZ0hhbmRsZT5cbikpO1xuY29uc3QgU29ydGFibGVJdGVtID0gc29ydGFibGVFbGVtZW50KCh7Y2hpbGRyZW4sIGlzU29ydGluZ30pID0+IChcbiAgPFN0eWxlZFNvcnRhYmxlSXRlbVxuICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnY3VzdG9tLXBhbGV0dGVfX3NvcnRhYmxlLWl0ZW1zJywge3NvcnRpbmc6IGlzU29ydGluZ30pfVxuICA+XG4gICAge2NoaWxkcmVufVxuICA8L1N0eWxlZFNvcnRhYmxlSXRlbT5cbikpO1xuXG5mdW5jdGlvbiBzdHJpbmdUb051bWJlcih2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PT0gJycgPyBudWxsIDogTnVtYmVyKHZhbCk7XG59XG5cbnR5cGUgSW5wdXRSb3dQcm9wcyA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIHN0b3A6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgaXNTb3J0aW5nOiBib29sZWFuO1xuICBpc0VkaXRpbmc6IGJvb2xlYW47XG4gIG9uQ2hhbmdlOiAodmFsdWU6IFtudW1iZXIgfCBudWxsLCBudW1iZXIgfCBudWxsXSkgPT4gdm9pZDtcbiAgb25SZW1vdmU6ICgpID0+IHZvaWQ7XG59O1xuY29uc3QgSW5wdXRSb3c6IFJlYWN0LkZDPElucHV0Um93UHJvcHM+ID0gKHtcbiAgaWR4LFxuICBzdG9wLFxuICB2YWx1ZSxcbiAgaXNTb3J0aW5nLFxuICBpc0VkaXRpbmcsXG4gIG9uQ2hhbmdlLFxuICBvblJlbW92ZVxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTb3J0YWJsZUl0ZW0ga2V5PXtpZHh9IGluZGV4PXtpZHh9IGlzU29ydGluZz17aXNTb3J0aW5nfT5cbiAgICAgIDxTdHlsZWRJbnB1dFJvdyBpc0VkaXRpbmc9e2lzRWRpdGluZ30+XG4gICAgICAgIDxEcmFnSGFuZGxlIGNsYXNzTmFtZT1cImxheWVyX19kcmFnLWhhbmRsZVwiPlxuICAgICAgICAgIDxJY29ucy5WZXJ0RG90cyBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9EcmFnSGFuZGxlPlxuICAgICAgICA8UGFuZWxMYWJlbD56b29tPC9QYW5lbExhYmVsPlxuICAgICAgICA8U2xpZGVySW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJ2aXMtY29uZmlnLXpvb21fX2lucHV0X19zdG9wXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBpZD17YCR7aWR4fS1zdG9wYH1cbiAgICAgICAgICBrZXk9e2Ake2lkeH0tc3RvcGB9XG4gICAgICAgICAgdmFsdWU9e3N0b3B9XG4gICAgICAgICAgb25DaGFuZ2U9e2UgPT4gb25DaGFuZ2UoW3N0cmluZ1RvTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSwgdmFsdWVdKX1cbiAgICAgICAgICBkaXNhYmxlZD17IWlzRWRpdGluZ31cbiAgICAgICAgLz5cbiAgICAgICAgPFNsaWRlcklucHV0XG4gICAgICAgICAgY2xhc3NOYW1lPVwidmlzLWNvbmZpZy16b29tX19pbnB1dF9fdmFsdWVcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIGlkPXtgJHtpZHh9LXZhbHVlYH1cbiAgICAgICAgICBrZXk9e2Ake2lkeH0tdmFsdWVgfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17ZSA9PiBvbkNoYW5nZShbc3RvcCwgc3RyaW5nVG9OdW1iZXIoZS50YXJnZXQudmFsdWUpXSl9XG4gICAgICAgICAgZGlzYWJsZWQ9eyFpc0VkaXRpbmd9XG4gICAgICAgIC8+XG4gICAgICAgIDxQYW5lbExhYmVsPnB4PC9QYW5lbExhYmVsPlxuICAgICAgICA8U3R5bGVkVHJhc2ggaXNFZGl0aW5nPXtpc0VkaXRpbmd9PlxuICAgICAgICAgIDxJY29ucy5UcmFzaCBvbkNsaWNrPXtvblJlbW92ZX0gaGVpZ2h0PVwiMTZweFwiIC8+XG4gICAgICAgIDwvU3R5bGVkVHJhc2g+XG4gICAgICA8L1N0eWxlZElucHV0Um93PlxuICAgIDwvU29ydGFibGVJdGVtPlxuICApO1xufTtcblxuZnVuY3Rpb24gaW5zZXJ0U3RvcChzdG9wczogWm9vbVN0b3BzKTogWm9vbVN0b3BzIHtcbiAgbGV0IG5ld1N0b3BzOiBab29tU3RvcHMgfCBudWxsID0gbnVsbDtcbiAgbGV0IGkgPSAwO1xuICB3aGlsZSAoIW5ld1N0b3BzICYmIGkgPCBzdG9wcy5sZW5ndGgpIHtcbiAgICBpZiAoc3RvcHNbaV1bMF0gKyAxIDwgc3RvcHNbaSArIDFdWzBdKSB7XG4gICAgICBjb25zdCBzdCA9IHN0b3BzW2ldWzBdICsgMTtcbiAgICAgIGNvbnN0IHZhbHVlID0gKHN0b3BzW2ldWzFdICsgc3RvcHNbaSArIDFdWzFdKSAvIDI7XG4gICAgICBuZXdTdG9wcyA9IFsuLi5zdG9wcy5zbGljZSgwLCBpICsgMSksIFtzdCwgdmFsdWVdLCAuLi5zdG9wcy5zbGljZShpICsgMSldO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFuZXdTdG9wcykge1xuICAgIG5ld1N0b3BzID0gW1xuICAgICAgLi4uc3RvcHMuc2xpY2UoMCwgaSksXG4gICAgICBbc3RvcHNbaV1bMF0sIChzdG9wc1tpXVsxXSArIHN0b3BzW2kgKyAxXVsxXSkgLyAyXSxcbiAgICAgIC4uLnN0b3BzLnNsaWNlKGkpXG4gICAgXTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdG9wcztcbn1cblxudHlwZSBWaXNDb25maWdCeVpvb21JbnB1dENvbnRhaW5lclByb3BzID0ge1xuICBpc0VkaXRpbmc/OiBib29sZWFuO1xufTtcblxuY29uc3QgVmlzQ29uZmlnQnlab29tSW5wdXRDb250YWluZXIgPSBzdHlsZWQuZGl2PFZpc0NvbmZpZ0J5Wm9vbUlucHV0Q29udGFpbmVyUHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IChwcm9wcy5pc0VkaXRpbmcgPyBwcm9wcy50aGVtZS5BWlVSRTk1MCA6ICd0cmFuc3BhcmVudCcpfTtcbiAgbWFyZ2luOiA4cHggOHB4IDEycHggOHB4O1xuXG4gIC5ib3R0b20tYWN0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIH1cblxuICAuYm90dG9tLWFjdGlvbi5lZGl0aW5nIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbmA7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNvbmZpZzogWm9vbVN0b3BzQ29uZmlnO1xuICBwcm9wZXJ0eTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB1bml0OiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodXBkYXRlOiBSZWNvcmQ8c3RyaW5nLCBab29tU3RvcHNDb25maWc+KSA9PiB2b2lkO1xufTtcblxuY29uc3QgVmlzQ29uZmlnQnlab29tSW5wdXQ6IFJlYWN0LkZDPFByb3BzPiA9ICh7Y29uZmlnID0ge30sIHByb3BlcnR5LCBvbkNoYW5nZX0pID0+IHtcbiAgY29uc3QgW3N0b3BzU3RhdGUsIHNldFN0b3BzXSA9IHVzZVN0YXRlKGNvbmZpZy5zdG9wcyB8fCBbXSk7XG4gIGNvbnN0IFtpc1NvcnRpbmcsIHRvZ2dsZVNvcnRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNFZGl0aW5nLCB0b2dnbGVFZGl0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvbkNvbmZpcm0gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb25DaGFuZ2Uoe1xuICAgICAgW3Byb3BlcnR5XToge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIHN0b3BzOiBzdG9wc1N0YXRlXG4gICAgICB9XG4gICAgfSk7XG4gICAgdG9nZ2xlRWRpdGluZyhmYWxzZSk7XG4gIH0sIFtwcm9wZXJ0eSwgY29uZmlnLCBzdG9wc1N0YXRlLCBvbkNoYW5nZSwgdG9nZ2xlRWRpdGluZ10pO1xuICBjb25zdCBhZGRTdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0U3RvcHMoaW5zZXJ0U3RvcChzdG9wc1N0YXRlKSksIFtzZXRTdG9wcywgc3RvcHNTdGF0ZV0pO1xuICBjb25zdCByZW1vdmVTdG9wID0gdXNlQ2FsbGJhY2soXG4gICAgaSA9PiBzZXRTdG9wcyhbLi4uc3RvcHNTdGF0ZS5zbGljZSgwLCBpKSwgLi4uc3RvcHNTdGF0ZS5zbGljZShpICsgMSldKSxcbiAgICBbc2V0U3RvcHMsIHN0b3BzU3RhdGVdXG4gICk7XG4gIGNvbnN0IG9uU29ydEVuZCA9IHVzZUNhbGxiYWNrKFxuICAgICh7b2xkSW5kZXgsIG5ld0luZGV4fSkgPT4ge1xuICAgICAgY29uc3QgbmV3U3RvcHNTdGF0ZSA9IGFycmF5TW92ZShzdG9wc1N0YXRlLCBvbGRJbmRleCwgbmV3SW5kZXgpO1xuICAgICAgc2V0U3RvcHMobmV3U3RvcHNTdGF0ZSk7XG4gICAgICB0b2dnbGVTb3J0aW5nKGZhbHNlKTtcbiAgICB9LFxuICAgIFtzdG9wc1N0YXRlLCBzZXRTdG9wcywgdG9nZ2xlU29ydGluZ11cbiAgKTtcbiAgY29uc3Qgb25Tb3J0U3RhcnQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdG9nZ2xlU29ydGluZyh0cnVlKTtcbiAgfSwgW3RvZ2dsZVNvcnRpbmddKTtcblxuICByZXR1cm4gKFxuICAgIDxWaXNDb25maWdCeVpvb21JbnB1dENvbnRhaW5lciBpc0VkaXRpbmc9e2lzRWRpdGluZ30+XG4gICAgICA8U29ydGFibGVDb250YWluZXJcbiAgICAgICAgY2xhc3NOYW1lPVwiY3VzdG9tLXBhbGV0dGUtY29udGFpbmVyXCJcbiAgICAgICAgb25Tb3J0RW5kPXtvblNvcnRFbmR9XG4gICAgICAgIG9uU29ydFN0YXJ0PXtvblNvcnRTdGFydH1cbiAgICAgICAgbG9ja0F4aXM9XCJ5XCJcbiAgICAgICAgaGVscGVyQ2xhc3M9XCJzb3J0aW5nLWNvbG9yc1wiXG4gICAgICAgIHVzZURyYWdIYW5kbGVcbiAgICAgID5cbiAgICAgICAge3N0b3BzU3RhdGUubWFwKChzdG9wLCBpZHgpID0+IChcbiAgICAgICAgICA8SW5wdXRSb3dcbiAgICAgICAgICAgIGlzRWRpdGluZz17aXNFZGl0aW5nfVxuICAgICAgICAgICAga2V5PXtgaW5wdXQtJHtpZHh9YH1cbiAgICAgICAgICAgIGlkeD17aWR4fVxuICAgICAgICAgICAgc3RvcD17c3RvcFswXX1cbiAgICAgICAgICAgIHZhbHVlPXtzdG9wWzFdfVxuICAgICAgICAgICAgaXNTb3J0aW5nPXtpc1NvcnRpbmd9XG4gICAgICAgICAgICBvbkNoYW5nZT17diA9PiBzZXRTdG9wcyhPYmplY3QuYXNzaWduKFsuLi4oc3RvcHNTdGF0ZSB8fCBbXSldLCB7W2lkeF06IHZ9KSl9XG4gICAgICAgICAgICBvblJlbW92ZT17KCkgPT4gcmVtb3ZlU3RvcChpZHgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Tb3J0YWJsZUNvbnRhaW5lcj5cbiAgICAgIHtpc0VkaXRpbmcgPyAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm90dG9tLWFjdGlvbiBlZGl0aW5nXCI+XG4gICAgICAgICAgPEJ1dHRvbiBzZWNvbmRhcnkgb25DbGljaz17YWRkU3RvcH0gc21hbGw+XG4gICAgICAgICAgICA8SWNvbnMuQWRkIGhlaWdodD1cIjE2cHhcIiAvPiBBZGQgU3RvcFxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17b25Db25maXJtfSBzbWFsbD5cbiAgICAgICAgICAgIENvbmZpcm1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApIDogKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvdHRvbS1hY3Rpb25cIj5cbiAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHRvZ2dsZUVkaXRpbmcodHJ1ZSl9IHNtYWxsPlxuICAgICAgICAgICAgRWRpdFxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9WaXNDb25maWdCeVpvb21JbnB1dENvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpc0NvbmZpZ0J5Wm9vbUlucHV0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