@smarterplan/ngx-smarterplan-core 1.4.21 → 1.4.22

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 (114) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
  3. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  4. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
  5. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
  7. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
  8. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  9. package/esm2022/lib/components/splat-viewer/splat-viewer.component.mjs +361 -0
  10. package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
  11. package/esm2022/lib/config.mjs +1 -1
  12. package/esm2022/lib/helpers.service.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  18. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +22 -22
  19. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  20. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  21. package/esm2022/lib/mattertagData.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.module.mjs +9 -4
  23. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  24. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  28. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  29. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  30. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  31. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  32. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  33. package/esm2022/lib/services/content.service.mjs +1 -1
  34. package/esm2022/lib/services/filter.service.mjs +1 -1
  35. package/esm2022/lib/services/intervention.service.mjs +1 -1
  36. package/esm2022/lib/services/locale.service.mjs +1 -1
  37. package/esm2022/lib/services/matterport-import.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  40. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  41. package/esm2022/lib/services/matterport-tag-copy.service.mjs +1 -1
  42. package/esm2022/lib/services/matterport-tag.service.mjs +12 -7
  43. package/esm2022/lib/services/matterport.service.mjs +17 -17
  44. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  45. package/esm2022/lib/services/models/base-object.service.mjs +1 -1
  46. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  47. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  48. package/esm2022/lib/services/models/domain.service.mjs +1 -1
  49. package/esm2022/lib/services/models/equipment.service.mjs +1 -1
  50. package/esm2022/lib/services/models/event.service.mjs +1 -1
  51. package/esm2022/lib/services/models/feature.service.mjs +1 -1
  52. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  53. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  54. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  55. package/esm2022/lib/services/models/mission.service.mjs +1 -1
  56. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  57. package/esm2022/lib/services/models/node.service.mjs +1 -1
  58. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  59. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  61. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  62. package/esm2022/lib/services/models/poi.service.mjs +27 -27
  63. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  64. package/esm2022/lib/services/models/property.service.mjs +1 -1
  65. package/esm2022/lib/services/models/space.service.mjs +1 -1
  66. package/esm2022/lib/services/models/template.service.mjs +1 -1
  67. package/esm2022/lib/services/models/ticket.service.mjs +1 -1
  68. package/esm2022/lib/services/models/visit.service.mjs +1 -1
  69. package/esm2022/lib/services/models/zone.service.mjs +1 -1
  70. package/esm2022/lib/services/navigator.service.mjs +1 -1
  71. package/esm2022/lib/services/obj-to-glb.mjs +649 -0
  72. package/esm2022/lib/services/s3.service.mjs +43 -3
  73. package/esm2022/lib/services/search.service.mjs +1 -1
  74. package/esm2022/lib/services/support.service.mjs +1 -1
  75. package/esm2022/lib/services/sweep-locator.service.mjs +1 -1
  76. package/esm2022/lib/services/tag.service.mjs +16 -16
  77. package/esm2022/lib/services/threejs-import.service.mjs +6 -4
  78. package/esm2022/lib/services/threejs.service.mjs +867 -95
  79. package/esm2022/lib/services/user.service.mjs +1 -1
  80. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  81. package/esm2022/lib/services/validators.service.mjs +1 -1
  82. package/esm2022/lib/services/viewer.service.mjs +189 -7
  83. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  84. package/esm2022/lib/services/zoneChange.service.mjs +1 -1
  85. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  86. package/esm2022/lib/validators/email.directive.mjs +1 -1
  87. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  88. package/esm2022/lib/validators/number.directive.mjs +1 -1
  89. package/esm2022/lib/validators/text.directive.mjs +1 -1
  90. package/esm2022/public-api.mjs +3 -1
  91. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +2239 -233
  92. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  93. package/lib/components/splat-viewer/splat-viewer.component.d.ts +98 -0
  94. package/lib/ngx-smarterplan-core.module.d.ts +7 -6
  95. package/lib/services/matterport-tag.service.d.ts +5 -5
  96. package/lib/services/obj-to-glb.d.ts +66 -0
  97. package/lib/services/s3.service.d.ts +7 -0
  98. package/lib/services/threejs.service.d.ts +336 -16
  99. package/lib/services/viewer.service.d.ts +110 -8
  100. package/package.json +1 -1
  101. package/public-api.d.ts +2 -0
  102. package/src/assets/viewers/splat/chunk-BYLI4YBI.js +17037 -0
  103. package/src/assets/viewers/splat/chunk-LDV6YPMG.js +1 -0
  104. package/src/assets/viewers/splat/chunk-WZ5Z4TU3.js +105719 -0
  105. package/src/assets/viewers/splat/convert-4DRLH77X.js +1 -0
  106. package/src/assets/viewers/splat/convert.html +11 -0
  107. package/src/assets/viewers/splat/converter-SLBB5MHG.js +1 -0
  108. package/src/assets/viewers/splat/index.html +90 -0
  109. package/src/assets/viewers/splat/spz-DEYRea_v-QE6YSGIB.js +5292 -0
  110. package/src/assets/viewers/splat/viewer-W4X3FWQJ.js +2704 -0
  111. package/src/assets/viewers/splat/viewer.css +1096 -0
  112. package/src/assets/viewers/splat/webp.wasm +0 -0
  113. package/src/assets/viewers/splat/worker.mjs +1383 -0
  114. package/src/assets/vs-app.json +67 -67
@@ -0,0 +1 @@
1
+ import{b as r}from"./chunk-WZ5Z4TU3.js";import"./chunk-BYLI4YBI.js";import"./chunk-LDV6YPMG.js";function t(o){window.parent.postMessage(o,window.location.origin)}window.addEventListener("message",o=>{if(o.origin!==window.location.origin||o.source!==window.parent||o.data?.type!=="convert")return;let{file:a,baseName:i}=o.data;r(a,i,(e,n)=>t({type:"convert-progress",step:e,fraction:n})).then(({files:e,entry:n,splats:s,sh:d,levels:c})=>t({type:"converted",files:e,entry:n,splats:s,sh:d,levels:c})).catch(e=>{console.error("Splat converter:",e),t({type:"convert-error",message:e?.message??String(e)})})});t({type:"ready"});
@@ -0,0 +1,11 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>SmarterPlan splat converter</title>
6
+ </head>
7
+ <body>
8
+ <!-- Opened unseen by the app's 3D models form, which hands it a splat file to turn into .sog. -->
9
+ <script type="module" src="convert-4DRLH77X.js"></script>
10
+ </body>
11
+ </html>
@@ -0,0 +1 @@
1
+ import{a,b,c}from"./chunk-WZ5Z4TU3.js";import"./chunk-BYLI4YBI.js";import"./chunk-LDV6YPMG.js";export{a as STREAMED_ENTRY,b as convertForUpload,c as toCompressedPly};
@@ -0,0 +1,90 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>SmarterPlan splat viewer</title>
7
+ <!-- SuperSplat's viewer builds its controls inside #viewer; this is their stylesheet. -->
8
+ <link rel="stylesheet" href="viewer.css">
9
+ <style>
10
+ /* The app's colours, which main.ts sets from those the page is opened with; these, the SmarterPlan
11
+ app's, when it is not. The background is also the scene's where there are no splats. */
12
+ :root { --app-accent: rgb(83, 182, 187); --app-background: #e0f7ff; }
13
+ html, body { margin: 0; height: 100%; overflow: hidden; background: var(--app-background); }
14
+ /* SuperSplat's controls in the app's colour rather than its orange. */
15
+ :root .sse-viewer { --sse-accent: var(--app-accent); --sse-grip: color-mix(in srgb, var(--app-accent), white 15%); }
16
+ #viewer { position: absolute; inset: 0; }
17
+ /* The app's tags, over the scene, as Matterport draws them: a disc at the end of a stem standing
18
+ out of the surface, and the tag's name in a bubble on hover. Only the discs take the pointer. */
19
+ #tags { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 5; }
20
+ #stems { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
21
+ #stems line { stroke: #fff; stroke-width: 2; stroke-linecap: round; filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.6)); }
22
+ .tag { position: absolute; left: 0; top: 0; width: 0; height: 0; display: none; }
23
+ .disc {
24
+ position: absolute; left: -14px; top: -14px; width: 28px; height: 28px; padding: 0;
25
+ border: 2px solid #fff; border-radius: 50%; cursor: pointer; pointer-events: auto;
26
+ background-size: 70%; background-position: center; background-repeat: no-repeat;
27
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5); transition: transform 0.15s ease-out;
28
+ }
29
+ .tag:hover .disc { transform: scale(1.3); }
30
+ .bubble {
31
+ position: absolute; bottom: 24px; left: 0; transform: translate(-50%, 6px); opacity: 0;
32
+ padding: 6px 10px; border-radius: 6px; background: #fff; color: #222; font: 13px/1.3 sans-serif;
33
+ white-space: nowrap; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35); pointer-events: none;
34
+ transition: opacity 0.15s ease-out, transform 0.15s ease-out;
35
+ }
36
+ .bubble::after {
37
+ content: ''; position: absolute; top: 100%; left: 50%; margin-left: -6px;
38
+ border: 6px solid transparent; border-top-color: #fff;
39
+ }
40
+ .bubble:empty { display: none; }
41
+ .tag:hover .bubble { opacity: 1; transform: translate(-50%, 0); }
42
+ .tag.pointed .disc { animation: pointed 0.6s ease-in-out 3; }
43
+ /* The tag following the pointer while one is placed: where a click would put it. */
44
+ .tag.ghost { opacity: 0.75; }
45
+ .tag.ghost .disc { pointer-events: none; background-color: #fff; border-color: #1E88E5; }
46
+ #stems line.ghost { stroke-dasharray: 4 3; }
47
+ /* While a tag is placed: over the whole scene, taking the click that picks its spot. */
48
+ #placing { position: absolute; inset: 0; z-index: 6; display: none; cursor: crosshair; }
49
+ /* The app shows how loading goes, as for its other viewers: the viewer's own bar would be a second one. */
50
+ .sse-viewer .sse-loadingWrap { display: none !important; }
51
+ #placing.missed { cursor: not-allowed; }
52
+ /* A calibration, in the app's 3D viewer's colours: a green numbered pin where each matched tag
53
+ really is, with a line to it from the tag, faded; and an amber ring round the tag being matched. */
54
+ .pin {
55
+ position: absolute; left: -12px; top: -12px; width: 24px; height: 24px; box-sizing: border-box;
56
+ display: none; border: 2px solid #fff; border-radius: 50%; background: #1E9E5A; color: #fff;
57
+ font: bold 13px/20px sans-serif; text-align: center; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
58
+ pointer-events: none; z-index: 1000001;
59
+ }
60
+ #stems line.link { stroke: #1E9E5A; stroke-opacity: 0.75; stroke-dasharray: none; }
61
+ .tag.matched, #stems line.matched { opacity: 0.4; }
62
+ .tag.selected .disc { box-shadow: 0 0 0 4px #FFB103, 0 1px 4px rgba(0, 0, 0, 0.5); }
63
+ /* A measurement, in the app's 3D viewer's colours: amber points and segments, each length on a dark label. */
64
+ .measure-point {
65
+ position: absolute; left: 0; top: 0; width: 12px; height: 12px; box-sizing: border-box; display: none;
66
+ border: 2px solid #fff; border-radius: 50%; background: #FFB103; pointer-events: none; z-index: 1000002;
67
+ }
68
+ #stems line.measure { stroke: #FFB103; stroke-width: 3; filter: none; }
69
+ #stems line.measure.rubber { stroke-opacity: 0.6; }
70
+ .measure-label {
71
+ position: absolute; left: 0; top: 0; display: none; padding: 3px 8px; border-radius: 9px;
72
+ background: rgba(0, 0, 0, 0.78); color: #fff; font: bold 13px/18px sans-serif; white-space: nowrap;
73
+ pointer-events: none; z-index: 1000003;
74
+ }
75
+ .measure-label.rubber { opacity: 0.85; }
76
+ .tag.ghost.measure-ghost .disc { left: -6px; top: -6px; width: 12px; height: 12px; box-sizing: border-box; background: #FFB103; border-color: #fff; }
77
+ .tag.ghost.pin-ghost .disc {
78
+ left: -12px; top: -12px; width: 24px; height: 24px; box-sizing: border-box;
79
+ background: #1E9E5A; border-color: #fff; color: #fff; font: bold 13px/20px sans-serif; text-align: center;
80
+ }
81
+ @keyframes pointed { 50% { box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.6); } }
82
+ </style>
83
+ </head>
84
+ <body>
85
+ <div id="viewer"></div>
86
+ <div id="tags"><svg id="stems"></svg></div>
87
+ <div id="placing"></div>
88
+ <script type="module" src="viewer-W4X3FWQJ.js"></script>
89
+ </body>
90
+ </html>