{"version":3,"file":"ng-doc-ui-kit-services-overlay.mjs","sources":["../../../../libs/ui-kit/services/overlay/overlay.service.ts","../../../../libs/ui-kit/services/overlay/ng-doc-ui-kit-services-overlay.ts"],"sourcesContent":["import {\n  FlexibleConnectedPositionStrategy,\n  GlobalPositionStrategy,\n  Overlay,\n  OverlayRef,\n  ScrollStrategyOptions,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, inject, Injectable, Injector, NgZone, StaticProvider } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { NgDocOverlayRef } from '@ng-doc/ui-kit/classes';\nimport { NgDocOverlayConfig, NgDocOverlayContainer } from '@ng-doc/ui-kit/interfaces';\nimport { NgDocContent, NgDocOverlayOrigin, NgDocOverlayPosition } from '@ng-doc/ui-kit/types';\nimport { NgDocOverlayUtils } from '@ng-doc/ui-kit/utils';\nimport { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';\nimport { take } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NgDocOverlayService {\n  private overlay = inject(Overlay);\n  private ngZone = inject(NgZone);\n  private injector = inject(Injector);\n  private router = inject(Router);\n\n  constructor() {}\n\n  open<R>(\n    content: NgDocContent,\n    config: NgDocOverlayConfig,\n    providers: StaticProvider[] = [],\n  ): NgDocOverlayRef<R> {\n    const overlayRef: OverlayRef = this.createOverlay(config);\n    return this.attachTooltipContainer(content, overlayRef, config, providers);\n  }\n\n  private attachTooltipContainer<R>(\n    content: NgDocContent,\n    overlay: OverlayRef,\n    config: NgDocOverlayConfig,\n    providers: StaticProvider[],\n  ): NgDocOverlayRef<R> {\n    const containerPortal: ComponentPortal<NgDocOverlayContainer> = new ComponentPortal(\n      config.overlayContainer,\n      config.viewContainerRef,\n      config.viewContainerRef?.injector,\n    );\n    const containerRef: ComponentRef<NgDocOverlayContainer> = overlay.attach(containerPortal);\n    const overlayRef: NgDocOverlayRef<R> = new NgDocOverlayRef<R>(\n      overlay,\n      config,\n      containerRef.instance,\n      this.ngZone,\n      this.router,\n    );\n\n    if (content instanceof PolymorpheusComponent) {\n      content = new PolymorpheusComponent(\n        content.component,\n        this.createInjector(overlayRef, providers, config.viewContainerRef?.injector),\n      );\n    }\n\n    containerRef.setInput('config', config);\n    containerRef.setInput('content', content);\n    containerRef.instance.markForCheck();\n\n    return overlayRef;\n  }\n\n  private createOverlay(config: NgDocOverlayConfig): OverlayRef {\n    const overlayRef: OverlayRef = this.overlay.create(config);\n    overlayRef\n      .detachments()\n      .pipe(take(1))\n      .subscribe(() => {\n        overlayRef.hasAttached() && overlayRef.detach();\n      });\n    return overlayRef;\n  }\n\n  connectedPositionStrategy(\n    origin: NgDocOverlayOrigin,\n    positions: NgDocOverlayPosition | NgDocOverlayPosition[],\n  ): FlexibleConnectedPositionStrategy {\n    return this.overlay\n      .position()\n      .flexibleConnectedTo(origin)\n      .withPositions(NgDocOverlayUtils.toConnectedPositions(asArray(positions)))\n      .withPush(true);\n  }\n\n  globalPositionStrategy(): GlobalPositionStrategy {\n    return this.overlay.position().global();\n  }\n\n  scrollStrategy(): ScrollStrategyOptions {\n    return this.overlay.scrollStrategies;\n  }\n\n  private createInjector<R>(\n    overlayRef: NgDocOverlayRef<R>,\n    providers: StaticProvider[],\n    injector?: Injector,\n  ): Injector {\n    return Injector.create({\n      providers: [\n        ...providers,\n        {\n          provide: NgDocOverlayRef,\n          useValue: overlayRef,\n        },\n      ],\n      parent: injector || this.injector,\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}