@smarterplan/ngx-smarterplan-core 1.4.13 → 1.4.15
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.
- package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +26 -7
- package/esm2022/lib/services/matterport-tag-copy.service.mjs +1230 -201
- package/esm2022/lib/services/models/comment.service.mjs +35 -1
- package/esm2022/lib/services/models/domain.service.mjs +20 -1
- package/esm2022/lib/services/models/equipment.service.mjs +7 -3
- package/esm2022/lib/services/models/feature.service.mjs +20 -1
- package/esm2022/lib/services/models/hashtag.service.mjs +29 -2
- package/esm2022/lib/services/models/mission.service.mjs +17 -1
- package/esm2022/lib/services/s3.service.mjs +29 -1
- package/esm2022/lib/services/utils/matterport-transform.util.mjs +29 -3
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +1503 -287
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/pipes/hashtag-from-id.pipe.d.ts +9 -0
- package/lib/services/matterport-tag-copy.service.d.ts +320 -19
- package/lib/services/models/comment.service.d.ts +16 -0
- package/lib/services/models/domain.service.d.ts +8 -0
- package/lib/services/models/equipment.service.d.ts +4 -1
- package/lib/services/models/feature.service.d.ts +5 -0
- package/lib/services/models/hashtag.service.d.ts +6 -0
- package/lib/services/models/mission.service.d.ts +5 -0
- package/lib/services/s3.service.d.ts +14 -0
- package/lib/services/utils/matterport-transform.util.d.ts +16 -1
- package/package.json +1 -1
|
@@ -26,14 +26,40 @@ export function applyRigidTransformToPoint(p, t) {
|
|
|
26
26
|
z: t.refTarget.z + (dx * sin + dz * cos)
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Applies the Y rotation (in degrees) to an orientation angle (a pose's yRotation).
|
|
31
|
+
* A null/undefined/non-numeric angle is returned untouched: "no orientation stored"
|
|
32
|
+
* must stay "no orientation stored", not become the raw rotation delta.
|
|
33
|
+
*/
|
|
30
34
|
export function applyRigidTransformToYRotationDeg(yRotationDeg, t) {
|
|
35
|
+
if (yRotationDeg === null || yRotationDeg === undefined || Number.isNaN(Number(yRotationDeg))) {
|
|
36
|
+
return yRotationDeg;
|
|
37
|
+
}
|
|
31
38
|
const deltaDeg = t.rotationYRad * (180 / Math.PI);
|
|
32
|
-
return yRotationDeg + deltaDeg;
|
|
39
|
+
return Number(yRotationDeg) + deltaDeg;
|
|
33
40
|
}
|
|
34
41
|
/** Euclidean distance between two points, useful to validate landmark quality. */
|
|
35
42
|
export function distance(a, b) {
|
|
36
43
|
const dx = a.x - b.x, dy = a.y - b.y, dz = a.z - b.z;
|
|
37
44
|
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
38
45
|
}
|
|
39
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Applies ONLY the rotation part of the transform to a direction vector
|
|
48
|
+
* (a normal, a stem vector, ...).
|
|
49
|
+
*
|
|
50
|
+
* A direction has no origin, so the translation must NOT be applied to it —
|
|
51
|
+
* doing so would turn a unit normal into a point somewhere in the target model.
|
|
52
|
+
* Used for a POI's `metadata.normal`, which drives the orientation of the tag's
|
|
53
|
+
* stem: without this rotation, a pastille copied into a space whose model is
|
|
54
|
+
* rotated relative to the source ends up pointing into the wall it is stuck on.
|
|
55
|
+
*/
|
|
56
|
+
export function applyRigidTransformToDirection(v, t) {
|
|
57
|
+
const cos = Math.cos(t.rotationYRad);
|
|
58
|
+
const sin = Math.sin(t.rotationYRad);
|
|
59
|
+
return {
|
|
60
|
+
x: v.x * cos - v.z * sin,
|
|
61
|
+
y: v.y, // vertical axis is not rotated
|
|
62
|
+
z: v.x * sin + v.z * cos
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvdXRpbHMvbWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFVL0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxPQUFhLEVBQUUsT0FBYSxFQUM1QixPQUFhLEVBQUUsT0FBYTtJQUU1QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXJELE9BQU87UUFDSCxZQUFZLEVBQUUsV0FBVyxHQUFHLFdBQVc7UUFDdkMsU0FBUyxFQUFFLE9BQU87UUFDbEIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNqRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFckMsT0FBTztRQUNILENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsK0JBQStCO1FBQ3pFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUMzQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsWUFBb0IsRUFBRSxDQUFpQjtJQUNyRixJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUYsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUMzQyxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBQ0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLDhCQUE4QixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVyQyxPQUFPO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztRQUN4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSwrQkFBK0I7UUFDdkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztLQUMzQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIG1hdHRlcnBvcnQtdHJhbnNmb3JtLnV0aWwudHNcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmVjMyB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmlnaWRUcmFuc2Zvcm0ge1xyXG4gICAgcm90YXRpb25ZUmFkOiBudW1iZXI7ICAgLy8gcm90YXRpb24gYXJvdW5kIHRoZSB2ZXJ0aWNhbCAoWSkgYXhpcywgaW4gcmFkaWFuc1xyXG4gICAgcmVmU291cmNlOiBWZWMzOyAgICAgICAgLy8gbGFuZG1hcmsgQSBwb3NpdGlvbiwgaW4gU09VUkNFIG1vZGVsIGNvb3JkaW5hdGVzXHJcbiAgICByZWZUYXJnZXQ6IFZlYzM7ICAgICAgICAvLyBsYW5kbWFyayBBIHBvc2l0aW9uLCBpbiBUQVJHRVQgbW9kZWwgY29vcmRpbmF0ZXNcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXB1dGVzIHRoZSByaWdpZCB0cmFuc2Zvcm0gKFktYXhpcyByb3RhdGlvbiArIHRyYW5zbGF0aW9uKSBiZXR3ZWVuIHR3b1xyXG4gKiBjb29yZGluYXRlIGZyYW1lcywgZnJvbSAyIHBhaXJzIG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIHNhbWUgcGh5c2ljYWwgc3BvdC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUmlnaWRUcmFuc2Zvcm0oXHJcbiAgICBzb3VyY2VBOiBWZWMzLCB0YXJnZXRBOiBWZWMzLFxyXG4gICAgc291cmNlQjogVmVjMywgdGFyZ2V0QjogVmVjM1xyXG4pOiBSaWdpZFRyYW5zZm9ybSB7XHJcbiAgICBjb25zdCB2U291cmNlID0geyB4OiBzb3VyY2VCLnggLSBzb3VyY2VBLngsIHo6IHNvdXJjZUIueiAtIHNvdXJjZUEueiB9O1xyXG4gICAgY29uc3QgdlRhcmdldCA9IHsgeDogdGFyZ2V0Qi54IC0gdGFyZ2V0QS54LCB6OiB0YXJnZXRCLnogLSB0YXJnZXRBLnogfTtcclxuXHJcbiAgICBjb25zdCBhbmdsZVNvdXJjZSA9IE1hdGguYXRhbjIodlNvdXJjZS56LCB2U291cmNlLngpO1xyXG4gICAgY29uc3QgYW5nbGVUYXJnZXQgPSBNYXRoLmF0YW4yKHZUYXJnZXQueiwgdlRhcmdldC54KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJvdGF0aW9uWVJhZDogYW5nbGVUYXJnZXQgLSBhbmdsZVNvdXJjZSxcclxuICAgICAgICByZWZTb3VyY2U6IHNvdXJjZUEsXHJcbiAgICAgICAgcmVmVGFyZ2V0OiB0YXJnZXRBXHJcbiAgICB9O1xyXG59XHJcblxyXG4vKiogQXBwbGllcyB0aGUgcmlnaWQgdHJhbnNmb3JtIHRvIGEgM0QgcG9zaXRpb24gKHgsIHksIHopLiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSaWdpZFRyYW5zZm9ybVRvUG9pbnQocDogVmVjMywgdDogUmlnaWRUcmFuc2Zvcm0pOiBWZWMzIHtcclxuICAgIGNvbnN0IGR4ID0gcC54IC0gdC5yZWZTb3VyY2UueDtcclxuICAgIGNvbnN0IGR6ID0gcC56IC0gdC5yZWZTb3VyY2UuejtcclxuICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKHQucm90YXRpb25ZUmFkKTtcclxuICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKHQucm90YXRpb25ZUmFkKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHg6IHQucmVmVGFyZ2V0LnggKyAoZHggKiBjb3MgLSBkeiAqIHNpbiksXHJcbiAgICAgICAgeTogdC5yZWZUYXJnZXQueSArIChwLnkgLSB0LnJlZlNvdXJjZS55KSwgLy8gdmVydGljYWwgYXhpcyBpcyBub3Qgcm90YXRlZFxyXG4gICAgICAgIHo6IHQucmVmVGFyZ2V0LnogKyAoZHggKiBzaW4gKyBkeiAqIGNvcylcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIHRoZSBZIHJvdGF0aW9uIChpbiBkZWdyZWVzKSB0byBhbiBvcmllbnRhdGlvbiBhbmdsZSAoYSBwb3NlJ3MgeVJvdGF0aW9uKS5cclxuICogQSBudWxsL3VuZGVmaW5lZC9ub24tbnVtZXJpYyBhbmdsZSBpcyByZXR1cm5lZCB1bnRvdWNoZWQ6IFwibm8gb3JpZW50YXRpb24gc3RvcmVkXCJcclxuICogbXVzdCBzdGF5IFwibm8gb3JpZW50YXRpb24gc3RvcmVkXCIsIG5vdCBiZWNvbWUgdGhlIHJhdyByb3RhdGlvbiBkZWx0YS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJpZ2lkVHJhbnNmb3JtVG9ZUm90YXRpb25EZWcoeVJvdGF0aW9uRGVnOiBudW1iZXIsIHQ6IFJpZ2lkVHJhbnNmb3JtKTogbnVtYmVyIHtcclxuICAgIGlmICh5Um90YXRpb25EZWcgPT09IG51bGwgfHwgeVJvdGF0aW9uRGVnID09PSB1bmRlZmluZWQgfHwgTnVtYmVyLmlzTmFOKE51bWJlcih5Um90YXRpb25EZWcpKSkge1xyXG4gICAgICAgIHJldHVybiB5Um90YXRpb25EZWc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkZWx0YURlZyA9IHQucm90YXRpb25ZUmFkICogKDE4MCAvIE1hdGguUEkpO1xyXG4gICAgcmV0dXJuIE51bWJlcih5Um90YXRpb25EZWcpICsgZGVsdGFEZWc7XHJcbn1cclxuXHJcbi8qKiBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzLCB1c2VmdWwgdG8gdmFsaWRhdGUgbGFuZG1hcmsgcXVhbGl0eS4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKGE6IFZlYzMsIGI6IFZlYzMpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZHggPSBhLnggLSBiLngsIGR5ID0gYS55IC0gYi55LCBkeiA9IGEueiAtIGIuejtcclxuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6KTtcclxufVxyXG4vKipcclxuICogQXBwbGllcyBPTkxZIHRoZSByb3RhdGlvbiBwYXJ0IG9mIHRoZSB0cmFuc2Zvcm0gdG8gYSBkaXJlY3Rpb24gdmVjdG9yXHJcbiAqIChhIG5vcm1hbCwgYSBzdGVtIHZlY3RvciwgLi4uKS5cclxuICpcclxuICogQSBkaXJlY3Rpb24gaGFzIG5vIG9yaWdpbiwgc28gdGhlIHRyYW5zbGF0aW9uIG11c3QgTk9UIGJlIGFwcGxpZWQgdG8gaXQg4oCUXHJcbiAqIGRvaW5nIHNvIHdvdWxkIHR1cm4gYSB1bml0IG5vcm1hbCBpbnRvIGEgcG9pbnQgc29tZXdoZXJlIGluIHRoZSB0YXJnZXQgbW9kZWwuXHJcbiAqIFVzZWQgZm9yIGEgUE9JJ3MgYG1ldGFkYXRhLm5vcm1hbGAsIHdoaWNoIGRyaXZlcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHRhZydzXHJcbiAqIHN0ZW06IHdpdGhvdXQgdGhpcyByb3RhdGlvbiwgYSBwYXN0aWxsZSBjb3BpZWQgaW50byBhIHNwYWNlIHdob3NlIG1vZGVsIGlzXHJcbiAqIHJvdGF0ZWQgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBlbmRzIHVwIHBvaW50aW5nIGludG8gdGhlIHdhbGwgaXQgaXMgc3R1Y2sgb24uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSaWdpZFRyYW5zZm9ybVRvRGlyZWN0aW9uKHY6IFZlYzMsIHQ6IFJpZ2lkVHJhbnNmb3JtKTogVmVjMyB7XHJcbiAgICBjb25zdCBjb3MgPSBNYXRoLmNvcyh0LnJvdGF0aW9uWVJhZCk7XHJcbiAgICBjb25zdCBzaW4gPSBNYXRoLnNpbih0LnJvdGF0aW9uWVJhZCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB4OiB2LnggKiBjb3MgLSB2LnogKiBzaW4sXHJcbiAgICAgICAgeTogdi55LCAvLyB2ZXJ0aWNhbCBheGlzIGlzIG5vdCByb3RhdGVkXHJcbiAgICAgICAgejogdi54ICogc2luICsgdi56ICogY29zXHJcbiAgICB9O1xyXG59XHJcbiJdfQ==
|