@itwin/core-frontend 3.0.0-dev.131 → 3.0.0-dev.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/lib/cjs/SheetViewState.js +2 -0
  2. package/lib/cjs/SheetViewState.js.map +1 -1
  3. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  4. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  5. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  6. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  7. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  8. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  9. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
  10. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  11. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
  12. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  13. package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
  14. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  15. package/lib/cjs/render/RenderSystem.d.ts +0 -2
  16. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  17. package/lib/cjs/render/RenderSystem.js.map +1 -1
  18. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  19. package/lib/cjs/render/webgl/DrawCommand.js +3 -1
  20. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  21. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  22. package/lib/cjs/render/webgl/Mesh.js +1 -2
  23. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  24. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  25. package/lib/cjs/render/webgl/PlanarClassifier.js +1 -0
  26. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  27. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  28. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  29. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  30. package/lib/cjs/render/webgl/SceneCompositor.js +1 -0
  31. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  32. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +8 -7
  33. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  34. package/lib/cjs/render/webgl/ShaderBuilder.js +20 -18
  35. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  36. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  37. package/lib/cjs/render/webgl/SolarShadowMap.js +1 -0
  38. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  39. package/lib/cjs/render/webgl/System.d.ts +0 -3
  40. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  41. package/lib/cjs/render/webgl/System.js +0 -3
  42. package/lib/cjs/render/webgl/System.js.map +1 -1
  43. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  44. package/lib/cjs/render/webgl/Target.js +5 -0
  45. package/lib/cjs/render/webgl/Target.js.map +1 -1
  46. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  47. package/lib/cjs/render/webgl/Technique.js +74 -29
  48. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  49. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  50. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  51. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  52. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  53. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  54. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  55. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  56. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  57. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  58. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  59. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  60. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  61. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  62. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  63. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  64. package/lib/cjs/render/webgl/glsl/CopyStencil.js +6 -6
  65. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
  66. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +2 -2
  67. package/lib/cjs/render/webgl/glsl/Fragment.js +10 -10
  68. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  69. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +3 -3
  70. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
  72. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  73. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  74. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
  75. package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -1
  76. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  77. package/lib/cjs/render/webgl/glsl/Surface.js +5 -2
  78. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  79. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  80. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  81. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  82. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  83. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  84. package/lib/cjs/tile/B3dmReader.d.ts +1 -1
  85. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  86. package/lib/cjs/tile/B3dmReader.js +4 -4
  87. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  88. package/lib/cjs/tile/GltfReader.d.ts +3 -1
  89. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  90. package/lib/cjs/tile/GltfReader.js +33 -1
  91. package/lib/cjs/tile/GltfReader.js.map +1 -1
  92. package/lib/cjs/tile/I3dmReader.d.ts +1 -1
  93. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  94. package/lib/cjs/tile/I3dmReader.js +4 -4
  95. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  96. package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -1
  97. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  98. package/lib/cjs/tile/RealityModelTileTree.js +29 -10
  99. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  100. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  101. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  102. package/lib/cjs/tile/RealityTileLoader.js +3 -2
  103. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  104. package/lib/esm/SheetViewState.js +2 -0
  105. package/lib/esm/SheetViewState.js.map +1 -1
  106. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  107. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  108. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  109. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  110. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  111. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  112. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  113. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  114. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  115. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  116. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  117. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  118. package/lib/esm/render/RenderSystem.d.ts +0 -2
  119. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  120. package/lib/esm/render/RenderSystem.js.map +1 -1
  121. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  122. package/lib/esm/render/webgl/DrawCommand.js +3 -1
  123. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  124. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  125. package/lib/esm/render/webgl/Mesh.js +1 -2
  126. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  127. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  128. package/lib/esm/render/webgl/PlanarClassifier.js +1 -0
  129. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  130. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  131. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  132. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  133. package/lib/esm/render/webgl/SceneCompositor.js +1 -0
  134. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  135. package/lib/esm/render/webgl/ShaderBuilder.d.ts +8 -7
  136. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  137. package/lib/esm/render/webgl/ShaderBuilder.js +20 -18
  138. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  139. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  140. package/lib/esm/render/webgl/SolarShadowMap.js +1 -0
  141. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  142. package/lib/esm/render/webgl/System.d.ts +0 -3
  143. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  144. package/lib/esm/render/webgl/System.js +0 -3
  145. package/lib/esm/render/webgl/System.js.map +1 -1
  146. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  147. package/lib/esm/render/webgl/Target.js +5 -0
  148. package/lib/esm/render/webgl/Target.js.map +1 -1
  149. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  150. package/lib/esm/render/webgl/Technique.js +74 -29
  151. package/lib/esm/render/webgl/Technique.js.map +1 -1
  152. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  153. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  154. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  155. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  156. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  157. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  158. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  159. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  160. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  161. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  162. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  163. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  164. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  165. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  166. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  167. package/lib/esm/render/webgl/glsl/CopyStencil.js +6 -6
  168. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  169. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +2 -2
  170. package/lib/esm/render/webgl/glsl/Fragment.js +10 -10
  171. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  172. package/lib/esm/render/webgl/glsl/PlanarClassification.js +3 -3
  173. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  174. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
  175. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  176. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  177. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  178. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  179. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  180. package/lib/esm/render/webgl/glsl/Surface.js +5 -2
  181. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  182. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  183. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  184. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  185. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  186. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  187. package/lib/esm/tile/B3dmReader.d.ts +1 -1
  188. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  189. package/lib/esm/tile/B3dmReader.js +4 -4
  190. package/lib/esm/tile/B3dmReader.js.map +1 -1
  191. package/lib/esm/tile/GltfReader.d.ts +3 -1
  192. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  193. package/lib/esm/tile/GltfReader.js +33 -1
  194. package/lib/esm/tile/GltfReader.js.map +1 -1
  195. package/lib/esm/tile/I3dmReader.d.ts +1 -1
  196. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  197. package/lib/esm/tile/I3dmReader.js +4 -4
  198. package/lib/esm/tile/I3dmReader.js.map +1 -1
  199. package/lib/esm/tile/RealityModelTileTree.d.ts +2 -1
  200. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  201. package/lib/esm/tile/RealityModelTileTree.js +30 -11
  202. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  203. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  204. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  205. package/lib/esm/tile/RealityTileLoader.js +3 -2
  206. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  207. package/package.json +22 -22
@@ -27,6 +27,7 @@ export class RealityTileLoader {
27
27
  // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).
28
28
  return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);
29
29
  }
30
+ get wantDeduplicatedVertices() { return false; }
30
31
  get _batchType() { return BatchType.Primary; }
31
32
  get _loadEdges() { return true; }
32
33
  getBatchIdMap() { return undefined; }
@@ -61,10 +62,10 @@ export class RealityTileLoader {
61
62
  }
62
63
  return { graphic };
63
64
  case TileFormat.B3dm:
64
- reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap());
65
+ reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);
65
66
  break;
66
67
  case TileFormat.I3dm:
67
- reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled);
68
+ reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);
68
69
  break;
69
70
  case TileFormat.Cmpt:
70
71
  const header = new CompositeTileHeader(streamBuffer);
@@ -1 +1 @@
1
- {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EACL,UAAU,EAAoB,8BAA8B,EAAc,UAAU,EAAE,yBAAyB,GAEhH,MAAM,YAAY,CAAC;AAEpB,MAAM,wBAAwB,GAAG,8BAA8B,CAAC,EAAE,CAAC,CAAC;AAEpE,MAAM,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;AAC7C,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,OAAgB,iBAAiB;IAKrC;QAJQ,yBAAoB,GAAG,KAAK,CAAC;QAKnC,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC;QAC/E,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC;IAC/E,CAAC;IAEM,mBAAmB,CAAC,IAAU,EAAE,SAA6B;QAClE,8HAA8H;QAC9H,OAAO,iBAAiB,CAAC,+BAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACvG,CAAC;IAQD,IAAc,UAAU,KAAgB,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,IAAc,UAAU,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC7C,aAAa,KAAmC,OAAO,SAAS,CAAC,CAAC,CAAC;IAC1E,IAAW,kBAAkB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAW,mBAAmB,KAAc,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/E,IAAW,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,aAAa,CAAC,KAAW,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IAErD,oBAAoB,CAAC,QAAgB,EAAE,KAAmB,IAAY,OAAO,QAAQ,CAAC,CAAC,CAAC;IAE/F,iIAAiI;IAC1H,KAAK,CAAC,eAAe,CAAC,IAAU,EAAE,IAA8B,EAAE,MAAoB,EAAE,UAA0B;QACvH,MAAM,CAAC,IAAI,YAAY,UAAU,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAmB,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/F,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,IAAiB,EAAE,YAAwB,EAAE,MAAoB,EAAE,UAA0B;QAClI,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;QACvC,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC;QAE/B,IAAI,SAAS,KAAK,UAAU;YAC1B,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAErC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5D,IAAI,MAA8B,CAAC;QACnC,QAAQ,MAAM,EAAE;YACd,KAAK,UAAU,CAAC,IAAI;gBAClB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,OAAO,GAAG,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;gBACxG,IAAI,OAAO,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;oBACvE,MAAM,eAAe,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;oBAChD,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC7B,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;iBACtE;gBAED,OAAO,EAAE,OAAO,EAAE,CAAC;YAErB,KAAK,UAAU,CAAC,IAAI;gBAClB,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBACtL,MAAM;YACR,KAAK,UAAU,CAAC,IAAI;gBAClB,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC7H,MAAM;YACR,KAAK,UAAU,CAAC,IAAI;gBAClB,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;oBACzC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAI,0BAA0B;oBACtD,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;oBAC1C,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC;oBACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;oBAC5F,IAAI,MAAM,CAAC,OAAO;wBAChB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC7B,YAAY,CAAC,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;iBAChD;gBACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAEhI;gBACE,MAAM,CAAC,KAAK,EAAE,uBAAuB,MAAM,EAAE,CAAC,CAAC;gBAC/C,MAAM;SACT;QAED,IAAI,OAAO,GAAgB,EAAE,CAAC;QAC9B,IAAI,SAAS,KAAK,MAAM,EAAE;YACxB,IAAI;gBACF,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;aAC/B;YAAC,OAAO,IAAI,EAAE;gBACb,iEAAiE;gBACjE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aACvB;SACF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAW,iBAAiB,KAAwB,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAE/E,MAAM,CAAC,+BAA+B,CAAC,IAAU,EAAE,SAA6B,EAAE,QAAmB;QAC1G,kCAAkC;QAClC,oDAAoD;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAC7E,IAAI,WAAW,GAAG,GAAG,CAAC;QACtB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YAC7B,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;SAC/C;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfReader, I3dmReader, readPointCloudTileContent, RealityTile, Tile, TileContent,\r\n TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor() {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = new ByteStream(blob.buffer);\r\n return this.loadTileContentFromStream(tile as RealityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n public async loadTileContentFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | undefined;\r\n switch (format) {\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n let graphic = readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);\r\n if (graphic && tile.transformToRoot && !tile.transformToRoot.isIdentity) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n graphic = system.createBranch(transformBranch, tile.transformToRoot);\r\n }\r\n\r\n return { graphic };\r\n\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap());\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled);\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid) return {};\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.nextUint32;\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileClosestToEyePriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Prioritize tiles closer to eye.\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const center = location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n let minDistance = 1.0;\r\n for (const viewport of viewports) {\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n const distance = 1.0 - npc.z;\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityTileLoader.js","sourceRoot":"","sources":["../../../src/tile/RealityTileLoader.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Tiles\r\n */\r\n\r\nimport { assert, ByteStream } from \"@itwin/core-bentley\";\r\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\r\nimport { BatchType, CompositeTileHeader, TileFormat, ViewFlagOverrides } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { GraphicBranch } from \"../render/GraphicBranch\";\r\nimport { RenderSystem } from \"../render/RenderSystem\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport {\r\n B3dmReader, BatchedTileIdMap, createDefaultViewFlagOverrides, GltfReader, I3dmReader, readPointCloudTileContent, RealityTile, Tile, TileContent,\r\n TileDrawArgs, TileLoadPriority, TileRequest, TileRequestChannel,\r\n} from \"./internal\";\r\n\r\nconst defaultViewFlagOverrides = createDefaultViewFlagOverrides({});\r\n\r\nconst scratchTileCenterWorld = new Point3d();\r\nconst scratchTileCenterView = new Point3d();\r\n\r\n/** Serves as a \"handler\" for a specific type of [[TileTree]]. Its primary responsibilities involve loading tile content.\r\n * @internal\r\n */\r\nexport abstract class RealityTileLoader {\r\n private _containsPointClouds = false;\r\n public readonly preloadRealityParentDepth: number;\r\n public readonly preloadRealityParentSkip: number;\r\n\r\n public constructor() {\r\n this.preloadRealityParentDepth = IModelApp.tileAdmin.contextPreloadParentDepth;\r\n this.preloadRealityParentSkip = IModelApp.tileAdmin.contextPreloadParentSkip;\r\n }\r\n\r\n public computeTilePriority(tile: Tile, viewports: Iterable<Viewport>): number {\r\n // ###TODO: Handle case where tile tree reference(s) have a transform different from tree's (background map with ground bias).\r\n return RealityTileLoader.computeTileClosestToEyePriority(tile, viewports, tile.tree.iModelTransform);\r\n }\r\n\r\n public abstract loadChildren(tile: RealityTile): Promise<Tile[] | undefined>;\r\n public abstract getRequestChannel(tile: Tile): TileRequestChannel;\r\n public abstract requestTileContent(tile: Tile, isCanceled: () => boolean): Promise<TileRequest.Response>;\r\n public get wantDeduplicatedVertices(): boolean { return false; }\r\n public abstract get maxDepth(): number;\r\n public abstract get minDepth(): number;\r\n public abstract get priority(): TileLoadPriority;\r\n protected get _batchType(): BatchType { return BatchType.Primary; }\r\n protected get _loadEdges(): boolean { return true; }\r\n public getBatchIdMap(): BatchedTileIdMap | undefined { return undefined; }\r\n public get isContentUnbounded(): boolean { return false; }\r\n public get containsPointClouds(): boolean { return this._containsPointClouds; }\r\n public get parentsAndChildrenExclusive(): boolean { return true; }\r\n public forceTileLoad(_tile: Tile): boolean { return false; }\r\n\r\n public processSelectedTiles(selected: Tile[], _args: TileDrawArgs): Tile[] { return selected; }\r\n\r\n // NB: The isCanceled arg is chiefly for tests...in usual case it just returns false if the tile is no longer in 'loading' state.\r\n public async loadTileContent(tile: Tile, data: TileRequest.ResponseData, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n assert(data instanceof Uint8Array);\r\n const blob = data;\r\n const streamBuffer = new ByteStream(blob.buffer);\r\n return this.loadTileContentFromStream(tile as RealityTile, streamBuffer, system, isCanceled);\r\n }\r\n\r\n public async loadTileContentFromStream(tile: RealityTile, streamBuffer: ByteStream, system: RenderSystem, isCanceled?: () => boolean): Promise<TileContent> {\r\n const position = streamBuffer.curPos;\r\n const format = streamBuffer.nextUint32;\r\n streamBuffer.curPos = position;\r\n\r\n if (undefined === isCanceled)\r\n isCanceled = () => !tile.isLoading;\r\n\r\n const { is3d, yAxisUp, iModel, modelId } = tile.realityRoot;\r\n let reader: GltfReader | undefined;\r\n switch (format) {\r\n case TileFormat.Pnts:\r\n this._containsPointClouds = true;\r\n let graphic = readPointCloudTileContent(streamBuffer, iModel, modelId, is3d, tile.contentRange, system);\r\n if (graphic && tile.transformToRoot && !tile.transformToRoot.isIdentity) {\r\n const transformBranch = new GraphicBranch(true);\r\n transformBranch.add(graphic);\r\n graphic = system.createBranch(transformBranch, tile.transformToRoot);\r\n }\r\n\r\n return { graphic };\r\n\r\n case TileFormat.B3dm:\r\n reader = B3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, tile.center, tile.transformToRoot, isCanceled, this.getBatchIdMap(), this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.I3dm:\r\n reader = I3dmReader.create(streamBuffer, iModel, modelId, is3d, tile.contentRange, system, yAxisUp, tile.isLeaf, isCanceled, undefined, this.wantDeduplicatedVertices);\r\n break;\r\n case TileFormat.Cmpt:\r\n const header = new CompositeTileHeader(streamBuffer);\r\n if (!header.isValid) return {};\r\n const branch = new GraphicBranch(true);\r\n for (let i = 0; i < header.tileCount; i++) {\r\n const tilePosition = streamBuffer.curPos;\r\n streamBuffer.advance(8); // Skip magic and version.\r\n const tileBytes = streamBuffer.nextUint32;\r\n streamBuffer.curPos = tilePosition;\r\n const result = await this.loadTileContentFromStream(tile, streamBuffer, system, isCanceled);\r\n if (result.graphic)\r\n branch.add(result.graphic);\r\n streamBuffer.curPos = tilePosition + tileBytes;\r\n }\r\n return { graphic: branch.isEmpty ? undefined : system.createBranch(branch, Transform.createIdentity()), isLeaf: tile.isLeaf };\r\n\r\n default:\r\n assert(false, `unknown tile format ${format}`);\r\n break;\r\n }\r\n\r\n let content: TileContent = {};\r\n if (undefined !== reader) {\r\n try {\r\n content = await reader.read();\r\n } catch (_err) {\r\n // Failure to load should prevent us from trying to load children\r\n content.isLeaf = true;\r\n }\r\n }\r\n\r\n return content;\r\n }\r\n\r\n public get viewFlagOverrides(): ViewFlagOverrides { return defaultViewFlagOverrides; }\r\n\r\n public static computeTileClosestToEyePriority(tile: Tile, viewports: Iterable<Viewport>, location: Transform): number {\r\n // Prioritize tiles closer to eye.\r\n // NB: In NPC coords, 0 = far plane, 1 = near plane.\r\n const center = location.multiplyPoint3d(tile.center, scratchTileCenterWorld);\r\n let minDistance = 1.0;\r\n for (const viewport of viewports) {\r\n const npc = viewport.worldToNpc(center, scratchTileCenterView);\r\n const distance = 1.0 - npc.z;\r\n minDistance = Math.min(distance, minDistance);\r\n }\r\n\r\n return minDistance;\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-frontend",
3
- "version": "3.0.0-dev.131",
3
+ "version": "3.0.0-dev.136",
4
4
  "description": "iTwin.js frontend components",
5
5
  "main": "lib/cjs/core-frontend.js",
6
6
  "module": "lib/esm/core-frontend.js",
@@ -23,31 +23,31 @@
23
23
  "url": "http://www.bentley.com"
24
24
  },
25
25
  "peerDependencies": {
26
- "@bentley/itwin-client": "^3.0.0-dev.131",
27
- "@itwin/appui-abstract": "^3.0.0-dev.131",
28
- "@itwin/core-bentley": "^3.0.0-dev.131",
29
- "@itwin/core-common": "^3.0.0-dev.131",
30
- "@itwin/core-geometry": "^3.0.0-dev.131",
31
- "@itwin/core-orbitgt": "^3.0.0-dev.131",
32
- "@itwin/core-quantity": "^3.0.0-dev.131",
33
- "@itwin/webgl-compatibility": "^3.0.0-dev.131"
26
+ "@bentley/itwin-client": "^3.0.0-dev.136",
27
+ "@itwin/appui-abstract": "^3.0.0-dev.136",
28
+ "@itwin/core-bentley": "^3.0.0-dev.136",
29
+ "@itwin/core-common": "^3.0.0-dev.136",
30
+ "@itwin/core-geometry": "^3.0.0-dev.136",
31
+ "@itwin/core-orbitgt": "^3.0.0-dev.136",
32
+ "@itwin/core-quantity": "^3.0.0-dev.136",
33
+ "@itwin/webgl-compatibility": "^3.0.0-dev.136"
34
34
  },
35
35
  "//devDependencies": [
36
36
  "NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install",
37
37
  "NOTE: All tools used by scripts in this package must be listed as devDependencies"
38
38
  ],
39
39
  "devDependencies": {
40
- "@bentley/itwin-client": "3.0.0-dev.131",
41
- "@itwin/appui-abstract": "3.0.0-dev.131",
42
- "@itwin/build-tools": "3.0.0-dev.131",
43
- "@itwin/core-bentley": "3.0.0-dev.131",
44
- "@itwin/core-common": "3.0.0-dev.131",
45
- "@itwin/core-geometry": "3.0.0-dev.131",
46
- "@itwin/core-orbitgt": "3.0.0-dev.131",
47
- "@itwin/core-quantity": "3.0.0-dev.131",
48
- "@itwin/certa": "3.0.0-dev.131",
49
- "@itwin/eslint-plugin": "3.0.0-dev.131",
50
- "@itwin/webgl-compatibility": "3.0.0-dev.131",
40
+ "@bentley/itwin-client": "3.0.0-dev.136",
41
+ "@itwin/appui-abstract": "3.0.0-dev.136",
42
+ "@itwin/build-tools": "3.0.0-dev.136",
43
+ "@itwin/core-bentley": "3.0.0-dev.136",
44
+ "@itwin/core-common": "3.0.0-dev.136",
45
+ "@itwin/core-geometry": "3.0.0-dev.136",
46
+ "@itwin/core-orbitgt": "3.0.0-dev.136",
47
+ "@itwin/core-quantity": "3.0.0-dev.136",
48
+ "@itwin/certa": "3.0.0-dev.136",
49
+ "@itwin/eslint-plugin": "3.0.0-dev.136",
50
+ "@itwin/webgl-compatibility": "3.0.0-dev.136",
51
51
  "@types/chai": "^4.1.4",
52
52
  "@types/chai-as-promised": "^7",
53
53
  "@types/mocha": "^8.2.2",
@@ -72,8 +72,8 @@
72
72
  "NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"
73
73
  ],
74
74
  "dependencies": {
75
- "@itwin/core-i18n": "3.0.0-dev.131",
76
- "@itwin/core-telemetry": "3.0.0-dev.131",
75
+ "@itwin/core-i18n": "3.0.0-dev.136",
76
+ "@itwin/core-telemetry": "3.0.0-dev.136",
77
77
  "fuse.js": "^3.3.0",
78
78
  "semver": "^5.5.0",
79
79
  "wms-capabilities": "0.4.0",