@itwin/core-frontend 4.1.0-dev.2 → 4.1.0-dev.20

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 (834) hide show
  1. package/CHANGELOG.md +44 -1
  2. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  3. package/lib/cjs/AccuSnap.js +8 -0
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/BriefcaseTxns.d.ts +2 -2
  6. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseTxns.js +3 -3
  8. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  9. package/lib/cjs/CheckpointConnection.js +1 -1
  10. package/lib/cjs/CheckpointConnection.js.map +1 -1
  11. package/lib/cjs/DrawingViewState.js +1 -1
  12. package/lib/cjs/DrawingViewState.js.map +1 -1
  13. package/lib/cjs/ElementLocateManager.js +1 -1
  14. package/lib/cjs/ElementLocateManager.js.map +1 -1
  15. package/lib/cjs/EnvironmentDecorations.js +1 -1
  16. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  17. package/lib/cjs/GeoServices.js +1 -1
  18. package/lib/cjs/GeoServices.js.map +1 -1
  19. package/lib/cjs/GraphicalEditingScope.d.ts +2 -2
  20. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  21. package/lib/cjs/GraphicalEditingScope.js +1 -1
  22. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  23. package/lib/cjs/IModelApp.js +1 -1
  24. package/lib/cjs/IModelApp.js.map +1 -1
  25. package/lib/cjs/IModelConnection.d.ts +3 -3
  26. package/lib/cjs/IModelConnection.js +4 -4
  27. package/lib/cjs/IModelConnection.js.map +1 -1
  28. package/lib/cjs/IpcApp.d.ts.map +1 -1
  29. package/lib/cjs/IpcApp.js +3 -3
  30. package/lib/cjs/IpcApp.js.map +1 -1
  31. package/lib/cjs/LocalhostIpcApp.js +1 -1
  32. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  33. package/lib/cjs/Marker.d.ts +1 -1
  34. package/lib/cjs/Marker.d.ts.map +1 -1
  35. package/lib/cjs/Marker.js +3 -3
  36. package/lib/cjs/Marker.js.map +1 -1
  37. package/lib/cjs/NativeApp.d.ts.map +1 -1
  38. package/lib/cjs/NativeApp.js +4 -4
  39. package/lib/cjs/NativeApp.js.map +1 -1
  40. package/lib/cjs/NoRenderApp.d.ts +1 -1
  41. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  42. package/lib/cjs/NoRenderApp.js +1 -1
  43. package/lib/cjs/NoRenderApp.js.map +1 -1
  44. package/lib/cjs/RealityDataSource.js +1 -1
  45. package/lib/cjs/RealityDataSource.js.map +1 -1
  46. package/lib/cjs/RealityDataSourceContextShareImpl.js +1 -1
  47. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  48. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  49. package/lib/cjs/SheetViewState.js +2 -2
  50. package/lib/cjs/SheetViewState.js.map +1 -1
  51. package/lib/cjs/Sprites.js +2 -2
  52. package/lib/cjs/Sprites.js.map +1 -1
  53. package/lib/cjs/ViewingSpace.js +1 -1
  54. package/lib/cjs/ViewingSpace.js.map +1 -1
  55. package/lib/cjs/Viewport.d.ts +1 -1
  56. package/lib/cjs/Viewport.d.ts.map +1 -1
  57. package/lib/cjs/Viewport.js +1 -1
  58. package/lib/cjs/Viewport.js.map +1 -1
  59. package/lib/cjs/common/FrontendLoggerCategory.d.ts.map +1 -0
  60. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -0
  61. package/lib/cjs/common/ImageUtil.d.ts.map +1 -0
  62. package/lib/cjs/common/ImageUtil.js.map +1 -0
  63. package/lib/cjs/common/ViewRect.d.ts.map +1 -0
  64. package/lib/cjs/common/ViewRect.js.map +1 -0
  65. package/lib/cjs/common/WorkerProxy.d.ts +73 -0
  66. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -0
  67. package/lib/cjs/common/WorkerProxy.js +54 -0
  68. package/lib/cjs/common/WorkerProxy.js.map +1 -0
  69. package/lib/{esm → cjs/common}/gltf/GltfModel.d.ts +1 -1
  70. package/lib/cjs/common/gltf/GltfModel.d.ts.map +1 -0
  71. package/lib/cjs/common/gltf/GltfModel.js.map +1 -0
  72. package/lib/cjs/common/gltf/GltfParser.d.ts.map +1 -0
  73. package/lib/cjs/common/gltf/GltfParser.js.map +1 -0
  74. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -0
  75. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -0
  76. package/lib/cjs/common/imdl/ImdlModel.d.ts +186 -0
  77. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -0
  78. package/lib/cjs/common/imdl/ImdlModel.js +71 -0
  79. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -0
  80. package/lib/cjs/common/imdl/ImdlSchema.d.ts +380 -0
  81. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -0
  82. package/lib/cjs/common/imdl/ImdlSchema.js +10 -0
  83. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -0
  84. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +45 -0
  85. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  86. package/lib/cjs/common/imdl/ParseImdlDocument.js +995 -0
  87. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -0
  88. package/lib/cjs/common/render/AnimationNodeId.d.ts +11 -0
  89. package/lib/cjs/common/render/AnimationNodeId.d.ts.map +1 -0
  90. package/lib/cjs/common/render/AnimationNodeId.js +19 -0
  91. package/lib/cjs/common/render/AnimationNodeId.js.map +1 -0
  92. package/lib/{esm/render/RenderMaterial.d.ts → cjs/common/render/MaterialParams.d.ts} +7 -20
  93. package/lib/cjs/common/render/MaterialParams.d.ts.map +1 -0
  94. package/lib/cjs/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  95. package/lib/cjs/common/render/MaterialParams.js.map +1 -0
  96. package/lib/cjs/common/render/TextureParams.d.ts +30 -0
  97. package/lib/cjs/common/render/TextureParams.d.ts.map +1 -0
  98. package/lib/cjs/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  99. package/lib/cjs/common/render/TextureParams.js.map +1 -0
  100. package/lib/{esm → cjs/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  101. package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  102. package/lib/cjs/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  103. package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -0
  104. package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +1 -0
  105. package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -0
  106. package/lib/cjs/common/render/primitives/EdgeParams.d.ts +94 -0
  107. package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +1 -0
  108. package/lib/cjs/common/render/primitives/EdgeParams.js +46 -0
  109. package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -0
  110. package/lib/cjs/common/render/primitives/MeshParams.d.ts +20 -0
  111. package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +1 -0
  112. package/lib/cjs/common/render/primitives/MeshParams.js +10 -0
  113. package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -0
  114. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts +29 -0
  115. package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  116. package/lib/cjs/common/render/primitives/MeshPrimitive.js +18 -0
  117. package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -0
  118. package/lib/cjs/common/render/primitives/PointStringParams.d.ts +14 -0
  119. package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +1 -0
  120. package/lib/cjs/common/render/primitives/PointStringParams.js +10 -0
  121. package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -0
  122. package/lib/cjs/common/render/primitives/PolylineParams.d.ts +29 -0
  123. package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +1 -0
  124. package/lib/cjs/common/render/primitives/PolylineParams.js +10 -0
  125. package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -0
  126. package/lib/{esm → cjs/common}/render/primitives/SurfaceParams.d.ts +1 -1
  127. package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  128. package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -0
  129. package/lib/cjs/common/render/primitives/VertexIndices.d.ts +26 -0
  130. package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +1 -0
  131. package/lib/cjs/common/render/primitives/VertexIndices.js +64 -0
  132. package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -0
  133. package/lib/cjs/common/render/primitives/VertexTable.d.ts +45 -0
  134. package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +1 -0
  135. package/lib/cjs/common/render/primitives/VertexTable.js +38 -0
  136. package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -0
  137. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  138. package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  139. package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.js +46 -35
  140. package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -0
  141. package/lib/cjs/core-frontend.d.ts +26 -6
  142. package/lib/cjs/core-frontend.d.ts.map +1 -1
  143. package/lib/cjs/core-frontend.js +26 -6
  144. package/lib/cjs/core-frontend.js.map +1 -1
  145. package/lib/cjs/extension/ExtensionAdmin.js +1 -1
  146. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  147. package/lib/cjs/quantity-formatting/QuantityFormatter.js +1 -1
  148. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  149. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts +24 -0
  150. package/lib/cjs/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  151. package/lib/cjs/render/CreateRenderMaterialArgs.js +10 -0
  152. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -0
  153. package/lib/{esm/render/RenderTexture.d.ts → cjs/render/CreateTextureArgs.d.ts} +4 -28
  154. package/lib/cjs/render/CreateTextureArgs.d.ts.map +1 -0
  155. package/lib/cjs/render/CreateTextureArgs.js +10 -0
  156. package/lib/cjs/render/CreateTextureArgs.js.map +1 -0
  157. package/lib/cjs/render/GraphicBranch.d.ts +1 -7
  158. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  159. package/lib/cjs/render/GraphicBranch.js +1 -9
  160. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  161. package/lib/cjs/render/MockRender.d.ts +4 -4
  162. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  163. package/lib/cjs/render/MockRender.js +1 -1
  164. package/lib/cjs/render/MockRender.js.map +1 -1
  165. package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
  166. package/lib/cjs/render/ParticleCollectionBuilder.js +5 -5
  167. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  168. package/lib/cjs/render/RealityMeshParams.js +2 -2
  169. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  170. package/lib/cjs/render/RenderSystem.d.ts +7 -6
  171. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  172. package/lib/cjs/render/RenderSystem.js +6 -6
  173. package/lib/cjs/render/RenderSystem.js.map +1 -1
  174. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  175. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  176. package/lib/cjs/render/RenderTarget.js.map +1 -1
  177. package/lib/cjs/render/VisibleFeature.d.ts +1 -1
  178. package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
  179. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  180. package/lib/cjs/render/primitives/EdgeParams.d.ts +2 -89
  181. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  182. package/lib/cjs/render/primitives/EdgeParams.js +35 -71
  183. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  184. package/lib/cjs/render/primitives/PointStringParams.d.ts +2 -11
  185. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -1
  186. package/lib/cjs/render/primitives/PointStringParams.js +26 -30
  187. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  188. package/lib/cjs/render/primitives/Polyface.d.ts +1 -1
  189. package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
  190. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  191. package/lib/cjs/render/primitives/PolylineParams.d.ts +4 -36
  192. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
  193. package/lib/cjs/render/primitives/PolylineParams.js +29 -40
  194. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  195. package/lib/cjs/render/primitives/Strokes.d.ts +1 -1
  196. package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
  197. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  198. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts +28 -0
  199. package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  200. package/lib/cjs/render/primitives/{VertexTable.js → VertexTableBuilder.js} +61 -175
  201. package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -0
  202. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  203. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  204. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  205. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  206. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  207. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -1
  208. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  209. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  210. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  211. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +1 -1
  212. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  213. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +1 -1
  214. package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  215. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  216. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  217. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  218. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +3 -2
  219. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  220. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
  221. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  222. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +9 -14
  223. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  224. package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
  225. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  226. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  227. package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
  228. package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  230. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
  231. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
  232. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  233. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  234. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  235. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  236. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  237. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  238. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  239. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  240. package/lib/cjs/render/webgl/Material.js.map +1 -1
  241. package/lib/cjs/render/webgl/Mesh.d.ts +2 -2
  242. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  243. package/lib/cjs/render/webgl/Mesh.js +1 -1
  244. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  245. package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
  246. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  247. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  248. package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
  249. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  250. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  251. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  252. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  253. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  254. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  255. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  256. package/lib/cjs/render/webgl/RenderCommands.js +1 -1
  257. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  258. package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
  259. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  260. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  261. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
  262. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  263. package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
  264. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  265. package/lib/cjs/render/webgl/System.d.ts +7 -6
  266. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  267. package/lib/cjs/render/webgl/System.js +1 -1
  268. package/lib/cjs/render/webgl/System.js.map +1 -1
  269. package/lib/cjs/render/webgl/Target.d.ts +1 -1
  270. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  271. package/lib/cjs/render/webgl/Target.js +4 -4
  272. package/lib/cjs/render/webgl/Target.js.map +1 -1
  273. package/lib/cjs/render/webgl/Texture.d.ts +1 -1
  274. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  275. package/lib/cjs/render/webgl/Texture.js +1 -1
  276. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  277. package/lib/cjs/render/webgl/UniformHandle.js +1 -1
  278. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  279. package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
  280. package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
  281. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  282. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  283. package/lib/cjs/render-primitives.d.ts +1 -4
  284. package/lib/cjs/render-primitives.d.ts.map +1 -1
  285. package/lib/cjs/render-primitives.js +1 -4
  286. package/lib/cjs/render-primitives.js.map +1 -1
  287. package/lib/cjs/tile/B3dmReader.d.ts +1 -1
  288. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  289. package/lib/cjs/tile/B3dmReader.js +1 -1
  290. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  291. package/lib/cjs/tile/GltfReader.d.ts +3 -3
  292. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  293. package/lib/cjs/tile/GltfReader.js +12 -21
  294. package/lib/cjs/tile/GltfReader.js.map +1 -1
  295. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  296. package/lib/cjs/tile/IModelTile.js +11 -17
  297. package/lib/cjs/tile/IModelTile.js.map +1 -1
  298. package/lib/cjs/tile/IModelTileTree.d.ts +3 -1
  299. package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
  300. package/lib/cjs/tile/IModelTileTree.js +14 -0
  301. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  302. package/lib/cjs/tile/ImdlDecoder.d.ts +52 -0
  303. package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -0
  304. package/lib/cjs/tile/ImdlDecoder.js +35 -0
  305. package/lib/cjs/tile/ImdlDecoder.js.map +1 -0
  306. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +19 -0
  307. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  308. package/lib/cjs/tile/ImdlGraphicsCreator.js +328 -0
  309. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -0
  310. package/lib/cjs/tile/ImdlParser.d.ts +26 -0
  311. package/lib/cjs/tile/ImdlParser.d.ts.map +1 -0
  312. package/lib/cjs/tile/ImdlParser.js +72 -0
  313. package/lib/cjs/tile/ImdlParser.js.map +1 -0
  314. package/lib/cjs/tile/ImdlReader.d.ts +16 -420
  315. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  316. package/lib/cjs/tile/ImdlReader.js +69 -902
  317. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  318. package/lib/cjs/tile/OPCFormatInterpreter.js +1 -1
  319. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  320. package/lib/cjs/tile/PntsReader.js +1 -1
  321. package/lib/cjs/tile/PntsReader.js.map +1 -1
  322. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  323. package/lib/cjs/tile/PrimaryTileTree.js +2 -1
  324. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  325. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  326. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  327. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  328. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  329. package/lib/cjs/tile/TileAdmin.d.ts +7 -0
  330. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  331. package/lib/cjs/tile/TileAdmin.js +1 -0
  332. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  333. package/lib/cjs/tile/internal.d.ts +3 -0
  334. package/lib/cjs/tile/internal.d.ts.map +1 -1
  335. package/lib/cjs/tile/internal.js +3 -0
  336. package/lib/cjs/tile/internal.js.map +1 -1
  337. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +8 -1
  338. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  339. package/lib/cjs/tile/map/ArcGisUtilities.js +21 -0
  340. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  341. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  342. package/lib/cjs/tile/map/MapLayerImageryFormats.js +3 -0
  343. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  344. package/lib/cjs/tile/map/MapLayerSources.d.ts +4 -1
  345. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  346. package/lib/cjs/tile/map/MapLayerSources.js +3 -0
  347. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  348. package/lib/cjs/tile/map/MapTile.d.ts +6 -1
  349. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  350. package/lib/cjs/tile/map/MapTile.js +8 -7
  351. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  352. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  353. package/lib/cjs/tile/map/MapTileTree.js +8 -2
  354. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  355. package/lib/cjs/tools/ElementSetTool.js +1 -1
  356. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  357. package/lib/cjs/tools/SelectTool.js +1 -1
  358. package/lib/cjs/tools/SelectTool.js.map +1 -1
  359. package/lib/cjs/tools/ToolAdmin.js +1 -1
  360. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  361. package/lib/cjs/tools/ViewTool.js +1 -1
  362. package/lib/cjs/tools/ViewTool.js.map +1 -1
  363. package/lib/cjs/workers/ImdlParser/Worker.d.ts +20 -0
  364. package/lib/cjs/workers/ImdlParser/Worker.d.ts.map +1 -0
  365. package/lib/cjs/workers/ImdlParser/Worker.js +32 -0
  366. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -0
  367. package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -0
  368. package/lib/cjs/workers/RegisterWorker.d.ts +9 -0
  369. package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -0
  370. package/lib/cjs/workers/RegisterWorker.js +36 -0
  371. package/lib/cjs/workers/RegisterWorker.js.map +1 -0
  372. package/lib/esm/AccuSnap.d.ts.map +1 -1
  373. package/lib/esm/AccuSnap.js +8 -0
  374. package/lib/esm/AccuSnap.js.map +1 -1
  375. package/lib/esm/BriefcaseTxns.d.ts +2 -2
  376. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  377. package/lib/esm/BriefcaseTxns.js +3 -3
  378. package/lib/esm/BriefcaseTxns.js.map +1 -1
  379. package/lib/esm/CheckpointConnection.js +1 -1
  380. package/lib/esm/CheckpointConnection.js.map +1 -1
  381. package/lib/esm/DrawingViewState.js +1 -1
  382. package/lib/esm/DrawingViewState.js.map +1 -1
  383. package/lib/esm/ElementLocateManager.js +1 -1
  384. package/lib/esm/ElementLocateManager.js.map +1 -1
  385. package/lib/esm/EnvironmentDecorations.js +1 -1
  386. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  387. package/lib/esm/GeoServices.js +1 -1
  388. package/lib/esm/GeoServices.js.map +1 -1
  389. package/lib/esm/GraphicalEditingScope.d.ts +2 -2
  390. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  391. package/lib/esm/GraphicalEditingScope.js +2 -2
  392. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  393. package/lib/esm/IModelApp.js +1 -1
  394. package/lib/esm/IModelApp.js.map +1 -1
  395. package/lib/esm/IModelConnection.d.ts +3 -3
  396. package/lib/esm/IModelConnection.js +4 -4
  397. package/lib/esm/IModelConnection.js.map +1 -1
  398. package/lib/esm/IpcApp.d.ts.map +1 -1
  399. package/lib/esm/IpcApp.js +4 -4
  400. package/lib/esm/IpcApp.js.map +1 -1
  401. package/lib/esm/LocalhostIpcApp.js +2 -2
  402. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  403. package/lib/esm/Marker.d.ts +1 -1
  404. package/lib/esm/Marker.d.ts.map +1 -1
  405. package/lib/esm/Marker.js +3 -3
  406. package/lib/esm/Marker.js.map +1 -1
  407. package/lib/esm/NativeApp.d.ts.map +1 -1
  408. package/lib/esm/NativeApp.js +5 -5
  409. package/lib/esm/NativeApp.js.map +1 -1
  410. package/lib/esm/NoRenderApp.d.ts +1 -1
  411. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  412. package/lib/esm/NoRenderApp.js +1 -1
  413. package/lib/esm/NoRenderApp.js.map +1 -1
  414. package/lib/esm/RealityDataSource.js +1 -1
  415. package/lib/esm/RealityDataSource.js.map +1 -1
  416. package/lib/esm/RealityDataSourceContextShareImpl.js +1 -1
  417. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  418. package/lib/esm/SheetViewState.d.ts.map +1 -1
  419. package/lib/esm/SheetViewState.js +2 -2
  420. package/lib/esm/SheetViewState.js.map +1 -1
  421. package/lib/esm/Sprites.js +2 -2
  422. package/lib/esm/Sprites.js.map +1 -1
  423. package/lib/esm/ViewingSpace.js +1 -1
  424. package/lib/esm/ViewingSpace.js.map +1 -1
  425. package/lib/esm/Viewport.d.ts +1 -1
  426. package/lib/esm/Viewport.d.ts.map +1 -1
  427. package/lib/esm/Viewport.js +1 -1
  428. package/lib/esm/Viewport.js.map +1 -1
  429. package/lib/esm/common/FrontendLoggerCategory.d.ts.map +1 -0
  430. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -0
  431. package/lib/esm/common/ImageUtil.d.ts.map +1 -0
  432. package/lib/esm/common/ImageUtil.js.map +1 -0
  433. package/lib/esm/common/ViewRect.d.ts.map +1 -0
  434. package/lib/esm/common/ViewRect.js.map +1 -0
  435. package/lib/esm/common/WorkerProxy.d.ts +73 -0
  436. package/lib/esm/common/WorkerProxy.d.ts.map +1 -0
  437. package/lib/esm/common/WorkerProxy.js +50 -0
  438. package/lib/esm/common/WorkerProxy.js.map +1 -0
  439. package/lib/{cjs → esm/common}/gltf/GltfModel.d.ts +1 -1
  440. package/lib/esm/common/gltf/GltfModel.d.ts.map +1 -0
  441. package/lib/esm/common/gltf/GltfModel.js.map +1 -0
  442. package/lib/esm/common/gltf/GltfParser.d.ts.map +1 -0
  443. package/lib/esm/common/gltf/GltfParser.js.map +1 -0
  444. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -0
  445. package/lib/esm/common/gltf/GltfSchema.js.map +1 -0
  446. package/lib/esm/common/imdl/ImdlModel.d.ts +186 -0
  447. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -0
  448. package/lib/esm/common/imdl/ImdlModel.js +67 -0
  449. package/lib/esm/common/imdl/ImdlModel.js.map +1 -0
  450. package/lib/esm/common/imdl/ImdlSchema.d.ts +380 -0
  451. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -0
  452. package/lib/esm/common/imdl/ImdlSchema.js +9 -0
  453. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -0
  454. package/lib/esm/common/imdl/ParseImdlDocument.d.ts +45 -0
  455. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -0
  456. package/lib/esm/common/imdl/ParseImdlDocument.js +987 -0
  457. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -0
  458. package/lib/esm/common/render/AnimationNodeId.d.ts +11 -0
  459. package/lib/esm/common/render/AnimationNodeId.d.ts.map +1 -0
  460. package/lib/esm/common/render/AnimationNodeId.js +16 -0
  461. package/lib/esm/common/render/AnimationNodeId.js.map +1 -0
  462. package/lib/{cjs/render/RenderMaterial.d.ts → esm/common/render/MaterialParams.d.ts} +7 -20
  463. package/lib/esm/common/render/MaterialParams.d.ts.map +1 -0
  464. package/lib/esm/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
  465. package/lib/esm/common/render/MaterialParams.js.map +1 -0
  466. package/lib/esm/common/render/TextureParams.d.ts +30 -0
  467. package/lib/esm/common/render/TextureParams.d.ts.map +1 -0
  468. package/lib/esm/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
  469. package/lib/esm/common/render/TextureParams.js.map +1 -0
  470. package/lib/{cjs → esm/common}/render/primitives/AuxChannelTable.d.ts +12 -8
  471. package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
  472. package/lib/esm/{render → common/render}/primitives/AuxChannelTable.js +42 -9
  473. package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -0
  474. package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +1 -0
  475. package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -0
  476. package/lib/esm/common/render/primitives/EdgeParams.d.ts +94 -0
  477. package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +1 -0
  478. package/lib/esm/common/render/primitives/EdgeParams.js +42 -0
  479. package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -0
  480. package/lib/esm/common/render/primitives/MeshParams.d.ts +20 -0
  481. package/lib/esm/common/render/primitives/MeshParams.d.ts.map +1 -0
  482. package/lib/esm/common/render/primitives/MeshParams.js +9 -0
  483. package/lib/esm/common/render/primitives/MeshParams.js.map +1 -0
  484. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts +29 -0
  485. package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
  486. package/lib/esm/common/render/primitives/MeshPrimitive.js +15 -0
  487. package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -0
  488. package/lib/esm/common/render/primitives/PointStringParams.d.ts +14 -0
  489. package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +1 -0
  490. package/lib/esm/common/render/primitives/PointStringParams.js +9 -0
  491. package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -0
  492. package/lib/esm/common/render/primitives/PolylineParams.d.ts +29 -0
  493. package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +1 -0
  494. package/lib/esm/common/render/primitives/PolylineParams.js +9 -0
  495. package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -0
  496. package/lib/{cjs → esm/common}/render/primitives/SurfaceParams.d.ts +1 -1
  497. package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +1 -0
  498. package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -0
  499. package/lib/esm/common/render/primitives/VertexIndices.d.ts +26 -0
  500. package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +1 -0
  501. package/lib/esm/common/render/primitives/VertexIndices.js +60 -0
  502. package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -0
  503. package/lib/esm/common/render/primitives/VertexTable.d.ts +45 -0
  504. package/lib/esm/common/render/primitives/VertexTable.d.ts.map +1 -0
  505. package/lib/esm/common/render/primitives/VertexTable.js +34 -0
  506. package/lib/esm/common/render/primitives/VertexTable.js.map +1 -0
  507. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
  508. package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
  509. package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.js +44 -33
  510. package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -0
  511. package/lib/esm/core-frontend.d.ts +26 -6
  512. package/lib/esm/core-frontend.d.ts.map +1 -1
  513. package/lib/esm/core-frontend.js +26 -6
  514. package/lib/esm/core-frontend.js.map +1 -1
  515. package/lib/esm/extension/ExtensionAdmin.js +1 -1
  516. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  517. package/lib/esm/quantity-formatting/QuantityFormatter.js +1 -1
  518. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  519. package/lib/esm/render/CreateRenderMaterialArgs.d.ts +24 -0
  520. package/lib/esm/render/CreateRenderMaterialArgs.d.ts.map +1 -0
  521. package/lib/esm/render/CreateRenderMaterialArgs.js +9 -0
  522. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -0
  523. package/lib/{cjs/render/RenderTexture.d.ts → esm/render/CreateTextureArgs.d.ts} +4 -28
  524. package/lib/esm/render/CreateTextureArgs.d.ts.map +1 -0
  525. package/lib/esm/render/CreateTextureArgs.js +9 -0
  526. package/lib/esm/render/CreateTextureArgs.js.map +1 -0
  527. package/lib/esm/render/GraphicBranch.d.ts +1 -7
  528. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  529. package/lib/esm/render/GraphicBranch.js +0 -8
  530. package/lib/esm/render/GraphicBranch.js.map +1 -1
  531. package/lib/esm/render/MockRender.d.ts +4 -4
  532. package/lib/esm/render/MockRender.d.ts.map +1 -1
  533. package/lib/esm/render/MockRender.js +1 -1
  534. package/lib/esm/render/MockRender.js.map +1 -1
  535. package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
  536. package/lib/esm/render/ParticleCollectionBuilder.js +5 -5
  537. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  538. package/lib/esm/render/RealityMeshParams.js +2 -2
  539. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  540. package/lib/esm/render/RenderSystem.d.ts +7 -6
  541. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  542. package/lib/esm/render/RenderSystem.js +7 -7
  543. package/lib/esm/render/RenderSystem.js.map +1 -1
  544. package/lib/esm/render/RenderTarget.d.ts +1 -1
  545. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  546. package/lib/esm/render/RenderTarget.js.map +1 -1
  547. package/lib/esm/render/VisibleFeature.d.ts +1 -1
  548. package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
  549. package/lib/esm/render/VisibleFeature.js.map +1 -1
  550. package/lib/esm/render/primitives/EdgeParams.d.ts +2 -89
  551. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  552. package/lib/esm/render/primitives/EdgeParams.js +29 -65
  553. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  554. package/lib/esm/render/primitives/PointStringParams.d.ts +2 -11
  555. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -1
  556. package/lib/esm/render/primitives/PointStringParams.js +24 -28
  557. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  558. package/lib/esm/render/primitives/Polyface.d.ts +1 -1
  559. package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
  560. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  561. package/lib/esm/render/primitives/PolylineParams.d.ts +4 -36
  562. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
  563. package/lib/esm/render/primitives/PolylineParams.js +24 -36
  564. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  565. package/lib/esm/render/primitives/Strokes.d.ts +1 -1
  566. package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
  567. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  568. package/lib/esm/render/primitives/VertexTableBuilder.d.ts +28 -0
  569. package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +1 -0
  570. package/lib/esm/render/primitives/{VertexTable.js → VertexTableBuilder.js} +60 -171
  571. package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -0
  572. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
  573. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  574. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  575. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
  576. package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
  577. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -1
  578. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  579. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
  580. package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
  581. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +1 -1
  582. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  583. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +1 -1
  584. package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
  585. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  586. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
  587. package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
  588. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +4 -3
  589. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  590. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
  591. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  592. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +9 -14
  593. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  594. package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
  595. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  596. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  597. package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
  598. package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
  599. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  600. package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
  601. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
  602. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  603. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  604. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  605. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
  606. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
  607. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  608. package/lib/esm/render/webgl/Material.d.ts +1 -1
  609. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  610. package/lib/esm/render/webgl/Material.js.map +1 -1
  611. package/lib/esm/render/webgl/Mesh.d.ts +2 -2
  612. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  613. package/lib/esm/render/webgl/Mesh.js +1 -1
  614. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  615. package/lib/esm/render/webgl/MeshData.d.ts +2 -2
  616. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  617. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  618. package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
  619. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  620. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  621. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  622. package/lib/esm/render/webgl/PointString.js.map +1 -1
  623. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  624. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  625. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  626. package/lib/esm/render/webgl/RenderCommands.js +1 -1
  627. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  628. package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
  629. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  630. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  631. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
  632. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  633. package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
  634. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  635. package/lib/esm/render/webgl/System.d.ts +7 -6
  636. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  637. package/lib/esm/render/webgl/System.js +1 -1
  638. package/lib/esm/render/webgl/System.js.map +1 -1
  639. package/lib/esm/render/webgl/Target.d.ts +1 -1
  640. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  641. package/lib/esm/render/webgl/Target.js +3 -3
  642. package/lib/esm/render/webgl/Target.js.map +1 -1
  643. package/lib/esm/render/webgl/Texture.d.ts +1 -1
  644. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  645. package/lib/esm/render/webgl/Texture.js +1 -1
  646. package/lib/esm/render/webgl/Texture.js.map +1 -1
  647. package/lib/esm/render/webgl/UniformHandle.js +1 -1
  648. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  649. package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
  650. package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
  651. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  652. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  653. package/lib/esm/render-primitives.d.ts +1 -4
  654. package/lib/esm/render-primitives.d.ts.map +1 -1
  655. package/lib/esm/render-primitives.js +1 -4
  656. package/lib/esm/render-primitives.js.map +1 -1
  657. package/lib/esm/tile/B3dmReader.d.ts +1 -1
  658. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  659. package/lib/esm/tile/B3dmReader.js +1 -1
  660. package/lib/esm/tile/B3dmReader.js.map +1 -1
  661. package/lib/esm/tile/GltfReader.d.ts +3 -3
  662. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  663. package/lib/esm/tile/GltfReader.js +12 -21
  664. package/lib/esm/tile/GltfReader.js.map +1 -1
  665. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  666. package/lib/esm/tile/IModelTile.js +12 -18
  667. package/lib/esm/tile/IModelTile.js.map +1 -1
  668. package/lib/esm/tile/IModelTileTree.d.ts +3 -1
  669. package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
  670. package/lib/esm/tile/IModelTileTree.js +15 -1
  671. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  672. package/lib/esm/tile/ImdlDecoder.d.ts +52 -0
  673. package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -0
  674. package/lib/esm/tile/ImdlDecoder.js +31 -0
  675. package/lib/esm/tile/ImdlDecoder.js.map +1 -0
  676. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +19 -0
  677. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -0
  678. package/lib/esm/tile/ImdlGraphicsCreator.js +324 -0
  679. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -0
  680. package/lib/esm/tile/ImdlParser.d.ts +26 -0
  681. package/lib/esm/tile/ImdlParser.d.ts.map +1 -0
  682. package/lib/esm/tile/ImdlParser.js +68 -0
  683. package/lib/esm/tile/ImdlParser.js.map +1 -0
  684. package/lib/esm/tile/ImdlReader.d.ts +16 -420
  685. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  686. package/lib/esm/tile/ImdlReader.js +71 -903
  687. package/lib/esm/tile/ImdlReader.js.map +1 -1
  688. package/lib/esm/tile/OPCFormatInterpreter.js +1 -1
  689. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  690. package/lib/esm/tile/PntsReader.js +1 -1
  691. package/lib/esm/tile/PntsReader.js.map +1 -1
  692. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  693. package/lib/esm/tile/PrimaryTileTree.js +2 -1
  694. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  695. package/lib/esm/tile/RealityTileLoader.js +1 -1
  696. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  697. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  698. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  699. package/lib/esm/tile/TileAdmin.d.ts +7 -0
  700. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  701. package/lib/esm/tile/TileAdmin.js +1 -0
  702. package/lib/esm/tile/TileAdmin.js.map +1 -1
  703. package/lib/esm/tile/internal.d.ts +3 -0
  704. package/lib/esm/tile/internal.d.ts.map +1 -1
  705. package/lib/esm/tile/internal.js +3 -0
  706. package/lib/esm/tile/internal.js.map +1 -1
  707. package/lib/esm/tile/map/ArcGisUtilities.d.ts +8 -1
  708. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  709. package/lib/esm/tile/map/ArcGisUtilities.js +21 -0
  710. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  711. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  712. package/lib/esm/tile/map/MapLayerImageryFormats.js +3 -0
  713. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  714. package/lib/esm/tile/map/MapLayerSources.d.ts +4 -1
  715. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  716. package/lib/esm/tile/map/MapLayerSources.js +3 -0
  717. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  718. package/lib/esm/tile/map/MapTile.d.ts +6 -1
  719. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  720. package/lib/esm/tile/map/MapTile.js +8 -7
  721. package/lib/esm/tile/map/MapTile.js.map +1 -1
  722. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  723. package/lib/esm/tile/map/MapTileTree.js +8 -2
  724. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  725. package/lib/esm/tools/ElementSetTool.js +1 -1
  726. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  727. package/lib/esm/tools/SelectTool.js +1 -1
  728. package/lib/esm/tools/SelectTool.js.map +1 -1
  729. package/lib/esm/tools/ToolAdmin.js +1 -1
  730. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  731. package/lib/esm/tools/ViewTool.js +1 -1
  732. package/lib/esm/tools/ViewTool.js.map +1 -1
  733. package/lib/esm/workers/ImdlParser/Worker.d.ts +20 -0
  734. package/lib/esm/workers/ImdlParser/Worker.d.ts.map +1 -0
  735. package/lib/esm/workers/ImdlParser/Worker.js +30 -0
  736. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -0
  737. package/lib/esm/workers/ImdlParser/webpack.config.js +40 -0
  738. package/lib/esm/workers/RegisterWorker.d.ts +9 -0
  739. package/lib/esm/workers/RegisterWorker.d.ts.map +1 -0
  740. package/lib/esm/workers/RegisterWorker.js +32 -0
  741. package/lib/esm/workers/RegisterWorker.js.map +1 -0
  742. package/lib/public/scripts/parse-imdl-worker.js +1 -0
  743. package/lib/workers/webpack/parse-imdl-worker.js +1 -0
  744. package/package.json +23 -20
  745. package/lib/cjs/FrontendLoggerCategory.d.ts.map +0 -1
  746. package/lib/cjs/FrontendLoggerCategory.js.map +0 -1
  747. package/lib/cjs/ImageUtil.d.ts.map +0 -1
  748. package/lib/cjs/ImageUtil.js.map +0 -1
  749. package/lib/cjs/ViewRect.d.ts.map +0 -1
  750. package/lib/cjs/ViewRect.js.map +0 -1
  751. package/lib/cjs/WebWorkerManager.d.ts +0 -49
  752. package/lib/cjs/WebWorkerManager.d.ts.map +0 -1
  753. package/lib/cjs/WebWorkerManager.js +0 -155
  754. package/lib/cjs/WebWorkerManager.js.map +0 -1
  755. package/lib/cjs/gltf/GltfModel.d.ts.map +0 -1
  756. package/lib/cjs/gltf/GltfModel.js.map +0 -1
  757. package/lib/cjs/gltf/GltfParser.d.ts.map +0 -1
  758. package/lib/cjs/gltf/GltfParser.js.map +0 -1
  759. package/lib/cjs/gltf/GltfSchema.d.ts.map +0 -1
  760. package/lib/cjs/gltf/GltfSchema.js.map +0 -1
  761. package/lib/cjs/render/RenderMaterial.d.ts.map +0 -1
  762. package/lib/cjs/render/RenderMaterial.js.map +0 -1
  763. package/lib/cjs/render/RenderTexture.d.ts.map +0 -1
  764. package/lib/cjs/render/RenderTexture.js.map +0 -1
  765. package/lib/cjs/render/primitives/AuxChannelTable.d.ts.map +0 -1
  766. package/lib/cjs/render/primitives/AuxChannelTable.js.map +0 -1
  767. package/lib/cjs/render/primitives/DisplayParams.d.ts.map +0 -1
  768. package/lib/cjs/render/primitives/DisplayParams.js.map +0 -1
  769. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +0 -1
  770. package/lib/cjs/render/primitives/SurfaceParams.js.map +0 -1
  771. package/lib/cjs/render/primitives/VertexTable.d.ts +0 -152
  772. package/lib/cjs/render/primitives/VertexTable.d.ts.map +0 -1
  773. package/lib/cjs/render/primitives/VertexTable.js.map +0 -1
  774. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  775. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +0 -1
  776. package/lib/esm/FrontendLoggerCategory.d.ts.map +0 -1
  777. package/lib/esm/FrontendLoggerCategory.js.map +0 -1
  778. package/lib/esm/ImageUtil.d.ts.map +0 -1
  779. package/lib/esm/ImageUtil.js.map +0 -1
  780. package/lib/esm/ViewRect.d.ts.map +0 -1
  781. package/lib/esm/ViewRect.js.map +0 -1
  782. package/lib/esm/WebWorkerManager.d.ts +0 -49
  783. package/lib/esm/WebWorkerManager.d.ts.map +0 -1
  784. package/lib/esm/WebWorkerManager.js +0 -150
  785. package/lib/esm/WebWorkerManager.js.map +0 -1
  786. package/lib/esm/gltf/GltfModel.d.ts.map +0 -1
  787. package/lib/esm/gltf/GltfModel.js.map +0 -1
  788. package/lib/esm/gltf/GltfParser.d.ts.map +0 -1
  789. package/lib/esm/gltf/GltfParser.js.map +0 -1
  790. package/lib/esm/gltf/GltfSchema.d.ts.map +0 -1
  791. package/lib/esm/gltf/GltfSchema.js.map +0 -1
  792. package/lib/esm/render/RenderMaterial.d.ts.map +0 -1
  793. package/lib/esm/render/RenderMaterial.js.map +0 -1
  794. package/lib/esm/render/RenderTexture.d.ts.map +0 -1
  795. package/lib/esm/render/RenderTexture.js.map +0 -1
  796. package/lib/esm/render/primitives/AuxChannelTable.d.ts.map +0 -1
  797. package/lib/esm/render/primitives/AuxChannelTable.js.map +0 -1
  798. package/lib/esm/render/primitives/DisplayParams.d.ts.map +0 -1
  799. package/lib/esm/render/primitives/DisplayParams.js.map +0 -1
  800. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +0 -1
  801. package/lib/esm/render/primitives/SurfaceParams.js.map +0 -1
  802. package/lib/esm/render/primitives/VertexTable.d.ts +0 -152
  803. package/lib/esm/render/primitives/VertexTable.d.ts.map +0 -1
  804. package/lib/esm/render/primitives/VertexTable.js.map +0 -1
  805. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +0 -1
  806. package/lib/esm/render/primitives/VertexTableSplitter.js.map +0 -1
  807. /package/lib/cjs/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  808. /package/lib/cjs/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  809. /package/lib/cjs/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  810. /package/lib/cjs/{ImageUtil.js → common/ImageUtil.js} +0 -0
  811. /package/lib/cjs/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  812. /package/lib/cjs/{ViewRect.js → common/ViewRect.js} +0 -0
  813. /package/lib/cjs/{gltf → common/gltf}/GltfModel.js +0 -0
  814. /package/lib/cjs/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  815. /package/lib/cjs/{gltf → common/gltf}/GltfParser.js +0 -0
  816. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  817. /package/lib/cjs/{gltf → common/gltf}/GltfSchema.js +0 -0
  818. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  819. /package/lib/cjs/{render → common/render}/primitives/DisplayParams.js +0 -0
  820. /package/lib/cjs/{render → common/render}/primitives/SurfaceParams.js +0 -0
  821. /package/lib/esm/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
  822. /package/lib/esm/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
  823. /package/lib/esm/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
  824. /package/lib/esm/{ImageUtil.js → common/ImageUtil.js} +0 -0
  825. /package/lib/esm/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
  826. /package/lib/esm/{ViewRect.js → common/ViewRect.js} +0 -0
  827. /package/lib/esm/{gltf → common/gltf}/GltfModel.js +0 -0
  828. /package/lib/esm/{gltf → common/gltf}/GltfParser.d.ts +0 -0
  829. /package/lib/esm/{gltf → common/gltf}/GltfParser.js +0 -0
  830. /package/lib/esm/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
  831. /package/lib/esm/{gltf → common/gltf}/GltfSchema.js +0 -0
  832. /package/lib/esm/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
  833. /package/lib/esm/{render → common/render}/primitives/DisplayParams.js +0 -0
  834. /package/lib/esm/{render → common/render}/primitives/SurfaceParams.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"VertexTableSplitter.js","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTableSplitter.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAoF;AACpF,oDAAkE;AAClE,+CAEuB;AACvB,2DAAwD;AACxD,qDAAsE;AACtE,6CAAkG;AAClG,mDAAyE;AACzE,+CAA4C;AAG5C;;GAEG;AACH,MAAa,WAAW;IAKtB,YAAmB,eAAe,GAAG,CAAC;QAHrB,aAAQ,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,YAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAGpE,IAAI,CAAC,QAAQ,GAAG,IAAI,gCAAiB,CAAC,EAAE,eAAe,EAAE,eAAe,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,IAAW,UAAU;QACnB,IAAA,qBAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI,CAAC,KAAa;QACvB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,2BAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAtBD,kCAsBC;AAED,mCAAmC;AACnC,MAAM,YAAY;IAIhB,iHAAiH;IACjH,YAAmB,MAAmB;QACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,iCAAkB,CAAC,EAAE,eAAe,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,qDAAqD;IACrD,IAAW,MAAM;QACf,IAAA,qBAAM,EAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAChD,CAAC;IAED,uEAAuE;IACvE,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvC,CAAC;IAED,gEAAgE;IACzD,IAAI,CAAC,MAAmB;QAC7B,IAAA,qBAAM,EAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,2CAA2C;IACpC,gBAAgB,CAAC,YAAoB,EAAE,UAAkC,EAAE,kBAAsC;QACtH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,UAAU,GAAG,UAAU,IAAI,MAAM,CAAC,YAAY,CAAC;QAC/C,IAAA,qBAAM,EAAC,SAAS,KAAK,UAAU,CAAC,CAAC;QAEjC,MAAM,gBAAgB,GAAG,UAAU,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,wBAAwB,GAAG,kBAAkB,YAAY,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3G,MAAM,UAAU,GAAG,IAAA,+BAAiB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAE9H,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC;YAC1B,QAAQ,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACjE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAC3B;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9C,IAAI,UAAU,YAAY,WAAW,EAAE;YACrC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACpC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;SAChC;QAED,IAAI,kBAAkB,YAAY,WAAW;YAC3C,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAqB;YACnC,IAAI,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;YAC/E,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;YACzD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,YAAY,EAAE,UAAU,YAAY,sBAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACrE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;QAEF,OAAO,IAAI,yBAAW,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACF;AAID,kFAAkF;AAClF,MAAM,kBAAkB;IAOtB,YAAmB,UAAuB;QANzB,qBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE9C,WAAM,GAAa,EAAE,CAAC;QACrB,QAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACzB,QAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAGtD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,wIAAwI;IACjI,KAAK,CAAC,MAAmB,EAAE,wBAA6C;QAC7E,MAAM,SAAS,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACzB;QAED,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,0CAA0C;IACnC,eAAe;QACpB,IAAA,qBAAM,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,sBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;CACF;AAID,MAAM,qBAAqB;IAOzB,YAAmB,WAAwB;QAN1B,qBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE9C,cAAS,GAAa,EAAE,CAAC;QACxB,QAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACzB,OAAE,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAGpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,sIAAsI;IAC/H,KAAK,CAAC,MAAmB,EAAE,wBAA6C;QAC7E,MAAM,SAAS,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC9C,IAAI,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;SAC9C;QAED,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QACtB,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAEO,WAAW,CAAC,KAAa;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;QACtC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;QACnC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,UAAU,CAAC;QACxD,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEO,sBAAsB,CAAC,KAAkB;QAC/C,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,GAA6B;YACrC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9D,OAAO,EAAE;gBACP,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,sBAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBACzE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;aACjC;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,sBAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK;gBAC1C,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACrC;SACF,CAAC;QACF,MAAM,QAAQ,GAAG,qBAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnE,OAAO,IAAA,qCAAqB,EAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,0CAA0C;IACnC,eAAe;QACpB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,IAAI;IAQR,2IAA2I;IAC3I,YAAmB,WAAwB,EAAE,uBAA2C;QAPxE,oBAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,YAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAO1C,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,SAAS,KAAK,WAAW,CAAC,YAAY;YACxC,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE3K,IAAI,SAAS,KAAK,uBAAuB,EAAE;YACzC,MAAM,WAAW,GAAG,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,gBAAgB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;YAC3G,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAqB,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;SAC7H;QAED,IAAI,CAAC,wBAAwB,GAAG,WAAW,CAAC,wBAAwB,CAAC;IACvE,CAAC;IAEM,SAAS,CAAC,aAAqB,EAAE,MAAmB;QACzD,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAElD,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5B;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,WAAW,CAAC,YAAoB;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAgC,CAAC,aAAa,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;QACjH,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,aAAa,CAAC;YACrG,QAAQ;SACT,CAAC;IACJ,CAAC;CACF;AASD,MAAM,mBAAmB;IAKvB,YAAoB,KAA2B,EAAE,aAAqC;QAFrE,WAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;QAGhD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED,sGAAsG;IAC/F,MAAM,CAAC,KAAK,CAAC,MAA4B,EAAE,aAAqC;QACrF,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAChE,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IAEO,KAAK;QACX,gGAAgG;QAChG,8CAA8C;QAC9C,MAAM,QAAQ,GAAG;YACf,YAAY,EAAE,CAAC,CAAC;YAChB,IAAI,EAAE,SAA4B;SACnC,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC;QAEzJ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACvC,wEAAwE;YACxE,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;gBACpC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YAE5C,iFAAiF;YACjF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC5C,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,EAAE;gBAC1C,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACjD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,SAAS,KAAK,IAAI;oBACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBAE1F,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;aACtB;YAED,0CAA0C;YAC1C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACxC;IACH,CAAC;CACF;AAYD;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;QAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;QAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IACpD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE;QAC9B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,qCAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KAC9E;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAdD,wDAcC;AAWD,MAAM,qBAAqB;IAA3B;QACkB,YAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,gBAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,yBAAoB,GAAG,IAAI,iCAAkB,EAAE,CAAC;IAClE,CAAC;CAAA;AAoBD,SAAS,UAAU,CAAC,GAAkB,EAAE,QAAgB,EAAE,KAAwB;IAChF,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YAClB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;SACb;KACF;IAED,IAAA,qBAAM,EAAC,KAAK,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAgC,EAAE,MAAkB,EAAE,KAAwB,EAAE,KAAiC;IAC1I,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,GAAG;QACN,OAAO;IAET,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnJ,IAAI,cAAc,CAAC;IACnB,IAAI,IAAI,KAAK,aAAa,EAAE;QAC1B,IAAA,qBAAM,EAAC,SAAS,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;QACzC,cAAc,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC/J;IAED,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,aAAa,GAAG,EAA+B,CAAC;IACtD,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE;QAClC,IAAI,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;YAC9C,IAAI,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,UAAU,GAAG,CAAC,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACzE,IAAA,qBAAM,EAAC,SAAS,KAAK,aAAa,CAAC,CAAC;YACpC,eAAe,GAAG,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,aAAa,CAAC;YAEjE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBACR,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,GAAG,EAAG,CAAC,CAAC;YAE3C,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,WAAW;oBACpB,KAAK,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,EAAE,sBAAsB,EAAE,IAAI,iCAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,iCAAkB,EAAE,EAAE,CAAC;gBAE9I,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;aACnE;iBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC1B,KAAK,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,EAAE,sBAAsB,EAAE,IAAI,iCAAkB,EAAE,EAAE,CAAC;aACnG;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAA,qBAAM,EAAC,SAAS,KAAK,QAAQ,CAAC,CAAC;YAE/B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACvD;QAED,EAAE,aAAa,CAAC;KACjB;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAuB,EAAE,KAAwB,EAAE,KAAiC;IAC9G,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnJ,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,aAAa,GAAG,EAA+B,CAAC;IACtD,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE;QAClC,IAAI,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;YAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACxC,IAAA,qBAAM,EAAC,SAAS,KAAK,SAAS,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvE,IAAA,qBAAM,EAAC,SAAS,KAAK,YAAY,CAAC,CAAC;YAEnC,IAAI,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvE,IAAA,qBAAM,EAAC,SAAS,KAAK,YAAY,CAAC,CAAC;YACnC,YAAY,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,YAAY,CAAC;YAE1D,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBACR,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,GAAG,EAAG,CAAC,CAAC;YAE3C,IAAI,CAAC,KAAK,CAAC,SAAS;gBAClB,KAAK,CAAC,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;YAEhD,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClD,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACzD;QAED,EAAE,aAAa,CAAC;KACjB;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAsB,EAAE,KAAwB,EAAE,KAAiC;IAC5G,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;IACnC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;IAC1C,MAAM,wBAAwB,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAE/E,SAAS,iBAAiB,CAAC,SAAiB;QAC1C,OAAO,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE;YACvG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,SAAS,iBAAiB,CAAC,QAA4B,EAAE,MAAc,EAAE,MAAc;QACrF,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QACvC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QACvC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,SAAS,gBAAgB,CAAC,SAAiB;QACzC,OAAO,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE;YACvG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE;YACjG,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpI,CAAC;IAED,SAAS,gBAAgB,CAAC,MAA0B,EAAE,MAAc,EAAE,MAAc,EAAE,KAAa,EAAE,KAAa;QAChH,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,OAAO;QAChC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE3C,MAAM,aAAa,GAAG,EAA+B,CAAC;IACtD,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,UAAU,IAAI,QAAQ,EAAE,EAAE,UAAU,EAAE;QAC5E,IAAI,UAAU,GAAG,WAAW,EAAE,EAAG,QAAQ;YACvC,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACpD,SAAS,IAAI,CAAC,CAAC;SAChB;aAAM,EAAG,cAAc;YACtB,SAAS,GAAG,wBAAwB,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YACvE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;SAC5D;QAED,IAAI,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;YAC9C,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBACR,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,GAAG,EAAG,CAAC,CAAC;YAE3C,IAAI,CAAC,KAAK,CAAC,OAAO;gBAChB,KAAK,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,IAAI,gCAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,gCAAiB,EAAE,EAAE,CAAC;YAE3F,IAAI,UAAU,GAAG,WAAW,EAAE,EAAG,QAAQ;gBACvC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpE,IAAA,qBAAM,EAAC,SAAS,KAAK,UAAU,CAAC,CAAC;gBACjC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpE,IAAA,qBAAM,EAAC,SAAS,KAAK,UAAU,CAAC,CAAC;gBACjC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;aAC1D;iBAAM,EAAG,cAAc;gBACtB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpE,IAAA,qBAAM,EAAC,SAAS,KAAK,UAAU,CAAC,CAAC;gBACjC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpE,IAAA,qBAAM,EAAC,SAAS,KAAK,UAAU,CAAC,CAAC;gBACjC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;aACjE;SACF;KACF;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAkB,EAAE,KAAwB;IAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEvD,IAAI,MAAM,CAAC,SAAS;QAClB,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAErD,IAAI,MAAM,CAAC,OAAO;QAChB,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC7C,KAAK,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,KAAK,EAAE;QACvC,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,OAAO;YACjF,SAAS;QAEX,IAAI,SAAS,GAAG,EAA2B,CAAC;QAC5C,IAAI,WAAW,GAAG,EAA+B,CAAC;QAClD,IAAI,aAAa,CAAC,OAAO,EAAE;YACzB,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/D,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;YACrE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,GAAG,IAAA,qCAAwB,EAAC,eAAe,EAAE,cAAc,EAAE,qBAAS,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACxK,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,IAAI,cAAc,GAAG,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,EAAE,wBAAwB,GAAG,iBAAiB,CAAC,CAAC;YAE3G,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,CAAC;YACvD,WAAW,GAAG,IAAI,2BAAa,CAAC,IAAI,UAAU,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE;gBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACxB,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAE1C,SAAS,GAAG;gBACV,IAAI;gBACJ,KAAK;gBACL,MAAM;gBACN,WAAW,EAAE,eAAe;gBAC5B,iBAAiB;aAClB,CAAC;SACH;QAED,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;gBACzD,sBAAsB,EAAE,aAAa,CAAC,QAAQ,CAAC,sBAAsB,CAAC,YAAY,EAAE;aACrF,CAAC,CAAC,CAAC,SAAS;YACb,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE;gBAC5D,sBAAsB,EAAE,aAAa,CAAC,WAAW,CAAC,sBAAsB,CAAC,YAAY,EAAE;gBACvF,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE;aAClE,CAAC,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE;gBAC1D,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;gBAClE,oBAAoB,EAAE,aAAa,CAAC,SAAS,CAAC,oBAAoB,CAAC,YAAY,EAAE;aAClF,CAAC,CAAC,CAAC,SAAS;YACb,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/B,OAAO,EAAE,WAAW;gBACpB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC,CAAC,SAAS;SACd,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAMD,SAAgB,eAAe,CAAC,IAAmB;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE7C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzC,MAAM,WAAW,GAAG,SAAS,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzF,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;QACpC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;QAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW;KACZ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE;QAC9B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAI,wBAAU,CAC3B,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;YAC9B,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS;YACxC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB;YACtD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc;YAClD,QAAQ,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ;SAC3E,EACD,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,EACd,IAAI,CAAC,MAAM,CAAC,QAAQ;QACpB,qCAAqC;QACrC,IAAI,CAAC,MAAM,CAAC,WAAW,CACxB,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;KACxB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AApCD,0CAoCC;AAWD,SAAgB,mBAAmB,CAAC,IAAuB;IACzD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;QACrC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;QAC9B,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,EAAE,IAAI,CAAC,aAAa,CAA8B,CAAC;IAEpD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnJ,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,aAAa,GAAG,EAA+B,CAAC;IACtD,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,WAAW,EAAE;QACvC,IAAI,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;YAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAoB,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC5D,IAAI,CAAC,oBAAoB,GAAG,IAAI,iCAAkB,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;aAClG;iBAAM;gBACL,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC;aACjD;YAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE3C,IAAI,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvE,IAAA,qBAAM,EAAC,SAAS,KAAK,YAAY,CAAC,CAAC;YACnC,YAAY,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,YAAY,CAAC;YAC1D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9C;QAED,EAAE,aAAa,CAAC;KACjB;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE;QAC9B,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,+BAAc,CAC/B,QAAQ,EAAE;YACR,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;YAC/C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;SAC/D,EACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,IAAI,CAAC,MAAM,CAAC,UAAU,EACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;KACxB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAtDD,kDAsDC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, Uint32ArrayBuilder, Uint8ArrayBuilder } from \"@itwin/core-bentley\";\r\nimport { ColorDef, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport {\r\n computeDimensions, MeshParams, VertexIndices, VertexTable, VertexTableProps, VertexTableWithIndices,\r\n} from \"./VertexTable\";\r\nimport { PointStringParams } from \"./PointStringParams\";\r\nimport { PolylineParams, TesselatedPolyline } from \"./PolylineParams\";\r\nimport { calculateEdgeTableParams, EdgeParams, EdgeTable, IndexedEdgeParams } from \"./EdgeParams\";\r\nimport { createSurfaceMaterial, SurfaceMaterial } from \"./SurfaceParams\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { CreateRenderMaterialArgs } from \"../RenderMaterial\";\r\n\r\n/** Builds up a [[VertexIndices]].\r\n * Exported strictly for tests.\r\n */\r\nexport class IndexBuffer {\r\n private readonly _builder: Uint8ArrayBuilder;\r\n private readonly _index32 = new Uint32Array(1);\r\n private readonly _index8 = new Uint8Array(this._index32.buffer, 0, 3);\r\n\r\n public constructor(initialCapacity = 3) {\r\n this._builder = new Uint8ArrayBuilder({ initialCapacity: initialCapacity * 3 });\r\n }\r\n\r\n public get numIndices(): number {\r\n assert((this._builder.length % 3) === 0);\r\n return this._builder.length / 3;\r\n }\r\n\r\n public push(index: number): void {\r\n this._index32[0] = index;\r\n this._builder.append(this._index8);\r\n }\r\n\r\n public toVertexIndices(): VertexIndices {\r\n return new VertexIndices(this._builder.toTypedArray());\r\n }\r\n}\r\n\r\n/** Builds up a [[VertexTable]]. */\r\nclass VertexBuffer {\r\n private readonly _builder: Uint32ArrayBuilder;\r\n private readonly _source: VertexTable;\r\n\r\n /** `source` is the original table containing the vertex data from which individual vertices will be obtained. */\r\n public constructor(source: VertexTable) {\r\n this._source = source;\r\n this._builder = new Uint32ArrayBuilder({ initialCapacity: 3 * source.numRgbaPerVertex });\r\n }\r\n\r\n /** The number of vertices currently in the table. */\r\n public get length(): number {\r\n assert((this._builder.length % this.vertexSize) === 0);\r\n return this._builder.length / this.vertexSize;\r\n }\r\n\r\n /** The number of 32-bit unsigned integers (RGBA values) per vertex. */\r\n public get vertexSize(): number {\r\n return this._source.numRgbaPerVertex;\r\n }\r\n\r\n /** Append a vertex. `vertex` must be of size [[vertexSize]]. */\r\n public push(vertex: Uint32Array): void {\r\n assert(vertex.length === this.vertexSize);\r\n this._builder.append(vertex);\r\n }\r\n\r\n /** Construct the finished vertex table. */\r\n public buildVertexTable(maxDimension: number, colorTable: ColorTable | undefined, materialAtlasTable: MaterialAtlasTable): VertexTable {\r\n const source = this._source;\r\n colorTable = colorTable ?? source.uniformColor;\r\n assert(undefined !== colorTable);\r\n\r\n const colorTableLength = colorTable instanceof Uint32Array ? colorTable.length : 0;\r\n const materialAtlasTableLength = materialAtlasTable instanceof Uint32Array ? materialAtlasTable.length : 0;\r\n const dimensions = computeDimensions(this.length, this.vertexSize, colorTableLength + materialAtlasTableLength, maxDimension);\r\n\r\n let rgbaData = this._builder.toTypedArray();\r\n if (dimensions.width * dimensions.height > rgbaData.length) {\r\n const prevData = rgbaData;\r\n rgbaData = new Uint32Array(dimensions.width * dimensions.height);\r\n rgbaData.set(prevData, 0);\r\n }\r\n\r\n let tableSize = this.vertexSize * this.length;\r\n if (colorTable instanceof Uint32Array) {\r\n rgbaData.set(colorTable, tableSize);\r\n tableSize += colorTable.length;\r\n }\r\n\r\n if (materialAtlasTable instanceof Uint32Array)\r\n rgbaData.set(materialAtlasTable, tableSize);\r\n\r\n const tableProps: VertexTableProps = {\r\n data: new Uint8Array(rgbaData.buffer, rgbaData.byteOffset, rgbaData.byteLength),\r\n usesUnquantizedPositions: source.usesUnquantizedPositions,\r\n qparams: source.qparams,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n hasTranslucency: source.hasTranslucency,\r\n uniformColor: colorTable instanceof ColorDef ? colorTable : undefined,\r\n featureIndexType: source.featureIndexType,\r\n uniformFeatureID: source.uniformFeatureID,\r\n numVertices: this.length,\r\n numRgbaPerVertex: source.numRgbaPerVertex,\r\n uvParams: source.uvParams,\r\n };\r\n\r\n return new VertexTable(tableProps);\r\n }\r\n}\r\n\r\ntype ColorTable = Uint32Array | ColorDef;\r\n\r\n/** Remaps portions of a source color table into a filtered target color table. */\r\nclass ColorTableRemapper {\r\n private readonly _remappedIndices = new Map<number, number>();\r\n private readonly _colorTable: Uint32Array;\r\n public readonly colors: number[] = [];\r\n private readonly _32 = new Uint32Array(1);\r\n private readonly _16 = new Uint16Array(this._32.buffer);\r\n\r\n public constructor(colorTable: Uint32Array) {\r\n this._colorTable = colorTable;\r\n }\r\n\r\n /** Extract the color index stored in `vertex`, ensure it is present in the remapped color table, and return its index in that table. */\r\n public remap(vertex: Uint32Array, usesUnquantizedPositions: boolean | undefined): void {\r\n const vertIndex = usesUnquantizedPositions ? 4 : 1;\r\n const shortIndex = usesUnquantizedPositions ? 0 : 1;\r\n this._32[0] = vertex[vertIndex];\r\n const oldIndex = this._16[shortIndex];\r\n let newIndex = this._remappedIndices.get(oldIndex);\r\n if (undefined === newIndex) {\r\n newIndex = this.colors.length;\r\n this._remappedIndices.set(oldIndex, newIndex);\r\n const color = this._colorTable[oldIndex];\r\n this.colors.push(color);\r\n }\r\n\r\n this._16[shortIndex] = newIndex;\r\n vertex[vertIndex] = this._32[0];\r\n }\r\n\r\n /** Construct the finished color table. */\r\n public buildColorTable(): ColorTable {\r\n assert(this.colors.length > 0);\r\n return this.colors.length > 1 ? new Uint32Array(this.colors) : ColorDef.fromAbgr(this.colors[0]);\r\n }\r\n}\r\n\r\ntype MaterialAtlasTable = Uint32Array | SurfaceMaterial | undefined;\r\n\r\nclass MaterialAtlasRemapper {\r\n private readonly _remappedIndices = new Map<number, number>();\r\n private readonly _atlasTable: Uint32Array;\r\n public readonly materials: number[] = [];\r\n private readonly _32 = new Uint32Array(1);\r\n private readonly _8 = new Uint8Array(this._32.buffer);\r\n\r\n public constructor(_atlasTable: Uint32Array) {\r\n this._atlasTable = _atlasTable;\r\n }\r\n\r\n /** Extract the mat index stored in `vertex`, ensure it is present in the remapped atlas table, and return its index in that table. */\r\n public remap(vertex: Uint32Array, usesUnquantizedPositions: boolean | undefined): void {\r\n const vertIndex = usesUnquantizedPositions ? 3 : 2;\r\n this._32[0] = vertex[vertIndex];\r\n const oldIndex = this._8[3];\r\n let newIndex = this._remappedIndices.get(oldIndex);\r\n if (undefined === newIndex) {\r\n newIndex = this.materials.length / 4;\r\n this._remappedIndices.set(oldIndex, newIndex);\r\n let index = oldIndex * 4;\r\n this.materials.push(this._atlasTable[index++]);\r\n this.materials.push(this._atlasTable[index++]);\r\n this.materials.push(this._atlasTable[index++]);\r\n this.materials.push(this._atlasTable[index]);\r\n }\r\n\r\n this._8[3] = newIndex;\r\n vertex[vertIndex] = this._32[0];\r\n }\r\n\r\n private unpackFloat(value: number): number {\r\n this._32[0] = value;\r\n const valUint32 = this._32[0];\r\n const bias = 38.0;\r\n const temp = (valUint32 >>> 24) / 2.0;\r\n let exponent = Math.floor(temp);\r\n let sign = (temp - exponent) * 2.0;\r\n sign = -(sign * 2.0 - 1.0);\r\n const base = sign * (valUint32 & 0xffffff) / 16777216.0;\r\n exponent = exponent - bias;\r\n return base * Math.pow(10.0, exponent);\r\n }\r\n\r\n private materialFromAtlasEntry(entry: Uint32Array): SurfaceMaterial | undefined {\r\n const rgbOverridden = (entry[1] & 0x1000000) !== 0;\r\n const alphaOverridden = (entry[1] & 0x2000000) !== 0;\r\n const args: CreateRenderMaterialArgs = {\r\n alpha: alphaOverridden ? (entry[0] >>> 24) / 255.0 : undefined,\r\n diffuse: {\r\n color: rgbOverridden ? ColorDef.fromTbgr(entry[0] & 0xffffff) : undefined,\r\n weight: (entry[1] >>> 8) / 255.0,\r\n },\r\n specular: {\r\n color: ColorDef.fromTbgr(entry[2]),\r\n weight: ((entry[1] >>> 16) & 0xff) / 255.0,\r\n exponent: this.unpackFloat(entry[3]),\r\n },\r\n };\r\n const material = IModelApp.renderSystem.createRenderMaterial(args);\r\n return createSurfaceMaterial(material);\r\n }\r\n\r\n /** Construct the finished color table. */\r\n public buildAtlasTable(): MaterialAtlasTable {\r\n assert(this.materials.length > 0);\r\n const m = new Uint32Array(this.materials);\r\n return this.materials.length > 4 ? m : this.materialFromAtlasEntry(m);\r\n }\r\n}\r\n\r\n/** A node in a split vertex table. Each node corresponds to one or more elements. */\r\nclass Node {\r\n public readonly vertices: VertexBuffer;\r\n public readonly remappedIndices = new Map<number, number>();\r\n public readonly indices = new IndexBuffer();\r\n public readonly colors?: ColorTableRemapper;\r\n public readonly atlas?: MaterialAtlasRemapper;\r\n public readonly usesUnquantizedPositions?: boolean;\r\n\r\n /** `vertexTable` is the source table containing vertex data for all nodes, from which this node will extract the vertices belong to it. */\r\n public constructor(vertexTable: VertexTable, numColorsPrecedingAtlas: number | undefined) {\r\n this.vertices = new VertexBuffer(vertexTable);\r\n if (undefined === vertexTable.uniformColor)\r\n this.colors = new ColorTableRemapper(new Uint32Array(vertexTable.data.buffer, vertexTable.data.byteOffset + 4 * vertexTable.numVertices * vertexTable.numRgbaPerVertex));\r\n\r\n if (undefined !== numColorsPrecedingAtlas) {\r\n const atlasOffset = (vertexTable.numVertices * vertexTable.numRgbaPerVertex + numColorsPrecedingAtlas) * 4;\r\n this.atlas = new MaterialAtlasRemapper(new Uint32Array(vertexTable.data.buffer, vertexTable.data.byteOffset + atlasOffset));\r\n }\r\n\r\n this.usesUnquantizedPositions = vertexTable.usesUnquantizedPositions;\r\n }\r\n\r\n public addVertex(originalIndex: number, vertex: Uint32Array): void {\r\n let newIndex = this.remappedIndices.get(originalIndex);\r\n if (undefined === newIndex) {\r\n newIndex = this.vertices.length;\r\n this.remappedIndices.set(originalIndex, newIndex);\r\n\r\n this.colors?.remap(vertex, this.usesUnquantizedPositions);\r\n this.atlas?.remap(vertex, this.usesUnquantizedPositions);\r\n this.vertices.push(vertex);\r\n }\r\n\r\n this.indices.push(newIndex);\r\n }\r\n\r\n public buildOutput(maxDimension: number): VertexTableWithIndices {\r\n const materialAtlas = this.atlas?.buildAtlasTable();\r\n const material: SurfaceMaterial | undefined = (materialAtlas instanceof Uint32Array) ? undefined : materialAtlas;\r\n return {\r\n indices: this.indices.toVertexIndices(),\r\n vertices: this.vertices.buildVertexTable(maxDimension, this.colors?.buildColorTable(), materialAtlas),\r\n material,\r\n };\r\n }\r\n}\r\n\r\ninterface VertexTableSplitArgs extends VertexTableWithIndices {\r\n featureTable: RenderFeatureTable;\r\n atlasOffset?: number;\r\n}\r\n\r\nexport type ComputeAnimationNodeId = (featureIndex: number) => number;\r\n\r\nclass VertexTableSplitter {\r\n private readonly _input: VertexTableSplitArgs;\r\n private readonly _computeNodeId: ComputeAnimationNodeId;\r\n private readonly _nodes = new Map<number, Node>();\r\n\r\n private constructor(input: VertexTableSplitArgs, computeNodeId: ComputeAnimationNodeId) {\r\n this._input = input;\r\n this._computeNodeId = computeNodeId;\r\n }\r\n\r\n /** Split the source into one or more output nodes, returning a mapping of integer node Id to node. */\r\n public static split(source: VertexTableSplitArgs, computeNodeId: ComputeAnimationNodeId): Map<number, Node> {\r\n const splitter = new VertexTableSplitter(source, computeNodeId);\r\n splitter.split();\r\n return splitter._nodes;\r\n }\r\n\r\n private split(): void {\r\n // Track the most recent feature and corresponding node to avoid repeated lookups - vertices for\r\n // individual features are largely contiguous.\r\n const curState = {\r\n featureIndex: -1,\r\n node: undefined as unknown as Node,\r\n };\r\n\r\n const vertSize = this._input.vertices.numRgbaPerVertex;\r\n const vertex = new Uint32Array(vertSize);\r\n const vertexTable = new Uint32Array(this._input.vertices.data.buffer, this._input.vertices.data.byteOffset, this._input.vertices.numVertices * vertSize);\r\n\r\n for (const index of this._input.indices) {\r\n // Extract the data for this vertex without allocating new typed arrays.\r\n const vertexOffset = index * vertSize;\r\n for (let i = 0; i < vertex.length; i++)\r\n vertex[i] = vertexTable[vertexOffset + i];\r\n\r\n // Determine to which element the vertex belongs and find the corresponding Node.\r\n const featureIndex = vertex[2] & 0x00ffffff;\r\n if (curState.featureIndex !== featureIndex) {\r\n curState.featureIndex = featureIndex;\r\n const nodeId = this._computeNodeId(featureIndex);\r\n let node = this._nodes.get(nodeId);\r\n if (undefined === node)\r\n this._nodes.set(nodeId, node = new Node(this._input.vertices, this._input.atlasOffset));\r\n\r\n curState.node = node;\r\n }\r\n\r\n // Add the vertex to the appropriate node.\r\n curState.node.addVertex(index, vertex);\r\n }\r\n }\r\n}\r\n\r\nexport interface SplitVertexTableArgs {\r\n featureTable: RenderFeatureTable;\r\n maxDimension: number;\r\n computeNodeId: ComputeAnimationNodeId;\r\n}\r\n\r\nexport interface SplitPointStringArgs extends SplitVertexTableArgs {\r\n params: PointStringParams;\r\n}\r\n\r\n/** Given a PointStringParams and a function that can associate a node Id with an element Id, produce a mapping of nodes to PointStringParams, splitting up\r\n * the input params as needed.\r\n * @internal\r\n */\r\nexport function splitPointStringParams(args: SplitPointStringArgs): Map<number, PointStringParams> {\r\n const nodes = VertexTableSplitter.split({\r\n indices: args.params.indices,\r\n vertices: args.params.vertices,\r\n featureTable: args.featureTable,\r\n }, args.computeNodeId);\r\n\r\n const result = new Map<number, PointStringParams>();\r\n for (const [id, node] of nodes) {\r\n const { vertices, indices } = node.buildOutput(args.maxDimension);\r\n result.set(id, new PointStringParams(vertices, indices, args.params.weight));\r\n }\r\n\r\n return result;\r\n}\r\n\r\ninterface RemappedSegmentEdges {\r\n indices: IndexBuffer;\r\n endPointAndQuadIndices: Uint32ArrayBuilder;\r\n}\r\n\r\ninterface RemappedSilhouetteEdges extends RemappedSegmentEdges {\r\n normalPairs: Uint32ArrayBuilder;\r\n}\r\n\r\nclass RemappedPolylineEdges {\r\n public readonly indices = new IndexBuffer();\r\n public readonly prevIndices = new IndexBuffer();\r\n public readonly nextIndicesAndParams = new Uint32ArrayBuilder();\r\n}\r\n\r\ninterface RemappedIndexEdges {\r\n edges: Uint8ArrayBuilder;\r\n silhouettes: Uint8ArrayBuilder;\r\n}\r\n\r\ninterface RemappedEdges {\r\n segments?: RemappedSegmentEdges;\r\n silhouettes?: RemappedSilhouetteEdges;\r\n polylines?: RemappedPolylineEdges;\r\n indexed?: RemappedIndexEdges;\r\n}\r\n\r\ninterface RemappedIndex {\r\n node: Node;\r\n id: number;\r\n index: number;\r\n}\r\n\r\nfunction remapIndex(out: RemappedIndex, srcIndex: number, nodes: Map<number, Node>): boolean {\r\n for (const [id, node] of nodes) {\r\n const index = node.remappedIndices.get(srcIndex);\r\n if (undefined !== index) {\r\n out.index = index;\r\n out.node = node;\r\n out.id = id;\r\n return true;\r\n }\r\n }\r\n\r\n assert(false);\r\n return false;\r\n}\r\n\r\nfunction remapSegmentEdges(type: \"segments\" | \"silhouettes\", source: EdgeParams, nodes: Map<number, Node>, edges: Map<number, RemappedEdges>): void {\r\n const src = source[type];\r\n if (!src)\r\n return;\r\n\r\n const srcEndPts = new Uint32Array(src.endPointAndQuadIndices.buffer, src.endPointAndQuadIndices.byteOffset, src.endPointAndQuadIndices.length / 4);\r\n let srcNormalPairs;\r\n if (type === \"silhouettes\") {\r\n assert(undefined !== source.silhouettes);\r\n srcNormalPairs = new Uint32Array(source.silhouettes.normalPairs.buffer, source.silhouettes.normalPairs.byteOffset, source.silhouettes.normalPairs.length / 4);\r\n }\r\n\r\n let curIndexIndex = 0;\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n for (const srcIndex of src.indices) {\r\n if (remapIndex(remappedIndex, srcIndex, nodes)) {\r\n let endPointAndQuad = srcEndPts[curIndexIndex];\r\n const otherIndex = (endPointAndQuad & 0x00ffffff) >>> 0;\r\n const newOtherIndex = remappedIndex.node.remappedIndices.get(otherIndex);\r\n assert(undefined !== newOtherIndex);\r\n endPointAndQuad = (endPointAndQuad & 0xff000000) | newOtherIndex;\r\n\r\n let entry = edges.get(remappedIndex.id);\r\n if (!entry)\r\n edges.set(remappedIndex.id, entry = { });\r\n\r\n if (srcNormalPairs) {\r\n if (!entry.silhouettes)\r\n entry.silhouettes = { indices: new IndexBuffer(), endPointAndQuadIndices: new Uint32ArrayBuilder(), normalPairs: new Uint32ArrayBuilder() };\r\n\r\n entry.silhouettes.normalPairs.push(srcNormalPairs[curIndexIndex]);\r\n } else if (!entry.segments) {\r\n entry.segments = { indices: new IndexBuffer(), endPointAndQuadIndices: new Uint32ArrayBuilder() };\r\n }\r\n\r\n const segments = entry[type];\r\n assert(undefined !== segments);\r\n\r\n segments.indices.push(remappedIndex.index);\r\n segments.endPointAndQuadIndices.push(endPointAndQuad);\r\n }\r\n\r\n ++curIndexIndex;\r\n }\r\n}\r\n\r\nfunction remapPolylineEdges(src: TesselatedPolyline, nodes: Map<number, Node>, edges: Map<number, RemappedEdges>): void {\r\n const srcNextAndParam = new Uint32Array(src.nextIndicesAndParams.buffer, src.nextIndicesAndParams.byteOffset, src.nextIndicesAndParams.length / 4);\r\n const prevIter = src.prevIndices[Symbol.iterator]();\r\n let curIndexIndex = 0;\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n for (const srcIndex of src.indices) {\r\n if (remapIndex(remappedIndex, srcIndex, nodes)) {\r\n const prevIndex = prevIter.next().value;\r\n assert(undefined !== prevIndex);\r\n const newPrevIndex = remappedIndex.node.remappedIndices.get(prevIndex);\r\n assert(undefined !== newPrevIndex);\r\n\r\n let nextAndParam = srcNextAndParam[curIndexIndex];\r\n const nextIndex = (nextAndParam & 0x00ffffff) >>> 0;\r\n const newNextIndex = remappedIndex.node.remappedIndices.get(nextIndex);\r\n assert(undefined !== newNextIndex);\r\n nextAndParam = (nextAndParam & 0xff000000) | newNextIndex;\r\n\r\n let entry = edges.get(remappedIndex.id);\r\n if (!entry)\r\n edges.set(remappedIndex.id, entry = { });\r\n\r\n if (!entry.polylines)\r\n entry.polylines = new RemappedPolylineEdges();\r\n\r\n entry.polylines.indices.push(remappedIndex.index);\r\n entry.polylines.prevIndices.push(newPrevIndex);\r\n entry.polylines.nextIndicesAndParams.push(nextAndParam);\r\n }\r\n\r\n ++curIndexIndex;\r\n }\r\n}\r\n\r\nfunction remapIndexedEdges(src: IndexedEdgeParams, nodes: Map<number, Node>, edges: Map<number, RemappedEdges>): void {\r\n const srcEdgeData = src.edges.data;\r\n const numSegments = src.edges.numSegments;\r\n const silhouetteStartByteIndex = numSegments * 6 + src.edges.silhouettePadding;\r\n\r\n function getUint24EdgePair(byteIndex: number): [number, number] {\r\n return [srcEdgeData[byteIndex + 0] | (srcEdgeData[byteIndex + 1] << 8) | srcEdgeData[byteIndex + 2] << 16,\r\n srcEdgeData[byteIndex + 3] | (srcEdgeData[byteIndex + 4] << 8) | srcEdgeData[byteIndex + 5] << 16];\r\n }\r\n\r\n function setUint24EdgePair(indEdges: RemappedIndexEdges, value1: number, value2: number): void {\r\n indEdges.edges.push(value1 & 0x0000ff);\r\n indEdges.edges.push((value1 & 0x00ff00) >>> 8);\r\n indEdges.edges.push((value1 & 0xff0000) >>> 16);\r\n indEdges.edges.push(value2 & 0x0000ff);\r\n indEdges.edges.push((value2 & 0x00ff00) >>> 8);\r\n indEdges.edges.push((value2 & 0xff0000) >>> 16);\r\n }\r\n\r\n function getUint24SilPair(byteIndex: number): [number, number, number, number] {\r\n return [srcEdgeData[byteIndex + 0] | (srcEdgeData[byteIndex + 1] << 8) | srcEdgeData[byteIndex + 2] << 16,\r\n srcEdgeData[byteIndex + 3] | (srcEdgeData[byteIndex + 4] << 8) | srcEdgeData[byteIndex + 5] << 16,\r\n srcEdgeData[byteIndex + 6] | (srcEdgeData[byteIndex + 7] << 8), srcEdgeData[byteIndex + 8] | (srcEdgeData[byteIndex + 9] << 8)];\r\n }\r\n\r\n function setUint24SilPair(indSil: RemappedIndexEdges, value1: number, value2: number, norm1: number, norm2: number): void {\r\n indSil.silhouettes.push(value1 & 0x0000ff);\r\n indSil.silhouettes.push((value1 & 0x00ff00) >>> 8);\r\n indSil.silhouettes.push((value1 & 0xff0000) >>> 16);\r\n indSil.silhouettes.push(value2 & 0x0000ff);\r\n indSil.silhouettes.push((value2 & 0x00ff00) >>> 8);\r\n indSil.silhouettes.push((value2 & 0xff0000) >>> 16);\r\n indSil.silhouettes.push(norm1 & 0x0000ff);\r\n indSil.silhouettes.push((norm1 & 0x00ff00) >>> 8);\r\n indSil.silhouettes.push(norm2 & 0x0000ff);\r\n indSil.silhouettes.push((norm2 & 0x00ff00) >>> 8);\r\n }\r\n\r\n let maxIndex = 0;\r\n for (const srcIndex of src.indices)\r\n maxIndex = Math.max (srcIndex, maxIndex);\r\n\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n let es1Index = 0, es2Index = 0, n1 = 0, n2 = 0;\r\n for (let curSegment = 0, byteIndex = 0; curSegment <= maxIndex; ++curSegment) {\r\n if (curSegment < numSegments) { // edges\r\n [es1Index, es2Index] = getUint24EdgePair(byteIndex);\r\n byteIndex += 6;\r\n } else { // silhouettes\r\n byteIndex = silhouetteStartByteIndex + (curSegment - numSegments) * 10;\r\n [es1Index, es2Index, n1, n2] = getUint24SilPair(byteIndex);\r\n }\r\n\r\n if (remapIndex(remappedIndex, es1Index, nodes)) {\r\n let entry = edges.get(remappedIndex.id);\r\n if (!entry)\r\n edges.set(remappedIndex.id, entry = { });\r\n\r\n if (!entry.indexed)\r\n entry.indexed = { edges: new Uint8ArrayBuilder(), silhouettes: new Uint8ArrayBuilder() };\r\n\r\n if (curSegment < numSegments) { // edges\r\n const newE1Index = remappedIndex.node.remappedIndices.get(es1Index);\r\n assert(undefined !== newE1Index);\r\n const newE2Index = remappedIndex.node.remappedIndices.get(es2Index);\r\n assert(undefined !== newE2Index);\r\n setUint24EdgePair(entry.indexed, newE1Index, newE2Index);\r\n } else { // silhouettes\r\n const newS1Index = remappedIndex.node.remappedIndices.get(es1Index);\r\n assert(undefined !== newS1Index);\r\n const newS2Index = remappedIndex.node.remappedIndices.get(es2Index);\r\n assert(undefined !== newS2Index);\r\n setUint24SilPair(entry.indexed, newS1Index, newS2Index, n1, n2);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction splitEdges(source: EdgeParams, nodes: Map<number, Node>): Map<number, EdgeParams> {\r\n const edges = new Map<number, RemappedEdges>();\r\n remapSegmentEdges(\"segments\", source, nodes, edges);\r\n remapSegmentEdges(\"silhouettes\", source, nodes, edges);\r\n\r\n if (source.polylines)\r\n remapPolylineEdges(source.polylines, nodes, edges);\r\n\r\n if (source.indexed)\r\n remapIndexedEdges(source.indexed, nodes, edges);\r\n\r\n const result = new Map<number, EdgeParams>();\r\n for (const [id, remappedEdges] of edges) {\r\n if (!remappedEdges.segments && !remappedEdges.silhouettes && !remappedEdges.indexed)\r\n continue;\r\n\r\n let edgeTable = { } as unknown as EdgeTable;\r\n let edgeIndices = { } as unknown as VertexIndices;\r\n if (remappedEdges.indexed) {\r\n const numSegmentEdges = remappedEdges.indexed.edges.length / 6;\r\n const numSilhouettes = remappedEdges.indexed.silhouettes.length / 10;\r\n const { width, height, silhouettePadding, silhouetteStartByteIndex } = calculateEdgeTableParams(numSegmentEdges, numSilhouettes, IModelApp.renderSystem.maxTextureSize);\r\n const data = new Uint8Array(width * height * 4);\r\n data.set(remappedEdges.indexed.edges.toTypedArray(), 0);\r\n if (numSilhouettes > 0)\r\n data.set(remappedEdges.indexed.silhouettes.toTypedArray(), silhouetteStartByteIndex + silhouettePadding);\r\n\r\n const numTotalEdges = numSegmentEdges + numSilhouettes;\r\n edgeIndices = new VertexIndices(new Uint8Array(numTotalEdges * 6 * 3));\r\n for (let i = 0; i < numTotalEdges; i++)\r\n for (let j = 0; j < 6; j++)\r\n edgeIndices.setNthIndex(i * 6 + j, i);\r\n\r\n edgeTable = {\r\n data,\r\n width,\r\n height,\r\n numSegments: numSegmentEdges,\r\n silhouettePadding,\r\n };\r\n }\r\n\r\n result.set(id, {\r\n weight: source.weight,\r\n linePixels: source.linePixels,\r\n segments: remappedEdges.segments ? {\r\n indices: remappedEdges.segments.indices.toVertexIndices(),\r\n endPointAndQuadIndices: remappedEdges.segments.endPointAndQuadIndices.toUint8Array(),\r\n } : undefined,\r\n silhouettes: remappedEdges.silhouettes ? {\r\n indices: remappedEdges.silhouettes.indices.toVertexIndices(),\r\n endPointAndQuadIndices: remappedEdges.silhouettes.endPointAndQuadIndices.toUint8Array(),\r\n normalPairs: remappedEdges.silhouettes.normalPairs.toUint8Array(),\r\n } : undefined,\r\n polylines: remappedEdges.polylines ? {\r\n indices: remappedEdges.polylines.indices.toVertexIndices(),\r\n prevIndices: remappedEdges.polylines.prevIndices.toVertexIndices(),\r\n nextIndicesAndParams: remappedEdges.polylines.nextIndicesAndParams.toUint8Array(),\r\n } : undefined,\r\n indexed: remappedEdges.indexed ? {\r\n indices: edgeIndices,\r\n edges: edgeTable,\r\n } : undefined,\r\n });\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport interface SplitMeshArgs extends SplitVertexTableArgs {\r\n params: MeshParams;\r\n}\r\n\r\nexport function splitMeshParams(args: SplitMeshArgs): Map<number, MeshParams> {\r\n const result = new Map<number, MeshParams>();\r\n\r\n const mat = args.params.surface.material;\r\n const atlasOffset = undefined !== mat && mat.isAtlas ? mat.vertexTableOffset : undefined;\r\n\r\n const nodes = VertexTableSplitter.split({\r\n indices: args.params.surface.indices,\r\n vertices: args.params.vertices,\r\n featureTable: args.featureTable,\r\n atlasOffset,\r\n }, args.computeNodeId);\r\n\r\n const edges = args.params.edges ? splitEdges(args.params.edges, nodes) : undefined;\r\n\r\n for (const [id, node] of nodes) {\r\n const { vertices, indices, material } = node.buildOutput(args.maxDimension);\r\n const params = new MeshParams(\r\n vertices, {\r\n type: args.params.surface.type,\r\n indices,\r\n fillFlags: args.params.surface.fillFlags,\r\n hasBakedLighting: args.params.surface.hasBakedLighting,\r\n textureMapping: args.params.surface.textureMapping,\r\n material: material !== undefined ? material : args.params.surface.material,\r\n },\r\n edges?.get(id),\r\n args.params.isPlanar,\r\n // ###TODO handle aux channels.......\r\n args.params.auxChannels,\r\n );\r\n\r\n result.set(id, params);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport interface SplitPolylineArgs extends SplitVertexTableArgs {\r\n params: PolylineParams;\r\n}\r\n\r\ninterface PolylineNode extends Node {\r\n prevIndices?: IndexBuffer;\r\n nextIndicesAndParams?: Uint32ArrayBuilder;\r\n}\r\n\r\nexport function splitPolylineParams(args: SplitPolylineArgs): Map<number, PolylineParams> {\r\n const nodes = VertexTableSplitter.split({\r\n indices: args.params.polyline.indices,\r\n vertices: args.params.vertices,\r\n featureTable: args.featureTable,\r\n }, args.computeNodeId) as Map<number, PolylineNode>;\r\n\r\n const src = args.params.polyline;\r\n const srcNextAndParam = new Uint32Array(src.nextIndicesAndParams.buffer, src.nextIndicesAndParams.byteOffset, src.nextIndicesAndParams.length / 4);\r\n let curIndexIndex = 0;\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n for (const prevIndex of src.prevIndices) {\r\n if (remapIndex(remappedIndex, prevIndex, nodes)) {\r\n const node = remappedIndex.node as PolylineNode;\r\n if (!node.prevIndices) {\r\n assert(undefined === node.nextIndicesAndParams);\r\n node.prevIndices = new IndexBuffer(node.indices.numIndices);\r\n node.nextIndicesAndParams = new Uint32ArrayBuilder({ initialCapacity: node.indices.numIndices });\r\n } else {\r\n assert(undefined !== node.nextIndicesAndParams);\r\n }\r\n\r\n node.prevIndices.push(remappedIndex.index);\r\n\r\n let nextAndParam = srcNextAndParam[curIndexIndex];\r\n const nextIndex = (nextAndParam & 0x00ffffff) >>> 0;\r\n const newNextIndex = remappedIndex.node.remappedIndices.get(nextIndex);\r\n assert(undefined !== newNextIndex);\r\n nextAndParam = (nextAndParam & 0xff000000) | newNextIndex;\r\n node.nextIndicesAndParams.push(nextAndParam);\r\n }\r\n\r\n ++curIndexIndex;\r\n }\r\n\r\n const result = new Map<number, PolylineParams>();\r\n for (const [id, node] of nodes) {\r\n assert(undefined !== node.prevIndices && undefined !== node.nextIndicesAndParams);\r\n const { vertices, indices } = node.buildOutput(args.maxDimension);\r\n const params = new PolylineParams(\r\n vertices, {\r\n indices,\r\n prevIndices: node.prevIndices.toVertexIndices(),\r\n nextIndicesAndParams: node.nextIndicesAndParams.toUint8Array(),\r\n },\r\n args.params.weight,\r\n args.params.linePixels,\r\n args.params.isPlanar,\r\n args.params.type);\r\n\r\n result.set(id, params);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FrontendLoggerCategory.d.ts","sourceRoot":"","sources":["../../src/FrontendLoggerCategory.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;;;GAKG;AACH,oBAAY,sBAAsB;IAChC,OAAO,kBAAkB;IAEzB,4FAA4F;IAC5F,gBAAgB,mCAAmC;IAEnD,6CAA6C;IAC7C,SAAS,4BAA4B;IAErC,4DAA4D;IAC5D,OAAO,0BAA0B;IAEjC;;;OAGG;IACH,eAAe,kCAAkC;IACjD;;;OAGG;IACH,WAAW,8BAA8B;IAEzC,qEAAqE;IACrE,MAAM,yBAAyB;IAE/B;;OAEG;IACH,UAAU,6BAA6B;CACxC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FrontendLoggerCategory.js","sourceRoot":"","sources":["../../src/FrontendLoggerCategory.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,sBA8BX;AA9BD,WAAY,sBAAsB;IAChC,mDAAyB,CAAA;IAEzB,4FAA4F;IAC5F,6EAAmD,CAAA;IAEnD,6CAA6C;IAC7C,+DAAqC,CAAA;IAErC,4DAA4D;IAC5D,2DAAiC,CAAA;IAEjC;;;OAGG;IACH,2EAAiD,CAAA;IACjD;;;OAGG;IACH,mEAAyC,CAAA;IAEzC,qEAAqE;IACrE,yDAA+B,CAAA;IAE/B;;OAEG;IACH,iEAAuC,CAAA;AACzC,CAAC,EA9BW,sBAAsB,KAAtB,sBAAsB,QA8BjC","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 Logging\r\n */\r\n\r\n/** Logger categories used by this package\r\n * @note All logger categories in this package start with the `core-frontend` prefix.\r\n * @see [Logger]($bentley)\r\n * @public\r\n * @extensions\r\n */\r\nexport enum FrontendLoggerCategory {\r\n Package = \"core-frontend\",\r\n\r\n /** The logger category used by the [[IModelConnection]] class and other related classes. */\r\n IModelConnection = \"core-frontend.IModelConnection\",\r\n\r\n /** The logger category used for NativeApp */\r\n NativeApp = \"core-frontend.NativeApp\",\r\n\r\n /** The logger category used for making network requests. */\r\n Request = \"core-frontend.Request\",\r\n\r\n /**\r\n * The logger category used by FeatureTrackingManager\r\n * @alpha\r\n */\r\n FeatureTracking = \"core-frontend.FeatureTracking\",\r\n /**\r\n * The logger category used by RealityData\r\n * @alpha\r\n */\r\n RealityData = \"core-frontend.RealityData\",\r\n\r\n /** The logger category used for creating and displaying graphics. */\r\n Render = \"core-frontend.Render\",\r\n\r\n /** The logger category used for loading and executing Extensions\r\n * @alpha\r\n */\r\n Extensions = \"core-frontend.Extensions\",\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageUtil.d.ts","sourceRoot":"","sources":["../../src/ImageUtil.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA8BtC;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,UAAoB,EAAE,QAAQ,SAAY,GAAG,iBAAiB,CAoBpK;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,GAAE,OAAc,GAAG,iBAAiB,GAAG,SAAS,CA8BrH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,oBAAyB,GAAG,WAAW,GAAG,SAAS,CA0CvH;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAWxE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAO/F;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGhG;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAM1F;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,UAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAc9G;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,UAAQ,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAM7H;AACD;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,UAAO,GAAG,MAAM,GAAG,SAAS,CAIrG;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,UAAO,GAAG,MAAM,GAAG,SAAS,CAO3G;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAU7E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,SAAM,GAAG,QAAQ,CAUnF;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,SAAQ,EAAE,qBAAqB,SAAM,GAAG,MAAM,GAAG,SAAS,CAexI"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImageUtil.js","sourceRoot":"","sources":["../../src/ImageUtil.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Point2d } from \"@itwin/core-geometry\";\r\nimport { ImageBuffer, ImageBufferFormat, ImageSource, ImageSourceFormat } from \"@itwin/core-common\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\ninterface Rgba {\r\n r: number;\r\n g: number;\r\n b: number;\r\n a: number;\r\n}\r\n\r\nconst scratchRgba = { r: 0, g: 0, b: 0, a: 0 };\r\n\r\nfunction rgbaFromAlpha(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgba.r = rgba.g = rgba.b = rgba.a = src[idx];\r\n return idx + 1;\r\n}\r\n\r\nfunction rgbaFromRgb(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgba.r = src[idx + 0];\r\n rgba.g = src[idx + 1];\r\n rgba.b = src[idx + 2];\r\n rgba.a = 255;\r\n return idx + 3;\r\n}\r\n\r\nfunction rgbaFromRgba(rgba: Rgba, src: Uint8Array, idx: number): number {\r\n rgbaFromRgb(rgba, src, idx);\r\n rgba.a = src[idx + 3];\r\n return idx + 4;\r\n}\r\n\r\n/** Resize a canvas to a desired size. The final size will be targetSize plus barSize. The original canvas is left untouched and a new, resized canvas with potential side bars is returned.\r\n * @param canvasIn the source [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) to resize.\r\n * @param targetSize the desired new size for the canvas image.\r\n * @param barSize total size of side bars to add to the image in width and height; defaults to (0, 0). For example, if you specify (2, 0), a 1 pixel side bar will be added to the left and right sides of the resized image. If an odd dimension is specified, the left or upper side of the image will be one pixel larger than the opposite side. For example, if you specify (1, 0), a 1 pixel side bar will be added to the left side of the image and a 0 pixel side bar will be added to the right side of the image.\r\n * @param barStyle CSS style string to apply to any side bars; defaults to \"#C0C0C0\", which is silver.\r\n * @returns an [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object containing the resized image and any requested side bars.\r\n * @public\r\n * @extensions\r\n */\r\nexport function canvasToResizedCanvasWithBars(canvasIn: HTMLCanvasElement, targetSize: Point2d, barSize = new Point2d(0, 0), barStyle = \"#C0C0C0\"): HTMLCanvasElement {\r\n const canvasOut = document.createElement(\"canvas\");\r\n canvasOut.width = targetSize.x + barSize.x;\r\n canvasOut.height = targetSize.y + barSize.y;\r\n\r\n let adjustImageX = barSize.x / 2;\r\n let adjustImageY = barSize.y / 2;\r\n\r\n if (1 === barSize.x % 2) {\r\n adjustImageX += 0.5;\r\n }\r\n if (1 === barSize.y % 2) {\r\n adjustImageY += 0.5;\r\n }\r\n\r\n const context = canvasOut.getContext(\"2d\")!;\r\n context.fillStyle = barStyle;\r\n context.fillRect(0, 0, canvasOut.width, canvasOut.height);\r\n context.drawImage(canvasIn, adjustImageX, adjustImageY, targetSize.x, targetSize.y);\r\n return canvasOut;\r\n}\r\n\r\n/** Create a canvas element with the same dimensions and contents as an image buffer.\r\n * @param buffer the source [[ImageBuffer]] object from which the [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object will be constructed.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImageBuffer]]).\r\n * @returns an [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object containing the contents of the source image buffer, or undefined if the conversion fails.\r\n * @public\r\n * @extensions\r\n */\r\nexport function imageBufferToCanvas(buffer: ImageBuffer, preserveAlpha: boolean = true): HTMLCanvasElement | undefined {\r\n const canvas = document.createElement(\"canvas\");\r\n if (null === canvas)\r\n return undefined;\r\n\r\n canvas.width = buffer.width;\r\n canvas.height = buffer.height;\r\n\r\n const context = canvas.getContext(\"2d\");\r\n if (null === context)\r\n return undefined;\r\n\r\n const imageData = context.createImageData(buffer.width, buffer.height);\r\n const extractRgba = ImageBufferFormat.Alpha === buffer.format ? rgbaFromAlpha : (ImageBufferFormat.Rgb === buffer.format ? rgbaFromRgb : rgbaFromRgba);\r\n\r\n const bufferData = buffer.data;\r\n let i = 0;\r\n let j = 0;\r\n const rgba = scratchRgba;\r\n while (i < bufferData.length) {\r\n i = extractRgba(rgba, bufferData, i);\r\n imageData.data[j + 0] = rgba.r;\r\n imageData.data[j + 1] = rgba.g;\r\n imageData.data[j + 2] = rgba.b;\r\n imageData.data[j + 3] = preserveAlpha ? rgba.a : 0xff;\r\n j += 4;\r\n }\r\n\r\n context.putImageData(imageData, 0, 0);\r\n return canvas;\r\n}\r\n\r\n/** Create an ImageBuffer in the specified format with the same dimensions and contents as a canvas.\r\n * @param canvas the source [HTMLCanvasElement](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement) object from which the [[ImageBuffer]] object will be constructed.\r\n * @param format the desired format of the created ImageBuffer; defaults to [[ImageBufferFormat.Rgba]].\r\n * @returns an [[ImageBuffer]] object containing the contents of the source canvas, or undefined if the conversion fails.\r\n * @public\r\n * @extensions\r\n */\r\nexport function canvasToImageBuffer(canvas: HTMLCanvasElement, format = ImageBufferFormat.Rgba): ImageBuffer | undefined {\r\n const context = canvas.getContext(\"2d\");\r\n if (null === context)\r\n return undefined;\r\n\r\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\r\n\r\n let imageBufferData: Uint8Array | undefined;\r\n\r\n if (ImageBufferFormat.Rgba === format) {\r\n imageBufferData = new Uint8Array(imageData.data.length);\r\n } else if (ImageBufferFormat.Rgb === format) {\r\n imageBufferData = new Uint8Array((imageData.data.length / 4) * 3);\r\n } else if (ImageBufferFormat.Alpha === format) {\r\n imageBufferData = new Uint8Array(imageData.data.length / 4);\r\n }\r\n\r\n if (undefined === imageBufferData)\r\n return undefined;\r\n\r\n let i = 0;\r\n let j = 0;\r\n while (i < imageData.data.length) {\r\n if (ImageBufferFormat.Rgba === format) {\r\n imageBufferData[j + 0] = imageData.data[i + 0];\r\n imageBufferData[j + 1] = imageData.data[i + 1];\r\n imageBufferData[j + 2] = imageData.data[i + 2];\r\n imageBufferData[j + 3] = imageData.data[i + 3];\r\n j += 4;\r\n } else if (ImageBufferFormat.Rgb === format) {\r\n imageBufferData[j + 0] = imageData.data[i + 0];\r\n imageBufferData[j + 1] = imageData.data[i + 1];\r\n imageBufferData[j + 2] = imageData.data[i + 2];\r\n j += 3;\r\n } else if (ImageBufferFormat.Alpha === format) {\r\n imageBufferData[j] = imageData.data[i + 3];\r\n j++;\r\n }\r\n i += 4;\r\n }\r\n\r\n return ImageBuffer.create(imageBufferData, format, canvas.width);\r\n}\r\n\r\n/** Get a string describing the mime type associated with an ImageSource format.\r\n * @public\r\n * @extensions\r\n */\r\nexport function getImageSourceMimeType(format: ImageSourceFormat): string {\r\n\r\n switch (format) {\r\n case ImageSourceFormat.Jpeg:\r\n return \"image/jpeg\";\r\n case ImageSourceFormat.Png:\r\n return \"image/png\";\r\n case ImageSourceFormat.Svg:\r\n return \"image/svg+xml;charset=utf-8\";\r\n }\r\n return \"\";\r\n}\r\n\r\n/** Get the ImageSourceFormat corresponding to the mime type string, or undefined if the string does not identify a supported ImageSourceFormat.\r\n * @public\r\n * @extensions\r\n */\r\nexport function getImageSourceFormatForMimeType(mimeType: string): ImageSourceFormat | undefined {\r\n switch (mimeType) {\r\n case \"image/jpeg\": return ImageSourceFormat.Jpeg;\r\n case \"image/png\": return ImageSourceFormat.Png;\r\n case \"image/svg+xml;charset=utf-8\": return ImageSourceFormat.Svg;\r\n default: return undefined;\r\n }\r\n}\r\n\r\n/** Extract an html Image element from a binary jpeg or png.\r\n * @param source The ImageSource containing the binary jpeg or png data.\r\n * @returns a Promise which resolves to an HTMLImageElement containing the uncompressed bitmap image in RGBA format.\r\n * @public\r\n * @extensions\r\n */\r\nexport async function imageElementFromImageSource(source: ImageSource): Promise<HTMLImageElement> {\r\n const blob = new Blob([source.data], { type: getImageSourceMimeType(source.format) });\r\n return imageElementFromUrl(URL.createObjectURL(blob));\r\n}\r\n\r\n/** Extract a bitmap from a binary jpeg or png.\r\n * @param source The ImageSource containing the binary jpeg or png data.\r\n * @returns a Promise which resolves to an ImageBitmap containing the uncompressed bitmap image in RGBA format.\r\n * @public\r\n */\r\nexport async function imageBitmapFromImageSource(source: ImageSource): Promise<ImageBitmap> {\r\n const blob = new Blob([source.data], { type: getImageSourceMimeType(source.format) });\r\n return createImageBitmap(blob, {\r\n premultiplyAlpha: \"none\",\r\n colorSpaceConversion: \"none\",\r\n });\r\n}\r\n\r\n/** Create an html Image element from a URL.\r\n * @param url The URL pointing to the image data.\r\n * @param skipCrossOriginCheck Set this to true to allow an image from a different origin than the web app to load. Default is false.\r\n * @returns A Promise resolving to an HTMLImageElement when the image data has been loaded from the URL.\r\n * @see tryImageElementFromUrl.\r\n * @public\r\n * @extensions\r\n */\r\nexport async function imageElementFromUrl(url: string, skipCrossOriginCheck = false): Promise<HTMLImageElement> {\r\n // We must set crossorigin property so that images loaded from same origin can be used with texImage2d.\r\n // We must do that outside of the promise constructor or it won't work, for reasons.\r\n const image = new Image();\r\n if (!skipCrossOriginCheck) {\r\n image.crossOrigin = \"anonymous\";\r\n }\r\n return new Promise((resolve: (image: HTMLImageElement) => void, reject) => {\r\n image.onload = () => resolve(image);\r\n\r\n // The \"error\" produced by Image is not an Error. It looks like an Event, but isn't one.\r\n image.onerror = () => reject(new Error(\"Failed to create image from url\"));\r\n image.src = url;\r\n });\r\n}\r\n\r\n/** Try to create an html Image element from a URL.\r\n * @param url The URL pointing to the image data.\r\n * @param skipCrossOriginCheck Set this to true to allow an image from a different origin than the web app to load. Default is false.\r\n * @returns A Promise resolving to an HTMLImageElement when the image data has been loaded from the URL, or to `undefined` if an exception occurred.\r\n * @see imageElementFromUrl\r\n * @public\r\n */\r\nexport async function tryImageElementFromUrl(url: string, skipCrossOriginCheck = false): Promise<HTMLImageElement | undefined> {\r\n try {\r\n return await imageElementFromUrl(url, skipCrossOriginCheck);\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n/**\r\n * Extract the dimensions of the jpeg or png data encoded in an ImageSource.\r\n * @param source The ImageSource containing the binary jpeg or png data.\r\n * @returns a Promise resolving to a Point2d of which x corresponds to the integer width of the uncompressed bitmap and y to the height.\r\n * @public\r\n * @extensions\r\n */\r\nexport async function extractImageSourceDimensions(source: ImageSource): Promise<Point2d> {\r\n const image = await imageElementFromImageSource(source);\r\n return new Point2d(image.naturalWidth, image.naturalHeight);\r\n}\r\n\r\n/**\r\n * Produces a data url in \"image/png\" format from the contents of an ImageBuffer.\r\n * @param buffer The ImageBuffer, of any format.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImageBuffer]]).\r\n * @returns a data url as a string suitable for setting as the `src` property of an HTMLImageElement, or undefined if the url could not be created.\r\n * @public\r\n * @extensions\r\n */\r\nexport function imageBufferToPngDataUrl(buffer: ImageBuffer, preserveAlpha = true): string | undefined {\r\n // The default format (and the only format required to be supported) for toDataUrl() is \"image/png\".\r\n const canvas = imageBufferToCanvas(buffer, preserveAlpha);\r\n return undefined !== canvas ? canvas.toDataURL() : undefined;\r\n}\r\n\r\n/**\r\n * Converts the contents of an ImageBuffer to PNG format.\r\n * @param buffer The ImageBuffer, of any format.\r\n * @param preserveAlpha If false, the alpha channel will be set to 255 (fully opaque). This is recommended when converting an already-blended image (e.g., one obtained from [[Viewport.readImageBuffer]]).\r\n * @returns a base64-encoded string representing the image as a PNG, or undefined if the conversion failed.\r\n * @public\r\n * @extensions\r\n */\r\nexport function imageBufferToBase64EncodedPng(buffer: ImageBuffer, preserveAlpha = true): string | undefined {\r\n const urlPrefix = \"data:image/png;base64,\";\r\n const url = imageBufferToPngDataUrl(buffer, preserveAlpha);\r\n if (undefined === url || !url.startsWith(urlPrefix))\r\n return undefined;\r\n\r\n return url.substring(urlPrefix.length);\r\n}\r\n\r\n/** Open an image specified as a data URL in a new window or tab. Works around differences between browsers and Electron.\r\n * @param url The base64-encoded image URL.\r\n * @param title An optional title to apply to the new window.\r\n * @beta\r\n */\r\nexport function openImageDataUrlInNewWindow(url: string, title?: string): void {\r\n const win = window.open();\r\n if (null === win)\r\n return;\r\n\r\n const div = win.document.createElement(\"div\");\r\n div.innerHTML = `<img src='${url}'/>`;\r\n win.document.body.append(div);\r\n if (undefined !== title)\r\n win.document.title = title;\r\n}\r\n\r\n/** Determine the maximum [[ViewRect]] that can be fitted and centered in specified ViewRect given a required aspect ratio.\r\n * @param viewRect The rectangle in which the returned rectangle is to be centered and fitted.\r\n * @param aspectRatio Ratio of width to height.\r\n * @returns A ViewRect centered in the input rectangle.\r\n * @public\r\n */\r\nexport function getCenteredViewRect(viewRect: ViewRect, aspectRatio = 1.4): ViewRect {\r\n // Determine scale that ensures ability to return an image with the prescribed aspectRatio\r\n const scale = Math.min(viewRect.width / aspectRatio, viewRect.height);\r\n const finalWidth = scale * aspectRatio;\r\n const finalHeight = scale;\r\n const left = (viewRect.width - finalWidth) / 2.0;\r\n const right = left + finalWidth;\r\n const top = (viewRect.height - finalHeight) / 2.0;\r\n const bottom = top + finalHeight;\r\n return new ViewRect(left, top, right, bottom);\r\n}\r\n\r\n/** Produce a jpeg compressed to no more than specified bytes and of no less than specified quality.\r\n * @param canvas Canvas containing the image to be compressed.\r\n * @param maxBytes Maximum size of output jpeg in bytes.\r\n * @param minCompressionQuality The minimum acceptable image quality as a number between 0 (lowest quality) and 1 (highest quality).\r\n * @returns A [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) for the image, or `undefined` if the compression and size constraints could not be met.\r\n * @public\r\n * @extensions\r\n */\r\nexport function getCompressedJpegFromCanvas(canvas: HTMLCanvasElement, maxBytes = 60000, minCompressionQuality = 0.1): string | undefined {\r\n const decrements = 0.1; // Decrements of quality\r\n const bytesPerCharacter = 2; // Assume 16-bit per character\r\n let quality = 1.0; // JPEG Compression quality\r\n\r\n while (quality > minCompressionQuality) {\r\n const data = canvas.toDataURL(\"image/jpeg\", quality);\r\n // If we are less than 60 Kb, we are good\r\n if (data.length * bytesPerCharacter < maxBytes)\r\n return data;\r\n\r\n quality -= decrements;\r\n }\r\n\r\n return undefined;\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ViewRect.d.ts","sourceRoot":"","sources":["../../src/ViewRect.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,IAAI;IAIZ,gCAAgC;gBACb,IAAI,SAAI,EAAE,GAAG,SAAI,EAAE,KAAK,SAAI,EAAE,MAAM,SAAI;IAC3D,0CAA0C;IAC1C,IAAW,IAAI,IAAI,MAAM,CAAuB;IAChD,IAAW,IAAI,CAAC,GAAG,EAAE,MAAM,EAA8B;IACzD,yCAAyC;IACzC,IAAW,GAAG,IAAI,MAAM,CAAsB;IAC9C,IAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAA6B;IACvD,2CAA2C;IAC3C,IAAW,KAAK,IAAI,MAAM,CAAwB;IAClD,IAAW,KAAK,CAAC,GAAG,EAAE,MAAM,EAA+B;IAC3D,4CAA4C;IAC5C,IAAW,MAAM,IAAI,MAAM,CAAyB;IACpD,IAAW,MAAM,CAAC,GAAG,EAAE,MAAM,EAAgC;IAC7D,8CAA8C;IAC9C,IAAW,MAAM,IAAI,OAAO,CAA+D;IAC3F,wBAAwB;IACxB,IAAW,OAAO,IAAI,OAAO,CAAyB;IACtD,+CAA+C;IAC/C,IAAW,KAAK,IACQ,MAAM,CADuB;IACrD,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,EAAqC;IACnE,gDAAgD;IAChD,IAAW,MAAM,IACS,MAAM,CADsB;IACtD,IAAW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAsC;IACtE,wDAAwD;IACxD,IAAW,MAAM,WAA2D;IAC5E,gDAAgD;IAChD,IAAW,IAAI,WAAyD;IACxE,0EAA0E;IACnE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMpE;;;OAGG;IACI,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,GAAG,IAAI;IAC/D;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAC/C;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IACvC,sDAAsD;IAC/C,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IACrC;;OAEG;IACI,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ;IAOlC,MAAM,CAAC,KAAK,EAAE,QAAQ;IAW7B;;;OAGG;IACI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAalD;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAEzC,0EAA0E;IACnE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ7D;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAE5C,8FAA8F;IACvF,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAE5C;;;OAGG;IACI,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAE3C,wDAAwD;IACjD,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAEzC;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;CAgB7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ViewRect.js","sourceRoot":"","sources":["../../src/ViewRect.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Views\r\n */\r\n\r\nimport { LowAndHighXY, XAndY } from \"@itwin/core-geometry\";\r\n\r\n/** A rectangle in unsigned integer view coordinates with (0,0) corresponding to the top-left corner of the view.\r\n * Increasing **x** moves from left to right, and increasing **y** moves from top to bottom.\r\n * [[left]], [[top]], [[right]], and [[bottom]] are required to be non-negative integers; any negative inputs are treated as\r\n * zero and any non-integer inputs are rounded down to the nearest integer.\r\n * @public\r\n * @extensions\r\n */\r\nexport class ViewRect {\r\n private _left!: number;\r\n private _top!: number;\r\n private _right!: number;\r\n private _bottom!: number;\r\n\r\n private _set(key: \"_left\" | \"_right\" | \"_top\" | \"_bottom\", value: number): void {\r\n this[key] = Math.max(0, Math.floor(value));\r\n }\r\n\r\n /** Construct a new ViewRect. */\r\n public constructor(left = 0, top = 0, right = 0, bottom = 0) { this.init(left, top, right, bottom); }\r\n /** The leftmost side of this ViewRect. */\r\n public get left(): number { return this._left; }\r\n public set left(val: number) { this._set(\"_left\", val); }\r\n /** The topmost side of this ViewRect. */\r\n public get top(): number { return this._top; }\r\n public set top(val: number) { this._set(\"_top\", val); }\r\n /** The rightmost side of this ViewRect. */\r\n public get right(): number { return this._right; }\r\n public set right(val: number) { this._set(\"_right\", val); }\r\n /** The bottommost side of this ViewRect. */\r\n public get bottom(): number { return this._bottom; }\r\n public set bottom(val: number) { this._set(\"_bottom\", val); }\r\n /** True if this ViewRect has an area <= 0. */\r\n public get isNull(): boolean { return this.right <= this.left || this.bottom <= this.top; }\r\n /** True if `!isNull` */\r\n public get isValid(): boolean { return !this.isNull; }\r\n /** The width (right-left) of this ViewRect. */\r\n public get width() { return this.right - this.left; }\r\n public set width(width: number) { this.right = this.left + width; }\r\n /** The height (bottom-top) of this ViewRect. */\r\n public get height() { return this.bottom - this.top; }\r\n public set height(height: number) { this.bottom = this.top + height; }\r\n /** The aspect ratio (width/height) of this ViewRect. */\r\n public get aspect() { return this.isNull ? 1.0 : this.width / this.height; }\r\n /** The area (width*height) of this ViewRect. */\r\n public get area() { return this.isNull ? 0 : this.width * this.height; }\r\n /** Initialize this ViewRect from its left/top/right/bottom parameters. */\r\n public init(left: number, top: number, right: number, bottom: number) {\r\n this.left = left;\r\n this.bottom = bottom, this.right = right;\r\n this.top = top;\r\n }\r\n\r\n /** Initialize this ViewRect from two points.\r\n * @param topLeft The top-left corner.\r\n * @param bottomRight The bottom-right corner.\r\n */\r\n public initFromPoints(topLeft: XAndY, bottomRight: XAndY): void { this.init(topLeft.x, topLeft.y, bottomRight.x, bottomRight.y); }\r\n /** Initialize this ViewRect from a range.\r\n * @param input The Range to use. `input.low` defines the top-left and `input.high` defines the bottom-right.\r\n */\r\n public initFromRange(input: LowAndHighXY): void { this.initFromPoints(input.low, input.high); }\r\n /** Return true is this ViewRect is exactly equal to another ViewRect.\r\n * @param other The other ViewRect to compare\r\n */\r\n public equals(other: ViewRect): boolean { return this.left === other.left && this.right === other.right && this.bottom === other.bottom && this.top === other.top; }\r\n /** Initialize this ViewRect from another ViewRect. */\r\n public setFrom(other: ViewRect): void { this.init(other.left, other.top, other.right, other.bottom); }\r\n /** Duplicate this ViewRect.\r\n * @param result Optional ViewRect for result. If undefined, a new ViewRect is created.\r\n */\r\n public clone(result?: ViewRect): ViewRect {\r\n if (undefined !== result) {\r\n result.setFrom(this);\r\n return result;\r\n }\r\n return new ViewRect(this.left, this.top, this.right, this.bottom);\r\n }\r\n public extend(other: ViewRect) {\r\n if (this.left > other.left)\r\n this.left = other.left;\r\n if (this.top > other.top)\r\n this.top = other.top;\r\n if (this.right < other.right)\r\n this.right = other.right;\r\n if (this.bottom < other.bottom)\r\n this.bottom = other.bottom;\r\n }\r\n\r\n /** Inset this ViewRect by values in the x and y directions. Positive values make the ViewRect smaller, and negative values will make it larger.\r\n * @param deltaX The distance to inset the ViewRect in the x direction.\r\n * @param deltaY The distance to inset the ViewRect in the y direction.\r\n */\r\n public inset(deltaX: number, deltaY: number): void {\r\n deltaX = Math.floor(deltaX);\r\n deltaY = Math.floor(deltaY);\r\n if (this.width - 2 * deltaX <= 0 || this.height - 2 * deltaY <= 0) {\r\n this.init(0, 0, 0, 0);\r\n return;\r\n }\r\n this._left += deltaX;\r\n this._right -= deltaX;\r\n this._top += deltaY;\r\n this._bottom -= deltaY;\r\n }\r\n\r\n /** Inset this ViewRect by the same value in all directions.\r\n * @param offset The distance to inset this ViewRect. Positive values will make this ViewRect smaller and negative values will make it larger.\r\n * @note The inset operation can cause a previously valid ViewRect to become invalid.\r\n */\r\n public insetUniform(offset: number): void { this.inset(offset, offset); }\r\n\r\n /** Scale this ViewRect about its center by the supplied scale factors. */\r\n public scaleAboutCenter(xScale: number, yScale: number): void {\r\n const w = this.width;\r\n const h = this.height;\r\n const xDelta = (w - (w * xScale)) * 0.5;\r\n const yDelta = (h - (h * yScale)) * 0.5;\r\n this.inset(xDelta, yDelta);\r\n }\r\n\r\n /** Inset this ViewRect by a percentage of its current width.\r\n * @param percent The percentage of this ViewRect's width to inset in all directions.\r\n * @note The ViewRect will become smaller (or larger, if percent is negative) by `percent * width * 2` in each direction, since each side is moved by that distance.\r\n * @see [[inset]]\r\n */\r\n public insetByPercent(percent: number): void { this.insetUniform(this.width * percent); }\r\n\r\n /** Determine if this ViewRect is entirely contained within the bounds of another ViewRect. */\r\n public isContained(other: ViewRect): boolean { return this.left >= other.left && this.right <= other.right && this.bottom <= other.bottom && this.top >= other.top; }\r\n\r\n /** Return true if the supplied point is contained in this ViewRect.\r\n * @param point The point to test.\r\n * @note if the point is exactly on the left or top edges, this method returns true. If the point is exactly on the right or bottom edge, it returns false.\r\n */\r\n public containsPoint(point: XAndY): boolean { return point.x >= this.left && point.x < this.right && point.y >= this.top && point.y < this.bottom; }\r\n\r\n /** Determine whether this ViewRect overlaps another. */\r\n public overlaps(other: ViewRect): boolean { return this.left <= other.right && this.top <= other.bottom && this.right >= other.left && this.bottom >= other.top; }\r\n\r\n /** Return a ViewRect that is the overlap (intersection) of this ViewRect and another ViewRect.\r\n * If the two ViewRects are equal, their value is the result. Otherwise, the result will always be smaller than either of them.\r\n */\r\n public computeOverlap(other: ViewRect, out?: ViewRect): ViewRect | undefined {\r\n const maxOrgX = Math.max(this.left, other.left);\r\n const maxOrgY = Math.max(this.top, other.top);\r\n const minCrnX = Math.min(this.right, other.right);\r\n const minCrnY = Math.min(this.bottom, other.bottom);\r\n\r\n if (maxOrgX > minCrnX || maxOrgY > minCrnY)\r\n return undefined;\r\n\r\n const result = undefined !== out ? out : new ViewRect();\r\n result.left = maxOrgX;\r\n result.right = minCrnX;\r\n result.top = maxOrgY;\r\n result.bottom = minCrnY;\r\n return result;\r\n }\r\n}\r\n"]}
@@ -1,49 +0,0 @@
1
- type ResolveFunc = ((arg: any) => void);
2
- type RejectFunc = ((arg: Error) => void);
3
- /** Class that manages Web Workers. The number of Web Worker threads can be specified.
4
- * Each Web Worker maintains a queue of requests, and queueOperation method selects
5
- * the thread with the fewest entries in the queue. Operations are represented as
6
- * subclasses of the abstract class WorkerOperation.
7
- * @alpha
8
- */
9
- export declare class WebWorkerManager {
10
- private _workerProxys;
11
- private _maxWebWorkers;
12
- private _workerJsFile;
13
- constructor(workerJsFile: string, maxWebWorkers?: number);
14
- queueOperation(operation: WorkerOperation): Promise<any>;
15
- getBestQueue(): WebWorkerProxy;
16
- }
17
- /** Abstract base class for requests handled by a Web Worker.
18
- * @note - To direct a request to a Web Worker, create a subclass of WorkerOperation in the main thread,
19
- * instantiate that subclass, and then call the queueOperation method of the corresponding WebWorkerManager.
20
- * The javascript loaded by the WebWorkerManager must be configured to handle the request by implementing
21
- * a method equal to the operation argument of the WorkerOperation constructor.
22
- * @alpha
23
- */
24
- export declare abstract class WorkerOperation {
25
- operation: string;
26
- operands: any[];
27
- transferable?: any[] | undefined;
28
- private _resolve;
29
- private _reject;
30
- private _proxy;
31
- msgId: number;
32
- constructor(operation: string, operands: any[], transferable?: any[] | undefined);
33
- executor(resolve: ResolveFunc, reject: RejectFunc): void;
34
- sendMessage(proxy: WebWorkerProxy): Promise<any>;
35
- doResolve(event: MessageEvent): void;
36
- doReject(errorEvent: ErrorEvent): void;
37
- }
38
- declare class WebWorkerProxy {
39
- private _queue;
40
- private _worker;
41
- private _nextMsgId;
42
- constructor(workerFile: string);
43
- private handleMessage;
44
- private handleError;
45
- enqueue(wo: WorkerOperation): void;
46
- get queueLength(): number;
47
- }
48
- export {};
49
- //# sourceMappingURL=WebWorkerManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebWorkerManager.d.ts","sourceRoot":"","sources":["../../src/WebWorkerManager.ts"],"names":[],"mappings":"AAYA,KAAK,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;AACxC,KAAK,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AAEzC;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;gBAEX,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAQlD,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAM9D,YAAY,IAAI,cAAc;CAuBtC;AAOD;;;;;;GAMG;AACH,8BAAsB,eAAe;IAMhB,SAAS,EAAE,MAAM;IAAS,QAAQ,EAAE,GAAG,EAAE;IAAS,YAAY,CAAC;IALlF,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAyC;IAChD,KAAK,EAAE,MAAM,CAAK;gBAEN,SAAS,EAAE,MAAM,EAAS,QAAQ,EAAE,GAAG,EAAE,EAAS,YAAY,CAAC,mBAAO;IAKlF,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU;IAU3C,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAOtD,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAMpC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;CAG9C;AAED,cAAM,cAAc;IAClB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAER,UAAU,EAAE,MAAM;IASrC,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,WAAW;IAqBZ,OAAO,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI;IAQzC,IAAW,WAAW,IAAI,MAAM,CAE/B;CACF"}
@@ -1,150 +0,0 @@
1
- /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- /** Class that manages Web Workers. The number of Web Worker threads can be specified.
6
- * Each Web Worker maintains a queue of requests, and queueOperation method selects
7
- * the thread with the fewest entries in the queue. Operations are represented as
8
- * subclasses of the abstract class WorkerOperation.
9
- * @alpha
10
- */
11
- export class WebWorkerManager {
12
- constructor(workerJsFile, maxWebWorkers) {
13
- this._workerJsFile = workerJsFile;
14
- this._maxWebWorkers = maxWebWorkers ? maxWebWorkers : 3;
15
- this._workerProxys = new Array();
16
- }
17
- // queues an operation to one of the WebWorker threads. The workerJsFile must have a
18
- // handler method with the name of WorkerOperation.operation, and must return a result.
19
- async queueOperation(operation) {
20
- const wwProxy = this.getBestQueue();
21
- return operation.sendMessage(wwProxy);
22
- }
23
- // selects the queue to which the request is directed.
24
- getBestQueue() {
25
- let shortestExisting = Number.MAX_SAFE_INTEGER;
26
- let selectedProxy;
27
- let selectedLength = 0;
28
- if (this._workerProxys.length > 0) {
29
- for (const proxy of this._workerProxys) {
30
- if (proxy.queueLength < shortestExisting) {
31
- selectedProxy = proxy;
32
- selectedLength = proxy.queueLength;
33
- shortestExisting = selectedLength;
34
- if (selectedLength === 0)
35
- break;
36
- }
37
- }
38
- }
39
- // if we have no proxys yet, or if none of them have an empty queue, start a new WebWorker proxy.
40
- if (!selectedProxy || ((selectedLength > 0) && (this._workerProxys.length < this._maxWebWorkers))) {
41
- const length = this._workerProxys.push(new WebWorkerProxy(this._workerJsFile));
42
- selectedProxy = this._workerProxys[length - 1];
43
- }
44
- return selectedProxy;
45
- }
46
- }
47
- // the message sent to the webWorker.
48
- class RequestMessage {
49
- constructor(msgId, operation, operands) {
50
- this.msgId = msgId;
51
- this.operation = operation;
52
- this.operands = operands;
53
- }
54
- }
55
- /** Abstract base class for requests handled by a Web Worker.
56
- * @note - To direct a request to a Web Worker, create a subclass of WorkerOperation in the main thread,
57
- * instantiate that subclass, and then call the queueOperation method of the corresponding WebWorkerManager.
58
- * The javascript loaded by the WebWorkerManager must be configured to handle the request by implementing
59
- * a method equal to the operation argument of the WorkerOperation constructor.
60
- * @alpha
61
- */
62
- export class WorkerOperation {
63
- constructor(operation, operands, transferable) {
64
- this.operation = operation;
65
- this.operands = operands;
66
- this.transferable = transferable;
67
- this._resolve = undefined;
68
- this._reject = undefined;
69
- this._proxy = undefined;
70
- this.msgId = 0;
71
- }
72
- // This is the executor method that is called immediately when you instantiate a Promise.
73
- // Here, we store the resolve and reject functions for use when we handle the message from the worker (see handleMessage).
74
- executor(resolve, reject) {
75
- // save the resolve and reject functions to dispatch when we get reply back from the web worker.
76
- this._resolve = resolve;
77
- this._reject = reject;
78
- // start the operation in the web worker.
79
- this._proxy.enqueue(this);
80
- }
81
- // This method puts together the request, sends it, and returns the Promise.
82
- async sendMessage(proxy) {
83
- this._proxy = proxy;
84
- return new Promise(this.executor.bind(this));
85
- }
86
- // Called when the correct message is returned from the Web Worker.
87
- // This should be called only from the handleMessage method of WebWorkerProxy
88
- doResolve(event) {
89
- // the return value is in event.data.result.
90
- this._resolve(event.data.result);
91
- }
92
- // This should be called only from the handleMessage method of WebWorkerProxy.
93
- doReject(errorEvent) {
94
- this._reject(new Error(`Error ${errorEvent.message} at line number ${errorEvent.lineno} of file ${errorEvent.filename}, in the webworker thread`));
95
- }
96
- }
97
- class WebWorkerProxy {
98
- constructor(workerFile) {
99
- this._worker = new Worker(workerFile);
100
- this._worker.onmessage = this.handleMessage.bind(this);
101
- this._worker.onerror = this.handleError.bind(this);
102
- this._queue = new Map();
103
- this._nextMsgId = 1;
104
- }
105
- // this is the method that gets responses (that worked) from the webWorker.
106
- handleMessage(event) {
107
- const msgId = event.data.msgId;
108
- const wo = this._queue.get(msgId);
109
- if (wo) {
110
- wo.doResolve(event);
111
- this._queue.delete(msgId);
112
- }
113
- }
114
- // this is the method that gets errors from the webworker.
115
- // Try to get the msgId out of the error we got back. That doesn't always work, because
116
- // sometimes we don't throw the error if it happens while the worker is loading. In that case
117
- // we find the message with the lowest msgId, since that's the order we're processing them.
118
- handleError(error) {
119
- let errorMsgId = 0;
120
- let rejectError = error;
121
- if (error.hasOwnProperty("msgId") && error.hasOwnProperty("originalError")) {
122
- errorMsgId = error.msgId;
123
- rejectError = error.originalError;
124
- }
125
- else {
126
- // find the lowest number msgId.
127
- errorMsgId = Number.MAX_SAFE_INTEGER;
128
- for (const msgId of this._queue.keys()) {
129
- errorMsgId = Math.min(msgId, errorMsgId);
130
- }
131
- }
132
- // reject the promise and remove the message from the queue.
133
- const wo = this._queue.get(errorMsgId);
134
- if (wo) {
135
- wo.doReject(rejectError);
136
- this._queue.delete(errorMsgId);
137
- }
138
- }
139
- enqueue(wo) {
140
- wo.msgId = this._nextMsgId++;
141
- const message = new RequestMessage(wo.msgId, wo.operation, wo.operands);
142
- this._queue.set(wo.msgId, wo);
143
- this._worker.postMessage(message, wo.transferable ? wo.transferable : []);
144
- }
145
- // gets the queue size.
146
- get queueLength() {
147
- return this._queue.size;
148
- }
149
- }
150
- //# sourceMappingURL=WebWorkerManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebWorkerManager.js","sourceRoot":"","sources":["../../src/WebWorkerManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n// This file contains the code that manages a pool of WebWorkers, starting and dispatching work to them.\r\n// All the WebWorkers for a given instance of WebWorkerManager are the same, running the specified javascript\r\n// code. The Web Worker javascript must be set up to handle the set of WorkerOperation's that are sent by\r\n// calls to queueOperation on WebWorkerManager.\r\n\r\n// cSpell:words proxys\r\n\r\ntype ResolveFunc = ((arg: any) => void);\r\ntype RejectFunc = ((arg: Error) => void);\r\n\r\n/** Class that manages Web Workers. The number of Web Worker threads can be specified.\r\n * Each Web Worker maintains a queue of requests, and queueOperation method selects\r\n * the thread with the fewest entries in the queue. Operations are represented as\r\n * subclasses of the abstract class WorkerOperation.\r\n * @alpha\r\n */\r\nexport class WebWorkerManager {\r\n private _workerProxys: WebWorkerProxy[];\r\n private _maxWebWorkers: number;\r\n private _workerJsFile: string;\r\n\r\n public constructor(workerJsFile: string, maxWebWorkers?: number) {\r\n this._workerJsFile = workerJsFile;\r\n this._maxWebWorkers = maxWebWorkers ? maxWebWorkers : 3;\r\n this._workerProxys = new Array<WebWorkerProxy>();\r\n }\r\n\r\n // queues an operation to one of the WebWorker threads. The workerJsFile must have a\r\n // handler method with the name of WorkerOperation.operation, and must return a result.\r\n public async queueOperation(operation: WorkerOperation): Promise<any> {\r\n const wwProxy: WebWorkerProxy = this.getBestQueue();\r\n return operation.sendMessage(wwProxy);\r\n }\r\n\r\n // selects the queue to which the request is directed.\r\n public getBestQueue(): WebWorkerProxy {\r\n let shortestExisting: number = Number.MAX_SAFE_INTEGER;\r\n let selectedProxy: WebWorkerProxy | undefined;\r\n let selectedLength: number = 0;\r\n if (this._workerProxys.length > 0) {\r\n for (const proxy of this._workerProxys) {\r\n if (proxy.queueLength < shortestExisting) {\r\n selectedProxy = proxy;\r\n selectedLength = proxy.queueLength;\r\n shortestExisting = selectedLength;\r\n if (selectedLength === 0)\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // if we have no proxys yet, or if none of them have an empty queue, start a new WebWorker proxy.\r\n if (!selectedProxy || ((selectedLength > 0) && (this._workerProxys.length < this._maxWebWorkers))) {\r\n const length: number = this._workerProxys.push(new WebWorkerProxy(this._workerJsFile));\r\n selectedProxy = this._workerProxys[length - 1];\r\n }\r\n return selectedProxy;\r\n }\r\n}\r\n\r\n// the message sent to the webWorker.\r\nclass RequestMessage {\r\n constructor(public msgId: number, public operation: string, public operands: any) { }\r\n}\r\n\r\n/** Abstract base class for requests handled by a Web Worker.\r\n * @note - To direct a request to a Web Worker, create a subclass of WorkerOperation in the main thread,\r\n * instantiate that subclass, and then call the queueOperation method of the corresponding WebWorkerManager.\r\n * The javascript loaded by the WebWorkerManager must be configured to handle the request by implementing\r\n * a method equal to the operation argument of the WorkerOperation constructor.\r\n * @alpha\r\n */\r\nexport abstract class WorkerOperation {\r\n private _resolve: ResolveFunc | undefined = undefined;\r\n private _reject: RejectFunc | undefined = undefined;\r\n private _proxy: WebWorkerProxy | undefined = undefined;\r\n public msgId: number = 0;\r\n\r\n constructor(public operation: string, public operands: any[], public transferable?: any[]) {\r\n }\r\n\r\n // This is the executor method that is called immediately when you instantiate a Promise.\r\n // Here, we store the resolve and reject functions for use when we handle the message from the worker (see handleMessage).\r\n public executor(resolve: ResolveFunc, reject: RejectFunc) {\r\n // save the resolve and reject functions to dispatch when we get reply back from the web worker.\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n\r\n // start the operation in the web worker.\r\n this._proxy!.enqueue(this);\r\n }\r\n\r\n // This method puts together the request, sends it, and returns the Promise.\r\n public async sendMessage(proxy: WebWorkerProxy): Promise<any> {\r\n this._proxy = proxy;\r\n return new Promise(this.executor.bind(this));\r\n }\r\n\r\n // Called when the correct message is returned from the Web Worker.\r\n // This should be called only from the handleMessage method of WebWorkerProxy\r\n public doResolve(event: MessageEvent): void {\r\n // the return value is in event.data.result.\r\n this._resolve!(event.data.result);\r\n }\r\n\r\n // This should be called only from the handleMessage method of WebWorkerProxy.\r\n public doReject(errorEvent: ErrorEvent): void {\r\n this._reject!(new Error(`Error ${errorEvent.message} at line number ${errorEvent.lineno} of file ${errorEvent.filename}, in the webworker thread`));\r\n }\r\n}\r\n\r\nclass WebWorkerProxy {\r\n private _queue: Map<number, WorkerOperation>;\r\n private _worker: Worker;\r\n private _nextMsgId: number;\r\n\r\n public constructor(workerFile: string) {\r\n this._worker = new Worker(workerFile);\r\n this._worker.onmessage = this.handleMessage.bind(this);\r\n this._worker.onerror = this.handleError.bind(this);\r\n this._queue = new Map<number, WorkerOperation>();\r\n this._nextMsgId = 1;\r\n }\r\n\r\n // this is the method that gets responses (that worked) from the webWorker.\r\n private handleMessage(event: MessageEvent) {\r\n const msgId: number = event.data.msgId;\r\n const wo = this._queue.get(msgId);\r\n if (wo) {\r\n wo.doResolve(event);\r\n this._queue.delete(msgId);\r\n }\r\n }\r\n\r\n // this is the method that gets errors from the webworker.\r\n // Try to get the msgId out of the error we got back. That doesn't always work, because\r\n // sometimes we don't throw the error if it happens while the worker is loading. In that case\r\n // we find the message with the lowest msgId, since that's the order we're processing them.\r\n private handleError(error: ErrorEvent) {\r\n let errorMsgId = 0;\r\n let rejectError = error;\r\n if (error.hasOwnProperty(\"msgId\") && error.hasOwnProperty(\"originalError\")) {\r\n errorMsgId = (error as any).msgId;\r\n rejectError = (error as any).originalError;\r\n } else {\r\n // find the lowest number msgId.\r\n errorMsgId = Number.MAX_SAFE_INTEGER;\r\n for (const msgId of this._queue.keys()) {\r\n errorMsgId = Math.min(msgId, errorMsgId);\r\n }\r\n }\r\n // reject the promise and remove the message from the queue.\r\n const wo = this._queue.get(errorMsgId);\r\n if (wo) {\r\n wo.doReject(rejectError);\r\n this._queue.delete(errorMsgId);\r\n }\r\n }\r\n\r\n public enqueue(wo: WorkerOperation): void {\r\n wo.msgId = this._nextMsgId++;\r\n const message = new RequestMessage(wo.msgId, wo.operation, wo.operands);\r\n this._queue.set(wo.msgId, wo);\r\n this._worker.postMessage(message, wo.transferable ? wo.transferable : []);\r\n }\r\n\r\n // gets the queue size.\r\n public get queueLength(): number {\r\n return this._queue.size;\r\n }\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GltfModel.d.ts","sourceRoot":"","sources":["../../../src/gltf/GltfModel.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;GAGG;AACH,yBAAiB,IAAI,CAAC;IAIpB,UAAiB,MAAM;QACrB,IAAI,EAAE,UAAU,CAAC;KAClB;IAED,UAAiB,oBAAoB;QACnC,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf;IAED,UAAiB,SAAS;QACxB,MAAM,EAAE,MAAM,CAAC;QAEf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAED,UAAiB,iBAAkB,SAAQ,SAAS;QAElD,aAAa,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QACnD,YAAY,CAAC,EAAE,oBAAoB,CAAC;QAEpC,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB;IAED,UAAiB,cAAe,SAAQ,SAAS;QAC/C,aAAa,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;KACrC;IAED,UAAiB,OAAO;QACtB,QAAQ,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAED,KAAY,aAAa,GAAG,WAAW,CAAC;IAExC,UAAiB,SAAS;QACxB,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,iBAAiB,CAAC;QAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;KACxB;IAED,UAAiB,qBAAqB;QACpC,MAAM,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,KAAK,CAAC;KACd;IAED,UAAiB,eAAgB,SAAQ,SAAS;QAEhD,aAAa,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;KACrC;IAED,UAAiB,kBAAmB,SAAQ,SAAS;QAEnD,aAAa,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;QACnD,YAAY,CAAC,EAAE,qBAAqB,CAAC;KACtC;IAED,UAAiB,IAAI;QACnB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX;IAED,UAAiB,iBAAiB;QAChC,eAAe,EAAE,IAAI,CAAC;QAEtB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;KAEzB;IAED,UAAiB,QAAQ;QACvB,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,SAAS,EAAE,aAAa,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QAErB,KAAK,EAAE,OAAO,CAAC;KAChB;IAED,UAAiB,kBAAmB,SAAQ,SAAS;QACnD,IAAI,EAAE,WAAW,CAAC;QAClB,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,SAAS,CAAC,EAAE,kBAAkB,CAAC;KAChC;IAED,KAAY,YAAY,GAAG,kBAAkB,CAAC;IAE9C,UAAiB,IAAI;QACnB,uJAAuJ;QACvJ,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,oJAAoJ;QACpJ,UAAU,EAAE,YAAY,EAAE,CAAC;KAC5B;IAED,UAAiB,KAAK;QACpB,6DAA6D;QAC7D,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,KAAK,EAAE,IAAI,EAAE,CAAC;KACf;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GltfModel.js","sourceRoot":"","sources":["../../../src/gltf/GltfModel.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Transform, XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { GltfAlphaMode } from \"./GltfSchema\";\r\n\r\n/** Types describing the in-memory representation of a glTF model as parsed from a [[GltfDocument]].\r\n * This API is incomplete.\r\n * @alpha\r\n */\r\nexport namespace Gltf {\r\n // A view into (usually a subset of) a GltfBuffer, used for vertex attributes and indices.\r\n // Attributes may be interleaved in which case they share the same Buffer object and the stride is specified on each Attribute.\r\n // The same Buffer object may also be used by more than one set of attributes or indices.\r\n export interface Buffer {\r\n data: Uint8Array;\r\n }\r\n\r\n export interface PositionQuantization {\r\n origin: XYAndZ;\r\n scale: XYAndZ;\r\n }\r\n\r\n export interface Attribute {\r\n buffer: Buffer;\r\n // Default zero.\r\n byteStride?: number;\r\n }\r\n\r\n export interface PositionAttribute extends Attribute {\r\n // If not \"f32\", the positions are quantized or normalized.\r\n componentType: \"f32\" | \"u8\" | \"i8\" | \"u16\" | \"i16\";\r\n quantization?: PositionQuantization;\r\n // Unquantized if quantization is defined.\r\n decodedMin: XYAndZ;\r\n decodedMax: XYAndZ;\r\n }\r\n\r\n export interface ColorAttribute extends Attribute {\r\n componentType: \"f32\" | \"u8\" | \"u16\";\r\n }\r\n\r\n export interface Indices {\r\n dataType: \"u8\" | \"u16\" | \"u32\";\r\n count: number;\r\n buffer: Buffer;\r\n }\r\n\r\n export type PrimitiveType = \"triangles\";\r\n\r\n export interface Primitive {\r\n indices: Indices;\r\n attributeCount: number;\r\n position: PositionAttribute;\r\n color?: ColorAttribute;\r\n }\r\n\r\n export interface TextureUVQuantization {\r\n origin: XAndY;\r\n scale: XAndY;\r\n }\r\n\r\n export interface NormalAttribute extends Attribute {\r\n // Always normalized.\r\n componentType: \"f32\" | \"i8\" | \"i16\";\r\n }\r\n\r\n export interface TextureUVAttribute extends Attribute {\r\n // If not \"f32\", the components are quantized or normalized.\r\n componentType: \"f32\" | \"u8\" | \"u16\" | \"i8\" | \"i16\";\r\n quantization?: TextureUVQuantization;\r\n }\r\n\r\n export interface Rgba {\r\n r: number;\r\n g: number;\r\n b: number;\r\n a: number;\r\n }\r\n\r\n export interface MetallicRoughness {\r\n baseColorFactor: Rgba;\r\n // ###TODO_GLTF baseColorTexture;\r\n metallicFactor: number;\r\n roughnessFactor: number;\r\n // ###TODO_GLTF metallicRoughnessTexture;\r\n }\r\n\r\n export interface Material {\r\n metallicRoughness: MetallicRoughness;\r\n alphaMode: GltfAlphaMode;\r\n alphaCutoff: number;\r\n doubleSided: boolean;\r\n // NB: a mesh have normals defined but still be intended to be rendered without lighting.\r\n unlit: boolean;\r\n }\r\n\r\n export interface TrianglesPrimitive extends Primitive {\r\n type: \"triangles\";\r\n material: Material;\r\n normal?: NormalAttribute;\r\n textureUV?: TextureUVAttribute;\r\n }\r\n\r\n export type AnyPrimitive = TrianglesPrimitive;\r\n\r\n export interface Node {\r\n /** Transform from this node's local coordinate system to its parent node's coordinate system (or the model's coordinate system, if no parent node). */\r\n toParent?: Transform;\r\n /** The primitives drawn by this node. For glTF 2.0, there is exactly one primitive per node; glTF 1.0 permits any number of primitives per node. */\r\n primitives: AnyPrimitive[];\r\n }\r\n\r\n export interface Model {\r\n /** Transform from model coordinates to world coordinates. */\r\n toWorld?: Transform;\r\n nodes: Node[];\r\n }\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GltfParser.d.ts","sourceRoot":"","sources":["../../../src/gltf/GltfParser.ts"],"names":[],"mappings":"AAIA;;GAEG;AAWH,OAAO,EAC4H,YAAY,EAC9I,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,gBAAgB;AAChB,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CA+FpF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GltfParser.js","sourceRoot":"","sources":["../../../src/gltf/GltfParser.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { ByteStream, JsonUtils, Logger, utf8ToString } from \"@itwin/core-bentley\";\r\nimport { Matrix3d, Point3d, Point4d, Transform } from \"@itwin/core-geometry\";\r\nimport { GlbHeader, ImageSource, TileFormat } from \"@itwin/core-common\";\r\nimport type { DracoLoader, DracoMesh } from \"@loaders.gl/draco\";\r\nimport { FrontendLoggerCategory } from \"../FrontendLoggerCategory\";\r\nimport {\r\n getImageSourceFormatForMimeType, imageBitmapFromImageSource, imageElementFromImageSource, tryImageElementFromUrl,\r\n} from \"../ImageUtil\";\r\nimport { TextureImageSource } from \"../render/RenderTexture\";\r\nimport {\r\n DracoMeshCompression, getGltfNodeMeshIds, GltfAccessor, GltfBuffer, GltfBufferViewProps, GltfDictionary, gltfDictionaryIterator, GltfDocument, GltfId, GltfImage, GltfMesh, GltfMeshMode, GltfMeshPrimitive, GltfNode, traverseGltfNodes,\r\n} from \"./GltfSchema\";\r\nimport { Gltf } from \"./GltfModel\";\r\n\r\n/** @internal */\r\nexport interface ParseGltfLogger {\r\n log(message: string, type: \"error\" | \"warning\" | \"info\"): void;\r\n}\r\n\r\n/** Arguments supplied to [[parseGltf]].\r\n * @internal\r\n */\r\nexport interface ParseGltfArgs {\r\n logger?: ParseGltfLogger;\r\n gltf: Uint8Array | GltfDocument;\r\n noCreateImageBitmap?: boolean;\r\n baseUrl?: string;\r\n isCanceled?: boolean;\r\n upAxis?: \"y\" | \"z\"; // default \"y\"\r\n}\r\n\r\n/** Parse a [[GltfDocument]] or binary representation thereof to produce a [[Gltf.Model]].\r\n * This implementation is incomplete and not currently used.\r\n * @internal\r\n */\r\nexport async function parseGltf(args: ParseGltfArgs): Promise<Gltf.Model | undefined> {\r\n const source = args.gltf;\r\n let version: number;\r\n let json: GltfDocument;\r\n let binary: Uint8Array | undefined;\r\n\r\n if (source instanceof Uint8Array) {\r\n // It may be JSON - check for magic indicating glb.\r\n const buffer = ByteStream.fromUint8Array(source);\r\n if (TileFormat.Gltf !== buffer.readUint32()) {\r\n try {\r\n const utf8Json = utf8ToString(source);\r\n if (!utf8Json)\r\n return undefined;\r\n\r\n json = JSON.parse(utf8Json);\r\n version = 2;\r\n } catch (_) {\r\n return undefined;\r\n }\r\n } else {\r\n buffer.reset();\r\n const header = new GlbHeader(buffer);\r\n if (!header.isValid)\r\n return undefined;\r\n\r\n version = header.version;\r\n if (header.binaryChunk)\r\n binary = new Uint8Array(source.buffer, source.byteOffset + header.binaryChunk.offset, header.binaryChunk.length);\r\n\r\n try {\r\n const jsonBytes = new Uint8Array(source.buffer, source.byteOffset + header.jsonChunk.offset, header.jsonChunk.length);\r\n const jsonStr = utf8ToString(jsonBytes);\r\n if (undefined === jsonStr)\r\n return undefined;\r\n\r\n json = JSON.parse(jsonStr);\r\n } catch (_) {\r\n return undefined;\r\n }\r\n }\r\n } else {\r\n version = 2; // ###TODO verify against source.asset?.version\r\n json = source;\r\n }\r\n\r\n // asset is required in glTF 2, optional in glTF 1\r\n const asset = JsonUtils.asObject(json.asset);\r\n if (version === 2 && !asset)\r\n return undefined;\r\n\r\n const document: GltfDocument = {\r\n asset,\r\n scene: JsonUtils.asString(json.scene),\r\n extensions: JsonUtils.asObject(json.extensions),\r\n extensionsUsed: JsonUtils.asArray(json.extensionsUsed),\r\n extensionsRequired: JsonUtils.asArray(json.extensionsRequired),\r\n accessors: JsonUtils.asObject(json.accessors),\r\n buffers: JsonUtils.asObject(json.buffers),\r\n bufferViews: JsonUtils.asObject(json.bufferViews),\r\n images: JsonUtils.asObject(json.images),\r\n materials: JsonUtils.asObject(json.materials),\r\n meshes: JsonUtils.asObject(json.meshes),\r\n nodes: JsonUtils.asObject(json.nodes),\r\n samplers: JsonUtils.asObject(json.samplers),\r\n scenes: JsonUtils.asObject(json.scenes),\r\n textures: JsonUtils.asObject(json.textures),\r\n techniques: JsonUtils.asObject(json.techniques),\r\n };\r\n\r\n if (!document.meshes)\r\n return undefined;\r\n\r\n const logger = args.logger ?? {\r\n log: (message: string, type: \"error\" | \"warning\" | \"info\") => {\r\n const category = `${FrontendLoggerCategory.Package}.gltf`;\r\n const fn = type === \"error\" ? \"logError\" : (type === \"warning\" ? \"logWarning\" : \"logInfo\");\r\n Logger[fn](category, message);\r\n },\r\n };\r\n\r\n const parser = new GltfParser({\r\n document,\r\n version,\r\n upAxis: args.upAxis ?? \"y\",\r\n binary,\r\n baseUrl: args.baseUrl,\r\n logger,\r\n isCanceled: () => args.isCanceled ?? false,\r\n imageFromImageSource: (args.noCreateImageBitmap ?\r\n async (imgSrc) => imageElementFromImageSource(imgSrc) :\r\n async (imgSrc) => imageBitmapFromImageSource(imgSrc)),\r\n });\r\n\r\n return parser.parse();\r\n}\r\n\r\ninterface GltfParserOptions {\r\n document: GltfDocument;\r\n version: number;\r\n upAxis: \"y\" | \"z\";\r\n binary?: Uint8Array;\r\n baseUrl?: string;\r\n logger: ParseGltfLogger;\r\n imageFromImageSource: (source: ImageSource) => Promise<TextureImageSource>;\r\n isCanceled: () => boolean;\r\n}\r\n\r\ntype ParserBuffer = GltfBuffer & { resolvedBuffer?: Gltf.Buffer };\r\ntype ParserImage = GltfImage & { resolvedImage?: TextureImageSource };\r\n\r\nclass GltfParser {\r\n private readonly _version: number;\r\n private readonly _upAxis: \"y\" | \"z\";\r\n private readonly _baseUrl?: string;\r\n private readonly _logger: ParseGltfLogger;\r\n private readonly _isCanceled: () => boolean;\r\n private readonly _buffers: GltfDictionary<ParserBuffer>;\r\n private readonly _images: GltfDictionary<ParserImage>;\r\n private readonly _nodes: GltfDictionary<GltfNode>;\r\n private readonly _meshes: GltfDictionary<GltfMesh>;\r\n private readonly _accessors: GltfDictionary<GltfAccessor>;\r\n private readonly _sceneNodes: GltfId[];\r\n private readonly _bufferViews: GltfDictionary<GltfBufferViewProps>;\r\n private readonly _imageFromImageSource: (source: ImageSource) => Promise<TextureImageSource>;\r\n private readonly _dracoMeshes = new Map<DracoMeshCompression, DracoMesh>();\r\n\r\n public constructor(options: GltfParserOptions) {\r\n this._version = options.version;\r\n this._upAxis = options.upAxis;\r\n this._baseUrl = options.baseUrl;\r\n this._logger = options.logger;\r\n this._isCanceled = options.isCanceled;\r\n this._imageFromImageSource = options.imageFromImageSource;\r\n\r\n const emptyDict = { };\r\n const doc = options.document;\r\n this._buffers = doc.buffers ?? emptyDict;\r\n this._images = doc.images ?? emptyDict;\r\n this._nodes = doc.nodes ?? emptyDict;\r\n this._meshes = doc.meshes ?? emptyDict;\r\n this._bufferViews = doc.bufferViews ?? emptyDict;\r\n this._accessors = doc.accessors ?? emptyDict;\r\n\r\n if (options.binary) {\r\n const buffer = this._buffers[this._version === 2 ? 0 : \"binary_glTF\"];\r\n if (buffer && undefined === buffer.uri)\r\n buffer.resolvedBuffer = { data: options.binary };\r\n }\r\n\r\n let sceneNodes;\r\n if (doc.scenes && undefined !== doc.scene)\r\n sceneNodes = doc.scenes[doc.scene]?.nodes;\r\n\r\n this._sceneNodes = sceneNodes ?? Object.keys(this._nodes);\r\n }\r\n\r\n public async parse(): Promise<Gltf.Model | undefined> {\r\n // ###TODO_GLTF RTC_CENTER\r\n // ###TODO_GLTF pseudo-rtc bias (apply translation to each point at read time, for scalable mesh...)\r\n const toWorld = undefined;\r\n\r\n await this.resolveResources();\r\n if (this._isCanceled())\r\n return undefined;\r\n\r\n // ###TODO_GLTF compute content range (maybe do so elsewhere?)\r\n // I think spec says POSITION must specify min and max?\r\n\r\n const nodes: Gltf.Node[] = [];\r\n for (const nodeKey of this._sceneNodes) {\r\n const node = this._nodes[nodeKey];\r\n if (node)\r\n nodes.push(this.parseNode(node));\r\n }\r\n\r\n return {\r\n toWorld,\r\n nodes,\r\n };\r\n }\r\n\r\n private parseNode(node: GltfNode): Gltf.Node {\r\n const primitives = [];\r\n for (const meshId of getGltfNodeMeshIds(node)) {\r\n const mesh = this._meshes[meshId];\r\n if (!mesh)\r\n continue;\r\n\r\n const parsedPrimitives = this.parsePrimitives(mesh);\r\n for (const primitive of parsedPrimitives)\r\n primitives.push(primitive);\r\n }\r\n\r\n let toParent;\r\n if (node.matrix) {\r\n const origin = Point3d.create(node.matrix[12], node.matrix[13], node.matrix[14]);\r\n const matrix = Matrix3d.createRowValues(\r\n node.matrix[0], node.matrix[4], node.matrix[8],\r\n node.matrix[1], node.matrix[5], node.matrix[9],\r\n node.matrix[2], node.matrix[6], node.matrix[10],\r\n );\r\n\r\n toParent = Transform.createOriginAndMatrix(origin, matrix);\r\n } else if (node.rotation || node.scale || node.translation) {\r\n // SPEC: To compose the local transformation matrix, TRS properties MUST be converted to matrices and postmultiplied in the T * R * S order;\r\n // first the scale is applied to the vertices, then the rotation, and then the translation.\r\n const scale = Transform.createRefs(undefined, node.scale ? Matrix3d.createScale(node.scale[0], node.scale[1], node.scale[2]) : Matrix3d.identity);\r\n const rot = Transform.createRefs(undefined, node.rotation ? Matrix3d.createFromQuaternion(Point4d.create(node.rotation[0], node.rotation[1], node.rotation[2], node.rotation[3])) : Matrix3d.identity);\r\n rot.matrix.transposeInPlace(); // See comment on Matrix3d.createFromQuaternion\r\n const trans = Transform.createTranslation(node.translation ? new Point3d(node.translation[0], node.translation[1], node.translation[2]) : Point3d.createZero());\r\n\r\n toParent = scale.multiplyTransformTransform(rot);\r\n trans.multiplyTransformTransform(toParent, toParent);\r\n }\r\n\r\n return {\r\n primitives,\r\n toParent,\r\n };\r\n }\r\n\r\n private parsePrimitives(mesh: GltfMesh): Gltf.AnyPrimitive[] {\r\n const primitives: Gltf.AnyPrimitive[] = [];\r\n if (!mesh.primitives)\r\n return primitives;\r\n\r\n for (const primitive of mesh.primitives) {\r\n const parsedPrimitive = this.parsePrimitive(primitive);\r\n if (parsedPrimitive)\r\n primitives.push(parsedPrimitive);\r\n }\r\n\r\n return primitives;\r\n }\r\n\r\n private parsePrimitive(primitive: GltfMeshPrimitive): Gltf.AnyPrimitive | undefined {\r\n const meshMode = JsonUtils.asInt(primitive.mode, GltfMeshMode.Triangles);\r\n switch (meshMode) {\r\n case GltfMeshMode.TriangleStrip:\r\n return this.parseTrianglesPrimitive(primitive);\r\n default:\r\n // ###TODO_GLTF Make parser support all primitive types. Consumer can choose to do whatever with them.\r\n return undefined;\r\n }\r\n }\r\n\r\n private parseTrianglesPrimitive(primitive: GltfMeshPrimitive): Gltf.TrianglesPrimitive | undefined {\r\n const posId = primitive.attributes.POSITION;\r\n const pos = undefined !== posId ? this._accessors[posId] : undefined;\r\n if (!pos)\r\n return undefined;\r\n\r\n return undefined; // ###TODO_GLTF\r\n }\r\n\r\n private traverseNodes(nodeIds: Iterable<GltfId>): Iterable<GltfNode> {\r\n return traverseGltfNodes(nodeIds, this._nodes, new Set<GltfId>());\r\n }\r\n\r\n private async resolveResources(): Promise<void> {\r\n // Load any external images and buffers.\r\n await this._resolveResources();\r\n\r\n // If any meshes are draco-compressed, dynamically load the decoder module and then decode the meshes.\r\n const dracoMeshes: DracoMeshCompression[] = [];\r\n\r\n for (const node of this.traverseNodes(this._sceneNodes)) {\r\n for (const meshId of getGltfNodeMeshIds(node)) {\r\n const mesh = this._meshes[meshId];\r\n if (mesh?.primitives)\r\n for (const primitive of mesh.primitives)\r\n if (primitive.extensions?.KHR_draco_mesh_compression)\r\n dracoMeshes.push(primitive.extensions.KHR_draco_mesh_compression);\r\n }\r\n }\r\n\r\n if (dracoMeshes.length === 0)\r\n return;\r\n\r\n try {\r\n const dracoLoader = (await import(\"@loaders.gl/draco\")).DracoLoader;\r\n await Promise.all(dracoMeshes.map(async (x) => this.decodeDracoMesh(x, dracoLoader)));\r\n } catch (err) {\r\n Logger.logWarning(FrontendLoggerCategory.Render, \"Failed to decode draco-encoded glTF mesh\");\r\n Logger.logException(FrontendLoggerCategory.Render, err);\r\n }\r\n }\r\n\r\n private async _resolveResources(): Promise<void> {\r\n // ###TODO traverse the scene nodes to find resources referenced by them, instead of resolving everything - some resources may not\r\n // be required for the scene.\r\n const promises: Array<Promise<void>> = [];\r\n try {\r\n for (const buffer of gltfDictionaryIterator(this._buffers))\r\n if (!buffer.resolvedBuffer)\r\n promises.push(this.resolveBuffer(buffer));\r\n\r\n await Promise.all(promises);\r\n if (this._isCanceled())\r\n return;\r\n\r\n promises.length = 0;\r\n for (const image of gltfDictionaryIterator(this._images))\r\n if (!image.resolvedImage)\r\n promises.push(this.resolveImage(image));\r\n\r\n await Promise.all(promises);\r\n } catch (_) {\r\n // ###TODO_GLTF log\r\n }\r\n }\r\n\r\n private resolveUrl(uri: string): string | undefined {\r\n try {\r\n return new URL(uri, this._baseUrl).toString();\r\n } catch (_) {\r\n return undefined;\r\n }\r\n }\r\n\r\n private async resolveBuffer(buffer: ParserBuffer): Promise<void> {\r\n if (buffer.resolvedBuffer || undefined === buffer.uri)\r\n return;\r\n\r\n try {\r\n const url = this.resolveUrl(buffer.uri);\r\n const response = url ? await fetch(url) : undefined;\r\n if (this._isCanceled())\r\n return;\r\n\r\n const data = await response?.arrayBuffer();\r\n if (this._isCanceled())\r\n return;\r\n\r\n if (data)\r\n buffer.resolvedBuffer = { data: new Uint8Array(data) };\r\n } catch (_) {\r\n //\r\n }\r\n }\r\n\r\n private async resolveImage(image: ParserImage): Promise<void> {\r\n if (image.resolvedImage)\r\n return;\r\n\r\n interface BufferViewSource { bufferView?: GltfId, mimeType?: string }\r\n const bvSrc: BufferViewSource | undefined = undefined !== image.bufferView ? image : image.extensions?.KHR_binary_glTF;\r\n if (undefined !== bvSrc?.bufferView) {\r\n const format = undefined !== bvSrc.mimeType ? getImageSourceFormatForMimeType(bvSrc.mimeType) : undefined;\r\n const bufferView = this._bufferViews[bvSrc.bufferView];\r\n if (undefined === format || !bufferView || !bufferView.byteLength || bufferView.byteLength < 0)\r\n return;\r\n\r\n const bufferData = this._buffers[bufferView.buffer]?.resolvedBuffer?.data;\r\n if (!bufferData)\r\n return;\r\n\r\n const offset = bufferView.byteOffset ?? 0;\r\n const bytes = bufferData.subarray(offset, offset + bufferView.byteLength);\r\n try {\r\n const imageSource = new ImageSource(bytes, format);\r\n image.resolvedImage = await this._imageFromImageSource(imageSource);\r\n } catch (_) {\r\n //\r\n }\r\n\r\n return;\r\n }\r\n\r\n const url = undefined !== image.uri ? this.resolveUrl(image.uri) : undefined;\r\n if (undefined !== url)\r\n image.resolvedImage = await tryImageElementFromUrl(url);\r\n }\r\n\r\n private async decodeDracoMesh(ext: DracoMeshCompression, loader: typeof DracoLoader): Promise<void> {\r\n const bv = this._bufferViews[ext.bufferView];\r\n if (!bv || !bv.byteLength)\r\n return;\r\n\r\n let buf = this._buffers[bv.buffer]?.resolvedBuffer?.data;\r\n if (!buf)\r\n return;\r\n\r\n const offset = bv.byteOffset ?? 0;\r\n buf = buf.subarray(offset, offset + bv.byteLength);\r\n const mesh = await loader.parse(buf, { }); // NB: `options` argument declared optional but will produce exception if not supplied.\r\n if (mesh)\r\n this._dracoMeshes.set(ext, mesh);\r\n }\r\n}\r\n"]}