{"version":3,"file":"inyector.mjs","sources":["../../../projects/inyector/src/lib/classes/inyector-params/inyector-params.ts","../../../projects/inyector/src/lib/services/component-controller/component-controller.service.ts","../../../projects/inyector/src/lib/classes/component-event/component-event.ts","../../../projects/inyector/src/lib/directives/floating-dock-container/floating-dock-container.directive.ts","../../../projects/inyector/src/lib/components/floating-dock/floating-dock.component.ts","../../../projects/inyector/src/lib/components/floating-dock/floating-dock.component.html","../../../projects/inyector/src/lib/inyector.service.ts","../../../projects/inyector/src/lib/inyector.module.ts","../../../projects/inyector/src/public-api.ts","../../../projects/inyector/src/inyector.ts"],"sourcesContent":["export class InyectorParams {\r\n  parent?: HTMLElement;\r\n  dock?: any;\r\n  extras?: {\r\n    [s: string]: any\r\n  };\r\n}\r\n","import { ApplicationRef, ComponentRef, Injectable } from '@angular/core';\r\nimport { Params } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { ComponentEvent } from '../../classes/component-event/component-event';\r\nimport { InyectorParams } from '../../classes/inyector-params/inyector-params';\r\n\r\n@Injectable()\r\nexport class ComponentController<T = any> {\r\n  private componentRef: ComponentRef<any>;\r\n  private eventEmitter: Subject<ComponentEvent>;\r\n\r\n  constructor(\r\n    private appRef: ApplicationRef,\r\n    private params: InyectorParams\r\n  ) {\r\n    this.eventEmitter = new Subject<ComponentEvent>();\r\n  }\r\n\r\n  getExtra(value: string, defaultValue?: any): any {\r\n    return this.params.extras?.[value] ?? defaultValue;\r\n  }\r\n\r\n  getExtras(): Params {\r\n    return this.params.extras;\r\n  }\r\n\r\n  getParent(): HTMLElement {\r\n    return this.params.parent;\r\n  }\r\n\r\n  getInstance(): T {\r\n    return this.componentRef.instance;\r\n  }\r\n\r\n  on(event, callback: ($event: ComponentEvent) => void): ComponentController<T> {\r\n    this.listen(event)\r\n      .subscribe(callback);\r\n    return this;\r\n  }\r\n\r\n  listen(event: string): Observable<ComponentEvent> {\r\n    return this.eventEmitter\r\n      .pipe(filter(({ event: _event }) => (\r\n        _event === event\r\n      )));\r\n  }\r\n\r\n  setComponentRef(componentRef: ComponentRef<any>) {\r\n    this.componentRef = componentRef;\r\n  }\r\n\r\n  emitEvent(event: ComponentEvent) {\r\n    this.eventEmitter.next(event);\r\n  }\r\n\r\n  listenEvents(): Observable<ComponentEvent> {\r\n    return this.eventEmitter.asObservable();\r\n  }\r\n\r\n  complete() {\r\n    this.emitEvent({ event: 'completed' });\r\n    this.eventEmitter.complete();\r\n  }\r\n\r\n  close() {\r\n    this.appRef.detachView(this.componentRef.hostView);\r\n  }\r\n\r\n  destroy(event?: ComponentEvent) {\r\n    if (event)\r\n      this.eventEmitter.next(event);\r\n    if (this.params.dock)\r\n      return this.params.dock.close();\r\n    this.appRef.detachView(this.componentRef.hostView);\r\n    this.complete();\r\n  }\r\n}\r\n","\r\nexport class ComponentEvent {\r\n  event: string;\r\n  extras?: {\r\n    [s: string]: any\r\n  };\r\n}\r\n","import { Directive, ElementRef, HostBinding } from '@angular/core';\r\n\r\ndeclare type DIRECTION = 'vertical' | 'horizontal';\r\n\r\ndeclare type POSITION = 'top' | 'left' | 'right' | 'bottom';\r\n\r\ndeclare type ALIGN = 'start' | 'center' | 'end';\r\n\r\n@Directive({\r\n  selector: '[inyectorFloatingDockContainer]'\r\n})\r\nexport class FloatingDockContainerDirective {\r\n  @HostBinding('attr.align')\r\n  align: ALIGN;\r\n\r\n  @HostBinding('attr.direction')\r\n  direction: DIRECTION;\r\n\r\n  private _position: POSITION;\r\n  private readonly _vertical = ['top', 'bottom'];\r\n\r\n  constructor(\r\n    public element: ElementRef<HTMLElement>\r\n  ) { }\r\n\r\n  set position(position: POSITION) {\r\n    this._position = position;\r\n    this.direction = this._vertical.includes(position) ? 'vertical' : 'horizontal';\r\n  }\r\n\r\n  @HostBinding('attr.position')\r\n  get position() {\r\n    return this._position;\r\n  }\r\n}\r\n","import { Component, ElementRef, HostBinding, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { FloatingDockContainerDirective } from '../../directives/floating-dock-container/floating-dock-container.directive';\r\nimport { ComponentController } from '../../services/component-controller/component-controller.service';\r\n\r\n@Component({\r\n  selector: 'inyector-floating-dock',\r\n  templateUrl: './floating-dock.component.html',\r\n  styleUrls: ['./floating-dock.component.scss']\r\n})\r\nexport class FloatingDockComponent implements OnInit {\r\n  @HostBinding('style.top.px')\r\n  top: number;\r\n\r\n  @HostBinding('style.left.px')\r\n  left: number;\r\n\r\n  @HostBinding('style.right.px')\r\n  right: number;\r\n\r\n  @HostBinding('style.bottom.px')\r\n  bottom: number;\r\n\r\n  @HostBinding('style.width.px')\r\n  width: number;\r\n\r\n  @HostBinding('style.height.px')\r\n  height: number;\r\n\r\n  @HostBinding('style.marginTop.px')\r\n  marginTop: number;\r\n\r\n  @HostBinding('style.marginLeft.px')\r\n  marginLeft: number;\r\n\r\n  @ViewChild(FloatingDockContainerDirective, { static: true })\r\n  container: FloatingDockContainerDirective;\r\n\r\n  private readonly _vertical = ['top', 'bottom'];\r\n\r\n  constructor(\r\n    private _elementRef: ElementRef,\r\n    private _controller: ComponentController\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    const { target, position, align, margin = 0 } = this._controller.getExtras();\r\n    const { top, left, right, bottom, width, height } = target.getBoundingClientRect();\r\n    this.container.position = position;\r\n    this.container.align = align;\r\n    if (this._vertical.includes(position)) {\r\n      this.left = left;\r\n      this.width = width;\r\n      const isTop = position === 'top';\r\n      this.top = isTop ? (top - margin) : bottom;\r\n      if (!isTop)\r\n        this.marginTop = margin;\r\n    } else {\r\n      this.top = top;\r\n      this.height = height;\r\n      const isLeft = position === 'left';\r\n      this.left = isLeft ? (left - margin) : right;\r\n      if (!isLeft)\r\n        this.marginLeft = margin;\r\n    }\r\n  }\r\n\r\n  get element() {\r\n    return this.container.element.nativeElement;\r\n  }\r\n}\r\n","<div inyectorFloatingDockContainer>\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Type } from '@angular/core';\r\n\r\nimport { FloatingDockComponent } from './components/floating-dock/floating-dock.component';\r\nimport { ComponentController } from './services/component-controller/component-controller.service';\r\nimport { InyectorParams } from './classes/inyector-params/inyector-params';\r\nimport { DockParams } from './classes/dock-params/dock-params';\r\n\r\n@Injectable()\r\nexport class Inyector {\r\n\r\n  constructor(\r\n    private appRef: ApplicationRef,\r\n    private componentFactoryResolver: ComponentFactoryResolver\r\n  ) { }\r\n\r\n  add<T>(component: Type<T>, params: InyectorParams = {}): ComponentController<T> {\r\n    const controller = new ComponentController<T>(this.appRef, params);\r\n    const injector = Injector.create({\r\n      providers: [\r\n        {\r\n          provide: ComponentController,\r\n          useValue: controller\r\n        }\r\n      ]\r\n    });\r\n\r\n    const componentRef = this.componentFactoryResolver\r\n      .resolveComponentFactory(component)\r\n      .create(injector);\r\n    controller.setComponentRef(componentRef);\r\n\r\n    this.appRef.attachView(componentRef.hostView);\r\n    const domElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n    (params.parent || params.dock?.getInstance().element || document.body).appendChild(domElement);\r\n\r\n    return controller;\r\n  }\r\n\r\n  dock<T>(component: Type<T>, target: HTMLElement, params: DockParams): ComponentController<T> {\r\n    const { extras, margin, position = 'bottom', align = 'center' } = params;\r\n    const dockController = this.add(FloatingDockComponent, {\r\n      extras: { align, target, margin, position }\r\n    });\r\n    return this.add(component, {\r\n      extras,\r\n      dock: dockController\r\n    });\r\n  }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FloatingDockComponent } from './components/floating-dock/floating-dock.component';\r\nimport { FloatingDockContainerDirective } from './directives/floating-dock-container/floating-dock-container.directive';\r\nimport { Inyector } from './inyector.service';\r\n\r\n@NgModule({\r\n  declarations: [ FloatingDockComponent, FloatingDockContainerDirective ]\r\n})\r\nexport class InyectorModule {\r\n  static forRoot(): ModuleWithProviders<InyectorModule> {\r\n    return {\r\n      ngModule: InyectorModule,\r\n      providers: [ Inyector ]\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of inyector\r\n */\r\n\r\nexport * from './lib/services/component-controller/component-controller.service';\r\nexport * from './lib/classes/component-event/component-event';\r\nexport * from './lib/classes/inyector-params/inyector-params';\r\nexport * from './lib/inyector.service';\r\nexport * from './lib/inyector.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InyectorParams","i1.ComponentController","i2.FloatingDockContainerDirective"],"mappings":"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"}