@itwin/core-common 3.0.0-dev.81 → 3.0.0-dev.85
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 +1248 -1248
- package/README.md +11 -11
- package/lib/cjs/AuthorizationClient.js.map +1 -1
- package/lib/cjs/BackgroundMapProvider.js.map +1 -1
- package/lib/cjs/Base64EncodedString.js.map +1 -1
- package/lib/cjs/BlobReader.js.map +1 -1
- package/lib/cjs/ChangedElements.js.map +1 -1
- package/lib/cjs/ChangedEntities.js.map +1 -1
- package/lib/cjs/ClipStyle.js.map +1 -1
- package/lib/cjs/CloudStorage.js.map +1 -1
- package/lib/cjs/CloudStorageTileCache.js.map +1 -1
- package/lib/cjs/Code.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/ContextRealityModel.js.map +1 -1
- package/lib/cjs/DisplayStyleSettings.js.map +1 -1
- package/lib/cjs/ECSqlReader.js.map +1 -1
- package/lib/cjs/ECSqlTypes.js.map +1 -1
- package/lib/cjs/EntityProps.js.map +1 -1
- package/lib/cjs/FeatureGates.js.map +1 -1
- package/lib/cjs/FeatureIndex.js.map +1 -1
- package/lib/cjs/Fonts.js.map +1 -1
- package/lib/cjs/Frustum.js.map +1 -1
- package/lib/cjs/IModelError.js.map +1 -1
- package/lib/cjs/Image.js.map +1 -1
- package/lib/cjs/Localization.d.ts +87 -10
- package/lib/cjs/Localization.d.ts.map +1 -1
- package/lib/cjs/Localization.js +8 -6
- package/lib/cjs/Localization.js.map +1 -1
- package/lib/cjs/MapImagerySettings.js.map +1 -1
- package/lib/cjs/ModelClipGroup.js.map +1 -1
- package/lib/cjs/ModelProps.js.map +1 -1
- package/lib/cjs/OctEncodedNormal.js.map +1 -1
- package/lib/cjs/PlanarClipMask.js.map +1 -1
- package/lib/cjs/QPoint.js.map +1 -1
- package/lib/cjs/Render.js.map +1 -1
- package/lib/cjs/RpcInterface.js.map +1 -1
- package/lib/cjs/RpcManager.js.map +1 -1
- package/lib/cjs/SpatialClassification.js.map +1 -1
- package/lib/cjs/SubCategoryAppearance.js.map +1 -1
- package/lib/cjs/Thumbnail.js.map +1 -1
- package/lib/cjs/TxnAction.js.map +1 -1
- package/lib/cjs/ViewDetails.js.map +1 -1
- package/lib/cjs/ViewProps.js.map +1 -1
- package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/cjs/core-common.js.map +1 -1
- package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
- package/lib/cjs/geometry/AreaPattern.js.map +1 -1
- package/lib/cjs/geometry/Cartographic.js.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
- package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/cjs/geometry/LineStyle.js.map +1 -1
- package/lib/cjs/geometry/Projection.js.map +1 -1
- package/lib/cjs/geometry/TextString.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
- package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/cjs/tile/ElementGraphics.js.map +1 -1
- package/lib/esm/AuthorizationClient.js.map +1 -1
- package/lib/esm/BackgroundMapProvider.js.map +1 -1
- package/lib/esm/Base64EncodedString.js.map +1 -1
- package/lib/esm/BlobReader.js.map +1 -1
- package/lib/esm/ChangedElements.js.map +1 -1
- package/lib/esm/ChangedEntities.js.map +1 -1
- package/lib/esm/ClipStyle.js.map +1 -1
- package/lib/esm/CloudStorage.js.map +1 -1
- package/lib/esm/CloudStorageTileCache.js.map +1 -1
- package/lib/esm/Code.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/ContextRealityModel.js.map +1 -1
- package/lib/esm/DisplayStyleSettings.js.map +1 -1
- package/lib/esm/ECSqlReader.js.map +1 -1
- package/lib/esm/ECSqlTypes.js.map +1 -1
- package/lib/esm/EntityProps.js.map +1 -1
- package/lib/esm/FeatureGates.js.map +1 -1
- package/lib/esm/FeatureIndex.js.map +1 -1
- package/lib/esm/Fonts.js.map +1 -1
- package/lib/esm/Frustum.js.map +1 -1
- package/lib/esm/IModelError.js.map +1 -1
- package/lib/esm/Image.js.map +1 -1
- package/lib/esm/Localization.d.ts +87 -10
- package/lib/esm/Localization.d.ts.map +1 -1
- package/lib/esm/Localization.js +8 -6
- package/lib/esm/Localization.js.map +1 -1
- package/lib/esm/MapImagerySettings.js.map +1 -1
- package/lib/esm/ModelClipGroup.js.map +1 -1
- package/lib/esm/ModelProps.js.map +1 -1
- package/lib/esm/OctEncodedNormal.js.map +1 -1
- package/lib/esm/PlanarClipMask.js.map +1 -1
- package/lib/esm/QPoint.js.map +1 -1
- package/lib/esm/Render.js.map +1 -1
- package/lib/esm/RpcInterface.js.map +1 -1
- package/lib/esm/RpcManager.js.map +1 -1
- package/lib/esm/SpatialClassification.js.map +1 -1
- package/lib/esm/SubCategoryAppearance.js.map +1 -1
- package/lib/esm/Thumbnail.js.map +1 -1
- package/lib/esm/TxnAction.js.map +1 -1
- package/lib/esm/ViewDetails.js.map +1 -1
- package/lib/esm/ViewProps.js.map +1 -1
- package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/esm/core-common.js.map +1 -1
- package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
- package/lib/esm/geometry/AreaPattern.js.map +1 -1
- package/lib/esm/geometry/Cartographic.js.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
- package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/esm/geometry/LineStyle.js.map +1 -1
- package/lib/esm/geometry/Projection.js.map +1 -1
- package/lib/esm/geometry/TextString.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/esm/rpc/TestRpcManager.js.map +1 -1
- package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
- package/lib/esm/rpc/core/RpcControl.js.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
- package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
- package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
- package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/esm/tile/ElementGraphics.js.map +1 -1
- package/package.json +9 -9
|
@@ -1,35 +1,112 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module Localization
|
|
3
3
|
*/
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/** Options for Localization
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
interface LocalizationOptions {
|
|
8
|
+
/** for interpolation values */
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
/**
|
|
11
|
+
* defaultValue to return if a translation was not found
|
|
12
|
+
*/
|
|
13
|
+
defaultValue?: any;
|
|
14
|
+
/**
|
|
15
|
+
* count value used for plurals
|
|
16
|
+
*/
|
|
17
|
+
count?: number;
|
|
18
|
+
/**
|
|
19
|
+
* used for contexts (eg. male\female)
|
|
20
|
+
*/
|
|
21
|
+
context?: any;
|
|
22
|
+
/**
|
|
23
|
+
* override languages to use
|
|
24
|
+
*/
|
|
25
|
+
lngs?: string[];
|
|
26
|
+
/**
|
|
27
|
+
* override language to lookup key if not found see fallbacks for details
|
|
28
|
+
*/
|
|
29
|
+
fallbackLng?: string;
|
|
30
|
+
}
|
|
31
|
+
/** The interface defining the localization requirements of [IModelApp]($frontend).
|
|
7
32
|
* @public
|
|
8
33
|
*/
|
|
9
34
|
export interface Localization {
|
|
10
|
-
/**
|
|
35
|
+
/** This method must be called and awaited before using an instance of Localization.
|
|
36
|
+
* @param namespaces an array of namespaces to load. There must be at least one namespace, and it
|
|
37
|
+
* becomes the default namespace.
|
|
38
|
+
* @note IModelApp.startup calls this internally, so you should not call this method directly
|
|
39
|
+
* except for Localization instances outside of IModelApp (e.g., for tests.)
|
|
40
|
+
*/
|
|
41
|
+
initialize(namespaces: string[]): Promise<void>;
|
|
42
|
+
/** Return the translated value of a key.
|
|
43
|
+
* @param key - the key that matches a property in the JSON localization file.
|
|
44
|
+
* @note The key includes the namespace, which identifies the particular localization file that contains the property,
|
|
45
|
+
* followed by a colon, followed by the property in the JSON file.
|
|
46
|
+
* For example:
|
|
47
|
+
* ``` ts
|
|
48
|
+
* const dataString: string = IModelApp.localization.getLocalizedString("iModelJs:BackgroundMap.BingDataAttribution");
|
|
49
|
+
* ```
|
|
50
|
+
* assigns to dataString the string with property BackgroundMap.BingDataAttribution from the iModelJs.json localization file.
|
|
51
|
+
* @returns The string corresponding to the first key that resolves.
|
|
52
|
+
* @throws Error if no keys resolve to a string.
|
|
53
|
+
*/
|
|
11
54
|
getLocalizedString(key: string | string[], options?: LocalizationOptions): string;
|
|
12
|
-
/**
|
|
55
|
+
/** Similar to 'translate()' but the namespace is a separate param and the key does not include the namespace.
|
|
56
|
+
* @param namespace - the namespace that identifies the particular localization file that contains the property.
|
|
57
|
+
* @param key - the key that matches a property in the JSON localization file.
|
|
58
|
+
* @returns The string corresponding to the first key that resolves.
|
|
59
|
+
* @throws Error if no keys resolve to a string.
|
|
60
|
+
*/
|
|
13
61
|
getLocalizedStringWithNamespace(namespace: string, key: string | string[], options?: LocalizationOptions): string;
|
|
62
|
+
/** get the English string for a key. */
|
|
14
63
|
getEnglishString(namespace: string, key: string | string[], options?: LocalizationOptions): string;
|
|
64
|
+
/** Replace all instances of `%{key}` within a string with the translations of those keys.
|
|
65
|
+
* For example:
|
|
66
|
+
* ``` ts
|
|
67
|
+
* "MyKeys": {
|
|
68
|
+
* "Key1": "First value",
|
|
69
|
+
* "Key2": "Second value"
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* ``` ts
|
|
74
|
+
* getLocalizedKeys("string with %{MyKeys.Key1} followed by %{MyKeys.Key2}!"") // returns "string with First Value followed by Second Value!"
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
15
77
|
getLocalizedKeys(inputString: string): string;
|
|
78
|
+
/** Register a new Namespace and return a Promise that is fulfilled when the content is loaded.
|
|
79
|
+
* If the namespace is already registered, its Promise will be returned.
|
|
80
|
+
* @param name - the name of the namespace.
|
|
81
|
+
* @note - The registerNamespace method starts fetching the appropriate version of the JSON localization file from the server,
|
|
82
|
+
* based on the current locale. To make sure that fetch is complete before performing translations from this namespace, await
|
|
83
|
+
* fulfillment of returned Promise.
|
|
84
|
+
* @see [Localization in iTwin.js]($docs/learning/frontend/Localization.md)
|
|
85
|
+
*/
|
|
16
86
|
registerNamespace(namespace: string): Promise<void>;
|
|
87
|
+
/** @internal */
|
|
17
88
|
unregisterNamespace(namespace: string): void;
|
|
18
|
-
|
|
19
|
-
|
|
89
|
+
/** @internal */
|
|
90
|
+
getNamespacePromise(name: string): Promise<void> | undefined;
|
|
91
|
+
/** Get the list of available languages for translations */
|
|
92
|
+
getLanguageList(): readonly string[];
|
|
93
|
+
/** Change the language for translations. This overrides the language from the browser, for tests. */
|
|
94
|
+
changeLanguage(language: string): Promise<void>;
|
|
20
95
|
}
|
|
21
|
-
/**
|
|
96
|
+
/** An empty [[Localization]] used if one is not provided to [IModelApp]($frontend). Does not perform localizations (merely returns the key.)
|
|
22
97
|
* @public
|
|
23
98
|
*/
|
|
24
99
|
export declare class EmptyLocalization implements Localization {
|
|
100
|
+
initialize(): Promise<void>;
|
|
25
101
|
getLocalizedString(key: string | string[]): string;
|
|
26
102
|
getLocalizedStringWithNamespace(_namespace: string, key: string | string[]): string;
|
|
27
103
|
getEnglishString(_namespace: string, key: string | string[]): string;
|
|
28
104
|
getLocalizedKeys(inputString: string): string;
|
|
29
105
|
registerNamespace(): Promise<void>;
|
|
30
106
|
unregisterNamespace(): void;
|
|
31
|
-
|
|
32
|
-
|
|
107
|
+
getNamespacePromise(): Promise<void> | undefined;
|
|
108
|
+
getLanguageList(): readonly string[];
|
|
109
|
+
changeLanguage(): Promise<void>;
|
|
33
110
|
}
|
|
34
111
|
export {};
|
|
35
112
|
//# sourceMappingURL=Localization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Localization.d.ts","sourceRoot":"","sources":["../../src/Localization.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH
|
|
1
|
+
{"version":3,"file":"Localization.d.ts","sourceRoot":"","sources":["../../src/Localization.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;GAEG;AACH,UAAU,mBAAmB;IAC3B,+BAA+B;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC;IAClF;;;;;OAKG;IACH,+BAA+B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC;IAClH,wCAAwC;IACxC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACnG;;;;;;;;;;;;OAYG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAE9C;;;;;;;OAOG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAgB;IAChB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,gBAAgB;IAChB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,2DAA2D;IAC3D,eAAe,IAAI,SAAS,MAAM,EAAE,CAAC;IACrC,qGAAqG;IACrG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IACvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACjC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM;IAClD,+BAA+B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM;IACnF,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM;IACpE,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IACvC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IACxC,mBAAmB,IAAI,IAAI;IAC3B,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;IAChD,eAAe,IAAI,SAAS,MAAM,EAAE;IAC9B,cAAc;CAC5B"}
|
package/lib/cjs/Localization.js
CHANGED
|
@@ -8,18 +8,20 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.EmptyLocalization = void 0;
|
|
11
|
-
/**
|
|
11
|
+
/** An empty [[Localization]] used if one is not provided to [IModelApp]($frontend). Does not perform localizations (merely returns the key.)
|
|
12
12
|
* @public
|
|
13
13
|
*/
|
|
14
14
|
class EmptyLocalization {
|
|
15
|
+
async initialize() { }
|
|
15
16
|
getLocalizedString(key) { return typeof (key) == "string" ? key : key[0]; }
|
|
16
|
-
getLocalizedStringWithNamespace(_namespace, key) { return
|
|
17
|
-
getEnglishString(_namespace, key) { return
|
|
17
|
+
getLocalizedStringWithNamespace(_namespace, key) { return this.getLocalizedString(key); }
|
|
18
|
+
getEnglishString(_namespace, key) { return this.getLocalizedString(key); }
|
|
18
19
|
getLocalizedKeys(inputString) { return inputString; }
|
|
19
|
-
async registerNamespace() {
|
|
20
|
+
async registerNamespace() { }
|
|
20
21
|
unregisterNamespace() { }
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
getNamespacePromise() { return undefined; }
|
|
23
|
+
getLanguageList() { return []; }
|
|
24
|
+
async changeLanguage() { }
|
|
23
25
|
}
|
|
24
26
|
exports.EmptyLocalization = EmptyLocalization;
|
|
25
27
|
//# sourceMappingURL=Localization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Localization.js","sourceRoot":"","sources":["../../src/Localization.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"Localization.js","sourceRoot":"","sources":["../../src/Localization.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAkGH;;GAEG;AACH,MAAa,iBAAiB;IACrB,KAAK,CAAC,UAAU,KAAoB,CAAC;IACrC,kBAAkB,CAAC,GAAsB,IAAY,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,+BAA+B,CAAC,UAAkB,EAAE,GAAsB,IAAY,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5H,gBAAgB,CAAC,UAAkB,EAAE,GAAsB,IAAY,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7G,gBAAgB,CAAC,WAAmB,IAAY,OAAO,WAAW,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,iBAAiB,KAAoB,CAAC;IAC5C,mBAAmB,KAAW,CAAC;IAC/B,mBAAmB,KAAgC,OAAO,SAAS,CAAC,CAAC,CAAC;IACtE,eAAe,KAAwB,OAAO,EAAE,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,cAAc,KAAK,CAAC;CAClC;AAXD,8CAWC","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 Localization\r\n */\r\n\r\n/** Options for Localization\r\n * @public\r\n */\r\ninterface LocalizationOptions {\r\n /** for interpolation values */\r\n [key: string]: any;\r\n /**\r\n * defaultValue to return if a translation was not found\r\n */\r\n defaultValue?: any;\r\n /**\r\n * count value used for plurals\r\n */\r\n count?: number;\r\n /**\r\n * used for contexts (eg. male\\female)\r\n */\r\n context?: any;\r\n /**\r\n * override languages to use\r\n */\r\n lngs?: string[];\r\n /**\r\n * override language to lookup key if not found see fallbacks for details\r\n */\r\n fallbackLng?: string;\r\n}\r\n\r\n/** The interface defining the localization requirements of [IModelApp]($frontend).\r\n * @public\r\n */\r\nexport interface Localization {\r\n /** This method must be called and awaited before using an instance of Localization.\r\n * @param namespaces an array of namespaces to load. There must be at least one namespace, and it\r\n * becomes the default namespace.\r\n * @note IModelApp.startup calls this internally, so you should not call this method directly\r\n * except for Localization instances outside of IModelApp (e.g., for tests.)\r\n */\r\n initialize(namespaces: string[]): Promise<void>;\r\n\r\n /** Return the translated value of a key.\r\n * @param key - the key that matches a property in the JSON localization file.\r\n * @note The key includes the namespace, which identifies the particular localization file that contains the property,\r\n * followed by a colon, followed by the property in the JSON file.\r\n * For example:\r\n * ``` ts\r\n * const dataString: string = IModelApp.localization.getLocalizedString(\"iModelJs:BackgroundMap.BingDataAttribution\");\r\n * ```\r\n * assigns to dataString the string with property BackgroundMap.BingDataAttribution from the iModelJs.json localization file.\r\n * @returns The string corresponding to the first key that resolves.\r\n * @throws Error if no keys resolve to a string.\r\n */\r\n getLocalizedString(key: string | string[], options?: LocalizationOptions): string;\r\n /** Similar to 'translate()' but the namespace is a separate param and the key does not include the namespace.\r\n * @param namespace - the namespace that identifies the particular localization file that contains the property.\r\n * @param key - the key that matches a property in the JSON localization file.\r\n * @returns The string corresponding to the first key that resolves.\r\n * @throws Error if no keys resolve to a string.\r\n */\r\n getLocalizedStringWithNamespace(namespace: string, key: string | string[], options?: LocalizationOptions): string;\r\n /** get the English string for a key. */\r\n getEnglishString(namespace: string, key: string | string[], options?: LocalizationOptions): string;\r\n /** Replace all instances of `%{key}` within a string with the translations of those keys.\r\n * For example:\r\n * ``` ts\r\n * \"MyKeys\": {\r\n * \"Key1\": \"First value\",\r\n * \"Key2\": \"Second value\"\r\n * }\r\n * ```\r\n *\r\n * ``` ts\r\n * getLocalizedKeys(\"string with %{MyKeys.Key1} followed by %{MyKeys.Key2}!\"\") // returns \"string with First Value followed by Second Value!\"\r\n * ```\r\n */\r\n getLocalizedKeys(inputString: string): string;\r\n\r\n /** Register a new Namespace and return a Promise that is fulfilled when the content is loaded.\r\n * If the namespace is already registered, its Promise will be returned.\r\n * @param name - the name of the namespace.\r\n * @note - The registerNamespace method starts fetching the appropriate version of the JSON localization file from the server,\r\n * based on the current locale. To make sure that fetch is complete before performing translations from this namespace, await\r\n * fulfillment of returned Promise.\r\n * @see [Localization in iTwin.js]($docs/learning/frontend/Localization.md)\r\n */\r\n registerNamespace(namespace: string): Promise<void>;\r\n /** @internal */\r\n unregisterNamespace(namespace: string): void;\r\n /** @internal */\r\n getNamespacePromise(name: string): Promise<void> | undefined;\r\n /** Get the list of available languages for translations */\r\n getLanguageList(): readonly string[];\r\n /** Change the language for translations. This overrides the language from the browser, for tests. */\r\n changeLanguage(language: string): Promise<void>;\r\n}\r\n\r\n/** An empty [[Localization]] used if one is not provided to [IModelApp]($frontend). Does not perform localizations (merely returns the key.)\r\n * @public\r\n */\r\nexport class EmptyLocalization implements Localization {\r\n public async initialize(): Promise<void> { }\r\n public getLocalizedString(key: string | string[]): string { return typeof (key) == \"string\" ? key : key[0]; }\r\n public getLocalizedStringWithNamespace(_namespace: string, key: string | string[]): string { return this.getLocalizedString(key); }\r\n public getEnglishString(_namespace: string, key: string | string[]): string { return this.getLocalizedString(key); }\r\n public getLocalizedKeys(inputString: string): string { return inputString; }\r\n public async registerNamespace(): Promise<void> { }\r\n public unregisterNamespace(): void { }\r\n public getNamespacePromise(): Promise<void> | undefined { return undefined; }\r\n public getLanguageList(): readonly string[] { return []; }\r\n public async changeLanguage() { }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapImagerySettings.js","sourceRoot":"","sources":["../../src/MapImagerySettings.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,yCAAqD;AACrD,yDAA8G;AA0B9G,YAAY;AACZ,2DAA2D;AAC3D,IAAiB,iBAAiB,CAKjC;AALD,WAAiB,iBAAiB;IAChC,wDAAwD;IACxD,SAAgB,QAAQ,CAAC,KAAqB;QAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,uCAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrG,CAAC;IAFe,0BAAQ,WAEvB,CAAA;AACH,CAAC,EALgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAKjC;AAED;;;;;GAKG;AACH,MAAa,kBAAkB;IAK7B,YAAoB,IAAuB,EAAE,oBAAsC,EAAE,kBAAoC;QAHjH,sBAAiB,GAAG,IAAI,KAAK,EAAoB,CAAC;QAClD,mBAAc,GAAG,IAAI,KAAK,EAAoB,CAAC;QAGrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,oBAAoB,EAAE;YACxB,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE;gBAC7C,MAAM,KAAK,GAAG,mCAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACpD,IAAI,KAAK;oBACP,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;SACF;QACD,IAAI,kBAAkB,EAAE;YACtB,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE;gBAClD,MAAM,YAAY,GAAG,mCAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;gBAClE,IAAI,YAAY;oBACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;IAED;;OAEG;IACH,IAAW,cAAc,KAAwB,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/E,IAAW,cAAc,CAAC,IAAuB,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IAEnF,IAAW,gBAAgB,KAAyB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpF,IAAW,aAAa,KAAyB,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAE9E;;OAEG;IACH,IAAW,gBAAgB;QACzB,OAAO,CAAC,IAAI,CAAC,eAAe,YAAY,mBAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;IAEzI,CAAC;IAED,mGAAmG;IAC5F,MAAM,CAAC,QAAQ,CAAC,WAA6B;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,cAAc,CAAC,WAA6B,EAAE,QAAuC;QACjG,MAAM,SAAS,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,EAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,uCAAoB,CAAC,sBAAsB,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAG,CAAC,CAAC;QAEtK,OAAO,IAAI,kBAAkB,CAAC,SAAS,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,gBAAgB,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,aAAa,CAAC,CAAC;IACtG,CAAC;IAEM,MAAM;QACX,MAAM,KAAK,GAAoB,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QACjF,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;YACnC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;YAChC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAE3E,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA9DD,gDA8DC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module DisplayStyles\n */\n\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\nimport { ColorDef, ColorDefProps } from \"./ColorDef\";\nimport { BaseMapLayerProps, BaseMapLayerSettings, MapLayerProps, MapLayerSettings } from \"./MapLayerSettings\";\n\n/** JSON representation of a [[BaseLayerSettings]].\n * @beta\n */\nexport type BaseLayerProps = BaseMapLayerProps | ColorDefProps;\n\n/** The JSON representation of the map imagery. Map imagery include the specification for the base layer (which was originally\n * represented by [[BackgroundMapProps.providerName]] && [[BackgroundMapProps.providerData]]) and additional map layers.\n * In earlier versions only a background map was supported as specified by the providerName and mapType members of [[BackgroundMapSettings]] object.\n * In order to provide backward compatibility the original [[BackgroundMapSettings]] are synchronized with the [[MapImagerySettings]] base layer as long as\n * the settings are compatible.\n * @beta\n */\nexport interface MapImageryProps {\n backgroundBase?: BaseLayerProps;\n backgroundLayers?: MapLayerProps[];\n overlayLayers?: MapLayerProps[];\n}\n\n/** The base layer for a [[MapImagerySettings]].\n * @see [[MapImagerySettings.backgroundBase]].\n * @beta\n */\nexport type BaseLayerSettings = BaseMapLayerSettings | ColorDef;\n\n/** @beta */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport namespace BaseLayerSettings {\n /** Create a base layer from its JSON representation. */\n export function fromJSON(props: BaseLayerProps): BaseLayerSettings {\n return typeof props === \"number\" ? ColorDef.fromJSON(props) : BaseMapLayerSettings.fromJSON(props);\n }\n}\n\n/** Provides access to the map imagery settings (Base and layers).\n * In earlier versions only a background map was supported as specified by the providerName and mapType members of [[BackgroundMapSettings]] object.\n * In order to provide backward compatibility the original [[BackgroundMapSettings]] are synchronized with the [[MapImagerySettings]] base layer as long as\n * the settings are compatible.\n * @beta\n */\nexport class MapImagerySettings {\n private _backgroundBase: BaseLayerSettings;\n private _backgroundLayers = new Array<MapLayerSettings>();\n private _overlayLayers = new Array<MapLayerSettings>();\n\n private constructor(base: BaseLayerSettings, backgroundLayerProps?: MapLayerProps[], overlayLayersProps?: MapLayerProps[]) {\n this._backgroundBase = base;\n if (backgroundLayerProps) {\n for (const layerProps of backgroundLayerProps) {\n const layer = MapLayerSettings.fromJSON(layerProps);\n if (layer)\n this._backgroundLayers.push(layer);\n }\n }\n if (overlayLayersProps) {\n for (const overlayLayerProps of overlayLayersProps) {\n const overlayLayer = MapLayerSettings.fromJSON(overlayLayerProps);\n if (overlayLayer)\n this._overlayLayers.push(overlayLayer);\n }\n }\n }\n\n /** The settings for the base layer.\n * @note If changing the base provider it is currently necessary to also update the background map settings.\n */\n public get backgroundBase(): BaseLayerSettings { return this._backgroundBase; }\n public set backgroundBase(base: BaseLayerSettings) { this._backgroundBase = base; }\n\n public get backgroundLayers(): MapLayerSettings[] { return this._backgroundLayers; }\n public get overlayLayers(): MapLayerSettings[] { return this._overlayLayers; }\n\n /** Return base transparency as a number between 0 and 1.\n * @internal\n */\n public get baseTransparency(): number {\n return (this._backgroundBase instanceof ColorDef) ? (this._backgroundBase.getTransparency() / 255) : this._backgroundBase.transparency;\n\n }\n\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\n public static fromJSON(imageryJson?: MapImageryProps) {\n return this.createFromJSON(imageryJson, undefined);\n }\n\n /** @internal */\n public static createFromJSON(imageryJson?: MapImageryProps, mapProps?: DeprecatedBackgroundMapProps) {\n const baseLayer = imageryJson?.backgroundBase ? BaseLayerSettings.fromJSON(imageryJson.backgroundBase) : BaseMapLayerSettings.fromBackgroundMapProps(mapProps ?? { });\n\n return new MapImagerySettings(baseLayer, imageryJson?.backgroundLayers, imageryJson?.overlayLayers);\n }\n\n public toJSON(): MapImageryProps {\n const props: MapImageryProps = { backgroundBase: this._backgroundBase.toJSON() };\n if (this._backgroundLayers.length > 0)\n props.backgroundLayers = this._backgroundLayers.map((layer) => layer.toJSON());\n\n if (this._overlayLayers.length > 0)\n props.overlayLayers = this._overlayLayers.map((layer) => layer.toJSON());\n\n return props;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MapImagerySettings.js","sourceRoot":"","sources":["../../src/MapImagerySettings.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 DisplayStyles\r\n */\r\n\r\nimport { DeprecatedBackgroundMapProps } from \"./BackgroundMapSettings\";\r\nimport { ColorDef, ColorDefProps } from \"./ColorDef\";\r\nimport { BaseMapLayerProps, BaseMapLayerSettings, MapLayerProps, MapLayerSettings } from \"./MapLayerSettings\";\r\n\r\n/** JSON representation of a [[BaseLayerSettings]].\r\n * @beta\r\n */\r\nexport type BaseLayerProps = BaseMapLayerProps | ColorDefProps;\r\n\r\n/** The JSON representation of the map imagery. Map imagery include the specification for the base layer (which was originally\r\n * represented by [[BackgroundMapProps.providerName]] && [[BackgroundMapProps.providerData]]) and additional map layers.\r\n * In earlier versions only a background map was supported as specified by the providerName and mapType members of [[BackgroundMapSettings]] object.\r\n * In order to provide backward compatibility the original [[BackgroundMapSettings]] are synchronized with the [[MapImagerySettings]] base layer as long as\r\n * the settings are compatible.\r\n * @beta\r\n */\r\nexport interface MapImageryProps {\r\n backgroundBase?: BaseLayerProps;\r\n backgroundLayers?: MapLayerProps[];\r\n overlayLayers?: MapLayerProps[];\r\n}\r\n\r\n/** The base layer for a [[MapImagerySettings]].\r\n * @see [[MapImagerySettings.backgroundBase]].\r\n * @beta\r\n */\r\nexport type BaseLayerSettings = BaseMapLayerSettings | ColorDef;\r\n\r\n/** @beta */\r\n// eslint-disable-next-line @typescript-eslint/no-redeclare\r\nexport namespace BaseLayerSettings {\r\n /** Create a base layer from its JSON representation. */\r\n export function fromJSON(props: BaseLayerProps): BaseLayerSettings {\r\n return typeof props === \"number\" ? ColorDef.fromJSON(props) : BaseMapLayerSettings.fromJSON(props);\r\n }\r\n}\r\n\r\n/** Provides access to the map imagery settings (Base and layers).\r\n * In earlier versions only a background map was supported as specified by the providerName and mapType members of [[BackgroundMapSettings]] object.\r\n * In order to provide backward compatibility the original [[BackgroundMapSettings]] are synchronized with the [[MapImagerySettings]] base layer as long as\r\n * the settings are compatible.\r\n * @beta\r\n */\r\nexport class MapImagerySettings {\r\n private _backgroundBase: BaseLayerSettings;\r\n private _backgroundLayers = new Array<MapLayerSettings>();\r\n private _overlayLayers = new Array<MapLayerSettings>();\r\n\r\n private constructor(base: BaseLayerSettings, backgroundLayerProps?: MapLayerProps[], overlayLayersProps?: MapLayerProps[]) {\r\n this._backgroundBase = base;\r\n if (backgroundLayerProps) {\r\n for (const layerProps of backgroundLayerProps) {\r\n const layer = MapLayerSettings.fromJSON(layerProps);\r\n if (layer)\r\n this._backgroundLayers.push(layer);\r\n }\r\n }\r\n if (overlayLayersProps) {\r\n for (const overlayLayerProps of overlayLayersProps) {\r\n const overlayLayer = MapLayerSettings.fromJSON(overlayLayerProps);\r\n if (overlayLayer)\r\n this._overlayLayers.push(overlayLayer);\r\n }\r\n }\r\n }\r\n\r\n /** The settings for the base layer.\r\n * @note If changing the base provider it is currently necessary to also update the background map settings.\r\n */\r\n public get backgroundBase(): BaseLayerSettings { return this._backgroundBase; }\r\n public set backgroundBase(base: BaseLayerSettings) { this._backgroundBase = base; }\r\n\r\n public get backgroundLayers(): MapLayerSettings[] { return this._backgroundLayers; }\r\n public get overlayLayers(): MapLayerSettings[] { return this._overlayLayers; }\r\n\r\n /** Return base transparency as a number between 0 and 1.\r\n * @internal\r\n */\r\n public get baseTransparency(): number {\r\n return (this._backgroundBase instanceof ColorDef) ? (this._backgroundBase.getTransparency() / 255) : this._backgroundBase.transparency;\r\n\r\n }\r\n\r\n /** Construct from JSON, performing validation and applying default values for undefined fields. */\r\n public static fromJSON(imageryJson?: MapImageryProps) {\r\n return this.createFromJSON(imageryJson, undefined);\r\n }\r\n\r\n /** @internal */\r\n public static createFromJSON(imageryJson?: MapImageryProps, mapProps?: DeprecatedBackgroundMapProps) {\r\n const baseLayer = imageryJson?.backgroundBase ? BaseLayerSettings.fromJSON(imageryJson.backgroundBase) : BaseMapLayerSettings.fromBackgroundMapProps(mapProps ?? { });\r\n\r\n return new MapImagerySettings(baseLayer, imageryJson?.backgroundLayers, imageryJson?.overlayLayers);\r\n }\r\n\r\n public toJSON(): MapImageryProps {\r\n const props: MapImageryProps = { backgroundBase: this._backgroundBase.toJSON() };\r\n if (this._backgroundLayers.length > 0)\r\n props.backgroundLayers = this._backgroundLayers.map((layer) => layer.toJSON());\r\n\r\n if (this._overlayLayers.length > 0)\r\n props.overlayLayers = this._overlayLayers.map((layer) => layer.toJSON());\r\n\r\n return props;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelClipGroup.js","sourceRoot":"","sources":["../../src/ModelClipGroup.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,wDAAmE;AAYnE;;;GAGG;AACH,MAAa,cAAc;IAMzB,YAAoB,MAA6B,EAAE,IAA4B;QAC7E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,2HAA2H;IACpH,MAAM,CAAC,MAAM,CAAC,IAA4B,EAAE,MAAkB;QACnE,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,wCAAwC;IACjC,KAAK;;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,oEAAoE;IAC7D,aAAa,CAAC,OAAmB;QACtC,OAAO,SAAS,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,QAAQ,CAAC,KAA0B;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,0BAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC;IAED,sCAAsC;IAC/B,MAAM;QACX,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,MAAM;YACb,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,IAAI;YACX,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAElC,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA7CD,wCA6CC;AAED;;;;;;;;GAQG;AACH,MAAa,eAAe;IAI1B;;OAEG;IACH,YAAmB,SAA2B,EAAE;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,kDAAkD;IAC3C,KAAK;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,4EAA4E;IACrE,SAAS,CAAC,OAAmB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,yHAAyH;IAClH,cAAc,CAAC,OAAmB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,OAAmB;;QACxC,OAAO,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,0CAAE,IAAI,CAAC;IACvC,CAAC;IAED,uCAAuC;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAwC;QAC7D,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,sCAAsC;IAC/B,MAAM;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;CACF;AA5CD,0CA4CC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Views\n */\n\nimport { Id64Array, Id64String } from \"@itwin/core-bentley\";\nimport { ClipVector, ClipVectorProps } from \"@itwin/core-geometry\";\n\n/** JSON representation of a [[ModelClipGroup]].\n * @public\n */\nexport interface ModelClipGroupProps {\n /** The Ids of the models in the group. */\n models?: Id64Array;\n /** JSON representation of the [ClipVector]($core-geometry) applied to the group. */\n clip?: ClipVectorProps;\n}\n\n/** Describes how to clip a group of models in the context of a [ViewDefinition3d]($backend) by applying a single [ClipVector]($core-geometry] to each model in the group.\n * @see [[ModelClipGroups]] to define multiple groups of models with different clip vectors.\n * @public\n */\nexport class ModelClipGroup {\n /** The Ids of the models to be clipped, or undefined if the group includes all models. */\n public readonly models?: Id64Array;\n /** The clip to apply to the group of models. `undefined` indicates the models are exempt from clipping. */\n public readonly clip?: ClipVector;\n\n private constructor(models: Id64Array | undefined, clip: ClipVector | undefined) {\n this.models = models;\n this.clip = clip;\n }\n\n /** Create a new ModelClipGroup. The input arguments are captured as references and should not be subsequently modified. */\n public static create(clip: ClipVector | undefined, models?: Id64Array): ModelClipGroup {\n return new ModelClipGroup(models, clip);\n }\n\n /** Create a deep copy of this group. */\n public clone(): ModelClipGroup {\n const models = this.models ? [...this.models] : undefined;\n return new ModelClipGroup(models, this.clip?.clone());\n }\n\n /** Returns whether the specified model Id belongs to this group. */\n public includesModel(modelId: Id64String): boolean {\n return undefined === this.models || this.models.includes(modelId);\n }\n\n /** Create from JSON representation. */\n public static fromJSON(props: ModelClipGroupProps): ModelClipGroup {\n const models = props.models ? [...props.models] : undefined;\n const clip = props.clip ? ClipVector.fromJSON(props.clip) : undefined;\n return new ModelClipGroup(models, undefined !== clip && clip.isValid ? clip : undefined);\n }\n\n /** Convert to JSON representation. */\n public toJSON(): ModelClipGroupProps {\n const props: ModelClipGroupProps = {};\n if (this.models)\n props.models = [...this.models];\n\n if (this.clip)\n props.clip = this.clip.toJSON();\n\n return props;\n }\n}\n\n/** Describes how to clip groups of models in the context of a [ViewDefinition3d]($backend) or [ViewState3d]($frontend).\n * Each group will be clipped by the [ClipVector]($core-geometry) associated with the group to which it belongs.\n * A model belongs to the first group in the list for which `ModelClipGroup.includesModel()` returns `true`.\n * A catch-all group can be defined by a ModelClipGroup with an `undefined` array of model Ids; any model whose Id does not appear in any group's list would belong to this group. If a catch-all group exists, it should appear last in the list.\n * A group of models can be exempted from clipping by a ModelClipGroup with an `undefined` ClipVector.\n * @note A ModelClipGroups obtained from a [[ViewDetails3d]] should **not** be modified directly. Clone it instead and modify the clone.\n * @see [[ViewDetails3d.modelClipGroups]] to define the clip groups for a [ViewDefinition3d]($backend) or [ViewState3d]($frontend).\n * @public\n */\nexport class ModelClipGroups {\n /** The groups of models and their associated clips. */\n public readonly groups: ModelClipGroup[];\n\n /** Create a new ModelClipGroups.\n * @note The ModelClipGroup takes ownership of the input array, which should not be subsequently modified.\n */\n public constructor(groups: ModelClipGroup[] = []) {\n this.groups = groups;\n }\n\n /** Create a deep copy of this ModelClipGroups. */\n public clone(): ModelClipGroups {\n const groups = this.groups.map((group) => group.clone());\n return new ModelClipGroups(groups);\n }\n\n /** Find the first group to which the specified model Id belongs, if any. */\n public findGroup(modelId: Id64String): ModelClipGroup | undefined {\n return this.groups.find((group) => group.includesModel(modelId));\n }\n\n /** Returns the array index of the group to which the specified model belongs, or -1 if the model belongs to no group. */\n public findGroupIndex(modelId: Id64String): number {\n return this.groups.findIndex((group) => group.includesModel(modelId));\n }\n\n /** Find the clip that should be applied to the specified model.\n * @note This may return `undefined` if the model belongs to no group, **or** it belongs to a group that should not be clipped.\n */\n public getClipForModel(modelId: Id64String): ClipVector | undefined {\n return this.findGroup(modelId)?.clip;\n }\n\n /** Create from JSON representation. */\n public static fromJSON(props: ModelClipGroupProps[] | undefined): ModelClipGroups {\n const groups = props?.map((prop) => ModelClipGroup.fromJSON(prop));\n return new ModelClipGroups(groups);\n }\n\n /** Convert to JSON representation. */\n public toJSON(): ModelClipGroupProps[] {\n return this.groups.map((group) => group.toJSON());\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ModelClipGroup.js","sourceRoot":"","sources":["../../src/ModelClipGroup.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 Views\r\n */\r\n\r\nimport { Id64Array, Id64String } from \"@itwin/core-bentley\";\r\nimport { ClipVector, ClipVectorProps } from \"@itwin/core-geometry\";\r\n\r\n/** JSON representation of a [[ModelClipGroup]].\r\n * @public\r\n */\r\nexport interface ModelClipGroupProps {\r\n /** The Ids of the models in the group. */\r\n models?: Id64Array;\r\n /** JSON representation of the [ClipVector]($core-geometry) applied to the group. */\r\n clip?: ClipVectorProps;\r\n}\r\n\r\n/** Describes how to clip a group of models in the context of a [ViewDefinition3d]($backend) by applying a single [ClipVector]($core-geometry] to each model in the group.\r\n * @see [[ModelClipGroups]] to define multiple groups of models with different clip vectors.\r\n * @public\r\n */\r\nexport class ModelClipGroup {\r\n /** The Ids of the models to be clipped, or undefined if the group includes all models. */\r\n public readonly models?: Id64Array;\r\n /** The clip to apply to the group of models. `undefined` indicates the models are exempt from clipping. */\r\n public readonly clip?: ClipVector;\r\n\r\n private constructor(models: Id64Array | undefined, clip: ClipVector | undefined) {\r\n this.models = models;\r\n this.clip = clip;\r\n }\r\n\r\n /** Create a new ModelClipGroup. The input arguments are captured as references and should not be subsequently modified. */\r\n public static create(clip: ClipVector | undefined, models?: Id64Array): ModelClipGroup {\r\n return new ModelClipGroup(models, clip);\r\n }\r\n\r\n /** Create a deep copy of this group. */\r\n public clone(): ModelClipGroup {\r\n const models = this.models ? [...this.models] : undefined;\r\n return new ModelClipGroup(models, this.clip?.clone());\r\n }\r\n\r\n /** Returns whether the specified model Id belongs to this group. */\r\n public includesModel(modelId: Id64String): boolean {\r\n return undefined === this.models || this.models.includes(modelId);\r\n }\r\n\r\n /** Create from JSON representation. */\r\n public static fromJSON(props: ModelClipGroupProps): ModelClipGroup {\r\n const models = props.models ? [...props.models] : undefined;\r\n const clip = props.clip ? ClipVector.fromJSON(props.clip) : undefined;\r\n return new ModelClipGroup(models, undefined !== clip && clip.isValid ? clip : undefined);\r\n }\r\n\r\n /** Convert to JSON representation. */\r\n public toJSON(): ModelClipGroupProps {\r\n const props: ModelClipGroupProps = {};\r\n if (this.models)\r\n props.models = [...this.models];\r\n\r\n if (this.clip)\r\n props.clip = this.clip.toJSON();\r\n\r\n return props;\r\n }\r\n}\r\n\r\n/** Describes how to clip groups of models in the context of a [ViewDefinition3d]($backend) or [ViewState3d]($frontend).\r\n * Each group will be clipped by the [ClipVector]($core-geometry) associated with the group to which it belongs.\r\n * A model belongs to the first group in the list for which `ModelClipGroup.includesModel()` returns `true`.\r\n * A catch-all group can be defined by a ModelClipGroup with an `undefined` array of model Ids; any model whose Id does not appear in any group's list would belong to this group. If a catch-all group exists, it should appear last in the list.\r\n * A group of models can be exempted from clipping by a ModelClipGroup with an `undefined` ClipVector.\r\n * @note A ModelClipGroups obtained from a [[ViewDetails3d]] should **not** be modified directly. Clone it instead and modify the clone.\r\n * @see [[ViewDetails3d.modelClipGroups]] to define the clip groups for a [ViewDefinition3d]($backend) or [ViewState3d]($frontend).\r\n * @public\r\n */\r\nexport class ModelClipGroups {\r\n /** The groups of models and their associated clips. */\r\n public readonly groups: ModelClipGroup[];\r\n\r\n /** Create a new ModelClipGroups.\r\n * @note The ModelClipGroup takes ownership of the input array, which should not be subsequently modified.\r\n */\r\n public constructor(groups: ModelClipGroup[] = []) {\r\n this.groups = groups;\r\n }\r\n\r\n /** Create a deep copy of this ModelClipGroups. */\r\n public clone(): ModelClipGroups {\r\n const groups = this.groups.map((group) => group.clone());\r\n return new ModelClipGroups(groups);\r\n }\r\n\r\n /** Find the first group to which the specified model Id belongs, if any. */\r\n public findGroup(modelId: Id64String): ModelClipGroup | undefined {\r\n return this.groups.find((group) => group.includesModel(modelId));\r\n }\r\n\r\n /** Returns the array index of the group to which the specified model belongs, or -1 if the model belongs to no group. */\r\n public findGroupIndex(modelId: Id64String): number {\r\n return this.groups.findIndex((group) => group.includesModel(modelId));\r\n }\r\n\r\n /** Find the clip that should be applied to the specified model.\r\n * @note This may return `undefined` if the model belongs to no group, **or** it belongs to a group that should not be clipped.\r\n */\r\n public getClipForModel(modelId: Id64String): ClipVector | undefined {\r\n return this.findGroup(modelId)?.clip;\r\n }\r\n\r\n /** Create from JSON representation. */\r\n public static fromJSON(props: ModelClipGroupProps[] | undefined): ModelClipGroups {\r\n const groups = props?.map((prop) => ModelClipGroup.fromJSON(prop));\r\n return new ModelClipGroups(groups);\r\n }\r\n\r\n /** Convert to JSON representation. */\r\n public toJSON(): ModelClipGroupProps[] {\r\n return this.groups.map((group) => group.toJSON());\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelProps.js","sourceRoot":"","sources":["../../src/ModelProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Entities\n */\n\nimport { GuidString, Id64String } from \"@itwin/core-bentley\";\nimport { XYProps } from \"@itwin/core-geometry\";\nimport { CodeProps } from \"./Code\";\nimport { RelatedElementProps } from \"./ElementProps\";\nimport { EntityProps, EntityQueryParams } from \"./EntityProps\";\n\n/** Properties that define a [Model]($docs/bis/intro/model-fundamentals)\n * @public\n */\nexport interface ModelProps extends EntityProps {\n modeledElement: RelatedElementProps;\n name?: string;\n parentModel?: Id64String; // NB! Must always match the model of the modeledElement!\n isPrivate?: boolean;\n isTemplate?: boolean;\n jsonProperties?: any;\n}\n\n/** Properties that specify what model should be loaded.\n * @public\n */\nexport interface ModelLoadProps {\n id?: Id64String;\n code?: CodeProps;\n}\n\n/** Parameters for performing a query on [Model]($backend) classes.\n * @public\n */\nexport interface ModelQueryParams extends EntityQueryParams {\n wantTemplate?: boolean;\n wantPrivate?: boolean;\n}\n\n/** Properties that describe a [GeometricModel]($backend)\n * @public\n */\nexport interface GeometricModelProps extends ModelProps {\n /** A unique identifier that is updated each time a change affecting the appearance of a geometric element within this model\n * is committed to the iModel. In other words, between versions of the iModel, if this value is the same you can\n * assume the appearance of all of the geometry in the model is the same (Note: other properties of elements may have changed.)\n * If undefined, the state of the geometry is unknown.\n */\n geometryGuid?: GuidString;\n}\n\n/** Properties that define a [GeometricModel2d]($backend)\n * @public\n */\nexport interface GeometricModel2dProps extends GeometricModelProps {\n /** The actual coordinates of (0,0) in modeling coordinates. An offset applied to all modeling coordinates. */\n globalOrigin?: XYProps;\n}\n\n/** Properties that define a [GeometricModel3d]($backend)\n * @public\n */\nexport interface GeometricModel3dProps extends GeometricModelProps {\n /** If true, then the elements in this GeometricModel3d are not in real-world coordinates and will not be in the spatial index. */\n isNotSpatiallyLocated?: boolean;\n /** If true, then the elements in this GeometricModel3d are expected to be in an XY plane. */\n isPlanProjection?: boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ModelProps.js","sourceRoot":"","sources":["../../src/ModelProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG","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 Entities\r\n */\r\n\r\nimport { GuidString, Id64String } from \"@itwin/core-bentley\";\r\nimport { XYProps } from \"@itwin/core-geometry\";\r\nimport { CodeProps } from \"./Code\";\r\nimport { RelatedElementProps } from \"./ElementProps\";\r\nimport { EntityProps, EntityQueryParams } from \"./EntityProps\";\r\n\r\n/** Properties that define a [Model]($docs/bis/intro/model-fundamentals)\r\n * @public\r\n */\r\nexport interface ModelProps extends EntityProps {\r\n modeledElement: RelatedElementProps;\r\n name?: string;\r\n parentModel?: Id64String; // NB! Must always match the model of the modeledElement!\r\n isPrivate?: boolean;\r\n isTemplate?: boolean;\r\n jsonProperties?: any;\r\n}\r\n\r\n/** Properties that specify what model should be loaded.\r\n * @public\r\n */\r\nexport interface ModelLoadProps {\r\n id?: Id64String;\r\n code?: CodeProps;\r\n}\r\n\r\n/** Parameters for performing a query on [Model]($backend) classes.\r\n * @public\r\n */\r\nexport interface ModelQueryParams extends EntityQueryParams {\r\n wantTemplate?: boolean;\r\n wantPrivate?: boolean;\r\n}\r\n\r\n/** Properties that describe a [GeometricModel]($backend)\r\n * @public\r\n */\r\nexport interface GeometricModelProps extends ModelProps {\r\n /** A unique identifier that is updated each time a change affecting the appearance of a geometric element within this model\r\n * is committed to the iModel. In other words, between versions of the iModel, if this value is the same you can\r\n * assume the appearance of all of the geometry in the model is the same (Note: other properties of elements may have changed.)\r\n * If undefined, the state of the geometry is unknown.\r\n */\r\n geometryGuid?: GuidString;\r\n}\r\n\r\n/** Properties that define a [GeometricModel2d]($backend)\r\n * @public\r\n */\r\nexport interface GeometricModel2dProps extends GeometricModelProps {\r\n /** The actual coordinates of (0,0) in modeling coordinates. An offset applied to all modeling coordinates. */\r\n globalOrigin?: XYProps;\r\n}\r\n\r\n/** Properties that define a [GeometricModel3d]($backend)\r\n * @public\r\n */\r\nexport interface GeometricModel3dProps extends GeometricModelProps {\r\n /** If true, then the elements in this GeometricModel3d are not in real-world coordinates and will not be in the spatial index. */\r\n isNotSpatiallyLocated?: boolean;\r\n /** If true, then the elements in this GeometricModel3d are expected to be in an XY plane. */\r\n isPlanProjection?: boolean;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OctEncodedNormal.js","sourceRoot":"","sources":["../../src/OctEncodedNormal.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { Vector3d, XYAndZ } from \"@itwin/core-geometry\";\n\nconst scratchUInt16 = new Uint16Array(1);\n\nfunction clamp(val: number, minVal: number, maxVal: number): number {\n return val < minVal ? minVal : (val > maxVal ? maxVal : val);\n}\n\nfunction clampUint8(val: number): number {\n return roundUint16(0.5 + (clamp(val, -1, 1) * 0.5 + 0.5) * 255);\n}\n\nfunction roundUint16(val: number): number {\n scratchUInt16[0] = val;\n return scratchUInt16[0];\n}\n\nfunction signNotZero(val: number): number {\n return val < 0.0 ? -1.0 : 1.0;\n}\n\n/** Represents a 3d normal vector compressed into a single 16-bit integer using [oct-encoding](http://jcgt.org/published/0003/02/01/paper.pdf).\n * These are chiefly used to reduce the space required to store normal vectors for [RenderGraphic]($frontend)s.\n * @public\n */\nexport class OctEncodedNormal {\n /** The encoded normal. */\n public readonly value: number;\n\n /** Construct directly from a 16-bit encoded value.\n * @see [[encode]] to compute the encoded value.\n * @see [[fromVector]] to construct from a vector.\n */\n public constructor(val: number) {\n this.value = roundUint16(val);\n }\n\n /** Compute the encoded 16-bit value of the supplied normalized vector. */\n public static encode(vec: XYAndZ): number {\n return this.encodeXYZ(vec.x, vec.y, vec.z);\n }\n\n /** Compute the encoded 16-bit value of the supplied normalized vector components. */\n public static encodeXYZ(nx: number, ny: number, nz: number): number {\n const denom = Math.abs(nx) + Math.abs(ny) + Math.abs(nz);\n let rx = nx / denom;\n let ry = ny / denom;\n if (nz < 0) {\n const x = rx;\n const y = ry;\n rx = (1 - Math.abs(y)) * signNotZero(x);\n ry = (1 - Math.abs(x)) * signNotZero(y);\n }\n return clampUint8(ry) << 8 | clampUint8(rx);\n }\n\n /** Create an OctEncodedNormal from a normalized vector. */\n public static fromVector(val: XYAndZ): OctEncodedNormal {\n return new OctEncodedNormal(this.encode(val));\n }\n\n /** Decode this oct-encoded normal into a normalized vector. */\n public decode(): Vector3d {\n return OctEncodedNormal.decodeValue(this.value);\n }\n\n /** Decode a 16-bit encoded value into a normalized vector. */\n public static decodeValue(val: number, result?: Vector3d): Vector3d {\n let ex = val & 0xff;\n let ey = val >> 8;\n ex = ex / 255.0 * 2.0 - 1.0;\n ey = ey / 255.0 * 2.0 - 1.0;\n const ez = 1 - (Math.abs(ex) + Math.abs(ey));\n let n;\n if (result === undefined) {\n n = new Vector3d(ex, ey, ez);\n } else {\n n = result;\n n.x = ex;\n n.y = ey;\n n.z = ez;\n }\n\n if (n.z < 0) {\n const x = n.x;\n const y = n.y;\n n.x = (1 - Math.abs(y)) * signNotZero(x);\n n.y = (1 - Math.abs(x)) * signNotZero(y);\n }\n\n n.normalizeInPlace();\n return n;\n }\n}\n\n/** @internal */\nexport class OctEncodedNormalPair {\n constructor(public first: OctEncodedNormal, public second: OctEncodedNormal) { }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"OctEncodedNormal.js","sourceRoot":"","sources":["../../src/OctEncodedNormal.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 Rendering\r\n */\r\n\r\nimport { Vector3d, XYAndZ } from \"@itwin/core-geometry\";\r\n\r\nconst scratchUInt16 = new Uint16Array(1);\r\n\r\nfunction clamp(val: number, minVal: number, maxVal: number): number {\r\n return val < minVal ? minVal : (val > maxVal ? maxVal : val);\r\n}\r\n\r\nfunction clampUint8(val: number): number {\r\n return roundUint16(0.5 + (clamp(val, -1, 1) * 0.5 + 0.5) * 255);\r\n}\r\n\r\nfunction roundUint16(val: number): number {\r\n scratchUInt16[0] = val;\r\n return scratchUInt16[0];\r\n}\r\n\r\nfunction signNotZero(val: number): number {\r\n return val < 0.0 ? -1.0 : 1.0;\r\n}\r\n\r\n/** Represents a 3d normal vector compressed into a single 16-bit integer using [oct-encoding](http://jcgt.org/published/0003/02/01/paper.pdf).\r\n * These are chiefly used to reduce the space required to store normal vectors for [RenderGraphic]($frontend)s.\r\n * @public\r\n */\r\nexport class OctEncodedNormal {\r\n /** The encoded normal. */\r\n public readonly value: number;\r\n\r\n /** Construct directly from a 16-bit encoded value.\r\n * @see [[encode]] to compute the encoded value.\r\n * @see [[fromVector]] to construct from a vector.\r\n */\r\n public constructor(val: number) {\r\n this.value = roundUint16(val);\r\n }\r\n\r\n /** Compute the encoded 16-bit value of the supplied normalized vector. */\r\n public static encode(vec: XYAndZ): number {\r\n return this.encodeXYZ(vec.x, vec.y, vec.z);\r\n }\r\n\r\n /** Compute the encoded 16-bit value of the supplied normalized vector components. */\r\n public static encodeXYZ(nx: number, ny: number, nz: number): number {\r\n const denom = Math.abs(nx) + Math.abs(ny) + Math.abs(nz);\r\n let rx = nx / denom;\r\n let ry = ny / denom;\r\n if (nz < 0) {\r\n const x = rx;\r\n const y = ry;\r\n rx = (1 - Math.abs(y)) * signNotZero(x);\r\n ry = (1 - Math.abs(x)) * signNotZero(y);\r\n }\r\n return clampUint8(ry) << 8 | clampUint8(rx);\r\n }\r\n\r\n /** Create an OctEncodedNormal from a normalized vector. */\r\n public static fromVector(val: XYAndZ): OctEncodedNormal {\r\n return new OctEncodedNormal(this.encode(val));\r\n }\r\n\r\n /** Decode this oct-encoded normal into a normalized vector. */\r\n public decode(): Vector3d {\r\n return OctEncodedNormal.decodeValue(this.value);\r\n }\r\n\r\n /** Decode a 16-bit encoded value into a normalized vector. */\r\n public static decodeValue(val: number, result?: Vector3d): Vector3d {\r\n let ex = val & 0xff;\r\n let ey = val >> 8;\r\n ex = ex / 255.0 * 2.0 - 1.0;\r\n ey = ey / 255.0 * 2.0 - 1.0;\r\n const ez = 1 - (Math.abs(ex) + Math.abs(ey));\r\n let n;\r\n if (result === undefined) {\r\n n = new Vector3d(ex, ey, ez);\r\n } else {\r\n n = result;\r\n n.x = ex;\r\n n.y = ey;\r\n n.z = ez;\r\n }\r\n\r\n if (n.z < 0) {\r\n const x = n.x;\r\n const y = n.y;\r\n n.x = (1 - Math.abs(y)) * signNotZero(x);\r\n n.y = (1 - Math.abs(x)) * signNotZero(y);\r\n }\r\n\r\n n.normalizeInPlace();\r\n return n;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class OctEncodedNormalPair {\r\n constructor(public first: OctEncodedNormal, public second: OctEncodedNormal) { }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanarClipMask.js","sourceRoot":"","sources":["../../src/PlanarClipMask.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module DisplayStyles\n */\n\nimport { CompressedId64Set, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\n\n/** The different modes by which a [[PlanarClipMaskSettings]] collects the geometry used to mask a model.\n * @public\n */\nexport enum PlanarClipMaskMode {\n /** No masking. */\n None = 0,\n /** Mask based on priority. Different types of models have different default priorities as enumerated by [[PlanarClipMaskPriority]].\n * For example, background maps have the lowest priority, so they are masked by all other types, while design models have the highest priority and are therefore never masked.\n * The priority of a reality model can be overridden by [[PlanarClipMaskSettings.priority]]. This is useful to allow one reality model to mask another overlapping one.\n */\n Priority = 1,\n /** Indicates that masks should be produced from the geometry in a set of [GeometricModel]($backend)s. */\n Models = 2,\n /** Indicates that masks should be produced from geometry belonging to a set of subcategories. */\n IncludeSubCategories = 3,\n /** Indicates that masks should be produced from the geometry of a set of [GeometricElement]($backend)s. */\n IncludeElements = 4,\n /** Indicates that masks should be produced from the geometry of all [GeometricElement]($backend)s in a view, **except** for a specified set of excluded elements. */\n ExcludeElements = 5,\n}\n\n/** The default priority values for a [[PlanarClipMaskSettings]], based on model type. Models with a lower priority are masked by models with a higher priority.\n * The default can be overridden by [[PlanarClipMaskSettings.priority]].\n * @public\n */\nexport enum PlanarClipMaskPriority {\n /** Background map. */\n BackgroundMap = -2048,\n /** A reality model that spans the globe - e.g., OpenStreetMaps Buildings. */\n GlobalRealityModel = -1024,\n /** A reality model with a bounded range. */\n RealityModel = 0,\n /** A design model stored in the [IModelDb]($backend). */\n DesignModel = 2048,\n}\n\n/** JSON representation of a [[PlanarClipMaskSettings]].\n * @see [[DisplayStyleSettingsProps.planarClipOvr]] and [[ContextRealityModelProps.planarClipMask]].\n * @public\n */\nexport interface PlanarClipMaskProps {\n /** Controls how the mask geometry is collected */\n mode: PlanarClipMaskMode;\n /** @see [[PlanarClipMaskSettings.modelIds]]. */\n modelIds?: CompressedId64Set;\n /** @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\n subCategoryOrElementIds?: CompressedId64Set;\n /** @see [[PlanarClipMaskSettings.priority]]. */\n priority?: number;\n /** @see [[PlanarClipMaskSettings.transparency]]. */\n transparency?: number;\n}\n\n/** Describes how to mask the geometry of one [GeometricModel]($backend) for display. The mask is produced by projecting geometry from any number of other models -\n * optionally filtered by [SubCategory]($backend) or by a set of specific [GeometricElement]($backend)s - onto a plane. Regions of the masked model that intersect the\n * mask are rendered partially or completely transparent. This is useful for, e.g., making subsurface geometry visible below the background map, or clipping out portions\n * of a reality model that intersect a design model.\n * @note Currently reality models (including background maps and terrain) can be masked, but design models can only produce masks.\n * @see [[DisplayStyleSettings.planarClipMasks]] to define clip masks for a [DisplayStyle]($backend).\n * @see [[ContextRealityModel.planarClipMaskSettings]] to apply a clip mask to a context reality model.\n * @public\n */\nexport class PlanarClipMaskSettings {\n /** Specifies how the mask geometry is produced. */\n public readonly mode: PlanarClipMaskMode;\n /** For any mode other than [[PlanarClipMaskMode.Priority]], the Ids of the [GeometricModel]($backend)s containing the geometry used to produce the mask.\n * If `undefined`, the set of all models in the view's [ModelSelector]($backend) is used.\n * The mask geometry can be filtered by [[subCategoryOrElementIds]].\n */\n public readonly modelIds?: OrderedId64Iterable;\n /** For [[PlanarClipMaskMode.IncludeElements]] or [[PlanarClipMaskMode.ExcludedElements]], the Ids of the [GeometricElement]($backend)s to include or exclude from masking;\n * for [[PlanarClipMaskMode.IncludeSubCategories]], the Ids of the subcategories whose geometry contributes to the mask.\n */\n public readonly subCategoryOrElementIds?: OrderedId64Iterable;\n /** For [[PlanarClipMaskMode.Priority]], the priority value. */\n public readonly priority?: number;\n /** A value between 0 and 1 indicating an override for mask transparency. A transparency of 0 indicates complete masking. 1 is completely transparent (no masking).\n If no transparency is defined then the transparencies of the mask elements are used.\n */\n public readonly transparency?: number;\n private readonly _modelIds?: CompressedId64Set;\n private readonly _subCategoryOrElementIds?: CompressedId64Set;\n\n /** The compressed representation of [[modelIds]]. */\n public get compressedModelIds(): CompressedId64Set | undefined {\n return this._modelIds;\n }\n\n /** Create a new [[PlanarClipMaskSettings]] object from its JSON representation. */\n public static fromJSON(json?: PlanarClipMaskProps): PlanarClipMaskSettings {\n if (!json || undefined === json.mode)\n return this.defaults;\n\n return new PlanarClipMaskSettings(json.mode, json.transparency, json.modelIds, json.subCategoryOrElementIds, json.priority);\n }\n\n /** Create settings for [[PlanarClipMaskMode.Models]]. */\n public static createForModels(modelIds: Iterable<Id64String> | undefined, transparency?: number): PlanarClipMaskSettings {\n return this.fromJSON({\n mode: PlanarClipMaskMode.Models,\n transparency,\n modelIds: modelIds ? CompressedId64Set.sortAndCompress(modelIds) : undefined,\n });\n }\n\n /** Create settings that filter by element or subcategory. */\n public static createForElementsOrSubCategories(mode: PlanarClipMaskMode.IncludeElements | PlanarClipMaskMode.ExcludeElements | PlanarClipMaskMode.IncludeSubCategories,\n elementOrSubCategoryIds: Iterable<Id64String>, modelIds?: Iterable<Id64String>, transparency?: number): PlanarClipMaskSettings {\n return this.fromJSON({\n mode,\n transparency,\n modelIds: modelIds ? CompressedId64Set.sortAndCompress(modelIds) : undefined,\n subCategoryOrElementIds: CompressedId64Set.sortAndCompress(elementOrSubCategoryIds),\n });\n }\n\n /** Create settings that mask by priority.\n * @see [[PlanarClipMaskPriority]] for default priority values based on model type.\n */\n public static createByPriority(priority: number, transparency?: number) {\n return new PlanarClipMaskSettings(PlanarClipMaskMode.Priority, transparency, undefined, undefined, priority);\n }\n\n /** Create JSON object representing this [[PlanarClipMaskSettings]] */\n public toJSON(): PlanarClipMaskProps {\n const props: PlanarClipMaskProps = { mode: this.mode };\n if (undefined !== this._modelIds)\n props.modelIds = this._modelIds;\n\n if (undefined !== this._subCategoryOrElementIds)\n props.subCategoryOrElementIds = this._subCategoryOrElementIds;\n\n if (undefined !== this.priority)\n props.priority = this.priority;\n\n if (undefined !== this.transparency)\n props.transparency = this.transparency;\n\n return props;\n }\n\n /** Returns true if masking is enabled. */\n public get isValid(): boolean {\n return this.mode !== PlanarClipMaskMode.None;\n }\n\n public equals(other: PlanarClipMaskSettings): boolean {\n return this.mode === other.mode &&\n this.priority === other.priority &&\n this.transparency === other.transparency &&\n this._modelIds === other._modelIds &&\n this._subCategoryOrElementIds === other._subCategoryOrElementIds;\n }\n\n /** Create a copy of this TerrainSettings, optionally modifying some of its properties.\n * @param changedProps JSON representation of the properties to change.\n * @returns A PlanarClipMaskSettings with all of its properties set to match those of`this`, except those explicitly defined in `changedProps`.\n */\n public clone(changedProps?: PlanarClipMaskProps): PlanarClipMaskSettings {\n if (undefined === changedProps)\n return this;\n\n return PlanarClipMaskSettings.fromJSON({\n ...this.toJSON(),\n ...changedProps,\n });\n }\n\n private constructor(mode: PlanarClipMaskMode, transparency?: number, modelIds?: CompressedId64Set, subCategoryOrElementIds?: CompressedId64Set, priority?: number) {\n this.mode = mode;\n this._modelIds = modelIds;\n this._subCategoryOrElementIds = subCategoryOrElementIds;\n this.priority = priority;\n this.transparency = undefined !== transparency ? Math.max(0, Math.min(1, transparency)) : undefined;\n\n if (modelIds)\n this.modelIds = CompressedId64Set.iterable(modelIds);\n\n if (subCategoryOrElementIds)\n this.subCategoryOrElementIds = CompressedId64Set.iterable(subCategoryOrElementIds);\n }\n\n /** A default PlanarClipMask which masks nothing. */\n public static defaults = new PlanarClipMaskSettings(PlanarClipMaskMode.None);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PlanarClipMask.js","sourceRoot":"","sources":["../../src/PlanarClipMask.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 DisplayStyles\r\n */\r\n\r\nimport { CompressedId64Set, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\r\n\r\n/** The different modes by which a [[PlanarClipMaskSettings]] collects the geometry used to mask a model.\r\n * @public\r\n */\r\nexport enum PlanarClipMaskMode {\r\n /** No masking. */\r\n None = 0,\r\n /** Mask based on priority. Different types of models have different default priorities as enumerated by [[PlanarClipMaskPriority]].\r\n * For example, background maps have the lowest priority, so they are masked by all other types, while design models have the highest priority and are therefore never masked.\r\n * The priority of a reality model can be overridden by [[PlanarClipMaskSettings.priority]]. This is useful to allow one reality model to mask another overlapping one.\r\n */\r\n Priority = 1,\r\n /** Indicates that masks should be produced from the geometry in a set of [GeometricModel]($backend)s. */\r\n Models = 2,\r\n /** Indicates that masks should be produced from geometry belonging to a set of subcategories. */\r\n IncludeSubCategories = 3,\r\n /** Indicates that masks should be produced from the geometry of a set of [GeometricElement]($backend)s. */\r\n IncludeElements = 4,\r\n /** Indicates that masks should be produced from the geometry of all [GeometricElement]($backend)s in a view, **except** for a specified set of excluded elements. */\r\n ExcludeElements = 5,\r\n}\r\n\r\n/** The default priority values for a [[PlanarClipMaskSettings]], based on model type. Models with a lower priority are masked by models with a higher priority.\r\n * The default can be overridden by [[PlanarClipMaskSettings.priority]].\r\n * @public\r\n */\r\nexport enum PlanarClipMaskPriority {\r\n /** Background map. */\r\n BackgroundMap = -2048,\r\n /** A reality model that spans the globe - e.g., OpenStreetMaps Buildings. */\r\n GlobalRealityModel = -1024,\r\n /** A reality model with a bounded range. */\r\n RealityModel = 0,\r\n /** A design model stored in the [IModelDb]($backend). */\r\n DesignModel = 2048,\r\n}\r\n\r\n/** JSON representation of a [[PlanarClipMaskSettings]].\r\n * @see [[DisplayStyleSettingsProps.planarClipOvr]] and [[ContextRealityModelProps.planarClipMask]].\r\n * @public\r\n */\r\nexport interface PlanarClipMaskProps {\r\n /** Controls how the mask geometry is collected */\r\n mode: PlanarClipMaskMode;\r\n /** @see [[PlanarClipMaskSettings.modelIds]]. */\r\n modelIds?: CompressedId64Set;\r\n /** @see [[PlanarClipMaskSettings.subCategoryOrElementIds]]. */\r\n subCategoryOrElementIds?: CompressedId64Set;\r\n /** @see [[PlanarClipMaskSettings.priority]]. */\r\n priority?: number;\r\n /** @see [[PlanarClipMaskSettings.transparency]]. */\r\n transparency?: number;\r\n}\r\n\r\n/** Describes how to mask the geometry of one [GeometricModel]($backend) for display. The mask is produced by projecting geometry from any number of other models -\r\n * optionally filtered by [SubCategory]($backend) or by a set of specific [GeometricElement]($backend)s - onto a plane. Regions of the masked model that intersect the\r\n * mask are rendered partially or completely transparent. This is useful for, e.g., making subsurface geometry visible below the background map, or clipping out portions\r\n * of a reality model that intersect a design model.\r\n * @note Currently reality models (including background maps and terrain) can be masked, but design models can only produce masks.\r\n * @see [[DisplayStyleSettings.planarClipMasks]] to define clip masks for a [DisplayStyle]($backend).\r\n * @see [[ContextRealityModel.planarClipMaskSettings]] to apply a clip mask to a context reality model.\r\n * @public\r\n */\r\nexport class PlanarClipMaskSettings {\r\n /** Specifies how the mask geometry is produced. */\r\n public readonly mode: PlanarClipMaskMode;\r\n /** For any mode other than [[PlanarClipMaskMode.Priority]], the Ids of the [GeometricModel]($backend)s containing the geometry used to produce the mask.\r\n * If `undefined`, the set of all models in the view's [ModelSelector]($backend) is used.\r\n * The mask geometry can be filtered by [[subCategoryOrElementIds]].\r\n */\r\n public readonly modelIds?: OrderedId64Iterable;\r\n /** For [[PlanarClipMaskMode.IncludeElements]] or [[PlanarClipMaskMode.ExcludedElements]], the Ids of the [GeometricElement]($backend)s to include or exclude from masking;\r\n * for [[PlanarClipMaskMode.IncludeSubCategories]], the Ids of the subcategories whose geometry contributes to the mask.\r\n */\r\n public readonly subCategoryOrElementIds?: OrderedId64Iterable;\r\n /** For [[PlanarClipMaskMode.Priority]], the priority value. */\r\n public readonly priority?: number;\r\n /** A value between 0 and 1 indicating an override for mask transparency. A transparency of 0 indicates complete masking. 1 is completely transparent (no masking).\r\n If no transparency is defined then the transparencies of the mask elements are used.\r\n */\r\n public readonly transparency?: number;\r\n private readonly _modelIds?: CompressedId64Set;\r\n private readonly _subCategoryOrElementIds?: CompressedId64Set;\r\n\r\n /** The compressed representation of [[modelIds]]. */\r\n public get compressedModelIds(): CompressedId64Set | undefined {\r\n return this._modelIds;\r\n }\r\n\r\n /** Create a new [[PlanarClipMaskSettings]] object from its JSON representation. */\r\n public static fromJSON(json?: PlanarClipMaskProps): PlanarClipMaskSettings {\r\n if (!json || undefined === json.mode)\r\n return this.defaults;\r\n\r\n return new PlanarClipMaskSettings(json.mode, json.transparency, json.modelIds, json.subCategoryOrElementIds, json.priority);\r\n }\r\n\r\n /** Create settings for [[PlanarClipMaskMode.Models]]. */\r\n public static createForModels(modelIds: Iterable<Id64String> | undefined, transparency?: number): PlanarClipMaskSettings {\r\n return this.fromJSON({\r\n mode: PlanarClipMaskMode.Models,\r\n transparency,\r\n modelIds: modelIds ? CompressedId64Set.sortAndCompress(modelIds) : undefined,\r\n });\r\n }\r\n\r\n /** Create settings that filter by element or subcategory. */\r\n public static createForElementsOrSubCategories(mode: PlanarClipMaskMode.IncludeElements | PlanarClipMaskMode.ExcludeElements | PlanarClipMaskMode.IncludeSubCategories,\r\n elementOrSubCategoryIds: Iterable<Id64String>, modelIds?: Iterable<Id64String>, transparency?: number): PlanarClipMaskSettings {\r\n return this.fromJSON({\r\n mode,\r\n transparency,\r\n modelIds: modelIds ? CompressedId64Set.sortAndCompress(modelIds) : undefined,\r\n subCategoryOrElementIds: CompressedId64Set.sortAndCompress(elementOrSubCategoryIds),\r\n });\r\n }\r\n\r\n /** Create settings that mask by priority.\r\n * @see [[PlanarClipMaskPriority]] for default priority values based on model type.\r\n */\r\n public static createByPriority(priority: number, transparency?: number) {\r\n return new PlanarClipMaskSettings(PlanarClipMaskMode.Priority, transparency, undefined, undefined, priority);\r\n }\r\n\r\n /** Create JSON object representing this [[PlanarClipMaskSettings]] */\r\n public toJSON(): PlanarClipMaskProps {\r\n const props: PlanarClipMaskProps = { mode: this.mode };\r\n if (undefined !== this._modelIds)\r\n props.modelIds = this._modelIds;\r\n\r\n if (undefined !== this._subCategoryOrElementIds)\r\n props.subCategoryOrElementIds = this._subCategoryOrElementIds;\r\n\r\n if (undefined !== this.priority)\r\n props.priority = this.priority;\r\n\r\n if (undefined !== this.transparency)\r\n props.transparency = this.transparency;\r\n\r\n return props;\r\n }\r\n\r\n /** Returns true if masking is enabled. */\r\n public get isValid(): boolean {\r\n return this.mode !== PlanarClipMaskMode.None;\r\n }\r\n\r\n public equals(other: PlanarClipMaskSettings): boolean {\r\n return this.mode === other.mode &&\r\n this.priority === other.priority &&\r\n this.transparency === other.transparency &&\r\n this._modelIds === other._modelIds &&\r\n this._subCategoryOrElementIds === other._subCategoryOrElementIds;\r\n }\r\n\r\n /** Create a copy of this TerrainSettings, optionally modifying some of its properties.\r\n * @param changedProps JSON representation of the properties to change.\r\n * @returns A PlanarClipMaskSettings with all of its properties set to match those of`this`, except those explicitly defined in `changedProps`.\r\n */\r\n public clone(changedProps?: PlanarClipMaskProps): PlanarClipMaskSettings {\r\n if (undefined === changedProps)\r\n return this;\r\n\r\n return PlanarClipMaskSettings.fromJSON({\r\n ...this.toJSON(),\r\n ...changedProps,\r\n });\r\n }\r\n\r\n private constructor(mode: PlanarClipMaskMode, transparency?: number, modelIds?: CompressedId64Set, subCategoryOrElementIds?: CompressedId64Set, priority?: number) {\r\n this.mode = mode;\r\n this._modelIds = modelIds;\r\n this._subCategoryOrElementIds = subCategoryOrElementIds;\r\n this.priority = priority;\r\n this.transparency = undefined !== transparency ? Math.max(0, Math.min(1, transparency)) : undefined;\r\n\r\n if (modelIds)\r\n this.modelIds = CompressedId64Set.iterable(modelIds);\r\n\r\n if (subCategoryOrElementIds)\r\n this.subCategoryOrElementIds = CompressedId64Set.iterable(subCategoryOrElementIds);\r\n }\r\n\r\n /** A default PlanarClipMask which masks nothing. */\r\n public static defaults = new PlanarClipMaskSettings(PlanarClipMaskMode.None);\r\n}\r\n"]}
|