@itwin/map-layers 6.0.0 → 6.0.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.
- package/CHANGELOG.md +18 -2
- package/lib/cjs/BaseMapPresets.d.ts +5 -0
- package/lib/cjs/BaseMapPresets.d.ts.map +1 -0
- package/lib/cjs/BaseMapPresets.js +18 -0
- package/lib/cjs/BaseMapPresets.js.map +1 -0
- package/lib/cjs/map-layers.d.ts +1 -0
- package/lib/cjs/map-layers.d.ts.map +1 -1
- package/lib/cjs/map-layers.js +1 -0
- package/lib/cjs/map-layers.js.map +1 -1
- package/lib/cjs/ui/FeatureInfoUiItemsProvider.js +1 -1
- package/lib/cjs/ui/FeatureInfoUiItemsProvider.js.map +1 -1
- package/lib/cjs/ui/widget/BasemapPanel.d.ts.map +1 -1
- package/lib/cjs/ui/widget/BasemapPanel.js +5 -4
- package/lib/cjs/ui/widget/BasemapPanel.js.map +1 -1
- package/lib/esm/BaseMapPresets.d.ts +5 -0
- package/lib/esm/BaseMapPresets.d.ts.map +1 -0
- package/lib/esm/BaseMapPresets.js +14 -0
- package/lib/esm/BaseMapPresets.js.map +1 -0
- package/lib/esm/map-layers.d.ts +1 -0
- package/lib/esm/map-layers.d.ts.map +1 -1
- package/lib/esm/map-layers.js +1 -0
- package/lib/esm/map-layers.js.map +1 -1
- package/lib/esm/ui/FeatureInfoUiItemsProvider.js +1 -1
- package/lib/esm/ui/FeatureInfoUiItemsProvider.js.map +1 -1
- package/lib/esm/ui/widget/BasemapPanel.d.ts.map +1 -1
- package/lib/esm/ui/widget/BasemapPanel.js +5 -4
- package/lib/esm/ui/widget/BasemapPanel.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
# Change Log - @itwin/map-layers
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
<!-- This log was last generated on Thu, 21 Aug 2025 19:04:46 GMT and should not be manually modified. -->
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 6.0.2
|
|
8
|
+
|
|
9
|
+
Thu, 21 Aug 2025 19:04:46 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- Allow FeatureInfoWidget to be used from en Editing FrontStage ([#1419](https://github.com/iTwin/viewer-components-react/pull/1419))
|
|
14
|
+
|
|
15
|
+
## 6.0.1
|
|
16
|
+
|
|
17
|
+
Mon, 07 Jul 2025 19:55:02 GMT
|
|
18
|
+
|
|
19
|
+
### Patches
|
|
20
|
+
|
|
21
|
+
- Provide a method to generate default Google maps base layers (aerial, hybrid, streets). Also configured test viewer to show Google Maps as the default imagery provider. ([#1352](https://github.com/iTwin/viewer-components-react/pull/1352))
|
|
22
|
+
|
|
7
23
|
## 6.0.0
|
|
8
24
|
|
|
9
|
-
Fri, 20 Jun 2025 17:
|
|
25
|
+
Fri, 20 Jun 2025 17:05:06 GMT
|
|
10
26
|
|
|
11
27
|
### Major changes
|
|
12
28
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMapPresets.d.ts","sourceRoot":"","sources":["../../src/BaseMapPresets.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,+BAA+B,2DAIzC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDefaultGoogleMapsBaseMaps = void 0;
|
|
4
|
+
/*---------------------------------------------------------------------------------------------
|
|
5
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
6
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
7
|
+
*--------------------------------------------------------------------------------------------*/
|
|
8
|
+
const map_layers_formats_1 = require("@itwin/map-layers-formats");
|
|
9
|
+
/**
|
|
10
|
+
* Creates default Google Maps base layers settings.
|
|
11
|
+
*/
|
|
12
|
+
const createDefaultGoogleMapsBaseMaps = () => [
|
|
13
|
+
map_layers_formats_1.GoogleMaps.createBaseLayerSettings({ mapType: "satellite", language: "en", region: "US" }),
|
|
14
|
+
map_layers_formats_1.GoogleMaps.createBaseLayerSettings({ mapType: "satellite", layerTypes: ["layerRoadmap"], language: "en", region: "US" }),
|
|
15
|
+
map_layers_formats_1.GoogleMaps.createBaseLayerSettings({ mapType: "roadmap", language: "en", region: "US" }),
|
|
16
|
+
];
|
|
17
|
+
exports.createDefaultGoogleMapsBaseMaps = createDefaultGoogleMapsBaseMaps;
|
|
18
|
+
//# sourceMappingURL=BaseMapPresets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMapPresets.js","sourceRoot":"","sources":["../../src/BaseMapPresets.ts"],"names":[],"mappings":";;;AAAA;;;gGAGgG;AAChG,kEAAuD;AAEvD;;GAEG;AACI,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAAC;IACjD,+BAAU,CAAC,uBAAuB,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;IACxF,+BAAU,CAAC,uBAAuB,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;IACtH,+BAAU,CAAC,uBAAuB,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;CACvF,CAAC;AAJS,QAAA,+BAA+B,mCAIxC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { GoogleMaps } from \"@itwin/map-layers-formats\";\n\n/**\n * Creates default Google Maps base layers settings.\n */\nexport const createDefaultGoogleMapsBaseMaps = () => [\n GoogleMaps.createBaseLayerSettings({mapType: \"satellite\", language: \"en\", region: \"US\"}),\n GoogleMaps.createBaseLayerSettings({mapType: \"satellite\", layerTypes: [\"layerRoadmap\"], language: \"en\", region: \"US\"}),\n GoogleMaps.createBaseLayerSettings({mapType: \"roadmap\", language: \"en\", region: \"US\"}),\n ];\n"]}
|
package/lib/cjs/map-layers.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-layers.d.ts","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"map-layers.d.ts","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
package/lib/cjs/map-layers.js
CHANGED
|
@@ -25,4 +25,5 @@ __exportStar(require("./ui/Interfaces"), exports);
|
|
|
25
25
|
__exportStar(require("./ui/MapLayersUiItemsProvider"), exports);
|
|
26
26
|
__exportStar(require("./ui/FeatureInfoUiItemsProvider"), exports);
|
|
27
27
|
__exportStar(require("./ui/widget/MapLayersWidget"), exports);
|
|
28
|
+
__exportStar(require("./BaseMapPresets"), exports);
|
|
28
29
|
//# sourceMappingURL=map-layers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-layers.js","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,8CAA4B;AAC5B,uDAAqC;AACrC,gEAA8C;AAC9C,kDAAgC;AAChC,gEAA8C;AAC9C,kEAAgD;AAChD,8DAA4C","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport * from \"./mapLayers\";\nexport * from \"./MapLayersActionIds\";\nexport * from \"./MapLayersPrefBrowserStorage\";\nexport * from \"./ui/Interfaces\";\nexport * from \"./ui/MapLayersUiItemsProvider\";\nexport * from \"./ui/FeatureInfoUiItemsProvider\";\nexport * from \"./ui/widget/MapLayersWidget\";\n"]}
|
|
1
|
+
{"version":3,"file":"map-layers.js","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,8CAA4B;AAC5B,uDAAqC;AACrC,gEAA8C;AAC9C,kDAAgC;AAChC,gEAA8C;AAC9C,kEAAgD;AAChD,8DAA4C;AAC5C,mDAAiC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport * from \"./mapLayers\";\nexport * from \"./MapLayersActionIds\";\nexport * from \"./MapLayersPrefBrowserStorage\";\nexport * from \"./ui/Interfaces\";\nexport * from \"./ui/MapLayersUiItemsProvider\";\nexport * from \"./ui/FeatureInfoUiItemsProvider\";\nexport * from \"./ui/widget/MapLayersWidget\";\nexport * from \"./BaseMapPresets\";\n"]}
|
|
@@ -78,7 +78,7 @@ class FeatureInfoUiItemsProvider {
|
|
|
78
78
|
provideWidgets(_stageId, stageUsage, location, section) {
|
|
79
79
|
const widgets = [];
|
|
80
80
|
const tmpSection = section ?? appui_react_1.StagePanelSection.End;
|
|
81
|
-
if (tmpSection === appui_react_1.StagePanelSection.End && stageUsage === appui_react_1.StageUsage.General && location === appui_react_1.StagePanelLocation.Right) {
|
|
81
|
+
if (tmpSection === appui_react_1.StagePanelSection.End && (stageUsage === appui_react_1.StageUsage.General || stageUsage === appui_react_1.StageUsage.Edit) && location === appui_react_1.StagePanelLocation.Right) {
|
|
82
82
|
widgets.push({
|
|
83
83
|
id: FeatureInfoUiItemsProvider.widgetId,
|
|
84
84
|
label: mapLayers_1.MapLayersUI.localization.getLocalizedString("mapLayers:FeatureInfoWidget.Label"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureInfoUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,0DAAgE;AAChE,oDAA4J;AAC5J,wDAAiD;AACjD,oEAAwD;AACxD,kEAA+D;AAC/D,4CAA2C;AAC3C,8DAA+D;AAC/D,kEAAkE;AAMlE,MAAM,sBAAsB,GAAG,CAAC,EAAkB,EAAE,SAAkB,EAAE,aAA8B,EAAW,EAAE;IACjH,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;QAClF,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC,YAAY,KAAK,GAAG,EAAE,CAAC;YAC9F,MAAM,aAAa,GAAG,EAAE,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;YACzF,IAAI,aAAa,EAAE,sBAAsB,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,GAAY,EAAE;IAC9C,MAAM,EAAE,GAAG,yBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;IAC9C,IAAI,EAAE,EAAE,SAAS,CAAC,aAAa,EAAE,CAAC;QAChC,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7G,IAAI,sBAAsB,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACvG,IAAI,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAM,4BAA4B,GAAG,CAAC,YAAoB,EAAqB,EAAE;IACtF,OAAO,kCAAoB,CAAC,gBAAgB,CAAC;QAC3C,EAAE,EAAE,uCAAkB,CAAC,MAAM;QAC7B,IAAI,EAAE,uBAAC,gCAAU,KAAG,EAAE,0DAA0D;QAChF,KAAK,EAAE,uBAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,mCAAmC,CAAC;QACvF,WAAW,EAAE,uCAAkB,CAAC,WAAW;QAC3C,YAAY;QACZ,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,yBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAkB,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,QAAQ,EAAE,IAAI,wCAAuB,CAAC,GAAG,EAAE;YACzC,oGAAoG;YACpG,OAAO,CAAC,yBAAyB,EAAE,CAAC;QACtC,CAAC,EAAE,CAAC,2CAAsB,CAAC,iBAAiB,CAAC,CAAC;QAC9C,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,WAAW,EAAE,gCAAkB,CAAC,QAAQ;gBACxC,KAAK,EAAE,0BAAY,CAAC,mBAAmB;aACxC;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AArBW,QAAA,4BAA4B,gCAqBvC;AAEF,MAAa,0BAA0B;IAIV;IAHX,EAAE,GAAG,4BAA4B,CAAC;IAC3C,MAAM,CAAU,QAAQ,GAAG,iCAAiC,CAAC;IAEpE,YAA2B,gBAAuC;QAAvC,qBAAgB,GAAhB,gBAAgB,CAAuB;IAAG,CAAC;IAE/D,eAAe;QACpB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,6BAA6B,EAAE,CAAC;YAC1D,OAAO,CAAC,IAAA,oCAA4B,EAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,cAAc,CAAC,QAAgB,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAA2B;QACnH,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,MAAM,UAAU,GAAG,OAAO,IAAI,+BAAiB,CAAC,GAAG,CAAC;QACpD,IAAI,UAAU,KAAK,+BAAiB,CAAC,GAAG,IAAI,UAAU,KAAK,wBAAU,CAAC,OAAO,IAAI,QAAQ,KAAK,gCAAkB,CAAC,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"FeatureInfoUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport { StagePanelLocation, StagePanelSection, StageUsage, ToolbarItemUtilities, ToolbarOrientation, ToolbarUsage, WidgetState } from \"@itwin/appui-react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SvgMapInfo } from \"@itwin/itwinui-icons-react\";\nimport { MapFeatureInfoTool } from \"@itwin/map-layers-formats\";\nimport { MapLayersUI } from \"../mapLayers\";\nimport { MapLayersSyncUiEventId } from \"../MapLayersActionIds\";\nimport { MapFeatureInfoWidget } from \"./widget/FeatureInfoWidget\";\n\nimport type { ToolbarActionItem, ToolbarItem, UiItemsProvider } from \"@itwin/appui-react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport type { MapLayerProps } from \"@itwin/core-common\";\nimport type { MapFeatureInfoOptions } from \"./Interfaces\";\nconst supportsMapFeatureInfo = (vp: ScreenViewport, isOverlay: boolean, mapLayerProps: MapLayerProps[]): boolean => {\n for (let mapLayerIndex = 0; mapLayerIndex < mapLayerProps.length; mapLayerIndex++) {\n if (mapLayerProps[mapLayerIndex].visible && mapLayerProps[mapLayerIndex].transparency !== 1.0) {\n const layerProvider = vp.getMapLayerImageryProvider({ index: mapLayerIndex, isOverlay });\n if (layerProvider?.supportsMapFeatureInfo) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst isMapFeatureInfoSupported = (): boolean => {\n const vp = IModelApp.viewManager.selectedView;\n if (vp?.viewFlags.backgroundMap) {\n const backgroundLayers = vp.displayStyle.settings.mapImagery.backgroundLayers.map((value) => value.toJSON());\n if (supportsMapFeatureInfo(vp, false, backgroundLayers)) {\n return true;\n }\n const overlayLayers = vp.displayStyle.settings.mapImagery.overlayLayers.map((value) => value.toJSON());\n if (supportsMapFeatureInfo(vp, true, overlayLayers)) {\n return true;\n }\n }\n return false;\n};\n\nexport const getMapFeatureInfoToolItemDef = (itemPriority: number): ToolbarActionItem => {\n return ToolbarItemUtilities.createActionItem({\n id: MapFeatureInfoTool.toolId,\n icon: <SvgMapInfo />, // TODO: Update to iconNode when moving to 5.x appui-react\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.Label\"),\n description: MapFeatureInfoTool.description,\n itemPriority,\n execute: async () => {\n await IModelApp.tools.run(MapFeatureInfoTool.toolId);\n },\n isHidden: new ConditionalBooleanValue(() => {\n // Hide the MapFeatureInfoTool if the Map Layers toggle is off or no ArcGISFeature layers are active\n return !isMapFeatureInfoSupported();\n }, [MapLayersSyncUiEventId.MapImageryChanged]),\n layouts: {\n standard: {\n orientation: ToolbarOrientation.Vertical,\n usage: ToolbarUsage.ContentManipulation,\n }\n }\n });\n};\n\nexport class FeatureInfoUiItemsProvider implements UiItemsProvider {\n public readonly id = \"FeatureInfoUiItemsProvider\";\n public static readonly widgetId = \"map-layers:mapFeatureInfoWidget\";\n\n public constructor(private _featureInfoOpts: MapFeatureInfoOptions) {}\n\n public getToolbarItems(): ReadonlyArray<ToolbarItem> {\n if (!this._featureInfoOpts?.disableDefaultFeatureInfoTool) {\n return [getMapFeatureInfoToolItemDef(60)];\n }\n\n return [];\n }\n\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection) {\n const widgets = [];\n\n const tmpSection = section ?? StagePanelSection.End;\n if (tmpSection === StagePanelSection.End && (stageUsage === StageUsage.General || stageUsage === StageUsage.Edit) && location === StagePanelLocation.Right) {\n widgets.push({\n id: FeatureInfoUiItemsProvider.widgetId,\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.Label\"),\n icon: <SvgMapInfo />,\n content: <MapFeatureInfoWidget featureInfoOpts={this._featureInfoOpts} />,\n defaultState: WidgetState.Hidden,\n });\n }\n\n return widgets;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasemapPanel.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"AAMA,OAAO,qBAAqB,CAAC;AAmB7B,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"BasemapPanel.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"AAMA,OAAO,qBAAqB,CAAC;AAmB7B,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAsVpD"}
|
|
@@ -109,12 +109,14 @@ function BasemapPanel(props) {
|
|
|
109
109
|
return { value, label };
|
|
110
110
|
}));
|
|
111
111
|
}
|
|
112
|
+
const baseMapSelectKey = baseMap ? getSelectKeyFromProvider(baseMap) : "";
|
|
112
113
|
// Add new custom base map definition (avoid adding duplicate entry)
|
|
113
114
|
if (baseMap instanceof core_common_1.BaseMapLayerSettings
|
|
114
|
-
&&
|
|
115
|
+
&& baseOptions.find((opt) => opt.value === baseMapSelectKey) === undefined
|
|
115
116
|
&& !extraFormats[baseMap.formatId]) {
|
|
116
|
-
// Add new option
|
|
117
|
+
// Add new option for the custom base map
|
|
117
118
|
if (undefined === baseOptions.find((opt) => opt.label === baseMap.name)) {
|
|
119
|
+
setCustomBaseMap(baseMap);
|
|
118
120
|
baseOptions.push({ value: customBaseMapValue, label: baseMap.name });
|
|
119
121
|
}
|
|
120
122
|
}
|
|
@@ -176,7 +178,6 @@ function BasemapPanel(props) {
|
|
|
176
178
|
// This effect is only to keep a custom base map option when a 'default' base map is picked.
|
|
177
179
|
React.useEffect(() => {
|
|
178
180
|
if (selectedBaseMap instanceof core_common_1.BaseMapLayerSettings
|
|
179
|
-
&& !selectedBaseMap.provider
|
|
180
181
|
&& undefined === baseMapOptions.find((opt) => opt.label === selectedBaseMap.name)
|
|
181
182
|
&& undefined === extraFormats[selectedBaseMap.formatId]) {
|
|
182
183
|
setCustomBaseMap(selectedBaseMap);
|
|
@@ -208,7 +209,7 @@ function BasemapPanel(props) {
|
|
|
208
209
|
return;
|
|
209
210
|
}
|
|
210
211
|
}
|
|
211
|
-
|
|
212
|
+
if (selectedBaseMap instanceof core_common_1.BaseMapLayerSettings) {
|
|
212
213
|
// We got a custom base map
|
|
213
214
|
// First check if the name matches a label of existing base map.
|
|
214
215
|
// If it matches, we assume it's a legacy base map definition missing the provider information.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasemapPanel.js","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n// cSpell:ignore droppable Sublayer Basemap\n\nimport \"./BasemapPanel.scss\";\nimport * as React from \"react\";\nimport { BackgroundMapType, BaseLayerSettings, BaseMapLayerSettings, ColorByName, ColorDef, ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport { ColorBuilder, ColorInputPanel, ColorPalette, ColorPicker, ColorSwatch, ColorValue, IconButton, Popover, Select } from \"@itwin/itwinui-react\";\nimport { MapLayersUI } from \"../../mapLayers\";\nimport { useSourceMapContext } from \"./MapLayerManager\";\nimport { TransparencyPopupButton } from \"./TransparencyPopupButton\";\n\nimport type {\n MapImagerySettings} from \"@itwin/core-common\";\nimport type { Viewport } from \"@itwin/core-frontend\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nconst customBaseMapValue = \"customBaseMap\";\ninterface ExtraFormat {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => string;\n}\n\ninterface BasemapPanelProps {\n disabled?: boolean;\n}\n\n/** @internal */\nexport function BasemapPanel(props: BasemapPanelProps) {\n const [useColorLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.ColorFill\"));\n const { activeViewport, bases } = useSourceMapContext();\n const [selectedBaseMap, setSelectedBaseMap] = React.useState<BaseLayerSettings | undefined>(() => {\n return activeViewport?.displayStyle.settings.mapImagery.backgroundBase;\n });\n\n const [extraFormats] = React.useState<{[formatId: string]:ExtraFormat}>(()=>{\n const extras: {[formatId: string]:ExtraFormat} = {};\n // TODO: Use format string from format class instead of hardcoded string.\n if (IModelApp.mapLayerFormatRegistry.isRegistered(\"GoogleMaps\")) {\n extras.GoogleMaps = {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => {\n let key = base.formatId;\n if (base.properties?.mapType !== undefined) {\n key = `${key}.${base.properties?.mapType.toString()}`;\n if (base.properties?.layerTypes) {\n key = `${key}-${base.properties?.layerTypes.toString()}`;\n }\n }\n return key;\n }\n }\n }\n return extras;\n });\n\n const getSelectKeyFromProvider = React.useCallback(\n (base: BaseMapLayerSettings) => {\n if (base.provider) {\n return `${base.formatId}.${BackgroundMapType[base.provider.type]}`;\n }\n if (extraFormats[base.formatId]) {\n return extraFormats[base.formatId].selectKeyFromSetting(base);\n }\n return base.name;\n },\n [extraFormats],\n );\n\n const [baseMapTransparencyValue, setBaseMapTransparencyValue] = React.useState(() => {\n if (activeViewport) {\n const mapImagery = activeViewport.displayStyle.settings.mapImagery;\n if (mapImagery.backgroundBase instanceof ImageMapLayerSettings) {\n return mapImagery.backgroundBase.transparency;\n } else if (mapImagery.backgroundBase instanceof ColorDef) {\n return mapImagery.backgroundBase.getAlpha() / 255;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n });\n\n const [customBaseMap, setCustomBaseMap] = React.useState<BaseMapLayerSettings | undefined>();\n const [baseMapVisible, setBaseMapVisible] = React.useState(() => {\n if (activeViewport && activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings) {\n return activeViewport.displayStyle.backgroundMapBase.visible;\n }\n return false;\n });\n\n const getBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n const baseOptions: SelectOption<string>[] = [];\n\n baseOptions.push({ value: useColorLabel, label: useColorLabel });\n\n if (bases) {\n baseOptions.push(\n ...bases.map((base) => {\n const value = getSelectKeyFromProvider(base);\n const label = MapLayersUI.translate(`WellKnownBaseMaps.${value}`);\n return { value, label };\n }),\n );\n }\n\n // Add new custom base map definition (avoid adding duplicate entry)\n if (baseMap instanceof BaseMapLayerSettings\n && !baseMap.provider\n && !extraFormats[baseMap.formatId]) {\n // Add new option only if not created duplicate (Support of base map definition without provider)\n if (undefined === baseOptions.find((opt) => opt.label === baseMap.name)) {\n baseOptions.push({ value: customBaseMapValue, label: baseMap.name });\n }\n } else if (customBaseMap) {\n // Add previously defined custom map definition\n baseOptions.push({ value: customBaseMapValue, label: customBaseMap.name });\n }\n return baseOptions;\n },\n [bases, customBaseMap, extraFormats, getSelectKeyFromProvider, useColorLabel],\n );\n\n const [baseMapOptions, setBaseMapOptions] = React.useState<SelectOption<string>[]>(() => getBaseMapOptions(selectedBaseMap));\n\n const updateBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n setBaseMapOptions(getBaseMapOptions(baseMap));\n },\n [getBaseMapOptions],\n );\n\n\n const handleMapImageryChanged = React.useCallback(\n (args: Readonly<MapImagerySettings>) => {\n const baseMap = args.backgroundBase;\n\n // Optimization: If serialized 'backgroundBase' objects are identical, skip refresh\n if (JSON.stringify(baseMap.toJSON()) === JSON.stringify(selectedBaseMap?.toJSON())) {\n return;\n }\n\n setSelectedBaseMap(baseMap); // cache current base map objects\n updateBaseMapOptions(baseMap);\n\n if (baseMap instanceof ImageMapLayerSettings) {\n if (baseMap.transparency !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.transparency);\n }\n\n if (baseMap.visible !== baseMapVisible) {\n setBaseMapVisible(baseMap.visible);\n }\n } else if (baseMap instanceof ColorDef) {\n if (baseMap.getAlpha() !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.getAlpha() / 255);\n }\n }\n },\n [baseMapTransparencyValue, baseMapVisible, selectedBaseMap, updateBaseMapOptions],\n );\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport) => {\n handleMapImageryChanged(vp.displayStyle.settings.mapImagery);\n };\n return activeViewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor display style's onMapImageryChanged event\n React.useEffect(() => {\n return activeViewport?.displayStyle.settings.onMapImageryChanged.addListener(handleMapImageryChanged);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor viewport updates, and refresh the widget accordingly .\n // Note: This is needed for multiple viewport applications.\n React.useEffect(() => {\n if (activeViewport) {\n handleMapImageryChanged(activeViewport.displayStyle.settings.mapImagery);\n }\n }, [activeViewport, handleMapImageryChanged]);\n\n const handleBasemapTransparencyChange = React.useCallback(\n (transparency: number) => {\n if (activeViewport) {\n activeViewport.displayStyle.changeBaseMapTransparency(transparency);\n setBaseMapTransparencyValue(transparency);\n }\n },\n [activeViewport],\n );\n\n // This effect is only to keep a custom base map option when a 'default' base map is picked.\n React.useEffect(() => {\n if (\n selectedBaseMap instanceof BaseMapLayerSettings\n && !selectedBaseMap.provider\n && undefined === baseMapOptions.find((opt) => opt.label === selectedBaseMap.name)\n && undefined === extraFormats[selectedBaseMap.formatId]\n ) {\n setCustomBaseMap(selectedBaseMap);\n }\n }, [baseMapOptions, extraFormats, selectedBaseMap]);\n\n const [presetColors] = React.useState([\n ColorValue.fromTbgr(ColorByName.grey),\n ColorValue.fromTbgr(ColorByName.lightGrey),\n ColorValue.fromTbgr(ColorByName.darkGrey),\n ColorValue.fromTbgr(ColorByName.lightBlue),\n ColorValue.fromTbgr(ColorByName.lightGreen),\n ColorValue.fromTbgr(ColorByName.darkGreen),\n ColorValue.fromTbgr(ColorByName.tan),\n ColorValue.fromTbgr(ColorByName.darkBrown),\n ]);\n\n const baseIsColor = React.useMemo(() => selectedBaseMap instanceof ColorDef, [selectedBaseMap]);\n const baseIsMap = React.useMemo(() => !baseIsColor && selectedBaseMap !== undefined, [baseIsColor, selectedBaseMap]);\n // bgColor is a 32 bit number represented in TBGR format\n const bgColor = React.useMemo(\n () => (baseIsColor ? (selectedBaseMap as ColorDef).toJSON() : presetColors[0].toTbgr()),\n [baseIsColor, selectedBaseMap, presetColors],\n );\n const [selectedBaseMapValue, setSelectedBaseMapValue] = React.useState<SelectOption<string>>({ value: \"\", label: \"\" });\n\n React.useEffect(() => {\n if (baseIsMap) {\n if (selectedBaseMap instanceof BaseMapLayerSettings\n && (selectedBaseMap.provider || extraFormats[selectedBaseMap.formatId])) {\n const mapName = getSelectKeyFromProvider(selectedBaseMap);\n const foundItem = baseMapOptions.find((value) => value.value === mapName);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n } else if (selectedBaseMap instanceof BaseMapLayerSettings) {\n // We got a custom base map\n\n // First check if the name matches a label of existing base map.\n // If it matches, we assume it's a legacy base map definition missing the provider information.\n let foundItem = baseMapOptions.find((opt) => opt.value !== customBaseMapValue && opt.label === selectedBaseMap.name);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n\n // Use custom base map entry\n foundItem = baseMapOptions.find((opt) => opt.value === customBaseMapValue);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n }\n } else if (baseIsColor) {\n setSelectedBaseMapValue(baseMapOptions[0]);\n return;\n }\n setSelectedBaseMapValue({ value: \"\", label: \"\" });\n }, [baseIsColor, baseIsMap, baseMapOptions, extraFormats, getSelectKeyFromProvider, selectedBaseMap]);\n\n const handleBackgroundColorDialogOk = React.useCallback(\n (bgColorValue: ColorValue) => {\n if (activeViewport) {\n const bgColorDef = ColorDef.fromTbgr(bgColorValue.toTbgr());\n // change color and make sure previously set transparency is not lost.\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n\n setSelectedBaseMap(bgColorDef);\n }\n },\n [activeViewport],\n );\n\n const handleBaseMapSelection = React.useCallback(\n (value: string) => {\n if (activeViewport && value) {\n if (value === customBaseMapValue && customBaseMap) {\n activeViewport.displayStyle.backgroundMapBase = customBaseMap;\n } else if (bases) {\n const baseMap = bases.find((provider) => getSelectKeyFromProvider(provider) === value);\n if (baseMap) {\n const baseProps = baseMap.toJSON();\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON({ ...baseProps, visible: baseMapVisible });\n } else {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON(baseProps)\n }\n } else {\n const bgColorDef = ColorDef.fromJSON(bgColor);\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n }\n }\n }\n },\n [activeViewport, customBaseMap, bases, getSelectKeyFromProvider, baseMapVisible, bgColor],\n );\n\n const handleVisibilityChange = React.useCallback(() => {\n if (activeViewport) {\n const newState = !baseMapVisible;\n // BaseMap visibility is only support when backgroundBase is an instance of BaseMapLayerSettings (i.e not a color)...\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = activeViewport.displayStyle.backgroundMapBase.clone({ visible: newState });\n }\n setBaseMapVisible(newState);\n }\n }, [baseMapVisible, activeViewport]);\n\n const [baseLayerLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.BaseLayer\"));\n const [selectBaseMapLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.SelectBaseMap\"));\n const [toggleVisibility] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Widget.ToggleVisibility\"));\n\n return (\n <>\n <span className=\"map-manager-base-label\">{baseLayerLabel}</span>\n <div className=\"map-manager-base-item\">\n <IconButton\n data-testid=\"base-map-visibility-icon-button\"\n className=\"map-manager-basemap-visibility\"\n styleType=\"borderless\"\n size=\"small\" label={toggleVisibility}\n onClick={handleVisibilityChange}\n disabled={props.disabled || !activeViewport || !(activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings)}>\n {baseMapVisible\n ? <SvgVisibilityShow data-testid=\"layer-visibility-icon-show\" />\n : <SvgVisibilityHide data-testid=\"layer-visibility-icon-hide\" />}\n </IconButton>\n <Select\n data-testid=\"base-map-select\"\n className=\"map-manager-base-item-select\"\n options={baseMapOptions}\n placeholder={selectBaseMapLabel}\n value={selectedBaseMapValue.value}\n onChange={handleBaseMapSelection}\n size=\"small\"\n disabled={props.disabled}\n />\n {baseIsColor && (\n <Popover\n content={\n <ColorPicker\n selectedColor={ColorValue.fromTbgr(bgColor)}\n onChangeComplete={handleBackgroundColorDialogOk}\n >\n <ColorBuilder />\n <ColorInputPanel defaultColorFormat='rgb' />\n <ColorPalette\n label=\"Preset Colors\"\n colors={presetColors}\n />\n </ColorPicker>\n }\n >\n <IconButton label='Show color picker' styleType='borderless' className='map-manager-base-item-color components-color-swatch'>\n <ColorSwatch style={{ pointerEvents: 'none' }} color={ColorValue.fromTbgr(bgColor)} />\n </IconButton>\n </Popover>\n )}\n <TransparencyPopupButton disabled={props.disabled} transparency={baseMapTransparencyValue} onTransparencyChange={handleBasemapTransparencyChange} />\n </div>\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BasemapPanel.js","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n// cSpell:ignore droppable Sublayer Basemap\n\nimport \"./BasemapPanel.scss\";\nimport * as React from \"react\";\nimport { BackgroundMapType, BaseLayerSettings, BaseMapLayerSettings, ColorByName, ColorDef, ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport { ColorBuilder, ColorInputPanel, ColorPalette, ColorPicker, ColorSwatch, ColorValue, IconButton, Popover, Select } from \"@itwin/itwinui-react\";\nimport { MapLayersUI } from \"../../mapLayers\";\nimport { useSourceMapContext } from \"./MapLayerManager\";\nimport { TransparencyPopupButton } from \"./TransparencyPopupButton\";\n\nimport type {\n MapImagerySettings} from \"@itwin/core-common\";\nimport type { Viewport } from \"@itwin/core-frontend\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nconst customBaseMapValue = \"customBaseMap\";\ninterface ExtraFormat {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => string;\n}\n\ninterface BasemapPanelProps {\n disabled?: boolean;\n}\n\n/** @internal */\nexport function BasemapPanel(props: BasemapPanelProps) {\n const [useColorLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.ColorFill\"));\n const { activeViewport, bases } = useSourceMapContext();\n const [selectedBaseMap, setSelectedBaseMap] = React.useState<BaseLayerSettings | undefined>(() => {\n return activeViewport?.displayStyle.settings.mapImagery.backgroundBase;\n });\n\n const [extraFormats] = React.useState<{[formatId: string]:ExtraFormat}>(()=>{\n const extras: {[formatId: string]:ExtraFormat} = {};\n // TODO: Use format string from format class instead of hardcoded string.\n if (IModelApp.mapLayerFormatRegistry.isRegistered(\"GoogleMaps\")) {\n extras.GoogleMaps = {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => {\n let key = base.formatId;\n if (base.properties?.mapType !== undefined) {\n key = `${key}.${base.properties?.mapType.toString()}`;\n if (base.properties?.layerTypes) {\n key = `${key}-${base.properties?.layerTypes.toString()}`;\n }\n }\n return key;\n }\n }\n }\n return extras;\n });\n\n const getSelectKeyFromProvider = React.useCallback(\n (base: BaseMapLayerSettings) => {\n if (base.provider) {\n return `${base.formatId}.${BackgroundMapType[base.provider.type]}`;\n }\n if (extraFormats[base.formatId]) {\n return extraFormats[base.formatId].selectKeyFromSetting(base);\n }\n return base.name;\n },\n [extraFormats],\n );\n\n const [baseMapTransparencyValue, setBaseMapTransparencyValue] = React.useState(() => {\n if (activeViewport) {\n const mapImagery = activeViewport.displayStyle.settings.mapImagery;\n if (mapImagery.backgroundBase instanceof ImageMapLayerSettings) {\n return mapImagery.backgroundBase.transparency;\n } else if (mapImagery.backgroundBase instanceof ColorDef) {\n return mapImagery.backgroundBase.getAlpha() / 255;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n });\n\n const [customBaseMap, setCustomBaseMap] = React.useState<BaseMapLayerSettings | undefined>();\n const [baseMapVisible, setBaseMapVisible] = React.useState(() => {\n if (activeViewport && activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings) {\n return activeViewport.displayStyle.backgroundMapBase.visible;\n }\n return false;\n });\n\n const getBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n const baseOptions: SelectOption<string>[] = [];\n\n baseOptions.push({ value: useColorLabel, label: useColorLabel });\n\n if (bases) {\n baseOptions.push(\n ...bases.map((base) => {\n const value = getSelectKeyFromProvider(base);\n const label = MapLayersUI.translate(`WellKnownBaseMaps.${value}`);\n return { value, label };\n }),\n );\n }\n\n const baseMapSelectKey = baseMap ? getSelectKeyFromProvider(baseMap as BaseMapLayerSettings) : \"\";\n\n // Add new custom base map definition (avoid adding duplicate entry)\n if (baseMap instanceof BaseMapLayerSettings\n && baseOptions.find((opt) => opt.value === baseMapSelectKey) === undefined\n && !extraFormats[baseMap.formatId]) {\n // Add new option for the custom base map\n if (undefined === baseOptions.find((opt) => opt.label === baseMap.name)) {\n setCustomBaseMap(baseMap);\n baseOptions.push({ value: customBaseMapValue, label: baseMap.name });\n }\n } else if (customBaseMap) {\n // Add previously defined custom map definition\n baseOptions.push({ value: customBaseMapValue, label: customBaseMap.name });\n }\n return baseOptions;\n },\n [bases, customBaseMap, extraFormats, getSelectKeyFromProvider, useColorLabel],\n );\n\n const [baseMapOptions, setBaseMapOptions] = React.useState<SelectOption<string>[]>(() => getBaseMapOptions(selectedBaseMap));\n\n const updateBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n setBaseMapOptions(getBaseMapOptions(baseMap));\n },\n [getBaseMapOptions],\n );\n\n\n const handleMapImageryChanged = React.useCallback(\n (args: Readonly<MapImagerySettings>) => {\n const baseMap = args.backgroundBase;\n\n // Optimization: If serialized 'backgroundBase' objects are identical, skip refresh\n if (JSON.stringify(baseMap.toJSON()) === JSON.stringify(selectedBaseMap?.toJSON())) {\n return;\n }\n\n setSelectedBaseMap(baseMap); // cache current base map objects\n updateBaseMapOptions(baseMap);\n\n if (baseMap instanceof ImageMapLayerSettings) {\n if (baseMap.transparency !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.transparency);\n }\n\n if (baseMap.visible !== baseMapVisible) {\n setBaseMapVisible(baseMap.visible);\n }\n } else if (baseMap instanceof ColorDef) {\n if (baseMap.getAlpha() !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.getAlpha() / 255);\n }\n }\n },\n [baseMapTransparencyValue, baseMapVisible, selectedBaseMap, updateBaseMapOptions],\n );\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport) => {\n handleMapImageryChanged(vp.displayStyle.settings.mapImagery);\n };\n return activeViewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor display style's onMapImageryChanged event\n React.useEffect(() => {\n return activeViewport?.displayStyle.settings.onMapImageryChanged.addListener(handleMapImageryChanged);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor viewport updates, and refresh the widget accordingly .\n // Note: This is needed for multiple viewport applications.\n React.useEffect(() => {\n if (activeViewport) {\n handleMapImageryChanged(activeViewport.displayStyle.settings.mapImagery);\n }\n }, [activeViewport, handleMapImageryChanged]);\n\n const handleBasemapTransparencyChange = React.useCallback(\n (transparency: number) => {\n if (activeViewport) {\n activeViewport.displayStyle.changeBaseMapTransparency(transparency);\n setBaseMapTransparencyValue(transparency);\n }\n },\n [activeViewport],\n );\n\n // This effect is only to keep a custom base map option when a 'default' base map is picked.\n React.useEffect(() => {\n if (\n selectedBaseMap instanceof BaseMapLayerSettings\n && undefined === baseMapOptions.find((opt) => opt.label === selectedBaseMap.name)\n && undefined === extraFormats[selectedBaseMap.formatId]\n ) {\n setCustomBaseMap(selectedBaseMap);\n }\n }, [baseMapOptions, extraFormats, selectedBaseMap]);\n\n const [presetColors] = React.useState([\n ColorValue.fromTbgr(ColorByName.grey),\n ColorValue.fromTbgr(ColorByName.lightGrey),\n ColorValue.fromTbgr(ColorByName.darkGrey),\n ColorValue.fromTbgr(ColorByName.lightBlue),\n ColorValue.fromTbgr(ColorByName.lightGreen),\n ColorValue.fromTbgr(ColorByName.darkGreen),\n ColorValue.fromTbgr(ColorByName.tan),\n ColorValue.fromTbgr(ColorByName.darkBrown),\n ]);\n\n const baseIsColor = React.useMemo(() => selectedBaseMap instanceof ColorDef, [selectedBaseMap]);\n const baseIsMap = React.useMemo(() => !baseIsColor && selectedBaseMap !== undefined, [baseIsColor, selectedBaseMap]);\n // bgColor is a 32 bit number represented in TBGR format\n const bgColor = React.useMemo(\n () => (baseIsColor ? (selectedBaseMap as ColorDef).toJSON() : presetColors[0].toTbgr()),\n [baseIsColor, selectedBaseMap, presetColors],\n );\n const [selectedBaseMapValue, setSelectedBaseMapValue] = React.useState<SelectOption<string>>({ value: \"\", label: \"\" });\n\n React.useEffect(() => {\n if (baseIsMap) {\n if (selectedBaseMap instanceof BaseMapLayerSettings\n && (selectedBaseMap.provider || extraFormats[selectedBaseMap.formatId])) {\n const mapName = getSelectKeyFromProvider(selectedBaseMap);\n const foundItem = baseMapOptions.find((value) => value.value === mapName);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n }\n\n if (selectedBaseMap instanceof BaseMapLayerSettings) {\n // We got a custom base map\n\n // First check if the name matches a label of existing base map.\n // If it matches, we assume it's a legacy base map definition missing the provider information.\n let foundItem = baseMapOptions.find((opt) => opt.value !== customBaseMapValue && opt.label === selectedBaseMap.name);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n\n // Use custom base map entry\n foundItem = baseMapOptions.find((opt) => opt.value === customBaseMapValue);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n }\n } else if (baseIsColor) {\n setSelectedBaseMapValue(baseMapOptions[0]);\n return;\n }\n setSelectedBaseMapValue({ value: \"\", label: \"\" });\n }, [baseIsColor, baseIsMap, baseMapOptions, extraFormats, getSelectKeyFromProvider, selectedBaseMap]);\n\n const handleBackgroundColorDialogOk = React.useCallback(\n (bgColorValue: ColorValue) => {\n if (activeViewport) {\n const bgColorDef = ColorDef.fromTbgr(bgColorValue.toTbgr());\n // change color and make sure previously set transparency is not lost.\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n\n setSelectedBaseMap(bgColorDef);\n }\n },\n [activeViewport],\n );\n\n const handleBaseMapSelection = React.useCallback(\n (value: string) => {\n if (activeViewport && value) {\n if (value === customBaseMapValue && customBaseMap) {\n activeViewport.displayStyle.backgroundMapBase = customBaseMap;\n } else if (bases) {\n const baseMap = bases.find((provider) => getSelectKeyFromProvider(provider) === value);\n if (baseMap) {\n const baseProps = baseMap.toJSON();\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON({ ...baseProps, visible: baseMapVisible });\n } else {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON(baseProps)\n }\n } else {\n const bgColorDef = ColorDef.fromJSON(bgColor);\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n }\n }\n }\n },\n [activeViewport, customBaseMap, bases, getSelectKeyFromProvider, baseMapVisible, bgColor],\n );\n\n const handleVisibilityChange = React.useCallback(() => {\n if (activeViewport) {\n const newState = !baseMapVisible;\n // BaseMap visibility is only support when backgroundBase is an instance of BaseMapLayerSettings (i.e not a color)...\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = activeViewport.displayStyle.backgroundMapBase.clone({ visible: newState });\n }\n setBaseMapVisible(newState);\n }\n }, [baseMapVisible, activeViewport]);\n\n const [baseLayerLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.BaseLayer\"));\n const [selectBaseMapLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.SelectBaseMap\"));\n const [toggleVisibility] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Widget.ToggleVisibility\"));\n\n return (\n <>\n <span className=\"map-manager-base-label\">{baseLayerLabel}</span>\n <div className=\"map-manager-base-item\">\n <IconButton\n data-testid=\"base-map-visibility-icon-button\"\n className=\"map-manager-basemap-visibility\"\n styleType=\"borderless\"\n size=\"small\" label={toggleVisibility}\n onClick={handleVisibilityChange}\n disabled={props.disabled || !activeViewport || !(activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings)}>\n {baseMapVisible\n ? <SvgVisibilityShow data-testid=\"layer-visibility-icon-show\" />\n : <SvgVisibilityHide data-testid=\"layer-visibility-icon-hide\" />}\n </IconButton>\n <Select\n data-testid=\"base-map-select\"\n className=\"map-manager-base-item-select\"\n options={baseMapOptions}\n placeholder={selectBaseMapLabel}\n value={selectedBaseMapValue.value}\n onChange={handleBaseMapSelection}\n size=\"small\"\n disabled={props.disabled}\n />\n {baseIsColor && (\n <Popover\n content={\n <ColorPicker\n selectedColor={ColorValue.fromTbgr(bgColor)}\n onChangeComplete={handleBackgroundColorDialogOk}\n >\n <ColorBuilder />\n <ColorInputPanel defaultColorFormat='rgb' />\n <ColorPalette\n label=\"Preset Colors\"\n colors={presetColors}\n />\n </ColorPicker>\n }\n >\n <IconButton label='Show color picker' styleType='borderless' className='map-manager-base-item-color components-color-swatch'>\n <ColorSwatch style={{ pointerEvents: 'none' }} color={ColorValue.fromTbgr(bgColor)} />\n </IconButton>\n </Popover>\n )}\n <TransparencyPopupButton disabled={props.disabled} transparency={baseMapTransparencyValue} onTransparencyChange={handleBasemapTransparencyChange} />\n </div>\n </>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMapPresets.d.ts","sourceRoot":"","sources":["../../src/BaseMapPresets.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,+BAA+B,2DAIzC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { GoogleMaps } from "@itwin/map-layers-formats";
|
|
6
|
+
/**
|
|
7
|
+
* Creates default Google Maps base layers settings.
|
|
8
|
+
*/
|
|
9
|
+
export const createDefaultGoogleMapsBaseMaps = () => [
|
|
10
|
+
GoogleMaps.createBaseLayerSettings({ mapType: "satellite", language: "en", region: "US" }),
|
|
11
|
+
GoogleMaps.createBaseLayerSettings({ mapType: "satellite", layerTypes: ["layerRoadmap"], language: "en", region: "US" }),
|
|
12
|
+
GoogleMaps.createBaseLayerSettings({ mapType: "roadmap", language: "en", region: "US" }),
|
|
13
|
+
];
|
|
14
|
+
//# sourceMappingURL=BaseMapPresets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMapPresets.js","sourceRoot":"","sources":["../../src/BaseMapPresets.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAAC;IACjD,UAAU,CAAC,uBAAuB,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;IACxF,UAAU,CAAC,uBAAuB,CAAC,EAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;IACtH,UAAU,CAAC,uBAAuB,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;CACvF,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { GoogleMaps } from \"@itwin/map-layers-formats\";\n\n/**\n * Creates default Google Maps base layers settings.\n */\nexport const createDefaultGoogleMapsBaseMaps = () => [\n GoogleMaps.createBaseLayerSettings({mapType: \"satellite\", language: \"en\", region: \"US\"}),\n GoogleMaps.createBaseLayerSettings({mapType: \"satellite\", layerTypes: [\"layerRoadmap\"], language: \"en\", region: \"US\"}),\n GoogleMaps.createBaseLayerSettings({mapType: \"roadmap\", language: \"en\", region: \"US\"}),\n ];\n"]}
|
package/lib/esm/map-layers.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-layers.d.ts","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"map-layers.d.ts","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC"}
|
package/lib/esm/map-layers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-layers.js","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport * from \"./mapLayers\";\nexport * from \"./MapLayersActionIds\";\nexport * from \"./MapLayersPrefBrowserStorage\";\nexport * from \"./ui/Interfaces\";\nexport * from \"./ui/MapLayersUiItemsProvider\";\nexport * from \"./ui/FeatureInfoUiItemsProvider\";\nexport * from \"./ui/widget/MapLayersWidget\";\n"]}
|
|
1
|
+
{"version":3,"file":"map-layers.js","sourceRoot":"","sources":["../../src/map-layers.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nexport * from \"./mapLayers\";\nexport * from \"./MapLayersActionIds\";\nexport * from \"./MapLayersPrefBrowserStorage\";\nexport * from \"./ui/Interfaces\";\nexport * from \"./ui/MapLayersUiItemsProvider\";\nexport * from \"./ui/FeatureInfoUiItemsProvider\";\nexport * from \"./ui/widget/MapLayersWidget\";\nexport * from \"./BaseMapPresets\";\n"]}
|
|
@@ -74,7 +74,7 @@ export class FeatureInfoUiItemsProvider {
|
|
|
74
74
|
provideWidgets(_stageId, stageUsage, location, section) {
|
|
75
75
|
const widgets = [];
|
|
76
76
|
const tmpSection = section ?? StagePanelSection.End;
|
|
77
|
-
if (tmpSection === StagePanelSection.End && stageUsage === StageUsage.General && location === StagePanelLocation.Right) {
|
|
77
|
+
if (tmpSection === StagePanelSection.End && (stageUsage === StageUsage.General || stageUsage === StageUsage.Edit) && location === StagePanelLocation.Right) {
|
|
78
78
|
widgets.push({
|
|
79
79
|
id: FeatureInfoUiItemsProvider.widgetId,
|
|
80
80
|
label: MapLayersUI.localization.getLocalizedString("mapLayers:FeatureInfoWidget.Label"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureInfoUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FeatureInfoUiItemsProvider.js","sourceRoot":"","sources":["../../../src/ui/FeatureInfoUiItemsProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport { StagePanelLocation, StagePanelSection, StageUsage, ToolbarItemUtilities, ToolbarOrientation, ToolbarUsage, WidgetState } from \"@itwin/appui-react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SvgMapInfo } from \"@itwin/itwinui-icons-react\";\nimport { MapFeatureInfoTool } from \"@itwin/map-layers-formats\";\nimport { MapLayersUI } from \"../mapLayers\";\nimport { MapLayersSyncUiEventId } from \"../MapLayersActionIds\";\nimport { MapFeatureInfoWidget } from \"./widget/FeatureInfoWidget\";\n\nimport type { ToolbarActionItem, ToolbarItem, UiItemsProvider } from \"@itwin/appui-react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport type { MapLayerProps } from \"@itwin/core-common\";\nimport type { MapFeatureInfoOptions } from \"./Interfaces\";\nconst supportsMapFeatureInfo = (vp: ScreenViewport, isOverlay: boolean, mapLayerProps: MapLayerProps[]): boolean => {\n for (let mapLayerIndex = 0; mapLayerIndex < mapLayerProps.length; mapLayerIndex++) {\n if (mapLayerProps[mapLayerIndex].visible && mapLayerProps[mapLayerIndex].transparency !== 1.0) {\n const layerProvider = vp.getMapLayerImageryProvider({ index: mapLayerIndex, isOverlay });\n if (layerProvider?.supportsMapFeatureInfo) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst isMapFeatureInfoSupported = (): boolean => {\n const vp = IModelApp.viewManager.selectedView;\n if (vp?.viewFlags.backgroundMap) {\n const backgroundLayers = vp.displayStyle.settings.mapImagery.backgroundLayers.map((value) => value.toJSON());\n if (supportsMapFeatureInfo(vp, false, backgroundLayers)) {\n return true;\n }\n const overlayLayers = vp.displayStyle.settings.mapImagery.overlayLayers.map((value) => value.toJSON());\n if (supportsMapFeatureInfo(vp, true, overlayLayers)) {\n return true;\n }\n }\n return false;\n};\n\nexport const getMapFeatureInfoToolItemDef = (itemPriority: number): ToolbarActionItem => {\n return ToolbarItemUtilities.createActionItem({\n id: MapFeatureInfoTool.toolId,\n icon: <SvgMapInfo />, // TODO: Update to iconNode when moving to 5.x appui-react\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.Label\"),\n description: MapFeatureInfoTool.description,\n itemPriority,\n execute: async () => {\n await IModelApp.tools.run(MapFeatureInfoTool.toolId);\n },\n isHidden: new ConditionalBooleanValue(() => {\n // Hide the MapFeatureInfoTool if the Map Layers toggle is off or no ArcGISFeature layers are active\n return !isMapFeatureInfoSupported();\n }, [MapLayersSyncUiEventId.MapImageryChanged]),\n layouts: {\n standard: {\n orientation: ToolbarOrientation.Vertical,\n usage: ToolbarUsage.ContentManipulation,\n }\n }\n });\n};\n\nexport class FeatureInfoUiItemsProvider implements UiItemsProvider {\n public readonly id = \"FeatureInfoUiItemsProvider\";\n public static readonly widgetId = \"map-layers:mapFeatureInfoWidget\";\n\n public constructor(private _featureInfoOpts: MapFeatureInfoOptions) {}\n\n public getToolbarItems(): ReadonlyArray<ToolbarItem> {\n if (!this._featureInfoOpts?.disableDefaultFeatureInfoTool) {\n return [getMapFeatureInfoToolItemDef(60)];\n }\n\n return [];\n }\n\n public provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection) {\n const widgets = [];\n\n const tmpSection = section ?? StagePanelSection.End;\n if (tmpSection === StagePanelSection.End && (stageUsage === StageUsage.General || stageUsage === StageUsage.Edit) && location === StagePanelLocation.Right) {\n widgets.push({\n id: FeatureInfoUiItemsProvider.widgetId,\n label: MapLayersUI.localization.getLocalizedString(\"mapLayers:FeatureInfoWidget.Label\"),\n icon: <SvgMapInfo />,\n content: <MapFeatureInfoWidget featureInfoOpts={this._featureInfoOpts} />,\n defaultState: WidgetState.Hidden,\n });\n }\n\n return widgets;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasemapPanel.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"AAMA,OAAO,qBAAqB,CAAC;AAmB7B,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"BasemapPanel.d.ts","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"AAMA,OAAO,qBAAqB,CAAC;AAmB7B,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAsVpD"}
|
|
@@ -83,12 +83,14 @@ export function BasemapPanel(props) {
|
|
|
83
83
|
return { value, label };
|
|
84
84
|
}));
|
|
85
85
|
}
|
|
86
|
+
const baseMapSelectKey = baseMap ? getSelectKeyFromProvider(baseMap) : "";
|
|
86
87
|
// Add new custom base map definition (avoid adding duplicate entry)
|
|
87
88
|
if (baseMap instanceof BaseMapLayerSettings
|
|
88
|
-
&&
|
|
89
|
+
&& baseOptions.find((opt) => opt.value === baseMapSelectKey) === undefined
|
|
89
90
|
&& !extraFormats[baseMap.formatId]) {
|
|
90
|
-
// Add new option
|
|
91
|
+
// Add new option for the custom base map
|
|
91
92
|
if (undefined === baseOptions.find((opt) => opt.label === baseMap.name)) {
|
|
93
|
+
setCustomBaseMap(baseMap);
|
|
92
94
|
baseOptions.push({ value: customBaseMapValue, label: baseMap.name });
|
|
93
95
|
}
|
|
94
96
|
}
|
|
@@ -150,7 +152,6 @@ export function BasemapPanel(props) {
|
|
|
150
152
|
// This effect is only to keep a custom base map option when a 'default' base map is picked.
|
|
151
153
|
React.useEffect(() => {
|
|
152
154
|
if (selectedBaseMap instanceof BaseMapLayerSettings
|
|
153
|
-
&& !selectedBaseMap.provider
|
|
154
155
|
&& undefined === baseMapOptions.find((opt) => opt.label === selectedBaseMap.name)
|
|
155
156
|
&& undefined === extraFormats[selectedBaseMap.formatId]) {
|
|
156
157
|
setCustomBaseMap(selectedBaseMap);
|
|
@@ -182,7 +183,7 @@ export function BasemapPanel(props) {
|
|
|
182
183
|
return;
|
|
183
184
|
}
|
|
184
185
|
}
|
|
185
|
-
|
|
186
|
+
if (selectedBaseMap instanceof BaseMapLayerSettings) {
|
|
186
187
|
// We got a custom base map
|
|
187
188
|
// First check if the name matches a label of existing base map.
|
|
188
189
|
// If it matches, we assume it's a legacy base map definition missing the provider information.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasemapPanel.js","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n// cSpell:ignore droppable Sublayer Basemap\n\nimport \"./BasemapPanel.scss\";\nimport * as React from \"react\";\nimport { BackgroundMapType, BaseLayerSettings, BaseMapLayerSettings, ColorByName, ColorDef, ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport { ColorBuilder, ColorInputPanel, ColorPalette, ColorPicker, ColorSwatch, ColorValue, IconButton, Popover, Select } from \"@itwin/itwinui-react\";\nimport { MapLayersUI } from \"../../mapLayers\";\nimport { useSourceMapContext } from \"./MapLayerManager\";\nimport { TransparencyPopupButton } from \"./TransparencyPopupButton\";\n\nimport type {\n MapImagerySettings} from \"@itwin/core-common\";\nimport type { Viewport } from \"@itwin/core-frontend\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nconst customBaseMapValue = \"customBaseMap\";\ninterface ExtraFormat {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => string;\n}\n\ninterface BasemapPanelProps {\n disabled?: boolean;\n}\n\n/** @internal */\nexport function BasemapPanel(props: BasemapPanelProps) {\n const [useColorLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.ColorFill\"));\n const { activeViewport, bases } = useSourceMapContext();\n const [selectedBaseMap, setSelectedBaseMap] = React.useState<BaseLayerSettings | undefined>(() => {\n return activeViewport?.displayStyle.settings.mapImagery.backgroundBase;\n });\n\n const [extraFormats] = React.useState<{[formatId: string]:ExtraFormat}>(()=>{\n const extras: {[formatId: string]:ExtraFormat} = {};\n // TODO: Use format string from format class instead of hardcoded string.\n if (IModelApp.mapLayerFormatRegistry.isRegistered(\"GoogleMaps\")) {\n extras.GoogleMaps = {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => {\n let key = base.formatId;\n if (base.properties?.mapType !== undefined) {\n key = `${key}.${base.properties?.mapType.toString()}`;\n if (base.properties?.layerTypes) {\n key = `${key}-${base.properties?.layerTypes.toString()}`;\n }\n }\n return key;\n }\n }\n }\n return extras;\n });\n\n const getSelectKeyFromProvider = React.useCallback(\n (base: BaseMapLayerSettings) => {\n if (base.provider) {\n return `${base.formatId}.${BackgroundMapType[base.provider.type]}`;\n }\n if (extraFormats[base.formatId]) {\n return extraFormats[base.formatId].selectKeyFromSetting(base);\n }\n return base.name;\n },\n [extraFormats],\n );\n\n const [baseMapTransparencyValue, setBaseMapTransparencyValue] = React.useState(() => {\n if (activeViewport) {\n const mapImagery = activeViewport.displayStyle.settings.mapImagery;\n if (mapImagery.backgroundBase instanceof ImageMapLayerSettings) {\n return mapImagery.backgroundBase.transparency;\n } else if (mapImagery.backgroundBase instanceof ColorDef) {\n return mapImagery.backgroundBase.getAlpha() / 255;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n });\n\n const [customBaseMap, setCustomBaseMap] = React.useState<BaseMapLayerSettings | undefined>();\n const [baseMapVisible, setBaseMapVisible] = React.useState(() => {\n if (activeViewport && activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings) {\n return activeViewport.displayStyle.backgroundMapBase.visible;\n }\n return false;\n });\n\n const getBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n const baseOptions: SelectOption<string>[] = [];\n\n baseOptions.push({ value: useColorLabel, label: useColorLabel });\n\n if (bases) {\n baseOptions.push(\n ...bases.map((base) => {\n const value = getSelectKeyFromProvider(base);\n const label = MapLayersUI.translate(`WellKnownBaseMaps.${value}`);\n return { value, label };\n }),\n );\n }\n\n // Add new custom base map definition (avoid adding duplicate entry)\n if (baseMap instanceof BaseMapLayerSettings\n && !baseMap.provider\n && !extraFormats[baseMap.formatId]) {\n // Add new option only if not created duplicate (Support of base map definition without provider)\n if (undefined === baseOptions.find((opt) => opt.label === baseMap.name)) {\n baseOptions.push({ value: customBaseMapValue, label: baseMap.name });\n }\n } else if (customBaseMap) {\n // Add previously defined custom map definition\n baseOptions.push({ value: customBaseMapValue, label: customBaseMap.name });\n }\n return baseOptions;\n },\n [bases, customBaseMap, extraFormats, getSelectKeyFromProvider, useColorLabel],\n );\n\n const [baseMapOptions, setBaseMapOptions] = React.useState<SelectOption<string>[]>(() => getBaseMapOptions(selectedBaseMap));\n\n const updateBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n setBaseMapOptions(getBaseMapOptions(baseMap));\n },\n [getBaseMapOptions],\n );\n\n\n const handleMapImageryChanged = React.useCallback(\n (args: Readonly<MapImagerySettings>) => {\n const baseMap = args.backgroundBase;\n\n // Optimization: If serialized 'backgroundBase' objects are identical, skip refresh\n if (JSON.stringify(baseMap.toJSON()) === JSON.stringify(selectedBaseMap?.toJSON())) {\n return;\n }\n\n setSelectedBaseMap(baseMap); // cache current base map objects\n updateBaseMapOptions(baseMap);\n\n if (baseMap instanceof ImageMapLayerSettings) {\n if (baseMap.transparency !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.transparency);\n }\n\n if (baseMap.visible !== baseMapVisible) {\n setBaseMapVisible(baseMap.visible);\n }\n } else if (baseMap instanceof ColorDef) {\n if (baseMap.getAlpha() !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.getAlpha() / 255);\n }\n }\n },\n [baseMapTransparencyValue, baseMapVisible, selectedBaseMap, updateBaseMapOptions],\n );\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport) => {\n handleMapImageryChanged(vp.displayStyle.settings.mapImagery);\n };\n return activeViewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor display style's onMapImageryChanged event\n React.useEffect(() => {\n return activeViewport?.displayStyle.settings.onMapImageryChanged.addListener(handleMapImageryChanged);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor viewport updates, and refresh the widget accordingly .\n // Note: This is needed for multiple viewport applications.\n React.useEffect(() => {\n if (activeViewport) {\n handleMapImageryChanged(activeViewport.displayStyle.settings.mapImagery);\n }\n }, [activeViewport, handleMapImageryChanged]);\n\n const handleBasemapTransparencyChange = React.useCallback(\n (transparency: number) => {\n if (activeViewport) {\n activeViewport.displayStyle.changeBaseMapTransparency(transparency);\n setBaseMapTransparencyValue(transparency);\n }\n },\n [activeViewport],\n );\n\n // This effect is only to keep a custom base map option when a 'default' base map is picked.\n React.useEffect(() => {\n if (\n selectedBaseMap instanceof BaseMapLayerSettings\n && !selectedBaseMap.provider\n && undefined === baseMapOptions.find((opt) => opt.label === selectedBaseMap.name)\n && undefined === extraFormats[selectedBaseMap.formatId]\n ) {\n setCustomBaseMap(selectedBaseMap);\n }\n }, [baseMapOptions, extraFormats, selectedBaseMap]);\n\n const [presetColors] = React.useState([\n ColorValue.fromTbgr(ColorByName.grey),\n ColorValue.fromTbgr(ColorByName.lightGrey),\n ColorValue.fromTbgr(ColorByName.darkGrey),\n ColorValue.fromTbgr(ColorByName.lightBlue),\n ColorValue.fromTbgr(ColorByName.lightGreen),\n ColorValue.fromTbgr(ColorByName.darkGreen),\n ColorValue.fromTbgr(ColorByName.tan),\n ColorValue.fromTbgr(ColorByName.darkBrown),\n ]);\n\n const baseIsColor = React.useMemo(() => selectedBaseMap instanceof ColorDef, [selectedBaseMap]);\n const baseIsMap = React.useMemo(() => !baseIsColor && selectedBaseMap !== undefined, [baseIsColor, selectedBaseMap]);\n // bgColor is a 32 bit number represented in TBGR format\n const bgColor = React.useMemo(\n () => (baseIsColor ? (selectedBaseMap as ColorDef).toJSON() : presetColors[0].toTbgr()),\n [baseIsColor, selectedBaseMap, presetColors],\n );\n const [selectedBaseMapValue, setSelectedBaseMapValue] = React.useState<SelectOption<string>>({ value: \"\", label: \"\" });\n\n React.useEffect(() => {\n if (baseIsMap) {\n if (selectedBaseMap instanceof BaseMapLayerSettings\n && (selectedBaseMap.provider || extraFormats[selectedBaseMap.formatId])) {\n const mapName = getSelectKeyFromProvider(selectedBaseMap);\n const foundItem = baseMapOptions.find((value) => value.value === mapName);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n } else if (selectedBaseMap instanceof BaseMapLayerSettings) {\n // We got a custom base map\n\n // First check if the name matches a label of existing base map.\n // If it matches, we assume it's a legacy base map definition missing the provider information.\n let foundItem = baseMapOptions.find((opt) => opt.value !== customBaseMapValue && opt.label === selectedBaseMap.name);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n\n // Use custom base map entry\n foundItem = baseMapOptions.find((opt) => opt.value === customBaseMapValue);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n }\n } else if (baseIsColor) {\n setSelectedBaseMapValue(baseMapOptions[0]);\n return;\n }\n setSelectedBaseMapValue({ value: \"\", label: \"\" });\n }, [baseIsColor, baseIsMap, baseMapOptions, extraFormats, getSelectKeyFromProvider, selectedBaseMap]);\n\n const handleBackgroundColorDialogOk = React.useCallback(\n (bgColorValue: ColorValue) => {\n if (activeViewport) {\n const bgColorDef = ColorDef.fromTbgr(bgColorValue.toTbgr());\n // change color and make sure previously set transparency is not lost.\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n\n setSelectedBaseMap(bgColorDef);\n }\n },\n [activeViewport],\n );\n\n const handleBaseMapSelection = React.useCallback(\n (value: string) => {\n if (activeViewport && value) {\n if (value === customBaseMapValue && customBaseMap) {\n activeViewport.displayStyle.backgroundMapBase = customBaseMap;\n } else if (bases) {\n const baseMap = bases.find((provider) => getSelectKeyFromProvider(provider) === value);\n if (baseMap) {\n const baseProps = baseMap.toJSON();\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON({ ...baseProps, visible: baseMapVisible });\n } else {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON(baseProps)\n }\n } else {\n const bgColorDef = ColorDef.fromJSON(bgColor);\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n }\n }\n }\n },\n [activeViewport, customBaseMap, bases, getSelectKeyFromProvider, baseMapVisible, bgColor],\n );\n\n const handleVisibilityChange = React.useCallback(() => {\n if (activeViewport) {\n const newState = !baseMapVisible;\n // BaseMap visibility is only support when backgroundBase is an instance of BaseMapLayerSettings (i.e not a color)...\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = activeViewport.displayStyle.backgroundMapBase.clone({ visible: newState });\n }\n setBaseMapVisible(newState);\n }\n }, [baseMapVisible, activeViewport]);\n\n const [baseLayerLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.BaseLayer\"));\n const [selectBaseMapLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.SelectBaseMap\"));\n const [toggleVisibility] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Widget.ToggleVisibility\"));\n\n return (\n <>\n <span className=\"map-manager-base-label\">{baseLayerLabel}</span>\n <div className=\"map-manager-base-item\">\n <IconButton\n data-testid=\"base-map-visibility-icon-button\"\n className=\"map-manager-basemap-visibility\"\n styleType=\"borderless\"\n size=\"small\" label={toggleVisibility}\n onClick={handleVisibilityChange}\n disabled={props.disabled || !activeViewport || !(activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings)}>\n {baseMapVisible\n ? <SvgVisibilityShow data-testid=\"layer-visibility-icon-show\" />\n : <SvgVisibilityHide data-testid=\"layer-visibility-icon-hide\" />}\n </IconButton>\n <Select\n data-testid=\"base-map-select\"\n className=\"map-manager-base-item-select\"\n options={baseMapOptions}\n placeholder={selectBaseMapLabel}\n value={selectedBaseMapValue.value}\n onChange={handleBaseMapSelection}\n size=\"small\"\n disabled={props.disabled}\n />\n {baseIsColor && (\n <Popover\n content={\n <ColorPicker\n selectedColor={ColorValue.fromTbgr(bgColor)}\n onChangeComplete={handleBackgroundColorDialogOk}\n >\n <ColorBuilder />\n <ColorInputPanel defaultColorFormat='rgb' />\n <ColorPalette\n label=\"Preset Colors\"\n colors={presetColors}\n />\n </ColorPicker>\n }\n >\n <IconButton label='Show color picker' styleType='borderless' className='map-manager-base-item-color components-color-swatch'>\n <ColorSwatch style={{ pointerEvents: 'none' }} color={ColorValue.fromTbgr(bgColor)} />\n </IconButton>\n </Popover>\n )}\n <TransparencyPopupButton disabled={props.disabled} transparency={baseMapTransparencyValue} onTransparencyChange={handleBasemapTransparencyChange} />\n </div>\n </>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BasemapPanel.js","sourceRoot":"","sources":["../../../../src/ui/widget/BasemapPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n// cSpell:ignore droppable Sublayer Basemap\n\nimport \"./BasemapPanel.scss\";\nimport * as React from \"react\";\nimport { BackgroundMapType, BaseLayerSettings, BaseMapLayerSettings, ColorByName, ColorDef, ImageMapLayerSettings } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport { ColorBuilder, ColorInputPanel, ColorPalette, ColorPicker, ColorSwatch, ColorValue, IconButton, Popover, Select } from \"@itwin/itwinui-react\";\nimport { MapLayersUI } from \"../../mapLayers\";\nimport { useSourceMapContext } from \"./MapLayerManager\";\nimport { TransparencyPopupButton } from \"./TransparencyPopupButton\";\n\nimport type {\n MapImagerySettings} from \"@itwin/core-common\";\nimport type { Viewport } from \"@itwin/core-frontend\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nconst customBaseMapValue = \"customBaseMap\";\ninterface ExtraFormat {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => string;\n}\n\ninterface BasemapPanelProps {\n disabled?: boolean;\n}\n\n/** @internal */\nexport function BasemapPanel(props: BasemapPanelProps) {\n const [useColorLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.ColorFill\"));\n const { activeViewport, bases } = useSourceMapContext();\n const [selectedBaseMap, setSelectedBaseMap] = React.useState<BaseLayerSettings | undefined>(() => {\n return activeViewport?.displayStyle.settings.mapImagery.backgroundBase;\n });\n\n const [extraFormats] = React.useState<{[formatId: string]:ExtraFormat}>(()=>{\n const extras: {[formatId: string]:ExtraFormat} = {};\n // TODO: Use format string from format class instead of hardcoded string.\n if (IModelApp.mapLayerFormatRegistry.isRegistered(\"GoogleMaps\")) {\n extras.GoogleMaps = {\n selectKeyFromSetting: (base: BaseMapLayerSettings) => {\n let key = base.formatId;\n if (base.properties?.mapType !== undefined) {\n key = `${key}.${base.properties?.mapType.toString()}`;\n if (base.properties?.layerTypes) {\n key = `${key}-${base.properties?.layerTypes.toString()}`;\n }\n }\n return key;\n }\n }\n }\n return extras;\n });\n\n const getSelectKeyFromProvider = React.useCallback(\n (base: BaseMapLayerSettings) => {\n if (base.provider) {\n return `${base.formatId}.${BackgroundMapType[base.provider.type]}`;\n }\n if (extraFormats[base.formatId]) {\n return extraFormats[base.formatId].selectKeyFromSetting(base);\n }\n return base.name;\n },\n [extraFormats],\n );\n\n const [baseMapTransparencyValue, setBaseMapTransparencyValue] = React.useState(() => {\n if (activeViewport) {\n const mapImagery = activeViewport.displayStyle.settings.mapImagery;\n if (mapImagery.backgroundBase instanceof ImageMapLayerSettings) {\n return mapImagery.backgroundBase.transparency;\n } else if (mapImagery.backgroundBase instanceof ColorDef) {\n return mapImagery.backgroundBase.getAlpha() / 255;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n });\n\n const [customBaseMap, setCustomBaseMap] = React.useState<BaseMapLayerSettings | undefined>();\n const [baseMapVisible, setBaseMapVisible] = React.useState(() => {\n if (activeViewport && activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings) {\n return activeViewport.displayStyle.backgroundMapBase.visible;\n }\n return false;\n });\n\n const getBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n const baseOptions: SelectOption<string>[] = [];\n\n baseOptions.push({ value: useColorLabel, label: useColorLabel });\n\n if (bases) {\n baseOptions.push(\n ...bases.map((base) => {\n const value = getSelectKeyFromProvider(base);\n const label = MapLayersUI.translate(`WellKnownBaseMaps.${value}`);\n return { value, label };\n }),\n );\n }\n\n const baseMapSelectKey = baseMap ? getSelectKeyFromProvider(baseMap as BaseMapLayerSettings) : \"\";\n\n // Add new custom base map definition (avoid adding duplicate entry)\n if (baseMap instanceof BaseMapLayerSettings\n && baseOptions.find((opt) => opt.value === baseMapSelectKey) === undefined\n && !extraFormats[baseMap.formatId]) {\n // Add new option for the custom base map\n if (undefined === baseOptions.find((opt) => opt.label === baseMap.name)) {\n setCustomBaseMap(baseMap);\n baseOptions.push({ value: customBaseMapValue, label: baseMap.name });\n }\n } else if (customBaseMap) {\n // Add previously defined custom map definition\n baseOptions.push({ value: customBaseMapValue, label: customBaseMap.name });\n }\n return baseOptions;\n },\n [bases, customBaseMap, extraFormats, getSelectKeyFromProvider, useColorLabel],\n );\n\n const [baseMapOptions, setBaseMapOptions] = React.useState<SelectOption<string>[]>(() => getBaseMapOptions(selectedBaseMap));\n\n const updateBaseMapOptions = React.useCallback(\n (baseMap: BaseLayerSettings | undefined) => {\n setBaseMapOptions(getBaseMapOptions(baseMap));\n },\n [getBaseMapOptions],\n );\n\n\n const handleMapImageryChanged = React.useCallback(\n (args: Readonly<MapImagerySettings>) => {\n const baseMap = args.backgroundBase;\n\n // Optimization: If serialized 'backgroundBase' objects are identical, skip refresh\n if (JSON.stringify(baseMap.toJSON()) === JSON.stringify(selectedBaseMap?.toJSON())) {\n return;\n }\n\n setSelectedBaseMap(baseMap); // cache current base map objects\n updateBaseMapOptions(baseMap);\n\n if (baseMap instanceof ImageMapLayerSettings) {\n if (baseMap.transparency !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.transparency);\n }\n\n if (baseMap.visible !== baseMapVisible) {\n setBaseMapVisible(baseMap.visible);\n }\n } else if (baseMap instanceof ColorDef) {\n if (baseMap.getAlpha() !== baseMapTransparencyValue) {\n setBaseMapTransparencyValue(baseMap.getAlpha() / 255);\n }\n }\n },\n [baseMapTransparencyValue, baseMapVisible, selectedBaseMap, updateBaseMapOptions],\n );\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport) => {\n handleMapImageryChanged(vp.displayStyle.settings.mapImagery);\n };\n return activeViewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor display style's onMapImageryChanged event\n React.useEffect(() => {\n return activeViewport?.displayStyle.settings.onMapImageryChanged.addListener(handleMapImageryChanged);\n }, [activeViewport, handleMapImageryChanged]);\n\n // Monitor viewport updates, and refresh the widget accordingly .\n // Note: This is needed for multiple viewport applications.\n React.useEffect(() => {\n if (activeViewport) {\n handleMapImageryChanged(activeViewport.displayStyle.settings.mapImagery);\n }\n }, [activeViewport, handleMapImageryChanged]);\n\n const handleBasemapTransparencyChange = React.useCallback(\n (transparency: number) => {\n if (activeViewport) {\n activeViewport.displayStyle.changeBaseMapTransparency(transparency);\n setBaseMapTransparencyValue(transparency);\n }\n },\n [activeViewport],\n );\n\n // This effect is only to keep a custom base map option when a 'default' base map is picked.\n React.useEffect(() => {\n if (\n selectedBaseMap instanceof BaseMapLayerSettings\n && undefined === baseMapOptions.find((opt) => opt.label === selectedBaseMap.name)\n && undefined === extraFormats[selectedBaseMap.formatId]\n ) {\n setCustomBaseMap(selectedBaseMap);\n }\n }, [baseMapOptions, extraFormats, selectedBaseMap]);\n\n const [presetColors] = React.useState([\n ColorValue.fromTbgr(ColorByName.grey),\n ColorValue.fromTbgr(ColorByName.lightGrey),\n ColorValue.fromTbgr(ColorByName.darkGrey),\n ColorValue.fromTbgr(ColorByName.lightBlue),\n ColorValue.fromTbgr(ColorByName.lightGreen),\n ColorValue.fromTbgr(ColorByName.darkGreen),\n ColorValue.fromTbgr(ColorByName.tan),\n ColorValue.fromTbgr(ColorByName.darkBrown),\n ]);\n\n const baseIsColor = React.useMemo(() => selectedBaseMap instanceof ColorDef, [selectedBaseMap]);\n const baseIsMap = React.useMemo(() => !baseIsColor && selectedBaseMap !== undefined, [baseIsColor, selectedBaseMap]);\n // bgColor is a 32 bit number represented in TBGR format\n const bgColor = React.useMemo(\n () => (baseIsColor ? (selectedBaseMap as ColorDef).toJSON() : presetColors[0].toTbgr()),\n [baseIsColor, selectedBaseMap, presetColors],\n );\n const [selectedBaseMapValue, setSelectedBaseMapValue] = React.useState<SelectOption<string>>({ value: \"\", label: \"\" });\n\n React.useEffect(() => {\n if (baseIsMap) {\n if (selectedBaseMap instanceof BaseMapLayerSettings\n && (selectedBaseMap.provider || extraFormats[selectedBaseMap.formatId])) {\n const mapName = getSelectKeyFromProvider(selectedBaseMap);\n const foundItem = baseMapOptions.find((value) => value.value === mapName);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n }\n\n if (selectedBaseMap instanceof BaseMapLayerSettings) {\n // We got a custom base map\n\n // First check if the name matches a label of existing base map.\n // If it matches, we assume it's a legacy base map definition missing the provider information.\n let foundItem = baseMapOptions.find((opt) => opt.value !== customBaseMapValue && opt.label === selectedBaseMap.name);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n\n // Use custom base map entry\n foundItem = baseMapOptions.find((opt) => opt.value === customBaseMapValue);\n if (foundItem) {\n setSelectedBaseMapValue(foundItem);\n return;\n }\n }\n } else if (baseIsColor) {\n setSelectedBaseMapValue(baseMapOptions[0]);\n return;\n }\n setSelectedBaseMapValue({ value: \"\", label: \"\" });\n }, [baseIsColor, baseIsMap, baseMapOptions, extraFormats, getSelectKeyFromProvider, selectedBaseMap]);\n\n const handleBackgroundColorDialogOk = React.useCallback(\n (bgColorValue: ColorValue) => {\n if (activeViewport) {\n const bgColorDef = ColorDef.fromTbgr(bgColorValue.toTbgr());\n // change color and make sure previously set transparency is not lost.\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n\n setSelectedBaseMap(bgColorDef);\n }\n },\n [activeViewport],\n );\n\n const handleBaseMapSelection = React.useCallback(\n (value: string) => {\n if (activeViewport && value) {\n if (value === customBaseMapValue && customBaseMap) {\n activeViewport.displayStyle.backgroundMapBase = customBaseMap;\n } else if (bases) {\n const baseMap = bases.find((provider) => getSelectKeyFromProvider(provider) === value);\n if (baseMap) {\n const baseProps = baseMap.toJSON();\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON({ ...baseProps, visible: baseMapVisible });\n } else {\n activeViewport.displayStyle.backgroundMapBase = BaseLayerSettings.fromJSON(baseProps)\n }\n } else {\n const bgColorDef = ColorDef.fromJSON(bgColor);\n const curTransparency =\n activeViewport.displayStyle.backgroundMapBase instanceof ColorDef ? activeViewport.displayStyle.backgroundMapBase.getTransparency() : 0;\n activeViewport.displayStyle.backgroundMapBase = bgColorDef.withTransparency(curTransparency);\n }\n }\n }\n },\n [activeViewport, customBaseMap, bases, getSelectKeyFromProvider, baseMapVisible, bgColor],\n );\n\n const handleVisibilityChange = React.useCallback(() => {\n if (activeViewport) {\n const newState = !baseMapVisible;\n // BaseMap visibility is only support when backgroundBase is an instance of BaseMapLayerSettings (i.e not a color)...\n if (activeViewport.displayStyle.backgroundMapBase instanceof BaseMapLayerSettings) {\n activeViewport.displayStyle.backgroundMapBase = activeViewport.displayStyle.backgroundMapBase.clone({ visible: newState });\n }\n setBaseMapVisible(newState);\n }\n }, [baseMapVisible, activeViewport]);\n\n const [baseLayerLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.BaseLayer\"));\n const [selectBaseMapLabel] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Basemap.SelectBaseMap\"));\n const [toggleVisibility] = React.useState(MapLayersUI.localization.getLocalizedString(\"mapLayers:Widget.ToggleVisibility\"));\n\n return (\n <>\n <span className=\"map-manager-base-label\">{baseLayerLabel}</span>\n <div className=\"map-manager-base-item\">\n <IconButton\n data-testid=\"base-map-visibility-icon-button\"\n className=\"map-manager-basemap-visibility\"\n styleType=\"borderless\"\n size=\"small\" label={toggleVisibility}\n onClick={handleVisibilityChange}\n disabled={props.disabled || !activeViewport || !(activeViewport.displayStyle.backgroundMapBase instanceof ImageMapLayerSettings)}>\n {baseMapVisible\n ? <SvgVisibilityShow data-testid=\"layer-visibility-icon-show\" />\n : <SvgVisibilityHide data-testid=\"layer-visibility-icon-hide\" />}\n </IconButton>\n <Select\n data-testid=\"base-map-select\"\n className=\"map-manager-base-item-select\"\n options={baseMapOptions}\n placeholder={selectBaseMapLabel}\n value={selectedBaseMapValue.value}\n onChange={handleBaseMapSelection}\n size=\"small\"\n disabled={props.disabled}\n />\n {baseIsColor && (\n <Popover\n content={\n <ColorPicker\n selectedColor={ColorValue.fromTbgr(bgColor)}\n onChangeComplete={handleBackgroundColorDialogOk}\n >\n <ColorBuilder />\n <ColorInputPanel defaultColorFormat='rgb' />\n <ColorPalette\n label=\"Preset Colors\"\n colors={presetColors}\n />\n </ColorPicker>\n }\n >\n <IconButton label='Show color picker' styleType='borderless' className='map-manager-base-item-color components-color-swatch'>\n <ColorSwatch style={{ pointerEvents: 'none' }} color={ColorValue.fromTbgr(bgColor)} />\n </IconButton>\n </Popover>\n )}\n <TransparencyPopupButton disabled={props.disabled} transparency={baseMapTransparencyValue} onTransparencyChange={handleBasemapTransparencyChange} />\n </div>\n </>\n );\n}\n"]}
|