{"version":3,"file":"toppy-ivy.mjs","sources":["../../../projects/toppy/src/lib/models.ts","../../../projects/toppy/src/lib/position/position.ts","../../../projects/toppy/src/lib/position/fullscreen-position.ts","../../../projects/toppy/src/lib/utils.ts","../../../projects/toppy/src/lib/position/global-position.ts","../../../projects/toppy/src/lib/position/relative-position.ts","../../../projects/toppy/src/lib/position/slide-position.ts","../../../projects/toppy/src/lib/config.ts","../../../projects/toppy/src/lib/toppy.component.ts","../../../projects/toppy/src/lib/template.html","../../../projects/toppy/src/lib/toppy-control.ts","../../../projects/toppy/src/lib/toppy.ts","../../../projects/toppy/src/lib/toppy.module.ts","../../../projects/toppy/src/toppy-ivy.ts"],"sourcesContent":["import { TemplateRef } from '@angular/core';\nimport { ToppyPosition } from './position/position';\n\nexport interface PositionMeta {\n  top?: number;\n  left?: number;\n  bottom?: number;\n  right?: number;\n  height?: number | string;\n  width?: number | string;\n  position?: string;\n  extra?: string;\n}\n\nenum p {\n  TOP = 't',\n  LEFT = 'l',\n  RIGHT = 'r',\n  BOTTOM = 'b',\n  TOP_LEFT = 'tl',\n  TOP_RIGHT = 'tr',\n  BOTTOM_LEFT = 'bl',\n  BOTTOM_RIGHT = 'br'\n}\n\nenum o {\n  LEFT_TOP = 'lt',\n  RIGHT_TOP = 'rt',\n  LEFT_BOTTOM = 'lb',\n  RIGHT_BOTTOM = 'rb'\n}\n\nenum i {\n  CENTER = 'c'\n}\nexport const OutsidePlacement = {\n  ...p,\n  ...o\n};\nexport const InsidePlacement = {\n  ...p,\n  ...i\n};\nexport type OutsidePlacement = p | o;\nexport type InsidePlacement = p | i;\n\nexport enum SlidePlacement {\n  LEFT = 'l',\n  RIGHT = 'r'\n}\n\nexport interface ContainerSize {\n  width: string | number;\n  height: string | number;\n}\n\nexport interface ToppyConfig {\n  backdrop: boolean;\n  containerClass: string;\n  wrapperClass: string;\n  backdropClass: string;\n  listenWindowEvents: boolean;\n  closeOnDocClick: boolean;\n  bodyClass: string;\n  closeOnEsc: boolean;\n  windowResizeCallback: () => void;\n  docClickCallback: () => void;\n}\n\nexport interface ComponentType<T> {\n  new (...args: any[]): T;\n}\n\nexport type TID = string;\n\nexport type ToppyEventName = 't_open' | 't_close' | 't_dynpos' | 't_detach' | 't_posupdate' | 't_compins';\n\nexport interface ToppyEvent {\n  from: TID;\n  name: ToppyEventName;\n  data?: any;\n}\n\nexport const enum ContentType {\n  STRING = 's',\n  HTML = 'h',\n  TEMPLATE = 't',\n  COMPONENT = 'c'\n}\nexport type ContentData = string | TemplateRef<any> | ComponentType<any>;\nexport type ContentProps = { [x: string]: any } | any;\n\nexport interface Content {\n  type?: ContentType;\n  data: ContentData;\n  props?: ContentProps;\n}\n\nexport interface Inputs {\n  position: ToppyPosition | null;\n  config: ToppyConfig;\n  content: Content;\n  tid: TID;\n}\n","export abstract class ToppyPosition {\n  protected config = {};\n  abstract getPositions(host: HTMLElement): any;\n\n  getClassName(): string {\n    return this.constructor.name.replace('Pos', '-pos').toLowerCase();\n  }\n\n  updateConfig(config) {\n    this.config = { ...this.config, ...config };\n  }\n\n  init(tid: string) {}\n}\n","import { PositionMeta } from '../models';\nimport { ToppyPosition } from './position';\n\nexport class FullscreenPosition extends ToppyPosition {\n  getPositions(): PositionMeta {\n    return { top: 0, left: 0, width: '100%', height: '100%', position: 'fixed' };\n  }\n}\n","import { TemplateRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { Content, ContentData, ContentProps, ContentType, ToppyEvent, ToppyEventName } from './models';\n\nexport function getContent(data: ContentData, props: ContentProps = {}): Content {\n  let type: ContentType = ContentType.COMPONENT;\n\n  if (typeof data === 'string' && props['hasHTML']) type = ContentType.HTML;\n  else if (typeof data === 'string') type = ContentType.STRING;\n  else if (data instanceof TemplateRef) type = ContentType.TEMPLATE;\n\n  return { data, type, props };\n}\n\nexport function createId() {\n  return Math.random()\n    .toString(36)\n    .substring(2, 5);\n}\n\n/* html dom utils */\n\nexport function cssClass(method: 'add' | 'remove', cls: string[], target: string = 'body') {\n  document.querySelector(target).classList[method](...cls);\n}\n\nexport function toCss(styleObj) {\n  return Object.keys(styleObj)\n    .map(x => `${x}:${styleObj[x]}${typeof styleObj[x] === 'number' ? 'px' : ''}`)\n    .join(';');\n}\n\nexport function percentToCss(max, percentage: string): string {\n  let number = Number(percentage.slice(0, -1));\n  if (number > 100) {\n    number = 100;\n  }\n  return `calc(${max}px - ${100 - number}%)`;\n}\n\nexport function setWH(src, host, key, value) {\n  if (typeof value === 'number') {\n    host[key] = value = Math.abs(value);\n  }\n\n  if (typeof value === 'string' && value.endsWith('%')) {\n    value = percentToCss(src[key], value);\n  }\n\n  return value;\n}\n\nexport const BodyEl = document.querySelector('body');\n\n/* events */\n\nclass BusClass {\n  private _e: Subject<ToppyEvent> = new Subject();\n  send(from: string, name: ToppyEventName, data: any = null): void {\n    this._e.next({ from, name, data });\n  }\n  listen(from: string, name: ToppyEventName): Observable<any> {\n    return this._e.asObservable().pipe(\n      filter(e => e.from === from && e.name === name),\n      map(e => e.data)\n    );\n  }\n\n  stop(): void {\n    this._e.complete();\n  }\n}\nexport const Bus = new BusClass();\n","import { InsidePlacement } from '../models';\nimport { setWH } from '../utils';\nimport { ToppyPosition } from './position';\n\ninterface GlobalPositionConfig {\n  placement?: InsidePlacement;\n  offset?: number;\n  width?: string | number;\n  height?: string | number;\n}\n\nexport class GlobalPosition extends ToppyPosition {\n  protected config: GlobalPositionConfig = { placement: InsidePlacement.CENTER, width: 100, height: 100, offset: 0 };\n\n  constructor(config: GlobalPositionConfig) {\n    super();\n    this.updateConfig(config);\n  }\n  getPositions(hostEl?: HTMLElement) {\n    const host = hostEl!.getBoundingClientRect() as any;\n    const src = {\n      width: window['innerWidth'],\n      height: window['innerHeight']\n    };\n    let { width: w, height: h } = this.config;\n\n    w = setWH(src, host, 'width', w);\n    h = setWH(src, host, 'height', h);\n\n    const props = this.calc(this.config.placement!, src, host);\n    return {\n      ...props,\n      width: w,\n      height: h,\n      position: 'fixed',\n      extra: this.config.placement\n    };\n  }\n\n  private calc(placement: InsidePlacement, src, host) {\n    const [main, sub] = placement.split('');\n    const p: any = {};\n\n    if (main === 't') {\n      p.top = this.config.offset;\n    }\n    if (main === 'b') {\n      p.bottom = this.config.offset;\n    }\n    if ((main === 'l' || main === 'r' || main === 'c') && !sub) {\n      p.top = (src.height - host.height) / 2;\n    }\n\n    if ((main === 't' || main === 'b' || main === 'c') && !sub) {\n      p.left = (src.width - host.width) / 2;\n    }\n    if ((main === 'l' && !sub) || sub === 'l') {\n      p.left = this.config.offset;\n    }\n    if ((main === 'r' && !sub) || sub === 'r') {\n      p.right = this.config.offset;\n    }\n\n    return p;\n  }\n}\n","import { OutsidePlacement, PositionMeta } from '../models';\nimport { Bus, setWH } from '../utils';\nimport { ToppyPosition } from './position';\n\ninterface RelativePositionConfig {\n  src: HTMLElement;\n  placement?: OutsidePlacement;\n  autoUpdate?: boolean;\n  width?: string | number;\n  height?: string | number;\n}\n\nexport class RelativePosition extends ToppyPosition {\n  protected config: RelativePositionConfig = {\n    src: null,\n    placement: OutsidePlacement.TOP,\n    autoUpdate: false,\n    width: 'auto',\n    height: 'auto'\n  };\n  obs: MutationObserver;\n  constructor(config: RelativePositionConfig) {\n    super();\n    this.updateConfig(config);\n  }\n  init(tid: string): void {\n    if (this.config.autoUpdate) this.listenDrag(tid);\n  }\n\n  getPositions(targetEl: HTMLElement): Pick<PositionMeta, any> {\n    const s = this.getCoords(this.config.src);\n    const h = this.getCoords(targetEl);\n    let { width: w, height: ht } = this.config;\n\n    w = setWH(s, h, 'width', w);\n    ht = setWH(s, h, 'height', ht);\n\n    const { pos, props } = this.calculatePos(this.config.placement, s, h);\n    return { ...this.round(props), width: w, height: ht, extra: pos };\n  }\n\n  private getCoords(elem: HTMLElement): PositionMeta {\n    return elem.getBoundingClientRect();\n  }\n\n  private calc(placement: OutsidePlacement, src, host): object {\n    const [main, sub] = placement.split('');\n    const p = { left: 0, top: 0 };\n    if ((main === 't' || main === 'b') && !sub) {\n      p.left = src.left + (src.width - host.width) / 2;\n    }\n\n    if ((main === 't' || main === 'b') && sub) {\n      p.left = src.left;\n    }\n    if ((main === 't' || main === 'b') && sub === 'r') {\n      p.left = src.left + src.width - host.width;\n    }\n    if (main === 'l') {\n      p.left = src.left - host.width;\n    }\n    if (main === 'r') {\n      p.left = src.right;\n    }\n\n    if (main === 't') {\n      p.top = src.top - host.height;\n    }\n    if (main === 'b') {\n      p.top = src.top + src.height;\n    }\n    if (main === 'l' || main === 'r') {\n      p.top = src.top + (src.height - host.height) / 2;\n    }\n    if (sub === 't' && (main === 'l' || main === 'r')) {\n      p.top = src.top;\n    }\n    if (sub === 'b' && (main === 'l' || main === 'r')) {\n      p.top = src.top + src.height - host.height;\n    }\n    return p;\n  }\n\n  private calculatePos(pos, s, h, c = true): { [x: string]: any } {\n    const props = this.calc(pos, s, h);\n\n    if (c && this.config.autoUpdate && this.isOverflowed({ ...props, width: h.width, height: h.height })) {\n      return this.calculatePos(this.nextPosition(pos), s, h, false);\n    }\n\n    return { pos, props };\n  }\n\n  private isOverflowed(props: { [x: string]: any }): boolean {\n    const { innerHeight, innerWidth } = window;\n    props.bottom = props.top + props.height;\n    props.right = props.left + props.width;\n    return props.bottom > innerHeight || props.top <= 0 || props.left <= 0 || props.right > innerWidth;\n  }\n\n  private nextPosition(current: OutsidePlacement): string {\n    const placements = ['t', 'b', 'l', 'r', 'tl', 'bl', 'tr', 'br', 'lt', 'rt', 'lb', 'rb'];\n\n    const index = placements.indexOf(current);\n    const even = index % 2 === 0;\n    return even ? placements[index + 1] : placements[index - 1];\n  }\n\n  private round(props: object): object {\n    Object.keys(props).forEach(x => (props[x] = Math.round(props[x])));\n    return props;\n  }\n\n  private listenDrag(tid: string): void {\n    if (this.obs) this.obs.disconnect();\n    this.obs = new MutationObserver(mutationsList => {\n      for (const mutation of mutationsList) {\n        if (mutation.type === 'attributes') Bus.send(tid, 't_dynpos');\n      }\n    });\n\n    this.obs.observe(this.config.src, {\n      attributeFilter: ['style']\n    });\n  }\n}\n","import { PositionMeta, SlidePlacement } from '../models';\nimport { ToppyPosition } from './position';\n\ninterface SlidePlacementConfig {\n  placement?: SlidePlacement;\n  width?: string;\n}\n\nexport class SlidePosition extends ToppyPosition {\n  protected config: SlidePlacementConfig = { placement: SlidePlacement.LEFT, width: '30%' };\n\n  constructor(config: SlidePlacementConfig) {\n    super();\n    this.config = { ...this.config, ...config };\n  }\n  getPositions(): PositionMeta {\n    const props = this.config.placement === SlidePlacement.LEFT ? { left: 0 } : { right: 0 };\n    return {\n      ...props,\n      top: 0,\n      width: this.config.width,\n      height: '100%',\n      position: 'fixed',\n      extra: this.config.placement\n    };\n  }\n}\n","import { ToppyConfig } from './models';\n\nexport const DefaultConfig: ToppyConfig = {\n  containerClass: 't-overlay',\n  bodyClass: 't-open',\n  wrapperClass: '',\n  backdropClass: '',\n  backdrop: false,\n  closeOnDocClick: false,\n  listenWindowEvents: true,\n  closeOnEsc: false,\n  windowResizeCallback: () => {},\n  docClickCallback: () => {}\n};\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { startWith, takeUntil, tap } from 'rxjs/operators';\nimport { Content, ContentType, TID, ToppyConfig } from './models';\nimport { ToppyPosition } from './position/position';\nimport { Bus, cssClass, toCss } from './utils';\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'toppy',\n  templateUrl: './template.html',\n  styleUrls: ['./styles.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class ToppyComponent implements OnInit, AfterViewInit, OnDestroy {\n  @ViewChild('compOutlet', { read: ViewContainerRef }) compOutlet: ViewContainerRef;\n  content: Content = {\n    type: ContentType.STRING,\n    data: '',\n    props: {}\n  };\n  config: ToppyConfig;\n  position: ToppyPosition;\n  tid: TID;\n  el: HTMLElement | any;\n  wrapperEl: HTMLElement | any;\n  extra: string;\n  pinj: any;\n  compInstance;\n  private die: Subject<1> = new Subject();\n\n  constructor(\n    public inj: Injector,\n    private cd: ChangeDetectorRef,\n    private elRef: ElementRef\n  ) {\n    this.pinj = Injector;\n  }\n\n  ngOnInit() {\n    this.el = this.elRef.nativeElement;\n    this.wrapperEl = this.el.querySelector('.t-wrapper');\n    let cls = ['t-container', this.config.containerClass, this.position.getClassName()];\n    if (this.config.closeOnDocClick) {\n      cls = cls.concat(['no-pointers']);\n    }\n    this.el.setAttribute('data-tid', this.tid);\n    cssClass('add', cls, `[data-tid='${[this.tid]}']`);\n    cssClass('add', [this.config.bodyClass]);\n  }\n\n  ngAfterViewInit() {\n    this.listenPos().subscribe();\n    if (this.content.type === ContentType.COMPONENT) {\n      this.compInstance = this.setComponent(this.content.props);\n      Bus.send(this.tid, 't_compins', this.compInstance);\n    }\n  }\n\n  setComponent(props) {\n    const compRef = this.compOutlet.createComponent(\n      this.content.data as any\n    );\n    Object.assign(compRef.instance, props);\n    compRef.changeDetectorRef.detectChanges();\n    return compRef.instance;\n  }\n\n  updateTextContent(data: string): void {\n    if (this.content.type === ContentType.STRING) {\n      this.content.data = data;\n      this.cd.detectChanges();\n    }\n  }\n\n  ngOnDestroy(): void {\n    cssClass('remove', [this.config.bodyClass]);\n    this.die.next(1);\n    Bus.send(this.tid, 't_detach');\n  }\n\n  private listenPos(): Observable<any> {\n    return Bus.listen(this.tid, 't_dynpos').pipe(\n      startWith(1),\n      takeUntil(this.die),\n      tap(e => {\n        if (!e || !e.x) return this.setPos();\n        const coords = { left: e.x, top: e.y };\n        this.wrapperEl.style = toCss(coords);\n      })\n    );\n  }\n\n  private setPos(): void {\n    const { extra, ...coords } = this.position.getPositions(this.wrapperEl);\n    if (this.extra !== extra) {\n      this.extra = extra;\n      this.cd.detectChanges();\n    }\n    Object.assign(coords, { visibility: 'visible', opacity: '1' });\n    this.wrapperEl.style = toCss(coords);\n    Bus.send(this.tid, 't_posupdate');\n  }\n}\n","<div class=\"t-backdrop\" *ngIf=\"config.backdrop\" [ngClass]=\"config.backdropClass\"></div>\n<div class=\"t-wrapper\" [ngClass]=\"config.wrapperClass\" [class]=\"extra\" #wrapperEl>\n  <ng-container [ngSwitch]=\"content.type\">\n    <ng-container *ngSwitchCase=\"'s'\">\n      <div [class]=\"content.props.class\">{{ content.data }}</div>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'h'\"> <div [innerHTML]=\"content.data\"></div> </ng-container>\n    <ng-container *ngSwitchCase=\"'t'\">\n      <ng-container *ngTemplateOutlet=\"content.data; context: { $implicit: content.props }\"></ng-container>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'c'\"> <ng-template #compOutlet></ng-template> </ng-container>\n  </ng-container>\n</div>\n","import {\n  ApplicationRef,\n  ComponentRef,\n  createComponent,\n  Injector,\n  ViewContainerRef,\n  ViewRef\n} from '@angular/core';\nimport { Observable, Subject, animationFrameScheduler, fromEvent, merge as mergeObs } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, observeOn, skipWhile, takeUntil, tap } from 'rxjs/operators';\nimport { Content, ContentData, ContentProps, TID, ToppyConfig, ToppyEventName } from './models';\nimport { ToppyPosition } from './position/position';\nimport { ToppyComponent } from './toppy.component';\nimport { BodyEl, Bus, getContent } from './utils';\n\nexport class ToppyControl {\n  position: ToppyPosition;\n  config: ToppyConfig;\n  content: Content;\n  tid: TID;\n  updateTextContent: Subject<string> = new Subject();\n  hostView: ViewRef;\n  comp: ToppyComponent;\n  compRef: ComponentRef<ToppyComponent>;\n\n  private viewEl: HTMLElement;\n  private isOpen = false;\n  private die: Subject<1> = new Subject();\n\n  constructor(\n    private appRef: ApplicationRef, \n    private injector: Injector\n  ) {\n    this.updateTextContent.subscribe(content => {\n      if (this.isOpen) this.comp.updateTextContent(content);\n    });\n  }\n\n  open(): void {\n    if (this.isOpen) return;\n\n    this.attach();\n    if (this.viewEl) {\n      mergeObs(this.onDocumentClick(), this.onWindowResize(), this.onEscClick()).subscribe();\n      setTimeout(() => Bus.send(this.tid, 't_dynpos'), 1);\n    }\n\n    Bus.send(this.tid, 't_open');\n    this.isOpen = true;\n  }\n\n  close(): void {\n    if (!this.isOpen) return;\n\n    this.dettach();\n    this.die.next(1);\n    Bus.send(this.tid, 't_close');\n    this.isOpen = false;\n  }\n\n  toggle(): void {\n    return this.isOpen ? this.close() : this.open();\n  }\n\n  onEscClick(): Observable<any> {\n    return fromEvent(BodyEl!, 'keydown').pipe(\n      takeUntil(this.die),\n      skipWhile(() => !this.config.closeOnEsc),\n      filter((e: any) => (e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27) && e.target.nodeName === 'BODY'),\n      tap(e => e.preventDefault()),\n      map(e => e.target),\n      tap(() => this.close())\n    );\n  }\n\n  onDocumentClick(): Observable<any> {\n    return fromEvent(this.viewEl, 'click').pipe(\n      takeUntil(this.die),\n      map((e: any) => e.target),\n      skipWhile(() => !this.config.closeOnDocClick),\n      filter(this.isNotHostElement.bind(this)),\n      tap(() => {\n        this.config.docClickCallback();\n        this.close();\n      })\n    );\n  }\n\n  onWindowResize(): Observable<any> {\n    const onResize = fromEvent(window, 'resize');\n    const onScroll = fromEvent(window, 'scroll', { passive: true });\n    return mergeObs(onResize, onScroll).pipe(\n      skipWhile(() => !this.config.listenWindowEvents),\n      takeUntil(this.die),\n      debounceTime(5),\n      observeOn(animationFrameScheduler),\n      distinctUntilChanged(),\n      tap(() => {\n        Bus.send(this.tid, 't_dynpos');\n        this.config.windowResizeCallback();\n      })\n    );\n  }\n\n  changePosition(newPosition: ToppyPosition): void {\n    this.position = newPosition;\n  }\n\n  updatePosition(positionConfig: any): void {\n    this.position.updateConfig(positionConfig);\n  }\n\n  updateContent(content: ContentData, props: ContentProps = {}): void {\n    this.content = getContent(content, { ...this.content.props, ...props });\n  }\n\n  listen(eventName: ToppyEventName) {\n    return Bus.listen(this.tid, eventName);\n  }\n\n  private isNotHostElement(el): boolean {\n    const wrapperEl = this.viewEl.querySelector('.t-wrapper');\n    return el !== wrapperEl && !wrapperEl?.contains(el);\n  }\n\n  private attach(): void {\n    /* create component */\n    this.compRef = createComponent(ToppyComponent, {\n      environmentInjector: this.appRef.injector\n    });\n    this.comp = this.compRef.instance;\n\n    /* assign props */\n    const { position, content, config, tid } = this;\n    content.props.close = this.close.bind(this);\n    Object.assign(this.comp, { position, content, config, tid });\n\n    /* attach view */\n    this.hostView = this.compRef.hostView;\n    this.appRef.attachView(this.hostView);\n    this.viewEl = this.compRef.location.nativeElement;\n    BodyEl!.appendChild(this.viewEl);\n  }\n\n  private dettach(): void {\n    if (!this.hostView) return;\n\n    this.appRef.detachView(this.hostView);\n    this.compRef.destroy();\n    this.hostView = this.viewEl = this.comp = null;\n  }\n}\n","import { ApplicationRef, Injectable, Injector } from '@angular/core';\nimport { DefaultConfig } from './config';\nimport { ContentData, ContentProps, ContentType, Inputs, InsidePlacement, TID, ToppyConfig } from './models';\nimport { GlobalPosition } from './position';\nimport { ToppyPosition } from './position/position';\nimport { ToppyControl } from './toppy-control';\nimport { Bus, createId, getContent } from './utils';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class Toppy {\n  static controls: { [key: string]: ToppyControl } = {};\n  private tid: TID;\n  private inputs: Inputs = {\n    position: null,\n    config: DefaultConfig,\n    content: { type: ContentType.STRING, data: 'hello', props: {} },\n    tid: null\n  };\n\n  constructor(private injector: Injector) {\n    this.inputs.position = new GlobalPosition({ placement: InsidePlacement.TOP });\n  }\n\n  position(position: ToppyPosition): Toppy {\n    this.inputs.position = position;\n    return this;\n  }\n\n  config(config: Partial<ToppyConfig>): Toppy {\n    this.inputs.config = { ...DefaultConfig, ...config };\n    return this;\n  }\n\n  content(data: ContentData, props: ContentProps = {}): Toppy {\n    this.inputs.content = getContent(data, props);\n    return this;\n  }\n\n  create(key: string = null): ToppyControl {\n    this.tid = this.inputs.tid = key || createId();\n\n    const injector = Injector.create(\n      [\n        {\n          provide: ToppyControl,\n          deps: [ApplicationRef, Injector]\n        }\n      ],\n      this.injector\n    );\n\n    const tc = injector.get(ToppyControl);\n    if (Toppy.controls[this.tid]) {\n      this.tid = createId();\n    }\n    this.inputs.position.init(this.tid);\n    Toppy.controls[this.tid] = Object.assign(tc, this.inputs);\n    return tc;\n  }\n\n  getCtrl(tid: TID): ToppyControl {\n    return Toppy.controls[tid];\n  }\n\n  destroy() {\n    // tslint:disable-next-line:forin\n    for (const key in Toppy.controls) {\n      Toppy.controls[key].close();\n    }\n    Toppy.controls = {};\n    Bus.stop();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ToppyComponent } from './toppy.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [ToppyComponent]\n})\nexport class ToppyModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["mergeObs"],"mappings":"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"}