@ethlete/core 0.2.0-next.11 → 0.2.0-next.12

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,2 +1,16 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3R5cGVzL2FuZ3VsYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE5nQ2xhc3NUeXBlID1cbiAgfCBzdHJpbmdcbiAgfCBzdHJpbmdbXVxuICB8IFNldDxzdHJpbmc+XG4gIHwge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIFtrbGFzczogc3RyaW5nXTogYW55O1xuICAgIH1cbiAgfCBudWxsXG4gIHwgdW5kZWZpbmVkO1xuIl19
1
+ import { QueryList } from '@angular/core';
2
+ export class TypedQueryList extends QueryList {
3
+ constructor() {
4
+ super(...arguments);
5
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
+ // @ts-ignore
7
+ this.first = super.first;
8
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
9
+ // @ts-ignore
10
+ this.last = super.last;
11
+ }
12
+ get changes() {
13
+ return super.changes;
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3R5cGVzL2FuZ3VsYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWMxQyxNQUFNLE9BQU8sY0FBa0IsU0FBUSxTQUFZO0lBQW5EOztRQUtFLDZEQUE2RDtRQUM3RCxhQUFhO1FBQ0ssVUFBSyxHQUFHLEtBQUssQ0FBQyxLQUFzQixDQUFDO1FBRXZELDZEQUE2RDtRQUM3RCxhQUFhO1FBQ0ssU0FBSSxHQUFHLEtBQUssQ0FBQyxJQUFxQixDQUFDO0lBQ3ZELENBQUM7SUFYQyxJQUFhLE9BQU87UUFDbEIsT0FBTyxLQUFLLENBQUMsT0FBd0MsQ0FBQztJQUN4RCxDQUFDO0NBU0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTmdDbGFzc1R5cGUgPVxuICB8IHN0cmluZ1xuICB8IHN0cmluZ1tdXG4gIHwgU2V0PHN0cmluZz5cbiAgfCB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgW2tsYXNzOiBzdHJpbmddOiBhbnk7XG4gICAgfVxuICB8IG51bGxcbiAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjbGFzcyBUeXBlZFF1ZXJ5TGlzdDxUPiBleHRlbmRzIFF1ZXJ5TGlzdDxUPiB7XG4gIG92ZXJyaWRlIGdldCBjaGFuZ2VzKCk6IE9ic2VydmFibGU8VHlwZWRRdWVyeUxpc3Q8VD4+IHtcbiAgICByZXR1cm4gc3VwZXIuY2hhbmdlcyBhcyBPYnNlcnZhYmxlPFR5cGVkUXVlcnlMaXN0PFQ+PjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICBvdmVycmlkZSByZWFkb25seSBmaXJzdCA9IHN1cGVyLmZpcnN0IGFzIFQgfCB1bmRlZmluZWQ7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAvLyBAdHMtaWdub3JlXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGxhc3QgPSBzdXBlci5sYXN0IGFzIFQgfCB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -1,31 +1,66 @@
1
1
  import { ElementRef, inject } from '@angular/core';
2
2
  import { distinctUntilChanged, takeUntil } from 'rxjs';
3
3
  import { DestroyService } from '../services';
4
+ const isAttributeRenderBinding = (value) => typeof value === 'boolean';
5
+ const isAttributeValueBinding = (value) => typeof value === 'object';
4
6
  export const createReactiveBindings = (...values) => {
5
- const elementRef = inject(ElementRef);
7
+ const rootElementRef = inject(ElementRef);
6
8
  const destroy$ = inject(DestroyService).destroy$;
7
9
  const subscriptions = [];
8
10
  const pushedAttributes = [];
9
11
  const defaults = {};
10
12
  const push = (value) => {
11
- const { attribute, observable } = value;
13
+ const { attribute, observable, elementRef } = value;
14
+ const elRef = elementRef || rootElementRef;
12
15
  const attributes = Array.isArray(attribute) ? attribute : [attribute];
13
16
  pushedAttributes.push(attributes);
14
17
  for (const attribute of attributes) {
15
18
  if (!defaults[attribute]) {
16
- defaults[attribute] = elementRef.nativeElement.getAttribute(attribute) || undefined;
19
+ defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;
17
20
  }
18
21
  }
19
22
  const subscription = observable
20
- .pipe(takeUntil(destroy$), distinctUntilChanged((a, b) => a.render === b.render && a.value === b.value))
23
+ .pipe(takeUntil(destroy$), distinctUntilChanged((a, b) => {
24
+ if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {
25
+ return a === b;
26
+ }
27
+ else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {
28
+ return a.render === b.render && a.value === b.value;
29
+ }
30
+ return false;
31
+ }))
21
32
  .subscribe((value) => {
22
33
  const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];
23
34
  for (const attribute of currentAttributes) {
24
- if (!value.render) {
25
- elementRef.nativeElement.removeAttribute(attribute);
35
+ const isSingleClassMutation = attribute.startsWith('class.');
36
+ const isMultipleClassMutation = attribute === 'class';
37
+ const render = isAttributeRenderBinding(value) ? value : value.render;
38
+ if (isSingleClassMutation) {
39
+ const className = attribute.replace('class.', '');
40
+ if (!render) {
41
+ elRef.nativeElement.classList.remove(className);
42
+ }
43
+ else {
44
+ elRef.nativeElement.classList.add(className);
45
+ }
46
+ }
47
+ else if (isMultipleClassMutation) {
48
+ const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;
49
+ if (!render) {
50
+ elRef.nativeElement.classList.remove(...classes.split(' '));
51
+ }
52
+ else {
53
+ elRef.nativeElement.classList.add(...classes.split(' '));
54
+ }
26
55
  }
27
56
  else {
28
- elementRef.nativeElement.setAttribute(attribute, `${value.value}`);
57
+ const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;
58
+ if (!render) {
59
+ elRef.nativeElement.removeAttribute(attribute);
60
+ }
61
+ else {
62
+ elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);
63
+ }
29
64
  }
30
65
  }
31
66
  });
@@ -48,10 +83,10 @@ export const createReactiveBindings = (...values) => {
48
83
  const reset = () => {
49
84
  for (const attribute in defaults) {
50
85
  if (defaults[attribute] === undefined) {
51
- elementRef.nativeElement.removeAttribute(attribute);
86
+ rootElementRef.nativeElement.removeAttribute(attribute);
52
87
  }
53
88
  else {
54
- elementRef.nativeElement.setAttribute(attribute, defaults[attribute]);
89
+ rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute]);
55
90
  }
56
91
  }
57
92
  };
@@ -64,4 +99,4 @@ export const createReactiveBindings = (...values) => {
64
99
  reset,
65
100
  };
66
101
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtYmluZGluZy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvcmVhY3RpdmUtYmluZGluZy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBNEIsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFnQjdDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxNQUE0QixFQUF5QixFQUFFO0lBQy9GLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7SUFDL0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFpQixjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFakUsTUFBTSxhQUFhLEdBQTJELEVBQUUsQ0FBQztJQUNqRixNQUFNLGdCQUFnQixHQUFlLEVBQUUsQ0FBQztJQUV4QyxNQUFNLFFBQVEsR0FBdUMsRUFBRSxDQUFDO0lBRXhELE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDeEIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQzthQUNyRjtTQUNGO1FBRUQsTUFBTSxZQUFZLEdBQUcsVUFBVTthQUM1QixJQUFJLENBQ0gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUNuQixvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDN0U7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRWhILEtBQUssTUFBTSxTQUFTLElBQUksaUJBQWlCLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUNqQixVQUFVLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDckQ7cUJBQU07b0JBQ0wsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQ3BFO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsVUFBb0IsRUFBRSxFQUFFO1FBQ3pDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFFM0UsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO2dCQUMvRCxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRTdELElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMvQixhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3JEO2FBQ0Y7U0FDRjtJQUNILENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRTtRQUNqQixLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsRUFBRTtZQUNoQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3JEO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFXLENBQUMsQ0FBQzthQUNqRjtTQUNGO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2I7SUFFRCxPQUFPO1FBQ0wsSUFBSTtRQUNKLE1BQU07UUFDTixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXN0cm95U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IHR5cGUgUmVhY3RpdmVBdHRyaWJ1dGVzID0ge1xuICBhdHRyaWJ1dGU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPHtcbiAgICByZW5kZXI6IGJvb2xlYW47XG4gICAgdmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXI7XG4gIH0+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGl2ZUJpbmRpbmdSZXN1bHQge1xuICByZXNldDogKCkgPT4gdm9pZDtcbiAgcmVtb3ZlOiAoLi4uYXR0cmlidXRlczogc3RyaW5nW10pID0+IHZvaWQ7XG4gIHB1c2g6ICh2YWx1ZTogUmVhY3RpdmVBdHRyaWJ1dGVzKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyA9ICguLi52YWx1ZXM6IFJlYWN0aXZlQXR0cmlidXRlc1tdKTogUmVhY3RpdmVCaW5kaW5nUmVzdWx0ID0+IHtcbiAgY29uc3QgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIGNvbnN0IGRlc3Ryb3kkID0gaW5qZWN0PERlc3Ryb3lTZXJ2aWNlPihEZXN0cm95U2VydmljZSkuZGVzdHJveSQ7XG5cbiAgY29uc3Qgc3Vic2NyaXB0aW9uczogeyBhdHRyaWJ1dGVzOiBzdHJpbmdbXTsgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfVtdID0gW107XG4gIGNvbnN0IHB1c2hlZEF0dHJpYnV0ZXM6IHN0cmluZ1tdW10gPSBbXTtcblxuICBjb25zdCBkZWZhdWx0czogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA9IHt9O1xuXG4gIGNvbnN0IHB1c2ggPSAodmFsdWU6IFJlYWN0aXZlQXR0cmlidXRlcykgPT4ge1xuICAgIGNvbnN0IHsgYXR0cmlidXRlLCBvYnNlcnZhYmxlIH0gPSB2YWx1ZTtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gQXJyYXkuaXNBcnJheShhdHRyaWJ1dGUpID8gYXR0cmlidXRlIDogW2F0dHJpYnV0ZV07XG4gICAgcHVzaGVkQXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZXMpO1xuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgaWYgKCFkZWZhdWx0c1thdHRyaWJ1dGVdKSB7XG4gICAgICAgIGRlZmF1bHRzW2F0dHJpYnV0ZV0gPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkgfHwgdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYS5yZW5kZXIgPT09IGIucmVuZGVyICYmIGEudmFsdWUgPT09IGIudmFsdWUpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEF0dHJpYnV0ZXMgPSBwdXNoZWRBdHRyaWJ1dGVzLmZpbmQoKHMpID0+IHMuc29tZSgoY3VycmVudCkgPT4gYXR0cmlidXRlcy5pbmNsdWRlcyhjdXJyZW50KSkpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGN1cnJlbnRBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgaWYgKCF2YWx1ZS5yZW5kZXIpIHtcbiAgICAgICAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGAke3ZhbHVlLnZhbHVlfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBzdWJzY3JpcHRpb25zLnB1c2goeyBhdHRyaWJ1dGVzLCBzdWJzY3JpcHRpb24gfSk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlID0gKC4uLmF0dHJpYnV0ZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgY29uc3Qgc3ViID0gc3Vic2NyaXB0aW9ucy5maW5kKChzKSA9PiBzLmF0dHJpYnV0ZXMuaW5jbHVkZXMoYXR0cmlidXRlKSk7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTdGFjayA9IHB1c2hlZEF0dHJpYnV0ZXMuZmluZCgoYSkgPT4gYS5pbmNsdWRlcyhhdHRyaWJ1dGUpKTtcblxuICAgICAgaWYgKHN1Yikge1xuICAgICAgICBzdWIuYXR0cmlidXRlcyA9IHN1Yi5hdHRyaWJ1dGVzLmZpbHRlcigoYSkgPT4gYSAhPT0gYXR0cmlidXRlKTtcbiAgICAgICAgYXR0cmlidXRlU3RhY2s/LnNwbGljZShhdHRyaWJ1dGVTdGFjay5pbmRleE9mKGF0dHJpYnV0ZSksIDEpO1xuXG4gICAgICAgIGlmIChzdWIuYXR0cmlidXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBzdWIuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9ucy5zcGxpY2Uoc3Vic2NyaXB0aW9ucy5pbmRleE9mKHN1YiksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIGluIGRlZmF1bHRzKSB7XG4gICAgICBpZiAoZGVmYXVsdHNbYXR0cmlidXRlXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBkZWZhdWx0c1thdHRyaWJ1dGVdIGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgcHVzaCh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHB1c2gsXG4gICAgcmVtb3ZlLFxuICAgIHJlc2V0LFxuICB9O1xufTtcbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtYmluZGluZy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvcmVhY3RpdmUtYmluZGluZy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBNEIsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFlN0MsTUFBTSx3QkFBd0IsR0FBRyxDQUMvQixLQUFxRCxFQUNwQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQ2pFLE1BQU0sdUJBQXVCLEdBQUcsQ0FDOUIsS0FBcUQsRUFDckIsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztBQVEvRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsTUFBNEIsRUFBeUIsRUFBRTtJQUMvRixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBaUIsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBRWpFLE1BQU0sYUFBYSxHQUEyRCxFQUFFLENBQUM7SUFDakYsTUFBTSxnQkFBZ0IsR0FBZSxFQUFFLENBQUM7SUFFeEMsTUFBTSxRQUFRLEdBQXVDLEVBQUUsQ0FBQztJQUV4RCxNQUFNLElBQUksR0FBRyxDQUFDLEtBQXlCLEVBQUUsRUFBRTtRQUN6QyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDcEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxJQUFJLGNBQWMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMs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QUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDL0IsR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDL0IsYUFBYSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNyRDthQUNGO1NBQ0Y7SUFDSCxDQUFDLENBQUM7SUFFRixNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUU7UUFDakIsS0FBSyxNQUFNLFNBQVMsSUFBSSxRQUFRLEVBQUU7WUFDaEMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUNyQyxjQUFjLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN6RDtpQkFBTTtnQkFDTCxjQUFjLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBVyxDQUFDLENBQUM7YUFDckY7U0FDRjtJQUNILENBQUMsQ0FBQztJQUVGLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNiO0lBRUQsT0FBTztRQUNMLElBQUk7UUFDSixNQUFNO1FBQ04sS0FBSztLQUNOLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVzdHJveVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5cbnR5cGUgQXR0cmlidXRlVmFsdWVCaW5kaW5nID0ge1xuICByZW5kZXI6IGJvb2xlYW47XG4gIHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyO1xufTtcblxudHlwZSBBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgUmVhY3RpdmVBdHRyaWJ1dGVzID0ge1xuICBhdHRyaWJ1dGU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZVZhbHVlQmluZGluZyB8IEF0dHJpYnV0ZVJlbmRlckJpbmRpbmc+O1xuICBlbGVtZW50UmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG59O1xuXG5jb25zdCBpc0F0dHJpYnV0ZVJlbmRlckJpbmRpbmcgPSAoXG4gIHZhbHVlOiBBdHRyaWJ1dGVWYWx1ZUJpbmRpbmcgfCBBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nLFxuKTogdmFsdWUgaXMgQXR0cmlidXRlUmVuZGVyQmluZGluZyA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbmNvbnN0IGlzQXR0cmlidXRlVmFsdWVCaW5kaW5nID0gKFxuICB2YWx1ZTogQXR0cmlidXRlVmFsdWVCaW5kaW5nIHwgQXR0cmlidXRlUmVuZGVyQmluZGluZyxcbik6IHZhbHVlIGlzIEF0dHJpYnV0ZVZhbHVlQmluZGluZyA9PiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aXZlQmluZGluZ1Jlc3VsdCB7XG4gIHJlc2V0OiAoKSA9PiB2b2lkO1xuICByZW1vdmU6ICguLi5hdHRyaWJ1dGVzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgcHVzaDogKHZhbHVlOiBSZWFjdGl2ZUF0dHJpYnV0ZXMpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWFjdGl2ZUJpbmRpbmdzID0gKC4uLnZhbHVlczogUmVhY3RpdmVBdHRyaWJ1dGVzW10pOiBSZWFjdGl2ZUJpbmRpbmdSZXN1bHQgPT4ge1xuICBjb25zdCByb290RWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIGNvbnN0IGRlc3Ryb3kkID0gaW5qZWN0PERlc3Ryb3lTZXJ2aWNlPihEZXN0cm95U2VydmljZSkuZGVzdHJveSQ7XG5cbiAgY29uc3Qgc3Vic2NyaXB0aW9uczogeyBhdHRyaWJ1dGVzOiBzdHJpbmdbXTsgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfVtdID0gW107XG4gIGNvbnN0IHB1c2hlZEF0dHJpYnV0ZXM6IHN0cmluZ1tdW10gPSBbXTtcblxuICBjb25zdCBkZWZhdWx0czogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA9IHt9O1xuXG4gIGNvbnN0IHB1c2ggPSAodmFsdWU6IFJlYWN0aXZlQXR0cmlidXRlcykgPT4ge1xuICAgIGNvbnN0IHsgYXR0cmlidXRlLCBvYnNlcnZhYmxlLCBlbGVtZW50UmVmIH0gPSB2YWx1ZTtcbiAgICBjb25zdCBlbFJlZiA9IGVsZW1lbnRSZWYgfHwgcm9vdEVsZW1lbnRSZWY7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IEFycmF5LmlzQXJyYXkoYXR0cmlidXRlKSA/IGF0dHJpYnV0ZSA6IFthdHRyaWJ1dGVdO1xuICAgIHB1c2hlZEF0dHJpYnV0ZXMucHVzaChhdHRyaWJ1dGVzKTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmICghZGVmYXVsdHNbYXR0cmlidXRlXSkge1xuICAgICAgICBkZWZhdWx0c1thdHRyaWJ1dGVdID0gZWxSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKSB8fCB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gb2JzZXJ2YWJsZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXR0cmlidXRlUmVuZGVyQmluZGluZyhhKSAmJiBpc0F0dHJpYnV0ZVJlbmRlckJpbmRpbmcoYikpIHtcbiAgICAgICAgICAgIHJldHVybiBhID09PSBiO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNBdHRyaWJ1dGVWYWx1ZUJpbmRpbmcoYSkgJiYgaXNBdHRyaWJ1dGVWYWx1ZUJpbmRpbmcoYikpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnJlbmRlciA9PT0gYi5yZW5kZXIgJiYgYS52YWx1ZSA9PT0gYi52YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEF0dHJpYnV0ZXMgPSBwdXNoZWRBdHRyaWJ1dGVzLmZpbmQoKHMpID0+IHMuc29tZSgoY3VycmVudCkgPT4gYXR0cmlidXRlcy5pbmNsdWRlcyhjdXJyZW50KSkpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGN1cnJlbnRBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgY29uc3QgaXNTaW5nbGVDbGFzc011dGF0aW9uID0gYXR0cmlidXRlLnN0YXJ0c1dpdGgoJ2NsYXNzLicpO1xuICAgICAgICAgIGNvbnN0IGlzTXVsdGlwbGVDbGFzc011dGF0aW9uID0gYXR0cmlidXRlID09PSAnY2xhc3MnO1xuXG4gICAgICAgICAgY29uc3QgcmVuZGVyID0gaXNBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nKHZhbHVlKSA/IHZhbHVlIDogdmFsdWUucmVuZGVyO1xuXG4gICAgICAgICAgaWYgKGlzU2luZ2xlQ2xhc3NNdXRhdGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gYXR0cmlidXRlLnJlcGxhY2UoJ2NsYXNzLicsICcnKTtcblxuICAgICAgICAgICAgaWYgKCFyZW5kZXIpIHtcbiAgICAgICAgICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGVDbGFzc011dGF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc2VzID0gaXNBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nKHZhbHVlKSA/ICcnIDogYCR7dmFsdWUudmFsdWV9YDtcblxuICAgICAgICAgICAgaWYgKCFyZW5kZXIpIHtcbiAgICAgICAgICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXMuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5zcGxpdCgnICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSBpc0F0dHJpYnV0ZVJlbmRlckJpbmRpbmcodmFsdWUpID8gdHJ1ZSA6IGAke3ZhbHVlLnZhbHVlfWA7XG5cbiAgICAgICAgICAgIGlmICghcmVuZGVyKSB7XG4gICAgICAgICAgICAgIGVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGAke2F0dHJpYnV0ZVZhbHVlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBzdWJzY3JpcHRpb25zLnB1c2goeyBhdHRyaWJ1dGVzLCBzdWJzY3JpcHRpb24gfSk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlID0gKC4uLmF0dHJpYnV0ZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgY29uc3Qgc3ViID0gc3Vic2NyaXB0aW9ucy5maW5kKChzKSA9PiBzLmF0dHJpYnV0ZXMuaW5jbHVkZXMoYXR0cmlidXRlKSk7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTdGFjayA9IHB1c2hlZEF0dHJpYnV0ZXMuZmluZCgoYSkgPT4gYS5pbmNsdWRlcyhhdHRyaWJ1dGUpKTtcblxuICAgICAgaWYgKHN1Yikge1xuICAgICAgICBzdWIuYXR0cmlidXRlcyA9IHN1Yi5hdHRyaWJ1dGVzLmZpbHRlcigoYSkgPT4gYSAhPT0gYXR0cmlidXRlKTtcbiAgICAgICAgYXR0cmlidXRlU3RhY2s/LnNwbGljZShhdHRyaWJ1dGVTdGFjay5pbmRleE9mKGF0dHJpYnV0ZSksIDEpO1xuXG4gICAgICAgIGlmIChzdWIuYXR0cmlidXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBzdWIuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9ucy5zcGxpY2Uoc3Vic2NyaXB0aW9ucy5pbmRleE9mKHN1YiksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIGluIGRlZmF1bHRzKSB7XG4gICAgICBpZiAoZGVmYXVsdHNbYXR0cmlidXRlXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJvb3RFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb290RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGRlZmF1bHRzW2F0dHJpYnV0ZV0gYXMgc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICBwdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHVzaCxcbiAgICByZW1vdmUsXG4gICAgcmVzZXQsXG4gIH07XG59O1xuIl19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, Injectable, Inject, Optional, ElementRef, EventEmitter, Directive, Output, NgZone, Pipe } from '@angular/core';
2
+ import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, Injectable, Inject, Optional, ElementRef, EventEmitter, Directive, Output, NgZone, Pipe, QueryList } from '@angular/core';
3
3
  import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
4
4
  import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
5
5
  import { fromEvent, Observable, Subject, BehaviorSubject, combineLatest, map, shareReplay, takeUntil, distinctUntilChanged, startWith, debounceTime, tap, take } from 'rxjs';
@@ -549,31 +549,66 @@ const clamp = (value, min = 0, max = 100) => {
549
549
  return Math.max(min, Math.min(max, value));
550
550
  };
551
551
 
552
+ const isAttributeRenderBinding = (value) => typeof value === 'boolean';
553
+ const isAttributeValueBinding = (value) => typeof value === 'object';
552
554
  const createReactiveBindings = (...values) => {
553
- const elementRef = inject(ElementRef);
555
+ const rootElementRef = inject(ElementRef);
554
556
  const destroy$ = inject(DestroyService).destroy$;
555
557
  const subscriptions = [];
556
558
  const pushedAttributes = [];
557
559
  const defaults = {};
558
560
  const push = (value) => {
559
- const { attribute, observable } = value;
561
+ const { attribute, observable, elementRef } = value;
562
+ const elRef = elementRef || rootElementRef;
560
563
  const attributes = Array.isArray(attribute) ? attribute : [attribute];
561
564
  pushedAttributes.push(attributes);
562
565
  for (const attribute of attributes) {
563
566
  if (!defaults[attribute]) {
564
- defaults[attribute] = elementRef.nativeElement.getAttribute(attribute) || undefined;
567
+ defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;
565
568
  }
566
569
  }
567
570
  const subscription = observable
568
- .pipe(takeUntil(destroy$), distinctUntilChanged((a, b) => a.render === b.render && a.value === b.value))
571
+ .pipe(takeUntil(destroy$), distinctUntilChanged((a, b) => {
572
+ if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {
573
+ return a === b;
574
+ }
575
+ else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {
576
+ return a.render === b.render && a.value === b.value;
577
+ }
578
+ return false;
579
+ }))
569
580
  .subscribe((value) => {
570
581
  const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];
571
582
  for (const attribute of currentAttributes) {
572
- if (!value.render) {
573
- elementRef.nativeElement.removeAttribute(attribute);
583
+ const isSingleClassMutation = attribute.startsWith('class.');
584
+ const isMultipleClassMutation = attribute === 'class';
585
+ const render = isAttributeRenderBinding(value) ? value : value.render;
586
+ if (isSingleClassMutation) {
587
+ const className = attribute.replace('class.', '');
588
+ if (!render) {
589
+ elRef.nativeElement.classList.remove(className);
590
+ }
591
+ else {
592
+ elRef.nativeElement.classList.add(className);
593
+ }
594
+ }
595
+ else if (isMultipleClassMutation) {
596
+ const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;
597
+ if (!render) {
598
+ elRef.nativeElement.classList.remove(...classes.split(' '));
599
+ }
600
+ else {
601
+ elRef.nativeElement.classList.add(...classes.split(' '));
602
+ }
574
603
  }
575
604
  else {
576
- elementRef.nativeElement.setAttribute(attribute, `${value.value}`);
605
+ const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;
606
+ if (!render) {
607
+ elRef.nativeElement.removeAttribute(attribute);
608
+ }
609
+ else {
610
+ elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);
611
+ }
577
612
  }
578
613
  }
579
614
  });
@@ -596,10 +631,10 @@ const createReactiveBindings = (...values) => {
596
631
  const reset = () => {
597
632
  for (const attribute in defaults) {
598
633
  if (defaults[attribute] === undefined) {
599
- elementRef.nativeElement.removeAttribute(attribute);
634
+ rootElementRef.nativeElement.removeAttribute(attribute);
600
635
  }
601
636
  else {
602
- elementRef.nativeElement.setAttribute(attribute, defaults[attribute]);
637
+ rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute]);
603
638
  }
604
639
  }
605
640
  };
@@ -1718,9 +1753,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
1718
1753
  args: [{ name: 'toArray', standalone: true }]
1719
1754
  }] });
1720
1755
 
1756
+ class TypedQueryList extends QueryList {
1757
+ constructor() {
1758
+ super(...arguments);
1759
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1760
+ // @ts-ignore
1761
+ this.first = super.first;
1762
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1763
+ // @ts-ignore
1764
+ this.last = super.last;
1765
+ }
1766
+ get changes() {
1767
+ return super.changes;
1768
+ }
1769
+ }
1770
+
1721
1771
  /**
1722
1772
  * Generated bundle index. Do not edit.
1723
1773
  */
1724
1774
 
1725
- export { ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyService, FocusVisibleService, LetContext, LetDirective, Memo, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, StructuredDataComponent, ToArrayPipe, VIEWPORT_CONFIG, ViewportService, clamp, createReactiveBindings, elementCanScroll, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, isGroupMatch, isKnockoutMatch, mergeSeoConfig, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, toArray, toArrayTrackByFn };
1775
+ export { ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyService, FocusVisibleService, LetContext, LetDirective, Memo, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ViewportService, clamp, createReactiveBindings, elementCanScroll, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, isGroupMatch, isKnockoutMatch, mergeSeoConfig, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, toArray, toArrayTrackByFn };
1726
1776
  //# sourceMappingURL=ethlete-core.mjs.map