{
  "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": "sPAyBO,IAAMA,EAAN,MAAMA,UAA2BC,CAItC,CAaA,aAAc,CACZ,MAAM,CACJ,yBACA,wBACF,CAAC,EAhBH,KAAU,YAAuC,CAC/C,UAAW,KACX,cAAe,IACjB,EA4CA,KAAO,gBAAkB,SAAY,CACnC,GAAM,CAAE,cAAAC,CAAc,EAAIC,EAAgBC,EAAS,CAAC,EAE9CC,EAAYC,EAChBC,EAAgB,gBAChBP,EAAmB,gBACrB,EAEA,KAAK,KAAO,CACV,UAAAK,EACA,cAAAH,CACF,EAEA,MAAM,KAAK,OAAO,EAClB,KAAK,iBAAiB,CACxB,EAEA,KAAO,eAAkBM,GAA+B,CACtD,GAAI,CAAC,KAAK,SACR,MAAM,IAAI,MAAM,sDAAsD,EAGxE,KAAK,SAAS,0BAA+C,CAC3D,aAAAA,CACF,CAAC,CACH,EAEA,KAAU,oBAAsB,SAAY,CACrC,KAAK,WAIV,KAAK,4BAAiD,KAAK,WAAW,EACtE,KAAK,mCAEH,KAAK,iBACP,EACA,KAAK,4BAAiD,KAAK,aAAa,EAC1E,EAEA,KAAiB,cAAgB,MAAOC,GAElC,CACA,CAACA,GAAS,iBAAmBT,EAAmB,SAClD,MAAMA,EAAmB,QAAQ,EAGnC,KAAK,QAAQ,CACf,EAEA,KAAiB,YAAc,MAAO,CAAE,KAAAU,EAAM,OAAAC,CAAO,IAAwB,CAC3E,GAAI,CAACX,EAAmB,aACtB,MAAM,IAAI,MACR,6DACF,EAGF,GAAI,CACF,GAAIY,EAAyBZ,EAAmB,YAAY,EAAG,CAC7D,IAAMa,EAAW,MAAMN,EAAgB,OAAO,CAAE,KAAAG,EAAM,OAAAC,CAAO,CAAC,EACxDG,EAAQd,EAAmB,MACjC,MAAMa,EAAS,MAAMC,EAAQ,CAAE,MAAAA,CAAM,EAAI,MAAS,EAClDd,EAAmB,aAAa,CAClC,MACEA,EAAmB,aAAa,CAC9B,KAAAU,EACA,OAAAC,CACF,CAAC,EAEH,MAAM,KAAK,cAAc,CAAE,gBAAiB,EAAK,CAAC,CACpD,OAASI,EAAO,CACd,QAAQ,MAAMA,CAAK,EACnB,KAAK,UAAU,6BAEb,KAAK,IACP,CACF,CACF,EAEA,KAAiB,kBAAoB,SAAY,CAC/C,MAAMR,EAAgB,QAAQ,EAC1BP,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,KAAKgB,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,EAzIahB,EAWI,aAAwC,KAX5CA,EAYI,QAAyC,KAZ7CA,EAaI,iBAA2C,KAb/CA,EAcI,cAA+C,KAdnDA,EAeI,MAAwB,KAflC,IAAMiB,EAANjB",
  "names": ["_UnlockPanelManager", "SidePanelBaseManager", "walletAddress", "networkSelector", "getState", "providers", "getProvidersList", "ProviderFactory", "providerType", "options", "type", "anchor", "getIsSimpleLoginCallback", "provider", "token", "error", "params", "UnlockPanelManager"]
}
