{"version":3,"file":"firestitch-scroll.mjs","sources":["../../src/app/services/scroll.service.ts","../../src/app/fs-scroll.providers.ts","../../src/app/services/scroll-instance.ts","../../src/app/components/scroll-content-footer/scroll-content-footer.component.ts","../../src/app/components/scroll-content-footer/scroll-content-footer.component.html","../../src/app/components/scroll-content/scroll-content.component.ts","../../src/app/components/scroll-content/scroll-content.component.html","../../src/app/components/scroll/scroll.component.ts","../../src/app/components/scroll/scroll.component.html","../../src/app/services/document-scroll.service.ts","../../src/app/directives/scroll-anchor.directive.ts","../../src/app/fs-scroll.module.ts","../../src/public_api.ts","../../src/firestitch-scroll.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { DOCUMENT, Location } from '@angular/common';\n\nimport { of, Subject, Observable } from 'rxjs';\nimport { timeout } from 'rxjs/operators';\n\nimport { FsScrollInstance } from '../services/scroll-instance';\n\n\n@Injectable()\nexport class FsScrollService {\n\n  private _instances = (<any>window).FsScrollServiceInstances;\n  private _pendingInstances = (<any>window).FsScrollServicePendingInstances;\n\n  constructor(\n    @Inject(DOCUMENT)\n    private _document: Document,\n    private _route: ActivatedRoute,\n    private _router: Router,\n    private _location: Location,\n  ) {\n    if (!(<any>window).FsScrollServiceInstances) {\n      (<any>window).FsScrollServiceInstances = new Map<string, FsScrollInstance>();\n      this._instances = (<any>window).FsScrollServiceInstances;\n    }\n\n    if (!(<any>window).FsScrollServicePendingInstances) {\n      (<any>window).FsScrollServicePendingInstances = new Map<string, FsScrollInstance>();\n      this._pendingInstances = (<any>window).FsScrollServicePendingInstances;\n    }\n  }\n\n  public pushInstance(instance) {\n\n    if (!instance.name) {\n      throw Error('FsScroll must have a name');\n    }\n\n    this._instances.set(instance.name, instance);\n\n    if (this._pendingInstances.has(instance.name)) {\n      const subject = this._pendingInstances.get(instance.name);\n\n      subject.next(instance);\n      subject.complete();\n    }\n  }\n\n  public component(name): Observable<any> {\n    if (this._instances.has(name)) {\n      return of(this._instances.get(name))\n    } else {\n      const subject = new Subject();\n      this._pendingInstances.set(name, subject);\n\n      return subject.pipe(\n        timeout(1000),\n      )\n    }\n  }\n\n  public remove(name) {\n    const instance = this._instances.get(name);\n    if (instance) {\n      instance.destroy();\n    }\n\n    this._instances.delete(name);\n  }\n\n  public scrollToAnchor(name: string, args?: ScrollIntoViewOptions): void {\n    const elem = this._document.querySelector(`[fsScrollAnchor=\"${name}\"]`);\n\n    if (!!elem) {\n      const scrollArgs = {\n        ...{\n          block: 'center',\n          behavior: 'smooth',\n        },\n        ...args,\n      }\n      elem.scrollIntoView(scrollArgs as ScrollIntoViewOptions);\n    }\n  }\n\n\n  public scrollToQueryParamAnchor(args?: ScrollIntoViewOptions): void {\n    const anchor = this._route.snapshot.queryParams.anchor;\n\n    this.scrollToAnchor(anchor, args);\n  }\n\n  public setAnchor(name: string): void {\n    const url = this._router\n      .createUrlTree([], {\n        relativeTo: this._route,\n        queryParams: { anchor: name },\n        queryParamsHandling: 'merge',\n      })\n      .toString();\n\n    this._location.replaceState(url);\n  }\n\n  public clearAnchor(): void {\n    this.setAnchor(null);\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IScrollConfig } from './interfaces/scroll-config';\n\n\nexport const FS_SCROLL_CONFIG = new InjectionToken<IScrollConfig>('fs-scroll-config');\n","import { ElementRef, Inject, Injectable, NgZone } from '@angular/core';\n\nimport { Subject, BehaviorSubject, Observable, Subscription, fromEvent } from 'rxjs';\nimport { filter, map, throttleTime } from 'rxjs/operators';\n\nimport { FsScrollService } from '../services/scroll.service';\nimport { IScrollConfig } from '../interfaces/scroll-config';\nimport { FsScrollComponent } from '../components/scroll/scroll.component';\nimport { FS_SCROLL_CONFIG } from '../fs-scroll.providers';\n\n\n@Injectable()\nexport class FsScrollInstance {\n\n  public name: string;\n  public enabled = true;\n\n  private _loading = new BehaviorSubject<boolean>(false);\n  private _completed = new BehaviorSubject<boolean>(false);\n  private _loaded = new Subject();\n  private _load = new Subject();\n  private _el: ElementRef;\n  private _component: FsScrollComponent;\n  private _contentElement: ElementRef;\n  private _scroll: Observable<any>;\n  private reloadSubscription = null;\n  private contentHeight = null;\n  private scrollTop = 0;\n\n  constructor(\n    @Inject(FS_SCROLL_CONFIG) public config: IScrollConfig,\n    private _fsScroll: FsScrollService,\n    private _zone: NgZone,\n  ) {\n    this.config = Object.assign({}, config);\n\n    this.config.spinnerDiameter = this.config.spinnerDiameter || 40;\n    this.config.scrollThreshold = this.config.scrollThreshold || 1000;\n  }\n\n  public init(component: FsScrollComponent) {\n    this._component = component;\n    this._el = this._component._el;\n\n    if (this.name) {\n      this._fsScroll.pushInstance(this);\n    }\n\n    this._zone.runOutsideAngular(() => {\n      this.subscribeToScroll();\n      this.subscribeDown();\n    });\n  }\n\n  get isLoading() {\n    return this._loading.getValue();\n  }\n\n  get isLoading$() {\n    return this._loading.asObservable();\n  }\n\n  get completed$() {\n    return this._completed.asObservable();\n  }\n\n  get completed() {\n    return this._completed.getValue();\n  }\n\n  public complete() {\n    this._completed.next(true);\n  }\n\n  get loadingObservable(): Observable<boolean> {\n    return this._loading.asObservable();\n  }\n\n  get loadedObservable(): Observable<any> {\n    return this._loaded.asObservable();\n  }\n\n  public loading(value?) {\n    this._loading.next(value === undefined || value);\n  }\n\n  public loaded() {\n    this.loading(false);\n    this._loaded.next(true);\n  }\n\n  public destroy() {\n    this._loading.complete();\n    this._loaded.complete();\n    this._load.complete();\n    this._completed.complete();\n  }\n\n  public subscribe(fn: (value?: any) => void): Subscription {\n\n    setTimeout(() => {\n\n      if (this._component.scrollContentComponent) {\n        this._contentElement = this._component.scrollContentComponent.el;\n        this.reload();\n\n      } else {\n        console.warn('Missing the fsScrollContent component');\n      }\n    });\n\n    return this._load.asObservable().subscribe(fn);\n  }\n\n  public reload() {\n\n    this.contentHeight = null;\n    this.scrollTop = 0;\n    if (this.reloadSubscription) {\n      this.reloadSubscription.unsubscribe();\n    }\n\n    this.reloadSubscription = this.loadedObservable.subscribe(() => {\n      this._reload();\n    });\n\n    this._reload();\n  }\n\n  private _reload() {\n\n    if (!this._contentElement) {\n      return;\n    }\n\n    // Delay to allow for rendering\n    setTimeout(() => {\n\n      const contentHeight = this._contentElement.nativeElement.offsetHeight;\n      if (!this.completed &&\n          contentHeight <= this._el.nativeElement.offsetHeight &&\n          this.contentHeight !==  contentHeight) {\n\n        this._load.next(this);\n      } else if (this.reloadSubscription) {\n        this.reloadSubscription.unsubscribe();\n      }\n\n      this.contentHeight = contentHeight;\n    });\n  }\n\n  private subscribeToScroll() {\n    this._scroll = fromEvent(this._el.nativeElement, 'scroll')\n      .pipe(\n        throttleTime(20),\n        map((e: any) => ({\n          scrollHeight: e.target.scrollHeight,\n          scrollTop: e.target.scrollTop,\n          clientHeight: e.target.clientHeight\n        }))\n      );\n  }\n\n  private subscribeDown() {\n    this._scroll\n      .pipe(\n        throttleTime(20),\n        filter(() => !this.isLoading && !this.completed && this.enabled),\n        filter(e => {\n          return this.isUserScrollingDown(e) && this.isScrollThresholdExceeded(e)\n        })\n      )\n      .subscribe(() => {\n        this._load.next(this);\n      });\n  }\n\n  private isUserScrollingDown(e) {\n    const down = e.scrollTop > this.scrollTop;\n    this.scrollTop = e.scrollTop;\n    return down;\n  }\n\n  private isScrollThresholdExceeded(e) {\n    return e.scrollHeight < (e.scrollTop + e.clientHeight + this.config.scrollThreshold);\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n\n@Component({\n  selector: 'fs-scroll-content-footer',\n  templateUrl: 'scroll-content-footer.component.html',\n  styleUrls: [ 'scroll-content-footer.component.scss' ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsScrollContentFooterComponent {\n  @Input()\n  public loading = false;\n\n  @Input()\n  public completed = false;\n\n  @Input()\n  public completeMessage: string;\n\n  @Input()\n  public completeIcon: string;\n\n  @Input()\n  public spinnerDiameter: number;\n}\n","<ng-content></ng-content>\n<mat-spinner *ngIf=\"loading\" [diameter]=\"spinnerDiameter\" class=\"fs-scroll-spinner\"></mat-spinner>\n\n<div class=\"scroll-complete\"\n     *ngIf=\"!loading\n     && completed\n     && (completeMessage || completeIcon)\n\">\n  <span *ngIf=\"completeMessage\" class=\"scroll-complete-message\">{{ completeMessage }}</span>\n  <span *ngIf=\"completeIcon\" class=\"scroll-complete-icon\"><mat-icon>{{ completeIcon }}</mat-icon></span>\n</div>\n\n<ng-template></ng-template>\n","import { ChangeDetectionStrategy, Component, ElementRef, HostBinding } from '@angular/core';\nimport { FsScrollInstance } from '../../services/scroll-instance';\n\n@Component({\n  selector: '[fsScrollContent]',\n  templateUrl: 'scroll-content.component.html',\n  styleUrls: [ 'scroll-content.component.scss' ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsScrollContentComponent {\n\n  @HostBinding('class.fs-scroll-content') public selfClass = true;\n\n  constructor(\n    public el: ElementRef,\n    public instance: FsScrollInstance,\n  ) {}\n}\n","<ng-content></ng-content>\n\n<fs-scroll-content-footer\n  [loading]=\"instance?.isLoading$ | async\"\n  [completed]=\"instance?.completed$ | async\"\n  [completeMessage]=\"instance?.config.completeMessage\"\n  [completeIcon]=\"instance?.config.completeIcon\"\n  [spinnerDiameter]=\"instance?.config.spinnerDiameter\"\n>\n</fs-scroll-content-footer>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { FsScrollService } from '../../services/scroll.service';\nimport { FsScrollInstance } from '../../services/scroll-instance';\nimport { FS_SCROLL_CONFIG } from '../../fs-scroll.providers';\nimport { IScrollConfig } from '../../interfaces/scroll-config';\nimport { FsScrollContentComponent } from '../scroll-content/scroll-content.component';\n\n\n@Component({\n  selector: '[fsScroll]',\n  templateUrl: 'scroll.component.html',\n  styleUrls: [ 'scroll.component.scss' ],\n  providers: [ FsScrollInstance ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FsScrollComponent implements OnInit, OnDestroy {\n\n  private _load = new EventEmitter;\n\n  @ContentChild(FsScrollContentComponent) scrollContentComponent: FsScrollContentComponent;\n\n  @Input('name')\n  set name(value) {\n    this.instance.name = value;\n  }\n\n  @Input()\n  set scrollThreshold(value) {\n    this.instance.config.scrollThreshold = value;\n  }\n\n  @Input()\n  set completed(value) {\n    this.instance.complete();\n  }\n\n  @Input()\n  set enabled(value) {\n    this.instance.enabled = value;\n  }\n\n  @Input()\n  set loading(value) {\n    this.instance.loading(value);\n  }\n\n  @Input()\n  set completeMessage(value) {\n    this.instance.config.completeMessage = value;\n  }\n\n  @Input()\n  set completeIcon(value) {\n    this.instance.config.completeIcon = value;\n  }\n\n  @Output()\n  get load(): EventEmitter<any> {\n    return this._load;\n  }\n\n  @Output()\n  get loadingChange(): Observable<boolean> {\n    return this.instance.loadingObservable;\n  }\n\n  @HostBinding('class.fs-scroll') public selfClass = true;\n\n  constructor(private fsScrollService: FsScrollService,\n              public instance: FsScrollInstance,\n              public _el: ElementRef,\n              @Inject(FS_SCROLL_CONFIG) private config: IScrollConfig) {\n  }\n\n  public ngOnInit() {\n\n    this.instance.init(this);\n\n    if (this._load.observers.length) {\n      this.instance.subscribe(() => {\n        this._load.emit(this.instance);\n      });\n    }\n  }\n\n  public ngOnDestroy() {\n    this.instance.destroy();\n  }\n}\n","<ng-content></ng-content>\n","import { Injectable } from '@angular/core';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { BlockScrollStrategy } from '@angular/cdk/overlay';\n\n\n@Injectable()\nexport class FsDocumentScrollService {\n\n  private _blockScrollStrategy: BlockScrollStrategy;\n\n  constructor(private viewportRuler: ViewportRuler) {}\n\n  public disable() {\n    this.getBlockScrollStrategy().enable();\n  }\n\n  public enable() {\n    this.getBlockScrollStrategy().disable();\n  }\n\n  private getBlockScrollStrategy() {\n    if (!this._blockScrollStrategy) {\n      this._blockScrollStrategy = new BlockScrollStrategy(this.viewportRuler, window.document);\n    }\n\n    return this._blockScrollStrategy;\n  }\n}\n","import { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { FsScrollService } from '../services/scroll.service';\n\n\n@Directive({\n  selector: '[fsScrollAnchor]'\n})\nexport class FsScrollAnchorDirective {\n\n  @Input('fsScrollAnchor')\n  @HostBinding('attr.fsScrollAnchor')\n  public anchor: string;\n\n  @Input()\n  public target: string;\n\n  constructor(private _scrollService: FsScrollService) {\n  }\n\n  @HostListener(\n    'click',\n    ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey'],\n  )\n  public onClick(button: number, ctrlKey: boolean, shiftKey: boolean, altKey: boolean, metaKey: boolean): boolean {\n    if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\n      return true;\n    }\n\n    if (typeof this.target === 'string' && this.target != '_self') {\n      return true;\n    }\n\n    this._scrollService.setAnchor(this.anchor);\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FsScrollComponent } from './components/scroll/scroll.component';\nimport { FsScrollContentComponent } from './components/scroll-content/scroll-content.component';\nimport { FsScrollContentFooterComponent } from './components/scroll-content-footer/scroll-content-footer.component';\n\nimport { FsScrollService } from './services/scroll.service';\nimport { IScrollConfig } from './interfaces/scroll-config';\nimport { FS_SCROLL_CONFIG } from './fs-scroll.providers';\nimport { FsDocumentScrollService } from './services/document-scroll.service';\nimport { FsScrollAnchorDirective } from './directives/scroll-anchor.directive';\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatProgressSpinnerModule,\n    MatIconModule,\n  ],\n  exports: [\n    FsScrollComponent,\n    FsScrollContentComponent,\n    FsScrollAnchorDirective,\n  ],\n  declarations: [\n    FsScrollComponent,\n    FsScrollContentComponent,\n    FsScrollContentFooterComponent,\n    FsScrollAnchorDirective,\n  ],\n  providers: [\n    FsDocumentScrollService\n  ]\n})\nexport class FsScrollModule {\n  static forRoot(config?: IScrollConfig): ModuleWithProviders<FsScrollModule> {\n    return {\n      ngModule: FsScrollModule,\n      providers: [\n        FsScrollService,\n        FsDocumentScrollService,\n        {\n          provide: FS_SCROLL_CONFIG,\n          useValue: config || {}\n        }\n      ]\n    };\n  }\n}\n","/*\n * Public API Surface\n */\n\n// Modules\nexport { FsScrollModule } from './app/fs-scroll.module';\n\n// Providers\nexport { FS_SCROLL_CONFIG } from './app/fs-scroll.providers';\n\n// Components\nexport { FsScrollComponent } from './app/components/scroll/scroll.component';\nexport { FsScrollContentComponent } from './app/components/scroll-content/scroll-content.component';\nexport { FsScrollAnchorDirective } from './app/directives/scroll-anchor.directive';\n\n// Interfaces\nexport { IScrollConfig } from './app/interfaces/scroll-config';\n\n// Services\nexport { FsScrollService } from './app/services/scroll.service';\nexport { FsDocumentScrollService } from './app/services/document-scroll.service';\n\n// Classes\nexport { FsScrollInstance } from './app/services/scroll-instance';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.FsScrollService","i1","i2","i1.FsScrollInstance","i2.FsScrollContentFooterComponent","i3"],"mappings":"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"}