{"version":3,"file":"uiowa-universal-workflow.mjs","sources":["../../../../projects/uiowa/universal-workflow/src/lib/loading-placeholder.ts","../../../../projects/uiowa/universal-workflow/src/lib/workflow.service.ts","../../../../projects/uiowa/universal-workflow/src/lib/uw-routing-history.ts","../../../../projects/uiowa/universal-workflow/src/lib/workflow-widget.ts","../../../../projects/uiowa/universal-workflow/src/public-api.ts","../../../../projects/uiowa/universal-workflow/src/uiowa-universal-workflow.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'loading-placeholder',\r\n  imports: [],\r\n  template: `<div class=\"placeholder\"></div>`,\r\n  styles: [\r\n    `\r\n      .placeholder {\r\n        position: relative;\r\n        overflow: hidden;\r\n        height: 100%;\r\n      }\r\n      .placeholder::before {\r\n        content: '';\r\n        display: block;\r\n        position: absolute;\r\n        left: -200px;\r\n        top: 0;\r\n        height: 100%;\r\n        width: 200px;\r\n        background: linear-gradient(to right, transparent 0%, #e8e8e8 30%, transparent 100%);\r\n        animation: load 1s cubic-bezier(0.4, 0, 0.2, 1) infinite;\r\n      }\r\n      @keyframes load {\r\n        from {\r\n          left: -200px;\r\n        }\r\n        to {\r\n          left: 100%;\r\n        }\r\n      }\r\n    `,\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LoadingPlaceholder {}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable, ReplaySubject, shareReplay } from 'rxjs';\r\n\r\nexport interface WidgetConfig {\r\n  clientId: string;\r\n  workflowEnvironment: string;\r\n  formId: number;\r\n}\r\n\r\nexport interface WorkflowAllowedActions {\r\n  signatureId?: number;\r\n  canAddApprover: boolean;\r\n  canSign: boolean;\r\n  canVoidAfter: boolean;\r\n  canView: boolean;\r\n  packageId: number;\r\n  canInitiatorVoid: boolean;\r\n  canEdit: boolean;\r\n  canVoid: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class WorkflowService {\r\n  protected readonly api: string = 'api/workflow';\r\n  private _loadedLibraries: { [url: string]: ReplaySubject<boolean> } = {};\r\n  private _widgetConfig$?: Observable<WidgetConfig>;\r\n\r\n  protected httpClient = inject(HttpClient);\r\n  private document = inject(DOCUMENT);\r\n\r\n  getWorkflowWidgetConfig(): Observable<WidgetConfig> {\r\n    if (!this._widgetConfig$) {\r\n      this._widgetConfig$ = this.httpClient\r\n        .get<WidgetConfig>(`${this.api}/widget-config`)\r\n        .pipe(shareReplay(1));\r\n    }\r\n    return this._widgetConfig$;\r\n  }\r\n\r\n  getPackageRoutingHistory(packageId: number): Observable<string> {\r\n    return this.httpClient.get<string>(`${this.api}/packages/${packageId}/routing-history`);\r\n  }\r\n\r\n  lazyLoadWorkflowWidget(): Observable<any> {\r\n    return this.loadScript(\r\n      'https://workflow.uiowa.edu/workflow-widget/widgetLoader.js?v=' + new Date().getTime()\r\n    );\r\n  }\r\n\r\n  lazyLoadHistoryWidget(): Observable<any> {\r\n    return this.loadScript(\r\n      'https://workflow.uiowa.edu/assets/dist/embeds/history/routing-history.js?cache=' +\r\n        new Date().toISOString().slice(0, 13).replace(/\\D/g, '')\r\n    ); // this script will be cached for an hour\r\n  }\r\n\r\n  private loadScript(url: string): Observable<any> {\r\n    if (this._loadedLibraries[url]) {\r\n      return this._loadedLibraries[url].asObservable();\r\n    }\r\n\r\n    this._loadedLibraries[url] = new ReplaySubject();\r\n\r\n    const script = this.document.createElement('script');\r\n    script.type = 'text/javascript';\r\n    script.async = true;\r\n    script.src = url;\r\n    script.onload = () => {\r\n      this._loadedLibraries[url].next(true);\r\n      this._loadedLibraries[url].complete();\r\n    };\r\n    script.onerror = () => {\r\n      this._loadedLibraries[url].next(false);\r\n      this._loadedLibraries[url].complete();\r\n    };\r\n    this.document.body.appendChild(script);\r\n\r\n    return this._loadedLibraries[url].asObservable();\r\n  }\r\n}\r\n","import { JsonPipe } from '@angular/common';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  CUSTOM_ELEMENTS_SCHEMA,\r\n  input,\r\n  OnInit,\r\n  signal,\r\n} from '@angular/core';\r\nimport { finalize } from 'rxjs';\r\nimport { LoadingPlaceholder } from './loading-placeholder';\r\nimport { WorkflowService } from './workflow.service';\r\n\r\n@Component({\r\n  selector: 'uw-routing-history',\r\n  imports: [JsonPipe, LoadingPlaceholder],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n  template: `\r\n    <div class=\"panel\">\r\n      <div class=\"panel-heading\">\r\n        <div>Workflow Routing History</div>\r\n        <div>Package ID #{{ packageId() }}</div>\r\n      </div>\r\n      <div class=\"panel-body\">\r\n        @if(loading()){\r\n        <div style=\"height: 20rem\"><loading-placeholder /></div>\r\n        } @else {\r\n        <routing-history [attr.history]=\"history() | json\"></routing-history>\r\n        }\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n      .panel {\r\n        background-color: #fff;\r\n        border: 1px solid #ddd;\r\n        border-radius: 4px;\r\n      }\r\n      .panel-heading {\r\n        background: #fff4ad;\r\n        padding: 0.75rem 1rem;\r\n        border-bottom: 1px solid #ddd;\r\n        display: flex;\r\n        justify-content: space-between;\r\n        font-family: 'Segoe UI', 'Roboto', Arial, Helvetica, sans-serif;\r\n        font-weight: 600;\r\n      }\r\n      .panel-body {\r\n        padding: 1rem;\r\n      }\r\n    `,\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UwRoutingHistory implements OnInit {\r\n  packageId = input<number>(0);\r\n  loading = signal(true);\r\n  history = signal('');\r\n\r\n  constructor(private readonly svc: WorkflowService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.svc.lazyLoadHistoryWidget().subscribe((_) => {\r\n      this.svc\r\n        .getPackageRoutingHistory(this.packageId() || 0)\r\n        .pipe(finalize(() => this.loading.set(false)))\r\n        .subscribe((x) => this.history.set(x));\r\n    });\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, input, OnInit, signal } from '@angular/core';\r\nimport { finalize } from 'rxjs';\r\nimport { LoadingPlaceholder } from './loading-placeholder';\r\nimport { WorkflowService } from './workflow.service';\r\n\r\ndeclare global {\r\n  interface Window {\r\n    /**\r\n     * Global WorkflowWidget object\r\n     * https://docs.ais.its.uiowa.edu/workflow/widget.html\r\n     */\r\n    WorkflowWidget: {\r\n      package_id: number;\r\n      client_id: string;\r\n    };\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: 'workflow-widget',\r\n  imports: [LoadingPlaceholder],\r\n  template: `\r\n    @if(loading()){\r\n    <div style=\"height: 20rem\"><loading-placeholder /></div>\r\n    }\r\n    <div id=\"widgetContainer\"></div>\r\n  `,\r\n  styles: ``,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class WorkflowWidget implements OnInit {\r\n  packageId = input<number>(0);\r\n  loading = signal(true);\r\n\r\n  constructor(private readonly svc: WorkflowService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.svc.getWorkflowWidgetConfig().subscribe((c) => {\r\n      window.WorkflowWidget = {\r\n        package_id: this.packageId(),\r\n        client_id: c.clientId,\r\n      };\r\n      this.svc\r\n        .lazyLoadWorkflowWidget()\r\n        .pipe(finalize(() => this.loading.set(false)))\r\n        .subscribe();\r\n    });\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of universal-workflow\r\n */\r\n\r\nexport * from './lib/uw-routing-history';\r\nexport * from './lib/workflow-widget';\r\nexport * from './lib/workflow.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.WorkflowService"],"mappings":"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"}