{"version":3,"file":"ngx-enaio.mjs","sources":["../../../projects/ngx-enaio/src/lib/dto/dashlet-event.dto.ts","../../../projects/ngx-enaio/src/lib/enum/enaio-object-type.enum.ts","../../../projects/ngx-enaio/src/lib/enaio-utils.ts","../../../projects/ngx-enaio/src/lib/services/enaio-rich-client.service.ts","../../../projects/ngx-enaio/src/lib/services/enaio-web-client.service.ts","../../../projects/ngx-enaio/src/lib/services/enaio-dashlet.service.ts","../../../projects/ngx-enaio/src/lib/services/abstract-holder.service.ts","../../../projects/ngx-enaio/src/lib/services/enaio-osrest.service.ts","../../../projects/ngx-enaio/src/lib/services/enaio-session.service.ts","../../../projects/ngx-enaio/src/lib/services/enaio-client-settings.service.ts","../../../projects/ngx-enaio/src/lib/services/enaio-language.service.ts","../../../projects/ngx-enaio/src/lib/services/enaio-theme.service.ts","../../../projects/ngx-enaio/src/lib/ngx-enaio.module.ts","../../../projects/ngx-enaio/src/public-api.ts","../../../projects/ngx-enaio/src/ngx-enaio.ts"],"sourcesContent":["import { EnaioObjectType } from \"../enum/enaio-object-type.enum\";\n\nexport interface DashletEvent {\n  type: DashletEventType;\n  data: {\n    activeCustomDashlet: DashletEventCustomDashlet;\n    lastSelectedEntry: DashletEventLastSelectedEntry;\n    osDashletInit: DashletEventOsDashletInit;\n    selectedEntries: DashletEventLastSelectedEntry[];\n    sessionInfo: DashletEventSessionInfo;\n    userInfo: DashletEventUserInfo;\n    context?: DashletEventContext;\n    dapi?: { [key: string]: string };\n  }\n}\n\nexport enum DashletEventType {\n  onInit = \"onInit\",\n  onUpdate = \"onUpdate\",\n}\n\nexport enum DashletEventClientType {\n  web = \"web\",\n  desktop_app = \"desktop_app\",\n  mobile = \"mobile\",\n  mobile_app = \"mobile_app\",\n  windows = \"windows\"\n}\n\nexport enum DashletEventContext {\n  hitlistResult = 'hitlist.result',\n  hitlistFulltextResult = 'hitlist.fulltextResult',\n  hitlistFavorites = 'hitlist.favorites',\n  hitlistHistory = 'hitlist.history',\n  hitlistInboxRevisit = 'hitlist.inbox.revisit',\n  hitlistInboxAbo = 'hitlist.inbox.abo',\n  hitlistInboxSubscriptionObjects = 'hitlist.inbox.subscriptionObjects',\n  hitlistInboxWorkflow = 'hitlist.inbox.workflow',\n  workflow = 'workflow',\n  indexdata = 'indexdata',\n  folder = 'folder',\n}\n\nexport interface DashletEventCustomDashlet {\n  id: string;\n  objectTypes: string | string[];\n  platforms: string;\n  url: string;\n  title_DE: string;\n  title_EN: string;\n  title_FR: string;\n  iconId?: string;\n  users?: string[];\n  groups?: string[];\n}\n\nexport interface DashletEventLastSelectedEntry {\n  hasVariants?: boolean;\n  mainType: string;\n  objectType: EnaioObjectType;\n  objectTypeId: string;\n  osid: string;\n}\n\nexport interface DashletEventOsDashletInit {\n  objectident: string;\n  objecttype: string;\n  userid: string;\n  userguid: string;\n  sessionguid: string;\n  regenerate: string;\n  pagecount: string;\n  searchterm: string;\n}\n\nexport interface DashletEventSessionInfo {\n  language: string;\n  languageObjectDefinition: string;\n  sessionGuid: string;\n  clientType: DashletEventClientType;\n  baseUrl: string;\n}\n\nexport interface DashletEventUserInfo {\n  email: string;\n  fullname: string;\n  groups: string[];\n  name: string;\n  osGuid: string;\n  userId: string;\n  wfGuid?: string;\n  wfOrgId?: string;\n}\n\nexport interface DashletWebclientResponse {\n  msgId: string;\n  data: {\n    error: any;\n    result: any;\n  }\n}\n","export enum EnaioObjectType {\n    DOCUMENT = 'DOCUMENT',\n    TYPELESS = 'TYPELESS',\n    REGISTER = 'REGISTER',\n    FOLDER = 'FOLDER'\n}","import { EnaioObjectType } from \"./enum/enaio-object-type.enum\";\n\nexport function getMainTypeForId(id: number|string) {\n    id = Number(id);\n    return Math.floor(Number(id) / Math.pow(2, 16));\n}\n\nexport function getObjectType(id: number|string) {\n    const mainType = getMainTypeForId(id)\n\n    let objectType = EnaioObjectType.DOCUMENT;\n    if (mainType == 0) {\n      objectType = EnaioObjectType.FOLDER;\n    } else if (mainType == 99) {\n      objectType = EnaioObjectType.REGISTER;\n    } else if (mainType == 200) {\n      objectType = EnaioObjectType.TYPELESS;\n    }\n    return objectType;\n}\n\nexport function getBaseUrl(): string {\n  return document.getElementsByTagName('base')[0].href;\n}\n","import { DashletEventLastSelectedEntry } from \"../dto/dashlet-event.dto\";\nimport { getMainTypeForId, getObjectType } from \"../enaio-utils\";\n\nexport class EnaioRichClient {\n  public version: string;\n  public majorVersion: number;\n  public minorVersion: number;\n  public patchVersion: number;\n\n  constructor(public native: EnaioRichClientInterface) {\n    this.version = this.getEnvironment(10);\n    const match = /(?<major>[0-9]+)\\.(?<minor>[0-9]+)\\.(?<patch>[0-9])/.exec(this.version);\n    if (match?.groups) {\n      this.majorVersion = Number(match.groups[\"major\"]);\n      this.minorVersion = Number(match.groups[\"minor\"]);\n      this.patchVersion = Number(match.groups[\"patch\"]);\n      console.log(this.majorVersion, this.minorVersion, this.patchVersion);\n    } else {\n      console.error(\"Parse enaio client version information '\" + this.version + \"' failed. Set to version 0.0.0\");\n      this.majorVersion = Number(0);\n      this.minorVersion = Number(0);\n      this.patchVersion = Number(0);\n    }\n  }\n\n  private languageMapping: { [key: string]: string } = {\n    \"7\": \"de\",\n    \"9\": \"en\",\n    \"10\": \"es\",\n    \"12\": \"fr\",\n    \"14\": \"hu\",\n    \"16\": \"it\",\n    \"19\": \"nl\",\n    \"20\": \"no\",\n    \"21\": \"pl\",\n    \"29\": \"se\",\n    \"160\": \"ar\",\n    \"161\": \"bg\",\n    \"162\": \"zh\",\n    \"163\": \"zh\",\n    \"164\": \"hr\",\n    \"165\": \"cz\",\n    \"166\": \"dk\",\n    \"167\": \"et\",\n    \"168\": \"fi\",\n    \"169\": \"el\",\n    \"170\": \"he\",\n    \"171\": \"ja\",\n    \"172\": \"ko\",\n    \"173\": \"lv\",\n    \"174\": \"lt\",\n    \"175\": \"pt\",\n    \"176\": \"pt\",\n    \"177\": \"ro\",\n    \"178\": \"ru\",\n    \"179\": \"sr\",\n    \"180\": \"sk\",\n    \"181\": \"sk\",\n    \"182\": \"th\",\n    \"183\": \"tr\",\n    \"184\": \"uk\",\n  };\n\n  getEnvironment(nEnvType: number) {\n    try {\n      return this.native.osjxGetEnvironment(nEnvType);\n    } catch (e) {\n      return this.native.osjxGetBrowserEnvironment(nEnvType);\n    }\n  }\n\n  getSelectedObjects(): DashletEventLastSelectedEntry[] {\n    let selectedObjects: string | null = null;\n    try {\n      selectedObjects = this.native.osjxGetSelectedObjects();\n    } catch (e) {\n      console.error(\"osjxGetSelectedObjects failed with error \", e);\n      return [];\n    }\n\n    if (selectedObjects === null) {\n      return [];\n    }\n    const result: DashletEventLastSelectedEntry[] = [];\n\n    for (const selectedObjectInfo of selectedObjects.split(';')) {\n      const selectObjectInfoParts = selectedObjectInfo.split(\",\");\n      const id = selectObjectInfoParts.shift() ?? '0';\n      const typeId = selectObjectInfoParts.shift() ?? '0';\n\n      result.push({\n        osid: id,\n        objectTypeId: typeId,\n        mainType: String(getMainTypeForId(typeId)),\n        objectType: getObjectType(typeId)\n      });\n    }\n    return result;\n  }\n\n  public async openLocation(id: string) {\n    try {\n      this.native.osjxOpenLocation(Number(id));\n    } catch (e) {\n      console.error(\"refreshHitLosjxOpenLocationistObjects failed with error \", e);\n    }\n  }\n\n  public async refreshHitListObjects(ids: string[]) {\n    for (const id of ids) {\n      try {\n        this.native.osjxRefreshObjectInLists(Number(id));\n      } catch (e) {\n        console.error(\"refreshHitListObjects failed with error \", e);\n      }\n    }\n  }\n\n  public download(data: Uint8Array, filename: string) {\n    try {\n      this.native.osjxByteArrayToFile(Array.from(data), filename);\n    } catch (e) {\n      console.error(\"osjxByteArrayToFile failed with error \", e);\n    }\n  }\n\n  getEmail(): string {\n    return this.getEnvironment(16);\n  }\n\n  getFullname(): string {\n    return this.getEnvironment(14);\n  }\n\n  getLogin(): string {\n    return this.getEnvironment(3);\n  }\n\n  getGroups(): string[] {\n    return this.getEnvironment(11).split(\";\");\n  }\n\n  /**\n  * Only Available in enaio 10.10 or later\n  */\n  getSessionGuid(): string {\n    if (this.majorVersion < 10 && this.minorVersion < 10) {\n      throw \"GetEnvironment(27) is only available since enaio version 10.10\";\n    }\n    return this.getEnvironment(27);\n  }\n\n  getUserGuid(): string {\n    return this.getEnvironment(18);\n  }\n\n  getUserId(): string {\n    return this.getEnvironment(7);\n  }\n\n  /**\n   * Only Available in enaio 10.10 or later\n   */\n  getObjDefLanguageInfos(): EnaioRichLanguageInfo[] | null {\n    if (this.majorVersion < 10 && this.minorVersion < 10) {\n      throw \"GetEnvironment(32) is only available since enaio version 10.10\";\n    }\n    const languages = JSON.parse(this.getEnvironment(32))?.['Languages'] as EnaioRichLanguageInfo[];\n    return languages;\n  }\n\n  /**\n  * Only Available in enaio 10.10 or later\n  */\n  getDefaultObjDefLanguage(): EnaioRichLanguageInfo | null {\n    const languages = this.getObjDefLanguageInfos()\n    return languages?.find((l) => l.Active) ?? null;\n  }\n\n  getObjDefLanguage(): string {\n    let localeName = \"\";\n    if (this.majorVersion >= 11 || this.majorVersion >= 10 && this.minorVersion >= 10) {\n      const localeName = this.getEnvironment(33);\n\n      if (localeName) {\n        console.debug(`ObjDef localeName is ${localeName}`);\n        return localeName.split('_').shift() ?? 'de';\n      }\n    }\n    console.log('No locale received. Old enaio version detected. Return legacy value');\n    return this.languageMapping[this.getEnvironment(25)];\n  }\n\n  /**\n  * Only Available in enaio 10.10 or later\n  */\n  getUiLanguageInfos(): EnaioRichLanguageInfo[] | null {\n    if (this.majorVersion < 10 && this.minorVersion < 10) {\n      throw \"GetEnvironment(27) is only available since enaio version 10.10\";\n    }\n    const languages = JSON.parse(this.getEnvironment(30))?.['Languages'] as EnaioRichLanguageInfo[];\n    return languages;\n  }\n\n  /**\n  * Only Available in enaio 10.10 or later\n  */\n  getUiLanguageInfo(): EnaioRichLanguageInfo | null {\n    if (this.majorVersion < 10 && this.minorVersion < 10) {\n      throw \"GetEnvironment(27) is only available since enaio version 10.10\";\n    }\n    return JSON.parse(this.getEnvironment(29))?.['Languages']?.[0] as EnaioRichLanguageInfo;\n  }\n\n  getUiLanguage(): string {\n    let languageInfo: EnaioRichLanguageInfo | null = null;\n    if (this.majorVersion >= 11 || this.majorVersion >= 10 && this.minorVersion >= 10) {\n      languageInfo = this.getUiLanguageInfo();\n    }\n\n    if (languageInfo) {\n      return languageInfo.Short.toLowerCase();\n    } else {\n      console.log('No locale received. Old enaio version detected. Return legacy value');\n      const legacy = this.getEnvironment(24);\n      if (legacy == 'fra') {\n        return 'fr';\n      } else if (legacy == 'eng') {\n        return 'en';\n      } else {\n        return 'de';\n      }\n    }\n  }\n\n  getDashletCaption(): string {\n    try {\n      return this.native.osjxGetDashletCaption();\n    } catch (e) {\n      console.error(\"osjxGetDashletCaption failed with error \", e);\n      return \"failed\";\n    }\n    \n  }\n}\nexport interface EnaioRichClientInterface {\n  osjxCanNextDoc(): number;\n  osjxCanPrevDoc(): number;\n  osjxNextDoc(): void;\n  osjxPrevDoc(): void;\n  osjxOpenDataSheet(lObjectID: number, bReadOnly: boolean): void;\n  osjxOpenObject(lObjectID: number): void;\n  osjxOpenLocation(lObjectID: number): void;\n  osjxOpenLocationsAndLinks(lObjectID: number): void;\n  osjxOpenObjectHistory(lObjectID: number): void;\n  osjxAddSignature(lObjectID: number): void;\n  osjxPrintObject(): void;\n  osjxOpenObjectRemarks(lObjectID: number): void;\n  osjxAddFollowUp(lObjectID: number): void;\n  osjxAddSubscribe(lObjectID: number): void;\n  osjxStartWorkflow(lObjectID: number, strWorkflowModell: string): void;\n  osjxGetSelectedObjects(): string;\n  osjxRefreshObjectInLists(lObjectID: number): void;\n  osjxByteArrayToFile(data: number[], sFilename: string): void;\n  osjxURLDownloadToFile(sFileUrl: string, sFilename: string): void;\n  osjxOpenResultList(request: { title: string, hits: [{ id: string, type: string }] }): void;\n  osjxOpenChromeDEVTools(): void;\n  osjxCloseChromeDEVTools(): void;\n  osjxIsDashletVisible(dashletID: string): number;\n  osjxSetDashletVisible(dashletID: string, bVisible: 0 | 1): void;\n  osjxIsDashletEnabled(dashletID: string): number;\n  osjxSetDashletEnabled(dashletID: string, bEnabled: 0 | 1): number;\n  osjxGetDashletURL(dashletID: string): string;\n  osjxSetDashletURL(dashletID: string, sUrl: string): void;\n  osjxGetDashletPaneState(dashletID: string): 0 | 1 | 2 | 3;\n  osjxSetDashletPaneState(dashletID: string, lStatus: 0 | 1 | 2 | 3): void;\n  osjxSetDashletCaption(dashletID: string, stitle: string): void;\n  osjxGetDashletCaption(dashletID?: string): string;\n  osjxGetEnvironment(nEnvType: number): string;\n  osjxGetBrowserEnvironment(nEnvType: number): string;\n}\n\n\nexport interface EnaioRichEvent {\n  objectident: string;\n  objecttype: string;\n  userid: string;\n  userguid: string;\n  sessionguid: string;\n  servername: string;\n  serverport: string;\n  searchterm: string;\n  pagecount: string;\n  regenerate: string;\n}\n\n/**\n * Only Available in enaio 11 or later\n * Parameter Active defines the default language ObjDef and is not set for UI \n */\nexport interface EnaioRichLanguageInfo {\n  Name: string;\n  Short: string;\n  LangID: number;\n  Locale: string;\n  Localename: string;\n  Active?: boolean;\n  FlaggIconID: number;\n}\n","import { Subject, filter, firstValueFrom, timeout } from \"rxjs\";\nimport { DashletEvent, DashletEventLastSelectedEntry, DashletWebclientResponse } from \"../dto/dashlet-event.dto\";\nimport { getMainTypeForId, getObjectType } from \"../enaio-utils\";\n\nexport class EnaioWebClient {\n  private origin: string;\n  private supportedMethods: string[] = [];\n\n  public responses$ = new Subject<DashletWebclientResponse>();\n\n  constructor(event: MessageEvent) {\n    this.origin = event.origin;\n    const dashletEvent: DashletEvent = event.data;\n    this.supportedMethods = Object.keys(dashletEvent.data.dapi ?? {});\n  }\n\n  public async openLocation(id: string, inNewTab: boolean, options: { objectTypeId?: string, parentId?: string, parentTypeId?: string, timeoutInMs?: number }) {\n    await this.callMethod(\"openLocation\", [inNewTab, id], options.timeoutInMs ?? 5000);\n  }\n\n  public async getSelectedObjects(options: { timeoutInMs?: number }): Promise<DashletEventLastSelectedEntry[]> {\n    const response = await this.callMethod(\"getSelectedObjects\", [], options.timeoutInMs ?? 5000);\n\n    if (response.data.error) {\n      throw new Error(response.data.error);\n    } else {\n      const selectedObjects: DashletEventLastSelectedEntry[] = [];\n      for (const row of response.data.result) {\n        selectedObjects.push({\n          osid: row.objectId,\n          objectTypeId: row.objectTypeId,\n          mainType: String(getMainTypeForId(row.objectTypeId)),\n          objectType: getObjectType(row.objectTypeId)\n        });\n      }\n      return selectedObjects;\n    }\n  }\n\n  public async refreshHitListObjects(ids: string[], options: { timeoutInMs?: number }) {\n    if(!this.supportedMethods.includes(\"refreshHitListObjects\")){\n      throw new Error(\"WebClient version does not support refreshHitListObjects\");\n    }\n    await this.callMethod(\"refreshHitListObjects\", [ids], options.timeoutInMs ?? 5000);\n  }\n\n  private async callMethod(method: string, parameter: any[], timeoutInMs: number): Promise<DashletWebclientResponse> {\n    const msgId = Math.random().toString(36).substring(2, 8);\n    const payload = [method, parameter, { msgId: msgId }];\n    window.parent.postMessage(payload, this.origin);\n\n    return await firstValueFrom(this.responses$.pipe(filter(r => r.msgId == msgId), timeout(timeoutInMs)));\n  }\n}\n\n","import { Injectable, Injector, NgZone } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { DashletEvent, DashletEventClientType, DashletEventType } from '../dto/dashlet-event.dto';\nimport { getBaseUrl, getMainTypeForId, getObjectType } from '../enaio-utils';\nimport { EnaioRichClient, EnaioRichClientInterface, EnaioRichEvent } from './enaio-rich-client.service';\nimport { EnaioWebClient } from './enaio-web-client.service';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EnaioDashletService {\n  private enaioRichClientInterface: EnaioRichClientInterface | null = (window as any).osClient;\n  private enaioRichClient: EnaioRichClient | null = null;\n  private enaioWebClient: EnaioWebClient | null = null;\n\n  public status$ = new BehaviorSubject<'init' | 'ready' | 'not_available' | null>(null);\n  public event$ = new BehaviorSubject<DashletEvent | null>(null);\n\n  private __dashletType: 'rich' | 'web' | null = null;\n\n  constructor(private ngZone: NgZone) { }\n\n  public init() {\n    console.debug(\"Init enaio dashlet service\");\n    // enaio rich client\n    if (this.enaioRichClientInterface) {\n      this.onRichClient();\n    }\n    // enaio web client dashlet\n    else if (this.inIframe()) {\n      this.onWebClient();\n    }\n    // no dashlet detected\n    else {\n      console.debug('No dashlet mode detected');\n      this.status$.next('not_available');\n    }\n  }\n\n  public get dashletType() {\n    return this.__dashletType;\n  }\n\n  public getRichClient() {\n    return this.enaioRichClient;\n  }\n\n  public getWebClient() {\n    return this.enaioWebClient;\n  }\n\n  public async openLocation(id: string, timeoutInMs?: number) {\n    if (this.dashletType == 'rich') {\n      return this.enaioRichClient?.openLocation(id);\n    } else if (this.dashletType == 'web') {\n      return this.enaioWebClient?.openLocation(id, false, { timeoutInMs });\n    } else {\n      throw new Error('Dashlet type not detected');\n    }\n  }\n\n\n  public async refreshHitListObjects(ids: string[], timeoutInMs?: number) {\n    if (this.dashletType == 'rich') {\n      return this.enaioRichClient?.refreshHitListObjects(ids);\n    } else if (this.dashletType == 'web') {\n      return this.enaioWebClient?.refreshHitListObjects(ids, { timeoutInMs });\n    } else {\n      throw new Error('Dashlet type not detected');\n    }\n  }\n\n  public async getSelectedObjects(timeoutInMs?: number) {\n    if (this.dashletType == 'rich') {\n      return this.enaioRichClient?.getSelectedObjects();\n    } else if (this.dashletType == 'web') {\n      return this.enaioWebClient?.getSelectedObjects({ timeoutInMs });\n    } else {\n      throw new Error('Dashlet type not detected');\n    }\n  }\n\n  private onRichClient() {\n    if (!this.enaioRichClientInterface) {\n      return;\n    }\n    console.debug(\"enaio rich client detected\");\n    this.enaioRichClient = new EnaioRichClient(this.enaioRichClientInterface);\n    this.__dashletType = 'rich';\n    this.status$.next('ready');\n\n    // Register Listener\n    (window as any).osDashletInit = (data: EnaioRichEvent) => {\n      this.onRichClientEvent(data, DashletEventType.onUpdate);\n    }\n\n    // get currently selected objects\n    const selectedObjects = this.enaioRichClient.getSelectedObjects();\n    let osid = '0';\n    let objectTypeId = '0';\n    if (selectedObjects.length > 0) {\n      osid = selectedObjects[0].osid;\n      objectTypeId = selectedObjects[0].objectTypeId;\n    }\n\n    // Simulate OnInit for enaio rich client\n    console.debug('Simulate OnInit event for enaio rich client');\n    this.onRichClientEvent({\n      objectident: osid,\n      objecttype: objectTypeId,\n      pagecount: \"0\",\n      regenerate: \"0\",\n      searchterm: \"\",\n      servername: \"\",\n      serverport: \"\",\n      sessionguid: \"\",\n      userguid: this.enaioRichClient.getUserGuid(),\n      userid: this.enaioRichClient.getUserId(),\n\n    }, DashletEventType.onInit);\n  }\n\n\n  private onRichClientEvent(event: EnaioRichEvent, type: DashletEventType) {\n    // Activate ngZone for angular change detection\n    // https://angular.io/guide/zone\n    this.ngZone.run(() => {\n      if (this.enaioRichClient == null) {\n        console.error(\"enaio rich client object is null. OnRichClientEvent can't be handled correctly \");\n        return;\n      }\n\n      const selectedEntries = this.enaioRichClient.getSelectedObjects();\n\n      const dashletEvent: DashletEvent = {\n        type: type ?? DashletEventType.onUpdate,\n        data: {\n          lastSelectedEntry: {\n            objectTypeId: event.objecttype,\n            osid: event.objectident,\n            mainType: String(getMainTypeForId(event.objecttype)),\n            objectType: getObjectType(event.objecttype),\n          },\n          userInfo: {\n            email: this.enaioRichClient.getEmail(),\n            fullname: this.enaioRichClient.getFullname(),\n            name: this.enaioRichClient.getLogin(),\n            userId: event.userid,\n            osGuid: event.userguid,\n            groups: this.enaioRichClient.getGroups(),\n            wfGuid: \"\",\n            wfOrgId: \"\"\n          },\n          sessionInfo: {\n            baseUrl: window.location.origin,\n            clientType: DashletEventClientType.windows,\n            language: this.enaioRichClient.getUiLanguage(),\n            languageObjectDefinition: this.enaioRichClient.getObjDefLanguage(),\n            sessionGuid: event.sessionguid\n          },\n          selectedEntries: selectedEntries,\n          osDashletInit: event,\n          activeCustomDashlet: {\n            id: this.enaioRichClient.getDashletCaption(),\n            objectTypes: \"*\",\n            platforms: \"windows\",\n            url: getBaseUrl(),\n            title_DE: this.enaioRichClient.getDashletCaption(),\n            title_EN: this.enaioRichClient.getDashletCaption(),\n            title_FR: this.enaioRichClient.getDashletCaption(),\n          }\n        },\n      };\n      this.onEvent(dashletEvent);\n    });\n  }\n\n  private onWebClient() {\n    console.debug(\"No enaio rich client detected. Try to fetch web client events\");\n\n    // Register Message Listener\n    const listener = (event: MessageEvent) => {\n      // check if message is a dashlet event, dashlet response or another event\n      const payload = event.data;\n      console.debug(\"Receive Event\", payload);\n      // dashlet event\n      if (payload.type && ['onInit', 'onUpdate'].includes(payload.type)) {\n        if (this.__dashletType == null) {\n          this.__dashletType = 'web';\n          this.status$.next('ready');\n          this.enaioWebClient = new EnaioWebClient(event);\n        }\n        this.onEvent(payload as DashletEvent);\n      }\n      // dashlet response\n      else if (payload.msgId) {\n        this.enaioWebClient?.responses$.next(payload);\n      }\n    };\n\n    window.addEventListener('message', listener);\n\n    setTimeout(() => {\n      if (this.__dashletType == null) {\n        console.debug('Webclient dashlet event timeout. Unregister listener an set status to not_available.');\n        this.status$.next('not_available');\n        window.removeEventListener('message', listener);\n      }\n    }, 1000);\n  }\n\n  private onEvent(event: DashletEvent) {\n    this.event$.next(event);\n  }\n\n  private inIframe(): boolean {\n    try {\n      return window.self !== window.top;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n","import { BehaviorSubject, Observable, of, Subject } from 'rxjs';\n\nexport abstract class AbstractHolder<T> {\n  private internalCurrent: T | null = null;\n  private subjects: Subject<T>[] = [];\n  private running = false;\n\n  public get current(): T | null {\n    return this.internalCurrent;\n  }\n\n  public get(reload: boolean = false): Observable<T> {\n    if (!reload && this.current) {\n      return of(this.current);\n    }\n\n    const subject = new Subject<T>();\n    this.subjects.push(subject);\n\n    if (!this.running) {\n      this.running = true;\n      this.execute().then(\n        (result: T) => {\n          this.internalCurrent = result;\n          for (const sub of this.subjects) {\n            sub.next(result);\n            sub.complete();\n          }\n          this.running = false;\n          this.subjects = [];\n        }\n      ).catch((error) => {\n        for (const sub of this.subjects) {\n          sub.error(error);\n          sub.complete();\n          this.running = false;\n          this.subjects = [];\n        }\n      });\n    }\n    return subject;\n  }\n\n  abstract execute(): Promise<T>;\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { EnaioSession } from \"../dto/enaio-session.dto\";\nimport { firstValueFrom } from \"rxjs\";\nimport { EnaioClientSettings } from \"../dto/enaio-client-settings\";\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class EnaioOSRestService {\n    constructor(private http: HttpClient) {}\n\n    public async getSession(): Promise<EnaioSession> {\n      return await firstValueFrom(this.http.get<EnaioSession>(\"/osrest/api/session\"));\n    }\n\n    public async getSettings(): Promise<EnaioClientSettings> {\n      const settings = await firstValueFrom(this.http.get<any>(\"/osrest/api/session/settings/load\"));\n\n      return settings.settings as EnaioClientSettings;\n    }\n}\n","import { Injectable, Injector } from \"@angular/core\";\nimport { EnaioSession } from \"../dto/enaio-session.dto\";\nimport { AbstractHolder } from \"./abstract-holder.service\";\nimport { EnaioDashletService } from \"./enaio-dashlet.service\";\nimport { EnaioOSRestService } from \"./enaio-osrest.service\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EnaioSessionService extends AbstractHolder<EnaioSession> {\n\n  constructor(private osrestService: EnaioOSRestService, private dashletService: EnaioDashletService) {\n    super();\n  }\n\n  execute(): Promise<EnaioSession> {\n    return new Promise<EnaioSession>(async (resolve, reject) => {\n      try {\n        this.dashletService.status$.subscribe({\n          next: async (status) => {\n            console.debug(`Dashlet Status is ${status}`);\n            switch (status) {\n              case \"init\":\n                return;\n              case \"ready\":\n                this.dashletService.event$.subscribe({\n                  next: async (enaioEvent) => {\n                    if (enaioEvent != null) {\n                      return resolve({\n                        userId: enaioEvent.data.userInfo.userId,\n                        username: enaioEvent.data.userInfo.name,\n                        osGuid: enaioEvent.data.userInfo.osGuid,\n                        wfGuid: enaioEvent.data.userInfo.wfGuid,\n                        wfOrg: enaioEvent.data.userInfo.wfOrgId,\n                        sessionGuid: enaioEvent.data.sessionInfo.sessionGuid,\n                        language: enaioEvent.data.sessionInfo.language,\n                        languageObjDef: enaioEvent.data.sessionInfo.languageObjectDefinition,\n                        fullname: enaioEvent.data.userInfo.fullname,\n                        email: enaioEvent.data.userInfo.email,\n                        groups: enaioEvent.data.userInfo.groups\n                      } as EnaioSession);\n                    }\n                  }\n                });\n                break;\n              case null:\n              case \"not_available\":\n                console.debug(\"Client not available or dashlet service not initialized. Resolve session via AppConnector\");\n                resolve(await this.osrestService.getSession());\n            }\n          }\n        });\n\n      } catch (error) {\n        console.error(`Dashlet Service raise error ${error}`);\n        resolve(await this.osrestService.getSession());\n      }\n    }\n    );\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, Subject, firstValueFrom } from \"rxjs\";\nimport { EnaioClientSettings } from \"../dto/enaio-client-settings\";\nimport { AbstractHolder } from \"./abstract-holder.service\";\nimport { EnaioOSRestService } from \"./enaio-osrest.service\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EnaioClientSettingsService extends AbstractHolder<EnaioClientSettings> {\n\n  constructor(private osRestService: EnaioOSRestService) {\n    super();\n  }\n\n  async execute(): Promise<EnaioClientSettings> {\n    return await this.osRestService.getSettings();\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, Subject, firstValueFrom } from \"rxjs\";\nimport { EnaioLanguage } from \"../dto/enaio-language.dto\";\nimport { EnaioSessionService } from \"../services/enaio-session.service\";\nimport { AbstractHolder } from \"./abstract-holder.service\";\nimport { EnaioClientSettingsService } from \"./enaio-client-settings.service\";\nimport { EnaioDashletService } from \"./enaio-dashlet.service\";\nimport { EnaioOSRestService } from \"./enaio-osrest.service\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EnaioLanguageService extends AbstractHolder<EnaioLanguage> {\n  constructor(\n    private sessionService: EnaioSessionService,\n    private dashletService: EnaioDashletService,\n    private settingsService: EnaioClientSettingsService,\n    private osrestService: EnaioOSRestService\n  ) {\n    super();\n  }\n\n  async execute(): Promise<EnaioLanguage> {\n    return new Promise<EnaioLanguage>(async (resolve, reject) => {\n      try {\n        this.dashletService.status$.subscribe({\n          next: async (status) => {\n            console.debug(`Dashlet Status is ${status}`);\n            switch (status) {\n              case \"init\":\n                break;\n              case \"ready\":\n                const session = await firstValueFrom(this.sessionService.get());\n                let sessionUi = session.language?.toLowerCase();\n                let sessionUiObjDef = session.languageObjDef?.toLowerCase();\n                resolve( {ui: sessionUi, objDef: sessionUiObjDef} );\n                break;\n                case null:\n                case \"not_available\":\n                console.debug(\"Dashlet not available or not initialized. Resolve language via settings endpoint\");\n                const settings = await firstValueFrom(this.settingsService.get());\n                let ui = settings?.CLIENT?.LANGUAGE ?? 'de';\n                resolve({ ui: ui.toLowerCase(), objDef: ui.toLowerCase() } as EnaioLanguage);\n                break;\n            }\n          }\n        });\n\n      } catch (error) {\n        console.error(`Dashlet Service raise error ${error}`);\n        const settings = await firstValueFrom(this.settingsService.get());\n        let ui = settings?.CLIENT?.LANGUAGE ?? 'de';\n        resolve({ ui: ui.toLowerCase(), objDef: ui.toLowerCase() } as EnaioLanguage);\n      }\n    });\n  }\n}\n","import { Injectable } from \"@angular/core\";\nimport { firstValueFrom } from \"rxjs\";\nimport { EnaioTheme } from \"../dto/enaio-theme.dto\";\nimport { EnaioRichClientInterface } from \"../services/enaio-rich-client.service\";\nimport { AbstractHolder } from \"./abstract-holder.service\";\nimport { EnaioClientSettingsService } from \"./enaio-client-settings.service\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class EnaioThemeService extends AbstractHolder<EnaioTheme> {\n  private enaioRichClientInterface: EnaioRichClientInterface | null = (window as any).osClient;\n\n  constructor(private settingsService: EnaioClientSettingsService) {\n    super();\n  }\n\n  async execute(): Promise<EnaioTheme> {\n\n    // Windows Client\n    if (this.enaioRichClientInterface != null) {\n      const settings = await firstValueFrom(this.settingsService.get());\n      const colorSchemeRaw = settings?.WORKSPACE?.WSCOLORTHEME;\n\n      // Default Scheme is light\n      let colorScheme = 'LIGHT';\n      let colorSchemeFlavor: string | null = null;\n\n      switch (colorSchemeRaw) {\n        // White\n        case \"0\":\n          colorScheme = 'LIGHT';\n          break;\n        // Light-Grey\n        case \"1\":\n          colorScheme = 'LIGHT';\n          colorSchemeFlavor = 'GRAY';\n          break;\n        // dark-Grey\n        case \"2\":\n          colorScheme = 'DARK';\n          colorSchemeFlavor = 'GRAY';\n          break;\n        case \"3\":\n          colorScheme = 'DARK';\n          break;\n        default:\n          colorScheme = 'LIGHT';\n      }\n\n      const accentColorRaw = settings?.WORKSPACE?.ACCENTCOLORTYPE;\n      let accentColor: string | null = null;\n      switch (accentColorRaw) {\n        case \"0\":\n          accentColor = \"#0071c5\";\n          break;\n        case \"1\":\n          accentColor = \"#a23536\";\n          break;\n        case \"2\":\n          accentColor = \"#207146\";\n          break;\n        case \"3\":\n          accentColor = \"#803977\";\n          break;\n        case \"4\":\n          accentColor = \"#057164\";\n          break;\n        case \"5\":\n          accentColor = \"#d24525\";\n          break;\n        case \"6\":\n          accentColor = \"#2a569a\";\n          break;\n      }\n      return {\n        colorTheme: colorScheme,\n        colorThemeFlavor: colorSchemeFlavor,\n        accentColor: accentColor\n      } as EnaioTheme;\n    }\n    // Webclient\n    else {\n      const settings = await firstValueFrom(this.settingsService.get());\n      const colorSchemeRaw = settings?.EBWCLAYOUTCONFIGURATION?.colorTheme;\n      // Default theme is light without flavor\n      let colorTheme = 'LIGHT';\n      let colorThemeFlavor: string | null = null;\n      switch (colorSchemeRaw) {\n        case \"light\":\n          colorTheme = 'LIGHT';\n          break;\n        case \"dark\":\n          colorTheme = 'DARK';\n          break;\n        case \"high-contrast\":\n          colorTheme = 'DARK';\n          colorThemeFlavor = 'CONTRAST';\n          break;\n      }\n\n      return {\n        colorTheme: colorTheme,\n        colorThemeFlavor: colorThemeFlavor,\n        accentColor: settings?.EBWCLAYOUTCONFIGURATION?.accentColor\n      } as EnaioTheme;\n    }\n  }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { EnaioDashletService } from './services/enaio-dashlet.service';\n\n@NgModule({\n  declarations: [\n  ],\n  imports: [\n    HttpClientModule\n  ],\n  exports: [\n  ]\n})\nexport class NgxEnaioModule { }\n","/*\n * Public API Surface of ngx-enaio\n */\n\nexport * from './lib/services/enaio-dashlet.service';\nexport * from './lib/services/enaio-session.service';\nexport * from './lib/services/enaio-language.service';\nexport * from './lib/services/enaio-theme.service';\nexport * from './lib/services/enaio-client-settings.service';\nexport * from './lib/services/enaio-osrest.service';\nexport * from './lib/ngx-enaio.module';\nexport * from './lib/enaio-utils';\nexport * from './lib/services/enaio-rich-client.service';\nexport * from './lib/services/enaio-web-client.service';\nexport * from './lib/dto/dashlet-event.dto';\nexport * from './lib/dto/enaio-session.dto';\nexport * from './lib/dto/enaio-language.dto';\nexport * from './lib/dto/enaio-theme.dto';\nexport * from './lib/dto/enaio-client-settings';\nexport * from './lib/enum/enaio-object-type.enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EnaioOSRestService","i2.EnaioDashletService","i1.EnaioSessionService","i3.EnaioClientSettingsService","i4.EnaioOSRestService","i1.EnaioClientSettingsService"],"mappings":"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"}