{"version":3,"file":"ng-doc-ui-kit-components-selection.mjs","sources":["../../../../libs/ui-kit/components/selection/selection-host.directive.ts","../../../../libs/ui-kit/components/selection/selection.component.ts","../../../../libs/ui-kit/components/selection/selection-origin.directive.ts","../../../../libs/ui-kit/components/selection/ng-doc-ui-kit-components-selection.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { NgDocSelectionOriginDirective } from './selection-origin.directive';\n\n@Directive({\n\tselector: '[ngDocSelectionHost]',\n\tstandalone: true,\n})\nexport class NgDocSelectionHostDirective {\n\tprivate origins: Set<NgDocSelectionOriginDirective> = new Set<NgDocSelectionOriginDirective>();\n\tprivate selected?: NgDocSelectionOriginDirective;\n\tprivate selectedChange: ReplaySubject<HTMLElement | undefined> = new ReplaySubject<\n\t\tHTMLElement | undefined\n\t>();\n\n\tget selectedChange$(): Observable<HTMLElement | undefined> {\n\t\treturn this.selectedChange.pipe(distinctUntilChanged());\n\t}\n\n\taddOrigin(origin: NgDocSelectionOriginDirective): void {\n\t\tthis.origins.add(origin);\n\t}\n\n\tremoveOrigin(origin: NgDocSelectionOriginDirective): void {\n\t\tthis.origins.delete(origin);\n\n\t\tif (this.selected === origin) {\n\t\t\tthis.changeSelected(origin, false);\n\t\t}\n\t}\n\n\tchangeSelected(origin: NgDocSelectionOriginDirective, selected: boolean): void {\n\t\tthis.selected =\n\t\t\tthis.selected === origin || selected ? (selected ? origin : undefined) : this.selected;\n\t\tthis.selectedChange.next(this.selected?.elementRef?.nativeElement ?? undefined);\n\t}\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  ElementRef,\n  HostBinding,\n  inject,\n  Input,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgDocHorizontalAlign, NgDocPosition, NgDocVerticalAlign } from '@ng-doc/ui-kit/types';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { NgDocSelectionHostDirective } from './selection-host.directive';\n\n@Component({\n  selector: 'ng-doc-selection',\n  template: '',\n  styleUrls: ['./selection.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class NgDocSelectionComponent implements AfterViewInit {\n  private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly selectionHost = inject(NgDocSelectionHostDirective);\n\n  @Input()\n  @HostBinding('attr.data-ng-doc-align')\n  align: NgDocHorizontalAlign | NgDocVerticalAlign = 'bottom';\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  constructor() {}\n\n  ngAfterViewInit(): void {\n    this.selectionHost.selectedChange$\n      .pipe(debounceTime(0), takeUntilDestroyed(this.destroyRef))\n      .subscribe((selected: HTMLElement | undefined) => this.setStyles(selected));\n  }\n\n  private setStyles(element?: HTMLElement): void {\n    this.elementRef.nativeElement.style.visibility = 'hidden';\n    if (element) {\n      const position: NgDocPosition = this.getPosition(element);\n\n      if (this.align === 'left' || this.align === 'right') {\n        this.elementRef.nativeElement.style.top = position.top;\n      } else {\n        this.elementRef.nativeElement.style.left = position.left;\n      }\n\n      this.elementRef.nativeElement.style.height = position.height;\n      this.elementRef.nativeElement.style.width = position.width;\n      this.elementRef.nativeElement.style.visibility = 'visible';\n    }\n  }\n\n  private getPosition(element: HTMLElement): NgDocPosition {\n    return {\n      top: element ? `${element.offsetTop || 0}px` : '0',\n      left: element ? `${element.offsetLeft || 0}px` : '0',\n      width: element ? `${element.offsetWidth || 0}px` : '0',\n      height: element ? `${element.offsetHeight || 0}px` : '0',\n    };\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n} from '@angular/core';\n\nimport { NgDocSelectionHostDirective } from './selection-host.directive';\n\n@Directive({\n  selector: '[ngDocSelectionOrigin]',\n  standalone: true,\n})\nexport class NgDocSelectionOriginDirective implements OnChanges, OnDestroy {\n  readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly selectionHost = inject(NgDocSelectionHostDirective);\n\n  @Input('ngDocSelectionOrigin')\n  selected: boolean = false;\n\n  /** Inserted by Angular inject() migration for backwards compatibility */\n  constructor(...args: unknown[]);\n\n  constructor() {\n    this.selectionHost.addOrigin(this);\n  }\n\n  ngOnChanges({ selected }: SimpleChanges): void {\n    if (selected) {\n      this.selectionHost.changeSelected(this, this.selected);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.selectionHost.removeOrigin(this);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}