angular-three 2.0.0-beta.287 → 2.0.0-beta.288
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.
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { afterNextRender, booleanAttribute,
|
|
1
|
+
import { afterNextRender, booleanAttribute, Directive, ElementRef, inject, input, signal, untracked, } from '@angular/core';
|
|
2
2
|
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
3
|
-
import { Group } from 'three';
|
|
4
3
|
import { getLocalState } from '../instance';
|
|
5
|
-
import { extend } from '../renderer';
|
|
6
|
-
import { NgtObjectEvents, NgtObjectEventsHostDirective } from '../utils/object-events';
|
|
7
4
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../utils/object-events";
|
|
9
5
|
export class NgtSelection {
|
|
10
6
|
constructor() {
|
|
11
7
|
this.enabled = input(true, { alias: 'ngtSelection', transform: booleanAttribute });
|
|
@@ -27,27 +23,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
27
23
|
}] });
|
|
28
24
|
export class NgtSelect {
|
|
29
25
|
constructor() {
|
|
30
|
-
this.enabled = input(false, { transform: booleanAttribute });
|
|
31
|
-
this.
|
|
32
|
-
this.groupRef = viewChild.required('group');
|
|
33
|
-
extend({ Group });
|
|
34
|
-
const objectEvents = inject(NgtObjectEvents, { host: true });
|
|
26
|
+
this.enabled = input(false, { transform: booleanAttribute, alias: 'ngtSelect' });
|
|
27
|
+
this.host = inject(ElementRef);
|
|
35
28
|
const selection = inject(NgtSelection);
|
|
36
29
|
const autoEffect = injectAutoEffect();
|
|
37
30
|
afterNextRender(() => {
|
|
38
|
-
objectEvents.ngtObjectEvents.set(this.groupRef());
|
|
39
31
|
autoEffect(() => {
|
|
40
|
-
const
|
|
41
|
-
|
|
32
|
+
const host = this.host.nativeElement;
|
|
33
|
+
if (!host)
|
|
34
|
+
return;
|
|
35
|
+
const localState = getLocalState(host);
|
|
42
36
|
if (!localState)
|
|
43
37
|
return;
|
|
44
38
|
const enabled = this.enabled();
|
|
45
39
|
if (!enabled)
|
|
46
40
|
return;
|
|
41
|
+
// ngt-mesh[ngtSelect]
|
|
42
|
+
if (host.type === 'Mesh') {
|
|
43
|
+
selection.select(host);
|
|
44
|
+
return () => selection.unselect(host);
|
|
45
|
+
}
|
|
47
46
|
const [collection] = [untracked(selection.collection), localState.objects()];
|
|
48
47
|
let changed = false;
|
|
49
48
|
const current = [];
|
|
50
|
-
|
|
49
|
+
host.traverse((child) => {
|
|
51
50
|
child.type === 'Mesh' && current.push(child);
|
|
52
51
|
if (collection.indexOf(child) === -1)
|
|
53
52
|
changed = true;
|
|
@@ -61,26 +60,11 @@ export class NgtSelect {
|
|
|
61
60
|
}, { allowSignalWrites: true });
|
|
62
61
|
});
|
|
63
62
|
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.
|
|
65
|
-
static { this.ɵ
|
|
66
|
-
<ngt-group #group [parameters]="options()">
|
|
67
|
-
<ng-content />
|
|
68
|
-
</ngt-group>
|
|
69
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
64
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.3", type: NgtSelect, isStandalone: true, selector: "ngt-group[ngtSelect], ngt-mesh[ngtSelect]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelect", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
70
65
|
}
|
|
71
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelect, decorators: [{
|
|
72
|
-
type:
|
|
73
|
-
args: [{
|
|
74
|
-
selector: 'ngt-select',
|
|
75
|
-
standalone: true,
|
|
76
|
-
template: `
|
|
77
|
-
<ngt-group #group [parameters]="options()">
|
|
78
|
-
<ng-content />
|
|
79
|
-
</ngt-group>
|
|
80
|
-
`,
|
|
81
|
-
hostDirectives: [NgtObjectEventsHostDirective],
|
|
82
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
83
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
84
|
-
}]
|
|
67
|
+
type: Directive,
|
|
68
|
+
args: [{ standalone: true, selector: 'ngt-group[ngtSelect], ngt-mesh[ngtSelect]' }]
|
|
85
69
|
}], ctorParameters: () => [] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFQyxZQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUV0RSxjQUFTLEdBQUcsTUFBTSxDQUF5QyxFQUFFLENBQUMsQ0FBQztRQUN2RSxlQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQVN6QztJQVBBLE1BQU0sQ0FBQyxHQUFHLE9BQStDO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQUcsT0FBK0M7UUFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQzs4R0FaVyxZQUFZO2tHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTs7QUFpQjNELE1BQU0sT0FBTyxTQUFTO0lBS3JCO1FBSkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFNUUsU0FBSSxHQUFHLE1BQU0sQ0FBMkIsVUFBVSxDQUFDLENBQUM7UUFHbkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFdEMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixVQUFVLENBQ1QsR0FBRyxFQUFFO2dCQUNKLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPO2dCQUVsQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxVQUFVO29CQUFFLE9BQU87Z0JBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE9BQU87b0JBQUUsT0FBTztnQkFFckIsc0JBQXNCO2dCQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZCLE9BQU8sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFlLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN2QixLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUFFLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3RELENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxPQUFPO29CQUFFLE9BQU87Z0JBRXJCLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLENBQUM7WUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E3Q1csU0FBUztrR0FBVCxTQUFTOzsyRkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsMkNBQTJDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgR3JvdXAsIE1lc2gsIE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJy4uL2luc3RhbmNlJztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnW25ndFNlbGVjdGlvbl0nIH0pXG5leHBvcnQgY2xhc3MgTmd0U2VsZWN0aW9uIHtcblx0ZW5hYmxlZCA9IGlucHV0KHRydWUsIHsgYWxpYXM6ICduZ3RTZWxlY3Rpb24nLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cblx0cHJpdmF0ZSBzZWxlY3Rpb24gPSBzaWduYWw8QXJyYXk8RWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRD4+KFtdKTtcblx0Y29sbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmFzUmVhZG9ubHkoKTtcblxuXHRzZWxlY3QoLi4ub2JqZWN0czogQXJyYXk8RWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRD4pIHtcblx0XHR0aGlzLnNlbGVjdGlvbi51cGRhdGUoKHByZXYpID0+IFsuLi5wcmV2LCAuLi5vYmplY3RzXSk7XG5cdH1cblxuXHR1bnNlbGVjdCguLi5vYmplY3RzOiBBcnJheTxFbGVtZW50UmVmPE9iamVjdDNEPiB8IE9iamVjdDNEPikge1xuXHRcdHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgocHJldikgPT4gcHJldi5maWx0ZXIoKHNlbGVjdGVkKSA9PiAhb2JqZWN0cy5pbmNsdWRlcyhzZWxlY3RlZCkpKTtcblx0fVxufVxuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICduZ3QtZ3JvdXBbbmd0U2VsZWN0XSwgbmd0LW1lc2hbbmd0U2VsZWN0XScgfSlcbmV4cG9ydCBjbGFzcyBOZ3RTZWxlY3Qge1xuXHRlbmFibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ25ndFNlbGVjdCcgfSk7XG5cblx0aG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEdyb3VwIHwgTWVzaD4+KEVsZW1lbnRSZWYpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHNlbGVjdGlvbiA9IGluamVjdChOZ3RTZWxlY3Rpb24pO1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdChcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGhvc3QgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0XHRpZiAoIWhvc3QpIHJldHVybjtcblxuXHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGhvc3QpO1xuXHRcdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgZW5hYmxlZCA9IHRoaXMuZW5hYmxlZCgpO1xuXHRcdFx0XHRcdGlmICghZW5hYmxlZCkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Ly8gbmd0LW1lc2hbbmd0U2VsZWN0XVxuXHRcdFx0XHRcdGlmIChob3N0LnR5cGUgPT09ICdNZXNoJykge1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uLnNlbGVjdChob3N0KTtcblx0XHRcdFx0XHRcdHJldHVybiAoKSA9PiBzZWxlY3Rpb24udW5zZWxlY3QoaG9zdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgW2NvbGxlY3Rpb25dID0gW3VudHJhY2tlZChzZWxlY3Rpb24uY29sbGVjdGlvbiksIGxvY2FsU3RhdGUub2JqZWN0cygpXTtcblx0XHRcdFx0XHRsZXQgY2hhbmdlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnQ6IE9iamVjdDNEW10gPSBbXTtcblx0XHRcdFx0XHRob3N0LnRyYXZlcnNlKChjaGlsZCkgPT4ge1xuXHRcdFx0XHRcdFx0Y2hpbGQudHlwZSA9PT0gJ01lc2gnICYmIGN1cnJlbnQucHVzaChjaGlsZCk7XG5cdFx0XHRcdFx0XHRpZiAoY29sbGVjdGlvbi5pbmRleE9mKGNoaWxkKSA9PT0gLTEpIGNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0aWYgKCFjaGFuZ2VkKSByZXR1cm47XG5cblx0XHRcdFx0XHRzZWxlY3Rpb24uc2VsZWN0KC4uLmN1cnJlbnQpO1xuXHRcdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRzZWxlY3Rpb24udW5zZWxlY3QoLi4uY3VycmVudCk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { untracked, computed, signal, ElementRef, input, inject, ViewContainerRef, NgZone, TemplateRef, afterNextRender, DestroyRef, Directive, effect, InjectionToken, getDebugNode, RendererFactory2, Injectable, makeEnvironmentProviders, Component, EnvironmentInjector, Injector, booleanAttribute, output, viewChild, createEnvironmentInjector, ChangeDetectionStrategy,
|
|
2
|
+
import { untracked, computed, signal, ElementRef, input, inject, ViewContainerRef, NgZone, TemplateRef, afterNextRender, DestroyRef, Directive, effect, InjectionToken, getDebugNode, RendererFactory2, Injectable, makeEnvironmentProviders, Component, EnvironmentInjector, Injector, booleanAttribute, output, viewChild, createEnvironmentInjector, ChangeDetectionStrategy, Pipe, CUSTOM_ELEMENTS_SCHEMA, contentChild, model, Renderer2 } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
5
5
|
import { provideResizeOptions, NgxResize } from 'ngxtension/resize';
|
|
6
|
-
import { MathUtils, WebGLRenderer, OrthographicCamera, PerspectiveCamera, Vector3, Vector2, Clock, Layers, Color, ColorManagement, Texture, RGBAFormat, UnsignedByteType, Raycaster, Scene, PCFSoftShadowMap, BasicShadowMap, PCFShadowMap, VSMShadowMap, NoToneMapping, ACESFilmicToneMapping,
|
|
6
|
+
import { MathUtils, WebGLRenderer, OrthographicCamera, PerspectiveCamera, Vector3, Vector2, Clock, Layers, Color, ColorManagement, Texture, RGBAFormat, UnsignedByteType, Raycaster, Scene, PCFSoftShadowMap, BasicShadowMap, PCFShadowMap, VSMShadowMap, NoToneMapping, ACESFilmicToneMapping, Vector4 } from 'three';
|
|
7
7
|
import { DOCUMENT } from '@angular/common';
|
|
8
8
|
import { Subject, filter } from 'rxjs';
|
|
9
9
|
import { createInjectionToken } from 'ngxtension/create-injection-token';
|
|
@@ -2515,100 +2515,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
2515
2515
|
}]
|
|
2516
2516
|
}], ctorParameters: () => [] });
|
|
2517
2517
|
|
|
2518
|
-
function resolveRef(ref) {
|
|
2519
|
-
if (is.ref(ref)) {
|
|
2520
|
-
return ref.nativeElement;
|
|
2521
|
-
}
|
|
2522
|
-
return ref;
|
|
2523
|
-
}
|
|
2524
|
-
|
|
2525
|
-
class NgtObjectEvents {
|
|
2526
|
-
constructor() {
|
|
2527
|
-
this.click = output();
|
|
2528
|
-
this.dblclick = output();
|
|
2529
|
-
this.contextmenu = output();
|
|
2530
|
-
this.pointerup = output();
|
|
2531
|
-
this.pointerdown = output();
|
|
2532
|
-
this.pointerover = output();
|
|
2533
|
-
this.pointerout = output();
|
|
2534
|
-
this.pointerenter = output();
|
|
2535
|
-
this.pointerleave = output();
|
|
2536
|
-
this.pointermove = output();
|
|
2537
|
-
this.pointermissed = output();
|
|
2538
|
-
this.pointercancel = output();
|
|
2539
|
-
this.wheel = output();
|
|
2540
|
-
// NOTE: we use model here to allow for the hostDirective host to set this value
|
|
2541
|
-
this.ngtObjectEvents = model();
|
|
2542
|
-
const injector = inject(Injector);
|
|
2543
|
-
afterNextRender(() => {
|
|
2544
|
-
injectObjectEvents(this.ngtObjectEvents, {
|
|
2545
|
-
click: (event) => this.click.emit(event),
|
|
2546
|
-
dblclick: (event) => this.dblclick.emit(event),
|
|
2547
|
-
contextmenu: (event) => this.contextmenu.emit(event),
|
|
2548
|
-
pointerup: (event) => this.pointerup.emit(event),
|
|
2549
|
-
pointerdown: (event) => this.pointerdown.emit(event),
|
|
2550
|
-
pointerover: (event) => this.pointerover.emit(event),
|
|
2551
|
-
pointerout: (event) => this.pointerout.emit(event),
|
|
2552
|
-
pointerenter: (event) => this.pointerenter.emit(event),
|
|
2553
|
-
pointerleave: (event) => this.pointerleave.emit(event),
|
|
2554
|
-
pointermove: (event) => this.pointermove.emit(event),
|
|
2555
|
-
pointermissed: (event) => this.pointermissed.emit(event),
|
|
2556
|
-
pointercancel: (event) => this.pointercancel.emit(event),
|
|
2557
|
-
wheel: (event) => this.wheel.emit(event),
|
|
2558
|
-
}, { injector });
|
|
2559
|
-
});
|
|
2560
|
-
}
|
|
2561
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtObjectEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2562
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.3", type: NgtObjectEvents, isStandalone: true, selector: "[ngtObjectEvents]", inputs: { ngtObjectEvents: { classPropertyName: "ngtObjectEvents", publicName: "ngtObjectEvents", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click", dblclick: "dblclick", contextmenu: "contextmenu", pointerup: "pointerup", pointerdown: "pointerdown", pointerover: "pointerover", pointerout: "pointerout", pointerenter: "pointerenter", pointerleave: "pointerleave", pointermove: "pointermove", pointermissed: "pointermissed", pointercancel: "pointercancel", wheel: "wheel", ngtObjectEvents: "ngtObjectEventsChange" }, ngImport: i0 }); }
|
|
2563
|
-
}
|
|
2564
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtObjectEvents, decorators: [{
|
|
2565
|
-
type: Directive,
|
|
2566
|
-
args: [{ standalone: true, selector: '[ngtObjectEvents]' }]
|
|
2567
|
-
}], ctorParameters: () => [] });
|
|
2568
|
-
const NgtObjectEventsHostDirective = {
|
|
2569
|
-
directive: NgtObjectEvents,
|
|
2570
|
-
inputs: ['ngtObjectEvents'],
|
|
2571
|
-
outputs: [
|
|
2572
|
-
'click',
|
|
2573
|
-
'dblclick',
|
|
2574
|
-
'contextmenu',
|
|
2575
|
-
'pointerup',
|
|
2576
|
-
'pointerdown',
|
|
2577
|
-
'pointerover',
|
|
2578
|
-
'pointerout',
|
|
2579
|
-
'pointerenter',
|
|
2580
|
-
'pointerleave',
|
|
2581
|
-
'pointermove',
|
|
2582
|
-
'pointermissed',
|
|
2583
|
-
'pointercancel',
|
|
2584
|
-
'wheel',
|
|
2585
|
-
],
|
|
2586
|
-
};
|
|
2587
|
-
function injectObjectEvents(target, events, { injector } = {}) {
|
|
2588
|
-
return assertInjector(injectObjectEvents, injector, () => {
|
|
2589
|
-
const autoEffect = injectAutoEffect();
|
|
2590
|
-
const renderer = inject(Renderer2);
|
|
2591
|
-
const cleanUps = [];
|
|
2592
|
-
afterNextRender(() => {
|
|
2593
|
-
autoEffect(() => {
|
|
2594
|
-
const targetRef = resolveRef(target());
|
|
2595
|
-
if (!targetRef)
|
|
2596
|
-
return;
|
|
2597
|
-
Object.entries(events).forEach(([eventName, eventHandler]) => {
|
|
2598
|
-
cleanUps.push(renderer.listen(targetRef, eventName, eventHandler));
|
|
2599
|
-
});
|
|
2600
|
-
return () => {
|
|
2601
|
-
cleanUps.forEach((cleanUp) => cleanUp());
|
|
2602
|
-
};
|
|
2603
|
-
});
|
|
2604
|
-
});
|
|
2605
|
-
inject(DestroyRef).onDestroy(() => {
|
|
2606
|
-
cleanUps.forEach((cleanUp) => cleanUp());
|
|
2607
|
-
});
|
|
2608
|
-
return cleanUps;
|
|
2609
|
-
});
|
|
2610
|
-
}
|
|
2611
|
-
|
|
2612
2518
|
class NgtSelection {
|
|
2613
2519
|
constructor() {
|
|
2614
2520
|
this.enabled = input(true, { alias: 'ngtSelection', transform: booleanAttribute });
|
|
@@ -2630,27 +2536,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
2630
2536
|
}] });
|
|
2631
2537
|
class NgtSelect {
|
|
2632
2538
|
constructor() {
|
|
2633
|
-
this.enabled = input(false, { transform: booleanAttribute });
|
|
2634
|
-
this.
|
|
2635
|
-
this.groupRef = viewChild.required('group');
|
|
2636
|
-
extend({ Group });
|
|
2637
|
-
const objectEvents = inject(NgtObjectEvents, { host: true });
|
|
2539
|
+
this.enabled = input(false, { transform: booleanAttribute, alias: 'ngtSelect' });
|
|
2540
|
+
this.host = inject(ElementRef);
|
|
2638
2541
|
const selection = inject(NgtSelection);
|
|
2639
2542
|
const autoEffect = injectAutoEffect();
|
|
2640
2543
|
afterNextRender(() => {
|
|
2641
|
-
objectEvents.ngtObjectEvents.set(this.groupRef());
|
|
2642
2544
|
autoEffect(() => {
|
|
2643
|
-
const
|
|
2644
|
-
|
|
2545
|
+
const host = this.host.nativeElement;
|
|
2546
|
+
if (!host)
|
|
2547
|
+
return;
|
|
2548
|
+
const localState = getLocalState(host);
|
|
2645
2549
|
if (!localState)
|
|
2646
2550
|
return;
|
|
2647
2551
|
const enabled = this.enabled();
|
|
2648
2552
|
if (!enabled)
|
|
2649
2553
|
return;
|
|
2554
|
+
// ngt-mesh[ngtSelect]
|
|
2555
|
+
if (host.type === 'Mesh') {
|
|
2556
|
+
selection.select(host);
|
|
2557
|
+
return () => selection.unselect(host);
|
|
2558
|
+
}
|
|
2650
2559
|
const [collection] = [untracked(selection.collection), localState.objects()];
|
|
2651
2560
|
let changed = false;
|
|
2652
2561
|
const current = [];
|
|
2653
|
-
|
|
2562
|
+
host.traverse((child) => {
|
|
2654
2563
|
child.type === 'Mesh' && current.push(child);
|
|
2655
2564
|
if (collection.indexOf(child) === -1)
|
|
2656
2565
|
changed = true;
|
|
@@ -2664,27 +2573,12 @@ class NgtSelect {
|
|
|
2664
2573
|
}, { allowSignalWrites: true });
|
|
2665
2574
|
});
|
|
2666
2575
|
}
|
|
2667
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.
|
|
2668
|
-
static { this.ɵ
|
|
2669
|
-
<ngt-group #group [parameters]="options()">
|
|
2670
|
-
<ng-content />
|
|
2671
|
-
</ngt-group>
|
|
2672
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2576
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2577
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.3", type: NgtSelect, isStandalone: true, selector: "ngt-group[ngtSelect], ngt-mesh[ngtSelect]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelect", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
2673
2578
|
}
|
|
2674
2579
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelect, decorators: [{
|
|
2675
|
-
type:
|
|
2676
|
-
args: [{
|
|
2677
|
-
selector: 'ngt-select',
|
|
2678
|
-
standalone: true,
|
|
2679
|
-
template: `
|
|
2680
|
-
<ngt-group #group [parameters]="options()">
|
|
2681
|
-
<ng-content />
|
|
2682
|
-
</ngt-group>
|
|
2683
|
-
`,
|
|
2684
|
-
hostDirectives: [NgtObjectEventsHostDirective],
|
|
2685
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
2686
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2687
|
-
}]
|
|
2580
|
+
type: Directive,
|
|
2581
|
+
args: [{ standalone: true, selector: 'ngt-group[ngtSelect], ngt-mesh[ngtSelect]' }]
|
|
2688
2582
|
}], ctorParameters: () => [] });
|
|
2689
2583
|
|
|
2690
2584
|
var _a;
|
|
@@ -3096,6 +2990,100 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
3096
2990
|
}]
|
|
3097
2991
|
}], ctorParameters: () => [] });
|
|
3098
2992
|
|
|
2993
|
+
function resolveRef(ref) {
|
|
2994
|
+
if (is.ref(ref)) {
|
|
2995
|
+
return ref.nativeElement;
|
|
2996
|
+
}
|
|
2997
|
+
return ref;
|
|
2998
|
+
}
|
|
2999
|
+
|
|
3000
|
+
class NgtObjectEvents {
|
|
3001
|
+
constructor() {
|
|
3002
|
+
this.click = output();
|
|
3003
|
+
this.dblclick = output();
|
|
3004
|
+
this.contextmenu = output();
|
|
3005
|
+
this.pointerup = output();
|
|
3006
|
+
this.pointerdown = output();
|
|
3007
|
+
this.pointerover = output();
|
|
3008
|
+
this.pointerout = output();
|
|
3009
|
+
this.pointerenter = output();
|
|
3010
|
+
this.pointerleave = output();
|
|
3011
|
+
this.pointermove = output();
|
|
3012
|
+
this.pointermissed = output();
|
|
3013
|
+
this.pointercancel = output();
|
|
3014
|
+
this.wheel = output();
|
|
3015
|
+
// NOTE: we use model here to allow for the hostDirective host to set this value
|
|
3016
|
+
this.ngtObjectEvents = model();
|
|
3017
|
+
const injector = inject(Injector);
|
|
3018
|
+
afterNextRender(() => {
|
|
3019
|
+
injectObjectEvents(this.ngtObjectEvents, {
|
|
3020
|
+
click: (event) => this.click.emit(event),
|
|
3021
|
+
dblclick: (event) => this.dblclick.emit(event),
|
|
3022
|
+
contextmenu: (event) => this.contextmenu.emit(event),
|
|
3023
|
+
pointerup: (event) => this.pointerup.emit(event),
|
|
3024
|
+
pointerdown: (event) => this.pointerdown.emit(event),
|
|
3025
|
+
pointerover: (event) => this.pointerover.emit(event),
|
|
3026
|
+
pointerout: (event) => this.pointerout.emit(event),
|
|
3027
|
+
pointerenter: (event) => this.pointerenter.emit(event),
|
|
3028
|
+
pointerleave: (event) => this.pointerleave.emit(event),
|
|
3029
|
+
pointermove: (event) => this.pointermove.emit(event),
|
|
3030
|
+
pointermissed: (event) => this.pointermissed.emit(event),
|
|
3031
|
+
pointercancel: (event) => this.pointercancel.emit(event),
|
|
3032
|
+
wheel: (event) => this.wheel.emit(event),
|
|
3033
|
+
}, { injector });
|
|
3034
|
+
});
|
|
3035
|
+
}
|
|
3036
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtObjectEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3037
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.3", type: NgtObjectEvents, isStandalone: true, selector: "[ngtObjectEvents]", inputs: { ngtObjectEvents: { classPropertyName: "ngtObjectEvents", publicName: "ngtObjectEvents", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click", dblclick: "dblclick", contextmenu: "contextmenu", pointerup: "pointerup", pointerdown: "pointerdown", pointerover: "pointerover", pointerout: "pointerout", pointerenter: "pointerenter", pointerleave: "pointerleave", pointermove: "pointermove", pointermissed: "pointermissed", pointercancel: "pointercancel", wheel: "wheel", ngtObjectEvents: "ngtObjectEventsChange" }, ngImport: i0 }); }
|
|
3038
|
+
}
|
|
3039
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtObjectEvents, decorators: [{
|
|
3040
|
+
type: Directive,
|
|
3041
|
+
args: [{ standalone: true, selector: '[ngtObjectEvents]' }]
|
|
3042
|
+
}], ctorParameters: () => [] });
|
|
3043
|
+
const NgtObjectEventsHostDirective = {
|
|
3044
|
+
directive: NgtObjectEvents,
|
|
3045
|
+
inputs: ['ngtObjectEvents'],
|
|
3046
|
+
outputs: [
|
|
3047
|
+
'click',
|
|
3048
|
+
'dblclick',
|
|
3049
|
+
'contextmenu',
|
|
3050
|
+
'pointerup',
|
|
3051
|
+
'pointerdown',
|
|
3052
|
+
'pointerover',
|
|
3053
|
+
'pointerout',
|
|
3054
|
+
'pointerenter',
|
|
3055
|
+
'pointerleave',
|
|
3056
|
+
'pointermove',
|
|
3057
|
+
'pointermissed',
|
|
3058
|
+
'pointercancel',
|
|
3059
|
+
'wheel',
|
|
3060
|
+
],
|
|
3061
|
+
};
|
|
3062
|
+
function injectObjectEvents(target, events, { injector } = {}) {
|
|
3063
|
+
return assertInjector(injectObjectEvents, injector, () => {
|
|
3064
|
+
const autoEffect = injectAutoEffect();
|
|
3065
|
+
const renderer = inject(Renderer2);
|
|
3066
|
+
const cleanUps = [];
|
|
3067
|
+
afterNextRender(() => {
|
|
3068
|
+
autoEffect(() => {
|
|
3069
|
+
const targetRef = resolveRef(target());
|
|
3070
|
+
if (!targetRef)
|
|
3071
|
+
return;
|
|
3072
|
+
Object.entries(events).forEach(([eventName, eventHandler]) => {
|
|
3073
|
+
cleanUps.push(renderer.listen(targetRef, eventName, eventHandler));
|
|
3074
|
+
});
|
|
3075
|
+
return () => {
|
|
3076
|
+
cleanUps.forEach((cleanUp) => cleanUp());
|
|
3077
|
+
};
|
|
3078
|
+
});
|
|
3079
|
+
});
|
|
3080
|
+
inject(DestroyRef).onDestroy(() => {
|
|
3081
|
+
cleanUps.forEach((cleanUp) => cleanUp());
|
|
3082
|
+
});
|
|
3083
|
+
return cleanUps;
|
|
3084
|
+
});
|
|
3085
|
+
}
|
|
3086
|
+
|
|
3099
3087
|
function omit(objFn, keysToOmit) {
|
|
3100
3088
|
return computed(() => {
|
|
3101
3089
|
const obj = objFn();
|