angular-three 2.0.0-beta.288 → 2.0.0-beta.289

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.
@@ -5,14 +5,9 @@ import * as i0 from "@angular/core";
5
5
  export class NgtSelection {
6
6
  constructor() {
7
7
  this.enabled = input(true, { alias: 'ngtSelection', transform: booleanAttribute });
8
- this.selection = signal([]);
9
- this.collection = this.selection.asReadonly();
10
- }
11
- select(...objects) {
12
- this.selection.update((prev) => [...prev, ...objects]);
13
- }
14
- unselect(...objects) {
15
- this.selection.update((prev) => prev.filter((selected) => !objects.includes(selected)));
8
+ this.source = signal([]);
9
+ this.selected = this.source.asReadonly();
10
+ this.update = this.source.update.bind(this.source);
16
11
  }
17
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
13
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.3", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
@@ -24,12 +19,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
24
19
  export class NgtSelect {
25
20
  constructor() {
26
21
  this.enabled = input(false, { transform: booleanAttribute, alias: 'ngtSelect' });
27
- this.host = inject(ElementRef);
22
+ const elementRef = inject(ElementRef);
28
23
  const selection = inject(NgtSelection);
29
24
  const autoEffect = injectAutoEffect();
30
25
  afterNextRender(() => {
31
26
  autoEffect(() => {
32
- const host = this.host.nativeElement;
27
+ const host = elementRef.nativeElement;
33
28
  if (!host)
34
29
  return;
35
30
  const localState = getLocalState(host);
@@ -40,10 +35,10 @@ export class NgtSelect {
40
35
  return;
41
36
  // ngt-mesh[ngtSelect]
42
37
  if (host.type === 'Mesh') {
43
- selection.select(host);
44
- return () => selection.unselect(host);
38
+ selection.update((prev) => [...prev, host]);
39
+ return () => selection.update((prev) => prev.filter((el) => el !== host));
45
40
  }
46
- const [collection] = [untracked(selection.collection), localState.objects()];
41
+ const [collection] = [untracked(selection.selected), localState.objects()];
47
42
  let changed = false;
48
43
  const current = [];
49
44
  host.traverse((child) => {
@@ -53,9 +48,9 @@ export class NgtSelect {
53
48
  });
54
49
  if (!changed)
55
50
  return;
56
- selection.select(...current);
51
+ selection.update((prev) => [...prev, ...current]);
57
52
  return () => {
58
- selection.unselect(...current);
53
+ selection.update((prev) => prev.filter((el) => !current.includes(el)));
59
54
  };
60
55
  }, { allowSignalWrites: true });
61
56
  });
@@ -67,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
67
62
  type: Directive,
68
63
  args: [{ standalone: true, selector: 'ngt-group[ngtSelect], ngt-mesh[ngtSelect]' }]
69
64
  }], ctorParameters: () => [] });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFQyxZQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUV0RSxjQUFTLEdBQUcsTUFBTSxDQUF5QyxFQUFFLENBQUMsQ0FBQztRQUN2RSxlQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQVN6QztJQVBBLE1BQU0sQ0FBQyxHQUFHLE9BQStDO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQUcsT0FBK0M7UUFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQzs4R0FaVyxZQUFZO2tHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTs7QUFpQjNELE1BQU0sT0FBTyxTQUFTO0lBS3JCO1FBSkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFNUUsU0FBSSxHQUFHLE1BQU0sQ0FBMkIsVUFBVSxDQUFDLENBQUM7UUFHbkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFFdEMsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNwQixVQUFVLENBQ1QsR0FBRyxFQUFFO2dCQUNKLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPO2dCQUVsQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxVQUFVO29CQUFFLE9BQU87Z0JBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE9BQU87b0JBQUUsT0FBTztnQkFFckIsc0JBQXNCO2dCQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZCLE9BQU8sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFlLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN2QixLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUFFLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3RELENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxPQUFPO29CQUFFLE9BQU87Z0JBRXJCLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxHQUFHLEVBQUU7b0JBQ1gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLENBQUM7WUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E3Q1csU0FBUztrR0FBVCxTQUFTOzsyRkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsMkNBQTJDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgR3JvdXAsIE1lc2gsIE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJy4uL2luc3RhbmNlJztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnW25ndFNlbGVjdGlvbl0nIH0pXG5leHBvcnQgY2xhc3MgTmd0U2VsZWN0aW9uIHtcblx0ZW5hYmxlZCA9IGlucHV0KHRydWUsIHsgYWxpYXM6ICduZ3RTZWxlY3Rpb24nLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cblx0cHJpdmF0ZSBzZWxlY3Rpb24gPSBzaWduYWw8QXJyYXk8RWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRD4+KFtdKTtcblx0Y29sbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmFzUmVhZG9ubHkoKTtcblxuXHRzZWxlY3QoLi4ub2JqZWN0czogQXJyYXk8RWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRD4pIHtcblx0XHR0aGlzLnNlbGVjdGlvbi51cGRhdGUoKHByZXYpID0+IFsuLi5wcmV2LCAuLi5vYmplY3RzXSk7XG5cdH1cblxuXHR1bnNlbGVjdCguLi5vYmplY3RzOiBBcnJheTxFbGVtZW50UmVmPE9iamVjdDNEPiB8IE9iamVjdDNEPikge1xuXHRcdHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgocHJldikgPT4gcHJldi5maWx0ZXIoKHNlbGVjdGVkKSA9PiAhb2JqZWN0cy5pbmNsdWRlcyhzZWxlY3RlZCkpKTtcblx0fVxufVxuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICduZ3QtZ3JvdXBbbmd0U2VsZWN0XSwgbmd0LW1lc2hbbmd0U2VsZWN0XScgfSlcbmV4cG9ydCBjbGFzcyBOZ3RTZWxlY3Qge1xuXHRlbmFibGVkID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ25ndFNlbGVjdCcgfSk7XG5cblx0aG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEdyb3VwIHwgTWVzaD4+KEVsZW1lbnRSZWYpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IHNlbGVjdGlvbiA9IGluamVjdChOZ3RTZWxlY3Rpb24pO1xuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdChcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGhvc3QgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0XHRpZiAoIWhvc3QpIHJldHVybjtcblxuXHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGhvc3QpO1xuXHRcdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgZW5hYmxlZCA9IHRoaXMuZW5hYmxlZCgpO1xuXHRcdFx0XHRcdGlmICghZW5hYmxlZCkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Ly8gbmd0LW1lc2hbbmd0U2VsZWN0XVxuXHRcdFx0XHRcdGlmIChob3N0LnR5cGUgPT09ICdNZXNoJykge1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uLnNlbGVjdChob3N0KTtcblx0XHRcdFx0XHRcdHJldHVybiAoKSA9PiBzZWxlY3Rpb24udW5zZWxlY3QoaG9zdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgW2NvbGxlY3Rpb25dID0gW3VudHJhY2tlZChzZWxlY3Rpb24uY29sbGVjdGlvbiksIGxvY2FsU3RhdGUub2JqZWN0cygpXTtcblx0XHRcdFx0XHRsZXQgY2hhbmdlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnQ6IE9iamVjdDNEW10gPSBbXTtcblx0XHRcdFx0XHRob3N0LnRyYXZlcnNlKChjaGlsZCkgPT4ge1xuXHRcdFx0XHRcdFx0Y2hpbGQudHlwZSA9PT0gJ01lc2gnICYmIGN1cnJlbnQucHVzaChjaGlsZCk7XG5cdFx0XHRcdFx0XHRpZiAoY29sbGVjdGlvbi5pbmRleE9mKGNoaWxkKSA9PT0gLTEpIGNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0aWYgKCFjaGFuZ2VkKSByZXR1cm47XG5cblx0XHRcdFx0XHRzZWxlY3Rpb24uc2VsZWN0KC4uLmN1cnJlbnQpO1xuXHRcdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRzZWxlY3Rpb24udW5zZWxlY3QoLi4uY3VycmVudCk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFQyxZQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUN0RSxXQUFNLEdBQUcsTUFBTSxDQUF5QyxFQUFFLENBQUMsQ0FBQztRQUNwRSxhQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQyxXQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUM5Qzs4R0FMWSxZQUFZO2tHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFNBQVM7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRTs7QUFTM0QsTUFBTSxPQUFPLFNBQVM7SUFHckI7UUFGQSxZQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUczRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQTJCLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXRDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsVUFBVSxDQUNULEdBQUcsRUFBRTtnQkFDSixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPO2dCQUVsQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxVQUFVO29CQUFFLE9BQU87Z0JBRXhCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE9BQU87b0JBQUUsT0FBTztnQkFFckIsc0JBQXNCO2dCQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7b0JBQzFCLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDNUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDM0UsQ0FBQztnQkFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLE1BQU0sT0FBTyxHQUFlLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN2QixLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUFFLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3RELENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxPQUFPO29CQUFFLE9BQU87Z0JBRXJCLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxPQUFPLEdBQUcsRUFBRTtvQkFDWCxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixDQUFDLENBQUM7WUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDM0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0E1Q1csU0FBUztrR0FBVCxTQUFTOzsyRkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsMkNBQTJDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRhZnRlck5leHRSZW5kZXIsXG5cdGJvb2xlYW5BdHRyaWJ1dGUsXG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QXV0b0VmZmVjdCB9IGZyb20gJ25neHRlbnNpb24vYXV0by1lZmZlY3QnO1xuaW1wb3J0IHsgR3JvdXAsIE1lc2gsIE9iamVjdDNEIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJy4uL2luc3RhbmNlJztcblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnW25ndFNlbGVjdGlvbl0nIH0pXG5leHBvcnQgY2xhc3MgTmd0U2VsZWN0aW9uIHtcblx0ZW5hYmxlZCA9IGlucHV0KHRydWUsIHsgYWxpYXM6ICduZ3RTZWxlY3Rpb24nLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cdHByaXZhdGUgc291cmNlID0gc2lnbmFsPEFycmF5PEVsZW1lbnRSZWY8T2JqZWN0M0Q+IHwgT2JqZWN0M0Q+PihbXSk7XG5cdHNlbGVjdGVkID0gdGhpcy5zb3VyY2UuYXNSZWFkb25seSgpO1xuXHR1cGRhdGUgPSB0aGlzLnNvdXJjZS51cGRhdGUuYmluZCh0aGlzLnNvdXJjZSk7XG59XG5cbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ25ndC1ncm91cFtuZ3RTZWxlY3RdLCBuZ3QtbWVzaFtuZ3RTZWxlY3RdJyB9KVxuZXhwb3J0IGNsYXNzIE5ndFNlbGVjdCB7XG5cdGVuYWJsZWQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsIGFsaWFzOiAnbmd0U2VsZWN0JyB9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8R3JvdXAgfCBNZXNoPj4oRWxlbWVudFJlZik7XG5cdFx0Y29uc3Qgc2VsZWN0aW9uID0gaW5qZWN0KE5ndFNlbGVjdGlvbik7XG5cdFx0Y29uc3QgYXV0b0VmZmVjdCA9IGluamVjdEF1dG9FZmZlY3QoKTtcblxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHRhdXRvRWZmZWN0KFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgaG9zdCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdFx0XHRpZiAoIWhvc3QpIHJldHVybjtcblxuXHRcdFx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGhvc3QpO1xuXHRcdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgZW5hYmxlZCA9IHRoaXMuZW5hYmxlZCgpO1xuXHRcdFx0XHRcdGlmICghZW5hYmxlZCkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Ly8gbmd0LW1lc2hbbmd0U2VsZWN0XVxuXHRcdFx0XHRcdGlmIChob3N0LnR5cGUgPT09ICdNZXNoJykge1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uLnVwZGF0ZSgocHJldikgPT4gWy4uLnByZXYsIGhvc3RdKTtcblx0XHRcdFx0XHRcdHJldHVybiAoKSA9PiBzZWxlY3Rpb24udXBkYXRlKChwcmV2KSA9PiBwcmV2LmZpbHRlcigoZWwpID0+IGVsICE9PSBob3N0KSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgW2NvbGxlY3Rpb25dID0gW3VudHJhY2tlZChzZWxlY3Rpb24uc2VsZWN0ZWQpLCBsb2NhbFN0YXRlLm9iamVjdHMoKV07XG5cdFx0XHRcdFx0bGV0IGNoYW5nZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBjdXJyZW50OiBPYmplY3QzRFtdID0gW107XG5cdFx0XHRcdFx0aG9zdC50cmF2ZXJzZSgoY2hpbGQpID0+IHtcblx0XHRcdFx0XHRcdGNoaWxkLnR5cGUgPT09ICdNZXNoJyAmJiBjdXJyZW50LnB1c2goY2hpbGQpO1xuXHRcdFx0XHRcdFx0aWYgKGNvbGxlY3Rpb24uaW5kZXhPZihjaGlsZCkgPT09IC0xKSBjaGFuZ2VkID0gdHJ1ZTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmICghY2hhbmdlZCkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0c2VsZWN0aW9uLnVwZGF0ZSgocHJldikgPT4gWy4uLnByZXYsIC4uLmN1cnJlbnRdKTtcblx0XHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdFx0c2VsZWN0aW9uLnVwZGF0ZSgocHJldikgPT4gcHJldi5maWx0ZXIoKGVsKSA9PiAhY3VycmVudC5pbmNsdWRlcyhlbCBhcyBPYmplY3QzRCkpKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -2518,14 +2518,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
2518
2518
  class NgtSelection {
2519
2519
  constructor() {
2520
2520
  this.enabled = input(true, { alias: 'ngtSelection', transform: booleanAttribute });
2521
- this.selection = signal([]);
2522
- this.collection = this.selection.asReadonly();
2523
- }
2524
- select(...objects) {
2525
- this.selection.update((prev) => [...prev, ...objects]);
2526
- }
2527
- unselect(...objects) {
2528
- this.selection.update((prev) => prev.filter((selected) => !objects.includes(selected)));
2521
+ this.source = signal([]);
2522
+ this.selected = this.source.asReadonly();
2523
+ this.update = this.source.update.bind(this.source);
2529
2524
  }
2530
2525
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2531
2526
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.1.3", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
@@ -2537,12 +2532,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
2537
2532
  class NgtSelect {
2538
2533
  constructor() {
2539
2534
  this.enabled = input(false, { transform: booleanAttribute, alias: 'ngtSelect' });
2540
- this.host = inject(ElementRef);
2535
+ const elementRef = inject(ElementRef);
2541
2536
  const selection = inject(NgtSelection);
2542
2537
  const autoEffect = injectAutoEffect();
2543
2538
  afterNextRender(() => {
2544
2539
  autoEffect(() => {
2545
- const host = this.host.nativeElement;
2540
+ const host = elementRef.nativeElement;
2546
2541
  if (!host)
2547
2542
  return;
2548
2543
  const localState = getLocalState(host);
@@ -2553,10 +2548,10 @@ class NgtSelect {
2553
2548
  return;
2554
2549
  // ngt-mesh[ngtSelect]
2555
2550
  if (host.type === 'Mesh') {
2556
- selection.select(host);
2557
- return () => selection.unselect(host);
2551
+ selection.update((prev) => [...prev, host]);
2552
+ return () => selection.update((prev) => prev.filter((el) => el !== host));
2558
2553
  }
2559
- const [collection] = [untracked(selection.collection), localState.objects()];
2554
+ const [collection] = [untracked(selection.selected), localState.objects()];
2560
2555
  let changed = false;
2561
2556
  const current = [];
2562
2557
  host.traverse((child) => {
@@ -2566,9 +2561,9 @@ class NgtSelect {
2566
2561
  });
2567
2562
  if (!changed)
2568
2563
  return;
2569
- selection.select(...current);
2564
+ selection.update((prev) => [...prev, ...current]);
2570
2565
  return () => {
2571
- selection.unselect(...current);
2566
+ selection.update((prev) => prev.filter((el) => !current.includes(el)));
2572
2567
  };
2573
2568
  }, { allowSignalWrites: true });
2574
2569
  });