{
  "version": 3,
  "sources": ["../../src/index.ts", "../../src/walletPlugin.ts", "../../src/utils.ts", "../../src/config.ts", "../../src/html.ts", "../../src/iconsBase64.ts", "../../src/messageHandler.ts", "../../src/types.ts", "../../src/style.ts", "../../src/walletUrl.ts"],
  "sourcesContent": ["import { WalletEntryPlugin } from './walletPlugin';\n\nexport type {\n  CustomEventHandler,\n  CustomMessageType,\n  EthereumProvider,\n  MessageType,\n  ProjectConfig,\n  SolanaWallet,\n  WalletConfig,\n  WalletCore,\n  WalletCustomStyle,\n  WalletOption,\n} from './types';\n\nexport { EntryPosition } from './types';\n\nconst walletEntryPlugin = new WalletEntryPlugin();\n\nexport { walletEntryPlugin, type WalletEntryPlugin };\n", "import debounce from 'lodash/debounce.js';\nimport globalConfig from './config';\nimport htmlRender from './html';\nimport { downArrowDarkBase64, walletIconDarkBase64 } from './iconsBase64';\nimport { handleCustomEvent, handleRpc, sendEthereumEvent } from './messageHandler';\nimport styleRender from './style';\nimport {\n  EntryPosition,\n  IframeWalletMessageType,\n  MessageType,\n  walletIframeId,\n  walletIframeMask,\n  type ProjectConfig,\n  type WalletConfig,\n  type WalletCore,\n  type WalletOption,\n} from './types';\nimport { isNullish, isServer } from './utils';\nimport { walletUrl } from './walletUrl';\n\nconst fullScreenClass = 'particle-pwe-full-screen-iframe-content';\n\nlet isListen = false;\n\nlet timer: any = null;\n\nlet draggie: any;\n\nexport class WalletEntryPlugin {\n  static WALLET_BTN_POSITION = 'walletBtnPosition';\n\n  private _walletOptions!: WalletOption;\n\n  private projectConfig: ProjectConfig | undefined;\n\n  private _walletCore: WalletCore | undefined;\n\n  /**\n   * wallet is center\n   */\n  private centerWallet = false;\n\n  walletCreated = false;\n\n  get walletCore() {\n    return this._walletCore;\n  }\n\n  get walletOptions() {\n    return this._walletOptions;\n  }\n\n  constructor() {\n    if (typeof window !== 'undefined') {\n      window.addEventListener('message', (event) => {\n        if (event?.data?.name === 'particle-network-wallet') {\n          console.log('handleWalletEvent', event);\n          const type = event?.data?.data?.type;\n          if (type === 'logout') {\n            this.walletEntryDestroy();\n          }\n        }\n      });\n\n      // @ts-ignore\n      window.walletEntryPlugin = this;\n    }\n  }\n\n  init(projectConfig: ProjectConfig, options: WalletOption = {}) {\n    this.projectConfig = projectConfig;\n    this._walletOptions = {\n      entryPosition: EntryPosition.BR,\n      themeType: 'light',\n      ...options,\n      widgetIntegration: options.widgetIntegration ?? 'modal',\n      visible: options.visible ?? true,\n    };\n\n    if (options.walletUrl) {\n      globalConfig.updateWalletUrl(options.walletUrl);\n    }\n\n    const storedPosition = this.getButtonStorageData().position;\n    if (storedPosition && storedPosition !== this._walletOptions.entryPosition) {\n      localStorage.removeItem(WalletEntryPlugin.WALLET_BTN_POSITION);\n      localStorage.removeItem(WalletEntryPlugin.WALLET_BTN_POSITION + '_window');\n      this.setInitialButtonPosition();\n    }\n\n    this.centerWallet = Boolean(this._walletOptions.entryPosition === EntryPosition.MC || !this._walletOptions.visible);\n\n    if (this.centerWallet) {\n      this._walletOptions.topMenuType = 'close';\n    }\n\n    this.destroy();\n    if (typeof window !== 'undefined') {\n      window.removeEventListener('message', this.#onMessage);\n      window.addEventListener('message', this.#onMessage);\n    }\n  }\n\n  private setInitialButtonPosition() {\n    const position = this._walletOptions.entryPosition;\n    const { innerWidth, innerHeight } = window;\n    let x, y, direction;\n\n    switch (position) {\n      case EntryPosition.BR:\n        x = innerWidth;\n        y = innerHeight;\n        direction = 'right';\n        break;\n      case EntryPosition.BL:\n        x = 0;\n        y = innerHeight;\n        direction = 'left';\n        break;\n      case EntryPosition.TR:\n        x = innerWidth;\n        y = 0;\n        direction = 'right';\n        break;\n      case EntryPosition.TL:\n        x = 0;\n        y = 0;\n        direction = 'left';\n        break;\n      default:\n        x = innerWidth;\n        y = innerHeight;\n        direction = 'right';\n    }\n\n    this.setButtonStorageData({ x, y, direction });\n  }\n\n  overrideWalletOption(options: Partial<WalletOption>) {\n    if (!this.projectConfig) {\n      throw new Error('Please init wallet entry plugin first!');\n    }\n    this._walletOptions = {\n      ...this._walletOptions,\n      ...options,\n    };\n\n    if (this.walletCore && this.walletCreated) {\n      this.walletEntryCreate();\n    } else {\n      this.walletEntryDestroy();\n    }\n  }\n\n  setWalletCore(walletCore: WalletCore) {\n    if (!this.projectConfig) {\n      throw new Error('Please init wallet entry plugin first!');\n    }\n    if (!walletCore.ethereum && !walletCore.solana) {\n      throw new Error('Please provide ethereum or solana wallet!');\n    }\n    if (this._walletCore) {\n      this._walletCore.ethereum?.removeListener?.('accountsChanged', this.#onEthereumAccountsChanged);\n      this._walletCore.ethereum?.removeListener?.('chainChanged', this.#onEthereumChainChanged);\n    }\n    this._walletCore = walletCore;\n    if (this._walletCore.ethereum) {\n      this._walletCore.ethereum?.removeListener?.('accountsChanged', this.#onEthereumAccountsChanged);\n      this._walletCore.ethereum?.on?.('accountsChanged', this.#onEthereumAccountsChanged);\n\n      this._walletCore.ethereum?.removeListener?.('chainChanged', this.#onEthereumChainChanged);\n      this._walletCore.ethereum?.on?.('chainChanged', this.#onEthereumChainChanged);\n    }\n  }\n\n  walletEntryCreate() {\n    this.destroy();\n    if (this._walletOptions?.widgetIntegration !== 'embedded') {\n      this.walletEntryRander();\n\n      if (this._walletOptions.preload) {\n        const iframe: HTMLIFrameElement = this.getWalletIFrameImpl();\n        const iframeContent = document.querySelector('.particle-pwe-iframe-content') as HTMLDivElement;\n        if (!iframeContent?.childElementCount) {\n          iframe.style.width = '100%';\n          iframe.style.height = '100%';\n          iframeContent?.appendChild(iframe);\n        }\n      }\n    }\n    this.walletCreated = true;\n  }\n\n  walletEntryDestroy() {\n    this.destroy();\n  }\n\n  destroy() {\n    if (isServer()) return;\n    draggie?.destroy?.();\n    window.removeEventListener('resize', this?.resize?.(), false);\n    document.querySelector('.particle-wallet-entry-container')?.remove?.();\n\n    const walletBtn = document.querySelector('.particle-pwe-btn') as HTMLButtonElement;\n    walletBtn && walletBtn.removeAttribute('data-position');\n\n    const iframe = document.getElementById(walletIframeId);\n    if (iframe) {\n      iframe.remove();\n    }\n    this.walletCreated = false;\n  }\n\n  private getWalletUrl(options?: WalletConfig): string {\n    if (!this.projectConfig) {\n      throw new Error('Please init wallet entry plugin first!');\n    }\n    const url = walletUrl({\n      options,\n      projectConfig: this.projectConfig,\n      walletOptions: this._walletOptions,\n      customEventHandler: this._walletCore?.customEventHandler,\n    });\n    return url;\n  }\n\n  public getWalletIFrame(options?: WalletConfig): HTMLIFrameElement {\n    if (this._walletOptions.widgetIntegration !== 'embedded') {\n      throw new Error('Only `embedded` mode can control the iframe.');\n    }\n\n    return this.getWalletIFrameImpl(options);\n  }\n\n  private getWalletIFrameImpl(options?: WalletConfig): HTMLIFrameElement {\n    if (!this.projectConfig) {\n      throw new Error('Please init wallet entry plugin first!');\n    }\n    if (!this._walletCore) {\n      throw new Error('Please call `setWalletCore` first!');\n    }\n\n    let iframe: HTMLIFrameElement | null = document.getElementById(walletIframeId) as HTMLIFrameElement;\n    if (!iframe) {\n      iframe = this.createIFrame();\n    }\n\n    const url = this.getWalletUrl(options);\n    if (url != iframe.getAttribute('src')) {\n      iframe.src = url;\n    }\n    return iframe;\n  }\n\n  private getWalletIFrameMask() {\n    let mask: HTMLDivElement | null = document.getElementById(walletIframeMask) as HTMLDivElement;\n    if (!mask) {\n      mask = document.createElement('div');\n      mask.setAttribute('id', walletIframeMask);\n      mask.style.position = 'fixed';\n      mask.style.top = '0';\n      mask.style.left = '0';\n      mask.style.width = '100%';\n      mask.style.height = '100%';\n      mask.style.zIndex = '1000';\n      mask.style.backgroundColor = 'rgba(71, 88, 107, 0.24)';\n      mask.style.backdropFilter = 'blur(6px)';\n      mask.style.display = 'none';\n      document.body.appendChild(mask);\n    }\n    return mask;\n  }\n\n  private createIFrame() {\n    let iframe: HTMLIFrameElement | null = document.getElementById(walletIframeId) as HTMLIFrameElement;\n    if (!iframe) {\n      iframe = document.createElement('iframe');\n      iframe.style.width = '100%';\n      iframe.style.height = '100%';\n      iframe.style.border = 'none';\n      iframe.allow = 'camera';\n      iframe.id = walletIframeId;\n      iframe.src = this.getWalletUrl();\n    }\n\n    return iframe;\n  }\n\n  /**\n   * open modal wallet\n   * @param params\n   * @param params.windowSize large | small\n   * @param params.pathName The path to the web wallet page, which is '/' by default.\n   * @param params.query Go to the query parameter of the wallet page\n   * @returns\n   */\n  public openWallet(\n    params?: {\n      windowSize?: 'large' | 'small';\n    } & WalletConfig\n  ) {\n    console.log('open wallet', this._walletOptions, params);\n    if (this._walletOptions?.widgetIntegration === 'embedded') {\n      throw new Error('embedded mode not support `openWallet`');\n    }\n\n    const walletIcon = document.querySelector('.particle-pwe-wallet-icon') as HTMLDivElement;\n    const downArrow = document.querySelector('.particle-pwe-down-arrow');\n    const iframeContent = document.querySelector('.particle-pwe-iframe-content') as HTMLDivElement;\n\n    if (params?.windowSize === 'large' || window.screen.width < 600) {\n      iframeContent?.classList.add(fullScreenClass);\n    }\n    const modalBorderRadius =\n      this._walletOptions?.customStyle?.[this._walletOptions?.themeType || 'light']?.cardBorderRadius ?? 18;\n    if (!isNullish(modalBorderRadius)) {\n      iframeContent.style.borderRadius = `${modalBorderRadius}px`;\n    }\n    iframeContent?.classList.add('particle-pwe-iframe-content-show');\n\n    const uiMode = this._walletOptions?.themeType || 'light';\n\n    if (uiMode == 'dark') {\n      iframeContent?.classList.add('particle-pwe-iframe-content-dark');\n      iframeContent?.classList.remove('particle-pwe-iframe-content-light');\n    } else {\n      iframeContent?.classList.add('particle-pwe-iframe-content-light');\n      iframeContent?.classList.remove('particle-pwe-iframe-content-dark');\n    }\n\n    if (this.centerWallet) {\n      iframeContent.classList.add('particle-pwe-iframe-center-content');\n    }\n\n    const iframe: HTMLIFrameElement = this.getWalletIFrameImpl(params);\n    if (!iframeContent.childElementCount) {\n      iframe.style.width = '100%';\n      iframe.style.height = '100%';\n      iframeContent?.appendChild(iframe);\n    }\n\n    walletIcon?.classList.add('particle-pwe-wallet-icon-hide');\n    downArrow?.classList.remove('particle-pwe-down-arrow-hide');\n    if (this.centerWallet) {\n      const iframeMask = this.getWalletIFrameMask();\n      iframeMask.style.display = 'block';\n    }\n    this.updateIframeContentPosition();\n  }\n\n  // ----- wallet event\n\n  #onMessage = (event: MessageEvent) => {\n    if (event.data?.type === IframeWalletMessageType && this._walletCore) {\n      const messageType = event.data?.message?.messageType;\n      if (messageType === MessageType.EthereumRpc || messageType === MessageType.SolanaRpc) {\n        handleRpc(event, this._walletCore);\n      } else {\n        handleCustomEvent(event, this._walletCore.customEventHandler);\n      }\n    }\n  };\n\n  #onEthereumAccountsChanged = (args: unknown) => {\n    sendEthereumEvent('accountsChanged', args);\n  };\n\n  #onEthereumChainChanged = (args: unknown) => {\n    sendEthereumEvent('chainChanged', args);\n  };\n\n  // ----  render wallet icon\n\n  private setWalletIcon() {\n    const walletIconEl = document.querySelector('.particle-pwe-wallet-icon') as HTMLImageElement;\n    const downArrowEl = document.querySelector('.particle-pwe-down-arrow') as HTMLImageElement;\n\n    walletIconEl && walletIconEl.setAttribute('src', walletIconDarkBase64);\n    downArrowEl && downArrowEl.setAttribute('src', downArrowDarkBase64);\n\n    const walletBtn = document.querySelector('.particle-pwe-btn') as HTMLButtonElement;\n    if (walletBtn && this._walletOptions.visible && this._walletOptions.entryPosition !== EntryPosition.MC) {\n      walletBtn.style.opacity = '1';\n    }\n  }\n\n  private updateIframeContentPosition() {\n    const iframeContent = document.querySelector('.particle-pwe-iframe-content') as HTMLDivElement;\n    if (!iframeContent || iframeContent?.style?.display === 'none') {\n      return;\n    }\n    const walletBtn = document.querySelector('.particle-pwe-btn') as HTMLButtonElement;\n\n    if (!this._walletOptions.visible) {\n      walletBtn.style.display = 'none';\n    }\n\n    const walletBtnRect = walletBtn.getBoundingClientRect();\n    const iframeContentRect = iframeContent.getBoundingClientRect();\n    const windowHeight = window.innerHeight;\n    const windowWidth = window.innerWidth;\n    const iframeContentHeight = iframeContentRect.height;\n    const iframeContentWidth = iframeContentRect.width;\n    const walletBtnHeight = walletBtnRect.height;\n    // const walletBtnWidth = walletBtnRect.width;\n    const walletBtnTop = walletBtnRect.top;\n    const walletBtnLeft = walletBtnRect.left;\n    const walletBtnBottom = walletBtnRect.bottom;\n    const walletBtnRight = walletBtnRect.right;\n\n    if (this.centerWallet) {\n      // Screen center\n      iframeContent.style.top = `${(windowHeight - iframeContentHeight) / 2}px`;\n      iframeContent.style.left = `${(windowWidth - iframeContentWidth) / 2}px`;\n    } else if (\n      walletBtnBottom + iframeContentHeight + 10 < windowHeight &&\n      walletBtnRight + iframeContentWidth + 10 < windowWidth\n    ) {\n      iframeContent.style.top = walletBtnBottom + 10 + 'px';\n      iframeContent.style.left = walletBtnLeft + 'px';\n    } else if (\n      walletBtnBottom + iframeContentHeight + 10 < windowHeight &&\n      walletBtnLeft - iframeContentWidth - 10 > 0\n    ) {\n      iframeContent.style.top = walletBtnBottom + 10 + 'px';\n      iframeContent.style.left = walletBtnRight - iframeContentWidth + 'px';\n    } else if (walletBtnTop - iframeContentHeight - 10 > 0 && walletBtnRight + iframeContentWidth + 10 < windowWidth) {\n      iframeContent.style.top = walletBtnTop - iframeContentHeight - 10 + 'px';\n      iframeContent.style.left = walletBtnLeft + 'px';\n    } else if (walletBtnTop - iframeContentHeight - 10 > 0 && walletBtnLeft - iframeContentWidth - 10 > 0) {\n      iframeContent.style.top = walletBtnTop - iframeContentHeight - 10 + 'px';\n      iframeContent.style.left = walletBtnRight - iframeContentWidth + 'px';\n    } else if (walletBtnRight + iframeContentWidth + 10 < windowWidth) {\n      const top = walletBtnTop + walletBtnHeight / 2 - iframeContentHeight / 2;\n      iframeContent.style.top =\n        top < 30\n          ? 30 + 'px'\n          : top > windowHeight - iframeContentHeight - 30\n          ? windowHeight - iframeContentHeight - 30 + 'px'\n          : top + 'px';\n      iframeContent.style.left = walletBtnRight + 10 + 'px';\n    } else if (walletBtnLeft - iframeContentWidth - 10 > 0) {\n      const top = walletBtnTop + walletBtnHeight / 2 - iframeContentHeight / 2;\n      iframeContent.style.top =\n        top < 30\n          ? 30 + 'px'\n          : top > windowHeight - iframeContentHeight - 30\n          ? windowHeight - iframeContentHeight - 30 + 'px'\n          : top + 'px';\n      iframeContent.style.left = walletBtnLeft - iframeContentWidth - 10 + 'px';\n    } else {\n      console.log('no space');\n    }\n  }\n\n  private setButtonStorageData(data: any) {\n    const { innerWidth, innerHeight } = window;\n    const position = this._walletOptions.entryPosition || EntryPosition.BR;\n    localStorage.setItem(WalletEntryPlugin.WALLET_BTN_POSITION, `${data.x},${data.y},${data.direction},${position}`);\n    localStorage.setItem(WalletEntryPlugin.WALLET_BTN_POSITION + '_window', `${innerWidth},${innerHeight}`);\n  }\n\n  private getButtonStorageData() {\n    const { innerWidth, innerHeight } = window;\n    const [x, y, direction, position] =\n      localStorage?.getItem(WalletEntryPlugin.WALLET_BTN_POSITION)?.split?.(',') || [];\n    let [width, height]: any =\n      localStorage.getItem(WalletEntryPlugin.WALLET_BTN_POSITION + '_window')?.split?.(',') || [];\n    width = Number(width || 0);\n    height = Number(height || 0);\n    if (width && height && (width != innerWidth || height != innerHeight)) {\n      localStorage.removeItem(WalletEntryPlugin.WALLET_BTN_POSITION);\n      localStorage.removeItem(WalletEntryPlugin.WALLET_BTN_POSITION + '_window');\n      return this.getInitialPositionData();\n    }\n\n    return {\n      x: Number(x) || 0,\n      y: Number(y) || 0,\n      position: position || this._walletOptions?.entryPosition,\n      direction: direction || this.getDirectionFromPosition(this._walletOptions?.entryPosition),\n    };\n  }\n\n  private getInitialPositionData() {\n    const position = this._walletOptions?.entryPosition || EntryPosition.BR;\n    const { innerWidth, innerHeight } = window;\n    let x, y;\n\n    switch (position) {\n      case EntryPosition.BR:\n        x = innerWidth;\n        y = innerHeight;\n        break;\n      case EntryPosition.BL:\n        x = 0;\n        y = innerHeight;\n        break;\n      case EntryPosition.TR:\n        x = innerWidth;\n        y = 0;\n        break;\n      case EntryPosition.TL:\n        x = 0;\n        y = 0;\n        break;\n      default:\n        x = innerWidth;\n        y = innerHeight;\n    }\n\n    return {\n      x,\n      y,\n      position,\n      direction: this.getDirectionFromPosition(position),\n    };\n  }\n\n  private getDirectionFromPosition(position?: EntryPosition): 'left' | 'right' {\n    return position === EntryPosition.BL || position === EntryPosition.TL ? 'left' : 'right';\n  }\n\n  private updateWalletBtnPosition(x: number, y: number, type = '') {\n    const { width } = document.body.getBoundingClientRect();\n    const { direction } = this.getButtonStorageData();\n    const isRight = x > width / 2 || (type == 'windowResize' && direction === 'right');\n    let left = isRight ? width - 60 : 0;\n    let top = y;\n    let newDirection = 'left';\n\n    const safeDistance = window.screen.width > 600 ? 30 : 10;\n\n    if (left < safeDistance) {\n      left = safeDistance;\n      newDirection = 'left';\n    } else if (left > width - (60 + safeDistance)) {\n      left = width - (60 + safeDistance);\n      newDirection = 'right';\n    }\n    if (top < safeDistance) {\n      top = safeDistance;\n    } else if (top > window.innerHeight - (60 + safeDistance)) {\n      top = window.innerHeight - (60 + safeDistance);\n    }\n\n    return {\n      left,\n      top,\n      direction: newDirection,\n    };\n  }\n\n  public closeWallet() {\n    const iframeContent: HTMLDivElement | null = document.querySelector('.particle-pwe-iframe-content');\n    iframeContent?.classList.remove('particle-pwe-iframe-content-show');\n    iframeContent?.classList.remove(fullScreenClass);\n    const walletIcon = document.querySelector('.particle-pwe-wallet-icon') as HTMLDivElement;\n    const downArrow = document.querySelector('.particle-pwe-down-arrow');\n    walletIcon?.classList.remove('particle-pwe-wallet-icon-hide');\n    downArrow?.classList.add('particle-pwe-down-arrow-hide');\n    const iframeMask = this.getWalletIFrameMask();\n    iframeMask.style.display = 'none';\n  }\n\n  private resize() {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const that = this;\n    return () => {\n      if (isServer()) return;\n      clearTimeout(timer);\n\n      timer = setTimeout(() => {\n        const walletBtn: HTMLDivElement | null = document.querySelector('.particle-pwe-btn');\n\n        const { x: btnX, y: btnY, position } = this.getButtonStorageData();\n\n        let x, y;\n        if (btnX && btnY) {\n          x = btnX;\n          y = btnY;\n        } else {\n          switch (position) {\n            case EntryPosition.BL:\n              x = 0;\n              y = window.innerHeight;\n              break;\n            case EntryPosition.TL:\n              x = 0;\n              y = 0;\n              break;\n            case EntryPosition.TR:\n              x = window.innerWidth;\n              y = 0;\n              break;\n            case EntryPosition.BR:\n            default:\n              x = window.innerWidth;\n              y = window.innerHeight;\n              break;\n          }\n        }\n\n        const { left, top, direction } = that.updateWalletBtnPosition(x, y, 'windowResize');\n        if (walletBtn) {\n          walletBtn.style.left = left + 'px';\n          walletBtn.style.top = top + 'px';\n        }\n\n        this.setButtonStorageData({\n          x: left,\n          y: top,\n          direction,\n        });\n\n        that.updateIframeContentPosition();\n\n        (async () => {\n          let count = 0;\n          do {\n            count++;\n            await this.sleep(100);\n            this.updateIframeContentPosition();\n          } while (count < 15);\n        })();\n      }, 10);\n    };\n  }\n\n  private async sleep(ms: number) {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n  }\n\n  private async walletEntryRander() {\n    if (isServer()) return;\n    styleRender();\n    htmlRender();\n    this.setWalletIcon();\n\n    const walletBtn = document.querySelector('.particle-pwe-btn') as HTMLButtonElement;\n    // const maxZIndex = Math.max.apply(\n    //     null,\n    //     Array.from(document.querySelectorAll('*')).map((item) => {\n    //         return Number(window.getComputedStyle(item).zIndex) || 0;\n    //     })\n    // );\n\n    // walletBtn.style.zIndex = maxZIndex + 1;\n\n    const { x: btnX, y: btnY } = this.getButtonStorageData();\n\n    if (btnX && btnY) {\n      if ((Number(btnX) || 0) < window.innerWidth && (Number(btnY) || 0) < window.innerHeight) {\n        const { left, top } = this.updateWalletBtnPosition(Number(btnX) || 0, Number(btnY) || 0);\n        walletBtn.style.left = left + 'px';\n        walletBtn.style.top = top + 'px';\n        this.updateIframeContentPosition();\n      } else {\n        const { left, top } = this.updateWalletBtnPosition(window.innerWidth, window.innerHeight);\n        walletBtn.style.left = left + 'px';\n        walletBtn.style.top = top + 'px';\n        this.updateIframeContentPosition();\n      }\n    } else {\n      // default wallet btn position\n      const position = this._walletOptions.entryPosition || EntryPosition.BL;\n      let top, left;\n      if (position === EntryPosition.BR) {\n        top = window.innerHeight;\n        left = window.innerWidth;\n      } else if (position === EntryPosition.TR) {\n        top = 0;\n        left = window.innerWidth;\n      } else if (position === EntryPosition.TL) {\n        top = 0;\n        left = 0;\n      } else {\n        top = window.innerHeight;\n        left = 0;\n      }\n\n      const positionData = this.updateWalletBtnPosition(left, top);\n      walletBtn.style.left = positionData.left + 'px';\n      walletBtn.style.top = positionData.top + 'px';\n      walletBtn.setAttribute('data-position', position?.toLowerCase());\n      this.updateIframeContentPosition();\n    }\n\n    let isDraggie = false;\n\n    const Module = await import('draggabilly');\n    const Draggabilly = Module.default ? Module.default : Module;\n    //@ts-ignore\n    draggie = new Draggabilly(walletBtn);\n\n    draggie.on('dragStart', () => {\n      isDraggie = true;\n      walletBtn.style.cursor = 'move';\n    });\n\n    draggie.on('dragMove', () => {\n      this.updateIframeContentPosition();\n    });\n\n    draggie.on('dragEnd', (event: any, pointer: any) => {\n      event.stopPropagation();\n      walletBtn.style.cursor = 'pointer';\n      const { clientX: x, clientY: y } = pointer;\n      const { left, top, direction } = this.updateWalletBtnPosition(x, y - 35);\n      walletBtn.style.left = left + 'px';\n      walletBtn.style.top = top + 'px';\n      this.updateIframeContentPosition();\n\n      (async () => {\n        let count = 0;\n        do {\n          count++;\n          await this.sleep(20);\n          this.updateIframeContentPosition();\n        } while (count < 70);\n      })();\n\n      this.setButtonStorageData({\n        x: left,\n        y: top,\n        direction,\n      });\n\n      setTimeout(() => {\n        isDraggie = false;\n      }, 50);\n    });\n\n    const controlIframe = debounce(() => {\n      if (!isDraggie) {\n        const iframeContent = document.querySelector('.particle-pwe-iframe-content') as HTMLDivElement;\n        if (iframeContent?.classList?.contains?.('particle-pwe-iframe-content-show')) {\n          this.closeWallet();\n        } else {\n          this.openWallet();\n        }\n      }\n    }, 30);\n\n    walletBtn.addEventListener('touchend', (event: any) => {\n      setTimeout(() => {\n        controlIframe();\n      });\n    });\n\n    walletBtn.addEventListener('click', (event: any) => {\n      event?.stopPropagation?.();\n      setTimeout(() => {\n        controlIframe();\n      });\n    });\n\n    if (!isListen) {\n      isListen = true;\n\n      // @ts-ignore\n      window.addEventListener('resize', window.walletEntryPlugin.resize(), false);\n      window.addEventListener(\n        'message',\n        (events: any) => {\n          if ((window as any).walletEntryPlugin?.walletOptions?.widgetIntegration === 'embedded') {\n            return;\n          }\n          if (events?.data?.type === 'PARTICLE_WALLET_RESIZE_IFRAME') {\n            const walletEntryPlugin = (window as any).walletEntryPlugin;\n            const iframeContent = document.querySelector('.particle-pwe-iframe-content') as HTMLDivElement;\n            const classList = iframeContent?.classList;\n            if (classList?.contains?.(fullScreenClass)) {\n              if (!this._walletOptions?.visible || window.screen.width < 600) {\n                walletEntryPlugin.closeWallet();\n              } else {\n                classList?.remove?.(fullScreenClass);\n                walletEntryPlugin.resize();\n                walletEntryPlugin.updateIframeContentPosition();\n              }\n            } else {\n              classList?.add?.(fullScreenClass);\n            }\n          } else if (events?.data?.type === 'PARTICLE_WALLET_CLOSE_IFRAME') {\n            // @ts-ignore\n            window.walletEntryPlugin.closeWallet();\n          }\n        },\n        false\n      );\n    }\n  }\n}\n", "export const isServer = () => {\n  return typeof window === 'undefined';\n};\n\nexport function isNullish(x: unknown): boolean {\n  return x === undefined || x === null;\n}\n", "import { isServer } from './utils';\n\ntype Env = {\n  walletUrl: string;\n};\n\nclass GlobalConfig {\n  /**\n   * custom wallet url\n   */\n  #customWalletUrl: string | undefined;\n\n  #devEnv: Env = {\n    walletUrl: 'https://wallet-debug.particle.network',\n  };\n\n  #stagingEnv: Env = {\n    walletUrl: 'https://wallet-staging.particle.network',\n  };\n\n  #productionEnv: Env = {\n    walletUrl: 'https://wallet.particle.network',\n  };\n\n  get version() {\n    // replace when build\n    return 'web_' + '2.0.8';\n  }\n\n  get env() {\n    let currentEnv = this.#productionEnv;\n\n    // @ts-ignore\n    if (!isServer() && window.__PARTICLE_ENVIRONMENT__ === 'development') {\n      currentEnv = this.#devEnv;\n      // @ts-ignore\n    } else if (!isServer() && window.__PARTICLE_ENVIRONMENT__ === 'staging') {\n      currentEnv = this.#stagingEnv;\n    } else {\n      currentEnv = this.#productionEnv;\n    }\n\n    if (this.#customWalletUrl) {\n      currentEnv.walletUrl = this.#customWalletUrl;\n    }\n\n    return currentEnv;\n  }\n\n  updateWalletUrl(url: string) {\n    if (url) {\n      this.#customWalletUrl = url;\n    }\n  }\n}\n\nconst globalConfig = new GlobalConfig();\nexport default globalConfig;\n", "const html = `\n  <button class=\"particle-pwe-btn\">\n    <img class=\"particle-pwe-img particle-pwe-wallet-icon\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" alt=\"\" />\n    <img class=\"particle-pwe-img particle-pwe-down-arrow particle-pwe-down-arrow-hide\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" alt=\"\" />\n  </button>\n  <div class=\"particle-pwe-iframe-content\">\n  </div>\n`;\n\nconst walletEntryRender = () => {\n  const className = 'particle-wallet-entry-container';\n  const el = document.querySelector('.' + className);\n  el && el.remove();\n  const EL = document.createElement('div');\n  EL.classList.add(className);\n  EL.innerHTML = html;\n  document.body.appendChild(EL);\n};\n\nexport default walletEntryRender;\n", "export const walletIconDarkBase64 =\n  'data:image/png;base64,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';\n\nexport const downArrowDarkBase64 =\n  'data:image/png;base64,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';\n", "import sha256 from 'crypto-js/sha256.js';\nimport stringify from 'fast-json-stable-stringify';\nimport { v4 as uuid } from 'uuid';\nimport {\n  IframeWalletMessageType,\n  MessageType,\n  walletIframeId,\n  type CustomEventHandler,\n  type CustomMessageType,\n  type EthereumProvider,\n  type SolanaWallet,\n  type WalletCore,\n} from './types';\n\ninterface MessageResponse<T> {\n  id: string;\n  messageType: MessageType | CustomMessageType;\n  data: T;\n}\n\ntype RpcInput = {\n  id: string;\n  jsonrpc: string;\n  method: string;\n  params?: unknown[];\n  chainId?: number;\n};\n\nconst walletPluginIds = [walletIframeId];\n\nfunction checkMessage<T>(message: MessageResponse<T>) {\n  const { id, messageType, data } = message;\n  const { nonce, date, hash, iframeId } = JSON.parse(Buffer.from(id, 'base64').toString());\n  const hashBody = stringify({\n    state: { nonce, date, iframeId },\n    messageType,\n    data,\n  });\n  const hashValue = sha256(hashBody).toString();\n  if (hashValue === hash) {\n    return {\n      state: { nonce, date, hash, iframeId },\n      messageType,\n      data,\n    };\n  }\n}\n\nfunction buildMessage(data: unknown, messageType: MessageType | CustomMessageType, nonce?: string) {\n  const state = {\n    nonce: nonce || uuid(),\n    date: Date.now(),\n  };\n  const hashValue = sha256(\n    stringify({\n      state,\n      messageType,\n      data,\n    })\n  )\n    .toString()\n    .toLowerCase();\n  const id = Buffer.from(\n    JSON.stringify({\n      ...state,\n      hash: hashValue,\n    })\n  ).toString('base64');\n\n  return {\n    id,\n    messageType,\n    data,\n  };\n}\n\nconst handleEthereumRpc = async (data: Partial<RpcInput>, provider?: EthereumProvider) => {\n  if (!provider) {\n    throw {\n      code: 4200,\n      message: 'Wallet plugin not support EVM chains.',\n    };\n  }\n  const result = await provider.request(data as any);\n  return result;\n};\n\nconst handleSolanaRpc = async (data: Partial<RpcInput>, solana?: SolanaWallet) => {\n  if (!solana) {\n    throw {\n      code: 4200,\n      message: 'Wallet plugin not support Solana chains.',\n    };\n  }\n\n  if (data.method === 'solana_requestAccounts') {\n    const publicAddress = solana.selectedAddress || solana.publicKey?.toBase58();\n    if (!publicAddress) {\n      await solana.connect();\n    }\n    return solana.selectedAddress || solana.publicKey?.toBase58();\n  } else if (data.method === 'solana_chainId') {\n    return solana.chainId;\n  } else if (data.method === 'solana_signTransaction') {\n    const { VersionedTransaction } = await import('@solana/web3.js');\n    const result = await solana.signTransaction(\n      VersionedTransaction.deserialize(Buffer.from((data.params as string[])[0], 'base64'))\n    );\n    return Buffer.from(result.serialize()).toString('base64');\n  } else if (data.method === 'solana_signAllTransactions') {\n    const { VersionedTransaction } = await import('@solana/web3.js');\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const txs = (data.params as any)[0].map((tx: string) =>\n      VersionedTransaction.deserialize(Buffer.from(tx, 'base64'))\n    );\n    const result = await solana.signAllTransactions(txs);\n    return result.map((tx) => Buffer.from(tx.serialize()).toString('base64'));\n  } else if (data.method === 'solana_signAndSendTransaction') {\n    const { VersionedTransaction } = await import('@solana/web3.js');\n    const { signature } = await solana.signAndSendTransaction(\n      VersionedTransaction.deserialize(Buffer.from((data.params as string[])[0], 'base64'))\n    );\n    return signature;\n  } else if (data.method === 'solana_signMessage') {\n    const result = await solana.signMessage(Buffer.from((data.params as string[])[0], 'base64'));\n    return Buffer.from(result.signature).toString('base64');\n  } else if (data.method === 'solana_switchChain') {\n    if (!solana.switchChain) {\n      throw {\n        code: 4200,\n        message: 'Solana Wallet not support switch chain.',\n      };\n    }\n    await solana.switchChain((data.params as number[])[0]);\n  }\n};\n\nexport const handleRpc = async (event: MessageEvent, walletCore: WalletCore) => {\n  const messageBody = checkMessage<RpcInput>(event.data?.message);\n  if (messageBody) {\n    if (!walletPluginIds.includes(messageBody.state.iframeId)) {\n      walletPluginIds.push(messageBody.state.iframeId);\n    }\n    let message;\n    try {\n      let result;\n      if (messageBody.messageType === MessageType.EthereumRpc) {\n        result = await handleEthereumRpc(messageBody.data, walletCore.ethereum);\n      } else {\n        result = await handleSolanaRpc(messageBody.data, walletCore.solana);\n      }\n      message = buildMessage({ result }, messageBody.messageType, messageBody.state.nonce);\n    } catch (error: any) {\n      message = buildMessage(\n        {\n          error: {\n            message: error.message || error.stack || error.details || error,\n            code: error.code,\n          },\n        },\n        messageBody.messageType,\n        messageBody.state.nonce\n      );\n    }\n\n    (window.document.getElementById(messageBody.state.iframeId) as HTMLIFrameElement)?.contentWindow?.postMessage(\n      {\n        type: IframeWalletMessageType,\n        message,\n      },\n      '*'\n    );\n  } else {\n    console.error('message body hash not match, ignore the message.', event.data?.message);\n  }\n};\n\nexport const handleCustomEvent = async (event: MessageEvent, customEventHandler?: CustomEventHandler) => {\n  const messageBody = checkMessage<unknown>(event.data?.message);\n  if (messageBody) {\n    if (!walletPluginIds.includes(messageBody.state.iframeId)) {\n      walletPluginIds.push(messageBody.state.iframeId);\n    }\n    let message;\n    try {\n      if (!customEventHandler) {\n        message = buildMessage(\n          {\n            error: {\n              code: 4200,\n              message: 'Wallet plugin not support custom event.',\n            },\n          },\n          messageBody.messageType,\n          messageBody.state.nonce\n        );\n      } else {\n        const result = await customEventHandler(messageBody.messageType as CustomMessageType, messageBody.data);\n        message = buildMessage({ result }, messageBody.messageType, messageBody.state.nonce);\n      }\n    } catch (error: any) {\n      message = buildMessage(\n        {\n          error: {\n            message: error.message || error.stack || error.toString(),\n            code: error.code,\n          },\n        },\n        messageBody.messageType,\n        messageBody.state.nonce\n      );\n    }\n\n    (window.document.getElementById(messageBody.state.iframeId) as HTMLIFrameElement)?.contentWindow?.postMessage(\n      {\n        type: IframeWalletMessageType,\n        message,\n      },\n      '*'\n    );\n  } else {\n    console.error('message body hash not match, ignore the message.', event.data?.message);\n  }\n};\n\nexport const sendEthereumEvent = (event: string, args: unknown) => {\n  console.log('wallet send ethereum event', event, args);\n  const message = buildMessage({ name: event, args }, MessageType.EthereumEvent);\n  for (const iframeId of walletPluginIds) {\n    (window.document.getElementById(iframeId) as HTMLIFrameElement)?.contentWindow?.postMessage(\n      {\n        type: IframeWalletMessageType,\n        message,\n      },\n      '*'\n    );\n  }\n};\n", "import type { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';\nimport type { CurrencyUnit } from './currency';\nimport type { Theme } from './theme';\n\nexport const IframeWalletMessageType = 'particle-auth-core-iframe-wallet-message';\n\nexport const walletIframeId = 'particle-auth-core-iframe-wallet';\n\nexport const walletIframeMask = 'particle-auth-core-iframe-wallet-mask';\n\nexport type ERC4337Options = {\n  name: string;\n  version: string;\n};\n\nexport enum EntryPosition {\n  /**\n   * Bottom right\n   */\n  BR = 'bottom-right',\n  /**\n   * Bottom left\n   */\n  BL = 'bottom-left',\n  /**\n   * Top right\n   */\n  TR = 'top-right',\n  /**\n   * Top left\n   */\n  TL = 'top-left',\n  /**\n   * Middle Center\n   */\n  MC = 'middle-center',\n}\n\nexport interface ModeStyle {\n  colorAccent?: string;\n  colorPrimary?: string;\n  colorOnPrimary?: string;\n  primaryButtonBackgroundColors?: [string, string];\n  primaryIconButtonBackgroundColors?: [string, string];\n  primaryIconTextColor?: string;\n  primaryButtonTextColor?: string;\n  cancelButtonBackgroundColor?: string;\n  backgroundColors?: [string, [[string, string], [string, string]]];\n  messageColors?: string[];\n  borderGlowColors?: string[];\n  modalMaskBackgroundColor?: string;\n  cardBorderRadius?: number;\n}\n\nexport type SupportChain = {\n  id: number;\n  name?: string;\n  chainType?: 'evm' | 'solana';\n};\n\nexport interface WalletCustomStyle {\n  supportChains?: SupportChain[];\n  supportAddToken?: boolean;\n  displayTokenAddresses?: string[];\n  displayNFTContractAddresses?: string[];\n  priorityTokenAddresses?: string[];\n  priorityNFTContractAddresses?: string[];\n  fiatCoin?: CurrencyUnit;\n  evmSupportWalletConnect?: boolean;\n  supportUIModeSwitch?: boolean;\n  supportLanguageSwitch?: boolean;\n  light?: ModeStyle;\n  dark?: ModeStyle;\n}\n\nexport interface WalletOption {\n  themeType?: Theme;\n  language?: string;\n  erc4337?: ERC4337Options;\n  topMenuType?: 'close' | 'fullscreen';\n  customStyle?: WalletCustomStyle;\n\n  widgetIntegration?: 'embedded' | 'modal';\n  walletUrl?: string;\n  entryPosition?: EntryPosition;\n  visible?: boolean;\n  preload?: boolean;\n}\n\nexport interface WalletConfig {\n  topMenuType?: 'close' | 'fullscreen';\n  pathName?: string;\n  query?: {\n    [key: string]: unknown;\n  };\n}\n\nexport interface ProjectConfig {\n  projectId: string;\n  clientKey: string;\n  appId: string;\n}\n\nexport interface WalletCore {\n  ethereum?: EthereumProvider;\n  solana?: SolanaWallet;\n  customEventHandler?: CustomEventHandler;\n}\n\nexport interface EthereumProvider {\n  request(payload: { method: string; params?: unknown[]; chainId?: number }): Promise<any>;\n\n  on(event: string, listener: (...args: any[]) => void): this;\n\n  removeListener?(event: string, listener: (...args: any[]) => void): this;\n}\n\nexport interface SolanaWallet {\n  chainId: number;\n\n  selectedAddress?: string | null | undefined;\n\n  publicKey?: PublicKey | null | undefined;\n\n  on?(event: string, listener: (...args: any[]) => void): this;\n\n  removeListener?(event: string, listener: (...args: any[]) => void): this;\n\n  connect(): Promise<void>;\n\n  signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;\n\n  signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;\n\n  signAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<{ signature: string }>;\n\n  signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>;\n\n  switchChain?: (chainId: number) => Promise<void>;\n}\n\nexport enum MessageType {\n  EthereumRpc = 'ethereum-rpc',\n  EthereumEvent = 'ethereum-event',\n  SolanaRpc = 'solana-rpc',\n  SolanaEvent = 'solana-event', // TODO: impl solana `accountChange` / `chainChange` event\n}\n\nexport type CustomMessageType = 'open-account-and-security' | 'get-user-info' | 'get-passkey-option';\n\nexport interface MessageResponse<T> {\n  id: string;\n  messageType: MessageType;\n  data: T;\n}\n\nexport type CustomEventHandler = {\n  (messageType: CustomMessageType, data?: unknown): Promise<any>;\n  type?: string;\n};\n", "const style = `\n.particle-wallet-entry-container .particle-pwe-btn {\n  background: none;\n  border: none;\n  cursor: pointer;\n  height: 60px;\n  margin: 0;\n  outline: none;\n  padding: 0;\n  position: fixed;\n  width: 60px;\n  border-radius: 60px;\n  z-index: 1000;\n  opacity: 0;\n}\n.particle-wallet-entry-container .particle-pwe-btn[data-position]{\n  opacity: 1;\n}\n.particle-wallet-entry-container .particle-pwe-btn[data-position=middle-center] {\n  opacity: 0 !important;\n}\n.particle-wallet-entry-container .particle-pwe-btn:not(.is-dragging) {\n  -webkit-transition: all 0.2s;\n  transition: all 0.2s;\n}\n.particle-wallet-entry-container .particle-pwe-btn > img {\n  height: 100%;\n  width: 100%;\n  -webkit-box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n  box-shadow: 2px 2px 10px 3px rgba(0, 0, 0, 0.1);\n  border-radius: 60px;\n}\n.particle-wallet-entry-container .particle-pwe-btn .particle-pwe-wallet-icon {\n  display: block;\n}\n.particle-wallet-entry-container .particle-pwe-btn .particle-pwe-wallet-icon:not(.particle-pwe-wallet-icon-hide) {\n  -webkit-animation: particle-pwe-wallet-icon-show 0.3s ease-in-out;\n          animation: particle-pwe-wallet-icon-show 0.3s ease-in-out;\n}\n@-webkit-keyframes particle-pwe-wallet-icon-show {\n  0% {\n    -webkit-transform: scale(0.8);\n            transform: scale(0.8);\n  }\n  100% {\n    -webkit-transform: scale(1);\n            transform: scale(1);\n  }\n}\n@keyframes particle-pwe-wallet-icon-show {\n  0% {\n    -webkit-transform: scale(0.6);\n            transform: scale(0.6);\n  }\n  100% {\n    -webkit-transform: scale(1);\n            transform: scale(1);\n  }\n}\n.particle-wallet-entry-container .particle-pwe-btn .particle-pwe-wallet-icon.particle-pwe-wallet-icon-hide {\n  display: none;\n}\n.particle-wallet-entry-container .particle-pwe-btn .particle-pwe-down-arrow {\n  display: block;\n}\n.particle-wallet-entry-container .particle-pwe-btn .particle-pwe-down-arrow:not(.particle-pwe-down-arrow-hide) {\n  -webkit-animation: particle-pwe-down-arrow-show 0.3s ease-in-out;\n          animation: particle-pwe-down-arrow-show 0.3s ease-in-out;\n}\n@-webkit-keyframes particle-pwe-down-arrow-show {\n  0% {\n    -webkit-transform: scale(0.6);\n            transform: scale(0.6);\n  }\n  100% {\n    -webkit-transform: scale(1);\n            transform: scale(1);\n  }\n}\n@keyframes particle-pwe-down-arrow-show {\n  0% {\n    -webkit-transform: scale(0.6);\n            transform: scale(0.6);\n  }\n  100% {\n    -webkit-transform: scale(1);\n            transform: scale(1);\n  }\n}\n.particle-wallet-entry-container .particle-pwe-btn .particle-pwe-down-arrow.particle-pwe-down-arrow-hide {\n  display: none;\n}\n.particle-wallet-entry-container .particle-pwe-iframe-content {\n  background-color: #fff;\n  border: none;\n  border-radius: 10px;\n  -webkit-box-shadow: -1px 3px 11px 2px #00000073;\n          box-shadow: -1px 3px 11px 2px #00000073;\n  display: none;\n  height: 650px;\n  overflow: hidden;\n  position: fixed;\n  width: 400px;\n  z-index: 10000;\n}\n.particle-wallet-entry-container .particle-pwe-iframe-content.particle-pwe-full-screen-iframe-content {\n  top: 0 !important;\n  left: 0 !important;\n  width: 100% !important;\n  height: 100% !important;\n  border-radius: 0 !important;\n}\n@media screen and (max-height: 660px) {\n  .particle-wallet-entry-container .particle-pwe-iframe-content {\n    height: 600px;\n    width: 360px;\n  }\n}\n.particle-wallet-entry-container .particle-pwe-iframe-content.particle-pwe-iframe-content-show {\n  display: block;\n}\n.particle-pwe-iframe-center-content{\n  box-shadow: -1px 3px 11px 2px #0000002b !important;\n}\n.particle-pwe-iframe-content-dark.particle-pwe-iframe-center-content{\n  box-shadow: -1px 3px 11px 2px #dddddd0d !important;\n}\n.particle-pwe-iframe-content-dark{\n  background-color: #000 !important;\n}\n.particle-pwe-iframe-content-light{\n  background-color: #fff !important;\n}\n.particle-wallet-entry-container .particle-pwe-iframe-content iframe {\n  border: none;\n  height: 100%;\n  width: 100%;\n}\n\n`;\n\nconst renderStyle = () => {\n  const className = 'particle-wallet-entry-style';\n  const el = document.querySelector('.' + className);\n  el && el.remove();\n  const styleEl = document.createElement('style');\n  styleEl.classList.add(className);\n  styleEl.innerHTML = style;\n  document.head.appendChild(styleEl);\n};\n\nexport default renderStyle;\n", "import globalConfig from './config';\nimport {\n  walletIframeId,\n  type CustomEventHandler,\n  type ProjectConfig,\n  type WalletConfig,\n  type WalletOption,\n} from './types';\n\nconst openTimestamp = new Date().getTime();\n\nexport function walletUrl({\n  projectConfig,\n  walletOptions,\n  options,\n  customEventHandler,\n}: {\n  projectConfig: ProjectConfig;\n  walletOptions: WalletOption;\n  options?: WalletConfig;\n  customEventHandler?: CustomEventHandler;\n}): string {\n  const { pathName = '/', query = {} } = options || {};\n  let url = `${globalConfig.env.walletUrl}${pathName}?iframeid=${walletIframeId}&${JSON.stringify(query)\n    .replace(/[{}\"]/g, '')\n    .split(',')\n    .filter((value) => !!value?.trim())\n    .map((keyValue) => {\n      const [key, value] = keyValue.split(':');\n      return `${encodeURIComponent(key)}=${encodeURIComponent(value.trim())}`;\n    })\n    .join('&')}`;\n\n  const { projectId, clientKey, appId } = projectConfig;\n  const { erc4337, language, themeType, customStyle } = walletOptions;\n  const topMenuType = options?.topMenuType || walletOptions?.topMenuType;\n\n  url += `&projectConfig=${encodeURIComponent(\n    Buffer.from(JSON.stringify({ projectId, clientKey, appId })).toString('base64')\n  )}`;\n  if (themeType) {\n    url += '&theme=' + themeType;\n  }\n  if (language) {\n    url += '&language=' + language;\n  }\n  if (erc4337) {\n    url += `&erc4337=${encodeURIComponent(JSON.stringify(erc4337))}`;\n  }\n  if (topMenuType) {\n    url += `&topMenuType=${topMenuType}`;\n  }\n  if (customEventHandler) {\n    //support custom event\n    if (customEventHandler.type) {\n      url += `&supportCustomEvent=${customEventHandler.type}`;\n    } else {\n      url += '&supportCustomEvent=true';\n    }\n  }\n  url += `&openTimestamp=${openTimestamp}`;\n  if (customStyle) {\n    let supportChains = customStyle.supportChains;\n    if (supportChains) {\n      supportChains = supportChains.map((chain) => {\n        return {\n          name: chain.name,\n          id: chain.id,\n          chainType: chain.chainType,\n        };\n      });\n    }\n    url += `&customStyle=${encodeURIComponent(\n      Buffer.from(JSON.stringify({ ...customStyle, supportChains })).toString('base64')\n    )}`;\n  }\n  console.log('Wallet url', url);\n  return url;\n}\n"],
  "mappings": "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",
  "names": ["EntryPosition", "stringify", "sha256", "uuid", "debounce", "walletEntryPlugin"]
}
