angular-three-soba 2.0.0-beta.261 → 2.0.0-beta.262
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/lib/catmull-rom-line.d.ts +128 -128
- package/abstractions/lib/edges.d.ts +130 -130
- package/abstractions/lib/gradient-texture.d.ts +1 -1
- package/abstractions/lib/grid.d.ts +6 -6
- package/abstractions/lib/line.d.ts +3 -3
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/text-3d.d.ts +13 -13
- package/abstractions/lib/text.d.ts +2 -2
- package/cameras/lib/cube-camera.d.ts +1 -1
- package/cameras/lib/orthographic-camera.d.ts +1 -1
- package/cameras/lib/perspective-camera.d.ts +1 -1
- package/controls/index.d.ts +1 -0
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/controls/lib/scroll-controls.d.ts +78 -0
- package/esm2022/controls/index.mjs +2 -1
- package/esm2022/controls/lib/scroll-controls.mjs +268 -0
- package/fesm2022/angular-three-soba-controls.mjs +271 -7
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/materials/lib/custom-shader-material.d.ts +1 -1
- package/materials/lib/mesh-refraction-material.d.ts +2 -2
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +5 -5
- package/misc/lib/sampler.d.ts +1 -1
- package/package.json +12 -12
- package/staging/README.md +4 -4
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
- package/staging/lib/stage.d.ts +1 -1
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
-
import { omit, injectStore, pick, extend, injectBeforeRender, NgtArgs } from 'angular-three';
|
|
2
|
+
import { input, output, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, model, inject, afterNextRender, untracked, ElementRef, Directive } from '@angular/core';
|
|
3
|
+
import { omit, injectStore, pick, extend, injectBeforeRender, NgtArgs, NgtHTML, provideHTMLDomElement } from 'angular-three';
|
|
4
4
|
import CameraControls from 'camera-controls';
|
|
5
5
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
6
6
|
import { Box3, MathUtils, Matrix4, Quaternion, Raycaster, Sphere, Spherical, Vector2, Vector3, Vector4 } from 'three';
|
|
7
7
|
import { OrbitControls } from 'three-stdlib';
|
|
8
|
+
import { DOCUMENT } from '@angular/common';
|
|
9
|
+
import { easing } from 'maath';
|
|
10
|
+
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
8
11
|
|
|
9
|
-
const defaultOptions$
|
|
12
|
+
const defaultOptions$2 = {
|
|
10
13
|
makeDefault: false,
|
|
11
14
|
events: false,
|
|
12
15
|
regress: false,
|
|
13
16
|
};
|
|
14
17
|
class NgtsCameraControls {
|
|
15
18
|
constructor() {
|
|
16
|
-
this.options = input(defaultOptions$
|
|
19
|
+
this.options = input(defaultOptions$2, { transform: mergeInputs(defaultOptions$2) });
|
|
17
20
|
this.parameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);
|
|
18
21
|
this.changed = output();
|
|
19
22
|
this.started = output();
|
|
@@ -127,7 +130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
127
130
|
}]
|
|
128
131
|
}], ctorParameters: () => [] });
|
|
129
132
|
|
|
130
|
-
const defaultOptions = {
|
|
133
|
+
const defaultOptions$1 = {
|
|
131
134
|
enableDamping: true,
|
|
132
135
|
regress: false,
|
|
133
136
|
makeDefault: false,
|
|
@@ -135,7 +138,7 @@ const defaultOptions = {
|
|
|
135
138
|
};
|
|
136
139
|
class NgtsOrbitControls {
|
|
137
140
|
constructor() {
|
|
138
|
-
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
141
|
+
this.options = input(defaultOptions$1, { transform: mergeInputs(defaultOptions$1) });
|
|
139
142
|
this.parameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement', 'keyEvents', 'enableDamping']);
|
|
140
143
|
this.changed = output();
|
|
141
144
|
this.started = output();
|
|
@@ -248,9 +251,270 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
248
251
|
}]
|
|
249
252
|
}], ctorParameters: () => [] });
|
|
250
253
|
|
|
254
|
+
const defaultOptions = {
|
|
255
|
+
eps: 0.00001,
|
|
256
|
+
horizontal: false,
|
|
257
|
+
infinite: false,
|
|
258
|
+
pages: 1,
|
|
259
|
+
distance: 1,
|
|
260
|
+
damping: 0.25,
|
|
261
|
+
maxSpeed: Infinity,
|
|
262
|
+
prepend: false,
|
|
263
|
+
enabled: true,
|
|
264
|
+
style: {},
|
|
265
|
+
};
|
|
266
|
+
class NgtsScrollControls {
|
|
267
|
+
constructor() {
|
|
268
|
+
this.progress = model(0);
|
|
269
|
+
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
270
|
+
this.document = inject(DOCUMENT);
|
|
271
|
+
this.store = injectStore();
|
|
272
|
+
this.gl = this.store.select('gl');
|
|
273
|
+
this.events = this.store.select('events');
|
|
274
|
+
this.invalidate = this.store.select('invalidate');
|
|
275
|
+
this.size = this.store.select('size');
|
|
276
|
+
this.domElement = pick(this.gl, 'domElement');
|
|
277
|
+
this.target = pick(this.domElement, 'parentNode');
|
|
278
|
+
this._el = this.document.createElement('div');
|
|
279
|
+
this._fill = this.document.createElement('div');
|
|
280
|
+
this._fixed = this.document.createElement('div');
|
|
281
|
+
this.style = pick(this.options, 'style');
|
|
282
|
+
this.prepend = pick(this.options, 'prepend');
|
|
283
|
+
this.enabled = pick(this.options, 'enabled');
|
|
284
|
+
this.infinite = pick(this.options, 'infinite');
|
|
285
|
+
this.maxSpeed = pick(this.options, 'maxSpeed');
|
|
286
|
+
this.eps = pick(this.options, 'eps');
|
|
287
|
+
this.horizontal = pick(this.options, 'horizontal');
|
|
288
|
+
this.pages = pick(this.options, 'pages');
|
|
289
|
+
this.distance = pick(this.options, 'distance');
|
|
290
|
+
this.damping = pick(this.options, 'damping');
|
|
291
|
+
this.scroll = 0;
|
|
292
|
+
this.offset = 0;
|
|
293
|
+
this.delta = 0;
|
|
294
|
+
const autoEffect = injectAutoEffect();
|
|
295
|
+
afterNextRender(() => {
|
|
296
|
+
autoEffect(() => {
|
|
297
|
+
const target = this.target();
|
|
298
|
+
if (!target)
|
|
299
|
+
return;
|
|
300
|
+
const parent = target;
|
|
301
|
+
const [pages, distance, horizontal, el, fill, fixed, style, prepend, domElement, events] = [
|
|
302
|
+
this.pages(),
|
|
303
|
+
this.distance(),
|
|
304
|
+
this.horizontal(),
|
|
305
|
+
this.el,
|
|
306
|
+
this.fill,
|
|
307
|
+
this.fixed,
|
|
308
|
+
untracked(this.style),
|
|
309
|
+
untracked(this.prepend),
|
|
310
|
+
untracked(this.domElement),
|
|
311
|
+
untracked(this.events),
|
|
312
|
+
];
|
|
313
|
+
el.style.position = 'absolute';
|
|
314
|
+
el.style.width = '100%';
|
|
315
|
+
el.style.height = '100%';
|
|
316
|
+
el.style[horizontal ? 'overflowX' : 'overflowY'] = 'auto';
|
|
317
|
+
el.style[horizontal ? 'overflowY' : 'overflowX'] = 'hidden';
|
|
318
|
+
el.style.top = '0px';
|
|
319
|
+
el.style.left = '0px';
|
|
320
|
+
for (const key in style) {
|
|
321
|
+
el.style[key] = style[key];
|
|
322
|
+
}
|
|
323
|
+
fixed.style.position = 'sticky';
|
|
324
|
+
fixed.style.top = '0px';
|
|
325
|
+
fixed.style.left = '0px';
|
|
326
|
+
fixed.style.width = '100%';
|
|
327
|
+
fixed.style.height = '100%';
|
|
328
|
+
fixed.style.overflow = 'hidden';
|
|
329
|
+
el.appendChild(fixed);
|
|
330
|
+
fill.style.height = horizontal ? '100%' : `${pages * distance * 100}%`;
|
|
331
|
+
fill.style.width = horizontal ? `${pages * distance * 100}%` : '100%';
|
|
332
|
+
fill.style.pointerEvents = 'none';
|
|
333
|
+
el.appendChild(fill);
|
|
334
|
+
if (prepend)
|
|
335
|
+
parent.prepend(el);
|
|
336
|
+
else
|
|
337
|
+
parent.appendChild(el);
|
|
338
|
+
// Init scroll one pixel in to allow upward/leftward scroll
|
|
339
|
+
el[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;
|
|
340
|
+
const oldTarget = (events.connected || domElement);
|
|
341
|
+
requestAnimationFrame(() => events.connect?.(el));
|
|
342
|
+
const oldCompute = events.compute?.bind(events);
|
|
343
|
+
this.store.snapshot.setEvents({
|
|
344
|
+
compute(event, store) {
|
|
345
|
+
const state = store.snapshot;
|
|
346
|
+
// we are using boundingClientRect because we could not rely on target.offsetTop as canvas could be positioned anywhere in dom
|
|
347
|
+
const { left, top } = parent.getBoundingClientRect();
|
|
348
|
+
const offsetX = event.clientX - left;
|
|
349
|
+
const offsetY = event.clientY - top;
|
|
350
|
+
state.pointer.set((offsetX / state.size.width) * 2 - 1, -(offsetY / state.size.height) * 2 + 1);
|
|
351
|
+
state.raycaster.setFromCamera(state.pointer, state.camera);
|
|
352
|
+
},
|
|
353
|
+
});
|
|
354
|
+
return () => {
|
|
355
|
+
parent.removeChild(el);
|
|
356
|
+
this.store.snapshot.setEvents({ compute: oldCompute });
|
|
357
|
+
events.connect?.(oldTarget);
|
|
358
|
+
};
|
|
359
|
+
});
|
|
360
|
+
autoEffect(() => {
|
|
361
|
+
const [el, events, size, infinite, invalidate, horizontal, enabled] = [
|
|
362
|
+
this.el,
|
|
363
|
+
this.events(),
|
|
364
|
+
this.size(),
|
|
365
|
+
this.infinite(),
|
|
366
|
+
this.invalidate(),
|
|
367
|
+
this.horizontal(),
|
|
368
|
+
this.enabled(),
|
|
369
|
+
];
|
|
370
|
+
if (events.connected !== el)
|
|
371
|
+
return;
|
|
372
|
+
const containerLength = size[horizontal ? 'width' : 'height'];
|
|
373
|
+
const scrollLength = el[horizontal ? 'scrollWidth' : 'scrollHeight'];
|
|
374
|
+
const scrollThreshold = scrollLength - containerLength;
|
|
375
|
+
let current = 0;
|
|
376
|
+
let disableScroll = true;
|
|
377
|
+
let firstRun = true;
|
|
378
|
+
const onScroll = () => {
|
|
379
|
+
// Prevent first scroll because it is indirectly caused by the one pixel offset
|
|
380
|
+
if (!enabled || firstRun)
|
|
381
|
+
return;
|
|
382
|
+
invalidate();
|
|
383
|
+
current = el[horizontal ? 'scrollLeft' : 'scrollTop'];
|
|
384
|
+
this.scroll = current / scrollThreshold;
|
|
385
|
+
if (infinite) {
|
|
386
|
+
if (!disableScroll) {
|
|
387
|
+
if (current >= scrollThreshold) {
|
|
388
|
+
const damp = 1 - this.offset;
|
|
389
|
+
el[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;
|
|
390
|
+
this.scroll = this.offset = -damp;
|
|
391
|
+
disableScroll = true;
|
|
392
|
+
}
|
|
393
|
+
else if (current <= 0) {
|
|
394
|
+
const damp = 1 + this.offset;
|
|
395
|
+
el[horizontal ? 'scrollLeft' : 'scrollTop'] = scrollLength;
|
|
396
|
+
this.scroll = this.offset = damp;
|
|
397
|
+
disableScroll = true;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
if (disableScroll)
|
|
401
|
+
setTimeout(() => (disableScroll = false), 40);
|
|
402
|
+
}
|
|
403
|
+
untracked(() => {
|
|
404
|
+
this.progress.set(this.scroll);
|
|
405
|
+
});
|
|
406
|
+
};
|
|
407
|
+
el.addEventListener('scroll', onScroll, { passive: true });
|
|
408
|
+
requestAnimationFrame(() => (firstRun = false));
|
|
409
|
+
const onWheel = (e) => (el[horizontal ? 'scrollLeft' : 'scrollTop'] += e.deltaY / 2);
|
|
410
|
+
if (horizontal)
|
|
411
|
+
el.addEventListener('wheel', onWheel, { passive: true });
|
|
412
|
+
return () => {
|
|
413
|
+
el.removeEventListener('scroll', onScroll);
|
|
414
|
+
if (horizontal)
|
|
415
|
+
el.removeEventListener('wheel', onWheel);
|
|
416
|
+
};
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
let last = 0;
|
|
420
|
+
injectBeforeRender(({ delta }) => {
|
|
421
|
+
last = this.offset;
|
|
422
|
+
easing.damp(this, 'offset', this.scroll, this.damping(), delta, this.maxSpeed(), undefined, this.eps());
|
|
423
|
+
easing.damp(this, 'delta', Math.abs(last - this.offset), this.damping(), delta, this.maxSpeed(), undefined, this.eps());
|
|
424
|
+
if (this.delta > this.eps())
|
|
425
|
+
this.invalidate()();
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
get el() {
|
|
429
|
+
return this._el;
|
|
430
|
+
}
|
|
431
|
+
get fill() {
|
|
432
|
+
return this._fill;
|
|
433
|
+
}
|
|
434
|
+
get fixed() {
|
|
435
|
+
return this._fixed;
|
|
436
|
+
}
|
|
437
|
+
range(from, distance, margin = 0) {
|
|
438
|
+
const start = from - margin;
|
|
439
|
+
const end = start + distance + margin * 2;
|
|
440
|
+
return this.offset < start ? 0 : this.offset > end ? 1 : (this.offset - start) / (end - start);
|
|
441
|
+
}
|
|
442
|
+
curve(from, distance, margin = 0) {
|
|
443
|
+
return Math.sin(this.range(from, distance, margin) * Math.PI);
|
|
444
|
+
}
|
|
445
|
+
visible(from, distance, margin = 0) {
|
|
446
|
+
const start = from - margin;
|
|
447
|
+
const end = start + distance + margin * 2;
|
|
448
|
+
return this.offset >= start && this.offset <= end;
|
|
449
|
+
}
|
|
450
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsScrollControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
451
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.1.0", type: NgtsScrollControls, isStandalone: true, selector: "ngts-scroll-controls", inputs: { progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { progress: "progressChange" }, ngImport: i0, template: `
|
|
452
|
+
<ng-content />
|
|
453
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
454
|
+
}
|
|
455
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsScrollControls, decorators: [{
|
|
456
|
+
type: Component,
|
|
457
|
+
args: [{
|
|
458
|
+
selector: 'ngts-scroll-controls',
|
|
459
|
+
standalone: true,
|
|
460
|
+
template: `
|
|
461
|
+
<ng-content />
|
|
462
|
+
`,
|
|
463
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
464
|
+
}]
|
|
465
|
+
}], ctorParameters: () => [] });
|
|
466
|
+
class NgtsScrollCanvas {
|
|
467
|
+
constructor() {
|
|
468
|
+
this.host = inject(ElementRef);
|
|
469
|
+
this.scrollControls = inject(NgtsScrollControls);
|
|
470
|
+
this.store = injectStore();
|
|
471
|
+
this.viewport = this.store.select('viewport');
|
|
472
|
+
injectBeforeRender(() => {
|
|
473
|
+
const group = this.host.nativeElement;
|
|
474
|
+
group.position.x = this.scrollControls.horizontal()
|
|
475
|
+
? -this.viewport().width * (this.scrollControls.pages() - 1) * this.scrollControls.offset
|
|
476
|
+
: 0;
|
|
477
|
+
group.position.y = this.scrollControls.horizontal()
|
|
478
|
+
? 0
|
|
479
|
+
: this.viewport().height * (this.scrollControls.pages() - 1) * this.scrollControls.offset;
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsScrollCanvas, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
483
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: NgtsScrollCanvas, isStandalone: true, selector: "ngt-group[ngts-scroll-canvas]", ngImport: i0 }); }
|
|
484
|
+
}
|
|
485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsScrollCanvas, decorators: [{
|
|
486
|
+
type: Directive,
|
|
487
|
+
args: [{ selector: 'ngt-group[ngts-scroll-canvas]', standalone: true }]
|
|
488
|
+
}], ctorParameters: () => [] });
|
|
489
|
+
class NgtsScrollHtml extends NgtHTML {
|
|
490
|
+
constructor() {
|
|
491
|
+
super();
|
|
492
|
+
this.scrollControls = inject(NgtsScrollControls);
|
|
493
|
+
this.size = this.store.select('size');
|
|
494
|
+
injectBeforeRender(() => {
|
|
495
|
+
if (this.scrollControls.delta > this.scrollControls.eps()) {
|
|
496
|
+
this.host.nativeElement.style.transform = `translate3d(${this.scrollControls.horizontal()
|
|
497
|
+
? -this.size().width * (this.scrollControls.pages() - 1) * this.scrollControls.offset
|
|
498
|
+
: 0}px,${this.scrollControls.horizontal() ? 0 : this.size().height * (this.scrollControls.pages() - 1) * -this.scrollControls.offset}px,0)`;
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsScrollHtml, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
503
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: NgtsScrollHtml, isStandalone: true, selector: "div[ngts-scroll-html]", host: { styleAttribute: "position: absolute; top: 0; left: 0; will-change: transform;" }, providers: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)], usesInheritance: true, ngImport: i0 }); }
|
|
504
|
+
}
|
|
505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtsScrollHtml, decorators: [{
|
|
506
|
+
type: Directive,
|
|
507
|
+
args: [{
|
|
508
|
+
selector: 'div[ngts-scroll-html]',
|
|
509
|
+
standalone: true,
|
|
510
|
+
host: { style: 'position: absolute; top: 0; left: 0; will-change: transform;' },
|
|
511
|
+
providers: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)],
|
|
512
|
+
}]
|
|
513
|
+
}], ctorParameters: () => [] });
|
|
514
|
+
|
|
251
515
|
/**
|
|
252
516
|
* Generated bundle index. Do not edit.
|
|
253
517
|
*/
|
|
254
518
|
|
|
255
|
-
export { NgtsCameraControls, NgtsOrbitControls };
|
|
519
|
+
export { NgtsCameraControls, NgtsOrbitControls, NgtsScrollCanvas, NgtsScrollControls, NgtsScrollHtml };
|
|
256
520
|
//# sourceMappingURL=angular-three-soba-controls.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-controls.mjs","sources":["../../../../libs/soba/controls/src/lib/camera-controls.ts","../../../../libs/soba/controls/src/lib/orbit-controls.ts","../../../../libs/soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, NgtArgs, NgtCamera, omit, pick } from 'angular-three';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBox3,\n\tEventDispatcher,\n\tMathUtils,\n\tMatrix4,\n\tQuaternion,\n\tRaycaster,\n\tSphere,\n\tSpherical,\n\tVector2,\n\tVector3,\n\tVector4,\n} from 'three';\n\nexport interface NgtsCameraControlsOptions {\n\tcamera?: NgtCamera;\n\tdomElement?: HTMLElement;\n\tmakeDefault: boolean;\n\tevents: boolean;\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tevents: false,\n\tregress: false,\n};\n\n@Component({\n\tselector: 'ngts-camera-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCameraControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);\n\n\tchanged = output<any>();\n\tstarted = output<any>();\n\tended = output<any>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate eventsElement = this.store.select('events', 'connected');\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.defaultCamera()];\n\t\treturn new CameraControls(camera || defaultCamera);\n\t});\n\n\tconstructor() {\n\t\t// to allow for tree shaking, we only import the subset of THREE that is used by camera-controls\n\t\t// see https://github.com/yomotsu/camera-controls#important\n\t\tCameraControls.install({\n\t\t\tTHREE: {\n\t\t\t\tBox3,\n\t\t\t\tMathUtils: { clamp: MathUtils.clamp },\n\t\t\t\tMatrix4,\n\t\t\t\tQuaternion,\n\t\t\t\tRaycaster,\n\t\t\t\tSphere,\n\t\t\t\tSpherical,\n\t\t\t\tVector2,\n\t\t\t\tVector3,\n\t\t\t\tVector4,\n\t\t\t},\n\t\t});\n\t\textend({ CameraControls });\n\n\t\tinjectBeforeRender(\n\t\t\t({ delta }) => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update(delta);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [domElement, eventsElement, glDomElement, controls] = [\n\t\t\t\tthis.domElement(),\n\t\t\t\tthis.eventsElement(),\n\t\t\t\tthis.glDomElement(),\n\t\t\t\tthis.controls(),\n\t\t\t];\n\t\t\tcontrols.connect(domElement || eventsElement || glDomElement);\n\t\t\tonCleanup(() => controls.disconnect());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, regress, performanceRegress, invalidate] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.regress(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.invalidate(),\n\t\t\t];\n\n\t\t\tconst callback = (e: any) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('update', callback);\n\t\t\tcontrols.addEventListener('controlstart', startCallback);\n\t\t\tcontrols.addEventListener('controlend', endCallback);\n\t\t\tcontrols.addEventListener('control', callback);\n\t\t\tcontrols.addEventListener('transitionstart', callback);\n\t\t\tcontrols.addEventListener('wake', callback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('update', callback);\n\t\t\t\tcontrols.removeEventListener('controlstart', startCallback);\n\t\t\t\tcontrols.removeEventListener('controlend', endCallback);\n\t\t\t\tcontrols.removeEventListener('control', callback);\n\t\t\t\tcontrols.removeEventListener('transitionstart', callback);\n\t\t\t\tcontrols.removeEventListener('wake', callback);\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\t\tthis.store.update({ controls: controls as unknown as EventDispatcher });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';\nimport { injectBeforeRender, injectStore, NgtArgs, NgtCamera, NgtVector3, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Camera, Event } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nexport interface NgtsOrbitControlsOptions {\n\tcamera?: Camera;\n\tdomElement?: HTMLElement;\n\ttarget?: NgtVector3;\n\tmakeDefault: boolean;\n\tregress: boolean;\n\tenableDamping: boolean;\n\tkeyEvents: boolean | HTMLElement;\n}\n\nconst defaultOptions: Partial<OrbitControls> & NgtsOrbitControlsOptions = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\" [enableDamping]=\"enableDamping()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement', 'keyEvents', 'enableDamping']);\n\n\tchanged = output<Event>();\n\tstarted = output<Event>();\n\tended = output<Event>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate keyEvents = pick(this.options, 'keyEvents');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.defaultCamera()];\n\t\tconst controlsCamera = camera || defaultCamera;\n\t\treturn new OrbitControls(controlsCamera as NgtCamera);\n\t});\n\n\tprotected enableDamping = pick(this.options, 'enableDamping');\n\n\tconstructor() {\n\t\tinjectBeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\t\tthis.connectElement();\n\t\tthis.makeControlsDefault();\n\t\tthis.setEvents();\n\t}\n\n\tprivate connectElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [keyEvents, domElement, controls] = [\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.get('events', 'connected') || this.glDomElement(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tif (keyEvents) {\n\t\t\t\tcontrols.connect(keyEvents === true ? domElement : keyEvents);\n\t\t\t} else {\n\t\t\t\tcontrols.connect(domElement);\n\t\t\t}\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\t}\n\n\tprivate makeControlsDefault() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\t\tif (!controls) return;\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.get('controls');\n\t\t\t\tthis.store.update({ controls });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tconst changeCallback: (e: Event) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\tcontrols.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-controls.mjs","sources":["../../../../libs/soba/controls/src/lib/camera-controls.ts","../../../../libs/soba/controls/src/lib/orbit-controls.ts","../../../../libs/soba/controls/src/lib/scroll-controls.ts","../../../../libs/soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, NgtArgs, NgtCamera, omit, pick } from 'angular-three';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBox3,\n\tEventDispatcher,\n\tMathUtils,\n\tMatrix4,\n\tQuaternion,\n\tRaycaster,\n\tSphere,\n\tSpherical,\n\tVector2,\n\tVector3,\n\tVector4,\n} from 'three';\n\nexport interface NgtsCameraControlsOptions {\n\tcamera?: NgtCamera;\n\tdomElement?: HTMLElement;\n\tmakeDefault: boolean;\n\tevents: boolean;\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tevents: false,\n\tregress: false,\n};\n\n@Component({\n\tselector: 'ngts-camera-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCameraControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);\n\n\tchanged = output<any>();\n\tstarted = output<any>();\n\tended = output<any>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate eventsElement = this.store.select('events', 'connected');\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.defaultCamera()];\n\t\treturn new CameraControls(camera || defaultCamera);\n\t});\n\n\tconstructor() {\n\t\t// to allow for tree shaking, we only import the subset of THREE that is used by camera-controls\n\t\t// see https://github.com/yomotsu/camera-controls#important\n\t\tCameraControls.install({\n\t\t\tTHREE: {\n\t\t\t\tBox3,\n\t\t\t\tMathUtils: { clamp: MathUtils.clamp },\n\t\t\t\tMatrix4,\n\t\t\t\tQuaternion,\n\t\t\t\tRaycaster,\n\t\t\t\tSphere,\n\t\t\t\tSpherical,\n\t\t\t\tVector2,\n\t\t\t\tVector3,\n\t\t\t\tVector4,\n\t\t\t},\n\t\t});\n\t\textend({ CameraControls });\n\n\t\tinjectBeforeRender(\n\t\t\t({ delta }) => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update(delta);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [domElement, eventsElement, glDomElement, controls] = [\n\t\t\t\tthis.domElement(),\n\t\t\t\tthis.eventsElement(),\n\t\t\t\tthis.glDomElement(),\n\t\t\t\tthis.controls(),\n\t\t\t];\n\t\t\tcontrols.connect(domElement || eventsElement || glDomElement);\n\t\t\tonCleanup(() => controls.disconnect());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, regress, performanceRegress, invalidate] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.regress(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.invalidate(),\n\t\t\t];\n\n\t\t\tconst callback = (e: any) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('update', callback);\n\t\t\tcontrols.addEventListener('controlstart', startCallback);\n\t\t\tcontrols.addEventListener('controlend', endCallback);\n\t\t\tcontrols.addEventListener('control', callback);\n\t\t\tcontrols.addEventListener('transitionstart', callback);\n\t\t\tcontrols.addEventListener('wake', callback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('update', callback);\n\t\t\t\tcontrols.removeEventListener('controlstart', startCallback);\n\t\t\t\tcontrols.removeEventListener('controlend', endCallback);\n\t\t\t\tcontrols.removeEventListener('control', callback);\n\t\t\t\tcontrols.removeEventListener('transitionstart', callback);\n\t\t\t\tcontrols.removeEventListener('wake', callback);\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\t\tthis.store.update({ controls: controls as unknown as EventDispatcher });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';\nimport { injectBeforeRender, injectStore, NgtArgs, NgtCamera, NgtVector3, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Camera, Event } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nexport interface NgtsOrbitControlsOptions {\n\tcamera?: Camera;\n\tdomElement?: HTMLElement;\n\ttarget?: NgtVector3;\n\tmakeDefault: boolean;\n\tregress: boolean;\n\tenableDamping: boolean;\n\tkeyEvents: boolean | HTMLElement;\n}\n\nconst defaultOptions: Partial<OrbitControls> & NgtsOrbitControlsOptions = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\" [enableDamping]=\"enableDamping()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement', 'keyEvents', 'enableDamping']);\n\n\tchanged = output<Event>();\n\tstarted = output<Event>();\n\tended = output<Event>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate keyEvents = pick(this.options, 'keyEvents');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.defaultCamera()];\n\t\tconst controlsCamera = camera || defaultCamera;\n\t\treturn new OrbitControls(controlsCamera as NgtCamera);\n\t});\n\n\tprotected enableDamping = pick(this.options, 'enableDamping');\n\n\tconstructor() {\n\t\tinjectBeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\t\tthis.connectElement();\n\t\tthis.makeControlsDefault();\n\t\tthis.setEvents();\n\t}\n\n\tprivate connectElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [keyEvents, domElement, controls] = [\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.get('events', 'connected') || this.glDomElement(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tif (keyEvents) {\n\t\t\t\tcontrols.connect(keyEvents === true ? domElement : keyEvents);\n\t\t\t} else {\n\t\t\t\tcontrols.connect(domElement);\n\t\t\t}\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\t}\n\n\tprivate makeControlsDefault() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\t\tif (!controls) return;\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.get('controls');\n\t\t\t\tthis.store.update({ controls });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tconst changeCallback: (e: Event) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\tcontrols.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tuntracked,\n} from '@angular/core';\nimport { injectBeforeRender, injectStore, NgtHTML, pick, provideHTMLDomElement } from 'angular-three';\nimport { easing } from 'maath';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group } from 'three';\n\nexport interface NgtsScrollControlsOptions {\n\t/** Precision, default 0.00001 */\n\teps: number;\n\t/** Horizontal scroll, default false (vertical) */\n\thorizontal: boolean;\n\t/** Infinite scroll, default false (experimental!) */\n\tinfinite: boolean;\n\t/** Defines the lenght of the scroll area, each page is height:100%, default 1 */\n\tpages: number;\n\t/** A factor that increases scroll bar travel,default: 1 */\n\tdistance: number;\n\t/** Friction in seconds, default: 0.25 (1/4 second) */\n\tdamping: number;\n\t/** maxSpeed optionally allows you to clamp the maximum speed. If damping is 0.2s and looks OK\n\t * going between, say, page 1 and 2, but not for pages far apart as it'll move very rapid,\n\t * then a maxSpeed of e.g. 3 which will clamp the speed to 3 units per second, it may now\n\t * take much longer than damping to reach the target if it is far away. Default: Infinity */\n\tmaxSpeed: number;\n\t/** If true attaches the scroll container before the canvas */\n\tprepend: boolean;\n\tenabled: boolean;\n\tstyle: Partial<CSSStyleDeclaration>;\n}\n\nconst defaultOptions: NgtsScrollControlsOptions = {\n\teps: 0.00001,\n\thorizontal: false,\n\tinfinite: false,\n\tpages: 1,\n\tdistance: 1,\n\tdamping: 0.25,\n\tmaxSpeed: Infinity,\n\tprepend: false,\n\tenabled: true,\n\tstyle: {},\n};\n\n@Component({\n\tselector: 'ngts-scroll-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsScrollControls {\n\tprogress = model(0);\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\n\tprivate events = this.store.select('events');\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate size = this.store.select('size');\n\n\tprivate domElement = pick(this.gl, 'domElement');\n\tprivate target = pick(this.domElement, 'parentNode');\n\n\tprivate _el = this.document.createElement('div');\n\tprivate _fill = this.document.createElement('div');\n\tprivate _fixed = this.document.createElement('div');\n\n\tprivate style = pick(this.options, 'style');\n\tprivate prepend = pick(this.options, 'prepend');\n\tprivate enabled = pick(this.options, 'enabled');\n\tprivate infinite = pick(this.options, 'infinite');\n\tprivate maxSpeed = pick(this.options, 'maxSpeed');\n\teps = pick(this.options, 'eps');\n\thorizontal = pick(this.options, 'horizontal');\n\tpages = pick(this.options, 'pages');\n\tdistance = pick(this.options, 'distance');\n\tdamping = pick(this.options, 'damping');\n\tscroll = 0;\n\toffset = 0;\n\tdelta = 0;\n\n\tconstructor() {\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst target = this.target();\n\t\t\t\tif (!target) return;\n\n\t\t\t\tconst parent = target as HTMLElement;\n\t\t\t\tconst [pages, distance, horizontal, el, fill, fixed, style, prepend, domElement, events] = [\n\t\t\t\t\tthis.pages(),\n\t\t\t\t\tthis.distance(),\n\t\t\t\t\tthis.horizontal(),\n\t\t\t\t\tthis.el,\n\t\t\t\t\tthis.fill,\n\t\t\t\t\tthis.fixed,\n\t\t\t\t\tuntracked(this.style),\n\t\t\t\t\tuntracked(this.prepend),\n\t\t\t\t\tuntracked(this.domElement),\n\t\t\t\t\tuntracked(this.events),\n\t\t\t\t];\n\n\t\t\t\tel.style.position = 'absolute';\n\t\t\t\tel.style.width = '100%';\n\t\t\t\tel.style.height = '100%';\n\t\t\t\tel.style[horizontal ? 'overflowX' : 'overflowY'] = 'auto';\n\t\t\t\tel.style[horizontal ? 'overflowY' : 'overflowX'] = 'hidden';\n\t\t\t\tel.style.top = '0px';\n\t\t\t\tel.style.left = '0px';\n\n\t\t\t\tfor (const key in style) {\n\t\t\t\t\tel.style[key] = (style as CSSStyleDeclaration)[key];\n\t\t\t\t}\n\n\t\t\t\tfixed.style.position = 'sticky';\n\t\t\t\tfixed.style.top = '0px';\n\t\t\t\tfixed.style.left = '0px';\n\t\t\t\tfixed.style.width = '100%';\n\t\t\t\tfixed.style.height = '100%';\n\t\t\t\tfixed.style.overflow = 'hidden';\n\t\t\t\tel.appendChild(fixed);\n\n\t\t\t\tfill.style.height = horizontal ? '100%' : `${pages * distance * 100}%`;\n\t\t\t\tfill.style.width = horizontal ? `${pages * distance * 100}%` : '100%';\n\t\t\t\tfill.style.pointerEvents = 'none';\n\t\t\t\tel.appendChild(fill);\n\n\t\t\t\tif (prepend) parent.prepend(el);\n\t\t\t\telse parent.appendChild(el);\n\n\t\t\t\t// Init scroll one pixel in to allow upward/leftward scroll\n\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\n\t\t\t\tconst oldTarget = (events.connected || domElement) as HTMLElement;\n\t\t\t\trequestAnimationFrame(() => events.connect?.(el));\n\t\t\t\tconst oldCompute = events.compute?.bind(events);\n\n\t\t\t\tthis.store.snapshot.setEvents({\n\t\t\t\t\tcompute(event, store) {\n\t\t\t\t\t\tconst state = store.snapshot;\n\t\t\t\t\t\t// we are using boundingClientRect because we could not rely on target.offsetTop as canvas could be positioned anywhere in dom\n\t\t\t\t\t\tconst { left, top } = parent.getBoundingClientRect();\n\t\t\t\t\t\tconst offsetX = event.clientX - left;\n\t\t\t\t\t\tconst offsetY = event.clientY - top;\n\t\t\t\t\t\tstate.pointer.set((offsetX / state.size.width) * 2 - 1, -(offsetY / state.size.height) * 2 + 1);\n\t\t\t\t\t\tstate.raycaster.setFromCamera(state.pointer, state.camera);\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\treturn () => {\n\t\t\t\t\tparent.removeChild(el);\n\t\t\t\t\tthis.store.snapshot.setEvents({ compute: oldCompute });\n\t\t\t\t\tevents.connect?.(oldTarget);\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [el, events, size, infinite, invalidate, horizontal, enabled] = [\n\t\t\t\t\tthis.el,\n\t\t\t\t\tthis.events(),\n\t\t\t\t\tthis.size(),\n\t\t\t\t\tthis.infinite(),\n\t\t\t\t\tthis.invalidate(),\n\t\t\t\t\tthis.horizontal(),\n\t\t\t\t\tthis.enabled(),\n\t\t\t\t];\n\n\t\t\t\tif (events.connected !== el) return;\n\n\t\t\t\tconst containerLength = size[horizontal ? 'width' : 'height'];\n\t\t\t\tconst scrollLength = el[horizontal ? 'scrollWidth' : 'scrollHeight'];\n\t\t\t\tconst scrollThreshold = scrollLength - containerLength;\n\n\t\t\t\tlet current = 0;\n\t\t\t\tlet disableScroll = true;\n\t\t\t\tlet firstRun = true;\n\n\t\t\t\tconst onScroll = () => {\n\t\t\t\t\t// Prevent first scroll because it is indirectly caused by the one pixel offset\n\t\t\t\t\tif (!enabled || firstRun) return;\n\t\t\t\t\tinvalidate();\n\t\t\t\t\tcurrent = el[horizontal ? 'scrollLeft' : 'scrollTop'];\n\t\t\t\t\tthis.scroll = current / scrollThreshold;\n\n\t\t\t\t\tif (infinite) {\n\t\t\t\t\t\tif (!disableScroll) {\n\t\t\t\t\t\t\tif (current >= scrollThreshold) {\n\t\t\t\t\t\t\t\tconst damp = 1 - this.offset;\n\t\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\t\t\t\t\t\t\t\tthis.scroll = this.offset = -damp;\n\t\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t\t} else if (current <= 0) {\n\t\t\t\t\t\t\t\tconst damp = 1 + this.offset;\n\t\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = scrollLength;\n\t\t\t\t\t\t\t\tthis.scroll = this.offset = damp;\n\t\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (disableScroll) setTimeout(() => (disableScroll = false), 40);\n\t\t\t\t\t}\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tthis.progress.set(this.scroll);\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tel.addEventListener('scroll', onScroll, { passive: true });\n\t\t\t\trequestAnimationFrame(() => (firstRun = false));\n\n\t\t\t\tconst onWheel = (e: WheelEvent) => (el[horizontal ? 'scrollLeft' : 'scrollTop'] += e.deltaY / 2);\n\t\t\t\tif (horizontal) el.addEventListener('wheel', onWheel, { passive: true });\n\n\t\t\t\treturn () => {\n\t\t\t\t\tel.removeEventListener('scroll', onScroll);\n\t\t\t\t\tif (horizontal) el.removeEventListener('wheel', onWheel);\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\n\t\tlet last = 0;\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tlast = this.offset;\n\t\t\teasing.damp(this, 'offset', this.scroll, this.damping(), delta, this.maxSpeed(), undefined, this.eps());\n\t\t\teasing.damp(\n\t\t\t\tthis,\n\t\t\t\t'delta',\n\t\t\t\tMath.abs(last - this.offset),\n\t\t\t\tthis.damping(),\n\t\t\t\tdelta,\n\t\t\t\tthis.maxSpeed(),\n\t\t\t\tundefined,\n\t\t\t\tthis.eps(),\n\t\t\t);\n\t\t\tif (this.delta > this.eps()) this.invalidate()();\n\t\t});\n\t}\n\n\tget el() {\n\t\treturn this._el;\n\t}\n\n\tget fill() {\n\t\treturn this._fill;\n\t}\n\n\tget fixed() {\n\t\treturn this._fixed;\n\t}\n\n\trange(from: number, distance: number, margin: number = 0): number {\n\t\tconst start = from - margin;\n\t\tconst end = start + distance + margin * 2;\n\t\treturn this.offset < start ? 0 : this.offset > end ? 1 : (this.offset - start) / (end - start);\n\t}\n\n\tcurve(from: number, distance: number, margin: number = 0): number {\n\t\treturn Math.sin(this.range(from, distance, margin) * Math.PI);\n\t}\n\n\tvisible(from: number, distance: number, margin: number = 0): boolean {\n\t\tconst start = from - margin;\n\t\tconst end = start + distance + margin * 2;\n\t\treturn this.offset >= start && this.offset <= end;\n\t}\n}\n\n@Directive({ selector: 'ngt-group[ngts-scroll-canvas]', standalone: true })\nexport class NgtsScrollCanvas {\n\tprivate host = inject<ElementRef<Group>>(ElementRef);\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate store = injectStore();\n\tprivate viewport = this.store.select('viewport');\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst group = this.host.nativeElement;\n\n\t\t\tgroup.position.x = this.scrollControls.horizontal()\n\t\t\t\t? -this.viewport().width * (this.scrollControls.pages() - 1) * this.scrollControls.offset\n\t\t\t\t: 0;\n\t\t\tgroup.position.y = this.scrollControls.horizontal()\n\t\t\t\t? 0\n\t\t\t\t: this.viewport().height * (this.scrollControls.pages() - 1) * this.scrollControls.offset;\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: 'div[ngts-scroll-html]',\n\tstandalone: true,\n\thost: { style: 'position: absolute; top: 0; left: 0; will-change: transform;' },\n\tproviders: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)],\n})\nexport class NgtsScrollHtml extends NgtHTML {\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate size = this.store.select('size');\n\n\tconstructor() {\n\t\tsuper();\n\t\tinjectBeforeRender(() => {\n\t\t\tif (this.scrollControls.delta > this.scrollControls.eps()) {\n\t\t\t\tthis.host.nativeElement.style.transform = `translate3d(${\n\t\t\t\t\tthis.scrollControls.horizontal()\n\t\t\t\t\t\t? -this.size().width * (this.scrollControls.pages() - 1) * this.scrollControls.offset\n\t\t\t\t\t\t: 0\n\t\t\t\t}px,${this.scrollControls.horizontal() ? 0 : this.size().height * (this.scrollControls.pages() - 1) * -this.scrollControls.offset}px,0)`;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare class NgtsCustomShaderMaterial {
|
|
|
6
6
|
baseMaterial: import("@angular/core").InputSignal<Material | typeof Material | ElementRef<Material>>;
|
|
7
7
|
attach: import("@angular/core").InputSignal<string | string[]>;
|
|
8
8
|
options: import("@angular/core").InputSignal<Omit<import("three-custom-shader-material/vanilla").iCSMParams<import("three-custom-shader-material/vanilla").MaterialConstructor>, "baseMaterial">>;
|
|
9
|
-
parameters: import("@angular/core").Signal<Omit<Omit<import("three-custom-shader-material/vanilla").iCSMParams<import("three-custom-shader-material/vanilla").MaterialConstructor>, "baseMaterial">, "
|
|
9
|
+
parameters: import("@angular/core").Signal<Omit<Omit<import("three-custom-shader-material/vanilla").iCSMParams<import("three-custom-shader-material/vanilla").MaterialConstructor>, "baseMaterial">, "uniforms" | "vertexShader" | "fragmentShader" | "cacheKey">>;
|
|
10
10
|
base: import("@angular/core").Signal<Material | typeof Material>;
|
|
11
11
|
private fragmentShader;
|
|
12
12
|
private vertexShader;
|
|
@@ -24,7 +24,7 @@ export declare class NgtsMeshRefractionMaterial {
|
|
|
24
24
|
private fastChroma;
|
|
25
25
|
aberrationStrength: import("@angular/core").Signal<number>;
|
|
26
26
|
materialRef: import("@angular/core").Signal<ElementRef<import("three").ShaderMaterial & {
|
|
27
|
-
[name: string]: number | boolean | any[] | import("three").Color | Texture |
|
|
27
|
+
[name: string]: number | boolean | any[] | import("three").Color | Texture | CubeTexture | import("three").Vector3 | import("three").Quaternion | import("three").Matrix4 | import("three").Matrix3 | Int32Array | Float32Array | import("three").Vector4 | import("three").Vector2 | null;
|
|
28
28
|
}> | undefined>;
|
|
29
29
|
private store;
|
|
30
30
|
private size;
|
|
@@ -34,7 +34,7 @@ export declare class NgtsMeshRefractionMaterial {
|
|
|
34
34
|
}>;
|
|
35
35
|
private defineKeys;
|
|
36
36
|
material: import("@angular/core").Signal<import("three").ShaderMaterial & {
|
|
37
|
-
[name: string]: number | boolean | any[] | import("three").Color | Texture |
|
|
37
|
+
[name: string]: number | boolean | any[] | import("three").Color | Texture | CubeTexture | import("three").Vector3 | import("three").Quaternion | import("three").Matrix4 | import("three").Matrix3 | Int32Array | Float32Array | import("three").Vector4 | import("three").Vector2 | null;
|
|
38
38
|
}>;
|
|
39
39
|
constructor();
|
|
40
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgtsMeshRefractionMaterial, never>;
|
|
@@ -29,7 +29,7 @@ export type NgtsMeshTransmissionMaterialOptions = Partial<NgtMeshPhysicalMateria
|
|
|
29
29
|
export declare class NgtsMeshTransmissionMaterial {
|
|
30
30
|
attach: import("@angular/core").InputSignal<string>;
|
|
31
31
|
options: import("@angular/core").InputSignalWithTransform<NgtsMeshTransmissionMaterialOptions, "" | Partial<NgtsMeshTransmissionMaterialOptions>>;
|
|
32
|
-
parameters: import("@angular/core").Signal<Omit<NgtsMeshTransmissionMaterialOptions, "side" | "thickness" | "anisotropy" | "transmission" | "
|
|
32
|
+
parameters: import("@angular/core").Signal<Omit<NgtsMeshTransmissionMaterialOptions, "side" | "thickness" | "anisotropy" | "transmission" | "buffer" | "anisotropicBlur" | "samples" | "transmissionSampler" | "backside" | "backsideThickness" | "backsideEnvMapIntensity" | "resolution" | "backsideResolution" | "background">>;
|
|
33
33
|
private resolution;
|
|
34
34
|
private backsideResolution;
|
|
35
35
|
private samples;
|
|
@@ -5,14 +5,18 @@ export declare class NgtsComputedAttribute {
|
|
|
5
5
|
compute: import("@angular/core").InputSignal<(geometry: BufferGeometry) => BufferAttribute>;
|
|
6
6
|
name: import("@angular/core").InputSignal<string>;
|
|
7
7
|
options: import("@angular/core").InputSignal<Partial<{
|
|
8
|
+
set?: ((value: ArrayLike<number> | ArrayBufferView, offset?: number) => BufferAttribute) | undefined;
|
|
8
9
|
name?: string | undefined;
|
|
9
|
-
|
|
10
|
+
applyMatrix4?: ((m: import("three").Matrix4) => BufferAttribute) | undefined;
|
|
10
11
|
toJSON?: (() => {
|
|
11
12
|
itemSize: number;
|
|
12
13
|
type: string;
|
|
13
14
|
array: number[];
|
|
14
15
|
normalized: boolean;
|
|
15
16
|
}) | undefined;
|
|
17
|
+
clone?: (() => BufferAttribute) | undefined;
|
|
18
|
+
copy?: ((source: BufferAttribute) => BufferAttribute) | undefined;
|
|
19
|
+
readonly count?: number | undefined;
|
|
16
20
|
array?: import("three").TypedArray | undefined;
|
|
17
21
|
itemSize?: number | undefined;
|
|
18
22
|
usage?: import("three").Usage | undefined;
|
|
@@ -27,7 +31,6 @@ export declare class NgtsComputedAttribute {
|
|
|
27
31
|
}[] | undefined;
|
|
28
32
|
version?: number | undefined;
|
|
29
33
|
normalized?: boolean | undefined;
|
|
30
|
-
readonly count?: number | undefined;
|
|
31
34
|
needsUpdate?: boolean | undefined;
|
|
32
35
|
readonly isBufferAttribute?: true | undefined;
|
|
33
36
|
onUploadCallback?: (() => void) | undefined;
|
|
@@ -35,14 +38,11 @@ export declare class NgtsComputedAttribute {
|
|
|
35
38
|
setUsage?: ((usage: import("three").Usage) => BufferAttribute) | undefined;
|
|
36
39
|
addUpdateRange?: ((start: number, count: number) => void) | undefined;
|
|
37
40
|
clearUpdateRanges?: (() => void) | undefined;
|
|
38
|
-
copy?: ((source: BufferAttribute) => BufferAttribute) | undefined;
|
|
39
41
|
copyAt?: ((index1: number, attribute: BufferAttribute, index2: number) => BufferAttribute) | undefined;
|
|
40
42
|
copyArray?: ((array: ArrayLike<number>) => BufferAttribute) | undefined;
|
|
41
43
|
applyMatrix3?: ((m: import("three").Matrix3) => BufferAttribute) | undefined;
|
|
42
|
-
applyMatrix4?: ((m: import("three").Matrix4) => BufferAttribute) | undefined;
|
|
43
44
|
applyNormalMatrix?: ((m: import("three").Matrix3) => BufferAttribute) | undefined;
|
|
44
45
|
transformDirection?: ((m: import("three").Matrix4) => BufferAttribute) | undefined;
|
|
45
|
-
set?: ((value: ArrayLike<number> | ArrayBufferView, offset?: number) => BufferAttribute) | undefined;
|
|
46
46
|
getComponent?: ((index: number, component: number) => number) | undefined;
|
|
47
47
|
setComponent?: ((index: number, component: number, value: number) => void) | undefined;
|
|
48
48
|
getX?: ((index: number) => number) | undefined;
|
package/misc/lib/sampler.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export declare class NgtsSampler {
|
|
|
62
62
|
mesh: import("@angular/core").InputSignal<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap> | ElementRef<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | null>;
|
|
63
63
|
instances: import("@angular/core").InputSignal<InstancedMesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap> | ElementRef<InstancedMesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap>> | null>;
|
|
64
64
|
options: import("@angular/core").InputSignalWithTransform<NgtsSamplerOptions, "" | Partial<NgtsSamplerOptions>>;
|
|
65
|
-
parameters: import("@angular/core").Signal<Omit<NgtsSamplerOptions, "
|
|
65
|
+
parameters: import("@angular/core").Signal<Omit<NgtsSamplerOptions, "weight" | "transform" | "count">>;
|
|
66
66
|
group: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
|
|
67
67
|
private meshToSample;
|
|
68
68
|
private instancedToSample;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-soba",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.262",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -45,23 +45,17 @@
|
|
|
45
45
|
"esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
|
|
46
46
|
"default": "./fesm2022/angular-three-soba-cameras.mjs"
|
|
47
47
|
},
|
|
48
|
-
"./loaders": {
|
|
49
|
-
"types": "./loaders/index.d.ts",
|
|
50
|
-
"esm2022": "./esm2022/loaders/angular-three-soba-loaders.mjs",
|
|
51
|
-
"esm": "./esm2022/loaders/angular-three-soba-loaders.mjs",
|
|
52
|
-
"default": "./fesm2022/angular-three-soba-loaders.mjs"
|
|
53
|
-
},
|
|
54
48
|
"./controls": {
|
|
55
49
|
"types": "./controls/index.d.ts",
|
|
56
50
|
"esm2022": "./esm2022/controls/angular-three-soba-controls.mjs",
|
|
57
51
|
"esm": "./esm2022/controls/angular-three-soba-controls.mjs",
|
|
58
52
|
"default": "./fesm2022/angular-three-soba-controls.mjs"
|
|
59
53
|
},
|
|
60
|
-
"./
|
|
61
|
-
"types": "./
|
|
62
|
-
"esm2022": "./esm2022/
|
|
63
|
-
"esm": "./esm2022/
|
|
64
|
-
"default": "./fesm2022/angular-three-soba-
|
|
54
|
+
"./loaders": {
|
|
55
|
+
"types": "./loaders/index.d.ts",
|
|
56
|
+
"esm2022": "./esm2022/loaders/angular-three-soba-loaders.mjs",
|
|
57
|
+
"esm": "./esm2022/loaders/angular-three-soba-loaders.mjs",
|
|
58
|
+
"default": "./fesm2022/angular-three-soba-loaders.mjs"
|
|
65
59
|
},
|
|
66
60
|
"./materials": {
|
|
67
61
|
"types": "./materials/index.d.ts",
|
|
@@ -69,6 +63,12 @@
|
|
|
69
63
|
"esm": "./esm2022/materials/angular-three-soba-materials.mjs",
|
|
70
64
|
"default": "./fesm2022/angular-three-soba-materials.mjs"
|
|
71
65
|
},
|
|
66
|
+
"./misc": {
|
|
67
|
+
"types": "./misc/index.d.ts",
|
|
68
|
+
"esm2022": "./esm2022/misc/angular-three-soba-misc.mjs",
|
|
69
|
+
"esm": "./esm2022/misc/angular-three-soba-misc.mjs",
|
|
70
|
+
"default": "./fesm2022/angular-three-soba-misc.mjs"
|
|
71
|
+
},
|
|
72
72
|
"./shaders": {
|
|
73
73
|
"types": "./shaders/index.d.ts",
|
|
74
74
|
"esm2022": "./esm2022/shaders/angular-three-soba-shaders.mjs",
|