angular-three-soba 2.3.0 → 2.3.2
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.
|
@@ -111,8 +111,8 @@ export class FaceCube {
|
|
|
111
111
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FaceCube, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
112
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: FaceCube, isStandalone: true, selector: "viewcube-face-cube", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, onClick: { classPropertyName: "onClick", publicName: "onClick", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
113
113
|
<ngt-mesh
|
|
114
|
-
(pointerout)="$event.stopPropagation(); hover.set(-1)"
|
|
115
|
-
(pointermove)="$event.stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
114
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(-1)"
|
|
115
|
+
(pointermove)="$any($event).stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
116
116
|
(click)="internalOnClick($any($event))"
|
|
117
117
|
>
|
|
118
118
|
<ngt-box-geometry />
|
|
@@ -129,8 +129,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
129
129
|
standalone: true,
|
|
130
130
|
template: `
|
|
131
131
|
<ngt-mesh
|
|
132
|
-
(pointerout)="$event.stopPropagation(); hover.set(-1)"
|
|
133
|
-
(pointermove)="$event.stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
132
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(-1)"
|
|
133
|
+
(pointermove)="$any($event).stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
134
134
|
(click)="internalOnClick($any($event))"
|
|
135
135
|
>
|
|
136
136
|
<ngt-box-geometry />
|
|
@@ -175,8 +175,8 @@ export class EdgeCube {
|
|
|
175
175
|
<ngt-mesh
|
|
176
176
|
[scale]="1.01"
|
|
177
177
|
[position]="position()"
|
|
178
|
-
(pointerout)="$event.stopPropagation(); hover.set(false)"
|
|
179
|
-
(pointerover)="$event.stopPropagation(); hover.set(true)"
|
|
178
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(false)"
|
|
179
|
+
(pointerover)="$any($event).stopPropagation(); hover.set(true)"
|
|
180
180
|
(click)="internalOnClick($any($event))"
|
|
181
181
|
>
|
|
182
182
|
<ngt-mesh-basic-material [transparent]="true" [opacity]="0.6" [color]="color()" [visible]="hover()" />
|
|
@@ -193,8 +193,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
193
193
|
<ngt-mesh
|
|
194
194
|
[scale]="1.01"
|
|
195
195
|
[position]="position()"
|
|
196
|
-
(pointerout)="$event.stopPropagation(); hover.set(false)"
|
|
197
|
-
(pointerover)="$event.stopPropagation(); hover.set(true)"
|
|
196
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(false)"
|
|
197
|
+
(pointerover)="$any($event).stopPropagation(); hover.set(true)"
|
|
198
198
|
(click)="internalOnClick($any($event))"
|
|
199
199
|
>
|
|
200
200
|
<ngt-mesh-basic-material [transparent]="true" [opacity]="0.6" [color]="color()" [visible]="hover()" />
|
|
@@ -301,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
301
301
|
imports: [FaceCube, EdgeCube],
|
|
302
302
|
}]
|
|
303
303
|
}], ctorParameters: () => [] });
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8tdmlld2N1YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvZ2l6bW8taGVscGVyL2dpem1vLXZpZXdjdWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsV0FBVyxFQUNYLE9BQU8sRUFHUCxJQUFJLEdBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJakQsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBWXpFLE1BQU0sMEJBQTBCLEdBQWtCO0lBQ2pELElBQUksRUFBRSxtQ0FBbUM7SUFDekMsS0FBSyxFQUFFLFlBQVk7SUFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFO0lBQ2hCLFVBQVUsRUFBRSxNQUFNLENBQUMsS0FBSztJQUN4QixTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUk7SUFDdEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxNQUFNO0lBQzFCLE9BQU8sRUFBRSxDQUFDO0NBQ1YsQ0FBQztBQWlCRixNQUFNLE9BQU8sWUFBWTtJQWlEeEI7UUFoREEsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUNsQyxVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVGLFVBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwQyxTQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEMsVUFBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5QyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFVBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUN0QixPQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsWUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDN0UsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHO2dCQUMvRCxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNaLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDWCxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNaLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxFQUFFLEVBQUU7YUFDVCxDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDbkIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFFcEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUUsQ0FBQztZQUN6QyxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsT0FBTyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDbEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzdCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFN0QsT0FBTyxPQUFPLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFHRixNQUFNLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQzs4R0FuRFcsWUFBWTtrR0FBWixZQUFZLDBjQVpkOzs7Ozs7OztFQVFUOzsyRkFJVyxZQUFZO2tCQWZ4QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7O0VBUVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQzs7QUEwRUQsTUFBTSxPQUFPLFFBQVE7SUFTcEI7UUFSQSxZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQTRCLENBQUMsQ0FBQztRQUM5QyxZQUFPLEdBQUcsS0FBSyxFQUE2QixDQUFDO1FBRXJDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBDLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixVQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBZXpCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFaOUIsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFnQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZCLENBQUM7WUFDTCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0YsQ0FBQzs4R0FwQlcsUUFBUTtrR0FBUixRQUFRLHNWQWhCVjs7Ozs7Ozs7Ozs7RUFXVCw0REFwRVcsWUFBWTs7MkZBeUVaLFFBQVE7a0JBbkJwQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0VBV1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3ZCOztBQTZDRCxNQUFNLE9BQU8sUUFBUTtJQWdCcEI7UUFmQSxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFDckMsZUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ2hDLFNBQVMsRUFBRSxDQUFDLEtBQXlCLEVBQUUsRUFBRTtnQkFDeEMsSUFBSSxLQUFLLEtBQUssU0FBUztvQkFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQzdDLE9BQU8sS0FBSyxDQUFDO1lBQ2QsQ0FBQztTQUNELENBQUMsQ0FBQztRQUNILFlBQU8sR0FBRyxLQUFLLEVBQTZCLENBQUM7UUFFckMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFcEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFHOUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFnQztRQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxPQUFPO1lBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZCLENBQUM7WUFDTCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNGLENBQUM7OEdBM0JXLFFBQVE7a0dBQVIsUUFBUSxxbUJBaEJWOzs7Ozs7Ozs7OztFQVdULDREQUdTLE9BQU87OzJGQUVMLFFBQVE7a0JBbkJwQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0VBV1Q7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCOztBQTZERCxNQUFNLE9BQU8saUJBQWlCO0lBbUM3QjtRQWxDQSxZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQThCLENBQUMsQ0FBQztRQUNoRCxVQUFLLEdBQUcsTUFBTSxFQUE2QixDQUFDO1FBRWxDLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5QyxZQUFPLEdBQWM7WUFDOUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDWixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyQixxQkFBZ0IsR0FBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsVUFBSyxHQUFjO1lBQzVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNYLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ3hDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQVEsQ0FDdkYsQ0FBQztRQUdELE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQWMsT0FBTztRQUNwQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxHQUFhO1FBQ3ZDLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQzs4R0E5Q1csaUJBQWlCO2tHQUFqQixpQkFBaUIsc1BBekJuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvQlQsNERBbkdXLFFBQVEsK0ZBNENSLFFBQVE7OzJGQTREUixpQkFBaUI7a0JBNUI3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHRzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRnZXRFbWl0dGVyLFxuXHRoYXNMaXN0ZW5lcixcblx0aW5qZWN0U3RvcmUsXG5cdE5ndEFyZ3MsXG5cdE5ndEV2ZW50SGFuZGxlcnMsXG5cdE5ndFRocmVlRXZlbnQsXG5cdHBpY2ssXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94R2VvbWV0cnksIENhbnZhc1RleHR1cmUsIEdyb3VwLCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNHaXptb0hlbHBlciB9IGZyb20gJy4vZ2l6bW8taGVscGVyJztcblxudHlwZSBYWVogPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IGNvbG9ycyA9IHsgYmc6ICcjZjBmMGYwJywgaG92ZXI6ICcjOTk5JywgdGV4dDogJ2JsYWNrJywgc3Ryb2tlOiAnYmxhY2snIH07XG5jb25zdCBkZWZhdWx0RmFjZXMgPSBbJ1JpZ2h0JywgJ0xlZnQnLCAnVG9wJywgJ0JvdHRvbScsICdGcm9udCcsICdCYWNrJ107XG5cbmludGVyZmFjZSBDb21tb25PcHRpb25zIHtcblx0Zm9udDogc3RyaW5nO1xuXHRvcGFjaXR5OiBudW1iZXI7XG5cdGNvbG9yOiBzdHJpbmc7XG5cdGhvdmVyQ29sb3I6IHN0cmluZztcblx0dGV4dENvbG9yOiBzdHJpbmc7XG5cdHN0cm9rZUNvbG9yOiBzdHJpbmc7XG5cdGZhY2VzOiBzdHJpbmdbXTtcbn1cblxuY29uc3QgZGVmYXVsdEZhY2VNYXRlcmlhbE9wdGlvbnM6IENvbW1vbk9wdGlvbnMgPSB7XG5cdGZvbnQ6ICcyMHB4IEludGVyIHZhciwgQXJpYWwsIHNhbnMtc2VyaWYnLFxuXHRmYWNlczogZGVmYXVsdEZhY2VzLFxuXHRjb2xvcjogY29sb3JzLmJnLFxuXHRob3ZlckNvbG9yOiBjb2xvcnMuaG92ZXIsXG5cdHRleHRDb2xvcjogY29sb3JzLnRleHQsXG5cdHN0cm9rZUNvbG9yOiBjb2xvcnMuc3Ryb2tlLFxuXHRvcGFjaXR5OiAxLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAndmlld2N1YmUtZmFjZS1tYXRlcmlhbCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoLWJhc2ljLW1hdGVyaWFsXG5cdFx0XHRbYXR0YWNoXT1cIlsnbWF0ZXJpYWwnLCBpbmRleCgpXVwiXG5cdFx0XHRbbWFwXT1cInRleHR1cmUoKVwiXG5cdFx0XHRbY29sb3JdPVwibWF0ZXJpYWxDb2xvcigpXCJcblx0XHRcdFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcblx0XHRcdFtvcGFjaXR5XT1cIm9wYWNpdHkoKVwiXG5cdFx0Lz5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRmFjZU1hdGVyaWFsIHtcblx0aG92ZXIgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXHRpbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRGYWNlTWF0ZXJpYWxPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdEZhY2VNYXRlcmlhbE9wdGlvbnMpIH0pO1xuXG5cdHByaXZhdGUgZmFjZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZhY2VzJyk7XG5cdHByaXZhdGUgZm9udCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZm9udCcpO1xuXHRwcml2YXRlIGNvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvcicpO1xuXHRwcml2YXRlIHRleHRDb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAndGV4dENvbG9yJyk7XG5cdHByaXZhdGUgc3Ryb2tlQ29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3N0cm9rZUNvbG9yJyk7XG5cdHByaXZhdGUgaG92ZXJDb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnaG92ZXJDb2xvcicpO1xuXG5cdHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBnbCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpO1xuXG5cdHByb3RlY3RlZCBvcGFjaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdvcGFjaXR5Jyk7XG5cdHByb3RlY3RlZCBtYXRlcmlhbENvbG9yID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaG92ZXIoKSA/IHRoaXMuaG92ZXJDb2xvcigpIDogJ3doaXRlJykpO1xuXHRwcm90ZWN0ZWQgdGV4dHVyZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbaW5kZXgsIGZhY2VzLCBmb250LCBjb2xvciwgdGV4dENvbG9yLCBzdHJva2VDb2xvciwgZ2xdID0gW1xuXHRcdFx0dGhpcy5pbmRleCgpLFxuXHRcdFx0dGhpcy5mYWNlcygpLFxuXHRcdFx0dGhpcy5mb250KCksXG5cdFx0XHR0aGlzLmNvbG9yKCksXG5cdFx0XHR0aGlzLnRleHRDb2xvcigpLFxuXHRcdFx0dGhpcy5zdHJva2VDb2xvcigpLFxuXHRcdFx0dGhpcy5nbCgpLFxuXHRcdF07XG5cblx0XHRjb25zdCBjYW52YXMgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuXHRcdGNhbnZhcy53aWR0aCA9IDEyODtcblx0XHRjYW52YXMuaGVpZ2h0ID0gMTI4O1xuXG5cdFx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcblx0XHRjb250ZXh0LmZpbGxTdHlsZSA9IGNvbG9yO1xuXHRcdGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcblx0XHRjb250ZXh0LnN0cm9rZVN0eWxlID0gc3Ryb2tlQ29sb3I7XG5cdFx0Y29udGV4dC5zdHJva2VSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cdFx0Y29udGV4dC5mb250ID0gZm9udDtcblx0XHRjb250ZXh0LnRleHRBbGlnbiA9ICdjZW50ZXInO1xuXHRcdGNvbnRleHQuZmlsbFN0eWxlID0gdGV4dENvbG9yO1xuXHRcdGNvbnRleHQuZmlsbFRleHQoZmFjZXNbaW5kZXhdLnRvVXBwZXJDYXNlKCksIDY0LCA3Nik7XG5cblx0XHRjb25zdCB0ZXh0dXJlID0gbmV3IENhbnZhc1RleHR1cmUoY2FudmFzKTtcblx0XHR0ZXh0dXJlLmFuaXNvdHJvcHkgPSBnbC5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpIHx8IDE7XG5cblx0XHRyZXR1cm4gdGV4dHVyZTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTWVzaEJhc2ljTWF0ZXJpYWwgfSk7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAndmlld2N1YmUtZmFjZS1jdWJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2hcblx0XHRcdChwb2ludGVyb3V0KT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaG92ZXIuc2V0KC0xKVwiXG5cdFx0XHQocG9pbnRlcm1vdmUpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBob3Zlci5zZXQoTWF0aC5mbG9vcigkYW55KCRldmVudCkuZmFjZUluZGV4IC8gMikpXCJcblx0XHRcdChjbGljayk9XCJpbnRlcm5hbE9uQ2xpY2soJGFueSgkZXZlbnQpKVwiXG5cdFx0PlxuXHRcdFx0PG5ndC1ib3gtZ2VvbWV0cnkgLz5cblx0XHRcdEBmb3IgKGZhY2Ugb2YgY291bnQ7IHRyYWNrICRpbmRleCkge1xuXHRcdFx0XHQ8dmlld2N1YmUtZmFjZS1tYXRlcmlhbCBbaW5kZXhdPVwiJGluZGV4XCIgW2hvdmVyXT1cImhvdmVyKCkgPT09ICRpbmRleFwiIFtvcHRpb25zXT1cIm9wdGlvbnMoKVwiIC8+XG5cdFx0XHR9XG5cdFx0PC9uZ3QtbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW0ZhY2VNYXRlcmlhbF0sXG59KVxuZXhwb3J0IGNsYXNzIEZhY2VDdWJlIHtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIFBhcnRpYWw8Q29tbW9uT3B0aW9ucz4pO1xuXHRvbkNsaWNrID0gaW5wdXQ8Tmd0RXZlbnRIYW5kbGVyc1snY2xpY2snXT4oKTtcblxuXHRwcml2YXRlIGdpem1vSGVscGVyID0gaW5qZWN0KE5ndHNHaXptb0hlbHBlcik7XG5cblx0cHJvdGVjdGVkIGhvdmVyID0gc2lnbmFsKC0xKTtcblx0cHJvdGVjdGVkIGNvdW50ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogNiB9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoLCBCb3hHZW9tZXRyeSB9KTtcblx0fVxuXG5cdGludGVybmFsT25DbGljayhldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pikge1xuXHRcdGNvbnN0IG9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2soKTtcblx0XHRpZiAob25DbGljaykgb25DbGljayhldmVudCk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdHRoaXMuZ2l6bW9IZWxwZXIudHdlZW5DYW1lcmEoZXZlbnQuZmFjZSEubm9ybWFsKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgTWF0aCA9IE1hdGg7XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3ZpZXdjdWJlLWVkZ2UtY3ViZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoXG5cdFx0XHRbc2NhbGVdPVwiMS4wMVwiXG5cdFx0XHRbcG9zaXRpb25dPVwicG9zaXRpb24oKVwiXG5cdFx0XHQocG9pbnRlcm91dCk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGhvdmVyLnNldChmYWxzZSlcIlxuXHRcdFx0KHBvaW50ZXJvdmVyKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaG92ZXIuc2V0KHRydWUpXCJcblx0XHRcdChjbGljayk9XCJpbnRlcm5hbE9uQ2xpY2soJGFueSgkZXZlbnQpKVwiXG5cdFx0PlxuXHRcdFx0PG5ndC1tZXNoLWJhc2ljLW1hdGVyaWFsIFt0cmFuc3BhcmVudF09XCJ0cnVlXCIgW29wYWNpdHldPVwiMC42XCIgW2NvbG9yXT1cImNvbG9yKClcIiBbdmlzaWJsZV09XCJob3ZlcigpXCIgLz5cblx0XHRcdDxuZ3QtYm94LWdlb21ldHJ5ICphcmdzPVwiZGltZW5zaW9ucygpXCIgLz5cblx0XHQ8L25ndC1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIEVkZ2VDdWJlIHtcblx0ZGltZW5zaW9ucyA9IGlucHV0LnJlcXVpcmVkPFhZWj4oKTtcblx0cG9zaXRpb24gPSBpbnB1dC5yZXF1aXJlZDxWZWN0b3IzPigpO1xuXHRob3ZlckNvbG9yID0gaW5wdXQoY29sb3JzLmhvdmVyLCB7XG5cdFx0dHJhbnNmb3JtOiAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBjb2xvcnMuaG92ZXI7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdG9uQ2xpY2sgPSBpbnB1dDxOZ3RFdmVudEhhbmRsZXJzWydjbGljayddPigpO1xuXG5cdHByaXZhdGUgZ2l6bW9IZWxwZXIgPSBpbmplY3QoTmd0c0dpem1vSGVscGVyKTtcblxuXHRwcm90ZWN0ZWQgaG92ZXIgPSBzaWduYWwoZmFsc2UpO1xuXHRwcm90ZWN0ZWQgY29sb3IgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5ob3ZlcigpID8gdGhpcy5ob3ZlckNvbG9yKCkgOiAnd2hpdGUnKSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTWVzaCwgQm94R2VvbWV0cnksIE1lc2hCYXNpY01hdGVyaWFsIH0pO1xuXHR9XG5cblx0aW50ZXJuYWxPbkNsaWNrKGV2ZW50OiBOZ3RUaHJlZUV2ZW50PE1vdXNlRXZlbnQ+KSB7XG5cdFx0Y29uc3Qgb25DbGljayA9IHRoaXMub25DbGljaygpO1xuXHRcdGlmIChvbkNsaWNrKSBvbkNsaWNrKGV2ZW50KTtcblx0XHRlbHNlIHtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0dGhpcy5naXptb0hlbHBlci50d2VlbkNhbWVyYSh0aGlzLnBvc2l0aW9uKCkpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgdHlwZSBOZ3RzR2l6bW9WaWV3Y3ViZU9wdGlvbnMgPSBQYXJ0aWFsPENvbW1vbk9wdGlvbnM+O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWdpem1vLXZpZXdjdWJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWdyb3VwIFtzY2FsZV09XCI2MFwiPlxuXHRcdFx0PHZpZXdjdWJlLWZhY2UtY3ViZSBbb3B0aW9uc109XCJvcHRpb25zKClcIiBbb25DbGlja109XCJvbkNsaWNrXCIgLz5cblx0XHRcdEBmb3IgKGVkZ2Ugb2YgZWRnZXM7IHRyYWNrICRpbmRleCkge1xuXHRcdFx0XHQ8dmlld2N1YmUtZWRnZS1jdWJlXG5cdFx0XHRcdFx0W3Bvc2l0aW9uXT1cImVkZ2VcIlxuXHRcdFx0XHRcdFtkaW1lbnNpb25zXT1cImVkZ2VEaW1lbnNpb25zWyRpbmRleF1cIlxuXHRcdFx0XHRcdFtvbkNsaWNrXT1cIm9uQ2xpY2tcIlxuXHRcdFx0XHRcdFtob3ZlckNvbG9yXT1cImhvdmVyQ29sb3IoKVwiXG5cdFx0XHRcdC8+XG5cdFx0XHR9XG5cdFx0XHRAZm9yIChjb3JuZXIgb2YgY29ybmVyczsgdHJhY2sgJGluZGV4KSB7XG5cdFx0XHRcdDx2aWV3Y3ViZS1lZGdlLWN1YmVcblx0XHRcdFx0XHRbcG9zaXRpb25dPVwiY29ybmVyXCJcblx0XHRcdFx0XHRbZGltZW5zaW9uc109XCJjb3JuZXJEaW1lbnNpb25zXCJcblx0XHRcdFx0XHRbb25DbGlja109XCJvbkNsaWNrXCJcblx0XHRcdFx0XHRbaG92ZXJDb2xvcl09XCJob3ZlckNvbG9yKClcIlxuXHRcdFx0XHQvPlxuXHRcdFx0fVxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbRmFjZUN1YmUsIEVkZ2VDdWJlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0dpem1vVmlld2N1YmUge1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgTmd0c0dpem1vVmlld2N1YmVPcHRpb25zKTtcblx0Y2xpY2sgPSBvdXRwdXQ8Tmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pj4oKTtcblxuXHRwcm90ZWN0ZWQgaG92ZXJDb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnaG92ZXJDb2xvcicpO1xuXG5cdHByb3RlY3RlZCBjb3JuZXJzOiBWZWN0b3IzW10gPSBbXG5cdFx0WzEsIDEsIDFdLFxuXHRcdFsxLCAxLCAtMV0sXG5cdFx0WzEsIC0xLCAxXSxcblx0XHRbMSwgLTEsIC0xXSxcblx0XHRbLTEsIDEsIDFdLFxuXHRcdFstMSwgMSwgLTFdLFxuXHRcdFstMSwgLTEsIDFdLFxuXHRcdFstMSwgLTEsIC0xXSxcblx0XS5tYXAodGhpcy5tYWtlUG9zaXRpb25WZWN0b3IpO1xuXHRwcm90ZWN0ZWQgY29ybmVyRGltZW5zaW9uczogWFlaID0gWzAuMjUsIDAuMjUsIDAuMjVdO1xuXHRwcm90ZWN0ZWQgZWRnZXM6IFZlY3RvcjNbXSA9IFtcblx0XHRbMSwgMSwgMF0sXG5cdFx0WzEsIDAsIDFdLFxuXHRcdFsxLCAwLCAtMV0sXG5cdFx0WzEsIC0xLCAwXSxcblx0XHRbMCwgMSwgMV0sXG5cdFx0WzAsIDEsIC0xXSxcblx0XHRbMCwgLTEsIDFdLFxuXHRcdFswLCAtMSwgLTFdLFxuXHRcdFstMSwgMSwgMF0sXG5cdFx0Wy0xLCAwLCAxXSxcblx0XHRbLTEsIDAsIC0xXSxcblx0XHRbLTEsIC0xLCAwXSxcblx0XS5tYXAodGhpcy5tYWtlUG9zaXRpb25WZWN0b3IpO1xuXHRwcm90ZWN0ZWQgZWRnZURpbWVuc2lvbnMgPSB0aGlzLmVkZ2VzLm1hcChcblx0XHQoZWRnZSkgPT4gZWRnZS50b0FycmF5KCkubWFwKChheGlzOiBudW1iZXIpOiBudW1iZXIgPT4gKGF4aXMgPT0gMCA/IDAuNSA6IDAuMjUpKSBhcyBYWVosXG5cdCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgR3JvdXAgfSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZ2V0IG9uQ2xpY2soKSB7XG5cdFx0aWYgKGhhc0xpc3RlbmVyKHRoaXMuY2xpY2spKSByZXR1cm4gZ2V0RW1pdHRlcih0aGlzLmNsaWNrKTtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0cHJpdmF0ZSBtYWtlUG9zaXRpb25WZWN0b3IoeHl6OiBudW1iZXJbXSkge1xuXHRcdHJldHVybiBuZXcgVmVjdG9yMyguLi54eXopLm11bHRpcGx5U2NhbGFyKDAuMzgpO1xuXHR9XG59XG4iXX0=
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l6bW8tdmlld2N1YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvZ2l6bW8taGVscGVyL2dpem1vLXZpZXdjdWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsV0FBVyxFQUNYLE9BQU8sRUFHUCxJQUFJLEdBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJakQsTUFBTSxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBWXpFLE1BQU0sMEJBQTBCLEdBQThCO0lBQzdELElBQUksRUFBRSxtQ0FBbUM7SUFDekMsS0FBSyxFQUFFLFlBQVk7SUFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFF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aUI7a0JBNUI3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHRzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRnZXRFbWl0dGVyLFxuXHRoYXNMaXN0ZW5lcixcblx0aW5qZWN0U3RvcmUsXG5cdE5ndEFyZ3MsXG5cdE5ndEV2ZW50SGFuZGxlcnMsXG5cdE5ndFRocmVlRXZlbnQsXG5cdHBpY2ssXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94R2VvbWV0cnksIENhbnZhc1RleHR1cmUsIEdyb3VwLCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHNHaXptb0hlbHBlciB9IGZyb20gJy4vZ2l6bW8taGVscGVyJztcblxudHlwZSBYWVogPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbmNvbnN0IGNvbG9ycyA9IHsgYmc6ICcjZjBmMGYwJywgaG92ZXI6ICcjOTk5JywgdGV4dDogJ2JsYWNrJywgc3Ryb2tlOiAnYmxhY2snIH07XG5jb25zdCBkZWZhdWx0RmFjZXMgPSBbJ1JpZ2h0JywgJ0xlZnQnLCAnVG9wJywgJ0JvdHRvbScsICdGcm9udCcsICdCYWNrJ107XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c1ZpZXdjdWJlQ29tbW9uT3B0aW9ucyB7XG5cdGZvbnQ6IHN0cmluZztcblx0b3BhY2l0eTogbnVtYmVyO1xuXHRjb2xvcjogc3RyaW5nO1xuXHRob3ZlckNvbG9yOiBzdHJpbmc7XG5cdHRleHRDb2xvcjogc3RyaW5nO1xuXHRzdHJva2VDb2xvcjogc3RyaW5nO1xuXHRmYWNlczogc3RyaW5nW107XG59XG5cbmNvbnN0IGRlZmF1bHRGYWNlTWF0ZXJpYWxPcHRpb25zOiBOZ3RzVmlld2N1YmVDb21tb25PcHRpb25zID0ge1xuXHRmb250OiAnMjBweCBJbnRlciB2YXIsIEFyaWFsLCBzYW5zLXNlcmlmJyxcblx0ZmFjZXM6IGRlZmF1bHRGYWNlcyxcblx0Y29sb3I6IGNvbG9ycy5iZyxcblx0aG92ZXJDb2xvcjogY29sb3JzLmhvdmVyLFxuXHR0ZXh0Q29sb3I6IGNvbG9ycy50ZXh0LFxuXHRzdHJva2VDb2xvcjogY29sb3JzLnN0cm9rZSxcblx0b3BhY2l0eTogMSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3ZpZXdjdWJlLWZhY2UtbWF0ZXJpYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0W2F0dGFjaF09XCJbJ21hdGVyaWFsJywgaW5kZXgoKV1cIlxuXHRcdFx0W21hcF09XCJ0ZXh0dXJlKClcIlxuXHRcdFx0W2NvbG9yXT1cIm1hdGVyaWFsQ29sb3IoKVwiXG5cdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRbb3BhY2l0eV09XCJvcGFjaXR5KClcIlxuXHRcdC8+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZhY2VNYXRlcmlhbCB7XG5cdGhvdmVyID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcblx0aW5kZXggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0RmFjZU1hdGVyaWFsT3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRGYWNlTWF0ZXJpYWxPcHRpb25zKSB9KTtcblxuXHRwcml2YXRlIGZhY2VzID0gcGljayh0aGlzLm9wdGlvbnMsICdmYWNlcycpO1xuXHRwcml2YXRlIGZvbnQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZvbnQnKTtcblx0cHJpdmF0ZSBjb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29sb3InKTtcblx0cHJpdmF0ZSB0ZXh0Q29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3RleHRDb2xvcicpO1xuXHRwcml2YXRlIHN0cm9rZUNvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdzdHJva2VDb2xvcicpO1xuXHRwcml2YXRlIGhvdmVyQ29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2hvdmVyQ29sb3InKTtcblxuXHRwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgZ2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblxuXHRwcm90ZWN0ZWQgb3BhY2l0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnb3BhY2l0eScpO1xuXHRwcm90ZWN0ZWQgbWF0ZXJpYWxDb2xvciA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmhvdmVyKCkgPyB0aGlzLmhvdmVyQ29sb3IoKSA6ICd3aGl0ZScpKTtcblx0cHJvdGVjdGVkIHRleHR1cmUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2luZGV4LCBmYWNlcywgZm9udCwgY29sb3IsIHRleHRDb2xvciwgc3Ryb2tlQ29sb3IsIGdsXSA9IFtcblx0XHRcdHRoaXMuaW5kZXgoKSxcblx0XHRcdHRoaXMuZmFjZXMoKSxcblx0XHRcdHRoaXMuZm9udCgpLFxuXHRcdFx0dGhpcy5jb2xvcigpLFxuXHRcdFx0dGhpcy50ZXh0Q29sb3IoKSxcblx0XHRcdHRoaXMuc3Ryb2tlQ29sb3IoKSxcblx0XHRcdHRoaXMuZ2woKSxcblx0XHRdO1xuXG5cdFx0Y29uc3QgY2FudmFzID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcblx0XHRjYW52YXMud2lkdGggPSAxMjg7XG5cdFx0Y2FudmFzLmhlaWdodCA9IDEyODtcblxuXHRcdGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG5cdFx0Y29udGV4dC5maWxsU3R5bGUgPSBjb2xvcjtcblx0XHRjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XG5cdFx0Y29udGV4dC5zdHJva2VTdHlsZSA9IHN0cm9rZUNvbG9yO1xuXHRcdGNvbnRleHQuc3Ryb2tlUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXHRcdGNvbnRleHQuZm9udCA9IGZvbnQ7XG5cdFx0Y29udGV4dC50ZXh0QWxpZ24gPSAnY2VudGVyJztcblx0XHRjb250ZXh0LmZpbGxTdHlsZSA9IHRleHRDb2xvcjtcblx0XHRjb250ZXh0LmZpbGxUZXh0KGZhY2VzW2luZGV4XS50b1VwcGVyQ2FzZSgpLCA2NCwgNzYpO1xuXG5cdFx0Y29uc3QgdGV4dHVyZSA9IG5ldyBDYW52YXNUZXh0dXJlKGNhbnZhcyk7XG5cdFx0dGV4dHVyZS5hbmlzb3Ryb3B5ID0gZ2wuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKSB8fCAxO1xuXG5cdFx0cmV0dXJuIHRleHR1cmU7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE1lc2hCYXNpY01hdGVyaWFsIH0pO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ3ZpZXdjdWJlLWZhY2UtY3ViZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1tZXNoXG5cdFx0XHQocG9pbnRlcm91dCk9XCIkYW55KCRldmVudCkuc3RvcFByb3BhZ2F0aW9uKCk7IGhvdmVyLnNldCgtMSlcIlxuXHRcdFx0KHBvaW50ZXJtb3ZlKT1cIiRhbnkoJGV2ZW50KS5zdG9wUHJvcGFnYXRpb24oKTsgaG92ZXIuc2V0KE1hdGguZmxvb3IoJGFueSgkZXZlbnQpLmZhY2VJbmRleCAvIDIpKVwiXG5cdFx0XHQoY2xpY2spPVwiaW50ZXJuYWxPbkNsaWNrKCRhbnkoJGV2ZW50KSlcIlxuXHRcdD5cblx0XHRcdDxuZ3QtYm94LWdlb21ldHJ5IC8+XG5cdFx0XHRAZm9yIChmYWNlIG9mIGNvdW50OyB0cmFjayAkaW5kZXgpIHtcblx0XHRcdFx0PHZpZXdjdWJlLWZhY2UtbWF0ZXJpYWwgW2luZGV4XT1cIiRpbmRleFwiIFtob3Zlcl09XCJob3ZlcigpID09PSAkaW5kZXhcIiBbb3B0aW9uc109XCJvcHRpb25zKClcIiAvPlxuXHRcdFx0fVxuXHRcdDwvbmd0LW1lc2g+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtGYWNlTWF0ZXJpYWxdLFxufSlcbmV4cG9ydCBjbGFzcyBGYWNlQ3ViZSB7XG5cdG9wdGlvbnMgPSBpbnB1dCh7fSBhcyBQYXJ0aWFsPE5ndHNWaWV3Y3ViZUNvbW1vbk9wdGlvbnM+KTtcblx0b25DbGljayA9IGlucHV0PE5ndEV2ZW50SGFuZGxlcnNbJ2NsaWNrJ10+KCk7XG5cblx0cHJpdmF0ZSBnaXptb0hlbHBlciA9IGluamVjdChOZ3RzR2l6bW9IZWxwZXIpO1xuXG5cdHByb3RlY3RlZCBob3ZlciA9IHNpZ25hbCgtMSk7XG5cdHByb3RlY3RlZCBjb3VudCA9IEFycmF5LmZyb20oeyBsZW5ndGg6IDYgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTWVzaCwgQm94R2VvbWV0cnkgfSk7XG5cdH1cblxuXHRpbnRlcm5hbE9uQ2xpY2soZXZlbnQ6IE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4pIHtcblx0XHRjb25zdCBvbkNsaWNrID0gdGhpcy5vbkNsaWNrKCk7XG5cdFx0aWYgKG9uQ2xpY2spIG9uQ2xpY2soZXZlbnQpO1xuXHRcdGVsc2Uge1xuXHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHR0aGlzLmdpem1vSGVscGVyLnR3ZWVuQ2FtZXJhKGV2ZW50LmZhY2UhLm5vcm1hbCk7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIHJlYWRvbmx5IE1hdGggPSBNYXRoO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICd2aWV3Y3ViZS1lZGdlLWN1YmUnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaFxuXHRcdFx0W3NjYWxlXT1cIjEuMDFcIlxuXHRcdFx0W3Bvc2l0aW9uXT1cInBvc2l0aW9uKClcIlxuXHRcdFx0KHBvaW50ZXJvdXQpPVwiJGFueSgkZXZlbnQpLnN0b3BQcm9wYWdhdGlvbigpOyBob3Zlci5zZXQoZmFsc2UpXCJcblx0XHRcdChwb2ludGVyb3Zlcik9XCIkYW55KCRldmVudCkuc3RvcFByb3BhZ2F0aW9uKCk7IGhvdmVyLnNldCh0cnVlKVwiXG5cdFx0XHQoY2xpY2spPVwiaW50ZXJuYWxPbkNsaWNrKCRhbnkoJGV2ZW50KSlcIlxuXHRcdD5cblx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbCBbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiIFtvcGFjaXR5XT1cIjAuNlwiIFtjb2xvcl09XCJjb2xvcigpXCIgW3Zpc2libGVdPVwiaG92ZXIoKVwiIC8+XG5cdFx0XHQ8bmd0LWJveC1nZW9tZXRyeSAqYXJncz1cImRpbWVuc2lvbnMoKVwiIC8+XG5cdFx0PC9uZ3QtbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBFZGdlQ3ViZSB7XG5cdGRpbWVuc2lvbnMgPSBpbnB1dC5yZXF1aXJlZDxYWVo+KCk7XG5cdHBvc2l0aW9uID0gaW5wdXQucmVxdWlyZWQ8VmVjdG9yMz4oKTtcblx0aG92ZXJDb2xvciA9IGlucHV0KGNvbG9ycy5ob3Zlciwge1xuXHRcdHRyYW5zZm9ybTogKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcblx0XHRcdGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gY29sb3JzLmhvdmVyO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH0sXG5cdH0pO1xuXHRvbkNsaWNrID0gaW5wdXQ8Tmd0RXZlbnRIYW5kbGVyc1snY2xpY2snXT4oKTtcblxuXHRwcml2YXRlIGdpem1vSGVscGVyID0gaW5qZWN0KE5ndHNHaXptb0hlbHBlcik7XG5cblx0cHJvdGVjdGVkIGhvdmVyID0gc2lnbmFsKGZhbHNlKTtcblx0cHJvdGVjdGVkIGNvbG9yID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaG92ZXIoKSA/IHRoaXMuaG92ZXJDb2xvcigpIDogJ3doaXRlJykpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE1lc2gsIEJveEdlb21ldHJ5LCBNZXNoQmFzaWNNYXRlcmlhbCB9KTtcblx0fVxuXG5cdGludGVybmFsT25DbGljayhldmVudDogTmd0VGhyZWVFdmVudDxNb3VzZUV2ZW50Pikge1xuXHRcdGNvbnN0IG9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2soKTtcblx0XHRpZiAob25DbGljaykgb25DbGljayhldmVudCk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdHRoaXMuZ2l6bW9IZWxwZXIudHdlZW5DYW1lcmEodGhpcy5wb3NpdGlvbigpKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHR5cGUgTmd0c0dpem1vVmlld2N1YmVPcHRpb25zID0gUGFydGlhbDxOZ3RzVmlld2N1YmVDb21tb25PcHRpb25zPjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1naXptby12aWV3Y3ViZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCBbc2NhbGVdPVwiNjBcIj5cblx0XHRcdDx2aWV3Y3ViZS1mYWNlLWN1YmUgW29wdGlvbnNdPVwib3B0aW9ucygpXCIgW29uQ2xpY2tdPVwib25DbGlja1wiIC8+XG5cdFx0XHRAZm9yIChlZGdlIG9mIGVkZ2VzOyB0cmFjayAkaW5kZXgpIHtcblx0XHRcdFx0PHZpZXdjdWJlLWVkZ2UtY3ViZVxuXHRcdFx0XHRcdFtwb3NpdGlvbl09XCJlZGdlXCJcblx0XHRcdFx0XHRbZGltZW5zaW9uc109XCJlZGdlRGltZW5zaW9uc1skaW5kZXhdXCJcblx0XHRcdFx0XHRbb25DbGlja109XCJvbkNsaWNrXCJcblx0XHRcdFx0XHRbaG92ZXJDb2xvcl09XCJob3ZlckNvbG9yKClcIlxuXHRcdFx0XHQvPlxuXHRcdFx0fVxuXHRcdFx0QGZvciAoY29ybmVyIG9mIGNvcm5lcnM7IHRyYWNrICRpbmRleCkge1xuXHRcdFx0XHQ8dmlld2N1YmUtZWRnZS1jdWJlXG5cdFx0XHRcdFx0W3Bvc2l0aW9uXT1cImNvcm5lclwiXG5cdFx0XHRcdFx0W2RpbWVuc2lvbnNdPVwiY29ybmVyRGltZW5zaW9uc1wiXG5cdFx0XHRcdFx0W29uQ2xpY2tdPVwib25DbGlja1wiXG5cdFx0XHRcdFx0W2hvdmVyQ29sb3JdPVwiaG92ZXJDb2xvcigpXCJcblx0XHRcdFx0Lz5cblx0XHRcdH1cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW0ZhY2VDdWJlLCBFZGdlQ3ViZV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNHaXptb1ZpZXdjdWJlIHtcblx0b3B0aW9ucyA9IGlucHV0KHt9IGFzIFBhcnRpYWw8Tmd0c0dpem1vVmlld2N1YmVPcHRpb25zPik7XG5cdGNsaWNrID0gb3V0cHV0PE5ndFRocmVlRXZlbnQ8TW91c2VFdmVudD4+KCk7XG5cblx0cHJvdGVjdGVkIGhvdmVyQ29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2hvdmVyQ29sb3InKTtcblxuXHRwcm90ZWN0ZWQgY29ybmVyczogVmVjdG9yM1tdID0gW1xuXHRcdFsxLCAxLCAxXSxcblx0XHRbMSwgMSwgLTFdLFxuXHRcdFsxLCAtMSwgMV0sXG5cdFx0WzEsIC0xLCAtMV0sXG5cdFx0Wy0xLCAxLCAxXSxcblx0XHRbLTEsIDEsIC0xXSxcblx0XHRbLTEsIC0xLCAxXSxcblx0XHRbLTEsIC0xLCAtMV0sXG5cdF0ubWFwKHRoaXMubWFrZVBvc2l0aW9uVmVjdG9yKTtcblx0cHJvdGVjdGVkIGNvcm5lckRpbWVuc2lvbnM6IFhZWiA9IFswLjI1LCAwLjI1LCAwLjI1XTtcblx0cHJvdGVjdGVkIGVkZ2VzOiBWZWN0b3IzW10gPSBbXG5cdFx0WzEsIDEsIDBdLFxuXHRcdFsxLCAwLCAxXSxcblx0XHRbMSwgMCwgLTFdLFxuXHRcdFsxLCAtMSwgMF0sXG5cdFx0WzAsIDEsIDFdLFxuXHRcdFswLCAxLCAtMV0sXG5cdFx0WzAsIC0xLCAxXSxcblx0XHRbMCwgLTEsIC0xXSxcblx0XHRbLTEsIDEsIDBdLFxuXHRcdFstMSwgMCwgMV0sXG5cdFx0Wy0xLCAwLCAtMV0sXG5cdFx0Wy0xLCAtMSwgMF0sXG5cdF0ubWFwKHRoaXMubWFrZVBvc2l0aW9uVmVjdG9yKTtcblx0cHJvdGVjdGVkIGVkZ2VEaW1lbnNpb25zID0gdGhpcy5lZGdlcy5tYXAoXG5cdFx0KGVkZ2UpID0+IGVkZ2UudG9BcnJheSgpLm1hcCgoYXhpczogbnVtYmVyKTogbnVtYmVyID0+IChheGlzID09IDAgPyAwLjUgOiAwLjI1KSkgYXMgWFlaLFxuXHQpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXHR9XG5cblx0cHJvdGVjdGVkIGdldCBvbkNsaWNrKCkge1xuXHRcdGlmIChoYXNMaXN0ZW5lcih0aGlzLmNsaWNrKSkgcmV0dXJuIGdldEVtaXR0ZXIodGhpcy5jbGljayk7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdHByaXZhdGUgbWFrZVBvc2l0aW9uVmVjdG9yKHh5ejogbnVtYmVyW10pIHtcblx0XHRyZXR1cm4gbmV3IFZlY3RvcjMoLi4ueHl6KS5tdWx0aXBseVNjYWxhcigwLjM4KTtcblx0fVxufVxuIl19
|
|
@@ -295,8 +295,8 @@ class FaceCube {
|
|
|
295
295
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FaceCube, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
296
296
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: FaceCube, isStandalone: true, selector: "viewcube-face-cube", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, onClick: { classPropertyName: "onClick", publicName: "onClick", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
297
297
|
<ngt-mesh
|
|
298
|
-
(pointerout)="$event.stopPropagation(); hover.set(-1)"
|
|
299
|
-
(pointermove)="$event.stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
298
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(-1)"
|
|
299
|
+
(pointermove)="$any($event).stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
300
300
|
(click)="internalOnClick($any($event))"
|
|
301
301
|
>
|
|
302
302
|
<ngt-box-geometry />
|
|
@@ -313,8 +313,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
313
313
|
standalone: true,
|
|
314
314
|
template: `
|
|
315
315
|
<ngt-mesh
|
|
316
|
-
(pointerout)="$event.stopPropagation(); hover.set(-1)"
|
|
317
|
-
(pointermove)="$event.stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
316
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(-1)"
|
|
317
|
+
(pointermove)="$any($event).stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))"
|
|
318
318
|
(click)="internalOnClick($any($event))"
|
|
319
319
|
>
|
|
320
320
|
<ngt-box-geometry />
|
|
@@ -359,8 +359,8 @@ class EdgeCube {
|
|
|
359
359
|
<ngt-mesh
|
|
360
360
|
[scale]="1.01"
|
|
361
361
|
[position]="position()"
|
|
362
|
-
(pointerout)="$event.stopPropagation(); hover.set(false)"
|
|
363
|
-
(pointerover)="$event.stopPropagation(); hover.set(true)"
|
|
362
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(false)"
|
|
363
|
+
(pointerover)="$any($event).stopPropagation(); hover.set(true)"
|
|
364
364
|
(click)="internalOnClick($any($event))"
|
|
365
365
|
>
|
|
366
366
|
<ngt-mesh-basic-material [transparent]="true" [opacity]="0.6" [color]="color()" [visible]="hover()" />
|
|
@@ -377,8 +377,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
377
377
|
<ngt-mesh
|
|
378
378
|
[scale]="1.01"
|
|
379
379
|
[position]="position()"
|
|
380
|
-
(pointerout)="$event.stopPropagation(); hover.set(false)"
|
|
381
|
-
(pointerover)="$event.stopPropagation(); hover.set(true)"
|
|
380
|
+
(pointerout)="$any($event).stopPropagation(); hover.set(false)"
|
|
381
|
+
(pointerover)="$any($event).stopPropagation(); hover.set(true)"
|
|
382
382
|
(click)="internalOnClick($any($event))"
|
|
383
383
|
>
|
|
384
384
|
<ngt-mesh-basic-material [transparent]="true" [opacity]="0.6" [color]="color()" [visible]="hover()" />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-gizmos.mjs","sources":["../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-helper.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewcube.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewport.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-arrow.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-rotator.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/plane-slider.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/scaling-sphere.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/pivot-controls.ts","../../../../libs/soba/gizmos/src/lib/transform-controls.ts","../../../../libs/soba/gizmos/src/angular-three-soba-gizmos.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tSignal,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport { extend, hasListener, injectBeforeRender, injectStore, NgtPortal, NgtPortalContent, pick } from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Matrix4, Object3D, Quaternion, Scene, Vector3 } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nconst turnRate = 2 * Math.PI; // turn rate in angles per second\nconst dummy = new Object3D();\nconst matrix = new Matrix4();\nconst [q1, q2] = [new Quaternion(), new Quaternion()];\nconst target = new Vector3();\nconst targetPosition = new Vector3();\n\n@Directive({ selector: 'ng-template[gizmoHelperContent]', standalone: true })\nexport class NgtsGizmoHelperContent {\n\tstatic ngTemplateContextGuard(_: NgtsGizmoHelperContent, ctx: unknown): ctx is { container: Object3D } {\n\t\treturn true;\n\t}\n}\n\ntype ControlsProto = { update(delta?: number): void; target: Vector3 };\n\nexport interface NgtsGizmoHelperOptions {\n\talignment:\n\t\t| 'top-left'\n\t\t| 'top-right'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'bottom-center'\n\t\t| 'center-right'\n\t\t| 'center-left'\n\t\t| 'center-center'\n\t\t| 'top-center';\n\tmargin: [number, number];\n\trenderPriority: number;\n\tautoClear?: boolean;\n}\n\nconst defaultOptions: NgtsGizmoHelperOptions = {\n\talignment: 'bottom-right',\n\tmargin: [80, 80],\n\trenderPriority: 1,\n};\n\n@Component({\n\tselector: 'ngts-gizmo-helper',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal\n\t\t\t[container]=\"scene\"\n\t\t\t[autoRender]=\"true\"\n\t\t\t[autoRenderPriority]=\"renderPriority()\"\n\t\t\t[state]=\"{ events: { priority: renderPriority() + 1 } }\"\n\t\t>\n\t\t\t<ng-template portalContent let-injector=\"injector\" let-container=\"container\">\n\t\t\t\t<ngts-orthographic-camera [options]=\"{ makeDefault: true, position: [0, 0, 200] }\" />\n\t\t\t\t<ngt-group #gizmo [position]=\"[x(), y(), 0]\">\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ container, injector }\"\n\t\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-group>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtPortal, NgtPortalContent, NgtsOrthographicCamera, NgTemplateOutlet],\n})\nexport class NgtsGizmoHelper {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tupdate = output<void>();\n\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected margin = pick(this.options, 'margin');\n\tprotected alignment = pick(this.options, 'alignment');\n\n\tprotected scene = new Scene();\n\n\tprotected content = contentChild.required(NgtsGizmoHelperContent, { read: TemplateRef });\n\n\tprivate gizmoRef = viewChild<ElementRef<Group>>('gizmo');\n\tprivate virtualCameraRef = viewChild(NgtsOrthographicCamera);\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\tprivate mainCamera = this.store.select('camera');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprotected x = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.endsWith('-center')) return 0;\n\n\t\tconst [{ width }, [marginX]] = [this.size(), this.margin()];\n\t\treturn alignment.endsWith('-left') ? -width / 2 + marginX : width / 2 - marginX;\n\t});\n\tprotected y = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.startsWith('center-')) return 0;\n\n\t\tconst [{ height }, [marginY]] = [this.size(), this.margin()];\n\t\treturn alignment.startsWith('top-') ? height / 2 - marginY : -height / 2 + marginY;\n\t});\n\n\tprivate animating = false;\n\tprivate radius = 0;\n\tprivate focusPoint = new Vector3(0, 0, 0);\n\tprivate defaultUp = new Vector3(0, 0, 0);\n\n\tconstructor() {\n\t\textend({ Group });\n\t\teffect(() => {\n\t\t\tthis.updateDefaultUpEffect();\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [virtualCamera, gizmo] = [\n\t\t\t\tthis.virtualCameraRef()?.cameraRef()?.nativeElement,\n\t\t\t\tthis.gizmoRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tif (!virtualCamera || !gizmo) return;\n\n\t\t\tconst [defaultControls, mainCamera, invalidate] = [this.defaultControls(), this.mainCamera(), this.invalidate()];\n\n\t\t\t// Animate step\n\t\t\tif (this.animating) {\n\t\t\t\tif (q1.angleTo(q2) < 0.01) {\n\t\t\t\t\tthis.animating = false;\n\t\t\t\t\t// Orbit controls uses UP vector as the orbit axes,\n\t\t\t\t\t// so we need to reset it after the animation is done\n\t\t\t\t\t// moving it around for the controls to work correctly\n\t\t\t\t\tif (this.isOrbitControls(defaultControls)) {\n\t\t\t\t\t\tmainCamera.up.copy(this.defaultUp);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst step = delta * turnRate;\n\t\t\t\t\t// animate position by doing a slerp and then scaling the position on the unit sphere\n\t\t\t\t\tq1.rotateTowards(q2, step);\n\t\t\t\t\t// animate orientation\n\t\t\t\t\tmainCamera.position.set(0, 0, 1).applyQuaternion(q1).multiplyScalar(this.radius).add(this.focusPoint);\n\t\t\t\t\tmainCamera.up.set(0, 1, 0).applyQuaternion(q1).normalize();\n\t\t\t\t\tmainCamera.quaternion.copy(q1);\n\n\t\t\t\t\tif (this.isCameraControls(defaultControls)) {\n\t\t\t\t\t\tvoid defaultControls.setPosition(mainCamera.position.x, mainCamera.position.y, mainCamera.position.z);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasListener(this.update)) this.update.emit();\n\t\t\t\t\telse if (defaultControls) defaultControls.update(delta);\n\n\t\t\t\t\tinvalidate();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sync Gizmo with main camera orientation\n\t\t\tmatrix.copy(mainCamera.matrix).invert();\n\t\t\tgizmo.quaternion.setFromRotationMatrix(matrix);\n\t\t});\n\t}\n\n\ttweenCamera(direction: Vector3) {\n\t\tconst [defaultControls, invalidate, mainCamera] = [this.defaultControls(), this.invalidate(), this.mainCamera()];\n\n\t\tthis.animating = true;\n\t\tif (defaultControls) {\n\t\t\tthis.focusPoint = this.isCameraControls(defaultControls)\n\t\t\t\t? defaultControls.getTarget(this.focusPoint)\n\t\t\t\t: defaultControls.target;\n\t\t}\n\t\tthis.radius = mainCamera.position.distanceTo(target);\n\n\t\t// Rotate from current camera orientation\n\t\tq1.copy(mainCamera.quaternion);\n\n\t\t// To new current camera orientation\n\t\ttargetPosition.copy(direction).multiplyScalar(this.radius).add(target);\n\t\tdummy.lookAt(targetPosition);\n\t\tq2.copy(dummy.quaternion);\n\n\t\tinvalidate();\n\t}\n\n\tprivate updateDefaultUpEffect() {\n\t\tconst mainCamera = this.mainCamera();\n\t\tthis.defaultUp.copy(mainCamera.up);\n\t}\n\n\tprivate isOrbitControls(controls: ControlsProto): controls is OrbitControls {\n\t\treturn 'minPolarAngle' in (controls as OrbitControls);\n\t}\n\n\tprivate isCameraControls(controls: CameraControls | ControlsProto): controls is CameraControls {\n\t\treturn 'getTarget' in (controls as CameraControls);\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEventHandlers,\n\tNgtThreeEvent,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BoxGeometry, CanvasTexture, Group, Mesh, MeshBasicMaterial, Vector3 } from 'three';\nimport { NgtsGizmoHelper } from './gizmo-helper';\n\ntype XYZ = [number, number, number];\n\nconst colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };\nconst defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];\n\ninterface CommonOptions {\n\tfont: string;\n\topacity: number;\n\tcolor: string;\n\thoverColor: string;\n\ttextColor: string;\n\tstrokeColor: string;\n\tfaces: string[];\n}\n\nconst defaultFaceMaterialOptions: CommonOptions = {\n\tfont: '20px Inter var, Arial, sans-serif',\n\tfaces: defaultFaces,\n\tcolor: colors.bg,\n\thoverColor: colors.hover,\n\ttextColor: colors.text,\n\tstrokeColor: colors.stroke,\n\topacity: 1,\n};\n\n@Component({\n\tselector: 'viewcube-face-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh-basic-material\n\t\t\t[attach]=\"['material', index()]\"\n\t\t\t[map]=\"texture()\"\n\t\t\t[color]=\"materialColor()\"\n\t\t\t[transparent]=\"true\"\n\t\t\t[opacity]=\"opacity()\"\n\t\t/>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FaceMaterial {\n\thover = input.required<boolean>();\n\tindex = input.required<number>();\n\toptions = input(defaultFaceMaterialOptions, { transform: mergeInputs(defaultFaceMaterialOptions) });\n\n\tprivate faces = pick(this.options, 'faces');\n\tprivate font = pick(this.options, 'font');\n\tprivate color = pick(this.options, 'color');\n\tprivate textColor = pick(this.options, 'textColor');\n\tprivate strokeColor = pick(this.options, 'strokeColor');\n\tprivate hoverColor = pick(this.options, 'hoverColor');\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected materialColor = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\tprotected texture = computed(() => {\n\t\tconst [index, faces, font, color, textColor, strokeColor, gl] = [\n\t\t\tthis.index(),\n\t\t\tthis.faces(),\n\t\t\tthis.font(),\n\t\t\tthis.color(),\n\t\t\tthis.textColor(),\n\t\t\tthis.strokeColor(),\n\t\t\tthis.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 128;\n\t\tcanvas.height = 128;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.fillStyle = color;\n\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.strokeStyle = strokeColor;\n\t\tcontext.strokeRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.font = font;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.fillStyle = textColor;\n\t\tcontext.fillText(faces[index].toUpperCase(), 64, 76);\n\n\t\tconst texture = new CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\n\t\treturn texture;\n\t});\n\n\tconstructor() {\n\t\textend({ MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewcube-face-cube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t(pointerout)=\"$event.stopPropagation(); hover.set(-1)\"\n\t\t\t(pointermove)=\"$event.stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))\"\n\t\t\t(click)=\"internalOnClick($any($event))\"\n\t\t>\n\t\t\t<ngt-box-geometry />\n\t\t\t@for (face of count; track $index) {\n\t\t\t\t<viewcube-face-material [index]=\"$index\" [hover]=\"hover() === $index\" [options]=\"options()\" />\n\t\t\t}\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [FaceMaterial],\n})\nexport class FaceCube {\n\toptions = input({} as Partial<CommonOptions>);\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelper);\n\n\tprotected hover = signal(-1);\n\tprotected count = Array.from({ length: 6 });\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry });\n\t}\n\n\tinternalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(event.face!.normal);\n\t\t}\n\t}\n\n\tprotected readonly Math = Math;\n}\n\n@Component({\n\tselector: 'viewcube-edge-cube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t[scale]=\"1.01\"\n\t\t\t[position]=\"position()\"\n\t\t\t(pointerout)=\"$event.stopPropagation(); hover.set(false)\"\n\t\t\t(pointerover)=\"$event.stopPropagation(); hover.set(true)\"\n\t\t\t(click)=\"internalOnClick($any($event))\"\n\t\t>\n\t\t\t<ngt-mesh-basic-material [transparent]=\"true\" [opacity]=\"0.6\" [color]=\"color()\" [visible]=\"hover()\" />\n\t\t\t<ngt-box-geometry *args=\"dimensions()\" />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class EdgeCube {\n\tdimensions = input.required<XYZ>();\n\tposition = input.required<Vector3>();\n\thoverColor = input(colors.hover, {\n\t\ttransform: (value: string | undefined) => {\n\t\t\tif (value === undefined) return colors.hover;\n\t\t\treturn value;\n\t\t},\n\t});\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelper);\n\n\tprotected hover = signal(false);\n\tprotected color = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry, MeshBasicMaterial });\n\t}\n\n\tinternalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(this.position());\n\t\t}\n\t}\n}\n\nexport type NgtsGizmoViewcubeOptions = Partial<CommonOptions>;\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [scale]=\"60\">\n\t\t\t<viewcube-face-cube [options]=\"options()\" [onClick]=\"onClick\" />\n\t\t\t@for (edge of edges; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"edge\"\n\t\t\t\t\t[dimensions]=\"edgeDimensions[$index]\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\t@for (corner of corners; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"corner\"\n\t\t\t\t\t[dimensions]=\"cornerDimensions\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\n\t\t\t\t/>\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [FaceCube, EdgeCube],\n})\nexport class NgtsGizmoViewcube {\n\toptions = input({} as NgtsGizmoViewcubeOptions);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected hoverColor = pick(this.options, 'hoverColor');\n\n\tprotected corners: Vector3[] = [\n\t\t[1, 1, 1],\n\t\t[1, 1, -1],\n\t\t[1, -1, 1],\n\t\t[1, -1, -1],\n\t\t[-1, 1, 1],\n\t\t[-1, 1, -1],\n\t\t[-1, -1, 1],\n\t\t[-1, -1, -1],\n\t].map(this.makePositionVector);\n\tprotected cornerDimensions: XYZ = [0.25, 0.25, 0.25];\n\tprotected edges: Vector3[] = [\n\t\t[1, 1, 0],\n\t\t[1, 0, 1],\n\t\t[1, 0, -1],\n\t\t[1, -1, 0],\n\t\t[0, 1, 1],\n\t\t[0, 1, -1],\n\t\t[0, -1, 1],\n\t\t[0, -1, -1],\n\t\t[-1, 1, 0],\n\t\t[-1, 0, 1],\n\t\t[-1, 0, -1],\n\t\t[-1, -1, 0],\n\t].map(this.makePositionVector);\n\tprotected edgeDimensions = this.edges.map(\n\t\t(edge) => edge.toArray().map((axis: number): number => (axis == 0 ? 0.5 : 0.25)) as XYZ,\n\t);\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n\n\tprivate makePositionVector(xyz: number[]) {\n\t\treturn new Vector3(...xyz).multiplyScalar(0.38);\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEventHandlers,\n\tNgtGroup,\n\tNgtThreeEvent,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBoxGeometry,\n\tCanvasTexture,\n\tColorRepresentation,\n\tGroup,\n\tMesh,\n\tMeshBasicMaterial,\n\tSprite,\n\tSpriteMaterial,\n} from 'three';\nimport { NgtsGizmoHelper } from './gizmo-helper';\n\n@Component({\n\tselector: 'viewport-axis',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [rotation]=\"rotation()\">\n\t\t\t<ngt-mesh [position]=\"[0.4, 0, 0]\">\n\t\t\t\t<ngt-box-geometry *args=\"scale()\" />\n\t\t\t\t<ngt-mesh-basic-material [color]=\"color()\" [toneMapped]=\"false\" />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class Axis {\n\tscale = input([0.8, 0.05, 0.05], {\n\t\ttransform: (value: [number, number, number] | undefined) => {\n\t\t\tif (value === undefined) return [0.8, 0.05, 0.05];\n\t\t\treturn value;\n\t\t},\n\t});\n\tcolor = input<ColorRepresentation>();\n\trotation = input<NgtVector3>([0, 0, 0]);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, BoxGeometry, MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewport-axis-head',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-sprite\n\t\t\t[scale]=\"scale()\"\n\t\t\t[position]=\"position()\"\n\t\t\t(pointerover)=\"onPointerOver($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t>\n\t\t\t<ngt-sprite-material [map]=\"texture()\" [alphaTest]=\"0.3\" [opacity]=\"label() ? 1 : 0.75\" [toneMapped]=\"false\" />\n\t\t</ngt-sprite>\n\t`,\n\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AxisHead {\n\tarcStyle = input.required<string>();\n\tposition = input.required<NgtVector3>();\n\tlabel = input<string>();\n\tlabelColor = input('#000');\n\taxisHeadScale = input(1);\n\tdisabled = input(false);\n\tfont = input('18px Inter var, Arial, sans-serif');\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate document = inject(DOCUMENT);\n\tprivate gizmoHelper = inject(NgtsGizmoHelper);\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\n\tprotected texture = computed(() => {\n\t\tconst [arcStyle, label, labelColor, font, gl] = [\n\t\t\tthis.arcStyle(),\n\t\t\tthis.label(),\n\t\t\tthis.labelColor(),\n\t\t\tthis.font(),\n\t\t\tthis.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 64;\n\t\tcanvas.height = 64;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.beginPath();\n\t\tcontext.arc(32, 32, 16, 0, 2 * Math.PI);\n\t\tcontext.closePath();\n\t\tcontext.fillStyle = arcStyle;\n\t\tcontext.fill();\n\n\t\tif (label) {\n\t\t\tcontext.font = font;\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.fillStyle = labelColor;\n\t\t\tcontext.fillText(label, 32, 41);\n\t\t}\n\n\t\tconst texture = new CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\t\treturn texture;\n\t});\n\n\tprotected active = signal(false);\n\tprotected scale = computed(() => (this.label() ? 1 : 0.75) * (this.active() ? 1.2 : 1) * this.axisHeadScale());\n\n\tconstructor() {\n\t\textend({ Sprite, SpriteMaterial });\n\t}\n\n\tonPointerOver(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tevent.stopPropagation();\n\t\tthis.active.set(true);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.active.set(false);\n\t\t}\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\t\tevent.stopPropagation();\n\t\tthis.gizmoHelper.tweenCamera(event.object.position);\n\t}\n}\n\nexport interface NgtsGizmoViewportOptions extends Partial<NgtGroup> {\n\taxisColors: [string, string, string];\n\taxisScale?: [number, number, number];\n\tlabels: [string, string, string];\n\taxisHeadScale: number;\n\tlabelColor: string;\n\thideNegativeAxes: boolean;\n\thideAxisHeads: boolean;\n\tdisabled: boolean;\n\tfont: string;\n}\n\nconst defaultOptions: NgtsGizmoViewportOptions = {\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\tlabels: ['X', 'Y', 'Z'],\n\taxisHeadScale: 1,\n\tlabelColor: '#000',\n\thideNegativeAxes: false,\n\thideAxisHeads: false,\n\tdisabled: false,\n\tfont: '18px Inter var, Arial, sans-serif',\n};\n\n@Component({\n\tselector: 'ngts-gizmo-viewport',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [scale]=\"40\" [parameters]=\"parameters()\">\n\t\t\t<viewport-axis [color]=\"axisColors()[0]\" [rotation]=\"[0, 0, 0]\" [scale]=\"axisScale()\" />\n\t\t\t<viewport-axis [color]=\"axisColors()[1]\" [rotation]=\"[0, 0, Math.PI / 2]\" [scale]=\"axisScale()\" />\n\t\t\t<viewport-axis [color]=\"axisColors()[2]\" [rotation]=\"[0, -Math.PI / 2, 0]\" [scale]=\"axisScale()\" />\n\n\t\t\t@if (!hideAxisHeads()) {\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[0]\"\n\t\t\t\t\t[position]=\"[1, 0, 0]\"\n\t\t\t\t\t[label]=\"labels()[0]\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[1]\"\n\t\t\t\t\t[position]=\"[0, 1, 0]\"\n\t\t\t\t\t[label]=\"labels()[1]\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[2]\"\n\t\t\t\t\t[position]=\"[0, 0, 1]\"\n\t\t\t\t\t[label]=\"labels()[2]\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\n\t\t\t\t@if (!hideNegativeAxes()) {\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[0]\"\n\t\t\t\t\t\t[position]=\"[-1, 0, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[1]\"\n\t\t\t\t\t\t[position]=\"[0, -1, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[2]\"\n\t\t\t\t\t\t[position]=\"[0, 0, -1]\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [Axis, AxisHead],\n})\nexport class NgtsGizmoViewport {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'axisColors',\n\t\t'axisScale',\n\t\t'labels',\n\t\t'axisHeadScale',\n\t\t'labelColor',\n\t\t'hideNegativeAxes',\n\t\t'hideAxisHeads',\n\t\t'disabled',\n\t\t'font',\n\t]);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected axisColors = pick(this.options, 'axisColors');\n\tprotected axisScale = pick(this.options, 'axisScale');\n\tprotected hideAxisHeads = pick(this.options, 'hideAxisHeads');\n\tprotected hideNegativeAxes = pick(this.options, 'hideNegativeAxes');\n\tprotected labels = pick(this.options, 'labels');\n\tprotected axisHeadScale = pick(this.options, 'axisHeadScale');\n\tprotected labelColor = pick(this.options, 'labelColor');\n\tprotected disabled = pick(this.options, 'disabled');\n\tprotected font = pick(this.options, 'font');\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport {\n\tConeGeometry,\n\tCylinderGeometry,\n\tDoubleSide,\n\tGroup,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tQuaternion,\n\tVector3,\n} from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-axis-arrow',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, -coneLength(), 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"false\"\n\t\t\t\t\t[position]=\"[0, (cylinderLength() + coneLength()) / 2.0, 0]\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-cylinder-geometry\n\t\t\t\t\t\t*args=\"[coneWidth() * 1.4, coneWidth() * 1.4, cylinderLength() + coneLength(), 8, 1]\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"[0, 0, 0, 0, cylinderLength(), 0]\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\traycast: null,\n\t\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\trenderOrder: 1,\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-mesh [raycast]=\"null\" [position]=\"[0, cylinderLength() + coneLength() / 2.0, 0]\" [renderOrder]=\"500\">\n\t\t\t\t\t<ngt-cone-geometry *args=\"[coneWidth(), coneLength(), 24, 1]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisArrow {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; dir: Vector3 } | null = null;\n\tprivate offset0 = 0;\n\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconeWidth = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.6\n\t\t\t: this.pivotControls.scale() / 20,\n\t);\n\tconeLength = computed(() => (this.pivotControls.fixed() ? 0.2 : this.pivotControls.scale() / 5));\n\tcylinderLength = computed(() =>\n\t\tthis.pivotControls.fixed() ? 1 - this.coneLength() : this.pivotControls.scale() - this.coneLength(),\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, ConeGeometry, CylinderGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [group, direction, axis, controls, annotation] = [\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tthis.clickInfo = { clickPoint, dir };\n\t\tthis.offset0 = this.pivotControls.translation[axis];\n\t\tthis.pivotControls.onDragStart({ component: 'Arrow', axis, origin, directions: [dir] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\n\t\tif (!this.hovered()) {\n\t\t\tthis.hovered.set(true);\n\t\t}\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir } = this.clickInfo;\n\t\t\tconst [translationLimits, annotation, axis] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.axis(),\n\t\t\t];\n\n\t\t\tconst [min, max] = translationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tlet offset = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tif (min !== undefined) {\n\t\t\t\toffset = Math.max(offset, min - this.offset0);\n\t\t\t}\n\n\t\t\tif (max !== undefined) {\n\t\t\t\toffset = Math.min(offset, max - this.offset0);\n\t\t\t}\n\n\t\t\tthis.pivotControls.translation[axis] = this.offset0 + offset;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(dir.x * offset, dir.y * offset, dir.z * offset);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tSignal,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Plane, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst clickDir = new Vector3();\nconst intersectionDir = new Vector3();\n\nfunction toDegrees(radians: number) {\n\treturn (radians * 180) / Math.PI;\n}\n\nfunction toRadians(degrees: number) {\n\treturn (degrees * Math.PI) / 180;\n}\n\nfunction calculateAngle(clickPoint: Vector3, intersectionPoint: Vector3, origin: Vector3, e1: Vector3, e2: Vector3) {\n\tclickDir.copy(clickPoint).sub(origin);\n\tintersectionDir.copy(intersectionPoint).sub(origin);\n\tconst dote1e1 = e1.dot(e1);\n\tconst dote2e2 = e2.dot(e2);\n\tconst uClick = clickDir.dot(e1) / dote1e1;\n\tconst vClick = clickDir.dot(e2) / dote2e2;\n\tconst uIntersection = intersectionDir.dot(e1) / dote1e1;\n\tconst vIntersection = intersectionDir.dot(e2) / dote2e2;\n\tconst angleClick = Math.atan2(vClick, uClick);\n\tconst angleIntersection = Math.atan2(vIntersection, uIntersection);\n\treturn angleIntersection - angleClick;\n}\n\nfunction fmod(num: number, denom: number) {\n\tlet k = Math.floor(num / denom);\n\tk = k < 0 ? k + 1 : k;\n\n\treturn num - k * denom;\n}\n\nfunction minimizeAngle(angle: number) {\n\tlet result = fmod(angle, 2 * Math.PI);\n\n\tif (Math.abs(result) < 1e-6) {\n\t\treturn 0.0;\n\t}\n\n\tif (result < 0.0) {\n\t\tresult += 2 * Math.PI;\n\t}\n\n\treturn result;\n}\n\nconst rotMatrix = new Matrix4();\nconst posNew = new Vector3();\nconst ray = new Ray();\nconst intersection = new Vector3();\n\n@Component({\n\tselector: 'ngts-axis-rotator',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group\n\t\t\t#group\n\t\t\t[matrix]=\"matrixL()\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t>\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [r(), r(), 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{ lineWidth: pivotControls.lineWidth() * 4, visible: false, userData: pivotControls.userData() }\"\n\t\t\t/>\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{\n\t\t\t\t\ttransparent: true,\n\t\t\t\t\traycast: null,\n\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\tcolor: hovered() ? pivotControls.hoveredColor() : pivotControls.axisColors()[axis()],\n\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\tfog: false,\n\t\t\t\t}\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisRotator {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\thovered = signal(false);\n\tprivate angle = 0;\n\tprivate angle0 = 0;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\torigin: Vector3;\n\t\te1: Vector3;\n\t\te2: Vector3;\n\t\tnormal: Vector3;\n\t\tplane: Plane;\n\t} | null = null;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\tr = computed(() => (this.pivotControls.fixed() ? 0.65 : this.pivotControls.scale() * 0.65));\n\tarc = computed(() => {\n\t\tconst segments = 32;\n\t\tconst points: Vector3[] = [];\n\t\tfor (let j = 0; j <= segments; j++) {\n\t\t\tconst angle = (j * (Math.PI / 2)) / segments;\n\t\t\tpoints.push(new Vector3(Math.cos(angle) * this.r(), Math.sin(angle) * this.r(), 0));\n\t\t}\n\t\treturn points;\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, group, axis, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${toDegrees(this.angle).toFixed(0)}º`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, origin, e1, e2, normal, plane };\n\t\tthis.pivotControls.onDragStart({ component: 'Rotator', axis, origin, directions: [e1, e2, normal] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not a function on PointerEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, origin, e1, e2, normal, plane } = this.clickInfo;\n\t\t\tconst [rotationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.rotationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = rotationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tlet deltaAngle = calculateAngle(clickPoint, intersection, origin, e1, e2);\n\t\t\tlet degrees = toDegrees(deltaAngle);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tdegrees = Math.round(degrees / 10) * 10;\n\t\t\t\tdeltaAngle = toRadians(degrees);\n\t\t\t}\n\n\t\t\tif (min !== undefined && max !== undefined && max - min < 2 * Math.PI) {\n\t\t\t\tdeltaAngle = minimizeAngle(deltaAngle);\n\t\t\t\tdeltaAngle = deltaAngle > Math.PI ? deltaAngle - 2 * Math.PI : deltaAngle;\n\t\t\t\tdeltaAngle = Math.round(deltaAngle / 10) * 10;\n\t\t\t\tthis.angle = this.angle0 + deltaAngle;\n\t\t\t} else {\n\t\t\t\tthis.angle = minimizeAngle(this.angle0 + deltaAngle);\n\t\t\t\tthis.angle = this.angle > Math.PI ? this.angle - 2 * Math.PI : this.angle;\n\t\t\t}\n\n\t\t\tif (annotation) {\n\t\t\t\tdegrees = toDegrees(this.angle);\n\t\t\t\tannotation.innerText = `${degrees.toFixed(0)}º`;\n\t\t\t}\n\n\t\t\trotMatrix.makeRotationAxis(normal, deltaAngle);\n\t\t\tposNew.copy(origin).applyMatrix4(rotMatrix).sub(origin).negate();\n\t\t\trotMatrix.setPosition(posNew);\n\t\t\tthis.pivotControls.onDrag(rotMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not a function on PointerEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Mesh, MeshBasicMaterial, Plane, PlaneGeometry, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nfunction decomposeIntoBasis(e1: Vector3, e2: Vector3, offset: Vector3) {\n\tconst i1 =\n\t\tMath.abs(e1.x) >= Math.abs(e1.y) && Math.abs(e1.x) >= Math.abs(e1.z)\n\t\t\t? 0\n\t\t\t: Math.abs(e1.y) >= Math.abs(e1.x) && Math.abs(e1.y) >= Math.abs(e1.z)\n\t\t\t\t? 1\n\t\t\t\t: 2;\n\tconst e2DegrowthOrder = [0, 1, 2].sort((a, b) => Math.abs(e2.getComponent(b)) - Math.abs(e2.getComponent(a)));\n\tconst i2 = i1 === e2DegrowthOrder[0] ? e2DegrowthOrder[1] : e2DegrowthOrder[0];\n\tconst a1 = e1.getComponent(i1);\n\tconst a2 = e1.getComponent(i2);\n\tconst b1 = e2.getComponent(i1);\n\tconst b2 = e2.getComponent(i2);\n\tconst c1 = offset.getComponent(i1);\n\tconst c2 = offset.getComponent(i2);\n\n\tconst y = (c2 - c1 * (a2 / a1)) / (b2 - b1 * (a2 / a1));\n\tconst x = (c1 - y * b1) / a1;\n\n\treturn [x, y];\n}\n\nconst ray = new Ray();\nconst intersection = new Vector3();\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-plane-slider',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [matrix]=\"matrixL()\" [matrixAutoUpdate]=\"false\">\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [0, 0, 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\t\t\t<ngt-group [position]=\"[pos1() * 1.7, pos1() * 1.7, 0]\">\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"true\"\n\t\t\t\t\t[scale]=\"length()\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"points()\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\tposition: [-length() / 2, -length() / 2, 0],\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\tuserData: pivotControls.userData(),\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtsLine],\n})\nexport class NgtsPlaneSlider {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; e1: Vector3; e2: Vector3; plane: Plane } | null = null;\n\tprivate offsetX0 = 0;\n\tprivate offsetY0 = 0;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\n\tpos1 = computed(() => (this.pivotControls.fixed() ? 1 / 7 : this.pivotControls.scale() / 7));\n\tlength = computed(() => (this.pivotControls.fixed() ? 0.225 : this.pivotControls.scale() * 0.225));\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\tpoints = computed(() => {\n\t\tconst length = this.length();\n\t\treturn [\n\t\t\tnew Vector3(0, 0, 0),\n\t\t\tnew Vector3(0, length, 0),\n\t\t\tnew Vector3(length, length, 0),\n\t\t\tnew Vector3(length, 0, 0),\n\t\t\tnew Vector3(0, 0, 0),\n\t\t];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, axis, group, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, e1, e2, plane };\n\t\tthis.offsetX0 = this.pivotControls.translation[(axis + 1) % 3];\n\t\tthis.offsetY0 = this.pivotControls.translation[(axis + 2) % 3];\n\t\tthis.pivotControls.onDragStart({ component: 'Slider', axis, origin, directions: [e1, e2, normal] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not defined on ThreeEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, e1, e2, plane } = this.clickInfo;\n\t\t\tconst [translationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [minX, maxX] = translationLimits?.[(axis + 1) % 3] || [undefined, undefined];\n\t\t\tconst [minY, maxY] = translationLimits?.[(axis + 2) % 3] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tintersection.sub(clickPoint);\n\t\t\tlet [offsetX, offsetY] = decomposeIntoBasis(e1, e2, intersection);\n\t\t\t/* let offsetY = (intersection.y - (intersection.x * e1.y) / e1.x) / (e2.y - (e2.x * e1.y) / e1.x)\n let offsetX = (intersection.x - offsetY * e2.x) / e1.x */\n\t\t\tif (minX !== undefined) {\n\t\t\t\toffsetX = Math.max(offsetX, minX - this.offsetX0);\n\t\t\t}\n\t\t\tif (maxX !== undefined) {\n\t\t\t\toffsetX = Math.min(offsetX, maxX - this.offsetX0);\n\t\t\t}\n\t\t\tif (minY !== undefined) {\n\t\t\t\toffsetY = Math.max(offsetY, minY - this.offsetY0);\n\t\t\t}\n\t\t\tif (maxY !== undefined) {\n\t\t\t\toffsetY = Math.min(offsetY, maxY - this.offsetY0);\n\t\t\t}\n\t\t\tthis.pivotControls.translation[(axis + 1) % 3] = this.offsetX0 + offsetX;\n\t\t\tthis.pivotControls.translation[(axis + 2) % 3] = this.offsetY0 + offsetY;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(\n\t\t\t\toffsetX * e1.x + offsetY * e2.x,\n\t\t\t\toffsetX * e1.y + offsetY * e2.y,\n\t\t\t\toffsetX * e1.z + offsetY * e2.z,\n\t\t\t);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not defined on ThreeEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { calculateScaleFactor, NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { Group, Matrix4, Mesh, MeshBasicMaterial, Quaternion, SphereGeometry, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst scaleV = new Vector3();\nconst scaleMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-scaling-sphere',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, position() / 2, 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\t\t\t\t<ngt-mesh #mesh [position]=\"[0, position(), 0]\" [renderOrder]=\"500\" [userData]=\"pivotControls.userData()\">\n\t\t\t\t\t<ngt-sphere-geometry *args=\"[radius(), 12, 12]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtArgs],\n})\nexport class NgtsScalingSphere {\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\tprivate size = this.store.select('size');\n\n\tprivate hovered = signal(false);\n\tprivate scale0 = 1;\n\tprivate scaleCurrent = 1;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\tdir: Vector3;\n\t\tmPLG: Matrix4;\n\t\tmPLGInv: Matrix4;\n\t\toffsetMultiplier: number;\n\t} | null = null;\n\n\tposition = computed(() => (this.pivotControls.fixed() ? 1.2 : 1.2 * this.pivotControls.scale()));\n\tradius = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.8\n\t\t\t: this.pivotControls.scale() / 22.5,\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, SphereGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, fixed, scale, direction, axis, size, group] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.pivotControls.fixed(),\n\t\t\tthis.pivotControls.scale(),\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.size(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${scale.toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tconst mPLG = group.matrixWorld.clone();\n\t\tconst mPLGInv = mPLG.clone().invert();\n\t\tconst offsetMultiplier = fixed\n\t\t\t? 1 / calculateScaleFactor(group.getWorldPosition(vec1), scale, event.camera, size)\n\t\t\t: 1;\n\t\tthis.clickInfo = { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier };\n\t\tthis.pivotControls.onDragStart({ component: 'Sphere', axis, origin, directions: [dir] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier } = this.clickInfo;\n\t\t\tconst [scaleLimits, axis, position, annotation, fixed, scale, mesh] = [\n\t\t\t\tthis.pivotControls.scaleLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.pivotControls.fixed(),\n\t\t\t\tthis.pivotControls.scale(),\n\t\t\t\tthis.meshRef().nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = scaleLimits?.[axis] || [1e-5, undefined]; // always limit the minimal value, since setting it very low might break the transform\n\t\t\tconst offsetW = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tconst offsetL = offsetW * offsetMultiplier;\n\t\t\tconst offsetH = fixed ? offsetL : offsetL / scale;\n\t\t\tlet upscale = Math.pow(2, offsetH * 0.2);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tupscale = Math.round(upscale * 10) / 10;\n\t\t\t}\n\n\t\t\tupscale = Math.max(upscale, min / this.scale0);\n\n\t\t\tif (max !== undefined) {\n\t\t\t\tupscale = Math.min(upscale, max / this.scale0);\n\t\t\t}\n\n\t\t\tthis.scaleCurrent = this.scale0 * upscale;\n\t\t\tmesh.position.set(0, position + offsetL, 0);\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.scaleCurrent.toFixed(2)}`;\n\t\t\t}\n\n\t\t\tscaleV.set(1, 1, 1);\n\t\t\tscaleV.setComponent(axis, upscale);\n\t\t\tscaleMatrix.makeScale(scaleV.x, scaleV.y, scaleV.z).premultiply(mPLG).multiply(mPLGInv);\n\t\t\tthis.pivotControls.onDrag(scaleMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, position, mesh] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.position(),\n\t\t\tthis.meshRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.scale0 = this.scaleCurrent;\n\t\tthis.clickInfo = null;\n\t\tmesh.position.set(0, position, 0);\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, NgtAnyRecord, omit, pick } from 'angular-three';\nimport { calculateScaleFactor } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Box3, Group, Matrix4, Mesh, Vector3 } from 'three';\nimport { NgtsAxisArrow } from './axis-arrow';\nimport { NgtsAxisRotator } from './axis-rotator';\nimport { NgtsPlaneSlider } from './plane-slider';\nimport { NgtsScalingSphere } from './scaling-sphere';\n\nexport interface OnDragStartParameters {\n\tcomponent: 'Arrow' | 'Slider' | 'Rotator' | 'Sphere';\n\taxis: 0 | 1 | 2;\n\torigin: Vector3;\n\tdirections: Vector3[];\n}\n\nexport interface OnDragParameters {\n\tl: Matrix4;\n\tdeltaL: Matrix4;\n\tw: Matrix4;\n\tdeltaW: Matrix4;\n}\n\nconst mL0 = new Matrix4();\nconst mW0 = new Matrix4();\nconst mP = new Matrix4();\nconst mPInv = new Matrix4();\nconst mW = new Matrix4();\nconst mL = new Matrix4();\nconst mL0Inv = new Matrix4();\nconst mdL = new Matrix4();\nconst mG = new Matrix4();\n\nconst bb = new Box3();\nconst bbObj = new Box3();\nconst vCenter = new Vector3();\nconst vSize = new Vector3();\nconst vAnchorOffset = new Vector3();\nconst vPosition = new Vector3();\nconst vScale = new Vector3();\n\nconst xDir = new Vector3(1, 0, 0);\nconst yDir = new Vector3(0, 1, 0);\nconst zDir = new Vector3(0, 0, 1);\n\nexport interface NgtsPivotControlsOptions {\n\t/** Enables/disables the control, true */\n\tenabled: boolean;\n\t/** Scale of the gizmo, 1 */\n\tscale: number;\n\t/** Width of the gizmo lines, this is a THREE.Line2 prop, 2.5 */\n\tlineWidth: number;\n\t/** If fixed is true is remains constant in size, scale is now in pixels, false */\n\tfixed: boolean;\n\t/** Pivot does not act as a group, it won't shift contents but can offset in position */\n\toffset: [number, number, number];\n\t/** Starting rotation */\n\trotation: [number, number, number];\n\n\t/** Starting matrix */\n\tmatrix?: Matrix4;\n\t/** BBAnchor, each axis can be between -1/0/+1 */\n\tanchor?: [number, number, number];\n\t/** If autoTransform is true, automatically apply the local transform on drag, true */\n\tautoTransform: boolean;\n\t/** Allows you to switch individual axes off */\n\tactiveAxes: [boolean, boolean, boolean];\n\n\t/** Allows you to switch individual transformations off */\n\tdisableAxes: boolean;\n\tdisableSliders: boolean;\n\tdisableRotations: boolean;\n\tdisableScaling: boolean;\n\n\t/** Limits */\n\ttranslationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\trotationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\tscaleLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\n\t/** RGB colors */\n\taxisColors: [string | number, string | number, string | number];\n\t/** Color of the hovered item */\n\thoveredColor: string | number;\n\t/** HTML value annotations, default: false */\n\tannotations: boolean;\n\t/** CSS Classname applied to the HTML annotations */\n\tannotationsClass?: string;\n\t/** Set this to false if you want the gizmo to be visible through faces */\n\tdepthTest: boolean;\n\topacity?: number;\n\tvisible: boolean;\n\tuserData?: NgtAnyRecord;\n}\n\nconst defaultOptions: NgtsPivotControlsOptions = {\n\tenabled: true,\n\tautoTransform: true,\n\tdisableAxes: false,\n\tdisableSliders: false,\n\tdisableRotations: false,\n\tdisableScaling: false,\n\tactiveAxes: [true, true, true],\n\toffset: [0, 0, 0],\n\trotation: [0, 0, 0],\n\tscale: 1,\n\tlineWidth: 4,\n\tfixed: false,\n\tdepthTest: true,\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\thoveredColor: '#ffff40',\n\tannotations: false,\n\topacity: 1,\n\tvisible: true,\n};\n\n@Component({\n\tselector: 'ngts-pivot-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #parent>\n\t\t\t<ngt-group #group [matrix]=\"matrix()\" [matrixAutoUpdate]=\"false\" [parameters]=\"parameters()\">\n\t\t\t\t<ngt-group #gizmo [visible]=\"visible()\" [position]=\"offset()\" [rotation]=\"rotation()\">\n\t\t\t\t\t@if (enabled()) {\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[0]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"0\" [direction]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"1\" [direction]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"2\" [direction]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[0] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"2\" [dir1]=\"xDir\" [dir2]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[0] && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"1\" [dir1]=\"zDir\" [dir2]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[2] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"0\" [dir1]=\"yDir\" [dir2]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[0] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"2\" [dir1]=\"xDir\" [dir2]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[0] && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"1\" [dir1]=\"zDir\" [dir2]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[2] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"0\" [dir1]=\"yDir\" [dir2]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[0]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"0\" [direction]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"1\" [direction]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"2\" [direction]=\"zDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t</ngt-group>\n\t\t\t\t<ngt-group #children>\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsAxisArrow, NgtsPlaneSlider, NgtsAxisRotator, NgtsScalingSphere],\n})\n// TODO: PivotControls is not working properly with control flow\nexport class NgtsPivotControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'enabled',\n\t\t'matrix',\n\t\t'autoTransform',\n\t\t'anchor',\n\t\t'disableAxes',\n\t\t'disableSliders',\n\t\t'disableRotations',\n\t\t'disableScaling',\n\t\t'activeAxes',\n\t\t'offset',\n\t\t'rotation',\n\t\t'scale',\n\t\t'lineWidth',\n\t\t'fixed',\n\t\t'translationLimits',\n\t\t'rotationLimits',\n\t\t'scaleLimits',\n\t\t'depthTest',\n\t\t'axisColors',\n\t\t'hoveredColor',\n\t\t'annotations',\n\t\t'annotationsClass',\n\t\t'opacity',\n\t\t'visible',\n\t\t'userData',\n\t]);\n\n\tdragStarted = output<OnDragStartParameters>();\n\tdragEnded = output<void>();\n\tdragged = output<OnDragParameters>();\n\n\tmatrix = pick(this.options, 'matrix');\n\tannotations = pick(this.options, 'annotations');\n\tannotationsClass = pick(this.options, 'annotationsClass');\n\ttranslationLimits = pick(this.options, 'translationLimits');\n\trotationLimits = pick(this.options, 'rotationLimits');\n\tscaleLimits = pick(this.options, 'scaleLimits');\n\tautoTransform = pick(this.options, 'autoTransform');\n\tfixed = pick(this.options, 'fixed');\n\thoveredColor = pick(this.options, 'hoveredColor');\n\taxisColors = pick(this.options, 'axisColors');\n\tlineWidth = pick(this.options, 'lineWidth');\n\tscale = pick(this.options, 'scale');\n\tuserData = pick(this.options, 'userData');\n\topacity = pick(this.options, 'opacity');\n\tdepthTest = pick(this.options, 'depthTest');\n\toffset = pick(this.options, 'offset');\n\trotation = pick(this.options, 'rotation');\n\tvisible = pick(this.options, 'visible');\n\tenabled = pick(this.options, 'enabled');\n\tdisableAxes = pick(this.options, 'disableAxes');\n\tdisableSliders = pick(this.options, 'disableSliders');\n\tdisableRotations = pick(this.options, 'disableRotations');\n\tdisableScaling = pick(this.options, 'disableScaling');\n\tactiveAxes = pick(this.options, 'activeAxes');\n\n\txDir = xDir;\n\tyDir = yDir;\n\tzDir = zDir;\n\n\tparentRef = viewChild.required<ElementRef<Group>>('parent');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tgizmoRef = viewChild.required<ElementRef<Group>>('gizmo');\n\tchildrenRef = viewChild.required<ElementRef<Group>>('children');\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\ttranslation: [number, number, number] = [0, 0, 0];\n\n\tprivate anchor = pick(this.options, 'anchor');\n\tprivate cameraScale = new Vector3(1, 1, 1);\n\tprivate gizmoScale = new Vector3(1, 1, 1);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tconst anchor = this.anchor();\n\t\t\tif (!anchor) return;\n\n\t\t\tconst childrenContainer = this.childrenRef().nativeElement;\n\t\t\tconst localState = getLocalState(childrenContainer);\n\t\t\tif (!localState) return;\n\n\t\t\tconst [gizmo, offset, invalidate] = [\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.offset(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.options(),\n\t\t\t\t[localState.objects(), localState.nonObjects()],\n\t\t\t];\n\t\t\tchildrenContainer.updateWorldMatrix(true, true);\n\n\t\t\tmPInv.copy(childrenContainer.matrixWorld).invert();\n\t\t\tbb.makeEmpty();\n\n\t\t\tchildrenContainer.traverse((obj) => {\n\t\t\t\tif (!(obj as Mesh).geometry) return;\n\t\t\t\tif (!(obj as Mesh).geometry.boundingBox) (obj as Mesh).geometry.computeBoundingBox();\n\t\t\t\tmL.copy(obj.matrixWorld).premultiply(mPInv);\n\t\t\t\tconst boundingBox = (obj as Mesh).geometry.boundingBox;\n\t\t\t\tif (boundingBox) {\n\t\t\t\t\tbbObj.copy(boundingBox);\n\t\t\t\t\tbbObj.applyMatrix4(mL);\n\t\t\t\t\tbb.union(bbObj);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvCenter.copy(bb.max).add(bb.min).multiplyScalar(0.5);\n\t\t\tvSize.copy(bb.max).sub(bb.min).multiplyScalar(0.5);\n\t\t\tvAnchorOffset\n\t\t\t\t.copy(vSize)\n\t\t\t\t.multiply(new Vector3(...anchor))\n\t\t\t\t.add(vCenter);\n\t\t\tvPosition.set(...offset).add(vAnchorOffset);\n\t\t\tgizmo.position.copy(vPosition);\n\t\t\tinvalidate();\n\t\t});\n\n\t\tconst vec = new Vector3();\n\t\tinjectBeforeRender(({ camera, size, invalidate }) => {\n\t\t\tconst [{ fixed, scale, matrix }, gizmo, group] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (fixed) {\n\t\t\t\tconst sf = calculateScaleFactor(gizmo.getWorldPosition(vec), scale, camera, size);\n\t\t\t\tthis.cameraScale.setScalar(sf);\n\t\t\t}\n\n\t\t\tif (matrix && matrix instanceof Matrix4) {\n\t\t\t\tgroup.matrix = matrix;\n\t\t\t}\n\n\t\t\t// Update gizmo scale in accordance with matrix changes\n\t\t\t// Without this, there might be noticeable turbulence if scaling happens fast enough\n\t\t\tgizmo.updateWorldMatrix(true, true);\n\n\t\t\tmG.makeRotationFromEuler(gizmo.rotation).setPosition(gizmo.position).premultiply(group.matrixWorld);\n\t\t\tthis.gizmoScale.setFromMatrixScale(mG);\n\n\t\t\tvScale.copy(this.cameraScale).divide(this.gizmoScale);\n\n\t\t\tif (\n\t\t\t\tMath.abs(gizmo.scale.x - vScale.x) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.y - vScale.y) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.z - vScale.z) > 1e-4\n\t\t\t) {\n\t\t\t\tgizmo.scale.copy(vScale);\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tonDragStart(parameters: OnDragStartParameters) {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tmL0.copy(group.matrix);\n\t\tmW0.copy(group.matrixWorld);\n\t\tthis.dragStarted.emit(parameters);\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDrag(mdW: Matrix4) {\n\t\tconst [parent, group, autoTransform] = [\n\t\t\tthis.parentRef().nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.autoTransform(),\n\t\t];\n\n\t\tmP.copy(parent.matrixWorld);\n\t\tmPInv.copy(mP).invert();\n\t\t// After applying the delta\n\t\tmW.copy(mW0).premultiply(mdW);\n\t\tmL.copy(mW).premultiply(mPInv);\n\t\tmL0Inv.copy(mL0).invert();\n\t\tmdL.copy(mL).multiply(mL0Inv);\n\n\t\tif (autoTransform) {\n\t\t\tgroup.matrix.copy(mL);\n\t\t}\n\n\t\tthis.dragged.emit({ l: mL, deltaL: mdL, w: mW, deltaW: mdW });\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDragEnd() {\n\t\tthis.dragEnded.emit();\n\t\tthis.store.snapshot.invalidate();\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetLocalState,\n\tinjectStore,\n\tNgtArgs,\n\tNgtGroup,\n\tNgtObject3DNode,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport { Camera, Group, Object3D, Event as ThreeEvent } from 'three';\nimport { TransformControls } from 'three-stdlib';\n\ninterface ControlsProto {\n\tenabled: boolean;\n}\n\nexport type NgtsTransformControlsObject = NgtObject3DNode<TransformControls, typeof TransformControls>;\n\nexport type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> &\n\tPartial<NgtGroup> & {\n\t\tenabled?: boolean;\n\t\taxis?: string | null;\n\t\tdomElement?: HTMLElement;\n\t\tmode?: 'translate' | 'rotate' | 'scale';\n\t\ttranslationSnap?: number | null;\n\t\trotationSnap?: number | null;\n\t\tscaleSnap?: number | null;\n\t\tspace?: 'world' | 'local';\n\t\tsize?: number;\n\t\tshowX?: boolean;\n\t\tshowY?: boolean;\n\t\tshowZ?: boolean;\n\t\tcamera?: Camera;\n\t\tmakeDefault?: boolean;\n\t};\n\n@Component({\n\tselector: 'ngts-transform-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"controlsOptions()\" />\n\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsTransformControls {\n\tobject = input<Object3D | ElementRef<Object3D> | undefined | null>(null);\n\toptions = input({} as Partial<NgtsTransformControlsOptions>);\n\tparameters = omit(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t\t'domElement',\n\t\t'makeDefault',\n\t\t'camera',\n\t]);\n\n\tprotected controlsOptions = pick(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t]);\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tchange = output<ThreeEvent>();\n\tmouseDown = output<ThreeEvent>();\n\tmouseUp = output<ThreeEvent>();\n\tobjectChange = output<ThreeEvent>();\n\n\tprivate groupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate store = injectStore();\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate events = this.store.select('events');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\n\n\tcontrols = computed(() => {\n\t\tlet camera = this.camera();\n\t\tif (!camera) {\n\t\t\tcamera = this.defaultCamera();\n\t\t}\n\n\t\tlet domElement = this.domElement();\n\t\tif (!domElement) {\n\t\t\tdomElement = this.events().connected || this.glDomElement();\n\t\t}\n\n\t\treturn new TransformControls(camera, domElement);\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.attachControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.disableDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.setupControlsEventsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.updateDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t}\n\n\tprivate attachControlsEffect() {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tif (!group) return;\n\n\t\tconst localState = getLocalState(group);\n\t\tif (!localState) return;\n\n\t\tconst [object, controls] = [resolveRef(this.object()), this.controls(), localState.objects()];\n\t\tif (object) {\n\t\t\tcontrols.attach(object);\n\t\t} else {\n\t\t\tcontrols.attach(group);\n\t\t}\n\n\t\treturn () => controls.detach();\n\t}\n\n\tprivate disableDefaultControlsEffect() {\n\t\tconst defaultControls = this.defaultControls();\n\t\tif (!defaultControls) return;\n\n\t\tconst controls = this.controls();\n\t\tconst callback = (event: any) => {\n\t\t\tdefaultControls.enabled = !event.value;\n\t\t};\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('dragging-changed', callback);\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('dragging-changed', callback);\n\t\t};\n\t}\n\n\tprivate setupControlsEventsEffect() {\n\t\tconst [controls, invalidate] = [this.controls(), this.invalidate()];\n\t\tconst onChange = (event: ThreeEvent) => {\n\t\t\tinvalidate();\n\t\t\tif (!this.change['destroyed']) {\n\t\t\t\tthis.change.emit(event);\n\t\t\t}\n\t\t};\n\t\tconst onMouseDown = this.mouseDown.emit.bind(this.mouseDown);\n\t\tconst onMouseUp = this.mouseUp.emit.bind(this.mouseUp);\n\t\tconst onObjectChange = this.objectChange.emit.bind(this.objectChange);\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('change', onChange);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseDown', onMouseDown);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseUp', onMouseUp);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('objectChange', onObjectChange);\n\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('change', onChange);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseDown', onMouseDown);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseUp', onMouseUp);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('objectChange', onObjectChange);\n\t\t};\n\t}\n\n\tprivate updateDefaultControlsEffect() {\n\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\tif (!makeDefault) return;\n\n\t\tconst oldControls = this.store.snapshot.controls;\n\t\tthis.store.update({ controls });\n\t\treturn () => this.store.update(() => ({ controls: oldControls }));\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","vec1","vec2","calculateOffset","upV","offsetMatrix","ray","intersection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-gizmos.mjs","sources":["../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-helper.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewcube.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewport.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-arrow.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-rotator.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/plane-slider.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/scaling-sphere.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/pivot-controls.ts","../../../../libs/soba/gizmos/src/lib/transform-controls.ts","../../../../libs/soba/gizmos/src/angular-three-soba-gizmos.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tSignal,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport { extend, hasListener, injectBeforeRender, injectStore, NgtPortal, NgtPortalContent, pick } from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Matrix4, Object3D, Quaternion, Scene, Vector3 } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nconst turnRate = 2 * Math.PI; // turn rate in angles per second\nconst dummy = new Object3D();\nconst matrix = new Matrix4();\nconst [q1, q2] = [new Quaternion(), new Quaternion()];\nconst target = new Vector3();\nconst targetPosition = new Vector3();\n\n@Directive({ selector: 'ng-template[gizmoHelperContent]', standalone: true })\nexport class NgtsGizmoHelperContent {\n\tstatic ngTemplateContextGuard(_: NgtsGizmoHelperContent, ctx: unknown): ctx is { container: Object3D } {\n\t\treturn true;\n\t}\n}\n\ntype ControlsProto = { update(delta?: number): void; target: Vector3 };\n\nexport interface NgtsGizmoHelperOptions {\n\talignment:\n\t\t| 'top-left'\n\t\t| 'top-right'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'bottom-center'\n\t\t| 'center-right'\n\t\t| 'center-left'\n\t\t| 'center-center'\n\t\t| 'top-center';\n\tmargin: [number, number];\n\trenderPriority: number;\n\tautoClear?: boolean;\n}\n\nconst defaultOptions: NgtsGizmoHelperOptions = {\n\talignment: 'bottom-right',\n\tmargin: [80, 80],\n\trenderPriority: 1,\n};\n\n@Component({\n\tselector: 'ngts-gizmo-helper',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal\n\t\t\t[container]=\"scene\"\n\t\t\t[autoRender]=\"true\"\n\t\t\t[autoRenderPriority]=\"renderPriority()\"\n\t\t\t[state]=\"{ events: { priority: renderPriority() + 1 } }\"\n\t\t>\n\t\t\t<ng-template portalContent let-injector=\"injector\" let-container=\"container\">\n\t\t\t\t<ngts-orthographic-camera [options]=\"{ makeDefault: true, position: [0, 0, 200] }\" />\n\t\t\t\t<ngt-group #gizmo [position]=\"[x(), y(), 0]\">\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ container, injector }\"\n\t\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-group>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtPortal, NgtPortalContent, NgtsOrthographicCamera, NgTemplateOutlet],\n})\nexport class NgtsGizmoHelper {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tupdate = output<void>();\n\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected margin = pick(this.options, 'margin');\n\tprotected alignment = pick(this.options, 'alignment');\n\n\tprotected scene = new Scene();\n\n\tprotected content = contentChild.required(NgtsGizmoHelperContent, { read: TemplateRef });\n\n\tprivate gizmoRef = viewChild<ElementRef<Group>>('gizmo');\n\tprivate virtualCameraRef = viewChild(NgtsOrthographicCamera);\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\tprivate mainCamera = this.store.select('camera');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\n\n\tprotected x = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.endsWith('-center')) return 0;\n\n\t\tconst [{ width }, [marginX]] = [this.size(), this.margin()];\n\t\treturn alignment.endsWith('-left') ? -width / 2 + marginX : width / 2 - marginX;\n\t});\n\tprotected y = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.startsWith('center-')) return 0;\n\n\t\tconst [{ height }, [marginY]] = [this.size(), this.margin()];\n\t\treturn alignment.startsWith('top-') ? height / 2 - marginY : -height / 2 + marginY;\n\t});\n\n\tprivate animating = false;\n\tprivate radius = 0;\n\tprivate focusPoint = new Vector3(0, 0, 0);\n\tprivate defaultUp = new Vector3(0, 0, 0);\n\n\tconstructor() {\n\t\textend({ Group });\n\t\teffect(() => {\n\t\t\tthis.updateDefaultUpEffect();\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [virtualCamera, gizmo] = [\n\t\t\t\tthis.virtualCameraRef()?.cameraRef()?.nativeElement,\n\t\t\t\tthis.gizmoRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tif (!virtualCamera || !gizmo) return;\n\n\t\t\tconst [defaultControls, mainCamera, invalidate] = [this.defaultControls(), this.mainCamera(), this.invalidate()];\n\n\t\t\t// Animate step\n\t\t\tif (this.animating) {\n\t\t\t\tif (q1.angleTo(q2) < 0.01) {\n\t\t\t\t\tthis.animating = false;\n\t\t\t\t\t// Orbit controls uses UP vector as the orbit axes,\n\t\t\t\t\t// so we need to reset it after the animation is done\n\t\t\t\t\t// moving it around for the controls to work correctly\n\t\t\t\t\tif (this.isOrbitControls(defaultControls)) {\n\t\t\t\t\t\tmainCamera.up.copy(this.defaultUp);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst step = delta * turnRate;\n\t\t\t\t\t// animate position by doing a slerp and then scaling the position on the unit sphere\n\t\t\t\t\tq1.rotateTowards(q2, step);\n\t\t\t\t\t// animate orientation\n\t\t\t\t\tmainCamera.position.set(0, 0, 1).applyQuaternion(q1).multiplyScalar(this.radius).add(this.focusPoint);\n\t\t\t\t\tmainCamera.up.set(0, 1, 0).applyQuaternion(q1).normalize();\n\t\t\t\t\tmainCamera.quaternion.copy(q1);\n\n\t\t\t\t\tif (this.isCameraControls(defaultControls)) {\n\t\t\t\t\t\tvoid defaultControls.setPosition(mainCamera.position.x, mainCamera.position.y, mainCamera.position.z);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasListener(this.update)) this.update.emit();\n\t\t\t\t\telse if (defaultControls) defaultControls.update(delta);\n\n\t\t\t\t\tinvalidate();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sync Gizmo with main camera orientation\n\t\t\tmatrix.copy(mainCamera.matrix).invert();\n\t\t\tgizmo.quaternion.setFromRotationMatrix(matrix);\n\t\t});\n\t}\n\n\ttweenCamera(direction: Vector3) {\n\t\tconst [defaultControls, invalidate, mainCamera] = [this.defaultControls(), this.invalidate(), this.mainCamera()];\n\n\t\tthis.animating = true;\n\t\tif (defaultControls) {\n\t\t\tthis.focusPoint = this.isCameraControls(defaultControls)\n\t\t\t\t? defaultControls.getTarget(this.focusPoint)\n\t\t\t\t: defaultControls.target;\n\t\t}\n\t\tthis.radius = mainCamera.position.distanceTo(target);\n\n\t\t// Rotate from current camera orientation\n\t\tq1.copy(mainCamera.quaternion);\n\n\t\t// To new current camera orientation\n\t\ttargetPosition.copy(direction).multiplyScalar(this.radius).add(target);\n\t\tdummy.lookAt(targetPosition);\n\t\tq2.copy(dummy.quaternion);\n\n\t\tinvalidate();\n\t}\n\n\tprivate updateDefaultUpEffect() {\n\t\tconst mainCamera = this.mainCamera();\n\t\tthis.defaultUp.copy(mainCamera.up);\n\t}\n\n\tprivate isOrbitControls(controls: ControlsProto): controls is OrbitControls {\n\t\treturn 'minPolarAngle' in (controls as OrbitControls);\n\t}\n\n\tprivate isCameraControls(controls: CameraControls | ControlsProto): controls is CameraControls {\n\t\treturn 'getTarget' in (controls as CameraControls);\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEventHandlers,\n\tNgtThreeEvent,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { BoxGeometry, CanvasTexture, Group, Mesh, MeshBasicMaterial, Vector3 } from 'three';\nimport { NgtsGizmoHelper } from './gizmo-helper';\n\ntype XYZ = [number, number, number];\n\nconst colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };\nconst defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];\n\nexport interface NgtsViewcubeCommonOptions {\n\tfont: string;\n\topacity: number;\n\tcolor: string;\n\thoverColor: string;\n\ttextColor: string;\n\tstrokeColor: string;\n\tfaces: string[];\n}\n\nconst defaultFaceMaterialOptions: NgtsViewcubeCommonOptions = {\n\tfont: '20px Inter var, Arial, sans-serif',\n\tfaces: defaultFaces,\n\tcolor: colors.bg,\n\thoverColor: colors.hover,\n\ttextColor: colors.text,\n\tstrokeColor: colors.stroke,\n\topacity: 1,\n};\n\n@Component({\n\tselector: 'viewcube-face-material',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh-basic-material\n\t\t\t[attach]=\"['material', index()]\"\n\t\t\t[map]=\"texture()\"\n\t\t\t[color]=\"materialColor()\"\n\t\t\t[transparent]=\"true\"\n\t\t\t[opacity]=\"opacity()\"\n\t\t/>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FaceMaterial {\n\thover = input.required<boolean>();\n\tindex = input.required<number>();\n\toptions = input(defaultFaceMaterialOptions, { transform: mergeInputs(defaultFaceMaterialOptions) });\n\n\tprivate faces = pick(this.options, 'faces');\n\tprivate font = pick(this.options, 'font');\n\tprivate color = pick(this.options, 'color');\n\tprivate textColor = pick(this.options, 'textColor');\n\tprivate strokeColor = pick(this.options, 'strokeColor');\n\tprivate hoverColor = pick(this.options, 'hoverColor');\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected materialColor = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\tprotected texture = computed(() => {\n\t\tconst [index, faces, font, color, textColor, strokeColor, gl] = [\n\t\t\tthis.index(),\n\t\t\tthis.faces(),\n\t\t\tthis.font(),\n\t\t\tthis.color(),\n\t\t\tthis.textColor(),\n\t\t\tthis.strokeColor(),\n\t\t\tthis.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 128;\n\t\tcanvas.height = 128;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.fillStyle = color;\n\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.strokeStyle = strokeColor;\n\t\tcontext.strokeRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.font = font;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.fillStyle = textColor;\n\t\tcontext.fillText(faces[index].toUpperCase(), 64, 76);\n\n\t\tconst texture = new CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\n\t\treturn texture;\n\t});\n\n\tconstructor() {\n\t\textend({ MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewcube-face-cube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t(pointerout)=\"$any($event).stopPropagation(); hover.set(-1)\"\n\t\t\t(pointermove)=\"$any($event).stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))\"\n\t\t\t(click)=\"internalOnClick($any($event))\"\n\t\t>\n\t\t\t<ngt-box-geometry />\n\t\t\t@for (face of count; track $index) {\n\t\t\t\t<viewcube-face-material [index]=\"$index\" [hover]=\"hover() === $index\" [options]=\"options()\" />\n\t\t\t}\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [FaceMaterial],\n})\nexport class FaceCube {\n\toptions = input({} as Partial<NgtsViewcubeCommonOptions>);\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelper);\n\n\tprotected hover = signal(-1);\n\tprotected count = Array.from({ length: 6 });\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry });\n\t}\n\n\tinternalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(event.face!.normal);\n\t\t}\n\t}\n\n\tprotected readonly Math = Math;\n}\n\n@Component({\n\tselector: 'viewcube-edge-cube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t[scale]=\"1.01\"\n\t\t\t[position]=\"position()\"\n\t\t\t(pointerout)=\"$any($event).stopPropagation(); hover.set(false)\"\n\t\t\t(pointerover)=\"$any($event).stopPropagation(); hover.set(true)\"\n\t\t\t(click)=\"internalOnClick($any($event))\"\n\t\t>\n\t\t\t<ngt-mesh-basic-material [transparent]=\"true\" [opacity]=\"0.6\" [color]=\"color()\" [visible]=\"hover()\" />\n\t\t\t<ngt-box-geometry *args=\"dimensions()\" />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class EdgeCube {\n\tdimensions = input.required<XYZ>();\n\tposition = input.required<Vector3>();\n\thoverColor = input(colors.hover, {\n\t\ttransform: (value: string | undefined) => {\n\t\t\tif (value === undefined) return colors.hover;\n\t\t\treturn value;\n\t\t},\n\t});\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelper);\n\n\tprotected hover = signal(false);\n\tprotected color = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry, MeshBasicMaterial });\n\t}\n\n\tinternalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(this.position());\n\t\t}\n\t}\n}\n\nexport type NgtsGizmoViewcubeOptions = Partial<NgtsViewcubeCommonOptions>;\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [scale]=\"60\">\n\t\t\t<viewcube-face-cube [options]=\"options()\" [onClick]=\"onClick\" />\n\t\t\t@for (edge of edges; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"edge\"\n\t\t\t\t\t[dimensions]=\"edgeDimensions[$index]\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\t@for (corner of corners; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"corner\"\n\t\t\t\t\t[dimensions]=\"cornerDimensions\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\n\t\t\t\t/>\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [FaceCube, EdgeCube],\n})\nexport class NgtsGizmoViewcube {\n\toptions = input({} as Partial<NgtsGizmoViewcubeOptions>);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected hoverColor = pick(this.options, 'hoverColor');\n\n\tprotected corners: Vector3[] = [\n\t\t[1, 1, 1],\n\t\t[1, 1, -1],\n\t\t[1, -1, 1],\n\t\t[1, -1, -1],\n\t\t[-1, 1, 1],\n\t\t[-1, 1, -1],\n\t\t[-1, -1, 1],\n\t\t[-1, -1, -1],\n\t].map(this.makePositionVector);\n\tprotected cornerDimensions: XYZ = [0.25, 0.25, 0.25];\n\tprotected edges: Vector3[] = [\n\t\t[1, 1, 0],\n\t\t[1, 0, 1],\n\t\t[1, 0, -1],\n\t\t[1, -1, 0],\n\t\t[0, 1, 1],\n\t\t[0, 1, -1],\n\t\t[0, -1, 1],\n\t\t[0, -1, -1],\n\t\t[-1, 1, 0],\n\t\t[-1, 0, 1],\n\t\t[-1, 0, -1],\n\t\t[-1, -1, 0],\n\t].map(this.makePositionVector);\n\tprotected edgeDimensions = this.edges.map(\n\t\t(edge) => edge.toArray().map((axis: number): number => (axis == 0 ? 0.5 : 0.25)) as XYZ,\n\t);\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n\n\tprivate makePositionVector(xyz: number[]) {\n\t\treturn new Vector3(...xyz).multiplyScalar(0.38);\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEventHandlers,\n\tNgtGroup,\n\tNgtThreeEvent,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBoxGeometry,\n\tCanvasTexture,\n\tColorRepresentation,\n\tGroup,\n\tMesh,\n\tMeshBasicMaterial,\n\tSprite,\n\tSpriteMaterial,\n} from 'three';\nimport { NgtsGizmoHelper } from './gizmo-helper';\n\n@Component({\n\tselector: 'viewport-axis',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [rotation]=\"rotation()\">\n\t\t\t<ngt-mesh [position]=\"[0.4, 0, 0]\">\n\t\t\t\t<ngt-box-geometry *args=\"scale()\" />\n\t\t\t\t<ngt-mesh-basic-material [color]=\"color()\" [toneMapped]=\"false\" />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class Axis {\n\tscale = input([0.8, 0.05, 0.05], {\n\t\ttransform: (value: [number, number, number] | undefined) => {\n\t\t\tif (value === undefined) return [0.8, 0.05, 0.05];\n\t\t\treturn value;\n\t\t},\n\t});\n\tcolor = input<ColorRepresentation>();\n\trotation = input<NgtVector3>([0, 0, 0]);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, BoxGeometry, MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewport-axis-head',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-sprite\n\t\t\t[scale]=\"scale()\"\n\t\t\t[position]=\"position()\"\n\t\t\t(pointerover)=\"onPointerOver($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t>\n\t\t\t<ngt-sprite-material [map]=\"texture()\" [alphaTest]=\"0.3\" [opacity]=\"label() ? 1 : 0.75\" [toneMapped]=\"false\" />\n\t\t</ngt-sprite>\n\t`,\n\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AxisHead {\n\tarcStyle = input.required<string>();\n\tposition = input.required<NgtVector3>();\n\tlabel = input<string>();\n\tlabelColor = input('#000');\n\taxisHeadScale = input(1);\n\tdisabled = input(false);\n\tfont = input('18px Inter var, Arial, sans-serif');\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate document = inject(DOCUMENT);\n\tprivate gizmoHelper = inject(NgtsGizmoHelper);\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\n\tprotected texture = computed(() => {\n\t\tconst [arcStyle, label, labelColor, font, gl] = [\n\t\t\tthis.arcStyle(),\n\t\t\tthis.label(),\n\t\t\tthis.labelColor(),\n\t\t\tthis.font(),\n\t\t\tthis.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 64;\n\t\tcanvas.height = 64;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.beginPath();\n\t\tcontext.arc(32, 32, 16, 0, 2 * Math.PI);\n\t\tcontext.closePath();\n\t\tcontext.fillStyle = arcStyle;\n\t\tcontext.fill();\n\n\t\tif (label) {\n\t\t\tcontext.font = font;\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.fillStyle = labelColor;\n\t\t\tcontext.fillText(label, 32, 41);\n\t\t}\n\n\t\tconst texture = new CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\t\treturn texture;\n\t});\n\n\tprotected active = signal(false);\n\tprotected scale = computed(() => (this.label() ? 1 : 0.75) * (this.active() ? 1.2 : 1) * this.axisHeadScale());\n\n\tconstructor() {\n\t\textend({ Sprite, SpriteMaterial });\n\t}\n\n\tonPointerOver(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tevent.stopPropagation();\n\t\tthis.active.set(true);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.active.set(false);\n\t\t}\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\t\tevent.stopPropagation();\n\t\tthis.gizmoHelper.tweenCamera(event.object.position);\n\t}\n}\n\nexport interface NgtsGizmoViewportOptions extends Partial<NgtGroup> {\n\taxisColors: [string, string, string];\n\taxisScale?: [number, number, number];\n\tlabels: [string, string, string];\n\taxisHeadScale: number;\n\tlabelColor: string;\n\thideNegativeAxes: boolean;\n\thideAxisHeads: boolean;\n\tdisabled: boolean;\n\tfont: string;\n}\n\nconst defaultOptions: NgtsGizmoViewportOptions = {\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\tlabels: ['X', 'Y', 'Z'],\n\taxisHeadScale: 1,\n\tlabelColor: '#000',\n\thideNegativeAxes: false,\n\thideAxisHeads: false,\n\tdisabled: false,\n\tfont: '18px Inter var, Arial, sans-serif',\n};\n\n@Component({\n\tselector: 'ngts-gizmo-viewport',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [scale]=\"40\" [parameters]=\"parameters()\">\n\t\t\t<viewport-axis [color]=\"axisColors()[0]\" [rotation]=\"[0, 0, 0]\" [scale]=\"axisScale()\" />\n\t\t\t<viewport-axis [color]=\"axisColors()[1]\" [rotation]=\"[0, 0, Math.PI / 2]\" [scale]=\"axisScale()\" />\n\t\t\t<viewport-axis [color]=\"axisColors()[2]\" [rotation]=\"[0, -Math.PI / 2, 0]\" [scale]=\"axisScale()\" />\n\n\t\t\t@if (!hideAxisHeads()) {\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[0]\"\n\t\t\t\t\t[position]=\"[1, 0, 0]\"\n\t\t\t\t\t[label]=\"labels()[0]\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[1]\"\n\t\t\t\t\t[position]=\"[0, 1, 0]\"\n\t\t\t\t\t[label]=\"labels()[1]\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"axisColors()[2]\"\n\t\t\t\t\t[position]=\"[0, 0, 1]\"\n\t\t\t\t\t[label]=\"labels()[2]\"\n\t\t\t\t\t[labelColor]=\"labelColor()\"\n\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\n\t\t\t\t@if (!hideNegativeAxes()) {\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[0]\"\n\t\t\t\t\t\t[position]=\"[-1, 0, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[1]\"\n\t\t\t\t\t\t[position]=\"[0, -1, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"axisColors()[2]\"\n\t\t\t\t\t\t[position]=\"[0, 0, -1]\"\n\t\t\t\t\t\t[axisHeadScale]=\"axisHeadScale()\"\n\t\t\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [Axis, AxisHead],\n})\nexport class NgtsGizmoViewport {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'axisColors',\n\t\t'axisScale',\n\t\t'labels',\n\t\t'axisHeadScale',\n\t\t'labelColor',\n\t\t'hideNegativeAxes',\n\t\t'hideAxisHeads',\n\t\t'disabled',\n\t\t'font',\n\t]);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected axisColors = pick(this.options, 'axisColors');\n\tprotected axisScale = pick(this.options, 'axisScale');\n\tprotected hideAxisHeads = pick(this.options, 'hideAxisHeads');\n\tprotected hideNegativeAxes = pick(this.options, 'hideNegativeAxes');\n\tprotected labels = pick(this.options, 'labels');\n\tprotected axisHeadScale = pick(this.options, 'axisHeadScale');\n\tprotected labelColor = pick(this.options, 'labelColor');\n\tprotected disabled = pick(this.options, 'disabled');\n\tprotected font = pick(this.options, 'font');\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport {\n\tConeGeometry,\n\tCylinderGeometry,\n\tDoubleSide,\n\tGroup,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tQuaternion,\n\tVector3,\n} from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-axis-arrow',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, -coneLength(), 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"false\"\n\t\t\t\t\t[position]=\"[0, (cylinderLength() + coneLength()) / 2.0, 0]\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-cylinder-geometry\n\t\t\t\t\t\t*args=\"[coneWidth() * 1.4, coneWidth() * 1.4, cylinderLength() + coneLength(), 8, 1]\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"[0, 0, 0, 0, cylinderLength(), 0]\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\traycast: null,\n\t\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\trenderOrder: 1,\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-mesh [raycast]=\"null\" [position]=\"[0, cylinderLength() + coneLength() / 2.0, 0]\" [renderOrder]=\"500\">\n\t\t\t\t\t<ngt-cone-geometry *args=\"[coneWidth(), coneLength(), 24, 1]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisArrow {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; dir: Vector3 } | null = null;\n\tprivate offset0 = 0;\n\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconeWidth = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.6\n\t\t\t: this.pivotControls.scale() / 20,\n\t);\n\tconeLength = computed(() => (this.pivotControls.fixed() ? 0.2 : this.pivotControls.scale() / 5));\n\tcylinderLength = computed(() =>\n\t\tthis.pivotControls.fixed() ? 1 - this.coneLength() : this.pivotControls.scale() - this.coneLength(),\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, ConeGeometry, CylinderGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [group, direction, axis, controls, annotation] = [\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tthis.clickInfo = { clickPoint, dir };\n\t\tthis.offset0 = this.pivotControls.translation[axis];\n\t\tthis.pivotControls.onDragStart({ component: 'Arrow', axis, origin, directions: [dir] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\n\t\tif (!this.hovered()) {\n\t\t\tthis.hovered.set(true);\n\t\t}\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir } = this.clickInfo;\n\t\t\tconst [translationLimits, annotation, axis] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.axis(),\n\t\t\t];\n\n\t\t\tconst [min, max] = translationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tlet offset = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tif (min !== undefined) {\n\t\t\t\toffset = Math.max(offset, min - this.offset0);\n\t\t\t}\n\n\t\t\tif (max !== undefined) {\n\t\t\t\toffset = Math.min(offset, max - this.offset0);\n\t\t\t}\n\n\t\t\tthis.pivotControls.translation[axis] = this.offset0 + offset;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(dir.x * offset, dir.y * offset, dir.z * offset);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tSignal,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Plane, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst clickDir = new Vector3();\nconst intersectionDir = new Vector3();\n\nfunction toDegrees(radians: number) {\n\treturn (radians * 180) / Math.PI;\n}\n\nfunction toRadians(degrees: number) {\n\treturn (degrees * Math.PI) / 180;\n}\n\nfunction calculateAngle(clickPoint: Vector3, intersectionPoint: Vector3, origin: Vector3, e1: Vector3, e2: Vector3) {\n\tclickDir.copy(clickPoint).sub(origin);\n\tintersectionDir.copy(intersectionPoint).sub(origin);\n\tconst dote1e1 = e1.dot(e1);\n\tconst dote2e2 = e2.dot(e2);\n\tconst uClick = clickDir.dot(e1) / dote1e1;\n\tconst vClick = clickDir.dot(e2) / dote2e2;\n\tconst uIntersection = intersectionDir.dot(e1) / dote1e1;\n\tconst vIntersection = intersectionDir.dot(e2) / dote2e2;\n\tconst angleClick = Math.atan2(vClick, uClick);\n\tconst angleIntersection = Math.atan2(vIntersection, uIntersection);\n\treturn angleIntersection - angleClick;\n}\n\nfunction fmod(num: number, denom: number) {\n\tlet k = Math.floor(num / denom);\n\tk = k < 0 ? k + 1 : k;\n\n\treturn num - k * denom;\n}\n\nfunction minimizeAngle(angle: number) {\n\tlet result = fmod(angle, 2 * Math.PI);\n\n\tif (Math.abs(result) < 1e-6) {\n\t\treturn 0.0;\n\t}\n\n\tif (result < 0.0) {\n\t\tresult += 2 * Math.PI;\n\t}\n\n\treturn result;\n}\n\nconst rotMatrix = new Matrix4();\nconst posNew = new Vector3();\nconst ray = new Ray();\nconst intersection = new Vector3();\n\n@Component({\n\tselector: 'ngts-axis-rotator',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group\n\t\t\t#group\n\t\t\t[matrix]=\"matrixL()\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t>\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [r(), r(), 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{ lineWidth: pivotControls.lineWidth() * 4, visible: false, userData: pivotControls.userData() }\"\n\t\t\t/>\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{\n\t\t\t\t\ttransparent: true,\n\t\t\t\t\traycast: null,\n\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\tcolor: hovered() ? pivotControls.hoveredColor() : pivotControls.axisColors()[axis()],\n\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\tfog: false,\n\t\t\t\t}\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisRotator {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\thovered = signal(false);\n\tprivate angle = 0;\n\tprivate angle0 = 0;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\torigin: Vector3;\n\t\te1: Vector3;\n\t\te2: Vector3;\n\t\tnormal: Vector3;\n\t\tplane: Plane;\n\t} | null = null;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\tr = computed(() => (this.pivotControls.fixed() ? 0.65 : this.pivotControls.scale() * 0.65));\n\tarc = computed(() => {\n\t\tconst segments = 32;\n\t\tconst points: Vector3[] = [];\n\t\tfor (let j = 0; j <= segments; j++) {\n\t\t\tconst angle = (j * (Math.PI / 2)) / segments;\n\t\t\tpoints.push(new Vector3(Math.cos(angle) * this.r(), Math.sin(angle) * this.r(), 0));\n\t\t}\n\t\treturn points;\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, group, axis, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${toDegrees(this.angle).toFixed(0)}º`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, origin, e1, e2, normal, plane };\n\t\tthis.pivotControls.onDragStart({ component: 'Rotator', axis, origin, directions: [e1, e2, normal] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not a function on PointerEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, origin, e1, e2, normal, plane } = this.clickInfo;\n\t\t\tconst [rotationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.rotationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = rotationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tlet deltaAngle = calculateAngle(clickPoint, intersection, origin, e1, e2);\n\t\t\tlet degrees = toDegrees(deltaAngle);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tdegrees = Math.round(degrees / 10) * 10;\n\t\t\t\tdeltaAngle = toRadians(degrees);\n\t\t\t}\n\n\t\t\tif (min !== undefined && max !== undefined && max - min < 2 * Math.PI) {\n\t\t\t\tdeltaAngle = minimizeAngle(deltaAngle);\n\t\t\t\tdeltaAngle = deltaAngle > Math.PI ? deltaAngle - 2 * Math.PI : deltaAngle;\n\t\t\t\tdeltaAngle = Math.round(deltaAngle / 10) * 10;\n\t\t\t\tthis.angle = this.angle0 + deltaAngle;\n\t\t\t} else {\n\t\t\t\tthis.angle = minimizeAngle(this.angle0 + deltaAngle);\n\t\t\t\tthis.angle = this.angle > Math.PI ? this.angle - 2 * Math.PI : this.angle;\n\t\t\t}\n\n\t\t\tif (annotation) {\n\t\t\t\tdegrees = toDegrees(this.angle);\n\t\t\t\tannotation.innerText = `${degrees.toFixed(0)}º`;\n\t\t\t}\n\n\t\t\trotMatrix.makeRotationAxis(normal, deltaAngle);\n\t\t\tposNew.copy(origin).applyMatrix4(rotMatrix).sub(origin).negate();\n\t\t\trotMatrix.setPosition(posNew);\n\t\t\tthis.pivotControls.onDrag(rotMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not a function on PointerEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Mesh, MeshBasicMaterial, Plane, PlaneGeometry, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nfunction decomposeIntoBasis(e1: Vector3, e2: Vector3, offset: Vector3) {\n\tconst i1 =\n\t\tMath.abs(e1.x) >= Math.abs(e1.y) && Math.abs(e1.x) >= Math.abs(e1.z)\n\t\t\t? 0\n\t\t\t: Math.abs(e1.y) >= Math.abs(e1.x) && Math.abs(e1.y) >= Math.abs(e1.z)\n\t\t\t\t? 1\n\t\t\t\t: 2;\n\tconst e2DegrowthOrder = [0, 1, 2].sort((a, b) => Math.abs(e2.getComponent(b)) - Math.abs(e2.getComponent(a)));\n\tconst i2 = i1 === e2DegrowthOrder[0] ? e2DegrowthOrder[1] : e2DegrowthOrder[0];\n\tconst a1 = e1.getComponent(i1);\n\tconst a2 = e1.getComponent(i2);\n\tconst b1 = e2.getComponent(i1);\n\tconst b2 = e2.getComponent(i2);\n\tconst c1 = offset.getComponent(i1);\n\tconst c2 = offset.getComponent(i2);\n\n\tconst y = (c2 - c1 * (a2 / a1)) / (b2 - b1 * (a2 / a1));\n\tconst x = (c1 - y * b1) / a1;\n\n\treturn [x, y];\n}\n\nconst ray = new Ray();\nconst intersection = new Vector3();\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-plane-slider',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [matrix]=\"matrixL()\" [matrixAutoUpdate]=\"false\">\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [0, 0, 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\t\t\t<ngt-group [position]=\"[pos1() * 1.7, pos1() * 1.7, 0]\">\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"true\"\n\t\t\t\t\t[scale]=\"length()\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"points()\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\tposition: [-length() / 2, -length() / 2, 0],\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\tuserData: pivotControls.userData(),\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtsLine],\n})\nexport class NgtsPlaneSlider {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; e1: Vector3; e2: Vector3; plane: Plane } | null = null;\n\tprivate offsetX0 = 0;\n\tprivate offsetY0 = 0;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\n\tpos1 = computed(() => (this.pivotControls.fixed() ? 1 / 7 : this.pivotControls.scale() / 7));\n\tlength = computed(() => (this.pivotControls.fixed() ? 0.225 : this.pivotControls.scale() * 0.225));\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\tpoints = computed(() => {\n\t\tconst length = this.length();\n\t\treturn [\n\t\t\tnew Vector3(0, 0, 0),\n\t\t\tnew Vector3(0, length, 0),\n\t\t\tnew Vector3(length, length, 0),\n\t\t\tnew Vector3(length, 0, 0),\n\t\t\tnew Vector3(0, 0, 0),\n\t\t];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, axis, group, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, e1, e2, plane };\n\t\tthis.offsetX0 = this.pivotControls.translation[(axis + 1) % 3];\n\t\tthis.offsetY0 = this.pivotControls.translation[(axis + 2) % 3];\n\t\tthis.pivotControls.onDragStart({ component: 'Slider', axis, origin, directions: [e1, e2, normal] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not defined on ThreeEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, e1, e2, plane } = this.clickInfo;\n\t\t\tconst [translationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [minX, maxX] = translationLimits?.[(axis + 1) % 3] || [undefined, undefined];\n\t\t\tconst [minY, maxY] = translationLimits?.[(axis + 2) % 3] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tintersection.sub(clickPoint);\n\t\t\tlet [offsetX, offsetY] = decomposeIntoBasis(e1, e2, intersection);\n\t\t\t/* let offsetY = (intersection.y - (intersection.x * e1.y) / e1.x) / (e2.y - (e2.x * e1.y) / e1.x)\n let offsetX = (intersection.x - offsetY * e2.x) / e1.x */\n\t\t\tif (minX !== undefined) {\n\t\t\t\toffsetX = Math.max(offsetX, minX - this.offsetX0);\n\t\t\t}\n\t\t\tif (maxX !== undefined) {\n\t\t\t\toffsetX = Math.min(offsetX, maxX - this.offsetX0);\n\t\t\t}\n\t\t\tif (minY !== undefined) {\n\t\t\t\toffsetY = Math.max(offsetY, minY - this.offsetY0);\n\t\t\t}\n\t\t\tif (maxY !== undefined) {\n\t\t\t\toffsetY = Math.min(offsetY, maxY - this.offsetY0);\n\t\t\t}\n\t\t\tthis.pivotControls.translation[(axis + 1) % 3] = this.offsetX0 + offsetX;\n\t\t\tthis.pivotControls.translation[(axis + 2) % 3] = this.offsetY0 + offsetY;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(\n\t\t\t\toffsetX * e1.x + offsetY * e2.x,\n\t\t\t\toffsetX * e1.y + offsetY * e2.y,\n\t\t\t\toffsetX * e1.z + offsetY * e2.z,\n\t\t\t);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not defined on ThreeEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { calculateScaleFactor, NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { Group, Matrix4, Mesh, MeshBasicMaterial, Quaternion, SphereGeometry, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst scaleV = new Vector3();\nconst scaleMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-scaling-sphere',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, position() / 2, 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\t\t\t\t<ngt-mesh #mesh [position]=\"[0, position(), 0]\" [renderOrder]=\"500\" [userData]=\"pivotControls.userData()\">\n\t\t\t\t\t<ngt-sphere-geometry *args=\"[radius(), 12, 12]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtArgs],\n})\nexport class NgtsScalingSphere {\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\tprivate size = this.store.select('size');\n\n\tprivate hovered = signal(false);\n\tprivate scale0 = 1;\n\tprivate scaleCurrent = 1;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\tdir: Vector3;\n\t\tmPLG: Matrix4;\n\t\tmPLGInv: Matrix4;\n\t\toffsetMultiplier: number;\n\t} | null = null;\n\n\tposition = computed(() => (this.pivotControls.fixed() ? 1.2 : 1.2 * this.pivotControls.scale()));\n\tradius = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.8\n\t\t\t: this.pivotControls.scale() / 22.5,\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, SphereGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, fixed, scale, direction, axis, size, group] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.pivotControls.fixed(),\n\t\t\tthis.pivotControls.scale(),\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.size(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${scale.toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tconst mPLG = group.matrixWorld.clone();\n\t\tconst mPLGInv = mPLG.clone().invert();\n\t\tconst offsetMultiplier = fixed\n\t\t\t? 1 / calculateScaleFactor(group.getWorldPosition(vec1), scale, event.camera, size)\n\t\t\t: 1;\n\t\tthis.clickInfo = { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier };\n\t\tthis.pivotControls.onDragStart({ component: 'Sphere', axis, origin, directions: [dir] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier } = this.clickInfo;\n\t\t\tconst [scaleLimits, axis, position, annotation, fixed, scale, mesh] = [\n\t\t\t\tthis.pivotControls.scaleLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.pivotControls.fixed(),\n\t\t\t\tthis.pivotControls.scale(),\n\t\t\t\tthis.meshRef().nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = scaleLimits?.[axis] || [1e-5, undefined]; // always limit the minimal value, since setting it very low might break the transform\n\t\t\tconst offsetW = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tconst offsetL = offsetW * offsetMultiplier;\n\t\t\tconst offsetH = fixed ? offsetL : offsetL / scale;\n\t\t\tlet upscale = Math.pow(2, offsetH * 0.2);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tupscale = Math.round(upscale * 10) / 10;\n\t\t\t}\n\n\t\t\tupscale = Math.max(upscale, min / this.scale0);\n\n\t\t\tif (max !== undefined) {\n\t\t\t\tupscale = Math.min(upscale, max / this.scale0);\n\t\t\t}\n\n\t\t\tthis.scaleCurrent = this.scale0 * upscale;\n\t\t\tmesh.position.set(0, position + offsetL, 0);\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.scaleCurrent.toFixed(2)}`;\n\t\t\t}\n\n\t\t\tscaleV.set(1, 1, 1);\n\t\t\tscaleV.setComponent(axis, upscale);\n\t\t\tscaleMatrix.makeScale(scaleV.x, scaleV.y, scaleV.z).premultiply(mPLG).multiply(mPLGInv);\n\t\t\tthis.pivotControls.onDrag(scaleMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, position, mesh] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.position(),\n\t\t\tthis.meshRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.scale0 = this.scaleCurrent;\n\t\tthis.clickInfo = null;\n\t\tmesh.position.set(0, position, 0);\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, NgtAnyRecord, omit, pick } from 'angular-three';\nimport { calculateScaleFactor } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Box3, Group, Matrix4, Mesh, Vector3 } from 'three';\nimport { NgtsAxisArrow } from './axis-arrow';\nimport { NgtsAxisRotator } from './axis-rotator';\nimport { NgtsPlaneSlider } from './plane-slider';\nimport { NgtsScalingSphere } from './scaling-sphere';\n\nexport interface OnDragStartParameters {\n\tcomponent: 'Arrow' | 'Slider' | 'Rotator' | 'Sphere';\n\taxis: 0 | 1 | 2;\n\torigin: Vector3;\n\tdirections: Vector3[];\n}\n\nexport interface OnDragParameters {\n\tl: Matrix4;\n\tdeltaL: Matrix4;\n\tw: Matrix4;\n\tdeltaW: Matrix4;\n}\n\nconst mL0 = new Matrix4();\nconst mW0 = new Matrix4();\nconst mP = new Matrix4();\nconst mPInv = new Matrix4();\nconst mW = new Matrix4();\nconst mL = new Matrix4();\nconst mL0Inv = new Matrix4();\nconst mdL = new Matrix4();\nconst mG = new Matrix4();\n\nconst bb = new Box3();\nconst bbObj = new Box3();\nconst vCenter = new Vector3();\nconst vSize = new Vector3();\nconst vAnchorOffset = new Vector3();\nconst vPosition = new Vector3();\nconst vScale = new Vector3();\n\nconst xDir = new Vector3(1, 0, 0);\nconst yDir = new Vector3(0, 1, 0);\nconst zDir = new Vector3(0, 0, 1);\n\nexport interface NgtsPivotControlsOptions {\n\t/** Enables/disables the control, true */\n\tenabled: boolean;\n\t/** Scale of the gizmo, 1 */\n\tscale: number;\n\t/** Width of the gizmo lines, this is a THREE.Line2 prop, 2.5 */\n\tlineWidth: number;\n\t/** If fixed is true is remains constant in size, scale is now in pixels, false */\n\tfixed: boolean;\n\t/** Pivot does not act as a group, it won't shift contents but can offset in position */\n\toffset: [number, number, number];\n\t/** Starting rotation */\n\trotation: [number, number, number];\n\n\t/** Starting matrix */\n\tmatrix?: Matrix4;\n\t/** BBAnchor, each axis can be between -1/0/+1 */\n\tanchor?: [number, number, number];\n\t/** If autoTransform is true, automatically apply the local transform on drag, true */\n\tautoTransform: boolean;\n\t/** Allows you to switch individual axes off */\n\tactiveAxes: [boolean, boolean, boolean];\n\n\t/** Allows you to switch individual transformations off */\n\tdisableAxes: boolean;\n\tdisableSliders: boolean;\n\tdisableRotations: boolean;\n\tdisableScaling: boolean;\n\n\t/** Limits */\n\ttranslationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\trotationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\tscaleLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\n\t/** RGB colors */\n\taxisColors: [string | number, string | number, string | number];\n\t/** Color of the hovered item */\n\thoveredColor: string | number;\n\t/** HTML value annotations, default: false */\n\tannotations: boolean;\n\t/** CSS Classname applied to the HTML annotations */\n\tannotationsClass?: string;\n\t/** Set this to false if you want the gizmo to be visible through faces */\n\tdepthTest: boolean;\n\topacity?: number;\n\tvisible: boolean;\n\tuserData?: NgtAnyRecord;\n}\n\nconst defaultOptions: NgtsPivotControlsOptions = {\n\tenabled: true,\n\tautoTransform: true,\n\tdisableAxes: false,\n\tdisableSliders: false,\n\tdisableRotations: false,\n\tdisableScaling: false,\n\tactiveAxes: [true, true, true],\n\toffset: [0, 0, 0],\n\trotation: [0, 0, 0],\n\tscale: 1,\n\tlineWidth: 4,\n\tfixed: false,\n\tdepthTest: true,\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\thoveredColor: '#ffff40',\n\tannotations: false,\n\topacity: 1,\n\tvisible: true,\n};\n\n@Component({\n\tselector: 'ngts-pivot-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #parent>\n\t\t\t<ngt-group #group [matrix]=\"matrix()\" [matrixAutoUpdate]=\"false\" [parameters]=\"parameters()\">\n\t\t\t\t<ngt-group #gizmo [visible]=\"visible()\" [position]=\"offset()\" [rotation]=\"rotation()\">\n\t\t\t\t\t@if (enabled()) {\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[0]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"0\" [direction]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"1\" [direction]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"2\" [direction]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[0] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"2\" [dir1]=\"xDir\" [dir2]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[0] && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"1\" [dir1]=\"zDir\" [dir2]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[2] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"0\" [dir1]=\"yDir\" [dir2]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[0] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"2\" [dir1]=\"xDir\" [dir2]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[0] && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"1\" [dir1]=\"zDir\" [dir2]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[2] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"0\" [dir1]=\"yDir\" [dir2]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[0]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"0\" [direction]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"1\" [direction]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"2\" [direction]=\"zDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t</ngt-group>\n\t\t\t\t<ngt-group #children>\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsAxisArrow, NgtsPlaneSlider, NgtsAxisRotator, NgtsScalingSphere],\n})\n// TODO: PivotControls is not working properly with control flow\nexport class NgtsPivotControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'enabled',\n\t\t'matrix',\n\t\t'autoTransform',\n\t\t'anchor',\n\t\t'disableAxes',\n\t\t'disableSliders',\n\t\t'disableRotations',\n\t\t'disableScaling',\n\t\t'activeAxes',\n\t\t'offset',\n\t\t'rotation',\n\t\t'scale',\n\t\t'lineWidth',\n\t\t'fixed',\n\t\t'translationLimits',\n\t\t'rotationLimits',\n\t\t'scaleLimits',\n\t\t'depthTest',\n\t\t'axisColors',\n\t\t'hoveredColor',\n\t\t'annotations',\n\t\t'annotationsClass',\n\t\t'opacity',\n\t\t'visible',\n\t\t'userData',\n\t]);\n\n\tdragStarted = output<OnDragStartParameters>();\n\tdragEnded = output<void>();\n\tdragged = output<OnDragParameters>();\n\n\tmatrix = pick(this.options, 'matrix');\n\tannotations = pick(this.options, 'annotations');\n\tannotationsClass = pick(this.options, 'annotationsClass');\n\ttranslationLimits = pick(this.options, 'translationLimits');\n\trotationLimits = pick(this.options, 'rotationLimits');\n\tscaleLimits = pick(this.options, 'scaleLimits');\n\tautoTransform = pick(this.options, 'autoTransform');\n\tfixed = pick(this.options, 'fixed');\n\thoveredColor = pick(this.options, 'hoveredColor');\n\taxisColors = pick(this.options, 'axisColors');\n\tlineWidth = pick(this.options, 'lineWidth');\n\tscale = pick(this.options, 'scale');\n\tuserData = pick(this.options, 'userData');\n\topacity = pick(this.options, 'opacity');\n\tdepthTest = pick(this.options, 'depthTest');\n\toffset = pick(this.options, 'offset');\n\trotation = pick(this.options, 'rotation');\n\tvisible = pick(this.options, 'visible');\n\tenabled = pick(this.options, 'enabled');\n\tdisableAxes = pick(this.options, 'disableAxes');\n\tdisableSliders = pick(this.options, 'disableSliders');\n\tdisableRotations = pick(this.options, 'disableRotations');\n\tdisableScaling = pick(this.options, 'disableScaling');\n\tactiveAxes = pick(this.options, 'activeAxes');\n\n\txDir = xDir;\n\tyDir = yDir;\n\tzDir = zDir;\n\n\tparentRef = viewChild.required<ElementRef<Group>>('parent');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tgizmoRef = viewChild.required<ElementRef<Group>>('gizmo');\n\tchildrenRef = viewChild.required<ElementRef<Group>>('children');\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\ttranslation: [number, number, number] = [0, 0, 0];\n\n\tprivate anchor = pick(this.options, 'anchor');\n\tprivate cameraScale = new Vector3(1, 1, 1);\n\tprivate gizmoScale = new Vector3(1, 1, 1);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tconst anchor = this.anchor();\n\t\t\tif (!anchor) return;\n\n\t\t\tconst childrenContainer = this.childrenRef().nativeElement;\n\t\t\tconst localState = getLocalState(childrenContainer);\n\t\t\tif (!localState) return;\n\n\t\t\tconst [gizmo, offset, invalidate] = [\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.offset(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.options(),\n\t\t\t\t[localState.objects(), localState.nonObjects()],\n\t\t\t];\n\t\t\tchildrenContainer.updateWorldMatrix(true, true);\n\n\t\t\tmPInv.copy(childrenContainer.matrixWorld).invert();\n\t\t\tbb.makeEmpty();\n\n\t\t\tchildrenContainer.traverse((obj) => {\n\t\t\t\tif (!(obj as Mesh).geometry) return;\n\t\t\t\tif (!(obj as Mesh).geometry.boundingBox) (obj as Mesh).geometry.computeBoundingBox();\n\t\t\t\tmL.copy(obj.matrixWorld).premultiply(mPInv);\n\t\t\t\tconst boundingBox = (obj as Mesh).geometry.boundingBox;\n\t\t\t\tif (boundingBox) {\n\t\t\t\t\tbbObj.copy(boundingBox);\n\t\t\t\t\tbbObj.applyMatrix4(mL);\n\t\t\t\t\tbb.union(bbObj);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvCenter.copy(bb.max).add(bb.min).multiplyScalar(0.5);\n\t\t\tvSize.copy(bb.max).sub(bb.min).multiplyScalar(0.5);\n\t\t\tvAnchorOffset\n\t\t\t\t.copy(vSize)\n\t\t\t\t.multiply(new Vector3(...anchor))\n\t\t\t\t.add(vCenter);\n\t\t\tvPosition.set(...offset).add(vAnchorOffset);\n\t\t\tgizmo.position.copy(vPosition);\n\t\t\tinvalidate();\n\t\t});\n\n\t\tconst vec = new Vector3();\n\t\tinjectBeforeRender(({ camera, size, invalidate }) => {\n\t\t\tconst [{ fixed, scale, matrix }, gizmo, group] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (fixed) {\n\t\t\t\tconst sf = calculateScaleFactor(gizmo.getWorldPosition(vec), scale, camera, size);\n\t\t\t\tthis.cameraScale.setScalar(sf);\n\t\t\t}\n\n\t\t\tif (matrix && matrix instanceof Matrix4) {\n\t\t\t\tgroup.matrix = matrix;\n\t\t\t}\n\n\t\t\t// Update gizmo scale in accordance with matrix changes\n\t\t\t// Without this, there might be noticeable turbulence if scaling happens fast enough\n\t\t\tgizmo.updateWorldMatrix(true, true);\n\n\t\t\tmG.makeRotationFromEuler(gizmo.rotation).setPosition(gizmo.position).premultiply(group.matrixWorld);\n\t\t\tthis.gizmoScale.setFromMatrixScale(mG);\n\n\t\t\tvScale.copy(this.cameraScale).divide(this.gizmoScale);\n\n\t\t\tif (\n\t\t\t\tMath.abs(gizmo.scale.x - vScale.x) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.y - vScale.y) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.z - vScale.z) > 1e-4\n\t\t\t) {\n\t\t\t\tgizmo.scale.copy(vScale);\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tonDragStart(parameters: OnDragStartParameters) {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tmL0.copy(group.matrix);\n\t\tmW0.copy(group.matrixWorld);\n\t\tthis.dragStarted.emit(parameters);\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDrag(mdW: Matrix4) {\n\t\tconst [parent, group, autoTransform] = [\n\t\t\tthis.parentRef().nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.autoTransform(),\n\t\t];\n\n\t\tmP.copy(parent.matrixWorld);\n\t\tmPInv.copy(mP).invert();\n\t\t// After applying the delta\n\t\tmW.copy(mW0).premultiply(mdW);\n\t\tmL.copy(mW).premultiply(mPInv);\n\t\tmL0Inv.copy(mL0).invert();\n\t\tmdL.copy(mL).multiply(mL0Inv);\n\n\t\tif (autoTransform) {\n\t\t\tgroup.matrix.copy(mL);\n\t\t}\n\n\t\tthis.dragged.emit({ l: mL, deltaL: mdL, w: mW, deltaW: mdW });\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDragEnd() {\n\t\tthis.dragEnded.emit();\n\t\tthis.store.snapshot.invalidate();\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetLocalState,\n\tinjectStore,\n\tNgtArgs,\n\tNgtGroup,\n\tNgtObject3DNode,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport { Camera, Group, Object3D, Event as ThreeEvent } from 'three';\nimport { TransformControls } from 'three-stdlib';\n\ninterface ControlsProto {\n\tenabled: boolean;\n}\n\nexport type NgtsTransformControlsObject = NgtObject3DNode<TransformControls, typeof TransformControls>;\n\nexport type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> &\n\tPartial<NgtGroup> & {\n\t\tenabled?: boolean;\n\t\taxis?: string | null;\n\t\tdomElement?: HTMLElement;\n\t\tmode?: 'translate' | 'rotate' | 'scale';\n\t\ttranslationSnap?: number | null;\n\t\trotationSnap?: number | null;\n\t\tscaleSnap?: number | null;\n\t\tspace?: 'world' | 'local';\n\t\tsize?: number;\n\t\tshowX?: boolean;\n\t\tshowY?: boolean;\n\t\tshowZ?: boolean;\n\t\tcamera?: Camera;\n\t\tmakeDefault?: boolean;\n\t};\n\n@Component({\n\tselector: 'ngts-transform-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"controlsOptions()\" />\n\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsTransformControls {\n\tobject = input<Object3D | ElementRef<Object3D> | undefined | null>(null);\n\toptions = input({} as Partial<NgtsTransformControlsOptions>);\n\tparameters = omit(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t\t'domElement',\n\t\t'makeDefault',\n\t\t'camera',\n\t]);\n\n\tprotected controlsOptions = pick(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t]);\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tchange = output<ThreeEvent>();\n\tmouseDown = output<ThreeEvent>();\n\tmouseUp = output<ThreeEvent>();\n\tobjectChange = output<ThreeEvent>();\n\n\tprivate groupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate store = injectStore();\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate events = this.store.select('events');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\n\n\tcontrols = computed(() => {\n\t\tlet camera = this.camera();\n\t\tif (!camera) {\n\t\t\tcamera = this.defaultCamera();\n\t\t}\n\n\t\tlet domElement = this.domElement();\n\t\tif (!domElement) {\n\t\t\tdomElement = this.events().connected || this.glDomElement();\n\t\t}\n\n\t\treturn new TransformControls(camera, domElement);\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.attachControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.disableDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.setupControlsEventsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.updateDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t}\n\n\tprivate attachControlsEffect() {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tif (!group) return;\n\n\t\tconst localState = getLocalState(group);\n\t\tif (!localState) return;\n\n\t\tconst [object, controls] = [resolveRef(this.object()), this.controls(), localState.objects()];\n\t\tif (object) {\n\t\t\tcontrols.attach(object);\n\t\t} else {\n\t\t\tcontrols.attach(group);\n\t\t}\n\n\t\treturn () => controls.detach();\n\t}\n\n\tprivate disableDefaultControlsEffect() {\n\t\tconst defaultControls = this.defaultControls();\n\t\tif (!defaultControls) return;\n\n\t\tconst controls = this.controls();\n\t\tconst callback = (event: any) => {\n\t\t\tdefaultControls.enabled = !event.value;\n\t\t};\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('dragging-changed', callback);\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('dragging-changed', callback);\n\t\t};\n\t}\n\n\tprivate setupControlsEventsEffect() {\n\t\tconst [controls, invalidate] = [this.controls(), this.invalidate()];\n\t\tconst onChange = (event: ThreeEvent) => {\n\t\t\tinvalidate();\n\t\t\tif (!this.change['destroyed']) {\n\t\t\t\tthis.change.emit(event);\n\t\t\t}\n\t\t};\n\t\tconst onMouseDown = this.mouseDown.emit.bind(this.mouseDown);\n\t\tconst onMouseUp = this.mouseUp.emit.bind(this.mouseUp);\n\t\tconst onObjectChange = this.objectChange.emit.bind(this.objectChange);\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('change', onChange);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseDown', onMouseDown);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseUp', onMouseUp);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('objectChange', onObjectChange);\n\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('change', onChange);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseDown', onMouseDown);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseUp', onMouseUp);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('objectChange', onObjectChange);\n\t\t};\n\t}\n\n\tprivate updateDefaultControlsEffect() {\n\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\tif (!makeDefault) return;\n\n\t\tconst oldControls = this.store.snapshot.controls;\n\t\tthis.store.update({ controls });\n\t\treturn () => this.store.update(() => ({ controls: oldControls }));\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","vec1","vec2","calculateOffset","upV","offsetMatrix","ray","intersection"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { NgtThreeEvent } from 'angular-three';
|
|
|
2
2
|
import { CanvasTexture, Vector3 } from 'three';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
type XYZ = [number, number, number];
|
|
5
|
-
interface
|
|
5
|
+
export interface NgtsViewcubeCommonOptions {
|
|
6
6
|
font: string;
|
|
7
7
|
opacity: number;
|
|
8
8
|
color: string;
|
|
@@ -14,7 +14,7 @@ interface CommonOptions {
|
|
|
14
14
|
export declare class FaceMaterial {
|
|
15
15
|
hover: import("@angular/core").InputSignal<boolean>;
|
|
16
16
|
index: import("@angular/core").InputSignal<number>;
|
|
17
|
-
options: import("@angular/core").InputSignalWithTransform<
|
|
17
|
+
options: import("@angular/core").InputSignalWithTransform<NgtsViewcubeCommonOptions, "" | Partial<NgtsViewcubeCommonOptions>>;
|
|
18
18
|
private faces;
|
|
19
19
|
private font;
|
|
20
20
|
private color;
|
|
@@ -32,7 +32,7 @@ export declare class FaceMaterial {
|
|
|
32
32
|
static ɵcmp: i0.ɵɵComponentDeclaration<FaceMaterial, "viewcube-face-material", never, { "hover": { "alias": "hover"; "required": true; "isSignal": true; }; "index": { "alias": "index"; "required": true; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
33
33
|
}
|
|
34
34
|
export declare class FaceCube {
|
|
35
|
-
options: import("@angular/core").InputSignal<Partial<
|
|
35
|
+
options: import("@angular/core").InputSignal<Partial<NgtsViewcubeCommonOptions>>;
|
|
36
36
|
onClick: import("@angular/core").InputSignal<((event: NgtThreeEvent<MouseEvent>) => void) | undefined>;
|
|
37
37
|
private gizmoHelper;
|
|
38
38
|
protected hover: import("@angular/core").WritableSignal<number>;
|
|
@@ -56,9 +56,9 @@ export declare class EdgeCube {
|
|
|
56
56
|
static ɵfac: i0.ɵɵFactoryDeclaration<EdgeCube, never>;
|
|
57
57
|
static ɵcmp: i0.ɵɵComponentDeclaration<EdgeCube, "viewcube-edge-cube", never, { "dimensions": { "alias": "dimensions"; "required": true; "isSignal": true; }; "position": { "alias": "position"; "required": true; "isSignal": true; }; "hoverColor": { "alias": "hoverColor"; "required": false; "isSignal": true; }; "onClick": { "alias": "onClick"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
58
58
|
}
|
|
59
|
-
export type NgtsGizmoViewcubeOptions = Partial<
|
|
59
|
+
export type NgtsGizmoViewcubeOptions = Partial<NgtsViewcubeCommonOptions>;
|
|
60
60
|
export declare class NgtsGizmoViewcube {
|
|
61
|
-
options: import("@angular/core").InputSignal<Partial<
|
|
61
|
+
options: import("@angular/core").InputSignal<Partial<Partial<NgtsViewcubeCommonOptions>>>;
|
|
62
62
|
click: import("@angular/core").OutputEmitterRef<NgtThreeEvent<MouseEvent>>;
|
|
63
63
|
protected hoverColor: import("@angular/core").Signal<string | undefined>;
|
|
64
64
|
protected corners: Vector3[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-soba",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -63,11 +63,11 @@
|
|
|
63
63
|
"esm": "./esm2022/abstractions/angular-three-soba-abstractions.mjs",
|
|
64
64
|
"default": "./fesm2022/angular-three-soba-abstractions.mjs"
|
|
65
65
|
},
|
|
66
|
-
"./
|
|
67
|
-
"types": "./
|
|
68
|
-
"esm2022": "./esm2022/
|
|
69
|
-
"esm": "./esm2022/
|
|
70
|
-
"default": "./fesm2022/angular-three-soba-
|
|
66
|
+
"./cameras": {
|
|
67
|
+
"types": "./cameras/index.d.ts",
|
|
68
|
+
"esm2022": "./esm2022/cameras/angular-three-soba-cameras.mjs",
|
|
69
|
+
"esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
|
|
70
|
+
"default": "./fesm2022/angular-three-soba-cameras.mjs"
|
|
71
71
|
},
|
|
72
72
|
"./gizmos": {
|
|
73
73
|
"types": "./gizmos/index.d.ts",
|
|
@@ -75,6 +75,12 @@
|
|
|
75
75
|
"esm": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
|
|
76
76
|
"default": "./fesm2022/angular-three-soba-gizmos.mjs"
|
|
77
77
|
},
|
|
78
|
+
"./controls": {
|
|
79
|
+
"types": "./controls/index.d.ts",
|
|
80
|
+
"esm2022": "./esm2022/controls/angular-three-soba-controls.mjs",
|
|
81
|
+
"esm": "./esm2022/controls/angular-three-soba-controls.mjs",
|
|
82
|
+
"default": "./fesm2022/angular-three-soba-controls.mjs"
|
|
83
|
+
},
|
|
78
84
|
"./materials": {
|
|
79
85
|
"types": "./materials/index.d.ts",
|
|
80
86
|
"esm2022": "./esm2022/materials/angular-three-soba-materials.mjs",
|
|
@@ -93,12 +99,6 @@
|
|
|
93
99
|
"esm": "./esm2022/staging/angular-three-soba-staging.mjs",
|
|
94
100
|
"default": "./fesm2022/angular-three-soba-staging.mjs"
|
|
95
101
|
},
|
|
96
|
-
"./cameras": {
|
|
97
|
-
"types": "./cameras/index.d.ts",
|
|
98
|
-
"esm2022": "./esm2022/cameras/angular-three-soba-cameras.mjs",
|
|
99
|
-
"esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
|
|
100
|
-
"default": "./fesm2022/angular-three-soba-cameras.mjs"
|
|
101
|
-
},
|
|
102
102
|
"./stats": {
|
|
103
103
|
"types": "./stats/index.d.ts",
|
|
104
104
|
"esm2022": "./esm2022/stats/angular-three-soba-stats.mjs",
|
|
@@ -165,4 +165,4 @@
|
|
|
165
165
|
],
|
|
166
166
|
"module": "fesm2022/angular-three-soba.mjs",
|
|
167
167
|
"typings": "index.d.ts"
|
|
168
|
-
}
|
|
168
|
+
}
|