{"version":3,"file":"ems-web-app-page-viewer.mjs","sources":["../../src/lib/page-viewer.service.ts","../../src/lib/page-viewer.component.ts","../../src/lib/page-template.component.ts","../../src/lib/page-viewer.module.ts","../../src/public-api.ts","../../src/ems-web-app-page-viewer.ts"],"sourcesContent":["import { Injectable, TemplateRef } from '@angular/core';\nimport { Observable, Subject, BehaviorSubject, throwError, of } from 'rxjs';\nimport { getparams } from \"ems-web-app-utils\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PageViewerService {\n\n  public model: Record<string,string|null> = { currentPage: null, previousPage: null };\n  public storeWebHistory: boolean = true;\n\n  private pageSource:BehaviorSubject<string|null> = new BehaviorSubject<string|null>(null);\n  public page = this.pageSource.asObservable();\n\n  public manifest: Record<string, {title?: string, template: TemplateRef<any>}> = {};\n\n  private title: string = document.title;\n\n  constructor() { }\n\n  public registerPage(id: string, template: TemplateRef<any>, title?: string) {\n    this.manifest[id] = { template, title };\n  }\n\n  public setCurrentPage(page: string | null, data?: any, ignorePush: boolean = false) {\n    const info = this.manifest[page ?? \"\"];\n    \n    const pstring = page ? (page.toString().toUpperCase().substring(0,1) + page.toString().substring(1)) : null;\n    if(this.storeWebHistory && page && !ignorePush && !getparams().debug) {\n      window.history.pushState({ page }, `${info?.title ?? pstring}`, `/?page=${page}`);\n    }\n    this.model[\"previousPageData\"] = this.model[\"currentPageData\"] ?? this.model[\"previousPageData\"];\n    this.model[\"currentPageData\"] = data;\n    this.model[\"previousPage\"] = this.model[\"currentPage\"] ?? this.model[\"previousPage\"];\n    this.model[\"currentPage\"] = page;\n    document.title = info?.title ?? this.title;\n    this.pageSource.next(page);\n  }\n}\n","import { Component, AfterViewInit, Input, Output, EventEmitter, HostBinding, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { PageViewerService } from \"./page-viewer.service\";\nimport { trace, delay, getparams } from \"ems-web-app-utils\";\n\ndeclare const gtag:any;\n\n@Component({\n  selector: 'page-viewer',\n  template: `<ng-container *ngIf=\"currentTemplate\"><ng-container *ngTemplateOutlet=\"currentTemplate\"></ng-container></ng-container><ng-content></ng-content><div class=\"style-container\" [innerHtml]=\"styles\"></div>`,\n  styleUrls: [\"./page-viewer.component.less\"]\n})\nexport class PageViewerComponent implements AfterViewInit {\n  @HostBinding(\"class.transitioning\") transitioning: boolean = false;\n  @Output(\"change\") onChange: EventEmitter<string|null> = new EventEmitter();\n  @Input(\"history\") history: boolean = false;\n\n  public requestedPage: string | null = null;\n  public currentPage: string | null = null;\n  public currentTemplate!: TemplateRef<any>;\n  public styles!: SafeHtml;\n  public google?: any;\n\n  protected timeout: number = 0;\n  protected speed: number = 250;\n  \n  constructor(protected service: PageViewerService, protected sanitizer: DomSanitizer) {\n\n  }\n\n  ngOnInit() {\n    this.service.storeWebHistory = this.history;\n    this.google = (window as any)[\"gtag\"] ?? undefined;\n\n    this.service.page.subscribe((page: string | null) => {\n      clearTimeout(this.timeout);\n      this.requestedPage = page;\n      this.transitioning = true;\n      this.timeout = delay(() => this.changePage(page), this.speed);\n    });\n\n    window.addEventListener('popstate', (e: PopStateEvent) => {\n      const page = e.state?.page as string;\n      if(page === this.currentPage) return;\n      this.service.setCurrentPage(page, this.service.model[\"previousPageData\"], true);\n    });\n  }\n\n  ngAfterViewInit(): void {\n    delay(this.initializePageViewer);\n  }\n\n  protected initializePageViewer = () => {\n    if(getparams(\"page\")) {\n      clearTimeout(this.timeout);\n      this.service.setCurrentPage(getparams(\"page\"));\n    }\n  }\n\n  protected changePage(page: string | null) {\n    this.currentPage = null;\n    delay(() => {\n      this.currentPage = page; \n      this.currentTemplate = this.service.manifest[page ?? \"\"]?.template;\n      this.track();\n    });\n    delay(() => {\n      this.transitioning = false;\n      this.onChange.emit(this.currentPage);\n    }, 1);\n  }\n\n  protected track() {\n    if(!this.google || !this.currentPage) return;\n    this.google('event', 'page_view', { page_title: this.currentPage, page_location: `${window.location.origin}/pages/${this.currentPage}`})\n  }\n}\n","import { Component, Input, ViewChild, ContentChildren, ElementRef, TemplateRef, QueryList, AfterViewInit, ViewEncapsulation } from '@angular/core';\nimport { PageViewerService } from \"./page-viewer.service\";\n\n@Component({\n  selector: 'page-template',\n  template: `<ng-content></ng-content>`\n})\nexport class PageTemplateComponent implements AfterViewInit  {\n\t@Input(\"id\") id!: string;\n\t@Input(\"title\") title?: string;\n\t@ContentChildren(TemplateRef) template!: QueryList<any>;\n\tconstructor(private service: PageViewerService, private el: ElementRef) {}\n\n\tngAfterViewInit() {\n\t\tif(!this.id) throw new Error(\"All <page-template/> elements must have an id attribute.\");\n\t\tthis.service.registerPage(this.id, this.template.first, this.title);\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageViewerComponent } from './page-viewer.component';\nimport { PageTemplateComponent } from './page-template.component';\n\n\n\n@NgModule({\n  declarations: [\n    PageViewerComponent,\n    PageTemplateComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    PageViewerComponent,\n    PageTemplateComponent\n  ]\n})\nexport class PageViewerModule { }\n","/*\n * Public API Surface of page-viewer\n */\n\nexport * from './lib/page-viewer.service';\nexport * from './lib/page-viewer.component';\nexport * from './lib/page-template.component';\nexport * from './lib/page-viewer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PageViewerService"],"mappings":"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"}