{"version":3,"sources":["../src/index.ts","../src/types/environment.ts","../src/constants.ts","../src/types/event.interface.ts","../src/Aerosync.ts"],"sourcesContent":["import { WidgetConfigs } from './types/widget.interface';\nimport { AerosyncEnvironment } from './types/environment';\nimport { AerosyncWidget } from './Aerosync';\n\nexport function initAeroSyncWidget(widgetConfigs: WidgetConfigs): AerosyncWidget {\n      const aerosyncWidget = new AerosyncWidget(widgetConfigs);\n      window.AerosyncWidget = aerosyncWidget\n      return aerosyncWidget;\n}\n\nexport const initWidget = initAeroSyncWidget;\n\nexport * from './types/event.interface'\nexport * from './types/widget.interface'\nexport type { WidgetConfigs, AerosyncWidget };\nexport { AerosyncEnvironment }","export enum AerosyncEnvironment {\n    Sandbox = \"sandbox\",\n    Production = \"production\",\n};\n\nexport const AerosyncUrl = {\n    sandbox: \"https://sandbox-sync.aero.inc\",\n    production: \"https://sync.aero.inc\",\n}\n","export const AEROSYNC_WIDGET_CONTAINER_ID = \"aerosync-widget-container\"\nexport const AEROSYNC_WIDGET_IFRAME_ID = \"aerosync-widget\"\nexport const AEROSYNC_EMBEDDED_IFRAME_ID = \"aerosync-embedded\"\nexport const AEROSYNC_VERSION = '2.0.0'","// single-account success (AeroPass returning user + AeroPass link-new-bank)\nexport interface WidgetEventSuccessType {\n    connectionId: string;\n    clientName: string;\n    aeroPassUserUuid: string;\n}\n\n// one linked account in the multi-account success payload\nexport interface WidgetEventSuccessAccount {\n    connectionId: string;\n    accountType: string;\n    accountNumberDisplay: string;\n}\n\n// multi-account success (enable_multiple_account_linking)\nexport interface WidgetEventMultiAccountSuccessType {\n    accounts: WidgetEventSuccessAccount[];\n    clientName: string;\n    aeroPassUserUuid: string;\n}\n\n// onSuccess payload: single-account or multi-account\nexport type WidgetSuccessPayload =\n    | WidgetEventSuccessType\n    | WidgetEventMultiAccountSuccessType;\n\nexport interface WidgetEventType {\n    payload: WidgetEventPayloadType;\n    type: string;\n}\n\nexport interface WidgetEventPayloadType {\n    pageTitle: string;\n    onLoadApi: string;\n}\n\nexport interface WidgetEventBankClickType {\n    type: string;\n    stateCode: string;\n}\n\nexport enum WidgetMessageEventType {\n    ONERROR = 'widgetError',\n    ONEVENT = 'widgetPageLoaded',\n    ONSUCCESS = 'pageSuccess',\n    ONCLOSE = 'widgetClose',\n    ONBANKCLICK = 'widgetBankClick'\n}\n\nexport interface WidgetMessageType {\n    type: WidgetMessageEventType,\n    payload: WidgetMessagePayloadType\n}\n\ntype WidgetMessagePayloadType = WidgetEventType | WidgetSuccessPayload | WidgetEventPayloadType | WidgetEventBankClickType | string | object\n\n","import type { WidgetEventBankClickType, WidgetSuccessPayload, WidgetEventType, WidgetMessageType } from './types/event.interface'\nimport type { WidgetPostMessageEvent, WidgetPostMessageOnClose, WidgetPostMessageOnSuccess, WidgetPostMessageOnToggleTheme } from './types/post-message.interface'\nimport type { IframePropsType, WidgetConfigs, WidgetThemeType } from './types/widget.interface'\nimport { AEROSYNC_EMBEDDED_IFRAME_ID, AEROSYNC_VERSION, AEROSYNC_WIDGET_CONTAINER_ID, AEROSYNC_WIDGET_IFRAME_ID } from './constants'\nimport { AerosyncUrl } from './types/environment'\nimport { WidgetMessageEventType } from './types/event.interface'\n\nexport class AerosyncWidget {\n  private widgetConfigs: WidgetConfigs\n  private targetDocument!: ShadowRoot | Document\n  private targetElement!: HTMLElement\n  private widgetBaseURL!: string\n  private widgetStateCode!: string\n  private embeddedIframeElement!: HTMLIFrameElement\n  private hasMessageListener: boolean = false\n  private popupWindow: Window | null = null\n\n  constructor(widgetConfigs: WidgetConfigs) {\n    this.widgetConfigs = widgetConfigs\n    this.widgetConfigs = {\n      ...widgetConfigs,\n      onLoad: widgetConfigs.onLoad ?? (() => { }),\n      onClose: widgetConfigs.onClose ?? (() => { }),\n      onSuccess: widgetConfigs.onSuccess ?? (() => { }),\n      onEvent: widgetConfigs.onEvent ?? (() => { }),\n      onError: widgetConfigs.onError ?? (() => { }),\n    }\n    this.addWindowEventListener()\n    this.setWidgetBaseURL()\n    this.showEmbeddedBanks()\n  }\n\n  private setWidgetBaseURL() {\n    this.widgetBaseURL = AerosyncUrl[this.widgetConfigs.environment as keyof typeof AerosyncUrl] || AerosyncUrl.production\n  }\n\n  private addWindowEventListener() {\n    if (!this.hasMessageListener) {\n      window.addEventListener('message', this.handlePostMessage)\n      this.hasMessageListener = true\n    }\n  }\n\n  private removeWindowEventListener() {\n    if (this.hasMessageListener) {\n      window.removeEventListener('message', this.handlePostMessage)\n      this.hasMessageListener = false\n    }\n  }\n\n  private constructUrl(baseUrl: string, queryParams: Record<string, string | number | boolean | undefined>): string {\n    const url = new URL(baseUrl)\n    const searchParams = new URLSearchParams()\n    for (const [key, value] of Object.entries(queryParams)) {\n      if (value) {\n        searchParams.append(key, String(value))\n      }\n    }\n    url.search = searchParams.toString()\n    return url.toString()\n  }\n\n  public getLaunchUrl(): string {\n    return this.constructUrl(this.widgetBaseURL, this.getWidgetQueryParams())\n  }\n\n  private getWidgetQueryParams(): Record<string, string | number | boolean | undefined> {\n    return {\n      token: this.widgetConfigs.token,\n      configurationId: this.widgetConfigs.configurationId,\n      deeplink: this.widgetConfigs.deeplink,\n      handleOAuthManually: this.widgetConfigs.handleOAuthManually,\n      manualLinkOnly: this.widgetConfigs.manualLinkOnly,\n      aeroPassUserUuid: this.widgetConfigs.aeroPassUserUuid,\n      handleMFA: this.widgetConfigs.handleMFA,\n      jobId: this.widgetConfigs.jobId,\n      connectionId: this.widgetConfigs.connectionId,\n      widgetLaunchType: this.widgetConfigs.widgetLaunchType,\n      domain: this.widgetConfigs.domain,\n      stateCode: this.widgetStateCode,\n      defaultTheme: this.widgetConfigs.theme ?? 'light',\n      version: AEROSYNC_VERSION,\n    }\n  }\n\n  public launch(): void {\n    const widgetURL = this.constructUrl(this.widgetBaseURL, this.getWidgetQueryParams())\n\n    // handle widget launch type\n    if (this.widgetConfigs?.widgetLaunchType === 'systemBrowser') {\n      const features = 'width=315,height=635,top=100,left=100,resizable=yes,scrollbars=yes'\n\n      try {\n        window.AerosyncWidget.popupWindow = window.open(widgetURL, '_blank', features)\n\n        if (!window.AerosyncWidget.popupWindow) {\n          console.warn('Popup was likely blocked by the browser.')\n        }\n\n        // Start polling the popup's closed state every 500ms\n        const checkInterval = 500 // milliseconds\n        const intervalId = setInterval(() => {\n          if (window.AerosyncWidget.popupWindow?.closed) {\n            clearInterval(intervalId)\n            this.widgetConfigs.onClose()\n          }\n        }, checkInterval)\n      }\n      catch (error) {\n        console.error('Failed to open system browser window:', error)\n      }\n      return\n    }\n\n    let bg = this.widgetConfigs?.style?.bgColor && this.widgetConfigs?.style?.opacity\n      ? this.widgetConfigs.style.bgColor + Math.floor(this.widgetConfigs.style.opacity * 255).toString(16)\n      : '#000000b2'\n\n    let widgetBox = document.createElement('div')\n    this.targetDocument = this.widgetConfigs.targetDocument || document\n    widgetBox.setAttribute('id', AEROSYNC_WIDGET_CONTAINER_ID)\n    this.targetElement = this.targetDocument.getElementById(this.widgetConfigs.elementId)!\n    this.targetElement.innerHTML = ''\n    this.targetElement.appendChild(widgetBox)\n\n    const iframeProps: IframePropsType = {\n      elementId: AEROSYNC_WIDGET_IFRAME_ID,\n      width: this.widgetConfigs?.style?.width ? this.widgetConfigs.style.width : '375px',\n      height: this.widgetConfigs?.style?.height ? this.widgetConfigs.style.height : '688px',\n      source: widgetURL,\n    }\n    let iframeElement = this.setIframeWindow(iframeProps)\n    iframeElement.setAttribute('width', iframeProps.width)\n    iframeElement.setAttribute('height', iframeProps.height)\n\n    let widgetBoxElement = this.targetDocument.getElementById(AEROSYNC_WIDGET_CONTAINER_ID)\n    widgetBoxElement!.style.display = 'flex'\n    widgetBoxElement!.style.position = 'fixed'\n    widgetBoxElement!.style.width = '100%'\n    widgetBoxElement!.style.left = '0'\n    widgetBoxElement!.style.top = '0'\n    widgetBoxElement!.style.backgroundColor = bg\n    widgetBoxElement!.style.zIndex = this.widgetConfigs.zIndex || '1'\n    widgetBoxElement!.style.height = '100%'\n    widgetBoxElement!.style.justifyContent = 'center'\n    widgetBoxElement!.style.alignItems = 'center'\n\n    if (window.matchMedia('(max-height: 700px)').matches) {\n      iframeElement.setAttribute('height', this.widgetConfigs.style?.height || '95%')\n    }\n\n    widgetBoxElement!.innerHTML = ''\n    widgetBoxElement!.appendChild(iframeElement)\n  }\n\n  private setIframeWindow(props: IframePropsType): HTMLIFrameElement {\n    let iframe = document.createElement('iframe')\n    iframe.setAttribute('id', props.elementId)\n    iframe.setAttribute('border', '0')\n    iframe.setAttribute('frame', '0')\n    iframe.setAttribute('frameborder', '0')\n    iframe.setAttribute('allowTransparency', 'true')\n    iframe.setAttribute('src', props.source)\n    iframe.setAttribute('marginheight', '0')\n    iframe.setAttribute('marginwidth', '0')\n    iframe.setAttribute('allow', 'publickey-credentials-get *; publickey-credentials-create *')\n    iframe.style.backgroundColor = (this.widgetConfigs?.theme === 'dark')\n      ? 'hsl(240, 25%, 5.9%)'\n      : 'hsl(0, 0%, 100%)'\n    iframe.onload = () => {\n      this.widgetConfigs?.embeddedBankView?.onEmbedded() ?? this.widgetConfigs.onLoad()\n    }\n    iframe.setAttribute('title', this.widgetConfigs.iframeTitle)\n    return iframe\n  }\n\n  private showEmbeddedBanks(): void {\n    if (this.widgetConfigs?.embeddedBankView?.elementId) {\n      const widgetQueryParams = {\n        token: this.widgetConfigs.token,\n        defaultTheme: this.widgetConfigs.theme,\n      }\n      // container\n      let iframeContainerElement = document.createElement('div')\n      iframeContainerElement.style.position = 'relative'\n      iframeContainerElement.style.width = '100%'\n      iframeContainerElement.style.overflow = 'hidden'\n      iframeContainerElement.style.height = '100%'\n\n      // iframe\n      const widgetURL = this.constructUrl(`${this.widgetBaseURL}/embedded-view`, widgetQueryParams)\n      const iframeProps: IframePropsType = {\n        elementId: AEROSYNC_EMBEDDED_IFRAME_ID,\n        width: this.widgetConfigs?.embeddedBankView?.width || '100%',\n        height: this.widgetConfigs?.embeddedBankView?.height || '100%',\n        source: widgetURL,\n      }\n      this.embeddedIframeElement = this.setIframeWindow(iframeProps)\n      this.embeddedIframeElement.setAttribute('scrolling', 'no')\n      this.embeddedIframeElement.style.overflow = 'hidden'\n      this.embeddedIframeElement.style.width = iframeProps.width\n      this.embeddedIframeElement.style.height = iframeProps.height\n      this.embeddedIframeElement.style.position = 'absolute'\n      this.embeddedIframeElement.style.top = '0px'\n      this.embeddedIframeElement.style.left = '0px'\n      this.embeddedIframeElement.style.bottom = '0px'\n      this.embeddedIframeElement.style.right = '0px'\n\n      this.targetDocument = this.widgetConfigs.targetDocument || document\n      const embeddedElement = this.targetDocument.getElementById(this.widgetConfigs.embeddedBankView.elementId)!\n      embeddedElement.innerHTML = ''\n      embeddedElement.appendChild(iframeContainerElement)\n      iframeContainerElement.appendChild(this.embeddedIframeElement)\n    }\n  }\n\n  public destroy(): void {\n    this.removeWindowEventListener()\n  }\n\n  public toggleTheme(value: WidgetThemeType): void {\n    const message: WidgetPostMessageOnToggleTheme = {\n      type: 'embeddedView',\n      payload: { name: 'onToggleTheme', theme: value },\n    }\n    this.sendPostMessage(AEROSYNC_EMBEDDED_IFRAME_ID, message)\n    this.widgetConfigs.theme = value\n  }\n\n  private removeElements(): void {\n    if (this.widgetConfigs.widgetLaunchType === 'systemBrowser') {\n      return\n    }\n    const removeElement = (selector: string): void => {\n      const element = this.targetDocument.querySelector(selector)\n      if (element) {\n        element.remove()\n      }\n    }\n    removeElement(`#${AEROSYNC_WIDGET_IFRAME_ID}`)\n    removeElement(`#${AEROSYNC_WIDGET_CONTAINER_ID}`)\n  }\n\n  private removePopWindow(): void {\n    // close the popup window\n    try {\n      const popup = window.AerosyncWidget?.popupWindow\n      if (popup && !popup.closed) {\n        popup.close()\n      }\n      else {\n        console.warn('Popup window reference missing or already closed.')\n      }\n    }\n    catch (err) {\n      console.warn('Error closing popup window:', err)\n    }\n  }\n\n  public exit(): void {\n    // iframe not available in the system browser type\n    if (this.widgetConfigs.widgetLaunchType !== 'systemBrowser') {\n      this.removeElements()\n    }\n    else {\n      this.removePopWindow()\n    }\n\n    // fire onClose event\n    this.widgetConfigs.onClose()\n  }\n\n  private handlePostMessage(messageEvent: MessageEvent): void {\n    if (\n      messageEvent.origin === window.AerosyncWidget.widgetBaseURL\n    ) {\n      let e: WidgetMessageType\n      try {\n        e = JSON.parse(messageEvent.data)\n        if (e.type) {\n          window.AerosyncWidget.handleWidgetEvent(e)\n        }\n      }\n      catch (err) {\n        console.warn('Error processing event', err)\n      }\n    }\n  }\n\n  private handleWidgetEvent(t: WidgetMessageType): void {\n    switch (t.type) {\n      case WidgetMessageEventType.ONSUCCESS:\n        this.widgetConfigs.onSuccess(t.payload as WidgetSuccessPayload)\n        const message: WidgetPostMessageOnSuccess = {\n          type: 'embeddedView',\n          payload: { name: 'onSuccess' },\n        }\n        this.sendPostMessage(AEROSYNC_EMBEDDED_IFRAME_ID, message)\n        this.removeElements()\n        this.removePopWindow()\n        break\n      case WidgetMessageEventType.ONEVENT:\n        this.widgetConfigs.onEvent(t as WidgetEventType)\n        break\n      case WidgetMessageEventType.ONCLOSE:\n        if (this.widgetConfigs?.embeddedBankView?.elementId\n          && this.embeddedIframeElement\n        ) {\n          const message: WidgetPostMessageOnClose = {\n            type: 'embeddedView',\n            payload: { name: 'onClose' },\n          }\n          this.sendPostMessage(AEROSYNC_EMBEDDED_IFRAME_ID, message)\n        }\n        this.exit()\n        break\n      case WidgetMessageEventType.ONERROR:\n        this.widgetConfigs.onError(t.payload as string)\n        break\n      case WidgetMessageEventType.ONBANKCLICK:\n        this.widgetStateCode = (t.payload as WidgetEventBankClickType).stateCode\n        this.launch()\n        break\n    }\n  }\n\n  private sendPostMessage(elementId: string, message: WidgetPostMessageEvent): void {\n    const iframe = document.getElementById(elementId) as HTMLIFrameElement\n    if (iframe) {\n      iframe.contentWindow!.postMessage(\n        message,\n        window.AerosyncWidget.widgetBaseURL,\n      )\n    }\n  }\n}\n"],"mappings":"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","names":["AerosyncEnvironment","WidgetMessageEventType","_a","message"]}