@cognite/reveal 3.2.0 → 4.0.0-dev.20221026

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 (212) hide show
  1. package/3cc243f31966a3b9fa0e.worker.js.LICENSE.txt +24 -0
  2. package/README.md +30 -1
  3. package/extensions/datasource.d.ts +1 -1
  4. package/extensions/datasource.js +2 -2
  5. package/extensions/datasource.js.map +1 -0
  6. package/index.d.ts +5 -2
  7. package/index.js +2 -2
  8. package/index.js.LICENSE.txt +8 -0
  9. package/index.js.map +1 -0
  10. package/package.json +6 -9
  11. package/packages/360-images/index.d.ts +6 -0
  12. package/packages/360-images/src/Image360Entity.d.ts +44 -0
  13. package/packages/360-images/src/Image360EntityFactory.d.ts +13 -0
  14. package/packages/360-images/src/Image360Facade.d.ts +20 -0
  15. package/packages/360-images/src/Image360Icon.d.ts +16 -0
  16. package/packages/api/src/api-helpers/Image360ApiHelper.d.ts +28 -0
  17. package/packages/api/src/public/RevealManager.d.ts +2 -3
  18. package/packages/api/src/public/migration/Cognite3DViewer.d.ts +44 -19
  19. package/packages/api/src/public/migration/types.d.ts +16 -14
  20. package/packages/api/src/public/types.d.ts +2 -1
  21. package/packages/api/src/storage/RevealManagerHelper.d.ts +1 -1
  22. package/packages/cad-geometry-loaders/index.d.ts +0 -1
  23. package/packages/cad-geometry-loaders/src/CadManager.d.ts +2 -2
  24. package/packages/cad-geometry-loaders/src/CadModelUpdateHandler.d.ts +1 -1
  25. package/packages/cad-geometry-loaders/src/InternalRevealCadOptions.d.ts +0 -6
  26. package/packages/cad-geometry-loaders/src/createCadManager.d.ts +3 -3
  27. package/packages/cad-geometry-loaders/src/sector/SectorLoader.d.ts +1 -2
  28. package/packages/cad-geometry-loaders/src/sector/culling/computeSectorCost.d.ts +0 -1
  29. package/packages/cad-geometry-loaders/src/sector/culling/takensectors/index.d.ts +0 -1
  30. package/packages/cad-model/src/CadModelFactory.d.ts +1 -2
  31. package/packages/cad-model/src/wrappers/CadNode.d.ts +2 -9
  32. package/packages/cad-model/src/wrappers/Cognite3DModel.d.ts +2 -2
  33. package/packages/cad-parsers/index.d.ts +2 -7
  34. package/packages/cad-parsers/src/cad/types.d.ts +0 -12
  35. package/packages/cad-parsers/src/metadata/CadModelMetadata.d.ts +1 -1
  36. package/packages/cad-parsers/src/metadata/CadModelMetadataRepository.d.ts +1 -1
  37. package/packages/cad-parsers/src/metadata/types.d.ts +0 -1
  38. package/packages/cad-parsers/src/utilities/computeBoundingBoxFromAttributes.d.ts +5 -1
  39. package/packages/cad-styling/index.d.ts +2 -1
  40. package/packages/cad-styling/src/CdfNodeCollectionBase.d.ts +20 -0
  41. package/packages/cad-styling/src/NodeCollectionDeserializer.d.ts +4 -9
  42. package/packages/cad-styling/src/NodeIdNodeCollection.d.ts +30 -0
  43. package/packages/cad-styling/src/PropertyFilterNodeCollection.d.ts +3 -15
  44. package/packages/cad-styling/src/SinglePropertyFilterNodeCollection.d.ts +2 -14
  45. package/packages/cad-styling/src/TreeIndexNodeCollection.d.ts +2 -0
  46. package/packages/camera-manager/index.d.ts +2 -0
  47. package/packages/camera-manager/src/ComboControls.d.ts +1 -3
  48. package/packages/camera-manager/src/Keyboard.d.ts +2 -1
  49. package/packages/camera-manager/src/ProxyCameraManager.d.ts +25 -0
  50. package/packages/camera-manager/src/StationaryCameraManager.d.ts +27 -0
  51. package/packages/data-providers/index.d.ts +21 -0
  52. package/packages/data-providers/src/Image360Provider.d.ts +6 -0
  53. package/packages/data-providers/src/ModelDataProvider.d.ts +21 -0
  54. package/packages/{modeldata-api → data-providers}/src/ModelIdentifier.d.ts +0 -0
  55. package/packages/{modeldata-api → data-providers}/src/ModelMetadataProvider.d.ts +0 -0
  56. package/packages/data-providers/src/PointCloudStylableObjectProvider.d.ts +8 -0
  57. package/packages/data-providers/src/image-360-data-providers/Cdf360ImageEventProvider.d.ts +16 -0
  58. package/packages/data-providers/src/image-360-data-providers/Local360ImageProvider.d.ts +8 -0
  59. package/packages/{modeldata-api/src → data-providers/src/metadata-providers}/CdfModelMetadataProvider.d.ts +3 -3
  60. package/packages/{modeldata-api/src → data-providers/src/metadata-providers}/LocalModelMetadataProvider.d.ts +3 -3
  61. package/packages/{modeldata-api/src → data-providers/src/model-data-providers}/CdfModelDataProvider.d.ts +1 -1
  62. package/packages/{modeldata-api/src → data-providers/src/model-data-providers}/LocalModelDataProvider.d.ts +1 -1
  63. package/packages/{modeldata-api/src → data-providers/src/model-identifiers}/CdfModelIdentifier.d.ts +1 -1
  64. package/packages/{modeldata-api/src → data-providers/src/model-identifiers}/LocalModelIdentifier.d.ts +1 -1
  65. package/packages/data-providers/src/pointcloud-stylable-object-providers/CdfPointCloudStylableObjectProvider.d.ts +14 -0
  66. package/packages/data-providers/src/pointcloud-stylable-object-providers/DummyPointCloudStylableObjectProvider.d.ts +9 -0
  67. package/packages/data-providers/src/pointcloud-stylable-object-providers/StylableObject.d.ts +12 -0
  68. package/packages/data-providers/src/pointcloud-stylable-object-providers/cdfAnnotationsToObjects.d.ts +5 -0
  69. package/packages/data-providers/src/pointcloud-stylable-object-providers/types.d.ts +19 -0
  70. package/packages/data-providers/src/types.d.ts +44 -0
  71. package/packages/{modeldata-api/src → data-providers/src/utilities}/applyDefaultModelTransformation.d.ts +1 -1
  72. package/packages/{modeldata-api/src/utilities.d.ts → data-providers/src/utilities/fetchWithStatusCheck.d.ts} +0 -2
  73. package/packages/data-source/src/CdfDataSource.d.ts +1 -1
  74. package/packages/data-source/src/DataSource.d.ts +1 -1
  75. package/packages/data-source/src/LocalDataSource.d.ts +1 -1
  76. package/packages/metrics/src/types.d.ts +1 -1
  77. package/packages/model-base/src/MetadataRepository.d.ts +1 -1
  78. package/packages/pointcloud-styling/index.d.ts +7 -0
  79. package/packages/pointcloud-styling/src/AnnotationIdPointCloudObjectCollection.d.ts +13 -0
  80. package/packages/pointcloud-styling/src/PointCloudAppearance.d.ts +10 -0
  81. package/packages/pointcloud-styling/src/PointCloudObjectCollection.d.ts +23 -0
  82. package/packages/pointcloud-styling/src/StyledPointCloudObjectCollection.d.ts +13 -0
  83. package/packages/pointclouds/index.d.ts +4 -1
  84. package/packages/pointclouds/src/CognitePointCloudModel.d.ts +68 -17
  85. package/packages/pointclouds/src/PointCloudFactory.d.ts +9 -4
  86. package/packages/pointclouds/src/PointCloudIntersection.d.ts +4 -0
  87. package/packages/pointclouds/src/PointCloudManager.d.ts +6 -5
  88. package/packages/pointclouds/src/PointCloudMetadata.d.ts +2 -2
  89. package/packages/pointclouds/src/PointCloudMetadataRepository.d.ts +1 -1
  90. package/packages/pointclouds/src/PointCloudNode.d.ts +17 -8
  91. package/packages/pointclouds/src/PointCloudPickingHandler.d.ts +4 -0
  92. package/packages/pointclouds/src/PotreeNodeWrapper.d.ts +28 -15
  93. package/packages/pointclouds/src/PotreePnextLoader.d.ts +1 -1
  94. package/packages/pointclouds/src/classificationsProviders/IPointClassificationsProvider.d.ts +8 -0
  95. package/packages/pointclouds/src/classificationsProviders/LocalPointClassificationsProvider.d.ts +9 -0
  96. package/packages/pointclouds/src/classificationsProviders/UrlPointClassificationsProvider.d.ts +12 -0
  97. package/packages/pointclouds/src/constants.d.ts +5 -0
  98. package/packages/pointclouds/src/createPointCloudManager.d.ts +4 -2
  99. package/packages/pointclouds/src/decomposeStylableObjects.d.ts +5 -0
  100. package/packages/pointclouds/src/potree-three-loader/Potree.d.ts +5 -10
  101. package/packages/pointclouds/src/potree-three-loader/geometry/PointCloudEptGeometry.d.ts +7 -12
  102. package/packages/pointclouds/src/potree-three-loader/geometry/PointCloudEptGeometryNode.d.ts +2 -1
  103. package/packages/pointclouds/src/potree-three-loader/index.d.ts +0 -1
  104. package/packages/pointclouds/src/potree-three-loader/loading/ClassificationInfo.d.ts +15 -0
  105. package/packages/pointclouds/src/potree-three-loader/loading/EptBinaryLoader.d.ts +6 -3
  106. package/packages/pointclouds/src/potree-three-loader/loading/EptJson.d.ts +25 -0
  107. package/packages/pointclouds/src/potree-three-loader/loading/EptLoader.d.ts +2 -2
  108. package/packages/pointclouds/src/potree-three-loader/loading/ILoader.d.ts +1 -1
  109. package/packages/pointclouds/src/potree-three-loader/tree/PointCloudOctree.d.ts +4 -4
  110. package/packages/pointclouds/src/potree-three-loader/tree/PointCloudOctreePickerHelper.d.ts +1 -1
  111. package/packages/pointclouds/src/potree-three-loader/types/IPotree.d.ts +2 -1
  112. package/packages/pointclouds/src/potree-three-loader/utils/createObjectIdMaps.d.ts +6 -0
  113. package/packages/pointclouds/src/potree-three-loader/utils/utils.d.ts +4 -0
  114. package/packages/pointclouds/src/potree-three-loader/workers/assignPointsToObjectsWithWasm.d.ts +5 -0
  115. package/packages/pointclouds/src/potree-three-loader/workers/eptBinaryDecoder.worker.d.ts +7 -18
  116. package/packages/pointclouds/src/potree-three-loader/workers/parseEpt.d.ts +4 -0
  117. package/packages/pointclouds/src/potree-three-loader/workers/types.d.ts +33 -0
  118. package/packages/pointclouds/wasm/index.d.ts +18 -0
  119. package/packages/rendering/index.d.ts +7 -3
  120. package/packages/rendering/src/PointCloudMaterialManager.d.ts +19 -0
  121. package/packages/rendering/src/pointcloud-rendering/PointCloudMaterial.d.ts +121 -0
  122. package/packages/rendering/src/pointcloud-rendering/PointCloudObjectAppearanceTexture.d.ts +30 -0
  123. package/packages/rendering/src/pointcloud-rendering/PointCloudObjectIdMaps.d.ts +7 -0
  124. package/packages/rendering/src/pointcloud-rendering/classification.d.ts +2 -0
  125. package/packages/{pointclouds/src/potree-three-loader/rendering → rendering/src/pointcloud-rendering}/constants.d.ts +7 -5
  126. package/packages/rendering/src/pointcloud-rendering/enums.d.ts +24 -0
  127. package/packages/{pointclouds/src/potree-three-loader/rendering → rendering/src/pointcloud-rendering}/gradients/SpectralGradient.d.ts +0 -0
  128. package/packages/rendering/src/pointcloud-rendering/index.d.ts +8 -0
  129. package/packages/rendering/src/pointcloud-rendering/texture-generation.d.ts +8 -0
  130. package/packages/{pointclouds/src/potree-three-loader/rendering → rendering/src/pointcloud-rendering}/types.d.ts +9 -1
  131. package/packages/rendering/src/render-passes/PointCloudEffectsPass.d.ts +3 -8
  132. package/packages/rendering/src/render-passes/PostProcessingPass.d.ts +1 -0
  133. package/packages/rendering/src/render-passes/types.d.ts +12 -11
  134. package/packages/rendering/src/render-pipeline-providers/DefaultRenderPipelineProvider.d.ts +2 -1
  135. package/packages/rendering/src/render-pipeline-providers/PointCloudRenderPipelineProvider.d.ts +2 -1
  136. package/packages/rendering/src/rendering/shaders.d.ts +4 -0
  137. package/packages/rendering/src/rendering/types.d.ts +0 -1
  138. package/packages/rendering/src/utilities/renderUtilities.d.ts +4 -2
  139. package/packages/sector-loader/index.d.ts +0 -1
  140. package/packages/sector-loader/src/GltfSectorLoader.d.ts +1 -1
  141. package/packages/sector-loader/src/GltfSectorRepository.d.ts +1 -1
  142. package/packages/tools/index.d.ts +0 -3
  143. package/packages/tools/src/Cognite3DViewerToolBase.d.ts +1 -1
  144. package/packages/tools/src/HtmlOverlay/HtmlOverlayTool.d.ts +1 -1
  145. package/packages/tools/src/Measurement/MeasurementTool.d.ts +1 -1
  146. package/packages/utilities/index.d.ts +7 -4
  147. package/packages/utilities/src/SceneHandler.d.ts +6 -6
  148. package/packages/utilities/src/events/types.d.ts +9 -1
  149. package/packages/utilities/src/linalg.d.ts +11 -0
  150. package/packages/utilities/src/shapes/Box.d.ts +12 -0
  151. package/packages/utilities/src/shapes/CompositeShape.d.ts +13 -0
  152. package/packages/utilities/src/shapes/Cylinder.d.ts +14 -0
  153. package/packages/utilities/src/shapes/ISerializableShape.d.ts +11 -0
  154. package/packages/utilities/src/shapes/IShape.d.ts +9 -0
  155. package/packages/utilities/src/shapes/SerializableBox.d.ts +8 -0
  156. package/packages/utilities/src/shapes/SerializableCompositeShape.d.ts +7 -0
  157. package/packages/utilities/src/shapes/SerializableCylinder.d.ts +10 -0
  158. package/packages/utilities/src/shapes/index.d.ts +11 -0
  159. package/packages/utilities/src/three/createDistinctColors.d.ts +5 -0
  160. package/packages/utilities/src/three/fromThreeVector3.d.ts +5 -0
  161. package/packages/utilities/src/workers/workerize-transferable/index.d.ts +7 -0
  162. package/packages/utilities/src/workers/workerize-transferable/message-types.d.ts +4 -0
  163. package/packages/utilities/src/workers/workerize-transferable/on-main.d.ts +13 -0
  164. package/packages/utilities/src/workers/workerize-transferable/on-worker.d.ts +14 -0
  165. package/packages/utilities/src/workers/workerize-transferable/util.d.ts +10 -0
  166. package/packages/utilities/src/worldToViewport.d.ts +4 -0
  167. package/tools.js +2 -2
  168. package/tools.js.map +1 -0
  169. package/eptBinaryDecoder.worker.map +0 -1
  170. package/extensions/datasource.map +0 -1
  171. package/index.map +0 -1
  172. package/packages/cad-geometry-loaders/src/sector/culling/ByVisibilityGpuSectorCuller.d.ts +0 -51
  173. package/packages/cad-geometry-loaders/src/sector/culling/OrderSectorsByVisibilityCoverage.d.ts +0 -106
  174. package/packages/cad-geometry-loaders/src/sector/culling/RenderAlreadyLoadedGeometryProvider.d.ts +0 -11
  175. package/packages/cad-geometry-loaders/src/sector/culling/createV8SectorCuller.d.ts +0 -7
  176. package/packages/cad-geometry-loaders/src/sector/culling/takensectors/TakenV8SectorMap.d.ts +0 -17
  177. package/packages/cad-geometry-loaders/src/sector/culling/takensectors/TakenV8SectorTree.d.ts +0 -24
  178. package/packages/cad-geometry-loaders/src/utilities/rxOperations.d.ts +0 -6
  179. package/packages/cad-model/src/batching/InstancedMeshManager.d.ts +0 -20
  180. package/packages/cad-parsers/src/cad/CadSectorParser.d.ts +0 -15
  181. package/packages/cad-parsers/src/cad/filterInstanceMesh.d.ts +0 -6
  182. package/packages/cad-parsers/src/cad/filterPrimitivesV8.d.ts +0 -9
  183. package/packages/cad-parsers/src/cad/primitiveGeometries.d.ts +0 -30
  184. package/packages/cad-parsers/src/cad/triangleMeshes.d.ts +0 -6
  185. package/packages/cad-parsers/src/metadata/parsers/CadMetadataParserV8.d.ts +0 -6
  186. package/packages/cad-parsers/src/utilities/float32BufferToMatrix.d.ts +0 -12
  187. package/packages/modeldata-api/index.d.ts +0 -12
  188. package/packages/modeldata-api/src/types.d.ts +0 -43
  189. package/packages/pointclouds/src/createPointClassKey.d.ts +0 -5
  190. package/packages/pointclouds/src/potree-three-loader/rendering/PointCloudMaterial.d.ts +0 -204
  191. package/packages/pointclouds/src/potree-three-loader/rendering/classification.d.ts +0 -2
  192. package/packages/pointclouds/src/potree-three-loader/rendering/clipping.d.ts +0 -12
  193. package/packages/pointclouds/src/potree-three-loader/rendering/enums.d.ts +0 -46
  194. package/packages/pointclouds/src/potree-three-loader/rendering/features.d.ts +0 -6
  195. package/packages/pointclouds/src/potree-three-loader/rendering/index.d.ts +0 -5
  196. package/packages/pointclouds/src/potree-three-loader/rendering/texture-generation.d.ts +0 -5
  197. package/packages/pointclouds/src/potree-three-loader/utils/math.d.ts +0 -1
  198. package/packages/rendering/src/rendering/createSimpleGeometryMesh.d.ts +0 -6
  199. package/packages/rendering/src/rendering/primitives.d.ts +0 -12
  200. package/packages/sector-loader/src/V8SectorRepository.d.ts +0 -26
  201. package/packages/sector-loader/src/v8/SimpleAndDetailedToSector3D.d.ts +0 -20
  202. package/packages/sector-loader/src/v8/arrays.d.ts +0 -5
  203. package/packages/sector-loader/src/v8/groupMeshesByNumber.d.ts +0 -8
  204. package/packages/sector-loader/src/v8/sectorUtilities.d.ts +0 -16
  205. package/packages/tools/src/DebugLoadedSectorsTool.d.ts +0 -23
  206. package/packages/tools/src/Geomap/Geomap.d.ts +0 -17
  207. package/packages/tools/src/Geomap/GeomapTool.d.ts +0 -23
  208. package/packages/tools/src/Geomap/MapConfig.d.ts +0 -195
  209. package/packages/utilities/src/networking/isTheSameDomain.d.ts +0 -11
  210. package/packages/utilities/src/revealEnv.d.ts +0 -10
  211. package/packages/utilities/src/workers/WorkerPool.d.ts +0 -14
  212. package/tools.map +0 -1
@@ -0,0 +1,24 @@
1
+ /*!
2
+ * Adopted from https://github.com/naoak/workerize-transferable
3
+ */
4
+
5
+ /*!
6
+ * Copyright 2021 Cognite AS
7
+ */
8
+
9
+ /*!
10
+ * Copyright 2022 Cognite AS
11
+ */
12
+
13
+ /*!
14
+ * The buffer module from node.js, for the browser.
15
+ *
16
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
17
+ * @license MIT
18
+ */
19
+
20
+ /**
21
+ * @license
22
+ * Copyright 2010-2022 Three.js Authors
23
+ * SPDX-License-Identifier: MIT
24
+ */
package/README.md CHANGED
@@ -70,13 +70,19 @@ In case if you see an error like that:
70
70
 
71
71
  See the next steps in our [documentation](https://cognitedata.github.io/reveal-docs/docs/installation#installation-for-projects-with-content-security-policy).
72
72
 
73
+ ## Prerequisites
74
+
75
+ For development, you will need to install [Node](https://nodejs.org/en/download/), [Yarn](https://yarnpkg.com/getting-started/install) and [Rust+Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html).
76
+
77
+ Run `yarn` in the viewer
78
+
73
79
  ## Local Packages
74
80
  The Reveal viewer is structured using local packages.
75
81
  This allows you to test features in isolation and constrain the dependencies with logical barriers between features.
76
82
  Packages are located in the `/packages/` subfolder.
77
83
  There is no enforced structure of the packages and their layout and content will vary depending on what the package exposes to the rest of the system.
78
84
  Dependencies that are located in the `viewer/package.json` will be shared and are accessible by any package without having to explicitly declare a dependency in the respective package's `package.json`.
79
- Any external dependency (e.g. `lodash`, `threejs`, etc.) must be declared in the root `package.json` such that they will be properly installed by users that consume the `Reveal` NPM package.
85
+ Any external dependency (e.g. `lodash`, `threejs`, etc.) must be declared in the root `package.json` such that they will be properly installed by users that consume the `Reveal` NPM package.
80
86
 
81
87
  ### Creating a local package
82
88
  Create a new folder under the `/packages/` folder, e.g. `/packages/[MY-PACKAGE-NAME]` and include a package with the following structure:
@@ -106,6 +112,22 @@ If your package depends on another local package, it must be explicitly declared
106
112
  The `workspace` keyword declares that the dependency is a local package and should never be fetched from NPM.
107
113
  And the `':*'` syntax means that it should just grab any version available. See [this](https://yarnpkg.com/features/workspaces) for more documentation on yarn workspaces.
108
114
 
115
+ If you want to add Rust/Webassembly code to a package, you can add the following script in `package.json`:
116
+
117
+ ```json
118
+ {
119
+ "scripts": {
120
+ "run-wasm-pack": "yarn run ws:update-cargo-index && wasm-pack"
121
+ }
122
+ }
123
+ ```
124
+ and let the Cargo crate reside in `<package-name>/wasm`.
125
+ Then the crate will automatically be built and tested by the `build` and `test` scripts in the workspace root respectively.
126
+ The `ws:update-cargo-index` step ensures that the local `crates.io` index has been updated before running build.
127
+ Otherwise, the index update will be executed in a quiet manner, and the command may appear to hang for several minutes.
128
+
129
+ When writing tests in Rust, the tests must be annotated with the `#[wasm_bindgen_test]` attribute, instead of the conventional `#[test]`, and `wasm-bindgen-test` must be added as a (dev-)dependency. All tests are run as part of the normal `yarn test` script in the root folder, but can also be run manually with e.g. `wasm-pack test --chrome --headless` in the relevant `wasm` folder.
130
+
109
131
  It is also possible to run and test a local package in isolation from the rest of Reveal.
110
132
  Convenience functionality has been created to make this easy.
111
133
  Add the following script to your package's `package.json`:
@@ -131,6 +153,12 @@ Add the following script to your package's `package.json`:
131
153
  Running the command `yarn start` will host a localhost site with a template HTML that includes the `/app/index.ts` script that has been transpiled to javascript.
132
154
  To see an example of this check out the `packages/camera-manager` package.
133
155
 
156
+ ## Debugging
157
+
158
+ ### Worker source maps
159
+
160
+ When bundling source maps with inlined web workers, the bundle size grows huge. Therefore source maps for workers are disabled by default. In order to add source maps to workers, pass `--env workerSourceMaps=true` to the `yarn build` script.
161
+
134
162
  ## Creating and running visual tests
135
163
 
136
164
  Visual test files must be on the format `visual-tests/SomeTest.VisualTest.ts`. See one of the existing tests
@@ -145,6 +173,7 @@ For more information about visual tests, see [visual-tests/README.md](visual-tes
145
173
  ├── app # Runnable app
146
174
  └──index.ts # Entry point for runnable app
147
175
  ├── src # Source code for package
176
+ ├── wasm # Rust/Webassembly source code for package
148
177
  ├── test # Automated tests
149
178
  ├── package.json # Package declaration
150
179
  ├── index.ts # Entry point for package
@@ -6,4 +6,4 @@
6
6
  */
7
7
  export { DataSource } from '../packages/data-source';
8
8
  export { NodesApiClient } from '../packages/nodes-api';
9
- export { ModelIdentifier, CdfModelIdentifier, ModelMetadataProvider, ModelDataProvider, BlobOutputMetadata, File3dFormat } from '../packages/modeldata-api';
9
+ export { ModelIdentifier, CdfModelIdentifier, ModelMetadataProvider, ModelDataProvider, BlobOutputMetadata, File3dFormat, JsonFileProvider, BinaryFileProvider } from '../packages/data-providers';
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see datasource.js.LICENSE.txt */
2
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["@cognite/reveal"]=t():e["@cognite/reveal"]=t()}("undefined"!=typeof self?self:this,(()=>(()=>{"use strict";var e={d:(t,o)=>{for(var r in o)e.o(o,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:o[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{CdfModelIdentifier:()=>o,File3dFormat:()=>n});class o{constructor(e,t){this.revealInternalId=Symbol(`${e}/${t}`),this.modelId=e,this.revisionId=t}toString(){return`${o.name} (${String(this.revealInternalId)})`}}const r=require("three");var n,i;return(i=n||(n={})).EptPointCloud="ept-pointcloud",i.RevealCadModel="reveal-directory",i.GltfCadModel="gltf-directory",i.AnyFormat="all-outputs",(new r.Matrix4).set(1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1),require("@cognite/sdk-core"),t})()));
3
- //# sourceMappingURL=datasource.map
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["@cognite/reveal"]=t():e["@cognite/reveal"]=t()}("undefined"!=typeof self?self:this,(()=>(()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var i in s)e.o(s,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:s[i]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};e.r(t),e.d(t,{CdfModelIdentifier:()=>s,File3dFormat:()=>r});class s{constructor(e,t){this.revealInternalId=Symbol(`${e}/${t}`),this.modelId=e,this.revisionId=t}toString(){return`${s.name} (${String(this.revealInternalId)})`}}const i=require("three");var r,o;(o=r||(r={})).EptPointCloud="ept-pointcloud",o.GltfCadModel="gltf-directory",o.AnyFormat="all-outputs",(new i.Matrix4).set(1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1),require("lodash/groupBy"),require("lodash/orderBy"),require("lodash/zipWith"),require("assert"),require("@cognite/sdk-core");class n{static color(e){const t=n._colors.get(e);if(void 0!==t)return t;const s=n.generateRandomColor();return n._colors.set(e,s),s}static colorRGB(e){const t=n.color(e);return[Math.floor(255*t.r),Math.floor(255*t.g),Math.floor(255*t.b)]}static colorCSS(e){const[t,s,i]=n.colorRGB(e);return`rgb(${t}, ${s}, ${i})`}static generateRandomColor(){const e=Math.random(),t=.4+.6*Math.random(),s=.3+.4*Math.random();return(new i.Color).setHSL(e,t,s)}}function a(e,t){const s=t.getBoundingClientRect();if(e instanceof MouseEvent)return{offsetX:e.clientX-s.left,offsetY:e.clientY-s.top};if(e.changedTouches.length>0){const t=e.changedTouches[0];return{offsetX:t.clientX-s.left,offsetY:t.clientY-s.top}}return{offsetX:-1,offsetY:-1}}n._colors=new Map;class l{constructor(){this._listeners=[]}subscribe(e){this._listeners.push(e)}unsubscribe(e){const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}unsubscribeAll(){this._listeners.splice(0)}fire(...e){this._listeners.forEach((t=>t(...e)))}}const h=require("lodash/debounce");var d,c,u=e.n(h);function _(e,t){throw new Error(t||"Unexpected object: "+e)}class f{constructor(e){this._events={click:new l,hover:new l},this.onHoverCallback=u()((e=>{this._events.hover.fire(a(e,this.domElement))}),100),this.domElement=e,this.setupEventListeners()}on(e,t){switch(e){case"click":this._events.click.subscribe(t);break;case"hover":this._events.hover.subscribe(t);break;default:_(e)}}off(e,t){switch(e){case"click":this._events.click.unsubscribe(t);break;case"hover":this._events.hover.unsubscribe(t);break;default:_(e)}}dispose(){!function(e){for(const t of Object.keys(e))e[t].unsubscribeAll()}(this._events)}setupEventListeners(){const{domElement:e}=this;let t=!1,s=0,r=!1;const o=new i.Vector2,n=i=>{this.handleClickEvent(i,o,t,r,s),t=!1,r=!1,e.removeEventListener("mouseup",n),e.removeEventListener("touchend",n),e.addEventListener("mousemove",this.onHoverCallback)},l=i=>{t=!0,r=!0,s=i.timeStamp;const{offsetX:l,offsetY:h}=a(i,e);o.set(l,h),e.addEventListener("mouseup",n),e.addEventListener("touchend",n),e.removeEventListener("mousemove",this.onHoverCallback)};e.addEventListener("mousedown",l),e.addEventListener("touchstart",l),e.addEventListener("mousemove",this.onHoverCallback)}isProperClick(e,t,s,i,r){const{offsetX:o,offsetY:n}=a(e,this.domElement),l=e.timeStamp-r,h=Math.abs(o-t.x)+Math.abs(n-t.y)>f.maxMoveDistance;return s&&i&&l<f.maxClickDuration&&!h}handleClickEvent(e,t,s,i,r){if(this.isProperClick(e,t,s,i,r)){const t={...a(e,this.domElement),button:e instanceof MouseEvent?e.button:void 0};this._events.click.fire(t)}}}f.maxMoveDistance=8,f.maxClickDuration=250,Math.log(2),new i.BufferGeometry;class v extends i.Group{constructor(){super(...arguments),this._isDisposed=!1,this._referenceCount=0}reference(){this.ensureNotDisposed(),this._referenceCount++}dereference(){if(this.ensureNotDisposed(),0===this._referenceCount)throw new Error("No references");0==--this._referenceCount&&this.dispose()}dispose(){this.ensureNotDisposed(),this._isDisposed=!0;for(const e of this.children)e instanceof THREE.Mesh&&void 0!==e.geometry&&(e.geometry.dispose(),e.geometry=emptyGeometry),e instanceof THREE.BufferGeometry&&e.dispose();this.clear()}ensureNotDisposed(){if(this._isDisposed)throw new Error("Already disposed/dereferenced")}}new i.Vector3,new i.Box3;class p extends i.Object3D{constructor(e){super(),this._activeLevel=0,this._levels=[],this.isLOD=!0,this.autoUpdate=!0,this._boundingBox=e.clone(),this.type="BoundingBoxLOD"}setBoundingBox(e){this._boundingBox.copy(e)}addLevel(e,t=0){this._levels.push({object:e,distance:Math.abs(t)}),this._levels.sort(((e,t)=>t.distance-e.distance)),e.visible=!1,this.add(e)}getCurrentLevel(){return this._levels.length>0?this._levels.length-this._activeLevel-1:0}update(e){this.updateCurrentLevel(e)}updateCurrentLevel(e){const t=this._levels,{camPos:s,bounds:i}=updateVars;i.copy(this._boundingBox).applyMatrix4(this.matrixWorld);const r=e instanceof THREE.PerspectiveCamera?e.zoom:1;if(t.length>0){s.setFromMatrixPosition(e.matrixWorld);const o=i.distanceToPoint(s)/r;t[this._activeLevel].object.visible=!1,this._activeLevel=t.findIndex((e=>o>=e.distance)),this._activeLevel=this._activeLevel>=0?this._activeLevel:t.length-1,t[this._activeLevel].object.visible=!0}}}new i.Vector3;class g{constructor(e){this._originalState={},this._renderer=e,this._originalState={}}setScissor(e,t,s,r){const o=this._renderer.getScissor(new i.Vector4);this._originalState={scissorData:o,...this._originalState},this._renderer.setScissor(e,t,s,r)}setScissorTest(e){this._originalState={scissorTest:this._renderer.getScissorTest(),...this._originalState},this._renderer.setScissorTest(e)}setClearColor(e,t){this._originalState={clearColor:this._renderer.getClearColor(new i.Color),clearAlpha:this._renderer.getClearAlpha(),...this._originalState},this._renderer.setClearColor(e,t)}setWebGLState(e,t=g.DefaultWebGLState){var s,i,r,o,n,a,l;if(this._originalState={webGLState:{buffers:(null==e?void 0:e.buffers)?{}:void 0},...this._originalState},null===(s=null==e?void 0:e.buffers)||void 0===s?void 0:s.depth){const s=null===(i=e.buffers.depth)||void 0===i?void 0:i.test,h=null===(r=e.buffers.depth)||void 0===r?void 0:r.mask;this._originalState.webGLState.buffers.depth={test:void 0!==s?null===(n=null===(o=t.buffers)||void 0===o?void 0:o.depth)||void 0===n?void 0:n.test:void 0,mask:void 0!==h?null===(l=null===(a=t.buffers)||void 0===a?void 0:a.depth)||void 0===l?void 0:l.mask:void 0},void 0!==h&&this._renderer.state.buffers.depth.setMask(h),void 0!==s&&this._renderer.state.buffers.depth.setTest(s)}}setSize(e,t){this._originalState={size:this._renderer.getSize(new i.Vector2),...this._originalState},this._renderer.setSize(e,t)}set localClippingEnabled(e){this._originalState={localClippingEnabled:this._renderer.localClippingEnabled,...this._originalState},this._renderer.localClippingEnabled=e}set autoClear(e){this._originalState={autoClear:this._renderer.autoClear,...this._originalState},this._renderer.autoClear=e}set autoClearDepth(e){this._originalState={autoClearDepth:this._renderer.autoClearDepth,...this._originalState},this._renderer.autoClearDepth=e}setRenderTarget(e){this._originalState={renderTarget:this._renderer.getRenderTarget(),...this._originalState},this._renderer.setRenderTarget(e)}resetState(){var e,t,s,i;if(void 0!==this._originalState.autoClear&&(this._renderer.autoClear=this._originalState.autoClear),void 0!==this._originalState.autoClearDepth&&(this._renderer.autoClearDepth=this._originalState.autoClearDepth),void 0!==this._originalState.clearColor&&this._renderer.setClearColor(this._originalState.clearColor,this._originalState.clearAlpha),void 0!==this._originalState.localClippingEnabled&&(this._renderer.localClippingEnabled=this._originalState.localClippingEnabled),void 0!==this._originalState.size&&this._renderer.setSize(this._originalState.size.width,this._originalState.size.height),void 0!==this._originalState.renderTarget&&this._renderer.setRenderTarget(this._originalState.renderTarget),void 0!==this._originalState.scissorData&&this._renderer.setScissor(this._originalState.scissorData),void 0!==this._originalState.scissorTest&&this._renderer.setScissorTest(this._originalState.scissorTest),void 0!==this._originalState.webGLState&&(this._renderer.state.reset(),null===(t=null===(e=this._originalState.webGLState)||void 0===e?void 0:e.buffers)||void 0===t?void 0:t.depth)){const e=null===(s=this._originalState.webGLState.buffers.depth)||void 0===s?void 0:s.test,t=null===(i=this._originalState.webGLState.buffers.depth)||void 0===i?void 0:i.mask;void 0!==t&&this._renderer.state.buffers.depth.setMask(t),void 0!==e&&this._renderer.state.buffers.depth.setTest(e)}this._originalState={}}}g.DefaultWebGLState={buffers:{depth:{mask:!0,test:!0}}};class b{constructor(e){this._value=e,this._lastAccessTime=Date.now()}get value(){return this.touch(),this._value}get lastAccessTime(){return this._lastAccessTime}touch(){this._lastAccessTime=Date.now()}}class m{constructor(e=50,t,s=10){this._data=new Map,this._maxElementsInCache=e,this._defaultCleanupCount=Math.max(s,1),this._removeCallback=t}has(e){return this._data.has(e)}forceInsert(e,t){this.isFull()&&this.cleanCache(this._defaultCleanupCount),this.insert(e,t)}insert(e,t){if(this._data.size<this._maxElementsInCache)this._data.set(e,new b(t));else if(this._maxElementsInCache>0)throw new Error("Cache full, please clean Cache and retry adding data")}remove(e){if(void 0!==this._removeCallback){const t=this._data.get(e);void 0!==t&&this._removeCallback(t.value)}this._data.delete(e)}get(e){const t=this._data.get(e);if(void 0!==t)return t.value;throw new Error(`Cache element ${e} does not exist`)}isFull(){return this._data.size>=this._maxElementsInCache}cleanCache(e){const t=Array.from(this._data.entries());t.sort(((e,t)=>t[1].lastAccessTime-e[1].lastAccessTime));for(let s=0;s<e;s++){const e=t.pop();if(void 0===e)return;this.remove(e[0])}}resize(e){this._maxElementsInCache=e,this._defaultCleanupCount=Math.max(e*m.CLEANUP_COUNT_TO_CAPACITY_RATIO,1),this.isFull()&&this.cleanCache(this._data.size-this._maxElementsInCache)}clear(){if(void 0!==this._removeCallback)for(const e of this._data.values())this._removeCallback(e.value);this._data.clear()}}return m.CLEANUP_COUNT_TO_CAPACITY_RATIO=.2,require("lodash/chunk"),require("lodash/map"),new i.Vector2,new i.Vector3,Symbol.toStringTag,require("lodash/remove"),function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g;throw new Error("unable to locate global object")}(),(c=d||(d={}))[c.Box=0]="Box",c[c.Cylinder=1]="Cylinder",c[c.Composite=2]="Composite",t})()));
3
+ //# sourceMappingURL=datasource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions/datasource.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./packages/data-providers/src/model-identifiers/CdfModelIdentifier.ts","webpack:///external commonjs \"three\"","webpack:///./packages/data-providers/src/types.ts","webpack:///./packages/data-providers/src/utilities/applyDefaultModelTransformation.ts","webpack:///external commonjs \"lodash/groupBy\"","webpack:///external commonjs \"lodash/orderBy\"","webpack:///external commonjs \"lodash/zipWith\"","webpack:///external commonjs \"assert\"","webpack:///external commonjs \"@cognite/sdk-core\"","webpack:///./packages/utilities/src/RandomColors.ts","webpack:///./packages/utilities/src/events/clickOrTouchEventOffset.ts","webpack:///./packages/utilities/src/events/EventTrigger.ts","webpack:///external commonjs \"lodash/debounce\"","webpack:///./packages/utilities/src/shapes/ISerializableShape.ts","webpack:///./packages/utilities/src/assertNever.ts","webpack:///./packages/utilities/src/events/InputHandler.ts","webpack:///./packages/utilities/src/determinePowerOfTwoDimensions.ts","webpack:///./packages/utilities/src/three/AutoDisposeGroup.ts","webpack:///./packages/utilities/src/three/BoundingBoxLOD.ts","webpack:///./packages/utilities/src/three/visitBox3CornerPoints.ts","webpack:///./packages/utilities/src/WebGLRendererStateHelper.ts","webpack:///./packages/utilities/src/cache/MemoryRequestCache.ts","webpack:///external commonjs \"lodash/chunk\"","webpack:///external commonjs \"lodash/map\"","webpack:///./packages/utilities/src/worldToViewport.ts","webpack:///./packages/utilities/src/DeferredPromise.ts","webpack:///external commonjs \"lodash/remove\"","webpack:///./packages/utilities/src/workers/workerize-transferable/util.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@cognite/reveal\"] = factory();\n\telse\n\t\troot[\"@cognite/reveal\"] = factory();\n})((typeof self !== 'undefined' ? self : this), () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*!\n * Copyright 2021 Cognite AS\n */\nimport { ModelIdentifier } from '../..';\n\n/**\n * Identifies a 3D model stored in CDF by the combination of a modelId, a revisionId\n * and a format.\n */\nexport class CdfModelIdentifier implements ModelIdentifier {\n readonly revealInternalId: symbol;\n\n readonly modelId: number;\n readonly revisionId: number;\n\n constructor(modelId: number, revisionId: number) {\n this.revealInternalId = Symbol(`${modelId}/${revisionId}`);\n this.modelId = modelId;\n this.revisionId = revisionId;\n }\n\n public toString(): string {\n return `${CdfModelIdentifier.name} (${String(this.revealInternalId)})`;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"three\");","/*!\n * Copyright 2021 Cognite AS\n */\nimport * as THREE from 'three';\n\nexport interface JsonFileProvider {\n getJsonFile(baseUrl: string, fileName: string): Promise<any>;\n}\n\nexport interface BinaryFileProvider {\n getBinaryFile(baseUrl: string, fileName: string): Promise<ArrayBuffer>;\n}\n\nexport interface Image360DescriptorProvider<T> {\n get360ImageDescriptors(metadataFilter: T): Promise<Image360Descriptor[]>;\n}\n\nexport interface Image360FileProvider {\n get360ImageFiles(image360Descriptor: Image360Descriptor): Promise<Image360Face[]>;\n}\n\nexport type Image360Descriptor = {\n id: string;\n label: string;\n collectionId: string;\n collectionLabel: string;\n transformations: {\n translation: THREE.Matrix4;\n rotation: THREE.Matrix4;\n };\n};\n\nexport type Image360Face = {\n face: 'front' | 'back' | 'left' | 'right' | 'top' | 'bottom';\n mimeType: 'image/jpeg' | 'image/png';\n data: ArrayBuffer;\n};\n\nexport enum File3dFormat {\n EptPointCloud = 'ept-pointcloud',\n /**\n * Reveal v9 and above (GLTF based output)\n */\n GltfCadModel = 'gltf-directory',\n AnyFormat = 'all-outputs'\n}\n\nexport interface BlobOutputMetadata {\n blobId: number;\n format: File3dFormat | string;\n version: number;\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\n\nimport * as THREE from 'three';\n\nimport { File3dFormat } from '../types';\n\n// The below is equal to new THREE.Matrix4().makeRotationFromEuler(new THREE.Euler(-Math.PI / 2, 0, 0));\nconst cadFromCdfToThreeMatrix = new THREE.Matrix4().set(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1);\n\nexport function applyDefaultModelTransformation(matrix: THREE.Matrix4, format: File3dFormat | string): void {\n switch (format) {\n case File3dFormat.GltfCadModel:\n case File3dFormat.EptPointCloud:\n matrix.premultiply(cadFromCdfToThreeMatrix);\n break;\n\n default:\n throw new Error(`Unknown model format '${format}`);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/groupBy\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/orderBy\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/zipWith\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"assert\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@cognite/sdk-core\");","/*!\n * Copyright 2021 Cognite AS\n */\nimport * as THREE from 'three';\n\n/**\n * Utility class for creating reasonable visible colors. Mainly meant for use\n * in debugging.\n */\nexport class RandomColors {\n private static readonly _colors: Map<number, THREE.Color> = new Map();\n\n /**\n * Returns a color as a THREE.Color.\n * @param colorIndex\n * @returns\n */\n static color(colorIndex: number): THREE.Color {\n const color = RandomColors._colors.get(colorIndex);\n if (color !== undefined) {\n return color;\n }\n\n const newColor = RandomColors.generateRandomColor();\n RandomColors._colors.set(colorIndex, newColor);\n return newColor;\n }\n\n /**\n * Returns color as RGB components between 0 and 255.\n * @param colorIndex Return\n * @returns\n */\n static colorRGB(colorIndex: number): [number, number, number] {\n const c = RandomColors.color(colorIndex);\n return [Math.floor(c.r * 255), Math.floor(c.g * 255), Math.floor(c.b * 255)];\n }\n\n /**\n * Returns a color string suitable for usage in CSS styles.\n * @param colorIndex\n * @returns\n */\n static colorCSS(colorIndex: number): string {\n const [r, g, b] = RandomColors.colorRGB(colorIndex);\n return `rgb(${r}, ${g}, ${b})`;\n }\n\n /**\n * Returns a random color with reasonable lightness and saturation\n * to make the color easily distinguishable from other colors.\n */\n static generateRandomColor(): THREE.Color {\n const hue = Math.random();\n const saturation = 0.4 + Math.random() * 0.6;\n const lightness = 0.3 + 0.4 * Math.random();\n return new THREE.Color().setHSL(hue, saturation, lightness);\n }\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\n\n/**\n * Determines clicked or touched coordinate as offset\n * @param ev An MouseEvent or TouchEvent.\n * @param target HTML element to find coordinates relative to.\n * @returns A struct containing coordinates relative to the HTML element provided.\n */\nexport function clickOrTouchEventOffset(\n ev: MouseEvent | TouchEvent,\n target: HTMLElement\n): { offsetX: number; offsetY: number } {\n const rect = target.getBoundingClientRect();\n\n if (ev instanceof MouseEvent) {\n return {\n offsetX: ev.clientX - rect.left,\n offsetY: ev.clientY - rect.top\n };\n } else if (ev.changedTouches.length > 0) {\n const touch = ev.changedTouches[0];\n return {\n offsetX: touch.clientX - rect.left,\n offsetY: touch.clientY - rect.top\n };\n }\n\n // Invalid event\n return {\n offsetX: -1,\n offsetY: -1\n };\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\n\n/**\n * Subscribable event source.\n */\nexport class EventTrigger<TListener extends (...args: any[]) => void> {\n private readonly _listeners: TListener[] = [];\n\n subscribe(listener: TListener): void {\n this._listeners.push(listener);\n }\n\n unsubscribe(listener: TListener): void {\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n unsubscribeAll(): void {\n this._listeners.splice(0);\n }\n\n fire(...args: Parameters<TListener>): void {\n this._listeners.forEach(listener => listener(...args));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/debounce\");","/*!\n * Copyright 2022 Cognite AS\n */\n\nexport enum ShapeType {\n Box,\n Cylinder,\n Composite\n}\n\nexport interface ISerializableShape {\n readonly shapeType: ShapeType;\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\n\n/**\n * See https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html#union-exhaustiveness-checking\n */\nexport function assertNever(x: never, message?: string): never {\n throw new Error(message || 'Unexpected object: ' + x);\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\nimport { clickOrTouchEventOffset } from './clickOrTouchEventOffset';\nimport { EventTrigger } from './EventTrigger';\nimport debounce from 'lodash/debounce';\nimport { assertNever } from '../assertNever';\nimport { Vector2 } from 'three';\nimport { PointerEventDelegate } from './types';\n\nexport type EventCollection = { [eventName: string]: EventTrigger<(...args: any[]) => void> };\n\nexport class InputHandler {\n private readonly domElement: HTMLElement;\n private static readonly maxMoveDistance = 8;\n private static readonly maxClickDuration = 250;\n\n private readonly _events = {\n click: new EventTrigger<PointerEventDelegate>(),\n hover: new EventTrigger<PointerEventDelegate>()\n };\n\n constructor(domElement: HTMLElement) {\n this.domElement = domElement;\n\n this.setupEventListeners();\n }\n /**\n * @example\n * ```js\n * const onClick = (event) => { console.log(event.offsetX, event.offsetY) };\n * viewer.on('click', onClick);\n * ```\n */\n on(event: 'click' | 'hover', callback: PointerEventDelegate): void {\n switch (event) {\n case 'click':\n this._events.click.subscribe(callback as PointerEventDelegate);\n break;\n\n case 'hover':\n this._events.hover.subscribe(callback as PointerEventDelegate);\n break;\n default:\n assertNever(event);\n }\n }\n\n off(event: 'click' | 'hover', callback: PointerEventDelegate): void {\n switch (event) {\n case 'click':\n this._events.click.unsubscribe(callback as PointerEventDelegate);\n break;\n\n case 'hover':\n this._events.hover.unsubscribe(callback as PointerEventDelegate);\n break;\n default:\n assertNever(event);\n }\n }\n\n dispose(): void {\n disposeOfAllEventListeners(this._events);\n }\n\n private setupEventListeners() {\n const { domElement } = this;\n\n let pointerDown = false;\n let pointerDownTimestamp = 0;\n let validClick = false;\n\n const startOffset = new Vector2();\n\n const onUp = (e: MouseEvent | TouchEvent) => {\n this.handleClickEvent(e, startOffset, pointerDown, validClick, pointerDownTimestamp);\n\n pointerDown = false;\n validClick = false;\n\n // up\n domElement.removeEventListener('mouseup', onUp);\n domElement.removeEventListener('touchend', onUp);\n\n // add back onHover\n domElement.addEventListener('mousemove', this.onHoverCallback);\n };\n\n const onDown = (e: MouseEvent | TouchEvent) => {\n pointerDown = true;\n validClick = true;\n pointerDownTimestamp = e.timeStamp;\n\n const { offsetX, offsetY } = clickOrTouchEventOffset(e, domElement);\n startOffset.set(offsetX, offsetY);\n\n // up\n domElement.addEventListener('mouseup', onUp);\n domElement.addEventListener('touchend', onUp);\n\n // no more onHover\n domElement.removeEventListener('mousemove', this.onHoverCallback);\n };\n\n // down\n domElement.addEventListener('mousedown', onDown);\n domElement.addEventListener('touchstart', onDown);\n\n // on hover callback\n domElement.addEventListener('mousemove', this.onHoverCallback);\n }\n\n private isProperClick(\n e: MouseEvent | TouchEvent,\n startOffset: Vector2,\n pointerDown: boolean,\n validClick: boolean,\n pointerDownTimestamp: number\n ) {\n const { offsetX, offsetY } = clickOrTouchEventOffset(e, this.domElement);\n const clickDuration = e.timeStamp - pointerDownTimestamp;\n\n const hasMovedDuringClick =\n Math.abs(offsetX - startOffset.x) + Math.abs(offsetY - startOffset.y) > InputHandler.maxMoveDistance;\n\n const isProperClick =\n pointerDown && validClick && clickDuration < InputHandler.maxClickDuration && !hasMovedDuringClick;\n\n return isProperClick;\n }\n\n private handleClickEvent(\n e: MouseEvent | TouchEvent,\n startOffset: Vector2,\n pointerDown: boolean,\n validClick: boolean,\n pointerDownTimestamp: number\n ) {\n const isProperClick = this.isProperClick(e, startOffset, pointerDown, validClick, pointerDownTimestamp);\n\n if (isProperClick) {\n const firedEvent = {\n ...clickOrTouchEventOffset(e, this.domElement),\n button: e instanceof MouseEvent ? e.button : undefined\n };\n\n this._events.click.fire(firedEvent);\n }\n }\n\n private readonly onHoverCallback = debounce((e: MouseEvent) => {\n this._events.hover.fire(clickOrTouchEventOffset(e, this.domElement));\n }, 100);\n}\n\n/**\n * Method for deleting all external events that are associated with current instance of a class.\n */\nexport function disposeOfAllEventListeners(eventList: EventCollection): void {\n for (const eventType of Object.keys(eventList)) {\n eventList[eventType].unsubscribeAll();\n }\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\n\n/**\n * Computes minimal power-of-two width and height that holds at least the number of elements provided.\n * This is useful to compute texture sizes.\n */\nexport function determinePowerOfTwoDimensions(elementCount: number): { width: number; height: number } {\n const width = Math.max(1, ceilToPowerOfTwo(Math.sqrt(elementCount)));\n const height = Math.max(1, ceilToPowerOfTwo(elementCount / width));\n return { width, height };\n}\n\nconst log2 = Math.log(2);\nfunction ceilToPowerOfTwo(v: number): number {\n return Math.pow(2, Math.ceil(Math.log(v) / log2));\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\n\nimport * as THREE from 'three';\n\nconst emptyGeometry = new THREE.BufferGeometry();\n\n/**\n * Referenced count implementation of THREE.Group that\n * automatically disposes all geometries contained in meshes that\n * are direct children of the group.\n */\nexport class AutoDisposeGroup extends THREE.Group {\n private _isDisposed = false;\n private _referenceCount = 0;\n\n reference(): void {\n this.ensureNotDisposed();\n this._referenceCount++;\n }\n\n dereference(): void {\n this.ensureNotDisposed();\n if (this._referenceCount === 0) {\n throw new Error('No references');\n }\n if (--this._referenceCount === 0) {\n this.dispose();\n }\n }\n\n private dispose(): void {\n this.ensureNotDisposed();\n this._isDisposed = true;\n\n for (const child of this.children) {\n if (child instanceof THREE.Mesh && child.geometry !== undefined) {\n child.geometry.dispose();\n\n // // NOTE: Forcefully creating a new reference here to make sure\n // // there are no lingering references to the large geometry buffer\n child.geometry = emptyGeometry;\n }\n if (child instanceof THREE.BufferGeometry) {\n child.dispose();\n }\n }\n\n this.clear();\n }\n\n private ensureNotDisposed() {\n if (this._isDisposed) {\n throw new Error('Already disposed/dereferenced');\n }\n }\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\nimport * as THREE from 'three';\n\n// For BoundingBoxLOD.update()\nconst updateVars = {\n camPos: new THREE.Vector3(),\n bounds: new THREE.Box3()\n};\n\n/**\n * Class similar to THREE.LOD except that it doesn't use `matrixWorld` to determine distance to camera, but a\n * bounding box.\n */\nexport class BoundingBoxLOD extends THREE.Object3D {\n private readonly _boundingBox: THREE.Box3;\n private _activeLevel = 0;\n private readonly _levels: { distance: number; object: THREE.Object3D }[] = [];\n\n // Note! isLOD and autoUpdate is used by WebGLRenderer to perform automatic update of LOD\n // level before rendering\n public readonly isLOD = true;\n public readonly autoUpdate = true;\n\n constructor(boundingBox: THREE.Box3) {\n super();\n this._boundingBox = boundingBox.clone();\n this.type = 'BoundingBoxLOD';\n }\n\n setBoundingBox(boundingBox: THREE.Box3): void {\n this._boundingBox.copy(boundingBox);\n }\n\n addLevel(object: THREE.Object3D, distance: number = 0): void {\n this._levels.push({ object, distance: Math.abs(distance) });\n this._levels.sort((a, b) => b.distance - a.distance);\n object.visible = false;\n this.add(object);\n }\n\n /**\n * Returns the index of the current active LOD. 0 means highest detail.\n */\n getCurrentLevel(): number {\n return this._levels.length > 0 ? this._levels.length - this._activeLevel - 1 : 0;\n }\n\n /**\n * Update selected LOD level based on distance to camera.\n */\n update(camera: THREE.Camera): void {\n this.updateCurrentLevel(camera);\n }\n\n private updateCurrentLevel(camera: THREE.Camera) {\n const levels = this._levels;\n const { camPos, bounds } = updateVars;\n bounds.copy(this._boundingBox).applyMatrix4(this.matrixWorld);\n const cameraZoom = camera instanceof THREE.PerspectiveCamera ? camera.zoom : 1.0;\n\n if (levels.length > 0) {\n camPos.setFromMatrixPosition(camera.matrixWorld);\n const distanceToCamera = bounds.distanceToPoint(camPos) / cameraZoom;\n\n levels[this._activeLevel].object.visible = false;\n this._activeLevel = levels.findIndex(p => distanceToCamera >= p.distance);\n this._activeLevel = this._activeLevel >= 0 ? this._activeLevel : levels.length - 1;\n levels[this._activeLevel].object.visible = true;\n }\n }\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\nimport * as THREE from 'three';\n\nconst visitBox3CornerPointsVars = {\n tmpVector: new THREE.Vector3()\n};\n\n/**\n * Visits each corner point of the box given by applying\n * the callback provided to each of the points.\n * Note that the callback is invoked with a vector\n * that will be changed later, so if this is to be stored\n * it must be cloned first.\n */\nexport function visitBox3CornerPoints(box: THREE.Box3, callback: (corner: THREE.Vector3) => void): void {\n const { tmpVector } = visitBox3CornerPointsVars;\n tmpVector.set(box.min.x, box.min.y, box.min.z); // 000\n callback(tmpVector);\n tmpVector.set(box.min.x, box.min.y, box.max.z); // 001\n callback(tmpVector);\n tmpVector.set(box.min.x, box.max.y, box.min.z); // 010\n callback(tmpVector);\n tmpVector.set(box.min.x, box.max.y, box.max.z); // 011\n callback(tmpVector);\n tmpVector.set(box.max.x, box.min.y, box.min.z); // 100\n callback(tmpVector);\n tmpVector.set(box.max.x, box.min.y, box.max.z); // 101\n callback(tmpVector);\n tmpVector.set(box.max.x, box.max.y, box.min.z); // 110\n callback(tmpVector);\n tmpVector.set(box.max.x, box.max.y, box.max.z); // 111\n callback(tmpVector);\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\nimport * as THREE from 'three';\nimport { Vector4 } from 'three';\n\ntype WebGLRendererState = {\n autoClear?: boolean;\n autoClearDepth?: boolean;\n clearColor?: THREE.Color | string | number;\n clearAlpha?: number;\n size?: THREE.Vector2;\n localClippingEnabled?: boolean;\n renderTarget?: THREE.WebGLRenderTarget | null;\n scissorData?: THREE.Vector4;\n scissorTest?: boolean;\n webGLState?: WebGLState;\n};\n\ntype WebGLState = {\n buffers?: {\n depth?: {\n mask?: boolean;\n test?: boolean;\n };\n };\n};\n\nexport class WebGLRendererStateHelper {\n private _originalState: WebGLRendererState = {};\n private readonly _renderer: THREE.WebGLRenderer;\n\n private static readonly DefaultWebGLState: WebGLState = {\n buffers: {\n depth: {\n mask: true,\n test: true\n }\n }\n };\n\n constructor(renderer: THREE.WebGLRenderer) {\n this._renderer = renderer;\n this._originalState = {};\n }\n\n setScissor(x: number, y: number, width: number, height: number): void {\n const scissorData = this._renderer.getScissor(new Vector4());\n this._originalState = { scissorData, ...this._originalState };\n this._renderer.setScissor(x, y, width, height);\n }\n\n setScissorTest(enabled: boolean): void {\n this._originalState = { scissorTest: this._renderer.getScissorTest(), ...this._originalState };\n this._renderer.setScissorTest(enabled);\n }\n\n setClearColor(color: THREE.Color | number | string, alpha?: number): void {\n this._originalState = {\n clearColor: this._renderer.getClearColor(new THREE.Color()),\n clearAlpha: this._renderer.getClearAlpha(),\n ...this._originalState\n };\n this._renderer.setClearColor(color, alpha);\n }\n\n setWebGLState(state: WebGLState, resetState: WebGLState = WebGLRendererStateHelper.DefaultWebGLState): void {\n this._originalState = {\n webGLState: {\n buffers: state?.buffers ? {} : undefined\n },\n ...this._originalState\n };\n\n if (state?.buffers?.depth) {\n const newTest = state.buffers.depth?.test;\n const newMask = state.buffers.depth?.mask;\n\n this._originalState.webGLState!.buffers!.depth = {\n test: newTest !== undefined ? resetState.buffers?.depth?.test : undefined,\n mask: newMask !== undefined ? resetState.buffers?.depth?.mask : undefined\n };\n\n if (newMask !== undefined) this._renderer.state.buffers.depth.setMask(newMask);\n if (newTest !== undefined) this._renderer.state.buffers.depth.setTest(newTest);\n }\n }\n\n setSize(width: number, height: number): void {\n this._originalState = { size: this._renderer.getSize(new THREE.Vector2()), ...this._originalState };\n this._renderer.setSize(width, height);\n }\n\n set localClippingEnabled(enabled: boolean) {\n this._originalState = { localClippingEnabled: this._renderer.localClippingEnabled, ...this._originalState };\n this._renderer.localClippingEnabled = enabled;\n }\n\n set autoClear(enabled: boolean) {\n this._originalState = { autoClear: this._renderer.autoClear, ...this._originalState };\n this._renderer.autoClear = enabled;\n }\n\n set autoClearDepth(enabled: boolean) {\n this._originalState = { autoClearDepth: this._renderer.autoClearDepth, ...this._originalState };\n this._renderer.autoClearDepth = enabled;\n }\n\n setRenderTarget(renderTarget: THREE.WebGLRenderTarget | null): void {\n this._originalState = { renderTarget: this._renderer.getRenderTarget(), ...this._originalState };\n this._renderer.setRenderTarget(renderTarget);\n }\n\n resetState(): void {\n if (this._originalState.autoClear !== undefined) {\n this._renderer.autoClear = this._originalState.autoClear;\n }\n if (this._originalState.autoClearDepth !== undefined) {\n this._renderer.autoClearDepth = this._originalState.autoClearDepth;\n }\n if (this._originalState.clearColor !== undefined) {\n this._renderer.setClearColor(this._originalState.clearColor, this._originalState.clearAlpha);\n }\n if (this._originalState.localClippingEnabled !== undefined) {\n this._renderer.localClippingEnabled = this._originalState.localClippingEnabled;\n }\n if (this._originalState.size !== undefined) {\n this._renderer.setSize(this._originalState.size.width, this._originalState.size.height);\n }\n if (this._originalState.renderTarget !== undefined) {\n this._renderer.setRenderTarget(this._originalState.renderTarget);\n }\n if (this._originalState.scissorData !== undefined) {\n this._renderer.setScissor(this._originalState.scissorData);\n }\n if (this._originalState.scissorTest !== undefined) {\n this._renderer.setScissorTest(this._originalState.scissorTest);\n }\n if (this._originalState.webGLState !== undefined) {\n this._renderer.state.reset();\n\n if (this._originalState.webGLState?.buffers?.depth) {\n const lastTest = this._originalState.webGLState.buffers.depth?.test;\n const lastMask = this._originalState.webGLState.buffers.depth?.mask;\n\n if (lastMask !== undefined) this._renderer.state.buffers.depth.setMask(lastMask);\n if (lastTest !== undefined) this._renderer.state.buffers.depth.setTest(lastTest);\n }\n }\n\n this._originalState = {};\n }\n}\n","/*!\n * Copyright 2021 Cognite AS\n */\n\nimport { RequestCache } from './RequestCache';\n\nclass TimestampedContainer<T> {\n private _lastAccessTime: number;\n private readonly _value: T;\n\n constructor(value: T) {\n this._value = value;\n this._lastAccessTime = Date.now();\n }\n\n get value() {\n this.touch();\n return this._value;\n }\n\n get lastAccessTime() {\n return this._lastAccessTime;\n }\n\n private touch() {\n this._lastAccessTime = Date.now();\n }\n}\n\nexport interface MemoryRequestCacheOptions {\n maxElementsInCache?: number;\n}\n\nexport class MemoryRequestCache<Key, Data> implements RequestCache<Key, Data> {\n private _maxElementsInCache: number;\n private readonly _data: Map<Key, TimestampedContainer<Data>>;\n private _defaultCleanupCount: number;\n private readonly _removeCallback: ((value: Data) => void) | undefined;\n\n private static readonly CLEANUP_COUNT_TO_CAPACITY_RATIO = 1.0 / 5.0;\n\n constructor(\n maxElementsInCache: number = 50,\n removeCallback?: (value: Data) => void,\n defaultCleanupCount: number = 10\n ) {\n this._data = new Map();\n this._maxElementsInCache = maxElementsInCache;\n this._defaultCleanupCount = Math.max(defaultCleanupCount, 1);\n this._removeCallback = removeCallback;\n }\n\n has(id: Key): boolean {\n return this._data.has(id);\n }\n\n forceInsert(id: Key, data: Data): void {\n if (this.isFull()) {\n this.cleanCache(this._defaultCleanupCount);\n }\n this.insert(id, data);\n }\n\n insert(id: Key, data: Data): void {\n if (this._data.size < this._maxElementsInCache) {\n this._data.set(id, new TimestampedContainer(data));\n } else if (this._maxElementsInCache > 0) {\n throw new Error('Cache full, please clean Cache and retry adding data');\n }\n }\n\n remove(id: Key): void {\n if (this._removeCallback !== undefined) {\n const value = this._data.get(id);\n if (value !== undefined) {\n this._removeCallback(value.value);\n }\n }\n this._data.delete(id);\n }\n\n get(id: Key): Data {\n const data = this._data.get(id);\n if (data !== undefined) {\n // Don't really like the touch for lastTime being hidden within a get function. Should we maybe make a\n // TimeConstrainedCache interface where the geter is called something like getAndUpdateTimestamp for clarity?\n return data.value;\n }\n throw new Error(`Cache element ${id} does not exist`);\n }\n\n isFull(): boolean {\n return this._data.size >= this._maxElementsInCache;\n }\n\n cleanCache(count: number): void {\n const allResults = Array.from(this._data.entries());\n allResults.sort((left, right) => {\n return right[1].lastAccessTime - left[1].lastAccessTime;\n });\n for (let i = 0; i < count; i++) {\n const entry = allResults.pop();\n if (entry !== undefined) {\n this.remove(entry[0]);\n } else {\n return;\n }\n }\n }\n\n resize(cacheSize: number): void {\n this._maxElementsInCache = cacheSize;\n this._defaultCleanupCount = Math.max(cacheSize * MemoryRequestCache.CLEANUP_COUNT_TO_CAPACITY_RATIO, 1);\n\n if (this.isFull()) {\n this.cleanCache(this._data.size - this._maxElementsInCache);\n }\n }\n\n clear(): void {\n if (this._removeCallback !== undefined) {\n for (const value of this._data.values()) {\n this._removeCallback(value.value);\n }\n }\n this._data.clear();\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/chunk\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/map\");","/*!\n * Copyright 2021 Cognite AS\n */\n\nimport * as THREE from 'three';\n\nconst worldToViewportVars = {\n renderSize: new THREE.Vector2(),\n position: new THREE.Vector3()\n};\n\n/**\n * Maps from 3D world coordinates to normalized screen coordinates\n * relative to the canvas being rendered to. X and Y will\n * be in range [0, 1]. Z is in range [-1, 1] if the coordinate\n * is inside the camera near and far planes.\n * @param camera Camera used to project point from 3D to NDC coordinates\n * @param position3D World position in 3D\n * @param out Optionally pre-allocated THREE.Vector3\n * @returns Relative screen coordinates in X, Y and Z in range [-1, 1] if point\n * is within near/far of camera.\n */\n\nexport function worldToNormalizedViewportCoordinates(\n camera: THREE.PerspectiveCamera,\n position3D: THREE.Vector3,\n out: THREE.Vector3 = new THREE.Vector3()\n): THREE.Vector3 {\n const { position } = worldToViewportVars;\n\n // map to normalized device coordinate (NDC) space\n position.copy(position3D);\n position.project(camera);\n\n // map to 2D screen space\n const x = (position.x + 1) / 2;\n const y = (-position.y + 1) / 2;\n\n return out.set(x, y, position.z);\n}\n\n/**\n * Maps from 3D world coordinates to screen coordinates\n * relative to the canvas. X and Y will be in absolute\n * coordinates (0,0 being the top left of the canvas). Z is\n * in range [-1, 1] if the coordinate\n * is inside the camera near and far planes.\n * @param renderer Renderer used to render the \"world\"\n * @param camera Camera used to project point from 3D to NDC coordinates\n * @param position3D World position in 3D\n * @param out Optionally pre-allocated THREE.Vector3\n * @returns Relative screen coordinates in X, Y and Z in range [-1, 1] if point\n * is within near/far of camera.\n */\nexport function worldToViewportCoordinates(\n renderer: THREE.WebGLRenderer,\n camera: THREE.PerspectiveCamera,\n position3D: THREE.Vector3,\n out: THREE.Vector3 = new THREE.Vector3()\n): THREE.Vector3 {\n worldToNormalizedViewportCoordinates(camera, position3D, out);\n\n const { renderSize } = worldToViewportVars;\n renderer.getSize(renderSize);\n\n const canvas = renderer.domElement;\n const { width: canvasWidth, height: canvasHeight } = canvas.getBoundingClientRect();\n\n out.x = Math.round(out.x * canvasWidth);\n out.y = Math.round(out.y * canvasHeight);\n return out;\n}\n\n/**\n * Converts a pixel coordinate to normalized device coordinate (in range [-1, 1])\n */\nexport function pixelToNormalizedDeviceCoordinates(x: number, y: number, width: number, height: number): THREE.Vector2 {\n return new THREE.Vector2((x / width) * 2 - 1, (y / height) * -2 + 1);\n}\n","/*!\n * Copyright 2022 Cognite AS\n */\n\nexport class DeferredPromise<T> implements Promise<T> {\n [Symbol.toStringTag] = 'Promise';\n\n private readonly _promise: Promise<T>;\n private _resolve!: (value: T | PromiseLike<T>) => void;\n private _reject!: (reason: any) => void;\n private _state: 'pending' | 'fulfilled' | 'rejected' = 'pending';\n\n public get state(): 'pending' | 'fulfilled' | 'rejected' {\n return this._state;\n }\n\n constructor() {\n this._promise = new Promise<T>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n finally(onfinally?: (() => void) | null): Promise<T> {\n return this._promise.finally(onfinally);\n }\n\n public then<TResult1, TResult2>(\n onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>,\n onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>\n ): Promise<TResult1 | TResult2> {\n return this._promise.then(onfulfilled, onrejected);\n }\n\n public catch<TResult>(onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<T | TResult> {\n return this._promise.catch(onrejected);\n }\n\n public resolve(value: T | PromiseLike<T>): void {\n this._resolve(value);\n this._state = 'fulfilled';\n }\n\n public reject(reason?: any): void {\n this._reject(reason);\n this._state = 'rejected';\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash/remove\");","/*!\n * Adopted from https://github.com/naoak/workerize-transferable\n */\nconst globals = getGlobalThis();\n\n/**\n * Get the global scope for browsers that do not support globalThis\n * https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/globalThis\n */\nexport function getGlobalThis(): typeof globalThis {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n\n/**\n * Test if an object is transferable\n * @param x Object\n */\nexport function isTransferableObject(x: any): boolean {\n return (\n x instanceof ArrayBuffer ||\n x instanceof MessagePort ||\n (globals.ImageBitmap && x instanceof ImageBitmap) ||\n (globals.OffscreenCanvas && x instanceof OffscreenCanvas)\n );\n}\n"],"names":["root","factory","exports","module","define","amd","self","this","__webpack_require__","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","constructor","modelId","revisionId","revealInternalId","toString","name","String","require","File3dFormat","set","RandomColors","static","colorIndex","color","_colors","undefined","newColor","generateRandomColor","c","Math","floor","b","colorRGB","hue","random","saturation","lightness","setHSL","clickOrTouchEventOffset","ev","target","rect","getBoundingClientRect","MouseEvent","offsetX","clientX","left","offsetY","clientY","top","changedTouches","length","touch","Map","EventTrigger","_listeners","subscribe","listener","push","unsubscribe","index","indexOf","splice","unsubscribeAll","fire","args","forEach","ShapeType","assertNever","x","message","Error","InputHandler","domElement","_events","click","hover","onHoverCallback","setupEventListeners","on","event","callback","off","dispose","eventList","eventType","keys","disposeOfAllEventListeners","pointerDown","pointerDownTimestamp","validClick","startOffset","Vector2","onUp","handleClickEvent","removeEventListener","addEventListener","onDown","timeStamp","isProperClick","clickDuration","hasMovedDuringClick","abs","y","maxMoveDistance","maxClickDuration","firedEvent","button","log","AutoDisposeGroup","_isDisposed","_referenceCount","reference","ensureNotDisposed","dereference","child","children","THREE","Mesh","geometry","emptyGeometry","BufferGeometry","clear","BoundingBoxLOD","boundingBox","super","_activeLevel","_levels","isLOD","autoUpdate","_boundingBox","clone","type","setBoundingBox","copy","addLevel","object","distance","sort","visible","add","getCurrentLevel","update","camera","updateCurrentLevel","levels","camPos","bounds","updateVars","applyMatrix4","matrixWorld","cameraZoom","PerspectiveCamera","zoom","setFromMatrixPosition","distanceToCamera","distanceToPoint","findIndex","p","WebGLRendererStateHelper","renderer","_originalState","_renderer","setScissor","width","height","scissorData","getScissor","Vector4","setScissorTest","enabled","scissorTest","getScissorTest","setClearColor","alpha","clearColor","getClearColor","clearAlpha","getClearAlpha","setWebGLState","state","resetState","DefaultWebGLState","webGLState","buffers","depth","newTest","test","newMask","mask","setMask","setTest","setSize","size","getSize","localClippingEnabled","autoClear","autoClearDepth","setRenderTarget","renderTarget","getRenderTarget","reset","lastTest","lastMask","TimestampedContainer","_value","_lastAccessTime","Date","now","lastAccessTime","MemoryRequestCache","maxElementsInCache","removeCallback","defaultCleanupCount","_data","_maxElementsInCache","_defaultCleanupCount","max","_removeCallback","has","id","forceInsert","data","isFull","cleanCache","insert","remove","delete","count","allResults","Array","from","entries","right","i","entry","pop","resize","cacheSize","CLEANUP_COUNT_TO_CAPACITY_RATIO","values"],"sourceRoot":""}
package/index.d.ts CHANGED
@@ -6,8 +6,11 @@
6
6
  */
7
7
  export * from './packages/api/';
8
8
  export { CameraControlsOptions, DefaultCameraManager, CameraManagerHelper, CameraManager, CameraState, ComboControls, CameraChangeDelegate } from './packages/camera-manager';
9
- export { AreaCollection, ClusteredAreaCollection, NodeAppearanceProvider, NodeAppearance, NodeOutlineColor, DefaultNodeAppearance, NodeCollection, TreeIndexNodeCollection, IntersectionNodeCollection, UnionNodeCollection, SerializedNodeCollection, PropertyFilterNodeCollection, SinglePropertyFilterNodeCollection, AssetNodeCollection, InvertedNodeCollection, registerCustomNodeCollectionType, TypeName, NodeCollectionDescriptor, NodeCollectionSerializationContext, CdfModelNodeCollectionDataProvider } from './packages/cad-styling';
9
+ export { AreaCollection, ClusteredAreaCollection, NodeAppearanceProvider, NodeAppearance, NodeOutlineColor, DefaultNodeAppearance, NodeCollection, TreeIndexNodeCollection, NodeIdNodeCollection, IntersectionNodeCollection, UnionNodeCollection, SerializedNodeCollection, PropertyFilterNodeCollection, SinglePropertyFilterNodeCollection, AssetNodeCollection, InvertedNodeCollection, registerNodeCollectionType, NodeCollectionSerializationContext, CdfModelNodeCollectionDataProvider } from './packages/cad-styling';
10
10
  export { CogniteModelBase, SupportedModelTypes } from './packages/model-base';
11
- export { revealEnv, IndexSet, NumericRange, SceneRenderedDelegate, PointerEventDelegate, DisposedDelegate } from './packages/utilities';
11
+ export { IndexSet, NumericRange, BeforeSceneRenderedDelegate, SceneRenderedDelegate, PointerEventDelegate, DisposedDelegate } from './packages/utilities';
12
+ export { PointCloudObjectMetadata } from './packages/data-providers';
12
13
  export { Cognite3DModel, BoundingBoxClipper, GeometryFilter, WellKnownUnit } from './packages/cad-model';
13
14
  export { CognitePointCloudModel } from './packages/pointclouds';
15
+ export { CompletePointCloudAppearance, PointCloudAppearance, PointCloudObjectCollection, AnnotationIdPointCloudObjectCollection, DefaultPointCloudAppearance, StyledPointCloudObjectCollection } from './packages/pointcloud-styling';
16
+ export { Image360Entity } from './packages/360-images';