{
  "version": 3,
  "sources": ["../../../src/managers/UnlockPanelManager/UnlockPanelManager.ts"],
  "sourcesContent": ["import { UITagsEnum } from 'constants/UITags.enum';\nimport { MvxUnlockPanel } from 'lib/sdkDappUi';\nimport { ProviderFactory } from 'providers/ProviderFactory';\nimport {\n  IProviderBase,\n  IProviderFactory,\n  ProviderType\n} from 'providers/types/providerFactory.types';\nimport { networkSelector } from 'store/selectors/networkSelectors';\nimport { getState } from 'store/store';\nimport {\n  OnCloseUnlockPanelType,\n  LoginHandlerType,\n  UnlockPanelEventsEnum,\n  UnlockPanelManagerInitParamsType\n} from './UnlockPanelManager.types';\nimport { SidePanelBaseManager } from '../internal/SidePanelBaseManager';\nimport { getIsSimpleLoginCallback } from './helpers/getIsSimpleLoginCallback';\nimport { getProvidersList } from './helpers/getProviderList';\n\ninterface IUnlockPanelManagerData {\n  providers: IProviderBase[] | null;\n  walletAddress: string | null;\n}\n\nexport class UnlockPanelManager extends SidePanelBaseManager<\n  MvxUnlockPanel,\n  IUnlockPanelManagerData,\n  UnlockPanelEventsEnum\n> {\n  protected initialData: IUnlockPanelManagerData = {\n    providers: null,\n    walletAddress: null\n  };\n\n  private static instance: UnlockPanelManager;\n  private static loginHandler: LoginHandlerType | null = null;\n  private static onClose: OnCloseUnlockPanelType | null = null;\n  private static allowedProviders?: ProviderType[] | null = null;\n  private static onCancelLogin?: (() => Promise<void>) | null = null;\n  private static token?: string | null = null;\n\n  constructor() {\n    super({\n      uiTag: UITagsEnum.UNLOCK_PANEL,\n      uiDataUpdateEvent: UnlockPanelEventsEnum.OPEN\n    });\n\n    this.data = this.initialData;\n  }\n\n  public static getInstance(): UnlockPanelManager {\n    if (!UnlockPanelManager.instance) {\n      UnlockPanelManager.instance = new UnlockPanelManager();\n    }\n    return UnlockPanelManager.instance;\n  }\n\n  public static init(params: UnlockPanelManagerInitParamsType) {\n    this.loginHandler = params.loginHandler;\n    this.allowedProviders = params.allowedProviders;\n\n    if (params.onClose) {\n      this.onClose = params.onClose;\n    }\n\n    if (params.onCancelLogin) {\n      this.onCancelLogin = params.onCancelLogin;\n    }\n\n    if (params.token) {\n      this.token = params.token;\n    }\n\n    return this.getInstance();\n  }\n\n  public openUnlockPanel = async () => {\n    const { walletAddress } = networkSelector(getState());\n\n    const providers = getProvidersList(\n      ProviderFactory.customProviders,\n      UnlockPanelManager.allowedProviders\n    );\n\n    this.data = {\n      providers,\n      walletAddress\n    };\n\n    await this.openUI();\n    this.notifyDataUpdate();\n  };\n\n  public selectProvider = (providerType: ProviderType) => {\n    if (!this.eventBus) {\n      throw new Error('Panel not initialized. Call openUnlockPanel() first.');\n    }\n\n    this.eventBus.publish(UnlockPanelEventsEnum.SELECT_PROVIDER, {\n      providerType\n    });\n  };\n\n  protected setupEventListeners = async () => {\n    if (!this.eventBus) {\n      return;\n    }\n\n    this.subscribeToEventBus(UnlockPanelEventsEnum.LOGIN, this.handleLogin);\n    this.subscribeToEventBus(\n      UnlockPanelEventsEnum.CANCEL_LOGIN,\n      this.handleCancelLogin\n    );\n    this.subscribeToEventBus(UnlockPanelEventsEnum.CLOSE, this.handleCloseUI);\n  };\n\n  private readonly handleCloseUI = async (options?: {\n    isLoginFinished?: boolean;\n  }) => {\n    if (!options?.isLoginFinished && UnlockPanelManager.onClose) {\n      await UnlockPanelManager.onClose();\n    }\n\n    this.closeUI();\n  };\n\n  private readonly handleLogin = async ({ type, anchor }: IProviderFactory) => {\n    if (!UnlockPanelManager.loginHandler) {\n      throw new Error(\n        'Login callback not initialized. Please call `init()` first.'\n      );\n    }\n\n    try {\n      if (getIsSimpleLoginCallback(UnlockPanelManager.loginHandler)) {\n        const provider = await ProviderFactory.create({ type, anchor });\n        const token = UnlockPanelManager.token;\n        await provider.login(token ? { token } : undefined);\n        UnlockPanelManager.loginHandler();\n      } else {\n        UnlockPanelManager.loginHandler({\n          type,\n          anchor\n        });\n      }\n      await this.handleCloseUI({ isLoginFinished: true });\n    } catch (error) {\n      console.error(error);\n      this.eventBus?.publish(\n        UnlockPanelEventsEnum.CANCEL_IN_PROVIDER,\n        this.data\n      );\n    }\n  };\n\n  private readonly handleCancelLogin = async () => {\n    await ProviderFactory.destroy();\n    if (UnlockPanelManager.onCancelLogin) {\n      await UnlockPanelManager.onCancelLogin();\n    }\n  };\n}\n"],
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA2B,iCAE3BC,EAAgC,qCAMhCC,EAAgC,4CAChCC,EAAyB,uBACzBC,EAKO,sCACPC,EAAqC,4CACrCC,EAAyC,8CACzCC,EAAiC,qCAO1B,MAAMC,EAAN,MAAMA,UAA2B,sBAItC,CAaA,aAAc,CACZ,MAAM,CACJ,MAAO,aAAW,aAClB,kBAAmB,wBAAsB,IAC3C,CAAC,EAhBH,KAAU,YAAuC,CAC/C,UAAW,KACX,cAAe,IACjB,EA4CA,KAAO,gBAAkB,SAAY,CACnC,KAAM,CAAE,cAAAC,CAAc,KAAI,sBAAgB,YAAS,CAAC,EAE9CC,KAAY,oBAChB,kBAAgB,gBAChBF,EAAmB,gBACrB,EAEA,KAAK,KAAO,CACV,UAAAE,EACA,cAAAD,CACF,EAEA,MAAM,KAAK,OAAO,EAClB,KAAK,iBAAiB,CACxB,EAEA,KAAO,eAAkBE,GAA+B,CACtD,GAAI,CAAC,KAAK,SACR,MAAM,IAAI,MAAM,sDAAsD,EAGxE,KAAK,SAAS,QAAQ,wBAAsB,gBAAiB,CAC3D,aAAAA,CACF,CAAC,CACH,EAEA,KAAU,oBAAsB,SAAY,CACrC,KAAK,WAIV,KAAK,oBAAoB,wBAAsB,MAAO,KAAK,WAAW,EACtE,KAAK,oBACH,wBAAsB,aACtB,KAAK,iBACP,EACA,KAAK,oBAAoB,wBAAsB,MAAO,KAAK,aAAa,EAC1E,EAEA,KAAiB,cAAgB,MAAOC,GAElC,CACA,CAACA,GAAS,iBAAmBJ,EAAmB,SAClD,MAAMA,EAAmB,QAAQ,EAGnC,KAAK,QAAQ,CACf,EAEA,KAAiB,YAAc,MAAO,CAAE,KAAAK,EAAM,OAAAC,CAAO,IAAwB,CAC3E,GAAI,CAACN,EAAmB,aACtB,MAAM,IAAI,MACR,6DACF,EAGF,GAAI,CACF,MAAI,4BAAyBA,EAAmB,YAAY,EAAG,CAC7D,MAAMO,EAAW,MAAM,kBAAgB,OAAO,CAAE,KAAAF,EAAM,OAAAC,CAAO,CAAC,EACxDE,EAAQR,EAAmB,MACjC,MAAMO,EAAS,MAAMC,EAAQ,CAAE,MAAAA,CAAM,EAAI,MAAS,EAClDR,EAAmB,aAAa,CAClC,MACEA,EAAmB,aAAa,CAC9B,KAAAK,EACA,OAAAC,CACF,CAAC,EAEH,MAAM,KAAK,cAAc,CAAE,gBAAiB,EAAK,CAAC,CACpD,OAASG,EAAO,CACd,QAAQ,MAAMA,CAAK,EACnB,KAAK,UAAU,QACb,wBAAsB,mBACtB,KAAK,IACP,CACF,CACF,EAEA,KAAiB,kBAAoB,SAAY,CAC/C,MAAM,kBAAgB,QAAQ,EAC1BT,EAAmB,eACrB,MAAMA,EAAmB,cAAc,CAE3C,EAjHE,KAAK,KAAO,KAAK,WACnB,CAEA,OAAc,aAAkC,CAC9C,OAAKA,EAAmB,WACtBA,EAAmB,SAAW,IAAIA,GAE7BA,EAAmB,QAC5B,CAEA,OAAc,KAAKU,EAA0C,CAC3D,YAAK,aAAeA,EAAO,aAC3B,KAAK,iBAAmBA,EAAO,iBAE3BA,EAAO,UACT,KAAK,QAAUA,EAAO,SAGpBA,EAAO,gBACT,KAAK,cAAgBA,EAAO,eAG1BA,EAAO,QACT,KAAK,MAAQA,EAAO,OAGf,KAAK,YAAY,CAC1B,CAuFF,EAzIaV,EAWI,aAAwC,KAX5CA,EAYI,QAAyC,KAZ7CA,EAaI,iBAA2C,KAb/CA,EAcI,cAA+C,KAdnDA,EAeI,MAAwB,KAflC,IAAMV,EAANU",
  "names": ["UnlockPanelManager_exports", "__export", "UnlockPanelManager", "__toCommonJS", "import_UITags", "import_ProviderFactory", "import_networkSelectors", "import_store", "import_UnlockPanelManager", "import_SidePanelBaseManager", "import_getIsSimpleLoginCallback", "import_getProviderList", "_UnlockPanelManager", "walletAddress", "providers", "providerType", "options", "type", "anchor", "provider", "token", "error", "params"]
}
