@itwin/core-frontend 4.3.0-dev.1 → 4.3.0-dev.4

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 CHANGED
@@ -1,6 +1,11 @@
1
1
  # Change Log - @itwin/core-frontend
2
2
 
3
- This log was last generated on Fri, 29 Sep 2023 18:24:48 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 06 Oct 2023 04:02:58 GMT and should not be manually modified.
4
+
5
+ ## 4.1.8
6
+ Fri, 06 Oct 2023 04:00:18 GMT
7
+
8
+ _Version update only_
4
9
 
5
10
  ## 4.1.7
6
11
  Thu, 28 Sep 2023 21:41:33 GMT
@@ -100,7 +100,7 @@ class RealityDataSourceTilesetUrlImpl {
100
100
  return (0, Request_1.request)(tileUrl, "json");
101
101
  }
102
102
  getTileContentType(url) {
103
- return url.endsWith("json") ? "tileset" : "tile";
103
+ return new URL(url, "https://localhost/").pathname.toLowerCase().endsWith("json") ? "tileset" : "tile";
104
104
  }
105
105
  /**
106
106
  * Gets spatial location and extents of this reality data source
@@ -1 +1 @@
1
- {"version":3,"file":"RealityDataSourceTilesetUrlImpl.js","sourceRoot":"","sources":["../../src/RealityDataSourceTilesetUrlImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { assert, BentleyStatus, GuidString } from \"@itwin/core-bentley\";\r\nimport { IModelError, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\n\r\nimport { request } from \"./request/Request\";\r\nimport { PublisherProductInfo, RealityDataSource, SpatialLocationAndExtents } from \"./RealityDataSource\";\r\nimport { ThreeDTileFormatInterpreter } from \"./tile/internal\";\r\n\r\n/** This class provides access to the reality data provider services.\r\n * It encapsulates access to a reality data weiter it be from local access, http or ProjectWise Context Share.\r\n * The key provided at the creation determines if this is ProjectWise Context Share reference.\r\n * If not then it is considered local (ex: C:\\temp\\TileRoot.json) or plain http access (http://someserver.com/data/TileRoot.json)\r\n * There is a one to one relationship between a reality data and the instances of present class.\r\n* @internal\r\n*/\r\nexport class RealityDataSourceTilesetUrlImpl implements RealityDataSource {\r\n public readonly key: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n /** For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container*/\r\n private _baseUrl: string = \"\";\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n assert(props.sourceKey.provider === RealityDataProvider.TilesetUrl || props.sourceKey.provider === RealityDataProvider.OrbitGtBlob);\r\n this.key = props.sourceKey;\r\n this._tilesetUrl = this.key.id;\r\n }\r\n\r\n /**\r\n * Create an instance of this class from a source key and iTwin context/\r\n */\r\n public static async createFromKey(sourceKey: RealityDataSourceKey, _iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n if (sourceKey.provider !== RealityDataProvider.TilesetUrl)\r\n return undefined;\r\n const rdSource = new RealityDataSourceTilesetUrlImpl({ sourceKey });\r\n return rdSource;\r\n }\r\n\r\n public get isContextShare(): boolean {\r\n return false;\r\n }\r\n /**\r\n * Returns Reality Data if available\r\n */\r\n public get realityData(): RealityData | undefined {\r\n return undefined;\r\n }\r\n public get realityDataId(): string | undefined {\r\n return undefined;\r\n }\r\n /**\r\n * Returns Reality Data type if available\r\n */\r\n public get realityDataType(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n // This is to set the root url from the provided root document path.\r\n // If the root document is stored on PW Context Share then the root document property of the Reality Data is provided,\r\n // otherwise the full path to root document is given.\r\n // The base URL contains the base URL from which tile relative path are constructed.\r\n // The tile's path root will need to be reinserted for child tiles to return a 200\r\n private setBaseUrl(url: string): void {\r\n const urlParts = url.split(\"/\");\r\n urlParts.pop();\r\n if (urlParts.length === 0)\r\n this._baseUrl = \"\";\r\n else\r\n this._baseUrl = `${urlParts.join(\"/\")}/`;\r\n }\r\n\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(_iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n return this._tilesetUrl;\r\n }\r\n\r\n public async getRootDocument(iTwinId: GuidString | undefined): Promise<any> {\r\n const url = await this.getServiceUrl(iTwinId);\r\n if (!url)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to get service url\");\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n this.setBaseUrl(url);\r\n return request(url, \"json\");\r\n }\r\n\r\n /**\r\n * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileContent(name: string): Promise<ArrayBuffer> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"arraybuffer\");\r\n }\r\n\r\n /**\r\n * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileJson(name: string): Promise<any> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"json\");\r\n }\r\n\r\n public getTileContentType(url: string): \"tile\" | \"tileset\" {\r\n return url.endsWith(\"json\") ? \"tileset\" : \"tile\";\r\n }\r\n\r\n /**\r\n * Gets spatial location and extents of this reality data source\r\n * @returns spatial location and extents\r\n * @internal\r\n */\r\n public async getSpatialLocationAndExtents(): Promise<SpatialLocationAndExtents | undefined> {\r\n let spatialLocation: SpatialLocationAndExtents | undefined;\r\n if (this.key.format === RealityDataFormat.ThreeDTile) {\r\n const rootDocument = await this.getRootDocument(undefined);\r\n spatialLocation = ThreeDTileFormatInterpreter.getSpatialLocationAndExtents(rootDocument);\r\n }\r\n return spatialLocation;\r\n }\r\n /**\r\n * Gets information to identify the product and engine that create this reality data\r\n * Will return undefined if cannot be resolved\r\n * @returns information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\n public async getPublisherProductInfo(): Promise<PublisherProductInfo | undefined> {\r\n let publisherInfo: PublisherProductInfo | undefined;\r\n return publisherInfo;\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"RealityDataSourceTilesetUrlImpl.js","sourceRoot":"","sources":["../../src/RealityDataSourceTilesetUrlImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { assert, BentleyStatus, GuidString } from \"@itwin/core-bentley\";\r\nimport { IModelError, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\n\r\nimport { request } from \"./request/Request\";\r\nimport { PublisherProductInfo, RealityDataSource, SpatialLocationAndExtents } from \"./RealityDataSource\";\r\nimport { ThreeDTileFormatInterpreter } from \"./tile/internal\";\r\n\r\n/** This class provides access to the reality data provider services.\r\n * It encapsulates access to a reality data weiter it be from local access, http or ProjectWise Context Share.\r\n * The key provided at the creation determines if this is ProjectWise Context Share reference.\r\n * If not then it is considered local (ex: C:\\temp\\TileRoot.json) or plain http access (http://someserver.com/data/TileRoot.json)\r\n * There is a one to one relationship between a reality data and the instances of present class.\r\n* @internal\r\n*/\r\nexport class RealityDataSourceTilesetUrlImpl implements RealityDataSource {\r\n public readonly key: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n /** For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container*/\r\n private _baseUrl: string = \"\";\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n assert(props.sourceKey.provider === RealityDataProvider.TilesetUrl || props.sourceKey.provider === RealityDataProvider.OrbitGtBlob);\r\n this.key = props.sourceKey;\r\n this._tilesetUrl = this.key.id;\r\n }\r\n\r\n /**\r\n * Create an instance of this class from a source key and iTwin context/\r\n */\r\n public static async createFromKey(sourceKey: RealityDataSourceKey, _iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n if (sourceKey.provider !== RealityDataProvider.TilesetUrl)\r\n return undefined;\r\n const rdSource = new RealityDataSourceTilesetUrlImpl({ sourceKey });\r\n return rdSource;\r\n }\r\n\r\n public get isContextShare(): boolean {\r\n return false;\r\n }\r\n /**\r\n * Returns Reality Data if available\r\n */\r\n public get realityData(): RealityData | undefined {\r\n return undefined;\r\n }\r\n public get realityDataId(): string | undefined {\r\n return undefined;\r\n }\r\n /**\r\n * Returns Reality Data type if available\r\n */\r\n public get realityDataType(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n // This is to set the root url from the provided root document path.\r\n // If the root document is stored on PW Context Share then the root document property of the Reality Data is provided,\r\n // otherwise the full path to root document is given.\r\n // The base URL contains the base URL from which tile relative path are constructed.\r\n // The tile's path root will need to be reinserted for child tiles to return a 200\r\n private setBaseUrl(url: string): void {\r\n const urlParts = url.split(\"/\");\r\n urlParts.pop();\r\n if (urlParts.length === 0)\r\n this._baseUrl = \"\";\r\n else\r\n this._baseUrl = `${urlParts.join(\"/\")}/`;\r\n }\r\n\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(_iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n return this._tilesetUrl;\r\n }\r\n\r\n public async getRootDocument(iTwinId: GuidString | undefined): Promise<any> {\r\n const url = await this.getServiceUrl(iTwinId);\r\n if (!url)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to get service url\");\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n this.setBaseUrl(url);\r\n return request(url, \"json\");\r\n }\r\n\r\n /**\r\n * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileContent(name: string): Promise<ArrayBuffer> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"arraybuffer\");\r\n }\r\n\r\n /**\r\n * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileJson(name: string): Promise<any> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"json\");\r\n }\r\n\r\n public getTileContentType(url: string): \"tile\" | \"tileset\" {\r\n return new URL(url, \"https://localhost/\").pathname.toLowerCase().endsWith(\"json\") ? \"tileset\" : \"tile\";\r\n }\r\n\r\n /**\r\n * Gets spatial location and extents of this reality data source\r\n * @returns spatial location and extents\r\n * @internal\r\n */\r\n public async getSpatialLocationAndExtents(): Promise<SpatialLocationAndExtents | undefined> {\r\n let spatialLocation: SpatialLocationAndExtents | undefined;\r\n if (this.key.format === RealityDataFormat.ThreeDTile) {\r\n const rootDocument = await this.getRootDocument(undefined);\r\n spatialLocation = ThreeDTileFormatInterpreter.getSpatialLocationAndExtents(rootDocument);\r\n }\r\n return spatialLocation;\r\n }\r\n /**\r\n * Gets information to identify the product and engine that create this reality data\r\n * Will return undefined if cannot be resolved\r\n * @returns information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\n public async getPublisherProductInfo(): Promise<PublisherProductInfo | undefined> {\r\n let publisherInfo: PublisherProductInfo | undefined;\r\n return publisherInfo;\r\n }\r\n}\r\n\r\n"]}
@@ -152,6 +152,7 @@ const UNIT_DATA = [
152
152
  { name: "Units.SQ_FT", phenomenon: "Units.AREA", system: "Units.USCUSTOM", conversion: { numerator: 1.0, denominator: .09290304, offset: 0.0 }, displayLabel: "ft²" },
153
153
  { name: "Units.SQ_US_SURVEY_FT", phenomenon: "Units.AREA", system: "Units.USCUSTOM", conversion: { numerator: 15499969.0, denominator: 1440000, offset: 0.0 }, displayLabel: "ft² (US Survey)" },
154
154
  { name: "Units.SQ_M", phenomenon: "Units.AREA", system: "Units.SI", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: "m²" },
155
+ { name: "Units.SQ_KM", phenomenon: "Units.AREA", system: "Units.SI", conversion: { numerator: 1.0, denominator: 1000000.0, offset: 0.0 }, displayLabel: "km²" },
155
156
  // conversion => specified unit to base unit m³
156
157
  { name: "Units.CUB_FT", phenomenon: "Units.VOLUME", system: "Units.USCUSTOM", conversion: { numerator: 1.0, denominator: 0.028316847, offset: 0.0 }, displayLabel: "ft³" },
157
158
  { name: "Units.CUB_US_SURVEY_FT", phenomenon: "Units.VOLUME", system: "Units.USSURVEY", conversion: { numerator: 1, denominator: 0.0283170164937591, offset: 0.0 }, displayLabel: "ft³" },
@@ -1 +1 @@
1
- {"version":3,"file":"BasicUnitsProvider.js","sourceRoot":"","sources":["../../../src/quantity-formatting/BasicUnitsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module QuantityFormatting\r\n */\r\n\r\nimport {\r\n BadUnit, BasicUnit, UnitConversionProps, UnitProps, UnitsProvider,\r\n} from \"@itwin/core-quantity\";\r\nimport { UnitNameKey } from \"./QuantityFormatter\";\r\nimport { UNIT_EXTRA_DATA } from \"./UnitsData\";\r\n\r\n// cSpell:ignore ussurvey USCUSTOM\r\n\r\n/** Units provider that provides a limited number of UnitDefinitions that are needed to support basic tools.\r\n * @internal\r\n */\r\nexport class BasicUnitsProvider implements UnitsProvider {\r\n\r\n /** Find a unit given the unitLabel. */\r\n public async findUnit(unitLabel: string, schemaName?: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n const labelToFind = unitLabel.toLowerCase();\r\n const unitFamilyToFind = phenomenon ? phenomenon.toLowerCase() : undefined;\r\n const unitSystemToFind = unitSystem ? unitSystem.toLowerCase() : undefined;\r\n\r\n for (const entry of UNIT_DATA) {\r\n if (schemaName && schemaName !== \"Units\")\r\n continue;\r\n\r\n if (phenomenon && entry.phenomenon.toLowerCase() !== unitFamilyToFind)\r\n continue;\r\n\r\n if (unitSystemToFind && entry.system.toLowerCase() !== unitSystemToFind)\r\n continue;\r\n\r\n if (entry.displayLabel.toLowerCase() === labelToFind || entry.name.toLowerCase() === labelToFind) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n if (entry.altDisplayLabels.findIndex((ref) => ref.toLowerCase() === labelToFind) !== -1) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n }\r\n }\r\n\r\n return new BadUnit();\r\n }\r\n\r\n /** Find all units given phenomenon */\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n const units: UnitProps[] = [];\r\n for (const entry of UNIT_DATA) {\r\n if (entry.phenomenon !== phenomenon)\r\n continue;\r\n units.push(new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system));\r\n }\r\n return units;\r\n }\r\n\r\n protected findUnitDefinition(name: string): UnitDefinition | undefined {\r\n for (const entry of UNIT_DATA) {\r\n if (entry.name === name)\r\n return entry;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Find a unit given the unit's unique name. */\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n const unitDataEntry = this.findUnitDefinition(unitName);\r\n if (unitDataEntry) {\r\n return new BasicUnit(unitDataEntry.name, unitDataEntry.displayLabel, unitDataEntry.phenomenon, unitDataEntry.system);\r\n }\r\n return new BadUnit();\r\n }\r\n\r\n /** Return the information needed to convert a value between two different units. The units should be from the same phenomenon. */\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversionProps> {\r\n const fromUnitData = this.findUnitDefinition(fromUnit.name);\r\n const toUnitData = this.findUnitDefinition(toUnit.name);\r\n\r\n if (fromUnitData && toUnitData) {\r\n const deltaOffset = toUnitData.conversion.offset - fromUnitData.conversion.offset;\r\n const deltaNumerator = toUnitData.conversion.numerator * fromUnitData.conversion.denominator;\r\n const deltaDenominator = toUnitData.conversion.denominator * fromUnitData.conversion.numerator;\r\n\r\n const conversionData = new ConversionData();\r\n conversionData.factor = deltaNumerator / deltaDenominator;\r\n conversionData.offset = deltaOffset;\r\n return conversionData;\r\n }\r\n\r\n return new ConversionData();\r\n }\r\n}\r\n\r\n/** Class that implements the minimum UnitConversionProps interface to provide information needed to convert unit values.\r\n * @alpha\r\n */\r\nclass ConversionData implements UnitConversionProps {\r\n public factor: number = 1.0;\r\n public offset: number = 0.0;\r\n public error: boolean = false;\r\n}\r\n\r\n/** interface use to define unit conversions to a base used for a phenomenon */\r\ninterface ConversionDef {\r\n numerator: number;\r\n denominator: number;\r\n offset: number;\r\n}\r\n\r\n// Temporary interface use to define structure of the unit definitions in this example.\r\ninterface UnitDefinition {\r\n readonly name: string;\r\n readonly phenomenon: string;\r\n readonly displayLabel: string;\r\n readonly altDisplayLabels?: string[];\r\n readonly conversion: ConversionDef;\r\n readonly system: string;\r\n}\r\n\r\n/** Function to generate default set of alternate unit labels\r\n * @internal\r\n */\r\nexport function getDefaultAlternateUnitLabels() {\r\n const altDisplayLabelsMap = new Map<UnitNameKey, Set<string>>();\r\n for (const entry of UNIT_EXTRA_DATA) {\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n altDisplayLabelsMap.set(entry.name, new Set<string>(entry.altDisplayLabels));\r\n }\r\n }\r\n if (altDisplayLabelsMap.size)\r\n return altDisplayLabelsMap;\r\n return undefined;\r\n}\r\n\r\n// ========================================================================================================================================\r\n// Minimum set of UNITs to be removed when official UnitsProvider is available\r\n// ========================================================================================================================================\r\n// cSpell:ignore MILLIINCH, MICROINCH, MILLIFOOT\r\n// Set of supported units - this information will come from Schema-based units once the EC package is ready to provide this information.\r\nconst UNIT_DATA: UnitDefinition[] = [\r\n // Angles ( base unit radian )\r\n { name: \"Units.RAD\", phenomenon: \"Units.ANGLE\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"rad\" },\r\n // 1 rad = 180.0/PI °\r\n { name: \"Units.ARC_DEG\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 180.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"°\" },\r\n { name: \"Units.ARC_MINUTE\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 10800.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"'\" },\r\n { name: \"Units.ARC_SECOND\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 648000.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: '\"' },\r\n { name: \"Units.GRAD\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 200, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"grad\" },\r\n // Time ( base unit second )\r\n { name: \"Units.S\", phenomenon: \"Units.TIME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"s\" },\r\n { name: \"Units.MIN\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 60.0, offset: 0.0 }, displayLabel: \"min\" },\r\n { name: \"Units.HR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 3600.0, offset: 0.0 }, displayLabel: \"h\"},\r\n { name: \"Units.DAY\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 86400.0, offset: 0.0 }, displayLabel: \"days\" },\r\n { name: \"Units.WEEK\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 604800.0, offset: 0.0 }, displayLabel: \"weeks\" },\r\n // 1 sec = 1/31536000.0 yr\r\n { name: \"Units.YR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 31536000.0, offset: 0.0 }, displayLabel: \"years\" },\r\n // conversion => specified unit to base unit of m\r\n { name: \"Units.M\", phenomenon: \"Units.LENGTH\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m\" },\r\n { name: \"Units.MM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"mm\" },\r\n { name: \"Units.CM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 100.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"cm\" },\r\n { name: \"Units.DM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 10.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"dm\" },\r\n { name: \"Units.KM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1.0, denominator: 1000.0, offset: 0.0 }, displayLabel: \"km\" },\r\n { name: \"Units.UM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"µm\" },\r\n { name: \"Units.MILLIINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"mil\" },\r\n { name: \"Units.MICROINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"µin\" },\r\n { name: \"Units.MILLIFOOT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"mft\" },\r\n { name: \"Units.IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"in\" },\r\n { name: \"Units.FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"ft\" },\r\n { name: \"Units.CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 66.0 * 0.3048, offset: 0.0 }, displayLabel: \"chain\" },\r\n { name: \"Units.YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.9144, offset: 0.0 }, displayLabel: \"yd\" },\r\n { name: \"Units.MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 1609.344, offset: 0.0 }, displayLabel: \"mi\" },\r\n { name: \"Units.US_SURVEY_FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 1200.0, offset: 0.0 }, displayLabel: \"ft (US Survey)\" },\r\n { name: \"Units.US_SURVEY_YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 3.0 * 1200.0, offset: 0.0 }, displayLabel: \"yrd (US Survey)\" },\r\n { name: \"Units.US_SURVEY_IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 100.0, offset: 0.0 }, displayLabel: \"in (US Survey)\" },\r\n { name: \"Units.US_SURVEY_MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 5280.0 * 1200.0, offset: 0.0 }, displayLabel: \"mi (US Survey)\" },\r\n { name: \"Units.US_SURVEY_CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 1.0, denominator: 20.11684, offset: 0.0 }, displayLabel: \"chain (US Survey)\" },\r\n // conversion => specified unit to base unit of m²\r\n { name: \"Units.SQ_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: .09290304, offset: 0.0 }, displayLabel: \"ft²\" },\r\n { name: \"Units.SQ_US_SURVEY_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 15499969.0, denominator: 1440000, offset: 0.0 }, displayLabel: \"ft² (US Survey)\" },\r\n { name: \"Units.SQ_M\", phenomenon: \"Units.AREA\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m²\" },\r\n // conversion => specified unit to base unit m³\r\n { name: \"Units.CUB_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.028316847, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_US_SURVEY_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USSURVEY\", conversion: { numerator: 1, denominator: 0.0283170164937591, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_YRD\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.76455486, offset: 0.0 }, displayLabel: \"yd³\" },\r\n { name: \"Units.CUB_M\", phenomenon: \"Units.VOLUME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m³\" },\r\n];\r\n"]}
1
+ {"version":3,"file":"BasicUnitsProvider.js","sourceRoot":"","sources":["../../../src/quantity-formatting/BasicUnitsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module QuantityFormatting\r\n */\r\n\r\nimport {\r\n BadUnit, BasicUnit, UnitConversionProps, UnitProps, UnitsProvider,\r\n} from \"@itwin/core-quantity\";\r\nimport { UnitNameKey } from \"./QuantityFormatter\";\r\nimport { UNIT_EXTRA_DATA } from \"./UnitsData\";\r\n\r\n// cSpell:ignore ussurvey USCUSTOM\r\n\r\n/** Units provider that provides a limited number of UnitDefinitions that are needed to support basic tools.\r\n * @internal\r\n */\r\nexport class BasicUnitsProvider implements UnitsProvider {\r\n\r\n /** Find a unit given the unitLabel. */\r\n public async findUnit(unitLabel: string, schemaName?: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n const labelToFind = unitLabel.toLowerCase();\r\n const unitFamilyToFind = phenomenon ? phenomenon.toLowerCase() : undefined;\r\n const unitSystemToFind = unitSystem ? unitSystem.toLowerCase() : undefined;\r\n\r\n for (const entry of UNIT_DATA) {\r\n if (schemaName && schemaName !== \"Units\")\r\n continue;\r\n\r\n if (phenomenon && entry.phenomenon.toLowerCase() !== unitFamilyToFind)\r\n continue;\r\n\r\n if (unitSystemToFind && entry.system.toLowerCase() !== unitSystemToFind)\r\n continue;\r\n\r\n if (entry.displayLabel.toLowerCase() === labelToFind || entry.name.toLowerCase() === labelToFind) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n if (entry.altDisplayLabels.findIndex((ref) => ref.toLowerCase() === labelToFind) !== -1) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n }\r\n }\r\n\r\n return new BadUnit();\r\n }\r\n\r\n /** Find all units given phenomenon */\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n const units: UnitProps[] = [];\r\n for (const entry of UNIT_DATA) {\r\n if (entry.phenomenon !== phenomenon)\r\n continue;\r\n units.push(new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system));\r\n }\r\n return units;\r\n }\r\n\r\n protected findUnitDefinition(name: string): UnitDefinition | undefined {\r\n for (const entry of UNIT_DATA) {\r\n if (entry.name === name)\r\n return entry;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Find a unit given the unit's unique name. */\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n const unitDataEntry = this.findUnitDefinition(unitName);\r\n if (unitDataEntry) {\r\n return new BasicUnit(unitDataEntry.name, unitDataEntry.displayLabel, unitDataEntry.phenomenon, unitDataEntry.system);\r\n }\r\n return new BadUnit();\r\n }\r\n\r\n /** Return the information needed to convert a value between two different units. The units should be from the same phenomenon. */\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversionProps> {\r\n const fromUnitData = this.findUnitDefinition(fromUnit.name);\r\n const toUnitData = this.findUnitDefinition(toUnit.name);\r\n\r\n if (fromUnitData && toUnitData) {\r\n const deltaOffset = toUnitData.conversion.offset - fromUnitData.conversion.offset;\r\n const deltaNumerator = toUnitData.conversion.numerator * fromUnitData.conversion.denominator;\r\n const deltaDenominator = toUnitData.conversion.denominator * fromUnitData.conversion.numerator;\r\n\r\n const conversionData = new ConversionData();\r\n conversionData.factor = deltaNumerator / deltaDenominator;\r\n conversionData.offset = deltaOffset;\r\n return conversionData;\r\n }\r\n\r\n return new ConversionData();\r\n }\r\n}\r\n\r\n/** Class that implements the minimum UnitConversionProps interface to provide information needed to convert unit values.\r\n * @alpha\r\n */\r\nclass ConversionData implements UnitConversionProps {\r\n public factor: number = 1.0;\r\n public offset: number = 0.0;\r\n public error: boolean = false;\r\n}\r\n\r\n/** interface use to define unit conversions to a base used for a phenomenon */\r\ninterface ConversionDef {\r\n numerator: number;\r\n denominator: number;\r\n offset: number;\r\n}\r\n\r\n// Temporary interface use to define structure of the unit definitions in this example.\r\ninterface UnitDefinition {\r\n readonly name: string;\r\n readonly phenomenon: string;\r\n readonly displayLabel: string;\r\n readonly altDisplayLabels?: string[];\r\n readonly conversion: ConversionDef;\r\n readonly system: string;\r\n}\r\n\r\n/** Function to generate default set of alternate unit labels\r\n * @internal\r\n */\r\nexport function getDefaultAlternateUnitLabels() {\r\n const altDisplayLabelsMap = new Map<UnitNameKey, Set<string>>();\r\n for (const entry of UNIT_EXTRA_DATA) {\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n altDisplayLabelsMap.set(entry.name, new Set<string>(entry.altDisplayLabels));\r\n }\r\n }\r\n if (altDisplayLabelsMap.size)\r\n return altDisplayLabelsMap;\r\n return undefined;\r\n}\r\n\r\n// ========================================================================================================================================\r\n// Minimum set of UNITs to be removed when official UnitsProvider is available\r\n// ========================================================================================================================================\r\n// cSpell:ignore MILLIINCH, MICROINCH, MILLIFOOT\r\n// Set of supported units - this information will come from Schema-based units once the EC package is ready to provide this information.\r\nconst UNIT_DATA: UnitDefinition[] = [\r\n // Angles ( base unit radian )\r\n { name: \"Units.RAD\", phenomenon: \"Units.ANGLE\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"rad\" },\r\n // 1 rad = 180.0/PI °\r\n { name: \"Units.ARC_DEG\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 180.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"°\" },\r\n { name: \"Units.ARC_MINUTE\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 10800.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"'\" },\r\n { name: \"Units.ARC_SECOND\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 648000.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: '\"' },\r\n { name: \"Units.GRAD\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 200, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"grad\" },\r\n // Time ( base unit second )\r\n { name: \"Units.S\", phenomenon: \"Units.TIME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"s\" },\r\n { name: \"Units.MIN\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 60.0, offset: 0.0 }, displayLabel: \"min\" },\r\n { name: \"Units.HR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 3600.0, offset: 0.0 }, displayLabel: \"h\"},\r\n { name: \"Units.DAY\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 86400.0, offset: 0.0 }, displayLabel: \"days\" },\r\n { name: \"Units.WEEK\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 604800.0, offset: 0.0 }, displayLabel: \"weeks\" },\r\n // 1 sec = 1/31536000.0 yr\r\n { name: \"Units.YR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 31536000.0, offset: 0.0 }, displayLabel: \"years\" },\r\n // conversion => specified unit to base unit of m\r\n { name: \"Units.M\", phenomenon: \"Units.LENGTH\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m\" },\r\n { name: \"Units.MM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"mm\" },\r\n { name: \"Units.CM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 100.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"cm\" },\r\n { name: \"Units.DM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 10.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"dm\" },\r\n { name: \"Units.KM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1.0, denominator: 1000.0, offset: 0.0 }, displayLabel: \"km\" },\r\n { name: \"Units.UM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"µm\" },\r\n { name: \"Units.MILLIINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"mil\" },\r\n { name: \"Units.MICROINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"µin\" },\r\n { name: \"Units.MILLIFOOT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"mft\" },\r\n { name: \"Units.IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"in\" },\r\n { name: \"Units.FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"ft\" },\r\n { name: \"Units.CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 66.0 * 0.3048, offset: 0.0 }, displayLabel: \"chain\" },\r\n { name: \"Units.YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.9144, offset: 0.0 }, displayLabel: \"yd\" },\r\n { name: \"Units.MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 1609.344, offset: 0.0 }, displayLabel: \"mi\" },\r\n { name: \"Units.US_SURVEY_FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 1200.0, offset: 0.0 }, displayLabel: \"ft (US Survey)\" },\r\n { name: \"Units.US_SURVEY_YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 3.0 * 1200.0, offset: 0.0 }, displayLabel: \"yrd (US Survey)\" },\r\n { name: \"Units.US_SURVEY_IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 100.0, offset: 0.0 }, displayLabel: \"in (US Survey)\" },\r\n { name: \"Units.US_SURVEY_MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 5280.0 * 1200.0, offset: 0.0 }, displayLabel: \"mi (US Survey)\" },\r\n { name: \"Units.US_SURVEY_CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 1.0, denominator: 20.11684, offset: 0.0 }, displayLabel: \"chain (US Survey)\" },\r\n // conversion => specified unit to base unit of m²\r\n { name: \"Units.SQ_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: .09290304, offset: 0.0 }, displayLabel: \"ft²\" },\r\n { name: \"Units.SQ_US_SURVEY_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 15499969.0, denominator: 1440000, offset: 0.0 }, displayLabel: \"ft² (US Survey)\" },\r\n { name: \"Units.SQ_M\", phenomenon: \"Units.AREA\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m²\" },\r\n { name: \"Units.SQ_KM\", phenomenon: \"Units.AREA\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1000000.0, offset: 0.0 }, displayLabel: \"km²\" },\r\n // conversion => specified unit to base unit m³\r\n { name: \"Units.CUB_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.028316847, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_US_SURVEY_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USSURVEY\", conversion: { numerator: 1, denominator: 0.0283170164937591, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_YRD\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.76455486, offset: 0.0 }, displayLabel: \"yd³\" },\r\n { name: \"Units.CUB_M\", phenomenon: \"Units.VOLUME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m³\" },\r\n];\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextShareProvider.d.ts","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,sEAAsE;WACxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IA6BxD,sEAAsE;WACxD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC;WA0DvI,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;CAwB3H"}
1
+ {"version":3,"file":"ContextShareProvider.d.ts","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,sEAAsE;WACxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IA6BxD,sEAAsE;WACxD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC;WAoEvI,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;CAwB3H"}
@@ -23,8 +23,8 @@ class ContextShareProvider {
23
23
  // Not a valid URL for Context share
24
24
  return false;
25
25
  }
26
- // If api.bentley.com/realitydata is used, it is context share
27
- if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata"))
26
+ // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share
27
+ if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata") || tilesetUrl.toLowerCase().includes("api.bentley.com/reality-management/reality-data"))
28
28
  return true;
29
29
  // detect if it is a RDS url
30
30
  const formattedUrl1 = attUrl.pathname.replace(/~2F/g, "/").replace(/\\/g, "/");
@@ -54,16 +54,24 @@ class ContextShareProvider {
54
54
  // Not a valid URL and not equal, probably $cesiumAsset
55
55
  return invalidUrlInfo;
56
56
  }
57
- // If api.bentley.com/realitydata is used, it is context share
58
- if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata")) {
57
+ // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share
58
+ if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata") || tilesetUrl.toLowerCase().includes("api.bentley.com/reality-management/reality-data")) {
59
59
  const lcTilesetUrl = tilesetUrl.toLowerCase();
60
60
  // NOTICE: We assume it is a ThreeDTile BUT this could technically be a point cloud (OPC).
61
61
  // This method was used in typical workflow where format was always ThreeDTile and is here for legacy support.
62
62
  // We don't want to make a call to RDS to resolve format since this method must not be async (it is used in workflow that are not async)
63
63
  const format = core_common_1.RealityDataFormat.ThreeDTile;
64
- const indexId = lcTilesetUrl.indexOf("realitydata/") + 12; // lenght of "realitydata/" = 12;
64
+ let indexId = -1;
65
+ let indexProjectId = -1;
66
+ if (tilesetUrl.toLowerCase().includes("reality-management/reality-data")) {
67
+ indexId = lcTilesetUrl.indexOf("reality-management/reality-data/") + 32; // length of "reality-management/reality-data/" = 32;
68
+ indexProjectId = lcTilesetUrl.indexOf("itwinid=") + 8; // length of "itwinid=" = 8;
69
+ }
70
+ else if (tilesetUrl.toLowerCase().includes("realitydata")) {
71
+ indexId = lcTilesetUrl.indexOf("realitydata/") + 12; // length of "realitydata/" = 12;
72
+ indexProjectId = lcTilesetUrl.indexOf("projectid=") + 10; // length of "projectid=" = 10;
73
+ }
65
74
  const id = lcTilesetUrl.substring(indexId, core_bentley_1.Guid.empty.length + indexId);
66
- const indexProjectId = lcTilesetUrl.indexOf("projectid=") + 10; // lenght of "projectid=" = 10;
67
75
  let projectId;
68
76
  if (indexProjectId && indexProjectId > 0)
69
77
  projectId = lcTilesetUrl.substring(indexProjectId, core_bentley_1.Guid.empty.length + indexProjectId);
@@ -1 +1 @@
1
- {"version":3,"file":"ContextShareProvider.js","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { RealityDataFormat, RealityDataProvider } from \"@itwin/core-common\";\r\n\r\n/**\r\n * This class provide methods used to interpret url to Project Wise Context Share (RealityDataProvider.ContextShare)\r\n * @internal\r\n */\r\nexport class ContextShareProvider {\r\n /** Return true if this is a supported url to this service provider */\r\n public static isProviderUrl(tilesetUrl: string): boolean {\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL for Context share\r\n return false;\r\n }\r\n // If api.bentley.com/realitydata is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\"))\r\n return true;\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n return isRDSUrl;\r\n }\r\n return false;\r\n }\r\n /** Return true if this is a supported url to this service provider */\r\n public static getInfoFromUrl(tilesetUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string, iTwinId: string | undefined} {\r\n const invalidUrlInfo = { provider: RealityDataProvider.TilesetUrl, format: RealityDataFormat.ThreeDTile, id: tilesetUrl, iTwinId: undefined };\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n // If api.bentley.com/realitydata is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\")) {\r\n const lcTilesetUrl = tilesetUrl.toLowerCase();\r\n // NOTICE: We assume it is a ThreeDTile BUT this could technically be a point cloud (OPC).\r\n // This method was used in typical workflow where format was always ThreeDTile and is here for legacy support.\r\n // We don't want to make a call to RDS to resolve format since this method must not be async (it is used in workflow that are not async)\r\n const format = RealityDataFormat.ThreeDTile;\r\n const indexId = lcTilesetUrl.indexOf(\"realitydata/\") + 12; // lenght of \"realitydata/\" = 12;\r\n const id = lcTilesetUrl.substring(indexId, Guid.empty.length + indexId);\r\n const indexProjectId = lcTilesetUrl.indexOf(\"projectid=\") + 10; // lenght of \"projectid=\" = 10;\r\n let projectId: string | undefined;\r\n if (indexProjectId && indexProjectId > 0)\r\n projectId = lcTilesetUrl.substring(indexProjectId, Guid.empty.length + indexProjectId);\r\n const apimContextShareKey = { provider: RealityDataProvider.ContextShare, format, id, iTwinId: projectId };\r\n return apimContextShareKey;\r\n }\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isOPC = attUrl.pathname.match(\".opc*\") !== null;\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n let projectId: string | undefined;\r\n const projectIdSection = urlParts1.find((val: string) => val.includes(\"--\"));\r\n if (projectIdSection)\r\n projectId = projectIdSection.split(\"--\")[1];\r\n // Make sure the url to compare are REALITYMESH3DTILES url, otherwise, compare the url directly\r\n if (isRDSUrl || isOPC) {\r\n // Make sure the reality data id are the same\r\n const guid1 = urlParts1.find(Guid.isGuid);\r\n if (guid1 !== undefined) {\r\n const provider = RealityDataProvider.ContextShare;\r\n const format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: guid1, iTwinId: projectId };\r\n return contextShareKey;\r\n }\r\n }\r\n }\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n public static getInfoFromBlobUrl(blobUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string } {\r\n let format = RealityDataFormat.ThreeDTile;\r\n let provider = RealityDataProvider.TilesetUrl;\r\n const url = new URL(blobUrl);\r\n\r\n // If we cannot interpret that url pass in parameter we just fallback to old implementation\r\n if(!url.pathname)\r\n return { provider, format, id: blobUrl };\r\n\r\n // const accountName = url.hostname.split(\".\")[0];\r\n let containerName= \"\";\r\n if (url.pathname) {\r\n const pathSplit = url.pathname.split(\"/\");\r\n containerName = pathSplit[1];\r\n }\r\n\r\n // const blobFileName = `/${pathSplit[2]}`;\r\n // const sasToken = url.search.substring(1);\r\n const isOPC = url.pathname.match(\".opc*\") !== null;\r\n provider = RealityDataProvider.ContextShare;\r\n format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: containerName };\r\n return contextShareKey;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ContextShareProvider.js","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { RealityDataFormat, RealityDataProvider } from \"@itwin/core-common\";\r\n\r\n/**\r\n * This class provide methods used to interpret url to Project Wise Context Share (RealityDataProvider.ContextShare)\r\n * @internal\r\n */\r\nexport class ContextShareProvider {\r\n /** Return true if this is a supported url to this service provider */\r\n public static isProviderUrl(tilesetUrl: string): boolean {\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL for Context share\r\n return false;\r\n }\r\n // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\") || tilesetUrl.toLowerCase().includes(\"api.bentley.com/reality-management/reality-data\"))\r\n return true;\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n return isRDSUrl;\r\n }\r\n return false;\r\n }\r\n /** Return true if this is a supported url to this service provider */\r\n public static getInfoFromUrl(tilesetUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string, iTwinId: string | undefined} {\r\n const invalidUrlInfo = { provider: RealityDataProvider.TilesetUrl, format: RealityDataFormat.ThreeDTile, id: tilesetUrl, iTwinId: undefined };\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\") || tilesetUrl.toLowerCase().includes(\"api.bentley.com/reality-management/reality-data\")) {\r\n const lcTilesetUrl = tilesetUrl.toLowerCase();\r\n // NOTICE: We assume it is a ThreeDTile BUT this could technically be a point cloud (OPC).\r\n // This method was used in typical workflow where format was always ThreeDTile and is here for legacy support.\r\n // We don't want to make a call to RDS to resolve format since this method must not be async (it is used in workflow that are not async)\r\n const format = RealityDataFormat.ThreeDTile;\r\n let indexId = -1;\r\n let indexProjectId = -1;\r\n\r\n if(tilesetUrl.toLowerCase().includes(\"reality-management/reality-data\")) {\r\n indexId = lcTilesetUrl.indexOf(\"reality-management/reality-data/\") + 32; // length of \"reality-management/reality-data/\" = 32;\r\n indexProjectId = lcTilesetUrl.indexOf(\"itwinid=\") + 8; // length of \"itwinid=\" = 8;\r\n } else if(tilesetUrl.toLowerCase().includes(\"realitydata\")) {\r\n indexId = lcTilesetUrl.indexOf(\"realitydata/\") + 12; // length of \"realitydata/\" = 12;\r\n indexProjectId = lcTilesetUrl.indexOf(\"projectid=\") + 10; // length of \"projectid=\" = 10;\r\n }\r\n\r\n const id = lcTilesetUrl.substring(indexId, Guid.empty.length + indexId);\r\n\r\n let projectId: string | undefined;\r\n if (indexProjectId && indexProjectId > 0)\r\n projectId = lcTilesetUrl.substring(indexProjectId, Guid.empty.length + indexProjectId);\r\n const apimContextShareKey = { provider: RealityDataProvider.ContextShare, format, id, iTwinId: projectId };\r\n return apimContextShareKey;\r\n }\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isOPC = attUrl.pathname.match(\".opc*\") !== null;\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n let projectId: string | undefined;\r\n const projectIdSection = urlParts1.find((val: string) => val.includes(\"--\"));\r\n if (projectIdSection)\r\n projectId = projectIdSection.split(\"--\")[1];\r\n // Make sure the url to compare are REALITYMESH3DTILES url, otherwise, compare the url directly\r\n if (isRDSUrl || isOPC) {\r\n // Make sure the reality data id are the same\r\n const guid1 = urlParts1.find(Guid.isGuid);\r\n if (guid1 !== undefined) {\r\n const provider = RealityDataProvider.ContextShare;\r\n const format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: guid1, iTwinId: projectId };\r\n return contextShareKey;\r\n }\r\n }\r\n }\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n public static getInfoFromBlobUrl(blobUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string } {\r\n let format = RealityDataFormat.ThreeDTile;\r\n let provider = RealityDataProvider.TilesetUrl;\r\n const url = new URL(blobUrl);\r\n\r\n // If we cannot interpret that url pass in parameter we just fallback to old implementation\r\n if(!url.pathname)\r\n return { provider, format, id: blobUrl };\r\n\r\n // const accountName = url.hostname.split(\".\")[0];\r\n let containerName= \"\";\r\n if (url.pathname) {\r\n const pathSplit = url.pathname.split(\"/\");\r\n containerName = pathSplit[1];\r\n }\r\n\r\n // const blobFileName = `/${pathSplit[2]}`;\r\n // const sasToken = url.search.substring(1);\r\n const isOPC = url.pathname.match(\".opc*\") !== null;\r\n provider = RealityDataProvider.ContextShare;\r\n format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: containerName };\r\n return contextShareKey;\r\n }\r\n}\r\n"]}
@@ -97,7 +97,7 @@ export class RealityDataSourceTilesetUrlImpl {
97
97
  return request(tileUrl, "json");
98
98
  }
99
99
  getTileContentType(url) {
100
- return url.endsWith("json") ? "tileset" : "tile";
100
+ return new URL(url, "https://localhost/").pathname.toLowerCase().endsWith("json") ? "tileset" : "tile";
101
101
  }
102
102
  /**
103
103
  * Gets spatial location and extents of this reality data source
@@ -1 +1 @@
1
- {"version":3,"file":"RealityDataSourceTilesetUrlImpl.js","sourceRoot":"","sources":["../../src/RealityDataSourceTilesetUrlImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { assert, BentleyStatus, GuidString } from \"@itwin/core-bentley\";\r\nimport { IModelError, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\n\r\nimport { request } from \"./request/Request\";\r\nimport { PublisherProductInfo, RealityDataSource, SpatialLocationAndExtents } from \"./RealityDataSource\";\r\nimport { ThreeDTileFormatInterpreter } from \"./tile/internal\";\r\n\r\n/** This class provides access to the reality data provider services.\r\n * It encapsulates access to a reality data weiter it be from local access, http or ProjectWise Context Share.\r\n * The key provided at the creation determines if this is ProjectWise Context Share reference.\r\n * If not then it is considered local (ex: C:\\temp\\TileRoot.json) or plain http access (http://someserver.com/data/TileRoot.json)\r\n * There is a one to one relationship between a reality data and the instances of present class.\r\n* @internal\r\n*/\r\nexport class RealityDataSourceTilesetUrlImpl implements RealityDataSource {\r\n public readonly key: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n /** For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container*/\r\n private _baseUrl: string = \"\";\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n assert(props.sourceKey.provider === RealityDataProvider.TilesetUrl || props.sourceKey.provider === RealityDataProvider.OrbitGtBlob);\r\n this.key = props.sourceKey;\r\n this._tilesetUrl = this.key.id;\r\n }\r\n\r\n /**\r\n * Create an instance of this class from a source key and iTwin context/\r\n */\r\n public static async createFromKey(sourceKey: RealityDataSourceKey, _iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n if (sourceKey.provider !== RealityDataProvider.TilesetUrl)\r\n return undefined;\r\n const rdSource = new RealityDataSourceTilesetUrlImpl({ sourceKey });\r\n return rdSource;\r\n }\r\n\r\n public get isContextShare(): boolean {\r\n return false;\r\n }\r\n /**\r\n * Returns Reality Data if available\r\n */\r\n public get realityData(): RealityData | undefined {\r\n return undefined;\r\n }\r\n public get realityDataId(): string | undefined {\r\n return undefined;\r\n }\r\n /**\r\n * Returns Reality Data type if available\r\n */\r\n public get realityDataType(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n // This is to set the root url from the provided root document path.\r\n // If the root document is stored on PW Context Share then the root document property of the Reality Data is provided,\r\n // otherwise the full path to root document is given.\r\n // The base URL contains the base URL from which tile relative path are constructed.\r\n // The tile's path root will need to be reinserted for child tiles to return a 200\r\n private setBaseUrl(url: string): void {\r\n const urlParts = url.split(\"/\");\r\n urlParts.pop();\r\n if (urlParts.length === 0)\r\n this._baseUrl = \"\";\r\n else\r\n this._baseUrl = `${urlParts.join(\"/\")}/`;\r\n }\r\n\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(_iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n return this._tilesetUrl;\r\n }\r\n\r\n public async getRootDocument(iTwinId: GuidString | undefined): Promise<any> {\r\n const url = await this.getServiceUrl(iTwinId);\r\n if (!url)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to get service url\");\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n this.setBaseUrl(url);\r\n return request(url, \"json\");\r\n }\r\n\r\n /**\r\n * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileContent(name: string): Promise<ArrayBuffer> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"arraybuffer\");\r\n }\r\n\r\n /**\r\n * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileJson(name: string): Promise<any> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"json\");\r\n }\r\n\r\n public getTileContentType(url: string): \"tile\" | \"tileset\" {\r\n return url.endsWith(\"json\") ? \"tileset\" : \"tile\";\r\n }\r\n\r\n /**\r\n * Gets spatial location and extents of this reality data source\r\n * @returns spatial location and extents\r\n * @internal\r\n */\r\n public async getSpatialLocationAndExtents(): Promise<SpatialLocationAndExtents | undefined> {\r\n let spatialLocation: SpatialLocationAndExtents | undefined;\r\n if (this.key.format === RealityDataFormat.ThreeDTile) {\r\n const rootDocument = await this.getRootDocument(undefined);\r\n spatialLocation = ThreeDTileFormatInterpreter.getSpatialLocationAndExtents(rootDocument);\r\n }\r\n return spatialLocation;\r\n }\r\n /**\r\n * Gets information to identify the product and engine that create this reality data\r\n * Will return undefined if cannot be resolved\r\n * @returns information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\n public async getPublisherProductInfo(): Promise<PublisherProductInfo | undefined> {\r\n let publisherInfo: PublisherProductInfo | undefined;\r\n return publisherInfo;\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"RealityDataSourceTilesetUrlImpl.js","sourceRoot":"","sources":["../../src/RealityDataSourceTilesetUrlImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\nimport { assert, BentleyStatus, GuidString } from \"@itwin/core-bentley\";\r\nimport { IModelError, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey, RealityDataSourceProps } from \"@itwin/core-common\";\r\n\r\nimport { request } from \"./request/Request\";\r\nimport { PublisherProductInfo, RealityDataSource, SpatialLocationAndExtents } from \"./RealityDataSource\";\r\nimport { ThreeDTileFormatInterpreter } from \"./tile/internal\";\r\n\r\n/** This class provides access to the reality data provider services.\r\n * It encapsulates access to a reality data weiter it be from local access, http or ProjectWise Context Share.\r\n * The key provided at the creation determines if this is ProjectWise Context Share reference.\r\n * If not then it is considered local (ex: C:\\temp\\TileRoot.json) or plain http access (http://someserver.com/data/TileRoot.json)\r\n * There is a one to one relationship between a reality data and the instances of present class.\r\n* @internal\r\n*/\r\nexport class RealityDataSourceTilesetUrlImpl implements RealityDataSource {\r\n public readonly key: RealityDataSourceKey;\r\n /** The URL that supplies the 3d tiles for displaying the reality model. */\r\n private _tilesetUrl: string | undefined;\r\n /** For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container*/\r\n private _baseUrl: string = \"\";\r\n\r\n /** Construct a new reality data source.\r\n * @param props JSON representation of the reality data source\r\n */\r\n protected constructor(props: RealityDataSourceProps) {\r\n assert(props.sourceKey.provider === RealityDataProvider.TilesetUrl || props.sourceKey.provider === RealityDataProvider.OrbitGtBlob);\r\n this.key = props.sourceKey;\r\n this._tilesetUrl = this.key.id;\r\n }\r\n\r\n /**\r\n * Create an instance of this class from a source key and iTwin context/\r\n */\r\n public static async createFromKey(sourceKey: RealityDataSourceKey, _iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n if (sourceKey.provider !== RealityDataProvider.TilesetUrl)\r\n return undefined;\r\n const rdSource = new RealityDataSourceTilesetUrlImpl({ sourceKey });\r\n return rdSource;\r\n }\r\n\r\n public get isContextShare(): boolean {\r\n return false;\r\n }\r\n /**\r\n * Returns Reality Data if available\r\n */\r\n public get realityData(): RealityData | undefined {\r\n return undefined;\r\n }\r\n public get realityDataId(): string | undefined {\r\n return undefined;\r\n }\r\n /**\r\n * Returns Reality Data type if available\r\n */\r\n public get realityDataType(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n // This is to set the root url from the provided root document path.\r\n // If the root document is stored on PW Context Share then the root document property of the Reality Data is provided,\r\n // otherwise the full path to root document is given.\r\n // The base URL contains the base URL from which tile relative path are constructed.\r\n // The tile's path root will need to be reinserted for child tiles to return a 200\r\n private setBaseUrl(url: string): void {\r\n const urlParts = url.split(\"/\");\r\n urlParts.pop();\r\n if (urlParts.length === 0)\r\n this._baseUrl = \"\";\r\n else\r\n this._baseUrl = `${urlParts.join(\"/\")}/`;\r\n }\r\n\r\n /**\r\n * This method returns the URL to access the actual 3d tiles from the service provider.\r\n * @returns string containing the URL to reality data.\r\n */\r\n public async getServiceUrl(_iTwinId: GuidString | undefined): Promise<string | undefined> {\r\n return this._tilesetUrl;\r\n }\r\n\r\n public async getRootDocument(iTwinId: GuidString | undefined): Promise<any> {\r\n const url = await this.getServiceUrl(iTwinId);\r\n if (!url)\r\n throw new IModelError(BentleyStatus.ERROR, \"Unable to get service url\");\r\n\r\n // The following is only if the reality data is not stored on PW Context Share.\r\n this.setBaseUrl(url);\r\n return request(url, \"json\");\r\n }\r\n\r\n /**\r\n * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileContent(name: string): Promise<ArrayBuffer> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"arraybuffer\");\r\n }\r\n\r\n /**\r\n * Returns the tile content in json format. The path to the tile is relative to the base url of present reality data whatever the type.\r\n */\r\n public async getTileJson(name: string): Promise<any> {\r\n const tileUrl = this._baseUrl + name;\r\n\r\n return request(tileUrl, \"json\");\r\n }\r\n\r\n public getTileContentType(url: string): \"tile\" | \"tileset\" {\r\n return new URL(url, \"https://localhost/\").pathname.toLowerCase().endsWith(\"json\") ? \"tileset\" : \"tile\";\r\n }\r\n\r\n /**\r\n * Gets spatial location and extents of this reality data source\r\n * @returns spatial location and extents\r\n * @internal\r\n */\r\n public async getSpatialLocationAndExtents(): Promise<SpatialLocationAndExtents | undefined> {\r\n let spatialLocation: SpatialLocationAndExtents | undefined;\r\n if (this.key.format === RealityDataFormat.ThreeDTile) {\r\n const rootDocument = await this.getRootDocument(undefined);\r\n spatialLocation = ThreeDTileFormatInterpreter.getSpatialLocationAndExtents(rootDocument);\r\n }\r\n return spatialLocation;\r\n }\r\n /**\r\n * Gets information to identify the product and engine that create this reality data\r\n * Will return undefined if cannot be resolved\r\n * @returns information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\n public async getPublisherProductInfo(): Promise<PublisherProductInfo | undefined> {\r\n let publisherInfo: PublisherProductInfo | undefined;\r\n return publisherInfo;\r\n }\r\n}\r\n\r\n"]}
@@ -147,6 +147,7 @@ const UNIT_DATA = [
147
147
  { name: "Units.SQ_FT", phenomenon: "Units.AREA", system: "Units.USCUSTOM", conversion: { numerator: 1.0, denominator: .09290304, offset: 0.0 }, displayLabel: "ft²" },
148
148
  { name: "Units.SQ_US_SURVEY_FT", phenomenon: "Units.AREA", system: "Units.USCUSTOM", conversion: { numerator: 15499969.0, denominator: 1440000, offset: 0.0 }, displayLabel: "ft² (US Survey)" },
149
149
  { name: "Units.SQ_M", phenomenon: "Units.AREA", system: "Units.SI", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: "m²" },
150
+ { name: "Units.SQ_KM", phenomenon: "Units.AREA", system: "Units.SI", conversion: { numerator: 1.0, denominator: 1000000.0, offset: 0.0 }, displayLabel: "km²" },
150
151
  // conversion => specified unit to base unit m³
151
152
  { name: "Units.CUB_FT", phenomenon: "Units.VOLUME", system: "Units.USCUSTOM", conversion: { numerator: 1.0, denominator: 0.028316847, offset: 0.0 }, displayLabel: "ft³" },
152
153
  { name: "Units.CUB_US_SURVEY_FT", phenomenon: "Units.VOLUME", system: "Units.USSURVEY", conversion: { numerator: 1, denominator: 0.0283170164937591, offset: 0.0 }, displayLabel: "ft³" },
@@ -1 +1 @@
1
- {"version":3,"file":"BasicUnitsProvider.js","sourceRoot":"","sources":["../../../src/quantity-formatting/BasicUnitsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module QuantityFormatting\r\n */\r\n\r\nimport {\r\n BadUnit, BasicUnit, UnitConversionProps, UnitProps, UnitsProvider,\r\n} from \"@itwin/core-quantity\";\r\nimport { UnitNameKey } from \"./QuantityFormatter\";\r\nimport { UNIT_EXTRA_DATA } from \"./UnitsData\";\r\n\r\n// cSpell:ignore ussurvey USCUSTOM\r\n\r\n/** Units provider that provides a limited number of UnitDefinitions that are needed to support basic tools.\r\n * @internal\r\n */\r\nexport class BasicUnitsProvider implements UnitsProvider {\r\n\r\n /** Find a unit given the unitLabel. */\r\n public async findUnit(unitLabel: string, schemaName?: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n const labelToFind = unitLabel.toLowerCase();\r\n const unitFamilyToFind = phenomenon ? phenomenon.toLowerCase() : undefined;\r\n const unitSystemToFind = unitSystem ? unitSystem.toLowerCase() : undefined;\r\n\r\n for (const entry of UNIT_DATA) {\r\n if (schemaName && schemaName !== \"Units\")\r\n continue;\r\n\r\n if (phenomenon && entry.phenomenon.toLowerCase() !== unitFamilyToFind)\r\n continue;\r\n\r\n if (unitSystemToFind && entry.system.toLowerCase() !== unitSystemToFind)\r\n continue;\r\n\r\n if (entry.displayLabel.toLowerCase() === labelToFind || entry.name.toLowerCase() === labelToFind) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n if (entry.altDisplayLabels.findIndex((ref) => ref.toLowerCase() === labelToFind) !== -1) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n }\r\n }\r\n\r\n return new BadUnit();\r\n }\r\n\r\n /** Find all units given phenomenon */\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n const units: UnitProps[] = [];\r\n for (const entry of UNIT_DATA) {\r\n if (entry.phenomenon !== phenomenon)\r\n continue;\r\n units.push(new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system));\r\n }\r\n return units;\r\n }\r\n\r\n protected findUnitDefinition(name: string): UnitDefinition | undefined {\r\n for (const entry of UNIT_DATA) {\r\n if (entry.name === name)\r\n return entry;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Find a unit given the unit's unique name. */\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n const unitDataEntry = this.findUnitDefinition(unitName);\r\n if (unitDataEntry) {\r\n return new BasicUnit(unitDataEntry.name, unitDataEntry.displayLabel, unitDataEntry.phenomenon, unitDataEntry.system);\r\n }\r\n return new BadUnit();\r\n }\r\n\r\n /** Return the information needed to convert a value between two different units. The units should be from the same phenomenon. */\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversionProps> {\r\n const fromUnitData = this.findUnitDefinition(fromUnit.name);\r\n const toUnitData = this.findUnitDefinition(toUnit.name);\r\n\r\n if (fromUnitData && toUnitData) {\r\n const deltaOffset = toUnitData.conversion.offset - fromUnitData.conversion.offset;\r\n const deltaNumerator = toUnitData.conversion.numerator * fromUnitData.conversion.denominator;\r\n const deltaDenominator = toUnitData.conversion.denominator * fromUnitData.conversion.numerator;\r\n\r\n const conversionData = new ConversionData();\r\n conversionData.factor = deltaNumerator / deltaDenominator;\r\n conversionData.offset = deltaOffset;\r\n return conversionData;\r\n }\r\n\r\n return new ConversionData();\r\n }\r\n}\r\n\r\n/** Class that implements the minimum UnitConversionProps interface to provide information needed to convert unit values.\r\n * @alpha\r\n */\r\nclass ConversionData implements UnitConversionProps {\r\n public factor: number = 1.0;\r\n public offset: number = 0.0;\r\n public error: boolean = false;\r\n}\r\n\r\n/** interface use to define unit conversions to a base used for a phenomenon */\r\ninterface ConversionDef {\r\n numerator: number;\r\n denominator: number;\r\n offset: number;\r\n}\r\n\r\n// Temporary interface use to define structure of the unit definitions in this example.\r\ninterface UnitDefinition {\r\n readonly name: string;\r\n readonly phenomenon: string;\r\n readonly displayLabel: string;\r\n readonly altDisplayLabels?: string[];\r\n readonly conversion: ConversionDef;\r\n readonly system: string;\r\n}\r\n\r\n/** Function to generate default set of alternate unit labels\r\n * @internal\r\n */\r\nexport function getDefaultAlternateUnitLabels() {\r\n const altDisplayLabelsMap = new Map<UnitNameKey, Set<string>>();\r\n for (const entry of UNIT_EXTRA_DATA) {\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n altDisplayLabelsMap.set(entry.name, new Set<string>(entry.altDisplayLabels));\r\n }\r\n }\r\n if (altDisplayLabelsMap.size)\r\n return altDisplayLabelsMap;\r\n return undefined;\r\n}\r\n\r\n// ========================================================================================================================================\r\n// Minimum set of UNITs to be removed when official UnitsProvider is available\r\n// ========================================================================================================================================\r\n// cSpell:ignore MILLIINCH, MICROINCH, MILLIFOOT\r\n// Set of supported units - this information will come from Schema-based units once the EC package is ready to provide this information.\r\nconst UNIT_DATA: UnitDefinition[] = [\r\n // Angles ( base unit radian )\r\n { name: \"Units.RAD\", phenomenon: \"Units.ANGLE\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"rad\" },\r\n // 1 rad = 180.0/PI °\r\n { name: \"Units.ARC_DEG\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 180.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"°\" },\r\n { name: \"Units.ARC_MINUTE\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 10800.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"'\" },\r\n { name: \"Units.ARC_SECOND\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 648000.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: '\"' },\r\n { name: \"Units.GRAD\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 200, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"grad\" },\r\n // Time ( base unit second )\r\n { name: \"Units.S\", phenomenon: \"Units.TIME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"s\" },\r\n { name: \"Units.MIN\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 60.0, offset: 0.0 }, displayLabel: \"min\" },\r\n { name: \"Units.HR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 3600.0, offset: 0.0 }, displayLabel: \"h\"},\r\n { name: \"Units.DAY\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 86400.0, offset: 0.0 }, displayLabel: \"days\" },\r\n { name: \"Units.WEEK\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 604800.0, offset: 0.0 }, displayLabel: \"weeks\" },\r\n // 1 sec = 1/31536000.0 yr\r\n { name: \"Units.YR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 31536000.0, offset: 0.0 }, displayLabel: \"years\" },\r\n // conversion => specified unit to base unit of m\r\n { name: \"Units.M\", phenomenon: \"Units.LENGTH\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m\" },\r\n { name: \"Units.MM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"mm\" },\r\n { name: \"Units.CM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 100.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"cm\" },\r\n { name: \"Units.DM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 10.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"dm\" },\r\n { name: \"Units.KM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1.0, denominator: 1000.0, offset: 0.0 }, displayLabel: \"km\" },\r\n { name: \"Units.UM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"µm\" },\r\n { name: \"Units.MILLIINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"mil\" },\r\n { name: \"Units.MICROINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"µin\" },\r\n { name: \"Units.MILLIFOOT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"mft\" },\r\n { name: \"Units.IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"in\" },\r\n { name: \"Units.FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"ft\" },\r\n { name: \"Units.CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 66.0 * 0.3048, offset: 0.0 }, displayLabel: \"chain\" },\r\n { name: \"Units.YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.9144, offset: 0.0 }, displayLabel: \"yd\" },\r\n { name: \"Units.MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 1609.344, offset: 0.0 }, displayLabel: \"mi\" },\r\n { name: \"Units.US_SURVEY_FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 1200.0, offset: 0.0 }, displayLabel: \"ft (US Survey)\" },\r\n { name: \"Units.US_SURVEY_YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 3.0 * 1200.0, offset: 0.0 }, displayLabel: \"yrd (US Survey)\" },\r\n { name: \"Units.US_SURVEY_IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 100.0, offset: 0.0 }, displayLabel: \"in (US Survey)\" },\r\n { name: \"Units.US_SURVEY_MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 5280.0 * 1200.0, offset: 0.0 }, displayLabel: \"mi (US Survey)\" },\r\n { name: \"Units.US_SURVEY_CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 1.0, denominator: 20.11684, offset: 0.0 }, displayLabel: \"chain (US Survey)\" },\r\n // conversion => specified unit to base unit of m²\r\n { name: \"Units.SQ_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: .09290304, offset: 0.0 }, displayLabel: \"ft²\" },\r\n { name: \"Units.SQ_US_SURVEY_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 15499969.0, denominator: 1440000, offset: 0.0 }, displayLabel: \"ft² (US Survey)\" },\r\n { name: \"Units.SQ_M\", phenomenon: \"Units.AREA\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m²\" },\r\n // conversion => specified unit to base unit m³\r\n { name: \"Units.CUB_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.028316847, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_US_SURVEY_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USSURVEY\", conversion: { numerator: 1, denominator: 0.0283170164937591, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_YRD\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.76455486, offset: 0.0 }, displayLabel: \"yd³\" },\r\n { name: \"Units.CUB_M\", phenomenon: \"Units.VOLUME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m³\" },\r\n];\r\n"]}
1
+ {"version":3,"file":"BasicUnitsProvider.js","sourceRoot":"","sources":["../../../src/quantity-formatting/BasicUnitsProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module QuantityFormatting\r\n */\r\n\r\nimport {\r\n BadUnit, BasicUnit, UnitConversionProps, UnitProps, UnitsProvider,\r\n} from \"@itwin/core-quantity\";\r\nimport { UnitNameKey } from \"./QuantityFormatter\";\r\nimport { UNIT_EXTRA_DATA } from \"./UnitsData\";\r\n\r\n// cSpell:ignore ussurvey USCUSTOM\r\n\r\n/** Units provider that provides a limited number of UnitDefinitions that are needed to support basic tools.\r\n * @internal\r\n */\r\nexport class BasicUnitsProvider implements UnitsProvider {\r\n\r\n /** Find a unit given the unitLabel. */\r\n public async findUnit(unitLabel: string, schemaName?: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n const labelToFind = unitLabel.toLowerCase();\r\n const unitFamilyToFind = phenomenon ? phenomenon.toLowerCase() : undefined;\r\n const unitSystemToFind = unitSystem ? unitSystem.toLowerCase() : undefined;\r\n\r\n for (const entry of UNIT_DATA) {\r\n if (schemaName && schemaName !== \"Units\")\r\n continue;\r\n\r\n if (phenomenon && entry.phenomenon.toLowerCase() !== unitFamilyToFind)\r\n continue;\r\n\r\n if (unitSystemToFind && entry.system.toLowerCase() !== unitSystemToFind)\r\n continue;\r\n\r\n if (entry.displayLabel.toLowerCase() === labelToFind || entry.name.toLowerCase() === labelToFind) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n if (entry.altDisplayLabels.findIndex((ref) => ref.toLowerCase() === labelToFind) !== -1) {\r\n const unitProps = new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system);\r\n return unitProps;\r\n }\r\n }\r\n }\r\n\r\n return new BadUnit();\r\n }\r\n\r\n /** Find all units given phenomenon */\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n const units: UnitProps[] = [];\r\n for (const entry of UNIT_DATA) {\r\n if (entry.phenomenon !== phenomenon)\r\n continue;\r\n units.push(new BasicUnit(entry.name, entry.displayLabel, entry.phenomenon, entry.system));\r\n }\r\n return units;\r\n }\r\n\r\n protected findUnitDefinition(name: string): UnitDefinition | undefined {\r\n for (const entry of UNIT_DATA) {\r\n if (entry.name === name)\r\n return entry;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /** Find a unit given the unit's unique name. */\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n const unitDataEntry = this.findUnitDefinition(unitName);\r\n if (unitDataEntry) {\r\n return new BasicUnit(unitDataEntry.name, unitDataEntry.displayLabel, unitDataEntry.phenomenon, unitDataEntry.system);\r\n }\r\n return new BadUnit();\r\n }\r\n\r\n /** Return the information needed to convert a value between two different units. The units should be from the same phenomenon. */\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversionProps> {\r\n const fromUnitData = this.findUnitDefinition(fromUnit.name);\r\n const toUnitData = this.findUnitDefinition(toUnit.name);\r\n\r\n if (fromUnitData && toUnitData) {\r\n const deltaOffset = toUnitData.conversion.offset - fromUnitData.conversion.offset;\r\n const deltaNumerator = toUnitData.conversion.numerator * fromUnitData.conversion.denominator;\r\n const deltaDenominator = toUnitData.conversion.denominator * fromUnitData.conversion.numerator;\r\n\r\n const conversionData = new ConversionData();\r\n conversionData.factor = deltaNumerator / deltaDenominator;\r\n conversionData.offset = deltaOffset;\r\n return conversionData;\r\n }\r\n\r\n return new ConversionData();\r\n }\r\n}\r\n\r\n/** Class that implements the minimum UnitConversionProps interface to provide information needed to convert unit values.\r\n * @alpha\r\n */\r\nclass ConversionData implements UnitConversionProps {\r\n public factor: number = 1.0;\r\n public offset: number = 0.0;\r\n public error: boolean = false;\r\n}\r\n\r\n/** interface use to define unit conversions to a base used for a phenomenon */\r\ninterface ConversionDef {\r\n numerator: number;\r\n denominator: number;\r\n offset: number;\r\n}\r\n\r\n// Temporary interface use to define structure of the unit definitions in this example.\r\ninterface UnitDefinition {\r\n readonly name: string;\r\n readonly phenomenon: string;\r\n readonly displayLabel: string;\r\n readonly altDisplayLabels?: string[];\r\n readonly conversion: ConversionDef;\r\n readonly system: string;\r\n}\r\n\r\n/** Function to generate default set of alternate unit labels\r\n * @internal\r\n */\r\nexport function getDefaultAlternateUnitLabels() {\r\n const altDisplayLabelsMap = new Map<UnitNameKey, Set<string>>();\r\n for (const entry of UNIT_EXTRA_DATA) {\r\n if (entry.altDisplayLabels && entry.altDisplayLabels.length > 0) {\r\n altDisplayLabelsMap.set(entry.name, new Set<string>(entry.altDisplayLabels));\r\n }\r\n }\r\n if (altDisplayLabelsMap.size)\r\n return altDisplayLabelsMap;\r\n return undefined;\r\n}\r\n\r\n// ========================================================================================================================================\r\n// Minimum set of UNITs to be removed when official UnitsProvider is available\r\n// ========================================================================================================================================\r\n// cSpell:ignore MILLIINCH, MICROINCH, MILLIFOOT\r\n// Set of supported units - this information will come from Schema-based units once the EC package is ready to provide this information.\r\nconst UNIT_DATA: UnitDefinition[] = [\r\n // Angles ( base unit radian )\r\n { name: \"Units.RAD\", phenomenon: \"Units.ANGLE\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"rad\" },\r\n // 1 rad = 180.0/PI °\r\n { name: \"Units.ARC_DEG\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 180.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"°\" },\r\n { name: \"Units.ARC_MINUTE\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 10800.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"'\" },\r\n { name: \"Units.ARC_SECOND\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 648000.0, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: '\"' },\r\n { name: \"Units.GRAD\", phenomenon: \"Units.ANGLE\", system: \"Units.METRIC\", conversion: { numerator: 200, denominator: 3.141592653589793, offset: 0.0 }, displayLabel: \"grad\" },\r\n // Time ( base unit second )\r\n { name: \"Units.S\", phenomenon: \"Units.TIME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"s\" },\r\n { name: \"Units.MIN\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 60.0, offset: 0.0 }, displayLabel: \"min\" },\r\n { name: \"Units.HR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 3600.0, offset: 0.0 }, displayLabel: \"h\"},\r\n { name: \"Units.DAY\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 86400.0, offset: 0.0 }, displayLabel: \"days\" },\r\n { name: \"Units.WEEK\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 604800.0, offset: 0.0 }, displayLabel: \"weeks\" },\r\n // 1 sec = 1/31536000.0 yr\r\n { name: \"Units.YR\", phenomenon: \"Units.TIME\", system: \"Units.INTERNATIONAL\", conversion: { numerator: 1.0, denominator: 31536000.0, offset: 0.0 }, displayLabel: \"years\" },\r\n // conversion => specified unit to base unit of m\r\n { name: \"Units.M\", phenomenon: \"Units.LENGTH\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m\" },\r\n { name: \"Units.MM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"mm\" },\r\n { name: \"Units.CM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 100.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"cm\" },\r\n { name: \"Units.DM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 10.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"dm\" },\r\n { name: \"Units.KM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1.0, denominator: 1000.0, offset: 0.0 }, displayLabel: \"km\" },\r\n { name: \"Units.UM\", phenomenon: \"Units.LENGTH\", system: \"Units.METRIC\", conversion: { numerator: 1000000.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"µm\" },\r\n { name: \"Units.MILLIINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"mil\" },\r\n { name: \"Units.MICROINCH\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000000.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"µin\" },\r\n { name: \"Units.MILLIFOOT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1000.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"mft\" },\r\n { name: \"Units.IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.0254, offset: 0.0 }, displayLabel: \"in\" },\r\n { name: \"Units.FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.3048, offset: 0.0 }, displayLabel: \"ft\" },\r\n { name: \"Units.CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 66.0 * 0.3048, offset: 0.0 }, displayLabel: \"chain\" },\r\n { name: \"Units.YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.9144, offset: 0.0 }, displayLabel: \"yd\" },\r\n { name: \"Units.MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 1609.344, offset: 0.0 }, displayLabel: \"mi\" },\r\n { name: \"Units.US_SURVEY_FT\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 1200.0, offset: 0.0 }, displayLabel: \"ft (US Survey)\" },\r\n { name: \"Units.US_SURVEY_YRD\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 3.0 * 1200.0, offset: 0.0 }, displayLabel: \"yrd (US Survey)\" },\r\n { name: \"Units.US_SURVEY_IN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 100.0, offset: 0.0 }, displayLabel: \"in (US Survey)\" },\r\n { name: \"Units.US_SURVEY_MILE\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 3937.0, denominator: 5280.0 * 1200.0, offset: 0.0 }, displayLabel: \"mi (US Survey)\" },\r\n { name: \"Units.US_SURVEY_CHAIN\", phenomenon: \"Units.LENGTH\", system: \"Units.USSURVEY\", conversion: { numerator: 1.0, denominator: 20.11684, offset: 0.0 }, displayLabel: \"chain (US Survey)\" },\r\n // conversion => specified unit to base unit of m²\r\n { name: \"Units.SQ_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: .09290304, offset: 0.0 }, displayLabel: \"ft²\" },\r\n { name: \"Units.SQ_US_SURVEY_FT\", phenomenon: \"Units.AREA\", system: \"Units.USCUSTOM\", conversion: { numerator: 15499969.0, denominator: 1440000, offset: 0.0 }, displayLabel: \"ft² (US Survey)\" },\r\n { name: \"Units.SQ_M\", phenomenon: \"Units.AREA\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m²\" },\r\n { name: \"Units.SQ_KM\", phenomenon: \"Units.AREA\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1000000.0, offset: 0.0 }, displayLabel: \"km²\" },\r\n // conversion => specified unit to base unit m³\r\n { name: \"Units.CUB_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.028316847, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_US_SURVEY_FT\", phenomenon: \"Units.VOLUME\", system: \"Units.USSURVEY\", conversion: { numerator: 1, denominator: 0.0283170164937591, offset: 0.0 }, displayLabel: \"ft³\" },\r\n { name: \"Units.CUB_YRD\", phenomenon: \"Units.VOLUME\", system: \"Units.USCUSTOM\", conversion: { numerator: 1.0, denominator: 0.76455486, offset: 0.0 }, displayLabel: \"yd³\" },\r\n { name: \"Units.CUB_M\", phenomenon: \"Units.VOLUME\", system: \"Units.SI\", conversion: { numerator: 1.0, denominator: 1.0, offset: 0.0 }, displayLabel: \"m³\" },\r\n];\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextShareProvider.d.ts","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,sEAAsE;WACxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IA6BxD,sEAAsE;WACxD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC;WA0DvI,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;CAwB3H"}
1
+ {"version":3,"file":"ContextShareProvider.d.ts","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,sEAAsE;WACxD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IA6BxD,sEAAsE;WACxD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC;WAoEvI,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAC,QAAQ,EAAE,mBAAmB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;CAwB3H"}
@@ -20,8 +20,8 @@ export class ContextShareProvider {
20
20
  // Not a valid URL for Context share
21
21
  return false;
22
22
  }
23
- // If api.bentley.com/realitydata is used, it is context share
24
- if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata"))
23
+ // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share
24
+ if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata") || tilesetUrl.toLowerCase().includes("api.bentley.com/reality-management/reality-data"))
25
25
  return true;
26
26
  // detect if it is a RDS url
27
27
  const formattedUrl1 = attUrl.pathname.replace(/~2F/g, "/").replace(/\\/g, "/");
@@ -51,16 +51,24 @@ export class ContextShareProvider {
51
51
  // Not a valid URL and not equal, probably $cesiumAsset
52
52
  return invalidUrlInfo;
53
53
  }
54
- // If api.bentley.com/realitydata is used, it is context share
55
- if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata")) {
54
+ // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share
55
+ if (tilesetUrl.toLowerCase().includes("api.bentley.com/realitydata") || tilesetUrl.toLowerCase().includes("api.bentley.com/reality-management/reality-data")) {
56
56
  const lcTilesetUrl = tilesetUrl.toLowerCase();
57
57
  // NOTICE: We assume it is a ThreeDTile BUT this could technically be a point cloud (OPC).
58
58
  // This method was used in typical workflow where format was always ThreeDTile and is here for legacy support.
59
59
  // We don't want to make a call to RDS to resolve format since this method must not be async (it is used in workflow that are not async)
60
60
  const format = RealityDataFormat.ThreeDTile;
61
- const indexId = lcTilesetUrl.indexOf("realitydata/") + 12; // lenght of "realitydata/" = 12;
61
+ let indexId = -1;
62
+ let indexProjectId = -1;
63
+ if (tilesetUrl.toLowerCase().includes("reality-management/reality-data")) {
64
+ indexId = lcTilesetUrl.indexOf("reality-management/reality-data/") + 32; // length of "reality-management/reality-data/" = 32;
65
+ indexProjectId = lcTilesetUrl.indexOf("itwinid=") + 8; // length of "itwinid=" = 8;
66
+ }
67
+ else if (tilesetUrl.toLowerCase().includes("realitydata")) {
68
+ indexId = lcTilesetUrl.indexOf("realitydata/") + 12; // length of "realitydata/" = 12;
69
+ indexProjectId = lcTilesetUrl.indexOf("projectid=") + 10; // length of "projectid=" = 10;
70
+ }
62
71
  const id = lcTilesetUrl.substring(indexId, Guid.empty.length + indexId);
63
- const indexProjectId = lcTilesetUrl.indexOf("projectid=") + 10; // lenght of "projectid=" = 10;
64
72
  let projectId;
65
73
  if (indexProjectId && indexProjectId > 0)
66
74
  projectId = lcTilesetUrl.substring(indexProjectId, Guid.empty.length + indexProjectId);
@@ -1 +1 @@
1
- {"version":3,"file":"ContextShareProvider.js","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { RealityDataFormat, RealityDataProvider } from \"@itwin/core-common\";\r\n\r\n/**\r\n * This class provide methods used to interpret url to Project Wise Context Share (RealityDataProvider.ContextShare)\r\n * @internal\r\n */\r\nexport class ContextShareProvider {\r\n /** Return true if this is a supported url to this service provider */\r\n public static isProviderUrl(tilesetUrl: string): boolean {\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL for Context share\r\n return false;\r\n }\r\n // If api.bentley.com/realitydata is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\"))\r\n return true;\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n return isRDSUrl;\r\n }\r\n return false;\r\n }\r\n /** Return true if this is a supported url to this service provider */\r\n public static getInfoFromUrl(tilesetUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string, iTwinId: string | undefined} {\r\n const invalidUrlInfo = { provider: RealityDataProvider.TilesetUrl, format: RealityDataFormat.ThreeDTile, id: tilesetUrl, iTwinId: undefined };\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n // If api.bentley.com/realitydata is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\")) {\r\n const lcTilesetUrl = tilesetUrl.toLowerCase();\r\n // NOTICE: We assume it is a ThreeDTile BUT this could technically be a point cloud (OPC).\r\n // This method was used in typical workflow where format was always ThreeDTile and is here for legacy support.\r\n // We don't want to make a call to RDS to resolve format since this method must not be async (it is used in workflow that are not async)\r\n const format = RealityDataFormat.ThreeDTile;\r\n const indexId = lcTilesetUrl.indexOf(\"realitydata/\") + 12; // lenght of \"realitydata/\" = 12;\r\n const id = lcTilesetUrl.substring(indexId, Guid.empty.length + indexId);\r\n const indexProjectId = lcTilesetUrl.indexOf(\"projectid=\") + 10; // lenght of \"projectid=\" = 10;\r\n let projectId: string | undefined;\r\n if (indexProjectId && indexProjectId > 0)\r\n projectId = lcTilesetUrl.substring(indexProjectId, Guid.empty.length + indexProjectId);\r\n const apimContextShareKey = { provider: RealityDataProvider.ContextShare, format, id, iTwinId: projectId };\r\n return apimContextShareKey;\r\n }\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isOPC = attUrl.pathname.match(\".opc*\") !== null;\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n let projectId: string | undefined;\r\n const projectIdSection = urlParts1.find((val: string) => val.includes(\"--\"));\r\n if (projectIdSection)\r\n projectId = projectIdSection.split(\"--\")[1];\r\n // Make sure the url to compare are REALITYMESH3DTILES url, otherwise, compare the url directly\r\n if (isRDSUrl || isOPC) {\r\n // Make sure the reality data id are the same\r\n const guid1 = urlParts1.find(Guid.isGuid);\r\n if (guid1 !== undefined) {\r\n const provider = RealityDataProvider.ContextShare;\r\n const format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: guid1, iTwinId: projectId };\r\n return contextShareKey;\r\n }\r\n }\r\n }\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n public static getInfoFromBlobUrl(blobUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string } {\r\n let format = RealityDataFormat.ThreeDTile;\r\n let provider = RealityDataProvider.TilesetUrl;\r\n const url = new URL(blobUrl);\r\n\r\n // If we cannot interpret that url pass in parameter we just fallback to old implementation\r\n if(!url.pathname)\r\n return { provider, format, id: blobUrl };\r\n\r\n // const accountName = url.hostname.split(\".\")[0];\r\n let containerName= \"\";\r\n if (url.pathname) {\r\n const pathSplit = url.pathname.split(\"/\");\r\n containerName = pathSplit[1];\r\n }\r\n\r\n // const blobFileName = `/${pathSplit[2]}`;\r\n // const sasToken = url.search.substring(1);\r\n const isOPC = url.pathname.match(\".opc*\") !== null;\r\n provider = RealityDataProvider.ContextShare;\r\n format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: containerName };\r\n return contextShareKey;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ContextShareProvider.js","sourceRoot":"","sources":["../../../src/tile/ContextShareProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Guid } from \"@itwin/core-bentley\";\r\nimport { RealityDataFormat, RealityDataProvider } from \"@itwin/core-common\";\r\n\r\n/**\r\n * This class provide methods used to interpret url to Project Wise Context Share (RealityDataProvider.ContextShare)\r\n * @internal\r\n */\r\nexport class ContextShareProvider {\r\n /** Return true if this is a supported url to this service provider */\r\n public static isProviderUrl(tilesetUrl: string): boolean {\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL for Context share\r\n return false;\r\n }\r\n // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\") || tilesetUrl.toLowerCase().includes(\"api.bentley.com/reality-management/reality-data\"))\r\n return true;\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n return isRDSUrl;\r\n }\r\n return false;\r\n }\r\n /** Return true if this is a supported url to this service provider */\r\n public static getInfoFromUrl(tilesetUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string, iTwinId: string | undefined} {\r\n const invalidUrlInfo = { provider: RealityDataProvider.TilesetUrl, format: RealityDataFormat.ThreeDTile, id: tilesetUrl, iTwinId: undefined };\r\n let attUrl: URL;\r\n try {\r\n attUrl = new URL(tilesetUrl);\r\n } catch (e) {\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n // If api.bentley.com/realitydata or api.bentley.com/reality-management is used, it is context share\r\n if (tilesetUrl.toLowerCase().includes(\"api.bentley.com/realitydata\") || tilesetUrl.toLowerCase().includes(\"api.bentley.com/reality-management/reality-data\")) {\r\n const lcTilesetUrl = tilesetUrl.toLowerCase();\r\n // NOTICE: We assume it is a ThreeDTile BUT this could technically be a point cloud (OPC).\r\n // This method was used in typical workflow where format was always ThreeDTile and is here for legacy support.\r\n // We don't want to make a call to RDS to resolve format since this method must not be async (it is used in workflow that are not async)\r\n const format = RealityDataFormat.ThreeDTile;\r\n let indexId = -1;\r\n let indexProjectId = -1;\r\n\r\n if(tilesetUrl.toLowerCase().includes(\"reality-management/reality-data\")) {\r\n indexId = lcTilesetUrl.indexOf(\"reality-management/reality-data/\") + 32; // length of \"reality-management/reality-data/\" = 32;\r\n indexProjectId = lcTilesetUrl.indexOf(\"itwinid=\") + 8; // length of \"itwinid=\" = 8;\r\n } else if(tilesetUrl.toLowerCase().includes(\"realitydata\")) {\r\n indexId = lcTilesetUrl.indexOf(\"realitydata/\") + 12; // length of \"realitydata/\" = 12;\r\n indexProjectId = lcTilesetUrl.indexOf(\"projectid=\") + 10; // length of \"projectid=\" = 10;\r\n }\r\n\r\n const id = lcTilesetUrl.substring(indexId, Guid.empty.length + indexId);\r\n\r\n let projectId: string | undefined;\r\n if (indexProjectId && indexProjectId > 0)\r\n projectId = lcTilesetUrl.substring(indexProjectId, Guid.empty.length + indexProjectId);\r\n const apimContextShareKey = { provider: RealityDataProvider.ContextShare, format, id, iTwinId: projectId };\r\n return apimContextShareKey;\r\n }\r\n // detect if it is a RDS url\r\n const formattedUrl1 = attUrl.pathname.replace(/~2F/g, \"/\").replace(/\\\\/g, \"/\");\r\n if (formattedUrl1) {\r\n const urlParts1 = formattedUrl1.split(\"/\").map((entry: string) => entry.replace(/%2D/g, \"-\"));\r\n let partOffset1: number = 0;\r\n urlParts1.find((value, index) => {\r\n if (value === \"Repositories\") {\r\n partOffset1 = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n const isOPC = attUrl.pathname.match(\".opc*\") !== null;\r\n const isRDSUrl = (urlParts1[partOffset1] === \"Repositories\") && (urlParts1[partOffset1 + 1].match(\"S3MXECPlugin--*\") !== null) && (urlParts1[partOffset1 + 2] === \"S3MX\");\r\n let projectId: string | undefined;\r\n const projectIdSection = urlParts1.find((val: string) => val.includes(\"--\"));\r\n if (projectIdSection)\r\n projectId = projectIdSection.split(\"--\")[1];\r\n // Make sure the url to compare are REALITYMESH3DTILES url, otherwise, compare the url directly\r\n if (isRDSUrl || isOPC) {\r\n // Make sure the reality data id are the same\r\n const guid1 = urlParts1.find(Guid.isGuid);\r\n if (guid1 !== undefined) {\r\n const provider = RealityDataProvider.ContextShare;\r\n const format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: guid1, iTwinId: projectId };\r\n return contextShareKey;\r\n }\r\n }\r\n }\r\n // Not a valid URL and not equal, probably $cesiumAsset\r\n return invalidUrlInfo;\r\n }\r\n public static getInfoFromBlobUrl(blobUrl: string): {provider: RealityDataProvider, format: RealityDataFormat, id: string } {\r\n let format = RealityDataFormat.ThreeDTile;\r\n let provider = RealityDataProvider.TilesetUrl;\r\n const url = new URL(blobUrl);\r\n\r\n // If we cannot interpret that url pass in parameter we just fallback to old implementation\r\n if(!url.pathname)\r\n return { provider, format, id: blobUrl };\r\n\r\n // const accountName = url.hostname.split(\".\")[0];\r\n let containerName= \"\";\r\n if (url.pathname) {\r\n const pathSplit = url.pathname.split(\"/\");\r\n containerName = pathSplit[1];\r\n }\r\n\r\n // const blobFileName = `/${pathSplit[2]}`;\r\n // const sasToken = url.search.substring(1);\r\n const isOPC = url.pathname.match(\".opc*\") !== null;\r\n provider = RealityDataProvider.ContextShare;\r\n format = isOPC ? RealityDataFormat.OPC : RealityDataFormat.ThreeDTile;\r\n const contextShareKey = { provider, format, id: containerName };\r\n return contextShareKey;\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-frontend",
3
- "version": "4.3.0-dev.1",
3
+ "version": "4.3.0-dev.4",
4
4
  "description": "iTwin.js frontend components",
5
5
  "main": "lib/cjs/core-frontend.js",
6
6
  "module": "lib/esm/core-frontend.js",
@@ -23,12 +23,12 @@
23
23
  "url": "http://www.bentley.com"
24
24
  },
25
25
  "peerDependencies": {
26
- "@itwin/appui-abstract": "^4.3.0-dev.1",
27
- "@itwin/core-bentley": "^4.3.0-dev.1",
28
- "@itwin/core-common": "^4.3.0-dev.1",
29
- "@itwin/core-geometry": "^4.3.0-dev.1",
30
- "@itwin/core-orbitgt": "^4.3.0-dev.1",
31
- "@itwin/core-quantity": "^4.3.0-dev.1"
26
+ "@itwin/appui-abstract": "^4.3.0-dev.4",
27
+ "@itwin/core-bentley": "^4.3.0-dev.4",
28
+ "@itwin/core-common": "^4.3.0-dev.4",
29
+ "@itwin/core-geometry": "^4.3.0-dev.4",
30
+ "@itwin/core-orbitgt": "^4.3.0-dev.4",
31
+ "@itwin/core-quantity": "^4.3.0-dev.4"
32
32
  },
33
33
  "//devDependencies": [
34
34
  "NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install",
@@ -55,14 +55,14 @@
55
55
  "source-map-loader": "^4.0.0",
56
56
  "typescript": "~5.0.2",
57
57
  "webpack": "^5.76.0",
58
- "@itwin/appui-abstract": "4.3.0-dev.1",
59
- "@itwin/core-bentley": "4.3.0-dev.1",
60
- "@itwin/build-tools": "4.3.0-dev.1",
61
- "@itwin/core-common": "4.3.0-dev.1",
62
- "@itwin/core-geometry": "4.3.0-dev.1",
63
- "@itwin/core-orbitgt": "4.3.0-dev.1",
64
- "@itwin/core-quantity": "4.3.0-dev.1",
65
- "@itwin/certa": "4.3.0-dev.1"
58
+ "@itwin/appui-abstract": "4.3.0-dev.4",
59
+ "@itwin/core-common": "4.3.0-dev.4",
60
+ "@itwin/build-tools": "4.3.0-dev.4",
61
+ "@itwin/core-bentley": "4.3.0-dev.4",
62
+ "@itwin/core-geometry": "4.3.0-dev.4",
63
+ "@itwin/core-orbitgt": "4.3.0-dev.4",
64
+ "@itwin/core-quantity": "4.3.0-dev.4",
65
+ "@itwin/certa": "4.3.0-dev.4"
66
66
  },
67
67
  "//dependencies": [
68
68
  "NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API",
@@ -75,9 +75,9 @@
75
75
  "@loaders.gl/draco": "^3.1.6",
76
76
  "fuse.js": "^3.3.0",
77
77
  "wms-capabilities": "0.4.0",
78
- "@itwin/core-i18n": "4.3.0-dev.1",
79
- "@itwin/core-telemetry": "4.3.0-dev.1",
80
- "@itwin/webgl-compatibility": "4.3.0-dev.1"
78
+ "@itwin/core-i18n": "4.3.0-dev.4",
79
+ "@itwin/webgl-compatibility": "4.3.0-dev.4",
80
+ "@itwin/core-telemetry": "4.3.0-dev.4"
81
81
  },
82
82
  "nyc": {
83
83
  "extends": "./node_modules/@itwin/build-tools/.nycrc"