@vertexvis/viewer 1.0.0-testing.3 → 1.0.0-testing.4

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 (148) hide show
  1. package/dist/cjs/{config-CBFIZ5gy.js → config-C1xbl3Qa.js} +3 -3
  2. package/dist/cjs/{config-CBFIZ5gy.js.map → config-C1xbl3Qa.js.map} +1 -1
  3. package/dist/cjs/{entities-CAphDi6v.js → entities-D6AUMclh.js} +4 -4
  4. package/dist/cjs/{entities-CAphDi6v.js.map → entities-D6AUMclh.js.map} +1 -1
  5. package/dist/cjs/{geometry_pb-DW53co_-.js → geometry_pb-Ctp-Gcjm.js} +3 -3
  6. package/dist/cjs/{geometry_pb-DW53co_-.js.map → geometry_pb-Ctp-Gcjm.js.map} +1 -1
  7. package/dist/cjs/index.cjs.js +5 -5
  8. package/dist/cjs/{queries-uJfbbPWV.js → queries-CZmukyhu.js} +4 -4
  9. package/dist/cjs/{queries-uJfbbPWV.js.map → queries-CZmukyhu.js.map} +1 -1
  10. package/dist/cjs/{regl-component-CF41rUUv.js → regl-component-DOa8eHGy.js} +3 -3
  11. package/dist/cjs/{regl-component-CF41rUUv.js.map → regl-component-DOa8eHGy.js.map} +1 -1
  12. package/dist/cjs/{representation_pb-u7t5FI12.js → representation_pb-BrMsFavQ.js} +3 -3
  13. package/dist/cjs/{representation_pb-u7t5FI12.js.map → representation_pb-BrMsFavQ.js.map} +1 -1
  14. package/dist/cjs/{streamAttributes-BX291dI6.js → streamAttributes-DQm8yx7F.js} +6 -4
  15. package/dist/cjs/streamAttributes-DQm8yx7F.js.map +1 -0
  16. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
  17. package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
  18. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  19. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +2 -2
  20. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +1 -1
  21. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +2 -2
  22. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
  23. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +4 -4
  24. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +3 -3
  25. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +2 -2
  26. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
  27. package/dist/cjs/vertex-viewer.cjs.entry.js +27 -7
  28. package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
  29. package/dist/collection/lib/meters.js +15 -1
  30. package/dist/collection/lib/meters.js.map +1 -1
  31. package/dist/collection/lib/storage.js +8 -2
  32. package/dist/collection/lib/storage.js.map +1 -1
  33. package/dist/collection/workers/png-decoder-pool.js +4 -2
  34. package/dist/collection/workers/png-decoder-pool.js.map +1 -1
  35. package/dist/components/index.js +1 -1
  36. package/dist/components/{p-BhgrvpJL.js → p-BLSuslo8.js} +2 -2
  37. package/dist/components/{p-D7rQku5u.js → p-Bmj32MLp.js} +2 -2
  38. package/dist/components/{p-MYlndA6B.js → p-Bo49wgwt.js} +2 -2
  39. package/dist/components/{p-BjcO9U8D.js → p-BvOB1WAv.js} +2 -2
  40. package/dist/components/{p-DSeOWYJ_.js → p-BygjJ1WP.js} +2 -2
  41. package/dist/components/{p-CJuOe1O1.js → p-CGpWfqFr.js} +2 -2
  42. package/dist/components/{p-uwvTj3Cw.js → p-CHQ7ZKZd.js} +2 -2
  43. package/dist/components/{p-Lx4iaHhY.js → p-CYhNWr6k.js} +2 -2
  44. package/dist/components/{p-JSB7V_jW.js → p-DLV-gg65.js} +2 -2
  45. package/dist/components/{p-JSB7V_jW.js.map → p-DLV-gg65.js.map} +1 -1
  46. package/dist/components/{p-DyPaZtSF.js → p-gFMW2KYT.js} +2 -2
  47. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  48. package/dist/components/vertex-scene-tree.js +1 -1
  49. package/dist/components/vertex-viewer-dom-renderer.js +1 -1
  50. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  51. package/dist/components/vertex-viewer-measurement-details.js +1 -1
  52. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  53. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  54. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  55. package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
  56. package/dist/components/vertex-viewer-pin-group.js +1 -1
  57. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  58. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  59. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  60. package/dist/components/vertex-viewer-view-cube.js +1 -1
  61. package/dist/components/vertex-viewer.js +1 -1
  62. package/dist/components/vertex-viewer.js.map +1 -1
  63. package/dist/esm/{config-_vT0BdS-.js → config-BrYuY-7v.js} +3 -3
  64. package/dist/esm/{config-_vT0BdS-.js.map → config-BrYuY-7v.js.map} +1 -1
  65. package/dist/esm/{entities-8QCEsVRy.js → entities-DxpPFj9w.js} +4 -4
  66. package/dist/esm/{entities-8QCEsVRy.js.map → entities-DxpPFj9w.js.map} +1 -1
  67. package/dist/esm/{geometry_pb-Dj0yGTFi.js → geometry_pb-BLGp5Nq8.js} +3 -3
  68. package/dist/esm/{geometry_pb-Dj0yGTFi.js.map → geometry_pb-BLGp5Nq8.js.map} +1 -1
  69. package/dist/esm/index.js +5 -5
  70. package/dist/esm/index.mjs +5 -5
  71. package/dist/esm/{queries-W4aeN1vv.js → queries-Coo1RH5H.js} +4 -4
  72. package/dist/esm/{queries-W4aeN1vv.js.map → queries-Coo1RH5H.js.map} +1 -1
  73. package/dist/esm/{regl-component-Rio5LpoO.js → regl-component-B30675op.js} +3 -3
  74. package/dist/esm/{regl-component-Rio5LpoO.js.map → regl-component-B30675op.js.map} +1 -1
  75. package/dist/esm/{representation_pb-CCDsiQtg.js → representation_pb-DYkJtHQo.js} +3 -3
  76. package/dist/esm/{representation_pb-CCDsiQtg.js.map → representation_pb-DYkJtHQo.js.map} +1 -1
  77. package/dist/esm/{streamAttributes-DhQVsxJf.js → streamAttributes-Cfp9UX5m.js} +6 -4
  78. package/dist/esm/streamAttributes-Cfp9UX5m.js.map +1 -0
  79. package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
  80. package/dist/esm/vertex-scene-tree.entry.js +2 -2
  81. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  82. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +2 -2
  83. package/dist/esm/vertex-viewer-measurement-details.entry.js +1 -1
  84. package/dist/esm/vertex-viewer-measurement-distance.entry.js +2 -2
  85. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
  86. package/dist/esm/vertex-viewer-measurement-precise.entry.js +4 -4
  87. package/dist/esm/vertex-viewer-pin-group.entry.js +3 -3
  88. package/dist/esm/vertex-viewer-transform-widget.entry.js +2 -2
  89. package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
  90. package/dist/esm/vertex-viewer.entry.js +27 -7
  91. package/dist/esm/vertex-viewer.entry.js.map +1 -1
  92. package/dist/viewer/index.esm.js +1 -1
  93. package/dist/viewer/{p-baec8489.entry.js → p-0287e1ba.entry.js} +2 -2
  94. package/dist/viewer/{p-2bd6cd13.entry.js → p-380e0112.entry.js} +2 -2
  95. package/dist/viewer/{p-101825c2.entry.js → p-40d90c6e.entry.js} +2 -2
  96. package/dist/viewer/{p-317da1b6.entry.js → p-6a546084.entry.js} +2 -2
  97. package/dist/viewer/p-7189eb18.entry.js +5 -0
  98. package/dist/viewer/p-7189eb18.entry.js.map +1 -0
  99. package/dist/viewer/{p-807aa9d0.entry.js → p-72fa9fba.entry.js} +2 -2
  100. package/dist/viewer/{p-0bf39fff.entry.js → p-81391d86.entry.js} +2 -2
  101. package/dist/viewer/{p-5VxzXVFc.js → p-B7mOY-Vi.js} +2 -2
  102. package/dist/viewer/{p-5VxzXVFc.js.map → p-B7mOY-Vi.js.map} +1 -1
  103. package/dist/viewer/{p-B9AGwrOP.js → p-CVRW2Plt.js} +2 -2
  104. package/dist/viewer/{p-B9AGwrOP.js.map → p-CVRW2Plt.js.map} +1 -1
  105. package/dist/viewer/{p-C0bm56qJ.js → p-CrcoZmKt.js} +2 -2
  106. package/dist/viewer/p-CrcoZmKt.js.map +1 -0
  107. package/dist/viewer/{p-BNiP3SE7.js → p-DKKHW33X.js} +2 -2
  108. package/dist/viewer/{p-BNiP3SE7.js.map → p-DKKHW33X.js.map} +1 -1
  109. package/dist/viewer/p-F9YPK1I7.js +5 -0
  110. package/dist/viewer/{p-DOMCeSTr.js.map → p-F9YPK1I7.js.map} +1 -1
  111. package/dist/viewer/p-Nk8SgPHE.js +5 -0
  112. package/dist/viewer/{p-CrwKMz5f.js.map → p-Nk8SgPHE.js.map} +1 -1
  113. package/dist/viewer/{p-BoFi-Uyu.js → p-_19YlCN5.js} +2 -2
  114. package/dist/viewer/{p-BoFi-Uyu.js.map → p-_19YlCN5.js.map} +1 -1
  115. package/dist/viewer/{p-dd2f92e3.entry.js → p-c7eb05ec.entry.js} +2 -2
  116. package/dist/viewer/{p-fade0dba.entry.js → p-c9d71f1e.entry.js} +2 -2
  117. package/dist/viewer/{p-49b9bba2.entry.js → p-d50b2449.entry.js} +2 -2
  118. package/dist/viewer/{p-0fa89933.entry.js → p-e80260d3.entry.js} +2 -2
  119. package/dist/viewer/{p-71c08a04.entry.js → p-fc082185.entry.js} +2 -2
  120. package/dist/viewer/viewer.esm.js +1 -1
  121. package/package.json +8 -7
  122. package/dist/cjs/streamAttributes-BX291dI6.js.map +0 -1
  123. package/dist/esm/streamAttributes-DhQVsxJf.js.map +0 -1
  124. package/dist/viewer/p-C0bm56qJ.js.map +0 -1
  125. package/dist/viewer/p-CrwKMz5f.js +0 -5
  126. package/dist/viewer/p-DOMCeSTr.js +0 -5
  127. package/dist/viewer/p-ea736bd1.entry.js +0 -5
  128. package/dist/viewer/p-ea736bd1.entry.js.map +0 -1
  129. /package/dist/components/{p-BhgrvpJL.js.map → p-BLSuslo8.js.map} +0 -0
  130. /package/dist/components/{p-D7rQku5u.js.map → p-Bmj32MLp.js.map} +0 -0
  131. /package/dist/components/{p-MYlndA6B.js.map → p-Bo49wgwt.js.map} +0 -0
  132. /package/dist/components/{p-BjcO9U8D.js.map → p-BvOB1WAv.js.map} +0 -0
  133. /package/dist/components/{p-DSeOWYJ_.js.map → p-BygjJ1WP.js.map} +0 -0
  134. /package/dist/components/{p-CJuOe1O1.js.map → p-CGpWfqFr.js.map} +0 -0
  135. /package/dist/components/{p-uwvTj3Cw.js.map → p-CHQ7ZKZd.js.map} +0 -0
  136. /package/dist/components/{p-Lx4iaHhY.js.map → p-CYhNWr6k.js.map} +0 -0
  137. /package/dist/components/{p-DyPaZtSF.js.map → p-gFMW2KYT.js.map} +0 -0
  138. /package/dist/viewer/{p-baec8489.entry.js.map → p-0287e1ba.entry.js.map} +0 -0
  139. /package/dist/viewer/{p-2bd6cd13.entry.js.map → p-380e0112.entry.js.map} +0 -0
  140. /package/dist/viewer/{p-101825c2.entry.js.map → p-40d90c6e.entry.js.map} +0 -0
  141. /package/dist/viewer/{p-317da1b6.entry.js.map → p-6a546084.entry.js.map} +0 -0
  142. /package/dist/viewer/{p-807aa9d0.entry.js.map → p-72fa9fba.entry.js.map} +0 -0
  143. /package/dist/viewer/{p-0bf39fff.entry.js.map → p-81391d86.entry.js.map} +0 -0
  144. /package/dist/viewer/{p-dd2f92e3.entry.js.map → p-c7eb05ec.entry.js.map} +0 -0
  145. /package/dist/viewer/{p-fade0dba.entry.js.map → p-c9d71f1e.entry.js.map} +0 -0
  146. /package/dist/viewer/{p-49b9bba2.entry.js.map → p-d50b2449.entry.js.map} +0 -0
  147. /package/dist/viewer/{p-0fa89933.entry.js.map → p-e80260d3.entry.js.map} +0 -0
  148. /package/dist/viewer/{p-71c08a04.entry.js.map → p-fc082185.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamAttributes-DhQVsxJf.js","sources":["src/lib/mappers/camera.ts","src/lib/mappers/color.ts","src/lib/mappers/corePb.ts","../../node_modules/long/index.js","src/lib/mappers/corePbJs.ts","../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../node_modules/date-fns/esm/toDate/index.js","../../node_modules/date-fns/esm/addDays/index.js","../../node_modules/date-fns/esm/addMonths/index.js","../../node_modules/date-fns/esm/add/index.js","../../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../../node_modules/date-fns/esm/isAfter/index.js","../../node_modules/date-fns/esm/subDays/index.js","../../node_modules/date-fns/esm/subMonths/index.js","../../node_modules/date-fns/esm/sub/index.js","src/lib/token.ts","src/lib/types/frameCamera.ts","src/lib/types/clippingPlanes.ts","src/lib/types/crossSectioning.ts","src/lib/types/sceneViewSummary.ts","src/lib/types/depthBuffer.ts","src/lib/types/distanceUnits.ts","src/lib/types/featureMap.ts","worker:/home/runner/work/vertex-web-sdk/vertex-web-sdk/packages/viewer/src/workers/png-decoder.ts","src/workers/png-decoder-pool.ts","src/lib/rendering/vectors.ts","src/lib/types/frame.ts","src/lib/types/orientation.ts","src/lib/types/standardView.ts","src/lib/mappers/geometry.ts","src/lib/mappers/material.ts","src/lib/mappers/scalar.ts","src/lib/mappers/frameStreaming.ts","src/lib/mappers/pagination.ts","src/lib/mappers/streamAttributes.ts"],"sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { CameraType } from '../../interfaces';\n\nexport const toPbCameraType: M.Func<\n CameraType,\n vertexvis.protobuf.stream.CameraType\n> = M.defineMapper(\n (cameraType) => {\n switch (cameraType) {\n case 'perspective':\n return vertexvis.protobuf.stream.CameraType.CAMERA_TYPE_PERSPECTIVE;\n case 'orthographic':\n return vertexvis.protobuf.stream.CameraType.CAMERA_TYPE_ORTHOGRAPHIC;\n default:\n return vertexvis.protobuf.stream.CameraType.CAMERA_TYPE_INVALID;\n }\n },\n (cameraType) => cameraType\n);\n\nexport type CameraTypeEncoder = M.ThrowIfInvalidFunc<\n CameraType,\n vertexvis.protobuf.stream.CameraType\n>;\n\nexport function toPbCameraTypeOrThrow(): CameraTypeEncoder {\n return M.ifInvalidThrow(toPbCameraType);\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Color, Mapper as M } from '@vertexvis/utils';\n\nexport const fromPbRGBAi: M.Func<vertexvis.protobuf.core.IRGBAi, Color.Color> =\n M.defineMapper(\n M.read(\n M.requiredProp('r'),\n M.requiredProp('g'),\n M.requiredProp('b'),\n M.requiredProp('a')\n ),\n ([r, g, b, a]) => Color.create(r, g, b, a)\n );\n","import { Instant } from '@vertexvis/scene-view-protos/core/protos/instant_pb';\nimport type { Uuid2l } from '@vertexvis/scene-view-protos/core/protos/uuid_pb';\nimport { protoToDate } from '@vertexvis/stream-api';\nimport { Mapper as M, UUID } from '@vertexvis/utils';\nimport { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb';\n\nexport const fromPbUuid2l: M.Func<Uuid2l.AsObject, UUID.UUID> = M.defineMapper(\n M.read(M.requiredProp('msb'), M.requiredProp('lsb')),\n ([msb, lsb]) => UUID.fromMsbLsb(msb, lsb)\n);\n\nexport const fromPbTimestamp: M.Func<Timestamp.AsObject, Date> = M.defineMapper(\n M.read(M.requiredProp('seconds'), M.requiredProp('nanos')),\n ([seconds, nanos]) => protoToDate({ seconds, nanos })\n);\n\nexport const fromPbInstant: M.Func<Instant.AsObject, Date> = M.defineMapper(\n M.read(M.requiredProp('iso')),\n ([iso]) => new Date(iso)\n);\n","/**\n * @license\n * Copyright 2009 The Closure Library Authors\n * Copyright 2020 Daniel Wirtz / The long.js Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// WebAssembly optimizations to do native i64 multiplication and divide\nvar wasm = null;\ntry {\n wasm = new WebAssembly.Instance(\n new WebAssembly.Module(\n new Uint8Array([\n // \\0asm\n 0, 97, 115, 109,\n // version 1\n 1, 0, 0, 0,\n\n // section \"type\"\n 1, 13, 2,\n // 0, () => i32\n 96, 0, 1, 127,\n // 1, (i32, i32, i32, i32) => i32\n 96, 4, 127, 127, 127, 127, 1, 127,\n\n // section \"function\"\n 3, 7, 6,\n // 0, type 0\n 0,\n // 1, type 1\n 1,\n // 2, type 1\n 1,\n // 3, type 1\n 1,\n // 4, type 1\n 1,\n // 5, type 1\n 1,\n\n // section \"global\"\n 6, 6, 1,\n // 0, \"high\", mutable i32\n 127, 1, 65, 0, 11,\n\n // section \"export\"\n 7, 50, 6,\n // 0, \"mul\"\n 3, 109, 117, 108, 0, 1,\n // 1, \"div_s\"\n 5, 100, 105, 118, 95, 115, 0, 2,\n // 2, \"div_u\"\n 5, 100, 105, 118, 95, 117, 0, 3,\n // 3, \"rem_s\"\n 5, 114, 101, 109, 95, 115, 0, 4,\n // 4, \"rem_u\"\n 5, 114, 101, 109, 95, 117, 0, 5,\n // 5, \"get_high\"\n 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0,\n\n // section \"code\"\n 10, 191, 1, 6,\n // 0, \"get_high\"\n 4, 0, 35, 0, 11,\n // 1, \"mul\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 2, \"div_s\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 3, \"div_u\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 4, \"rem_s\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n // 5, \"rem_u\"\n 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32,\n 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4,\n 167, 11,\n ]),\n ),\n {},\n ).exports;\n} catch {\n // no wasm support :(\n}\n\n/**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\nfunction Long(low, high, unsigned) {\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n this.high = high | 0;\n\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n this.unsigned = !!unsigned;\n}\n\n// The internal representation of a long is the two given signed, 32-bit values.\n// We use 32-bit pieces because these are the size of integers on which\n// Javascript performs bit-operations. For operations like addition and\n// multiplication, we split each number into 16 bit pieces, which can easily be\n// multiplied within Javascript's floating-point representation without overflow\n// or change in sign.\n//\n// In the algorithms below, we frequently reduce the negative case to the\n// positive case by negating the input(s) and then post-processing the result.\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n// a positive number, it overflows back into a negative). Not handling this\n// case would often result in infinite recursion.\n//\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n// methods on which they depend.\n\n/**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\nLong.prototype.__isLong__;\n\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\n\n/**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\nfunction isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n}\n\n/**\n * @function\n * @param {*} value number\n * @returns {number}\n * @inner\n */\nfunction ctz32(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n}\n\n/**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\nLong.isLong = isLong;\n\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\nvar INT_CACHE = {};\n\n/**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\nvar UINT_CACHE = {};\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n if (unsigned) {\n value >>>= 0;\n if ((cache = 0 <= value && value < 256)) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n obj = fromBits(value, 0, true);\n if (cache) UINT_CACHE[value] = obj;\n return obj;\n } else {\n value |= 0;\n if ((cache = -128 <= value && value < 128)) {\n cachedObj = INT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache) INT_CACHE[value] = obj;\n return obj;\n }\n}\n\n/**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromInt = fromInt;\n\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromNumber(value, unsigned) {\n if (isNaN(value)) return unsigned ? UZERO : ZERO;\n if (unsigned) {\n if (value < 0) return UZERO;\n if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;\n } else {\n if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;\n }\n if (value < 0) return fromNumber(-value, unsigned).neg();\n return fromBits(\n value % TWO_PWR_32_DBL | 0,\n (value / TWO_PWR_32_DBL) | 0,\n unsigned,\n );\n}\n\n/**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromNumber = fromNumber;\n\n/**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n}\n\n/**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\nLong.fromBits = fromBits;\n\n/**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n\n/**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\nfunction fromString(str, unsigned, radix) {\n if (str.length === 0) throw Error(\"empty string\");\n if (typeof unsigned === \"number\") {\n // For goog.math.long compatibility\n radix = unsigned;\n unsigned = false;\n } else {\n unsigned = !!unsigned;\n }\n if (\n str === \"NaN\" ||\n str === \"Infinity\" ||\n str === \"+Infinity\" ||\n str === \"-Infinity\"\n )\n return unsigned ? UZERO : ZERO;\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n\n var p;\n if ((p = str.indexOf(\"-\")) > 0) throw Error(\"interior hyphen\");\n else if (p === 0) {\n return fromString(str.substring(1), unsigned, radix).neg();\n }\n\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 8));\n\n var result = ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i),\n value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = result.mul(power).add(fromNumber(value));\n } else {\n result = result.mul(radixToPower);\n result = result.add(fromNumber(value));\n }\n }\n result.unsigned = unsigned;\n return result;\n}\n\n/**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\nLong.fromString = fromString;\n\n/**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nfunction fromValue(val, unsigned) {\n if (typeof val === \"number\") return fromNumber(val, unsigned);\n if (typeof val === \"string\") return fromString(val, unsigned);\n // Throws for non-objects, converts non-instanceof Long:\n return fromBits(\n val.low,\n val.high,\n typeof unsigned === \"boolean\" ? unsigned : val.unsigned,\n );\n}\n\n/**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|bigint|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\nLong.fromValue = fromValue;\n\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n// no runtime penalty for these.\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_16_DBL = 1 << 16;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_24_DBL = 1 << 24;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n\n/**\n * @type {!Long}\n * @const\n * @inner\n */\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ZERO = fromInt(0);\n\n/**\n * Signed zero.\n * @type {!Long}\n */\nLong.ZERO = ZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UZERO = fromInt(0, true);\n\n/**\n * Unsigned zero.\n * @type {!Long}\n */\nLong.UZERO = UZERO;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar ONE = fromInt(1);\n\n/**\n * Signed one.\n * @type {!Long}\n */\nLong.ONE = ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar UONE = fromInt(1, true);\n\n/**\n * Unsigned one.\n * @type {!Long}\n */\nLong.UONE = UONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar NEG_ONE = fromInt(-1);\n\n/**\n * Signed negative one.\n * @type {!Long}\n */\nLong.NEG_ONE = NEG_ONE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_VALUE = fromBits(0xffffffff | 0, 0x7fffffff | 0, false);\n\n/**\n * Maximum signed value.\n * @type {!Long}\n */\nLong.MAX_VALUE = MAX_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MAX_UNSIGNED_VALUE = fromBits(0xffffffff | 0, 0xffffffff | 0, true);\n\n/**\n * Maximum unsigned value.\n * @type {!Long}\n */\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n\n/**\n * @type {!Long}\n * @inner\n */\nvar MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n\n/**\n * Minimum signed value.\n * @type {!Long}\n */\nLong.MIN_VALUE = MIN_VALUE;\n\n/**\n * @alias Long.prototype\n * @inner\n */\nvar LongPrototype = Long.prototype;\n\n/**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toInt = function toInt() {\n return this.unsigned ? this.low >>> 0 : this.low;\n};\n\n/**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.toNumber = function toNumber() {\n if (this.unsigned)\n return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n};\n\n/**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\nLongPrototype.toString = function toString(radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n if (this.isZero()) return \"0\";\n if (this.isNegative()) {\n // Unsigned Longs are never negative\n if (this.eq(MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix),\n div = this.div(radixLong),\n rem1 = div.mul(radixLong).sub(this);\n return div.toString(radix) + rem1.toInt().toString(radix);\n } else return \"-\" + this.neg().toString(radix);\n }\n\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n rem = this;\n var result = \"\";\n while (true) {\n var remDiv = rem.div(radixToPower),\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n digits = intval.toString(radix);\n rem = remDiv;\n if (rem.isZero()) return digits + result;\n else {\n while (digits.length < 6) digits = \"0\" + digits;\n result = \"\" + digits + result;\n }\n }\n};\n\n/**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\nLongPrototype.getHighBits = function getHighBits() {\n return this.high;\n};\n\n/**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n return this.high >>> 0;\n};\n\n/**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\nLongPrototype.getLowBits = function getLowBits() {\n return this.low;\n};\n\n/**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n return this.low >>> 0;\n};\n\n/**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n if (this.isNegative())\n // Unsigned Longs are never negative\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n var val = this.high != 0 ? this.high : this.low;\n for (var bit = 31; bit > 0; bit--) if ((val & (1 << bit)) != 0) break;\n return this.high != 0 ? bit + 33 : bit + 1;\n};\n\n/**\n * Tests if this Long can be safely represented as a JavaScript number.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isSafeInteger = function isSafeInteger() {\n // 2^53-1 is the maximum safe value\n var top11Bits = this.high >> 21;\n // [0, 2^53-1]\n if (!top11Bits) return true;\n // > 2^53-1\n if (this.unsigned) return false;\n // [-2^53, -1] except -2^53\n return top11Bits === -1 && !(this.low === 0 && this.high === -0x200000);\n};\n\n/**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isZero = function isZero() {\n return this.high === 0 && this.low === 0;\n};\n\n/**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\nLongPrototype.eqz = LongPrototype.isZero;\n\n/**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isNegative = function isNegative() {\n return !this.unsigned && this.high < 0;\n};\n\n/**\n * Tests if this Long's value is positive or zero.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isPositive = function isPositive() {\n return this.unsigned || this.high >= 0;\n};\n\n/**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isOdd = function isOdd() {\n return (this.low & 1) === 1;\n};\n\n/**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\nLongPrototype.isEven = function isEven() {\n return (this.low & 1) === 0;\n};\n\n/**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.equals = function equals(other) {\n if (!isLong(other)) other = fromValue(other);\n if (\n this.unsigned !== other.unsigned &&\n this.high >>> 31 === 1 &&\n other.high >>> 31 === 1\n )\n return false;\n return this.high === other.high && this.low === other.low;\n};\n\n/**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.eq = LongPrototype.equals;\n\n/**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.notEquals = function notEquals(other) {\n return !this.eq(/* validates */ other);\n};\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.neq = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ne = LongPrototype.notEquals;\n\n/**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThan = function lessThan(other) {\n return this.comp(/* validates */ other) < 0;\n};\n\n/**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lt = LongPrototype.lessThan;\n\n/**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n return this.comp(/* validates */ other) <= 0;\n};\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.le = LongPrototype.lessThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThan = function greaterThan(other) {\n return this.comp(/* validates */ other) > 0;\n};\n\n/**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gt = LongPrototype.greaterThan;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n return this.comp(/* validates */ other) >= 0;\n};\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\n\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {boolean}\n */\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\n\n/**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.compare = function compare(other) {\n if (!isLong(other)) other = fromValue(other);\n if (this.eq(other)) return 0;\n var thisNeg = this.isNegative(),\n otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) return -1;\n if (!thisNeg && otherNeg) return 1;\n // At this point the sign bits are the same\n if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;\n // Both are positive if at least one is unsigned\n return other.high >>> 0 > this.high >>> 0 ||\n (other.high === this.high && other.low >>> 0 > this.low >>> 0)\n ? -1\n : 1;\n};\n\n/**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|bigint|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nLongPrototype.comp = LongPrototype.compare;\n\n/**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\nLongPrototype.negate = function negate() {\n if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;\n return this.not().add(ONE);\n};\n\n/**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\nLongPrototype.neg = LongPrototype.negate;\n\n/**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} addend Addend\n * @returns {!Long} Sum\n */\nLongPrototype.add = function add(addend) {\n if (!isLong(addend)) addend = fromValue(addend);\n\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xffff;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xffff;\n\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xffff;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xffff;\n\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xffff;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c48 += a48 + b48;\n c48 &= 0xffff;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.subtract = function subtract(subtrahend) {\n if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend);\n return this.add(subtrahend.neg());\n};\n\n/**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|bigint|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nLongPrototype.sub = LongPrototype.subtract;\n\n/**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|bigint|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.multiply = function multiply(multiplier) {\n if (this.isZero()) return this;\n if (!isLong(multiplier)) multiplier = fromValue(multiplier);\n\n // use wasm support if present\n if (wasm) {\n var low = wasm[\"mul\"](this.low, this.high, multiplier.low, multiplier.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;\n if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;\n if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;\n\n if (this.isNegative()) {\n if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());\n else return this.neg().mul(multiplier).neg();\n } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg();\n\n // If both longs are small, use float multiplication\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\n\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n\n var a48 = this.high >>> 16;\n var a32 = this.high & 0xffff;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xffff;\n\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xffff;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xffff;\n\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xffff;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xffff;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xffff;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xffff;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n};\n\n/**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|bigint|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nLongPrototype.mul = LongPrototype.multiply;\n\n/**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.divide = function divide(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n if (divisor.isZero()) throw Error(\"division by zero\");\n\n // use wasm support if present\n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (\n !this.unsigned &&\n this.high === -0x80000000 &&\n divisor.low === -1 &&\n divisor.high === -1\n ) {\n // be consistent with non-wasm code path\n return this;\n }\n var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high,\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n if (this.isZero()) return this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n if (!this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (this.eq(MIN_VALUE)) {\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (divisor.eq(MIN_VALUE)) return ONE;\n else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shr(1);\n approx = halfThis.div(divisor).shl(1);\n if (approx.eq(ZERO)) {\n return divisor.isNegative() ? ONE : NEG_ONE;\n } else {\n rem = this.sub(divisor.mul(approx));\n res = approx.add(rem.div(divisor));\n return res;\n }\n }\n } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;\n if (this.isNegative()) {\n if (divisor.isNegative()) return this.neg().div(divisor.neg());\n return this.neg().div(divisor).neg();\n } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();\n res = ZERO;\n } else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned) divisor = divisor.toUnsigned();\n if (divisor.gt(this)) return UZERO;\n if (divisor.gt(this.shru(1)))\n // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n }\n\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n rem = this;\n while (rem.gte(divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\n\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48),\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx),\n approxRem = approxRes.mul(divisor);\n while (approxRem.isNegative() || approxRem.gt(rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, this.unsigned);\n approxRem = approxRes.mul(divisor);\n }\n\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (approxRes.isZero()) approxRes = ONE;\n\n res = res.add(approxRes);\n rem = rem.sub(approxRem);\n }\n return res;\n};\n\n/**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nLongPrototype.div = LongPrototype.divide;\n\n/**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.modulo = function modulo(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n\n // use wasm support if present\n if (wasm) {\n var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(\n this.low,\n this.high,\n divisor.low,\n divisor.high,\n );\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n\n return this.sub(this.div(divisor).mul(divisor));\n};\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.mod = LongPrototype.modulo;\n\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|bigint|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nLongPrototype.rem = LongPrototype.modulo;\n\n/**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\nLongPrototype.not = function not() {\n return fromBits(~this.low, ~this.high, this.unsigned);\n};\n\n/**\n * Returns count leading zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countLeadingZeros = function countLeadingZeros() {\n return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n};\n\n/**\n * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.clz = LongPrototype.countLeadingZeros;\n\n/**\n * Returns count trailing zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\nLongPrototype.countTrailingZeros = function countTrailingZeros() {\n return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n};\n\n/**\n * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\nLongPrototype.ctz = LongPrototype.countTrailingZeros;\n\n/**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.and = function and(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.or = function or(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n};\n\n/**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|bigint|string} other Other Long\n * @returns {!Long}\n */\nLongPrototype.xor = function xor(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n else if (numBits < 32)\n return fromBits(\n this.low << numBits,\n (this.high << numBits) | (this.low >>> (32 - numBits)),\n this.unsigned,\n );\n else return fromBits(0, this.low << (numBits - 32), this.unsigned);\n};\n\n/**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shl = LongPrototype.shiftLeft;\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRight = function shiftRight(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n else if (numBits < 32)\n return fromBits(\n (this.low >>> numBits) | (this.high << (32 - numBits)),\n this.high >> numBits,\n this.unsigned,\n );\n else\n return fromBits(\n this.high >> (numBits - 32),\n this.high >= 0 ? 0 : -1,\n this.unsigned,\n );\n};\n\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr = LongPrototype.shiftRight;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits < 32)\n return fromBits(\n (this.low >>> numBits) | (this.high << (32 - numBits)),\n this.high >>> numBits,\n this.unsigned,\n );\n if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n return fromBits(this.high >>> (numBits - 32), 0, this.unsigned);\n};\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n\n/**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(\n (this.low << numBits) | (this.high >>> b),\n (this.high << numBits) | (this.low >>> b),\n this.unsigned,\n );\n }\n numBits -= 32;\n b = 32 - numBits;\n return fromBits(\n (this.high << numBits) | (this.low >>> b),\n (this.low << numBits) | (this.high >>> b),\n this.unsigned,\n );\n};\n/**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotl = LongPrototype.rotateLeft;\n\n/**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(\n (this.high << b) | (this.low >>> numBits),\n (this.low << b) | (this.high >>> numBits),\n this.unsigned,\n );\n }\n numBits -= 32;\n b = 32 - numBits;\n return fromBits(\n (this.low << b) | (this.high >>> numBits),\n (this.high << b) | (this.low >>> numBits),\n this.unsigned,\n );\n};\n/**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nLongPrototype.rotr = LongPrototype.rotateRight;\n\n/**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\nLongPrototype.toSigned = function toSigned() {\n if (!this.unsigned) return this;\n return fromBits(this.low, this.high, false);\n};\n\n/**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\nLongPrototype.toUnsigned = function toUnsigned() {\n if (this.unsigned) return this;\n return fromBits(this.low, this.high, true);\n};\n\n/**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.<number>} Byte representation\n */\nLongPrototype.toBytes = function toBytes(le) {\n return le ? this.toBytesLE() : this.toBytesBE();\n};\n\n/**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Little endian byte representation\n */\nLongPrototype.toBytesLE = function toBytesLE() {\n var hi = this.high,\n lo = this.low;\n return [\n lo & 0xff,\n (lo >>> 8) & 0xff,\n (lo >>> 16) & 0xff,\n lo >>> 24,\n hi & 0xff,\n (hi >>> 8) & 0xff,\n (hi >>> 16) & 0xff,\n hi >>> 24,\n ];\n};\n\n/**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.<number>} Big endian byte representation\n */\nLongPrototype.toBytesBE = function toBytesBE() {\n var hi = this.high,\n lo = this.low;\n return [\n hi >>> 24,\n (hi >>> 16) & 0xff,\n (hi >>> 8) & 0xff,\n hi & 0xff,\n lo >>> 24,\n (lo >>> 16) & 0xff,\n (lo >>> 8) & 0xff,\n lo & 0xff,\n ];\n};\n\n/**\n * Creates a Long from its byte representation.\n * @param {!Array.<number>} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\n return le\n ? Long.fromBytesLE(bytes, unsigned)\n : Long.fromBytesBE(bytes, unsigned);\n};\n\n/**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.<number>} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n return new Long(\n bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24),\n bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24),\n unsigned,\n );\n};\n\n/**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.<number>} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n return new Long(\n (bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7],\n (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3],\n unsigned,\n );\n};\n\n// Support conversion to/from BigInt where available\nif (typeof BigInt === \"function\") {\n /**\n * Returns a Long representing the given big integer.\n * @function\n * @param {number} value The big integer value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n Long.fromBigInt = function fromBigInt(value, unsigned) {\n var lowBits = Number(BigInt.asIntN(32, value));\n var highBits = Number(BigInt.asIntN(32, value >> BigInt(32)));\n return fromBits(lowBits, highBits, unsigned);\n };\n\n // Override\n Long.fromValue = function fromValueWithBigInt(value, unsigned) {\n if (typeof value === \"bigint\") return Long.fromBigInt(value, unsigned);\n return fromValue(value, unsigned);\n };\n\n /**\n * Converts the Long to its big integer representation.\n * @this {!Long}\n * @returns {bigint}\n */\n LongPrototype.toBigInt = function toBigInt() {\n var lowBigInt = BigInt(this.low >>> 0);\n var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high);\n return (highBigInt << BigInt(32)) | lowBigInt;\n };\n}\n\nexport default Long;\n","import type { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { UUID } from '@vertexvis/utils';\nimport { Mapper as M } from '@vertexvis/utils';\nimport Long from 'long';\n\nexport const fromPbJsUuid: M.Func<vertexvis.protobuf.core.IUuid, UUID.UUID> =\n M.defineMapper(M.read(M.requiredProp('hex')), ([uuid]) => uuid);\n\nexport const fromPbJsUuid2l: M.Func<\n vertexvis.protobuf.core.IUuid2l,\n UUID.UUID\n> = M.defineMapper(\n M.read(M.requiredProp('msb'), M.requiredProp('lsb')),\n ([msb, lsb]) => {\n const m = BigInt(typeof msb === 'number' ? msb : msb.toString());\n const l = BigInt(typeof lsb === 'number' ? lsb : lsb.toString());\n return UUID.fromMsbLsb(m, l);\n }\n);\n\nexport const toPbJsUuid2l: M.Func<string, vertexvis.protobuf.core.IUuid2l> =\n M.defineMapper(\n M.compose(\n (str) => UUID.toMsbLsb(str),\n M.read(\n M.mapProp('msb', Long.fromString),\n M.mapProp('lsb', Long.fromString)\n )\n ),\n ([msb, lsb]) => ({ msb, lsb })\n );\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport addDays from \"../addDays/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport default function add(dirtyDate, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Add years and months\n var date = toDate(dirtyDate);\n var dateWithMonths = months || years ? addMonths(date, months + years * 12) : date;\n\n // Add weeks and days\n var dateWithDays = days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n var minutesToAdd = minutes + hours * 60;\n var secondsToAdd = seconds + minutesToAdd * 60;\n var msToAdd = secondsToAdd * 1000;\n var finalDate = new Date(dateWithDays.getTime() + msToAdd);\n return finalDate;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport subDays from \"../subDays/index.js\";\nimport subMonths from \"../subMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport default function sub(date, duration) {\n requiredArgs(2, arguments);\n if (!duration || _typeof(duration) !== 'object') return new Date(NaN);\n var years = duration.years ? toInteger(duration.years) : 0;\n var months = duration.months ? toInteger(duration.months) : 0;\n var weeks = duration.weeks ? toInteger(duration.weeks) : 0;\n var days = duration.days ? toInteger(duration.days) : 0;\n var hours = duration.hours ? toInteger(duration.hours) : 0;\n var minutes = duration.minutes ? toInteger(duration.minutes) : 0;\n var seconds = duration.seconds ? toInteger(duration.seconds) : 0;\n\n // Subtract years and months\n var dateWithoutMonths = subMonths(date, months + years * 12);\n\n // Subtract weeks and days\n var dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n // Subtract hours, minutes and seconds\n var minutestoSub = minutes + hours * 60;\n var secondstoSub = seconds + minutestoSub * 60;\n var mstoSub = secondstoSub * 1000;\n var finalDate = new Date(dateWithoutDays.getTime() - mstoSub);\n return finalDate;\n}","import add from 'date-fns/add';\nimport differenceInMilliseconds from 'date-fns/differenceInMilliseconds';\nimport isAfter from 'date-fns/isAfter';\nimport sub from 'date-fns/sub';\n\nexport class Token {\n public constructor(\n public readonly token: string,\n public readonly expiresIn: number,\n public readonly expiresAt: Date\n ) {}\n\n public static create(token: string, expiresIn: number): Token {\n const expiresAt = add(new Date(), { seconds: expiresIn });\n return new Token(token, expiresIn, expiresAt);\n }\n\n public hasExpired(): boolean {\n return isAfter(new Date(), this.expiresAt);\n }\n\n public remainingTimeInMs(offsetInSeconds: number): number {\n return differenceInMilliseconds(\n sub(this.expiresAt, { seconds: offsetInSeconds }),\n new Date()\n );\n }\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport {\n Angle,\n BoundingBox,\n BoundingSphere,\n Vector3,\n} from '@vertexvis/geometry';\n\nexport type FrameCameraType = 'perspective' | 'orthographic';\n\nexport interface PerspectiveFrameCamera {\n position: Vector3.Vector3;\n lookAt: Vector3.Vector3;\n up: Vector3.Vector3;\n fovY?: number;\n}\n\nexport interface OrthographicFrameCamera {\n viewVector: Vector3.Vector3;\n lookAt: Vector3.Vector3;\n up: Vector3.Vector3;\n fovHeight: number;\n rotationPoint?: Vector3.Vector3;\n}\n\nexport type FrameCamera = PerspectiveFrameCamera | OrthographicFrameCamera;\n\nexport function isValidFrameCamera(camera: Partial<FrameCamera>): boolean {\n if (isPerspectiveFrameCamera(camera)) {\n const lookAtValid = Vector3.isValid(camera.lookAt);\n const positionValid = Vector3.isValid(camera.position);\n const upValid = Vector3.isValid(camera.up);\n\n return lookAtValid && positionValid && upValid;\n } else {\n const asOrthographic = camera as OrthographicFrameCamera;\n\n const viewVectorValid = Vector3.isValid(asOrthographic.viewVector);\n const lookAtValid = Vector3.isValid(asOrthographic.lookAt);\n const upValid = Vector3.isValid(asOrthographic.up);\n const fovHeightValid = Number.isFinite(asOrthographic.fovHeight);\n\n return viewVectorValid && lookAtValid && upValid && fovHeightValid;\n }\n}\n\nexport function isPerspectiveFrameCamera(\n camera: Partial<FrameCamera>\n): camera is PerspectiveFrameCamera {\n return (\n (camera as PerspectiveFrameCamera).position != null &&\n (camera as OrthographicFrameCamera).fovHeight == null\n );\n}\n\nexport function isOrthographicFrameCamera(\n camera: Partial<FrameCamera>\n): camera is OrthographicFrameCamera {\n const asOrtho = camera as OrthographicFrameCamera;\n return asOrtho.viewVector != null && asOrtho.fovHeight != null;\n}\n\nexport function withPositionAndViewVector(camera: FrameCamera): FrameCamera & {\n position: Vector3.Vector3;\n viewVector: Vector3.Vector3;\n} {\n if (isOrthographicFrameCamera(camera)) {\n return {\n ...camera,\n position: Vector3.add(camera.lookAt, Vector3.negate(camera.viewVector)),\n };\n } else {\n return {\n ...camera,\n viewVector: Vector3.subtract(camera.lookAt, camera.position),\n };\n }\n}\n\nexport function createPerspective(\n data: Partial<PerspectiveFrameCamera> = {}\n): PerspectiveFrameCamera {\n return {\n position: data.position ?? Vector3.forward(),\n lookAt: data.lookAt ?? Vector3.origin(),\n up: data.up ?? Vector3.up(),\n fovY: data.fovY ?? 45,\n };\n}\n\nexport function createOrthographic(\n data: Partial<OrthographicFrameCamera> = {}\n): OrthographicFrameCamera {\n return {\n viewVector: data.viewVector ?? Vector3.back(),\n lookAt: data.lookAt ?? Vector3.origin(),\n up: data.up ?? Vector3.up(),\n fovHeight: data.fovHeight ?? 1.0,\n rotationPoint: data.rotationPoint ?? data.lookAt ?? Vector3.origin(),\n };\n}\n\nexport function toOrthographic(\n data: PerspectiveFrameCamera,\n boundingBox: BoundingBox.BoundingBox\n): OrthographicFrameCamera {\n const viewVector = Vector3.subtract(data.lookAt, data.position);\n const boundingSphere = BoundingSphere.create(boundingBox);\n const scale = boundingSphere.radius / Vector3.magnitude(viewVector);\n\n return {\n viewVector: Vector3.scale(scale, viewVector),\n up: data.up,\n lookAt: data.lookAt,\n fovHeight:\n 2 *\n Vector3.magnitude(viewVector) *\n Math.tan(Angle.toRadians((data.fovY ?? 45) / 2.0)),\n };\n}\n\nexport function toPerspective(\n data: OrthographicFrameCamera,\n fovY = 45\n): PerspectiveFrameCamera {\n const expectedMagnitude =\n data.fovHeight / (2 * Math.tan(Angle.toRadians(fovY / 2.0)));\n const receivedMagnitude = Vector3.magnitude(data.viewVector);\n const magnitudeScale = expectedMagnitude / receivedMagnitude;\n\n return {\n position: Vector3.add(\n data.lookAt,\n Vector3.negate(Vector3.scale(magnitudeScale, data.viewVector))\n ),\n up: data.up,\n lookAt: data.lookAt,\n fovY,\n };\n}\n\nexport function toProtobuf(\n camera: Partial<FrameCamera>\n): vertexvis.protobuf.stream.ICamera {\n if (isOrthographicFrameCamera(camera)) {\n return {\n orthographic: {\n viewVector: { ...camera.viewVector },\n lookAt: { ...camera.lookAt },\n up: { ...camera.up },\n fovHeight: camera.fovHeight,\n },\n };\n } else if (isPerspectiveFrameCamera(camera)) {\n return {\n perspective: {\n position: { ...camera.position },\n lookAt: { ...camera.lookAt },\n up: { ...camera.up },\n fovY: camera.fovY\n ? {\n value: camera.fovY,\n }\n : null,\n },\n position: { ...camera.position },\n lookAt: { ...camera.lookAt },\n up: { ...camera.up },\n };\n } else {\n return {\n ...camera,\n };\n }\n}\n","import { BoundingBox, BoundingSphere, Vector3 } from '@vertexvis/geometry';\n\nimport {\n FrameCamera,\n isOrthographicFrameCamera,\n OrthographicFrameCamera,\n PerspectiveFrameCamera,\n} from './frameCamera';\n\nexport interface ClippingPlanes {\n near: number;\n far: number;\n}\n\nexport function fromBoundingBoxAndLookAtCamera(\n boundingBox: BoundingBox.BoundingBox,\n camera: FrameCamera\n): ClippingPlanes {\n return isOrthographicFrameCamera(camera)\n ? fromBoundingBoxAndOrthographicCamera(boundingBox, camera)\n : fromBoundingBoxAndPerspectiveCamera(boundingBox, camera);\n}\n\n// Logic pulled from https://github.com/Vertexvis/rendering-client-lib-java/blob/master/src/main/java/com/vertexvis/rendering/graphics/PerspectiveCamera.java#L65\n// and needs to remain in sync with that computation.\n// TODO: revisit computation of these values in a single location\nexport function fromBoundingBoxAndPerspectiveCamera(\n boundingBox: BoundingBox.BoundingBox,\n camera: PerspectiveFrameCamera\n): ClippingPlanes {\n const boundingSphere = BoundingSphere.create(boundingBox);\n const minRange = boundingSphere.epsilon * 1e2;\n\n const signedDistToEye = Vector3.dot(\n Vector3.subtract(boundingSphere.center, camera.position),\n Vector3.normalize(Vector3.subtract(camera.lookAt, camera.position))\n );\n\n const bRadius = Math.max(boundingSphere.radius, minRange);\n\n let newFar =\n bRadius + signedDistToEye < minRange\n ? bRadius * 3.0\n : bRadius + signedDistToEye;\n\n let newNear =\n newFar - bRadius * 2.0 < minRange\n ? Math.min(minRange, newFar)\n : newFar - bRadius * 2.0;\n\n if (newFar - newNear < minRange) {\n newNear = Math.max(newNear, minRange);\n newFar += newNear + minRange;\n } else if (newNear / newFar < 0.0001) {\n newNear = newFar * 0.0001;\n }\n\n if (newNear > newFar - bRadius * 2.0) {\n if (newNear > 1000 + minRange) {\n newFar -= newNear - 1000;\n newNear = 1000;\n }\n }\n\n return {\n near: newNear,\n far: newFar,\n };\n}\n\n// Logic pulled from https://github.com/Vertexvis/rendering-client-lib-java/blob/master/src/main/java/com/vertexvis/rendering/graphics/OrthographicCamera.java#L35\n// and needs to remain in sync with that computation.\n// TODO: revisit computation of these values in a single location\nexport function fromBoundingBoxAndOrthographicCamera(\n boundingBox: BoundingBox.BoundingBox,\n camera: OrthographicFrameCamera\n): ClippingPlanes {\n const boundingSphere = BoundingSphere.create(boundingBox);\n const minRange = boundingSphere.epsilon * 1e2;\n\n const bRadius = Math.max(boundingSphere.radius, minRange);\n\n return {\n near: -bRadius,\n far: bRadius,\n };\n}\n","import { Vector3 } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\n\nexport interface SectionPlane {\n /**\n * A unit vector orthogonal to the plane that is used to\n * determine what geometry will remain visible. For example, a `normal` of\n * `{ x: 1, y: 0, z: 0 }` will cause anything in the negative x direction\n * (from the `offset`) to be occluded.\n */\n normal: Vector3.Vector3;\n\n /**\n * The distance from the origin along the `normal` vector\n * for this `SectionPlane`.\n */\n offset: number;\n}\n\nexport interface CrossSectioning {\n sectionPlanes: Array<SectionPlane>;\n\n /**\n * The color to display the cross section lines with.\n */\n highlightColor?: Color.Color;\n\n /**\n * The width to display the cross section lines with. This value\n * corresponds to approximately half the width of the line in pixels.\n */\n lineWidth?: number;\n}\n\nexport function create(data: Partial<CrossSectioning> = {}): CrossSectioning {\n return {\n sectionPlanes: data.sectionPlanes || [],\n highlightColor: data.highlightColor,\n lineWidth: data.lineWidth,\n };\n}\n","import { BoundingBox } from '@vertexvis/geometry';\n\nimport { Frame } from './frame';\n\nexport interface ItemSetSummary {\n count: number;\n boundingBox?: BoundingBox.BoundingBox;\n}\n\nexport interface SceneViewSummary {\n visibleSummary?: ItemSetSummary;\n selectedVisibleSummary?: ItemSetSummary;\n}\n\nexport function create(data: Partial<SceneViewSummary> = {}): SceneViewSummary {\n return {\n visibleSummary: data.visibleSummary,\n selectedVisibleSummary: data.selectedVisibleSummary,\n };\n}\n\nexport function copySummaryIfInvalid(current: Frame, previous?: Frame): Frame {\n return isInvalid(current.scene.sceneViewSummary)\n ? current.copy({\n scene: current.scene.copy({\n sceneViewSummary: previous?.scene.sceneViewSummary,\n }),\n })\n : current;\n}\n\nfunction isInvalid(summary: SceneViewSummary): boolean {\n return summary.visibleSummary == null;\n}\n","import { Point, Ray } from '@vertexvis/geometry';\nimport { Vector3 } from '@vertexvis/geometry';\nimport type { DecodedPng } from 'fast-png';\n\nimport { FrameCameraBase, FrameImageLike, ImageAttributesLike } from './frame';\nimport { Viewport } from './viewport';\n\n/**\n * A `DepthBuffer` represents the depth information for a rendered frame. This\n * depth information can be used for checking if a world point is occluded by\n * geometry or getting a world position from a 2D viewport point without having\n * to do a server call.\n *\n * A depth buffer is represented by a 16-bit typed array, where each value is\n * a relative distance between the camera's near and far planes.\n */\nexport class DepthBuffer implements FrameImageLike {\n /**\n * A constant that specifies the maximum depth value that can be represented\n * by a depth buffer.\n */\n public static MAX_DEPTH_VALUE = 2 ** 16 - 1;\n\n /**\n * Constructs a new depth buffer.\n *\n * @param camera The camera data that generated this depth buffer.\n * @param imageAttr The attributes of the depth buffer image.\n * @param pixels A 16-bit typed array of depth values.\n */\n public constructor(\n public readonly camera: FrameCameraBase,\n public readonly imageAttr: ImageAttributesLike,\n public readonly pixels: Uint16Array\n ) {}\n\n /**\n * Creates a `DepthBuffer` from a decoded PNG.\n *\n * @param png An object containing the width, height and raw PNG data.\n * @param camera The camera that generated the depth buffer image.\n * @param imageAttr The attributes of the depth buffer image.\n * @throws If the PNG is not a single channel, 16-bit image.\n * @returns A depth buffer.\n */\n public static fromPng(\n png: Pick<DecodedPng, 'data'>,\n camera: FrameCameraBase,\n imageAttr: ImageAttributesLike\n ): DepthBuffer {\n if (png.data instanceof Uint16Array) {\n return new DepthBuffer(camera, imageAttr, png.data);\n } else {\n throw new Error('Expected depth PNG to have depth of 16-bit');\n }\n }\n\n /**\n * Computes the depth from a 2D point within the coordinate space of the depth\n * buffer.\n *\n * For perspective cameras, the returned depth is a value that's between\n * the near and far planes of the camera.\n\n * For orthographic cameras, the returned depth is a value that's between\n * 0 and the distance between the near and far planes of the camera.\n *\n * @param point A 2D point within the viewport.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns The depth at the point.\n */\n public getDepthAtPoint(\n point: Point.Point,\n fallbackNormalizedDepth?: number\n ): number {\n const { near, far } = this.camera;\n const isPerspectiveCamera = this.camera.isPerspective();\n\n const depth = this.getNormalizedDepthAtPoint(\n point,\n fallbackNormalizedDepth\n );\n\n if (isPerspectiveCamera) {\n return depth * (far - near) + near;\n } else {\n return depth * (far - near);\n }\n }\n\n /**\n * Computes the maximum depth of visible geometry within the coordinate\n * space of the depth buffer.\n *\n * For perspective cameras, the maximum depth is the magnitude\n * of the far plane of the camera.\n *\n * For orthographic cameras, the maximum depth is the distance between\n * the near and far planes of the camera.\n *\n * @returns The maximum depth of visible geometry.\n */\n public getMaxDepthOfGeometry(): number {\n const { near, far } = this.camera;\n const isPerspectiveCamera = this.camera.isPerspective();\n\n if (isPerspectiveCamera) {\n return far;\n } else {\n return far - near;\n }\n }\n\n /**\n * Computes a depth from a 2D point within the coordinate space of the frame.\n * The returned depth is a normalized value (`[0, 1]`) between the near and\n * far plane.\n *\n * @param point A 2D point within the frame.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns A depth between 0 and 1.\n */\n public getNormalizedDepthAtPoint(\n point: Point.Point,\n fallbackNormalizedDepth?: number\n ): number {\n const { width, height } = this.imageAttr.imageRect;\n\n const offset = Point.subtract(point, this.imageAttr.imageRect);\n const scale = 1 / this.imageAttr.imageScale;\n const pixel = Point.scale(offset, scale, scale);\n\n if (pixel.x >= 0 && pixel.y >= 0 && pixel.x < width && pixel.y < height) {\n const index = Math.floor(pixel.x) + Math.floor(pixel.y) * width;\n const depth = this.pixels[index];\n\n const depthOrFallback =\n depth === DepthBuffer.MAX_DEPTH_VALUE\n ? (fallbackNormalizedDepth ?? depth)\n : depth;\n return (\n (depthOrFallback ?? DepthBuffer.MAX_DEPTH_VALUE) /\n DepthBuffer.MAX_DEPTH_VALUE\n );\n } else {\n return fallbackNormalizedDepth ?? 1;\n }\n }\n\n /**\n * Returns `true` if the point is in front of the far plane and the point is\n * inside the frame. This method is useful for checking if geometry exists at\n * a given 2D coordinate.\n *\n * @param point A 2D point within the frame.\n * @returns `true` if point is in front of far plane.\n */\n public hitTest(point: Point.Point): boolean {\n return this.getNormalizedDepthAtPoint(point) < 1;\n }\n\n /**\n * Computes a 3D point in world space coordinates from the depth value at the\n * given pixel and ray.\n *\n * @param point A pixel to use for reading a depth value.\n * @param ray A ray that specifies the origin and direction.\n * @param fallbackNormalizedDepth A fallback value if the depth is the max\n * depth value, or cannot be determined.\n * @returns A point in world space coordinates.\n */\n public getWorldPoint(\n point: Point.Point,\n ray: Ray.Ray,\n fallbackNormalizedDepth?: number\n ): Vector3.Vector3 {\n const distance = this.getDepthAtPoint(point, fallbackNormalizedDepth);\n\n const isPerspectiveCamera = this.camera.isPerspective();\n if (isPerspectiveCamera) {\n const { position, viewVector: vv, far } = this.camera;\n\n // Compute the world position along the ray at the far plane.\n // This is used to determine the angle with the view vector.\n const worldPt = Ray.at(ray, far);\n const eyeToWorldPt = Vector3.subtract(worldPt, position);\n\n const angle =\n Vector3.dot(vv, eyeToWorldPt) /\n (Vector3.magnitude(vv) * Vector3.magnitude(eyeToWorldPt));\n return Ray.at(ray, distance / angle);\n } else {\n return Ray.at(ray, distance);\n }\n }\n\n /**\n * Returns the distance from the camera to the given world point.\n *\n * @param worldPt A point in world space to determine the distance to.\n * @returns distance from the camera to the given world point.\n */\n public distanceToPoint(worldPt: Vector3.Vector3): number {\n const { position, direction } = this.camera;\n\n // Calculate the distance from the camera to the given world point\n // Use the dot product to find the magnitude of the orthogonal component\n const eyeToPoint = Vector3.subtract(worldPt, position);\n return Math.abs(Vector3.dot(eyeToPoint, direction));\n }\n\n /**\n * Returns the depth of the closest geometry at the point in the\n * viewport (2D) corresponding to the given world point (3D).\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns depth of the closest geometry at the corresponding point in the viewport.\n */\n public depthOfClosestGeometry(\n worldPt: Vector3.Vector3,\n viewport: Viewport\n ): number {\n const { projectionViewMatrix } = this.camera;\n\n // Find the screen point corresponding to the world point for the current camera\n const screenPt = viewport.transformWorldToViewport(\n worldPt,\n projectionViewMatrix\n );\n const scaledPt = viewport.transformPointToFrame(screenPt, this);\n\n // Find the depth of the closest geometry at the same point on the screen\n return this.getDepthAtPoint(scaledPt);\n }\n\n /**\n * Returns `true` if the given point in world space is occluded by any\n * geometry.\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns `true` if the world point is occluded. `false` otherwise.\n */\n public isOccluded(worldPt: Vector3.Vector3, viewport: Viewport): boolean {\n // Calculate the distance from the camera to the given world point\n const distanceToPoint = this.distanceToPoint(worldPt);\n\n // Find the depth of the closest geometry at the same point on the screen\n const depthOfClosestGeometry = this.depthOfClosestGeometry(\n worldPt,\n viewport\n );\n\n // Allow for a small rounding error\n // Note that if the world point is coincident with the geometry,\n // we want to err on the side of returning not occluded\n const allowableDifference = Math.abs(0.02 * distanceToPoint);\n const depthDifference = Math.abs(depthOfClosestGeometry - distanceToPoint);\n\n return (\n distanceToPoint > depthOfClosestGeometry &&\n depthDifference > allowableDifference\n );\n }\n\n /**\n * Returns `true` if the given point in world space is detached from geometry.\n *\n * @param worldPt A point in world space to check.\n * @param viewport A viewport of the viewer.\n * @returns `true` if the world point is detached from geometry. `false` otherwise.\n */\n public isDetached(worldPt: Vector3.Vector3, viewport: Viewport): boolean {\n // Calculate the distance from the camera to the given world point\n const distanceToPoint = this.distanceToPoint(worldPt);\n\n // Find the depth of the closest geometry at the same point on the screen\n const depthOfClosestGeometry = this.depthOfClosestGeometry(\n worldPt,\n viewport\n );\n\n // If distanceFromClosestGeometryToPoint is 0, then the point is directly on the surface of the\n // closest geometry and is not detached. This method allows for a small rounding\n // error when the point is slightly closer to the camera than the geometry.\n const distanceFromClosestGeometryToPoint =\n depthOfClosestGeometry - distanceToPoint;\n const allowableDifferenceToStillBeOnSurface = 0.02 * distanceToPoint;\n const pointIsOnSurface =\n distanceFromClosestGeometryToPoint <\n allowableDifferenceToStillBeOnSurface;\n\n // Check to see if the given world point is behind the far plane,\n // or that the depth of the point is greater than the maximum depth of visible geometry\n const maximumDepthOfVisibleGeometry = this.getMaxDepthOfGeometry();\n const pointIsBehindFarPlane =\n distanceToPoint > maximumDepthOfVisibleGeometry;\n\n const isDetachedFromGeometry = !pointIsOnSurface || pointIsBehindFarPlane;\n return isDetachedFromGeometry;\n }\n}\n","import { Angle, Vector3 } from '@vertexvis/geometry';\n\n/**\n * A type representing the different types of supported distance units.\n */\nexport type DistanceUnitType =\n // Metric\n | 'millimeters'\n | 'centimeters'\n | 'meters'\n\n // Imperial\n | 'inches'\n | 'feet'\n | 'yards';\n\nexport type AngleUnitType = 'degrees' | 'radians';\n\nexport interface Unit {\n name: string;\n abbreviatedName: string;\n converter: UnitConverter<number>;\n}\n\ninterface UnitConverter<T> {\n convertTo(value: T): T;\n convertFrom(value: T): T;\n}\n\nclass ScaledUnitConverter implements UnitConverter<number> {\n public constructor(private readonly scale: number) {}\n\n public convertTo(value: number): number {\n return value * this.scale;\n }\n\n public convertFrom(value: number): number {\n return value / this.scale;\n }\n}\n\nclass MillimeterUnitConverter extends ScaledUnitConverter {\n public constructor() {\n super(1);\n }\n}\n\nclass CentimeterUnitConverter extends ScaledUnitConverter {\n public constructor(power = 1) {\n super(1 / Math.pow(10, power));\n }\n}\n\nclass MeterUnitConverter extends ScaledUnitConverter {\n public constructor(power = 1) {\n super(1 / Math.pow(1000, power));\n }\n}\n\nclass InchesUnitConverter extends ScaledUnitConverter {\n public constructor(power = 1) {\n super(1 / Math.pow(25.4, power));\n }\n}\n\nclass FeetUnitConverter extends ScaledUnitConverter {\n public constructor(power = 1) {\n super(1 / Math.pow(25.4 * 12, power));\n }\n}\n\nclass YardUnitConverter extends ScaledUnitConverter {\n public constructor(power = 1) {\n super(1 / Math.pow(25.4 * 12 * 3, power));\n }\n}\n\n/**\n * A class that contains helpers for transforming values and points between\n * world space distances and real space distances.\n */\nexport class DistanceUnits {\n private static units: Record<DistanceUnitType, Unit> = {\n millimeters: {\n name: 'Millimeters',\n abbreviatedName: 'mm',\n converter: new MillimeterUnitConverter(),\n },\n centimeters: {\n name: 'Centimeters',\n abbreviatedName: 'cm',\n converter: new CentimeterUnitConverter(),\n },\n meters: {\n name: 'Meters',\n abbreviatedName: 'm',\n converter: new MeterUnitConverter(),\n },\n\n inches: {\n name: 'Inches',\n abbreviatedName: 'in',\n converter: new InchesUnitConverter(),\n },\n feet: {\n name: 'Feet',\n abbreviatedName: 'ft',\n converter: new FeetUnitConverter(),\n },\n yards: {\n name: 'Yards',\n abbreviatedName: 'yd',\n converter: new YardUnitConverter(),\n },\n };\n\n /**\n * The unit of this measurement.\n */\n public readonly unit: Unit;\n\n public constructor(public readonly unitType: DistanceUnitType) {\n this.unit = DistanceUnits.units[unitType];\n }\n\n /**\n * Translates a world space value to a real space value.\n *\n * @param value A world space value to translate.\n * @returns A value in real space units.\n */\n public convertWorldValueToReal(value: number): number {\n return this.unit.converter.convertTo(value);\n }\n\n /**\n * Translates a real space value to a world space value.\n *\n * @param value A real space value to translate.\n * @returns A world space value.\n */\n public convertRealValueToWorld(value: number): number {\n return this.unit.converter.convertFrom(value);\n }\n\n /**\n * Translates a world space point to a point in real space.\n *\n * @param pt A point in world space.\n * @returns A point in real space.\n */\n public convertWorldPointToReal(pt: Vector3.Vector3): Vector3.Vector3 {\n const x = this.unit.converter.convertTo(pt.x);\n const y = this.unit.converter.convertTo(pt.y);\n const z = this.unit.converter.convertTo(pt.z);\n return { x, y, z };\n }\n\n /**\n * Translates a real space point to a point in world space.\n *\n * @param pt A point in real space.\n * @returns A point in world space.\n */\n public convertRealPointToWorld(pt: Vector3.Vector3): Vector3.Vector3 {\n const x = this.unit.converter.convertFrom(pt.x);\n const y = this.unit.converter.convertFrom(pt.y);\n const z = this.unit.converter.convertFrom(pt.z);\n return { x, y, z };\n }\n}\n\nclass RadiansToDegreesUnitConverter implements UnitConverter<number> {\n public convertTo(radians: number): number {\n return Angle.toDegrees(radians);\n }\n\n public convertFrom(degrees: number): number {\n return Angle.toRadians(degrees);\n }\n}\n\n/**\n * A class that contains helpers for transforming angle units.\n */\nexport class AngleUnits {\n private static units: Record<AngleUnitType, Unit> = {\n radians: {\n name: 'Radians',\n abbreviatedName: 'rad',\n converter: new ScaledUnitConverter(1),\n },\n degrees: {\n name: 'Degrees',\n abbreviatedName: 'deg',\n converter: new RadiansToDegreesUnitConverter(),\n },\n };\n\n /**\n * The unit of this measurement.\n */\n public readonly unit: Unit;\n\n public constructor(public readonly unitType: AngleUnitType) {\n this.unit = AngleUnits.units[unitType];\n }\n\n /**\n * Converts radians to the chosen unit type.\n *\n * @param radians An angle in radians.\n * @returns An angle in the chosen unit type.\n */\n public convertTo(radians: number): number {\n return this.unit.converter.convertTo(radians);\n }\n\n /**\n * Converts the chosen unit type back to radians.\n *\n * @param value The value to convert\n * @returns An angle in radians.\n */\n public convertFrom(value: number): number {\n return this.unit.converter.convertFrom(value);\n }\n}\n\n/**\n * A class that contains helpers for transforming area units.\n */\nexport class AreaUnits {\n private static units: Record<DistanceUnitType, Unit> = {\n millimeters: {\n name: 'Square Millimeters',\n abbreviatedName: 'mm²',\n converter: new MillimeterUnitConverter(),\n },\n centimeters: {\n name: 'Square Centimeters',\n abbreviatedName: 'cm²',\n converter: new CentimeterUnitConverter(2),\n },\n meters: {\n name: 'Square Meters',\n abbreviatedName: 'm²',\n converter: new MeterUnitConverter(2),\n },\n inches: {\n name: 'Square Inches',\n abbreviatedName: 'in²',\n converter: new InchesUnitConverter(2),\n },\n feet: {\n name: 'Square Feet',\n abbreviatedName: 'ft²',\n converter: new FeetUnitConverter(2),\n },\n yards: {\n name: 'Square Yards',\n abbreviatedName: 'yd²',\n converter: new YardUnitConverter(2),\n },\n };\n\n /**\n * The unit of this measurement.\n */\n public readonly unit: Unit;\n\n public constructor(public readonly unitType: DistanceUnitType) {\n this.unit = AreaUnits.units[unitType];\n }\n\n /**\n * Translates a world space value to a real space value.\n *\n * @param value A world space value to translate.\n * @returns A value in real space units.\n */\n public convertWorldValueToReal(value: number): number {\n return this.unit.converter.convertTo(value);\n }\n\n /**\n * Translates a real space value to a world space value.\n *\n * @param value A real space value to translate.\n * @returns A world space value.\n */\n public convertRealValueToWorld(value: number): number {\n return this.unit.converter.convertFrom(value);\n }\n}\n","import { Point, Rectangle } from '@vertexvis/geometry';\nimport { Color } from '@vertexvis/utils';\nimport type { DecodedPng } from 'fast-png';\n\nimport { EntityType } from './entities';\nimport { FrameImageLike, ImageAttributesLike } from './frame';\n\n/**\n * A `FeatureMap` contains metadata about the location of entities and features\n * rendered in a scene. This metadata includes any surfaces, edges, cross\n * sections and BREP.\n */\nexport class FeatureMap implements FrameImageLike {\n /**\n * Constructor.\n *\n * @param pixels The PNG containing feature information of a frame.\n * @param imageAttr The attributes of the feature map image.\n */\n public constructor(\n private readonly pixels: Uint8Array,\n public readonly imageAttr: ImageAttributesLike\n ) {}\n\n /**\n * Constructs a new `FeatureMap` from a decoded PNG.\n *\n * @param png The decoded PNG data.\n * @param imageAttr The image attributes of the frame.\n * @returns A new feature map.\n */\n public static fromPng(\n png: Pick<DecodedPng, 'data' | 'width' | 'height' | 'channels'>,\n imageAttr: ImageAttributesLike\n ): FeatureMap {\n if (!(png.data instanceof Uint8Array)) {\n throw new Error(\n 'Cannot create FeatureMap. Expected decoded PNG to be a Uint8Array.'\n );\n } else if (png.channels !== 4) {\n throw new Error('Cannot create FeatureMap. Missing alpha channel.');\n } else {\n return new FeatureMap(png.data, {\n ...imageAttr,\n // TODO(dan): Need to change frame protos to include image attributes\n // per image artifact.\n imageRect: Rectangle.fromPointAndDimensions(imageAttr.imageRect, png),\n });\n }\n }\n\n /**\n * Returns the type of entity at the given frame location. If no entity is\n * found, then `undefined` is returned.\n *\n * @param point The point to query.\n * @returns The type of entity at the given location, or `undefined` if no\n * entity exists.\n */\n public getEntityType(point: Point.Point): EntityType {\n const color = this.getColor(point);\n\n if (color?.a === EntityType.CROSS_SECTION) {\n return EntityType.CROSS_SECTION;\n } else if (color?.a === EntityType.GENERIC_GEOMETRY) {\n return EntityType.GENERIC_GEOMETRY;\n } else if (color?.a === EntityType.IMPRECISE_EDGE) {\n return EntityType.IMPRECISE_EDGE;\n } else if (color?.a === EntityType.IMPRECISE_SURFACE) {\n return EntityType.IMPRECISE_SURFACE;\n } else if (color?.a === EntityType.PRECISE_EDGE) {\n return EntityType.PRECISE_EDGE;\n } else if (color?.a === EntityType.PRECISE_SURFACE) {\n return EntityType.PRECISE_SURFACE;\n } else {\n return EntityType.NO_GEOMETRY;\n }\n }\n\n private getColor(point: Point.Point): Color.Color | undefined {\n const { width, height } = this.imageAttr.imageRect;\n\n const offset = Point.subtract(point, this.imageAttr.imageRect);\n const scale = 1 / this.imageAttr.imageScale;\n const pixel = Point.scale(offset, scale, scale);\n\n if (pixel.x >= 0 && pixel.y >= 0 && pixel.x < width && pixel.y < height) {\n const index = Math.floor(pixel.x) * 4 + Math.floor(pixel.y) * 4 * width;\n\n const r = this.pixels[index];\n const g = this.pixels[index + 1];\n const b = this.pixels[index + 2];\n const a = this.pixels[index + 3];\n\n return Color.create(r, g, b, a);\n } else return undefined;\n }\n}\n","\nexport async function loadWorker() {\n return import('worker-module:/home/runner/work/vertex-web-sdk/vertex-web-sdk/packages/viewer/src/workers/png-decoder.ts');\n}\n","import { loadWorker, Pool, WorkerModule } from 'worker:./png-decoder.js';\n\nimport type { DecodePngFn } from './png-decoder';\n\ntype DecodePngModule = WorkerModule<DecodePngFn>;\ntype DecodePngPool = Pool<DecodePngFn>;\n\nlet workerLoader: Promise<DecodePngModule> | undefined;\nlet poolLoader: Promise<DecodePngPool> | undefined;\n\nconst DEFAULT_POOL_SIZE = 1;\n\nfunction loadWorkerModule(): Promise<DecodePngModule> {\n if (workerLoader == null) {\n console.debug(`Loading PNG worker module`);\n workerLoader = loadWorker();\n }\n return workerLoader;\n}\n\nfunction getPoolSize(): number {\n if (typeof window !== 'undefined') {\n const concurrency = window.navigator.hardwareConcurrency ?? 8;\n return Math.ceil(concurrency / 4);\n } else {\n return DEFAULT_POOL_SIZE;\n }\n}\n\nasync function getPool(): Promise<DecodePngPool> {\n if (poolLoader == null) {\n poolLoader = loadWorkerModule().then(async ({ spawnPool }) => {\n const size = getPoolSize();\n console.debug(`Spawning PNG worker pool [size=${size}]`);\n return spawnPool({ size });\n });\n }\n return poolLoader;\n}\n\nexport const decodePng: DecodePngFn = async (bytes) => {\n const pool = await getPool();\n return pool.queue((decode: DecodePngFn) => decode(bytes));\n};\n\n// Prefetch the worker and initialize the pool.\ngetPool();\n","import { BoundingSphere, Vector3 } from '@vertexvis/geometry';\n\nexport function constrainViewVector(\n viewVector: Vector3.Vector3,\n boundingSphere: BoundingSphere.BoundingSphere\n): Vector3.Vector3 {\n const magnitude = Vector3.magnitude(viewVector);\n const scale = boundingSphere.radius / magnitude;\n\n return Vector3.scale(scale, viewVector);\n}\n\nexport function updateLookAtRelativeToBoundingBoxCenter(\n originalLookAt: Vector3.Vector3,\n viewVector: Vector3.Vector3,\n boundingSphereCenter: Vector3.Vector3\n): Vector3.Vector3 {\n const updatedCenterPoint = Vector3.subtract(\n boundingSphereCenter,\n originalLookAt\n );\n const orthogonalOffset = Vector3.dot(viewVector, updatedCenterPoint);\n const viewVectorMagnitudeSquared = Vector3.magnitudeSquared(viewVector);\n const offset = orthogonalOffset / viewVectorMagnitudeSquared;\n\n const scaledViewVectorForOffset = Vector3.scale(offset, viewVector);\n return Vector3.add(scaledViewVectorForOffset, originalLookAt);\n}\n","import {\n BoundingBox,\n BoundingSphere,\n Dimensions,\n Line3,\n Matrix4,\n Plane,\n Rectangle,\n Vector3,\n} from '@vertexvis/geometry';\nimport { UUID } from '@vertexvis/utils';\n\nimport { decodePng } from '../../workers/png-decoder-pool';\nimport {\n constrainViewVector,\n updateLookAtRelativeToBoundingBoxCenter,\n} from '../rendering/vectors';\nimport * as ClippingPlanes from './clippingPlanes';\nimport * as CrossSectioning from './crossSectioning';\nimport { DepthBuffer } from './depthBuffer';\nimport { FeatureMap } from './featureMap';\nimport * as FrameCamera from './frameCamera';\nimport { Orientation } from './orientation';\nimport * as SceneViewSummary from './sceneViewSummary';\n\nexport class Frame {\n private cachedDepthBuffer?: Promise<DepthBuffer | undefined>;\n private cachedFeatureMap?: Promise<FeatureMap | undefined>;\n\n public constructor(\n public readonly correlationIds: string[],\n public readonly temporalRefinementCorrelationId: string,\n public readonly sequenceNumber: number,\n public readonly dimensions: Dimensions.Dimensions,\n public readonly image: FrameImage,\n public readonly scene: FrameScene,\n public readonly depthBufferBytes: Uint8Array | undefined,\n private readonly featureMapBytes: Uint8Array | undefined,\n private readonly id = UUID.create()\n ) {}\n\n public getId(): UUID.UUID {\n return this.id;\n }\n\n public async depthBuffer(): Promise<DepthBuffer | undefined> {\n if (this.cachedDepthBuffer == null) {\n this.cachedDepthBuffer =\n this.depthBufferBytes != null\n ? this.decodeDepthBuffer(new Uint8Array(this.depthBufferBytes))\n : Promise.resolve(undefined);\n }\n return this.cachedDepthBuffer;\n }\n\n private async decodeDepthBuffer(bytes: Uint8Array): Promise<DepthBuffer> {\n const png = await decodePng(bytes);\n return DepthBuffer.fromPng(png, this.scene.camera, this.image.imageAttr);\n }\n\n public async featureMap(): Promise<FeatureMap | undefined> {\n if (this.cachedFeatureMap == null) {\n this.cachedFeatureMap =\n this.featureMapBytes != null\n ? this.decodeFeatureMap(new Uint8Array(this.featureMapBytes))\n : Promise.resolve(undefined);\n }\n return this.cachedFeatureMap;\n }\n\n private async decodeFeatureMap(bytes: Uint8Array): Promise<FeatureMap> {\n const png = await decodePng(bytes);\n return FeatureMap.fromPng(png, this.image.imageAttr);\n }\n\n public copy({\n correlationIds,\n temporalRefinementCorrelationId,\n sequenceNumber,\n dimensions,\n image,\n scene,\n depthBufferBytes,\n featureMapBytes,\n }: {\n correlationIds?: string[];\n temporalRefinementCorrelationId?: string;\n sequenceNumber?: number;\n dimensions?: Dimensions.Dimensions;\n image?: FrameImage;\n scene?: FrameScene;\n depthBufferBytes?: Uint8Array;\n featureMapBytes?: Uint8Array;\n }): Frame {\n return new Frame(\n correlationIds ?? this.correlationIds,\n temporalRefinementCorrelationId ?? this.temporalRefinementCorrelationId,\n sequenceNumber ?? this.sequenceNumber,\n dimensions ?? this.dimensions,\n image ?? this.image,\n scene ?? this.scene,\n depthBufferBytes ?? this.depthBufferBytes,\n featureMapBytes ?? this.featureMapBytes,\n this.id\n );\n }\n}\n\nexport interface FrameImageLike {\n readonly imageAttr: ImageAttributesLike;\n}\n\nexport interface ImageAttributesLike {\n readonly frameDimensions: Dimensions.Dimensions;\n readonly imageRect: Rectangle.Rectangle;\n readonly imageScale: number;\n}\n\nexport class FrameImage implements FrameImageLike {\n public constructor(\n public readonly imageAttr: ImageAttributesLike,\n public readonly imageBytes: Uint8Array\n ) {}\n}\n\nexport class FrameScene {\n public constructor(\n public readonly camera: FrameCameraBase,\n public readonly boundingBox: BoundingBox.BoundingBox,\n public readonly crossSection: CrossSectioning.CrossSectioning,\n public readonly worldOrientation: Orientation,\n public readonly hasChanged: boolean,\n public readonly sceneViewSummary: SceneViewSummary.SceneViewSummary,\n public readonly modelViewId: UUID.UUID | undefined\n ) {}\n\n public copy({\n camera,\n boundingBox,\n crossSection,\n worldOrientation,\n hasChanged,\n sceneViewSummary,\n modelViewId,\n }: Partial<{\n camera: FrameCameraBase;\n boundingBox: BoundingBox.BoundingBox;\n crossSection: CrossSectioning.CrossSectioning;\n worldOrientation: Orientation;\n hasChanged: boolean;\n sceneViewSummary: SceneViewSummary.SceneViewSummary;\n modelViewId: UUID.UUID | undefined;\n }>): FrameScene {\n return new FrameScene(\n camera ?? this.camera,\n boundingBox ?? this.boundingBox,\n crossSection ?? this.crossSection,\n worldOrientation ?? this.worldOrientation,\n hasChanged ?? this.hasChanged,\n sceneViewSummary ?? this.sceneViewSummary,\n modelViewId ?? this.modelViewId\n );\n }\n}\n\ninterface FrameCameraMatrices {\n readonly projectionMatrix: Matrix4.Matrix4;\n readonly projectionMatrixInverse: Matrix4.Matrix4;\n readonly projectionViewMatrix: Matrix4.Matrix4;\n readonly viewMatrix: Matrix4.Matrix4;\n readonly worldMatrix: Matrix4.Matrix4;\n}\n\nexport class FrameCameraBase {\n protected cameraMatrices?: FrameCameraMatrices;\n\n public constructor(\n public readonly position: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number\n ) {}\n\n public get direction(): Vector3.Vector3 {\n return Vector3.normalize(this.viewVector);\n }\n\n public get viewVector(): Vector3.Vector3 {\n return Vector3.subtract(this.lookAt, this.position);\n }\n\n public get worldMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().worldMatrix;\n }\n\n public get viewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().viewMatrix;\n }\n\n public get projectionMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionMatrix;\n }\n\n public get projectionMatrixInverse(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionMatrixInverse;\n }\n\n public get projectionViewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionViewMatrix;\n }\n\n public get frustumProjectionViewMatrix(): Matrix4.Matrix4 {\n return this.computeCameraMatrices().projectionViewMatrix;\n }\n\n public static fromBoundingBox(\n camera: FrameCamera.FrameCamera,\n boundingBox: BoundingBox.BoundingBox,\n aspectRatio: number\n ): FrameCameraBase {\n const { near, far } = ClippingPlanes.fromBoundingBoxAndLookAtCamera(\n boundingBox,\n camera\n );\n\n if (FrameCamera.isOrthographicFrameCamera(camera)) {\n const boundingSphere = BoundingSphere.create(boundingBox);\n const viewVector = constrainViewVector(camera.viewVector, boundingSphere);\n const lookAt = updateLookAtRelativeToBoundingBoxCenter(\n camera.lookAt,\n viewVector,\n boundingSphere.center\n );\n\n return new FrameOrthographicCamera(\n viewVector,\n lookAt,\n camera.up,\n near,\n far,\n aspectRatio,\n camera.fovHeight,\n camera.rotationPoint\n );\n } else {\n return new FramePerspectiveCamera(\n camera.position,\n camera.lookAt,\n camera.up,\n near,\n far,\n aspectRatio,\n camera.fovY ?? 45\n );\n }\n }\n\n /**\n * Returns whether this `FrameCameraBase` is an orthographic camera.\n */\n public isOrthographic(): this is FrameOrthographicCamera {\n return false;\n }\n\n /**\n * Returns whether this `FrameCameraBase` is a perspective camera.\n */\n public isPerspective(): this is FramePerspectiveCamera {\n return false;\n }\n\n /**\n * Checks if the given point, in world space, is behind the near plane\n * of the camera.\n *\n * @param world A point in world space.\n * @returns `true` if the point is behind the camera.\n */\n public isPointBehindNear(world: Vector3.Vector3): boolean {\n const { position, direction, near } = this;\n const dist = Vector3.dot(Vector3.subtract(world, position), direction);\n return dist < near;\n }\n\n /**\n * Returns a point on the near plane that intersects with `line`. If `line`\n * does not intersect, then `undefined` is returned.\n *\n * @param line The line to intersect.\n * @returns A point in world space, or `undefined` if the line does not\n * intersect with the near plane.\n */\n public intersectLineWithNear(line: Line3.Line3): Vector3.Vector3 | undefined {\n const { position, direction, near } = this;\n\n const vs = Vector3.subtract(line.start, position);\n const ve = Vector3.subtract(line.end, position);\n const vl = Line3.create({ start: vs, end: ve });\n\n const nearP = Plane.create({ normal: direction, constant: -near });\n const pt = Plane.intersectLine(nearP, vl);\n\n return pt != null ? Vector3.add(pt, position) : undefined;\n }\n\n protected computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n return {\n viewMatrix: Matrix4.makeIdentity(),\n worldMatrix: Matrix4.makeIdentity(),\n projectionMatrix: Matrix4.makeIdentity(),\n projectionMatrixInverse: Matrix4.makeIdentity(),\n projectionViewMatrix: Matrix4.makeIdentity(),\n };\n }\n return this.cameraMatrices;\n }\n\n protected updateCameraMatrices(\n cameraMatrices: FrameCameraMatrices\n ): FrameCameraMatrices {\n this.cameraMatrices = cameraMatrices;\n\n return this.cameraMatrices;\n }\n}\n\nexport interface FrameCameraWithMatrices extends FrameCameraBase {\n readonly direction: Vector3.Vector3;\n readonly viewVector: Vector3.Vector3;\n readonly worldMatrix: Matrix4.Matrix4;\n readonly viewMatrix: Matrix4.Matrix4;\n readonly projectionMatrix: Matrix4.Matrix4;\n readonly projectionMatrixInverse: Matrix4.Matrix4;\n readonly projectionViewMatrix: Matrix4.Matrix4;\n}\n\nexport class FramePerspectiveCamera extends FrameCameraBase {\n public constructor(\n public readonly position: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number,\n public readonly fovY: number\n ) {\n super(position, lookAt, up, near, far, aspectRatio);\n }\n\n /**\n * Converts this `FramePerspectiveCamera` to a `FrameOrthographicCamera` using\n * the provided `boundingBox` to compute the viewing frustum.\n *\n * @param boundingBox The visible bounding box.\n */\n public toOrthographic(boundingBox: BoundingBox.BoundingBox): FrameCameraBase {\n return FrameCameraBase.fromBoundingBox(\n FrameCamera.toOrthographic(this, boundingBox),\n boundingBox,\n this.aspectRatio\n );\n }\n\n public override isPerspective(): this is FramePerspectiveCamera {\n return true;\n }\n\n protected override computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n const viewMatrix = Matrix4.makeLookAtView(\n this.position,\n this.lookAt,\n this.up\n );\n const worldMatrix = Matrix4.invert(viewMatrix);\n const projectionMatrix = Matrix4.makePerspective(\n this.near,\n this.far,\n this.fovY,\n this.aspectRatio\n );\n const projectionMatrixInverse = Matrix4.invert(projectionMatrix);\n const projectionViewMatrix = Matrix4.multiply(\n projectionMatrix,\n viewMatrix\n );\n\n return super.updateCameraMatrices({\n viewMatrix,\n worldMatrix,\n projectionMatrix,\n projectionMatrixInverse,\n projectionViewMatrix,\n });\n }\n return this.cameraMatrices;\n }\n}\n\nexport class FrameOrthographicCamera extends FrameCameraBase {\n public readonly top: number;\n public readonly bottom: number;\n public readonly right: number;\n public readonly left: number;\n\n public constructor(\n viewVector: Vector3.Vector3,\n public readonly lookAt: Vector3.Vector3,\n public readonly up: Vector3.Vector3,\n public readonly near: number,\n public readonly far: number,\n public readonly aspectRatio: number,\n public readonly fovHeight: number,\n public readonly rotationPoint?: Vector3.Vector3\n ) {\n super(\n Vector3.add(lookAt, Vector3.negate(viewVector)),\n lookAt,\n up,\n near,\n far,\n aspectRatio\n );\n this.top = fovHeight * 0.5;\n this.bottom = -this.top;\n this.right = this.top * aspectRatio;\n this.left = -this.right;\n }\n\n /**\n * Converts this `FrameOrthographicCamera` to a `FramePerspectiveCamera` using\n * the provided `boundingBox` to compute the near and far clipping planes.\n *\n * @param boundingBox The visible bounding box.\n */\n public toPerspective(boundingBox: BoundingBox.BoundingBox): FrameCameraBase {\n return FrameCameraBase.fromBoundingBox(\n FrameCamera.toPerspective(this),\n boundingBox,\n this.aspectRatio\n );\n }\n\n public override isOrthographic(): this is FrameOrthographicCamera {\n return true;\n }\n\n public override get frustumProjectionViewMatrix(): Matrix4.Matrix4 {\n const frustumProjectionMatrix = Matrix4.makeFrustum(\n this.left,\n this.right,\n this.top,\n this.bottom,\n this.near,\n this.far\n );\n return Matrix4.multiply(\n frustumProjectionMatrix,\n this.computeCameraMatrices().viewMatrix\n );\n }\n\n protected override computeCameraMatrices(): FrameCameraMatrices {\n if (this.cameraMatrices == null) {\n const viewMatrix = Matrix4.makeLookAtView(\n this.position,\n this.lookAt,\n this.up\n );\n const worldMatrix = Matrix4.invert(viewMatrix);\n const projectionMatrix = Matrix4.makeOrthographic(\n this.left,\n this.right,\n this.bottom,\n this.top,\n this.near,\n this.far\n );\n const projectionMatrixInverse = Matrix4.invert(projectionMatrix);\n const projectionViewMatrix = Matrix4.multiply(\n projectionMatrix,\n viewMatrix\n );\n\n return super.updateCameraMatrices({\n viewMatrix,\n worldMatrix,\n projectionMatrix,\n projectionMatrixInverse,\n projectionViewMatrix,\n });\n }\n return this.cameraMatrices;\n }\n}\n","import { Matrix4, Vector3 } from '@vertexvis/geometry';\n\n/**\n * Represents an orientation using an `up` and `forward` vector.\n */\nexport class Orientation {\n /**\n * A default orientation where the up vector points up is represented as `[0, 1, 0]` and\n * forward is represented as `[0, 0, -1]`.\n */\n public static DEFAULT = new Orientation(Vector3.up(), Vector3.back());\n\n public constructor(\n /**\n * The up orientation vector.\n */\n public readonly y: Vector3.Vector3,\n\n /**\n * The forward orientation vector.\n */\n public readonly z: Vector3.Vector3\n ) {}\n\n /**\n * A rotation matrix for this orientation.\n */\n public get matrix(): Matrix4.Matrix4 {\n const z = this.z;\n const y = this.y;\n const x = Vector3.cross(y, z);\n return Matrix4.makeBasis(x, y, z);\n }\n}\n","import { Matrix4, Vector3 } from '@vertexvis/geometry';\n\n/**\n * A `StandardView` represents common view orientations for a camera.\n */\nexport class StandardView {\n /**\n * A standard view that positions the camera facing the front of the scene.\n */\n public static FRONT = new StandardView(Vector3.back(), Vector3.up());\n\n /**\n * A standard view that positions the camera facing the right of the scene.\n */\n public static RIGHT = new StandardView(Vector3.right(), Vector3.up());\n\n /**\n * A standard view that positions the camera facing the left of the scene.\n */\n public static LEFT = new StandardView(Vector3.left(), Vector3.up());\n\n /**\n * A standard view that positions the camera facing the back of the scene.\n */\n public static BACK = new StandardView(Vector3.forward(), Vector3.up());\n\n /**\n * A standard view that positions the camera facing the top of the scene.\n */\n public static TOP = new StandardView(Vector3.up(), Vector3.forward());\n\n /**\n * A standard view that positions the camera facing the bottom of the scene.\n */\n public static BOTTOM = new StandardView(Vector3.down(), Vector3.back());\n\n /**\n * A standard view that positions the camera facing the top-front-right of the\n * scene.\n */\n public static TOP_FRONT_RIGHT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.up(), Vector3.left()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the top-front-left of the\n * scene.\n */\n public static TOP_FRONT_LEFT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.up(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-front-right of\n * the scene.\n */\n public static BOTTOM_FRONT_RIGHT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.down(), Vector3.left()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-front-left of\n * the scene.\n */\n public static BOTTOM_FRONT_LEFT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.down(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the top-back-left of the\n * scene.\n */\n public static TOP_BACK_LEFT = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.up(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the top-back-right of the\n * scene.\n */\n public static TOP_BACK_RIGHT = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.up(), Vector3.left()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-back-left of\n * the scene.\n */\n public static BOTTOM_BACK_LEFT = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.down(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-back-right of\n * the scene.\n */\n public static BOTTOM_BACK_RIGHT = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.down(), Vector3.left()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the top-front of the\n * scene.\n */\n public static TOP_FRONT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.up()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-front of the\n * scene.\n */\n public static BOTTOM_FRONT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.down()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the front-right of the\n * scene.\n */\n public static FRONT_RIGHT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.left()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the front-left of the\n * scene.\n */\n public static FRONT_LEFT = new StandardView(\n Vector3.add(Vector3.back(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the top-back of the scene.\n */\n public static TOP_BACK = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.up()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-back of the\n * scene.\n */\n public static BOTTOM_BACK = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.down()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the back-left of the\n * scene.\n */\n public static BACK_LEFT = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the back-right of the\n * scene.\n */\n public static BACK_RIGHT = new StandardView(\n Vector3.add(Vector3.forward(), Vector3.left()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the top-left of the scene.\n */\n public static TOP_LEFT = new StandardView(\n Vector3.add(Vector3.up(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the top-right of the\n * scene.\n */\n public static TOP_RIGHT = new StandardView(\n Vector3.add(Vector3.up(), Vector3.left()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-left of the\n * scene.\n */\n public static BOTTOM_LEFT = new StandardView(\n Vector3.add(Vector3.down(), Vector3.right()),\n Vector3.up()\n );\n\n /**\n * A standard view that positions the camera facing the bottom-right of the\n * scene.\n */\n public static BOTTOM_RIGHT = new StandardView(\n Vector3.add(Vector3.down(), Vector3.left()),\n Vector3.up()\n );\n\n public constructor(\n /**\n * The position vector of the standard view.\n */\n public readonly position: Vector3.Vector3,\n\n /**\n * The up vector of the standard view.\n */\n public readonly up: Vector3.Vector3\n ) {}\n\n /**\n * Returns a new standard view where the position and up vectors are\n * transformed with the given matrix.\n *\n * @param matrix A matrix.\n * @returns A new standard view.\n */\n public transformMatrix(matrix: Matrix4.Matrix4): StandardView {\n const newPosition = Vector3.transformMatrix(this.position, matrix);\n const newUp = Vector3.transformMatrix(this.up, matrix);\n return new StandardView(newPosition, newUp);\n }\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport {\n BoundingBox,\n Dimensions,\n Matrix4,\n Plane,\n Point,\n Rectangle,\n Vector3,\n Vector4,\n} from '@vertexvis/geometry';\nimport { Mapper as M } from '@vertexvis/utils';\n\nexport const fromPbVector2d: M.Func<\n vertexvis.protobuf.core.IVector2d,\n Point.Point\n> = M.defineMapper(M.read(M.requiredProp('x'), M.requiredProp('y')), ([x, y]) =>\n Point.create(x, y)\n);\n\nexport const fromPbDim: M.Func<\n vertexvis.protobuf.stream.IDimensions,\n Dimensions.Dimensions\n> = M.defineMapper(\n M.read(M.requiredProp('width'), M.requiredProp('height')),\n ([width, height]) => Dimensions.create(width, height)\n);\n\nexport const fromPbRect: M.Func<\n vertexvis.protobuf.stream.IRectangle,\n Rectangle.Rectangle\n> = M.defineMapper(\n M.read(\n M.requiredProp('x'),\n M.requiredProp('y'),\n M.requiredProp('width'),\n M.requiredProp('height')\n ),\n ([x, y, width, height]) => Rectangle.create(x, y, width, height)\n);\n\nexport const fromPbVector3f: M.Func<\n vertexvis.protobuf.core.IVector3f,\n Vector3.Vector3\n> = M.defineMapper(\n M.read(M.requiredProp('x'), M.requiredProp('y'), M.requiredProp('z')),\n ([x, y, z]) => Vector3.create(x, y, z)\n);\n\nexport const fromPbBoundingBox3f: M.Func<\n vertexvis.protobuf.core.IBoundingBox3f,\n BoundingBox.BoundingBox\n> = M.defineMapper(\n M.read(\n M.requiredProp('xmin'),\n M.requiredProp('ymin'),\n M.requiredProp('zmin'),\n M.requiredProp('xmax'),\n M.requiredProp('ymax'),\n M.requiredProp('zmax')\n ),\n ([xmin, ymin, zmin, xmax, ymax, zmax]) =>\n BoundingBox.create(\n Vector3.create(xmin, ymin, zmin),\n Vector3.create(xmax, ymax, zmax)\n )\n);\n\nexport const fromPbPlane: M.Func<vertexvis.protobuf.core.IPlane, Plane.Plane> =\n M.defineMapper(\n M.read(M.requiredProp('d'), M.mapRequiredProp('normal', fromPbVector3f)),\n ([constant, normal]) => Plane.create({ normal, constant })\n );\n\nexport const fromPbVector4f: M.Func<\n vertexvis.protobuf.core.IVector4f,\n Vector4.Vector4\n> = M.defineMapper(\n M.read(\n M.requiredProp('x'),\n M.requiredProp('y'),\n M.requiredProp('z'),\n M.requiredProp('w')\n ),\n ([x, y, z, w]) => Vector4.create({ x, y, z, w })\n);\n\nexport const fromPbMatrix4f: M.Func<\n vertexvis.protobuf.core.IMatrix4x4f,\n Matrix4.Matrix4\n> = M.defineMapper(\n M.read(\n M.mapRequiredProp('r0', fromPbVector4f),\n M.mapRequiredProp('r1', fromPbVector4f),\n M.mapRequiredProp('r2', fromPbVector4f),\n M.mapRequiredProp('r3', fromPbVector4f)\n ),\n ([r0, r1, r2, r3]) =>\n Matrix4.fromValues(\n r0.x,\n r0.y,\n r0.z,\n r0.w,\n r1.x,\n r1.y,\n r1.z,\n r1.w,\n r2.x,\n r2.y,\n r2.z,\n r2.w,\n r3.x,\n r3.y,\n r3.z,\n r3.w\n )\n);\n","import type { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Color, Mapper as M } from '@vertexvis/utils';\n\nimport { Color3 } from '../../interfaces';\n\nexport const fromPbRGBi: M.Func<vertexvis.protobuf.core.IRGBi, Color.Color> =\n M.defineMapper(\n M.read(M.requiredProp('r'), M.requiredProp('g'), M.requiredProp('b')),\n ([r, g, b]) => Color.create(r, g, b)\n );\n\nexport const toPbRGBi: M.Func<Color3, vertexvis.protobuf.core.IRGBi> =\n M.defineMapper(\n (color) => {\n function createRGBi(\n color: Omit<Color.Color, 'a'>\n ): vertexvis.protobuf.core.IRGBi {\n return { r: color.r, g: color.g, b: color.b };\n }\n\n if (typeof color === 'string') {\n const c = Color.fromHexString(color);\n return c != null\n ? createRGBi(c)\n : { errors: ['String is not a valid color.'] };\n } else if (typeof color === 'number') {\n return createRGBi(Color.fromNumber(color));\n } else {\n return createRGBi(color);\n }\n },\n (color) => color\n );\n","import { Mapper as M } from '@vertexvis/utils';\n\nexport const toPbBoolValue = toPbScalarWrapper<boolean>();\n\nexport const toPbFloatValue = toPbScalarWrapper<number>();\n\nexport const toPbStringValue = toPbScalarWrapper<string>();\n\nexport const fromPbBoolValue = fromPbScalarWrapper<boolean>();\n\nexport const fromPbBytesValue = fromPbScalarWrapper<Uint8Array>();\n\nexport const fromPbStringValue = fromPbScalarWrapper<string>();\n\nfunction toPbScalarWrapper<T>(): M.Func<\n T | undefined,\n { value: T | undefined } | undefined\n> {\n return M.defineMapper(\n (value) => (value != null ? { value } : undefined),\n (value) => value\n );\n}\n\nfunction fromPbScalarWrapper<T>(): M.Func<\n { value?: T | null } | undefined | null,\n T | undefined\n> {\n return M.defineMapper(\n (value) => value?.value || undefined,\n (value) => value\n );\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { BoundingBox, Dimensions, Vector3 } from '@vertexvis/geometry';\nimport { protoToDate } from '@vertexvis/stream-api';\nimport { Mapper as M, UUID } from '@vertexvis/utils';\n\nimport { Token } from '../token';\nimport {\n CrossSectioning,\n Frame,\n FrameCamera,\n FrameCameraBase,\n FrameImage,\n FrameScene,\n ImageAttributesLike,\n Orientation,\n SceneViewSummary,\n} from '../types';\nimport { fromPbJsUuid, fromPbJsUuid2l } from './corePbJs';\nimport {\n fromPbBoundingBox3f,\n fromPbDim,\n fromPbRect,\n fromPbVector3f,\n} from './geometry';\nimport { fromPbRGBi } from './material';\nimport { fromPbBytesValue } from './scalar';\n\nexport const fromPbPerspectiveCamera: M.Func<\n vertexvis.protobuf.stream.IPerspectiveCamera,\n FrameCamera.PerspectiveFrameCamera\n> = M.defineMapper(\n M.read(\n M.mapProp('position', M.compose(M.required('position'), fromPbVector3f)),\n M.mapProp('lookAt', M.compose(M.required('lookAt'), fromPbVector3f)),\n M.mapProp('up', M.compose(M.required('up'), fromPbVector3f)),\n M.getProp('fovY')\n ),\n ([position, lookAt, up, fovY]) => {\n return {\n position,\n lookAt,\n up,\n fovY: fovY?.value != null ? fovY.value : 45,\n };\n }\n);\n\nexport const fromPbOrthographicCamera: M.Func<\n vertexvis.protobuf.stream.IOrthographicCamera,\n FrameCamera.OrthographicFrameCamera\n> = M.defineMapper(\n M.read(\n M.mapProp(\n 'viewVector',\n M.compose(M.required('viewVector'), fromPbVector3f)\n ),\n M.mapProp('lookAt', M.compose(M.required('lookAt'), fromPbVector3f)),\n M.mapProp('up', M.compose(M.required('up'), fromPbVector3f)),\n M.mapProp('fovHeight', M.required('fovHeight'))\n ),\n ([viewVector, lookAt, up, fovHeight]) => ({\n viewVector,\n lookAt,\n up,\n fovHeight,\n })\n);\n\nexport const fromPbCamera: M.Func<\n vertexvis.protobuf.stream.ICamera,\n FrameCamera.FrameCamera\n> = M.defineMapper(\n M.read(\n M.mapProp('position', M.ifDefined(fromPbVector3f)),\n M.mapProp('lookAt', M.ifDefined(fromPbVector3f)),\n M.mapProp('up', M.ifDefined(fromPbVector3f)),\n M.mapProp('perspective', M.ifDefined(fromPbPerspectiveCamera)),\n M.mapProp('orthographic', M.ifDefined(fromPbOrthographicCamera))\n ),\n ([position, lookAt, up, perspective, orthographic]) => {\n return (\n perspective ??\n orthographic ?? {\n position: position ?? Vector3.back(),\n lookAt: lookAt ?? Vector3.origin(),\n up: up ?? Vector3.up(),\n fovY: 45,\n }\n );\n }\n);\n\nexport const fromPbSectionPlane: M.Func<\n vertexvis.protobuf.stream.ISectionPlane,\n CrossSectioning.SectionPlane\n> = M.defineMapper(\n M.read(\n M.mapProp('normal', M.compose(M.required('normal'), fromPbVector3f)),\n M.requiredProp('offset')\n ),\n ([normal, offset]) => ({ normal, offset })\n);\n\nconst fromPbImageAttributes: M.Func<\n vertexvis.protobuf.stream.IImageAttributes,\n ImageAttributesLike\n> = M.defineMapper(\n M.read(\n M.mapProp(\n 'frameDimensions',\n M.compose(M.required('frameDimensions'), fromPbDim)\n ),\n M.mapProp('imageRect', M.compose(M.required('imageRect'), fromPbRect)),\n M.mapProp('scaleFactor', M.required('scaleFactor'))\n ),\n ([frameDimensions, imageRect, imageScale]) => ({\n frameDimensions,\n imageRect,\n imageScale,\n })\n);\n\nexport const fromPbCrossSectioning: M.Func<\n vertexvis.protobuf.stream.ICrossSectioning,\n CrossSectioning.CrossSectioning\n> = M.defineMapper(\n M.read(\n M.mapProp(\n 'sectionPlanes',\n M.compose(M.required('sectionPlanes'), M.mapArray(fromPbSectionPlane))\n ),\n M.mapProp('highlightColor', M.ifDefined(fromPbRGBi))\n ),\n ([sectionPlanes, highlightColor]) =>\n CrossSectioning.create({\n sectionPlanes,\n highlightColor: highlightColor || undefined,\n })\n);\n\nconst fromPbItemSetSummary: M.Func<\n vertexvis.protobuf.stream.IItemSetSummary,\n SceneViewSummary.ItemSetSummary\n> = M.defineMapper(\n M.read(\n M.requiredProp('count'),\n M.mapProp('boundingBox', M.ifDefined(fromPbBoundingBox3f))\n ),\n ([count, boundingBox]) => ({\n count,\n boundingBox: boundingBox ?? undefined,\n })\n);\n\nconst fromPbDisplayListSummary: M.Func<\n vertexvis.protobuf.stream.IDisplayListSummary,\n SceneViewSummary.SceneViewSummary\n> = M.defineMapper(\n M.read(\n M.mapProp('visibleSummary', M.ifDefined(fromPbItemSetSummary)),\n M.mapProp('selectedVisibleSummary', M.ifDefined(fromPbItemSetSummary))\n ),\n ([visibleSummary, selectedVisibleSummary]) =>\n SceneViewSummary.create({\n visibleSummary: visibleSummary ?? undefined,\n selectedVisibleSummary: selectedVisibleSummary ?? undefined,\n })\n);\n\nconst fromPbFrameImageAttributes: M.Func<\n vertexvis.protobuf.stream.IDrawFramePayload,\n ImageAttributesLike\n> = M.defineMapper(\n M.read(\n M.mapProp(\n 'imageAttributes',\n M.compose(M.required('imageAttributes'), fromPbImageAttributes)\n )\n ),\n ([imageAttr]) => imageAttr\n);\n\nconst fromPbFrameImage: M.Func<\n vertexvis.protobuf.stream.IDrawFramePayload,\n FrameImage\n> = M.defineMapper(\n M.read(fromPbFrameImageAttributes, M.mapProp('image', M.required('image'))),\n ([imageAttr, image]) => new FrameImage(imageAttr, image)\n);\n\nconst fromPbSceneAttributes: M.Func<\n vertexvis.protobuf.stream.ISceneAttributes,\n {\n camera: FrameCamera.FrameCamera;\n boundingBox: BoundingBox.BoundingBox;\n crossSectioning: CrossSectioning.CrossSectioning;\n hasChanged: boolean;\n displayListSummary: SceneViewSummary.SceneViewSummary;\n modelViewId: UUID.UUID | undefined;\n }\n> = M.defineMapper(\n M.read(\n M.mapRequiredProp('camera', fromPbCamera),\n M.mapRequiredProp('visibleBoundingBox', fromPbBoundingBox3f),\n M.mapRequiredProp('crossSectioning', fromPbCrossSectioning),\n M.requiredProp('hasChanged'),\n M.mapRequiredProp('displayListSummary', fromPbDisplayListSummary),\n M.mapProp('modelViewId', M.ifDefined(fromPbJsUuid2l))\n ),\n ([\n camera,\n boundingBox,\n crossSectioning,\n hasChanged,\n displayListSummary,\n modelViewId,\n ]) => ({\n camera,\n boundingBox,\n crossSectioning,\n hasChanged,\n displayListSummary,\n modelViewId: modelViewId != null ? modelViewId : undefined,\n })\n);\n\nconst fromPbFrameSceneAttributes: M.Func<\n vertexvis.protobuf.stream.IDrawFramePayload,\n {\n camera: FrameCamera.FrameCamera;\n boundingBox: BoundingBox.BoundingBox;\n crossSectioning: CrossSectioning.CrossSectioning;\n hasChanged: boolean;\n displayListSummary: SceneViewSummary.SceneViewSummary;\n modelViewId: UUID.UUID | undefined;\n }\n> = M.defineMapper(\n M.read(\n M.mapProp(\n 'sceneAttributes',\n M.compose(M.required('sceneAttributes'), fromPbSceneAttributes)\n )\n ),\n ([sceneAttr]) => sceneAttr\n);\n\nconst fromPbFrameCamera: M.Func<\n vertexvis.protobuf.stream.IDrawFramePayload,\n FrameCameraBase\n> = M.defineMapper(\n M.read(fromPbFrameSceneAttributes, fromPbFrameImageAttributes),\n ([sceneAttr, imageAttr]) =>\n FrameCameraBase.fromBoundingBox(\n sceneAttr.camera,\n sceneAttr.boundingBox,\n Dimensions.aspectRatio(imageAttr.frameDimensions)\n )\n);\n\nfunction fromPbFrameScene(\n worldOrientation: Orientation\n): M.Func<vertexvis.protobuf.stream.IDrawFramePayload, FrameScene> {\n return M.defineMapper(\n M.read(fromPbFrameSceneAttributes, fromPbFrameCamera),\n ([sceneAttr, camera]) =>\n new FrameScene(\n camera,\n sceneAttr.boundingBox,\n sceneAttr.crossSectioning,\n worldOrientation,\n sceneAttr.hasChanged,\n sceneAttr.displayListSummary,\n sceneAttr.modelViewId\n )\n );\n}\n\nexport function fromPbFrame(\n worldOrientation: Orientation\n): M.Func<vertexvis.protobuf.stream.IDrawFramePayload, Frame> {\n return M.defineMapper(\n M.read(\n M.mapProp('frameCorrelationIds', (ids) => (ids != null ? ids : [])),\n M.requiredProp('sequenceNumber'),\n M.compose(fromPbFrameImageAttributes, M.getProp('frameDimensions')),\n fromPbFrameScene(worldOrientation),\n fromPbFrameImage,\n M.mapProp('depthBuffer', fromPbBytesValue),\n M.mapProp('featureMap', fromPbBytesValue),\n M.mapProp('temporalRefinementCorrelationId', (id) =>\n id != null ? fromPbJsUuid(id) : null\n )\n ),\n ([cIds, seq, fd, s, i, db, fm, trci]) =>\n new Frame(cIds, trci || '', seq, fd, i, s, db, fm)\n );\n}\n\nexport type FrameDecoder = M.ThrowIfInvalidFunc<\n vertexvis.protobuf.stream.IDrawFramePayload,\n Frame\n>;\n\nexport function fromPbFrameOrThrow(\n worldOrientation: Orientation\n): FrameDecoder {\n return M.ifInvalidThrow(fromPbFrame(worldOrientation));\n}\n\nexport const fromPbWorldOrientation: M.Func<\n vertexvis.protobuf.stream.IOrientation | null | undefined,\n Orientation\n> = M.defineMapper(\n M.compose(\n M.required('orientation'),\n M.read(\n M.mapProp('up', M.compose(M.required('up'), fromPbVector3f)),\n M.mapProp('front', M.compose(M.required('front'), fromPbVector3f))\n )\n ),\n ([up, front]) => new Orientation(up, front)\n);\n\nexport const fromPbWorldOrientationOrThrow: M.ThrowIfInvalidFunc<\n vertexvis.protobuf.stream.IOrientation | null | undefined,\n Orientation\n> = M.ifInvalidThrow(fromPbWorldOrientation);\n\nconst fromPbStencilBufferResult: M.Func<\n vertexvis.protobuf.stream.IGetStencilBufferResult,\n {\n stencilBuffer: Uint8Array;\n depthBuffer: Uint8Array;\n imageAttributes: ImageAttributesLike;\n }\n> = M.defineMapper(\n M.read(\n M.mapRequiredProp('imageAttributes', fromPbImageAttributes),\n M.requiredProp('stencilBuffer'),\n M.mapRequiredProp(\n 'depthBuffer',\n M.compose(fromPbBytesValue, M.required('depthBuffer'))\n )\n ),\n ([imageAttributes, stencilBuffer, depthBuffer]) => ({\n imageAttributes,\n stencilBuffer,\n depthBuffer,\n })\n);\n\nexport const fromPbStencilBuffer = fromPbStreamResponse(\n 'stencilBuffer',\n fromPbStencilBufferResult\n);\n\nexport const fromPbStencilBufferOrThrow = M.ifInvalidThrow(fromPbStencilBuffer);\n\nfunction fromPbStreamResponse<\n P extends keyof vertexvis.protobuf.stream.IStreamResponse,\n R,\n>(\n prop: P,\n mapper: M.Func<NonNullable<vertexvis.protobuf.stream.IStreamResponse[P]>, R>\n): M.Func<vertexvis.protobuf.stream.IStreamResponse, R> {\n return M.mapRequiredProp(prop, mapper);\n}\n\nexport const fromPbToken: M.Func<vertexvis.protobuf.stream.IToken, Token> =\n M.defineMapper(\n M.read(M.requiredProp('token'), M.requiredProp('expiresIn')),\n ([token, expiresIn]) => Token.create(token, expiresIn)\n );\n\nexport const fromPbStartStreamResponse: M.Func<\n vertexvis.protobuf.stream.IStreamResponse,\n {\n streamId: string;\n sceneId: string;\n sceneViewId: string;\n sessionId: string;\n worldOrientation: Orientation;\n token: Token;\n }\n> = M.defineMapper(\n M.read(\n M.compose(\n M.requiredProp('startStream'),\n M.mapRequiredProp('streamId', fromPbJsUuid)\n ),\n M.compose(\n M.requiredProp('startStream'),\n M.mapRequiredProp('sceneId', fromPbJsUuid)\n ),\n M.compose(\n M.requiredProp('startStream'),\n M.mapRequiredProp('sceneViewId', fromPbJsUuid)\n ),\n M.compose(\n M.requiredProp('startStream'),\n M.mapRequiredProp('sessionId', fromPbJsUuid)\n ),\n M.compose(\n M.requiredProp('startStream'),\n M.mapRequiredProp('worldOrientation', fromPbWorldOrientation)\n ),\n M.compose(\n M.requiredProp('startStream'),\n M.mapRequiredProp('token', fromPbToken)\n )\n ),\n ([streamId, sceneId, sceneViewId, sessionId, worldOrientation, token]) => ({\n streamId,\n sceneId,\n sceneViewId,\n sessionId: sessionId,\n worldOrientation,\n token,\n })\n);\n\nexport const fromPbStartStreamResponseOrThrow = M.ifInvalidThrow(\n fromPbStartStreamResponse\n);\n\nexport const fromPbReconnectResponse: M.Func<\n vertexvis.protobuf.stream.IStreamResponse,\n { token: Token }\n> = M.defineMapper(\n M.read(\n M.compose(\n M.requiredProp('reconnect'),\n M.mapRequiredProp('token', fromPbToken)\n )\n ),\n ([token]) => ({ token })\n);\n\nexport const fromPbReconnectResponseOrThrow = M.ifInvalidThrow(\n fromPbReconnectResponse\n);\n\nexport const fromPbRefreshTokenResponse: M.Func<\n vertexvis.protobuf.stream.IStreamResponse,\n Token\n> = M.defineMapper(\n M.compose(\n M.requiredProp('refreshToken'),\n M.requiredProp('token'),\n fromPbToken\n ),\n (token) => token\n);\n\nexport const fromPbRefreshTokenResponseOrThrow = M.ifInvalidThrow(\n fromPbRefreshTokenResponse\n);\n\nexport const fromPbSyncTimeResponse: M.Func<\n vertexvis.protobuf.stream.IStreamResponse,\n Date\n> = M.defineMapper(\n M.compose(\n M.requiredProp('syncTime'),\n M.requiredProp('replyTime'),\n M.read(M.requiredProp('seconds'), M.requiredProp('nanos'))\n ),\n ([seconds, nanos]) => protoToDate({ seconds, nanos })\n);\n\nexport const fromPbSyncTimeResponseOrThrow = M.ifInvalidThrow(\n fromPbSyncTimeResponse\n);\n","import { Cursor as PBCursor } from '@vertexvis/scene-view-protos/core/protos/paging_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { Cursor } from '../types';\n\nexport const mapCursor: M.Func<\n PBCursor.AsObject | null | undefined,\n Cursor | undefined\n> = M.defineMapper(M.ifDefined(M.getProp('next')), (next) =>\n next != null ? next : undefined\n);\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { clamp } from '@vertexvis/geometry';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport {\n CrossSectioningOptions,\n FeatureHighlightOptions,\n FeatureLineOptions,\n FrameOptions,\n FrameType,\n PhantomOptions,\n SceneComparisonOptions,\n SelectionHighlightingOptions,\n StreamAttributes,\n} from '../../interfaces';\nimport { toPbRGBi } from './material';\nimport { toPbFloatValue, toPbStringValue } from './scalar';\n\nconst toPbFrameType: M.Func<\n FrameType,\n | vertexvis.protobuf.stream.IDepthBufferAttributes\n | vertexvis.protobuf.stream.IFeatureMapAttributes\n> = M.defineMapper(\n (type) => {\n switch (type) {\n case 'all':\n return {\n enabled: { value: true },\n frameType: vertexvis.protobuf.stream.FrameType.FRAME_TYPE_ALL,\n };\n case 'final':\n return {\n enabled: { value: true },\n frameType: vertexvis.protobuf.stream.FrameType.FRAME_TYPE_FINAL,\n };\n default:\n return {\n enabled: { value: false },\n frameType: vertexvis.protobuf.stream.FrameType.FRAME_TYPE_INVALID,\n };\n }\n },\n (type) => type\n);\n\nconst toPbPhantom: M.Func<\n PhantomOptions | undefined,\n vertexvis.protobuf.stream.IPhantomAttributes\n> = M.defineMapper(M.read(M.ifDefined(M.getProp('opacity'))), ([opacity]) => ({\n opacity: { value: clamp(opacity ?? 0, 0, 1) },\n}));\n\nconst toPbFeatureLines: M.Func<\n FeatureLineOptions | undefined,\n vertexvis.protobuf.stream.IFeatureLineAttributes\n> = M.defineMapper(\n M.read(\n M.ifDefined(M.getProp('width')),\n M.ifDefined(M.mapProp('color', M.ifDefined(toPbRGBi)))\n ),\n ([lineWidth, lineColor]) => ({ lineWidth, lineColor })\n);\n\nconst toPbSelectionHighlighting: M.Func<\n SelectionHighlightingOptions | undefined,\n vertexvis.protobuf.stream.ISelectionHighlightAttributes | undefined\n> = M.defineMapper(\n M.read(\n M.ifDefined(M.mapProp('color', M.ifDefined(toPbRGBi))),\n M.ifDefined(M.mapProp('opacity', toPbFloatValue)),\n M.ifDefined(M.getProp('lineWidth'))\n ),\n ([color, opacity, lineWidth]) => {\n if (color || opacity || lineWidth) {\n return {\n color,\n opacity,\n lineWidth,\n };\n } else return undefined;\n }\n);\n\nconst toPbFeatureHighlight: M.Func<\n FeatureHighlightOptions | undefined,\n vertexvis.protobuf.stream.IFeatureHighlightAttributes\n> = M.defineMapper(\n M.read(\n M.ifDefined(M.mapProp('highlightColor', M.ifDefined(toPbRGBi))),\n M.ifDefined(M.mapProp('occludedOpacity', toPbFloatValue)),\n M.ifDefined(M.mapProp('outline', M.ifDefined(toPbFeatureLines)))\n ),\n ([highlightColor, occludedOpacity, outline]) => ({\n highlightColor,\n occludedOpacity,\n outline,\n })\n);\n\nconst toPbNoDefaultLights: M.Func<boolean | undefined, boolean> =\n M.defineMapper(\n (noDefaultLights) => !!noDefaultLights,\n (attr) => attr\n );\n\nconst toPbExperimentalRenderingOptions: M.Func<string | undefined, string> =\n M.defineMapper(\n (experimentalRenderingOptions) => experimentalRenderingOptions ?? '',\n (attr) => attr\n );\n\nconst toPbFrameOptions: M.Func<\n FrameOptions | undefined,\n vertexvis.protobuf.stream.IFrameAttributes\n> = M.defineMapper(\n M.read(M.ifDefined(M.mapProp('frameBackgroundColor', M.ifDefined(toPbRGBi)))),\n ([frameBackgroundColor]) => ({ frameBackgroundColor })\n);\n\nconst toPbSceneComparison: M.Func<\n SceneComparisonOptions | undefined,\n vertexvis.protobuf.stream.ISceneComparisonAttributes\n> = M.defineMapper(\n M.read(\n M.ifDefined(M.mapProp('streamKeyToCompare', M.ifDefined(toPbStringValue)))\n ),\n ([streamKeyToCompare]) => ({\n streamKeyToCompare,\n })\n);\n\nconst toPbCrossSectioning: M.Func<\n CrossSectioningOptions | undefined,\n vertexvis.protobuf.stream.ICrossSectioningAttributes\n> = M.defineMapper(\n M.read(\n M.ifDefined(M.mapProp('endCapEnabled', (endCapEnabled) => !!endCapEnabled)),\n M.ifDefined(M.mapProp('endCapColor', M.ifDefined(toPbRGBi)))\n ),\n ([endCapEnabled, endCapColor]) => ({\n endCapEnabled,\n endCapColor,\n })\n);\n\nexport const toPbStreamAttributes: M.Func<\n StreamAttributes,\n vertexvis.protobuf.stream.IStreamAttributes\n> = M.defineMapper(\n M.read(\n M.mapProp('depthBuffers', toPbFrameType),\n M.mapProp('phantom', toPbPhantom),\n M.mapProp('noDefaultLights', toPbNoDefaultLights),\n M.mapProp('featureLines', toPbFeatureLines),\n M.mapProp('featureHighlighting', toPbFeatureHighlight),\n M.mapProp('featureMaps', toPbFrameType),\n M.mapProp('experimentalRenderingOptions', toPbExperimentalRenderingOptions),\n M.mapProp('selectionHighlighting', toPbSelectionHighlighting),\n M.mapProp('frames', toPbFrameOptions),\n M.mapProp('sceneComparison', toPbSceneComparison),\n M.mapProp('crossSectioning', toPbCrossSectioning)\n ),\n ([db, pi, ndl, fl, fh, fm, ero, hs, fa, sc, cs]) => {\n const value = {\n depthBuffers: db,\n phantomItems: pi,\n noDefaultLights: ndl,\n featureLines: fl,\n featureHighlighting: fh,\n featureMaps: fm,\n experimentalRenderingOptions: ero,\n selectionHighlighting: hs,\n frames: fa,\n sceneComparison: sc,\n crossSectioningAttributes: cs,\n };\n\n return value;\n }\n);\n"],"names":["M","Color","UUID","Vector3","boundingSphere","BoundingSphere","Angle","create","point","Point","ray","Ray","Rectangle","ClippingPlanes.fromBoundingBoxAndLookAtCamera","FrameCamera.isOrthographicFrameCamera","Line3","Plane","Matrix4","FrameCamera.toOrthographic","FrameCamera.toPerspective","Dimensions","BoundingBox","Vector4","color","CrossSectioning.create","SceneViewSummary.create","mapper"],"mappings":"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AAG,EAAE,EAAE;AACf;AACA,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;AAC/E,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5E,QAAQ,GAAG,EAAE,EAAE;AACf;AACA,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;AAC/E,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5E,QAAQ,GAAG,EAAE,EAAE;AACf;AACA,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;AAC/E,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC5E,QAAQ,GAAG,EAAE,EAAE;AACf,OAAO,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","x_google_ignoreList":[3,5,6,7,8,9,10,11,12,13,14,15,16]}