@map-colonies/react-components 3.11.0 → 3.12.0

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 (32) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/cesium-map/layers/imagery.layer.js +9 -5
  3. package/dist/cesium-map/layers-manager.d.ts +10 -2
  4. package/dist/cesium-map/layers-manager.js +19 -1
  5. package/dist/cesium-map/map-legend/MapLegend.css +135 -0
  6. package/dist/cesium-map/map-legend/MapLegend.d.ts +15 -0
  7. package/dist/cesium-map/map-legend/MapLegend.js +57 -0
  8. package/dist/cesium-map/map-legend/MapLegendList.d.ts +13 -0
  9. package/dist/cesium-map/map-legend/MapLegendList.js +43 -0
  10. package/dist/cesium-map/map-legend/MapLegendSidebar.d.ts +16 -0
  11. package/dist/cesium-map/map-legend/MapLegendSidebar.js +20 -0
  12. package/dist/cesium-map/map-legend/MapLegendToggle.d.ts +7 -0
  13. package/dist/cesium-map/map-legend/MapLegendToggle.js +20 -0
  14. package/dist/cesium-map/map-legend/index.d.ts +3 -0
  15. package/dist/cesium-map/map-legend/index.js +14 -0
  16. package/dist/cesium-map/map.css +6 -1
  17. package/dist/cesium-map/map.d.ts +16 -1
  18. package/dist/cesium-map/map.js +51 -21
  19. package/dist/cesium-map/settings/settings.css +5 -2
  20. package/package.json +3 -3
  21. package/src/lib/cesium-map/layers/imagery.layer.tsx +12 -7
  22. package/src/lib/cesium-map/layers-manager.ts +35 -2
  23. package/src/lib/cesium-map/map-legend/MapLegend.css +135 -0
  24. package/src/lib/cesium-map/map-legend/MapLegend.tsx +91 -0
  25. package/src/lib/cesium-map/map-legend/MapLegendList.tsx +46 -0
  26. package/src/lib/cesium-map/map-legend/MapLegendSidebar.tsx +55 -0
  27. package/src/lib/cesium-map/map-legend/MapLegendToggle.tsx +31 -0
  28. package/src/lib/cesium-map/map-legend/index.tsx +3 -0
  29. package/src/lib/cesium-map/map-legend/legends-sidebar.stories.tsx +201 -0
  30. package/src/lib/cesium-map/map.css +6 -1
  31. package/src/lib/cesium-map/map.tsx +86 -20
  32. package/src/lib/cesium-map/settings/settings.css +5 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,32 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.12.0](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-components@3.11.0...@map-colonies/react-components@3.12.0) (2022-08-04)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * legend sidebar ([cdca0cc](https://github.com/MapColonies/shared-components/commit/cdca0ccd1f8ee21a575557cc6c13903beaed8ca2))
12
+ * legends style tweaks ([eec1f08](https://github.com/MapColonies/shared-components/commit/eec1f083fa22c818cb55ab3e4d947b61e428f215))
13
+ * lint and prettier ([68bf8f6](https://github.com/MapColonies/shared-components/commit/68bf8f64321043ee1d00d46c08f834698bf18276))
14
+ * map legends final tweaks ([9b00733](https://github.com/MapColonies/shared-components/commit/9b00733594716a0d19eff17249cd2280ca8704a3))
15
+ * map legends fine tuning ([de59b02](https://github.com/MapColonies/shared-components/commit/de59b02a657000e24f962dfc0c405a73f8d4ba11))
16
+ * map legends props to single prop ([5fafca0](https://github.com/MapColonies/shared-components/commit/5fafca0705d1bbee29e80121c09c19fd9c2a959f))
17
+ * map legends styles ([1355962](https://github.com/MapColonies/shared-components/commit/135596209224f52c11d28a2b85f2b470c1980936))
18
+ * pr rejects and prettier ([2fbeb20](https://github.com/MapColonies/shared-components/commit/2fbeb206e2f86589128d21e2ac14e5a57090d7f2))
19
+ * prettier ([f12096a](https://github.com/MapColonies/shared-components/commit/f12096a9839beddad1553ade17c338a07414d882))
20
+ * X btn wrong place ([9ff0ca0](https://github.com/MapColonies/shared-components/commit/9ff0ca0ef928db12d47b1bd428967feadb411d10))
21
+
22
+
23
+ ### Features
24
+
25
+ * add sidebar for the cesium viewer ([81dfe0b](https://github.com/MapColonies/shared-components/commit/81dfe0bdd38d7dcaa131e7b5e24000767b794d81))
26
+ * implement legends sidebar and create story ([60e9b58](https://github.com/MapColonies/shared-components/commit/60e9b587aadb866a9ce14d6508c39239fdfd03fb))
27
+
28
+
29
+
30
+
31
+
6
32
  # [3.11.0](https://github.com/MapColonies/shared-components/compare/@map-colonies/react-components@3.10.5...@map-colonies/react-components@3.11.0) (2022-05-02)
7
33
 
8
34
 
@@ -50,14 +50,18 @@ var CesiumImageryLayer = function (props) {
50
50
  var meta = props.meta, restProps = __rest(props, ["meta"]);
51
51
  var mapViewer = map_1.useCesiumMap();
52
52
  react_1.useLayoutEffect(function () {
53
- var _a;
54
- (_a = mapViewer.layersManager) === null || _a === void 0 ? void 0 : _a.addMetaToLayer(meta, function (layer, idx) {
53
+ var _a, _b;
54
+ (_a = mapViewer.layersManager) === null || _a === void 0 ? void 0 : _a.addMetaToLayer(meta,
55
+ /* eslint-disable */
56
+ (_b = meta.searchLayerPredicate) !== null && _b !== void 0 ? _b : (function (layer, idx) {
55
57
  if (meta !== undefined) {
56
- // eslint-disable-next-line
57
- return layer._imageryProvider._resource._url === meta.url;
58
+ return (layer._imageryProvider._resource._url ===
59
+ meta.options.url);
58
60
  }
59
61
  return false;
60
- });
62
+ })
63
+ /* eslint-enable */
64
+ );
61
65
  }, [meta, mapViewer]);
62
66
  return react_1.default.createElement(resium_1.ImageryLayer, __assign({}, restProps));
63
67
  };
@@ -1,7 +1,8 @@
1
- import { ImageryLayer } from 'cesium';
1
+ import { ImageryLayer, Event } from 'cesium';
2
2
  import { RCesiumOSMLayerOptions, RCesiumWMSLayerOptions, RCesiumWMTSLayerOptions, RCesiumXYZLayerOptions } from './layers';
3
3
  import { CesiumViewer } from './map';
4
4
  import { IBaseMap } from './settings/settings';
5
+ import { IMapLegend } from './map-legend';
5
6
  export interface ICesiumImageryLayer extends InstanceType<typeof ImageryLayer> {
6
7
  meta?: Record<string, unknown>;
7
8
  }
@@ -21,10 +22,16 @@ export interface IVectorLayer {
21
22
  zIndex: number;
22
23
  url: string;
23
24
  }
25
+ export declare type LegendExtractor = (layers: (any & {
26
+ meta: any;
27
+ })[]) => IMapLegend[];
24
28
  declare class LayerManager {
25
29
  mapViewer: CesiumViewer;
26
30
  private readonly layers;
27
- constructor(mapViewer: CesiumViewer);
31
+ legendsList: IMapLegend[];
32
+ layerUpdated: Event;
33
+ private readonly legendsExtractor?;
34
+ constructor(mapViewer: CesiumViewer, legendsExtractor?: LegendExtractor, onLayersUpdate?: () => void);
28
35
  addMetaToLayer(meta: any, layerPredicate: (layer: ImageryLayer, idx: number) => boolean): void;
29
36
  setBaseMapLayers(baseMap: IBaseMap): void;
30
37
  addRasterLayer(layer: IRasterLayer, index: number, parentId: string): void;
@@ -40,6 +47,7 @@ declare class LayerManager {
40
47
  showAllNotBase(isShow: boolean): void;
41
48
  get(layerId: string): ICesiumImageryLayer | undefined;
42
49
  findLayerByPOI(x: number, y: number): ICesiumImageryLayer[] | undefined;
50
+ private setLegends;
43
51
  private getBaseLayersCount;
44
52
  private findLayerById;
45
53
  private updateLayersOrder;
@@ -22,16 +22,29 @@ var point_geojson_1 = require("./tools/geojson/point.geojson");
22
22
  var INC = 1;
23
23
  var DEC = -1;
24
24
  var LayerManager = /** @class */ (function () {
25
- function LayerManager(mapViewer) {
25
+ function LayerManager(mapViewer, legendsExtractor, onLayersUpdate) {
26
+ var _this = this;
26
27
  this.mapViewer = mapViewer;
27
28
  // eslint-disable-next-line
28
29
  this.layers = this.mapViewer.imageryLayers._layers;
30
+ this.legendsList = [];
31
+ this.legendsExtractor = legendsExtractor;
32
+ this.layerUpdated = new cesium_1.Event();
33
+ if (onLayersUpdate) {
34
+ this.layerUpdated.addEventListener(onLayersUpdate, this);
35
+ }
36
+ this.mapViewer.imageryLayers.layerRemoved.addEventListener(function () {
37
+ _this.setLegends();
38
+ _this.layerUpdated.raiseEvent();
39
+ });
29
40
  }
30
41
  /* eslint-disable */
31
42
  LayerManager.prototype.addMetaToLayer = function (meta, layerPredicate) {
32
43
  var layer = this.layers.find(layerPredicate);
33
44
  if (layer) {
34
45
  layer.meta = meta;
46
+ this.setLegends();
47
+ this.layerUpdated.raiseEvent();
35
48
  }
36
49
  };
37
50
  /* eslint-enable */
@@ -192,6 +205,11 @@ var LayerManager = /** @class */ (function () {
192
205
  return ((_a = layer2.meta) === null || _a === void 0 ? void 0 : _a.zIndex) - ((_b = layer1.meta) === null || _b === void 0 ? void 0 : _b.zIndex);
193
206
  });
194
207
  };
208
+ LayerManager.prototype.setLegends = function () {
209
+ if (typeof this.legendsExtractor !== 'undefined') {
210
+ this.legendsList = this.legendsExtractor(this.layers);
211
+ }
212
+ };
195
213
  LayerManager.prototype.getBaseLayersCount = function () {
196
214
  var baseLayers = this.layers.filter(function (layer) {
197
215
  var parentId = lodash_1.get(layer.meta, 'parentBasetMapId');
@@ -0,0 +1,135 @@
1
+ .mapLegendSidebarContainer {
2
+ width: 340px;
3
+ height: 100%;
4
+ position: relative;
5
+ overflow-y: auto;
6
+ overflow-x: hidden;
7
+ font-size: 16px;
8
+ }
9
+
10
+ /* Disable drawer animation */
11
+
12
+ .mapLegendSidebarContainer.mdc-drawer--animate {
13
+ transform: translateX(0) !important;
14
+ transition: none !important;
15
+ }
16
+
17
+ .mapLegendSidebarContainer.mdc-drawer--dismissible {
18
+ position: relative;
19
+ }
20
+
21
+ div.MuiPaper-root {
22
+ transition: none !important;
23
+ }
24
+
25
+ .mapLegendCloseBtn {
26
+ position: absolute;
27
+ top: 0;
28
+ right: 0;
29
+ cursor: pointer;
30
+ width: 50px;
31
+ height: 50px;
32
+ padding: 20px;
33
+ font-size: 24px;
34
+ }
35
+
36
+ body[dir='rtl'] .mapLegendCloseBtn {
37
+ right: unset;
38
+ left: 0;
39
+ }
40
+
41
+ .mapLegendToggleContainer {
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+ }
46
+
47
+ .mapLegendIcon {
48
+ width: 2.5rem;
49
+ height: 2.5rem;
50
+ }
51
+
52
+ .sidebarHeaderContainer {
53
+ text-align: center;
54
+ margin-top: 40px;
55
+ }
56
+
57
+ .sidebarTitle {
58
+ font-size: 1.5rem;
59
+ font-weight: bold;
60
+ }
61
+
62
+ .mapLegend {
63
+ display: flex;
64
+ flex-direction: column;
65
+ align-items: center;
66
+ justify-content: center;
67
+ gap: 4px;
68
+ padding: 10px 14px;
69
+ }
70
+
71
+ .layerNameContainer {
72
+ width: 90%;
73
+ display: flex;
74
+ justify-content: center;
75
+ align-items: center;
76
+ }
77
+
78
+ .layerName {
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .legendImg {
85
+ width: 90%;
86
+ height: 150px;
87
+ border: 1px solid black;
88
+ border-radius: 5px;
89
+ object-fit: cover;
90
+ cursor: pointer;
91
+ }
92
+
93
+ .legendActionsContainer {
94
+ display: flex;
95
+ flex-direction: row;
96
+ align-self: center;
97
+ }
98
+
99
+ .legendAction:not(:last-child)::after {
100
+ content: '|';
101
+ margin: 0px 4px;
102
+ }
103
+
104
+ .mapLegendsList {
105
+ display: flex;
106
+ flex-direction: column;
107
+ padding: 20px 0px;
108
+ width: 100%;
109
+ height: 90%;
110
+ }
111
+
112
+ .legendAction {
113
+ text-decoration: underline;
114
+ cursor: pointer;
115
+ font-size: 1.1rem;
116
+ transition: all 0.1s ease-in-out;
117
+ width: max-content;
118
+ }
119
+
120
+ .legendAction:hover {
121
+ filter: brightness(1.2);
122
+ }
123
+
124
+ .noLegendsContainer {
125
+ width: 100%;
126
+ height: 100%;
127
+ display: flex;
128
+ flex-direction: column;
129
+ justify-content: center;
130
+ align-items: center;
131
+ }
132
+
133
+ .noLegendsMsg {
134
+ text-align: center;
135
+ }
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import './MapLegend.css';
3
+ export interface IMapLegend {
4
+ layer?: string;
5
+ legendDoc?: string;
6
+ legendImg?: string;
7
+ legend?: Record<string, unknown>[];
8
+ }
9
+ interface MapLegendProps {
10
+ legend: IMapLegend;
11
+ docText?: string;
12
+ imgText?: string;
13
+ }
14
+ export declare const MapLegend: React.FC<MapLegendProps>;
15
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.MapLegend = void 0;
23
+ var react_core_1 = require("@map-colonies/react-core");
24
+ var react_1 = __importStar(require("react"));
25
+ var box_1 = require("../../box");
26
+ require("./MapLegend.css");
27
+ var MapLegend = function (_a) {
28
+ var _b = _a.legend, legendImg = _b.legendImg, legendDoc = _b.legendDoc, layer = _b.layer, docText = _a.docText, imgText = _a.imgText;
29
+ var handleLegendImgOpen = react_1.useCallback(function () {
30
+ // Open image in a new tab.
31
+ window.open(legendImg, '_blank');
32
+ }, [legendImg]);
33
+ var handleLegendDocOpen = react_1.useCallback(function () {
34
+ // Open doc in a new tab.
35
+ window.open(legendDoc, '_blank');
36
+ }, [legendDoc]);
37
+ var renderLayerName = react_1.useCallback(function () {
38
+ var MAX_LAYER_NAME_LENGTH = 15;
39
+ var layerNameContainer = (react_1.default.createElement(box_1.Box, { className: "layerNameContainer" },
40
+ react_1.default.createElement("h3", { style: { maxWidth: MAX_LAYER_NAME_LENGTH + "ch" }, className: "layerName" }, layer)));
41
+ if ((layer !== null && layer !== void 0 ? layer : '').length > MAX_LAYER_NAME_LENGTH) {
42
+ return react_1.default.createElement(react_core_1.Tooltip, { content: layer }, layerNameContainer);
43
+ }
44
+ return layerNameContainer;
45
+ }, [layer]);
46
+ var renderLinks = react_1.useCallback(function () {
47
+ return [
48
+ typeof legendImg === 'string' && (react_1.default.createElement("a", { className: "legendAction", href: legendImg, target: "_blank", referrerPolicy: "noreferrer" }, imgText)),
49
+ typeof legendDoc === 'string' && (react_1.default.createElement("a", { className: "legendAction", href: legendDoc, target: "_blank", referrerPolicy: "noreferrer" }, docText)),
50
+ ];
51
+ }, [legendImg, imgText, legendDoc, docText]);
52
+ return (react_1.default.createElement(box_1.Box, { className: "mapLegend" },
53
+ renderLayerName(),
54
+ react_1.default.createElement("img", { alt: "Map Legend", className: "legendImg", src: legendImg, onClick: handleLegendImgOpen }),
55
+ react_1.default.createElement(box_1.Box, { className: "legendActionsContainer" }, renderLinks())));
56
+ };
57
+ exports.MapLegend = MapLegend;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { IMapLegend } from './MapLegend';
3
+ import './MapLegend.css';
4
+ interface MapLegendListProps {
5
+ legends: IMapLegend[];
6
+ actionsTexts: {
7
+ docText: string;
8
+ imgText: string;
9
+ };
10
+ noLegendsText: string;
11
+ }
12
+ export declare const MapLegendList: React.FC<MapLegendListProps>;
13
+ export {};
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.MapLegendList = void 0;
23
+ var react_1 = __importStar(require("react"));
24
+ var box_1 = require("../../box");
25
+ var MapLegend_1 = require("./MapLegend");
26
+ require("./MapLegend.css");
27
+ var MapLegendList = function (_a) {
28
+ var legends = _a.legends, _b = _a.actionsTexts, docText = _b.docText, imgText = _b.imgText, noLegendsText = _a.noLegendsText;
29
+ var handleNoLegends = react_1.useCallback(function () {
30
+ return (react_1.default.createElement(box_1.Box, { className: "noLegendsContainer" },
31
+ react_1.default.createElement("h2", { className: "noLegendsMsg" }, noLegendsText)));
32
+ }, [noLegendsText]);
33
+ var renderList = react_1.useCallback(function () {
34
+ if (!legends.length) {
35
+ return handleNoLegends();
36
+ }
37
+ return legends.map(function (legend, i) {
38
+ return (react_1.default.createElement(MapLegend_1.MapLegend, { key: legend.layer + "_" + i, legend: legend, docText: docText, imgText: imgText }));
39
+ });
40
+ }, [legends]);
41
+ return react_1.default.createElement(box_1.Box, { className: "mapLegendsList" }, renderList());
42
+ };
43
+ exports.MapLegendList = MapLegendList;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { IMapLegend } from './MapLegend';
3
+ import './MapLegend.css';
4
+ interface MapLegendSidebarProps {
5
+ isOpen: boolean;
6
+ toggleSidebar: () => void;
7
+ title?: string;
8
+ noLegendsText?: string;
9
+ legends?: IMapLegend[];
10
+ actionsTexts?: {
11
+ docText: string;
12
+ imgText: string;
13
+ };
14
+ }
15
+ export declare const MapLegendSidebar: React.FC<MapLegendSidebarProps>;
16
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MapLegendSidebar = void 0;
7
+ var react_core_1 = require("@map-colonies/react-core");
8
+ var react_1 = __importDefault(require("react"));
9
+ require("./MapLegend.css");
10
+ var MapLegendList_1 = require("./MapLegendList");
11
+ var MapLegendSidebar = function (_a) {
12
+ var isOpen = _a.isOpen, toggleSidebar = _a.toggleSidebar, _b = _a.title, title = _b === void 0 ? 'Map Legends' : _b, _c = _a.noLegendsText, noLegendsText = _c === void 0 ? 'No legends to display...' : _c, _d = _a.legends, legends = _d === void 0 ? [] : _d, _e = _a.actionsTexts, actionsTexts = _e === void 0 ? { docText: 'Docs', imgText: 'View Image' } : _e;
13
+ return isOpen ? (react_1.default.createElement(react_core_1.Drawer, { className: "mapLegendSidebarContainer", modal: false, dismissible: true, open: isOpen },
14
+ react_1.default.createElement(react_core_1.DrawerHeader, { className: "sidebarHeaderContainer" },
15
+ react_1.default.createElement(react_core_1.DrawerTitle, { className: "sidebarTitle" }, title)),
16
+ react_1.default.createElement(react_core_1.DrawerContent, { className: "sidebarContent" },
17
+ react_1.default.createElement(react_core_1.Icon, { onClick: toggleSidebar, className: "mapLegendCloseBtn", icon: { icon: 'close', size: 'small' } }),
18
+ react_1.default.createElement(MapLegendList_1.MapLegendList, { noLegendsText: noLegendsText, legends: legends, actionsTexts: actionsTexts })))) : null;
19
+ };
20
+ exports.MapLegendSidebar = MapLegendSidebar;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import './MapLegend.css';
3
+ interface MapLegendProps {
4
+ onClick: () => void;
5
+ }
6
+ export declare const MapLegendToggle: React.FC<MapLegendProps>;
7
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MapLegendToggle = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var react_core_1 = require("@map-colonies/react-core");
9
+ var box_1 = require("../../box");
10
+ require("./MapLegend.css");
11
+ var legendIcon = (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", "enable-background": "new 0 0 24 24", height: "24", width: "24", viewBox: "0 0 612 612" },
12
+ react_1.default.createElement("g", { xmlns: "http://www.w3.org/2000/svg" },
13
+ react_1.default.createElement("path", { d: "M322.4,173.9l-129,16.2l-4.6,21.4l25.3,4.7c16.5,3.9,19.8,9.9,16.2,26.4l-41.5,195.3c-10.9,50.5,5.9,74.3,45.5,74.3 c30.7,0,66.3-14.2,82.5-33.6l4.9-23.4c-11.3,9.9-27.7,13.9-38.6,13.9c-15.5,0-21.1-10.9-17.1-30L322.4,173.9z" }),
14
+ react_1.default.createElement("circle", { cx: "270.1", cy: "56.3", r: "56.3" }))));
15
+ var MapLegendToggle = function (_a) {
16
+ var onClick = _a.onClick;
17
+ return (react_1.default.createElement(box_1.Box, { onClick: onClick, className: "mapLegendToggleContainer" },
18
+ react_1.default.createElement(react_core_1.Icon, { icon: legendIcon, className: "mapLegendIcon" })));
19
+ };
20
+ exports.MapLegendToggle = MapLegendToggle;
@@ -0,0 +1,3 @@
1
+ export * from './MapLegendToggle';
2
+ export * from './MapLegendSidebar';
3
+ export type { IMapLegend } from './MapLegend';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./MapLegendToggle"), exports);
14
+ __exportStar(require("./MapLegendSidebar"), exports);
@@ -40,7 +40,7 @@ body[dir='rtl'] .toolsContainer {
40
40
 
41
41
  .sideToolsContainer {
42
42
  display: flex;
43
- flex-direction: column;
43
+ flex-direction: row;
44
44
  gap: 8px;
45
45
  z-index: 2000;
46
46
  position: absolute;
@@ -52,3 +52,8 @@ body[dir='rtl'] .sideToolsContainer {
52
52
  left: 40px;
53
53
  right: unset;
54
54
  }
55
+
56
+ .viewer {
57
+ display: flex;
58
+ flex-direction: row;
59
+ }
@@ -3,7 +3,8 @@ import { ViewerProps } from 'resium/dist/types/src/Viewer/Viewer';
3
3
  import { Viewer as CesiumViewerCls, TerrainProvider } from 'cesium';
4
4
  import { Proj } from '../utils/projections';
5
5
  import { IBaseMaps } from './settings/settings';
6
- import LayerManager from './layers-manager';
6
+ import { IMapLegend } from './map-legend';
7
+ import LayerManager, { LegendExtractor } from './layers-manager';
7
8
  import { CesiumSceneModeEnum } from './map.types';
8
9
  import './map.css';
9
10
  export declare class CesiumViewer extends CesiumViewerCls {
@@ -23,6 +24,16 @@ export interface IContextMenuData {
23
24
  };
24
25
  handleClose: () => void;
25
26
  }
27
+ interface ILegends {
28
+ legendsList?: IMapLegend[];
29
+ emptyText?: string;
30
+ title?: string;
31
+ actionsTexts?: {
32
+ docText: string;
33
+ imgText: string;
34
+ };
35
+ mapLegendsExtractor?: LegendExtractor;
36
+ }
26
37
  export interface CesiumMapProps extends ViewerProps {
27
38
  showMousePosition?: boolean;
28
39
  showScale?: boolean;
@@ -41,6 +52,10 @@ export interface CesiumMapProps extends ViewerProps {
41
52
  width: number;
42
53
  dynamicHeightIncrement?: number;
43
54
  };
55
+ legendSidebarTitle?: string;
56
+ noLegendsText?: string;
57
+ legends?: ILegends;
44
58
  }
45
59
  export declare const useCesiumMap: () => CesiumViewer;
46
60
  export declare const CesiumMap: React.FC<CesiumMapProps>;
61
+ export {};