@itwin/rpcinterface-full-stack-tests 5.0.0-dev.4 → 5.0.0-dev.6

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.
@@ -59044,7 +59044,7 @@ __webpack_require__.r(__webpack_exports__);
59044
59044
  /* harmony export */ "AnalysisStyleThematic": () => (/* reexport safe */ _AnalysisStyle__WEBPACK_IMPORTED_MODULE_1__.AnalysisStyleThematic),
59045
59045
  /* harmony export */ "AreaPattern": () => (/* reexport safe */ _geometry_AreaPattern__WEBPACK_IMPORTED_MODULE_42__.AreaPattern),
59046
59046
  /* harmony export */ "Atmosphere": () => (/* reexport safe */ _Atmosphere__WEBPACK_IMPORTED_MODULE_7__.Atmosphere),
59047
- /* harmony export */ "B3dmHeader": () => (/* reexport safe */ _tile_B3dmTileIO__WEBPACK_IMPORTED_MODULE_149__.B3dmHeader),
59047
+ /* harmony export */ "B3dmHeader": () => (/* reexport safe */ _tile_B3dmTileIO__WEBPACK_IMPORTED_MODULE_148__.B3dmHeader),
59048
59048
  /* harmony export */ "BRepEntity": () => (/* reexport safe */ _geometry_GeometryStream__WEBPACK_IMPORTED_MODULE_50__.BRepEntity),
59049
59049
  /* harmony export */ "BRepGeometryOperation": () => (/* reexport safe */ _geometry_ElementGeometry__WEBPACK_IMPORTED_MODULE_46__.BRepGeometryOperation),
59050
59050
  /* harmony export */ "BackendError": () => (/* reexport safe */ _IModelError__WEBPACK_IMPORTED_MODULE_68__.BackendError),
@@ -59056,9 +59056,9 @@ __webpack_require__.r(__webpack_exports__);
59056
59056
  /* harmony export */ "BaseLayerSettings": () => (/* reexport safe */ _MapImagerySettings__WEBPACK_IMPORTED_MODULE_79__.BaseLayerSettings),
59057
59057
  /* harmony export */ "BaseMapLayerSettings": () => (/* reexport safe */ _MapLayerSettings__WEBPACK_IMPORTED_MODULE_80__.BaseMapLayerSettings),
59058
59058
  /* harmony export */ "BatchType": () => (/* reexport safe */ _FeatureTable__WEBPACK_IMPORTED_MODULE_36__.BatchType),
59059
- /* harmony export */ "BentleyCloudRpcConfiguration": () => (/* reexport safe */ _rpc_web_BentleyCloudRpcManager__WEBPACK_IMPORTED_MODULE_142__.BentleyCloudRpcConfiguration),
59060
- /* harmony export */ "BentleyCloudRpcManager": () => (/* reexport safe */ _rpc_web_BentleyCloudRpcManager__WEBPACK_IMPORTED_MODULE_142__.BentleyCloudRpcManager),
59061
- /* harmony export */ "BentleyCloudRpcProtocol": () => (/* reexport safe */ _rpc_web_BentleyCloudRpcProtocol__WEBPACK_IMPORTED_MODULE_143__.BentleyCloudRpcProtocol),
59059
+ /* harmony export */ "BentleyCloudRpcConfiguration": () => (/* reexport safe */ _rpc_web_BentleyCloudRpcManager__WEBPACK_IMPORTED_MODULE_141__.BentleyCloudRpcConfiguration),
59060
+ /* harmony export */ "BentleyCloudRpcManager": () => (/* reexport safe */ _rpc_web_BentleyCloudRpcManager__WEBPACK_IMPORTED_MODULE_141__.BentleyCloudRpcManager),
59061
+ /* harmony export */ "BentleyCloudRpcProtocol": () => (/* reexport safe */ _rpc_web_BentleyCloudRpcProtocol__WEBPACK_IMPORTED_MODULE_142__.BentleyCloudRpcProtocol),
59062
59062
  /* harmony export */ "BentleyError": () => (/* reexport safe */ _IModelError__WEBPACK_IMPORTED_MODULE_68__.BentleyError),
59063
59063
  /* harmony export */ "BentleyStatus": () => (/* reexport safe */ _IModelError__WEBPACK_IMPORTED_MODULE_68__.BentleyStatus),
59064
59064
  /* harmony export */ "BisCodeSpec": () => (/* reexport safe */ _Code__WEBPACK_IMPORTED_MODULE_18__.BisCodeSpec),
@@ -59086,11 +59086,11 @@ __webpack_require__.r(__webpack_exports__);
59086
59086
  /* harmony export */ "ColorDef": () => (/* reexport safe */ _ColorDef__WEBPACK_IMPORTED_MODULE_20__.ColorDef),
59087
59087
  /* harmony export */ "ColorIndex": () => (/* reexport safe */ _FeatureIndex__WEBPACK_IMPORTED_MODULE_34__.ColorIndex),
59088
59088
  /* harmony export */ "CommonLoggerCategory": () => (/* reexport safe */ _CommonLoggerCategory__WEBPACK_IMPORTED_MODULE_21__.CommonLoggerCategory),
59089
- /* harmony export */ "CompositeTileHeader": () => (/* reexport safe */ _tile_CompositeTileIO__WEBPACK_IMPORTED_MODULE_150__.CompositeTileHeader),
59089
+ /* harmony export */ "CompositeTileHeader": () => (/* reexport safe */ _tile_CompositeTileIO__WEBPACK_IMPORTED_MODULE_149__.CompositeTileHeader),
59090
59090
  /* harmony export */ "ConcreteEntityTypes": () => (/* reexport safe */ _EntityReference__WEBPACK_IMPORTED_MODULE_32__.ConcreteEntityTypes),
59091
59091
  /* harmony export */ "ConflictingLocksError": () => (/* reexport safe */ _IModelError__WEBPACK_IMPORTED_MODULE_68__.ConflictingLocksError),
59092
- /* harmony export */ "ContentFlags": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.ContentFlags),
59093
- /* harmony export */ "ContentIdProvider": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.ContentIdProvider),
59092
+ /* harmony export */ "ContentFlags": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.ContentFlags),
59093
+ /* harmony export */ "ContentIdProvider": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.ContentIdProvider),
59094
59094
  /* harmony export */ "ContextRealityModel": () => (/* reexport safe */ _ContextRealityModel__WEBPACK_IMPORTED_MODULE_22__.ContextRealityModel),
59095
59095
  /* harmony export */ "ContextRealityModelProps": () => (/* reexport safe */ _ContextRealityModel__WEBPACK_IMPORTED_MODULE_22__.ContextRealityModelProps),
59096
59096
  /* harmony export */ "ContextRealityModels": () => (/* reexport safe */ _ContextRealityModel__WEBPACK_IMPORTED_MODULE_22__.ContextRealityModels),
@@ -59098,7 +59098,7 @@ __webpack_require__.r(__webpack_exports__);
59098
59098
  /* harmony export */ "ContourDisplay": () => (/* reexport safe */ _ContourDisplay__WEBPACK_IMPORTED_MODULE_113__.ContourDisplay),
59099
59099
  /* harmony export */ "ContourGroup": () => (/* reexport safe */ _ContourDisplay__WEBPACK_IMPORTED_MODULE_113__.ContourGroup),
59100
59100
  /* harmony export */ "ContourStyle": () => (/* reexport safe */ _ContourDisplay__WEBPACK_IMPORTED_MODULE_113__.ContourStyle),
59101
- /* harmony export */ "CurrentImdlVersion": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_154__.CurrentImdlVersion),
59101
+ /* harmony export */ "CurrentImdlVersion": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_153__.CurrentImdlVersion),
59102
59102
  /* harmony export */ "CutStyle": () => (/* reexport safe */ _ClipStyle__WEBPACK_IMPORTED_MODULE_17__.CutStyle),
59103
59103
  /* harmony export */ "DbQueryError": () => (/* reexport safe */ _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_87__.DbQueryError),
59104
59104
  /* harmony export */ "DbRequestKind": () => (/* reexport safe */ _ConcurrentQuery__WEBPACK_IMPORTED_MODULE_87__.DbRequestKind),
@@ -59135,7 +59135,7 @@ __webpack_require__.r(__webpack_exports__);
59135
59135
  /* harmony export */ "FeatureOverrideType": () => (/* reexport safe */ _EmphasizeElementsProps__WEBPACK_IMPORTED_MODULE_30__.FeatureOverrideType),
59136
59136
  /* harmony export */ "FeatureOverrides": () => (/* reexport safe */ _FeatureSymbology__WEBPACK_IMPORTED_MODULE_35__.FeatureOverrides),
59137
59137
  /* harmony export */ "FeatureTable": () => (/* reexport safe */ _FeatureTable__WEBPACK_IMPORTED_MODULE_36__.FeatureTable),
59138
- /* harmony export */ "FeatureTableHeader": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_154__.FeatureTableHeader),
59138
+ /* harmony export */ "FeatureTableHeader": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_153__.FeatureTableHeader),
59139
59139
  /* harmony export */ "FillDisplay": () => (/* reexport safe */ _GeometryParams__WEBPACK_IMPORTED_MODULE_57__.FillDisplay),
59140
59140
  /* harmony export */ "FillFlags": () => (/* reexport safe */ _GraphicParams__WEBPACK_IMPORTED_MODULE_60__.FillFlags),
59141
59141
  /* harmony export */ "FontMap": () => (/* reexport safe */ _Fonts__WEBPACK_IMPORTED_MODULE_37__.FontMap),
@@ -59159,10 +59159,10 @@ __webpack_require__.r(__webpack_exports__);
59159
59159
  /* harmony export */ "GeometryStreamFlags": () => (/* reexport safe */ _geometry_GeometryStream__WEBPACK_IMPORTED_MODULE_50__.GeometryStreamFlags),
59160
59160
  /* harmony export */ "GeometryStreamIterator": () => (/* reexport safe */ _geometry_GeometryStream__WEBPACK_IMPORTED_MODULE_50__.GeometryStreamIterator),
59161
59161
  /* harmony export */ "GeometrySummaryVerbosity": () => (/* reexport safe */ _GeometrySummary__WEBPACK_IMPORTED_MODULE_58__.GeometrySummaryVerbosity),
59162
- /* harmony export */ "GlbHeader": () => (/* reexport safe */ _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_152__.GlbHeader),
59162
+ /* harmony export */ "GlbHeader": () => (/* reexport safe */ _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_151__.GlbHeader),
59163
59163
  /* harmony export */ "GlobeMode": () => (/* reexport safe */ _BackgroundMapSettings__WEBPACK_IMPORTED_MODULE_10__.GlobeMode),
59164
- /* harmony export */ "GltfV2ChunkTypes": () => (/* reexport safe */ _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_152__.GltfV2ChunkTypes),
59165
- /* harmony export */ "GltfVersions": () => (/* reexport safe */ _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_152__.GltfVersions),
59164
+ /* harmony export */ "GltfV2ChunkTypes": () => (/* reexport safe */ _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_151__.GltfV2ChunkTypes),
59165
+ /* harmony export */ "GltfVersions": () => (/* reexport safe */ _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_151__.GltfVersions),
59166
59166
  /* harmony export */ "Gradient": () => (/* reexport safe */ _Gradient__WEBPACK_IMPORTED_MODULE_59__.Gradient),
59167
59167
  /* harmony export */ "GraphicParams": () => (/* reexport safe */ _GraphicParams__WEBPACK_IMPORTED_MODULE_60__.GraphicParams),
59168
59168
  /* harmony export */ "GridFileDefinition": () => (/* reexport safe */ _geometry_GeodeticDatum__WEBPACK_IMPORTED_MODULE_48__.GridFileDefinition),
@@ -59178,7 +59178,7 @@ __webpack_require__.r(__webpack_exports__);
59178
59178
  /* harmony export */ "Hilite": () => (/* reexport safe */ _Hilite__WEBPACK_IMPORTED_MODULE_63__.Hilite),
59179
59179
  /* harmony export */ "HorizontalCRS": () => (/* reexport safe */ _geometry_CoordinateReferenceSystem__WEBPACK_IMPORTED_MODULE_45__.HorizontalCRS),
59180
59180
  /* harmony export */ "HorizontalCRSExtent": () => (/* reexport safe */ _geometry_CoordinateReferenceSystem__WEBPACK_IMPORTED_MODULE_45__.HorizontalCRSExtent),
59181
- /* harmony export */ "I3dmHeader": () => (/* reexport safe */ _tile_I3dmTileIO__WEBPACK_IMPORTED_MODULE_153__.I3dmHeader),
59181
+ /* harmony export */ "I3dmHeader": () => (/* reexport safe */ _tile_I3dmTileIO__WEBPACK_IMPORTED_MODULE_152__.I3dmHeader),
59182
59182
  /* harmony export */ "IModel": () => (/* reexport safe */ _IModel__WEBPACK_IMPORTED_MODULE_67__.IModel),
59183
59183
  /* harmony export */ "IModelError": () => (/* reexport safe */ _IModelError__WEBPACK_IMPORTED_MODULE_68__.IModelError),
59184
59184
  /* harmony export */ "IModelNotFoundResponse": () => (/* reexport safe */ _rpc_IModelReadRpcInterface__WEBPACK_IMPORTED_MODULE_136__.IModelNotFoundResponse),
@@ -59195,8 +59195,8 @@ __webpack_require__.r(__webpack_exports__);
59195
59195
  /* harmony export */ "ImageMapLayerSettings": () => (/* reexport safe */ _MapLayerSettings__WEBPACK_IMPORTED_MODULE_80__.ImageMapLayerSettings),
59196
59196
  /* harmony export */ "ImageSource": () => (/* reexport safe */ _Image__WEBPACK_IMPORTED_MODULE_66__.ImageSource),
59197
59197
  /* harmony export */ "ImageSourceFormat": () => (/* reexport safe */ _Image__WEBPACK_IMPORTED_MODULE_66__.ImageSourceFormat),
59198
- /* harmony export */ "ImdlFlags": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_154__.ImdlFlags),
59199
- /* harmony export */ "ImdlHeader": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_154__.ImdlHeader),
59198
+ /* harmony export */ "ImdlFlags": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_153__.ImdlFlags),
59199
+ /* harmony export */ "ImdlHeader": () => (/* reexport safe */ _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_153__.ImdlHeader),
59200
59200
  /* harmony export */ "InUseLocksError": () => (/* reexport safe */ _ITwinError__WEBPACK_IMPORTED_MODULE_70__.InUseLocksError),
59201
59201
  /* harmony export */ "InternetConnectivityStatus": () => (/* reexport safe */ _NativeAppProps__WEBPACK_IMPORTED_MODULE_85__.InternetConnectivityStatus),
59202
59202
  /* harmony export */ "Interpolation": () => (/* reexport safe */ _Tween__WEBPACK_IMPORTED_MODULE_116__.Interpolation),
@@ -59249,7 +59249,7 @@ __webpack_require__.r(__webpack_exports__);
59249
59249
  /* harmony export */ "PlanarClipMaskMode": () => (/* reexport safe */ _PlanarClipMask__WEBPACK_IMPORTED_MODULE_89__.PlanarClipMaskMode),
59250
59250
  /* harmony export */ "PlanarClipMaskPriority": () => (/* reexport safe */ _PlanarClipMask__WEBPACK_IMPORTED_MODULE_89__.PlanarClipMaskPriority),
59251
59251
  /* harmony export */ "PlanarClipMaskSettings": () => (/* reexport safe */ _PlanarClipMask__WEBPACK_IMPORTED_MODULE_89__.PlanarClipMaskSettings),
59252
- /* harmony export */ "PntsHeader": () => (/* reexport safe */ _tile_PntsTileIO__WEBPACK_IMPORTED_MODULE_155__.PntsHeader),
59252
+ /* harmony export */ "PntsHeader": () => (/* reexport safe */ _tile_PntsTileIO__WEBPACK_IMPORTED_MODULE_154__.PntsHeader),
59253
59253
  /* harmony export */ "PointCloudDisplaySettings": () => (/* reexport safe */ _RealityModelDisplaySettings__WEBPACK_IMPORTED_MODULE_95__.PointCloudDisplaySettings),
59254
59254
  /* harmony export */ "PolylineEdgeArgs": () => (/* reexport safe */ _Render__WEBPACK_IMPORTED_MODULE_96__.PolylineEdgeArgs),
59255
59255
  /* harmony export */ "PolylineTypeFlags": () => (/* reexport safe */ _Render__WEBPACK_IMPORTED_MODULE_96__.PolylineTypeFlags),
@@ -59295,13 +59295,13 @@ __webpack_require__.r(__webpack_exports__);
59295
59295
  /* harmony export */ "RpcDirectProtocol": () => (/* reexport safe */ _rpc_core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_134__.RpcDirectProtocol),
59296
59296
  /* harmony export */ "RpcDirectRequest": () => (/* reexport safe */ _rpc_core_RpcConfiguration__WEBPACK_IMPORTED_MODULE_134__.RpcDirectRequest),
59297
59297
  /* harmony export */ "RpcEndpoint": () => (/* reexport safe */ _rpc_core_RpcConstants__WEBPACK_IMPORTED_MODULE_121__.RpcEndpoint),
59298
- /* harmony export */ "RpcInterface": () => (/* reexport safe */ _RpcInterface__WEBPACK_IMPORTED_MODULE_141__.RpcInterface),
59298
+ /* harmony export */ "RpcInterface": () => (/* reexport safe */ _RpcInterface__WEBPACK_IMPORTED_MODULE_140__.RpcInterface),
59299
59299
  /* harmony export */ "RpcInvocation": () => (/* reexport safe */ _rpc_core_RpcInvocation__WEBPACK_IMPORTED_MODULE_123__.RpcInvocation),
59300
59300
  /* harmony export */ "RpcManager": () => (/* reexport safe */ _RpcManager__WEBPACK_IMPORTED_MODULE_101__.RpcManager),
59301
59301
  /* harmony export */ "RpcMarshaling": () => (/* reexport safe */ _rpc_core_RpcMarshaling__WEBPACK_IMPORTED_MODULE_125__.RpcMarshaling),
59302
- /* harmony export */ "RpcMultipart": () => (/* reexport safe */ _rpc_web_RpcMultipart__WEBPACK_IMPORTED_MODULE_145__.RpcMultipart),
59302
+ /* harmony export */ "RpcMultipart": () => (/* reexport safe */ _rpc_web_RpcMultipart__WEBPACK_IMPORTED_MODULE_144__.RpcMultipart),
59303
59303
  /* harmony export */ "RpcNotFoundResponse": () => (/* reexport safe */ _rpc_core_RpcControl__WEBPACK_IMPORTED_MODULE_122__.RpcNotFoundResponse),
59304
- /* harmony export */ "RpcOpenAPIDescription": () => (/* reexport safe */ _rpc_web_OpenAPI__WEBPACK_IMPORTED_MODULE_144__.RpcOpenAPIDescription),
59304
+ /* harmony export */ "RpcOpenAPIDescription": () => (/* reexport safe */ _rpc_web_OpenAPI__WEBPACK_IMPORTED_MODULE_143__.RpcOpenAPIDescription),
59305
59305
  /* harmony export */ "RpcOperation": () => (/* reexport safe */ _rpc_core_RpcOperation__WEBPACK_IMPORTED_MODULE_126__.RpcOperation),
59306
59306
  /* harmony export */ "RpcOperationPolicy": () => (/* reexport safe */ _rpc_core_RpcOperation__WEBPACK_IMPORTED_MODULE_126__.RpcOperationPolicy),
59307
59307
  /* harmony export */ "RpcPendingQueue": () => (/* reexport safe */ _rpc_core_RpcPendingQueue__WEBPACK_IMPORTED_MODULE_127__.RpcPendingQueue),
@@ -59368,13 +59368,13 @@ __webpack_require__.r(__webpack_exports__);
59368
59368
  /* harmony export */ "ThematicGradientSettings": () => (/* reexport safe */ _ThematicDisplay__WEBPACK_IMPORTED_MODULE_112__.ThematicGradientSettings),
59369
59369
  /* harmony export */ "ThematicGradientTransparencyMode": () => (/* reexport safe */ _ThematicDisplay__WEBPACK_IMPORTED_MODULE_112__.ThematicGradientTransparencyMode),
59370
59370
  /* harmony export */ "TileContentSource": () => (/* reexport safe */ _TileProps__WEBPACK_IMPORTED_MODULE_115__.TileContentSource),
59371
- /* harmony export */ "TileFormat": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__.TileFormat),
59372
- /* harmony export */ "TileHeader": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__.TileHeader),
59373
- /* harmony export */ "TileMetadataReader": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.TileMetadataReader),
59374
- /* harmony export */ "TileOptions": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.TileOptions),
59375
- /* harmony export */ "TileReadError": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__.TileReadError),
59376
- /* harmony export */ "TileReadStatus": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__.TileReadStatus),
59377
- /* harmony export */ "TreeFlags": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.TreeFlags),
59371
+ /* harmony export */ "TileFormat": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__.TileFormat),
59372
+ /* harmony export */ "TileHeader": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__.TileHeader),
59373
+ /* harmony export */ "TileMetadataReader": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.TileMetadataReader),
59374
+ /* harmony export */ "TileOptions": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.TileOptions),
59375
+ /* harmony export */ "TileReadError": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__.TileReadError),
59376
+ /* harmony export */ "TileReadStatus": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__.TileReadStatus),
59377
+ /* harmony export */ "TreeFlags": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.TreeFlags),
59378
59378
  /* harmony export */ "Tween": () => (/* reexport safe */ _Tween__WEBPACK_IMPORTED_MODULE_116__.Tween),
59379
59379
  /* harmony export */ "Tweens": () => (/* reexport safe */ _Tween__WEBPACK_IMPORTED_MODULE_116__.Tweens),
59380
59380
  /* harmony export */ "TxnAction": () => (/* reexport safe */ _TxnAction__WEBPACK_IMPORTED_MODULE_117__.TxnAction),
@@ -59386,33 +59386,32 @@ __webpack_require__.r(__webpack_exports__);
59386
59386
  /* harmony export */ "ViewFlags": () => (/* reexport safe */ _ViewFlags__WEBPACK_IMPORTED_MODULE_119__.ViewFlags),
59387
59387
  /* harmony export */ "ViewStoreRpc": () => (/* reexport safe */ _ViewProps__WEBPACK_IMPORTED_MODULE_120__.ViewStoreRpc),
59388
59388
  /* harmony export */ "WEB_RPC_CONSTANTS": () => (/* reexport safe */ _rpc_core_RpcConstants__WEBPACK_IMPORTED_MODULE_121__.WEB_RPC_CONSTANTS),
59389
- /* harmony export */ "WebAppRpcLogging": () => (/* reexport safe */ _rpc_web_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_148__.WebAppRpcLogging),
59390
- /* harmony export */ "WebAppRpcProtocol": () => (/* reexport safe */ _rpc_web_WebAppRpcProtocol__WEBPACK_IMPORTED_MODULE_146__.WebAppRpcProtocol),
59391
- /* harmony export */ "WebAppRpcRequest": () => (/* reexport safe */ _rpc_web_WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_147__.WebAppRpcRequest),
59392
- /* harmony export */ "WhiteOnWhiteReversalSettings": () => (/* reexport safe */ _WhiteOnWhiteReversalSettings__WEBPACK_IMPORTED_MODULE_159__.WhiteOnWhiteReversalSettings),
59393
- /* harmony export */ "WipRpcInterface": () => (/* reexport safe */ _rpc_WipRpcInterface__WEBPACK_IMPORTED_MODULE_140__.WipRpcInterface),
59389
+ /* harmony export */ "WebAppRpcLogging": () => (/* reexport safe */ _rpc_web_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_147__.WebAppRpcLogging),
59390
+ /* harmony export */ "WebAppRpcProtocol": () => (/* reexport safe */ _rpc_web_WebAppRpcProtocol__WEBPACK_IMPORTED_MODULE_145__.WebAppRpcProtocol),
59391
+ /* harmony export */ "WebAppRpcRequest": () => (/* reexport safe */ _rpc_web_WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_146__.WebAppRpcRequest),
59392
+ /* harmony export */ "WhiteOnWhiteReversalSettings": () => (/* reexport safe */ _WhiteOnWhiteReversalSettings__WEBPACK_IMPORTED_MODULE_158__.WhiteOnWhiteReversalSettings),
59394
59393
  /* harmony export */ "XyzRotation": () => (/* reexport safe */ _geometry_GeodeticDatum__WEBPACK_IMPORTED_MODULE_48__.XyzRotation),
59395
59394
  /* harmony export */ "aggregateLoad": () => (/* reexport safe */ _rpc_core_RpcRequest__WEBPACK_IMPORTED_MODULE_130__.aggregateLoad),
59396
- /* harmony export */ "bisectTileRange2d": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.bisectTileRange2d),
59397
- /* harmony export */ "bisectTileRange3d": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.bisectTileRange3d),
59395
+ /* harmony export */ "bisectTileRange2d": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.bisectTileRange2d),
59396
+ /* harmony export */ "bisectTileRange3d": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.bisectTileRange3d),
59398
59397
  /* harmony export */ "calculateSolarAngles": () => (/* reexport safe */ _SolarCalculate__WEBPACK_IMPORTED_MODULE_104__.calculateSolarAngles),
59399
59398
  /* harmony export */ "calculateSolarDirection": () => (/* reexport safe */ _SolarCalculate__WEBPACK_IMPORTED_MODULE_104__.calculateSolarDirection),
59400
59399
  /* harmony export */ "calculateSolarDirectionFromAngles": () => (/* reexport safe */ _SolarCalculate__WEBPACK_IMPORTED_MODULE_104__.calculateSolarDirectionFromAngles),
59401
59400
  /* harmony export */ "calculateSunriseOrSunset": () => (/* reexport safe */ _SolarCalculate__WEBPACK_IMPORTED_MODULE_104__.calculateSunriseOrSunset),
59402
- /* harmony export */ "compareIModelTileTreeIds": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.compareIModelTileTreeIds),
59403
- /* harmony export */ "computeChildTileProps": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.computeChildTileProps),
59404
- /* harmony export */ "computeChildTileRanges": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.computeChildTileRanges),
59405
- /* harmony export */ "computeTileChordTolerance": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.computeTileChordTolerance),
59406
- /* harmony export */ "decodeTileContentDescription": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.decodeTileContentDescription),
59407
- /* harmony export */ "defaultTileOptions": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.defaultTileOptions),
59408
- /* harmony export */ "getMaximumMajorTileFormatVersion": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.getMaximumMajorTileFormatVersion),
59401
+ /* harmony export */ "compareIModelTileTreeIds": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.compareIModelTileTreeIds),
59402
+ /* harmony export */ "computeChildTileProps": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.computeChildTileProps),
59403
+ /* harmony export */ "computeChildTileRanges": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.computeChildTileRanges),
59404
+ /* harmony export */ "computeTileChordTolerance": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.computeTileChordTolerance),
59405
+ /* harmony export */ "decodeTileContentDescription": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.decodeTileContentDescription),
59406
+ /* harmony export */ "defaultTileOptions": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.defaultTileOptions),
59407
+ /* harmony export */ "getMaximumMajorTileFormatVersion": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.getMaximumMajorTileFormatVersion),
59409
59408
  /* harmony export */ "getPullChangesIpcChannel": () => (/* reexport safe */ _IpcAppProps__WEBPACK_IMPORTED_MODULE_75__.getPullChangesIpcChannel),
59410
59409
  /* harmony export */ "getTileObjectReference": () => (/* reexport safe */ _TileProps__WEBPACK_IMPORTED_MODULE_115__.getTileObjectReference),
59411
- /* harmony export */ "iModelTileTreeIdToString": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.iModelTileTreeIdToString),
59410
+ /* harmony export */ "iModelTileTreeIdToString": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.iModelTileTreeIdToString),
59412
59411
  /* harmony export */ "iTwinChannel": () => (/* reexport safe */ _ipc_IpcSocket__WEBPACK_IMPORTED_MODULE_71__.iTwinChannel),
59413
59412
  /* harmony export */ "initializeRpcRequest": () => (/* reexport safe */ _rpc_core_RpcRequest__WEBPACK_IMPORTED_MODULE_130__.initializeRpcRequest),
59414
59413
  /* harmony export */ "ipcAppChannels": () => (/* reexport safe */ _IpcAppProps__WEBPACK_IMPORTED_MODULE_75__.ipcAppChannels),
59415
- /* harmony export */ "isKnownTileFormat": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__.isKnownTileFormat),
59414
+ /* harmony export */ "isKnownTileFormat": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__.isKnownTileFormat),
59416
59415
  /* harmony export */ "isPlacement2dProps": () => (/* reexport safe */ _ElementProps__WEBPACK_IMPORTED_MODULE_29__.isPlacement2dProps),
59417
59416
  /* harmony export */ "isPlacement3dProps": () => (/* reexport safe */ _ElementProps__WEBPACK_IMPORTED_MODULE_29__.isPlacement3dProps),
59418
59417
  /* harmony export */ "isPowerOfTwo": () => (/* reexport safe */ _Image__WEBPACK_IMPORTED_MODULE_66__.isPowerOfTwo),
@@ -59420,12 +59419,12 @@ __webpack_require__.r(__webpack_exports__);
59420
59419
  /* harmony export */ "mapToGeoServiceStatus": () => (/* reexport safe */ _GeoCoordinateServices__WEBPACK_IMPORTED_MODULE_40__.mapToGeoServiceStatus),
59421
59420
  /* harmony export */ "nativeAppIpcStrings": () => (/* reexport safe */ _NativeAppProps__WEBPACK_IMPORTED_MODULE_85__.nativeAppIpcStrings),
59422
59421
  /* harmony export */ "nextHighestPowerOfTwo": () => (/* reexport safe */ _Image__WEBPACK_IMPORTED_MODULE_66__.nextHighestPowerOfTwo),
59423
- /* harmony export */ "nextPoint3d64FromByteStream": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__.nextPoint3d64FromByteStream),
59424
- /* harmony export */ "parseTileTreeIdAndContentId": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.parseTileTreeIdAndContentId),
59422
+ /* harmony export */ "nextPoint3d64FromByteStream": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__.nextPoint3d64FromByteStream),
59423
+ /* harmony export */ "parseTileTreeIdAndContentId": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.parseTileTreeIdAndContentId),
59425
59424
  /* harmony export */ "readElementMeshes": () => (/* reexport safe */ _ElementMesh__WEBPACK_IMPORTED_MODULE_28__.readElementMeshes),
59426
- /* harmony export */ "readTileContentDescription": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__.readTileContentDescription),
59425
+ /* harmony export */ "readTileContentDescription": () => (/* reexport safe */ _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__.readTileContentDescription),
59427
59426
  /* harmony export */ "rpcOverIpcStrings": () => (/* reexport safe */ _ipc_IpcSession__WEBPACK_IMPORTED_MODULE_74__.rpcOverIpcStrings),
59428
- /* harmony export */ "tileFormatFromNumber": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__.tileFormatFromNumber)
59427
+ /* harmony export */ "tileFormatFromNumber": () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__.tileFormatFromNumber)
59429
59428
  /* harmony export */ });
59430
59429
  /* harmony import */ var _AmbientOcclusion__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AmbientOcclusion */ "../../core/common/lib/esm/AmbientOcclusion.js");
59431
59430
  /* harmony import */ var _AnalysisStyle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AnalysisStyle */ "../../core/common/lib/esm/AnalysisStyle.js");
@@ -59567,27 +59566,26 @@ __webpack_require__.r(__webpack_exports__);
59567
59566
  /* harmony import */ var _rpc_IModelTileRpcInterface__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(/*! ./rpc/IModelTileRpcInterface */ "../../core/common/lib/esm/rpc/IModelTileRpcInterface.js");
59568
59567
  /* harmony import */ var _rpc_SnapshotIModelRpcInterface__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(/*! ./rpc/SnapshotIModelRpcInterface */ "../../core/common/lib/esm/rpc/SnapshotIModelRpcInterface.js");
59569
59568
  /* harmony import */ var _rpc_TestRpcManager__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(/*! ./rpc/TestRpcManager */ "../../core/common/lib/esm/rpc/TestRpcManager.js");
59570
- /* harmony import */ var _rpc_WipRpcInterface__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(/*! ./rpc/WipRpcInterface */ "../../core/common/lib/esm/rpc/WipRpcInterface.js");
59571
- /* harmony import */ var _RpcInterface__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(/*! ./RpcInterface */ "../../core/common/lib/esm/RpcInterface.js");
59572
- /* harmony import */ var _rpc_web_BentleyCloudRpcManager__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(/*! ./rpc/web/BentleyCloudRpcManager */ "../../core/common/lib/esm/rpc/web/BentleyCloudRpcManager.js");
59573
- /* harmony import */ var _rpc_web_BentleyCloudRpcProtocol__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(/*! ./rpc/web/BentleyCloudRpcProtocol */ "../../core/common/lib/esm/rpc/web/BentleyCloudRpcProtocol.js");
59574
- /* harmony import */ var _rpc_web_OpenAPI__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(/*! ./rpc/web/OpenAPI */ "../../core/common/lib/esm/rpc/web/OpenAPI.js");
59575
- /* harmony import */ var _rpc_web_RpcMultipart__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(/*! ./rpc/web/RpcMultipart */ "../../core/common/lib/esm/rpc/web/RpcMultipart.js");
59576
- /* harmony import */ var _rpc_web_WebAppRpcProtocol__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(/*! ./rpc/web/WebAppRpcProtocol */ "../../core/common/lib/esm/rpc/web/WebAppRpcProtocol.js");
59577
- /* harmony import */ var _rpc_web_WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(/*! ./rpc/web/WebAppRpcRequest */ "../../core/common/lib/esm/rpc/web/WebAppRpcRequest.js");
59578
- /* harmony import */ var _rpc_web_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(/*! ./rpc/web/WebAppRpcLogging */ "../../core/common/lib/esm/rpc/web/WebAppRpcLogging.js");
59579
- /* harmony import */ var _tile_B3dmTileIO__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(/*! ./tile/B3dmTileIO */ "../../core/common/lib/esm/tile/B3dmTileIO.js");
59580
- /* harmony import */ var _tile_CompositeTileIO__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(/*! ./tile/CompositeTileIO */ "../../core/common/lib/esm/tile/CompositeTileIO.js");
59581
- /* harmony import */ var _tile_ElementGraphics__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(/*! ./tile/ElementGraphics */ "../../core/common/lib/esm/tile/ElementGraphics.js");
59582
- /* harmony import */ var _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(/*! ./tile/GltfTileIO */ "../../core/common/lib/esm/tile/GltfTileIO.js");
59583
- /* harmony import */ var _tile_I3dmTileIO__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(/*! ./tile/I3dmTileIO */ "../../core/common/lib/esm/tile/I3dmTileIO.js");
59584
- /* harmony import */ var _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(/*! ./tile/IModelTileIO */ "../../core/common/lib/esm/tile/IModelTileIO.js");
59585
- /* harmony import */ var _tile_PntsTileIO__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(/*! ./tile/PntsTileIO */ "../../core/common/lib/esm/tile/PntsTileIO.js");
59586
- /* harmony import */ var _tile_TileIO__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(/*! ./tile/TileIO */ "../../core/common/lib/esm/tile/TileIO.js");
59587
- /* harmony import */ var _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(/*! ./tile/TileMetadata */ "../../core/common/lib/esm/tile/TileMetadata.js");
59588
- /* harmony import */ var _tile_Tileset3dSchema__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(/*! ./tile/Tileset3dSchema */ "../../core/common/lib/esm/tile/Tileset3dSchema.js");
59589
- /* harmony import */ var _WhiteOnWhiteReversalSettings__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(/*! ./WhiteOnWhiteReversalSettings */ "../../core/common/lib/esm/WhiteOnWhiteReversalSettings.js");
59590
- /* harmony import */ var _internal_cross_package__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(/*! ./internal/cross-package */ "../../core/common/lib/esm/internal/cross-package.js");
59569
+ /* harmony import */ var _RpcInterface__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(/*! ./RpcInterface */ "../../core/common/lib/esm/RpcInterface.js");
59570
+ /* harmony import */ var _rpc_web_BentleyCloudRpcManager__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(/*! ./rpc/web/BentleyCloudRpcManager */ "../../core/common/lib/esm/rpc/web/BentleyCloudRpcManager.js");
59571
+ /* harmony import */ var _rpc_web_BentleyCloudRpcProtocol__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(/*! ./rpc/web/BentleyCloudRpcProtocol */ "../../core/common/lib/esm/rpc/web/BentleyCloudRpcProtocol.js");
59572
+ /* harmony import */ var _rpc_web_OpenAPI__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(/*! ./rpc/web/OpenAPI */ "../../core/common/lib/esm/rpc/web/OpenAPI.js");
59573
+ /* harmony import */ var _rpc_web_RpcMultipart__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(/*! ./rpc/web/RpcMultipart */ "../../core/common/lib/esm/rpc/web/RpcMultipart.js");
59574
+ /* harmony import */ var _rpc_web_WebAppRpcProtocol__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(/*! ./rpc/web/WebAppRpcProtocol */ "../../core/common/lib/esm/rpc/web/WebAppRpcProtocol.js");
59575
+ /* harmony import */ var _rpc_web_WebAppRpcRequest__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(/*! ./rpc/web/WebAppRpcRequest */ "../../core/common/lib/esm/rpc/web/WebAppRpcRequest.js");
59576
+ /* harmony import */ var _rpc_web_WebAppRpcLogging__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(/*! ./rpc/web/WebAppRpcLogging */ "../../core/common/lib/esm/rpc/web/WebAppRpcLogging.js");
59577
+ /* harmony import */ var _tile_B3dmTileIO__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(/*! ./tile/B3dmTileIO */ "../../core/common/lib/esm/tile/B3dmTileIO.js");
59578
+ /* harmony import */ var _tile_CompositeTileIO__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(/*! ./tile/CompositeTileIO */ "../../core/common/lib/esm/tile/CompositeTileIO.js");
59579
+ /* harmony import */ var _tile_ElementGraphics__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(/*! ./tile/ElementGraphics */ "../../core/common/lib/esm/tile/ElementGraphics.js");
59580
+ /* harmony import */ var _tile_GltfTileIO__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(/*! ./tile/GltfTileIO */ "../../core/common/lib/esm/tile/GltfTileIO.js");
59581
+ /* harmony import */ var _tile_I3dmTileIO__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(/*! ./tile/I3dmTileIO */ "../../core/common/lib/esm/tile/I3dmTileIO.js");
59582
+ /* harmony import */ var _tile_IModelTileIO__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(/*! ./tile/IModelTileIO */ "../../core/common/lib/esm/tile/IModelTileIO.js");
59583
+ /* harmony import */ var _tile_PntsTileIO__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(/*! ./tile/PntsTileIO */ "../../core/common/lib/esm/tile/PntsTileIO.js");
59584
+ /* harmony import */ var _tile_TileIO__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(/*! ./tile/TileIO */ "../../core/common/lib/esm/tile/TileIO.js");
59585
+ /* harmony import */ var _tile_TileMetadata__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(/*! ./tile/TileMetadata */ "../../core/common/lib/esm/tile/TileMetadata.js");
59586
+ /* harmony import */ var _tile_Tileset3dSchema__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(/*! ./tile/Tileset3dSchema */ "../../core/common/lib/esm/tile/Tileset3dSchema.js");
59587
+ /* harmony import */ var _WhiteOnWhiteReversalSettings__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(/*! ./WhiteOnWhiteReversalSettings */ "../../core/common/lib/esm/WhiteOnWhiteReversalSettings.js");
59588
+ /* harmony import */ var _internal_cross_package__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(/*! ./internal/cross-package */ "../../core/common/lib/esm/internal/cross-package.js");
59591
59589
  /*---------------------------------------------------------------------------------------------
59592
59590
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
59593
59591
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -59750,7 +59748,6 @@ __webpack_require__.r(__webpack_exports__);
59750
59748
 
59751
59749
 
59752
59750
 
59753
-
59754
59751
 
59755
59752
 
59756
59753
  /** @docs-package-description
@@ -69321,60 +69318,6 @@ class TestRpcManager {
69321
69318
  }
69322
69319
 
69323
69320
 
69324
- /***/ }),
69325
-
69326
- /***/ "../../core/common/lib/esm/rpc/WipRpcInterface.js":
69327
- /*!********************************************************!*\
69328
- !*** ../../core/common/lib/esm/rpc/WipRpcInterface.js ***!
69329
- \********************************************************/
69330
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
69331
-
69332
- "use strict";
69333
- __webpack_require__.r(__webpack_exports__);
69334
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
69335
- /* harmony export */ "WipRpcInterface": () => (/* binding */ WipRpcInterface)
69336
- /* harmony export */ });
69337
- /* harmony import */ var _RpcInterface__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../RpcInterface */ "../../core/common/lib/esm/RpcInterface.js");
69338
- /* harmony import */ var _RpcManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../RpcManager */ "../../core/common/lib/esm/RpcManager.js");
69339
- /*---------------------------------------------------------------------------------------------
69340
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
69341
- * See LICENSE.md in the project root for license terms and full copyright notice.
69342
- *--------------------------------------------------------------------------------------------*/
69343
- /** @packageDocumentation
69344
- * @module RpcInterface
69345
- */
69346
-
69347
-
69348
- /** The purpose of this class is to house WIP RPC methods. For example:
69349
- * - WIP methods where signatures or behavior is still changing
69350
- * - Experimental methods that we may decide are a bad idea and never release
69351
- * The idea is to house these WIP RPC methods away from other RpcInterfaces that have stated compatibility goals.
69352
- * Once stable, the goal is to move methods out to their rightful home.
69353
- * Apps/services should understand the *flux* implied by registering this RpcInterface and should be in control of both the client and server before even considering using it.
69354
- * @internal
69355
- * @deprecated in 4.10. If any of these methods are needed in the frontend, they should be rewritten using IPC or HTTP protocol.
69356
- */
69357
- class WipRpcInterface extends _RpcInterface__WEBPACK_IMPORTED_MODULE_0__.RpcInterface {
69358
- /** Returns the IModelReadRpcInterface instance for the frontend. */
69359
- static getClient() { return _RpcManager__WEBPACK_IMPORTED_MODULE_1__.RpcManager.getClientForInterface(WipRpcInterface); } // eslint-disable-line @typescript-eslint/no-deprecated
69360
- /*===========================================================================================
69361
- NOTE: Any add/remove/change to the methods below requires an update of the interface version.
69362
- NOTE: Please consult the README in this folder for the semantic versioning rules.
69363
- ==========================================================================================*/
69364
- async placeholder(_iModelToken) { return this.forward(arguments); } // here to test that WipRpcInterface is configured properly
69365
- async isChangeCacheAttached(_iModelToken) { return this.forward(arguments); }
69366
- async attachChangeCache(_iModelToken) { return this.forward(arguments); }
69367
- async getChangedElements(_iModelToken, _startChangesetId, _endChangesetId) { return this.forward(arguments); }
69368
- async isChangesetProcessed(_iModelToken, _changesetId) { return this.forward(arguments); }
69369
- }
69370
- /** The immutable name of the interface. */
69371
- WipRpcInterface.interfaceName = "WipRpcInterface";
69372
- /** The semantic version of the interface.
69373
- * @note The WipRpcInterface will never progress to 1.0 since it is never intended to be public.
69374
- */
69375
- WipRpcInterface.interfaceVersion = "0.5.0";
69376
-
69377
-
69378
69321
  /***/ }),
69379
69322
 
69380
69323
  /***/ "../../core/common/lib/esm/rpc/core/RpcConfiguration.js":
@@ -100397,6 +100340,8 @@ class RealityDataSourceTilesetUrlImpl {
100397
100340
  constructor(props) {
100398
100341
  /** For use by all Reality Data. For RD stored on PW Context Share, represents the portion from the root of the Azure Blob Container*/
100399
100342
  this._baseUrl = "";
100343
+ /** Need to be passed down to child tile requests when requesting from blob storage, e.g. a Cesium export from the Mesh Export Service*/
100344
+ this._searchParams = "";
100400
100345
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(props.sourceKey.provider === _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RealityDataProvider.TilesetUrl || props.sourceKey.provider === _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RealityDataProvider.OrbitGtBlob);
100401
100346
  this.key = props.sourceKey;
100402
100347
  this._tilesetUrl = this.key.id;
@@ -100433,8 +100378,11 @@ class RealityDataSourceTilesetUrlImpl {
100433
100378
  // otherwise the full path to root document is given.
100434
100379
  // The base URL contains the base URL from which tile relative path are constructed.
100435
100380
  // The tile's path root will need to be reinserted for child tiles to return a 200
100381
+ // If the original url includes search paramaters, they are stored in _searchParams to be reinserted into child tile requests.
100436
100382
  setBaseUrl(url) {
100437
100383
  const urlParts = url.split("/");
100384
+ const newUrl = new URL(url);
100385
+ this._searchParams = newUrl.search;
100438
100386
  urlParts.pop();
100439
100387
  if (urlParts.length === 0)
100440
100388
  this._baseUrl = "";
@@ -100465,9 +100413,16 @@ class RealityDataSourceTilesetUrlImpl {
100465
100413
  }
100466
100414
  return true;
100467
100415
  }
100468
- /** Returns the tile URL. If the tile path is a full URL, it is returned as is. Otherwise, the base URL is prepended to the tile path. */
100416
+ /** Returns the tile URL.
100417
+ * If the tile path is a relative URL, the base URL is prepended to it.
100418
+ * For both absolute and relative tile path URLs, the search parameters are checked. If the search params are empty, the base URL's search params are appended to the tile path.
100419
+ */
100469
100420
  getTileUrl(tilePath) {
100470
- return this.isValidURL(tilePath) ? tilePath : this._baseUrl + tilePath;
100421
+ if (this.isValidURL(tilePath)) {
100422
+ const url = new URL(tilePath);
100423
+ return url.search === "" ? `${tilePath}${this._searchParams}` : tilePath;
100424
+ }
100425
+ return tilePath.includes("?") ? `${this._baseUrl}${tilePath}` : `${this._baseUrl}${tilePath}${this._searchParams}`;
100471
100426
  }
100472
100427
  /**
100473
100428
  * Returns the tile content. The path to the tile is relative to the base url of present reality data whatever the type.
@@ -201726,6 +201681,7 @@ __webpack_require__.r(__webpack_exports__);
201726
201681
  /* harmony import */ var _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../geometry3d/Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
201727
201682
  /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
201728
201683
  /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
201684
+ /* harmony import */ var _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndUnitNormal */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js");
201729
201685
  /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
201730
201686
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
201731
201687
  /* harmony import */ var _geometry3d_Range__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../geometry3d/Range */ "../../core/geometry/lib/esm/geometry3d/Range.js");
@@ -201735,13 +201691,13 @@ __webpack_require__.r(__webpack_exports__);
201735
201691
  /* harmony import */ var _CurveExtendMode__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CurveExtendMode */ "../../core/geometry/lib/esm/curve/CurveExtendMode.js");
201736
201692
  /* harmony import */ var _CurveLocationDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CurveLocationDetail */ "../../core/geometry/lib/esm/curve/CurveLocationDetail.js");
201737
201693
  /* harmony import */ var _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CurvePrimitive */ "../../core/geometry/lib/esm/curve/CurvePrimitive.js");
201738
- /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
201739
- /* harmony import */ var _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./internalContexts/EllipticalArcApproximationContext */ "../../core/geometry/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js");
201740
- /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
201694
+ /* harmony import */ var _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internalContexts/CurveOffsetXYHandler */ "../../core/geometry/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js");
201695
+ /* harmony import */ var _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./internalContexts/EllipticalArcApproximationContext */ "../../core/geometry/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js");
201696
+ /* harmony import */ var _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./internalContexts/PlaneAltitudeRangeContext */ "../../core/geometry/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js");
201741
201697
  /* harmony import */ var _LineSegment3d__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./LineSegment3d */ "../../core/geometry/lib/esm/curve/LineSegment3d.js");
201742
201698
  /* harmony import */ var _LineString3d__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LineString3d */ "../../core/geometry/lib/esm/curve/LineString3d.js");
201743
- /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
201744
- /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
201699
+ /* harmony import */ var _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./OffsetOptions */ "../../core/geometry/lib/esm/curve/OffsetOptions.js");
201700
+ /* harmony import */ var _Path__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./Path */ "../../core/geometry/lib/esm/curve/Path.js");
201745
201701
  /* harmony import */ var _StrokeOptions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
201746
201702
  /*---------------------------------------------------------------------------------------------
201747
201703
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -201767,6 +201723,7 @@ __webpack_require__.r(__webpack_exports__);
201767
201723
 
201768
201724
 
201769
201725
 
201726
+
201770
201727
 
201771
201728
 
201772
201729
  /**
@@ -202505,7 +202462,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202505
202462
  const axy = this._matrix.columnXDotColumnY();
202506
202463
  return _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_8__.Angle.isPerpendicularDotSet(axx, ayy, axy) && _Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.isSameCoordinateSquared(axx, ayy);
202507
202464
  }
202508
- /** Return radius if the vector0 and vector90 are of equal length and perpendicular. */
202465
+ /** Return radius if the vector0 and vector90 are of equal length and perpendicular. Ignores z. */
202509
202466
  circularRadiusXY() {
202510
202467
  const ux = this._matrix.at(0, 0);
202511
202468
  const uy = this._matrix.at(1, 0);
@@ -202647,7 +202604,12 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202647
202604
  setVector0Vector90(vector0, vector90) {
202648
202605
  this._matrix.setColumns(vector0, vector90, vector0.unitCrossProductWithDefault(vector90, 0, 0, 0));
202649
202606
  }
202650
- /** Return the arc definition with rigid matrix form with axis radii. */
202607
+ /**
202608
+ * Return the symmetric definition of the arc, with rigid axes and radii.
202609
+ * * The caller can send the returned data into [[createScaledXYColumns]] to construct the major-minor axis
202610
+ * version of the instance arc. This formulation of the arc has the same shape, but has perpendicular axes,
202611
+ * from which the arc's symmetry is readily apparent.
202612
+ */
202651
202613
  toScaledMatrix3d() {
202652
202614
  const angleData = _geometry3d_Angle__WEBPACK_IMPORTED_MODULE_8__.Angle.dotProductsToHalfAngleTrigValues(this._matrix.columnXMagnitudeSquared(), this._matrix.columnYMagnitudeSquared(), this._matrix.columnXDotColumnY(), true);
202653
202615
  const vector0A = this._matrix.multiplyXY(angleData.c, angleData.s);
@@ -202787,9 +202749,9 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202787
202749
  }
202788
202750
  /**
202789
202751
  * Return an arc whose basis vectors are rotated by given angle within the current basis space.
202790
- * * the result arc will have its zero-degree point (new `vector0`) at the current.
202791
- * `vector0 * cos(theta) + vector90 * sin(theta)`.
202792
- * * the result sweep is adjusted so all fractional coordinates (e.g. start and end) evaluate to the same xyz.
202752
+ * * The returned arc will have `vector0 = this.vector0 * cos(theta) + this.vector90 * sin(theta)`.
202753
+ * * The returned arc has the same shape as the instance.
202754
+ * * In other words, the arc's sweep is adjusted so that all fractional parameters evaluate to the same points.
202793
202755
  * * Specifically, theta is subtracted from the original start and end angles.
202794
202756
  * @param theta the angle (in the input arc space) which is to become the 0-degree point in the new arc.
202795
202757
  */
@@ -202802,6 +202764,39 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202802
202764
  const arcB = Arc3d.create(this._center.clone(), vector0, vector90, newSweep);
202803
202765
  return arcB;
202804
202766
  }
202767
+ /**
202768
+ * Return a cloned arc with basis rotated to align with the global axes. The arc's shape is unchanged.
202769
+ * * This method is most useful when the instance is an xy-circular arc, for then the aligned arc's stored sweep
202770
+ * angles can be understood as being measured from the global positive x-axis to the arc's start/end. This is *not*
202771
+ * the case for xy-elliptical arcs: the parameter angle difference between two points on an ellipse is in general
202772
+ * not the same as the angle measured between their radials.
202773
+ * * For an xy instance, the output arc will have:
202774
+ * * vector0 is in the same direction as the positive x-axis
202775
+ * * perpendicularVector is in the same direction as the positive z-axis
202776
+ * * For a general instance, the output arc will have:
202777
+ * * vector0 is in the same direction as the projection of the positive x-axis vector onto the arc plane
202778
+ * * perpendicularVector lies in the halfspace z >= 0
202779
+ * @returns cloned arc, or undefined (if the instance normal is parallel to the x-axis, or its matrix is singular)
202780
+ */
202781
+ cloneAxisAligned() {
202782
+ const plane = _geometry3d_Plane3dByOriginAndUnitNormal__WEBPACK_IMPORTED_MODULE_17__.Plane3dByOriginAndUnitNormal.create(this.center, this.perpendicularVector.crossProduct(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Vector3d.unitX()));
202783
+ if (!plane)
202784
+ return undefined;
202785
+ const axisPts = [];
202786
+ if (2 !== this.appendPlaneIntersectionPoints(plane, axisPts))
202787
+ return undefined;
202788
+ const iAxisPt = plane.getNormalRef().dotProduct(this.perpendicularVector.crossProductStartEnd(this.center, axisPts[0].point)) > 0.0 ? 0 : 1;
202789
+ const toUnitX = this.sweep.fractionToAngle(axisPts[iAxisPt].fraction);
202790
+ const arc1 = this.cloneInRotatedBasis(toUnitX); // rotate in arc's plane
202791
+ if (this.perpendicularVector.dotProduct(_geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_4__.Vector3d.unitZ()) < -_Geometry__WEBPACK_IMPORTED_MODULE_5__.Geometry.smallAngleRadians) {
202792
+ if (this.matrixRef.isSingular())
202793
+ return undefined;
202794
+ const flip = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createRowValues(1, 0, 0, 0, -1, 0, 0, 0, -1); // rotate 180 degrees around arc's local x-axis
202795
+ arc1.matrixRef.multiplyMatrixMatrix(flip, arc1.matrixRef);
202796
+ arc1.sweep.setStartEndDegrees(-arc1.sweep.startDegrees, -arc1.sweep.endDegrees); // rotation alone is insufficient to flip
202797
+ }
202798
+ return arc1;
202799
+ }
202805
202800
  /**
202806
202801
  * Find intervals of this CurvePrimitive that are interior to a clipper.
202807
202802
  * @param clipper clip structure (e.g.clip planes).
@@ -202901,7 +202896,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202901
202896
  * @param offsetDistanceOrOptions offset distance (positive to left of the instance curve), or options object.
202902
202897
  */
202903
202898
  constructOffsetXY(offsetDistanceOrOptions) {
202904
- const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_17__.OffsetOptions.create(offsetDistanceOrOptions);
202899
+ const options = _OffsetOptions__WEBPACK_IMPORTED_MODULE_18__.OffsetOptions.create(offsetDistanceOrOptions);
202905
202900
  if (this.isCircular || options.preserveEllipticalArcs) {
202906
202901
  const arcXY = this.cloneAtZ();
202907
202902
  const sign = arcXY.sweep.sweepRadians * arcXY.matrixRef.coffs[8] >= 0.0 ? 1.0 : -1.0;
@@ -202923,7 +202918,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202923
202918
  }
202924
202919
  }
202925
202920
  // default impl
202926
- const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_18__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
202921
+ const handler = new _internalContexts_CurveOffsetXYHandler__WEBPACK_IMPORTED_MODULE_19__.CurveOffsetXYHandler(this, options.leftOffsetDistance);
202927
202922
  this.emitStrokableParts(handler, options.strokeOptions);
202928
202923
  return handler.claimResult();
202929
202924
  }
@@ -202934,7 +202929,7 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202934
202929
  * @returns range of fractional projection parameters onto the ray, where 0.0 is start of the ray and 1.0 is the end of the ray.
202935
202930
  */
202936
202931
  projectedParameterRange(ray, lowHigh) {
202937
- return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_19__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
202932
+ return _internalContexts_PlaneAltitudeRangeContext__WEBPACK_IMPORTED_MODULE_20__.PlaneAltitudeRangeContext.findExtremeFractionsAlongDirection(this, ray, lowHigh);
202938
202933
  }
202939
202934
  /**
202940
202935
  * Construct a circular arc chain approximation to the instance elliptical arc.
@@ -202944,10 +202939,10 @@ class Arc3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePrimitive
202944
202939
  constructCircularArcChainApproximation(options) {
202945
202940
  if (!options)
202946
202941
  options = EllipticalArcApproximationOptions.create();
202947
- const context = _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_20__.EllipticalArcApproximationContext.create(this);
202942
+ const context = _internalContexts_EllipticalArcApproximationContext__WEBPACK_IMPORTED_MODULE_21__.EllipticalArcApproximationContext.create(this);
202948
202943
  const result = context.constructCircularArcChainApproximation(options);
202949
202944
  if (!result && this.isCircular)
202950
- return (this.sweep.isFullCircle && options.forcePath) ? _Path__WEBPACK_IMPORTED_MODULE_21__.Path.create(this) : this;
202945
+ return (this.sweep.isFullCircle && options.forcePath) ? _Path__WEBPACK_IMPORTED_MODULE_22__.Path.create(this) : this;
202951
202946
  return result;
202952
202947
  }
202953
202948
  }
@@ -204113,6 +204108,11 @@ class CurveCollection extends _GeometryQuery__WEBPACK_IMPORTED_MODULE_0__.Geomet
204113
204108
  }
204114
204109
  return detailA;
204115
204110
  }
204111
+ /** Reverse the collection's data so that each child curve's fractional stroking moves in the opposite direction. */
204112
+ reverseInPlace() {
204113
+ for (const curve of this.children)
204114
+ curve.reverseInPlace();
204115
+ }
204116
204116
  /**
204117
204117
  * Return the max gap between adjacent primitives in Path and Loop collections.
204118
204118
  * * In a Path, gaps are computed between consecutive primitives.
@@ -204352,14 +204352,18 @@ class CurveChain extends CurveCollection {
204352
204352
  curve.extendRange(range, transform);
204353
204353
  }
204354
204354
  /**
204355
- * Reverse each child curve (in place)
204356
- * Reverse the order of the children in the CurveChain array.
204355
+ * Reverse each child curve (in place).
204356
+ * Reverse the order of the children array.
204357
204357
  */
204358
204358
  reverseChildrenInPlace() {
204359
204359
  for (const curve of this._curves)
204360
204360
  curve.reverseInPlace();
204361
204361
  this._curves.reverse();
204362
204362
  }
204363
+ /** Same as [[reverseChildrenInPlace]]. */
204364
+ reverseInPlace() {
204365
+ this.reverseChildrenInPlace();
204366
+ }
204363
204367
  /**
204364
204368
  * Return the index where target is found in the array of children.
204365
204369
  * @param alsoSearchProxies whether to also check proxy curves of the children
@@ -207624,34 +207628,34 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePri
207624
207628
  }
207625
207629
  /**
207626
207630
  * Return array of fraction parameters.
207627
- * * These Are only present during certain constructions such as faceting.
207631
+ * * These are only present during certain constructions such as faceting.
207628
207632
  * * When present, these fractions are fractions of some other curve being stroked, and are NOT related to the
207629
207633
  * linestring fraction parameters.
207630
207634
  */
207631
207635
  get fractions() {
207632
207636
  return this._fractions;
207633
207637
  }
207634
- /** Return the (optional) array of derivatives. These Are only present during certain constructions such as faceting. */
207638
+ /** Return the (optional) array of derivatives. These are only present during certain constructions such as faceting. */
207635
207639
  get packedDerivatives() {
207636
207640
  return this._derivatives;
207637
207641
  }
207638
- /** Return the (optional) array of uv params. These Are only present during certain constructions such as faceting. */
207642
+ /** Return the (optional) array of uv parameters. These are only present during certain constructions such as faceting. */
207639
207643
  get packedUVParams() {
207640
207644
  return this._uvParams;
207641
207645
  }
207642
- /** Return the (optional) array of surface normals. These Are only present during certain constructions such as faceting. */
207646
+ /** Return the (optional) array of surface normals. These are only present during certain constructions such as faceting. */
207643
207647
  get packedSurfaceNormals() {
207644
207648
  return this._surfaceNormals;
207645
207649
  }
207646
- /** Return the (optional) array of normal indices. These Are only present during certain constructions such as faceting. */
207650
+ /** Return the (optional) array of normal indices. These are only present during certain constructions such as faceting. */
207647
207651
  get normalIndices() {
207648
207652
  return this._normalIndices;
207649
207653
  }
207650
- /** Return the (optional) array of param indices. These Are only present during certain constructions such as faceting. */
207654
+ /** Return the (optional) array of uv parameter indices. These are only present during certain constructions such as faceting. */
207651
207655
  get paramIndices() {
207652
207656
  return this._uvIndices;
207653
207657
  }
207654
- /** Return the (optional) array of point indices. These Are only present during certain constructions such as faceting. */
207658
+ /** Return the (optional) array of point indices. These are only present during certain constructions such as faceting. */
207655
207659
  get pointIndices() {
207656
207660
  return this._pointIndices;
207657
207661
  }
@@ -208233,11 +208237,32 @@ class LineString3d extends _CurvePrimitive__WEBPACK_IMPORTED_MODULE_1__.CurvePri
208233
208237
  reverseInPlace() {
208234
208238
  if (this._points.length >= 2) {
208235
208239
  this._points.reverseInPlace();
208240
+ if (this._fractions) {
208241
+ this._fractions.reverseInPlace();
208242
+ for (let i = 0; i < this._fractions.length; ++i)
208243
+ this._fractions.reassign(i, 1.0 - this._fractions.atUncheckedIndex(i));
208244
+ }
208236
208245
  if (this._uvParams)
208237
208246
  this._uvParams.reverseInPlace();
208247
+ if (this._derivatives) {
208248
+ this._derivatives.reverseInPlace();
208249
+ this._derivatives.scaleInPlace(-1.0);
208250
+ }
208251
+ if (this._surfaceNormals)
208252
+ this._surfaceNormals.reverseInPlace();
208253
+ if (this._pointIndices)
208254
+ this._pointIndices.reverseInPlace();
208255
+ if (this._uvIndices)
208256
+ this._uvIndices.reverseInPlace();
208257
+ if (this._normalIndices)
208258
+ this._normalIndices.reverseInPlace();
208238
208259
  }
208239
208260
  }
208240
- /** Apply `transform` to each point of this linestring. */
208261
+ /**
208262
+ * Apply `transform` to each point of this linestring.
208263
+ * * Note that this method always returns true. If transforming the surface normals fails (due to singular matrix or zero
208264
+ * normal), the original normal(s) are left unchanged.
208265
+ */
208241
208266
  tryTransformInPlace(transform) {
208242
208267
  this._points.multiplyTransformInPlace(transform);
208243
208268
  if (this._derivatives)
@@ -209063,7 +209088,6 @@ class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
209063
209088
  isSameGeometryClass(other) {
209064
209089
  return other instanceof Loop;
209065
209090
  }
209066
- /** Test if `other` is an instance of `Loop` */
209067
209091
  constructor() {
209068
209092
  super();
209069
209093
  /** String name for schema properties */
@@ -209072,8 +209096,10 @@ class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
209072
209096
  this.isInner = false;
209073
209097
  }
209074
209098
  /**
209075
- * Create a loop from variable length list of CurvePrimitives
209076
- * @param curves array of individual curve primitives
209099
+ * Create a loop from a variable length list of [[CurvePrimitive]]s.
209100
+ * * A significant gap between the end of one curve and the start of the next, or between chain start and end,
209101
+ * is not bridged and may cause unexpected behavior.
209102
+ * @param curves array of individual curve primitives, assumed to form a closed planar loop.
209077
209103
  */
209078
209104
  static create(...curves) {
209079
209105
  const result = new Loop();
@@ -209086,13 +209112,18 @@ class Loop extends _CurveCollection__WEBPACK_IMPORTED_MODULE_0__.CurveChain {
209086
209112
  return result;
209087
209113
  }
209088
209114
  /**
209089
- * Create a loop from an array of curve primitives
209090
- * @param curves array of individual curve primitives
209115
+ * Create a loop from an array of [[CurvePrimitive]]s.
209116
+ * * A significant gap between the end of one curve and the start of the next, or between chain start and end,
209117
+ * is not bridged and may cause unexpected behavior.
209118
+ * @param curves array of individual curve primitives, assumed to form a closed planar loop.
209091
209119
  */
209092
209120
  static createArray(curves) {
209093
209121
  return this.create(...curves);
209094
209122
  }
209095
- /** Create a loop from an array of points */
209123
+ /**
209124
+ * Create a loop from an array of coplanar points.
209125
+ * @param points vertices of polygon, closure point optional.
209126
+ */
209096
209127
  static createPolygon(points) {
209097
209128
  const linestring = _LineString3d__WEBPACK_IMPORTED_MODULE_2__.LineString3d.create(points);
209098
209129
  linestring.addClosurePoint();
@@ -210257,14 +210288,16 @@ class CylindricalRangeQuery extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
210257
210288
  return accumulator._perpVector.clone();
210258
210289
  }
210259
210290
  /**
210260
- * Recurse through geometry.children to find linestrings.
210261
- * In each linestring, compute the surface normal annotation from
210291
+ * Recurse through `geometry.children` to find linestrings.
210292
+ * For each linestring, compute and store the normal of the rotational surface resulting from sweeping the
210293
+ * geometry around `axis` through a positive angle, using:
210262
210294
  * * the curve tangent stored in the linestring
210263
210295
  * * the axis of rotation
210264
- * * a default V vector to be used when the linestring point is close to the axis.
210265
- * @param geometry
210266
- * @param axis
210267
- * @param defaultVectorV
210296
+ * * a default V vector to be used when the linestring point is close to the axis
210297
+ * @param geometry profile curve (e.g., linestring, parity region). The orientation of the curve should be such that
210298
+ * the computed normal lies in the same half-space as the rotational sweep direction.
210299
+ * @param axis rotational axis
210300
+ * @param defaultVectorFromAxis default vector perpendicular to `axis` (e.g., sweepVector)
210268
210301
  */
210269
210302
  static buildRotationalNormalsInLineStrings(geometry, axis, defaultVectorFromAxis) {
210270
210303
  if (geometry instanceof _LineString3d__WEBPACK_IMPORTED_MODULE_3__.LineString3d) {
@@ -210273,18 +210306,20 @@ class CylindricalRangeQuery extends _geometry3d_GeometryHandler__WEBPACK_IMPORTE
210273
210306
  const normals = geometry.ensureEmptySurfaceNormals();
210274
210307
  if (derivatives && normals) {
210275
210308
  const vectorU = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
210276
- const vectorV = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(); // v direction (forwward along sweep) for surface of rotation.
210309
+ const vectorV = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create();
210277
210310
  const xyz = _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create();
210278
210311
  const n = points.length;
210279
210312
  for (let i = 0; i < n; i++) {
210280
210313
  points.getPoint3dAtUncheckedPointIndex(i, xyz);
210281
210314
  axis.perpendicularPartOfVectorToTarget(xyz, vectorU);
210315
+ // compute the positive sweep direction. ASSUME: the rotational sweep angle is positive!
210282
210316
  if (vectorU.isAlmostZero)
210283
210317
  axis.direction.crossProduct(defaultVectorFromAxis, vectorV);
210284
210318
  else
210285
210319
  axis.direction.crossProduct(vectorU, vectorV);
210286
- geometry.packedDerivatives.getVector3dAtCheckedVectorIndex(i, vectorU); // reuse vector U as curve derivative
210287
- vectorU.crossProduct(vectorV, vectorV); // reuse vector V as normal!
210320
+ // ASSUME: orientation-based profile normal is in the same half-space as vectorV
210321
+ geometry.packedDerivatives.getVector3dAtCheckedVectorIndex(i, vectorU); // reuse vectorU
210322
+ vectorU.crossProduct(vectorV, vectorV); // reuse vectorV
210288
210323
  vectorV.normalizeInPlace();
210289
210324
  normals.push(vectorV);
210290
210325
  }
@@ -217298,16 +217333,19 @@ class ArcChainErrorProcessor extends QuadrantFractionsProcessor {
217298
217333
  }
217299
217334
  }
217300
217335
  /**
217301
- * Processor for refining a single Q1 ordered interval [f0,f1] by perturbing an interior fraction f.
217302
- * * This processor expects to repeatedly process a QuadrantFractions `q` with `q.quadrant` = 1 and fractions array
217303
- * [fPrev, f0, f, f1], where fPrev is from the previously processed (possibly refined) adjacent interval; however, if
217304
- * `q.interpolateStartTangent === true`, then no fPrev is necessary and [f0, f, f1] is expected.
217305
- * * This is enough info to compute the two circular arcs spanning [f0,f] and [f,f1] and compare their approximation
217306
- * errors.
217307
- * * The basic idea is to perturb f so that the difference in the two arcs' errors is minimized.
217308
- * * This processor keeps track of a bracket containing f so that when the caller repeatedly processes `q` via
217309
- * [[EllipticalArcApproximationContext.processQuadrantFractions]], a bisection algorithm plays out, informed by the
217310
- * heuristic that moving f toward one end of its bracket decreases the error of the approximating arc on that side of f.
217336
+ * Processor for computing an optimal refinement of a single Q1 ordered interval [f0,f1] by perturbing an interior
217337
+ * seed fraction f.
217338
+ * * Typically the caller (cf. [[AdaptiveSubdivisionQ1ErrorProcessor.announceArc]] processes a
217339
+ * QuadrantFractions `q` with `q.quadrant` = 1 until convergence. The `q.fractions` array is expected to have
217340
+ * one of two forms:
217341
+ * * [fPrev, f0, f, f1], where fPrev is from the adjacent interval (possibly just refined), or
217342
+ * * [f0, f, f1], if `q.interpolateStartTangent === true`.
217343
+ * * This processor implements a bisection algorithm that iteratively shrinks a sub-interval that brackets f,
217344
+ * starting with [f0,f1]:
217345
+ * * During processing, `announceArc` will be called twice to compute the approximation errors of the circular
217346
+ * arcs on either side of f in the current bracket.
217347
+ * * In `announceQuadrantEnd` if these two errors are almost equal, we are done refining [f0,f1]. Otherwise,
217348
+ * we move f halfway to the endpoint of the bracket that decreases the error delta, and shrink our bracket.
217311
217349
  * @internal
217312
217350
  */
217313
217351
  class AdaptiveSubdivisionQ1IntervalErrorProcessor extends QuadrantFractionsProcessor {
@@ -217379,14 +217417,17 @@ class AdaptiveSubdivisionQ1IntervalErrorProcessor extends QuadrantFractionsProce
217379
217417
  /**
217380
217418
  * Processor for computing samples in Q1 for a subdivision-based arc chain approximation.
217381
217419
  * * The basic idea is to build a refinement of `q.fractions` for a QuadrantFractions q with q.quadrant = 1.
217382
- * * Start off the refinement with a copy of `q.fractions`.
217383
- * * When an announced arc exceeds a given maximum approximation error, compute a fraction f in the span
217384
- * such that the error of arcs on either side of f would be almost equal, then add f to the refinement.
217385
- * * If the announced arc does not exceed the maxError, its associated fraction span remains unchanged---no
217386
- * additional samples are needed to decrease approximation error.
217387
- * * After `q` processing completes, `q.fractions` is updated in place with the computed refinement.
217388
- * * The caller typically re-processes `q` until `isRefined` returns false, at which point construction of an
217389
- * approximation that is guaranteed not to exceed the desired error can commence.
217420
+ * * In `announceQuadrantBegin` we start off the refinement with a copy of `q.fractions`.
217421
+ * * In `announceArc` we are called to process the interval [f0,f1] in `q.fractions`. First we test if the
217422
+ * announced arc's approximation error over [f0,f1] exceeds maxError.
217423
+ * * If so, we employ [[AdaptiveSubdivisionQ1IntervalErrorProcessor]] to compute an interior fraction f
217424
+ * that best refines the interval, which becomes [f0,f,f1].
217425
+ * * Otherwise, the fraction span [f0,f1] is unchanged---no additional samples are needed to decrease the
217426
+ * approximation error.
217427
+ * * In `announceQuadrantEnd`, `q.fractions` is updated in place with the computed refinement.
217428
+ * * The caller (e.g., [[AdaptiveSubdivisionSampler.computeRadiansStrictlyInsideQuadrant1]]) typically
217429
+ * re-processes `q` until `isRefined` returns false, at which point construction of an approximation that is
217430
+ * guaranteed not to exceed the desired error can commence.
217390
217431
  * @internal
217391
217432
  */
217392
217433
  class AdaptiveSubdivisionQ1ErrorProcessor extends QuadrantFractionsProcessor {
@@ -223538,16 +223579,22 @@ class BarycentricTriangle {
223538
223579
  }
223539
223580
  /**
223540
223581
  * Compute the intersection of a line (parameterized as a ray) with the plane of this triangle.
223541
- * * This method is slower than `Ray3d.intersectionWithTriangle`.
223582
+ * * Intersection data is returned for the line-plane intersection.
223583
+ * * No intersection is returned if the line is parallel to the plane.
223584
+ * * As for the *ray*, it intersects this triangle if and only if the returned detail `d` has
223585
+ * `d.isValid === true` and `d.a >= 0` and `d.isInsideOrOn === true`.
223586
+ * * This method is slower than `Ray3d.intersectionWithTriangle` but returns more information about the intersection.
223542
223587
  * @param ray infinite line to intersect, as a ray
223543
223588
  * @param result optional pre-allocated object to fill and return
223544
- * @returns details d of the line-plane intersection point `d.world`:
223545
- * * `d.a` is the intersection parameter along the ray.
223546
- * * The line intersects the plane of the triangle if and only if `d.isValid` returns true.
223547
- * * The ray intersects the plane of the triangle if and only if `d.isValid` returns true and `d.a` >= 0.
223548
- * * The ray intersects the triangle if and only if `d.isValid` returns true, `d.a` >= 0, and `d.isInsideOrOn`
223549
- * returns true.
223550
- * * `d.classify` can be used to determine where the intersection lies with respect to the triangle.
223589
+ * @returns details `d` of the intersection point `p` of the line and the plane of this triangle:
223590
+ * * `d.isValid`: false if and only if `ray.direction` is parallel to the plane, or the ray or triangle is degenerate.
223591
+ * * `d.world`: coordinates of `p`.
223592
+ * * `d.local`: barycentric coordinates of `p`.
223593
+ * * `d.a`: the intersection parameter of `p` along the ray. Negative means `p` is behind the ray origin.
223594
+ * * `d.classify`: where `p` lies with respect to the triangle.
223595
+ * * `d.isInsideOrOn`: whether `p` is inside or on the triangle.
223596
+ * * `d.closestEdgeIndex`: the index of the triangle edge `e` onto which `p` projects.
223597
+ * * `d.closestEdgeParam`: the edge parameter at which `p` projects onto `e`.
223551
223598
  * * Visualization can be found at https://www.itwinjs.org/sandbox/SaeedTorabi/RayTriangleIntersection
223552
223599
  * @see [[pointToFraction]]
223553
223600
  */
@@ -223564,6 +223611,9 @@ class BarycentricTriangle {
223564
223611
  const d = ray.direction;
223565
223612
  const u = BarycentricTriangle._workVector0 = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(this.points[0], this.points[1], BarycentricTriangle._workVector0);
223566
223613
  const v = BarycentricTriangle._workVector1 = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(this.points[0], this.points[2], BarycentricTriangle._workVector1);
223614
+ const scaledVolume = d.tripleProduct(u, v);
223615
+ if (scaledVolume * scaledVolume <= u.dotProduct(u) * v.dotProduct(v) * d.dotProduct(d) * _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallAngleRadiansSquared)
223616
+ return result; // parallel (no solution)
223567
223617
  const M = BarycentricTriangle._workMatrix = _Matrix3d__WEBPACK_IMPORTED_MODULE_4__.Matrix3d.createColumns(u, v, d, BarycentricTriangle._workMatrix);
223568
223618
  const c = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createStartEnd(this.points[0], r0, BarycentricTriangle._workVector0); // reuse workVector0
223569
223619
  const solution = BarycentricTriangle._workVector1; // reuse workVector1
@@ -226605,6 +226655,10 @@ class GrowableFloat64Array {
226605
226655
  }
226606
226656
  this._inUse = numAccepted;
226607
226657
  }
226658
+ /** reverse the order of values. */
226659
+ reverseInPlace() {
226660
+ this._data.reverse();
226661
+ }
226608
226662
  }
226609
226663
 
226610
226664
 
@@ -228880,9 +228934,9 @@ __webpack_require__.r(__webpack_exports__);
228880
228934
  /* harmony export */ });
228881
228935
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
228882
228936
  /* harmony import */ var _geometry4d_Point4d__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../geometry4d/Point4d */ "../../core/geometry/lib/esm/geometry4d/Point4d.js");
228883
- /* harmony import */ var _Angle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
228937
+ /* harmony import */ var _Angle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Angle */ "../../core/geometry/lib/esm/geometry3d/Angle.js");
228884
228938
  /* harmony import */ var _Point2dVector2d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
228885
- /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
228939
+ /* harmony import */ var _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
228886
228940
  /* harmony import */ var _Transform__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
228887
228941
  /*---------------------------------------------------------------------------------------------
228888
228942
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -229182,32 +229236,35 @@ class Matrix3d {
229182
229236
  return _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isDistanceWithinTol(max, tol);
229183
229237
  }
229184
229238
  /**
229185
- * Test if `this` and `other` have almost equal Z column and have X and Y columns differing only by a
229186
- * rotation of the same angle around that Z.
229187
- * * **WARNING:** X and Y columns have to be perpendicular to Z column in both `this` and `other`.
229188
- * @param tol optional tolerance for comparisons by Geometry.isDistanceWithinTol
229239
+ * A matrix equivalence test, returning true if and only if the matrices are almost equal,
229240
+ * or all of the following column comparisons hold:
229241
+ * * z columns are almost equal, and
229242
+ * * x columns differ only by a rotation of angle t around the z column, and
229243
+ * * y columns differ only by a rotation of the same angle t around the z column.
229244
+ * @param other matrix to compare
229245
+ * @param tol optional distance tolerance, for comparisons by Geometry.isDistanceWithinTol
229246
+ * @return whether matrices are almost equal modulo a rotation around their common nonzero z-column.
229189
229247
  */
229190
229248
  isAlmostEqualAllowZRotation(other, tol) {
229191
229249
  if (this.isAlmostEqual(other, tol))
229192
229250
  return true;
229193
- if (this.isAlmostEqualColumn(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, other, tol)) {
229194
- const radians = _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.radiansBetweenVectorsXYZ(this.coffs[0], this.coffs[3], this.coffs[6], other.coffs[0], other.coffs[3], other.coffs[6]);
229195
- const angle = _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createRadians(radians); // angle between X columns in `this` and `other`
229196
- const columnX = this.columnX();
229197
- const columnY = this.columnY();
229198
- const columnZ = this.columnZ();
229199
- /**
229200
- * Here we rotate this.columnX() around this.columnZ() by "angle" and expect to get other.columnX().
229201
- * Then we rotate this.columnY() around this.columnZ() by the same "angle" and if we get other.columnY(),
229202
- * that means `this` and `other` have X and Y columns differing only by a rotation around column Z.
229203
- */
229204
- let column = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createRotateVectorAroundVector(columnX, columnZ, angle);
229205
- if (other.isAlmostEqualColumnXYZ(0, column.x, column.y, column.z, tol)) {
229206
- column = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createRotateVectorAroundVector(columnY, columnZ, angle);
229207
- return other.isAlmostEqualColumnXYZ(1, column.x, column.y, column.z, tol);
229208
- }
229209
- }
229210
- return false;
229251
+ if (!this.isAlmostEqualColumn(_Geometry__WEBPACK_IMPORTED_MODULE_0__.AxisIndex.Z, other, tol))
229252
+ return false;
229253
+ const columnX = this.columnX();
229254
+ const columnY = this.columnY();
229255
+ const columnZ = this.columnZ();
229256
+ const toOtherColumnX = columnX.signedAngleTo(other.columnX(), columnZ);
229257
+ let testColumn = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createRotateVectorAroundVector(columnX, columnZ, toOtherColumnX);
229258
+ if (!testColumn)
229259
+ return false; // columnZ is zero length
229260
+ if (!other.isAlmostEqualColumnXYZ(0, testColumn.x, testColumn.y, testColumn.z, tol))
229261
+ return false; // columnX rotated around columnZ by angle doesn't end up at other.columnX
229262
+ testColumn = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createRotateVectorAroundVector(columnY, columnZ, toOtherColumnX);
229263
+ if (!testColumn)
229264
+ return false;
229265
+ if (!other.isAlmostEqualColumnXYZ(1, testColumn.x, testColumn.y, testColumn.z, tol))
229266
+ return false; // columnY rotated around columnZ by angle doesn't end up at other.columnY
229267
+ return true;
229211
229268
  }
229212
229269
  /** Test for exact (bitwise) equality with other. */
229213
229270
  isExactEqual(other) {
@@ -229483,10 +229540,10 @@ class Matrix3d {
229483
229540
  const b = a / scale;
229484
229541
  // if vectorA is close to the Z axis
229485
229542
  if (Math.abs(vectorA.x) < b && Math.abs(vectorA.y) < b) {
229486
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createCrossProduct(vectorA.x, vectorA.y, vectorA.z, 0, -1, 0, result);
229543
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createCrossProduct(vectorA.x, vectorA.y, vectorA.z, 0, -1, 0, result);
229487
229544
  }
229488
229545
  // if vectorA is NOT close to the Z axis
229489
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.createCrossProduct(0, 0, 1, vectorA.x, vectorA.y, vectorA.z, result);
229546
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.createCrossProduct(0, 0, 1, vectorA.x, vectorA.y, vectorA.z, result);
229490
229547
  }
229491
229548
  /**
229492
229549
  * Return a vector that is perpendicular to the input `vectorA`.
@@ -229707,7 +229764,7 @@ class Matrix3d {
229707
229764
  let c = Math.sqrt(0.5);
229708
229765
  let s = leftNoneRight < 0.0 ? -c : c;
229709
229766
  if (Math.abs(leftNoneRight) !== 1.0) {
229710
- const radians = _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.degreesToRadians(45.0 * leftNoneRight);
229767
+ const radians = _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.degreesToRadians(45.0 * leftNoneRight);
229711
229768
  c = Math.cos(radians);
229712
229769
  s = Math.sin(radians);
229713
229770
  }
@@ -229801,7 +229858,7 @@ class Matrix3d {
229801
229858
  const sij = lambda.at(i, j);
229802
229859
  if (Math.abs(sij) < _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFloatingPoint * (sii + sjj))
229803
229860
  return 0.0;
229804
- const jacobi = _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.trigValuesToHalfAngleTrigValues(sii - sjj, 2.0 * sij);
229861
+ const jacobi = _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.trigValuesToHalfAngleTrigValues(sii - sjj, 2.0 * sij);
229805
229862
  const c = jacobi.c;
229806
229863
  const s = jacobi.s;
229807
229864
  /**
@@ -229881,7 +229938,7 @@ class Matrix3d {
229881
229938
  const sij = this.coffs[indexIJ];
229882
229939
  if (Math.abs(sij) < _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallFloatingPoint * (sii + sjj))
229883
229940
  return 0.0;
229884
- const jacobi = _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.trigValuesToHalfAngleTrigValues(sii - sjj, 2.0 * sij);
229941
+ const jacobi = _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.trigValuesToHalfAngleTrigValues(sii - sjj, 2.0 * sij);
229885
229942
  const c = jacobi.c;
229886
229943
  const s = jacobi.s;
229887
229944
  const cc = c * c;
@@ -229945,12 +230002,12 @@ class Matrix3d {
229945
230002
  const e = c * c + s * s - 1.0; // s^2 + c^2 = 1
229946
230003
  // if s^2 + c^2 != 1 then we have a bad matrix so return false
229947
230004
  if (Math.abs(e) > _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallAngleRadians) {
229948
- return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createRadians(0), ok: false };
230005
+ return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(0), ok: false };
229949
230006
  }
229950
230007
  // sin is close to 0 then we got to special cases (angle 0 or 180) which needs to be handled differently
229951
230008
  if (Math.abs(s) < _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.smallAngleRadians) {
229952
230009
  if (c > 0) // sin = 0 and cos = 1 so angle = 0 (i.e., no rotation)
229953
- return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createRadians(0), ok: true };
230010
+ return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(0), ok: true };
229954
230011
  /**
229955
230012
  * If sin = 0 and cos = -1 then angle = 180 (i.e., 180 degree rotation around some axis)
229956
230013
  * then the rotation matrix becomes
@@ -229968,34 +230025,34 @@ class Matrix3d {
229968
230025
  const azz = this.coffs[8];
229969
230026
  // Look for a pair of "-1" entries on the diagonal (for rotation around the basis X,Y,Z axis)
229970
230027
  if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(-1.0, ayy) && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(-1, azz)) {
229971
- return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(1, 0, 0), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(180), ok: true };
230028
+ return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(1, 0, 0), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createDegrees(180), ok: true };
229972
230029
  }
229973
230030
  else if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(-1.0, axx) && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(-1, azz)) {
229974
- return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(0, 1, 0), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(180), ok: true };
230031
+ return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0, 1, 0), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createDegrees(180), ok: true };
229975
230032
  }
229976
230033
  else if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(-1.0, axx) && _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(-1, ayy)) {
229977
- return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(180), ok: true };
230034
+ return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createDegrees(180), ok: true };
229978
230035
  }
229979
230036
  // Look for eigenvector with eigenvalue = 1
229980
230037
  const eigenvectors = Matrix3d.createIdentity();
229981
- const eigenvalues = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(0, 0, 0);
230038
+ const eigenvalues = _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0, 0, 0);
229982
230039
  if (this.fastSymmetricEigenvalues(eigenvectors, eigenvalues)) { // note: this matrix is "symmetric"
229983
230040
  for (let axisIndex = 0; axisIndex < 2; axisIndex++) {
229984
230041
  const lambda = eigenvalues.at(axisIndex);
229985
230042
  if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isAlmostEqualNumber(1, lambda))
229986
- return { axis: eigenvectors.getColumn(axisIndex), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createDegrees(180), ok: true };
230043
+ return { axis: eigenvectors.getColumn(axisIndex), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createDegrees(180), ok: true };
229987
230044
  }
229988
230045
  // if no eigenvalue = 1 was found return false
229989
- return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createRadians(0), ok: false };
230046
+ return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(0), ok: false };
229990
230047
  }
229991
230048
  // if no axis was found return false
229992
- return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createRadians(0), ok: false };
230049
+ return { axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(0, 0, 1), angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(0), ok: false };
229993
230050
  }
229994
230051
  // good matrix and non-zero sine
229995
230052
  const a = 1.0 / (2.0 * s);
229996
230053
  const result = {
229997
- axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(skewYZ * a, skewZX * a, skewXY * a),
229998
- angle: _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createAtan2(s, c),
230054
+ axis: _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(skewYZ * a, skewZX * a, skewXY * a),
230055
+ angle: _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createAtan2(s, c),
229999
230056
  ok: true,
230000
230057
  };
230001
230058
  return result;
@@ -230019,7 +230076,7 @@ class Matrix3d {
230019
230076
  const uDotV = this.coffs[i] * this.coffs[j]
230020
230077
  + this.coffs[i + 3] * this.coffs[j + 3]
230021
230078
  + this.coffs[i + 6] * this.coffs[j + 6];
230022
- const jacobi = _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.trigValuesToHalfAngleTrigValues(uDotU - vDotV, 2.0 * uDotV);
230079
+ const jacobi = _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.trigValuesToHalfAngleTrigValues(uDotU - vDotV, 2.0 * uDotV);
230023
230080
  const c = jacobi.c;
230024
230081
  const s = jacobi.s;
230025
230082
  if (Math.abs(s) < 2.0e-15)
@@ -230107,7 +230164,7 @@ class Matrix3d {
230107
230164
  let upVector = vectorA.unitCrossProduct(vectorB);
230108
230165
  // the usual case (both vectors and also their cross product is non-zero)
230109
230166
  if (upVector) {
230110
- return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createRadians(fraction * vectorA.planarAngleTo(vectorB, upVector).radians));
230167
+ return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(fraction * vectorA.planarAngleTo(vectorB, upVector).radians));
230111
230168
  }
230112
230169
  // if either vector is zero
230113
230170
  if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallMetricDistance(vectorA.magnitude())
@@ -230118,7 +230175,7 @@ class Matrix3d {
230118
230175
  return Matrix3d.createIdentity(result);
230119
230176
  // opposing vectors (cross product = 0, dot product < 0)
230120
230177
  upVector = Matrix3d.createPerpendicularVectorFavorPlaneContainingZ(vectorA, upVector);
230121
- return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_1__.Angle.createRadians(fraction * Math.PI));
230178
+ return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(fraction * Math.PI));
230122
230179
  }
230123
230180
  /** Returns a matrix that rotates from vectorA to vectorB. */
230124
230181
  static createRotationVectorToVector(vectorA, vectorB, result) {
@@ -230145,15 +230202,15 @@ class Matrix3d {
230145
230202
  }
230146
230203
  /** Return (a copy of) the X column */
230147
230204
  columnX(result) {
230148
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[0], this.coffs[3], this.coffs[6], result);
230205
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[0], this.coffs[3], this.coffs[6], result);
230149
230206
  }
230150
230207
  /** Return (a copy of) the Y column */
230151
230208
  columnY(result) {
230152
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[1], this.coffs[4], this.coffs[7], result);
230209
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[1], this.coffs[4], this.coffs[7], result);
230153
230210
  }
230154
230211
  /** Return (a copy of) the Z column */
230155
230212
  columnZ(result) {
230156
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[2], this.coffs[5], this.coffs[8], result);
230213
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[2], this.coffs[5], this.coffs[8], result);
230157
230214
  }
230158
230215
  /** Return the X column magnitude squared */
230159
230216
  columnXMagnitudeSquared() {
@@ -230225,15 +230282,15 @@ class Matrix3d {
230225
230282
  }
230226
230283
  /** Return (a copy of) the X row */
230227
230284
  rowX(result) {
230228
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[0], this.coffs[1], this.coffs[2], result);
230285
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[0], this.coffs[1], this.coffs[2], result);
230229
230286
  }
230230
230287
  /** Return (a copy of) the Y row */
230231
230288
  rowY(result) {
230232
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[3], this.coffs[4], this.coffs[5], result);
230289
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[3], this.coffs[4], this.coffs[5], result);
230233
230290
  }
230234
230291
  /** Return (a copy of) the Z row */
230235
230292
  rowZ(result) {
230236
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[6], this.coffs[7], this.coffs[8], result);
230293
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[6], this.coffs[7], this.coffs[8], result);
230237
230294
  }
230238
230295
  /** Return the dot product of the vector parameter with the X column. */
230239
230296
  dotColumnX(vector) {
@@ -230330,7 +230387,7 @@ class Matrix3d {
230330
230387
  */
230331
230388
  getColumn(columnIndex, result) {
230332
230389
  const index = _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.cyclic3dAxis(columnIndex);
230333
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[index], this.coffs[index + 3], this.coffs[index + 6], result);
230390
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[index], this.coffs[index + 3], this.coffs[index + 6], result);
230334
230391
  }
230335
230392
  /**
230336
230393
  * Return a (copy of) a row of the matrix.
@@ -230339,7 +230396,7 @@ class Matrix3d {
230339
230396
  */
230340
230397
  getRow(columnIndex, result) {
230341
230398
  const index = 3 * _Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.cyclic3dAxis(columnIndex);
230342
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[index], this.coffs[index + 1], this.coffs[index + 2], result);
230399
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[index], this.coffs[index + 1], this.coffs[index + 2], result);
230343
230400
  }
230344
230401
  /**
230345
230402
  * Create a matrix from row vectors.
@@ -230421,7 +230478,7 @@ class Matrix3d {
230421
230478
  const x = point.x;
230422
230479
  const y = point.y;
230423
230480
  const z = point.z;
230424
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z, this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z, this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z, result);
230481
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z, this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z, this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z, result);
230425
230482
  }
230426
230483
  /**
230427
230484
  * Multiply `matrix * vector`, treating the vector is a column vector on the right.
@@ -230435,7 +230492,7 @@ class Matrix3d {
230435
230492
  const x = vectorU.x;
230436
230493
  const y = vectorU.y;
230437
230494
  const z = vectorU.z;
230438
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z, this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z, this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z, result);
230495
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z, this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z, this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z, result);
230439
230496
  }
230440
230497
  /**
230441
230498
  * Multiply `matrix * vector` in place for vector in the array, i.e. treating the vector is a column
@@ -230451,7 +230508,7 @@ class Matrix3d {
230451
230508
  const x = vector.x;
230452
230509
  const y = vector.y;
230453
230510
  const z = vector.z;
230454
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(origin.x - (matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z), origin.y - (matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z), origin.z - (matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z), result);
230511
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(origin.x - (matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z), origin.y - (matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z), origin.z - (matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z), result);
230455
230512
  }
230456
230513
  /** Compute `origin + matrix * vector` using only the xy parts of the inputs. */
230457
230514
  static xyPlusMatrixTimesXY(origin, matrix, vector, result) {
@@ -230464,7 +230521,7 @@ class Matrix3d {
230464
230521
  const x = vector.x;
230465
230522
  const y = vector.y;
230466
230523
  const z = vector.z;
230467
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z, origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z, origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z, result);
230524
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z, origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z, origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z, result);
230468
230525
  }
230469
230526
  /** Updates vector to be `origin + matrix * vector` using all xyz parts of the inputs. */
230470
230527
  static xyzPlusMatrixTimesXYZInPlace(origin, matrix, vector) {
@@ -230477,7 +230534,7 @@ class Matrix3d {
230477
230534
  }
230478
230535
  /** Compute `origin + matrix * vector` where the final vector is given as direct x,y,z coordinates */
230479
230536
  static xyzPlusMatrixTimesCoordinates(origin, matrix, x, y, z, result) {
230480
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z, origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z, origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z, result);
230537
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(origin.x + matrix.coffs[0] * x + matrix.coffs[1] * y + matrix.coffs[2] * z, origin.y + matrix.coffs[3] * x + matrix.coffs[4] * y + matrix.coffs[5] * z, origin.z + matrix.coffs[6] * x + matrix.coffs[7] * y + matrix.coffs[8] * z, result);
230481
230538
  }
230482
230539
  /**
230483
230540
  * Treat the 3x3 matrix and origin as upper 3x4 part of a 4x4 matrix, with 0001 as the final row.
@@ -230556,7 +230613,7 @@ class Matrix3d {
230556
230613
  * @param result the vector result (optional)
230557
230614
  */
230558
230615
  multiplyTransposeVector(vector, result) {
230559
- result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d();
230616
+ result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
230560
230617
  const x = vector.x;
230561
230618
  const y = vector.y;
230562
230619
  const z = vector.z;
@@ -230570,7 +230627,7 @@ class Matrix3d {
230570
230627
  * @param result the vector result (optional)
230571
230628
  */
230572
230629
  multiplyXYZ(x, y, z, result) {
230573
- result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d();
230630
+ result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
230574
230631
  result.x = this.coffs[0] * x + this.coffs[1] * y + this.coffs[2] * z;
230575
230632
  result.y = this.coffs[3] * x + this.coffs[4] * y + this.coffs[5] * z;
230576
230633
  result.z = this.coffs[6] * x + this.coffs[7] * y + this.coffs[8] * z;
@@ -230595,7 +230652,7 @@ class Matrix3d {
230595
230652
  * @param result the vector result (optional)
230596
230653
  */
230597
230654
  multiplyXY(x, y, result) {
230598
- result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d();
230655
+ result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
230599
230656
  result.x = this.coffs[0] * x + this.coffs[1] * y;
230600
230657
  result.y = this.coffs[3] * x + this.coffs[4] * y;
230601
230658
  result.z = this.coffs[6] * x + this.coffs[7] * y;
@@ -230606,7 +230663,7 @@ class Matrix3d {
230606
230663
  * @param result the Point3d result (optional)
230607
230664
  */
230608
230665
  originPlusMatrixTimesXY(origin, x, y, result) {
230609
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(origin.x + this.coffs[0] * x + this.coffs[1] * y, origin.y + this.coffs[3] * x + this.coffs[4] * y, origin.z + this.coffs[6] * x + this.coffs[7] * y, result);
230666
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(origin.x + this.coffs[0] * x + this.coffs[1] * y, origin.y + this.coffs[3] * x + this.coffs[4] * y, origin.z + this.coffs[6] * x + this.coffs[7] * y, result);
230610
230667
  }
230611
230668
  /**
230612
230669
  * Multiply the matrix * (x,y,z) in place, i.e. the vector (x,y,z) is a column vector on the right and
@@ -230649,7 +230706,7 @@ class Matrix3d {
230649
230706
  * @param result the vector result (optional)
230650
230707
  */
230651
230708
  multiplyTransposeXYZ(x, y, z, result) {
230652
- result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d();
230709
+ result = result ? result : new _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d();
230653
230710
  result.x = this.coffs[0] * x + this.coffs[3] * y + this.coffs[6] * z;
230654
230711
  result.y = this.coffs[1] * x + this.coffs[4] * y + this.coffs[7] * z;
230655
230712
  result.z = this.coffs[2] * x + this.coffs[5] * y + this.coffs[8] * z;
@@ -230666,7 +230723,7 @@ class Matrix3d {
230666
230723
  const x = vector.x;
230667
230724
  const y = vector.y;
230668
230725
  const z = vector.z;
230669
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z, this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z, this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z, result);
230726
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z, this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z, this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z, result);
230670
230727
  }
230671
230728
  return undefined;
230672
230729
  }
@@ -230681,7 +230738,7 @@ class Matrix3d {
230681
230738
  const x = vector.x;
230682
230739
  const y = vector.y;
230683
230740
  const z = vector.z;
230684
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[3] * y + this.inverseCoffs[6] * z, this.inverseCoffs[1] * x + this.inverseCoffs[4] * y + this.inverseCoffs[7] * z, this.inverseCoffs[2] * x + this.inverseCoffs[5] * y + this.inverseCoffs[8] * z, result);
230741
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[3] * y + this.inverseCoffs[6] * z, this.inverseCoffs[1] * x + this.inverseCoffs[4] * y + this.inverseCoffs[7] * z, this.inverseCoffs[2] * x + this.inverseCoffs[5] * y + this.inverseCoffs[8] * z, result);
230685
230742
  }
230686
230743
  return undefined;
230687
230744
  }
@@ -230694,7 +230751,7 @@ class Matrix3d {
230694
230751
  multiplyInverseXYZAsVector3d(x, y, z, result) {
230695
230752
  this.computeCachedInverse(true);
230696
230753
  if (this.inverseCoffs) {
230697
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Vector3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z, this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z, this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z, result);
230754
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Vector3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z, this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z, this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z, result);
230698
230755
  }
230699
230756
  return undefined;
230700
230757
  }
@@ -230719,7 +230776,7 @@ class Matrix3d {
230719
230776
  multiplyInverseXYZAsPoint3d(x, y, z, result) {
230720
230777
  this.computeCachedInverse(true);
230721
230778
  if (this.inverseCoffs) {
230722
- return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_2__.Point3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z, this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z, this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z, result);
230779
+ return _Point3dVector3d__WEBPACK_IMPORTED_MODULE_1__.Point3d.create(this.inverseCoffs[0] * x + this.inverseCoffs[1] * y + this.inverseCoffs[2] * z, this.inverseCoffs[3] * x + this.inverseCoffs[4] * y + this.inverseCoffs[5] * z, this.inverseCoffs[6] * x + this.inverseCoffs[7] * y + this.inverseCoffs[8] * z, result);
230723
230780
  }
230724
230781
  return undefined;
230725
230782
  }
@@ -237612,7 +237669,10 @@ class PolygonOps {
237612
237669
  * * Compare to [[closestPoint]].
237613
237670
  * @param polygon points of the polygon, closure point optional
237614
237671
  * @param testPoint point p to project onto the polygon edges. Works best when p is in the plane of the polygon.
237615
- * @param tolerance optional distance tolerance to determine point-vertex and point-edge coincidence.
237672
+ * @param tolerance optional tolerance(s) to determine point-vertex and point-edge coincidence. A single number
237673
+ * is interpreted as distance tolerance. If an array is given, the first number is interpreted as distance tolerance;
237674
+ * the second, as parametric tolerance. Default values are [[Geometry.smallMetricDistance]] for distance tolerance
237675
+ * and 0.0 for parameter tolerance.
237616
237676
  * @param result optional pre-allocated object to fill and return
237617
237677
  * @returns details d of the closest point `d.point`:
237618
237678
  * * `d.isValid()` returns true if and only if the polygon is nontrivial.
@@ -237624,7 +237684,9 @@ class PolygonOps {
237624
237684
  static closestPointOnBoundary(polygon, testPoint, tolerance = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.smallMetricDistance, result) {
237625
237685
  if (!(polygon instanceof _IndexedXYZCollection__WEBPACK_IMPORTED_MODULE_5__.IndexedXYZCollection))
237626
237686
  return this.closestPointOnBoundary(new _Point3dArrayCarrier__WEBPACK_IMPORTED_MODULE_4__.Point3dArrayCarrier(polygon), testPoint, tolerance, result);
237627
- const distTol2 = tolerance * tolerance;
237687
+ const distTol = Array.isArray(tolerance) ? tolerance[0] : tolerance;
237688
+ const paramTol = Array.isArray(tolerance) ? Math.abs(tolerance[1]) : 0.0;
237689
+ const distTol2 = distTol * distTol;
237628
237690
  let numPoints = polygon.length;
237629
237691
  while (numPoints > 1) {
237630
237692
  if (polygon.distanceSquaredIndexIndex(0, numPoints - 1) > distTol2)
@@ -237634,29 +237696,59 @@ class PolygonOps {
237634
237696
  result = PolygonLocationDetail.create(result);
237635
237697
  if (0 === numPoints)
237636
237698
  return result; // invalid
237637
- if (1 === numPoints) {
237638
- polygon.getPoint3dAtUncheckedPointIndex(0, result.point);
237699
+ const constructSingletonPoint = (index) => {
237700
+ polygon.getPoint3dAtUncheckedPointIndex(index, result.point);
237639
237701
  result.a = result.point.distance(testPoint);
237640
237702
  result.v.setZero();
237641
237703
  result.code = _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonVertex;
237642
- result.closestEdgeIndex = 0;
237704
+ result.closestEdgeIndex = index;
237643
237705
  result.closestEdgeParam = 0.0;
237644
237706
  return result;
237645
- }
237707
+ };
237708
+ if (1 === numPoints)
237709
+ return constructSingletonPoint(0);
237710
+ // lambda for computing edge parameter at which testPoint projects onto the edge starting at iEdgeStart
237711
+ const projectToEdge = (iEdgeStart) => {
237712
+ let isValid = false;
237713
+ let edgeParam = 0.0;
237714
+ let uDotU = 0.0;
237715
+ let vDotV = 0.0;
237716
+ if (iEdgeStart >= 0 && iEdgeStart < numPoints) {
237717
+ let iEdgeEnd = iEdgeStart + 1;
237718
+ if (iEdgeEnd === numPoints)
237719
+ iEdgeEnd = 0;
237720
+ uDotU = polygon.distanceSquaredIndexIndex(iEdgeStart, iEdgeEnd);
237721
+ if (uDotU > distTol2) { // nontrivial edge
237722
+ vDotV = polygon.distanceSquaredIndexXYAndZ(iEdgeStart, testPoint);
237723
+ const uDotV = polygon.dotProductIndexIndexXYAndZ(iEdgeStart, iEdgeEnd, testPoint);
237724
+ edgeParam = uDotV / uDotU; // param of projection of testPoint onto edge [iEdgeStart, iEdgeEnd]
237725
+ isValid = true;
237726
+ }
237727
+ }
237728
+ return { isValid, edgeParam, uDotU, vDotV };
237729
+ };
237730
+ // find the previous nontrivial edge's projection status before processing the first edge
237731
+ let projBeyondPrevEdge = false;
237646
237732
  let iPrev = numPoints - 1;
237733
+ for (; iPrev > 0; --iPrev) {
237734
+ const projData = projectToEdge(iPrev);
237735
+ if (projData.isValid) {
237736
+ projBeyondPrevEdge = projData.edgeParam > 1.0 + paramTol;
237737
+ break;
237738
+ }
237739
+ }
237740
+ if (iPrev <= 0) // all segments trivial, so treat like single point case
237741
+ return constructSingletonPoint(0);
237647
237742
  let minDist2 = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.largeCoordinateResult;
237648
237743
  for (let iBase = 0; iBase < numPoints; ++iBase) {
237649
237744
  let iNext = iBase + 1;
237650
237745
  if (iNext === numPoints)
237651
237746
  iNext = 0;
237652
- const uDotU = polygon.distanceSquaredIndexIndex(iBase, iNext);
237653
- if (uDotU <= distTol2)
237654
- continue; // ignore trivial polygon edge (keep iPrev)
237655
- const vDotV = polygon.distanceSquaredIndexXYAndZ(iBase, testPoint);
237656
- const uDotV = polygon.dotProductIndexIndexXYAndZ(iBase, iNext, testPoint);
237657
- const edgeParam = uDotV / uDotU; // param of projection of testPoint onto this edge
237658
- if (edgeParam <= 0.0) { // testPoint projects to/before edge start
237659
- const distToStart2 = vDotV;
237747
+ const projData = projectToEdge(iBase);
237748
+ if (!projData.isValid)
237749
+ continue; // ignore trivial polygon edge (keep iPrev, projBeyondPrevEdge)
237750
+ if (projData.edgeParam <= paramTol) { // testPoint projects to/before edge start
237751
+ const distToStart2 = projData.vDotV;
237660
237752
  if (distToStart2 <= distTol2) {
237661
237753
  // testPoint is at edge start; we are done
237662
237754
  polygon.getPoint3dAtUncheckedPointIndex(iBase, result.point);
@@ -237667,25 +237759,25 @@ class PolygonOps {
237667
237759
  result.closestEdgeParam = 0.0;
237668
237760
  return result;
237669
237761
  }
237670
- if (distToStart2 < minDist2) {
237671
- if (polygon.dotProductIndexIndexXYAndZ(iBase, iPrev, testPoint) <= 0.0) {
237672
- // update candidate (to edge start) only if testPoint projected beyond previous edge end
237673
- polygon.getPoint3dAtUncheckedPointIndex(iBase, result.point);
237674
- result.a = Math.sqrt(distToStart2);
237675
- polygon.crossProductIndexIndexIndex(iBase, iPrev, iNext, result.v);
237676
- result.code = _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonVertex;
237677
- result.closestEdgeIndex = iBase;
237678
- result.closestEdgeParam = 0.0;
237679
- minDist2 = distToStart2;
237680
- }
237762
+ if (distToStart2 < minDist2 && projBeyondPrevEdge) {
237763
+ // update candidate (to edge start) only if testPoint projected beyond previous edge end
237764
+ polygon.getPoint3dAtUncheckedPointIndex(iBase, result.point);
237765
+ result.a = Math.sqrt(distToStart2);
237766
+ polygon.crossProductIndexIndexIndex(iBase, iPrev, iNext, result.v);
237767
+ result.code = _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonVertex;
237768
+ result.closestEdgeIndex = iBase;
237769
+ result.closestEdgeParam = 0.0;
237770
+ minDist2 = distToStart2;
237681
237771
  }
237772
+ projBeyondPrevEdge = false;
237682
237773
  }
237683
- else if (edgeParam <= 1.0) { // testPoint projects inside edge, or to edge end
237684
- const projDist2 = vDotV - edgeParam * edgeParam * uDotU;
237774
+ else if (projData.edgeParam <= 1.0 + paramTol) { // testPoint projects inside edge, or to edge end
237775
+ projData.edgeParam = _Geometry__WEBPACK_IMPORTED_MODULE_2__.Geometry.clamp(projData.edgeParam, 0.0, 1.0);
237776
+ const projDist2 = projData.vDotV - projData.edgeParam * projData.edgeParam * projData.uDotU;
237685
237777
  if (projDist2 <= distTol2) {
237686
237778
  // testPoint is on edge; we are done
237687
- const distToStart2 = vDotV;
237688
- if (edgeParam <= 0.5 && distToStart2 <= distTol2) {
237779
+ const distToStart2 = projData.vDotV;
237780
+ if (projData.edgeParam <= 0.5 && distToStart2 <= distTol2) {
237689
237781
  // testPoint is at edge start
237690
237782
  polygon.getPoint3dAtUncheckedPointIndex(iBase, result.point);
237691
237783
  result.a = Math.sqrt(distToStart2);
@@ -237695,8 +237787,8 @@ class PolygonOps {
237695
237787
  result.closestEdgeParam = 0.0;
237696
237788
  return result;
237697
237789
  }
237698
- const distToEnd2 = projDist2 + (1.0 - edgeParam) * (1.0 - edgeParam) * uDotU;
237699
- if (edgeParam > 0.5 && distToEnd2 <= distTol2) {
237790
+ const distToEnd2 = projDist2 + (1.0 - projData.edgeParam) * (1.0 - projData.edgeParam) * projData.uDotU;
237791
+ if (projData.edgeParam > 0.5 && distToEnd2 <= distTol2) {
237700
237792
  // testPoint is at edge end
237701
237793
  polygon.getPoint3dAtUncheckedPointIndex(iNext, result.point);
237702
237794
  result.a = Math.sqrt(distToEnd2);
@@ -237707,27 +237799,29 @@ class PolygonOps {
237707
237799
  return result;
237708
237800
  }
237709
237801
  // testPoint is on edge interior
237710
- polygon.interpolateIndexIndex(iBase, edgeParam, iNext, result.point);
237802
+ polygon.interpolateIndexIndex(iBase, projData.edgeParam, iNext, result.point);
237711
237803
  result.a = Math.sqrt(projDist2);
237712
237804
  result.v.setZero();
237713
237805
  result.code = _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonEdgeInterior;
237714
237806
  result.closestEdgeIndex = iBase;
237715
- result.closestEdgeParam = edgeParam;
237807
+ result.closestEdgeParam = projData.edgeParam;
237716
237808
  return result;
237717
237809
  }
237718
237810
  if (projDist2 < minDist2) {
237719
- // update candidate (to edge interior)
237720
- polygon.interpolateIndexIndex(iBase, edgeParam, iNext, result.point);
237811
+ // update candidate
237812
+ polygon.interpolateIndexIndex(iBase, projData.edgeParam, iNext, result.point);
237721
237813
  result.a = Math.sqrt(projDist2);
237722
237814
  polygon.crossProductIndexIndexXYAndZ(iBase, iNext, testPoint, result.v);
237723
- result.code = _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonEdgeInterior;
237815
+ result.code = projData.edgeParam < 1.0 ? _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonEdgeInterior : _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonVertex;
237816
+ ;
237724
237817
  result.closestEdgeIndex = iBase;
237725
- result.closestEdgeParam = edgeParam;
237818
+ result.closestEdgeParam = projData.edgeParam;
237726
237819
  minDist2 = projDist2;
237727
237820
  }
237821
+ projBeyondPrevEdge = false;
237728
237822
  }
237729
- else { // edgeParam > 1.0
237730
- // NOOP: testPoint projects beyond edge end, handled by next edge
237823
+ else {
237824
+ projBeyondPrevEdge = true; // to be handled by next edge
237731
237825
  }
237732
237826
  iPrev = iBase;
237733
237827
  }
@@ -237771,7 +237865,10 @@ class PolygonOps {
237771
237865
  /** Compute the intersection of a line (parameterized as a ray) with the plane of this polygon.
237772
237866
  * @param polygon points of the polygon, closure point optional
237773
237867
  * @param ray infinite line to intersect, as a ray
237774
- * @param tolerance optional distance tolerance to determine point-vertex and point-edge coincidence.
237868
+ * @param tolerance optional tolerance(s) to determine point-vertex and point-edge coincidence. A single number
237869
+ * is interpreted as distance tolerance. If an array is given, the first number is interpreted as distance tolerance;
237870
+ * the second, as parametric tolerance. Default values are [[Geometry.smallMetricDistance]] for distance tolerance
237871
+ * and 0.0 for parameter tolerance.
237775
237872
  * @param result optional pre-allocated object to fill and return
237776
237873
  * @returns details d of the line-plane intersection `d.point`:
237777
237874
  * * `d.isValid()` returns true if and only if the line intersects the plane.
@@ -237798,11 +237895,18 @@ class PolygonOps {
237798
237895
  // NOOP: intersectionPoint is on the polygon, so result.code already classifies it
237799
237896
  }
237800
237897
  else {
237801
- // intersectionPoint is not on polygon, so result.code refers to the closest point. Update it to refer to intersectionPoint.
237802
- if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonVertex === result.code)
237803
- result.code = (dot > 0.0) ? _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.InsidePolygonProjectsToVertex : _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OutsidePolygonProjectsToVertex;
237804
- else if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonEdgeInterior === result.code)
237805
- result.code = (dot > 0.0) ? _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.InsidePolygonProjectsToEdgeInterior : _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OutsidePolygonProjectsToEdgeInterior;
237898
+ // intersectionPoint is not on the polygon, so result.code refers to the closest point;
237899
+ // update it to refer to intersectionPoint.
237900
+ if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonVertex === result.code) {
237901
+ result.code = (dot > 0.0)
237902
+ ? _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.InsidePolygonProjectsToVertex
237903
+ : _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OutsidePolygonProjectsToVertex;
237904
+ }
237905
+ else if (_Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OnPolygonEdgeInterior === result.code) {
237906
+ result.code = (dot > 0.0)
237907
+ ? _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.InsidePolygonProjectsToEdgeInterior
237908
+ : _Geometry__WEBPACK_IMPORTED_MODULE_2__.PolygonLocation.OutsidePolygonProjectsToEdgeInterior;
237909
+ }
237806
237910
  }
237807
237911
  }
237808
237912
  return result;
@@ -249121,11 +249225,11 @@ class AnalyticRoots {
249121
249225
  * * -1 -- beta, gamma are zero, alpha is not.There is no line defined.There are no solutions.
249122
249226
  * * 0 -- the line is well defined, but passes completely outside the unit circle.
249123
249227
  * * In this case, (c1, s1) is the circle point closest to the line and(c2, s2) is the line point closest to the circle.
249124
- * * 1 -- the line is tangent to the unit circle.
249125
- * * Tangency is determined by tolerances, which calls a "close approach" point a tangency.
249126
- * * (c1, s1) is the closest circle point
249127
- * * (c2, s2) is the line point.
249128
- * * 2 -- two simple intersections.
249228
+ * * 1 -- the line is tangent to the unit circle.
249229
+ * * Tangency is determined by tolerances, which calls a "close approach" point a tangency.
249230
+ * * (c1, s1) is the closest circle point
249231
+ * * (c2, s2) is the line point.
249232
+ * * 2 -- two simple intersections.
249129
249233
  * @param alpha constant coefficient on line
249130
249234
  * @param beta x cosine coefficient on line
249131
249235
  * @param gamma y sine coefficient on line
@@ -249257,7 +249361,7 @@ class TrigPolynomial {
249257
249361
  degree--;
249258
249362
  const roots = new _geometry3d_GrowableFloat64Array__WEBPACK_IMPORTED_MODULE_6__.GrowableFloat64Array();
249259
249363
  if (degree === -1) {
249260
- // do nothing
249364
+ // p(t) is identically zero (degenerate); do nothing.
249261
249365
  }
249262
249366
  else {
249263
249367
  if (degree === 0) {
@@ -251136,8 +251240,8 @@ var AuxChannelDataType;
251136
251240
  * When the host Polyface is transformed the displacements are rotated and scaled accordingly.
251137
251241
  */
251138
251242
  AuxChannelDataType[AuxChannelDataType["Vector"] = 2] = "Vector";
251139
- /** (X, Y, Z) normal vectors that replace the host [[Polyface]]'s own normals.
251140
- * When the Polyface is transformed the normals are rotated accordingly.
251243
+ /** (X, Y, Z) unit normal vectors that replace the host [[Polyface]]'s own normals.
251244
+ * When the Polyface is transformed the normals are rotated and renormalized accordingly.
251141
251245
  */
251142
251246
  AuxChannelDataType[AuxChannelDataType["Normal"] = 3] = "Normal";
251143
251247
  })(AuxChannelDataType || (AuxChannelDataType = {}));
@@ -251326,7 +251430,15 @@ class PolyfaceAuxData {
251326
251430
  inverseRot = inverseRot ?? rot.inverse();
251327
251431
  if (!inverseRot)
251328
251432
  return false;
251329
- transformPoints(data.values, (point) => inverseRot.multiplyTransposeVectorInPlace(point));
251433
+ transformPoints(data.values, (point) => {
251434
+ inverseRot.multiplyTransposeVectorInPlace(point);
251435
+ const dot = point.magnitudeSquared();
251436
+ const tol = 1.0e-15; // cf. GrowableXYZArray.multiplyAndRenormalizeMatrix3dInverseTransposeInPlace
251437
+ if (dot > tol && Math.abs(dot - 1.0) > tol) { // only renormalize if magnitude is not near 0 or 1
251438
+ const mag = 1.0 / Math.sqrt(dot);
251439
+ point.scaleInPlace(mag);
251440
+ }
251441
+ });
251330
251442
  break;
251331
251443
  }
251332
251444
  case AuxChannelDataType.Vector: {
@@ -253175,20 +253287,14 @@ class IndexedPolyface extends Polyface {
253175
253287
  }
253176
253288
  /**
253177
253289
  * Transform the mesh.
253178
- * * Apply the transform to points.
253179
- * * Apply the (inverse transpose of the) matrix part to normals.
253180
- * * If determinant of the transform matrix is negative, also
253181
- * * negate normals
253182
- * * reverse index order around each facet.
253290
+ * * If `transform` is a mirror, also reverse the index order around each facet.
253291
+ * * Note that this method always returns true. If transforming the normals fails (due to singular matrix or zero
253292
+ * normal), the original normal(s) are left unchanged.
253183
253293
  */
253184
253294
  tryTransformInPlace(transform) {
253185
- if (!this.data.tryTransformInPlace(transform))
253186
- return false;
253187
- const determinant = transform.matrix.determinant();
253188
- if (determinant < 0) {
253295
+ this.data.tryTransformInPlace(transform);
253296
+ if (transform.matrix.determinant() < 0)
253189
253297
  this.reverseIndices();
253190
- this.reverseNormals();
253191
- }
253192
253298
  return true;
253193
253299
  }
253194
253300
  /** Reverse indices for a single facet. */
@@ -253197,8 +253303,7 @@ class IndexedPolyface extends Polyface {
253197
253303
  }
253198
253304
  /** Return a deep clone. */
253199
253305
  clone() {
253200
- const result = new IndexedPolyface(this.data.clone(), this._facetStart.slice(), this._facetToFaceData.slice());
253201
- return result;
253306
+ return new IndexedPolyface(this.data.clone(), this._facetStart.slice(), this._facetToFaceData.slice());
253202
253307
  }
253203
253308
  /**
253204
253309
  * Return a deep clone with transformed points and normals.
@@ -254779,17 +254884,28 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
254779
254884
  }
254780
254885
  /** Construct facets for a rotational sweep. */
254781
254886
  addRotationalSweep(surface) {
254782
- const contour = surface.getCurves();
254783
- const section0 = _curve_Query_StrokeCountChain__WEBPACK_IMPORTED_MODULE_16__.StrokeCountSection.createForParityRegionOrChain(contour, this._options);
254887
+ const contour = surface.getSweepContourRef();
254888
+ const section0 = _curve_Query_StrokeCountChain__WEBPACK_IMPORTED_MODULE_16__.StrokeCountSection.createForParityRegionOrChain(contour.getCurves(), this._options);
254784
254889
  const baseStrokes = section0.getStrokes();
254890
+ // ensure sweep is positive for buildRotationalNormalsInLineStrings
254785
254891
  const axis = surface.cloneAxisRay();
254892
+ const sweepAngle = surface.getSweep();
254893
+ if (sweepAngle.radians < 0.0) {
254894
+ axis.direction.scaleInPlace(-1);
254895
+ sweepAngle.setRadians(-sweepAngle.radians);
254896
+ }
254897
+ // swingVector points in the direction of positive sweep
254786
254898
  const perpendicularVector = _curve_Query_CylindricalRange__WEBPACK_IMPORTED_MODULE_17__.CylindricalRangeQuery.computeMaxVectorFromRay(axis, baseStrokes);
254787
254899
  const swingVector = axis.direction.crossProduct(perpendicularVector);
254900
+ // ensure contour computed normal is aligned with swingVector for buildRotationalNormalsInLineStrings
254901
+ const contourNormalAgreesWithSwingDir = contour.localToWorld.matrix.dotColumnZ(swingVector) > 0;
254902
+ if (!contourNormalAgreesWithSwingDir)
254903
+ baseStrokes.reverseInPlace();
254788
254904
  if (this._options.needNormals)
254789
254905
  _curve_Query_CylindricalRange__WEBPACK_IMPORTED_MODULE_17__.CylindricalRangeQuery.buildRotationalNormalsInLineStrings(baseStrokes, axis, swingVector);
254790
254906
  const maxDistance = perpendicularVector.magnitude();
254791
- const maxPath = Math.abs(maxDistance * surface.getSweep().radians);
254792
- let numStep = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_4__.StrokeOptions.applyAngleTol(this._options, 1, surface.getSweep().radians, undefined);
254907
+ const maxPath = Math.abs(maxDistance * sweepAngle.radians);
254908
+ let numStep = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_4__.StrokeOptions.applyAngleTol(this._options, 1, sweepAngle.radians, undefined);
254793
254909
  numStep = _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_4__.StrokeOptions.applyMaxEdgeLength(this._options, numStep, maxPath);
254794
254910
  for (let i = 1; i <= numStep; i++) {
254795
254911
  const transformA = surface.getFractionalRotationTransform((i - 1) / numStep);
@@ -254797,11 +254913,10 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
254797
254913
  this.addBetweenRotatedStrokeSets(baseStrokes, transformA, i - 1, transformB, i);
254798
254914
  }
254799
254915
  if (surface.capped) {
254800
- const capContour = surface.getSweepContourRef();
254801
- capContour.purgeFacets();
254802
- capContour.emitFacets(this, true, undefined);
254803
- // final loop pass left transformA at end
254804
- capContour.emitFacets(this, false, surface.getFractionalRotationTransform(1.0));
254916
+ contour.purgeFacets();
254917
+ const reverseNearCap = contourNormalAgreesWithSwingDir;
254918
+ contour.emitFacets(this, reverseNearCap, undefined);
254919
+ contour.emitFacets(this, !reverseNearCap, surface.getFractionalRotationTransform(1.0));
254805
254920
  }
254806
254921
  }
254807
254922
  /** Construct facets for any planar region. */
@@ -254865,9 +254980,9 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
254865
254980
  const normalIndices = ls.ensureEmptyNormalIndices();
254866
254981
  const normalIndex0 = this.findOrAddNormalInLineString(ls, 0, transform);
254867
254982
  normalIndices.push(normalIndex0);
254868
- let normalIndexA = normalIndex0;
254869
- let normalIndexB;
254870
254983
  if (n > 1) {
254984
+ let normalIndexA = normalIndex0;
254985
+ let normalIndexB;
254871
254986
  for (let i = 1; i + 1 < n; i++) {
254872
254987
  normalIndexB = this.findOrAddNormalInLineString(ls, i, transform, normalIndexA);
254873
254988
  normalIndices.push(normalIndexB);
@@ -254882,9 +254997,9 @@ class PolyfaceBuilder extends _geometry3d_GeometryHandler__WEBPACK_IMPORTED_MODU
254882
254997
  const uvIndices = ls.ensureEmptyUVIndices();
254883
254998
  const uvIndex0 = this.findOrAddParamInLineString(ls, 0, vParam);
254884
254999
  uvIndices.push(uvIndex0);
254885
- let uvIndexA = uvIndex0;
254886
- let uvIndexB;
254887
255000
  if (n > 1) {
255001
+ let uvIndexA = uvIndex0;
255002
+ let uvIndexB;
254888
255003
  for (let i = 1; i + 1 < n; i++) {
254889
255004
  uvIndexB = this.findOrAddParamInLineString(ls, i, vParam, uvIndexA);
254890
255005
  uvIndices.push(uvIndexB);
@@ -256813,15 +256928,32 @@ class PolyfaceData {
256813
256928
  return result;
256814
256929
  }
256815
256930
  /**
256816
- * Apply `transform` to point and normal arrays and to auxData.
256817
- * * IMPORTANT This base class is just a data carrier. It does not know if the index order and normal directions
256818
- * have special meaning, i.e., caller must separately reverse index order and normal direction if needed.
256931
+ * Apply a transform to the mesh data.
256932
+ * * Transform the data as follows:
256933
+ * * apply `transform` to points.
256934
+ * * apply inverse transpose of `transform` to normals and renormalize. This preserves normals perpendicular
256935
+ * to transformed facets, and keeps them pointing outward, e.g, if the mesh is closed. If the transform is not
256936
+ * invertible or a normal has zero length, the normal(s) are left unchanged, and this error is silently ignored.
256937
+ * * apply `transform` to auxData.
256938
+ * * scale faceData distances by the cube root of the absolute value of the determinant of `transform.matrix`.
256939
+ * * Note that if the transform is a mirror, this method does NOT reverse index order. This is the caller's
256940
+ * responsibility. This base class is just a data carrier: PolyfaceData does not know if the index order has
256941
+ * special meaning.
256942
+ * * Note that this method always returns true. If transforming normals fails (due to singular matrix or zero
256943
+ * normal), the original normal(s) are left unchanged.
256819
256944
  */
256820
256945
  tryTransformInPlace(transform) {
256821
256946
  this.point.multiplyTransformInPlace(transform);
256822
256947
  if (this.normal && !transform.matrix.isIdentity)
256823
256948
  this.normal.multiplyAndRenormalizeMatrix3dInverseTransposeInPlace(transform.matrix);
256824
- return undefined === this.auxData || this.auxData.tryTransformInPlace(transform);
256949
+ if (this.face.length > 0) {
256950
+ const distScale = Math.cbrt(Math.abs(transform.matrix.determinant()));
256951
+ for (const faceData of this.face)
256952
+ faceData.scaleDistances(distScale);
256953
+ }
256954
+ if (this.auxData)
256955
+ this.auxData.tryTransformInPlace(transform);
256956
+ return true;
256825
256957
  }
256826
256958
  /**
256827
256959
  * Compress the instance by equating duplicate data.
@@ -258757,8 +258889,8 @@ class PolyfaceQuery {
258757
258889
  /**
258758
258890
  * Search facets for the first one that intersects the infinite line.
258759
258891
  * * To process _all_ intersections, callers can supply an `options.acceptIntersection` callback that always
258760
- * returns `false`.
258761
- * In this case, `intersectRay3d` will return `undefined`, but the callback will be invoked for each intersection.
258892
+ * returns `false`. In this case, `intersectRay3d` will return `undefined`, but the callback will be invoked for
258893
+ * each intersection.
258762
258894
  * * Example callback logic:
258763
258895
  * * Accept the first found facet that intersects the half-line specified by the ray: `return detail.a >= 0.0;`
258764
258896
  * * Collect all intersections: `myIntersections.push(detail.clone()); return false;` Then after `intersectRay3d`
@@ -258776,6 +258908,7 @@ class PolyfaceQuery {
258776
258908
  if (visitor instanceof _Polyface__WEBPACK_IMPORTED_MODULE_7__.Polyface)
258777
258909
  return PolyfaceQuery.intersectRay3d(visitor.createVisitor(0), ray, options);
258778
258910
  let detail;
258911
+ const tol = options ? [options.distanceTolerance, options.parameterTolerance] : undefined;
258779
258912
  visitor.setNumWrap(0);
258780
258913
  while (visitor.moveToNextFacet()) {
258781
258914
  const numEdges = visitor.pointCount; // #vertices = #edges since numWrap is zero
@@ -258787,7 +258920,7 @@ class PolyfaceQuery {
258787
258920
  detail = this._workFacetDetail3 = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_37__.TriangularFacetLocationDetail.create(visitor.currentReadIndex(), detail3, this._workFacetDetail3);
258788
258921
  }
258789
258922
  else {
258790
- const detailN = this._workPolyDetail = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_8__.PolygonOps.intersectRay3d(vertices, ray, options?.distanceTolerance, this._workPolyDetail);
258923
+ const detailN = this._workPolyDetail = _geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_8__.PolygonOps.intersectRay3d(vertices, ray, tol, this._workPolyDetail);
258791
258924
  if (_geometry3d_PolygonOps__WEBPACK_IMPORTED_MODULE_8__.PolygonOps.isConvex(vertices))
258792
258925
  detail = this._workFacetDetailC = _FacetLocationDetail__WEBPACK_IMPORTED_MODULE_37__.ConvexFacetLocationDetail.create(visitor.currentReadIndex(), numEdges, detailN, this._workFacetDetailC);
258793
258926
  else
@@ -274450,8 +274583,10 @@ class Box extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
274450
274583
  getConstructiveFrame() {
274451
274584
  return this._localToWorld.cloneRigid();
274452
274585
  }
274453
- /** Apply the transform to the box's `localToWorld` frame.
274586
+ /**
274587
+ * Apply the transform to the box's `localToWorld` frame.
274454
274588
  * * Note that this may make the frame nonrigid.
274589
+ * * This fails if the transformation is singular.
274455
274590
  */
274456
274591
  tryTransformInPlace(transform) {
274457
274592
  if (transform.matrix.isSingular())
@@ -274459,11 +274594,14 @@ class Box extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
274459
274594
  transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);
274460
274595
  return true;
274461
274596
  }
274462
- /** Clone the box and immediately apply `transform` to the local frame of the clone. */
274597
+ /**
274598
+ * Clone the box and immediately apply `transform` to the local frame of the clone.
274599
+ * * Note that this may make the frame nonrigid.
274600
+ * * This fails if the transformation is singular.
274601
+ */
274463
274602
  cloneTransformed(transform) {
274464
274603
  const result = this.clone();
274465
- transform.multiplyTransformTransform(result._localToWorld, result._localToWorld);
274466
- return result;
274604
+ return result.tryTransformInPlace(transform) ? result : undefined;
274467
274605
  }
274468
274606
  /**
274469
274607
  * Create a new box from vector and size daa.
@@ -274498,7 +274636,7 @@ class Box extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
274498
274636
  }
274499
274637
  /**
274500
274638
  * Create an axis-aligned `Box` primitive for a range.
274501
- * @param range range corners Origin of base rectangle
274639
+ * @param range range low point is origin of base rectangle, range extents are box extents
274502
274640
  * @param capped true to define top and bottom closure caps
274503
274641
  */
274504
274642
  static createRange(range, capped) {
@@ -274706,7 +274844,7 @@ class Cone extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
274706
274844
  getConstructiveFrame() {
274707
274845
  return this._localToWorld.cloneRigid();
274708
274846
  }
274709
- /** Apply the transform to this cone's locla to world coordinates.
274847
+ /** Apply the transform to this cone's local to world coordinates.
274710
274848
  * * Note that the radii are not changed. Scaling is absorbed into the frame.
274711
274849
  * * This fails if the transformation is singular.
274712
274850
  */
@@ -274718,11 +274856,11 @@ class Cone extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive {
274718
274856
  }
274719
274857
  /**
274720
274858
  * Create a clone and immediately transform the clone.
274859
+ * * This fails if the transformation is singular.
274721
274860
  */
274722
274861
  cloneTransformed(transform) {
274723
274862
  const result = this.clone();
274724
- transform.multiplyTransformTransform(result._localToWorld, result._localToWorld);
274725
- return result;
274863
+ return result.tryTransformInPlace(transform) ? result : undefined;
274726
274864
  }
274727
274865
  /** create a cylinder or cone from two endpoints and their radii. The circular cross sections are perpendicular to the axis line
274728
274866
  * from start to end point.
@@ -275021,7 +275159,10 @@ class LinearSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrim
275021
275159
  clone() {
275022
275160
  return new LinearSweep(this._contour.clone(), this._direction.clone(), this.capped);
275023
275161
  }
275024
- /** apply a transform to the curves and sweep vector */
275162
+ /**
275163
+ * Apply a transform to the curves and sweep vector
275164
+ * * This fails if the transformation is singular.
275165
+ */
275025
275166
  tryTransformInPlace(transform) {
275026
275167
  if (transform.matrix.isSingular())
275027
275168
  return false;
@@ -275039,11 +275180,13 @@ class LinearSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrim
275039
275180
  getConstructiveFrame() {
275040
275181
  return this._contour.localToWorld.cloneRigid();
275041
275182
  }
275042
- /** Return a transformed clone */
275183
+ /**
275184
+ * Return a transformed clone.
275185
+ * * This fails if the transformation is singular.
275186
+ */
275043
275187
  cloneTransformed(transform) {
275044
275188
  const result = this.clone();
275045
- result.tryTransformInPlace(transform);
275046
- return result;
275189
+ return result.tryTransformInPlace(transform) ? result : undefined;
275047
275190
  }
275048
275191
  /** Test for near-equality of coordinates in `other` */
275049
275192
  isAlmostEqual(other) {
@@ -275142,7 +275285,12 @@ class RotationalSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.Solid
275142
275285
  this.capped = capped;
275143
275286
  this._sweepAngle = sweepAngle;
275144
275287
  }
275145
- /** Create a rotational sweep. */
275288
+ /** Create a rotational sweep.
275289
+ * @param contour profile to sweep, coplanar with axis. CAPTURED
275290
+ * @param axis rotation axis
275291
+ * @param sweepAngle signed angular sweep
275292
+ * @param capped whether to cap the surface to make a solid
275293
+ */
275146
275294
  static create(contour, axis, sweepAngle, capped) {
275147
275295
  if (!axis.direction.normalizeInPlace())
275148
275296
  return undefined;
@@ -275187,20 +275335,28 @@ class RotationalSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.Solid
275187
275335
  clone() {
275188
275336
  return new RotationalSweep(this._contour.clone(), this._normalizedAxis.clone(), this._sweepAngle.clone(), this.capped);
275189
275337
  }
275190
- /** Transform the contour and axis */
275338
+ /**
275339
+ * Transform the contour and axis.
275340
+ * * This fails if the transformation is singular.
275341
+ */
275191
275342
  tryTransformInPlace(transform) {
275192
- if (!transform.matrix.isSingular()
275193
- && this._contour.tryTransformInPlace(transform)) {
275343
+ if (transform.matrix.isSingular())
275344
+ return false;
275345
+ if (this._contour.tryTransformInPlace(transform)) {
275194
275346
  this._normalizedAxis.transformInPlace(transform);
275347
+ if (transform.matrix.determinant() < 0.0)
275348
+ this._sweepAngle.setRadians(-this._sweepAngle.radians);
275195
275349
  return this._normalizedAxis.direction.normalizeInPlace();
275196
275350
  }
275197
275351
  return false;
275198
275352
  }
275199
- /** return a cloned transform. */
275353
+ /**
275354
+ * Return a transformed clone.
275355
+ * * This fails if the transformation is singular.
275356
+ */
275200
275357
  cloneTransformed(transform) {
275201
275358
  const result = this.clone();
275202
- result.tryTransformInPlace(transform);
275203
- return result;
275359
+ return result.tryTransformInPlace(transform) ? result : undefined;
275204
275360
  }
275205
275361
  /** Dispatch to strongly typed handler `handler.handleRotationalSweep(this)` */
275206
275362
  dispatchToGeometryHandler(handler) {
@@ -275336,20 +275492,26 @@ class RuledSweep extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimi
275336
275492
  clone() {
275337
275493
  return new RuledSweep(this.cloneSweepContours(), this.capped);
275338
275494
  }
275339
- /** Transform all contours in place. */
275495
+ /**
275496
+ * Transform all contours in place.
275497
+ * * This fails if the transformation is singular.
275498
+ */
275340
275499
  tryTransformInPlace(transform) {
275341
275500
  if (transform.matrix.isSingular())
275342
275501
  return false;
275343
275502
  for (const contour of this._contours) {
275344
- contour.tryTransformInPlace(transform);
275503
+ if (!contour.tryTransformInPlace(transform))
275504
+ return false;
275345
275505
  }
275346
275506
  return true;
275347
275507
  }
275348
- /** Return a cloned transform. */
275508
+ /**
275509
+ * Return a transformed clone.
275510
+ * * This fails if the transformation is singular.
275511
+ */
275349
275512
  cloneTransformed(transform) {
275350
275513
  const result = this.clone();
275351
- result.tryTransformInPlace(transform);
275352
- return result;
275514
+ return result.tryTransformInPlace(transform) ? result : undefined;
275353
275515
  }
275354
275516
  /** Return a coordinate frame (right handed unit vectors)
275355
275517
  * * origin on base contour
@@ -275530,12 +275692,12 @@ __webpack_require__.r(__webpack_exports__);
275530
275692
  /* harmony import */ var _curve_Loop__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../curve/Loop */ "../../core/geometry/lib/esm/curve/Loop.js");
275531
275693
  /* harmony import */ var _curve_StrokeOptions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../curve/StrokeOptions */ "../../core/geometry/lib/esm/curve/StrokeOptions.js");
275532
275694
  /* harmony import */ var _Geometry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Geometry */ "../../core/geometry/lib/esm/Geometry.js");
275533
- /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
275534
- /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
275695
+ /* harmony import */ var _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../geometry3d/AngleSweep */ "../../core/geometry/lib/esm/geometry3d/AngleSweep.js");
275696
+ /* harmony import */ var _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Matrix3d */ "../../core/geometry/lib/esm/geometry3d/Matrix3d.js");
275535
275697
  /* harmony import */ var _geometry3d_Plane3dByOriginAndVectors__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../geometry3d/Plane3dByOriginAndVectors */ "../../core/geometry/lib/esm/geometry3d/Plane3dByOriginAndVectors.js");
275536
275698
  /* harmony import */ var _geometry3d_Point2dVector2d__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../geometry3d/Point2dVector2d */ "../../core/geometry/lib/esm/geometry3d/Point2dVector2d.js");
275537
275699
  /* harmony import */ var _geometry3d_Point3dVector3d__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../geometry3d/Point3dVector3d */ "../../core/geometry/lib/esm/geometry3d/Point3dVector3d.js");
275538
- /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
275700
+ /* harmony import */ var _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../geometry3d/Transform */ "../../core/geometry/lib/esm/geometry3d/Transform.js");
275539
275701
  /* harmony import */ var _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SolidPrimitive */ "../../core/geometry/lib/esm/solid/SolidPrimitive.js");
275540
275702
  /*---------------------------------------------------------------------------------------------
275541
275703
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
@@ -275579,32 +275741,32 @@ class Sphere extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive
275579
275741
  /** String name for schema properties */
275580
275742
  this.solidPrimitiveType = "sphere";
275581
275743
  this._localToWorld = localToWorld;
275582
- this._latitudeSweep = latitudeSweep ? latitudeSweep : _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep.createFullLatitude();
275744
+ this._latitudeSweep = latitudeSweep;
275583
275745
  this._latitudeSweep.capLatitudeInPlace();
275584
275746
  }
275585
275747
  /** return a deep clone */
275586
275748
  clone() {
275587
275749
  return new Sphere(this._localToWorld.clone(), this._latitudeSweep.clone(), this.capped);
275588
275750
  }
275589
- /** Transform the sphere in place.
275751
+ /**
275752
+ * Transform the sphere in place.
275590
275753
  * * Fails if the transform is singular.
275591
275754
  */
275592
275755
  tryTransformInPlace(transform) {
275593
275756
  if (transform.matrix.isSingular())
275594
275757
  return false;
275595
275758
  transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);
275759
+ if (transform.matrix.determinant() < 0.0)
275760
+ this._latitudeSweep.reverseInPlace();
275596
275761
  return true;
275597
275762
  }
275598
- /** Return a transformed clone. */
275763
+ /**
275764
+ * Return a transformed clone.
275765
+ * * Fails if the transform is singular.
275766
+ */
275599
275767
  cloneTransformed(transform) {
275600
- const sphere1 = this.clone();
275601
- transform.multiplyTransformTransform(sphere1._localToWorld, sphere1._localToWorld);
275602
- if (transform.matrix.determinant() < 0.0) {
275603
- if (sphere1._latitudeSweep !== undefined) {
275604
- sphere1._latitudeSweep.reverseInPlace();
275605
- }
275606
- }
275607
- return sphere1;
275768
+ const result = this.clone();
275769
+ return result.tryTransformInPlace(transform) ? result : undefined;
275608
275770
  }
275609
275771
  /** Return a coordinate frame (right handed, unit axes)
275610
275772
  * * origin at sphere center
@@ -275618,8 +275780,8 @@ class Sphere extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive
275618
275780
  get latitudeSweepFraction() { return this._latitudeSweep.sweepRadians / Math.PI; }
275619
275781
  /** Create from center and radius, with optional restricted latitudes. */
275620
275782
  static createCenterRadius(center, radius, latitudeSweep) {
275621
- const localToWorld = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_2__.Transform.createOriginAndMatrix(center, _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createUniformScale(radius));
275622
- return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep.createFullLatitude(), false);
275783
+ const localToWorld = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_1__.Transform.createOriginAndMatrix(center, _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createUniformScale(radius));
275784
+ return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createFullLatitude(), false);
275623
275785
  }
275624
275786
  /** Create an ellipsoid which is a unit sphere mapped to position by an (arbitrary, possibly skewed and scaled) transform. */
275625
275787
  static createEllipsoid(localToWorld, latitudeSweep, capped) {
@@ -275629,18 +275791,18 @@ class Sphere extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive
275629
275791
  static createDgnSphere(center, vectorX, vectorZ, radiusXY, radiusZ, latitudeSweep, capped) {
275630
275792
  const vectorY = vectorX.rotate90Around(vectorZ);
275631
275793
  if (vectorY && !vectorX.isParallelTo(vectorZ)) {
275632
- const matrix = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_3__.Matrix3d.createColumns(vectorX, vectorY, vectorZ);
275794
+ const matrix = _geometry3d_Matrix3d__WEBPACK_IMPORTED_MODULE_2__.Matrix3d.createColumns(vectorX, vectorY, vectorZ);
275633
275795
  matrix.scaleColumns(radiusXY, radiusXY, radiusZ, matrix);
275634
- const frame = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_2__.Transform.createOriginAndMatrix(center, matrix);
275796
+ const frame = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_1__.Transform.createOriginAndMatrix(center, matrix);
275635
275797
  return new Sphere(frame, latitudeSweep.clone(), capped);
275636
275798
  }
275637
275799
  return undefined;
275638
275800
  }
275639
275801
  /** Create a sphere from the typical parameters of the Dgn file */
275640
275802
  static createFromAxesAndScales(center, axes, radiusX, radiusY, radiusZ, latitudeSweep, capped) {
275641
- const localToWorld = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_2__.Transform.createOriginAndMatrix(center, axes);
275803
+ const localToWorld = _geometry3d_Transform__WEBPACK_IMPORTED_MODULE_1__.Transform.createOriginAndMatrix(center, axes);
275642
275804
  localToWorld.matrix.scaleColumnsInPlace(radiusX, radiusY, radiusZ);
275643
- return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_1__.AngleSweep.createFullLatitude(), capped);
275805
+ return new Sphere(localToWorld, latitudeSweep ? latitudeSweep.clone() : _geometry3d_AngleSweep__WEBPACK_IMPORTED_MODULE_3__.AngleSweep.createFullLatitude(), capped);
275644
275806
  }
275645
275807
  /** return (copy of) sphere center */
275646
275808
  cloneCenter() { return this._localToWorld.getOrigin(); }
@@ -275686,10 +275848,16 @@ class Sphere extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive
275686
275848
  return false;
275687
275849
  }
275688
275850
  /**
275689
- * return strokes for a cross-section (elliptic arc) at specified fraction v along the axis.
275690
- * * if strokeOptions is supplied, it is applied to the equator radii.
275691
- * @param v fractional position along the cone axis
275692
- * @param strokes stroke count or options.
275851
+ * Return strokes for the elliptical arc cross-section at latitude sweep fraction v.
275852
+ * * Optional inputs control the number of strokes along the cross-section:
275853
+ * * If `fixedStrokeCount` is supplied, it is taken as the cross-section stroke count.
275854
+ * * If `fixedStrokeCount` is undefined, stroke count is computed by applying `options` to the cross-section.
275855
+ * * If neither input is supplied, the stroke count default is 16.
275856
+ * * In any case, stroke count is clamped to the interval [4,64].
275857
+ * @param v fractional position along the sphere axis
275858
+ * @param fixedStrokeCount optional stroke count in u-direction
275859
+ * @param options optional stroke options in u-direction
275860
+ * @return strokes as line string
275693
275861
  */
275694
275862
  strokeConstantVSection(v, fixedStrokeCount, options) {
275695
275863
  let strokeCount = 16;
@@ -275705,7 +275873,7 @@ class Sphere extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimitive
275705
275873
  const c1 = Math.cos(phi);
275706
275874
  const s1 = Math.sin(phi);
275707
275875
  let c0, s0;
275708
- const result = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.createForStrokes(fixedStrokeCount, options);
275876
+ const result = _curve_LineString3d__WEBPACK_IMPORTED_MODULE_6__.LineString3d.createForStrokes(strokeCount, options);
275709
275877
  const deltaRadians = Math.PI * 2.0 / strokeCount;
275710
275878
  const fractions = result.fractions; // possibly undefined !!!
275711
275879
  const derivatives = result.packedDerivatives; // possibly undefined !!!
@@ -275932,7 +276100,7 @@ class SweepContour {
275932
276100
  return undefined;
275933
276101
  }
275934
276102
  /** Create for rotational sweep.
275935
- * @param contour curve to sweep, CAPTURED. For best results, contour should be planar.
276103
+ * @param contour curve to sweep, CAPTURED. For best results, contour should be coplanar with axis.
275936
276104
  * @param axis rotation axis
275937
276105
  */
275938
276106
  static createForRotation(contour, axis) {
@@ -276190,19 +276358,23 @@ class TorusPipe extends _SolidPrimitive__WEBPACK_IMPORTED_MODULE_0__.SolidPrimit
276190
276358
  result._isReversed = this._isReversed;
276191
276359
  return result;
276192
276360
  }
276193
- /** Apply `transform` to the local coordinate system. */
276361
+ /**
276362
+ * Apply `transform` to the local coordinate system.
276363
+ * * Fails if the transformation is singular.
276364
+ */
276194
276365
  tryTransformInPlace(transform) {
276195
276366
  if (transform.matrix.isSingular())
276196
276367
  return false;
276197
276368
  transform.multiplyTransformTransform(this._localToWorld, this._localToWorld);
276198
276369
  return true;
276199
276370
  }
276200
- /** Clone this TorusPipe and transform the clone */
276371
+ /**
276372
+ * Clone this TorusPipe and transform the clone.
276373
+ * * Fails if the transformation is singular.
276374
+ */
276201
276375
  cloneTransformed(transform) {
276202
276376
  const result = this.clone();
276203
- if (!result.tryTransformInPlace(transform))
276204
- return undefined;
276205
- return result;
276377
+ return result.tryTransformInPlace(transform) ? result : undefined;
276206
276378
  }
276207
276379
  /** Create a new `TorusPipe`
276208
276380
  * @param frame local to world transformation. For best results, the matrix part should be a pure rotation.
@@ -304022,7 +304194,7 @@ class TestContext {
304022
304194
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
304023
304195
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
304024
304196
  await core_frontend_1.NoRenderApp.startup({
304025
- applicationVersion: "5.0.0-dev.4",
304197
+ applicationVersion: "5.0.0-dev.6",
304026
304198
  applicationId: this.settings.gprid,
304027
304199
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.adminUserAccessToken),
304028
304200
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -308745,8 +308917,7 @@ __webpack_require__.r(__webpack_exports__);
308745
308917
  /* harmony export */ });
308746
308918
  /* harmony import */ var _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @itwin/core-bentley */ "../../core/bentley/lib/esm/core-bentley.js");
308747
308919
  /* harmony import */ var _Content__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Content */ "../../presentation/common/lib/esm/presentation-common/content/Content.js");
308748
- /* harmony import */ var _TypeDescription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TypeDescription */ "../../presentation/common/lib/esm/presentation-common/content/TypeDescription.js");
308749
- /* harmony import */ var _Value__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Value */ "../../presentation/common/lib/esm/presentation-common/content/Value.js");
308920
+ /* harmony import */ var _Value__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Value */ "../../presentation/common/lib/esm/presentation-common/content/Value.js");
308750
308921
  /*---------------------------------------------------------------------------------------------
308751
308922
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
308752
308923
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -308757,7 +308928,6 @@ __webpack_require__.r(__webpack_exports__);
308757
308928
 
308758
308929
 
308759
308930
 
308760
-
308761
308931
  /** @internal */
308762
308932
  class ContentFormatter {
308763
308933
  constructor(_propertyValueFormatter, _unitSystem) {
@@ -308788,7 +308958,7 @@ class ContentFormatter {
308788
308958
  }
308789
308959
  // format display values of nested content field
308790
308960
  if (field.isNestedContentField()) {
308791
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_3__.Value.isNestedContent(value));
308961
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_2__.Value.isNestedContent(value));
308792
308962
  await this.formatNestedContentDisplayValues(value, field.nestedFields);
308793
308963
  continue;
308794
308964
  }
@@ -308807,11 +308977,11 @@ class ContentFormatter {
308807
308977
  }
308808
308978
  async formatPropertyValue(value, field) {
308809
308979
  if (field.isArrayPropertiesField()) {
308810
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_3__.Value.isArray(value));
308980
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_2__.Value.isArray(value));
308811
308981
  return this.formatArrayItems(value, field);
308812
308982
  }
308813
308983
  if (field.isStructPropertiesField()) {
308814
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_3__.Value.isMap(value));
308984
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_2__.Value.isMap(value));
308815
308985
  return this.formatStructMembers(value, field);
308816
308986
  }
308817
308987
  return this._propertyValueFormatter.formatPropertyValue(field, value, this._unitSystem);
@@ -308843,67 +309013,76 @@ class ContentPropertyValueFormatter {
308843
309013
  return formatDouble(rawValue);
308844
309014
  }
308845
309015
  : async (rawValue) => formatDouble(rawValue);
308846
- return this.formatValue(field.type, value, { doubleFormatter });
309016
+ return this.formatValue(field, value, { doubleFormatter });
308847
309017
  }
308848
- async formatValue(type, value, ctx) {
308849
- switch (type.valueFormat) {
308850
- case _TypeDescription__WEBPACK_IMPORTED_MODULE_2__.PropertyValueFormat.Primitive:
308851
- return this.formatPrimitiveValue(type, value, ctx);
308852
- case _TypeDescription__WEBPACK_IMPORTED_MODULE_2__.PropertyValueFormat.Array:
308853
- return this.formatArrayValue(type, value);
308854
- case _TypeDescription__WEBPACK_IMPORTED_MODULE_2__.PropertyValueFormat.Struct:
308855
- return this.formatStructValue(type, value);
309018
+ async formatValue(field, value, ctx) {
309019
+ if (field.isPropertiesField()) {
309020
+ if (field.isArrayPropertiesField()) {
309021
+ return this.formatArrayValue(field, value);
309022
+ }
309023
+ if (field.isStructPropertiesField()) {
309024
+ return this.formatStructValue(field, value);
309025
+ }
308856
309026
  }
309027
+ return this.formatPrimitiveValue(field, value, ctx);
308857
309028
  }
308858
- async formatPrimitiveValue(type, value, ctx) {
309029
+ async formatPrimitiveValue(field, value, ctx) {
308859
309030
  if (value === undefined) {
308860
309031
  return "";
308861
309032
  }
308862
309033
  const formatDoubleValue = async (raw) => (ctx ? ctx.doubleFormatter(raw) : formatDouble(raw));
308863
- if (type.typeName === "point2d" && isPoint2d(value)) {
309034
+ if (field.type.typeName === "point2d" && isPoint2d(value)) {
308864
309035
  return `X: ${await formatDoubleValue(value.x)}; Y: ${await formatDoubleValue(value.y)}`;
308865
309036
  }
308866
- if (type.typeName === "point3d" && isPoint3d(value)) {
309037
+ if (field.type.typeName === "point3d" && isPoint3d(value)) {
308867
309038
  return `X: ${await formatDoubleValue(value.x)}; Y: ${await formatDoubleValue(value.y)}; Z: ${await formatDoubleValue(value.z)}`;
308868
309039
  }
308869
- if (type.typeName === "dateTime") {
309040
+ if (field.type.typeName === "dateTime") {
308870
309041
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof value === "string");
308871
309042
  return value;
308872
309043
  }
308873
- if (type.typeName === "bool" || type.typeName === "boolean") {
309044
+ if (field.type.typeName === "bool" || field.type.typeName === "boolean") {
308874
309045
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(typeof value === "boolean");
308875
309046
  return value ? "@Presentation:value.true@" : "@Presentation:value.false@";
308876
309047
  }
308877
- if (type.typeName === "int" || type.typeName === "long") {
309048
+ if (field.type.typeName === "int" || field.type.typeName === "long") {
308878
309049
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(isNumber(value));
308879
309050
  return value.toFixed(0);
308880
309051
  }
308881
- if (type.typeName === "double") {
309052
+ if (field.type.typeName === "double") {
308882
309053
  (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(isNumber(value));
308883
309054
  return formatDoubleValue(value);
308884
309055
  }
308885
- if (type.typeName === "navigation") {
308886
- (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_3__.Value.isNavigationValue(value));
309056
+ if (field.type.typeName === "navigation") {
309057
+ (0,_itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.assert)(_Value__WEBPACK_IMPORTED_MODULE_2__.Value.isNavigationValue(value));
308887
309058
  return value.label.displayValue;
308888
309059
  }
309060
+ if (field.type.typeName === "enum" && field.isPropertiesField()) {
309061
+ const defaultValue = !field.properties[0].property.enumerationInfo?.isStrict
309062
+ ? value.toString() // eslint-disable-line @typescript-eslint/no-base-to-string
309063
+ : undefined;
309064
+ return field.properties[0].property.enumerationInfo?.choices.find(({ value: enumValue }) => enumValue === value)?.label ?? defaultValue;
309065
+ }
308889
309066
  // eslint-disable-next-line @typescript-eslint/no-base-to-string
308890
309067
  return value.toString();
308891
309068
  }
308892
- async formatStructValue(type, value) {
308893
- if (!_Value__WEBPACK_IMPORTED_MODULE_3__.Value.isMap(value)) {
309069
+ async formatStructValue(field, value) {
309070
+ if (!_Value__WEBPACK_IMPORTED_MODULE_2__.Value.isMap(value)) {
308894
309071
  return {};
308895
309072
  }
308896
309073
  const formattedMember = {};
308897
- for (const member of type.members) {
308898
- formattedMember[member.name] = await this.formatValue(member.type, value[member.name]);
309074
+ for (const member of field.memberFields) {
309075
+ formattedMember[member.name] = await this.formatValue(member, value[member.name]);
308899
309076
  }
308900
309077
  return formattedMember;
308901
309078
  }
308902
- async formatArrayValue(type, value) {
308903
- if (!_Value__WEBPACK_IMPORTED_MODULE_3__.Value.isArray(value)) {
309079
+ async formatArrayValue(field, value) {
309080
+ if (!_Value__WEBPACK_IMPORTED_MODULE_2__.Value.isArray(value)) {
308904
309081
  return [];
308905
309082
  }
308906
- return Promise.all(value.map(async (arrayVal) => this.formatValue(type.memberType, arrayVal)));
309083
+ return Promise.all(value.map(async (arrayVal) => {
309084
+ return this.formatValue(field.itemsField, arrayVal);
309085
+ }));
308907
309086
  }
308908
309087
  }
308909
309088
  function formatDouble(value) {
@@ -312494,13 +312673,13 @@ class FavoritePropertiesManager {
312494
312673
  if (missingClasses.size === 0) {
312495
312674
  return baseClasses;
312496
312675
  }
312497
- const query = `
312498
- SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
312499
- FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
312500
- INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
312501
- INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
312502
- INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
312503
- INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
312676
+ const query = `
312677
+ SELECT (derivedSchema.Name || ':' || derivedClass.Name) AS "ClassFullName", (baseSchema.Name || ':' || baseClass.Name) AS "BaseClassFullName"
312678
+ FROM ECDbMeta.ClassHasAllBaseClasses baseClassRels
312679
+ INNER JOIN ECDbMeta.ECClassDef derivedClass ON derivedClass.ECInstanceId = baseClassRels.SourceECInstanceId
312680
+ INNER JOIN ECDbMeta.ECSchemaDef derivedSchema ON derivedSchema.ECInstanceId = derivedClass.Schema.Id
312681
+ INNER JOIN ECDbMeta.ECClassDef baseClass ON baseClass.ECInstanceId = baseClassRels.TargetECInstanceId
312682
+ INNER JOIN ECDbMeta.ECSchemaDef baseSchema ON baseSchema.ECInstanceId = baseClass.Schema.Id
312504
312683
  WHERE (derivedSchema.Name || ':' || derivedClass.Name) IN (${[...missingClasses].map((className) => `'${className}'`).join(",")})`;
312505
312684
  const reader = imodel.createQueryReader(query, undefined, { rowFormat: _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.QueryRowFormat.UseJsPropertyNames });
312506
312685
  while (await reader.step()) {
@@ -331591,7 +331770,7 @@ function __disposeResources(env) {
331591
331770
  /***/ ((module) => {
331592
331771
 
331593
331772
  "use strict";
331594
- module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.4","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --includes=../../generated-docs/extract --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run --coverage","test:debug":"vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^5.0.0-dev.4","@itwin/core-bentley":"workspace:^5.0.0-dev.4","@itwin/core-common":"workspace:^5.0.0-dev.4","@itwin/core-geometry":"workspace:^5.0.0-dev.4","@itwin/core-orbitgt":"workspace:^5.0.0-dev.4","@itwin/core-quantity":"workspace:^5.0.0-dev.4"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^2.1.0","@vitest/coverage-v8":"^2.1.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","cpx2":"^3.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^3.0.2","source-map-loader":"^4.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^2.1.0","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"1.0.6","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.2.5","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"}}');
331773
+ module.exports = JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.6","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2020 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run --coverage","test:debug":"vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:^5.0.0-dev.6","@itwin/core-bentley":"workspace:^5.0.0-dev.6","@itwin/core-common":"workspace:^5.0.0-dev.6","@itwin/core-geometry":"workspace:^5.0.0-dev.6","@itwin/core-orbitgt":"workspace:^5.0.0-dev.6","@itwin/core-quantity":"workspace:^5.0.0-dev.6"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^2.1.0","@vitest/coverage-v8":"^2.1.0","babel-loader":"~8.2.5","babel-plugin-istanbul":"~6.1.1","cpx2":"^3.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^3.0.2","source-map-loader":"^4.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^2.1.0","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"1.0.6","webpack":"^5.76.0"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.2.5","@itwin/core-i18n":"workspace:*","@itwin/core-telemetry":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","meshoptimizer":"~0.20.0","wms-capabilities":"0.4.0"}}');
331595
331774
 
331596
331775
  /***/ }),
331597
331776
 
@@ -332510,7 +332689,7 @@ describe("Snapping", () => {
332510
332689
  }
332511
332690
  catch (err) {
332512
332691
  // This is what we expect if the cancellation occurs in time to really cancel the snap.
332513
- expect(err.message).to.equal("aborted");
332692
+ expect(err.message).to.equal("Unknown server response code.");
332514
332693
  }
332515
332694
  });
332516
332695
  });