angular-three-soba 2.0.0-beta.13 → 2.0.0-beta.14
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.
|
@@ -120,7 +120,7 @@ export class NgtsInstances {
|
|
|
120
120
|
this.matrices(),
|
|
121
121
|
this.colors(),
|
|
122
122
|
];
|
|
123
|
-
if (frames === Infinity || count < frames) {
|
|
123
|
+
if ((frames === Infinity || count < frames) && instancedMesh) {
|
|
124
124
|
instancedMesh.updateMatrix();
|
|
125
125
|
instancedMesh.updateMatrixWorld();
|
|
126
126
|
parentMatrix.copy(instancedMesh.matrixWorld).invert();
|
|
@@ -149,27 +149,19 @@ export class NgtsInstances {
|
|
|
149
149
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
150
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { instancesRef: "instancesRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _frames: ["frames", "_frames"] }, providers: [provideNgtsInstancesApi()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
|
|
151
151
|
<ngt-instanced-mesh
|
|
152
|
+
*args="[undefined, undefined, 0]"
|
|
152
153
|
[userData]="{ instances: meshes() }"
|
|
153
154
|
[ref]="instancesRef"
|
|
154
155
|
[matrixAutoUpdate]="false"
|
|
155
156
|
[raycast]="nullRaycast"
|
|
156
|
-
*args="[undefined, undefined, 0]"
|
|
157
157
|
ngtCompound
|
|
158
158
|
>
|
|
159
159
|
<ngt-instanced-buffer-attribute
|
|
160
|
+
*args="[matrices(), 16]"
|
|
160
161
|
attach="instanceMatrix"
|
|
161
|
-
[count]="matrices().length / 16"
|
|
162
|
-
[array]="matrices()"
|
|
163
|
-
[itemSize]="16"
|
|
164
|
-
[usage]="DynamicDrawUsage"
|
|
165
|
-
/>
|
|
166
|
-
<ngt-instanced-buffer-attribute
|
|
167
|
-
attach="instanceColor"
|
|
168
|
-
[count]="colors().length / 3"
|
|
169
|
-
[array]="colors()"
|
|
170
|
-
[itemSize]="3"
|
|
171
162
|
[usage]="DynamicDrawUsage"
|
|
172
163
|
/>
|
|
164
|
+
<ngt-instanced-buffer-attribute *args="[colors(), 3]" attach="instanceColor" [usage]="DynamicDrawUsage" />
|
|
173
165
|
<ng-container *ngTemplateOutlet="content" />
|
|
174
166
|
</ngt-instanced-mesh>
|
|
175
167
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
@@ -181,27 +173,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
181
173
|
standalone: true,
|
|
182
174
|
template: `
|
|
183
175
|
<ngt-instanced-mesh
|
|
176
|
+
*args="[undefined, undefined, 0]"
|
|
184
177
|
[userData]="{ instances: meshes() }"
|
|
185
178
|
[ref]="instancesRef"
|
|
186
179
|
[matrixAutoUpdate]="false"
|
|
187
180
|
[raycast]="nullRaycast"
|
|
188
|
-
*args="[undefined, undefined, 0]"
|
|
189
181
|
ngtCompound
|
|
190
182
|
>
|
|
191
183
|
<ngt-instanced-buffer-attribute
|
|
184
|
+
*args="[matrices(), 16]"
|
|
192
185
|
attach="instanceMatrix"
|
|
193
|
-
[count]="matrices().length / 16"
|
|
194
|
-
[array]="matrices()"
|
|
195
|
-
[itemSize]="16"
|
|
196
|
-
[usage]="DynamicDrawUsage"
|
|
197
|
-
/>
|
|
198
|
-
<ngt-instanced-buffer-attribute
|
|
199
|
-
attach="instanceColor"
|
|
200
|
-
[count]="colors().length / 3"
|
|
201
|
-
[array]="colors()"
|
|
202
|
-
[itemSize]="3"
|
|
203
186
|
[usage]="DynamicDrawUsage"
|
|
204
187
|
/>
|
|
188
|
+
<ngt-instanced-buffer-attribute *args="[colors(), 3]" attach="instanceColor" [usage]="DynamicDrawUsage" />
|
|
205
189
|
<ng-container *ngTemplateOutlet="content" />
|
|
206
190
|
</ngt-instanced-mesh>
|
|
207
191
|
`,
|
|
@@ -224,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
224
208
|
type: ContentChild,
|
|
225
209
|
args: [NgtsSobaContent, { static: true, read: TemplateRef }]
|
|
226
210
|
}] } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvaW5zdGFuY2VzL2luc3RhbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLEVBQUUsRUFDRixPQUFPLEVBRVAsV0FBVyxHQUdYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0MsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFxQmxFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN2RCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDekQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxD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QyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN0QyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN6QztnQkFDRCxLQUFLLEVBQUUsQ0FBQzthQUNSO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXJHVyxhQUFhO2tHQUFiLGFBQWEsaU1BSGQsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLCtEQXVCeEIsZUFBZSwyQkFBd0IsV0FBVywyQ0FsRHREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeUJULDREQUNTLE9BQU8sZ0ZBQUUsZ0JBQWdCOzsyRkFJdkIsYUFBYTtrQkFqQ3pCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3BDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFPUyxZQUFZO3NCQUFwQixLQUFLO2dCQUV5QixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJTSxNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJTyxPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJMEMsT0FBTztzQkFBMUUsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENvbnRlbnRDaGlsZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRmb3J3YXJkUmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRJbnB1dCxcblx0Tmdab25lLFxuXHRzaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Y2hlY2tVcGRhdGUsXG5cdGNyZWF0ZUluamVjdGlvblRva2VuLFxuXHRleHRlbmQsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpcyxcblx0Tmd0QXJncyxcblx0Tmd0UmVmLFxuXHRzaWduYWxTdG9yZSxcblx0dHlwZSBOZ3RHcm91cCxcblx0dHlwZSBOZ3RJbnN0YW5jZWRNZXNoLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNTb2JhQ29udGVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS91dGlscyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUsIEluc3RhbmNlZE1lc2ggfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBQb3NpdGlvbk1lc2ggfSBmcm9tICcuL3Bvc2l0aW9uLW1lc2gnO1xuXG5leHRlbmQoeyBQb3NpdGlvbk1lc2gsIEluc3RhbmNlZE1lc2gsIEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuZXhwb3J0IHR5cGUgTmd0c0luc3RhbmNlc1N0YXRlID0ge1xuXHRyYW5nZT86IG51bWJlcjtcblx0bGltaXQ6IG51bWJlcjtcblx0ZnJhbWVzOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1ncm91cFxuXHRcdCAqL1xuXHRcdCduZ3QtcG9zaXRpb24tbWVzaCc6IFBvc2l0aW9uTWVzaCAmIE5ndEdyb3VwO1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1pbnN0YW5jZWQtbWVzaFxuXHRcdCAqL1xuXHRcdCduZ3RzLWluc3RhbmNlcyc6IE5ndHNJbnN0YW5jZXNTdGF0ZSAmIE5ndEluc3RhbmNlZE1lc2g7XG5cdH1cbn1cblxuY29uc3QgcGFyZW50TWF0cml4ID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuTWF0cml4NCgpO1xuY29uc3QgaW5zdGFuY2VNYXRyaXggPSAvKkBfX1BVUkVfXyovIG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5jb25zdCB0ZW1wTWF0cml4ID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuTWF0cml4NCgpO1xuY29uc3QgdHJhbnNsYXRpb24gPSAvKkBfX1BVUkVfXyovIG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCByb3RhdGlvbiA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IHNjYWxlID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndHNJbnN0YW5jZXNBcGksIHByb3ZpZGVOZ3RzSW5zdGFuY2VzQXBpXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKFxuXHQoaW5zdGFuY2VzOiBOZ3RzSW5zdGFuY2VzKSA9PiBpbnN0YW5jZXMuYXBpLFxuXHR7IGlzUm9vdDogZmFsc2UsIGRlcHM6IFtmb3J3YXJkUmVmKCgpID0+IE5ndHNJbnN0YW5jZXMpXSB9LFxuKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1pbnN0YW5jZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3NpdGlvbi1tZXNoXG5cdFx0XHRbcmVmXT1cImluc3RhbmNlUmVmXCJcblx0XHRcdFtpbnN0YW5jZV09XCJpbnN0YW5jZXNBcGkuZ2V0UGFyZW50KClcIlxuXHRcdFx0W2luc3RhbmNlS2V5XT1cImluc3RhbmNlUmVmXCJcblx0XHRcdG5ndENvbXBvdW5kXG5cdFx0PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wb3NpdGlvbi1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZSB7XG5cdEBJbnB1dCgpIGluc3RhbmNlUmVmID0gaW5qZWN0Tmd0UmVmPFBvc2l0aW9uTWVzaD4oKTtcblxuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdGluc3RhbmNlc0FwaSA9IGluamVjdE5ndHNJbnN0YW5jZXNBcGkoKTtcblxuXHRuZ09uSW5pdCgpIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5pbnN0YW5jZXNBcGkuc3Vic2NyaWJlKHRoaXMuaW5zdGFuY2VSZWYpKTtcblx0XHRcdFx0b25DbGVhbnVwKGNsZWFudXApO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2VzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWluc3RhbmNlZC1tZXNoXG5cdFx0XHRbdXNlckRhdGFdPVwieyBpbnN0YW5jZXM6IG1lc2hlcygpIH1cIlxuXHRcdFx0W3JlZl09XCJpbnN0YW5jZXNSZWZcIlxuXHRcdFx0W21hdHJpeEF1dG9VcGRhdGVdPVwiZmFsc2VcIlxuXHRcdFx0W3JheWNhc3RdPVwibnVsbFJheWNhc3RcIlxuXHRcdFx0KmFyZ3M9XCJbdW5kZWZpbmVkLCB1bmRlZmluZWQsIDBdXCJcblx0XHRcdG5ndENvbXBvdW5kXG5cdFx0PlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRhdHRhY2g9XCJpbnN0YW5jZU1hdHJpeFwiXG5cdFx0XHRcdFtjb3VudF09XCJtYXRyaWNlcygpLmxlbmd0aCAvIDE2XCJcblx0XHRcdFx0W2FycmF5XT1cIm1hdHJpY2VzKClcIlxuXHRcdFx0XHRbaXRlbVNpemVdPVwiMTZcIlxuXHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHQvPlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRhdHRhY2g9XCJpbnN0YW5jZUNvbG9yXCJcblx0XHRcdFx0W2NvdW50XT1cImNvbG9ycygpLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRbYXJyYXldPVwiY29sb3JzKClcIlxuXHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdC8+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiIC8+XG5cdFx0PC9uZ3QtaW5zdGFuY2VkLW1lc2g+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ1RlbXBsYXRlT3V0bGV0XSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZU5ndHNJbnN0YW5jZXNBcGkoKV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0luc3RhbmNlcyB7XG5cdER5bmFtaWNEcmF3VXNhZ2UgPSBUSFJFRS5EeW5hbWljRHJhd1VzYWdlO1xuXHRudWxsUmF5Y2FzdCA9ICgpID0+IG51bGw7XG5cblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzSW5zdGFuY2VzU3RhdGU+KHsgbGltaXQ6IDEwMDAsIGZyYW1lczogSW5maW5pdHkgfSk7XG5cblx0QElucHV0KCkgaW5zdGFuY2VzUmVmID0gaW5qZWN0Tmd0UmVmPEluc3RhbmNlZE1lc2g+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdyYW5nZScgfSkgc2V0IF9yYW5nZShyYW5nZTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcmFuZ2UgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2xpbWl0JyB9KSBzZXQgX2xpbWl0KGxpbWl0OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBsaW1pdCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZnJhbWVzJyB9KSBzZXQgX2ZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZyYW1lcyB9KTtcblx0fVxuXG5cdEBDb250ZW50Q2hpbGQoTmd0c1NvYmFDb250ZW50LCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG5cdHByaXZhdGUgbGltaXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2xpbWl0Jyk7XG5cblx0cHJpdmF0ZSBwb3NpdGlvbk1lc2hlcyA9IHNpZ25hbDxOZ3RSZWY8UG9zaXRpb25NZXNoPltdPihbXSk7XG5cdG1lc2hlcyA9IHRoaXMucG9zaXRpb25NZXNoZXMuYXNSZWFkb25seSgpO1xuXG5cdG1hdHJpY2VzID0gY29tcHV0ZWQoKCkgPT4gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmxpbWl0KCkgKiAxNikpO1xuXHRjb2xvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2xpbWl0LCBtYXRyaWNlc10gPSBbdGhpcy5saW1pdCgpLCB0aGlzLm1hdHJpY2VzKCldO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuXHRcdFx0dGVtcE1hdHJpeC5pZGVudGl0eSgpLnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgRmxvYXQzMkFycmF5KFsuLi5BcnJheS5mcm9tKHsgbGVuZ3RoOiBsaW1pdCAqIDMgfSwgKCkgPT4gMSldKTtcblx0fSk7XG5cblx0YXBpID0ge1xuXHRcdGdldFBhcmVudDogKCkgPT4gdGhpcy5pbnN0YW5jZXNSZWYsXG5cdFx0c3Vic2NyaWJlOiAobWVzaFJlZjogTmd0UmVmPFBvc2l0aW9uTWVzaD4pID0+IHtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMucG9zaXRpb25NZXNoZXMudXBkYXRlKChzKSA9PiBbLi4ucywgbWVzaFJlZl0pO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucG9zaXRpb25NZXNoZXMudXBkYXRlKChzKSA9PiBzLmZpbHRlcigocG9zaXRpb25NZXNoKSA9PiBwb3NpdGlvbk1lc2ggIT09IG1lc2hSZWYpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXHRcdH0sXG5cdH07XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5jaGVja1VwZGF0ZSgpO1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIGNoZWNrVXBkYXRlKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZWRNZXNoID0gdGhpcy5pbnN0YW5jZXNSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGxldCB1cGRhdGVSYW5nZSA9IDA7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IGZyYW1lcywgbGltaXQsIHJhbmdlIH0sIGluc3RhbmNlZE1lc2gsIGluc3RhbmNlcywgbWF0cmljZXMsIGNvbG9yc10gPSBbXG5cdFx0XHRcdHRoaXMuaW5wdXRzLmdldCgpLFxuXHRcdFx0XHR0aGlzLmluc3RhbmNlc1JlZi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLm1lc2hlcygpLFxuXHRcdFx0XHR0aGlzLm1hdHJpY2VzKCksXG5cdFx0XHRcdHRoaXMuY29sb3JzKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpIHtcblx0XHRcdFx0aW5zdGFuY2VkTWVzaC51cGRhdGVNYXRyaXgoKTtcblx0XHRcdFx0aW5zdGFuY2VkTWVzaC51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHRcdFx0XHRwYXJlbnRNYXRyaXguY29weShpbnN0YW5jZWRNZXNoLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtcblxuXHRcdFx0XHR1cGRhdGVSYW5nZSA9IE1hdGgubWluKGxpbWl0LCByYW5nZSAhPT0gdW5kZWZpbmVkID8gcmFuZ2UgOiBsaW1pdCwgaW5zdGFuY2VzLmxlbmd0aCk7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2guY291bnQgPSB1cGRhdGVSYW5nZTtcblx0XHRcdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeC51cGRhdGVSYW5nZS5jb3VudCA9IHVwZGF0ZVJhbmdlICogMTY7XG5cdFx0XHRcdGlmIChpbnN0YW5jZWRNZXNoLmluc3RhbmNlQ29sb3IpIHtcblx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlQ29sb3IudXBkYXRlUmFuZ2UuY291bnQgPSB1cGRhdGVSYW5nZSAqIDM7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGluc3RhbmNlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlUmVmID0gaW5zdGFuY2VzW2ldO1xuXHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlID0gaXMucmVmKGluc3RhbmNlUmVmKSA/IGluc3RhbmNlUmVmLm5hdGl2ZUVsZW1lbnQgOiBpbnN0YW5jZVJlZjtcblx0XHRcdFx0XHQvLyBNdWx0aXBseSB0aGUgaW52ZXJzZSBvZiB0aGUgSW5zdGFuY2VkTWVzaCB3b3JsZCBtYXRyaXggb3IgZWxzZVxuXHRcdFx0XHRcdC8vIEluc3RhbmNlcyB3aWxsIGJlIGRvdWJsZS10cmFuc2Zvcm1lZCBpZiA8SW5zdGFuY2VzPiBpc24ndCBhdCBpZGVudGl0eVxuXHRcdFx0XHRcdGluc3RhbmNlLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlKTtcblx0XHRcdFx0XHRpbnN0YW5jZU1hdHJpeC5jb21wb3NlKHRyYW5zbGF0aW9uLCByb3RhdGlvbiwgc2NhbGUpLnByZW11bHRpcGx5KHBhcmVudE1hdHJpeCk7XG5cdFx0XHRcdFx0aW5zdGFuY2VNYXRyaXgudG9BcnJheShtYXRyaWNlcywgaSAqIDE2KTtcblx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRpbnN0YW5jZS5jb2xvci50b0FycmF5KGNvbG9ycywgaSAqIDMpO1xuXHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y291bnQrKztcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvaW5zdGFuY2VzL2luc3RhbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLEVBQUUsRUFDRixPQUFPLEVBRVAsV0FBVyxHQUdYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0MsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFxQmxFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN2RCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDekQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxD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TyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3RDLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3pDO2dCQUNELEtBQUssRUFBRSxDQUFDO2FBQ1I7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OEdBckdXLGFBQWE7a0dBQWIsYUFBYSxpTUFIZCxDQUFDLHVCQUF1QixFQUFFLENBQUMsK0RBdUJ4QixlQUFlLDJCQUF3QixXQUFXLDJDQTFDdEQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJULDREQUNTLE9BQU8sZ0ZBQUUsZ0JBQWdCOzsyRkFJdkIsYUFBYTtrQkF6QnpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO29CQUNwQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakM7MEVBT1MsWUFBWTtzQkFBcEIsS0FBSztnQkFFeUIsTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSU0sTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSU8sT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSTBDLE9BQU87c0JBQTFFLFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDb250ZW50Q2hpbGQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0Zm9yd2FyZFJlZixcblx0aW5qZWN0LFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0c2lnbmFsLFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGNoZWNrVXBkYXRlLFxuXHRjcmVhdGVJbmplY3Rpb25Ub2tlbixcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aXMsXG5cdE5ndEFyZ3MsXG5cdE5ndFJlZixcblx0c2lnbmFsU3RvcmUsXG5cdHR5cGUgTmd0R3JvdXAsXG5cdHR5cGUgTmd0SW5zdGFuY2VkTWVzaCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RzU29iYUNvbnRlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdXRpbHMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlLCBJbnN0YW5jZWRNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUG9zaXRpb25NZXNoIH0gZnJvbSAnLi9wb3NpdGlvbi1tZXNoJztcblxuZXh0ZW5kKHsgUG9zaXRpb25NZXNoLCBJbnN0YW5jZWRNZXNoLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cbmV4cG9ydCB0eXBlIE5ndHNJbnN0YW5jZXNTdGF0ZSA9IHtcblx0cmFuZ2U/OiBudW1iZXI7XG5cdGxpbWl0OiBudW1iZXI7XG5cdGZyYW1lczogbnVtYmVyO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtZ3JvdXBcblx0XHQgKi9cblx0XHQnbmd0LXBvc2l0aW9uLW1lc2gnOiBQb3NpdGlvbk1lc2ggJiBOZ3RHcm91cDtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtaW5zdGFuY2VkLW1lc2hcblx0XHQgKi9cblx0XHQnbmd0cy1pbnN0YW5jZXMnOiBOZ3RzSW5zdGFuY2VzU3RhdGUgJiBOZ3RJbnN0YW5jZWRNZXNoO1xuXHR9XG59XG5cbmNvbnN0IHBhcmVudE1hdHJpeCA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbmNvbnN0IGluc3RhbmNlTWF0cml4ID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuTWF0cml4NCgpO1xuY29uc3QgdGVtcE1hdHJpeCA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbmNvbnN0IHRyYW5zbGF0aW9uID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3Qgcm90YXRpb24gPSAvKkBfX1BVUkVfXyovIG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBzY2FsZSA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuZXhwb3J0IGNvbnN0IFtpbmplY3ROZ3RzSW5zdGFuY2VzQXBpLCBwcm92aWRlTmd0c0luc3RhbmNlc0FwaV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbihcblx0KGluc3RhbmNlczogTmd0c0luc3RhbmNlcykgPT4gaW5zdGFuY2VzLmFwaSxcblx0eyBpc1Jvb3Q6IGZhbHNlLCBkZXBzOiBbZm9yd2FyZFJlZigoKSA9PiBOZ3RzSW5zdGFuY2VzKV0gfSxcbik7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2UnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcG9zaXRpb24tbWVzaFxuXHRcdFx0W3JlZl09XCJpbnN0YW5jZVJlZlwiXG5cdFx0XHRbaW5zdGFuY2VdPVwiaW5zdGFuY2VzQXBpLmdldFBhcmVudCgpXCJcblx0XHRcdFtpbnN0YW5jZUtleV09XCJpbnN0YW5jZVJlZlwiXG5cdFx0XHRuZ3RDb21wb3VuZFxuXHRcdD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9zaXRpb24tbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzSW5zdGFuY2Uge1xuXHRASW5wdXQoKSBpbnN0YW5jZVJlZiA9IGluamVjdE5ndFJlZjxQb3NpdGlvbk1lc2g+KCk7XG5cblx0cHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRpbnN0YW5jZXNBcGkgPSBpbmplY3ROZ3RzSW5zdGFuY2VzQXBpKCk7XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjbGVhbnVwID0gdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuaW5zdGFuY2VzQXBpLnN1YnNjcmliZSh0aGlzLmluc3RhbmNlUmVmKSk7XG5cdFx0XHRcdG9uQ2xlYW51cChjbGVhbnVwKTtcblx0XHRcdH0sXG5cdFx0XHR7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0KTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWluc3RhbmNlcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1pbnN0YW5jZWQtbWVzaFxuXHRcdFx0KmFyZ3M9XCJbdW5kZWZpbmVkLCB1bmRlZmluZWQsIDBdXCJcblx0XHRcdFt1c2VyRGF0YV09XCJ7IGluc3RhbmNlczogbWVzaGVzKCkgfVwiXG5cdFx0XHRbcmVmXT1cImluc3RhbmNlc1JlZlwiXG5cdFx0XHRbbWF0cml4QXV0b1VwZGF0ZV09XCJmYWxzZVwiXG5cdFx0XHRbcmF5Y2FzdF09XCJudWxsUmF5Y2FzdFwiXG5cdFx0XHRuZ3RDb21wb3VuZFxuXHRcdD5cblx0XHRcdDxuZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0KmFyZ3M9XCJbbWF0cmljZXMoKSwgMTZdXCJcblx0XHRcdFx0YXR0YWNoPVwiaW5zdGFuY2VNYXRyaXhcIlxuXHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHQvPlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZSAqYXJncz1cIltjb2xvcnMoKSwgM11cIiBhdHRhY2g9XCJpbnN0YW5jZUNvbG9yXCIgW3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIiAvPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIiAvPlxuXHRcdDwvbmd0LWluc3RhbmNlZC1tZXNoPlxuXHRgLFxuXHRpbXBvcnRzOiBbTmd0QXJncywgTmdUZW1wbGF0ZU91dGxldF0sXG5cdHByb3ZpZGVyczogW3Byb3ZpZGVOZ3RzSW5zdGFuY2VzQXBpKCldLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZXMge1xuXHREeW5hbWljRHJhd1VzYWdlID0gVEhSRUUuRHluYW1pY0RyYXdVc2FnZTtcblx0bnVsbFJheWNhc3QgPSAoKSA9PiBudWxsO1xuXG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c0luc3RhbmNlc1N0YXRlPih7IGxpbWl0OiAxMDAwLCBmcmFtZXM6IEluZmluaXR5IH0pO1xuXG5cdEBJbnB1dCgpIGluc3RhbmNlc1JlZiA9IGluamVjdE5ndFJlZjxJbnN0YW5jZWRNZXNoPigpO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmFuZ2UnIH0pIHNldCBfcmFuZ2UocmFuZ2U6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJhbmdlIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdsaW1pdCcgfSkgc2V0IF9saW1pdChsaW1pdDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbGltaXQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZyYW1lcycgfSkgc2V0IF9mcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmcmFtZXMgfSk7XG5cdH1cblxuXHRAQ29udGVudENoaWxkKE5ndHNTb2JhQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGNvbnRlbnQhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuXHRwcml2YXRlIGxpbWl0ID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdsaW1pdCcpO1xuXG5cdHByaXZhdGUgcG9zaXRpb25NZXNoZXMgPSBzaWduYWw8Tmd0UmVmPFBvc2l0aW9uTWVzaD5bXT4oW10pO1xuXHRtZXNoZXMgPSB0aGlzLnBvc2l0aW9uTWVzaGVzLmFzUmVhZG9ubHkoKTtcblxuXHRtYXRyaWNlcyA9IGNvbXB1dGVkKCgpID0+IG5ldyBGbG9hdDMyQXJyYXkodGhpcy5saW1pdCgpICogMTYpKTtcblx0Y29sb3JzID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtsaW1pdCwgbWF0cmljZXNdID0gW3RoaXMubGltaXQoKSwgdGhpcy5tYXRyaWNlcygpXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcblx0XHRcdHRlbXBNYXRyaXguaWRlbnRpdHkoKS50b0FycmF5KG1hdHJpY2VzLCBpICogMTYpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShbLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogbGltaXQgKiAzIH0sICgpID0+IDEpXSk7XG5cdH0pO1xuXG5cdGFwaSA9IHtcblx0XHRnZXRQYXJlbnQ6ICgpID0+IHRoaXMuaW5zdGFuY2VzUmVmLFxuXHRcdHN1YnNjcmliZTogKG1lc2hSZWY6IE5ndFJlZjxQb3NpdGlvbk1lc2g+KSA9PiB7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnBvc2l0aW9uTWVzaGVzLnVwZGF0ZSgocykgPT4gWy4uLnMsIG1lc2hSZWZdKTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBvc2l0aW9uTWVzaGVzLnVwZGF0ZSgocykgPT4gcy5maWx0ZXIoKHBvc2l0aW9uTWVzaCkgPT4gcG9zaXRpb25NZXNoICE9PSBtZXNoUmVmKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblx0XHR9LFxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuY2hlY2tVcGRhdGUoKTtcblx0XHR0aGlzLmJlZm9yZVJlbmRlcigpO1xuXHR9XG5cblx0cHJpdmF0ZSBjaGVja1VwZGF0ZSgpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaW5zdGFuY2VkTWVzaCA9IHRoaXMuaW5zdGFuY2VzUmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRpZiAoIWluc3RhbmNlZE1lc2gpIHJldHVybjtcblx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoKSB7XG5cdFx0bGV0IGNvdW50ID0gMDtcblx0XHRsZXQgdXBkYXRlUmFuZ2UgPSAwO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRjb25zdCBbeyBmcmFtZXMsIGxpbWl0LCByYW5nZSB9LCBpbnN0YW5jZWRNZXNoLCBpbnN0YW5jZXMsIG1hdHJpY2VzLCBjb2xvcnNdID0gW1xuXHRcdFx0XHR0aGlzLmlucHV0cy5nZXQoKSxcblx0XHRcdFx0dGhpcy5pbnN0YW5jZXNSZWYubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5tZXNoZXMoKSxcblx0XHRcdFx0dGhpcy5tYXRyaWNlcygpLFxuXHRcdFx0XHR0aGlzLmNvbG9ycygpLFxuXHRcdFx0XTtcblx0XHRcdGlmICgoZnJhbWVzID09PSBJbmZpbml0eSB8fCBjb3VudCA8IGZyYW1lcykgJiYgaW5zdGFuY2VkTWVzaCkge1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLnVwZGF0ZU1hdHJpeCgpO1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0XHRcdHBhcmVudE1hdHJpeC5jb3B5KGluc3RhbmNlZE1lc2gubWF0cml4V29ybGQpLmludmVydCgpO1xuXG5cdFx0XHRcdHVwZGF0ZVJhbmdlID0gTWF0aC5taW4obGltaXQsIHJhbmdlICE9PSB1bmRlZmluZWQgPyByYW5nZSA6IGxpbWl0LCBpbnN0YW5jZXMubGVuZ3RoKTtcblx0XHRcdFx0aW5zdGFuY2VkTWVzaC5jb3VudCA9IHVwZGF0ZVJhbmdlO1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4LnVwZGF0ZVJhbmdlLmNvdW50ID0gdXBkYXRlUmFuZ2UgKiAxNjtcblx0XHRcdFx0aWYgKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvcikge1xuXHRcdFx0XHRcdGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvci51cGRhdGVSYW5nZS5jb3VudCA9IHVwZGF0ZVJhbmdlICogMztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2VSZWYgPSBpbnN0YW5jZXNbaV07XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSBpcy5yZWYoaW5zdGFuY2VSZWYpID8gaW5zdGFuY2VSZWYubmF0aXZlRWxlbWVudCA6IGluc3RhbmNlUmVmO1xuXHRcdFx0XHRcdC8vIE11bHRpcGx5IHRoZSBpbnZlcnNlIG9mIHRoZSBJbnN0YW5jZWRNZXNoIHdvcmxkIG1hdHJpeCBvciBlbHNlXG5cdFx0XHRcdFx0Ly8gSW5zdGFuY2VzIHdpbGwgYmUgZG91YmxlLXRyYW5zZm9ybWVkIGlmIDxJbnN0YW5jZXM+IGlzbid0IGF0IGlkZW50aXR5XG5cdFx0XHRcdFx0aW5zdGFuY2UubWF0cml4V29ybGQuZGVjb21wb3NlKHRyYW5zbGF0aW9uLCByb3RhdGlvbiwgc2NhbGUpO1xuXHRcdFx0XHRcdGluc3RhbmNlTWF0cml4LmNvbXBvc2UodHJhbnNsYXRpb24sIHJvdGF0aW9uLCBzY2FsZSkucHJlbXVsdGlwbHkocGFyZW50TWF0cml4KTtcblx0XHRcdFx0XHRpbnN0YW5jZU1hdHJpeC50b0FycmF5KG1hdHJpY2VzLCBpICogMTYpO1xuXHRcdFx0XHRcdGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdGluc3RhbmNlLmNvbG9yLnRvQXJyYXkoY29sb3JzLCBpICogMyk7XG5cdFx0XHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZUNvbG9yKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -236,7 +236,7 @@ class NgtsInstances {
|
|
|
236
236
|
this.matrices(),
|
|
237
237
|
this.colors(),
|
|
238
238
|
];
|
|
239
|
-
if (frames === Infinity || count < frames) {
|
|
239
|
+
if ((frames === Infinity || count < frames) && instancedMesh) {
|
|
240
240
|
instancedMesh.updateMatrix();
|
|
241
241
|
instancedMesh.updateMatrixWorld();
|
|
242
242
|
parentMatrix.copy(instancedMesh.matrixWorld).invert();
|
|
@@ -265,27 +265,19 @@ class NgtsInstances {
|
|
|
265
265
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
266
266
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { instancesRef: "instancesRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _frames: ["frames", "_frames"] }, providers: [provideNgtsInstancesApi()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
|
|
267
267
|
<ngt-instanced-mesh
|
|
268
|
+
*args="[undefined, undefined, 0]"
|
|
268
269
|
[userData]="{ instances: meshes() }"
|
|
269
270
|
[ref]="instancesRef"
|
|
270
271
|
[matrixAutoUpdate]="false"
|
|
271
272
|
[raycast]="nullRaycast"
|
|
272
|
-
*args="[undefined, undefined, 0]"
|
|
273
273
|
ngtCompound
|
|
274
274
|
>
|
|
275
275
|
<ngt-instanced-buffer-attribute
|
|
276
|
+
*args="[matrices(), 16]"
|
|
276
277
|
attach="instanceMatrix"
|
|
277
|
-
[count]="matrices().length / 16"
|
|
278
|
-
[array]="matrices()"
|
|
279
|
-
[itemSize]="16"
|
|
280
|
-
[usage]="DynamicDrawUsage"
|
|
281
|
-
/>
|
|
282
|
-
<ngt-instanced-buffer-attribute
|
|
283
|
-
attach="instanceColor"
|
|
284
|
-
[count]="colors().length / 3"
|
|
285
|
-
[array]="colors()"
|
|
286
|
-
[itemSize]="3"
|
|
287
278
|
[usage]="DynamicDrawUsage"
|
|
288
279
|
/>
|
|
280
|
+
<ngt-instanced-buffer-attribute *args="[colors(), 3]" attach="instanceColor" [usage]="DynamicDrawUsage" />
|
|
289
281
|
<ng-container *ngTemplateOutlet="content" />
|
|
290
282
|
</ngt-instanced-mesh>
|
|
291
283
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
@@ -297,27 +289,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
297
289
|
standalone: true,
|
|
298
290
|
template: `
|
|
299
291
|
<ngt-instanced-mesh
|
|
292
|
+
*args="[undefined, undefined, 0]"
|
|
300
293
|
[userData]="{ instances: meshes() }"
|
|
301
294
|
[ref]="instancesRef"
|
|
302
295
|
[matrixAutoUpdate]="false"
|
|
303
296
|
[raycast]="nullRaycast"
|
|
304
|
-
*args="[undefined, undefined, 0]"
|
|
305
297
|
ngtCompound
|
|
306
298
|
>
|
|
307
299
|
<ngt-instanced-buffer-attribute
|
|
300
|
+
*args="[matrices(), 16]"
|
|
308
301
|
attach="instanceMatrix"
|
|
309
|
-
[count]="matrices().length / 16"
|
|
310
|
-
[array]="matrices()"
|
|
311
|
-
[itemSize]="16"
|
|
312
|
-
[usage]="DynamicDrawUsage"
|
|
313
|
-
/>
|
|
314
|
-
<ngt-instanced-buffer-attribute
|
|
315
|
-
attach="instanceColor"
|
|
316
|
-
[count]="colors().length / 3"
|
|
317
|
-
[array]="colors()"
|
|
318
|
-
[itemSize]="3"
|
|
319
302
|
[usage]="DynamicDrawUsage"
|
|
320
303
|
/>
|
|
304
|
+
<ngt-instanced-buffer-attribute *args="[colors(), 3]" attach="instanceColor" [usage]="DynamicDrawUsage" />
|
|
321
305
|
<ng-container *ngTemplateOutlet="content" />
|
|
322
306
|
</ngt-instanced-mesh>
|
|
323
307
|
`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/adaptive-dpr/adaptive-dpr.ts","../../../../libs/soba/performances/src/adaptive-events/adaptive-events.ts","../../../../libs/soba/performances/src/instances/position-mesh.ts","../../../../libs/soba/performances/src/instances/instances.ts","../../../../libs/soba/performances/src/points/points-input.ts","../../../../libs/soba/performances/src/points/position-point.ts","../../../../libs/soba/performances/src/points/points.ts","../../../../libs/soba/performances/src/segments/segment-object.ts","../../../../libs/soba/performances/src/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { Directive, Input, effect, signal, untracked } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-dpr', standalone: true })\nexport class NgtsAdaptiveDpr {\n\tprivate pixelated = signal(false);\n\t@Input({ alias: 'pixelated' }) set _pixelated(pixelated: boolean) {\n\t\tthis.pixelated.set(pixelated);\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate current = this.store.select('performance', 'current');\n\tprivate active = this.store.get('internal', 'active');\n\tprivate setDpr = this.store.get('setDpr');\n\tprivate initialDpr = this.store.get('viewport', 'initialDpr');\n\tprivate domElement = this.store.get('gl', 'domElement');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tonCleanup(() => {\n\t\t\t\tif (this.active) {\n\t\t\t\t\tthis.setDpr(this.initialDpr);\n\t\t\t\t}\n\t\t\t\tif (this.pixelated() && this.domElement) {\n\t\t\t\t\tthis.domElement.style.imageRendering = 'auto';\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setDpr(current * this.initialDpr);\n\t\t\tif (untracked(this.pixelated) && this.domElement) {\n\t\t\t\tthis.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-events', standalone: true })\nexport class NgtsAdaptiveEvents {\n\tprivate store = injectNgtStore();\n\tprivate setEvents = this.store.get('setEvents');\n\tprivate current = this.store.select('performance', 'current');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst enabled = this.store.get('events', 'enabled');\n\t\t\tonCleanup(() => {\n\t\t\t\tthis.setEvents({ enabled });\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setEvents({ enabled: current === 1 });\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceIntersects: THREE.Intersection[] = /*@__PURE__*/ [];\nconst _mesh = /*@__PURE__*/ new THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicMaterial>();\n\nexport class PositionMesh extends THREE.Group {\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.InstancedMesh | undefined>;\n\tinstanceKey: ElementRef<PositionMesh | undefined>;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof THREE.Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tComponent,\n\tcomputed,\n\tContentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tNgtArgs,\n\tNgtRef,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtInstancedMesh,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { InstancedBufferAttribute, InstancedMesh } from 'three';\nimport { PositionMesh } from './position-mesh';\n\nextend({ PositionMesh, InstancedMesh, InstancedBufferAttribute });\n\nexport type NgtsInstancesState = {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-mesh': PositionMesh & NgtGroup;\n\t\t/**\n\t\t * @extends ngt-instanced-mesh\n\t\t */\n\t\t'ngts-instances': NgtsInstancesState & NgtInstancedMesh;\n\t}\n}\n\nconst parentMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst instanceMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst tempMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst translation = /*@__PURE__*/ new THREE.Vector3();\nconst rotation = /*@__PURE__*/ new THREE.Quaternion();\nconst scale = /*@__PURE__*/ new THREE.Vector3();\n\nexport const [injectNgtsInstancesApi, provideNgtsInstancesApi] = createInjectionToken(\n\t(instances: NgtsInstances) => instances.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-instance',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-mesh\n\t\t\t[ref]=\"instanceRef\"\n\t\t\t[instance]=\"instancesApi.getParent()\"\n\t\t\t[instanceKey]=\"instanceRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstance {\n\t@Input() instanceRef = injectNgtRef<PositionMesh>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tinstancesApi = injectNgtsInstancesApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.instancesApi.subscribe(this.instanceRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t[userData]=\"{ instances: meshes() }\"\n\t\t\t[ref]=\"instancesRef\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\t*args=\"[undefined, undefined, 0]\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[count]=\"matrices().length / 16\"\n\t\t\t\t[array]=\"matrices()\"\n\t\t\t\t[itemSize]=\"16\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceColor\"\n\t\t\t\t[count]=\"colors().length / 3\"\n\t\t\t\t[array]=\"colors()\"\n\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t/>\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngt-instanced-mesh>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tproviders: [provideNgtsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstances {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\tnullRaycast = () => null;\n\n\tprivate inputs = signalStore<NgtsInstancesState>({ limit: 1000, frames: Infinity });\n\n\t@Input() instancesRef = injectNgtRef<InstancedMesh>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positionMeshes = signal<NgtRef<PositionMesh>[]>([]);\n\tmeshes = this.positionMeshes.asReadonly();\n\n\tmatrices = computed(() => new Float32Array(this.limit() * 16));\n\tcolors = computed(() => {\n\t\tconst [limit, matrices] = [this.limit(), this.matrices()];\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\t\treturn new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t});\n\n\tapi = {\n\t\tgetParent: () => this.instancesRef,\n\t\tsubscribe: (meshRef: NgtRef<PositionMesh>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionMeshes.update((s) => [...s, meshRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionMeshes.update((s) => s.filter((positionMesh) => positionMesh !== meshRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdate();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdate() {\n\t\teffect(() => {\n\t\t\tconst instancedMesh = this.instancesRef.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet count = 0;\n\t\tlet updateRange = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [{ frames, limit, range }, instancedMesh, instances, matrices, colors] = [\n\t\t\t\tthis.inputs.get(),\n\t\t\t\tthis.instancesRef.nativeElement,\n\t\t\t\tthis.meshes(),\n\t\t\t\tthis.matrices(),\n\t\t\t\tthis.colors(),\n\t\t\t];\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tupdateRange = Math.min(limit, range !== undefined ? range : limit, instances.length);\n\t\t\t\tinstancedMesh.count = updateRange;\n\t\t\t\tinstancedMesh.instanceMatrix.updateRange.count = updateRange * 16;\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tinstancedMesh.instanceColor.updateRange.count = updateRange * 3;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < instances.length; i++) {\n\t\t\t\t\tconst instanceRef = instances[i];\n\t\t\t\t\tconst instance = is.ref(instanceRef) ? instanceRef.nativeElement : instanceRef;\n\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\tinstancedMesh.instanceMatrix.needsUpdate = true;\n\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t}\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, Input, computed } from '@angular/core';\nimport { injectNgtRef, signalStore } from 'angular-three';\nimport type { Points } from 'three';\n\nexport type NgtsPointsInstancesState = {\n\tlimit: number;\n\trange?: number;\n};\n\nexport type NgtsPointsBuffersState = {\n\t// a buffer containing all points position\n\tpositions: Float32Array;\n\tcolors?: Float32Array;\n\tsizes?: Float32Array;\n\t// The size of the points in the buffer\n\tstride: 2 | 3;\n};\n\n@Directive()\nexport abstract class NgtsPointsInput {\n\tprotected inputs = signalStore<NgtsPointsBuffersState & NgtsPointsInstancesState>({\n\t\tstride: 3,\n\t\tlimit: 1000,\n\t});\n\n\t@Input() pointsRef = injectNgtRef<Points>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'positions' }) set _positions(positions: Float32Array) {\n\t\tthis.inputs.set({ positions });\n\t}\n\n\t@Input({ alias: 'colors' }) set _colors(colors: Float32Array) {\n\t\tthis.inputs.set({ colors });\n\t}\n\n\t@Input({ alias: 'sizes' }) set _sizes(sizes: Float32Array) {\n\t\tthis.inputs.set({ sizes });\n\t}\n\n\t@Input({ alias: 'stride' }) set _stride(stride: 2 | 3) {\n\t\tthis.inputs.set({ stride });\n\t}\n\n\tlimit = this.inputs.select('limit');\n\trange = this.inputs.select('range');\n\tpositions = this.inputs.select('positions');\n\tcolors = this.inputs.select('colors');\n\tcolorsLength = computed(() => this.colors()?.length || 0);\n\tsizes = this.inputs.select('sizes');\n\tsizesLength = computed(() => this.sizes()?.length || 0);\n\tstride = this.inputs.select('stride');\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _inverseMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _ray = /*@__PURE__*/ new THREE.Ray();\nconst _sphere = /*@__PURE__*/ new THREE.Sphere();\nconst _position = /*@__PURE__*/ new THREE.Vector3();\n\nexport class PositionPoint extends THREE.Group {\n\tsize: number;\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.Points | undefined>;\n\tinstanceKey: ElementRef<PositionPoint | undefined>;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new THREE.Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tContentChild,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tTemplateRef,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\ttype NgtGroup,\n\ttype NgtPoints,\n\ttype NgtRef,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\nimport { NgtsPointsInput, type NgtsPointsBuffersState, type NgtsPointsInstancesState } from './points-input';\nimport { PositionPoint } from './position-point';\n\nextend({ Points, BufferGeometry, BufferAttribute, PositionPoint });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-instances': NgtsPointsInstancesState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-buffers': NgtsPointsBuffersState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points': (NgtsPointsBuffersState | NgtsPointsInstancesState) & NgtsPoints;\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-point': PositionPoint & NgtGroup;\n\t}\n}\n\nexport const [injectNgtsPointsInstanceApi, provideNgtsPointsInstancesApi] = createInjectionToken(\n\tfunction pointsInstancesApi(instances: NgtsPointsInstances) {\n\t\treturn instances.api;\n\t},\n\t{ isRoot: false, deps: [forwardRef(() => NgtsPointsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-points-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t[ref]=\"pointsInput.pointsRef\"\n\t\t\t[userData]=\"{ instances: points() }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / 3\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"colors().length / 3\"\n\t\t\t\t\t[array]=\"colors()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"sizes().length\"\n\t\t\t\t\t[array]=\"sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tproviders: [provideNgtsPointsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsInstances {\n\tnullRaycast = () => null;\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tprivate positionPoints = signal<NgtRef<PositionPoint>[]>([]);\n\tprivate parentMatrix = new THREE.Matrix4();\n\tprivate position = new THREE.Vector3();\n\n\tpoints = this.positionPoints.asReadonly();\n\tpositions = computed(() => new Float32Array(this.pointsInput.limit() * 3));\n\tcolors = computed(() => Float32Array.from({ length: this.pointsInput.limit() * 3 }, () => 1));\n\tsizes = computed(() => Float32Array.from({ length: this.pointsInput.limit() }, () => 1));\n\n\tinjector = inject(Injector);\n\n\tapi = {\n\t\tgetParent: () => this.pointsInput.pointsRef,\n\t\tsubscribe: (pointRef: NgtRef<PositionPoint>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionPoints.update((s) => [...s, pointRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionPoints.update((s) => s.filter((positionPoint) => positionPoint !== pointRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdatePositionAttribute();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdatePositionAttribute() {\n\t\teffect(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [limit, range, positionPoints, positions, colors, sizes] = [\n\t\t\t\tthis.pointsInput.limit(),\n\t\t\t\tthis.pointsInput.range(),\n\t\t\t\tthis.positionPoints(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t\tthis.sizes(),\n\t\t\t];\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tthis.parentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tpositionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < positionPoints.length; i++) {\n\t\t\t\tconst positionPointRef = positionPoints[i];\n\t\t\t\tconst positionPoint = is.ref(positionPointRef) ? positionPointRef.nativeElement : positionPointRef;\n\t\t\t\tif (!positionPoint) continue;\n\t\t\t\tpositionPoint.getWorldPosition(this.position).applyMatrix4(this.parentMatrix);\n\t\t\t\tthis.position.toArray(positions, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\n\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t}\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-point',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-point\n\t\t\t[instance]=\"pointsInstancesApi.getParent()\"\n\t\t\t[ref]=\"pointRef\"\n\t\t\t[instanceKey]=\"pointRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoint implements OnInit {\n\t@Input() pointRef = injectNgtRef<PositionPoint>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tpointsInstancesApi = injectNgtsPointsInstanceApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.pointsInstancesApi.subscribe(this.pointRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffers',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points [ref]=\"pointsInput.pointsRef\" ngtCompound>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"pointsInput.positions().length / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.positions()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"pointsInput.colorsLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.colors()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"pointsInput.sizesLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsBuffers {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tstore = injectNgtStore();\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [sizes, colors] = [this.pointsInput.sizes(), this.pointsInput.colors()];\n\t\t\tconst attr = points.geometry.attributes;\n\t\t\tcheckUpdate(attr['position']);\n\t\t\tif (colors) checkUpdate(attr['color']);\n\t\t\tif (sizes) checkUpdate(attr['size']);\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-points-buffers *ngIf=\"positions()\">\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngts-points-buffers>\n\t\t<ngts-points-instances *ngIf=\"!positions()\" #pointsInstances>\n\t\t\t<!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->\n\t\t\t<ng-container *ngTemplateOutlet=\"content; injector: pointsInstances.injector\" />\n\t\t</ngts-points-instances>\n\t`,\n\timports: [NgIf, NgtsPointsBuffers, NgtsPointsInstances, NgTemplateOutlet],\n\tproviders: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoints extends NgtsPointsInput {\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n}\n","import * as THREE from 'three';\n\nexport class SegmentObject {\n\tcolor: THREE.Color;\n\tstart: THREE.Vector3;\n\tend: THREE.Vector3;\n\tconstructor() {\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.start = new THREE.Vector3(0, 0, 0);\n\t\tthis.end = new THREE.Vector3(0, 0, 0);\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtRef,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtColor,\n\ttype NgtVector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\nexport type NgtsSegmentState = {\n\tstart?: NgtVector3;\n\tend?: NgtVector3;\n\tcolor?: NgtColor;\n};\n\nexport type NgtsSegmentsState = {\n\tlimit: number;\n\tlineWidth: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngt-segment-object': SegmentObject;\n\t\t'ngts-segment': NgtsSegmentState;\n\t\t'ngts-segments': NgtsSegmentsState;\n\t}\n}\n\nconst normPos = (pos: NgtsSegmentState['start']): SegmentObject['start'] =>\n\tpos instanceof THREE.Vector3\n\t\t? pos\n\t\t: new THREE.Vector3(...((typeof pos === 'number' ? [pos, pos, pos] : pos) as [number, number, number]));\n\nextend({ SegmentObject });\n\nexport const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken(\n\t(segments: NgtsSegments) => segments.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsSegments)] },\n);\n\n@Component({\n\tselector: 'ngts-segment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-segment-object [ref]=\"segmentRef\" [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegment implements OnInit {\n\tprivate inputs = signalStore<NgtsSegmentState>({});\n\n\t@Input() segmentRef = injectNgtRef<SegmentObject>();\n\n\t@Input({ alias: 'start' }) set _start(start: NgtVector3) {\n\t\tthis.inputs.set({ start });\n\t}\n\n\t@Input({ alias: 'end' }) set _end(end: NgtVector3) {\n\t\tthis.inputs.set({ end });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: NgtColor) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\tprivate segmentsApi = injectNgtsSegmentsApi();\n\tprivate injector = inject(Injector);\n\tprivate zone = inject(NgZone);\n\n\tprivate start = this.inputs.select('start');\n\tprivate end = this.inputs.select('end');\n\n\tnormalizedStart = computed(() => normPos(this.start()));\n\tnormalizedEnd = computed(() => normPos(this.end()));\n\tcolor = this.inputs.select('color');\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => {\n\t\t\t\t\tconst api = this.segmentsApi();\n\t\t\t\t\treturn api.subscribe(this.segmentRef);\n\t\t\t\t});\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-segments',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line]\" [ref]=\"segmentsRef\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[material]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\tngtCompound\n\t\t\t\t[vertexColors]=\"true\"\n\t\t\t\t[resolution]=\"resolution\"\n\t\t\t\t[linewidth]=\"lineWidth()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tproviders: [provideNgtsSegmentsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegments {\n\tprivate inputs = signalStore<NgtsSegmentsState>({ limit: 1000, lineWidth: 1 });\n\n\t@Input() segmentsRef = injectNgtRef<Line2>();\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'lineWidth' }) set _lineWidth(lineWidth: number) {\n\t\tthis.inputs.set({ lineWidth });\n\t}\n\n\tprivate segments = signal<NgtRef<SegmentObject>[]>([]);\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positions = computed(() => Array(this.limit() * 6).fill(0));\n\tprivate colors = computed(() => Array(this.limit() * 6).fill(0));\n\n\tresolution = new THREE.Vector2(512, 512);\n\tlineWidth = this.inputs.select('lineWidth');\n\tline = new Line2();\n\tmaterial = new LineMaterial();\n\tgeometry = new LineSegmentsGeometry();\n\n\tapi = computed(() => ({\n\t\tsubscribe: (segmentRef: NgtRef<SegmentObject>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.segments.update((s) => [...s, segmentRef]);\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.segments.update((s) => s.filter((segment) => segment !== segmentRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t}));\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [segments, limit, positions, colors] = [\n\t\t\t\tthis.segments(),\n\t\t\t\tthis.limit(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t];\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segmentRef = segments[i];\n\t\t\t\tconst segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/adaptive-dpr/adaptive-dpr.ts","../../../../libs/soba/performances/src/adaptive-events/adaptive-events.ts","../../../../libs/soba/performances/src/instances/position-mesh.ts","../../../../libs/soba/performances/src/instances/instances.ts","../../../../libs/soba/performances/src/points/points-input.ts","../../../../libs/soba/performances/src/points/position-point.ts","../../../../libs/soba/performances/src/points/points.ts","../../../../libs/soba/performances/src/segments/segment-object.ts","../../../../libs/soba/performances/src/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { Directive, Input, effect, signal, untracked } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-dpr', standalone: true })\nexport class NgtsAdaptiveDpr {\n\tprivate pixelated = signal(false);\n\t@Input({ alias: 'pixelated' }) set _pixelated(pixelated: boolean) {\n\t\tthis.pixelated.set(pixelated);\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate current = this.store.select('performance', 'current');\n\tprivate active = this.store.get('internal', 'active');\n\tprivate setDpr = this.store.get('setDpr');\n\tprivate initialDpr = this.store.get('viewport', 'initialDpr');\n\tprivate domElement = this.store.get('gl', 'domElement');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tonCleanup(() => {\n\t\t\t\tif (this.active) {\n\t\t\t\t\tthis.setDpr(this.initialDpr);\n\t\t\t\t}\n\t\t\t\tif (this.pixelated() && this.domElement) {\n\t\t\t\t\tthis.domElement.style.imageRendering = 'auto';\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setDpr(current * this.initialDpr);\n\t\t\tif (untracked(this.pixelated) && this.domElement) {\n\t\t\t\tthis.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-events', standalone: true })\nexport class NgtsAdaptiveEvents {\n\tprivate store = injectNgtStore();\n\tprivate setEvents = this.store.get('setEvents');\n\tprivate current = this.store.select('performance', 'current');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst enabled = this.store.get('events', 'enabled');\n\t\t\tonCleanup(() => {\n\t\t\t\tthis.setEvents({ enabled });\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setEvents({ enabled: current === 1 });\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceIntersects: THREE.Intersection[] = /*@__PURE__*/ [];\nconst _mesh = /*@__PURE__*/ new THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicMaterial>();\n\nexport class PositionMesh extends THREE.Group {\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.InstancedMesh | undefined>;\n\tinstanceKey: ElementRef<PositionMesh | undefined>;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof THREE.Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tComponent,\n\tcomputed,\n\tContentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tNgtArgs,\n\tNgtRef,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtInstancedMesh,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { InstancedBufferAttribute, InstancedMesh } from 'three';\nimport { PositionMesh } from './position-mesh';\n\nextend({ PositionMesh, InstancedMesh, InstancedBufferAttribute });\n\nexport type NgtsInstancesState = {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-mesh': PositionMesh & NgtGroup;\n\t\t/**\n\t\t * @extends ngt-instanced-mesh\n\t\t */\n\t\t'ngts-instances': NgtsInstancesState & NgtInstancedMesh;\n\t}\n}\n\nconst parentMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst instanceMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst tempMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst translation = /*@__PURE__*/ new THREE.Vector3();\nconst rotation = /*@__PURE__*/ new THREE.Quaternion();\nconst scale = /*@__PURE__*/ new THREE.Vector3();\n\nexport const [injectNgtsInstancesApi, provideNgtsInstancesApi] = createInjectionToken(\n\t(instances: NgtsInstances) => instances.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-instance',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-mesh\n\t\t\t[ref]=\"instanceRef\"\n\t\t\t[instance]=\"instancesApi.getParent()\"\n\t\t\t[instanceKey]=\"instanceRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstance {\n\t@Input() instanceRef = injectNgtRef<PositionMesh>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tinstancesApi = injectNgtsInstancesApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.instancesApi.subscribe(this.instanceRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t*args=\"[undefined, undefined, 0]\"\n\t\t\t[userData]=\"{ instances: meshes() }\"\n\t\t\t[ref]=\"instancesRef\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\t*args=\"[matrices(), 16]\"\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute *args=\"[colors(), 3]\" attach=\"instanceColor\" [usage]=\"DynamicDrawUsage\" />\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngt-instanced-mesh>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tproviders: [provideNgtsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstances {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\tnullRaycast = () => null;\n\n\tprivate inputs = signalStore<NgtsInstancesState>({ limit: 1000, frames: Infinity });\n\n\t@Input() instancesRef = injectNgtRef<InstancedMesh>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positionMeshes = signal<NgtRef<PositionMesh>[]>([]);\n\tmeshes = this.positionMeshes.asReadonly();\n\n\tmatrices = computed(() => new Float32Array(this.limit() * 16));\n\tcolors = computed(() => {\n\t\tconst [limit, matrices] = [this.limit(), this.matrices()];\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\t\treturn new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t});\n\n\tapi = {\n\t\tgetParent: () => this.instancesRef,\n\t\tsubscribe: (meshRef: NgtRef<PositionMesh>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionMeshes.update((s) => [...s, meshRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionMeshes.update((s) => s.filter((positionMesh) => positionMesh !== meshRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdate();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdate() {\n\t\teffect(() => {\n\t\t\tconst instancedMesh = this.instancesRef.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet count = 0;\n\t\tlet updateRange = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [{ frames, limit, range }, instancedMesh, instances, matrices, colors] = [\n\t\t\t\tthis.inputs.get(),\n\t\t\t\tthis.instancesRef.nativeElement,\n\t\t\t\tthis.meshes(),\n\t\t\t\tthis.matrices(),\n\t\t\t\tthis.colors(),\n\t\t\t];\n\t\t\tif ((frames === Infinity || count < frames) && instancedMesh) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tupdateRange = Math.min(limit, range !== undefined ? range : limit, instances.length);\n\t\t\t\tinstancedMesh.count = updateRange;\n\t\t\t\tinstancedMesh.instanceMatrix.updateRange.count = updateRange * 16;\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tinstancedMesh.instanceColor.updateRange.count = updateRange * 3;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < instances.length; i++) {\n\t\t\t\t\tconst instanceRef = instances[i];\n\t\t\t\t\tconst instance = is.ref(instanceRef) ? instanceRef.nativeElement : instanceRef;\n\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\tinstancedMesh.instanceMatrix.needsUpdate = true;\n\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t}\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, Input, computed } from '@angular/core';\nimport { injectNgtRef, signalStore } from 'angular-three';\nimport type { Points } from 'three';\n\nexport type NgtsPointsInstancesState = {\n\tlimit: number;\n\trange?: number;\n};\n\nexport type NgtsPointsBuffersState = {\n\t// a buffer containing all points position\n\tpositions: Float32Array;\n\tcolors?: Float32Array;\n\tsizes?: Float32Array;\n\t// The size of the points in the buffer\n\tstride: 2 | 3;\n};\n\n@Directive()\nexport abstract class NgtsPointsInput {\n\tprotected inputs = signalStore<NgtsPointsBuffersState & NgtsPointsInstancesState>({\n\t\tstride: 3,\n\t\tlimit: 1000,\n\t});\n\n\t@Input() pointsRef = injectNgtRef<Points>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'positions' }) set _positions(positions: Float32Array) {\n\t\tthis.inputs.set({ positions });\n\t}\n\n\t@Input({ alias: 'colors' }) set _colors(colors: Float32Array) {\n\t\tthis.inputs.set({ colors });\n\t}\n\n\t@Input({ alias: 'sizes' }) set _sizes(sizes: Float32Array) {\n\t\tthis.inputs.set({ sizes });\n\t}\n\n\t@Input({ alias: 'stride' }) set _stride(stride: 2 | 3) {\n\t\tthis.inputs.set({ stride });\n\t}\n\n\tlimit = this.inputs.select('limit');\n\trange = this.inputs.select('range');\n\tpositions = this.inputs.select('positions');\n\tcolors = this.inputs.select('colors');\n\tcolorsLength = computed(() => this.colors()?.length || 0);\n\tsizes = this.inputs.select('sizes');\n\tsizesLength = computed(() => this.sizes()?.length || 0);\n\tstride = this.inputs.select('stride');\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _inverseMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _ray = /*@__PURE__*/ new THREE.Ray();\nconst _sphere = /*@__PURE__*/ new THREE.Sphere();\nconst _position = /*@__PURE__*/ new THREE.Vector3();\n\nexport class PositionPoint extends THREE.Group {\n\tsize: number;\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.Points | undefined>;\n\tinstanceKey: ElementRef<PositionPoint | undefined>;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new THREE.Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tContentChild,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tTemplateRef,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\ttype NgtGroup,\n\ttype NgtPoints,\n\ttype NgtRef,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\nimport { NgtsPointsInput, type NgtsPointsBuffersState, type NgtsPointsInstancesState } from './points-input';\nimport { PositionPoint } from './position-point';\n\nextend({ Points, BufferGeometry, BufferAttribute, PositionPoint });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-instances': NgtsPointsInstancesState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-buffers': NgtsPointsBuffersState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points': (NgtsPointsBuffersState | NgtsPointsInstancesState) & NgtsPoints;\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-point': PositionPoint & NgtGroup;\n\t}\n}\n\nexport const [injectNgtsPointsInstanceApi, provideNgtsPointsInstancesApi] = createInjectionToken(\n\tfunction pointsInstancesApi(instances: NgtsPointsInstances) {\n\t\treturn instances.api;\n\t},\n\t{ isRoot: false, deps: [forwardRef(() => NgtsPointsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-points-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t[ref]=\"pointsInput.pointsRef\"\n\t\t\t[userData]=\"{ instances: points() }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / 3\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"colors().length / 3\"\n\t\t\t\t\t[array]=\"colors()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"sizes().length\"\n\t\t\t\t\t[array]=\"sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tproviders: [provideNgtsPointsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsInstances {\n\tnullRaycast = () => null;\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tprivate positionPoints = signal<NgtRef<PositionPoint>[]>([]);\n\tprivate parentMatrix = new THREE.Matrix4();\n\tprivate position = new THREE.Vector3();\n\n\tpoints = this.positionPoints.asReadonly();\n\tpositions = computed(() => new Float32Array(this.pointsInput.limit() * 3));\n\tcolors = computed(() => Float32Array.from({ length: this.pointsInput.limit() * 3 }, () => 1));\n\tsizes = computed(() => Float32Array.from({ length: this.pointsInput.limit() }, () => 1));\n\n\tinjector = inject(Injector);\n\n\tapi = {\n\t\tgetParent: () => this.pointsInput.pointsRef,\n\t\tsubscribe: (pointRef: NgtRef<PositionPoint>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionPoints.update((s) => [...s, pointRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionPoints.update((s) => s.filter((positionPoint) => positionPoint !== pointRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdatePositionAttribute();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdatePositionAttribute() {\n\t\teffect(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [limit, range, positionPoints, positions, colors, sizes] = [\n\t\t\t\tthis.pointsInput.limit(),\n\t\t\t\tthis.pointsInput.range(),\n\t\t\t\tthis.positionPoints(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t\tthis.sizes(),\n\t\t\t];\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tthis.parentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tpositionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < positionPoints.length; i++) {\n\t\t\t\tconst positionPointRef = positionPoints[i];\n\t\t\t\tconst positionPoint = is.ref(positionPointRef) ? positionPointRef.nativeElement : positionPointRef;\n\t\t\t\tif (!positionPoint) continue;\n\t\t\t\tpositionPoint.getWorldPosition(this.position).applyMatrix4(this.parentMatrix);\n\t\t\t\tthis.position.toArray(positions, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\n\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t}\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-point',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-point\n\t\t\t[instance]=\"pointsInstancesApi.getParent()\"\n\t\t\t[ref]=\"pointRef\"\n\t\t\t[instanceKey]=\"pointRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoint implements OnInit {\n\t@Input() pointRef = injectNgtRef<PositionPoint>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tpointsInstancesApi = injectNgtsPointsInstanceApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.pointsInstancesApi.subscribe(this.pointRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffers',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points [ref]=\"pointsInput.pointsRef\" ngtCompound>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"pointsInput.positions().length / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.positions()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"pointsInput.colorsLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.colors()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"pointsInput.sizesLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsBuffers {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tstore = injectNgtStore();\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [sizes, colors] = [this.pointsInput.sizes(), this.pointsInput.colors()];\n\t\t\tconst attr = points.geometry.attributes;\n\t\t\tcheckUpdate(attr['position']);\n\t\t\tif (colors) checkUpdate(attr['color']);\n\t\t\tif (sizes) checkUpdate(attr['size']);\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-points-buffers *ngIf=\"positions()\">\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngts-points-buffers>\n\t\t<ngts-points-instances *ngIf=\"!positions()\" #pointsInstances>\n\t\t\t<!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->\n\t\t\t<ng-container *ngTemplateOutlet=\"content; injector: pointsInstances.injector\" />\n\t\t</ngts-points-instances>\n\t`,\n\timports: [NgIf, NgtsPointsBuffers, NgtsPointsInstances, NgTemplateOutlet],\n\tproviders: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoints extends NgtsPointsInput {\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n}\n","import * as THREE from 'three';\n\nexport class SegmentObject {\n\tcolor: THREE.Color;\n\tstart: THREE.Vector3;\n\tend: THREE.Vector3;\n\tconstructor() {\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.start = new THREE.Vector3(0, 0, 0);\n\t\tthis.end = new THREE.Vector3(0, 0, 0);\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtRef,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtColor,\n\ttype NgtVector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\nexport type NgtsSegmentState = {\n\tstart?: NgtVector3;\n\tend?: NgtVector3;\n\tcolor?: NgtColor;\n};\n\nexport type NgtsSegmentsState = {\n\tlimit: number;\n\tlineWidth: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngt-segment-object': SegmentObject;\n\t\t'ngts-segment': NgtsSegmentState;\n\t\t'ngts-segments': NgtsSegmentsState;\n\t}\n}\n\nconst normPos = (pos: NgtsSegmentState['start']): SegmentObject['start'] =>\n\tpos instanceof THREE.Vector3\n\t\t? pos\n\t\t: new THREE.Vector3(...((typeof pos === 'number' ? [pos, pos, pos] : pos) as [number, number, number]));\n\nextend({ SegmentObject });\n\nexport const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken(\n\t(segments: NgtsSegments) => segments.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsSegments)] },\n);\n\n@Component({\n\tselector: 'ngts-segment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-segment-object [ref]=\"segmentRef\" [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegment implements OnInit {\n\tprivate inputs = signalStore<NgtsSegmentState>({});\n\n\t@Input() segmentRef = injectNgtRef<SegmentObject>();\n\n\t@Input({ alias: 'start' }) set _start(start: NgtVector3) {\n\t\tthis.inputs.set({ start });\n\t}\n\n\t@Input({ alias: 'end' }) set _end(end: NgtVector3) {\n\t\tthis.inputs.set({ end });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: NgtColor) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\tprivate segmentsApi = injectNgtsSegmentsApi();\n\tprivate injector = inject(Injector);\n\tprivate zone = inject(NgZone);\n\n\tprivate start = this.inputs.select('start');\n\tprivate end = this.inputs.select('end');\n\n\tnormalizedStart = computed(() => normPos(this.start()));\n\tnormalizedEnd = computed(() => normPos(this.end()));\n\tcolor = this.inputs.select('color');\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => {\n\t\t\t\t\tconst api = this.segmentsApi();\n\t\t\t\t\treturn api.subscribe(this.segmentRef);\n\t\t\t\t});\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-segments',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line]\" [ref]=\"segmentsRef\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[material]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\tngtCompound\n\t\t\t\t[vertexColors]=\"true\"\n\t\t\t\t[resolution]=\"resolution\"\n\t\t\t\t[linewidth]=\"lineWidth()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tproviders: [provideNgtsSegmentsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegments {\n\tprivate inputs = signalStore<NgtsSegmentsState>({ limit: 1000, lineWidth: 1 });\n\n\t@Input() segmentsRef = injectNgtRef<Line2>();\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'lineWidth' }) set _lineWidth(lineWidth: number) {\n\t\tthis.inputs.set({ lineWidth });\n\t}\n\n\tprivate segments = signal<NgtRef<SegmentObject>[]>([]);\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positions = computed(() => Array(this.limit() * 6).fill(0));\n\tprivate colors = computed(() => Array(this.limit() * 6).fill(0));\n\n\tresolution = new THREE.Vector2(512, 512);\n\tlineWidth = this.inputs.select('lineWidth');\n\tline = new Line2();\n\tmaterial = new LineMaterial();\n\tgeometry = new LineSegmentsGeometry();\n\n\tapi = computed(() => ({\n\t\tsubscribe: (segmentRef: NgtRef<SegmentObject>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.segments.update((s) => [...s, segmentRef]);\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.segments.update((s) => s.filter((segment) => segment !== segmentRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t}));\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [segments, limit, positions, colors] = [\n\t\t\t\tthis.segments(),\n\t\t\t\tthis.limit(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t];\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segmentRef = segments[i];\n\t\t\t\tconst segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|